[LyX/master] Fix in symbols handling: parse the XML entity with \def.

Pavel Sanda sanda at lyx.org
Fri Jun 19 06:01:31 UTC 2020


commit 8f897682112026cf0f86cfcf5c24f5052111e02d
Author: Thibaut Cuvelier <cuvelier.thibaut at gmail.com>
Date:   Fri Jun 19 02:27:31 2020 +0200

    Fix in symbols handling: parse the XML entity with \def.
---
 lib/symbols                |   20 ++++++++++----------
 src/mathed/MathFactory.cpp |   11 +++++++----
 2 files changed, 17 insertions(+), 14 deletions(-)

diff --git a/lib/symbols b/lib/symbols
index d069141..277dd80 100644
--- a/lib/symbols
+++ b/lib/symbols
@@ -16,9 +16,9 @@
 # or
 # \def\macroname{definition} requires
 # or
-# \def\macroname{definition} extra xmlname
+# \def\macroname{definition} extra htmlname xmlname
 # or
-# \def\macroname{definition} extra xmlname requires
+# \def\macroname{definition} extra htmlname xmlname requires
 #
 # ("" for empty strings is not supported. One would have to use x for fields
 # that are not set.)
@@ -999,12 +999,12 @@ bignplus           stmry 112   0 mathop     x  x  stmaryrd # caution: named huge
 \def\Arrownot{\lyxArrownot\mathrel{\kern0.5mu}}             stmaryrd
 \def\longarrownot{\mathrel{\kern5.5mu}\arrownot\mathrel{\kern-5.5mu}} stmaryrd
 \def\Longarrownot{\mathrel{\kern5.5mu}\Arrownot\mathrel{\kern-5.5mu}} stmaryrd
-\def\Mapsto{\Mapstochar\mathrel\Rightarrow}              mathrel &#x2907; stmaryrd
-\def\mapsfrom{\leftarrow\kern-9mu\mapsfromchar}          mathrel &#x21a4; stmaryrd
-\def\Mapsfrom{\Leftarrow\kern-9mu\Mapsfromchar}          mathrel &#x2906; stmaryrd
-\def\Longmapsto{\Mapstochar\Longrightarrow}              mathrel &#x27fe; stmaryrd
-\def\longmapsfrom{\longleftarrow\mapsfromchar}           mathrel &#x27fb; stmaryrd
-\def\Longmapsfrom{\Longleftarrow\mathrel{\kern1mu}\Mapsfromchar}   mathrel &#x27fd; stmaryrd
+\def\Mapsto{\Mapstochar\mathrel\Rightarrow}              mathrel &#x2907; &#x2907; stmaryrd
+\def\mapsfrom{\leftarrow\kern-9mu\mapsfromchar}          mathrel &#x21a4; &#x21a4; stmaryrd
+\def\Mapsfrom{\Leftarrow\kern-9mu\Mapsfromchar}          mathrel &#x2906; &#x2906; stmaryrd
+\def\Longmapsto{\Mapstochar\Longrightarrow}              mathrel &#x27fe; &#x27fe; stmaryrd
+\def\longmapsfrom{\longleftarrow\mapsfromchar}           mathrel &#x27fb; &#x27fb; stmaryrd
+\def\Longmapsfrom{\Longleftarrow\mathrel{\kern1mu}\Mapsfromchar}   mathrel &#x27fd; &#x27fd; stmaryrd
 
 # symbols from the mhchem package, all of them are equivalent to a math symbol
 # mhchem is not loaded because these commands can only be used inside
@@ -1159,8 +1159,8 @@ ordinarycolon      cmr          58  58    mathrel :  :          mathtools
 \def\lnot{\neg}                                                 mathord ¬       &#xAC;
 \def\notin{\not\in}                                             mathrel ∉     &#x2209;
 
-\def\ddag{\ddagger}                                             mathbin ‡
-\def\dag{\dagger}                                               mathbin †
+\def\ddag{\ddagger}                                             mathbin ‡    &#x2021;
+\def\dag{\dagger}                                               mathbin †    &#x2020;
 
 \def\joinrel{\mathrel{\kern-3mu}}
 \def\relbar{\lyxbar}
diff --git a/src/mathed/MathFactory.cpp b/src/mathed/MathFactory.cpp
index f50f7ef..33b674b 100644
--- a/src/mathed/MathFactory.cpp
+++ b/src/mathed/MathFactory.cpp
@@ -186,23 +186,24 @@ void initSymbols()
 			// or
 			// \def\macroname{definition} requires
 			// or
-			// \def\macroname{definition} extra htmlname requires
+			// \def\macroname{definition} extra htmlname xmlname requires
 			istringstream is(line);
 			string macro;
 			string required;
 			string extra;
 			string htmlname;
+			string xmlname;
 			bool hidden = false;
 			is >> setw(65536) >> macro >> required;
-			if ((is >> htmlname)) {
+			if ((is >> htmlname >> xmlname)) {
 				extra = required;
 				if (!(is >> required))
 					required = "";
 			} else
-				htmlname = "";
+				htmlname = xmlname = "";
 			MacroTable::iterator it = MacroTable::globalMacros().insert(
 					0, from_utf8(macro));
-			if (!extra.empty() || !htmlname.empty() || !required.empty()) {
+			if (!extra.empty() || !htmlname.empty() || !xmlname.empty() || !required.empty()) {
 				MathWordList::iterator wit = theMathWordList.find(it->first);
 				if (wit != theMathWordList.end())
 					LYXERR(Debug::MATHED, "readSymbols: inset "
@@ -213,6 +214,7 @@ void initSymbols()
 					tmp.name = it->first;
 					tmp.extra = from_utf8(extra);
 					tmp.htmlname = from_utf8(htmlname);
+					tmp.xmlname = from_utf8(xmlname);
 					if (required == "hiddensymbol") {
 						required = "";
 						tmp.hidden = hidden = true;
@@ -230,6 +232,7 @@ void initSymbols()
 			    << "  draw: 0"
 			    << "  extra: " << extra
 			    << "  html: " << htmlname
+			    << "  xml: " << xmlname
 				<< "  requires: " << required
 				<< "  hidden: " << hidden << '\'');
 			continue;


More information about the lyx-cvs mailing list