![第一页和后续页的偶数和奇数页有不同的页眉](https://linux22.com/image/444547/%E7%AC%AC%E4%B8%80%E9%A1%B5%E5%92%8C%E5%90%8E%E7%BB%AD%E9%A1%B5%E7%9A%84%E5%81%B6%E6%95%B0%E5%92%8C%E5%A5%87%E6%95%B0%E9%A1%B5%E6%9C%89%E4%B8%8D%E5%90%8C%E7%9A%84%E9%A1%B5%E7%9C%89.png)
我想要实现的是在第一页上使用(相当高的)页眉,并在后续页面中使用不同高度的偶数和奇数交替页眉。
我尝试了 Werner 的解决方案这页,但我遇到的问题是,正如我所说,后续页眉在偶数页和奇数页中的高度不同。这是我的文档,虽然它并不是非常简约
\documentclass[11pt,a4paper,twoside]{article}
\usepackage[ngerman]{babel}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{xcolor}
\usepackage{xltabular,multirow}
\usepackage{graphicx}
\usepackage{siunitx}
\usepackage{fancyhdr}
\usepackage{lastpage}
\usepackage[bottom]{footmisc}
\usepackage{blindtext}
\usepackage[left=2.00cm, right=3.00cm, top=2cm, bottom=2.0cm, headsep=1.50cm]{geometry} % Tried with other bottom margins. The footer disappears at the bottom of the page.
\usepackage{hyperref}
\hypersetup{
colorlinks=true,
linkcolor={red!60!black},
citecolor={blue!50!black},
urlcolor={blue!80!black},
}
\fancyhf{}
\sisetup{output-decimal-marker={,},group-minimum-digits=4}
% Header for first page
\fancypagestyle{ersteabph}{
\fancyhf{}% Clear header/footer
\renewcommand{\headrulewidth}{0pt}% Remove header rule
\setlength{\headheight}{160pt}
\fancyhead[C]{\begin{xltabular}{\textwidth}{p{9cm} p{8mm} X}
\raisebox{-\height}[0pt][0pt]{\textbf{{\Large Mybeautifulschool}}} & & \raisebox{-\height}[0pt][0pt]{\textbf{\Large Arbeitsblatt Physik}}\newline \raisebox{-\height}[0pt][0pt]{\textbf{\Large Elektrisches Feld}}\\
Name: & & GPH1\\
Datum: & & Seite \thepage/\pageref{LastPage}
\end{xltabular}\rule{\linewidth}{.4pt}
}
}
% Header for subsequent pages
\fancypagestyle{abph}{
\fancyhf{}
\setlength{\headheight}{120pt}
\renewcommand{\headrulewidth}{0pt}
\fancyhead[CO]{\begin{xltabular}{\linewidth}{p{9cm} p{8mm} X}
\raisebox{-\height}[0pt][0pt]{\textbf{{\Large Mybeautifulschool}}} & & \raisebox{-\height}[0pt][0pt]{\textbf{\Large Arbeitsblatt Physik}}\newline \raisebox{-\height}[0pt][0pt]{\textbf{\Large Elektrisches Feld}}\\
& & Seite \thepage/\pageref{LastPage}
\end{xltabular}}
\fancyhead[RE]{\raisebox{-\height}[0pt][0pt]{\thepage/\pageref{LastPage}}}
}
\pagestyle{abph}
\setlength{\parindent}{0pt}
\renewcommand{\arraystretch}{2.50}
\author{Myself}
\begin{document}
%\vspace*{3cm}
\section*{Versuch: die Energie des Kondensators.}
\thispagestyle{ersteabph}
\begin{minipage}[b]{0.5\textwidth}
\includegraphics[width=0.98\linewidth]{example-image-a}
\end{minipage}\hspace{0.1cm}%
\begin{minipage}[b]{0.5\textwidth}
\includegraphics[width=0.98\linewidth]{example-image-b}
\end{minipage}
\section*{Versuchsbeschreibung}
In diesem Versuch wollen wir die Abhängigkeit der in einem Kondensator gespeicherten Energie von der Spannung und von der Kapazität untersuchen. Dafür laden wir einen Kondensator zu einer gewissen Spannung und lassen ihn auf einem elektrischen Motor entladen. Am Motor hängt ein Gewicht mit gegebener Masse $m$. Der Motor kommt zum Laufen und hebt das Gewicht zu einer gewissen Höhe $h$. Die potentielle Energie $E_{\mathrm{pot}}$, die das Gewicht beim Anheben gewinnt, ist zur gespeicherten Energie im Kondensator proportional.\\
Der Versuch besteht aus zwei Teilen: zuerst wird ein Kondensator auf verschiedene Spannungen geladen. Die angegebene Spannung und die durch das Gewicht erreichte Höhe werden in eine Tabelle eingetragen. Dann werden Kondensatoren unterschiedlicher Kapazitäten auf die gleiche Spannung geladen und wir notieren wieder in eine Tabelle die Kapazität und die erreichte Höhe.\\
Beim Versuch ist auf folgendes zu achten:
\begin{itemize}
\item Der Motor hat leider keine Bremse, sodass das Gewicht wieder nach unten kommt, wenn es nicht angehalten wird. Warte, bis das Gewicht die maximale Höhe erreicht und halte es dann an dieser Stelle, sodass die Höhenmessung durchgeführt werden kann.
\item Beim ersten Teil wählen wir einen Kondensator mit Kapazität \SI{10}{\milli\farad} und die Ladespannungen \qtylist{4;6;8;10}{V}. Überschreitet bitte nicht die Spannung \SI{10}{V}, da sonst das Gewicht zu hoch kommt und am Ösen klemmt (außerdem würde das Ergebnis dadurch gefälscht).
\item Beim zweiten Teil wählen wir Kondensatoren mit Kapazität \qtylist{4.7;5;6.7;10}{\milli\farad} und die Spannung von \SI{9}{V}. Auch diese Werte wurden so gewählt, dass die Messdaten eine gute Auswertung ermöglichen.
\end{itemize}
\Blindtext[3][3]
\section*{Durchführung}
\end{document}
我还尝试过不添加\setlength{\headheight}
(警告建议的),但\vspace*{}
按照链接问题中 Werner 的回答将 留在文档开头。但是,该解决方案存在一个问题,即奇数页的页眉太高,最终会落在文本中。我不能继续添加\vspace*{}
s,因为我不知道页面在哪里结束(或者至少这样做不太优雅)。
我尝试的另一种方法是使用 解决方案\usepackage[pagestyles]{titlesec}
,但这也不起作用(如果您愿意,我可以粘贴我的不太简单的例子)。
基本上来说:
- 如果我添加
\setlength{\headheight}
,我会遇到顶部边距看起来不完全一样且底部边距不正确的问题。 - 如果我使用
\vspace*{}
s,那么底部边距是正确的,但我必须手动插入它,并且在每次在文本中添加或删除某些内容时更改它(除非有我不知道的自动化方法可以做到这一点)。
xltabular
如果有另一种简单的方法可以正确对齐标题行,我准备取消标题中的 s。
我没有想法去尝试并接受建议。
编辑:
顺便说一句,我的问题听起来就像这个,但那个已经关闭并且没有答案。
答案1
您可以使用钩子调整页面布局shipout/after
。
\documentclass{article}
\usepackage{showframe}
\makeatletter
\newdimen\evenoddheadheightdiff
\def\addtoheadheight#1{%
\@tempdima=#1\relax
\global\advance\headheight\@tempdima
\global\advance\textheight-\@tempdima
}
\AddToHook{shipout/after}{%
\ifodd\thepage
\addtoheadheight{\evenoddheadheightdiff}%
\else
\addtoheadheight{-\evenoddheadheightdiff}%
\fi
}
\makeatother
\evenoddheadheightdiff=10ex\relax
\begin{document}
\strut\clearpage
\strut\clearpage
\strut\clearpage
\strut\clearpage
\strut\clearpage
\strut\clearpage
\end{document}
fancyhdr
然后,您只需使用或scrlayer-scrpage
等插入所需的标题即可。例如:
\documentclass[twoside]{article}
\usepackage{fancyhdr}
\fancypagestyle{first}{
\fancyhead[C]{\huge Something tall for the first page}
}
\fancypagestyle{default}{
\fancyhead[OC]{\huge Something very tall}
\fancyhead[ER]{Something not so tall}
}
\pagestyle{default}
\makeatletter
\newdimen\evenoddheadheightdiff
\def\addtoheadheight#1{%
\@tempdima=#1\relax
\global\advance\headheight\@tempdima
\global\advance\textheight-\@tempdima
}
\AddToHook{shipout/after}{%
\ifodd\thepage
\addtoheadheight{\evenoddheadheightdiff}%
\else
\addtoheadheight{-\evenoddheadheightdiff}%
\fi
}
\makeatother
\evenoddheadheightdiff=-10ex\relax
\addtoheadheight{-\evenoddheadheightdiff}
\begin{document}
\thispagestyle{first}
\strut\clearpage
\strut\clearpage
\strut\clearpage
\strut\clearpage
\strut\clearpage
\strut\clearpage
\end{document}
您可以轻松扩展此功能,在第一页(或任何其他页面)上实现不同的功能\headheight
。如果您经常这样做,我建议您根据应用程序更改界面。这个答案只是为了向您展示方法。以下是使用给定界面执行此操作的一种方法。
\documentclass[twoside]{article}
\usepackage{fancyhdr}
\usepackage{showframe}
\fancypagestyle{first}{
\fancyhead[C]{\huge Something tall for the first page}
}
\fancypagestyle{default}{
\fancyhead[OC]{\huge Something very tall}
\fancyhead[ER]{Something not so tall}
}
\pagestyle{default}
\makeatletter
\newdimen\evenoddheadheightdiff
\def\addtoheadheight#1{%
\@tempdima=#1\relax
\global\advance\headheight\@tempdima
\global\advance\textheight-\@tempdima
}
\AddToHook{shipout/after}{%
\ifodd\thepage
\addtoheadheight{\evenoddheadheightdiff}%
\else
\addtoheadheight{-\evenoddheadheightdiff}%
\fi
}
\makeatother
\evenoddheadheightdiff=-10ex\relax
\newdimen\evenfirstpageheightdiff
\evenfirstpageheightdiff=-30ex\relax
\addtoheadheight{-\evenfirstpageheightdiff}
\AddToHookNext{shipout/after}{%
\addtoheadheight{\evenfirstpageheightdiff}%
\addtoheadheight{-\evenoddheadheightdiff}
}
\begin{document}
\thispagestyle{first}
\strut\clearpage
\strut\clearpage
\strut\clearpage
\strut\clearpage
\strut\clearpage
\strut\clearpage
\end{document}
答案2
对于第一页,最简单的解决方案通常是设置一个空的页眉,然后将“页眉”作为普通文本放在文档的开头。这样就省去了使用不同页眉的麻烦\headheight
。
无论如何,更改\headheight
文档中间部分都是很棘手的事情,而尝试\textheight
相应地更改则更加棘手。因此,我的解决方案不这样做,而是使用固定的\headheight
。在放置高页眉的偶数页上,我首先将页眉放在中,以\raisebox
欺骗自己fancyhdr
相信它并不高,这样它就不会抱怨,并正确定位它。此外,在偶数页上,我在文本顶部(即页眉正下方)添加了一些额外的垂直空间\vspace
(或零宽度\rule
)。我用来做到这一点\afterpage
,它在每一页上重复,只检查页码是否为偶数以将该空间放在那里)。
\documentclass[twoside]{article}
\usepackage{lipsum}
\usepackage{fancyhdr}
\usepackage{afterpage}
\usepackage{graphicx}
\fancypagestyle{firstpage}{%
\fancyhead{}
}
\pagestyle{fancy}
\setlength{\headheight}{16pt}
\fancyhead[LE]{\raisebox{-10pt}[0pt][0pt]{\parbox[t]{\headwidth}{\Huge EVEN PAGE HEADER\\SECOND LINE}}}
\fancyhead[LO]{ODD PAGE HEADER}
\fancyfoot[C]{\thepage}
\renewcommand{\headrulewidth}{0pt}
\newcommand{\nextpage}{%
\ifodd\value{page}\else\vspace*{30pt}\fi
% Other possibility:
% \ifodd\value{page}\else\rule{0pt}{30pt}\fi
\afterpage{\nextpage}
}
\begin{document}
\thispagestyle{firstpage}
\afterpage{\nextpage}
\includegraphics[height=100pt]{example-image}
\vspace{20pt}
\lipsum[1-4]
\begin{figure}
\centering
\includegraphics{example-image-a}
\vspace{5cm}
\caption{This is the figure}
\end{figure}
\lipsum[1-20]
\end{document}