使用 Latex
我需要根据页面内容逐页设置页眉和页脚。例如,如果页面包含
(A)那么页眉和页脚需要写上 Apple
如果页面包含
(B)那么页眉和页脚需要写上 Bravo
例如,层次结构是 (B) 比 (A) 更重要。如果 (B) 和 (A) 在同一页面上,则需要在同时存在这两个页面的页面上始终显示 Bravo。如果页面上只有 (A),Apple 就可以了。
有没有简单的方法可以在我的样式/标题中执行此操作?如果没有,我应该往下看什么路径?
示例代码如下:
\documentclass[12pt]{article}
\usepackage{blindtext}
\usepackage{fancyhdr}
\pagestyle{fancy}
\begin{document}
\setlength{\headheight}{1in}
\fancyhf{}
\fancyhead[C]{\bfseries{\Large BRAVO}}
\fancyfoot[C]{\thepage \\ \bfseries{\Large BRAVO}}
(A)\Blindtext[1]
(B)\Blindtext[1]
(A)\Blindtext[1]
(A)\Blindtext[1]
\fancyhead[C]{\bfseries{\Large APPLE}}
\fancyfoot[C]{\thepage \\ \bfseries{\Large APPLE}}
(A)\Blindtext[1]
(A)\Blindtext[1]
(A)\Blindtext[1]
(A)\Blindtext[1]
\end{document}
答案1
这给出了您描述的输出。但我确实有些怀疑这是否真的是您想要的。
\documentclass[12pt, a4paper]{article}
\usepackage{blindtext}
\usepackage{fancyhdr}
\pagestyle{fancy}
\fancyhf{}
\fancyhead[C]{\leftmark}
\fancyfoot[C]{\thepage --\leftmark}
\usepackage{afterpage}
\begin{document}
\markboth{Apple}{Apple}%Initialize to Apple
(A)\Blindtext[1]
(B)\markboth{Bravo}{Bravo}\afterpage{\markboth{Apple}{Apple}}\Blindtext[1]
(A)\Blindtext[1]
(A)\Blindtext[1]
(A)\Blindtext[1]
(A)\Blindtext[1]
(A)\Blindtext[1]
(A)\Blindtext[1]
\end{document}
答案2
我继续进行,但结果略有不同,因为我不想使用 marks etex 或 etoolbox。在我看来,它让主代码更干净一些。我确信该函数可以得到显著的清理,但目前我认为这对我来说是可行的。
\documentclass[12pt]{article}
\usepackage{blindtext}
\usepackage{fancyhdr}
\pagestyle{fancy}
\usepackage{xstring}
\newcommand{\pageclass}{}
\makeatletter
\newcounter{pagerank}
\newcounter{thispage}
\setcounter{thispage}{0}
\newcounter{rank}
\newcommand\setClass[1]{
\setcounter{rank}{0}
\IfStrEq{#1}{A}{
\setcounter{rank}{1}
}{
\IfStrEq{#1}{B}{
\setcounter{rank}{2}
}{
\IfStrEq{#1}{C}{
\setcounter{rank}{3}
}{}}}
\ifnum \value{page}=\value{thispage}\else
\setcounter{thispage}{\value{page}}
\setcounter{pagerank}{\value{rank}}
\fi
\ifnum \value{rank}>\value{pagerank}
\setcounter{pagerank}{\value{rank}}
\fi
\ifnum \value{pagerank}=1
\def\pageclass{Alpha}
\else \ifnum \value{pagerank}=2
\def\pageclass{Beta}
\else \ifnum \value{pagerank}=3
\def\pageclass{Charlie}
\fi \fi \fi
\fancyhead[C]{\bfseries{\Large \pageclass}}
\fancyfoot[C]{\thepage \\ \bfseries{\Large \pageclass}}
(#1)
}
\makeatother
\begin{document}
\setlength{\headheight}{1in}
\fancyhf{}
\setClass{A}Lorem Ipsum Dolor Sit Alum\\
\setClass{B}
\Blindtext[1]
\setClass{A}
\Blindtext[1]
\setClass{A}
\Blindtext[1]
\setClass{A}
\Blindtext[1]
\setClass{A}
\Blindtext[1]
\setClass{A}
\Blindtext[1]
\setClass{A}
\Blindtext[1]
\setClass{B}
\Blindtext[1]
\setClass{C}
\Blindtext[1]
\end{document}