编辑

编辑

我对 LaTeX 还很陌生,理解标记系统非常困难。我不太明白 LaTeX Companion 和 fancyhdr 手册在说什么。

我正在创建一个包含章节和节的书籍类型文档,并且我希望在每个页眉的角落都显示\thechapter.。\thesection

因为这是书本格式,所以每个章节都从自己的页面开始,这正是我想要的效果。但是,某些页面的一页中有多个部分。

我想要第一的部分甚至显示的页面\thesection,我想要最后的部分奇怪的要显示的页面\thesection

截至目前,我只能让 LaTeX 显示最后的任何页面上的部分,无论是偶数还是奇数。这是当前代码和一张显示我的意思的图片。

\documentclass[a4paper,12pt,twoside,openany]{book}
\usepackage{lipsum}

\usepackage{fancyhdr}
\fancypagestyle{plain}{
    \fancyhf{}
    \fancyhead[RO]{\bfseries\nouppercase\leftmark}
    \fancyhead[LE]{\bfseries\nouppercase\leftmark}
    \fancyfoot[RO]{\thepage}
    \fancyfoot[LE]{\thepage}}
\pagestyle{plain}
\renewcommand{\chaptermark}{\markboth{\thechapter}}
\renewcommand{\sectionmark}{\markboth{\thesection}}

\begin{document}
    \chapter{Header Test}
    \section{Sec1}
    \lipsum[1]
    \section{Sec2}
    \lipsum[3-4]
    \section{Sec3}
    \lipsum[5]
    \section{Sec4}
    \lipsum[7]
\end{document}

啊

我究竟做错了什么?

答案1

为了获得第一个新的部分而不是上一页的后续部分,我认为你只需要使用第一的标记而不是顶部标记。此代码(略)改编自 Werner 的回答:

\documentclass[twoside,openany]{book}
\usepackage{lipsum}

\usepackage{titleps}
\renewpagestyle{plain}{
  \sethead[\firsttitlemarks\bfseries\thesection][][]% even-left | even-center | even-right
  {}{}{\bottitlemarks\bfseries\thesection}% odd-left | odd-center | odd-right
  \setfoot[\thepage][][]% even-left | even-center | even-right
  {}{}{\thepage}% odd-left | odd-center | odd-right
  \setheadrule{0.4pt}
}
\pagestyle{plain}

\begin{document}
  \chapter{Header Test}
  \section{Sec1}
  \lipsum[1]
  \section{Sec2}
  \lipsum[3-4]
  \section{Sec3}
  \lipsum[5]
  \section{Sec4}
  \lipsum[7]
  \chapter{New Chapter}
  \section{Sec5}
  \lipsum[2]
  \section{Sec6}
  \lipsum[6]
  \section{Sec7}
  \lipsum[8-9]
  \section{Sec8}
  \lipsum[10]
\end{document}

精美标题

我可以重现没有标题的章节的唯一情况是章节的首页上没有\section命令。在这种情况下,我确实得到了一个标题,但它只是一行,没有章节或部分的标记。由于没有部分,所以这是有道理的。但是,在这种情况下,您可能希望标记章节。

如果是这样,你可以尝试这个:

\renewpagestyle{plain}{
  \sethead[\firsttitlemarks\bfseries\ifnum\value{section}=0 \thechapter\else\thesection\fi][][]% even-left | even-center | even-right
  {}{}{\bottitlemarks\bfseries\ifnum\value{section}=0 \thechapter\else\thesection\fi}% odd-left | odd-center | odd-right
  \setfoot[\thepage][][]% even-left | even-center | even-right
  {}{}{\thepage}% odd-left | odd-center | odd-right
  \setheadrule{0.4pt}
}

仅限章节

编辑

我不确定为什么发布\tableofcontents似乎会清空标题。但是,由于您正在使用titlesec,因此您可以使用以下方法,该方法利用了该包中的条件。我不确定目录页本身应该发生什么。这会将目录的标题放入标题中,因为这里没有章节编号。(或者,数字是 0。)

\documentclass[twoside,openany]{book}
\usepackage{lipsum}
\usepackage[pagestyles]{titlesec}
\renewpagestyle{plain}{
  \sethead[\firsttitlemarks\bfseries\ifthesection{\thesection}{\ifthechapter{\thechapter}{\chaptertitle}}][][]% even-left | even-center | even-right
  {}{}{\bottitlemarks\bfseries\ifthesection{\thesection}{\ifthechapter{\thechapter}{\chaptertitle}}}% odd-left | odd-center | odd-right
  \setfoot[\thepage][][]% even-left | even-center | even-right
  {}{}{\thepage}% odd-left | odd-center | odd-right
  \setheadrule{0.4pt}
}
\pagestyle{plain}

\begin{document}

  \tableofcontents

  \chapter{Header Test}
  \section{Sec1}
  \lipsum[1]
  \section{Sec2}
  \lipsum[3-4]
  \section{Sec3}
  \lipsum[5]
  \section{Sec4}
  \lipsum[7]
  \chapter{New Chapter}
  \section{Sec5}
  \lipsum[2]
  \section{Sec6}
  \lipsum[6]
  \section{Sec7}
  \lipsum[8-9]
  \section{Sec8}
  \lipsum[10]
  \chapter{GAH}
  \lipsum[1-4]
  \chapter{New Chapter AAAA}
  \section{Sec5}
  \lipsum[2]
  \section{Sec6}
  \lipsum[6]
  \section{Sec7}
  \lipsum[8-9]
  \section{Sec8}
  \lipsum[10]
  \chapter{GAH1}
  \section{Sec8}
  \lipsum[10]
  \lipsum[1-4]
  \lipsum[1-4]
  \lipsum[1-4]
  \lipsum[1-4]
  \chapter{New CHAPTER AAAAA}
  \section{Sec5}
  \lipsum[2]
  \section{Sec6}
  \lipsum[6]
  \section{Sec7}
  \lipsum[8-9]
  \section{Sec8}
  \lipsum[10]
\end{document}

答案2

我不会直接回答你的问题,而是用另一种建议来回答。那就是使用titleps

使用开关比如\toptitlemarks\firsttitlemarks或者\bottitlemarks你可以以字典格式提取特定部分的信息。下面我重新定义了plain页面样式(就像你对fancyhdr)相应设置页眉和页脚。

在此处输入图片描述

\documentclass[twoside,openany]{book}
\usepackage{lipsum}

\usepackage{titleps}
\renewpagestyle{plain}{
  \sethead[\toptitlemarks\bfseries\thesection][][]% even-left | even-center | even-right
    {}{}{\bottitlemarks\bfseries\thesection}% odd-left | odd-center | odd-right
  \setfoot[\thepage][][]% even-left | even-center | even-right
    {}{}{\thepage}% odd-left | odd-center | odd-right
  \setheadrule{0.4pt}
}
\pagestyle{plain}

\begin{document}
\chapter{Header Test}
\section{Sec1}
\lipsum[1]
\section{Sec2}
\lipsum[3-4]
\section{Sec3}
\lipsum[5]
\section{Sec4}
\lipsum[7]
\end{document}

titleps阅读时使用titleps为了fancyhdr用户. 关于字典式标题的讨论在titleps文档(部分4 分)。

相关内容