我正在尝试编写一个乳胶文档,其中标题为横幅,并包含两到三个关于页面内容的简短描述。
\addbanner{ Text for banner.}
我希望这些描述能够动态地写入标题。我想使用类似文本中的函数添加描述。我做了这样一个功能,现在我的问题是清除值。我不希望任何描述出现在两个页眉上。当我创建用于清除值的函数/宏时,如果我在 \fancyhead 中调用它,更改将不会保留到下一页. 同样,如果使用 atbegshi 包并调用 \AtBeginShipout(未在提供的代码中),它也不会持续存在。
\fancyhead[L]{%
\firstbanner \secondbanner \thirdbanner
\clearbanners
\printbanners
}
\newcommand{\clearbanners}{
\renewcommand{\firstbanner}{}
\renewcommand{\secondbanner}{}
\renewcommand{\thirdbanner}{some text just to see that it disappears anyway in next page}
}
\newcommand{\thirdbanner}{three}
\newcommand{\secondbanner}{two}
\newcommand{\firstbanner}{one}
%it adds them kind of like a queue
\newcommand{\addbanner}[1]{%
% Adding #1: \\
\let\thirdbanner\secondbanner
%renew third: \thirdbanner \\
\let\secondbanner\firstbanner
% renew second: \secondbanner \\
\renewcommand{\firstbanner}{#1}%
%renew first: \firstbanner
}
最后,我还想看看页面上有多少个描述,在清除上一页的所有 ---banner 宏后应该有 0-3 个(实际上是 2 个或 3 个),并且 fancyhead 函数中的 \if \else 语句使用两种不同的布局。
这是一个 mwe
\documentclass{article}
\usepackage{atbegshi}
\usepackage{fancyhdr}
\pagestyle{fancy}
\fancyhf{} % clear all header and footer fields
\fancyhead[L]{%
\firstbanner \secondbanner \thirdbanner
\clearbanners
\printbanners
}
\newcommand{\clearbanners}{
\renewcommand{\firstbanner}{}
\renewcommand{\secondbanner}{}
\renewcommand{\thirdbanner}{some text just to see that it disappears anyway in next page}
}
\newcommand{\thirdbanner}{three}
\newcommand{\secondbanner}{two}
\newcommand{\firstbanner}{one}
%for debigging
\newcommand{\printbanners}{%
Third banner: \thirdbanner
Second banner: \secondbanner
First banner: \firstbanner
}
\newcommand{\addbanner}[1]{%
% Adding #1: \\
\let\thirdbanner\secondbanner
%renew third: \thirdbanner \\
\let\secondbanner\firstbanner
% renew second: \secondbanner \\
\renewcommand{\firstbanner}{#1}%
%renew first: \firstbanner
}
\setlength{\parindent}{0pt}% Just for this example
\begin{document}
\printbanners
\addbanner{how}
\addbanner{now}
\medskip
\printbanners
\newpage
\printbanners
The second page
\end{document}