修改页脚中的命令无法正常工作

修改页脚中的命令无法正常工作

我正在用 LaTeX 制作一份文档,并希望在每一页添加一个横向索引,其中包含第一个单词和最后一个单词的首字母。

为此,我需要在每一页末尾重置一个命令

我在包的页脚中放了一段代码fancyhdr

\fancyfoot[C]{
\def\TwoFirstLettersBegin{Indef} % Resetting the command
\TwoFirstLettersBegin            % Showing the new state of the command
}

但是当我建立我的文档时,发生了一些奇怪的事情:

我的命令似乎已正确重置,并且Indef显示在页脚中时内容正确 ()。但在下一页中,当我打印命令时,似乎没有任何内容被修改。

在我的页面内容中,我经常修改其他命令,一切都很好。我不明白我做错了什么。

你知道为什么我的新命令定义在页脚中起作用而在下一页中被取消吗?

答案1

我认为使用fancyhdr这种方法是一种滥用。该everyshi包实际上就是为在页面发送之前执行操作而设计的。

\documentclass{article}
\usepackage{lipsum}
\usepackage{fancyhdr}
  \fancyfoot[C]{\TwoFirstLettersBegin}
\usepackage{everyshi}
  \EveryShipout{\gdef\TwoFirstLettersBegin{Indef}}

\def\TwoFirstLettersBegin{}
\newcommand\setfirstletters[1]{\gdef\TwoFirstLettersBegin{#1}}

\pagestyle{fancy}

\begin{document}
\setfirstletters{Indef}
\verb|\TwoFirstLettersBegin|: \TwoFirstLettersBegin

\setfirstletters{Foo}
\verb|\TwoFirstLettersBegin|: \TwoFirstLettersBegin

\setfirstletters{Bar}
\verb|\TwoFirstLettersBegin|: \TwoFirstLettersBegin

\clearpage

On the new page it's resetted -- \verb|\TwoFirstLettersBegin|: \TwoFirstLettersBegin
\end{document}

相关内容