我正在使用 XeLaTeX 排版一本书。
在创建目录时,我希望控制:
- 目录顶部的标题
- 目录中的运行标题
我希望内容标题全部大写,但我希望运行标题使用小写字母。(我使用的字体有单独的小写字母,并且没有非常智能的 OpenType 功能。)
使用类似以下更改的代码两个都其中,但由于我希望两者具有不同的字母大小写,所以这不是很有帮助。
\renewcommand{\contentsname}{\lowercase{Contents}}
使用tocloft
会破坏我的其余内容,因为我正在使用titletoc
。
Letters=UppercaseSmallCaps
我的小型大写字体不支持在标题中使用。
如果有一个 LaTeX 非参数命令可以将文本转换为全部大写或全部小写,我的问题就解决了。
修补\tableofcontents
宏,使其根本不打印标题,这将是最佳解决方案。防止\tableofcontents
更改正在运行的标题也是一个解决方案。不幸的是,我找不到宏的代码。
梅威瑟:
\documentclass{book}
\usepackage{fontspec}
\usepackage{titletoc}
\usepackage{fancyhdr}
% Set running headers to use small capitals.
% In my own document, I am actually selecting a different font.
\newcommand{\headfont}{\scshape}
\pagestyle{fancy}
\fancyhf{}
\fancyhead[LE,RO]{\thepage}
\fancyhead[CE]{\headfont\lowercase{\leftmark}}
\fancyhead[CO]{\headfont\lowercase{\rightmark}}
\begin{document}
\frontmatter
\tableofcontents
\mainmatter
\chapter{Heading}
\section{Lorem}
\section{Ipsum}
\end{document}
答案1
我真的不确定我是否正确理解了这个问题。
在下面的例子中,我们只需修补原始定义,tableofcontents
将章节标题设置为全部大写,将标题设置为小写。
\documentclass{book}
\usepackage{etoolbox}
\usepackage{fontspec}
\usepackage{titletoc}
\usepackage{fancyhdr}
% Set running headers to use small capitals.
% In my own document, I am actually selecting a different font.
\newcommand{\headfont}{\scshape}
\pagestyle{fancy}
\fancyhf{}
\fancyhead[LE,RO]{\thepage}
\fancyhead[CE]{\headfont\lowercase{\leftmark}}
\fancyhead[CO]{\headfont\lowercase{\rightmark}}
\makeatletter
\tracingpatches
\patchcmd{\tableofcontents}{
\chapter*{\contentsname
\@mkboth{%
\MakeUppercase\contentsname}{\MakeUppercase\contentsname}}%
}{
\chapter*{
\MakeUppercase{\contentsname}
\@mkboth{%
\MakeLowercase\contentsname}{\MakeLowercase\contentsname}}%
}{}{}
\makeatother
\begin{document}
\frontmatter
\tableofcontents
\mainmatter
\chapter{Heading}
\section{Lorem}
\section{Ipsum}
\end{document}}
答案2
您不应该使用\lowercase
,而应该使用fancyhdr
提供的命令\nouppercase
:
\documentclass{book}
\usepackage{fontspec}
\usepackage{titletoc}
\usepackage{fancyhdr}
% Set running headers to use small capitals.
% In my own document, I am actually selecting a different font.
\newcommand{\headfont}{\scshape}
\pagestyle{fancy}
\fancyhf{}
\fancyhead[LE,RO]{\thepage}
\fancyhead[CE]{\headfont\nouppercase{\leftmark}}
\fancyhead[CO]{\headfont\nouppercase{\rightmark}}
% This is necessary if you're using babel
\AtBeginDocument{%
\edef\contentsname{\noexpand\MakeUppercase{\unexpanded\expandafter{\contentsname}}}%
}
% Otherwise uncomment the following one
% \renewcommand\contentsname{CONTENTS}
\begin{document}
\frontmatter
\tableofcontents
\mainmatter
\chapter{Heading}
\section{Lorem}
\clearpage
\section{Ipsum}
\end{document}