public void GetTextBold(string latex, IList <Element> container, Marker marker) { if (marker.Position <= latex.Length - 7) { if (latex.Substring(marker.Position, 7) == "\\textbf") { marker.Position += 7; var line = new MathematicsLine(); var subsection = GetSubsection(latex, container, marker); if (subsection != null) { line.Elements = subsection.Item2; marker.Position += subsection.Item1; line.CascadeStyle("FontWeight", "Bold"); container.Add(line); } } } }
public void SetMathematicsLineSize5() { var mathematicsLine1 = new MathematicsLine(); var number1 = new Number(); var number2 = new Number(); number1.Content = "123"; number1.OuterMargin.Left = 3; number1.OuterMargin.Right = 5; number2.Content = "45"; number2.OuterMargin.Left = 2; number2.OuterMargin.Right = 3; mathematicsLine1.Elements.Add(number1); mathematicsLine1.Elements.Add(number2); _typesetter.SetMathematicsLineSize(mathematicsLine1); Assert.AreEqual(16, mathematicsLine1.SizeOfContent.Width); Assert.AreEqual(1, mathematicsLine1.SizeOfContent.Height); Assert.AreEqual(16, mathematicsLine1.SizeIncludingInnerMargin.Width); Assert.AreEqual(1, mathematicsLine1.SizeIncludingInnerMargin.Height); Assert.AreEqual(16, mathematicsLine1.SizeIncludingBorder.Width); Assert.AreEqual(1, mathematicsLine1.SizeIncludingBorder.Height); Assert.AreEqual(16, mathematicsLine1.SizeIncludingOuterMargin.Width); Assert.AreEqual(1, mathematicsLine1.SizeIncludingOuterMargin.Height); }
public void GetMathRoman(string latex, IList <Element> container, Marker marker) { if (marker.Position <= latex.Length - 7) { if (latex.Substring(marker.Position, 7) == "\\mathrm") { marker.Position += 7; var line = new MathematicsLine(); var subsection = GetSubsection(latex, container, marker); if (subsection != null) { line.Elements = subsection.Item2; marker.Position += subsection.Item1; line.CascadeStyle("FontEmphasis", "None"); container.Add(line); } } } }
public void GetSquareRoot(string latex, IList <Element> container, Marker marker) { if (marker.Position < latex.Length - 8) { if (latex.Substring(marker.Position, 5) == "\\sqrt") { marker.Position += 5; var squareRoot = new SquareRoot(); var subsection1 = GetSubsection(latex, container, marker); if (subsection1 != null) { var line1 = new MathematicsLine(); line1.Elements = subsection1.Item2; squareRoot.InnerExpression = line1; marker.Position += subsection1.Item1; container.Add(squareRoot); } } } }
public void GetSubscript(string latex, IList <Element> container, Marker marker) { if (marker.Position >= latex.Length) { return; } if (latex.Substring(marker.Position, 1) == "_") { marker.Position += 1; var subsection = GetSubsection(latex, container, marker); if (subsection != null) { var subscript = new Subscript(); var line = new MathematicsLine(); subscript.Element1 = container.Last(); if (subsection.Item2.Count() == 1) { subscript.Element2 = subsection.Item2.First(); } else { line.Elements = subsection.Item2; subscript.Element2 = line; } container.Remove(container.Last()); container.Add(subscript); marker.Position += subsection.Item1; } else { var elements = new List <Element>(); GetGreekLetter(latex, elements, marker); GetIdentifier(latex, elements, marker); GetNumber(latex, elements, marker); GetOperator(latex, elements, marker); GetMathRoman(latex, elements, marker); GetPunctuationMark(latex, elements, marker); if (elements.Any()) { var subscript = new Subscript(); subscript.Element1 = container.Last(); subscript.Element2 = elements.First(); container.Remove(container.Last()); container.Add(subscript); } } } }
public void GetFraction(string latex, IList <Element> container, Marker marker) { if (marker.Position >= latex.Length || latex.Length - marker.Position < 5) { return; } if (latex.Substring(marker.Position, 5) == "\\frac") { marker.Position += 5; var fraction = new Fraction(); var subsection1 = GetSubsection(latex, container, marker); if (subsection1 != null) { var line1 = new MathematicsLine(); if (subsection1.Item2.Count() == 1) { fraction.Numerator = subsection1.Item2.First(); } else { line1.Elements = subsection1.Item2; fraction.Numerator = line1; } marker.Position += subsection1.Item1; } var subsection2 = GetSubsection(latex, container, marker); if (subsection2 != null) { var line2 = new MathematicsLine(); if (subsection2.Item2.Count() == 1) { fraction.Denominator = subsection2.Item2.First(); } else { line2.Elements = subsection2.Item2; fraction.Denominator = line2; } marker.Position += subsection2.Item1; } if (fraction.Numerator != null && fraction.Denominator != null) { container.Add(fraction); } } }
public MathematicsLine ParseLaTeX(string latex) { var line = new MathematicsLine(); line.Elements = ParseSubsection(latex); return(line); }
public void GetBracketExpression(string latex, IList <Element> container, Marker marker) { if (marker.Position < latex.Length - 13) { if (latex.Substring(marker.Position, 6) == "\\left(") { var n = 1; var i = 0; var j = marker.Position + 6; while (j < latex.Length) { if (latex.Substring(j, 6) == "\\left(") { n += 1; i += 6; j += 6; } if (latex.Substring(j, 7) == "\\right)") { n -= 1; i += 7; j += 7; } else { i += 1; j += 1; } if (n == 0) { break; } } var t = latex.Substring(marker.Position + 6, i - 7); var bracketExpression = new BracketExpression(); var mathematicsLine = new MathematicsLine(); mathematicsLine.Elements = ParseSubsection(t); bracketExpression.InnerExpression = mathematicsLine; container.Add(bracketExpression); marker.Position += 6 + i; } } }
public void SetMathematicsLineSize1() { var mathematicsLine1 = new MathematicsLine(); _typesetter.SetMathematicsLineSize(mathematicsLine1); Assert.AreEqual(0, mathematicsLine1.SizeOfContent.Width); Assert.AreEqual(0, mathematicsLine1.SizeOfContent.Height); Assert.AreEqual(0, mathematicsLine1.SizeIncludingInnerMargin.Width); Assert.AreEqual(0, mathematicsLine1.SizeIncludingInnerMargin.Height); Assert.AreEqual(0, mathematicsLine1.SizeIncludingBorder.Width); Assert.AreEqual(0, mathematicsLine1.SizeIncludingBorder.Height); Assert.AreEqual(0, mathematicsLine1.SizeIncludingOuterMargin.Width); Assert.AreEqual(0, mathematicsLine1.SizeIncludingOuterMargin.Height); }