内容识别页眉和页脚?

内容识别页眉和页脚?

使用 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}

相关内容