2 つの異なるヘッダーを含むドキュメントを作成中です。ヘッダーはpagestyle
s を指定して生成されます。残念ながら、ヘッダーの高さが大きく異なるため、ヘッダー コンテンツの周囲のスペースが見栄えが悪くなります。
異なるヘッダーを含む特定のページの を変更するにはどうすればよいですかheadheight
? 1 つだけの障害のあるバージョンを表示する 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}
明確にするために:のようなものを希望しますpagestyle1
。
私が使用しているのは、memoir
ここに示した回答に従っていない理由です:1 つのドキュメント内で異なる \headheight
編集:
daleif のリクエストに応じて、「現実世界の例」を視覚化しようとしています。下の画像を参照してください。画像はヘッダーの一部ですが、ヘッダーの下の表は高さが異なります。現時点では、残りのページは 2 ページ目と同じなので、最初のページにのみ「特別な情報」を含める必要があります。上記の質問は、問題/ソリューションを一般化し、より「ハック」の少ないドキュメントを取得するために行われます。
答え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}