summaryrefslogtreecommitdiff
path: root/doc/context/sources/general/manuals/math/math-spacing.tex
diff options
context:
space:
mode:
Diffstat (limited to 'doc/context/sources/general/manuals/math/math-spacing.tex')
-rw-r--r--doc/context/sources/general/manuals/math/math-spacing.tex348
1 files changed, 348 insertions, 0 deletions
diff --git a/doc/context/sources/general/manuals/math/math-spacing.tex b/doc/context/sources/general/manuals/math/math-spacing.tex
index 3412a3abc..913a90d9e 100644
--- a/doc/context/sources/general/manuals/math/math-spacing.tex
+++ b/doc/context/sources/general/manuals/math/math-spacing.tex
@@ -1,3 +1,5 @@
+% language=uk
+
\environment math-layout
\startcomponent math-spacing
@@ -392,6 +394,352 @@ Of course better is to fix the font.
\stopsection
+\startsection[title=Multiline]
+
+Inline formulas can span lines but display math normally sits on one line unless
+one uses alignment mechanisms. Take this:
+
+\startbuffer[demo]
+\startformula
+ x\dorecurse{30}{ + #1x^{#1x}} = 10
+\stopformula
+\stopbuffer
+
+\typebuffer[demo]
+
+\par \start \setupformula[split=no] \getbuffer[demo] \stop \par
+
+You can set \type {split} to \type {yes} using \type {\setupformula} and get the
+following:
+
+\par \start \setupformula[split=yes] \getbuffer[demo] \stop \par
+
+Maybe nicer is to also set \type {align} to \type {flushleft}:
+
+\par \start \setupformula[split=yes,align=flushleft] \getbuffer[demo] \stop \par
+
+If you want the binary operators to start the lines you can set this:
+
+\startbuffer[setup]
+\setupmathematics[setups=math:spacing:split]
+\setupformulas[split=yes,align=flushleft]
+\stopbuffer
+
+\typebuffer[setup]
+
+\par \start \getbuffer[setup,demo] \stop \par
+
+You can prevent a split with a large penalty. Here is a test that yuou can run
+to play with this feature:
+
+\starttyping
+\dostepwiserecurse {30} {100} {1} {
+ \hsize \dimexpr 40pt + #1pt \relax
+ \startformula
+ y = a \dorecurse {50} {
+ \penalty 10000 {\bf + ##1b}
+ + ##1c^2
+ }
+ \stopformula
+ \page
+}
+\stoptyping
+
+There is an experimental alignment mechanism available. Watch the following
+examples:
+
+\startbuffer[demo]
+before
+ \startformula
+ z + 3y = \alignhere x
+ \dorecurse{20}{ + #1x^{#1x}}
+ \stopformula
+inbetween
+ \startformula
+ z + 3y \alignhere = 1
+ \dorecurse{4}{
+ \dorecurse{#1}{+ #1x^{##1x}}
+ \ifnum#1<4\breakhere\fi
+ }
+ \stopformula
+after
+\stopbuffer
+
+\typebuffer[demo]
+
+\startbuffer[setup]
+\setupformula
+ [split=no]
+\stopbuffer
+
+\typebuffer[setup] \start \getbuffer[setup,demo] \stop
+
+\startbuffer[setup]
+\setupformula
+ [split=yes,
+ align=flushleft]
+\stopbuffer
+
+\typebuffer[setup] \start \getbuffer[setup,demo] \stop
+
+\startbuffer[setup]
+\setupformula
+ [split=yes,
+ align=flushleft,
+ hang=auto]
+\stopbuffer
+
+\typebuffer[setup] \start \getbuffer[setup,demo] \stop
+
+\startbuffer[setup]
+\setupformula
+ [split=yes,
+ align=flushleft,
+ hang=auto,
+ distance=1em]
+\stopbuffer
+
+\typebuffer[setup] \start \getbuffer[setup,demo] \stop
+
+\startbuffer[setup]
+\setupformula
+ [split=yes,
+ align=flushleft,
+ hang=yes,
+ distance=2em]
+\stopbuffer
+
+\typebuffer[setup] \start \getbuffer[setup,demo] \stop
+
+\startbuffer[setup]
+\setupformula
+ [split=yes,
+ align=flushleft,
+ hang=yes,
+ distance=2em,
+ interlinespace=1.5\lineheight]
+\stopbuffer
+
+\typebuffer[setup] \start \getbuffer[setup,demo] \stop
+
+If you want to split over pages, you can say:
+
+\starttyping
+\setupformula
+ [split=page,
+ align=middle]
+\stoptyping
+
+but that is rather experimental (especially in combination with other
+number placement related options).
+
+\stopsection
+
+\startsection[title=Scripts]
+
+Superscripts and subscripts are typeset in a smaller size than their nucleus. You
+can influence that as follows:
+
+\startbuffer
+\startformula
+x^{2} = x^{\textstyle 2}
+ = x^{\scriptstyle 2}
+ = x^{\scriptscriptstyle 2}
+\stopformula
+\stopbuffer
+
+\typebuffer \getbuffer
+
+You can also use macros instead of a \type {^} and \type {_}, as in:
+
+\startbuffer
+\startformula
+x \superscript {2} =
+x \superscript {\textstyle 2} =
+x \superscript {\scriptstyle 2} =
+x \superscript {\scriptscriptstyle 2} =
+x \nosuperscript {2}
+\stopformula
+\stopbuffer
+
+\typebuffer \getbuffer
+
+The \type {\nosuperscript} primitive makes sure that we get the same size as the
+nucleus.
+
+\startbuffer
+\startformula
+x \superscript {2} \subscript {i} =
+x \nosuperscript {2} \subscript {i} =
+x \superscript {2} \nosubscript {i} =
+x \nosuperscript {2} \nosubscript {i}
+\stopformula
+\stopbuffer
+
+\typebuffer \getbuffer
+
+\stopsection
+
+\startsection[title=Text accents]
+
+You can put an accent over a character:
+
+\startbuffer
+$\grave{x} \neq \grave{i}$\quad
+$\ddot {x} \neq \ddot {i}$\quad
+$\bar {x} \neq \bar {i}$\quad
+$\acute{x} \neq \acute{i}$\quad
+$\hat {x} \neq \hat {i}$\quad
+$\check{x} \neq \check{i}$\quad
+$\breve{x} \neq \breve{i}$\quad
+$\dot {x} \neq \dot {i}$\quad
+$\ring {x} \neq \ring {i}$\quad
+$\tilde{x} \neq \tilde{i}$\quad
+$\dddot{x} \neq \dddot{i}$\quad
+\stopbuffer
+
+\typebuffer
+
+This comes out as: \inlinebuffer. For regular text you can better use proper composed
+\UTF\ encoded characters.
+
+\stopsection
+
+\startsection[title=Directions]
+
+Math has its own direction control:
+
+\starttexdefinition unexpanded MathTest #1#2#3
+ \ruledvbox \bgroup
+ \mathdir#1\relax
+ \textdir#2\relax
+ \pardir #3\relax
+ \hsize=30mm
+ \startformula
+ a^2+b^2=c^2
+ \stopformula
+ \egroup
+\stoptexdefinition
+
+\starttexdefinition unexpanded MathShow #1#2#3#4
+ \hbox \bgroup
+ \infofont #1 : m=#2 t=#3 p=#4
+ \egroup
+\stoptexdefinition
+
+\startbuffer
+\startcombination[nx=4,ny=2,distance=1cm]
+ {\MathTest{TLT}{TLT}{TLT}} {\MathShow1{TLT}{TLT}{TLT}}
+ {\MathTest{TLT}{TLT}{TRT}} {\MathShow2{TLT}{TLT}{TRT}}
+ {\MathTest{TLT}{TRT}{TLT}} {\MathShow3{TLT}{TRT}{TLT}}
+ {\MathTest{TLT}{TRT}{TRT}} {\MathShow4{TLT}{TRT}{TRT}}
+ {\MathTest{TRT}{TLT}{TLT}} {\MathShow5{TRT}{TLT}{TLT}}
+ {\MathTest{TRT}{TLT}{TRT}} {\MathShow6{TRT}{TLT}{TRT}}
+ {\MathTest{TRT}{TRT}{TLT}} {\MathShow7{TRT}{TRT}{TLT}}
+ {\MathTest{TRT}{TRT}{TRT}} {\MathShow8{TRT}{TRT}{TRT}}
+\stopcombination
+\stopbuffer
+
+\typebuffer
+
+Normally you will not control directions this way but use the proper parameters
+in layout related setup commands.
+
+\startlinecorrection
+\getbuffer
+\stoplinecorrection
+
+\stopsection
+
+\startsection[title=Surround]
+
+The spacing around inline formulas is consistent with other
+spacing but it can be enlarged. We just show a few examples:
+
+\startbuffer[demo]
+\hsize 20em
+We have
+\dorecurse {8} {%
+ \ifcase#1\or\else and \fi
+ $x+#1$ and $x-#1$ and $x \times #1$
+}
+\removeunwantedspaces .
+\par
+\stopbuffer
+
+\typebuffer[demo]
+
+\blank \start \getbuffer[demo] \stop
+
+\startbuffer[setup]
+\setupmathematics
+ [textdistance=2pt plus 1pt minus 1pt]
+\stopbuffer
+
+\typebuffer[setup]
+
+\blank \start \getbuffer[setup,demo] \stop
+
+\startbuffer[setup]
+\setupmathematics
+ [textdistance=4pt plus 2pt minus 2pt]
+\stopbuffer
+
+\typebuffer[setup]
+
+\blank \start \getbuffer[setup,demo] \stop
+
+\stopsection
+
+\startsection[title=Choices]
+
+The next examples are generated using this macro:
+
+\startbuffer
+\starttexdefinition unexpanded Test#1#2
+
+ \begingroup
+
+ \showmakeup[depth]
+
+ \def\TestA{\dontleavehmode\ruledhbox{\dorecurse{8}{before }}}
+ \def\TestB{\dontleavehmode\ruledhbox{\dorecurse{8}{after }}}
+ \def\TestC{\dorecurse{18}{x+}x}
+
+ \setdisplaymathspacemodel[3]
+ \setupalign[flushleft] 1\space:\space\TestA \par
+ \startformula #2 \TestC \stopformula \par
+ \setupalign[flushleft] 2\space:\space\TestB \par
+
+ \setdisplaymathspacemodel[4]
+
+ \vskip#1\lineheight
+
+ \setupalign[flushright] \TestA\space:\space2 \par
+ \startformula #2 \TestC \stopformula \par
+ \setupalign[flushright] \TestB\space:\space2 \par
+
+ \endgroup
+
+\stoptexdefinition
+\stopbuffer
+
+\typebuffer \getbuffer
+
+It demonstrates the often hard decisions that we have to make with regards to
+spacing. On the one hand we want to be adaptive, on the other hand we want to be
+consistent, for instance in the depth of lines. These examples overlay the two
+variants (which is of course font and style dependent).
+
+\Test{-4.70}{} \blank[2*line]
+\Test{-6.00}{\frac{1}{2}} \blank[2*line]
+\Test{-6.55}{\frac{1}{\frac{1}{2}}}
+
+One side effect of these options is that at some point we need to choose a
+default and then easily forget about the other variants.
+
+\stopsection
+
\stopchapter
\stopcomponent