commit 011c3d73c0c3137dcd67bf8bb09644ac064b2342
Author: Thibaut Cuvelier <tcuvel...@lyx.org>
Date:   Sat Mar 9 20:59:12 2024 +0100

    MathML: consider ordinary and alphabetical characters as identifiers 
instead of operators.
    
    The goal is to consider all Greek letters as identifiers instead of 
operators.
    
    Solves: https://www.lyx.org/trac/ticket/12948.
---
 .../export/docbook/mathml_greek_operators.lyx      | 112 +++++++++++++++++++++
 .../export/docbook/mathml_greek_operators.xml      |  20 ++++
 src/mathed/MathParser.cpp                          |   4 +-
 3 files changed, 135 insertions(+), 1 deletion(-)

diff --git a/autotests/export/docbook/mathml_greek_operators.lyx 
b/autotests/export/docbook/mathml_greek_operators.lyx
new file mode 100644
index 0000000000..f7d2c1111e
--- /dev/null
+++ b/autotests/export/docbook/mathml_greek_operators.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
+\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
+\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 0
+\html_css_as_file 0
+\html_be_strict false
+\docbook_table_output 0
+\docbook_mathml_prefix 1
+\end_header
+
+\begin_body
+
+\begin_layout Title
+MathML:
+ all Greek letters are symbols,
+ none of them is an operator
+\end_layout
+
+\begin_layout Standard
+Issue:
+ https://www.lyx.org/trac/ticket/12948
+\end_layout
+
+\begin_layout Standard
+\begin_inset Formula 
+\[
+1\alpha2\Xi3
+\]
+
+\end_inset
+
+
+\end_layout
+
+\end_body
+\end_document
diff --git a/autotests/export/docbook/mathml_greek_operators.xml 
b/autotests/export/docbook/mathml_greek_operators.xml
new file mode 100644
index 0000000000..c5fc17c0b8
--- /dev/null
+++ b/autotests/export/docbook/mathml_greek_operators.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- This DocBook file was created by LyX 2.4.0~devel
+  See https://www.lyx.org/ for more information -->
+<article xml:lang="en-US" xmlns="http://docbook.org/ns/docbook"; 
xmlns:xlink="http://www.w3.org/1999/xlink"; 
xmlns:m="http://www.w3.org/1998/Math/MathML"; 
xmlns:xi="http://www.w3.org/2001/XInclude"; version="5.2">
+<title>MathML: all Greek letters are symbols, none of them is an 
operator</title>
+<para>Issue: https://www.lyx.org/trac/ticket/12948</para>
+<informalequation>
+<alt role='tex'>1\alpha2\Xi3</alt>
+<m:math display="block">
+ 
+<m:mrow>
+ <m:mn>1</m:mn>
+ <m:mi>&#x3B1;</m:mi>
+ <m:mn>2</m:mn>
+ <m:mi>&#x39E;</m:mi>
+ <m:mn>3</m:mn>
+</m:mrow>
+</m:math>
+</informalequation>
+</article>
\ No newline at end of file
diff --git a/src/mathed/MathParser.cpp b/src/mathed/MathParser.cpp
index e94b6cea32..9b43da8cdd 100644
--- a/src/mathed/MathParser.cpp
+++ b/src/mathed/MathParser.cpp
@@ -2141,8 +2141,10 @@ bool Parser::parse1(InsetMathGrid & grid, unsigned flags,
 // FIXME This will likely need some work.
 char const * latexkeys::MathMLtype() const
 {
-       if (extra == "mathord")
+       // Consider as identifier (mml:mi): ordinary and alphabetical 
characters.
+       if (extra == "mathord" || extra == "mathalpha")
                return "mi";
+       // Consider as operators (mml:mo): everything else.
        return "mo";
 }
 
-- 
lyx-cvs mailing list
lyx-cvs@lists.lyx.org
http://lists.lyx.org/mailman/listinfo/lyx-cvs

Reply via email to