我尝试在不使用包的情况下在目录中的节和页面之间添加点tocloft
,因为它将标题从其原始位置移开。现在它看起来像这样:
我发现如果我从我的.cls
文件中注释以下行,我就会得到所需的输出。
\let\@dottedtocline\@plaintocline
所需的输出如下所示:
我想保持.cls
文件不变,因为我知道这是最佳做法。
那么我怎样才能从我的文件中抑制该行的效果.tex
,而不是修改类?
以下是\@plaintocline
命令定义:
\def\@plaintocline#1#2#3#4#5{%
\ifnum #1>\c@tocdepth \else
\vskip \z@ \@plus.2\p@
{\leftskip #2\relax \rightskip \@tocrmarg \parfillskip -\rightskip
\parindent #2\relax\@afterindenttrue
\interlinepenalty\@M
\leavevmode
\@tempdima #3\relax
\advance\leftskip \@tempdima \null\nobreak\hskip -\leftskip
{#4}\nobreak
\leaders\hbox{$\m@th
\mkern \@dotsep mu\hbox{}\mkern \@dotsep
mu$}\hfill
\nobreak
\hb@xt@\@pnumwidth{\hfil\normalfont \normalcolor #5}%
\par}%
\fi}
答案1
我想只是添加:
\makeatletter
\def\@dottedtocline#1#2#3#4#5{%
\ifnum #1>\c@tocdepth \else
\vskip \z@ \@plus.2\p@
{\leftskip #2\relax \rightskip \@tocrmarg \parfillskip -\rightskip
\parindent #2\relax\@afterindenttrue
\interlinepenalty\@M
\leavevmode
\@tempdima #3\relax
\advance\leftskip \@tempdima \null\nobreak\hskip -\leftskip
{#4}\nobreak
\leaders\hbox{$\m@th
\mkern \@dotsep mu\hbox{.}\mkern \@dotsep
mu$}\hfill
\nobreak
\hb@xt@\@pnumwidth{\hfil\normalfont \normalcolor #5}%
\par}%
\fi}
\makeatother
序言部分应该可以工作。这应该重新定义您提到的\@dottedtocline
之前的方式\let
,即 LaTeX 核心定义的方式latex.ltx
。如果您告诉我您使用的是什么类,我可能会找到一个关闭它的选项\let
。或者您可以尝试阅读它的文档……
附加物
正如你所说,手册中没有提到撤销更改的选项,而是说:
UFPEThesis 不提供任何特别用于生成书目或索引的服务。这些东西是由人们通常所说的语言创造的,例如 [1]。
或者:
UFPEThesis 没有特别提供用于制作参考书目或索引的内容。必须按照通常的方式创建此材料,例如 [1] 中讨论的方式。
正如您所注意到的,两个 tocline 命令之间的唯一区别是宏中
\hbox{.}
的。这正是构成点的原因。基本上(但我可能过于简单化或完全搞错了),它接受其参数并重复足够多次以填充一行,因此如果它没有任何东西,它就不会放任何东西(),如果它有一个点,它就会放一个点()。您可以有趣地更改它的内容并看到奇怪的事情,例如:\hbox{}
\@plaintocline
\leaders
\@plain
\@dotted
\hbox
- 第二章 * * * * * * * * * * * * * * * *
<pagenumber>
或者:
- 第二章 foo foo foo foo foo foo foo foo
<pagenumber>
如果你喜欢 :)。
- 第二章 * * * * * * * * * * * * * * * *
有关该命令的更多详细信息:
- 首先,它会检查给出的数字是否
#1
大于\c@tocdepth
,因此如果子小节不应该在目录中,而您开始了一个子小节,则不会创建一行。如果不大于,则进入分支\else
; - 在那里,它找到了添加垂直空间的指令,确切地说是可拉伸的空间,以便具有一定的拉伸余量,以避免在页面损坏时将页面折叠到顶部部分;
- 然后它打开一个组;
- 然后我们进行一些簿记,更准确地说是一些参数改变;
- 在那次记账之后,一直到
\null
开始\leavevmode
一行,我们有一个\nobreak
禁止换行符(毕竟我们在行的开头),然后我们有一个负的水平空间(我想知道为什么是负的),然后#4
打印,应该是章节标题或类似内容; - 在另一个 之后
\nobreak
,我们有了\leaders
命令,其中包含\m@th
,这是一个间距命令,我对此并不是太了解,然后是一个数学空格\mkern
,\hbox
和另一个\mkern
;因此 的内容\hbox
将被空格包围重复;自然,删除\mkern
将减少(或消除,如果删除两个\mkern
s) 中点/任何东西周围的间距\hbox
; - 我
\hfill
觉得这很不合适,但我可能不知道它是如何\leaders
工作的;无论如何,在此之后,禁止中断,并创建一个宽度为\@pnumwidth
(我认为该参数包含适合页码的宽度) 的框并放置在那里,其中恰好包含页码; \par
,因此换行,然后关闭组,然后关闭\else
分支和整个条件\fi
,我们就完成了。