列出术语(/关键词)及其定义和词汇表

列出术语(/关键词)及其定义和词汇表

我希望能够定义术语/关键词并给出可能跨越多个段落的定义。给出以下形式的定义:

\begin{definition}[Blue]
  Blue is one of ...
\end{definition}

\begin{definition}[Argument]
  An argument is ...
\end{definition}

我希望能够用命令(例如\usedef{blue})引用定义,并且我想创建两个单独的列表,均按字典顺序排列,其中一个是普通的词汇表索引(仅关键字和引用的页面),另一个是术语和定义的概述。

这个glossaries包在这方面做了一些事情,但是它不支持我的最后一个要求。另外,我不知道它如何处理多段定义。有一个可选参数叫做descriptionthough。

什么是实现我的目标的一个良好起点,或者也许有一个软件包已经提供了此功能?

它看起来有点像这样。(省略了前文中的引用)请不要介意字体。 在此处输入图片描述

答案1

结合etocglossaries

在我最初的回答(见下文)中,我为定义定义了一个自定义环境,并用它etoc来为它们创建定义表(ToD)。但是,由于任务基本上是拥有的功能glossaries加上 ToD,因此更好的想法是使用glossaries其所有方便的功能并etoc另外使用 ToD。最简单的方法是\listofdefinitions从我的原始答案中复制并定义一个自定义词汇表样式,该样式克隆预定义样式之一并添加的内容行etoc。这样,条目 a 使用 ' 可能性进行排序glossaries,即通过makeindex或通过xindy。可以通过所有命令链接到条目glossaries,例如标准\gls{<label>}

代码如下:

在此处输入图片描述

\documentclass{article}
\usepackage{parskip}

\usepackage[colorlinks]{hyperref}
\usepackage{etoc}

\usepackage[nopostdot,numberedsection]{glossaries}
\makeglossaries

\newglossarystyle{mylist}{%
  \glossarystyle{list}% base this style on the list style
  \renewcommand\glossaryentryfield[5]{%
    % #1: label
    % #2: name
    % #3: description
    % #4: symbol
    % #5: page number(s)
    \etoctoccontentsline{definition}{\protect\numberline{##2}}%
    \item[\glsentryitem{##1}\glstarget{##1}{##2}] ##3\glspostdescription\space##5
  }%
}

% this will display all definitions but nothing else as a toc:
\newcommand\listofdefinitions{%
  \setcounter{tocdepth}{1}%
  \etocsetlevel{definition}{1}% 'definition' entries will be included
  \etocsetlevel{section}{2}%  % sections are hidden
  \etocsettocstyle{\section{Foo}}{}%
  \etocsetstyle{definition}
    {}{}
    {\noindent\etocnumber\strut\leaders\etoctoclineleaders\hfill\etocpage\par}
    {\pagebreak[2]\vskip\baselineskip}%
  \tableofcontents
}

% use standard toc and hide definition entries
\etocsetlevel{definition}{6}

% dummy text:
\usepackage{lipsum}

% define entries:
\newglossaryentry{foo}{
  name = Foo ,
  description = \lipsum*[1]
}
\newglossaryentry{bar}{
  name = Foo Bar ,
  description = \lipsum*[1-2]
}
\newglossaryentry{blue}{
  name = Blue ,
  description = \lipsum*[1]
}
\newglossaryentry{argument}{
  name = Argument ,
  description = \lipsum*[1]
}

\begin{document}

\tableofcontents

\section{Foo Bar}
\subsection{Foo}
\lipsum[1]

\subsection{Bar}
\lipsum[2-4]

\gls{blue} and \gls{foo} and \gls{bar} and \gls{argument}

\appendix
\listofdefinitions

\renewcommand\glossaryname{Own name}
\glossarystyle{mylist}
\printglossaries

\end{document}

原始答案

这张照片让我想起jfbu 对 »自动在表格上对练习进行编号« 的回答我认为这似乎是一个类似的任务。下面是我第一次使用的结果etoc...

在此处输入图片描述

我定义了一个简单的definition环境:

\newcounter{definition}
\newenvironment{definition}[1]
  {%
    \refstepcounter{definition}%
    \etoctoccontentsline{definition}{\protect\numberline{#1}}%
    \par\noindent\textbf{#1}\quad
  }
  {\par\bigskip}

\listofdefinitions以及输出»definitions toc«的命令:

\newcommand\listofdefinitions{%
  \setcounter{tocdepth}{1}%
  \etocsetlevel{definition}{1}% 'definition' entries will be included
  \etocsetlevel{section}{2}%  % sections are hidden
  \etocsettocstyle{\section{Foo}}{}%
  \etocsetstyle{definition}
    {}{}
    {\noindent\etocnumber\strut\leaders\etoctoclineleaders\hfill\etocpage\par}
    {\pagebreak[2]\vskip\baselineskip}%
  \tableofcontents
}

为了证明正常目录不受此影响(至少在\etocsetlevel{definition}{6}之前调用时不受此影响),我\tableofcontents在下面的文档中添加了一个虚拟部分。

产生上面显示的输出的完整代码的有趣部分是:

\appendix
\listofdefinitions

\section{Bar}
\begin{definition}{Blue}
  \lipsum[2]
\end{definition}

\begin{definition}{Argument}
  \lipsum[2-3]
\end{definition}

完整代码如下:

\documentclass{article}
\usepackage{parskip}

\usepackage[colorlinks]{hyperref}
\usepackage{etoc}

% a simple `definition' environment:
\newcounter{definition}
\newenvironment{definition}[1]
  {%
    \refstepcounter{definition}%
    \etoctoccontentsline{definition}{\protect\numberline{#1}}%
    \par\noindent\textbf{#1}\quad
  }
  {\par\bigskip}

% this will display all definitions but nothing else as a toc:
\newcommand\listofdefinitions{%
  \setcounter{tocdepth}{1}%
  \etocsetlevel{definition}{1}% 'definition' entries will be included
  \etocsetlevel{section}{2}%  % sections are hidden
  \etocsettocstyle{\section{Foo}}{}%
  \etocsetstyle{definition}
    {}{}
    {\noindent\etocnumber\strut\leaders\etoctoclineleaders\hfill\etocpage\par}
    {\pagebreak[2]\vskip\baselineskip}%
  \tableofcontents
}

% use standard toc and hide definition entries
\etocsetlevel{definition}{6}

% dummy text:
\usepackage{lipsum}

\begin{document}

\tableofcontents

\section{Foo Bar}
\subsection{Foo}
\lipsum[1]

\subsection{Bar}
\lipsum[2-4]

\appendix
\listofdefinitions

\section{Bar}
\begin{definition}{Blue}
  \lipsum[2]
\end{definition}

\begin{definition}{Argument}
  \lipsum[2-3]
\end{definition}

\begin{definition}{Foo}
  \lipsum[2]
\end{definition}

\begin{definition}{Bar}
  \lipsum[2]
\end{definition}

\begin{definition}{Foo Bar}
  \lipsum[2]
\end{definition}

\end{document}

相关内容