在索引页上重复一组语句

在索引页上重复一组语句

我在整个文档中介绍了一些“设计原则”声明。我目前正在使用 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}

如果主要词汇表似乎没有正确更新,请尝试删除辅助文件。

相关内容