在 fancyhdr 中更改文档内的页脚

在 fancyhdr 中更改文档内的页脚

我正在通过 Rmarkdown 生成 LaTeX 报告。因此,LaTeX 代码应该是通用的。我想在现有页脚中添加任意文本之内文档,以某种页面样式定义。
我尝试了以下方法:

\documentclass[a4paper,notitlepage]{article}
\usepackage{fancyhdr}

\makeatletter
\fancypagestyle{custom}{%
  \fancyhf{}
  \lfoot{\footnotesize Footnote}}

\newcommand\Lfoot[1]{\lfoot{\f@ncyolf\\#1}}
\makeatother

\pagestyle{custom}

\begin{document}

Text
\Lfoot{add text to footer}

\end{document}

问题是我无法添加\f@ncyolf\lfoot{}。每个操作都可以正常工作,即添加\f@ncyolf到文档或添加文本,而不是添加\f@ncyolf到页脚。
我该怎么做?提前致谢!

答案1

\f@ncyolf是一个内部宏,当您通过 更改页脚时,它会被重新定义\lfoot。如果您在页脚文本中使用此宏,最终会得到一个递归定义,这将使 TeX 陷入循环,直到它因堆栈溢出而死掉。

您可以做的是为页脚的基础文本定义一个全局宏(\myfootertext在示例中),并在每次\Lfoot调用时扩展此文本:

\documentclass[a4paper,notitlepage]{article}
\usepackage{fancyhdr}

\newcommand\myfootertext{\footnotesize Footnote}
\fancypagestyle{custom}{%
  \fancyhf{}
  \lfoot{\myfootnotetext}}

\newcommand\Lfoot[1]{\lfoot{\myfootertext\\#1}}

\pagestyle{custom}

\begin{document}

Text
\Lfoot{add text to footer}

\newpage

Text
\Lfoot{add other text to footer}

\end{document}

将打印

脚注
将文本添加到页脚

在第一页

脚注
将其他文本添加到页脚

在第二页。

相关内容