diff options
Diffstat (limited to 'Master/texmf-dist/doc/context/sources/general/manuals/math')
12 files changed, 1257 insertions, 0 deletions
diff --git a/Master/texmf-dist/doc/context/sources/general/manuals/math/math-combining.tex b/Master/texmf-dist/doc/context/sources/general/manuals/math/math-combining.tex new file mode 100644 index 00000000000..5cd2ccb9b34 --- /dev/null +++ b/Master/texmf-dist/doc/context/sources/general/manuals/math/math-combining.tex @@ -0,0 +1,58 @@ +\environment math-layout + +\startcomponent math-combining + +\startchapter[title=Combining formulas] + +Multiple formulas can be combined by wrapping them: + +\startbuffer + +\fakewords{20}{30} + +\startformula + a + b = c +\stopformula + +\fakewords{20}{30} + +\startformulas + \startformula + a + b = c + \stopformula + \startformula + d - e = f + \stopformula +\stopformulas + +\fakewords{20}{30} + +\startformulas + \startformula + \frac{\frac{x}{y}}{b} = c + \stopformula + \startformula + d - e = f + \stopformula +\stopformulas + +\fakewords{20}{30} +\stopbuffer + +\typebuffer + +When we bump the space around formulas to \type {big} we get this: + +\start + \setupformulas[spacebefore=big,spaceafter=big] + \appendtoks\showmakeup[reset]\to\everymath + \showboxes + \getbuffer +\stop + +The formulas get aligned on the baselline which in turn relates to the +math axis of the formula. + +\stopchapter + +\stopcomponent diff --git a/Master/texmf-dist/doc/context/sources/general/manuals/math/math-contents.tex b/Master/texmf-dist/doc/context/sources/general/manuals/math/math-contents.tex new file mode 100644 index 00000000000..7d8fb05c76f --- /dev/null +++ b/Master/texmf-dist/doc/context/sources/general/manuals/math/math-contents.tex @@ -0,0 +1,11 @@ +\environment math-layout + +\startcomponent math-contents + +\starttitle[title=Contents] + +\placelist[chapter] + +\stoptitle + +\stopcomponent diff --git a/Master/texmf-dist/doc/context/sources/general/manuals/math/math-features.tex b/Master/texmf-dist/doc/context/sources/general/manuals/math/math-features.tex new file mode 100644 index 00000000000..3869c575e1b --- /dev/null +++ b/Master/texmf-dist/doc/context/sources/general/manuals/math/math-features.tex @@ -0,0 +1,127 @@ +\environment math-layout + +\usemodule[fonts-features] + +\startcomponent math-features + +\startchapter[title=Features] + +\startsection[title=Default features] + +Math fonts are loaded in so called basemode, which gives them a traditional +treatment in the engine. However, we do support features in basemode too, so +setting them can influence what gets passed to \TEX. Also, in math mode, some +font features (like \type {dtls} and stylistic alternates) are applied +dynamically. + +The default \type {mathematics} feature set is as follows: + +\showfeatureset[name=mathematics] + +We don't discuss the exact meaning of these options here because normally you +don't have to deal with them. If a math font demands something special, the place +to deal with it is the related font goodie file. + +This feature set is the parent of two other sets: \type {mathematics-l2r} and +\type {mathematics-r2l}: + +\showfeatureset[name=mathematics-l2r] + +This one is the same as the parent but the right|-|to|-|left variant is +different: + +\showfeatureset[name=mathematics-r2l] + +Eventually we need size related feature sets and again we define a parent and +direction specific ones: \type {math-text}, \type {math-script} and \type +{math-scriptscript}. + +\showfeatureset[name=math-text] +\showfeatureset[name=math-script] +\showfeatureset[name=math-scriptscript] + +The left|-|to|-|right sets \type {math-*-l2r} are: + +\showfeatureset[name=math-text-l2r] +\showfeatureset[name=math-script-l2r] +\showfeatureset[name=math-scriptscript-l2r] + +The right|-|to|-|left sets \type {math-*-r2l} are: + +\showfeatureset[name=math-text-r2l] +\showfeatureset[name=math-script-r2l] +\showfeatureset[name=math-scriptscript-r2l] + +There are a few extra sets defined but these are meant for testing or virtual +math fonts. The reason for showing these sets is to make clear that the number of +features is minimal and that math is a real script indeed. + +The \type {kern} features is questionable. In traditional \TEX\ there are kerns +indeed but in \OPENTYPE\ math kerns are not used that way because a more advanced +kerning feature is present (and that one is currently always enabled). We used to +set the following but these make no sense. + +\starttyping +liga=yes, % (traditional) ligatures +tlig=yes, % tex ligatures, like -- and --- +trep=yes, % tex replacements, like the ' quote +\stoptyping + +Math fonts normally have no ligatures and supporting the \TEX\ specific ones can +actually be annoying. So, in todays \CONTEXT\ these are no longer enabled. Just +consider the following: + +\startbuffer +$- \kern0pt - \kern 0pt \mathchar"2D$ +$- \kern0pt -- \kern 0pt \mathchar"2D \mathchar"2D$ +$- \kern0pt --- \kern 0pt \mathchar"2D \mathchar"2D \mathchar"2D$ +\stopbuffer + +\typebuffer + +The \type {-} is mapped onto a minus sign and therefore several in succession +become multiple minus signs. The \type {\mathchar"2D} will remain the character +with that slot in the font so there we will see a hyphen. If we would enable the +\type {tlig} feature several such characters would be combined into an endash or +emdash. So how do we get these than? Because getting a hyphen directly involves a +command, the same is true for its longer relatives: \type {\endash} and \type +{\emdash}. + +\startlines +\getbuffer +\stoplines + +As convenience we have defined a special \type {\mathhyphen} command. Watch the +fact that a text hyphen in math mode is a minus in math! As comparison we also +show the plus sign. + +\starttabulate[||c|c|] +\BC command \BC math \BC text \NC \NR +\TB +\NC \type{\mathhyphen} \NC $\mathhyphen$ \NC \mathhyphen \NC \NR +\NC \type{\texthyphen} \NC $\texthyphen$ \NC \texthyphen \NC \NR +\NC \type{-} \NC $-$ \NC - \NC \NR +\NC \type{+} \NC $+$ \NC + \NC \NR +\NC \type{\endash} \NC $\endash$ \NC \endash \NC \NR +\NC \type{\emdash} \NC $\emdash$ \NC \emdash \NC \NR +\stoptabulate + +\stoptabulate + +\stopsection + +\startsection[title=Stylistic alternates] + + {\em todo} + +\stopsection + +\startsection[title=Dotless variants] + + {\em todo} + +\stopsection + +\stopchapter + +\stopcomponent diff --git a/Master/texmf-dist/doc/context/sources/general/manuals/math/math-framing-001.tex b/Master/texmf-dist/doc/context/sources/general/manuals/math/math-framing-001.tex new file mode 100644 index 00000000000..5081b8ad2b5 --- /dev/null +++ b/Master/texmf-dist/doc/context/sources/general/manuals/math/math-framing-001.tex @@ -0,0 +1,113 @@ +\setuplayout[topspace=5mm,bottomspace=5mm,height=middle,header=1cm,footer=0cm] + +\starttext + +\startbuffer[sample] + \enabletrackers[formulas.framed] \showboxes + \startformula + e = mc^2 + \stopformula + \par + \startformula + e = mc^2 + \stopformula + \startformula + e = mc^2 + \stopformula + \startformula + e \dorecurse{12} { = mc^2 } + \stopformula + \startplaceformula + \startformula + e = mc^2 + \stopformula + \stopplaceformula + \startplaceformula + \startformula + e \dorecurse{12} { = mc^2 } + \stopformula + \stopplaceformula +\stopbuffer + +\startbuffer[setup-b] +\setupformula + [option=frame] +\stopbuffer + +\startbuffer[setup-d] +\setupformulaframed + [frame=on, + %toffset=10pt, + %boffset=10pt, + foregroundcolor=white, + background=color, + backgroundcolor=gray] +\stopbuffer + +\startbuffer[setup-c] +\setupformula + [frame=number] +\stopbuffer + +\startbuffer[all] +\start + \typebuffer[setup-a] + \getbuffer[setup-a] + \getbuffer[sample] + \typebuffer[setup-b] + \typebuffer[setup-d] + \getbuffer[setup-b] + \getbuffer[setup-d] + \getbuffer[sample] + \typebuffer[setup-c] + \getbuffer[setup-c] + \getbuffer[sample] + \page +\stop +\stopbuffer + +\startbuffer + \startbuffer[setup-a] + \setupformula + [align=flushleft] + \stopbuffer + \getbuffer[all] + \startbuffer[setup-a] + \setupformula + [align=flushleft,location=left] + \stopbuffer + \getbuffer[all] + + \startbuffer[setup-a] + \setupformula + [align=middle] + \stopbuffer + \getbuffer[all] + \startbuffer[setup-a] + \setupformula + [align=middle,location=left] + \stopbuffer + \getbuffer[all] + + \startbuffer[setup-a] + \setupformula + [align=flushright] + \stopbuffer + \getbuffer[all] + \startbuffer[setup-a] + \setupformula + [align=flushright,location=left] + \stopbuffer + \getbuffer[all] +\stopbuffer + +\getbuffer + +\startbuffer[setup-b] +\setupformula + [option={tight,frame}] +\stopbuffer + +\getbuffer + +\stoptext diff --git a/Master/texmf-dist/doc/context/sources/general/manuals/math/math-framing.tex b/Master/texmf-dist/doc/context/sources/general/manuals/math/math-framing.tex new file mode 100644 index 00000000000..b93d57f4926 --- /dev/null +++ b/Master/texmf-dist/doc/context/sources/general/manuals/math/math-framing.tex @@ -0,0 +1,232 @@ +\environment math-layout + +\startcomponent math-framing + +\startchapter[title=Framing] + +The \type {\framed} macro is one of the core constructors in \CONTEXT\ and it's +used all over the place. This macro is unlikely to change its behaviour and as it +has evolved over years it comes with quite some options and some can interfere +with the expectations one has. In general using this macro works out well but you +need to keep an eye on using struts and alignment. + +\startbuffer +\framed{$e=mc^2$} +\stopbuffer + +\typebuffer + +The outcome of this is: + +\startlinecorrection \getbuffer \stoplinecorrection + +There is a bit of offset (that you can set) but also struts are added as can be +seen when we visualize them: + +\startlinecorrection \showstruts \getbuffer \stoplinecorrection + +These struts can be disabled: + +\startbuffer +\framed[strut=no]{$e=mc^2$} +\stopbuffer + +\typebuffer + +Now the result is more tight. + +\startlinecorrection \showstruts \getbuffer \stoplinecorrection + +These struts are the way to get a consistent look and feel and are used +frequently in \CONTEXT. We mention these struts because they get in the way when +we frame a display formula. Let's first look at what happens when we +just package a formula in a box: + +\startbuffer +\vbox\bgroup + \startformula + e = mc^2 + \stopformula +\egroup +\stopbuffer + +\typebuffer + +We get: + +\startlinecorrection \start \showmakeup \getbuffer \stop \stoplinecorrection + +Now there are a few properties of displaymath that one needs to keep in mind when +messing around with them this way. First of all display math is meant to be used +as part of the page stream. This means that spacing above and below is adapted to +what comes before and after. It also means that, because formulas can be numbered, +we have some settings that relate to horizontal placement. + +The default vertical spacing is easy to get rid of: + +\startbuffer +\vbox\bgroup + \startformula[packed] + e = mc^2 + \stopformula +\egroup +\stopbuffer + +\typebuffer + +This gives: + +\startlinecorrection \start \showmakeup \getbuffer \stop \stoplinecorrection + +Another handy keyword is \type {tight}: + +\startbuffer +\vbox\bgroup + \startformula[tight] + e = mc^2 + \stopformula +\egroup +\stopbuffer + +\typebuffer + +This gives: + +\startlinecorrection \start \showmakeup \getbuffer \stop \stoplinecorrection + +We can combine these two: + +\startbuffer +\vbox\bgroup + \startformula[packed,tight] + e = mc^2 + \stopformula +\egroup +\stopbuffer + +\typebuffer + +This gives: + +\startlinecorrection \start \showmakeup \getbuffer \stop \stoplinecorrection + +Just in case you wonder why we need to go through these troubles: keep in mind +that we are wrapping something (math) that normally goes in a vertical list with +text above and below. + +The \type {packed} and \type {tight} options can help when we want to wrap +a formula in a frame: + +\startbuffer +\framed + [strut=no] + { + \startformula[packed,tight] + e = mc^2 + \stopformula + } +\stopbuffer + +\typebuffer + +which renders as: + +\startlinecorrection \getbuffer \stoplinecorrection + +There is a dedicated math framed instance that is tuned to give better results +and automatically switches to math mode: + +\startbuffer +\mframed { + e = mc^2 +} +\stopbuffer + +\typebuffer + +becomes: + +\startlinecorrection \getbuffer \stoplinecorrection + +Framing a formula is also supported as a option, where the full power of framed can +be applied to the formula. We will illustrate this in detail on the next pages. For this +we use the following sample: + +\typefile{math-framing-001.tex} + +In \in {figure} [framing-flushleft], \in [framing-middle] \in {and} +[framing-flushright] you see some combinations. You can run this example on your +machine and see the details. + +\startplacefigure[location=page,reference=framing-flushleft,title={Framed formulas flushed left.}] + \startcombination[2*2] + {\typesetfile[math-framing-001.tex][page=01,height=.45\textheight]} {\tttf right + flushleft} + {\typesetfile[math-framing-001.tex][page=02,height=.45\textheight]} {\tttf right + flushleft} + {\typesetfile[math-framing-001.tex][page=07,height=.45\textheight]} {\tttf left + flushleft + tight} + {\typesetfile[math-framing-001.tex][page=08,height=.45\textheight]} {\tttf left + flushleft + tight} + \stopcombination +\stopplacefigure + +\startplacefigure[location=page,reference=framing-middle,title={Framed formulas centered.}] + \startcombination[2*2] + {\typesetfile[math-framing-001.tex][page=03,height=.45\textheight]} {\tttf right + middle} + {\typesetfile[math-framing-001.tex][page=04,height=.45\textheight]} {\tttf right + middle} + {\typesetfile[math-framing-001.tex][page=09,height=.45\textheight]} {\tttf left + middle + tight} + {\typesetfile[math-framing-001.tex][page=10,height=.45\textheight]} {\tttf left + middle + tight} + \stopcombination +\stopplacefigure + +\startplacefigure[location=page,reference=framing-flushright,title={Framed formulas flushed right.}] + \startcombination[2*2] + {\typesetfile[math-framing-001.tex][page=05,height=.45\textheight]} {\tttf right + flushright} + {\typesetfile[math-framing-001.tex][page=06,height=.45\textheight]} {\tttf right + flushright} + {\typesetfile[math-framing-001.tex][page=11,height=.45\textheight]} {\tttf left + flushright + tight} + {\typesetfile[math-framing-001.tex][page=12,height=.45\textheight]} {\tttf left + flushright + tight} + \stopcombination +\stopplacefigure + +With each formula class a framed variants is automatically created: + +\startbuffer +\defineformula + [foo] + +\setupformulaframed + [foo] + [frame=on, + framecolor=red] + +\startfooformula[frame] + e=mc^2 +\stopfooformula +\stopbuffer + +\typebuffer + +This time you get a red frame: + +\getbuffer + +You can also frame the number, as in: + +\startbuffer +\setupformulaframed[framecolor=red,frame=on,offset=1ex] +\setupformula[option=frame,color=blue] +\setupformula[numbercommand={\inframed[framecolor=green]}] + +\startplaceformula + \startformula + 2 + 2 = 2x + \stopformula +\stopplaceformula +\stopbuffer + +\typebuffer + +The boxes get properly aligned: + +\start \showboxes \getbuffer \stop + +\stopchapter + +\stopcomponent diff --git a/Master/texmf-dist/doc/context/sources/general/manuals/math/math-introduction.tex b/Master/texmf-dist/doc/context/sources/general/manuals/math/math-introduction.tex new file mode 100644 index 00000000000..f5d24100473 --- /dev/null +++ b/Master/texmf-dist/doc/context/sources/general/manuals/math/math-introduction.tex @@ -0,0 +1,20 @@ +\environment math-layout + +\startcomponent math-introduction + +\startchapter[title=Introduction] + +This manual is not a systematic discussion about math in \CONTEXT\ but more a +collection of wrap|-|ups. The file also serves as testcase. The content can +change over time and can also serve as a trigger for discussions on the mailing +list. Suggestions are welcome. + +\startlines +Hans Hagen +Hasselt NL +% May 2016 +\stoplines + +\stopchapter + +\stopcomponent diff --git a/Master/texmf-dist/doc/context/sources/general/manuals/math/math-layout.tex b/Master/texmf-dist/doc/context/sources/general/manuals/math/math-layout.tex new file mode 100644 index 00000000000..92ced8f22a3 --- /dev/null +++ b/Master/texmf-dist/doc/context/sources/general/manuals/math/math-layout.tex @@ -0,0 +1,59 @@ +\startenvironment math-layout + +\switchtobodyfont [modern] +\switchtobodyfont [dejavu] +\switchtobodyfont [cambria] +\switchtobodyfont[lucidaot] +\switchtobodyfont [xits] + +\setupbodyfont + [pagella] + +\setupwhitespace + [big] + +\setuppagenumbering + [alternative=doublesided] + +\setuplayout + [backspace=2cm, + width=middle, + cutspace=2cm, + topspace=2cm, + header=2cm, + height=middle, + footer=0pt, + bottomspace=2cm] + +\setuplayout + [backspace=2cm, + topspace=2cm, + header=2cm, + height=middle, + width=middle] + +\setuphead + [chapter] + [header=high, + style=\bfc, + color=darkmagenta] + +\setuphead + [section] + [style=\bfb, + color=darkmagenta] + +\setuphead + [subsection] + [style=\bfa, + color=darkmagenta] + +\usemodule[abr-02] + +\usemodule[x][setups-basics] + +\usemodule[visual] + +\loadsetups[i-context] + +\stopenvironment diff --git a/Master/texmf-dist/doc/context/sources/general/manuals/math/math-mkiv.tex b/Master/texmf-dist/doc/context/sources/general/manuals/math/math-mkiv.tex new file mode 100644 index 00000000000..f36b1032d5a --- /dev/null +++ b/Master/texmf-dist/doc/context/sources/general/manuals/math/math-mkiv.tex @@ -0,0 +1,64 @@ +% language=uk + +% author : Hans Hagen +% copyright : PRAGMA ADE & ConTeXt Development Team +% license : Creative Commons Attribution ShareAlike 4.0 International +% reference : pragma-ade.nl | contextgarden.net | texlive (related) distributions +% origin : the ConTeXt distribution +% +% comment : Because this manual is distributed with TeX distributions it comes with a rather +% liberal license. We try to adapt these documents to upgrades in the (sub)systems +% that they describe. Using parts of the content otherwise can therefore conflict +% with existing functionality and we cannot be held responsible for that. Many of +% the manuals contain characteristic graphics and personal notes or examples that +% make no sense when used out-of-context. +% +% comment : Some chapters might have been published in TugBoat, the NTG Maps, the ConTeXt +% Group journal or otherwise. Thanks to the editors for corrections. Also thanks +% to users for testing, feedback and corrections. + +\environment math-layout + +\startproduct math-mkiv + +\startdocument + +\component math-titlepage + +\startfrontmatter + \component math-contents + \component math-introduction +\stopfrontmatter + +\startbodymatter + \component math-spacing + \component math-framing + \component math-numbering + \component math-combining + \component math-features + \component math-tricks +\stopbodymatter + +\stopdocument + +\stopproduct + +% when we compare these tables with the one that the ff loader produces we notice +% some differences: this is because (deduced from source) that ff does some kind +% of interpolation for missing heights for the last kern (for n=2 adding 100 and +% for adding 1 the max height) ... this is probably a side effect if missing specs +% here we don't do that +% \enabledirectives[fontgoodies.mathkerning] + +% \startTEXpage[offset=2mm] +% \startcombination[4*2] +% {\hbox to 50pt{\hss\showboxes\switchtobodyfont [modern]$V_i^i = W_i^i$\hss}} {\infofont modern} +% {\hbox to 50pt{\hss\showboxes\switchtobodyfont [cambria]$V_i^i = W_i^i$\hss}} {\infofont cambria} +% {\hbox to 50pt{\hss\showboxes\switchtobodyfont[lucidaot]$V_i^i = W_i^i$\hss}} {\infofont lucida} +% {\hbox to 50pt{\hss\showboxes\switchtobodyfont [dejavu]$V_i^i = W_i^i$\hss}} {\infofont dejavu} +% {\hbox to 50pt{\hss\showboxes\switchtobodyfont [pagella]$V_i^i = W_i^i$\hss}} {\infofont pagella} +% {\hbox to 50pt{\hss\showboxes\switchtobodyfont [termes]$V_i^i = W_i^i$\hss}} {\infofont termes} +% {\hbox to 50pt{\hss\showboxes\switchtobodyfont [bonum]$V_i^i = W_i^i$\hss}} {\infofont bonum} +% {\hbox to 50pt{\hss\showboxes\switchtobodyfont [schola]$V_i^i = W_i^i$\hss}} {\infofont schola} +% \stopcombination +% \stopTEXpage diff --git a/Master/texmf-dist/doc/context/sources/general/manuals/math/math-numbering.tex b/Master/texmf-dist/doc/context/sources/general/manuals/math/math-numbering.tex new file mode 100644 index 00000000000..64f766628ce --- /dev/null +++ b/Master/texmf-dist/doc/context/sources/general/manuals/math/math-numbering.tex @@ -0,0 +1,74 @@ +\environment math-layout + +\startcomponent math-numbering + +\startchapter[title=Numbering] + +Numbering equations can be a bit of a mess. Formuals can be unnumbers, numbered, +numbered with an associated reference. Numbers can go on the while formula and on +the rows in an alignment. Combine that with positioning left or right and left or +righ taligned formulas and the picture gets complicated. When something turns out +wrong, just let me know and the respective branch in the code can be adapted. Here +are some examples: + +\startbuffer +\startplaceformula[a] + \startformula + (1) + \stopformula +\stopplaceformula +\stopbuffer + +\typebuffer \getbuffer + +\startbuffer +\startplaceformula[b] + \startformula + \startalignment + \NC 1 \NC = \NR + \NC 2 \NC = (2) \NR + \NC 3 \NC = \NR + \stopalignment + \stopformula +\stopplaceformula +\stopbuffer + +\typebuffer \getbuffer + +\startbuffer +\startplaceformula[c] + \startformula + \startalignment + \NC 1 \NC = (3) \NR[x] + \NC 2 \NC = \NR + \NC 3 \NC = (4) \NR[y] + \stopalignment + \stopformula +\stopplaceformula +\stopbuffer + +\typebuffer \getbuffer + +\startbuffer +\startplaceformula[d] + \startformula + (5) + \stopformula +\stopplaceformula +\stopbuffer + +\typebuffer \getbuffer + +\startbuffer +\startplaceformula[e] + \startformula + (6) + \stopformula +\stopplaceformula +\stopbuffer + +\typebuffer \getbuffer + +\stopchapter + +\stopcomponent diff --git a/Master/texmf-dist/doc/context/sources/general/manuals/math/math-spacing-001.tex b/Master/texmf-dist/doc/context/sources/general/manuals/math/math-spacing-001.tex new file mode 100644 index 00000000000..a0ccda449e3 --- /dev/null +++ b/Master/texmf-dist/doc/context/sources/general/manuals/math/math-spacing-001.tex @@ -0,0 +1,73 @@ +\doifmodeelse {with-struts} { + \def\Line{\dontleavehmode{\showstruts\dorecurse{18}{x \strut x }}} +} { + \def\Line{\dontleavehmode{\showstruts\dorecurse{18}{x x }}} +} + +\setuplayout + [width=middle, + height=middle, + backspace=1mm, + topspace=1cm] + +\setupbodyfont + [17.3pt] + +\starttext + +\Line + +\startformula + x +\stopformula + +\Line + +\startformula + y +\stopformula + +\Line + +\startformula + \strut x +\stopformula + +\Line + +\startformula \startalign + \NC c - a = \NC b \NR + \NC d + c - b = \NC a \NR +\stopalign \stopformula + +\Line + +\startformula \startalign + \NC c - a = \NC b \NR + \NC d + c - b = \NC a \NR +\stopalign \stopformula + +\Line + +\startformula +\mframed + [offset=1mm,loffset=3mm,roffset=3mm] { + a + b = c + } +\stopformula + +\Line + +\startformula +\mframed + [offset=1mm,loffset=3mm,roffset=3mm] { + \startalign + \NC c - a = \NC b \NR + \NC d + c - b = \NC a \NR + \stopalign + } +\stopformula + +\Line + +\stoptext diff --git a/Master/texmf-dist/doc/context/sources/general/manuals/math/math-spacing.tex b/Master/texmf-dist/doc/context/sources/general/manuals/math/math-spacing.tex new file mode 100644 index 00000000000..3412a3abc05 --- /dev/null +++ b/Master/texmf-dist/doc/context/sources/general/manuals/math/math-spacing.tex @@ -0,0 +1,397 @@ +\environment math-layout + +\startcomponent math-spacing + +\startchapter[title=Vertical spacing] + +The low level way to input inline math in \TEX\ is + +\starttyping +$ e = mc^2 $ +\stoptyping + +while display math can be entered like: + +\starttyping +$$ e = mc^2 $$ +\stoptyping + +The inline method is still valid, but for display math the \type {$$} method +should not be used. This has to do with the fact that we want to control spacing +in a consistent way. In \CONTEXT\ the vertical spacing model is rather stable +although in \MKIV\ the implementation is quite different. It has always been a +challenge to let this mechanism work well with space round display formulas. This +has to do with the fact that (in the kind of documents that we have to produce) +interaction with already present spacing is somewhat tricky. + +Of course much can be achieved in \TEX\ but in \CONTEXT\ we need to have control +over the many mechanisms that can interact. Given the way \TEX\ handles space +around display math there is no real robust solution possible that gives visually +consistent space in all cases so that is why we basically disable the existing +spacing model. Disabling is easier in \LUATEX\ and recent versions of \MKIV\ have +been adapted to that. + +In pure \TEX\ what happens is this: + +\startbuffer +$$ x $$ +\stopbuffer + +\typebuffer \par \start \showboxes \getbuffer \par \stop + +A horizontal box (visualized by the thin rule on its baseline) get added which +triggers a baselineskip. Then the formula is put below it. We can get rid of that +box with \type {\noindent}: + +\startbuffer +\noindent $$ x $$ +\stopbuffer + +\typebuffer \par \start \showboxes \getbuffer \par \stop + +In addition (not shown here) vertical space is added before and after the formula +and left- and rightskip on the edges. In fact typesetting display math goes like this: + +\startitemize[packed] + \startitem + typeset the formula using display mode and wrap it in a box + \stopitem + \startitem + add an equation number, if possible in the same line, otherwise on a line + below + \stopitem + \startitem + in the process center the formula using the available display width and + required display indentation + \stopitem + \startitem + add vertical space above and below (depending also in displays being + short in relation to the previous line + \stopitem + \startitem + at the same time also add penalties that determine the break across + pages + \stopitem +\stopitemize + +Apart from the spacing around the formula and the equation number, typesetting is +not different from: + +\starttyping +\hbox {$ \displaystyle x $} +\stoptyping + +So this is what we will use by default in \CONTEXT\ in order to better control +spacing as spacing around math is a sensitive issue. Because math itself can have +a narrow band, for instance a lone $x$, or relative much depth, as with $y$, or +both depth and height as in $(1,2)$ and $x^2 + y_2$ and because a preceding line +can have no or little depth and a following line little height, the visual +appearance can become inconsistent. The default approach is to force consistent +spacing, but when needed we can implement variants. + +Spacing around display math is set up with \type {\setupformulas}: + +\starttyping + \setupformulas + [spacebefore=big, + spaceafter=big] +\stoptyping + +When the whitespace is larger that setting wins because as usual the larger +of blanks or whitespace wins. + +% \showdefinition[setupformula] +% \showdefinition[setupmathematics] + +In \in {figures} [whitespace-no], \in {figures} [whitespace-medium] \in {and} +[whitespace-big] we see how things interact. We show lines with and without +maximum line height and depth (enforced by struts) alongside. + +% no whitespace + +\startbuffer[demo-1] +\disablemode[with-struts] +\showmakeup +\setupformulas[spacebefore=none,spaceafter=none] +\setupwhitespace[none] +\input math-spacing-001.tex +\stopbuffer + +\startbuffer[demo-2] +\enablemode[with-struts] +\showmakeup +\setupformulas[spacebefore=none,spaceafter=none] +\setupwhitespace[none] +\input math-spacing-001.tex +\stopbuffer + +\startbuffer[demo-3] +\disablemode[with-struts] +\showmakeup +\setupformulas[spacebefore=medium,spaceafter=medium] +\setupwhitespace[none] +\input math-spacing-001.tex +\stopbuffer + +\startbuffer[demo-4] +\enablemode[with-struts] +\showmakeup +\setupformulas[spacebefore=medium,spaceafter=medium] +\setupwhitespace[none] +\input math-spacing-001.tex +\stopbuffer + +\startplacefigure[location=page,reference=whitespace-no,title={No whitespace.}] + \startcombination[2*2] + {\typesetbuffer[demo-1][height=.45\textheight]} {\tttf natural + none + ws none} + {\typesetbuffer[demo-2][height=.45\textheight]} {\tttf strut + none + ws none} + {\typesetbuffer[demo-3][height=.45\textheight]} {\tttf natural + medium + ws none} + {\typesetbuffer[demo-4][height=.45\textheight]} {\tttf strut + medium + ws none} + \stopcombination +\stopplacefigure + +% whitespace medium same as medium spacing around math + +\startbuffer[demo-1] +\disablemode[with-struts] +\showmakeup +\setupformulas[spacebefore=none,spaceafter=none] +\setupwhitespace[medium] +\input math-spacing-001.tex +\stopbuffer + +\startbuffer[demo-2] +\enablemode[with-struts] +\showmakeup +\setupformulas[spacebefore=none,spaceafter=none] +\setupwhitespace[medium] +\input math-spacing-001.tex +\stopbuffer + +\startbuffer[demo-3] +\disablemode[with-struts] +\showmakeup +\setupformulas[spacebefore=medium,spaceafter=medium] +\setupwhitespace[medium] +\input math-spacing-001.tex +\stopbuffer + +\startbuffer[demo-4] +\enablemode[with-struts] +\showmakeup +\setupformulas[spacebefore=medium,spaceafter=medium] +\setupwhitespace[medium] +\input math-spacing-001.tex +\stopbuffer + +\startplacefigure[location=page,reference=whitespace-medium,title={Whitespace the same as display spacing.}] + \startcombination[2*2] + {\typesetbuffer[demo-1][height=.45\textheight]} {\tttf natural + none + ws medium} + {\typesetbuffer[demo-2][height=.45\textheight]} {\tttf strut + none + ws medium} + {\typesetbuffer[demo-3][height=.45\textheight]} {\tttf natural + medium + ws medium} + {\typesetbuffer[demo-4][height=.45\textheight]} {\tttf strut + medium + ws medium} + \stopcombination +\stopplacefigure + +% whitespace big wins from medium spacing around math + +\startbuffer[demo-1] +\disablemode[with-struts] +\showmakeup +\setupformulas[spacebefore=none,spaceafter=none] +\setupwhitespace[big] +\input math-spacing-001.tex +\stopbuffer + +\startbuffer[demo-2] +\enablemode[with-struts] +\showmakeup +\setupformulas[spacebefore=none,spaceafter=none] +\setupwhitespace[big] +\input math-spacing-001.tex +\stopbuffer + +\startbuffer[demo-3] +\disablemode[with-struts] +\showmakeup +\setupformulas[spacebefore=medium,spaceafter=medium] +\setupwhitespace[big] +\input math-spacing-001.tex +\stopbuffer + +\startbuffer[demo-4] +\enablemode[with-struts] +\showmakeup +\setupformulas[spacebefore=medium,spaceafter=medium] +\setupwhitespace[big] +\input math-spacing-001.tex +\stopbuffer + +\startplacefigure[location=page,reference=whitespace-big,title={Whitespace larger than display spacing.}] + \startcombination[2*2] + {\typesetbuffer[demo-1][height=.45\textheight]} {\tttf natural + none + ws big} + {\typesetbuffer[demo-2][height=.45\textheight]} {\tttf strut + none + ws big} + {\typesetbuffer[demo-3][height=.45\textheight]} {\tttf natural + medium + ws big} + {\typesetbuffer[demo-4][height=.45\textheight]} {\tttf strut + medium + ws big} + \stopcombination +\stopplacefigure + +Because we want to have control over the placement of the formula number but also +want to be able to align the formula with the left or right edge of the text +area, we don't use the native display handler by default. We still have a way to +force this, but this is only for testing purposes. By default a formula is placed +centered relative to the current text, including left and right margins. + +\startbuffer +\fakewords{20}{40} + +\startitemize + \startitem + \fakewords{20}{40} + \placeformula + \startformula + \fakeformula + \stopformula + \stopitem + \startitem + \fakewords{20}{40} + \stopitem +\stopitemize + +\fakewords{20}{40}\epar +\stopbuffer + +\typebuffer + +\start \getbuffer \stop + +In the next examples we explicitly align formulas to the left (\type +{flushleft}), center (\type {middle}) and right (\type {flushright}): + +\startbuffer[demo] +\setupformulas[align=flushleft] +\startformula\fakeformula\stopformula +\setupformulas[align=middle] +\startformula\fakeformula\stopformula +\setupformulas[align=flushright] +\startformula\fakeformula\stopformula +\stopbuffer + +\typebuffer[demo] + +The three cases show up as: + +\start \getbuffer[demo] \stop + +You can also set a left and|/|or right margin: + +\startbuffer[setting] +\setupformulas + [leftmargin=3cm, + rightmargin=3cm] +\stopbuffer + +\start \getbuffer[setting] \getbuffer[demo] \stop + +With formula numbers these formulas look as follows: + +\startbuffer[demo] +\setupformulas[align=flushleft] +\placeformula \startformula\fakeformula\stopformula +\setupformulas[align=middle] +\placeformula \startformula\fakeformula\stopformula +\setupformulas[align=flushright] +\placeformula \startformula\fakeformula\stopformula +\stopbuffer + +\start \getbuffer[demo] \stop + +and the same with margins: + +\start \getbuffer[setting] \getbuffer[demo] \stop + +\page + +When the \type {margin} option is set to \type {standard} or \type {yes} the +current indentation (when set) or left skip is added to the left side. + +\startbuffer +\setupformulas[align=flushleft] +\startformula \fakeformula \stopformula +\placeformula \startformula \fakeformula \stopformula +\stopbuffer + +\typebuffer \start \getbuffer \stop + +\startbuffer +\setupformulas[align=flushleft,margin=standard] +\startformula \fakeformula \stopformula +\placeformula \startformula \fakeformula \stopformula +\stopbuffer + +\typebuffer \start \getbuffer \stop + +The distance between the formula and the number is only applied when the formula +is left or right aligned. + +\startbuffer +\setupformulas[align=flushright,distance=0pt] +\startformula \fakeformula \stopformula +\placeformula \startformula \fakeformula \stopformula +\stopbuffer + +\typebuffer \start \getbuffer \stop + +\startbuffer +\setupformulas[align=flushright,distance=2em] +\startformula \fakeformula \stopformula +\placeformula \startformula \fakeformula \stopformula +\stopbuffer + +\typebuffer \start \getbuffer \stop + +\stopsection + +\startsection[title=Scripts] + +Spacing is a trade off because there is no way to predict all usage. Of course a +font can be very detailed in where italic correction is to be applied and how +advanced stepwise kerns are used, but not many fonts have extensive information. +Here are some differences in rendering. In \OPENTYPE\ the super- and subscript of +an integral are moved right and left half of the italic correction. + +\startlinecorrection + \startcombination[6*1] + {\switchtobodyfont [modern]\math{F_j = \int\nolimits _a^b}} {Latin Modern} + {\switchtobodyfont [pagella]\math{F_j = \int\nolimits _a^b}} {Pagella} + {\switchtobodyfont [dejavu]\math{F_j = \int\nolimits _a^b}} {Dejavu} + {\switchtobodyfont [cambria]\math{F_j = \int\nolimits _a^b}} {Cambria} + {\switchtobodyfont[lucidaot]\math{F_j = \int\nolimits _a^b}} {Lucida OT} + {\switchtobodyfont [xits]\math{F_j = \int\nolimits _a^b}} {Xits} + \stopcombination +\stoplinecorrection + +\stopsection + +\startsection[title=Bad fonts] + +There might be fonts out there where the italic correction is supposed to be +added to the width of a glyph. In that case the following trick can be tried: + +\starttyping +\definefontfeature[mathextra][italicwidths=yes] % fix latin modern +\stoptyping + +in which case the following might look better: + +\starttyping +$\left|V\right| = \left|W\right|$ +\stoptyping + +Of course better is to fix the font. + +\stopsection + +\stopchapter + +\stopcomponent diff --git a/Master/texmf-dist/doc/context/sources/general/manuals/math/math-titlepage.tex b/Master/texmf-dist/doc/context/sources/general/manuals/math/math-titlepage.tex new file mode 100644 index 00000000000..1d1ac306a37 --- /dev/null +++ b/Master/texmf-dist/doc/context/sources/general/manuals/math/math-titlepage.tex @@ -0,0 +1,29 @@ +\startcomponent math-titlepage + +\startMPpage + + StartPage; + fill Page withcolor .35magenta ; + picture p ; p := image ( draw outlinetext.b + ("\textdollar") + (withcolor .35green) + (withcolor .5yellow withpen pencircle scaled .1) ; + ) ; + p := p xysized(PaperWidth - 20pt,PaperHeight - 20pt ) ; + p := p shifted - llcorner p shifted (10pt,10pt) ; + draw p ; + picture p ; p := image ( draw outlinetext.b + ("math") + (withcolor .35green) + (withcolor .5yellow withpen pencircle scaled .2) ; + ) ; + p := p xsized(PaperWidth/2 - 40pt) ; + p := p shifted - llcorner p shifted (10pt,10pt) ; + draw p shifted (PaperWidth/2 + 20pt,20pt); + StopPage; + +\stopMPpage + +\page[empty] \setuppagenumber[number=1] + +\stopcomponent |