lyx_mirror/src/mathed
Thibaut Cuvelier 98d1b04160 Before this patch, each character within InsetMathClass was output separately, without understanding their meaning, using the default text output (with [] around each character). This commit changes the behaviour to skip the InsetMathClass during the MathML output. This effectively renders the inset useless for MathML (instead of controlling spacing), as expected, because the MathML processor is supposed to handle the spacing itself.
Another implementation would have been to use the lspace and rspace attributes in MathML, but they require to give the exact spacing before and after the operator instead of relying on rules like TeX.

For instance, `$a\mathbin{+}b$` resulted in this MathML output before the patch:

```
<math xmlns='http://www.w3.org/1998/Math/MathML'>
<mrow>
 <mi>a</mi><!--  -->
 <mi>[mathbin [char + mathalpha]]</mi>
 <mi>b</mi>
</mrow>
</math>
```

For comparison, this was the output with LyX 2.3.7

```
<math xmlns="http://www.w3.org/1998/Math/MathML">
 <mrow>
  <mrow><mi>a</mi><!--  -->
   <mi>[mathbin [char + mathalpha]]
   </mi><mi>b</mi>
  </mrow>
 </mrow></math>
 ```

 After this patch, it looks like:

 ```
 <math xmlns='http://www.w3.org/1998/Math/MathML'>
 <mstyle class='math'>
  <mrow>
   <mi>a</mi>
   <mo>+</mo>
   <mi>b</mi>
  </mrow>
 </mstyle>
 </math>
 ```
2023-07-27 01:22:30 -04:00
..
CMakeLists.txt prevent Qt6 from defining UNICODE (Qt6.1.1 and upwards) 2021-06-19 10:48:49 +02:00
InsetMath.cpp MathML: use M/ETagInline. 2021-05-25 03:51:29 +02:00
InsetMath.h Rename WriteStream to TeXMathStream. 2021-01-02 19:52:23 +01:00
InsetMathAMSArray.cpp Rename WriteStream to TeXMathStream. 2021-01-02 19:52:23 +01:00
InsetMathAMSArray.h Rename WriteStream to TeXMathStream. 2021-01-02 19:52:23 +01:00
InsetMathArray.cpp Rename WriteStream to TeXMathStream. 2021-01-02 19:52:23 +01:00
InsetMathArray.h Rename WriteStream to TeXMathStream. 2021-01-02 19:52:23 +01:00
InsetMathBig.cpp LyXHTML: switch the doctype to (X)HTML5 and only output XML entities. 2022-12-25 20:48:14 +01:00
InsetMathBig.h Rename WriteStream to TeXMathStream. 2021-01-02 19:52:23 +01:00
InsetMathBoldSymbol.cpp Similar fixes as 946ba7781c 2021-12-05 18:54:05 +01:00
InsetMathBoldSymbol.h Rename WriteStream to TeXMathStream. 2021-01-02 19:52:23 +01:00
InsetMathBox.cpp Fix warning 2023-01-09 16:06:38 +01:00
InsetMathBox.h Rename WriteStream to TeXMathStream. 2021-01-02 19:52:23 +01:00
InsetMathBrace.cpp Rename WriteStream to TeXMathStream. 2021-01-02 19:52:23 +01:00
InsetMathBrace.h Rename WriteStream to TeXMathStream. 2021-01-02 19:52:23 +01:00
InsetMathCancel.cpp Rename WriteStream to TeXMathStream. 2021-01-02 19:52:23 +01:00
InsetMathCancel.h Rename WriteStream to TeXMathStream. 2021-01-02 19:52:23 +01:00
InsetMathCancelto.cpp Rename WriteStream to TeXMathStream. 2021-01-02 19:52:23 +01:00
InsetMathCancelto.h Rename WriteStream to TeXMathStream. 2021-01-02 19:52:23 +01:00
InsetMathCases.cpp MathML: update code for InsetMathCases to newest classes. 2022-12-09 01:49:19 +01:00
InsetMathCases.h Rename WriteStream to TeXMathStream. 2021-01-02 19:52:23 +01:00
InsetMathChar.cpp Cleanup and (maybe) speedup InsetMathChar::mathClass 2023-07-15 23:29:24 +02:00
InsetMathChar.h Rename WriteStream to TeXMathStream. 2021-01-02 19:52:23 +01:00
InsetMathClass.cpp Before this patch, each character within InsetMathClass was output separately, without understanding their meaning, using the default text output (with [] around each character). This commit changes the behaviour to skip the InsetMathClass during the MathML output. This effectively renders the inset useless for MathML (instead of controlling spacing), as expected, because the MathML processor is supposed to handle the spacing itself. 2023-07-27 01:22:30 -04:00
InsetMathClass.h Before this patch, each character within InsetMathClass was output separately, without understanding their meaning, using the default text output (with [] around each character). This commit changes the behaviour to skip the InsetMathClass during the MathML output. This effectively renders the inset useless for MathML (instead of controlling spacing), as expected, because the MathML processor is supposed to handle the spacing itself. 2023-07-27 01:22:30 -04:00
InsetMathColor.cpp Fix missing initialization 2021-03-05 13:06:10 +01:00
InsetMathColor.h Fix bug #11007 2021-02-28 22:32:11 +01:00
InsetMathCommand.cpp Rename WriteStream to TeXMathStream. 2021-01-02 19:52:23 +01:00
InsetMathCommand.h Rename WriteStream to TeXMathStream. 2021-01-02 19:52:23 +01:00
InsetMathComment.cpp Rename WriteStream to TeXMathStream. 2021-01-02 19:52:23 +01:00
InsetMathComment.h Rename WriteStream to TeXMathStream. 2021-01-02 19:52:23 +01:00
InsetMathDecoration.cpp MathML: use standard {M/E}Tag{,Inline} instead of bespoke constructs 2023-01-20 02:56:55 +01:00
InsetMathDecoration.h Rename WriteStream to TeXMathStream. 2021-01-02 19:52:23 +01:00
InsetMathDelim.cpp LyXHTML: switch the doctype to (X)HTML5 and only output XML entities. 2022-12-25 20:48:14 +01:00
InsetMathDelim.h Rename WriteStream to TeXMathStream. 2021-01-02 19:52:23 +01:00
InsetMathDiagram.cpp Rename WriteStream to TeXMathStream. 2021-01-02 19:52:23 +01:00
InsetMathDiagram.h Rename WriteStream to TeXMathStream. 2021-01-02 19:52:23 +01:00
InsetMathDiff.cpp Rename WriteStream to TeXMathStream. 2021-01-02 19:52:23 +01:00
InsetMathDiff.h Rename WriteStream to TeXMathStream. 2021-01-02 19:52:23 +01:00
InsetMathDots.cpp LyXHTML: switch the doctype to (X)HTML5 and only output XML entities. 2022-12-25 20:48:14 +01:00
InsetMathDots.h Rename MathStream to MathMLStream. 2021-01-02 19:52:23 +01:00
InsetMathEnsureMath.cpp Make paste in ensuremath work as in simple math hulls 2021-01-06 02:07:25 +01:00
InsetMathEnsureMath.h Rename eolString() to eol() and pass a MathTeXStream parameter 2022-07-26 22:21:44 +02:00
InsetMathEnv.cpp Rename WriteStream to TeXMathStream. 2021-01-02 19:52:23 +01:00
InsetMathEnv.h Rename WriteStream to TeXMathStream. 2021-01-02 19:52:23 +01:00
InsetMathExFunc.cpp InsetMathExFunc: use XML entities instead of HTML in MathML. 2022-12-26 20:38:06 +01:00
InsetMathExFunc.h Rename MathStream to MathMLStream. 2021-01-02 19:52:23 +01:00
InsetMathExInt.cpp MathML: use standard {M/E}Tag{,Inline} instead of bespoke constructs 2023-01-20 02:56:55 +01:00
InsetMathExInt.h Rename WriteStream to TeXMathStream. 2021-01-02 19:52:23 +01:00
InsetMathFont.cpp Do not load mathrsfs if unicode-math is required (#12734) 2023-04-15 12:35:22 +02:00
InsetMathFont.h Rename WriteStream to TeXMathStream. 2021-01-02 19:52:23 +01:00
InsetMathFontOld.cpp Rename WriteStream to TeXMathStream. 2021-01-02 19:52:23 +01:00
InsetMathFontOld.h Rename WriteStream to TeXMathStream. 2021-01-02 19:52:23 +01:00
InsetMathFrac.cpp MathML: use standard {M/E}Tag{,Inline} instead of bespoke constructs 2023-01-20 02:56:55 +01:00
InsetMathFrac.h Implement \case for AASTeX. 2021-01-06 14:08:00 +01:00
InsetMathGrid.cpp Fix undo with cell-plit 2023-04-21 14:42:51 +02:00
InsetMathGrid.h Rename eolString() to eol() and pass a MathTeXStream parameter 2022-07-26 22:21:44 +02:00
InsetMathHull.cpp Display equation/theorem numbers in insert cross reference dialog. 2023-07-26 13:35:42 -04:00
InsetMathHull.h Do not forceLTR math with Xe/Lua (part of #12731) 2023-04-10 08:24:46 +02:00
InsetMathKern.cpp Rename WriteStream to TeXMathStream. 2021-01-02 19:52:23 +01:00
InsetMathKern.h Rename WriteStream to TeXMathStream. 2021-01-02 19:52:23 +01:00
InsetMathLefteqn.cpp
InsetMathLefteqn.h Add override specifiers to improve code maintainability 2020-10-03 12:43:48 +02:00
InsetMathLim.cpp Rename WriteStream to TeXMathStream. 2021-01-02 19:52:23 +01:00
InsetMathLim.h Rename WriteStream to TeXMathStream. 2021-01-02 19:52:23 +01:00
InsetMathMacro.cpp Amend 16e67d4e 2023-01-27 21:10:02 +01:00
InsetMathMacro.h Rename WriteStream to TeXMathStream. 2021-01-02 19:52:23 +01:00
InsetMathMacroArgument.cpp Rename WriteStream to TeXMathStream. 2021-01-02 19:52:23 +01:00
InsetMathMacroArgument.h Remove redundant semicolons reported by GCC with -Wextra-semi option 2021-09-28 11:28:43 +03:00
InsetMathMacroTemplate.cpp Do not output LaTeX for a macro if the LaTeX part is empty. 2023-06-11 12:55:51 -04:00
InsetMathMacroTemplate.h Rename WriteStream to TeXMathStream. 2021-01-02 19:52:23 +01:00
InsetMathMatrix.cpp MathML: use standard {M/E}Tag{,Inline} instead of bespoke constructs 2023-01-20 02:56:55 +01:00
InsetMathMatrix.h Rename WriteStream to TeXMathStream. 2021-01-02 19:52:23 +01:00
InsetMathNest.cpp Fix issues with inset-dissolve in mathed 2023-07-23 17:39:39 +02:00
InsetMathNest.h Rename WriteStream to TeXMathStream. 2021-01-02 19:52:23 +01:00
InsetMathNumber.cpp MathML: use M/ETagInline. 2021-05-25 03:51:29 +02:00
InsetMathNumber.h Rename WriteStream to TeXMathStream. 2021-01-02 19:52:23 +01:00
InsetMathOverset.cpp MathML: use standard {M/E}Tag{,Inline} instead of bespoke constructs 2023-01-20 02:56:55 +01:00
InsetMathOverset.h Rename WriteStream to TeXMathStream. 2021-01-02 19:52:23 +01:00
InsetMathPar.cpp Rename WriteStream to TeXMathStream. 2021-01-02 19:52:23 +01:00
InsetMathPar.h Rename WriteStream to TeXMathStream. 2021-01-02 19:52:23 +01:00
InsetMathPhantom.cpp Rename WriteStream to TeXMathStream. 2021-01-02 19:52:23 +01:00
InsetMathPhantom.h Rename WriteStream to TeXMathStream. 2021-01-02 19:52:23 +01:00
InsetMathRef.cpp Fix bug #12181 2021-03-06 23:36:58 +01:00
InsetMathRef.h Fix bug #12181 2021-03-06 23:36:58 +01:00
InsetMathRoot.cpp LyXHTML: switch the doctype to (X)HTML5 and only output XML entities. 2022-12-25 20:48:14 +01:00
InsetMathRoot.h Rename WriteStream to TeXMathStream. 2021-01-02 19:52:23 +01:00
InsetMathScript.cpp MathML: remove redundant mrow in InsetMathScript. 2021-12-08 02:11:48 +01:00
InsetMathScript.h Fixup 7e7f9eba: we only need one hasLimits() method 2021-06-01 16:12:46 +02:00
InsetMathSideset.cpp MathML: use standard {M/E}Tag{,Inline} instead of bespoke constructs 2023-01-20 02:56:55 +01:00
InsetMathSideset.h Rename WriteStream to TeXMathStream. 2021-01-02 19:52:23 +01:00
InsetMathSize.cpp Rename WriteStream to TeXMathStream. 2021-01-02 19:52:23 +01:00
InsetMathSize.h Rename WriteStream to TeXMathStream. 2021-01-02 19:52:23 +01:00
InsetMathSpace.cpp THINSPACE is nonbreakable (i.e., 0x202f, not 0x2009) 2023-07-17 17:14:50 +02:00
InsetMathSpace.h Allow context menus in mathed 2021-03-05 21:21:41 +01:00
InsetMathSpecialChar.cpp Rename WriteStream to TeXMathStream. 2021-01-02 19:52:23 +01:00
InsetMathSpecialChar.h Rename WriteStream to TeXMathStream. 2021-01-02 19:52:23 +01:00
InsetMathSplit.cpp Rename WriteStream to TeXMathStream. 2021-01-02 19:52:23 +01:00
InsetMathSplit.h Rename WriteStream to TeXMathStream. 2021-01-02 19:52:23 +01:00
InsetMathSqrt.cpp LyXHTML: switch the doctype to (X)HTML5 and only output XML entities. 2022-12-25 20:48:14 +01:00
InsetMathSqrt.h Rename WriteStream to TeXMathStream. 2021-01-02 19:52:23 +01:00
InsetMathStackrel.cpp MathML: use standard {M/E}Tag{,Inline} instead of bespoke constructs 2023-01-20 02:56:55 +01:00
InsetMathStackrel.h Rename WriteStream to TeXMathStream. 2021-01-02 19:52:23 +01:00
InsetMathString.cpp Rename WriteStream to TeXMathStream. 2021-01-02 19:52:23 +01:00
InsetMathString.h Rename WriteStream to TeXMathStream. 2021-01-02 19:52:23 +01:00
InsetMathSubstack.cpp MathML: output substacks as grids. 2022-12-09 01:48:14 +01:00
InsetMathSubstack.h Substack should not be allowed to change columns 2022-11-21 12:08:17 +01:00
InsetMathSymbol.cpp MathML: use standard {M/E}Tag{,Inline} instead of bespoke constructs 2023-01-20 02:56:55 +01:00
InsetMathSymbol.h Rename WriteStream to TeXMathStream. 2021-01-02 19:52:23 +01:00
InsetMathTabular.cpp Rename WriteStream to TeXMathStream. 2021-01-02 19:52:23 +01:00
InsetMathTabular.h Rename WriteStream to TeXMathStream. 2021-01-02 19:52:23 +01:00
InsetMathUnderset.cpp MathML: use standard {M/E}Tag{,Inline} instead of bespoke constructs 2023-01-20 02:56:55 +01:00
InsetMathUnderset.h Rename WriteStream to TeXMathStream. 2021-01-02 19:52:23 +01:00
InsetMathUnknown.cpp Rename MathStream to MathMLStream. 2021-01-02 19:52:23 +01:00
InsetMathUnknown.h Rename MathStream to MathMLStream. 2021-01-02 19:52:23 +01:00
InsetMathXArrow.cpp MathML: use standard {M/E}Tag{,Inline} instead of bespoke constructs 2023-01-20 02:56:55 +01:00
InsetMathXArrow.h Rename WriteStream to TeXMathStream. 2021-01-02 19:52:23 +01:00
InsetMathXYMatrix.cpp \protect xymatrix in fragile context 2021-12-27 11:42:30 +01:00
InsetMathXYMatrix.h Rename WriteStream to TeXMathStream. 2021-01-02 19:52:23 +01:00
MacroTable.cpp LyXHTML: switch the doctype to (X)HTML5 and only output XML entities. 2022-12-25 20:48:14 +01:00
MacroTable.h LyXHTML: switch the doctype to (X)HTML5 and only output XML entities. 2022-12-25 20:48:14 +01:00
MathAtom.cpp
MathAtom.h Remove unused forward declarations 2020-10-13 09:57:36 +03:00
MathAutoCorrect.cpp Move include of own header to the top. Fix dependencies 2020-10-25 19:58:57 +02:00
MathAutoCorrect.h
MathClass.cpp
MathClass.h Before this patch, each character within InsetMathClass was output separately, without understanding their meaning, using the default text output (with [] around each character). This commit changes the behaviour to skip the InsetMathClass during the MathML output. This effectively renders the inset useless for MathML (instead of controlling spacing), as expected, because the MathML processor is supposed to handle the spacing itself. 2023-07-27 01:22:30 -04:00
MathCompletionList.h Amend efc0877f 2020-10-05 09:37:15 +02:00
MathData.cpp Fix math class code in InsetMathColor 2021-02-08 13:13:21 +01:00
MathData.h Fix math class code in InsetMathColor 2021-02-08 13:13:21 +01:00
MathExtern.cpp MathML: should display "Text" MathFont using proper <mtext> tag 2022-09-02 01:57:06 +02:00
MathExtern.h Rename WriteStream to TeXMathStream. 2021-01-02 19:52:23 +01:00
MathFactory.cpp Cleanup following the removal of HTML entities 2022-12-25 20:48:14 +01:00
MathFactory.h
MathParser_flags.h Run codespell on src/mathed 2020-06-25 23:31:42 +02:00
MathParser.cpp Fix bug #12561 2022-07-13 19:11:03 +02:00
MathParser.h LyXHTML: switch the doctype to (X)HTML5 and only output XML entities. 2022-12-25 20:48:14 +01:00
MathRow.cpp Reduce the number of accesses to coord cache when drawing a math row 2021-10-08 18:17:19 +02:00
MathRow.h Cleanup headers 2020-12-03 00:38:27 +02:00
MathStream.cpp LyXHTML: switch the doctype to (X)HTML5 and only output XML entities. 2022-12-25 20:48:14 +01:00
MathStream.h LyXHTML: switch the doctype to (X)HTML5 and only output XML entities. 2022-12-25 20:48:14 +01:00
MathSupport.cpp Fix bug #3751 2021-02-27 21:40:28 +01:00
MathSupport.h Improve alignment of math decorations 2021-02-02 19:39:52 +01:00
README
ReplaceData.h
texify Run codespell on src/mathed 2020-06-25 23:31:42 +02:00
TextPainter.cpp Match header/source function argument naming 2020-11-01 22:23:44 +02:00
TextPainter.h

Inset 'Xyz' is implemented by 'MathXyzInset' in 'math_xyzinset.[hC]'


Inset hierarchy:

                                   MathInset
                                (abstract base)

                         /            |               \

              Dim                  Char               Symbol, Space, ...
         (thing that need       (for things formerly
          the width_/ascent_     known as characters)
          /descent_ cache)

          /             \

       Nest              Dots,  Func, ...
  (for thing with
   nested content)

        |         \

      Grid        Decoration   Delim   Frac  Macro  Root  Script  Sqrt

      /   \

 Array    Hull
         (base for eqnarray/align/...)