我想实现带有章节/部分附加说明的目录(见屏幕截图)。你会用什么方法实现这个?我想知道是否可以用自定义的 2 个参数包装\chapter
等\section
命令。但是如何生成目录呢?
答案1
您可以\addcontentsline{toc}{<sec_unit>}{<text>}
直接使用 或\addtocontents{toc}{<text>}
向文件输入文本.toc
。唯一的问题是正确缩进文本。
下面是使用该类book
及其内部宏的一些代码。它添加了“信息”行,这些行使用与分段行基本相同的格式宏(用于相同的缩进),但避免使用“....(页码)”部分。如果您确实想给\chapter
等提供两个参数,您可以执行以下操作
\let\Chapter\chapter \def\chapter#1#2{\Chapter{#1}\chapterinfo{#2}}
这里是代码:
\documentclass{book}
\makeatletter
% Basically the same as for `\l@section` etc, just `\@nodottedtocline` instead of `\@dottedtcline`:
\newcommand*\l@chapterinfo{\@nodottedtocline{0}{0.0em}{1.5em}}
\newcommand*\l@sectioninfo{\@nodottedtocline{1}{1.5em}{2.3em}}
\newcommand*\l@subsectioninfo{\@nodottedtocline{2}{3.8em}{3.2em}}
\newcommand*\l@subsubsectioninfo{\@nodottedtocline{3}{7.0em}{4.1em}}
\newcommand*\l@paragraphinfo{\@nodottedtocline{4}{10em}{5em}}
\newcommand*\l@subparagraphinfo{\@nodottedtocline{5}{12em}{6em}}
% Copied from the book class macro `\@dottedtocline`. Removed the dots and page number
\def\@nodottedtocline#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 }%
\par}%
\fi}
\makeatother
\def\chapterinfo#1{%
\addcontentsline{toc}{chapterinfo}{%
\noexpand\numberline{}#1}%
}
\def\sectioninfo#1{%
\addcontentsline{toc}{sectioninfo}{%
\noexpand\numberline{}#1}%
}
\def\subsectioninfo#1{%
\addcontentsline{toc}{subsectioninfo}{%
\noexpand\numberline{}#1}%
}
% same for subsubsection, etc. ...
\begin{document}
\tableofcontents
\chapter{AAA}
\chapterinfo{A very long text, a very long text, a very long text, a very long text, a very long text, a very long text, a very long text, a very long text}
\section{aaa}
\sectioninfo{A very long text, a very long text, a very long text, a very long text, a very long text, a very long text, a very long text, a very long text}
\subsection{1111}
\subsectioninfo{A very long text, a very long text, a very long text, a very long text, a very long text, a very long text, a very long text, a very long text}
\end{document}
结果:
如果更多人需要这个,我愿意把它做成一个小包装。我也可以尝试支持科摩文或其他课程。