latex2mathml

package module
v0.0.0-...-808832a Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 14, 2023 License: MIT Imports: 9 Imported by: 0

README

latex2mathml

This libary convert latex formula to mathml string and depend only on etree.

package main

import (
	"fmt"
	"git.sr.ht/~mekyt/latex2mathml"
)

func main() {
	formula := `x = {-b \pm \sqrt{b^2-4ac} \over 2a}`
	xmlns := "http://www.w3.org/1998/Math/MathML"
	display := "inline"
	indent := 0

	fmt.Println(latex2mathml.Convert(
		formula,
		xmlns,
		display,
		indent,
	))
}

Disclamer

This is a translation of the library written in Python latex2mathml. A big thanks to it's authors.

Documentation

Index

Constants

View Source
const (
	OPENING_BRACE = "{"
	CLOSING_BRACE = "}"
	BRACES        = "{}"

	OPENING_BRACKET = "["
	CLOSING_BRACKET = "]"
	BRACKETS        = "[]"

	OPENING_PARENTHESIS = "("
	CLOSING_PARENTHESIS = ")"
	PARENTHESES         = "()"

	SUBSUP      = "_^"
	SUBSCRIPT   = "_"
	SUPERSCRIPT = "^"
	APOSTROPHE  = "'"

	PRIME  = `\prime`
	DPRIME = `\dprime`

	LEFT   = `\left`
	MIDDLE = `\middle`
	RIGHT  = `\right`

	ABOVE           = `\above`
	ABOVEWITHDELIMS = `\abovewithdelims`
	ATOP            = `\atop`
	ATOPWITHDELIMS  = `\atopwithdelims`
	BINOM           = `\binom`
	BRACE           = `\brace`
	BRACK           = `\brack`
	CFRAC           = `\cfrac`
	CHOOSE          = `\choose`
	DBINOM          = `\dbinom`
	DFRAC           = `\dfrac`
	FRAC            = `\frac`
	GENFRAC         = `\genfrac`
	OVER            = `\over`
	TBINOM          = `\tbinom`
	TFRAC           = `\tfrac`

	ROOT = `\root`
	SQRT = `\sqrt`

	OVERSET  = `\overset`
	UNDERSET = `\underset`

	ACUTE               = `\acute`
	BAR                 = `\bar`
	BREVE               = `\breve`
	CHECK               = `\check`
	DOT                 = `\dot`
	DDOT                = `\ddot`
	DDDOT               = `\dddot`
	DDDDOT              = `\ddddot`
	GRAVE               = `\grave`
	HAT                 = `\hat`
	MATHRING            = `\mathring`
	OVERBRACE           = `\overbrace`
	OVERLEFTARROW       = `\overleftarrow`
	OVERLEFTRIGHTARROW  = `\overleftrightarrow`
	OVERLINE            = `\overline`
	OVERPAREN           = `\overparen`
	OVERRIGHTARROW      = `\overrightarrow`
	TILDE               = `\tilde`
	UNDERBRACE          = `\underbrace`
	UNDERLEFTARROW      = `\underleftarrow`
	UNDERLINE           = `\underline`
	UNDERPAREN          = `\underparen`
	UNDERRIGHTARROW     = `\underrightarrow`
	UNDERLEFTRIGHTARROW = `\underleftrightarrow`
	VEC                 = `\vec`
	WIDEHAT             = `\widehat`
	WIDETILDE           = `\widetilde`
	XLEFTARROW          = `\xleftarrow`
	XRIGHTARROW         = `\xrightarrow`

	HREF   = `\href`
	TEXT   = `\text`
	TEXTBF = `\textbf`
	TEXTIT = `\textit`
	TEXTRM = `\textrm`
	TEXTSF = `\textsf`
	TEXTTT = `\texttt`

	BEGIN = `\begin`
	END   = `\end`

	LIMITS    = `\limits`
	INTEGRAL  = `\int`
	SUMMATION = `\sum`

	OPERATORNAME = `\operatorname`

	LBRACE = `\{`

	DETERMINANT = `\det`
	GCD         = `\gcd`
	INTOP       = `\intop`
	INJLIM      = `\injlim`
	LIMINF      = `\liminf`
	LIMSUP      = `\limsup`
	PR          = `\Pr`
	PROJLIM     = `\projlim`
	MOD         = `\mod`
	PMOD        = `\pmod`
	BMOD        = `\bmod`

	HDASHLINE = `\hdashline`
	HLINE     = `\hline`
	HFIL      = `\hfil`

	CASES        = `\cases`
	DISPLAYLINES = `\displaylines`
	SMALLMATRIX  = `\smallmatrix`
	SUBSTACK     = `\substack`
	SPLIT        = `\split`
	ALIGN        = `\align*`

	BACKSLASH       = `\`
	CARRIAGE_RETURN = `\cr`

	COLON           = `\:`
	COMMA           = `\,`
	DOUBLEBACKSLASH = `\\`
	ENSPACE         = `\enspace`
	EXCLAMATION     = `\!`
	GREATER_THAN    = `\>`
	HSKIP           = `\hskip`
	HSPACE          = `\hspace`
	KERN            = `\kern`
	MKERN           = `\mkern`
	MSKIP           = `\mskip`
	MSPACE          = `\mspace`
	NEGTHINSPACE    = `\negthinspace`
	NEGMEDSPACE     = `\negmedspace`
	NEGTHICKSPACE   = `\negthickspace`
	NOBREAKSPACE    = `\nobreakspace`
	SPACE           = `\space`
	THINSPACE       = `\thinspace`
	QQUAD           = `\qquad`
	QUAD            = `\quad`
	SEMICOLON       = `\;`

	BLACKBOARD_BOLD = `\Bbb`
	BOLD_SYMBOL     = `\boldsymbol`
	MIT             = `\mit`
	OLDSTYLE        = `\oldstyle`
	SCR             = `\scr`
	TT              = `\tt`

	MATH     = `\math`
	MATHBB   = `\mathbb`
	MATHBF   = `\mathbf`
	MATHCAL  = `\mathcal`
	MATHFRAK = `\mathfrak`
	MATHIT   = `\mathit`
	MATHRM   = `\mathrm`
	MATHSCR  = `\mathscr`
	MATHSF   = `\mathsf`
	MATHTT   = `\mathtt`

	BOXED = `\boxed`
	FBOX  = `\fbox`
	HBOX  = `\hbox`
	MBOX  = `\mbox`

	COLOR             = `\color`
	DISPLAYSTYLE      = `\displaystyle`
	TEXTSTYLE         = `\textstyle`
	SCRIPTSTYLE       = `\scriptstyle`
	SCRIPTSCRIPTSTYLE = `\scriptscriptstyle`
	STYLE             = `\style`

	HPHANTOM = `\hphantom`
	PHANTOM  = `\phantom`
	VPHANTOM = `\vphantom`

	IDOTSINT = `\idotsint`
	LATEX    = `\LaTeX`
	TEX      = `\TeX`

	SIDESET = `\sideset`

	SKEW = `\skew`
	NOT  = `\not`
)

Variables

View Source
var (
	COMMANDS_INITILIAZED = false

	LIMIT = []string{`\lim`, `\sup`, `\inf`, `\max`, `\min`}

	FUNCTIONS = []string{
		`\arccos`,
		`\arcsin`,
		`\arctan`,
		`\cos`,
		`\cosh`,
		`\cot`,
		`\coth`,
		`\csc`,
		`\deg`,
		`\dim`,
		`\exp`,
		`\hom`,
		`\ker`,
		`\ln`,
		`\lg`,
		`\log`,
		`\sec`,
		`\sin`,
		`\sinh`,
		`\tan`,
		`\tanh`,
	}

	MATRICES = []string{
		`\matrix`,
		`\matrix*`,
		`\pmatrix`,
		`\pmatrix*`,
		`\bmatrix`,
		`\bmatrix*`,
		`\Bmatrix`,
		`\Bmatrix*`,
		`\vmatrix`,
		`\vmatrix*`,
		`\Vmatrix`,
		`\Vmatrix*`,
		`\array`,
		SUBSTACK,
		CASES,
		DISPLAYLINES,
		SMALLMATRIX,
		SPLIT,
		ALIGN,
	}

	LOCAL_FONTS = map[string]map[string]string{
		BLACKBOARD_BOLD: {"default": "double-struck", "fence": "none"},
		BOLD_SYMBOL:     {"default": "bold", "mi": "bold-italic", "mtext": "none"},
		MATHBB:          {"default": "double-struck", "fence": "none"},
		MATHBF:          {"default": "bold", "fence": "none"},
		MATHCAL:         {"default": "script", "fence": "none"},
		MATHFRAK:        {"default": "fraktur", "fence": "none"},
		MATHIT:          {"default": "italic", "fence": "none"},
		MATHRM:          {"default": "none", "mi": "normal"},
		MATHSCR:         {"default": "script", "fence": "none"},
		MATHSF:          {"default": "none", "mi": "sans-serif"},
		MATHTT:          {"default": "monospace", "fence": "none"},
		MIT:             {"default": "italic", "fence": "none", "mi": "none"},
		OLDSTYLE:        {"default": "normal", "fence": "none"},
		SCR:             {"default": "script", "fence": "none"},
		TT:              {"default": "monospace", "fence": "none"},
	}

	OLD_STYLE_FONTS = map[string]map[string]string{
		`\rm`: {"default": "none", "mi": "normal"},
		`\bf`: {"default": "none", "mi": "bold"},
		`\it`: {"default": "none", "mi": "italic"},
		`\sf`: {"default": "none", "mi": "sans-serif"},
		`\tt`: {"default": "none", "mi": "monospace"},
	}

	GLOBAL_FONTS = map[string]map[string]string{
		`\rm`:   {"default": "none", "mi": "normal"},
		`\bf`:   {"default": "none", "mi": "bold"},
		`\it`:   {"default": "none", "mi": "italic"},
		`\sf`:   {"default": "none", "mi": "sans-serif"},
		`\tt`:   {"default": "none", "mi": "monospace"},
		`\cal`:  {"default": "script", "fence": "none"},
		`\frak`: {"default": "fraktur", "fence": "none"},
	}

	COMMANDS_WITH_ONE_PARAMETER = []string{
		ACUTE,
		BAR,
		BLACKBOARD_BOLD,
		BOLD_SYMBOL,
		BOXED,
		BREVE,
		CHECK,
		DOT,
		DDOT,
		DDDOT,
		DDDDOT,
		GRAVE,
		HAT,
		HPHANTOM,
		MATHRING,
		MIT,
		MOD,
		OLDSTYLE,
		OVERBRACE,
		OVERLEFTARROW,
		OVERLEFTRIGHTARROW,
		OVERLINE,
		OVERPAREN,
		OVERRIGHTARROW,
		PHANTOM,
		PMOD,
		SCR,
		TILDE,
		TT,
		UNDERBRACE,
		UNDERLEFTARROW,
		UNDERLINE,
		UNDERPAREN,
		UNDERRIGHTARROW,
		UNDERLEFTRIGHTARROW,
		VEC,
		VPHANTOM,
		WIDEHAT,
		WIDETILDE,
	}
	COMMANDS_WITH_TWO_PARAMETERS = []string{
		BINOM,
		CFRAC,
		DBINOM,
		DFRAC,
		FRAC,
		OVERSET,
		TBINOM,
		TFRAC,
		UNDERSET,
	}

	BIG_ORDER = []string{"minsize", "maxsize"}

	BIG = map[string]Style{
		`\Bigg`: {Tag: "mo", Modifiers: map[string]string{"minsize": "2.470em", "maxsize": "2.470em"}},
		`\bigg`: {Tag: "mo", Modifiers: map[string]string{"minsize": "2.047em", "maxsize": "2.047em"}},
		`\Big`:  {Tag: "mo", Modifiers: map[string]string{"minsize": "1.623em", "maxsize": "1.623em"}},
		`\big`:  {Tag: "mo", Modifiers: map[string]string{"minsize": "1.2em", "maxsize": "1.2em"}},
	}

	BIG_OPEN_CLOSE_ORDER = []string{"stretchy", "fence", "minsize", "maxsize"}

	BIG_OPEN_CLOSE = map[string]Style{}

	MSTYLE_SIZES = map[string]Style{
		`\Huge`:       {Tag: "mstyle", Modifiers: map[string]string{"mathsize": "2.49em"}},
		`\huge`:       {Tag: "mstyle", Modifiers: map[string]string{"mathsize": "2.07em"}},
		`\LARGE`:      {Tag: "mstyle", Modifiers: map[string]string{"mathsize": "1.73em"}},
		`\Large`:      {Tag: "mstyle", Modifiers: map[string]string{"mathsize": "1.44em"}},
		`\large`:      {Tag: "mstyle", Modifiers: map[string]string{"mathsize": "1.2em"}},
		`\normalsize`: {Tag: "mstyle", Modifiers: map[string]string{"mathsize": "1em"}},
		`\scriptsize`: {Tag: "mstyle", Modifiers: map[string]string{"mathsize": "0.7em"}},
		`\small`:      {Tag: "mstyle", Modifiers: map[string]string{"mathsize": "0.85em"}},
		`\tiny`:       {Tag: "mstyle", Modifiers: map[string]string{"mathsize": "0.5em"}},
		`\Tiny`:       {Tag: "mstyle", Modifiers: map[string]string{"mathsize": "0.6em"}},
	}

	STYLES = map[string]Style{
		DISPLAYSTYLE:      {Tag: "mstyle", Modifiers: map[string]string{"displaystyle": "true", "scriptlevel": "0"}},
		TEXTSTYLE:         {Tag: "mstyle", Modifiers: map[string]string{"displaystyle": "false", "scriptlevel": "0"}},
		SCRIPTSTYLE:       {Tag: "mstyle", Modifiers: map[string]string{"displaystyle": "false", "scriptlevel": "1"}},
		SCRIPTSCRIPTSTYLE: {Tag: "mstyle", Modifiers: map[string]string{"displaystyle": "false", "scriptlevel": "2"}},
	}

	DIACRITICS = map[string]Style{
		ACUTE:               {Tag: "´", Modifiers: map[string]string{}},
		BAR:                 {Tag: "¯", Modifiers: map[string]string{"stretchy": "true"}},
		BREVE:               {Tag: "˘", Modifiers: map[string]string{}},
		CHECK:               {Tag: "ˇ", Modifiers: map[string]string{}},
		DOT:                 {Tag: "˙", Modifiers: map[string]string{}},
		DDOT:                {Tag: "¨", Modifiers: map[string]string{}},
		DDDOT:               {Tag: "⃛", Modifiers: map[string]string{}},
		DDDDOT:              {Tag: "⃜", Modifiers: map[string]string{}},
		GRAVE:               {Tag: "`", Modifiers: map[string]string{}},
		HAT:                 {Tag: "^", Modifiers: map[string]string{"stretchy": "false"}},
		MATHRING:            {Tag: "˚", Modifiers: map[string]string{}},
		OVERBRACE:           {Tag: "⏞", Modifiers: map[string]string{}},
		OVERLEFTARROW:       {Tag: "←", Modifiers: map[string]string{}},
		OVERLEFTRIGHTARROW:  {Tag: "↔", Modifiers: map[string]string{}},
		OVERLINE:            {Tag: "―", Modifiers: map[string]string{"accent": "true"}},
		OVERPAREN:           {Tag: "⏜", Modifiers: map[string]string{}},
		OVERRIGHTARROW:      {Tag: "→", Modifiers: map[string]string{}},
		TILDE:               {Tag: "~", Modifiers: map[string]string{"stretchy": "false"}},
		UNDERBRACE:          {Tag: "⏟", Modifiers: map[string]string{}},
		UNDERLEFTARROW:      {Tag: "←", Modifiers: map[string]string{}},
		UNDERLEFTRIGHTARROW: {Tag: "↔", Modifiers: map[string]string{}},
		UNDERLINE:           {Tag: "―", Modifiers: map[string]string{"accent": "true"}},
		UNDERPAREN:          {Tag: "⏝", Modifiers: map[string]string{}},
		UNDERRIGHTARROW:     {Tag: "→", Modifiers: map[string]string{}},
		VEC:                 {Tag: "→", Modifiers: map[string]string{"stretchy": "true"}},
		WIDEHAT:             {Tag: "^", Modifiers: map[string]string{}},
		WIDETILDE:           {Tag: "~", Modifiers: map[string]string{}},
	}

	SIDE_ORDER   = []string{"stretchy", "fence", "form"}
	MIDDLE_ORDER = []string{"stretchy", "fence", "lspace", "rspace"}

	CONVERSION_MAP = map[string]Style{
		DISPLAYLINES:        {Tag: "mtable", Modifiers: map[string]string{"rowspacing": "0.5em", "columnspacing": "1em", "displaystyle": "true"}},
		SMALLMATRIX:         {Tag: "mtable", Modifiers: map[string]string{"rowspacing": "0.1em", "columnspacing": "0.2778em"}},
		SPLIT:               {Tag: "mtable", Modifiers: map[string]string{"displaystyle": "true", "columnspacing": "0em", "rowspacing": "3pt"}},
		ALIGN:               {Tag: "mtable", Modifiers: map[string]string{"displaystyle": "true", "rowspacing": "3pt"}},
		SUBSCRIPT:           {Tag: "msub", Modifiers: map[string]string{}},
		SUPERSCRIPT:         {Tag: "msup", Modifiers: map[string]string{}},
		SUBSUP:              {Tag: "msubsup", Modifiers: map[string]string{}},
		BINOM:               {Tag: "mfrac", Modifiers: map[string]string{"linethickness": "0"}},
		CFRAC:               {Tag: "mfrac", Modifiers: map[string]string{}},
		DBINOM:              {Tag: "mfrac", Modifiers: map[string]string{"linethickness": "0"}},
		DFRAC:               {Tag: "mfrac", Modifiers: map[string]string{}},
		FRAC:                {Tag: "mfrac", Modifiers: map[string]string{}},
		GENFRAC:             {Tag: "mfrac", Modifiers: map[string]string{}},
		TBINOM:              {Tag: "mfrac", Modifiers: map[string]string{"linethickness": "0"}},
		TFRAC:               {Tag: "mfrac", Modifiers: map[string]string{}},
		ACUTE:               {Tag: "mover", Modifiers: map[string]string{}},
		BAR:                 {Tag: "mover", Modifiers: map[string]string{}},
		BREVE:               {Tag: "mover", Modifiers: map[string]string{}},
		CHECK:               {Tag: "mover", Modifiers: map[string]string{}},
		DOT:                 {Tag: "mover", Modifiers: map[string]string{}},
		DDOT:                {Tag: "mover", Modifiers: map[string]string{}},
		DDDOT:               {Tag: "mover", Modifiers: map[string]string{}},
		DDDDOT:              {Tag: "mover", Modifiers: map[string]string{}},
		GRAVE:               {Tag: "mover", Modifiers: map[string]string{}},
		HAT:                 {Tag: "mover", Modifiers: map[string]string{}},
		LIMITS:              {Tag: "munderover", Modifiers: map[string]string{}},
		MATHRING:            {Tag: "mover", Modifiers: map[string]string{}},
		OVERBRACE:           {Tag: "mover", Modifiers: map[string]string{}},
		OVERLEFTARROW:       {Tag: "mover", Modifiers: map[string]string{}},
		OVERLEFTRIGHTARROW:  {Tag: "mover", Modifiers: map[string]string{}},
		OVERLINE:            {Tag: "mover", Modifiers: map[string]string{}},
		OVERPAREN:           {Tag: "mover", Modifiers: map[string]string{}},
		OVERRIGHTARROW:      {Tag: "mover", Modifiers: map[string]string{}},
		TILDE:               {Tag: "mover", Modifiers: map[string]string{}},
		OVERSET:             {Tag: "mover", Modifiers: map[string]string{}},
		UNDERBRACE:          {Tag: "munder", Modifiers: map[string]string{}},
		UNDERLEFTARROW:      {Tag: "munder", Modifiers: map[string]string{}},
		UNDERLINE:           {Tag: "munder", Modifiers: map[string]string{}},
		UNDERPAREN:          {Tag: "munder", Modifiers: map[string]string{}},
		UNDERRIGHTARROW:     {Tag: "munder", Modifiers: map[string]string{}},
		UNDERLEFTRIGHTARROW: {Tag: "munder", Modifiers: map[string]string{}},
		UNDERSET:            {Tag: "munder", Modifiers: map[string]string{}},
		VEC:                 {Tag: "mover", Modifiers: map[string]string{}},
		WIDEHAT:             {Tag: "mover", Modifiers: map[string]string{}},
		WIDETILDE:           {Tag: "mover", Modifiers: map[string]string{}},
		COLON:               {Tag: "mspace", Modifiers: map[string]string{"width": "0.222em"}},
		COMMA:               {Tag: "mspace", Modifiers: map[string]string{"width": "0.167em"}},
		DOUBLEBACKSLASH:     {Tag: "mspace", Modifiers: map[string]string{"linebreak": "newline"}},
		ENSPACE:             {Tag: "mspace", Modifiers: map[string]string{"width": "0.5em"}},
		EXCLAMATION:         {Tag: "mspace", Modifiers: map[string]string{"width": "negativethinmathspace"}},
		GREATER_THAN:        {Tag: "mspace", Modifiers: map[string]string{"width": "0.222em"}},
		HSKIP:               {Tag: "mspace", Modifiers: map[string]string{}},
		HSPACE:              {Tag: "mspace", Modifiers: map[string]string{}},
		KERN:                {Tag: "mspace", Modifiers: map[string]string{}},
		MKERN:               {Tag: "mspace", Modifiers: map[string]string{}},
		MSKIP:               {Tag: "mspace", Modifiers: map[string]string{}},
		MSPACE:              {Tag: "mspace", Modifiers: map[string]string{}},
		NEGTHINSPACE:        {Tag: "mspace", Modifiers: map[string]string{"width": "negativethinmathspace"}},
		NEGMEDSPACE:         {Tag: "mspace", Modifiers: map[string]string{"width": "negativemediummathspace"}},
		NEGTHICKSPACE:       {Tag: "mspace", Modifiers: map[string]string{"width": "negativethickmathspace"}},
		THINSPACE:           {Tag: "mspace", Modifiers: map[string]string{"width": "thinmathspace"}},
		QQUAD:               {Tag: "mspace", Modifiers: map[string]string{"width": "2em"}},
		QUAD:                {Tag: "mspace", Modifiers: map[string]string{"width": "1em"}},
		SEMICOLON:           {Tag: "mspace", Modifiers: map[string]string{"width": "0.278em"}},
		BOXED:               {Tag: "menclose", Modifiers: map[string]string{"notation": "box"}},
		FBOX:                {Tag: "menclose", Modifiers: map[string]string{"notation": "box"}},
		LEFT:                {Tag: "mo", Modifiers: map[string]string{"stretchy": "true", "fence": "true", "form": "prefix"}},
		MIDDLE:              {Tag: "mo", Modifiers: map[string]string{"stretchy": "true", "fence": "true", "lspace": "0.05em", "rspace": "0.05em"}},
		RIGHT:               {Tag: "mo", Modifiers: map[string]string{"stretchy": "true", "fence": "true", "form": "postfix"}},
		COLOR:               {Tag: "mstyle", Modifiers: map[string]string{}},
		SQRT:                {Tag: "msqrt", Modifiers: map[string]string{}},
		ROOT:                {Tag: "mroot", Modifiers: map[string]string{}},
		HREF:                {Tag: "mtext", Modifiers: map[string]string{}},
		TEXT:                {Tag: "mtext", Modifiers: map[string]string{}},
		TEXTBF:              {Tag: "mtext", Modifiers: map[string]string{"mathvariant": "bold"}},
		TEXTIT:              {Tag: "mtext", Modifiers: map[string]string{"mathvariant": "italic"}},
		TEXTRM:              {Tag: "mtext", Modifiers: map[string]string{}},
		TEXTSF:              {Tag: "mtext", Modifiers: map[string]string{"mathvariant": "sans-serif"}},
		TEXTTT:              {Tag: "mtext", Modifiers: map[string]string{"mathvariant": "monospace"}},
		HBOX:                {Tag: "mtext", Modifiers: map[string]string{}},
		MBOX:                {Tag: "mtext", Modifiers: map[string]string{}},
		HPHANTOM:            {Tag: "mphantom", Modifiers: map[string]string{}},
		PHANTOM:             {Tag: "mphantom", Modifiers: map[string]string{}},
		VPHANTOM:            {Tag: "mphantom", Modifiers: map[string]string{}},
		SIDESET:             {Tag: "mrow", Modifiers: map[string]string{}},
		SKEW:                {Tag: "mrow", Modifiers: map[string]string{}},
		MOD:                 {Tag: "mi", Modifiers: map[string]string{}},
		PMOD:                {Tag: "mi", Modifiers: map[string]string{}},
		BMOD:                {Tag: "mo", Modifiers: map[string]string{}},
		XLEFTARROW:          {Tag: "mover", Modifiers: map[string]string{}},
		XRIGHTARROW:         {Tag: "mover", Modifiers: map[string]string{}},
	}
)
View Source
var COLUMNS_ALINGNMENT_MAP = map[string]string{"r": "right", "l": "left", "c": "center"}
View Source
var MATH_MODE_PATTERN = regexp.MustCompile(`\\\$|\$|\\?[^\\$]+`)
View Source
var NUMBER_PATTERN = regexp.MustCompile(`\d+(.\d+)?`)
View Source
var OPERATORS = []string{
	"+",
	"-",
	"*",
	"/",
	"(",
	")",
	"=",
	",",
	"?",
	"[",
	"]",
	"|",
	`\|`,
	"!",
	`\{`,
	`\}`,
	`>`,
	`<`,
	`.`,
	`\bigotimes`,
	`\centerdot`,
	`\dots`,
	`\dotsc`,
	`\dotso`,
	`\gt`,
	`\ldotp`,
	`\lt`,
	`\lvert`,
	`\lVert`,
	`\lvertneqq`,
	`\ngeqq`,
	`\omicron`,
	`\rvert`,
	`\rVert`,
	`\S`,
	`\smallfrown`,
	`\smallint`,
	`\smallsmile`,
	`\surd`,
	`\varsubsetneqq`,
	`\varsupsetneqq`,
}
View Source
var PATTERN = []string{
	`(%[^\n]+)`,
	`(a-zA-Z)`,
	`([_^])(\d)`,
	`(-?\d+(?:\.\d+)?\s*(?:in|mm|cm|pt|em|ex|pc|bp|dd|cc|sp|mu))`,
	`(\d+(?:\.\d+)?)`,
	`(\.\d*)`,
	`(\\[\\\[\]{{}}\s!,:>;|_%#$&])`,
	`(\\(?:begin|end)\s*{[a-zA-Z]+\*?})`,
	`(\\operatorname\s*{[a-zA-Z\s*]+\*?\s*})`,
	`(\\(?:color|fbox|hbox|href|mbox|style|text|textbf|textit|textrm|textsf|texttt))\s*{([^}}]*)}`,
	`(\\[cdt]?frac)\s*([.\d])\s*([.\d])?`,
	`(\\math[a-z]+)({)([a-zA-Z])(})`,
	`(\\[a-zA-Z]+)`,
	`(\S)`,
}
View Source
var SPACE_LIST = []string{`\ `, "~", NOBREAKSPACE, SPACE}
View Source
var SYMBOLS_INITILIZED = false
View Source
var Symbols = map[string]string{}
View Source
var SymbolsFile embed.FS
View Source
var UNITS = []string{"in", "mm", "cm", "pt", "em", "ex", "pc", "bp", "dd", "cc", "sp", "mu"}

Functions

func Convert

func Convert(latex string, xmlns string, display string, indent int) string

func ConvertSymbol

func ConvertSymbol(symbol string) (string, error)

func Filter

func Filter(vs []string, f func(string) bool) []string

func InitializeCommands

func InitializeCommands()

func ParseSymbol

func ParseSymbol()

func Tokenize

func Tokenize(latex string) []string

Types

type Mode

type Mode int64
const (
	TextMode Mode = 0
	MathMode Mode = 1
)

type Moded

type Moded struct {
	Value string
	Mode  Mode
}

func SeparateByMode

func SeparateByMode(text string) []Moded

type Node

type Node struct {
	Token      string
	Children   []Node
	Delimiter  string
	Alignment  string
	Text       string
	Attributes map[string]string
	Modifier   string
}

func Walk

func Walk(data string) ([]Node, error)

type Style

type Style struct {
	Tag       string
	Modifiers map[string]string
}

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL