한 문서(회고록)의 머리 높이가 다릅니다.

한 문서(회고록)의 머리 높이가 다릅니다.

두 개의 서로 다른 헤더를 포함해야 하는 문서를 작업 중입니다. 헤더는 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의 요청에 따라 "실제 사례"를 시각화하려고 합니다. 아래 이미지를 참조하세요. 이미지는 헤더의 일부이지만 헤더 아래의 표 형식은 높이가 다릅니다. 지금은 "특별 정보"를 포함하는 첫 번째 페이지만 필요합니다. 나머지 페이지는 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}

관련 정보