commit 16660d12b4333f6486259048dec2b0a2e48a64d9
Author: Thibaut Cuvelier <tcuvel...@lyx.org>
Date:   Thu Mar 21 00:29:23 2024 +0100

    MathML in HTML: don't escape <> for a raw LaTeX output.
    
    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   | 112 +++++++++++++++++++++++++
 autotests/export/xhtml/math_output_latex.xhtml |  28 +++++++
 src/mathed/InsetMathHull.cpp                   |   3 +-
 3 files changed, 142 insertions(+), 1 deletion(-)

diff --git a/autotests/export/xhtml/math_output_latex.lyx 
b/autotests/export/xhtml/math_output_latex.lyx
new file mode 100644
index 0000000000..59d77d2f9b
--- /dev/null
+++ b/autotests/export/xhtml/math_output_latex.lyx
@@ -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
index 0000000000..cec2d5ba0d
--- /dev/null
+++ b/autotests/export/xhtml/math_output_latex.xhtml
@@ -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>
diff --git a/src/mathed/InsetMathHull.cpp b/src/mathed/InsetMathHull.cpp
index 2ba98b3d4d..bb368b3b93 100644
--- a/src/mathed/InsetMathHull.cpp
+++ b/src/mathed/InsetMathHull.cpp
@@ -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();
        }
-- 
lyx-cvs mailing list
lyx-cvs@lists.lyx.org
http://lists.lyx.org/mailman/listinfo/lyx-cvs

Reply via email to