easy_latex

The easy_latex allows developers to easily incorporate LaTeX elements within their Flutter apps. The rendering of LaTeX is handled natively in Dart, ensuring a rapid and efficient display without relying on HTML conversions.

Live Rendering Demo

Check out the live rendering to see the plugin in action.

Widgets

Latex()

The Latex() widget enables the rendering of standalone LaTeX strings.

locale: The Latex() widget includes the locale parameter, allowing you to adapt the number formatting to different languages. For example, setting locale to 'de' will display numbers like 3.14159 as 3,14159, matching the standard German formatting.

import 'package:easy_latex/easy_latex.dart';

Latex(
  r'x_{1,2} = \frac{-b \pm \sqrt{b^2 - 4ac}}{2a} \\ \pi = 3.14159... ',
  fontSize: 24,
  locale: 'en',
);

LText()

The LText() widget allows you to integrate Markdown and LaTeX into your text, enabling both rich formatting and mathematical expressions.

Supported Markdown commands: LText() supports the certain Markdown to style the text.

  • **bold**
  • *italic*
  • `code`
  • \(Latex\)

latexLocale: The LText() widget includes the locale parameter, allowing you to adapt the number ' 'formatting to different languages. For example, setting locale to 'de' will display numbers ' 'like 3.14159 as 3,14159, matching the standard German formatting.

import 'package:easy_latex/easy_latex.dart';

LText(
  r'This is **bold text**, this is *italic text*, '
  r'this is `code`. The value of \(\pi\) is \(3.14159...\) '
  r'and the value of \(\sqrt{2}\) is \(1.41421...\)',
  fontSize: 24,
  latexLocale: 'en',
);

LatexSpan()

The LatexSpan() widget facilitates the embedding of LaTeX code within RichText().

Attention: The LatexSpan() widget does not inherit fontSize and color (font color) from the parent TextSpan. These attributes must be explicitly defined via the style attribute for each LatexSpan.

import 'package:easy_latex/easy_latex.dart';

RichText(
  text: TextSpan(
    style: MTextStyles.largeText,
    children: [
      const TextSpan(text: 'The value of '),
      LatexSpan(text: r'\pi', style: const TextStyle(fontSize: 16)),
      const TextSpan(text: ' is '),
      LatexSpan(text: r'3.14159...', style: const TextStyle(fontSize: 16)),
      const TextSpan(text: ' and the value of '),
      LatexSpan(text: r'\sqrt{2}', style: const TextStyle(fontSize: 16)),
      const TextSpan(text: ' is '),
      LatexSpan(text: r'1.41421...', style: const TextStyle(fontSize: 16)),
    ],
  ),
);

Unsupported LaTeX Commands

We know some features you might need are missing right now. We're actively working to support these in upcoming releases. Currently, the following commands are not available:

  • Fonts: \mathit{}, \mathsf{}
  • Table: \begin{tabular}, \end{tabular}, \multicolumn, \multirow, \hline, \cline
  • Array: \begin{array}, \end{array}
  • Matrix: \begin{vmatrix}, \end{vmatrix}, \begin{Vmatrix}, \end{Vmatrix}, \begin{smallmatrix}, \end{smallmatrix}
  • Align: \begin{align}, \end{align}, \begin{alignat}, \end{alignat}
  • Underset, overset: \underset{}, \overset{}, \stackrel{}, \xrightarrow{}, \xleftarrow{}
  • Phantom: \phantom{}, \hphantom{}, \vphantom{}
  • Apostrophes: \acute, \grave, \breve, \check
  • Apostrophes: \acute, \grave, \breve, \check
  • Nolimits, limits: \sum\nolimits, \prod\nolimits, \int\limits, \sideset{}
  • Not, cancel: \!, \not, \cancel{}, \bcancel{}, \xcancel{}, \cancelto{}
  • Left, right: \left|, \right|, \left., \right., \left\rangle, \right\rangle
  • bigl, Bigl: \bigl, \Bigl, \biggl, \Biggl, \bigr, \Bigr, \biggr, \Biggr
  • dfrac, dbinom: \dfrac{}, \dbinom{}{}, \tbinom{}{}
  • Other commands: \atop, \varliminf, \varlimsup, \longdiv

Fonts and Licensing

The fonts included in the lib/fonts folder of this plugin originate from KaTeX, a LaTeX typesetting library. These fonts have been adjusted for optimal integration and use within this plugin. The fonts are licensed under the MIT License, a copy of which is included in the fonts/LICENSE file. For more details, please refer to this file.

License

This plugin is distributed under the BSD License. The full license text is included in the LICENSE file located in the root directory of this project.

Contact

For any questions or issues, please open an issue on the GitHub repository, or contact us directly at dev@miranda.works.

Libraries

easy_latex