使用“environ”来列出环境列表?

使用“environ”来列出环境列表?

在我的文档中,我使用一个amsthm名为 的环境question,我用它来向自己提出问题,以供日后参考。然而,这些问题分散在文本中。

我知道ntheorem有一个\listoftheorems命令或类似的东西可以完全满足我的要求。但是,在与其他软件包一起ntheorem使用时,我有一些不好的经历ntheorem(只有在我使用时才会发生,我已经忘记了……),这会带来一些非常奇怪的错误,所以我暂时mathtools想完全避免使用。ntheorem

那么,是否可以这样做,environ因为它提供了一些有用的钩子?最好是列表还允许我(可选)包含简短描述,当然还有页码。环境定义为\newtheorem{question}{Question}

编辑:我发现thmtools它似乎也有一个命令\listoftheorems(以及重新定义标题的方法)。是否可以扩展此命令,以便我可以添加简短的描述?

答案1

首先,有一个tocloft包,它专门用于此类工作,并减轻了 Gonzalo 的回答中的一些工作量。此外,我建议定义一个新环境,这样您就不必使用额外的命令,但可以有一个实际的可选参数:

\documentclass{article}
\usepackage{amsthm}
\usepackage{tocloft}

\newtheorem{xquestion}{Question}

\newcommand\listxquestionsname{List of Questions}
\newlistof{question}{xquestion}{\listxquestionsname}
\newcommand\qdescription[1]{%
  \addcontentsline{xquestion}{question}%
    {\protect\makebox[2.5cm][l]{Question~\thexquestion\hfill}#1}}

\newenvironment{question}[1][]{\begin{xquestion}\qdescription{#1}}{\end{xquestion}}

\begin{document}

\listofquestion
\bigskip

\begin{question}[Optional description for question one]
Test question One
\end{question}

\begin{question}
Test question Two
\end{question}

\end{document}

在此处输入图片描述

答案2

以下示例显示了使用 LaTeX 内核命令\@starttoc生成新问题列表的一种可能解决方案。该\qdescription命令用于生成新问题列表中的条目以及提供可选描述:

\documentclass{article}
\usepackage{amsthm}

\makeatletter
\newcommand\listquestionsname{List of Questions}
\newcommand\qdescription[1]{%
  \addcontentsline{qst}{question}%
  {\protect\makebox[2.5cm][l]{Question~\thequestion\hfill}#1}}
\newcommand\listofquestions{%
  \let\listofquestions\relax % (AM)
  \section*{\listquestionsname}\@starttoc{qst}%
}
\newcommand*\l@question{\@dottedtocline{1}{1.5em}{2.3em}}
\makeatother

\newtheorem{question}{Question}

\begin{document}

\listofquestions

\begin{question}
Test question One
\qdescription{Optional description for question one}
\end{question}

\begin{question}
Test question Two
\qdescription{}
\end{question}

\end{document}

在此处输入图片描述

相关内容