如何使 fancyhdr 标题定位不依赖于双面文档中 ToC 的大小

如何使 fancyhdr 标题定位不依赖于双面文档中 ToC 的大小

考虑这个测试用例:

\documentclass[twoside]{article}
\usepackage[a4paper, vmargin={350pt, 350pt}]{geometry}
\usepackage[linktocpage=true]{hyperref}
\usepackage{titling}
\title{Title}\author{}\date{}
\usepackage[title, titletoc]{appendix}

\usepackage{fancyhdr}
\fancyhf{}
\renewcommand{\headrulewidth}{0pt}
\fancypagestyle{styletoc}{
    \fancyhead[RE]{Project Name}
    \fancyhead[LE,RO]{\thepage}
    \pagenumbering{roman}
}
\fancypagestyle{stylemain}{
    \fancyhead[RE]{Project Name}
    \fancyhead[LO]{Chapter \nouppercase\leftmark}
    \fancyhead[LE,RO]{\thepage}
    \pagenumbering{arabic}
}


\begin{document}
\maketitle
\newpage

this page intentionally left blank
\newpage

\pagestyle{styletoc}
\tableofcontents
\newpage


\pagestyle{stylemain}
\section{Test}\newpage
\section{Test}\newpage
\section{Test}\newpage
\section{Test}\newpage
\section{Test}\newpage
\section{Test}\newpage
\section{Test}\newpage
\end{document}

根据stylemain页面样式定义,此类页面的页眉应包含 [章节名称左边,页码右]在奇数页,并且[页码左边,项目名右] 均匀。

不幸的是,stylemain它用在了 ToC 之后,而 ToC 的大小随文档中的节数而变化。因此,如果 ToC 的页数为偶数,则一切正常;如果为奇数,则变得一团糟(\section{Test}\newpage从测试用例中删除至少一行即可发现问题)。

对于这种情况,印前处理中的常见规则是什么?例如,如果目录页数为奇数,则在目录后添加空白页,或者其他情况。当目录大小经常变化时,如何通过 TeX 自动执行此操作。

答案1

\newpage将后面的替换\tableofcontents\cleardoublepage。这样,如果目录的页数为奇数,则会自动添加空白页,但如果目录的页数为偶数,则不会自动添加空白页。

在下面的例子中,您将看到包含第一部分的页面出现在 pdf 的第五页上,并且如果您删除至少一个,它仍保留在同一页面上\section{Test}\newpage

\documentclass[twoside]{article}
\usepackage[a4paper, vmargin={350pt, 350pt}]{geometry}
\usepackage[linktocpage=true]{hyperref}
\usepackage{titling}
\title{Title}\author{}\date{}
\usepackage[title, titletoc]{appendix}

\usepackage{fancyhdr}
\fancyhf{}
\renewcommand{\headrulewidth}{0pt}
\fancypagestyle{styletoc}{
    \fancyhead[RE]{Project Name}
    \fancyhead[LE,RO]{\thepage}
    \pagenumbering{roman}
}
\fancypagestyle{stylemain}{
    \fancyhead[RE]{Project Name}
    \fancyhead[LO]{Chapter \nouppercase\leftmark}
    \fancyhead[LE,RO]{\thepage}
    \pagenumbering{arabic}
}


\begin{document}
\maketitle
\newpage

this page intentionally left blank
\newpage

\pagestyle{styletoc}
\tableofcontents
\cleardoublepage


\pagestyle{stylemain}
\section{Test}\newpage
\section{Test}\newpage
\section{Test}\newpage
\section{Test}\newpage
\section{Test}\newpage
\section{Test}\newpage
\section{Test}\newpage
\end{document}

相关内容