/// <summary> /// Performs the conversion procedure. /// </summary> /// <param name="expr">The expression to convert.</param> /// <returns>The conversion result.</returns> public override string Convert(LatexExpression expr) { if (expr.Expressions == null) { return(""); } GetParameters(); var bld = new StringBuilder(); if (_mathMode) { bld.Append("<mover accent=\"true\">\n"); if (!_stretchy) { bld.Append(expr.Expressions[0][0].Convert()); } else { bld.Append(SequenceConverter.ConvertOutline(expr.Expressions[0], expr.Customization)); } bld.Append("<mo stretchy=\"true\">" + _value + "</mo>\n</mover>\n"); } else { MathConverter.AppendMathProlog(bld, "accent", true, expr.Customization); bld.Append("<mrow>"); bld.Append("<mover accent=\"true\">\n"); bld.Append(expr.Expressions[0][0].Convert()); bld.Append("<mo>" + _value + "</mo>\n</mover>\n"); bld.Append("</mrow>\n"); MathConverter.AppendMathEpilog(bld); } return(bld.ToString()); }
/// <summary> /// Performs the conversion procedure. /// </summary> /// <param name="expr">The expression to convert.</param> /// <returns>The conversion result.</returns> public override string Convert(LatexExpression expr) { var bld = new StringBuilder("<p style=\"text-align:"); bld.Append(_alignment); bld.Append(";\">\n"); bld.Append(SequenceConverter.ConvertOutline(expr.Expressions[0], expr.Customization)); bld.Append("</p>\n"); return(bld.ToString()); }
/// <summary> /// Performs the conversion procedure. /// </summary> /// <param name="expr">The expression to convert.</param> /// <returns>The conversion result.</returns> public override string Convert(LatexExpression expr) { var bld = new StringBuilder(); bld.Append("<mfrac>\n<mrow>\n"); bld.Append(SequenceConverter.ConvertOutline(expr.Expressions[0], expr.Customization)); bld.Append("</mrow>\n<mrow>\n"); bld.Append(SequenceConverter.ConvertOutline(expr.Expressions[1], expr.Customization)); bld.Append("</mrow>\n</mfrac>\n"); return(bld.ToString()); }
/// <summary> /// Performs the conversion procedure. /// </summary> /// <param name="expr">The expression to convert.</param> /// <returns>The conversion result.</returns> public override string Convert(LatexExpression expr) { if (expr.Expressions == null) { return(""); } var alg = "<code class=\"algorithm\">"; alg += SequenceConverter.ConvertOutline(expr.Expressions[0], expr.Customization); return(alg + "</code>\n"); }
/// <summary> /// Performs the conversion procedure. /// </summary> /// <param name="expr">The expression to convert.</param> /// <returns>The conversion result.</returns> public override string Convert(LatexExpression expr) { if (expr.Expressions == null) { return(""); } var url = expr.Expressions[0][0].Name; var text = SequenceConverter.ConvertOutline(expr.Expressions[1], expr.Customization); return("<a href=\"" + url + "\">" + text + "</a>"); }
/// <summary> /// Performs the conversion procedure of math blocks. /// </summary> /// <param name="outline">The sequence of expressions to convert.</param> /// <param name="altText">The alternative text.</param> /// <param name="inline">Indicates whether the math block is inline.</param> /// <returns>The converted XML string.</returns> private static string CommonConvert(IList <LatexExpression> outline, string altText, bool inline, LatexMathToMathMLConverter customization) { if (outline.Count == 0) { return(""); } var bld = new StringBuilder(); AppendMathProlog(bld, altText, inline, customization); bld.Append("<mrow>\n"); bld.Append(SequenceConverter.ConvertOutline(outline, customization)); bld.Append("</mrow>\n"); AppendMathEpilog(bld); return(bld.ToString()); }
/// <summary> /// Performs the conversion procedure. /// </summary> /// <param name="expr">The expression to convert.</param> /// <returns>The conversion result.</returns> public override string Convert(LatexExpression expr) { CommandConverter converter; if (CommandConverters.TryGetValue(expr.GetCommandConverterHashCode(), out converter)) { if (converter.ExpectedBranchesCount > 0 && (expr.Expressions == null || expr.Expressions.Count < converter.ExpectedBranchesCount)) { throw new FormatException(@"Unexpected format in command \\" + converter.Name); //return "<!-- Unexpected format in command \\" + converter.Name + " -->"; } var result = converter.Convert(expr); // Make sure that {} blocks which were attached to the command by mistake will be converted, too. // Goddamn ancient Latex if (expr.Expressions != null && expr.Expressions.Count > converter.ExpectedBranchesCount) { for (int i = converter.ExpectedBranchesCount; i < expr.Expressions.Count; i++) { result += SequenceConverter.ConvertOutline(expr.Expressions[i], expr.Customization); } } return(result); } string constant; if (CommandConstants.TryGetValue(expr.Name, out constant)) { if (expr.MathMode) { return("<mi>" + constant + "</mi>"); } return(constant); } if ((constant = SearchInTables(MathCommandConstants, expr)) != null) { return(constant); } if ((constant = SearchInTables(MathFunctionsCommandConstants, expr)) != null) { return(constant); } if ((constant = SearchInTables(MathFunctionsScriptCommandConstants, expr)) != null) { return(constant); } return("<!-- \\" + LatexStringToXmlString(expr.Name) + " -->\n"); }
/// <summary> /// Performs the conversion procedure (comments the expression). /// </summary> /// <param name="expr">The expression to convert.</param> /// <returns>The conversion result.</returns> public override string Convert(LatexExpression expr) { var bld = new StringBuilder(); int parentChildNumber = expr.Expressions.Count == 1 ? 0 : 1; var rows = expr.Expressions[parentChildNumber]; var alignments = parentChildNumber > 0 ? expr.Expressions[0][0].Name : ""; alignments = alignments.Replace("|", ""); bld.Append("<mtable>\n"); for (int i = 0; i < rows.Count; i++) { bld.Append("<mtr>\n"); for (int j = 0; j < rows[i].Expressions[0].Count; j++) { #region Determine the alignment var alignment = "center"; if (j < alignments.Length) { switch (alignments[j]) { case 'c': alignment = "center"; break; case 'l': alignment = "left"; break; case 'r': alignment = "right"; break; } } #endregion bld.Append("<mtd columnalign=\""); bld.Append(alignment); bld.Append("\">\n<mrow>\n"); bld.Append(SequenceConverter.ConvertOutline(rows[i].Expressions[0][j].Expressions[0], expr.Customization)); bld.Append("</mrow>\n</mtd>\n"); } bld.Append("</mtr>\n"); } bld.Append("</mtable>\n"); return(bld.ToString()); }
/// <summary> /// Performs the conversion procedure. /// </summary> /// <param name="expr">The expression to convert.</param> /// <returns>The conversion result.</returns> public override string Convert(LatexExpression expr) { var bld = new StringBuilder(); if (expr.Options == null) { bld.Append("<msqrt>\n<mrow>\n"); bld.Append(SequenceConverter.ConvertOutline(expr.Expressions[0], expr.Customization)); bld.Append("</mrow>\n</msqrt>\n"); return(bld.ToString()); } bld.Append("<mroot>\n<mrow>\n"); bld.Append(SequenceConverter.ConvertOutline(expr.Expressions[0], expr.Customization)); bld.Append("</mrow>\n<mrow>\n"); bld.Append(SequenceConverter.ConvertOutline(expr.Options.AsExpressions, expr.Customization)); bld.Append("</mrow>\n</mroot>\n"); return(bld.ToString()); }
/// <summary> /// Performs the conversion procedure. /// </summary> /// <param name="expr">The expression to convert.</param> /// <returns>The conversion result.</returns> public override string Convert(LatexExpression expr) { if (expr.Expressions == null) { return(""); } if (expr.Parent.ExprType == ExpressionType.Block && expr.Parent.Name.IndexOf("script") > -1) { return(SequenceConverter.ConvertOutline(expr.Expressions[0], expr.Customization)); } var bld = new StringBuilder(); string tag; tag = expr.Name == "^" ? "sup" : "sub"; bld.Append("<" + tag + ">\n"); bld.Append(SequenceConverter.ConvertOutline(expr.Expressions[0], expr.Customization)); bld.Append("</" + tag + ">"); return(bld.ToString()); }
/// <summary> /// Performs the conversion procedure (comments the expression). /// </summary> /// <param name="expr">The expression to convert.</param> /// <returns>The conversion result.</returns> public override string Convert(LatexExpression expr) { var bld = new StringBuilder(); MathConverter.AppendMathProlog(bld, "eqnarray", false, expr.Customization); var rows = expr.Expressions[0]; bld.Append("<mtable>\n"); for (int i = 0; i < rows.Count; i++) { bld.Append("<mtr>\n"); for (int j = 0; j < rows[i].Expressions[0].Count; j++) { bld.Append("<mtd columnalign=\"left\">\n<mrow>\n"); bld.Append(SequenceConverter.ConvertOutline(rows[i].Expressions[0][j].Expressions[0], expr.Customization)); bld.Append("</mrow>\n</mtd>\n"); } bld.Append("</mtr>\n"); } bld.Append("</mtable>\n"); MathConverter.AppendMathEpilog(bld); return(bld.ToString()); }
/// <summary> /// Performs the conversion procedure. /// </summary> /// <param name="expr">The expression to convert.</param> /// <returns>The conversion result.</returns> public override string Convert(LatexExpression expr) { return("<span class=\"algorithm_token\">procedure " + (expr.Expressions == null? "" : SequenceConverter.ConvertOutline(expr.Expressions[0], expr.Customization)) + "</span>"); }