目录中的格式出现不同

目录中的格式出现不同

我设置了目录以粗体小写字母显示各部分,然后使用类似的设置显示参考文献(例如参考书目和图表列表等)和附录的开头。在 MWE 中,我\addpart对两个“部分”参考文献和附录使用相同的命令 ( ),但只有参考文献的格式正确。我无法将附录写成小写字母和粗体。即使在本地直接修改文本,我也最多只能将其设为小写字母,而不能以任何方式设为粗体。有人能告诉我怎么做吗?

注意:在实际文档中的附录之前,我有一个类似于介绍部分内容的页面,但没有列举。它似乎不会影响问题,因为当目录中没有附录时,我也无法更改附录的格式。但如果有人能想出任何影响此问题的解决方案,你应该知道。

大多数代码都是根据其他人在这里建议的内容稍微修改过的版本(我现在找不到它来赞扬作者……)。

我使用 MiKTeX 2.7 来制作 LaTeX

\documentclass[a4paper, 11pt, english]{report}
\usepackage{fontenc} 
\usepackage[english]{babel}
\usepackage[T1]{fontenc} 
\usepackage{tocloft} 
\usepackage{geometry, fancyhdr, fix-cm}

% Modifies chapters to appear like sections under parts that are added to the toc (a modified version of )
\makeatletter
\def\@part[#1]#2{%
  \ifnum \c@secnumdepth >-2\relax
    \refstepcounter{part}%
    \addcontentsline{toc}{part}{%
      Part \thepart: \textsc{#1}}%
  \else
    \addcontentsline{toc}{part}{\scshape{#1}}%
  \fi
  \markboth{}{}%
  {\centering
   \interlinepenalty \@M
   \normalfont
   \ifnum \c@secnumdepth >-2\relax
     \huge\bfseries \partname\nobreakspace\thepart
     \par
     \vskip 20\p@
   \fi
   \Huge \bfseries \textsc{#2}\par}%
  \@endpart}
\def\@endpart{%
   \thispagestyle{empty}%
   \vfil\newpage
   \if@twoside
     \if@openright
       \null
       \thispagestyle{empty}%
       \newpage
     \fi
   \fi
   \if@tempswa
     \twocolumn
   \fi}
\makeatother

%Adds a ''part'' to the toc that is not numbered and does not have a page in the document
\newcommand{\addpart}[1]{
\phantomsection
\addcontentsline{toc}{part}{\textsc{\textbf{#1}}}
\addtocontents{toc}{
\setlength{\cftbeforechapskip}{\cftbeforesecskip}
\setlength{\cftchapindent}{\cftsecindent}
\protect\renewcommand{\cftchapfont}{\cftsecfont}
\protect\renewcommand{\protect\cftchapdotsep}{\cftsecdotsep}
}
}

\begin{document}
\selectlanguage{english}
\input{toc}

\newpage
\part{First part}
\chapter{Chapter 1}
\newpage
\addpart{References}
\chapter*{Lists}
\addcontentsline{toc}{chapter}{Lists}

\clearpage

\part*{\textsc{Appendices}}
%\newpage
\addpart{Appendices}
\appendix
\chapter{First appendix}

\end{document}

在此处输入图片描述

答案1

问题出在这条线上

\protect\renewcommand{\cftchapfont}{\cftsecfont}

由于您正在写入文件,因此将的.toc“值”定义为\cftchapfont的值\cftsecfont。这导致.toc文件包含

\renewcommand {\bfseries }{\normalfont }

因此,在合并目录后,所有“粗体”系列的咒语都变得正常。我不太确定你打算用你的各种咒语做什么,但你可能也想\protect\cftchapfont在我上面引用的那行中这样做。(命令及其第一个参数可能也类似\setlength……)

但原则上,我很困惑,为什么你要传递里面的所有那些格式化命令\addtocontents;加载的整个目的肯定tocloft是为了你可以配置外观而不用在.toc文件中写入奇怪的咒语?

如果你\addpart

\newcommand{\addpart}[1]{
\phantomsection
\addcontentsline{toc}{part}{\textsc{\textbf{#1}}}
}

并分别调用格式化命令

\setlength{\cftbeforechapskip}{\cftbeforesecskip}
\setlength{\cftchapindent}{\cftsecindent}
\renewcommand{\cftchapfont}{\cftsecfont}
\renewcommand{\cftchapdotsep}{\cftsecdotsep}

编译后为

在此处输入图片描述

相关内容