如何确定文档是否有部分

如何确定文档是否有部分

我正在为我们办公室的出版物系列编写一个基于 book.cls 的自定义类,但是在如何设置条件方面遇到了问题。

有些出版物的格式是部分->章节->节,而有些则只是章节->节。我们的出版物格式要求交替的页脚是短标题(奇数页)和部分或章节(偶数页)。

我的问题是:如何确定文档结构是否有各个部分,如果有,如何相应地更改页脚?

答案1

以下是修改版https://tex.stackexchange.com/a/241999/4427

\documentclass{book}

\usepackage{fancyhdr,etoolbox}
\usepackage{hyperref}

\usepackage{lipsum} % just for the example


\pagestyle{fancy}
\fancyhf{}
\renewcommand{\headrulewidth}{0pt}
\fancyfoot[CE]{Short title}
\fancyfoot[CO]{\leftmark}
\fancyfoot[LE,RO]{\thepage}

\newif\ifpartused
\newcommand{\partmark}[1]{%
  \markboth{Part \thepart: #1}{}%
  \global\partusedtrue
}
\renewcommand{\chaptermark}[1]{%
  \ifpartused\else
    \markboth{Chapter \thechapter: #1}{}%
  \fi
}
\newcommand{\stopparts}{\global\partusedfalse}
\makeatletter
\@ifundefined{H@old@part}
  {\patchcmd{\@part}}
  {\patchcmd{\H@old@part}}
  {\markboth{}{}}
  {\partmark{#1}}
  {}{}
\makeatother

\begin{document}

\mainmatter

\chapter{Introduction}

\lipsum[1-30]

\part{First Part}

\chapter{Title A}

\lipsum[1-30]

\stopparts

\chapter{\bibname}

\lipsum[1-30]

\end{document}

如果注释掉\part,则会在页脚中显示章节。无论有没有 都可以使用hyperref

相关内容