我在整个文档中介绍了一些“设计原则”声明。我目前正在使用 amsthm 定义的自定义定理环境,但如果有必要,我很乐意使用其他东西。
结果是整个文档中有很多位看起来像这样:
\begin{principle}
It should do stuff.
\end{principle}
然后会显示为“原则 1:它应该做事”
我想在文档末尾创建一个页面,按顺序重述所有这些原则(理想情况下在上下文中提供指向它们的链接),因此生成的页面将如下所示:
原则 1:它应该做事。
原则 2:而且应该做得很好
原则3:等等
我已经研究过使用 thmtools 来实现这一点,但如果它支持这一点,我还无法弄清楚如何做到:listoftheorems 将为我提供所有定理的索引页,但不显示其内容,restattheorem 将允许我为每个单独的条目实现所需的效果,但不是按顺序为每个条目实现所需的效果。
答案1
您所描述的内容对我来说听起来很像词汇表,因此这里尝试使用该glossaries
包。(免责声明:我对 LaTeX 中的词汇表确实不太了解)。
创建以下文件example.tex
,然后编译:
>> pdflatex example.tex
>> makeglossaries example
>> pdflatex example.tex
(我的文本编辑器使用 latexmk,它为我完成了所有这些工作。但那是命令行版本。我猜makeglossaries
大多数 TeX 发行版都附带它。)
内容example.tex
:
\documentclass{article}
\usepackage[
colorlinks=true,
linkcolor=blue
]{hyperref}
\usepackage{amsthm} % for styling
\usepackage{environ} % allows access to environment body during definition
\usepackage[
sanitize={
description=false,
sort=false
},
numberedsection
]{glossaries}
\theoremstyle{definition}
\newtheorem{principleInternal}{Principle}
\makeglossary
% Usage:
% \begin{principle}{labelName}
% content
% \end{principle}
% NOTE: labelName is required and should be unique---it's used
% to label the internal principleDefinition environment and is
% used as the glossary keys.
\NewEnviron{principle}[1]{
\newglossaryentry{#1}{%
sort={\theprincipleInternal},
name={Principle \ref{#1}},
description={\BODY}
}
\glsadd{#1} % adds glossary entry printed list.
\begin{principleInternal}\label{#1}
\BODY
\end{principleInternal}
}
\renewcommand*{\glstextformat}[1]{p #1}
\begin{document}
\begin{principle}{cats}
Cats are good, $\int f(x) dx$
\end{principle}
\newpage
\begin{principle}{dogs}
Dogs are good, $\sqrt{121}$
\end{principle}
\begin{principle}{demons}
Demons are bad, OK.
\end{principle}
\printglossary[title=Principles]
\end{document}
如果主要词汇表似乎没有正确更新,请尝试删除辅助文件。