一份文件中的不同身高(回憶錄)

一份文件中的不同身高(回憶錄)

我正在處理一個應該包含兩個不同標題的文件。標頭是透過指定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}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}

相關內容