我正在處理一個應該包含兩個不同標題的文件。標頭是透過指定pagestyle
s 產生的。不幸的是,標題的高度差異很大,這使得標題內容周圍的間距看起來很糟糕。
如何更改headheight
包含不同標題的特定頁面?我製作了一個 MWE 來顯示有問題的版本,只有一個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}
澄清一下:我想要類似\setheadfoot{\baselineskip}{\footskip}
for 的東西pagestyle1
。
請注意,我正在使用memoir
這就是為什麼我沒有遵循此處給出的答案:一份文檔中的 \headheight 不同
編輯:
根據daleif的要求,我試著想像一個「現實世界的例子」。請參考下圖。圖像是標題的一部分,而標題下方的表格具有不同的高度。現在我只需要第一頁包含“特殊資訊”,因為其餘頁面與第二頁相同。
答案1
我將文檔頁面樣式設為預設值,並調整第一頁以符合您的需求。
下面的最小範例將第一頁上的文字向上移動進入標題,使得文字塊尺寸看起來不同。您可以調整一些長度以滿足您的需求:
\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}
如果第一個標頭構造比後續標頭更高/更大,則可以使用類似的技術;設定預設頁面樣式以符合文件的大部分內容,並使用正值調整第一頁以\vspace*
將文字向下推得足夠遠。您可能需要移除較大的標頭結構所佔用的垂直空間。
答案2
不完全是給定問題的解決方案,而是一種替代方案。這是使用遞歸\afterpage
在頁面頂部添加信息,直到我們告訴它停止。如果文本中沒有停頓,那麼最後會有一點微妙,但這只是一個例子。
\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}