删除部分目录中的前导点

删除部分目录中的前导点

我目前正在努力解决 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}

相关内容