+ All Categories
Home > Documents > TEX Praxis || Das Seitenlayout

TEX Praxis || Das Seitenlayout

Date post: 08-Dec-2016
Category:
Upload: silvio
View: 216 times
Download: 2 times
Share this document with a friend
15
7 Oas Seitenlayout 7.1 Seitenlayout in Plain-leX Plain-TEX formatiert eine Seite wie folgt: \headline 1 22.5pt Seite 1 \v'ize \footline 1 22.5pt \hsize Es setzt die Kopfzeile (genauer: den lebenden Kolumnentitel) und die FuBzeile folgen- dermaBen \headline={\hfil} \footline={\hfil\tenrm\folio\hfil} Beachten Sie die Syntax! \headline und \footline sind keine Makros, sondem Variable; sie werden mit einem Gleichheitszeichen = gefolgt von einer Gruppe in ge- schweiften Klammem gesetzt - anstatt mit \def. (Das Gleichheitszeichen ist optional.) Der \folio-Befehl generiert die Seitenzahl. Nach dem obigen Code ist also der Ko- lumnentitelleer, wohingegen die FuBzeile die Seitenzahl enthiilt - zentriert, in 10 Punkt Roman (durch \tenrm). R. Séroul et al., TEX Praxis © Birkhäuser Verlag 1998
Transcript

7 Oas Seitenlayout

7.1 Seitenlayout in Plain-leX Plain-TEX formatiert eine Seite wie folgt:

\headline 1 22.5pt

Seite 1 \v'ize

\footline 1 22.5pt

\hsize

Es setzt die Kopfzeile (genauer: den lebenden Kolumnentitel) und die FuBzeile folgen­dermaBen

\headline={\hfil} \footline={\hfil\tenrm\folio\hfil}

Beachten Sie die Syntax! \headline und \footline sind keine Makros, sondem Variable; sie werden mit einem Gleichheitszeichen = gefolgt von einer Gruppe in ge­schweiften Klammem gesetzt - anstatt mit \def. (Das Gleichheitszeichen ist optional.) Der \folio-Befehl generiert die Seitenzahl. Nach dem obigen Code ist also der Ko­lumnentitelleer, wohingegen die FuBzeile die Seitenzahl enthiilt - zentriert, in 10 Punkt Roman (durch \tenrm).

R. Séroul et al., TEX Praxis© Birkhäuser Verlag 1998

98 Kapitel 7. Oas Seitenlayout

Wenn Sie uberhaupt keine Seitenzahlen wollen, so beginnen Sie Ihr Dokument mit dem Befehl \nopagenumbers - eine Abkurzung fUr \footline={\hfil}. Urn die Sei­tenzahlen oben, anstatt unten auf der Seite zu erhalten, vertauschen Sie die Inhalte von \headline und \footline:

\headline={\hfil\tenrm\folio\hfil} \footline={\hfil}

Die Seitenzahl setzen Die Seitenzahl ist in der Variablen \pageno gespeichert und wird automatisch erhOht.

Solange Sie nichts anderes eingeben, wird die erste Seite mit 1 numeriert. Damit die erste Seite die Nummer 12 erhalt, mussen Sie Ihren Quelltext mit \pageno=12 beginnen.

Fur negative Werte von \pageno generiert \folio nach Konvention romische Ziffem, wie dies z. B. im Vorwort ublich ist. Wenn Sie die Seitenzahlen in romischen Ziffem haben wollen, mussen Sie \pageno auf die entsprechende negative Zahl setzen: \pageno=-12. (Sie mogen sich fragen, wie die nachste Seite numeriert wird. Keine Sorge, der Absolut­wert von \pageno wird erhoht.)

Wenn Sie also wollen, konnen Sie den \folio-Befehl andem. 1m Glossar steht eine Version, die groBe romische Ziffem setzt.

7.2 Ein anspruchsvolleres Seitenlayout Das von Tpc angebotene Layout ist sehr schlicht. Es unterscheidet weder zwischen

rechten und linken Seiten noch zwischen der ersten Seite (auf der im allgemeinen keine Seitenzahl stehen sollte) und den anderen. Aus diesem Grund listen wir hier einen Quell­code fUr ein anspruchsvolleres Layout auf, den Sie zum spateren Gebrauch in die Datei fancy. tex schreiben sollten. Die dadurch gewonnene Flexibilitiit lohnt den Aufwand.

\newif\iftitlepage \newtoks\titlepagehead \newtoks\titlepagefoot

\titlepagetrue \titlepagehead={\hfil} \titlepagefoot={\hfil}

\newtoks\runningauthor \runningauthor={\hfil} \newtoks\runningtitle \runningtitle={\hfil}

\newtoks\evenpagehead \newtoks\oddpagehead \evenpagehead={\hfil\the\runningauthor\hfil} \oddpagehead={\hfil\the\runningtitle\hfil}

\newtoks\evenpagefoot \evenpagefoot={\hfil\tenrm\folio\hfil} \newtoks\oddpagefoot \oddpagefoot={\hfil\tenrm\folio\hfil}

\headline={\iftitlepage\the\titlepagehead \else\ifodd\pageno\the\oddpagehead \else\the\evenpagehead\fi\fi}

\footline={\iftitlepage\the\titlepagefoot \global\titlepagefalse \else\ifodd\pageno\the\oddpagefoot

7.2 Ein anspruchsvolleres Seitenlayout 99

\else\the\evenpagefoot\fi\fi}

\def\nopagenumbers{\def\folio{\hfil}}

Nichts davon ist schwer verstandlich, vgl. Abschnitt 12.8 fUr die Details. Vielleicht ist der wichtigste erkUirungsbedurftige Befehl \ the: Er entspricht ungefahr dem write in Pascal oder dem print in Basic und gibt den Inhalt einer Variablen an die Ausgabe weiter.

Die \newtoks-Befehle stellen universell verwendbare Tpc-Speicher zur Verfugung. In dies en Speichem konnen Texte und Befehle bunt gemischt auftreten. Weiteres siehe Glossar.

Innerhalb dieses Kapitels werden wir voraussetzen, daB jedes Dokument mit dem Be­fehl

\input fancy

beginnt, der Tpc veranlaBt, die Definitionen aus dieser Datei zu lesen. Wir werden die Gesamtheit der Definitionen in dieser Datei das fancy-Format nennen.

Das Diagramm links stellt eine durch das fancy-Format bereitgestellte Titel-

\ ti tlepagehead seite dar. Das Diagramm unten zeigt ty-

\titlepagefoot

\evenpagehead

\evenpagefoot

Die Standardwerte

pische linke und rechte Seiten. Die Kon­trollsequenzen in den Diagrammen sind die Variablen, die die Kopf- und FuBzei­len der verschiedenen Seiten kontrollie-reno Sie konnen sie nach Belieben fUI­len; betrachten wir nun ihre vorgegebe­nen Werte.

\oddpagehead

\oddpagefoot

Solange Sie nichts Gegenteiliges eingeben, laBt das fancy-Format Kopf und FuB der Titelseite leer. Die anderen Seiten erhalten einen Kolumnentitel mit dem zentriert darge­stellten Inhalt des \runningauthor-Makros (fur gerade Seitenzahl) und (fUr ungerade Seitenzahlen) von \runningti tle. Sie konnen diesen Variablen entweder Autor und Ti­tel des Dokuments oder den Buchtitel und die Kapiteltiberschriften usw. zuweisen. Die Seitenzahl wird unten ausgedruckt, zentriert in 10 Punkt Roman. Wenn Sie am Anfang Ihres Quelltextes (nach \input fancy) die Befehle

100 Kapitel 7. Oas Seitenlayout

\runningauthor={\eightbf Raymond Chandler} \runningtitle={\eightbf Playback}

eingeben, werden die Seiten nach der Titelseite folgenderrnaBen aussehen:

Raymond Chandler Playback

2 3

Sie miissen immer die gewiinschten Fonts in die Kopf- und FuBzeilenvariablen eintra­gen, entweder unmittelbar im Makro-File oder - wie im obigen Beispiel- bei der Defi­nition der Variablen \runningauthor und \runningtitle. Der Grund ist, daB man nie im voraus weiB, in we1chem Zustand TP( ist, wenn es die Seite umbricht und die Kopf­und FuBzeile setzt. Wenn Sie den Font nicht explizit setzen, wird TP( den aktuellen Font nehmen mit Resultaten, die yom Amiisanten bis zum Katastrophalen reichen konnen.

Eigene Wahl

Wenn Sie wollen, daB die erste Seite keine Titelseite ist, vielleicht weil sie nur ein Kapitel eines Buchs ausgeben wollen, brauchen Sie nur \ ti telpagefalse nach \input fancy einzugeben.

Wenn Sie eine Dberschrift auf der Titelseite haben wollen, miissen Sie die Kopfzeilen­variable \ tit el pagehead setzen. Hier ist eine Moglichkeit:

R. Chandler: Playback \titlepagehead={\hfill \eightbf R. Chandler: Playback\hfill}

Eine iibliche Wahl fUr den lebenden Kolumnentitel (Kopfzeile) ist diese:

156 R. Chandler Playback 157

wobei die FuBzeile leer ist. Sie erhalten diesen Kopf durch

\evenpagehead={\tenbf\folio\hfill\eightrm\the\runningauthor} \oddpagehead={\tenrm\the\runningtitle\hfill\tenbf\folio} \evenpagefoot={\hfil} \oddpagefoot={\hfil} \runningauthor={R. Chandler} \runningtitle={Playback}

Die nachste Einstellung setzt die Seitenzahlen auf den Rand wie in The TJj{book, wobei die Kopfzeile erweitert wird.

7.3 Die Tite/seite 101

\evenpagehead={\llap{\tenbf\folio\quad}\eightit \the\runningauthor\hfill}

\oddpagehead={\hfill\eightit\the\runningtitle \rlap{\quad\tenbf\folio}}

Hier wird eine Linie unter der Kopfzeile gezogen:

\evenpagehead={\vbox{\line{\tenbf\folio \hfill\eightrm\the\runningauthor}\smallskip\hrule}}

\oddpagehead={\vbox{\line{\eightrm\the\runningtitle \hfill\tenbf\folio}\smallskip\hrule}}

Auch die FuBzeile kann variiert werden. Hier wird urn die am FuB zentriert plazierten Seitenzahlen rechts und links eine Linie gezogen.

\evenpagefoot={\hrulefill\quad\tenrm\folio\quad\hrulefill} \oddpagefoot=\evenpagefoot

7.3 Die Titelseite

U niversite Louis Pasteur Laboratoire de Typographie Informatique

Strasbourg, August 7, 1988

Ein neuer Laserdrucker-Treiber

Einen Kopf wie dies en zu setzen, ahnelt dem Problem eines Briefkopfes: Die Idee ist es, Zeilen zu stapeln, die selbst schon "Absatze" sind. Es folgt eine Alternative zu der Uisung, die wir in 6.4 gegeben haben; sie verwendet den \line-Befehl, der, wie wir in Abschnitt 5.3 sahen, eine tiber die ganze Seitenbreite reichende, horizontale Box erzeugt. Mit \line und Springs ist es einfach, das obige Layout zu erhalten:

\line{Universit\'e Louis Pasteur\hfill Strasbourg, \today} \line{Laboratoire de Typographie\hfill} \line{Informatique\hfill} \vskip 8pc plus lpc minus lpc \line{\hfill\helveticabf Ein neuer Laserdrucker-Treiber\hfill}

Diese Konstruktionen benotigt man so haufig, daB Plain-TE,X Abktirzungen fUr sie be­reitstellt:

• \centerline{ ... } steht fUr \line{\hfil ... \hfil} (eigentlich steht dort \hss fUr \hfil, aber der Unterschied ist hier nicht wichtig);

• \rightline{ ... } steht fUr \line{\hfil ... };

102 Kapitel 7. Das Seitenlayout

• \leftline{ ... } steht flir \line{ ... \hfil}.

Hier ist das Gegensttick zum Code, der am Ende des Abschnitts 6.4 angegeben wurde, geschrieben mit den Makros \rightline and \leftline:

\rightline{November 9, 1989} \leftline{Raymond Seroul} \leftline{UER de Math\'ematiques et d'Informatique} \leftline{7, rue Ren\'e Descartes} \leftline{67000 Strasbourg, France}

Mitten auf der Seite beginnen

Angenommen, Sie wollen Ihre erste Seite 5 Zentimeter unter dem oberen Rand mit einem Titel beginnen. Wenn Sie naiv

\vskip 5cm\centerline{EXDTISCHE SCHMETTERLINGE}

eingeben, werden Sie iiberrascht sein: TEX ignoriert \vskip einfach! Dieses gemeine Verhalten folgt aus den in Abschnitt 5.3 und 5.4 besprochenen Regeln und ist vollkom­men gerechtfertigt: TEX solI vertikalen Leerraum "zwischen den Seiten" auslassen, genau wie es Leerraum am Zeilenende ignoriert. Damit der \vskip-Befehl am Seitenanfang Wirkung zeitigt, mufJ ihm etwas vorausgehen. Man verwendet dazu oft eine leere Box, \hbox{} - der Trick ist so verbreitet, daB diese leere Box einen Namen hat: \null. So­mit konnen Sie mit

\null\vskip 5cm\centerline{EXDTISCHE SCHMETTERLINGE}

beginnen; es wird dann gelingen. Eine andere Moglichkeit ist es, \vskip durch den \vglue\! - oder \topglue-Befehl zu ersetzen, der, wie in Abschnitt 5.3 besprochen, Glue erzeugt, der nicht verschwinden kann. (Es zeigt sich, daB \vglue selbst ein Plain­TEX-Makro ist, das auf dem Trick der unsichtbaren Box beruht - die beiden Losungen sind also eigentlich gleich.)

7.4 Eine neue Seite beginnen und eine Seite leer lassen

Hier ist eine Variation der gleichen Idee: Angenommen, Sie haben eine Seite halb be­schrieben, und Sie wollen die andere Halfte leer lassen. Der Befehl \ej ect sagt TEX, daB es eine neue Seite beginnen solI. Aber wenn Sie \eject eingeben, wird die zweite Halfte nicht leer bleiben! Statt des sen wird der Glue zwischen den Zeilen und Absatzen gedehnt, so daB der Text nun die ganze Seite beansprucht. Urn dieses Verhalten abzustellen, miis­sen Sie die vertikale Spring \vfill vor \ej ect einfligen, die sich am unteren Ende breit macht.

Angenommen, Sie wollen eine Seite leer lassen, urn z. B. eine Grafik einzufiigen. Die naive Losung, ... \vfill \eject\vfill \eject, wird nicht funktionieren: Der Grund ist wieder ignorierter Glue. Wenn TEX das zweite \vfill \eject liest, ist es schon am Anfang einer Seite und ignoriert \vfill, so daB \eject unwirksam bleibt (\eject be­deutet im wesentlichen "hier ist ein vorgeschriebener Umbruch", so daB es keinen Effekt

7.6 Manueller Zeilen- und Seitenumbruch 103

hat, wenn an diesem Punkt schon ein Umbruch ist). Die richtige Lasung verwendet wieder eine leere Box:

... \vfill\eject\null\vfill\eject

7.5 Einen Titel plazieren

Weil Springs gleicher Starke den verfiigbaren Raum briiderlich teilen, kannen Sie einen Titel z. B. auf zwei Drittel der Hahe zwischen oberem Seitenrand und Beginn des Textes setzen:

MARCHEN

Es war einmal. ..

\null \vfill \vfill \centerline

{\bf M\"ARCHEN} \vfill Es war einmal ... \eject

Der \eject-Befehl ist notwendig urn anzuzeigen, wo die Seite endet; ansonsten wiirde TEX soviel Text wie maglich auf die Seite schreiben, und es wiirde kein Raum vorhanden sein, in dem sich die Springs ausdehnen kannten.

7.6 Manueller Zeilen- und Seitenumbruch 1st TEX im horizontalen Modus (in einem Absatz) und trifft auf einen \break-Befehl,

so wird die Zeile beendet. Aber TEX beginnt keinen neuen Absatz: Die nachste Zeile wird nicht eingeriickt, und es wird auch nicht der typische Glue fUr ein Absatzende, \parfillskip, eingefUgt. Als Ergebnis muB der Text am rechten Seitenrand enden, so daB der Glue im allgemeinen iiberdehnt wird. Aus diesem Grund sagt man besser \hfill \break stat! nur \break.

Weiter miissen Sie beachten, daB ... xyz\break und ... xyz \break nicht die glei­che Wirkung haben. 1m zweiten Fall wird das xyz folgende Leerzeichen am Ende der Zeile erscheinen.

1st TEX im vertikalen Modus (zwischen Absatzen) und trifft auf ein \break, so be­ginnt es eine neue Seite, genauso, als ob es ein \eject gesehen hatte. (Aber es gibt einen wichtigen Unterschied zwischen den beiden: \ej ect wird den Absatz beenden und die Seite umbrechen, selbst wenn es im horizontalen Modus ist.) Auch hier sollten Sie \vfill \break anstatt nur \break eingeben, wenn der Leerraum zwischen den Absat­zen zu sehr gedehnt wird.

104 Kapitel 7. Das Seitenlayout

7.7 Gleitobjekte (Floats) Angenommen, Sie wollen fiinf Zentimeter freilassen, urn spater eine Abbildung einzu­

fiigen. Geben Sie

\vskip 5cm\centerline{Abbildung 5}

ein und es sind nur noch zwei Zentimeter bis zum Ende der Seite frei, werden Sie die Bild­unterschrift Abbildung 5 am Anfang der nachsten Seite wiederfinden, ohne daB davor Leerraum gesetzt ist (warum?); auBerdem wird das Layout der aktuellen Seite schlimm aussehen, weil die Leerraume zwischen den Absatzen gedehnt wurden, urn die zwei Zen­timeter Leerraum zu fiillen. Falls Sie \vglue anstatt \vskip verwenden, wird zwar der benatigte Leerraum auf der neuen Seite eingefiigt, das Layout der vorangehenden bleibt aber schlecht. Hier ist die richtige Lasung:

\midinsert\vglue 5cm\centerline{Abbildung 5}\endinsert

Trifft TEX auf das Paar \midinsert ... \endinsert, so lagert es das Material zwi­schen den beiden Befehlen in einer Box. Wenn genug Platz auf der aktuellen Seite ist, also wenn die Hahe der Box kleiner als der noch zur Verfugung stehende Raum auf der Seite ist, schreibt TEX das Material sofort aus der Box und fahrt mit seiner Arbeit fort. Wenn aber zu wenig Platz vorhanden ist, hebt TEX das Material in der Box erst einmal auf, fahrt mit dem \endinsert folgenden Text fort, urn dann nach dem nachsten Sei­tenumbruch das Material aus der Box am Anfang der nachsten Seite zu setzen. Dieses wandemde Material stellt ein Gleitobjekt dar.

Beachten Sie, daB Sie auch in einem Gleitobjekt \vglue oder \null \vskip anstatt \vskip verwenden mussen, urn Platz am Seitenanfang zu reservieren; ansonsten wurde \ vski p am Anfang der nachsten Seite stehen und dort ignoriert werden.

Es gibt eine Variante zu \midinsert: das Paar \ topinsert ... \endinsert setzt den dazwischenliegenden Text entweder an den Anfang der aktuellen oder an den Anfang der folgenden Seite, je nachdem wieviel Platz noch auf der aktuellen Seite zur Verfugung steht.

7.8 Ein vollstandiges Beispiel

Hier ist der komplette Quelltext eines Manuskripts, das fiir eine Mathematikvorlesung an der Universitat von StraBburg verwendet wurde, zusammen mit dem entsprechenden TEX-Output. Sie werden viele Anweisungen zum Layout aus diesem Kapitel wiederer­kennen. Alle verwendeten Befehle sind im Glossar dokumentiert.

7.8 Ein vollstandiges Beispiel 105

\global\evenpagehead={\line{{\tenbf\folio}\quad \tenrm the\runningauthor\hfill}}

\global\oddpagehead={\line{\hfill\tenrm \the\runningtitle\quad\tenbf\folio}}

\runningauthor={N. Ikabruob} \runningtitle={Linear algebra over $\Z$}

\def\eps{\varepsilon} \def\Z{{\bf Z}} \def\R{{\bf R}} \def\Q{{\bf Q}} \def\qed{\vbox{\hrule\hbox{\vrule\kern3pt

\vbox{\kern6pt}\kern3pt\vrule}\hrule}}

{\parindent=Opt\obeylines Universit\'e Louis Pasteur \hfill March 28, 1989 UFR de Math\'ematiques et d'Informatique 7, rue Ren\'e Descartes 67000 Strasbourg, France}

\vfill % center title in available space \centerline{\bf Linear Algebra over $\Z$} \smallskip \centerline{N. Ikabruob} \vfill\eject

Universite Louis Pasteur March 28, 1989 UFR de Mathematiques et d'Informatique 7, rue Rene Descartes 67000 Strasbourg, France

Linear Algebra over Z

N.Ikabruob

106 Kapitel 7. Oas Seitenlayout

\noindent {\bf 1. Introduction}

\smallskip\noindent In classical linear algebra, one proves the following results:

\smallskip \item{(a)} every vector subspace of $\R-n$ has a finite number of generators;

\item{(b)} every subspace of $\R-n$ has a basis, and two bases have the same number of elements (its {\it dimension\/});

\item{(c)} if $\{e_1,\ldots,e_k\}$ is a set of generators for a subspace $M$, there is a subset of $\{e_1,\ldots,e_k\}$ that forms a basis for $M$;

\item{(d)} every set of linearly independent vectors can be completed into a basis of $\R-n$;

\item{(e)} one can pass from any of the following representations of a subspace to any other:

\smallskip \itemitem{---} representation by generators (or by a basis), \itemitem{---} representation by a system of equations, \itemitem{---} parametric representation.

2 N. Ikabruob

1. Introduction

In classical linear algebra, one proves the following results:

(a) every vector subspace of Rn has a finite number of generators; (b) every subspace of R n has a basis, and two bases have the same number of

elements (its dimension); (c) if {el' ... , ek} is a set of generators for a subspace M, there is a subset of

{el, ... , ek} that forms a basis for M; (d) every set of linearly independent vectors can be completed into a basis of R n;

(e) one can pass from any of the following representations of a subspace to any other:

- representation by generators (or by a basis), - representation by a system of equations, - parametric representation.

7.8 Ein vollstandiges Beispiel 107

\smallskip We will now examine the following problem: what happens to these results when $\R-n$ is replaced by $\Z-n$?

\medskip\noindent {\bf 2. Generalities}

\smallskip\noindent Before we can answer this question in more detail, we should familiarize ourselves with it and introduce certain notions that will be useful later.

{\it Generators:\/} we say that the set $\{x_l,\ldots,x_r\}$ generates the subgroup $M$ of $\Z-n$ if every element of $M$ is a linear combination of $x_l,\ldots,x_r$, with integer coefficients (positive or negative).

{\it Linear independence over $\Z$:\/} we say that the vectors $x_l,\ldots,x_r$ are linearly independent over $\Z$ if the equality $a_lx_l+\cdots+a_kx_k=O$, with $a_i\in\Z$, forces $a_l=\cdots=a_k=O$.

We notice right away that a set of vectors is linearly independent over $\Z$ if and only if it is over $\Q$. (Clear denominators!) This lets us talk about linear independence without specifying over what ring.

Linear algebra over Z 3

We will now examine the following problem: what happens to these results when Rn is replaced by zn?

2. Generalities

Before we can answer this question in more detail, we should familiarize ourselves with it and introduce certain notions that will be useful later.

Generators: we say that the set {Xl, ... , Xr } generates the subgroup M of zn if every element of M is a linear combination of Xl, ... , X r , with integer coefficients (positive or negative).

Linear independence over Z: we say that the vectors Xl, ... ,Xr are linearly independent over Z if the equality alxl + ... + akxk = 0, with ai E Z, forces al = ... = ak = o.

We notice right away that a set of vectors is linearly independent over Z if and only if it is over Q. (Clear denominators!) This lets us talk about linear independence without specifying over what ring.

108 Kapitel 7. Das Seitenlayout

{\it Bases:\/} we say that $\{\eps_1,\ldots,\eps_r\}$ is a basis for a subgroup $M$ of $\Z~n$ if it generates $M$ and $\eps_1,\ldots,\eps_r$ are linearly independent. For example, the canonical basis is a basis for $\Z~n$.

{\it Remark:\/} If $\{\eps_1,\ldots,\eps_r\}$ is a basis for a subgroup $M$ of $\Z~n$, it is also a basis for the vector subspace of $\Q~n$ generated by $M$. Thus two bases over $\Z$ have the same number of elements. We'll have a notion of dimension as soon as we establish the existence of one basis\dots

{\it A counterexample:\/} Items (c) and (d) in section 1 are no longer true. For consider the subgroup $M$ of $\Z~2$ generated by the vectors $$ \eps_1=(2,O),\quad\eps_2=(1,3),\quad\eps_3=(O,9). $$ These vectors the three are generate $M$!

are not linearly independent. linearly independent, but then Notice also that $M\neq\Z~2$.

Any two of they don't

{\it Unimodular matrices:\/} A unimodular matrix is an invertible matrix $A\in M(n,\break\Z)$ whose inverse also has integer coefficients.

4 N. Ikabruob

Bases: we say that {cl' ... ,cr} is a basis for a subgroup M of zn if it generates M and Cl, ... ,Cr are linearly independent. For example, the canonical basis is a basis for zn.

Remark: If {cl' ... , cr} is a basis for a subgroup M of zn, it is also a basis for the vector subspace of Qn generated by M. Thus two bases over Z have the same number of elements. We'll have a notion of dimension as soon as we establish the existence of one basis ...

A counterexample: Items (c) and (d) in section 1 are no longer true. For consider the subgroup M of Z2 generated by the vectors

Cl = (2,0), C2 = (1,3), C3 = (0,9).

These vectors are not linearly independent. Any two of the three are linearly independent, but then they don't generate M! Notice also that M 1= Z2.

Unimodular matrices: A unimodular matrix is an invertible matrix A E M(n, Z) whose inverse also has integer coefficients.

7.9 Strafpunkte oder: Zuckerbrot und Peitsche 109

\proclaim Theorem. If $A$ is an invertible square matrix with integer coefficients, $A-{-1}$ has integer coefficients if and only if $\det A=\pm 1$.

\smallskip\noindent {\it Proof:\/} we have $\det A \det A-{-1}=1$. If $A$ and $A-{-1}$ have integer coefficients, their determinant is also an integer. Thus $\det A=\pm 1$. Conversely, if $\det A=\pm 1$, we deduce that $A-{-1}$ also has integer coefficients, because it can be expressed as an integer multiple of the matrix of cofactors of $A$.% \enspace\qed

\smallskip Because of the preceding theorem, unimodular matrices form a {\it group\/} under matrix multiplication. We denote this group by ${\rm GL}(n,\Z)$.

\bye

Linear algebra over Z 5

Theorem. If A is an invertible square matrix with integer coefficients, A -1 has integer coefficients if and only if det A = ±1.

Proof: we have det A det A -1 = 1. If A and A -1 have integer coefficients, their determinant is also an integer. Thus det A = ±1. Conversely, if det A = ±1, we deduce that A -1 also has integer coefficients, because it can be expressed as an integer multiple of the matrix of cofactors of A. 0

Because of the preceding theorem, unimodular matrices form a group under matrix multiplication. We denote this group by GL(n, Z).

7.9 Strafpunkte oder: Zuckerbrot und Peitsche Dieser Abschnitt ist etwas technischer (aber nicht schwer zu verstehen). Uberspringen

Sie ihn beim ersten Lesen, und sehen Sie hier nach, wenn Sie Probleme mit dem Seiten­layout und dem Seitenumbruch haben.

TFC entscheidet sich zum Zeilen- oder Seitenumbruch, nachdem es viele Moglichkeiten durchgegangen ist: Es wahlt unter diesen Moglichkeiten auf Grund der Minuspunkte einer jeden Konfiguration aus. Diese Minuspunkte sind ein MaE fUr die Unansehnlichkeit jeder Konfiguration, und sie konnen vielen Quellen entstammen: Zeilen, die zuviel gedehnt oder gestaucht wurden, exzessive Silbentrennung, Schusterjungen oder Hurenkinder (die erste Zeile eines Absatzes ist letzte Zeile einer Seite bzw. die letzte Zeile eines Absatzes ist

110 Kapitel 7. Das Seitenlayout

erste Zeile einer neuen Seite) und so weiter. Sie konnen die Berechnung der Minuspunkte beeinftuBen und somit das Ergebnis des Zeilen- und Seitenumbruchprozesses, indem Sie den \penalty-Befehl verwenden.

Eine Strafe ist eine Zahl zwischen -10000 und 10000, die Sie an jeder Stelle, an der Sie einen Umbruch forcieren oder vermeiden wollen, plazieren konnen. Wenn TJY( die Minuspunkte flir irgend eine Konfiguration, die diese Stelle enthiilt, berechnet, wird es diese Strafe beriicksichtigen, d. h. die Minuspunkte erhohen, wenn die Strafe positiv ist, oder vermindem, wenn die Strafe negativ ist. Die Regeln dariiber, wie die Strafe in Be­rechnungen eingeht, sind komplex; hier ist, was Sie wissen miissen, urn voranzukommen:

• 1m wesentlichen wird TJY( Umbriiche nur an Glue (zwischen Wortem oder Absiitzen oder \hskip, \vskip etc.) oder bei \penalty in Betracht ziehen.

• Strafpunkte werden mit den Minuspunkten verrechnet, die zu einem Umbruch ge­horen, der dem \penalty-Befehlfolgt. Strafpunkte wirken nicht riickwiirts: Sie miissen sie vor einem Glue setzen, damit sie eine Wirkung haben.

• Eine Strafe von 10000 ist so hoch, daB der Umbruch ausgeschlossen ist; eine Strafe von -10000 zeigt eine so gute Umbruchsmoglichkeit an, daB TJY( hier immer umbricht.

Urn einen Umbruch an einer bestimmten Stelle zu erschweren, konnen Sie \penal ty 100 oder \penal ty 200 genau davor eingeben; dies macht in TJY('s Augen den Umbruch weniger attraktiv. Wenn Sie hingegen \penalty -100 eingeben, so fOrdem Sie einen Umbruch an dieser Stelle. Die Definition des nicht-brechbaren Leerraumes - besagt z. B. \penalty 10000. Wenn TJY( an dieser Stelle umbrechen will, muB es die Strafe von 10000 beriicksichtigen, die einfach zu hoch ist.

Hier sind die wichtigsten Befehle, die TJY( zur Verfiigung stellt, urn beim Seitenlayout zu helfen. Viele von ihnen sind nur eine Abktirzung fUr die eine oder andere Strafe und konnen sowohl im horizontalen Modus (fUr den Zeilenumbruch), als auch im vertikalen Modus (flir den Seitenumbruch) angewendet werden:

• \allowbreak steht flir \penal ty o. Es hat normalerweise keine Wirkung, wenn es vor Glue steht, da ein Umbruch dort sowieso erlaubt ist; aber es kann in Situationen, wo TJY( sonst keinen Umbruch in Betracht ziehen wtirde, sehr ntitzlich sein - z. B. innerhalb gewisser mathematischer Formeln.

• \nobreak steht flir \penalty 10000. Es verhindert definitiv einen Umbruch.

• \break steht fiir \penalty -10000. Es erzwingt einen Umbruch.

Weil die Wirkung der Befehle yom Modus abhiingen, konnen sie manchmal unerwar-tete Folgen zeigen. Ein hiiufiger Fehler ist es

... Modus (f\"ur den Seitenumbruch) angewendet werden: \nobreak\smallskip \meti{$\bullet$} ...

einzugeben, urn zu erzwingen, daB die Aufziihlung auf der Seite des vorhergehenden Ab­satzes beginnt. Das funktioniert nicht, weil \nobreak im horizontalen Modus gelesen wird, also einen Zeilenumbruch, nicht einen Seitenumbruch verhindert! (Was ist die Lo­sung?)

7.9 Strafpunkte oder: Zuckerbrot und Peitsche 111

Andere Befehle bringen TEX erst in den vertikalen Modus und setzen dann eine Strafe:

• \eject steht ftir \par\penalty -10000. Es beendet den aktuellen Absatz und erzwingt einen Seitenumbruch.

• \superej ect steht fUr \par\penalty -20000, ein Wert, der sonst nicht verwen­det wird. Es bricht nicht nur die Seite urn, es erzwingt auch, daB alle Gleitobjekte, FuB­noten etc., die im Speicher von TEX stehen k6nnen, ausgedruckt werden. Der Befehl ist am Ende eines Kapitels ntitzlich. In Plain-TEX ist \vfill \supereject im \bye-Makro integriert, welches der empfohlene Befehl zum Beenden eines TEX-Laufes ist.

• \goodbreak steht fUr \par\penalty -500. Es beendet den aktuellen Absatz und deutet an, daB dort eine gute Stelle fiir einen Seitenumbruch ist (aber nur, wenn die Seite schon ziemlich voll ist).

SchlieBlich gibt es noch Befehle, die (negative) Strafen mit vertikalem Leerraum kom­binieren. Sie sind in der Praxis sehr niitzlich:

• \filbreak steht fUr \par\vfil \penalty -200\vfilneg. Es besagt, daB dort eine gute Stelle fUr einen Seitenumbruch ist - selbst, wenn die Seite noch nicht gefiillt ist. Die Spring \ vfil wird dann den Rest der Seite ausfUUen. Wenn nicht umgebrochen wird, wird sie durch \vfilneg gelOscht und \filbreak hat keine Wirkung. (Dieses Makro soUte sparsam verwendet werden, wenn Sie es nach jedem Absatz verwenden, wird TEX keine Absatze mehr brechen; stattdessen wird es Leerraum am Ende jeder Seite lassen, auf der es keinen ganzen Absatz mehr einfUgen kann.)

• \bigbreak kombiniert ein \penalty -200 und einen bedingten Sprung \vskip 12pt plus 4pt minus 4pt. Das bedeutet, der Sprung wird dann ignoriert, wenn dem \bigbreak-Befehl ein Sprung von 12 pt oder mehr voranging. Geht eine Sprunganwei­sung von weniger als 12 pt voraus, so wird diese zugunsten von \bigbreak ignoriert. Insbesondere ist die Wirkung zweier hintereinander folgender \bigbreak gleich der Wir­kung eines einzigen.

• \medbreak und \smallbreak funktionieren genauso wie \bigbreak, aber die Strafen und der Sprungabstand werden halbiert bzw. geviertelt.

Natiirlich k6nnen Sie \penal ty auch mit einem Wert Ihrer Wahl direkt eingeben. Aber mit Zuckerbrot und Peitsche umzugehen, ist eine Kunst, die man nur allmahlich lernt, und zuerst werden die Ergebnisse Ihrer Versuche Ihnen Ratsel aufgeben. Hier sind einige Tips:

• Denken Sie daran, daB Strafen keine Wirkung auf Glue haben (weder horizontal noch vertikal), der vor ihnen steht. Insbesonders hilft ein \nobreak nicht, wenn Glue voransteht. (Manchmal kann man nicht mehr herausfinden, woher der Glue kommt: Er kann durch ein Makro hineingekommen sein. Versuchen Sie TEX's Meinung zu andern, indem Sie eine negative Strafe etwas h6her oder tiefer einsetzen.)

• Gehen Sie vorsichtig mit Strafpunkten urn. Strafen gehen in die Berechnung der Minuspunkte ein, nachdem sie quadriert wurden; ein \penal ty 500 hat also ein groBes Gewicht. Permanenter Gebrauch von hohen Strafen fUhrt zu unberechenbaren Ergebnis­sen, weil es die von TEX aufgebaute "Balance der Krafte" durcheinander bringt.


Recommended