我有下一个代码用于在目录中定义章节标题后的点:
\newcommand\l@chapter[2]{%
\ifnum \c@tocdepth >\m@ne
\addpenalty{-\@highpenalty}%
\vskip 1.0em \@plus\p@
\setlength\@tempdima{1.5em}%8em}%
\begingroup
\parindent \z@ \rightskip \@pnumwidth
\parfillskip -\@pnumwidth
\leavevmode
\advance\leftskip\@tempdima
\hskip -\leftskip
{#1}\unskip\nobreak\leaders\hbox{$\m@th \mkern \@dotsep mu.\mkern \@dotsep mu$}\hfil \nobreak\hb@xt@\@pnumwidth{\hss #2}\par
\penalty\@highpenalty
\endgroup
\fi}
我怎样才能去掉章节标题后面的点?谢谢。
更新
我发现,如果我在上面的代码中将一些静态文本放在 {#1} 之前 - 点会尊重静态文本的大小并在其之后开始。我不确定 latex (overleaf) 此时如何计算 {#1}。它似乎首先渲染点,然后渲染给定参数 #1 的内容。您知道在 #1 的内容准备好后,我如何延迟渲染上述代码中的点吗?或者是否可以“强制”渲染内容?如果您能给我提供一些关于 Latex 如何进行租用的背景信息(在哪个阶段或根据文件中的定义),我将非常感激。
以下是章节在目录中出现方式的另一个摘录:
\newcommand\@chapapp{Chapter}
\newcommand\chapter{%
\clearpage
\doublespacing
\thispagestyle{myotherheadings}
\global\@topnum\z@
%\@afterindentfalse
\@afterindenttrue
\secdef\@chapter\@schapter}
\def\@chapter[#1]#2{%
\refstepcounter{chapter}%
\typeout{\@chapapp\space\thechapter. #1}%
% 1999.6 Period after chapter number removed in TOC. HJG
\addcontentsline{toc}{chapter}{\protect\numberline{%
{\@chapapp\space\thechapter:\space#1}}}%
\chaptermark{#1}%
\@makechapterhead{#2}%
\@afterheading
}
\chapter 被重新定义并包含 \addcontentsline - 最后一个参数 {\protect\numberline{{@chapapp\space\thechapter:\space#1}}} 定义 ToC 行的内容 - 即第一个摘录中的 {#1}。@makechapterhead 构成章节标题本身(代码省略)
答案1
为什么不使用处理 ToC 外观等诸多方面的tocloft
包( )?> texdoc tocloft
使用正常\caption
命令:
\documentclass{report}
\usepackage{tocloft}
\renewcommand{\cftchapdotsep}{\cftdotsep}
\begin{document}
\tableofcontents
\chapter{One}
\end{document}
上述操作将在目录中的章节条目后产生点。