我正在写一本书,想要单独的奇数页眉和偶数页眉,分别在偶数页/奇数页上居中显示章节/节标题。我想在两页的页面外侧打印节号。
我认为这很容易做到,例如,
\fancyhead[LE]{\thesection}
\fancyhead[RO]{\thesection}
不幸的是,当新的章节标题从页面顶部开始时,这种方法就会失败,在这种情况下,上一页将标有新的章节编号。我知道这是因为 \thesection 扩展得太晚,但我想要一个简单的解决方案。另外,我不能使用 \rightmark 来存储章节编号,因为我用它来存储章节名称。
这是一个说明该问题的最小工作示例:
\documentclass{article}
\usepackage{lipsum}
\usepackage{fancyhdr}
\pagestyle{fancy}
\fancyhead{}
\fancyhead[L]{\leftmark}
\fancyhead[R]{\thesection}
\renewcommand{\sectionmark}[1]{\markboth{\thesection. #1}{}}
\begin{document}
\section{Introduction}
\lipsum[1-4]
\lipsum[2]
\section{Blah}
\lipsum[1]
\end{document}
答案1
下面从\leftmark
您用于完整章节标题的章节编号中提取章节编号。章节编号在开头被标识为任何内容,直到.␣
看到。否则不设置任何内容。
\documentclass{article}
\usepackage{lipsum}
\usepackage{fancyhdr}
\pagestyle{fancy}
\fancyhead{}
\fancyhead[L]{\leftmark}
\fancyhead[R]{\leftmarksection}
\renewcommand{\sectionmark}[1]{\markboth{\thesection. #1}{}}
\makeatletter
\newcommand*{\leftmarksection}{%
\begingroup
\protected@edef\temp{\leftmark}%
\expandafter\@leftmarksection\temp. \@nil
\endgroup
}
\def\@leftmarksection#1. #2\@nil{%
\def\temp{#2}%
\ifx\temp\@empty
\else
#1%
\fi
}
\makeatother
\begin{document}
Title page
\newpage
\section{Introduction}
\lipsum[1-4]
\lipsum[2]
\section{Blah}
\lipsum[1]
\end{document}
答案2
也许你想要这个,但我不确定在你的实际情况中你需要哪个标记。
\documentclass{article}
\usepackage{lipsum}
\usepackage{fancyhdr}
\pagestyle{fancy}
\fancyhead{}
\fancyhead[L]{\leftmark}
\fancyhead[R]{\expandafter\numberonly\romannumeral`\^^@\leftmark!!}
\def\numberonly#1. #2!!{#1}
\renewcommand{\sectionmark}[1]{\markboth{\thesection. #1}{}}
\begin{document}
\section{Introduction}
\lipsum[1-4]
\lipsum[2]
\section{Blah}
\lipsum[1]
\end{document}
答案3
感谢 David 和 Heiko 的回答。我想要一个我能理解的解决方案,所以我使用 xstring 包来实现从 \leftmark 中解压章节编号和标题:
\documentclass{article}
\usepackage{lipsum}
\usepackage{xstring}
\usepackage{fancyhdr}
\pagestyle{fancy}
\fancyhead{}
\fancyhead[L]{\StrBehind{\leftmark}{+}}
\fancyhead[R]{\StrBefore{\leftmark}{+}}
\renewcommand{\sectionmark}[1]{\markboth{\thesection+#1}{}}
\begin{document}
\section{Introduction}
\lipsum[1-4]
\lipsum[2]
\section{Blah}
\lipsum[1]
\end{document}