我正在使用报告类。我想要的只是在使用\chapter{...}
宏之后\thispagestyle{onlypagenumber}
添加的内容。
我通过定义一个新的宏解决了这个问题\Chapter{...}
\newcommand{\Chapter}[1]{\chapter{#1}\thispagestyle{onlypagenumber}}
但是我宁愿继续使用,\chapter{...}
因为人们习惯于输入\chapter{...}
而不是\Chapter{...}
。我该如何进行这个小改动?还请注意,\thispagestyle{onlypagenumber}
不应将其添加到星级章节,例如\chapter*{...}
我也尝试过使用电子工具箱它提供了第 9 页上的一些“appto”命令。
\appto 此命令将任意 hcodei 附加到 hhooki。如果 hcodei 包含任何参数字符,则无需将其加倍。此命令非常可靠。
但这失败了,但可能是我做错了什么。我更喜欢 etoolbox 的解决方案。
例子
\documentclass{book}
\usepackage{fancyhdr}
\usepackage{lipsum}
\fancypagestyle{onlypagenumber}{%
\fancyhf{}
\fancyhfoffset[RO,EL]{2.5cm}
\fancyhead[OR]{%
\sffamily
\quad\smash{\rule[-.2ex]{1pt}{4cm}}\quad
\thepage
}
\fancyhead[EL]{%
\sffamily\thepage
\quad\smash{\rule[-.2ex]{1pt}{4cm}}\quad
}
}
\pagestyle{fancy}
\fancyhf{}
\fancyhfoffset[OR,EL]{2.5cm}
\fancyhead[OR]{%
\sffamily\MakeUppercase{\leftmark}
\quad\smash{\rule[-.2ex]{1pt}{4cm}}\quad
\thepage
}
\fancyhead[EL]{
\sffamily\MakeUppercase{\thepage}
\quad\smash{\rule[-.2ex]{1pt}{4cm}}\quad
\MakeUppercase{\chaptername}~\thechapter
}
\renewcommand\headrulewidth{0pt}
\renewcommand{\chaptermark}[1]{\markboth{\MakeUppercase{#1}}{}}
\newcommand{\Chapter}[1]{\chapter{#1}\thispagestyle{onlypagenumber}}
\begin{document}
\Chapter{Test chapter}
\lipsum[1-40]
\end{document}
答案1
一个简单的方法是修补\chapter
:
\usepackage{etoolbox}
\patchcmd{\chapter}{plain}{onlypagenumber}{}{}
因为\chapter
确实如此\thispagestyle{plain}
,并且补丁将替换plain
为onlypagenumber
。
然而,更简单的方法是
\fancypagestyle{plain}{%
\fancyhf{}
\fancyhfoffset[RO,EL]{2.5cm}
\fancyhead[OR]{%
\sffamily
\quad\smash{\rule[-.2ex]{1pt}{4cm}}\quad
\thepage
}
\fancyhead[EL]{%
\sffamily\thepage
\quad\smash{\rule[-.2ex]{1pt}{4cm}}\quad
}
}
以便重新定义plain
页面样式,而不是定义新的页面样式:您可能不再需要普通的页面样式,对吗?
要仅更改编号章节的样式,请使用
\usepackage{etoolbox}
\makeatletter
\pretocmd{\@makechapterhead}{\thispagestyle{onlypagenumber}}{}{}
\makeatother
因此,在处理时,\thispagestyle{plain}
由发出的(仅针对编号章节执行)\chapter
将被撤销。\@makechapterhead