|
Folgendes Problem wurde von einem Arbeitskollegen an mich herangetragen. Er benötigte für ein bestimmtes Kapitel seines Dokuments (zweiseitiger Satzspiegel!) etwas mehr Platz für seine Randnotizen (erzeugt mittels \marginpar). Folgende Abbildung schildert die Anforderung:

Das Kapitel auf den Seiten 3-6 sollte einen breiteren Rand (blau gekennzeichnet) erhalten, wobei die Kopf- und Fußzeilen sich weiterhin über die ganze Dokumentbreite erstrecken sollten. Dies ist im Allgemeinen nicht ganz einfach, da LaTeX eigentlich die Änderung des Satzspiegels im Verlauf des Dokuments nicht vorsieht. Mittels folgender Makrodefinitionen kann dies dennoch bewerkstelligt werden. (Dabei handelt es sich um einen »Workaround«, der sicherlich nicht in allen Umgebungen einwandfrei funktioniert.)
\newdimen\SpecialMarginWidth
\SpecialMarginWidth=.25\textwidth
\def\beginSpecialMargin{%
\pagestyle{marginheadings}
\hsize=\textwidth
\advance\hsize by-\SpecialMarginWidth
\columnwidth=\hsize
\marginparwidth=\SpecialMarginWidth
\advance\marginparwidth by-\marginparsep
\advance\evensidemargin by\SpecialMarginWidth
}
\def\endSpecialMargin{%
\hsize=\textwidth
\columnwidth=\hsize
\newpage
\advance\evensidemargin by-\SpecialMarginWidth
}
\def\ps@marginheadings{%
\let\@oddfoot\@empty\let\@evenfoot\@empty
\def\@evenhead{\hskip-\SpecialMarginWidth\hbox to\textwidth{%
\thepage\hfill\slshape\leftmark%
}\hfil}%
\def\@oddhead{\slshape\rightmark\hfil\thepage}%
\let\@mkboth\markboth
\def\chaptermark##1{%
\markboth {\MakeUppercase{%
\ifnum \c@secnumdepth >\m@ne
\if@mainmatter
\@chapapp\ \thechapter. \ %
\fi
\fi
##1}}{}}%
\def\sectionmark##1{%
\markright {\MakeUppercase{%
\ifnum \c@secnumdepth >\z@
\thesection. \ %
\fi
##1}}}}
|
Die Verwendung der Befehle dürfte recht intuitiv sein: \SpecialMarginWidth ist ein Längenregister zur Festlegung der Breite des blauen Randbereichs (inklusive \marginparsep). Mit \beginSpecialMargin wird der Anfang des Bereichs mit dem verbreiterten Rand festgelegt, mit \endSpecialMargin das Ende. D.h. innerhalb eines Dokuments könnte die Verwendung wie folgt aussehen:
\documentclass{book}
...
\pagestyle{myPage}
...
\begin{document}
\chapter{Ein Kapitel}
\beginSpecialMargin
...
reduzierter Bereich mit breiterem Rand
...
\endSpecialMargin
\chapter{Weiteres Kapitel}
\pagestyle{myPage}
...
\end{document}
|
Wichtig ist dabei die Reihenfolge der Befehle: Der beginSpecialMargin-Befehl muss nach dem chapter-Befehl erfolgen, da mittels \chapter eine neue Seite begonnen wird, und erst ab der sollen ja die breiteren Ränder wirksam sein. Würde \beginSpecialMargin davor stehen, würde die letzte Seite des vorhergehenden Kapitels bereits mit einem breiten Rand gesetzt werden. Das hängt damit zusammen, dass eine Seite von TeX eigentlich erst so richtig bei einem Seitenwechsel gesetzt wird und dabei die zu diesem Zeitpunkt gültigen Seitenränder, Kopf- und Fußzeile verwendet werden. Gleiches gilt auch für das zweite Auftreten von \pagestyle{myPage}, mit dem auf das ursprüngliche Seitenlayout (myPage; Definition der Kopf- und Fußzeile) zurückgeschaltet wird. Dieses Zurückschalten ist notwendig, da für den Teil mit den breiteren Rändern, auf ein anderes Layout (marginheadings definiert durch \ps@marginheadings) geschaltet werden muss, um die gleichbleibende Breite der Kopf- und Fußzeile zu garantieren. Dieser Teil in der obigen Markodefinition müsste dann auch entsprechend dem eigenen, bisher im Dokument verwendeten Layout (hier exemplarisch mit \ps@myPage bezeichnet) angepasst werden. Wichtig ist dabei der gelb hervorgehobene Teil (\hskip-\SpecialMarginWidth), mit dem die Kopfzeile – die Fußzeiledefinition erfolgt analog – zurechtgerückt wird.
Besonderheiten bei der Verwendung von fancyheadings
Bei der Verwendung des Paketes fancyheadings vereinfachen sich die Makros (Ergänzungen zur alten Lösung sind in blauer Schrift; die relevanten Änderungen an den beiden fancyheadings-Makros sind gelb hervorgehoben):
\def\beginSpecialMargin{%
\bgroup
\def\@evenhead{%
\hskip-\SpecialMarginWidth\hbox to\textwidth{%
\@fancyhead\@rodd\@elhead\@echead\@erhead\@lodd}\hfil}
\def\@evenfoot{%
\hskip-\SpecialMarginWidth\hbox to\textwidth{%
\@fancyfoot\@rodd\@elfoot\@ecfoot\@erfoot\@lodd}\hfil}
\hsize=\textwidth
\advance\hsize by-\SpecialMarginWidth
\columnwidth=\hsize
\marginparwidth=\SpecialMarginWidth
\advance\marginparwidth by-\marginparsep
\advance\evensidemargin by\SpecialMarginWidth
}
\def\endSpecialMargin{%
\hsize=\textwidth
\columnwidth=\hsize
\newpage
\advance\evensidemargin by-\SpecialMarginWidth
\egroup
}
|
Die Definition eines eigenen page style (\ps@marginheadings) und damit auch die Umstellung auf diesen entfällt komplett. Außerdem erübrigt sich das Zurückstellen im Dokument auf das eigene Seitenlayout myPage.
|