目录中的标题与文档中的部分标题不同

目录中的标题与文档中的部分标题不同

我正在使用下面的代码作为\part标题样式。我希望能够修改目录中显示的部分名称。可能在那里放置不同的文本,并修改其字体样式(大小、形状等)。我应该在代码中修改什么?

\documentclass[draft]{book}
\usepackage[table]{xcolor}
\usepackage{epigraph}
\setlength\epigraphwidth{.6\textwidth}

\makeatletter
\def\@part[#1]#2{%
\ifnum \c@secnumdepth >-2\relax
 \thispagestyle{epigraph}
  \refstepcounter{part}%
  \addcontentsline{toc}{part}{\partname~\thepart:\hspace{1em}#1}%
\else
  \addcontentsline{toc}{part}{#1}%
\fi
\markboth{}{}%
  \reset@font
  \parindent \z@ 
  \vspace*{-400\p@}%
  \hbox{%
    \vbox{%
      \hsize=7mm%
     \makebox(0,0){\put(10,-100){\fbox{\phantom{\rule[-4cm]{7mm}{4cm}}}}}%
 \begin{tabular}{@{}p{7mm}@{}}
    \makebox[7mm]{\scshape\strut\small\partname}\\
    \makebox[7mm]{\cellcolor{gray}\Huge\color{white}\bfseries\strut\thepart\rule[-4cm]{0pt}{4cm}}%
  \end{tabular}%
  }%
\kern6pt
\vbox to 0pt{%
   \tabular[t]{@{}p{1cm}>{\raggedright\arraybackslash}p{\dimexpr\hsize-2.55cm}@{}}\hline
      & \Huge\itshape\rule{0pt}{1.5\ht\strutbox}#1\endtabular}%
}%
  \cleardoublepage

}
\makeatother

\begin{document}

\tableofcontents
\cleardoublepage

\epigraphhead[450]{Fairy tales are more than true: not because they tell us that dragons exist, but because they tell us dragons can be beaten.\par\hfill\textsc{C.K. Chesterton}}
\part{A Test Part Title}

\end{document}

答案1

您可以使用通常的界面来指定不同<ToC title><part title>

\part[<ToC title>]{<part title>}

如果您希望调整目录相关条目的字体(和其他特征),请考虑使用tocloft。例如,使用

\usepackage{tocloft}
\renewcommand{\cftpartfont}{\itshape\LARGE}

\part打印与字体相关的 ToC 条目\itshape\LARGE

答案2

  1. 使实际标题和目录中的条目具有不同内容的标准方法是使用分段单元的可选参数,正如 Werner 在他的回答

    \part[Titlte for the ToC]{Title for the document}
    

    然而,由于重新定义产生特殊格式时出现错误,这在您的实际代码中不起作用\@part;问题在于,您的代码中的定义使用了错误的参数,#1而不是#2负责实际标题排版的代码段中的适当参数:

    \tabular[t]{@{}p{1cm}>{\raggedright\arraybackslash}p{\dimexpr\hsize-2.55cm}@{}}\hline
    & \Huge\itshape\rule{0pt}{1.5\ht\strutbox}#1\endtabular}%
    

    在下面的示例代码中我已经修复了这个问题。

  2. 您不需要其他包来执行此操作,因为\@part它还负责 ToC 条目。下面我介绍了\partfont用于更改部分条目的字体属性的命令:

    \ifnum \c@secnumdepth >-2\relax
     \thispagestyle{epigraph}
      \refstepcounter{part}%
      \addcontentsline{toc}{part}{\parttocfont\partname~\thepart:\hspace{1em}#1}%
    \else
      \addcontentsline{toc}{part}{\parttocfont#1}%
    \fi
    

    我使用的默认定义是

    \def\parttocfont{\normalfont\Large\scshape}
    

    以 \Large 尺寸和小型大写字母显示条目,但是,当然,您可以更改它以满足您的需要。

完整代码:

\documentclass{book}
\usepackage[table]{xcolor}
\usepackage{epigraph}
\setlength\epigraphwidth{.6\textwidth}

\def\parttocfont{\normalfont\Large\scshape}

\makeatletter
\def\@part[#1]#2{%
\ifnum \c@secnumdepth >-2\relax
 \thispagestyle{epigraph}
  \refstepcounter{part}%
  \addcontentsline{toc}{part}{\parttocfont\partname~\thepart:\hspace{1em}#1}%
\else
  \addcontentsline{toc}{part}{#1}%
\fi
\markboth{}{}%
  \begingroup
  \reset@font
  \parindent \z@ 
  \vspace*{-400\p@}%
  \hbox{%
    \vbox{%
      \hsize=7mm%
     \makebox(0,0){\put(10,-100){\fbox{\phantom{\rule[-4cm]{7mm}{4cm}}}}}%
 \begin{tabular}{@{}p{7mm}@{}}
    \makebox[7mm]{\scshape\strut\small\partname}\\
    \makebox[7mm]{\cellcolor{gray}\Huge\color{white}\bfseries\strut\thepart\rule[-4cm]{0pt}{4cm}}%
  \end{tabular}%
  }%
\kern6pt
\vbox to 0pt{%
   \tabular[t]{@{}p{1cm}>{\raggedright\arraybackslash}p{\dimexpr\hsize-2.55cm}@{}}\hline
      & \Huge\itshape\rule{0pt}{1.5\ht\strutbox}#2\endtabular}%
}%
  \endgroup
  \cleardoublepage

}
\makeatother

\begin{document}

\tableofcontents
\cleardoublepage

\epigraphhead[450]{Fairy tales are more than true: not because they tell us that dragons exist, but because they tell us dragons can be beaten.\par\hfill\textsc{C.K. Chesterton}}
\part[The title for the ToC]{A Test Part Title}

\end{document}

目录图片:

在此处输入图片描述

实际标题的图像:

在此处输入图片描述

相关内容