我目前正在努力解决 LaTeX 上的几个目录问题。我试图删除目录的一部分上的前导点,在整个目录中创建一致的双倍行距,并在章节号和章节标题之间创建一致的间距。我会说我使用的是 UNT 的样式文件,我对此进行了轻微的编辑,但下面我包含了一些生成目录的代码:
\documentclass[12pt, titlepage, openany]{amsbook}
\addcontentsline{toc}{chapter}{TABLE OF CONTENTS}%\dotfill}
\addtocontents{toc}{\protect\contentsline{chapter}{CHAPTER}{}{}}
\makeatletter
\renewcommand\tocchapter[3]{%
\indentlabel{\@ifnotempty{#2}{\ignorespaces#2.\quad}}#3\dotfill%
}
\makeatother
\begin{doublespace}
\tableofcontents
\end{doublespace}
\usepackage{amsmath}
\begin{document}
据我所知,我没有使用 tocloft 包,因为当我尝试编译时似乎总是会出错,尽管有这个问题,但没有它一切似乎都运行良好。我还使用了两个在线找到的修改:
1).
\makeatletter
\def\@tocline#1#2#3#4#5#6#7{\relax
\ifnum #1>\c@tocdepth % then omit
\else
\par \addpenalty\@secpenalty\addvspace{#2}%
\begingroup \hyphenpenalty\@M
\@ifempty{#4}{%
\@tempdima\csname r@tocindent\number#1\endcsname\relax
}{%
\@tempdima#4\relax
}%
\parindent\z@ \leftskip#3\relax \advance\leftskip\@tempdima\relax
\rightskip\@pnumwidth plus4em \parfillskip-\@pnumwidth
#5\leavevmode\hskip-\@tempdima #6\nobreak\relax
\ifnum#1<0\hfill\else\dotfill\fi\hbox to\@pnumwidth{\@tocpagenum{#7}}\par
\nobreak
\endgroup
\fi}
\makeatother
2).
\makeatletter
\def\@dottedtocline#1#2#3#4#5{%
\ifnum #1>\c@tocdepth \else
\vskip \z@ \@plus.2\p@
{\ifnum #1>\c@sectocnonumdepth \def\numberline##1{\hb@xt@\@tempdima{\hfil}}\fi%
\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
\addcontentsline{toc}{chapter}{TABLE OF CONTENTS}%\dotfill}
\addtocontents{toc}{\protect\contentsline{chapter}{CHAPTER}{}{}}
\makeatletter
\renewcommand\tocchapter[3]{%
\indentlabel{\@ifnotempty{#2}{\ignorespaces#2.\enskip }}#3\dotfill%
}
\makeatother
\begin{doublespace}
\tableofcontents
\end{doublespace}
\end{document}
最后,这是它的屏幕截图
为了清楚起见,我需要删除 TABLE OF CONTENTS 后面 CHAPTER 单词的前导点,并创建一致的间距。任何有关此方面的帮助都将不胜感激。在此先行致以万分感谢。
编辑
因此,与图片中显示的情况相比,我能够更好地修复间距问题。我使用了 \enskip 命令,而不是原来的 \quad。但是,我仍然无法删除 TABLE OF CONTENTS 后面 CHAPTER 单词的前导点。一如既往,我们欢迎并非常感谢任何帮助。
答案1
\dotfill
我已经从中删除了一个额外的内容,\tocchapter
因为已经有一个\dotfill
作为其中的一部分\@tocline
。其次,我创建了一个宏,它CHAPTER
通过 ToC 本身内的本地重新定义专门处理您的输入:
\documentclass{amsbook}
\usepackage{blindtext}
\makeatletter
\renewcommand\tocchapter[3]{%
\indentlabel{\@ifnotempty{#2}{\ignorespaces#2.\quad}}#3%
}
\makeatother
\makeatletter
\def\@tocline#1#2#3#4#5#6#7{\relax
\ifnum #1>\c@tocdepth % then omit
\else
\par \addpenalty\@secpenalty\addvspace{#2}%
\begingroup \hyphenpenalty\@M
\@ifempty{#4}{%
\@tempdima\csname r@tocindent\number#1\endcsname\relax
}{%
\@tempdima#4\relax
}%
\parindent\z@ \leftskip#3\relax \advance\leftskip\@tempdima\relax
\rightskip\@pnumwidth plus4em \parfillskip-\@pnumwidth
#5\leavevmode\hskip-\@tempdima #6\nobreak\relax
\ifnum#1<0\hfill\else\dotfill\fi\hbox to\@pnumwidth{\@tocpagenum{#7}}\par
\nobreak
\endgroup
\fi}
\makeatother
% Create a way of treating CHAPTER
\makeatletter
\DeclareRobustCommand{\l@specialchapter}{%
\let\@tocpagenum\@gobble
\@tocline{-1}{8pt plus 1pt}{0pt}{}{}}
\makeatother
\begin{document}
\clearpage
\addcontentsline{toc}{chapter}{TABLE OF CONTENTS}%\dotfill}
\tableofcontents
% Update the chapter ToC entries to use \l@specialchapter
\makeatletter
\addtocontents{toc}{\begingroup
\let\protect\l@chapter\l@specialchapter}
\addcontentsline{toc}{chapter}{CHAPTER}
\addtocontents{toc}{\endgroup}
\makeatother
\blinddocument
\end{document}