diff --git a/doc/dox/jkqtmathtext.dox b/doc/dox/jkqtmathtext.dox
index 374baa3070..0ee69c56a2 100644
--- a/doc/dox/jkqtmathtext.dox
+++ b/doc/dox/jkqtmathtext.dox
@@ -1,6 +1,6 @@
/*!
-\defgroup jkqtmathtext JKQTMathText LaTeX-Renderer for Qt
+ \defgroup jkqtmathtext JKQTMathText LaTeX-Renderer for Qt
This group contains JKQTMathText, a self-contained LaTeX-renderer for Qt. It is used to renderer
labels in JKQTPlotter, but can be used independently. The class does not depend on any library,
@@ -18,22 +18,45 @@
\image html jkqtmathtext/jkqtmathtext_sqrt.png
\image html jkqtmathtext/jkqtmathtext_OldEnglish.png
-
- \defgroup jkqtmathtext_render Main (Render) Class (JKQTMathText)
+ \defgroup jkqtmathtext_general General Information
\ingroup jkqtmathtext
- \defgroup jkqtmathtext_items Render-Tree Items for JKQTMathText
+ This group assembles general information around JKQTMathText. It explains the rendering model, lists the supported LaTeX-subset etc.
+
+
+ \defgroup jkqtmathtext_render Math Renderer Class (JKQTMathText)
\ingroup jkqtmathtext
+
+ This group contains the main rendering class JKQTMathText, which is the central access point for the functionality of this library.
+ This class is a non-visual class that allows to parse a string and draw the resulting object tree (see \ref jkqtmathtext_items )
+ using a QPainter onto any target supported by the Qt painter library.
+
+ \note There are additional widget classes available in \ref jkqtmathtext_widgets
\defgroup jkqtmathtext_widgets Widgets using JKQTMathText
\ingroup jkqtmathtext
- \defgroup jkqtmathtext_tools Tool Functions and Types for JKQTMathText
+ This group contains widgets that use JKQTMathText in order to render math onto the screen.
+
+ \defgroup jkqtmathtext_interaltools Library-internal Types and Functions
\ingroup jkqtmathtext
+ This group contains all library-internal classes, types and functions.
+ Normal users of the library do note have to have knowledge of these. They are important,
+ if you want to extend the functionality of the class.
+
+ \defgroup jkqtmathtext_items Render-Tree Items for JKQTMathText
+ \ingroup jkqtmathtext_interaltools
+
+ This group contains all classes that are used to build a memory-representation of the math to be rendered.
+ They form a tree in memory.
+
+ \defgroup jkqtmathtext_tools Tool Functions and Types for JKQTMathText
+ \ingroup jkqtmathtext_interaltools
+
\defgroup jkqtmathtext_libfacilities Library Facilities for JKQTMathText
- \ingroup jkqtmathtext
+ \ingroup jkqtmathtext_interaltools
*/
\ No newline at end of file
diff --git a/doc/dox/jkqtmathtext_renderingmodel.dox b/doc/dox/jkqtmathtext_renderingmodel.dox
new file mode 100644
index 0000000000..518651bf2a
--- /dev/null
+++ b/doc/dox/jkqtmathtext_renderingmodel.dox
@@ -0,0 +1,42 @@
+/*!
+
+ \defgroup jkqtmathtext_renderingmodel JKQTMathText Rendering Model
+ \ingroup jkqtmathtext_general
+
+ JKQTMathText parses an (LaTeX) input string of mathematicalkmarkup and in a first step generates a memory representation of the it (cf. \ref jkqtmathtext_items ).
+ Then this memory representation is used to draw the represented math using the renndering API of QPainter.
+
+ As an example, we look at the following LaTeX markup, representing the solution to a quadratic equation:
+
+ \code{.tex}
+ $x_{1/2} = \frac{-b\pm\sqrt{b^2-4ac}}{2a}$
+ \endcode
+
+ LaTeX itself would render this as follows:
+
+ \image html jkqtmathtext/jkqtmathtext_doc_quadraticeq_latex.png
+
+ JKQTMathText produces this output:
+
+ \image html jkqtmathtext/jkqtmathtext_doc_quadraticeq.png
+
+ The memory representation of the expression above looks like this:
+
+ \image html jkqtmathtext/jkqtmathtext_doc_quadraticeq_tree.png
+
+ \note The memory representation is independent of the actual math markup language (e.g. LaTeX) which was initially parsed.
+ But of course it is modelled, so the features of the supported markup languages are supported by the memory model.
+
+
+ You can see that each node corresponds to a box, if these are overlayed over the rendering:
+
+ \image html jkqtmathtext/jkqtmathtext_doc_quadraticeq_boxes.png
+
+
+ The box, representing each node, is characterized by its width and height, as well as the ascent (or "baseline-height"):
+
+ \image html jkqtmathtext_node_geo.png
+
+
+
+*/
diff --git a/doc/dox/jkqtmathtext_supportedlatex.dox b/doc/dox/jkqtmathtext_supportedlatex.dox
new file mode 100644
index 0000000000..a1cb01dcce
--- /dev/null
+++ b/doc/dox/jkqtmathtext_supportedlatex.dox
@@ -0,0 +1,162 @@
+/*!
+
+ \defgroup jkqtmathtext_supportedlatex Supported LaTeX-Subset
+ \ingroup jkqtmathtext_general
+
+ \tableofcontents
+
+ \section JKQTMathTextSuppoertedLaTeXMathTextMode Switch between Math- and Text-Mode
+
+ These LaTeX-instructions allow to switch between math and text-mode:
+ - \c $...$ , \c \\ensuremath{...} , \c \\equation{...} : inside is math-mode
+ - \c \\text{...} , \c \\mbox{...} , \c \\ensuretext{...} : switches from math back to text-mode (or stays in text-mode)
+ .
+
+ The following image shows the difference between text- and math-mode:
+
+ \image html jkqtmathtext/jkqtmathtext_mathmode_and_textmode.png
+
+ In text mode the text is rendered normally. In math mode the rendering is changed:
+ - normal text is typeset in an italic font
+ - numbers, parantheses ... are typeset in an upright font
+ - operators are typeset with additional space around them
+ .
+
+ \section JKQTMathTextSuppoertedLaTeXFontProps Font Properties
+ The supported LaTeX subset is listes below. Please note that some commands are used differently than in actual LaTeX.
+ For example \c \\bf is just a renamed form of \c \\textbf and used as \c \\bf{...} and NOT as \c {\\bf...} .
+
+ - \c \\bf{...} \c \\textbf{...} \c \\mathbf{...}: draw the contained text in bold face \image html jkqtmathtext/jkqtmathtext_bold.png
+ - \c \\it{...} \c \\textit{...} \c \\mathit{...} : draw the contained text in italic face \image html jkqtmathtext/jkqtmathtext_italic.png
+ - \c \\rm{...} \c \\textrm{...} \c \\mathrm{...} \c \\mbox{...} : draw the contained text in normal upright roman font face \image html jkqtmathtext/jkqtmathtext_fonts.png
+ - \c \\sf{...} \c \\textsf{...} \c \\mathsf{...} : draw the contained text in normal upright sans-serif font face \image html jkqtmathtext/jkqtmathtext_fonts.png
+ - \c \\script{...} \c \\textscript{...} \c \\mathscript{...} : draw the contained text in a script font face \image html jkqtmathtext/jkqtmathtext_fonts.png
+ - \c \\sc{...} : draw the text in small caps \image html jkqtmathtext/jkqtmathtext_sc.png
+ - \c \\ul{...} \c \\underline{...} \c \\underlined{...} : draw the text with underlining \image html jkqtmathtext/jkqtmathtext_ul.png
+ - \c \\ol{...} \c \\overline{...} \c \\overlined{...} : draw the text with overlining \image html jkqtmathtext/jkqtmathtext_ol.png
+ - \c \\tt{...} \c \\texttt{...} \c \\mathtt{...} : draw text in typewriter font \image html jkqtmathtext/jkqtmathtext_fonts.png
+ - \c \\textcolor{color}{...} \c \\color{color} \c \\mathcolor{color}{...} : draw colored text \image html jkqtmathtext/jkqtmathtext_colored.png
+ - \c \\userfont{font}{...} : draw text in a user-specific font, available on the system \image html jkqtmathtext/jkqtmathtext_userfont.png (generated by default, \\userfont{Arial}{Arial}, \\userfont{Comic Sans MS}{Comic Sans MS}
)
+ - \c \\sout{...} : strike out the text \image html jkqtmathtext/MTDstrike.png
+ - \c \\cancel{...} : slanted strike out the text \image html jkqtmathtext/MTDcancel.png
+ - \c \\bcancel{...} : back-strike out the text \image html jkqtmathtext/MTDbcancel.png
+ - \c \\xcancel{...} : x-strike out the text \image html jkqtmathtext/MTDxcancel.png
+ .
+
+
+ \section JKQTMathTextSuppoertedLaTeXBoxes Boxes
+
+ These instructions draw boxes in various ways:
+ - \c \\boxed{...} : draw text with a box around it \image html jkqtmathtext/jkqtmathtext_boxed.png
+ - \c \\doublebox{...} : draw text with a rounded box around it \image html jkqtmathtext/jkqtmathtext_doublebox.png
+ - \c \\ovalbox{...} : draw text with a rounded box around it \image html jkqtmathtext/jkqtmathtext_ovalboxed.png
+ - \c \\Ovalbox{...} : draw a thick oval box \image html jkqtmathtext/jkqtmathtext_oovalbox.png
+ - \c \\dashbox{...} , \c \\dbox{...} : draw a dashed box \image html jkqtmathtext/jkqtmathtext_dashbox.png
+ - \c \\dottedbox{...} : draw a dottted box \image html jkqtmathtext/jkqtmathtext_dottedbox.png
+ - \c \\ovaldoublebox{...} : draw a double oval box \image html jkqtmathtext/jkqtmathtext_doubleovalbox.png
+ - \c \\colorbox{bordercolor}{...} : draw a colored box \image html jkqtmathtext/jkqtmathtext_colorbox.png
+ - \c \\shaded{backgroundcolor}{...} : draw a filled box \image html jkqtmathtext/jkqtmathtext_shaded.png
+ - \c \\fcolorbox{bordercolor}{backgroundcolor}{...} : draw a colored, filled box \image html jkqtmathtext/jkqtmathtext_fcolorbox.png
+ - \c \\colorbox{color}{...} : draw a colored box around text \image html jkqtmathtext/jkqtmathtext_colorbox.png
+ .
+
+
+
+ \section JKQTMathTextSuppoertedLaTeXSymbols Symbols and special characters
+
+ These instructions draw boxes in various ways:
+ - \c \\alpha ... : display the according greek letter \image html jkqtmathtext/jkqtmathtext_greek.png
+ - \c \\charDECIMAL and \c \\char\"HEX and \c \\char\'OCTAL : draws a unicode character from its 32-bit codepoint \image html jkqtmathtext/jkqtmathtext_char.png (generated by A: \\char65, circonflex: \\char\"109 accent: \\char\'351
)
+ - \c \\unicode{HEX} and \c \\usym{HEX} : draws a unicode character from its 32-bit codepoint \image html jkqtmathtext/jkqtmathtext_unicode.png (generated by star: \\unicode{2605}, circonflex: \\unicode{109} emoticons: \\usym{1F440} \\usym{1F929}
)
+ - \c \\utfeight{HEX} : draws a unicode character from its UTF-8 encoding \image html jkqtmathtext/jkqtmathtext_utf8.png (generated by star: \\utfeight{e29885} emoticons \\utfeight{F09F9881} \\utfeight{f09f98bb}
)
+ - \c \\{ / \\} : display opening/closing brace
+ - \c \\_ : display underscore
+ - \c \\sum \c \\prod \c \\int ... : plot special symbol. Note that depending on the fontEncoding the available
+ symbols may differ (there are not all symbols defined in the MS Windows Symbol
+ font!). Best coverage should be given by Unicode font encoding with a good
+ unicode font installed!
\image html jkqtmathtext/jkqtmathtext_symbols.png
+ - \c - : draw a hyphen \image html jkqtmathtext/jkqtmathtext_hyphen.png
+ - \c -- : draw an en-dash \image html jkqtmathtext/jkqtmathtext_endash.png
+ - \c --- : draw an em-dash \image html jkqtmathtext/jkqtmathtext_emdash.png
+ - \\vec{x} \\dot{x} \\ddot{x} \\overline{x} \\underline{x} \\hat{x} \\tilde{x} \\uul{x} \\ool{x} \\bar{x} \\arrow{x} \\widehat{x} \\widetilde{x} ...
: Decorations over/under symbols \image html jkqtmathtext/jkqtmathtext_mathdeco.png
+ - \\verb{don't parse this _aaa\\LaTeX}
: interpret enclosed text as verbose \image html jkqtmathtext/jkqtmathtext_verb.png
+ .
+
+ \section JKQTMathTextSuppoertedLaTeXTextAlignment Environments for Multi-line text
+ Several environments are supported that allow to layout text with linebreaks and different alignemnts:
+ - $\\begin{document} ... \\\\ ... \\end{document}$
\image html jkqtmathtext/jkqtmathtext_beginflushleft.png
+ - $\\begin{flushleft} ... \\\\ ... \\end{flushleft}$
\image html jkqtmathtext/jkqtmathtext_beginflushleft.png
+ - $\\begin{flushright} ... \\\\ ... \\end{flushright}$
\image html jkqtmathtext/jkqtmathtext_beginflushright.png
+ - $\\begin{center} ... \\\\ ... \\end{center}$
\image html jkqtmathtext/jkqtmathtext_begincenter.png
+ - $\\begin{framed} ... \\\\ ... \\end{framed}$
\image html jkqtmathtext/jkqtmathtext_beginframed.png
+ - $\\begin{shaded} ... \\\\ ... \\end{shaded}$
\image html jkqtmathtext/jkqtmathtext_beginshaded.png
+ - $\\begin{snugshade} ... \\\\ ... \\end{snugshade}$
\image html jkqtmathtext/jkqtmathtext_beginsnugshade.png
+ .
+
+
+ \section JKQTMathTextSuppoertedLaTeXMathSupport Supported Mathematical Constructs
+
+ \subsection JKQTMathTextSuppoertedLaTeXSubSuper Sub- and Superscript
+ The standard LaTeX sub-/superscript instructions (i.e. \c text_{sub} or \c text^{super} ) are supported:
+ - \c ^{...} \c _{...} : display the contents of braces in superscript/subscript \image html jkqtmathtext/jkqtmathtext_supersub.png
+
Special subscript/superscript typesetting applies, when the sub/super follows \c \\sum \c \\Prod ...: \image html jkqtmathtext/jkqtmathtext_specialsubsuper.png
+ .
+
+ \subsection JKQTMathTextSuppoertedLaTeXBraces Braces/Parantheses ...
+ Braces in math mode are adjusted in size, so they are a small bit (factor \c brace_factor ) larger than the contents.
+ To enable this you have to write braces with \c \\left and \c \\right. These types of braces are defined (slight
+ differences to LaTeX standard):
+ - \c \\left( \c \\right) : default meaning (), \image html jkqtmathtext/jkqtmathtext_brace_round.png
+ - \c \\left[ \c \\right] : default meaning [], \image html jkqtmathtext/jkqtmathtext_brace_rect.png
+ - \c \\left\\{ \c \\right\\} : default meaning {}, \image html jkqtmathtext/jkqtmathtext_brace_curly.png
+ - \c \\left< \c \\right> : "averaging" braces , \image html jkqtmathtext/jkqtmathtext_brace_tri.png
+ - \c \\left\\lfloor \c \\right\\rfloor : floor braces , \image html jkqtmathtext/jkqtmathtext_brace_floor.png
+ - \c \\left~ \c \\right~ \c \\left\\lceil \c \\right\\rceil : ceil braces , \image html jkqtmathtext/jkqtmathtext_brace_ceil.png
+ - \c \\left| \c \\right| : absolute value braces | |, \image html jkqtmathtext/jkqtmathtext_brace_oneline.png
+ - \c \\left\\| \c \\right\\| \endcode : norm braces || ||, \image html jkqtmathtext/jkqtmathtext_brace_dblline.png
+ - You can use \c \\left. or \c \\right. to have only right or only left brace
+ .
+
+ \subsection JKQTMathTextSuppoertedLaTeXRoots Roots
+ There are also instructions that allow to write roots:
+ - $\\sqrt{1+\\sqrt{1+x}}$
\image html jkqtmathtext/jkqtmathtext_sqrt.png
+ - $\\sqrt[3]{1+\\sqrt[3]{1+x}}$
\image html jkqtmathtext/jkqtmathtext_cbrt.png
+ .
+
+ \subsection JKQTMathTextSuppoertedLaTeXUnderOver Undersetting, Oversetting, Underbraces, Overbraces ...
+ There are also instructions that allow to under/overset braces, arrows, ...:
+ - $\\underbrace{x+x+...+x}{k\\ \\mathrm{times}}$
\image html jkqtmathtext/jkqtmathtext_brace_underbrace.png
+ - $\\overbrace{x+x+...+x}{k\\ \\mathrm{times}}$
\image html jkqtmathtext/jkqtmathtext_brace_overbrace.png
+ - $\\underbracket{x+x+...+x}{k\\ \\mathrm{times}}$
\image html jkqtmathtext/MTFMunderbracket.png
+ - $\\overbracket{x+x+...+x}{k\\ \\mathrm{times}}$
\image html jkqtmathtext/MTFMoverbracket.png
+ - $\\overset{main}{over}$
\image html jkqtmathtext/jkqtmathtext_brace_overset.png
+ - $\\underset{main}{under}$
\image html jkqtmathtext/jkqtmathtext_brace_underset.png
+ .
+
+ \subsection JKQTMathTextSuppoertedLaTeXFrac Fraction Type Instructions
+ Several Matrix/Array-typed LaTeX instructions are supported:
+ - $\\frac{...}{...}$
\image html jkqtmathtext/MTFMfrac.png
+ - $\\tfrac{...}{...}$
(70% smaller font) \image html jkqtmathtext/MTFMtfrac.png
+ - $\\dfrac{...}{...}$
\image html jkqtmathtext/MTFMdfrac.png
+ - $\\sfrac{...}{...}$
\image html jkqtmathtext/MTFMsfrac.png
+ - $\\stfrac{...}{...}$
(70% smaller font) \image html jkqtmathtext/MTFMstfrac.png
+ .
+
+ \subsection JKQTMathTextSuppoertedLaTeXMatrix Matrix/Array Type Instructions
+ Several Matrix/Array-typed LaTeX instructions are supported:
+ - $\\stackrel{...}{...}$ $\\binom{...}{...}$
\image html jkqtmathtext/jkqtmathtext_brace_stackrel.png
+ - $\\begin{cases} ... & ... \\\\ ... & ... \\end{cases}$
\image html jkqtmathtext/jkqtmathtext_brace_begincases.png
+ - $\\begin{array} a & b & ...\\\\ c & d & ...\\end{array}$
$\\begin{matrix} a & b & ...\\\\ c & d & ...\\end{matrix}$
\image html jkqtmathtext/jkqtmathtext_array.png
+ - $\\begin{pmatrix} a & b & ...\\\\ c & d & ...\\end{pmatrix}$
\image html jkqtmathtext/jkqtmathtext_pmatrix.png
+ - $\\begin{bmatrix} a & b & ...\\\\ c & d & ...\\end{bmatrix}$
\image html jkqtmathtext/jkqtmathtext_bmatrix.png
+ - $\\begin{Bmatrix} a & b & ...\\\\ c & d & ...\\end{Bmatrix}$
\image html jkqtmathtext/jkqtmathtext_bbmatrix.png
+ - $\\begin{vmatrix} a & b & ...\\\\ c & d & ...\\end{vmatrix}$
\image html jkqtmathtext/jkqtmathtext_vmatrix.png
+ - $\\begin{Vmatrix} a & b & ...\\\\ c & d & ...\\end{Vmatrix}$
\image html jkqtmathtext/jkqtmathtext_vvmatrix.png
+ - $\\substack[lrc]{...\\\\...}$
\image html jkqtmathtext/jkqtmathtext_substack.png
+ - $\\lsubstack{...\\\\...}$
\image html jkqtmathtext/jkqtmathtext_lsubstack.png
+ - $\\rsubstack{...\\\\...}$
\image html jkqtmathtext/jkqtmathtext_rsubstack.png
+ .
+
+
+
+*/
\ No newline at end of file
diff --git a/doc/images/jkqtmathtext/jkqtmathtext_doc_quadraticeq.png b/doc/images/jkqtmathtext/jkqtmathtext_doc_quadraticeq.png
new file mode 100644
index 0000000000..b71fd85c92
Binary files /dev/null and b/doc/images/jkqtmathtext/jkqtmathtext_doc_quadraticeq.png differ
diff --git a/doc/images/jkqtmathtext/jkqtmathtext_doc_quadraticeq_boxes.png b/doc/images/jkqtmathtext/jkqtmathtext_doc_quadraticeq_boxes.png
new file mode 100644
index 0000000000..7707c76e2a
Binary files /dev/null and b/doc/images/jkqtmathtext/jkqtmathtext_doc_quadraticeq_boxes.png differ
diff --git a/doc/images/jkqtmathtext/jkqtmathtext_doc_quadraticeq_latex.png b/doc/images/jkqtmathtext/jkqtmathtext_doc_quadraticeq_latex.png
new file mode 100644
index 0000000000..010fb1cec8
Binary files /dev/null and b/doc/images/jkqtmathtext/jkqtmathtext_doc_quadraticeq_latex.png differ
diff --git a/doc/images/jkqtmathtext/jkqtmathtext_doc_quadraticeq_tree.png b/doc/images/jkqtmathtext/jkqtmathtext_doc_quadraticeq_tree.png
new file mode 100644
index 0000000000..332cf9c48e
Binary files /dev/null and b/doc/images/jkqtmathtext/jkqtmathtext_doc_quadraticeq_tree.png differ
diff --git a/doc/images/jkqtmathtext/jkqtmathtext_mathmode_and_textmode.png b/doc/images/jkqtmathtext/jkqtmathtext_mathmode_and_textmode.png
new file mode 100644
index 0000000000..6ce190ab64
Binary files /dev/null and b/doc/images/jkqtmathtext/jkqtmathtext_mathmode_and_textmode.png differ
diff --git a/doc/images/jkqtmathtext/jkqtmathtext_verticalorientation.png b/doc/images/jkqtmathtext/jkqtmathtext_verticalorientation.png
new file mode 100644
index 0000000000..b7749d67e4
Binary files /dev/null and b/doc/images/jkqtmathtext/jkqtmathtext_verticalorientation.png differ