Разные высоты головы в одном документе (мемуары)

Разные высоты головы в одном документе (мемуары)

Я работаю над документом, который должен содержать два разных заголовка. Заголовки генерируются путем указания 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}

Связанный контент