1 つの文書 (回想録) 内の異なる頭の高さ

1 つの文書 (回想録) 内の異なる頭の高さ

2 つの異なるヘッダーを含むドキュメントを作成中です。ヘッダーはpagestyles を指定して生成されます。残念ながら、ヘッダーの高さが大きく異なるため、ヘッダー コンテンツの周囲のスペースが見栄えが悪くなります。

異なるヘッダーを含む特定のページの を変更するにはどうすればよいですか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}

関連情報