使用 fancyhdr 格式化我的标题,我希望它们以小写字母显示当前章节名称。因此,毫不奇怪,我最终做了类似的事情:
\usepackage{fancyhdr}
\pagestyle{fancy}
\fancyhead{} % Clears the standard fancy style header
\fancyhead[CO]{\textsc{\nouppercase{\leftmark}}} % Displays current chapter name in small-caps on odd-numbered pages
这当然很有效,但问题是我不想使用标准大写字母根本在标题中:换句话说,我希望在将章节“ABC”转换为小写字母的过程中,将章节“ABC”视为章节“ABC”。有什么方法可以实现这一点吗?我尝试了不同的解决方案,例如\MakeLowercase
或\MakeTextLowercase
,但它们在 中似乎都无效\fancyhead{}
。
\fancyhead{}
我显然正在寻找一种更简单、更“自动化”的解决方案,而不是手动重命名标题的解决方案\chapter{}
,这是我目前正在使用的解决方案……
非常感谢所有愿意帮助我的人!
答案1
重新定义\chaptermark
以避免\MakeUppercase
;我还指示使用\footnotesize
数字,否则它会显得太大。
\documentclass{book}
\usepackage{fancyhdr}
\usepackage{lipsum} % just for the example
\pagestyle{fancy}
\fancyhead{} % Clears the standard fancy style
\fancyhead[CO]{\scshape\MakeLowercase{\leftmark}}
\makeatletter
\renewcommand{\chaptermark}[1]{%
\markboth{%
\ifnum\c@secnumdepth>\m@ne
\@chapapp\ {\footnotesize\thechapter}. \ %
\fi
#1%
}{}%
}
\makeatother
\begin{document}
\chapter{This title has Upper Case Letters}
\lipsum[1-30]
\end{document}
答案2
更新\chaptermark
;这是默认定义(来自report.cls
,但book.cls
):
\def\chaptermark#1{%
\markboth {\MakeUppercase{%
\ifnum \c@secnumdepth >\m@ne
\@chapapp\ \thechapter. \ %
\fi
#1}}{}}%
我们将其更新为\scshape
直接使用\MakeLowercase
:
\renewcommand{\chaptermark}[1]{\markboth{\scshape\MakeLowercase{%
\ifnum\c@secnumdepth > \m@ne \@chapapp\ \thechapter.\ \fi #1}}{}}
这是一个完整的最小示例:
\documentclass{report}
\usepackage{fancyhdr,graphicx}
\pagestyle{fancy}
\fancyhead{} % Clears the standard fancy style header
\makeatletter
\fancyhead[CO]{\leftmark} % Displays current chapter name in small-caps on odd-numbered pages
\renewcommand{\chaptermark}[1]{\markboth{\scshape\MakeLowercase{%
\ifnum\c@secnumdepth > \m@ne \@chapapp\ \protect\resizebox{!}{1.15ex}{\thechapter}.\ \fi #1}}{}}
\makeatother
\usepackage{lipsum}% Just for this example
\begin{document}
\setcounter{chapter}{16}% Just for this example
\chapter{A Chapter}
\lipsum
\end{document}