\fancyhead 中的 Renewcommand 不会持续到下一页

\fancyhead 中的 Renewcommand 不会持续到下一页

我正在尝试编写一个乳胶文档,其中标题为横幅,并包含两到三个关于页面内容的简短描述。

\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}

相关内容