在环境中设置精美的页眉和页脚

在环境中设置精美的页眉和页脚

我有一个文档样式,其中环境使用包设置页眉和页脚fancyhdr,最近我注意到它们的行为发生了变化。似乎在环境开始时设置的页眉现在会在环境结束时自动重置。查看我从同一来源编译到 2020 年 12 月的 PDF 文件,页眉过去一直保留,直到明确设置了新的页眉。

一个例子:

\documentclass[a4paper]{article}
\usepackage{fancyhdr}
\pagestyle{fancy}
\newenvironment{test}[1]{\rhead{#1}}{} % setting the header in beginning of environment
\begin{document}
\begin{test}{Test 1}
Text 1 (environment 1 starts)
\clearpage
Text 2 (environment 1 ends)
\end{test}
\clearpage
Text 3
\begin{test}{Test 2}
Text 4 (environment 2 starts)
\clearpage
Text 5 (environment 2 ends)
\end{test}
\end{document}

结果是在第一页(第一个环境开始的地方),标题按预期设置: 页眉出现在第一页上

在第二页(第一个环境结束的地方),页眉重置为默认空白: 页眉未出现在第二页上

相同的模式在第三页和第四页上继续:第二个环境的开始为第三页设置页眉,但第二个环境的结束再次为第四页清除页眉。

这可能是什么原因?如何解决?

这是我的设置的版本信息:

$ pdflatex --version
pdfTeX 3.141592653-2.6-1.40.22 (TeX Live 2021/Cygwin)
kpathsea version 6.3.3
Copyright 2021 Han The Thanh (pdfTeX) et al.
There is NO warranty.  Redistribution of this software is
covered by the terms of both the pdfTeX copyright and
the Lesser GNU General Public License.
For more information about these matters, see the file
named COPYING and the pdfTeX source.
Primary author of pdfTeX: Han The Thanh (pdfTeX) et al.
Compiled with libpng 1.6.37; using libpng 1.6.37
Compiled with zlib 1.2.11; using zlib 1.2.11
Compiled with xpdf version 4.03

答案1

fancyhdr版本 3 中,所有fancyhdr定义都是全局的。我发现这不太可取,因为这使得无法仅在环境内更改定义,而 LaTeX 定义通常如此。因此在fancyhdr版本 4 中我更改了这一点。

您的示例的问题在于环境结束得太早。环境应该在所有需要本地定义的页面都发布之后结束。在这种情况下,通过在文档末尾的包含\clearpage之前给出,可以轻松实现这一点。\end{test}

如果您愿意,我正在考虑添加一个选项来进行全局重新定义。

\clearpage这是带有之前的命令的示例\end{test}

\documentclass[a4paper]{article}
\usepackage{fancyhdr}
\pagestyle{fancy}
\newenvironment{test}[1]{\rhead{#1}}{} % setting the header in beginning of environment
\begin{document}
\begin{test}{Test 1}
Text 1 (environment 1 starts)
\clearpage
Text 2 (environment 1 ends)
\clearpage
\end{test}
Text 3
\begin{test}{Test 2}
Text 4 (environment 2 starts)
\clearpage
Text 5 (environment 2 ends)
\clearpage
\end{test}
\end{document}

相关内容