一个文档中的不同页眉高度(回忆录)

一个文档中的不同页眉高度(回忆录)

我正在处理一个应该包含两个不同页眉的文档。页眉是通过指定pagestyles 生成的。不幸的是,页眉的高度相差很大,这使得页眉内容周围的间距看起来很糟糕。

如何更改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}东西pagestyle1

请注意,我正在使用,memoir这就是为什么我没有遵循这里给出的答案:一个文档中不同的 \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}

相关内容