]> git.lyx.org Git - lyx.git/commitdiff
MathML in HTML: don't escape <> for a raw LaTeX output.
authorThibaut Cuvelier <tcuvelier@lyx.org>
Wed, 20 Mar 2024 23:29:23 +0000 (00:29 +0100)
committerThibaut Cuvelier <tcuvelier@lyx.org>
Wed, 20 Mar 2024 23:29:23 +0000 (00:29 +0100)
In some cases (I only found numbered equations), the LaTeX output still has a bit of HTML. For numbered equations, using \tag{X} (as suggested in https://www.lyx.org/trac/ticket/13048) would require fiddling with the output. KaTeX doesn't support \label. This patch is probably the easiest and most reliable fix.

Fixes https://www.lyx.org/trac/ticket/13048.

autotests/export/xhtml/math_output_latex.lyx [new file with mode: 0644]
autotests/export/xhtml/math_output_latex.xhtml [new file with mode: 0644]
src/mathed/InsetMathHull.cpp

diff --git a/autotests/export/xhtml/math_output_latex.lyx b/autotests/export/xhtml/math_output_latex.lyx
new file mode 100644 (file)
index 0000000..59d77d2
--- /dev/null
@@ -0,0 +1,112 @@
+#LyX 2.4 created this file. For more info see https://www.lyx.org/
+\lyxformat 620
+\begin_document
+\begin_header
+\save_transient_properties true
+\origin unavailable
+\textclass article
+\use_default_options true
+\maintain_unincluded_children no
+\language american
+\language_package default
+\inputencoding utf8
+\fontencoding auto
+\font_roman "default" "default"
+\font_sans "default" "default"
+\font_typewriter "default" "default"
+\font_math "auto" "auto"
+\font_default_family default
+\use_non_tex_fonts false
+\font_sc false
+\font_roman_osf false
+\font_sans_osf false
+\font_typewriter_osf false
+\font_sf_scale 100 100
+\font_tt_scale 100 100
+\use_microtype false
+\use_dash_ligatures true
+\graphics default
+\default_output_format default
+\output_sync 0
+\bibtex_command default
+\index_command default
+\float_placement class
+\float_alignment class
+\paperfontsize default
+\spacing single
+\use_hyperref false
+\papersize default
+\use_geometry false
+\use_package amsmath 1
+\use_package amssymb 1
+\use_package cancel 1
+\use_package esint 1
+\use_package mathdots 1
+\use_package mathtools 1
+\use_package mhchem 1
+\use_package stackrel 1
+\use_package stmaryrd 1
+\use_package undertilde 1
+\cite_engine basic
+\cite_engine_type default
+\biblio_style plain
+\use_bibtopic false
+\use_indices false
+\paperorientation portrait
+\suppress_date false
+\justification true
+\use_refstyle 1
+\use_formatted_ref 0
+\use_minted 0
+\use_lineno 0
+\index Index
+\shortcut idx
+\color #008000
+\end_index
+\secnumdepth 3
+\tocdepth 3
+\paragraph_separation indent
+\paragraph_indentation default
+\is_math_indent 0
+\math_numbering_side default
+\quotes_style english
+\dynamic_quotes 0
+\papercolumns 1
+\papersides 1
+\paperpagestyle default
+\tablestyle default
+\tracking_changes false
+\output_changes false
+\change_bars false
+\postpone_fragile_content true
+\html_math_output 3
+\html_css_as_file 0
+\html_be_strict false
+\docbook_table_output 0
+\docbook_mathml_prefix 1
+\end_header
+
+\begin_body
+
+\begin_layout Title
+Math formula output as raw LaTeX
+\end_layout
+
+\begin_layout Standard
+The problem occurs when adding a label.
+ https://www.lyx.org/trac/ticket/13048
+\end_layout
+
+\begin_layout Standard
+\begin_inset Formula 
+\begin{equation}
+x^{2}\label{eq:1}
+\end{equation}
+
+\end_inset
+
+
+\end_layout
+
+\end_body
+\end_document
diff --git a/autotests/export/xhtml/math_output_latex.xhtml b/autotests/export/xhtml/math_output_latex.xhtml
new file mode 100644 (file)
index 0000000..cec2d5b
--- /dev/null
@@ -0,0 +1,28 @@
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta name="generator" content="LyX 2.4.0~devel" />
+<title>Math formula output as raw LaTeX</title>
+<style>
+/* Layout-provided Styles */
+h1.title {
+font-size: x-large;
+margin-bottom: 1ex;
+text-align: center;
+
+}
+div.standard {
+       margin-bottom: 2ex;
+}
+
+
+</style>
+</head>
+<body dir="auto">
+<h1 class='title' id='magicparlabel-1'>Math formula output as raw LaTeX</h1>
+<div class='standard' id='magicparlabel-2'>The problem occurs when adding a label. https://www.lyx.org/trac/ticket/13048</div>
+
+<div class='standard' id='magicparlabel-3'><a id="eq_1" /><div class='math'><table class='mathtable'><tr><td class='math'>x^{2}</td><td>(1)</td></tr></table></div>
+</div>
+</body>
+</html>
index 2ba98b3d4df17fbc1846e5917fce4920c58b6e66..bb368b3b9318ba997db8a14ce8a09bb1cd183c9c 100644 (file)
@@ -2729,7 +2729,8 @@ docstring InsetMathHull::xhtml(XMLStream & xs, OutputParams const & op) const
                // probably should allow for some kind of customization here
                string const tag = (getType() == hullSimple) ? "span" : "div";
                xs << xml::StartTag(tag, "class='math'")
-                  << latex
+                  << XMLStream::ESCAPE_AND << latex // Don't escape <> tags: latex might contain them
+                  // (typically, when there is a label).
                   << xml::EndTag(tag)
                   << xml::CR();
        }