lyx_mirror/src/mathed
Jean-Marc Lasgouttes 16af6e7c50 Implement display of roots more faithfully
This is a follow-up to 758de957.

- unify the metrics and drawing of \sqrt and \root using helper
  functions mathed_root_metrics and mathed_draw_root.

- compute the vertical spacing above the nucleus of the root following
  rule 11 of the TeXbook. In particular, it is different in inline and
  display style.

- draw the root glyph without hard-coded pixel values. Make the line
  width depend on the zoom.

more work is needed to implement properly rule 11:

- Ideally, we should use sqrt glyphs from the math fonts. Note that
  then we would get rule thickness from there.

- The positioning of the root MathData is arbitrary. It should
  follow the definition of \root...\of... in The Texbook in
  Apprendix B page 360.

Fixes bug #10814.
2017-12-04 10:58:08 +01:00
..
BUGS
CMakeLists.txt Remove InsetMathXYArrow 2016-06-16 20:39:32 +02:00
InsetMath.cpp Fix trailing whitespace in cpp files. 2017-07-03 13:53:14 -04:00
InsetMath.h Rename some macro-related insets 2017-07-05 14:46:34 +02:00
InsetMathAMSArray.cpp InsetMath: match the screen display with the EnsureMath behaviour in output 2016-11-22 11:30:26 +01:00
InsetMathAMSArray.h Fix whitespace at EOL. 2017-07-03 13:46:30 -04:00
InsetMathArray.cpp Get rid of Inset::setPosCache 2016-12-06 16:15:47 +01:00
InsetMathArray.h Don't parse multicolumn if the grid does not support it 2016-11-05 18:36:39 +01:00
InsetMathBig.cpp Implement mathClass() for \big and friends 2017-01-12 10:28:52 +01:00
InsetMathBig.h Implement mathClass() for \big and friends 2017-01-12 10:28:52 +01:00
InsetMathBoldSymbol.cpp Re-implement math markers logic. 2017-01-11 17:35:34 +01:00
InsetMathBoldSymbol.h
InsetMathBox.cpp Fix trailing whitespace in cpp files. 2017-07-03 13:53:14 -04:00
InsetMathBox.h Linearize macros in box edit mode too. 2017-03-23 10:17:07 +01:00
InsetMathBrace.cpp Re-implement math markers logic. 2017-01-11 17:35:34 +01:00
InsetMathBrace.h
InsetMathCancel.cpp Fix trailing whitespace in cpp files. 2017-07-03 13:53:14 -04:00
InsetMathCancel.h
InsetMathCancelto.cpp Rename InsetMathNest::metrics to cellsMetrics 2017-01-12 11:22:51 +01:00
InsetMathCancelto.h
InsetMathCases.cpp Get rid of Inset::setPosCache 2016-12-06 16:15:47 +01:00
InsetMathCases.h Don't parse multicolumn if the grid does not support it 2016-11-05 18:36:39 +01:00
InsetMathChar.cpp Fix trailing whitespace in cpp files. 2017-07-03 13:53:14 -04:00
InsetMathChar.h Introduce the notion of math class 2016-11-16 15:21:52 +01:00
InsetMathClass.cpp Re-implement math markers logic. 2017-01-11 17:35:34 +01:00
InsetMathClass.h Add support for \mathbin and friends 2016-11-16 15:21:53 +01:00
InsetMathColor.cpp Re-implement math markers logic. 2017-01-11 17:35:34 +01:00
InsetMathColor.h
InsetMathCommand.cpp Rename some macro-related insets 2017-07-05 14:46:34 +02:00
InsetMathCommand.h Rename some macro-related insets 2017-07-05 14:46:34 +02:00
InsetMathComment.cpp Re-implement math markers logic. 2017-01-11 17:35:34 +01:00
InsetMathComment.h
InsetMathDecoration.cpp Bulk cleanup/fix incorrect annotation at the end of namespaces. 2017-07-23 13:11:54 +02:00
InsetMathDecoration.h
InsetMathDelim.cpp Fix trailing whitespace in cpp files. 2017-07-03 13:53:14 -04:00
InsetMathDelim.h Linearize macros in box edit mode too. 2017-03-23 10:17:07 +01:00
InsetMathDiagram.cpp Get rid of Inset::setPosCache 2016-12-06 16:15:47 +01:00
InsetMathDiagram.h Correct computation of math font size 2016-11-21 00:02:35 +01:00
InsetMathDiff.cpp
InsetMathDiff.h
InsetMathDots.cpp Get rid of Inset::setPosCache 2016-12-06 16:15:47 +01:00
InsetMathDots.h
InsetMathEnsureMath.cpp Re-implement math markers logic. 2017-01-11 17:35:34 +01:00
InsetMathEnsureMath.h
InsetMathEnv.cpp Re-implement math markers logic. 2017-01-11 17:35:34 +01:00
InsetMathEnv.h
InsetMathExFunc.cpp
InsetMathExFunc.h
InsetMathExInt.cpp Fix trailing whitespace in cpp files. 2017-07-03 13:53:14 -04:00
InsetMathExInt.h Fix whitespace at EOL. 2017-07-03 13:46:30 -04:00
InsetMathFont.cpp Re-implement math markers logic. 2017-01-11 17:35:34 +01:00
InsetMathFont.h Fix display and export of some latex macros 2016-09-10 18:32:44 +02:00
InsetMathFontOld.cpp Re-implement math markers logic. 2017-01-11 17:35:34 +01:00
InsetMathFontOld.h Remove a conversion to_utf8() inside FontSetChanger 2016-06-13 08:46:15 +01:00
InsetMathFrac.cpp Bulk cleanup/fix incorrect annotation at the end of namespaces. 2017-07-23 13:11:54 +02:00
InsetMathFrac.h Give 4 edit markers to all Frac-like insets 2017-06-14 15:38:47 +02:00
InsetMathGrid.cpp Re-implement math markers logic. 2017-01-11 17:35:34 +01:00
InsetMathGrid.h Fix whitespace at EOL. 2017-07-03 13:46:30 -04:00
InsetMathHull.cpp Move some Cursor methods to CursorData 2017-10-25 16:20:27 +02:00
InsetMathHull.h Move some Cursor methods to CursorData 2017-10-25 16:20:27 +02:00
InsetMathKern.cpp Status bar information for InsetMathKern 2016-12-27 19:25:46 +01:00
InsetMathKern.h Status bar information for InsetMathKern 2016-12-27 19:25:46 +01:00
InsetMathLefteqn.cpp Re-implement math markers logic. 2017-01-11 17:35:34 +01:00
InsetMathLefteqn.h
InsetMathLim.cpp
InsetMathLim.h
InsetMathMacro.cpp Fix math mode for InsetMathMacro on output 2017-10-23 00:08:19 +02:00
InsetMathMacro.h Fix math mode for InsetMathMacro on output 2017-10-23 00:08:19 +02:00
InsetMathMacroArgument.cpp Rename some macro-related insets 2017-07-05 14:46:34 +02:00
InsetMathMacroArgument.h Rename some macro-related insets 2017-07-05 14:46:34 +02:00
InsetMathMacroTemplate.cpp three-stage drawing: add a nodraw stage 2017-08-29 16:37:07 +02:00
InsetMathMacroTemplate.h Rename some macro-related insets 2017-07-05 14:46:34 +02:00
InsetMathMatrix.cpp Fix trailing whitespace in cpp files. 2017-07-03 13:53:14 -04:00
InsetMathMatrix.h Fix whitespace at EOL. 2017-07-03 13:46:30 -04:00
InsetMathNest.cpp Move some Cursor methods to CursorData 2017-10-25 16:20:27 +02:00
InsetMathNest.h Fix whitespace at EOL. 2017-07-03 13:46:30 -04:00
InsetMathNumber.cpp Do not include MetricsInfo.h in MathStream.h 2016-06-13 08:46:15 +01:00
InsetMathNumber.h
InsetMathOverset.cpp Re-implement math markers logic. 2017-01-11 17:35:34 +01:00
InsetMathOverset.h
InsetMathPar.cpp Do not include MetricsInfo.h in MathStream.h 2016-06-13 08:46:15 +01:00
InsetMathPar.h
InsetMathPhantom.cpp Fix trailing whitespace in cpp files. 2017-07-03 13:53:14 -04:00
InsetMathPhantom.h
InsetMathRef.cpp Rename some macro-related insets 2017-07-05 14:46:34 +02:00
InsetMathRef.h Rename some macro-related insets 2017-07-05 14:46:34 +02:00
InsetMathRoot.cpp Implement display of roots more faithfully 2017-12-04 10:58:08 +01:00
InsetMathRoot.h Implement display of roots more faithfully 2017-12-04 10:58:08 +01:00
InsetMathScript.cpp Fix trailing whitespace in cpp files. 2017-07-03 13:53:14 -04:00
InsetMathScript.h Implement rule 17 2017-01-31 22:55:00 +01:00
InsetMathSideset.cpp Bulk cleanup/fix incorrect annotation at the end of namespaces. 2017-07-23 13:11:54 +02:00
InsetMathSideset.h Fix whitespace at EOL. 2017-07-03 13:46:30 -04:00
InsetMathSize.cpp Fix trailing whitespace in cpp files. 2017-07-03 13:53:14 -04:00
InsetMathSize.h Correct computation of math font size 2016-11-21 00:02:35 +01:00
InsetMathSpace.cpp Bulk cleanup/fix incorrect annotation at the end of namespaces. 2017-07-23 13:11:54 +02:00
InsetMathSpace.h
InsetMathSpecialChar.cpp Implement rule 17 2017-01-31 22:55:00 +01:00
InsetMathSpecialChar.h
InsetMathSplit.cpp Get rid of Inset::setPosCache 2016-12-06 16:15:47 +01:00
InsetMathSplit.h InsetMath: match the screen display with the EnsureMath behaviour in output 2016-11-22 11:30:26 +01:00
InsetMathSqrt.cpp Implement display of roots more faithfully 2017-12-04 10:58:08 +01:00
InsetMathSqrt.h
InsetMathStackrel.cpp Re-implement math markers logic. 2017-01-11 17:35:34 +01:00
InsetMathStackrel.h Introduce the notion of math class 2016-11-16 15:21:52 +01:00
InsetMathString.cpp Do not include MetricsInfo.h in MathStream.h 2016-06-13 08:46:15 +01:00
InsetMathString.h
InsetMathSubstack.cpp InsetMath: match the screen display with the EnsureMath behaviour in output 2016-11-22 11:30:26 +01:00
InsetMathSubstack.h
InsetMathSymbol.cpp mathedSymbolDim only needs a MathBase 2016-11-21 00:08:11 +01:00
InsetMathSymbol.h Introduce the notion of math class 2016-11-16 15:21:52 +01:00
InsetMathTabular.cpp Fix borders of InsetMathGrid 2016-10-06 01:11:49 +02:00
InsetMathTabular.h Don't parse multicolumn if the grid does not support it 2016-11-05 18:36:39 +01:00
InsetMathUnderset.cpp Re-implement math markers logic. 2017-01-11 17:35:34 +01:00
InsetMathUnderset.h
InsetMathUnknown.cpp Do not include MetricsInfo.h in MathStream.h 2016-06-13 08:46:15 +01:00
InsetMathUnknown.h Fix whitespace at EOL. 2017-07-03 13:46:30 -04:00
InsetMathXArrow.cpp Fix trailing whitespace in cpp files. 2017-07-03 13:53:14 -04:00
InsetMathXArrow.h MathClass of xrightarrow & co 2016-12-20 00:15:58 +01:00
InsetMathXYMatrix.cpp Fix trailing whitespace in cpp files. 2017-07-03 13:53:14 -04:00
InsetMathXYMatrix.h Correct computation of math font size 2016-11-21 00:02:35 +01:00
MacroTable.cpp Rename some macro-related insets 2017-07-05 14:46:34 +02:00
MacroTable.h Rename some macro-related insets 2017-07-05 14:46:34 +02:00
MathAtom.cpp MathAtom: prefer composition over inheritance 2017-04-20 23:49:02 +02:00
MathAtom.h MathAtom: prefer composition over inheritance 2017-04-20 23:49:02 +02:00
MathAutoCorrect.cpp Bulk cleanup/fix incorrect annotation at the end of namespaces. 2017-07-23 13:11:54 +02:00
MathAutoCorrect.h
MathClass.cpp Correct computation of math font size 2016-11-21 00:02:35 +01:00
MathClass.h Implement computation of spacing according to the TeXBook 2016-11-16 15:21:52 +01:00
MathCompletionList.h
MathData.cpp Move some Cursor methods to CursorData 2017-10-25 16:20:27 +02:00
MathData.h Move some Cursor methods to CursorData 2017-10-25 16:20:27 +02:00
MathExtern.cpp Bulk cleanup/fix incorrect annotation at the end of namespaces. 2017-07-23 13:11:54 +02:00
MathExtern.h
MathFactory.cpp Bulk cleanup/fix incorrect annotation at the end of namespaces. 2017-07-23 13:11:54 +02:00
MathFactory.h
MathParser_flags.h Fix bug #10581 2017-04-03 00:26:49 +02:00
MathParser.cpp Rename some macro-related insets 2017-07-05 14:46:34 +02:00
MathParser.h
MathRow.cpp Bulk cleanup/fix incorrect annotation at the end of namespaces. 2017-07-23 13:11:54 +02:00
MathRow.h Linearize macros in box edit mode too. 2017-03-23 10:17:07 +01:00
MathStream.cpp Fix trailing whitespace in cpp files. 2017-07-03 13:53:14 -04:00
MathStream.h Rename some macro-related insets 2017-07-05 14:46:34 +02:00
MathSupport.cpp Implement display of roots more faithfully 2017-12-04 10:58:08 +01:00
MathSupport.h Implement display of roots more faithfully 2017-12-04 10:58:08 +01:00
README
ReplaceData.h
texify
TextPainter.cpp
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/...)