有没有可能,不打印包含目录的大列表,而是将其处理为 .toc 作为几行大小的列表?
我的意思是,而不是:
1 First section 1
2 Second section 1
3 Test section 2
得到一行字
First section, Second section, Test section
或者更好的是,如果可能的话:
Page 1: First section, second section, Page 2: Test section
我一直找不到可以为我完成这个任务的包,是我忽略了一个还是这涉及更严重的编码?
注意:如果文档中还有小节,则应忽略它们。在常规目录中,我会将 tocdepth 设置为 1,我不知道这在解决方法中是否仍然有效?
答案1
通过重新定义命令\l@section
和朋友来设置目录的条目是可能的,例如:
\documentclass{article}
\usepackage{blindtext}
\setcounter{tocdepth}{2}
\makeatletter
\newcommand*{\tocpg@current}{}
\newcommand*{\tocentry}[3]{%
% #1: level name
% #2: title
% #3: page number
\ifnum#1>\value{tocdepth}%
\else
\ifx\tocpg@current\@empty
Page~#3: %
\def\tocpg@current{#3}%
\else
\def\tocpg@new{#3}%
\ifx\tocpg@new\tocpg@current
, %
\else
\def\tocpg@current{#3}%
. Page~#3: %
\fi
\fi
#2\ignorespaces
\fi
}
\renewcommand*{\numberline}[1]{}
\def\l@part{\tocentry{-1}}
\def\l@chapter{\tocentry{0}}
\def\l@section{\tocentry{1}}
\def\l@subsection{\tocentry{2}}
\def\l@subsubsection{\tocentry{3}}
\def\l@paragraph{\tocentry{4}}
\def\l@subparagraph{\tocentry{5}}
\makeatother
\begin{document}
\tableofcontents
\newpage
\Blinddocument
\end{document}
示例已从tocdepth
1 个增加到 2 个,以获取更多的用例作为 提供的两个部分\Blinddocument
。
答案2
有一个例子etoc 手册(部分A (crazy) inline display.
)
这里进行了简化。请注意,部分和子部分是明显区分的。
在此示例中,标题本身是从blindtext
包含额外信息,例如部分, 或者小节,这种内联样式会让目录有点混乱。
TOC 标题本身也可以位于同一段落(请参阅\etocsettocstyle...
手册中的示例)。
将整个定义放在一个组中,以便可以\tableofcontents
在其他地方发布并得到标准结果。
\documentclass{article}
\usepackage{blindtext}
\setcounter{tocdepth}{2}
\usepackage{etoc}
% cf more sophisticated example at end of Part V of etoc manual
% http://ctan.org/pkg/etoc
\newcommand*\inlinetoc {%
\begingroup
\etocsetstyle{section}
{\etocskipfirstprefix}
{. }
{\bfseries \etocname{} \emph{(starting on page \etocpage)}: }
{.}
\etocsetstyle{subsection}
{\etocskipfirstprefix}
{, }
{\mdseries \etocname{} \emph{(\etocnumber{} on page \etocpage)}}
{}
\tableofcontents
\endgroup
}
\begin{document}
\inlinetoc
\newpage
\Blinddocument
\end{document}