目录中仅包含段落标题

目录中仅包含段落标题

我的 Latex 文档有大量的paragraphs(每页大约 10 个),我想建立所有这些段落的标题列表。

例如,给定以下文档:

\paragraph{Bla1} Bla bla bla bla
\paragraph{Bla2} Bla bla bla bla
\paragraph{Bla3} Bla bla bla bla
\paragraph{Bla4} Bla bla bla bla

输出结果如下

Bla1 — Bla2 — Bla3 — Bla4

有什么想法吗?我尝试自定义目录,但无法排除章节和小节...

谢谢!

答案1

以下代码显示了一种可能性,可以根据所使用的文档类和特定需求进行修改:

\documentclass{article}

\makeatletter
\newcommand\Paragraph[1]{%
  \addcontentsline{prg}{Paragraph}{#1}%
  \paragraph{#1}}
\newcommand\l@Paragraph[2]{#1,~\textit{#2}}
\newcommand\listParagraphname{List of Paragraphs}
\newcommand\listofParagraphs{%
  \section*{\listParagraphname}\@starttoc{prg}}
\makeatother

\begin{document}

\section{Test section}
\subsection{Test subsection}
\subsubsection{Test subsubsection}
\listofParagraphs
\Paragraph{Test paragraph one}
\Paragraph{Test paragraph two}
\Paragraph{Test paragraph three}
\Paragraph{Test paragraph four}
\Paragraph{Test paragraph five}

\end{document}

在此处输入图片描述

要点是

  1. 要使用\Paragraph一个强制参数的新定义的命令;\Paragraph将其参数和当前页码(如果不需要页码,只需,~\textit{#2}在下面的代码中删除)写入扩展名为的新内容文件.prg;它还使用该参数作为标准命令的强制参数 \paragraph来实际排版文档中的段落。

  2. 使用另一个新定义的命令\listofParagraphs读取内容文件中写的信息.prg,并在调用命令的地方进行排版(通过 完成\@starttoc{prg})。\listofParagraphs还用于\section*生成可由 控制的标题\listParagraphname

  3. 该命令\l@Paragraph实际上排版了新目录中的条目。第一个参数是标题,第二个参数是页码。

要在条目之间添加分隔符,您可以使用\addtocontents

\documentclass{article}

\makeatletter
\newcommand\Paragraph[1]{%
  \addcontentsline{prg}{Paragraph}{#1}%
  \paragraph{#1}}
\newcommand\l@Paragraph[2]{#1,~\textit{#2}}
\newcommand\listParagraphname{List of Paragraphs}
\newcommand\listofParagraphs{%
  \section*{\listParagraphname}\@starttoc{prg}}
\makeatother
\newcommand\AddSep{\addtocontents{prg}{--}}

\begin{document}

\section{Test section}
\subsection{Test subsection}
\subsubsection{Test subsubsection}
\listofParagraphs
\Paragraph{Test paragraph one}
\AddSep
\Paragraph{Test paragraph two}
\AddSep
\Paragraph{Test paragraph three}
\AddSep
\Paragraph{Test paragraph four}
\AddSep
\Paragraph{Test paragraph five}

\end{document}

在此处输入图片描述

答案2

这是一个 hack 解决方案(改编自目录格式的自定义假设列表):

在此处输入图片描述

\documentclass{book}

\usepackage{ntheorem}
\newtheorem{paralist}{Paragrahs}[chapter]

\let\oldparagraph\paragraph
\renewcommand*{\paragraph}[1]{%
    \stepcounter{paralist}%
    \addtheoremline{paralist}{#1}%
    \oldparagraph{#1}
}

\begin{document}
\chapter*{List of Paragraphs}
\listtheorems{paralist}

\chapter{foo}
\paragraph{Bla1} Bla bla bla bla

\chapter{bar}
\paragraph{Bla2} Bla bla bla bla
\paragraph{Bla3} Bla bla bla bla
\paragraph{Bla4} Bla bla bla bla
\end{document}

答案3

\section这里有一个奇怪的想法 - 切换 LaTeX 对和的解释怎么样\paragraph?!这样,你可以将段落“升级”到tocdepth1 级,同时将部分“降级”到5 级。不过,所有与部分相关的计数器(包括和)都tocdepth需要对传统格式进行一些重新配置。和的原始定义取自sectionsubsection\section\paragrapharticle文档类

\documentclass{article}
\usepackage{titletoc}% http://ctan.org/pkg/titletoc
\usepackage{lipsum}% http://ctan.org/pkg/lipsum

\makeatletter
\renewcommand\section{\@startsection {paragraph}{1}{\z@}% Sections are paragraphs
                                     {-3.5ex \@plus -1ex \@minus -.2ex}%
                                     {2.3ex \@plus.2ex}%
                                     {\normalfont\Large\bfseries}}
\renewcommand\paragraph{\@startsection{section}{5}{\z@}% Paragraphs are sections
                                      {3.25ex \@plus1ex \@minus.2ex}%
                                      {-1em}%
                                      {\normalfont\normalsize\bfseries}}
\makeatother
\renewcommand{\theparagraph}{\arabic{paragraph}}% Section numbering
\renewcommand{\thesubsection}{\theparagraph.\arabic{subsection}}% Subsection numbering

\begin{document}

\setcounter{tocdepth}{1}% Show only "sections"

\titlecontents*{section}[1.8pc]% "Section" formatting
  {\small}
  {\thecontentslabel. }
  {}
  {, \thecontentspage}
  [---][.]

\tableofcontents

\section{Section 1}
\subsection{Subsection 1}

\paragraph{Bla1} \lipsum[1]
\paragraph{Bla2} \lipsum[2]
\paragraph{Bla3} \lipsum[3]
\paragraph{Bla4} \lipsum[4]
\paragraph{Bla5} \lipsum[5]
\paragraph{Bla6} \lipsum[6]

\end{document}

为了获得所需的格式,仅tocdepth显示 1 级项目(新段落),\titlecontents*使用titletoc包裹

章节作为段落,段落作为章节

目录显示段落名称,后跟逗号,、页码和破折号---。最后一项以句号结尾.。这可以通过更改的参数进行修改\titlecontents*

相关内容