分别编辑内容标题和页眉

分别编辑内容标题和页眉

我正在使用 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}

相关内容