Ich arbeite an einem Dokument, das zwei verschiedene Überschriften enthalten soll. Die Überschriften werden durch die Angabe pagestyle
von s generiert. Leider haben die Überschriften sehr unterschiedliche Höhen, wodurch die Abstände um den Überschrifteninhalt herum unschön aussehen.
Wie ändere ich das headheight
für bestimmte Seiten, die eine andere Kopfzeile enthalten? Ich habe ein MWE erstellt, um die fehlerhafte Version mit nur einer anzuzeigen headheight
:
\documentclass[oneside]{memoir}
\usepackage{lipsum}
% Margin measures
\setulmarginsandblock{140pt}{\lowermargin}{*} % {upper margin}{lower margin}{ratio}
\setheadfoot{5\baselineskip}{\footskip} % {headheight}{footskip}
\setheaderspaces{72pt}{*}{*} % {headdrop}{headsep}{ratio}
\checkandfixthelayout[nearest]
% Header #1
\makepagestyle{pagestyle1}
\makeoddhead{pagestyle1}{}{Short header info}{}
\makeevenhead{pagestyle1}{}{Short header info}{}
% Header #2
\makepagestyle{pagestyle2}
\makeoddhead{pagestyle2}{}{Way\\way\\longer\\header\\info}{}
\makeevenhead{pagestyle2}{}{Way\\way\\longer\\header\\info}{}
\pagestyle{pagestyle2}
\begin{document}
\thispagestyle{pagestyle1}
\lipsum
\end{document}
Zur Klarstellung: Ich hätte gerne so etwas wie \setheadfoot{\baselineskip}{\footskip}
für pagestyle1
.
Beachten Sie, dass ich verwende, memoir
weshalb ich der hier gegebenen Antwort nicht folge:Unterschiedliche \headheight in einem Dokument
BEARBEITEN:
Wie von daleif gefordert, versuche ich, ein „Beispiel aus der Praxis“ zu visualisieren. Siehe das Bild unten. Das Bild ist Teil der Kopfzeile, während die Tabellen unter der Kopfzeile unterschiedliche Höhen haben. Im Moment muss die erste Seite nur „spezielle Informationen“ enthalten, da die restlichen Seiten mit Seite 2 identisch wären. Die obige Frage wurde gestellt, um das Problem/die Lösung zu verallgemeinern und so ein weniger „hackiges“ Dokument zu erhalten.
Antwort1
Ich würde den Dokumentseitenstil auf den Standard zurücksetzen und die erste Seite Ihren Bedürfnissen entsprechend anpassen.
Das folgende Minimalbeispiel verschiebt den Text auf der ersten Seite nach obenhineindie Kopfzeile, sodass es so aussieht, als ob die Textblockabmessungen unterschiedlich sind. Sie können einige der Längen nach Bedarf anpassen:
\documentclass[oneside]{memoir}
\usepackage{lipsum}
% Margin measures
\setulmarginsandblock{140pt}{\lowermargin}{*} % {upper margin}{lower margin}{ratio}
\setheadfoot{5\baselineskip}{\footskip} % {headheight}{footskip}
\setheaderspaces{72pt}{*}{*} % {headdrop}{headsep}{ratio}
\checkandfixthelayout[nearest]
% Header #1
\newcommand{\shortheadertext}{\begin{tabular}[t]{c} Short header \\ info \end{tabular}}
\makepagestyle{pagestyle1}
\makeoddhead{pagestyle1}{}{\vphantom{\longheadertext}\shortheadertext}{}
\makeevenhead{pagestyle1}{}{\vphantom{\longheadertext}\shortheadertext}{}
% Header #2
\newcommand{\longheadertext}{\begin{tabular}[t]{c} Way \\ way \\ longer \\ header \\ info \end{tabular}}
\makepagestyle{pagestyle2}
\makeoddhead{pagestyle2}{}{\longheadertext}{}
\makeevenhead{pagestyle2}{}{\longheadertext}{}
\pagestyle{pagestyle2}% Default page style
\AtBeginDocument{% First page is different
\thispagestyle{pagestyle1}% Uses a smaller header...
\vspace*{-4\baselineskip}% ...and moves the text up by 4 baselines
}
\begin{document}
\lipsum
\end{document}
Eine ähnliche Technik kann verwendet werden, wenn die erste Kopfzeile höher/größer als nachfolgende Kopfzeilen ist. Stellen Sie den Standardseitenstil so ein, dass er zum Großteil Ihres Dokuments passt, und passen Sie die erste Seite mit einem positiven Wert an, \vspace*
um den Text weit genug nach unten zu drücken. Möglicherweise müssen Sie den vertikalen Platz entfernen, der von der größeren Kopfzeilenkonstruktion eingenommen wird.
Antwort2
Keine wirkliche Lösung für die gestellte Frage, aber eine Alternative. Dabei wird rekursiv gearbeitet, \afterpage
um Informationen oben auf der Seite hinzuzufügen, bis wir sagen, dass es aufhören soll. Ganz am Ende gibt es eine kleine Feinheit, wenn im Text kein Ende steht, aber das ist nur ein Beispiel.
\documentclass[a4paper,oneside]{memoir}
\usepackage{afterpage,kantlipsum,etoolbox}
\newcommand\LongInfo{
\begin{center}
\rule{5cm}{5cm}
\bigskip
\begin{tabular}{ll}
Text & Text \\
Text & Text \\
Text & Text \\
Text & Text
\end{tabular}
\end{center}
}
\newcommand\ShortInfo{
\begin{center}
\rule{5cm}{5cm}
\begin{tabular}{ll}
Text & Text
\end{tabular}
\end{center}
}
\newtoggle{FIRST}
\toggletrue{FIRST}
\newcommand\RunSmallInfo{
\ifdef\STOP{}{
\iftoggle{FIRST}{
\global\togglefalse{FIRST}
}{
\ShortInfo
}
\afterpage{
\RunSmallInfo
}
}
}
\AtEndDocument{\def\STOP}
\begin{document}
\LongInfo
\RunSmallInfo
\kant[1-15]
STOP
\def\STOP{}
\kant[1-15]
\end{document}