包含部分名称的逗号分隔列表

包含部分名称的逗号分隔列表

有没有可能,不打印包含目录的大列表,而是将其处理为 .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}

结果

示例已从tocdepth1 个增加到 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}

内联目录

相关内容