summaryrefslogtreecommitdiff
path: root/macros/mtex/documentation/mdoc5.tex
diff options
context:
space:
mode:
Diffstat (limited to 'macros/mtex/documentation/mdoc5.tex')
-rw-r--r--macros/mtex/documentation/mdoc5.tex1123
1 files changed, 1123 insertions, 0 deletions
diff --git a/macros/mtex/documentation/mdoc5.tex b/macros/mtex/documentation/mdoc5.tex
new file mode 100644
index 0000000000..2b64cd0ecd
--- /dev/null
+++ b/macros/mtex/documentation/mdoc5.tex
@@ -0,0 +1,1123 @@
+\heading{\TeX\ - Konzepte}
+In diesem Kapitel sollen die Konzepte von \TeX\ erl"autert werden, die
+die Grundlage f"ur das entwickelte Notensatzsystem sind. Dies ist im
+wesentlichen das Box-Glue-Konzept f"ur den Seitenaufbau, das f"ur die
+Konstruktion der Notenschriftelemente verwendet wurde, und der
+Zeilen- und Seitenumbruchalgorithmus.
+
+Alle anderen Konzepte (z.B. Definitionen von Makros und
+die Definition und
+Behandlung der internen Parameter) will ich als bekannt voraussetzen und
+f"ur Informationen dazu auf das \TeX book \lit{\Texbook}
+verweisen. Daf"ur seien die
+obigen Konzepte ausf"uhrlicher dargestellt.
+Das vorliegende Kapitel ist im wesentlichen eine Zusammenfassung der
+Kapitel~14 und~15 des \TeX book unter Ber"ucksichtigung des Artikels
+``Breaking Paragraphs Into Lines'' von D. E. Knuth und M. Plass
+\lit\Knuth. Dabei wurden die verwendeten Begriffe: Box, Glue, Penalty,
+Kern, Rule, Badness, Interline Glue und Interword Glue
+als Fachbegriffe "ubernommen und nicht "ubersetzt.
+
+\subheading{Basiselemente}
+Eine \TeX-Seite wird im wesentlichen aus zwei verschiedenen
+Basiselementen aufgebaut:
+$$\align &\hbox{1. Box,}\cr&\hbox{2. Glue.}\endalign$$
+
+Boxes k"onnen nebeneinander oder untereinander geheftet werden, wobei
+sie durch Glue verbunden werden.
+Die verschiedenen Formen, in denen Boxes und Glue auftreten k"onnen, und
+die Verfahren, wie sie aneinandergeheftet werden, sollen
+ Gegenstand dieses Abschnitts sein.
+
+\subsubheading{Die Box}
+Eine \defi{Box}
+ist ein zweidimensionales Gebilde von rechteckiger Gestalt, die
+durch das Tripel $(w,h,d)\in\rz^3 $ vollst"andig
+beschrieben ist. Dabei gibt $w$ die Breite, $h$ die H"ohe und $d$ die
+Tiefe an. Durch $h$ und $d$ ist die Grundlinie (\tex{baseline}) oder auch
+Schriftlinie der Box definiert. Der linke Endpunkt der Grundlinie ist
+als Referenzpunkt (\tex{reference point}) ausgezeichnet.
+\medskip
+{\eightpoint
+\setbox0=\hbox{$\uparrow$}
+\setbox1=\hbox to \wd0{$\hss\mid\hss$} % with luck, they'll line up
+\setbox2=\vbox{\copy0
+ \nointerlineskip \kern-.5pt \copy1
+ \nointerlineskip \kern-.5pt \copy1
+ \moveleft 1em\hbox{H"ohe}
+ \copy1 \nointerlineskip \kern-.5pt
+ \copy1 \nointerlineskip \kern-.5pt
+ \hbox{$\downarrow$}
+ \kern.2pt}
+\setbox3=\vbox{\kern.2pt\copy0
+ \moveleft 1em\hbox{Tiefe}
+ \hbox{$\downarrow$}
+ \kern0pt}
+\setbox4=\vtop{\kern-3pt % this cancels the null text above the samplebox
+ \hbox{\samplebox{\ht2}{\ht3}{6em}{}%
+ \kern-6em
+ \raise3pt\hbox to 6em{\hss Grundlinie\hss}}
+ \kern3pt
+ \arrows{6em}{Breite}}
+\medskip\indent\hskip30pt
+\setbox0=\hbox{$\vcenter{}$}% \ht0 is the axis height
+\lower\ht0\hbox{Referenzpunkt$-$\kern-.2em$\rightarrow$\kern2pt}%
+\raise\ht2\box4
+\kern1.5em
+\raise\ht2\vtop{\kern0pt\box2\nointerlineskip\box3}}
+\medskip
+
+\Beispiel
+Die Box wird zur Beschreibung der Schriftelemente verwendet, z.B.
+Buchstaben eines Zeichensatzes (\tex{characters}), aber auch Elemente,
+die aus
+mehreren Zeichen zusammen gesetzt sind, z.B. \`a oder eine mathematische
+Formel $\root n \of {x^n+y^n}$. \item{}
+Ein Spezialfall ist ein ausgef"ulltes
+Rechteck, eine sogenannte \defi{Rule}.
+\endBeispiel
+
+\Bemerkung
+F"ur alle Berechnungen werden nur die Werte von $w$, $h$ und $d$
+verwendet, unabh"angig von Inhalt der Box. Viele Zeichen sind z.B. so
+konstruiert, da\3 sie entweder die Box nicht ganz ausf"ullen oder
+"uber den Rand hinaus ragen, wie z.B. bei \tex{kursiver} Schrift.
+Wie sich sp"ater zeigen wird, ist dies eine n"utzliche Eigenschaft. Man
+kann Boxes konstruieren, die nichts zur horizontalen Berechnung
+beitragen und somit andere Zeichen "uberlappen.
+\endBemerkung
+
+Wie oben bemerkt, kann eine Box wiederum aus mehreren Elementen
+bestehen. Diese Elemente k"onnen wiederum Boxes, aber auch Glue sein.
+Man unterscheidet Boxes, deren Elemente horizontal aneinander gereiht
+werden, von solchen, deren Elemente vertikal untereinandergeheftet
+werden.
+
+\subsubheading{Der Glue}
+\defi{Glue}
+beschreibt das Ausschlu\3material, das Hilfsmaterial zum F"ullen
+der Zeilen. Glue mu\3 also wie der Ausschlu\3 beim Handsatz sowohl
+erweiterbar als auch verringerbar sein, um gleiche Zeilenl"angen zu
+erhalten. (F"ur die satztechnische Definition der Begriffe: Ausschlu\3,
+Erweiterung und Verringerung, verweise ich auf das Buch von F. Genzmer,
+``Das Buch des Setzers'' \lit{\genzmer}.)
+
+Glue wird durch das Tripel $(w,y,z)\in\rz^3 $ vollst"andig
+beschrieben. Dabei gibt die Gr"o\3e
+$w$ den nat"urlichen Abstand (\tex{natural
+space}) an, $y$ den Wert, um den der Abstand erweitert werden kann,
+und $z$ den Wert, um den der Abstand verk"urzt werden
+kann. D. E. Knuth und M. Plass \lit\Knuth\ beschreiben
+die ``variablen'' Gr"o\3en $y$ und $z$ mit ``\tex{strechability}'' und
+``\tex{shrinkability}''.
+F"ur das folgende Zeilenumbruchverfahren ist es wichtig, da\3
+die Gr"o\3en, die den Glue bestimmen, nach bestimmten Kriterien gew"ahlt
+werden. Da
+$w$ der Betrag ist, um den in horizontaler bzw. vertikaler Richtung
+vorger"uckt (falls $w>0$) bzw. zur"uckgesetzt wird (falls $w<0$),
+sollte dieser Wert
+so gew"ahlt werden, da\3 der Abstand zwischen den Boxes
+optisch gef"allig aussieht. Die ``variablen'' Gr"o\3en $y$ und $z$
+sollten so gew"ahlt werden, da\3
+beim Ausschlu\3 der Zeile der freie Raum $w+y$ bzw. $w+z$ noch akzeptabel
+ist. Es sei dabei betont, da\3
+$w$, $y$ und $z$ auch negative Werte annehmen k"onnen.
+\Bemerkung
+Dimensionen:\par
+\item{}
+Eine der leistungsf"ahigsten Eigenschaften des Glue-Konzeptes ist,
+Streck- und Stauchwerte verschiedener St"arke angeben zu
+k"onnen. Es gibt neben den gew"ohnlichen Dimensionsangaben, z.B. 10 \pt\
+(s.\lit{\Texbook, Kapitel 10}),
+ drei Ma\3einheiten, mit denen ``unbegrenzter'' Glue beschrieben werden
+kann. Diese werden in
+Einheiten von \fil, \fill\ und \filll\ angegeben.
+Im folgenden bezeichne \defi{Glue der Ordnung} $j\in\{0,\ldots,3\}
+$
+Glue, dessen Streck- bzw. Stauchwerte in Einheiten von
+\pt, \fil, \fill, oder \filll\ angegeben wurden. Glue der
+Ordnung 0 ist also ``begrenzter Glue''.
+\item{}Im folgenden Ausschlu\3verfahren (\the\chap.2\XX)
+wird die Wirkung der verschiedenen M"oglichkeiten, Glue anzugeben,
+noch n"aher betrachtet.
+\endBemerkung
+
+Ein Spezialfall von Glue ist \defi{Kern}. Darunter versteht man einen
+Freiraum, der nicht variabel ist. Er wird benutzt, um Zeichen zu einer
+Einheit zu verbinden, z.B. f"ur das \TeX-Logo, wobei die einzelnen
+Buchstaben T, E und X durch Kern ineinander geschoben sind.
+
+Die Einf"uhrung von Kern im Unterschied zu Glue ohne Streck- und
+Stauchwerte ist notwendig, um Glue, an dem eine
+Zeile oder Seite umgebrochen werden darf, von Freiraum zu unterscheiden,
+bei dem dies verboten ist. (Das \TeX-Logo kann nicht getrennt
+werden.)
+
+Ein weiterer Spezialfall f"ur Glue ist das Ausf"ullen von Leerraum mit
+Boxes \verbatimon(|\leaders|).
+Dabei wird die Box oder auch Rule so oft gesetzt, wie Glue
+daf"ur vorhanden ist. Dies wird z.B. beim Auf{}f"ullen einer Zeile mit
+Punkten benutzt \leaders\hbox to 5pt{\hss.\hss}\hfill.
+
+\subsubheading{Kontrollsequenzen im Zusammenhang mit Box und
+Glue}
+
+Im folgenden seien einige Kontrollsequenzen angegeben. (Die Angaben in
+eckigen Klammern ($\lit{ }$) bedeuten, da\3 diese Angabe optional ist.)
+\subsubsubheading{Box-Kontrollsequenzen}
+
+$\left \{{\hbox{\vo|\vbox|\voff}\atop\hbox{\vo|\vtop|\voff}}\right\}
+\hbox{\vo| to |\voff}\text{\<Dimensionsangabe>}\{\text
+{\<Material f"ur eine vertikale Liste>}\}$\par
+\indent\hbox{\vo|\hbox to |\voff}\<Dimensionsangabe>$\{$\<%
+Material f"ur eine horizontale Liste>$\}$\par
+\verbatimon\rm
+\indent\hbox{|\hrule |}$\lbrack$
+|width | \<Dimensionsangabe>$\rbrack$%
+$\lbrack$|height |\<Dimensionsangabe>$\rbrack$%
+$\lbrack$|depth |\<Dimensionsangabe>$\rbrack$%
+\par
+\indent\hbox{|\vrule |}$\lbrack$%
+|width |\<Dimensionsangabe>$\rbrack$%
+$\lbrack$|height |\<Dimensionsangabe>$\rbrack$%
+$\lbrack$|depth |\<Dimensionsangabe>$\rbrack$%
+\par
+\subsubsubheading{Glue-Kontrollsequenzen}
+
+\indent\hbox{|\vskip |}\<Dimensionsangabe>%
+$\lbrack$|plus |\<Dimensionsangabe>$\rbrack$%
+$\lbrack$|minus |\<Dimensionsangabe>$\rbrack$%
+\par\indent
+\hbox{|\hskip |}\<Dimensionsangabe>%
+$\lbrack$|plus |\<Dimensionsangabe>$\rbrack$%
+$\lbrack$|minus |\<Dimensionsangabe>$\rbrack$
+\par\indent
+\hbox{|\kern |}\<Dimensionsangabe>\par\indent
+\hbox{|\leaders |}\<Box oder Rule>\<Glueangabe>\par
+\verbatimon\rm
+
+\subsubheading{Anwendung f"ur den Notensatz}
+
+Da eine Box einen rechtwinkligen Umri\3 besitzt, k"onnen Boxes nur
+horizontaler und vertikaler Richtung aneinandergeheftet werden.
+Es besteht daher zun"achst keine M"oglichkeit,
+Linien in beliebiger Richtung zu setzen. Dies ist jedoch f"ur den
+Notensatz zur korrekten Darstellung der Balken notwendig.
+ Dieses Problem tritt bei allen
+pixel-orientierten Graphiksystemen auf.
+Mit dem \TeX-Konzept kann es gel"ost werden durch eine
+geeignete Zerlegung der Linie in mehrere Rules, die passend
+aneinandergeheftet werden.
+Das folgende Beispiel zeigt einen Balken, der gegen die
+Horizontale um 45 Grad geneigt ist, wobei die verwendeten Rules jeweils
+1\pt\ breit sind. Mit
+{\obeylines
+\begindisplay
+|\def\vr{\vrule width 1pt height 4pt depth 0pt}|\cr
+|\def\diag#1#2{\length=#1 \gradient=#2pt \m=0|\cr
+| \hbox{\loop\advance\length by -1 $\raise\m\gradient\hbox{\vr}$|\cr
+| \advance\m by 1|\cr
+| \ifnum\length>0 \repeat}|\cr
+\enddisplay
+}
+\def\vr{\vrule width 1pt height 4pt depth 0pt}
+\def\diag#1#2{\count1=0 \count2=#1 \dimen3=#2pt%
+ \hbox{\loop\advance\count2 by -1 $\raise\count1\dimen3\hbox{\vr}$%
+ \advance\count1 by 1
+ \ifnum\count2>0 \repeat}}
+
+ergibt |\diag{20}{1}| : \hskip20pt{\diag{20}{1}}
+
+Die Anwendung dieses Verfahrens f"ur den Notensatz
+ist jedoch
+sehr zeit- und speicherplatzintensiv, wenn eine hohe Aufl"osung erreicht
+werden soll, da auf einem Notenblatt eine gro\3e Anzahl solcher Balken
+zu setzen sind.
+Da \TeX\ selbst keine bessere L"osung dieses Problems bietet, wurden
+die notwendigen Balken``linien'' in einem Zeichensatz erzeugt (s. Kapitel
+{\advance\chap4 \the\chap}).
+\subheading{Verfahren zum Ausschlu\3 einer Box auf gew"unschte Breite
+bzw. H"ohe}
+\defi{Ausschlu\3} (\tex{setting the glue}) ist der Proze\3,
+Glue innerhalb
+einer Box so zu erweitern oder zu verringern, da\3 eine bestimmte
+Breite erreicht wird.
+
+Fa\3t man eine Zeile als horizontale Liste von Box- und
+Glue-Elementen auf, so bedeutet Zeilenausschlu\3 das Vergr"o\3ern oder
+Verkleinern der Glue-Elemente dieser Liste auf die gew"unschte
+Zeilenl"ange. Ebenso bedeutet Seitenausschlu\3 das Erweitern oder
+Verringern der Glue-Elemente einer Seite, die als vertikale Liste
+aufgefa\3t werden kann.
+
+\subsubheading{Ausschlu\3 einer horizontalen Box}
+Der Ausschlu\3 einer horizontalen Box
+(\hbox{\vo|\hbox|})
+erfolgt in drei Schritten:
+
+\item{1)}
+Bestimmung der nat"urlichen Breite $x\in\rz$ (\tex{natural width}) der
+Box und der zur Verf"ugung stehenden totalen Streck- und
+Stauchbarkeit $Y$ bzw. $Z$.
+
+\item{2)} Sei $\omega>0$ die gew"unschte Breite der Box. Dann wird der
+Proportionalit"atsfaktor $r$ (\tex{glue set}) bestimmt, der $x$ in
+$\omega$
+"uberf"uhrt, abh"angig von der Ordnung des Ausschlu\3materials $i$
+(\tex{glue set order}).
+
+\item{3)}
+Bestimmung der H"ohe und Tiefe der neuen Box und Festlegung ihres
+Referenzpunktes.
+\medskip
+Diese sollen im folgenden n"aher erl"autert werden.
+
+Seien $x_1,\ldots,x_m$ die Basiselemente der horizontalen Liste
+und $(w_1,y_1,z_1),\ldots ,(w_m,y_m,z_m)$ die zu\-ge\-h"o\-ri\-gen
+Tripel, wobei, falls ein $x_j, j\in \{1,\ldots,m\}$ eine Box oder Kern
+beschreibt, die Variablen $y_j$ und
+$z_j$ verschwinden. Dann erh"alt man die
+na\-t"ur\-liche Breite
+durch Aufsummieren aller na\-t"ur\-lichen Ab\-st"ande:
+$x=\sum_{j=1}^m w_j$.
+
+Die totale Streckbarkeit $Y$ bzw. Stauchbarkeit $Z$ ergibt sich
+ebenfalls durch Bilden von
+$Y=\sum_{j=1}^m y_j$ und $Z=\sum_{j=1}^m z_j$. Da die $y_i$ bzw $z_i$
+jeweils Werte verschiedener Ordnungen (im Sinne von \the\chap.1.2)
+darstellen,
+k"onnen diese
+Summen nach den jeweiligen Einheiten aufgespalten werden, d.h. in
+$$Y=Y_0+Y_1\fil+Y_2\fill+Y_3\filll$$
+und
+$$Z=Z_0+Z_1\fil+Z_2\fill+Z_3\filll\;,$$
+wobei $Y_k$ bzw. $Z_k$, $k\in\{0,\ldots,3\}$ Anzahl der Einheiten von
+Glue der Ordnung $k$
+ angeben. Dabei bezeichnet $k=0$ ``begrenzten''
+Glue (in Einheiten von z.B. \pt).
+
+Die \defi{Ordnung des Ausschlu\3materials}
+$i$ wird definiert als:
+$$i:=\cases 0\;,&\text{falls f"ur alle }k\in\{0,\ldots,3\}\text{ gilt: }
+ Y_k=0\\\max_{k\in\{0,\ldots.3\}}\{k,Y_k\ne0\}\;,&
+ \text{sonst}\endcases$$bzw.
+$$i:=\cases 0\;,&\text{falls f"ur alle }k\in\{0,\ldots,3\}\text{ gilt: }
+ Z_k=0\\\max_{k\in\{0,\ldots.3\}}\{k,Z_k\ne0\}\;,&
+ \text{sonst}\;.\endcases$$
+\medskip
+Der Proportionalit"atsfaktor $r$ berechnet sich wie folgt:
+\hfil\break
+Sei $\omega>0$ die gew"unschte Breite der Box.
+
+F"ur $x= \omega$ gilt: $r=0$ und jeder Glue erh"alt seinen
+nat"urlichen Abstand.
+
+F"ur $x< \omega$ ist eine Erweiterung erforderlich und es gilt:
+
+$$r= \cases (\omega -x)/Y_i,&\text{falls $i\ne0$,}\\
+ (\omega -x)/Y_0,&\text{falls $i=0$ und $Y_0\ne0$,}\\
+ 0, &\text{falls $i=0$ und $Y_0=0$.}\endcases$$
+
+F"ur $x> \omega$ ist ein Verringern erforderlich und es gilt:
+
+ $$r= \cases (x -\omega )/Z_i,&\text{falls $i\ne0$,}\\
+ (x -\omega )/Z_0,&\text{falls $i=0$ und $((x-\omega)\le Z_0
+ $,}\\
+0,&\text{falls $i=0$ und $Z_0=0$,}\\
+1,&\text{falls $i=0$ und $(x-\omega)>Z_0$.}\endcases$$
+\medskip
+Damit ergibt sich f"ur jeden Glue $(w,y,z)$ der horizontalen Liste mit
+einem Streckwert $y$ von $j$-ter Ordnung und einem
+Stauchwert $z$ von $k$-ter Ordnung die neue Breite
+\item{a)}bei Erweiterung: $\; w_{{\rm neu}}=\cases w+r\cdot y\;,&
+\text{f"ur $j=i$,}\\
+w\;,&\text{sonst,}\endcases$\par
+\item{b)}bei Verringerung: $w_{{\rm neu}}=\cases w-r\cdot z\;,&
+\text{falls $k=i$,}\\
+w\;,&\text{sonst.}\endcases$
+
+\Bemerkung
+\item{1)}Da die Glue-Elemente $w$, $y$, $z$ auch negative Werte annehmen
+k"onnen, ist es m"oglich, da\3 die Werte f"ur $Y$ und $Z$ auch negativ
+werden k"onnen. Dies soll jedoch ausgeschlossen sein, da $\omega$ nur
+positive Werte annimmt.
+\item{2)}Der Glue wird nur erweitert bzw. verringert, falls die
+zugeh"orige Ordnung des Glue der Ordnung des Ausschlu\3materials
+$i$ entspricht. Das Einf"ugen von Glue hoher Ordnung kann
+also eine Erweiterung oder Verringerung an anderen Stellen
+unterdr"ucken. Ebenso kann es vorkommen, da\3 Glue h"oherer Ordnung
+ausgel"oscht wird.
+\endBemerkung
+\medskip
+Alle Boxelemente werden so aneinandergereiht, da\3 ihre
+Referenzpunkte auf einer Horizontalen liegen. Die Grundlinie der neuen
+Box ist demnach die gemeinsame Grundlinie der inneren Elemente. Die
+H"ohe bzw. Tiefe der neuen Box ergibt sich als der Maximum der Tiefen
+bzw. H"ohen der eingeschlossenen
+Boxes. Eine horizontale Box
+kann demnach keine negative H"ohe bzw. Tiefe besitzen jedoch eine
+negative Breite.
+\Bemerkung
+Um bei der Eingabe von Texten nicht hinter jedem Wort eine
+Kontrollsequenz
+einf"ugen zu m"ussen, die den Zwischenraum zum n"achsten Wort angibt,
+wird das erste Leerzeichen hinter einem Wort als
+Glue interpretiert.
+(Gleiches kann mit \hbox{{|\|\tt\char`\ }} erreicht werden.)
+Der Wert des Glue richtet sich nach dem
+dem aktuell g"ultigen Zeichensatz (\defi{Interword Glue}).
+Jedem Zeichensatz ist ein solcher Glue zugeordnet.
+In einem Zeichensatz, der f"ur Textsatz verwendet wird,
+entspricht der nat"urliche Abstand
+der gew"unschten Breite eines Leerzeichens.
+Da bei mathematischen
+Formeln ein anderer Ausschlu\3 verwendet wird und einige
+mathematische Zeichen (z.B. gro\3e Klammern) aus mehreren Elementen der
+mathematischen Zeichens"atze zusammengesetzt werden, ist der
+{Interword
+Glue} in diesem Fall mit |0pt plus 0pt minus 0pt| vorbelegt.
+Der {Interword Glue} kann
+durch "Andern des Wertes des Parameters |\spaceskip|
+ver"andert werden.
+Verschwindet dieser Wert nicht, so wird der Wert
+dieses Parameters an Stelle des Glue des aktuellen Fonts eingef"ugt.
+Da im Notensatz der Glue abh"angig vom Notenwert der vorangegangenen
+Note gesetzt werden mu\3, ist dies eine M"oglichkeit, den Glue zwischen
+den Noten zu variieren.
+\endBemerkung
+\verbatimon
+\subsubheading{Beispiele und Anwendungen zum horizontalen Ausschlu\3}
+\item{1)}Im Notensatz ist es oft notwendig, die Breite eines
+oder mehrerer Zeichen zu ignorieren (z.B. f"ur die Oktavstellung von
+Versetzungszeichen (s. {\advance\chap3 \the\chap}.1),
+f"ur die Textunterlage ({\advance\chap5 \the\chap}.2) oder auch
+f"ur die Unterlage des Notenliniensystems).
+Dies ist eine einfache Anwendung des
+Ausschlu\3verfahrens. Man kann eine Box der Breite Null erzeugen, wobei
+der Boxinhalt links- oder rechts"uberlappend erscheint. Das Prinzip soll
+am mathematische Zeichen $\ne$ demonstriert werden. Es kann
+erzeugt werden durch die Eingabe
+\begindisplay
+|\hbox to 0pt{/\hskip0pt minus1fil}=|
+\enddisplay
+\item{}Durch den Glue der Ordnung 1 ist gen"ugend
+Stauchm"oglichkeit vorhanden. Das Zeichen |/| wird gesetzt, ohne jedoch
+in die horizontale Berechnung einzugehen. Es wird also rechts "uber den
+``Rand'' der Box hinausgeschoben. Anschlie\3end wird das
+Gleichheitszeichen gesetzt, und man erh"alt $\ne$.
+
+\item{}Umgekehrt kann das Ergebnis auch erreicht werden durch die Eingabe
+\begindisplay
+|/\hbox to 0pt{\hskip0pt minus1fil=}|
+\enddisplay
+\item{}
+In diesem Fall wird der Inhalt der Box "uber den linken ``Rand'' der
+Box hinausgeschoben.
+\item{2)} Die Zeichen |ab| k"onnen in einer Zeile zentriert werden durch
+die Eingabe
+\begindisplay
+|\hbox to\hsize{\hskip0pt plus1fil ab\hskip0pt plus1fil}|
+\enddisplay
+\item{}Man erh"alt
+
+\hbox to\hsize{\hskip\iindent\hskip0pt plus1fil \bf ab\hskip0pt plus1fil}
+\item{}
+Auf beiden Seiten der Zeichen befindet sich Glue der
+Ordnung 1. Die Box wird auf Zeilenbreite (|\hsize|)
+ausgeschlossen, indem der zur Verf"ugung stehende Raum zu gleichen
+Teilen vor |a| bzw. nach |b| aufgeteilt wird.
+Verwendet man
+\begindisplay
+|\hbox to\hsize{\hskip0pt plus2fil ab\hskip0pt plus1fil}|
+\enddisplay
+\item{}so erh"alt man\par\nobreak
+\hbox to\hsize{\hskip\iindent\hskip0pt plus2fil \bf ab\hskip0pt plus1fil}
+\item{}
+In diesem Fall wird der Glue im Verh"altnis 2:1 aufgeteilt. F"ugt man
+zwischen |a| und |b| Glue der Ordnung 2 ein durch die
+Eingabe
+\begindisplay
+\hskip-20pt|\hbox to\hsize{\hskip0pt plus2fil a\hskip0pt plus1fill
+b\hskip0pt plus1fil}|
+\enddisplay
+\item{}so erh"alt man:\par
+\hbox to\hsize{\hskip\iindent\hskip0pt plus2fil \bf a\hskip0pt plus1fill
+b\hskip0pt plus1fil}
+\item{}In diesem Fall werden also die Streckwerte der
+Ordnung 1
+unterdr"uckt und die Zeichen jeweils an den linken bzw. rechten
+Zeilenrand geschoben.
+Die Ausl"oschung von Glue h"oherer Ordnung sei mit dem folgenden Beispiel
+demonstriert. Die Eingabe
+\begindisplay
+\hskip-20pt|\hbox to\hsize{\hskip0pt plus1fill a\hskip0pt plus1fil
+b\hskip0pt plus-1fill}|
+\enddisplay
+\item{}ergibt
+
+\hbox to\hsize{\hskip\iindent\hskip0pt plus1fill \bf a\hskip0pt plus1fil
+b\hskip0pt plus-1fill}
+\item{3)} Als weiteres Beispiel sei ein spezielles Notensatzproblem
+angef"uhrt:
+\item{}
+Unabh"angig von der Umgebung, in der eine Note auftritt, soll
+die Breite der Noten
+immer auf gleiche Art in
+die horizontale Rechnung eingehen, d.h. gleich auch f"ur Noten mit und
+ohne Hilfslinien (dies sind
+kurze Notenlinien, die die Bestimmung der Tonh"ohe
+einer Note erleichtert, die nicht au\3erhalb des
+Liniensystems plaziert wurde)
+denn die Breite solcher Hilfslinien soll nicht
+ber"ucksichtigt werden.
+\verbatimon
+\item{}Die Hilfslinien sind (horizontal) zentriert den Noten zu
+unterlegen. Dies geschieht am einfachsten, indem man Note und Hilfslinien
+in je einer Box der Breite Null zentriert und diese zusammen zu einer
+Box der Breite |\nhw| ausschlie\3t.
+Mit
+\begindisplay
+|\hbox to\nhw{\hskip0pt plus1fil minus 1fil|\cr
+|\hbox to0pt{\hskip0pt minus1fil |\<Note>|\hskip0pt minus1fil}|\cr
+\hskip2\iindent
+|\hbox to0pt{\hskip0pt minus1fil |\<Hilfslinien>|\hskip0pt minus1fil}|\cr
+|\hskip0pt minus1fil}|
+\enddisplay
+\item{}erh"alt man z.B. \quad \v{14}\global\sk=0pt
+\subsubheading{Ausschlu\3 einer vertikalen Box}
+Der Ausschlu\3 einer vertikalen Box
+(\hbox{\vo |\vbox| oder |\vtop|})
+verl"auft "ahnlich wie bei der
+horizontalen Box, jedoch erfolgt die Aneinanderheftung nach einem
+komplizierteren Schema.
+
+Ist kein Glue angegeben, wird der Zeilenzwischenraum nach folgendem
+Verfahren berechnet:
+
+Um einen gleichm"a\3igen Ausschlu\3 zu erhalten, sollte der Abstand
+zwischen den Grundlinien m"oglichst gleich bleiben.
+
+Sei der gew"unschte Abstand der Grundlinien
+(\hbox{\vo|\baselineskip|\voff})
+zweier
+benachbarter Zeilen durch Glue der Form $b$ |plus| $y$ |minus| $z$
+(s. \the\chap.3.2)
+gegeben. Sei $l$ Glue (|\lineskip|),
+der eingef"ugt werden soll, falls der
+berechnete Zwischenraum den Wert $\bar l$
+(\hbox{\vo|\lineskiplimit|\voff}) unterschreitet. Weiter sei
+$d$ die Tiefe der oberen Box und $h$ die H"ohe der unteren Box.
+
+Dann ergibt sich f"ur den Glue, der zwischen den Boxes eingef"ugt wird
+(\defi{Interline Glue}):
+
+\item{1)} Falls $d\le-1000\pt$, wird kein {Interline Glue}
+eingef"ugt.
+\item{2)} Falls $d>1000\pt$ und $(b-d-h)\ge \bar l$,
+wird ein {Interline Glue} von $(b-d-h)$ |plus| $y$ |minus| $z$
+vor der unteren Box eingef"ugt.
+\item{3)}Gilt weder 1) noch 2), wird $l$ als {Interline Glue}
+eingef"ugt.
+\par
+\midinsert
+\medskip
+{\eightpoint
+\setbox0=\hbox{$\uparrow$}
+\setbox1=\hbox to \wd0{$\hss\mid\hss$} % with luck, they'll line up
+\setbox2=\vbox{\copy0
+ \nointerlineskip \kern-.5pt \copy1
+ \moveleft0em\hbox{$h$}%
+ \copy1 \nointerlineskip \kern-.5pt
+ \hbox{$\downarrow$}%
+ \kern.2pt}
+\setbox3=\vbox{\kern.2pt\copy0
+ \moveleft 0em\hbox{$d$}%
+ \hbox{$\downarrow$}%
+ \kern0pt}
+\setbox4=\vbox{\kern.2pt\copy0
+ \moveleft 1em\hbox{$(b-d-h)$}%
+ \hbox{$\downarrow$}%
+ \kern0pt}
+\setbox5=\vbox to 0pt{\vss\copy0
+ \nointerlineskip \kern-.5pt \copy1
+ \nointerlineskip \kern-.5pt \copy1
+ \nointerlineskip \kern-.5pt \copy1
+ \nointerlineskip \kern-.5pt \copy1
+ \nointerlineskip \kern-.5pt \copy1
+ \moveleft0em\hbox{$b$}
+ \copy1 \nointerlineskip \kern-.5pt
+ \copy1 \nointerlineskip \kern-.5pt
+ \copy1 \nointerlineskip \kern-.5pt
+ \copy1 \nointerlineskip \kern-.5pt
+ \hbox to \wd0{$\hss\vrule height4pt\hss$}\nointerlineskip \kern-.5pt
+ \hbox{$\downarrow$}%
+ \kern.2pt}
+\setbox6=\vtop{\kern-3pt % this cancels the null text above the samplebox
+ \hbox{\samplebox{\ht2}{\ht3}{6em}{}%
+ \kern-6em
+ \lower\ht3\hbox to 6em{\hskip1em \vtop{\copy3\nointerlineskip
+ \copy4}\hss}}%
+ \kern-3.4pt
+ \hbox{\samplebox{\ht2}{\ht3}{6em}{}%
+ \kern-6em
+ \hbox to 6em{\hbox to 0pt{\hss\box5\hskip1em}\hskip1em \copy2\hss}}%
+ }
+\hbox to \hsize{\hfil\box6\hfil}
+}
+\medskip
+\centerline{{\eightrm Skizze zum Verdeutlichen des Interline Glue
+(\the\chap.2.3) }}
+\endinsert
+\goodbreak
+\Bemerkung
+\item{1)}
+Vor oder hinter einer Rule wird dieser Algorithmus nicht angewendet.
+\item{2)}Dieses Verfahren wurde so konzipiert, da\3
+ zwischen den Zeilen
+immer ein Mindestabstand eingehalten wird,
+ falls der nat"urliche Abstand von $l$ gleich $\bar l$ ist.
+ Jedoch k"onnen durch
+Ver"andern der Parameter $b$, $l$, $\bar l$ auch andere Effekte erzielt
+werden, z.B. wird mit |\baselineskip -10000pt| |\lineskip 0pt| und
+|\lineskiplimit 0pt| kein {Interline Glue}
+zwischen den Zeilen eingef"ugt.
+%Dies wird durch die Kontrollsequenz |\offinterlineskip| erreicht.
+\endBemerkung
+\goodbreak
+
+Die vertikale Box wird nach folgendem Verfahren
+ausgeschlossen:\item{1)}Bestimmung der ``nat"urlichen H"ohe'', der Tiefe
+und Breite sowie des Referenzpunktes,
+\item{2)}Bestimmung des Proportionalfaktors $r$.
+\medskip
+Dazu werden die
+Elemente einer vertikalen Liste werden unter
+Einbeziehung des {Interline Glue}
+so untereinander geheftet, da\3 ihre
+Referenzpunkte auf einer Vertikalen liegen.
+
+{}Der neue Referenzpunkt ist, falls
+|\vbox| verwendet wurde, der
+Referenzpunkt der untersten inneren Box, bei |\vtop| der der obersten.
+
+{}Das genaue Verfahren zur Bestimmung des Referenzpunktes, der
+nat"urlichen H"ohe $h$ und Tiefe $d$ bei |\vbox| lautet:
+\item{I)} Enth"alt die Liste keine Box, gilt $d=0\pt$.
+\item{} Ebenso, falls das letzte Element keine Box ist.
+Der neue
+Referenzpunkt ist also in diesem Fall die linke untere Ecke der
+umfassenden Box.
+\item{}
+Ist das letzte Element eine Box mit Tiefe $\bar d$, gilt $d=\bar d $.
+\item{II)}
+Ist $d>\hbox{\vo|\boxmaxdepth|\voff}$, wobei dies die Tiefe
+ ist, die eine Box h"ochstens annehmen kann, gilt
+ $d:=\hbox{\vo|\boxmaxdepth|\voff}$.
+Dieser Paramter wurde eingef"uhrt, damit die Box der letzten Zeile
+vollst"andig auf der Seite erscheint.
+\item{}Der "Uberschu\3 wird in diesem Fall
+ zur nat"urlichen H"ohe addiert, was eine Verschiebung des
+Referenzpunktes nach unten bewirkt.
+\item{III)}Die Breite der neuen Box ist das Maximum des Abstandes
+einer eingeschlossenen Box rechts vom Referenzpunkt der neuen Box.
+Die Breite einer vertikalen Box ist also immer nicht-negativ.
+\medskip
+ Der Proportionalfaktor $r$ wird wie bei einer horizontalen Box berechnet
+in Abh"angigkeit von der Differenz nat"urlicher
+H"ohe $h$, die sich aus dem Maximalabstand der inneren Boxes
+oberhalb der Grundlinie zur Grundlinie ergibt,
+und gew"unschter H"ohe $\omega$
+und den zur Verf"ugung stehenden Dehn- und Stauchm"oglichkeiten.
+\medskip
+Das genaue Verfahren zur Bestimmung des Referenzpunktes, der
+nat"urlichen H"ohe $h$ und Tiefe $d$ bei \hbox{\vo|\vtop|\voff} lautet:
+\item{i)}Die Konstruktion und der Ausschlu\3 erfolgt wie in den Regeln
+f"ur \hbox{\vo|\vbox|\voff}.
+Dabei wird die nat"urliche H"ohe $\bar d $ und Tiefe $\bar h$ bestimmt.
+\item{ii)}F"ur die endg"ultige H"ohe $h$ gilt:
+$$h=\cases 0\pt\;,&
+\text{falls das 1. Listenelement keine Box ist,}\\
+\text{die H"ohe der obersten Box, }&\text{sonst.}\endcases$$
+\item{iii)}Der Referenzpunkt wird so verschoben, da\3 gilt:
+$d:= \bar h+\bar d-h$.
+
+\subsubheading{Beispiele und Anwendungen zum vertikalen Ausschlu\3}
+Im folgenden sollen die Unterschiede von |\vtop| und
+|\vbox| bei verschiedenen Anwendungen verdeutlicht werden.
+\item{1)}Als einfache Anwendung ergibt sich zun"achst der Aufbau des
+Liniensystems. Da nach Rules kein Interline Glue eingef"ugt wird, ergibt
+sich das Liniensystem durch f"unfmaliges Auf{}f"uhren einer Rule der
+L"ange der Zeilenbreite, die durch Kern voneinander getrennt sind:
+\begindisplay
+|\vbox{|\<Linie>\<Kern>\<Linie>\<Kern>\<Linie>\<Kern>\<Linie>\<Kern>%
+\<Linie>|}|
+\enddisplay
+\item{}
+Dies ergibt eine Box, deren Grundlinie die unterste Linie ist, ohne Tiefe
+und mit einer H"ohe vom F"unf{}fachen
+der Linienh"ohe und Vierfachen des Kern.
+W"urde man in diesem Beispiel |\vtop| verwenden, so erg"abe sich als
+Grundlinie die oberste Linie, wobei die H"ohe der Box die H"ohe der
+Linie betr"agt, und die Tiefe das Vierfache
+der Linienh"ohe und des Kerns. Dies wird zum Beispiel bei der
+Konstruktion der Hilfslinien unterhalb des Liniensystems ben"otigt.
+\item{2)}
+Das Ansetzen der F"ahnchen an den Notenhals:
+\item{}Da die Notenhalsl"angen variabel sind (s. Kapitel %\XX
+{\advance\chap3 \the\chap}), k"onnen
+die F"ahnchen nicht zusammen mit dem Notenhals als ein Zeichen in den
+Zeichensatz aufgenommen werden. Es gilt nun, eine Konstruktion zu finden,
+so da\3 die F"ahnchen am jeweiligen Notenhalsende positioniert werden.
+\item{}Dies kann f"ur den nach oben gestielten Hals durch eine
+|\vbox|-Konstruktion und f"ur den nach unten gestielten Hals durch eine
+|\vtop|-Konstruktion erreicht werden. Zu beachten ist, da\3 in beiden
+F"allen kein Interline Glue eingef"ugt werden darf.
+\begindisplay
+|\vbox to|\<Notenhalsl"ange>|{\hbox{}|\<F"ahnchen>%
+|\vskip0pt plus 1fil}|\cr
+|\vtop to|\<Notenhalsl"ange>|{\hbox{}\vskip0pt plus1fil|\<F"ahnchen>%
+|\hbox{}}|
+\enddisplay
+
+\hbox to\hsize{\hfill
+\leaders\hrule\hskip20pt\kern-5pt{\music\char\hex21}%
+\vrule height 16pt depth 0pt
+\vbox to16pt{\offinterlineskip\hbox{}\hbox{\music
+\char\hex29}\vss\hbox{}}%
+\leaders\hrule\hskip20pt\kern-3pt\vrule height 0pt
+depth16pt\vtop to 16pt{\offinterlineskip\hbox{}\vss\hbox{\music\char
+\hex2E}\hbox{}}{\music\char\hex21}\kern-5pt
+\leaders\hrule\hskip20pt \hfill}
+
+\item{}Nach den oben angegebenen Regeln f"ur den Ausschlu\3 der
+vertikalen Box ist also der Referenzpunkt die linke untere Ecke
+der umfassenden Box, die zu der H"ohe der aktuellen Notenhalsl"ange
+ausgeschlossen wurde, so da\3, unabh"angig von der H"ohe und Tiefe
+des F"ahnchens, der obere Rand des F"ahnchens mit dem oberen Rand der
+Box abschlie\3t. Umgekehrt ist dies im zweiten Fall. Diese Box erh"alt
+als Tiefe die Notenhalsl"ange, w"ahrend die H"ohe verschwindet. Der
+Referenzpunkt ist also die obere linke Ecke der Box.
+
+\item{3)}F"ur das genaue Ansetzen der Balken an den Notenhals ist es
+notwendig, die Box, in der der Balken zusammengesetzt wurde (s.
+\the\chap.1.4), so auszuschlie\3en, da\3 die H"ohe bzw. Tiefe des
+Balkens nicht in die
+vertikale Berechnung eingeht.
+Die Box, in der der Balken zusammengesetzt wurde, hat nach den obigen
+Regeln als Breite $w$ den (horizontalen) Abstand des ersten und letzten
+Notenhalses der zu verbalkenden Noten. Die H"ohe ergibt sich als Produkt
+der Steigung des Balkens mit $w$ zuz"uglich der
+Balkenst"arke. Die Tiefe betr"agt
+in diesem Fall gleich Null. F"ur die weitere Plazierung anderer
+Notenschriftelemente in der N"ahe
+einer solchen Box sind diese Ausma\3e hinderlich.
+Es reicht aus, den Balken so zu setzen, da\3 die H"ohe nicht in die
+Berechnungen eingeht. Dazu wird die Box noch einmal in einer vertikalen
+Box ausgeschlossen, so da\3 der Referenzpunkt der ``Balkenbox'' mit dem
+Ansatzpunkt des Balkens "ubereinstimmt und die Box keine H"ohe und keine
+Tiefe besitzt.
+Dies kann "ahnlich wie in den Beispielen
+zum horizontalen Ausschlu\3 durch Einf"ugen von Glue der
+Ordnung 1 erreicht werden.
+\item{}
+F"ur positive Steigungen wird dazu die
+|\vbox|-Konstruktion
+\begindisplay
+|\vbox to0pt{\vskip0pt minus1fil\diag{20}{1}\hbox{}}|,
+\enddisplay\item{}
+verwendet,
+w"ahrend f"ur negative Steigungen die
+|\vtop|-Konstruktion
+\begindisplay
+|\vtop to0pt{\hbox{}\diag{20}{1}\vskip0pt minus1fil}|
+\enddisplay
+benutzt wird. Der so gewonnene Ansatzpunkt soll in der folgenden Skizze
+verdeutlicht werden.
+\par\par\vskip30pt
+{\offinterlineskip
+\hbox to\hsize{\hfill \leaders\hrule\hskip20pt
+\hbox to0pt{\vbox to0pt{\vskip0pt minus1fil\diag{20}{1}\hbox{}}\hss}%
+\leaders\hrule\hskip20pt
+\hbox to0pt{\vtop to0pt{\hbox{}\diag{20}{-1}\vskip0pt minus1fil}\hss}%
+\leaders\hrule\hskip40pt\hfill}}
+\vskip20pt
+\item{}Weitere Beispiele im Zusammenhang findet man
+in den Notenbeispielen von Kapitel {\advance\chap4 \the\chap}
+und im Anhang A.
+
+\subheading{Der Zeilenumbruchalgorithmus}
+F"ur ein Textsatzsystem ist es notwendig, ein Verfahren bereitzustellen,
+das eine Folge von Schriftelemen\-ten, d.h. einen Absatz, in Zeilen
+einteilt, so da\3 ein gleich\-m"a\3iges Bild entsteht.
+Zu l"osen ist also das Optimierungsproblem:
+
+{\leftskip30pt \sl
+Finde eine Folge von Umbruchpunkten,
+so da\3 der gesamte Absatz ``m"oglichst gleichm"a\3ig'' umbrochen
+wird.\par}
+
+Ob ein Absatz (\tex{paragraph}) gut ausgeschlossen ist, wird nach drei
+Kriterien beurteilt:
+\item{$\bullet$}Ist ein Bruch der Zeile an \disp{dieser} Stelle geeignet?
+\item{}Dies ist ein lokales Kriterium. Es wird bewertet, ob zum Beispiel
+eine Formel ung"unstig getrennt wurde.
+\item{$\bullet$}Ist der Ausschlu\3 der Zeile angenehm?
+\item{}Dies ist ein globales Kriterum f"ur die Zeile. Bewertet wird, ob
+z.B. eine Zeile zu locker oder zu eng ausgeschlossen wurde.
+\item{$\bullet$}Gibt es gro\3e Unterschiede im Ausschlu\3 benachbarter
+Zeilen?
+\item{}Bewertet wird, ob z.B. eine Zeile eng ausgeschlossen wurde und
+die folgende sehr locker.
+
+Es ist also eine Bewertungsfunktion gesucht, die diese Kriterien
+ber"ucksichtigt, und das Optimierungsproblem wird durch Minimierung
+dieser Bewertungsfunktion gel"ost.
+
+\subsubheading{Die Penalty}
+D. E. Knuth f"uhrt ein weiteres Basiselement
+ein, das eine Bewertung nach dem ersten Kriterium er\-m"oglicht. Die
+\defi{Penalty} $p\in\rz$ beschreibt die ``"asthetischen Kosten'' f"ur
+einen Umbruch an einer Stelle. Kleine Penalty-Werte bedeuten dabei
+einen g"unstigen Umbruch, gro\3e einen ung"unstigen. \par
+F"ur
+$p\le-10\,000$ wird erzwungen, da\3 die Zeile an dieser Stelle
+gebrochen wird,
+w"ahrend $p\ge10\,000$ dies verhindert.
+
+Ein Spezialfall ist eine Penalty, der eine Breite $w$ zugeordnet ist.
+Diese wird im Falle eines Umbruchs ber"ucksichtigt. Mu\3 z.B. ein Wort
+getrennt werden, so ist $w$ die Breite des einzuf"ugenden
+Trennungsstriches `-'. Es ist also m"oglich, zwischen Text, der
+innerhalb einer Zeile gesetzt werden soll, und Text, der am Zeilenrand
+auftritt, zu unterscheiden und ihm eine andere Bewertung zuzuordnen.
+
+Das zugeh"orige Kommando lautet:
+\begindisplay
+\hbox{\vo|\discretionary{|\voff}\<pre-break text>|}|%
+|{|\<post-break text>|}{|\<no-break
+text>|}|\;,\enddisplay
+wobei die jeweiligen Textelemente vom Typ Box oder Kern sein m"ussen.
+Wird die Zeile and dieser Stelle gebrochen,
+wird der \tex{pre-break text} am Zeilenende und
+der \tex{post-break text} am neuen Zeilenanfang eingef"ugt. Ist dies
+nicht der Fall, so wird der \tex{no-break text} gesetzt. Der Wert der
+Penalty an einem \tex{discretionary}-Kommando ist der Wert des
+Parameters \hbox{\vo|\hyphenpenalty|\voff},
+falls ein \tex{pre-break text} angegeben wurde,
+ und der Wert des Parameters \hbox{\vo|\exhyphenpenalty|\voff}, falls der
+\tex{pre-break text} fehlt.
+\goodbreak
+\subsubheading{Vereinbarung}
+Im folgenden beschreibe die Folge \folg xn einen Absatz, wobei die
+\folgi xjn Basis-Elemente sind. Die Folge \folgi tjn gebe den Typ des
+jeweiligen Basis-Elementes an, d.h.
+$t_j=\tbox$, falls $x_j$ eine Box\footnote{$^*$}{\noindent\verbatimon
+F"ur die folgenden
+"Uberlegungen bezeichne \tbox\ alle nicht entfernbaren Elemente. Dazu
+geh"oren: Box-Elemente, wie sie in \XX\the\chap.1.1 beschrieben wurden,
+|\discretionary|-Komandos
+sowie |\special|-,
+|\mark|-, |\vadjust|-
+und
+|\insert|-Kommandos,
+die im \TeX-Book \lit{\Texbook} n"aher beschrieben
+sind.}
+ ist,
+$t_j=\tglue$, falls $x_j$ Glue ist,
+$t_j=\tkern$, falls $x_j$ Kern ist und
+$t_j=\tpenalty$, falls $x_j$ eine Penalty ist.
+\folg wn , \folg yn und \folg zn seien
+die jeweils zugeh"origen Attribute wie in \the\chap.1.2\XX, wobei
+$y_j=z_j=0$ f"ur $t_j=\tbox$ oder $t_j=\tkern$ oder $t_j=\tpenalty$.
+
+\subsubheading{Definition der Umbruchpunkte}
+Ein \defi{m"oglicher Umbruchpunkt} ist ein Index $e\in\{1,\ldots,n\}$,
+f"ur den eine der folgenden Bedingungen (I)--(IV) erf"ullt ist:
+
+\item{(I)} $t_e=\tglue$ und $t_{e-1}=\tbox$,
+\item{(II)} $t_e=\tkern$ und $t_{e+1}=\tglue$,
+\item{(III)} $t_e=\tpenalty$, wobei $w_e=0$,
+\item{(IV)} $x_e$ ist ein \tex{discretionary}-Kommando.
+
+Jedem Umbruchpunkt wird eine Penalty zugewiesen.
+Dabei ist f"ur die F"alle
+(I) und (II) $p_e=0$. F"ur (III) ist $p_e$ der Wert von $x_e$.
+Der Wert der Penalty von (IV) ist, wie oben erw"ahnt, der
+Wert von \hbox{\vo|\hypenpenalty|\voff}
+bzw. von \hbox{\vo|\exhyphenpenalty|\voff}.
+
+Nicht jeder Umbruchpunkt ist jedoch als Zeilenendpunkt geeignet,
+falls dadurch z.B. die
+Zeile zu locker oder zu eng ausgeschlossen werden m"u\3te. "Ubersteigt
+die Bewertung des Zeilenausschlusses (s. \the\chap.3.4\XX)
+eine bestimmte Toleranzgrenze (i.e. der
+Wert von \hbox{\vo|\tolerance|\voff}),
+so wird dieser Umbruchpunkt aus der Liste der
+m"oglichen Umbruchpunkte entfernt. Ein Punkt, dessen Bewertung kleiner
+als die Toleranzgrenze ausf"allt, hei\3t \defi{legaler Umbruchpunkt}.
+
+\subsubheading{Bewertung der G"ute des Zeilenausschlusses}
+Sei $r$ der zum Zeilenausschlu\3 geh"orige Proportionalfaktor
+(s. \the\chap.2.1\XX)
+mit der zugeh"origen Ordnung $i$ des Ausschlu\3materials
+der Zeile. Die G"ute des Zeilenausschlusses wird quantitativ durch die
+folgende Funktion ausgedr"uckt:
+$$\beta(r,i)=\cases 0,&i\ne0\,,\\\min(100\,r^3,10000),&i=0\,.\endcases$$
+D. E. Knuth bezeichnet den Wert $\bar\beta=\beta(r,i)$ als
+\defi{Badness} der Zeile.
+Diese Funktion ist heuristisch so festgelegt worden, da\3 sie f"ur
+kleine $r$ niedrige Werte liefert und f"ur gr"o\3ere $r$ schnell
+anw"achst.
+
+Mit dieser Funktion k"onnen nun die Zeilenausschl"usse klassifiziert
+werden:
+
+{\advance\iindent by 40pt
+\item{$\bar\beta>100$}
+Dieser Wert kann nur durch eine Erweiterung der Zeile
+ erreicht werden. In diesem Fall gilt $r>1$. Dies bedeutet eine
+Streckung um "uber 100\% der totalen Streckbarkeit.
+Eine solche Zeile wird als \disp{sehr locker} (\tex{very loose})
+klassifiziert.
+\item{$12.5<\bar\beta\le100$}In diesem Fall gilt $0.5\le r\le 1$.
+Es ist eine
+Streckung bzw. Stauchung um mindestes 50\% der totalen Steckbarkeit bzw.
+Stauchbarkeit notwendig.
+Die Zeile wird daher bei Erweiterung als \disp{locker}
+(\tex{loose}) und bei
+Verringerung als \disp{eng} (\tex{tight}) klassifiziert.
+\item{$0<\bar\beta\le12.5$} Es gilt $0\le r<0.5$ in beiden F"allen.
+Eine solche Zeile wird als \disp{%
+unauf\-f"allig} (\tex{decent}) klassifiziert.
+
+}
+Man erh"alt also vier Klassen: {sehr locker, locker, unauff"allig
+} und
+{eng}.
+Man definiert zwei aufeinanderfolgende Zeilen als
+\defi{optisch inkompatibel},
+wenn sie nicht in der gleichen und nicht in benachbarten Klassen liegen.
+\Bemerkung
+Die Festlegung der Bewertungsfunktion $\beta(r,i)$ und damit die
+Klassifizierung beruht auf der Annahme, da\3 die einzelnen
+Gluekomponenten wie in \the\chap.1.2
+gew"ahlt wurden, so da\3 im Fall $r=1$ der
+dadurch entstehende Freiraum noch akzeptabel ist. Bei Zeilenerweiterung
+ist $r>1$ zul"assig, aber unerw"unscht, so da\3 die Funktion in diesem
+Fall schnell hohe Werte annimmt.
+\endBemerkung
+
+\subsubheading{Bewertung der Zeilen}
+Eine Indexfolge
+ $b_1<\ldots<b_k$ legaler Umbruchpunkte eines Absatzes von
+$k$ Zeilen, so da\3
+%Folgenelement $b_j$ angenommen wird, da\3
+$x_{b_j}$ letztes Element
+der $j$-ten Zeile des Absatzes ist, hei\3t Zeilenendpunktfolge.
+
+\Bemerkung
+Jeder erzwungene Umbruchpunkt mu\3 in jeder solchen Folge enthalten
+sein. Es gilt immer $b_k=n$, denn beim Abschlie\3en einer horizontalen
+Liste wird das letzte Element, falls es
+Glue ist, entfernt. Gleichzeitig werden als weitere
+Elemente
+\begindisplay \verbatimon
+|\penalty10000\hskip\parfillskip\penalty-10000|\verbatimoff
+\enddisplay
+\verbatimon
+eingef"ugt. $x_n$ ist also immer eine Penalty, die erzwingt, da\3 die
+Zeile an dieser Stelle gebrochen wird.
+\endBemerkung
+
+Sei nun
+$b_1<\ldots<b_k$
+die Folge von Zeilenendpunkten. Dann ist
+dieser eine Indexfolge
+$a_1<\ldots<a_k$ f"ur Zeilenelemente $x_{a_j}$
+zugeordnet, die jeweils
+den Anfang der Zeile zu den jeweiligen Endpunkten markiert.
+Diese Punkte werden festgelegt, indem man die Zeile an den Umbruchpunkten
+$b_j$ teilt und zu Beginn jeder neuen Zeile alle Glue- und
+Penalty-Elemente entfernt. Der Zeilenanfangspunkt $a_{j+1}$ ist dann
+das erste Element f"ur das gilt $t_{a_{j+1}}=\tbox$.
+
+Genauer gilt: Sei $b_0=0 $. Ist
+$$I_j =\{b_{j-1}<i<b_j\mid t_i=\tbox \text{ oder }t_i=\tpenalty
+\text{ mit } p_i\ge-10000\}\;$$ aus allen Elementen der $j$-ten Zeile.
+Dann ist $$a_j= \cases b_j\;,&\text{falls }I_j =\emptyset\\
+ \min I_j\;,&\text{sonst.}\endcases$$
+Die $j$-te Zeile enth"alt dann also alle Elemente $x_i$ mit
+$a_j\le i \le b_j$ und $i=b_j$, falls $t_{b_j}=\tpenalty$.
+
+
+\Bemerkung
+Die legalen Umbruchpunkte werden im Verfahren
+ so gew"ahlt, da\3 normalerweise kein
+Glue am Zeilenende und am Zeilenanfang
+steht, es sei denn durch ausdr"uckliches Kommando. Glue am Zeilenende
+ist im Notensatz
+jedoch erforderlich f"ur den Fall eines Zeilenumbruchs in der Taktmitte,
+d.h. nach einer Note innerhalb des Taktes.\item{}
+Glue am Zeilenende erh"alt man, indem man den {%
+Interword Glue} ersetzt
+durch eine Glue-Penalty-Folge der Art:
+\begindisplay
+|\penalty10000\hskip|$w$|\penalty0|,
+\enddisplay
+\item{}
+wobei $w$ den zu setzenden Wert des Glue bezeichnet.
+\item{}
+Die Penalty 10000 unterdr"uckt, da\3 die Zeile an dieser Stelle gebrochen
+wird.
+Der Glue
+wird nicht in die Liste der m"oglichen Umbruchpunkte aufgenommen, da die
+Bedingung (I) nicht erf"ullt ist. Als Ausgleich wird die Penalty 0 in
+die Liste aufgenommen. Wird die Zeile an dieser Stelle gebrochen, so
+erscheint also Glue am Zeilenende.
+\item{}
+Glue am Zeilenanfang erh"alt man, indem man dem normalen
+{Interword Glue}
+die Box-Glue-Penalty-Folge
+\begindisplay
+|\penalty0\hskip|$-w$|\penalty10000\hskip|$w$
+\enddisplay
+\item{}
+hinzuf"ugt.
+\item{}
+Innerhalb der Zeile heben sich die Glues auf. Der einzige m"ogliche
+Umbruchpunkt in dieser Folge ist die erste Penalty. Wird die Zeile an
+dieser Stelle gebrochen, so wird der Glue bis zur Box entfernt, und es
+erscheint Glue am Zeilenanfang. Ein Fehlen der leeren Box w"urde also
+auch die Entfernung des zweiten Glues im Falle eines Zeilenbruchs an der
+ersten Penalty bewirken.
+\endBemerkung
+
+Mit diesen Voraussetzungen kann nun die Bewertung der einzelnen Zeilen
+erfolgen.
+
+Seien $\beta_j$ und $p_j$ die dem Zeilenendpunkt der $j$-ten Zeile
+zugeordnete Badness bzw. Penalty. Dann sind die sogenannten Kosten
+(\tex{demerits}) $d_j$ f"ur diese Zeile definiert durch:
+
+$$d_j=\cases (l_j+\beta_j)^2 + p_j^2\;,&\text{falls }0\le p_j<10000,\\
+ (l_j+\beta_j)^2 - p_j^2\;,&\text{falls }-10000< p_j<0,\\
+ (l_j+\beta_j)^2\;,\hfill &\text{falls }p_j\le-10000,\endcases$$
+wobei $l_j$ ein Parameter ist, der je nach Wert die Gesamtkosten
+erh"ohen oder senken kann. Dabei ist $l_j$ der aktuelle Wert von
+ \hbox{\vo|\linepenalty|\voff}.
+
+\Bemerkung
+Die Unstetigkeitsstelle der Funktion f"ur $p_j\le-10000$ ist aus
+programmiertechnischen Gr"unden eingef"ugt worden. Da in diesem Fall
+$\beta_j$ in jeder Zeilenendpunktfolge enthalten ist, tr"agt es auch
+nicht zur Minimierung der Bewertungsfunktion des gesamten
+Absatzes bei (s. \the\chap.3.8\XX).
+Es wird in diesem Fall also nicht zus"atzlich
+noch ein gro\3er Wert abgezogen, um einem arithmetischen "Uberlauf
+vorzubeugen.
+\endBemerkung
+
+Zus"atzlich werden zu $d_j$ noch Kosten in Abh"angigkeit von der
+Umgebung der Zeile addiert, und zwar:
+der Wert von \hbox{\vo|\adjdemerits|\voff}, falls die Zeilen
+ $j-1$ und $j$ inkompatibel sind,
+der Wert von {\vo|\doublehyphendemerits|\voff},
+falls sowohl $x_{b_{j-1}}$ als auch $x_{b_j}$ ein
+\tex{discretionary}-Kommando ist, und
+der Wert von {\vo|\finalhyphendemerits|\voff},
+falls $x_{b_{k-1}}$ ein \tex{discretionary}-Kommando ist.
+
+\subsubheading{Bewertung des Absatzes}
+
+Die Folge $b_1<\ldots<b_k$ von Umbruchpunkten, f"ur die
+$\sum_{j=1}^k d_j$ minimal ist (Minimum der Summe der Quadrate der
+Penalties und Badness jeder Zeile) wird als endg"ultige Folge
+ausgew"ahlt. Damit wird meistens auch
+$\max \beta_j$ minimiert,
+aber nicht notwendigerweise. Dies ist auch nicht
+erw"unscht, da mit der Methode der kleinsten Quadrate ein gleichm"a\3iger
+Ausschlu\3 des gesamten Absatzes erzielt werden soll.
+
+\subsubheading{Bemerkungen zum Zeilenumbruch
+ und zur Wahl von Parametern}
+
+\item{1)}Durch Ver"andern der Parameter k"onnen verschiedenen Effekte
+erzielt werden, z.B.:
+\itemitem{a)}F"ur normalen Textsatz wird man
+\hbox{\vo|\parfillskip 0pt plus 1fil|\voff} verwenden.
+Setzt man
+\hbox{\vo|\parfillskip 0pt|\voff}, so wird die letzte Zeile des
+Absatzes bis zum Ende ausgeschlossen, was f"ur den Notensatz
+erforderlich ist.
+Ist der Text nicht lang genug oder
+zu schmal, gibt es Schwierigkeiten, da zu wenig Streckm"oglichkeit
+vorhanden ist und nicht gen"ugend Umbruchpunkte zur Wahl stehen.
+\itemitem{b)}
+Durch Erh"ohen von \hbox{\vo|\adjdemerits|\voff} kann man verhindern,
+da\3 die Zeilen zu unterschiedlich ausgeschlossen werden.
+
+\item{2)} Der \TeX-Zeilenumbruchalgorithmus ist so konzipiert,
+da\3 nicht sofort bei
+der ersten Gelegenheit, sondern abh"angig von
+den benachbarten Zeilen umgebrochen wird. Der
+Algorithmus ist also in gewisser Weise voraus- bzw.
+zur"uckschauend.
+
+\subheading{Der Seitenumbruch}
+
+Ist die optimale Folge von Umbruchpunkten gefunden, werden die einzelnen
+Zeilen, verbunden durch {Interline Glue} (s. \the\chap.2.3\XX)
+an die aktuelle ``Seitenliste'' angef"ugt.
+
+Zus"atzlich wird vor jedem Glue eine Penalty
+eingef"ugt und danach vertikales Material,
+das aus
+der jeweiligen Zeile mit
+\hbox{\vo|\vadjust{|\voff}\<vertical list>|}| ausgelagert wurde
+in der Reihenfolge des Erscheinens (d.h. von links nach rechts).
+Dieses eingef"ugte vertikale Material beeinflu\3t also nicht den
+{Interline Glue}.
+
+\subsubheading{Die Seitenumbruchpunkte}
+Das Verfahren f"ur den Seitenumbruch ist dem
+Zeilenumbruchalgorithmus "ahnlich.
+
+Ein Seitenumbruch kann stattfinden
+\item{a)} vor Glue, dem unmittelbar eine Box
+der vertikalen Liste vorangeht,
+\item{b)} vor Kern, falls dieser unmittelbar von Glue gefolgt
+wird,
+\item{c)}an einer Penalty.
+
+\subsubheading{Die Bewertung des Seitenumbruchs}
+Eine Penalty $p\le-10000$ erzwingt somit einen Seitenumbruch.
+
+Jede Seite wird einzeln bearbeitet, d.h. es wird nicht wie beim
+Zeilenumbruch voraus- oder zu\-r"uck\-schauend gearbeitet,
+da dies zu viel Speicherungsaufwand erfordern w"urde.
+Zu jedem in
+Erw"agung gezogenen Seitenumbruchpunkt werden mittels einer
+Bewertungsfunktion die ``Kosten'' $c$ berechnet:
+$$c=\cases \beta\;, &\text{falls }\beta<\infty\text{ und }
+ p\le-10000\;,\\
+ \beta+p\;, &\text{falls }\beta<10000 \text{ und }-10000<p<10000
+ \;,\\
+ 100000,&\text{falls }\beta\ge10000\text{ und }-10000<p<10000
+ \;,\endcases$$
+wobei $\beta$ die Badness und $p$ die
+zugeordnete Penalty bezeichnet.
+Die {Badness} einer vertikalen Liste
+wird im wesentlichen genauso berechnet wie die der horizontalen Liste.
+
+Die Kosten werden an jedem legalen Umbruchpunkt berechnet, solange bis
+ein Umbruchpunkt gefunden wird, an dem das neuberechnete
+$c$ gr"o\3er ist als das zuvorberechnete. Dann wird die Seite am
+vorletzten Seitenumbruchpunkt umbrochen.
+Nach dem Seitenumbruch werden alle folgenden
+Glue-, Kern- und Penalty-Elemente der horizontalen
+Liste solange entfernt, bis ein Box-Element erscheint.
+Es kann also durch
+\hbox{\vo|\penalty-10000\penalty-10000|\voff} in der vertikalen
+Liste keine Leerseite erzeugt werden.
+
+\vfill\eject