두 개의 서로 다른 헤더를 포함해야 하는 문서를 작업 중입니다. 헤더는 pagestyle
s를 지정하여 생성됩니다. 안타깝게도 헤더의 높이가 크게 다르기 때문에 헤더 콘텐츠 주변의 간격이 보기 좋지 않습니다.
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}