thmtools 定理列表不起作用 - 缺少 \endcsname 插入

thmtools 定理列表不起作用 - 缺少 \endcsname 插入

我正在尝试生成文档中所有方程的列表。我搜索过,似乎一个好的解决方案是使用thmtools,它可以生成所有定理的列表(如果我正确的话)。我正在寻找的是(在下面的例子中,在 CheatSheet 章节中)包含所有方程定理内容的列表,例如(使用 LaTeX 格式):

$Some_{Lowtext}$                                   (1)
$Some^{Hightext}$                                  (2)

最小(不)工作示例:

\documentclass[a4paper,12pt]{report}
\usepackage{theorem}
\newtheorem{equate}{}
\usepackage{thmtools}
\renewcommand{\listtheoremname}{List of Equations}
\begin{document}
\tableofcontents
\newpage
\chapter{Name of Chapter}
\section{Name of Section}
\subsection{Name of SubSection}
sometext
\begin{equate}
$Some_{Lowtext}$
\end{equate}
    Some other Text
\begin{equate}
$Some^{Hightext}$
\end{equate}
    And some more

\chapter{CheatSheet}

\listoftheorems

\end{document}

这给了我以下错误(第 24 行是之后的行\listoftheorems):

test.tex:24: Missing \endcsname inserted. []
test.tex:24: Too many }'s. []

我想知道这是否是生成此类列表的方法以及如何解决我的错误。

答案1

使用declaretheorem而不是\newtheorem

theorem和包thmtools使用不同的机制来定义定理环境:Frank Mittelbach 的theorem包使用 LaTeX-kernel\newtheorem宏,而 Ulrich Schwarz 的thmtools包提供了一个\declaretheorem宏。

thmtools包还提供了一个\listoftheorems宏,但后者仅列出了用声明的定理环境\declaretheorem不是那些只是用 声明的\newtheorem。因此,如果您想利用\listoftheorems,您应该用 声明所有定理thmtools\declaretheorem而不是\newtheorem明确使用。

\documentclass[a4paper,12pt]{report}

\usepackage{thmtools}
\declaretheorem{equate}
\renewcommand{\listtheoremname}{List of Equations}

\begin{document}
\begin{equate}[Low text]
$Some_{Lowtext}$
\end{equate}
    Some other Text
\begin{equate}[High text]
$Some^{Hightext}$
\end{equate}
\listoftheorems
\end{document}

在此处输入图片描述

有关您报告的错误的更多详细信息

如果\declaretheorem在输入文件中至少未使用一次,则\listoftheorems生成您报告的两个错误。以下是重现该问题的一些最少代码:

\documentclass{report}
\usepackage{thmtools}
%\declaretheorem{foo}
\begin{document}
\listoftheorems
\end{document}

如果取消注释上述代码的第三行,则不会生成任何错误。在我看来,这种行为是无意的,属于错误;作者可能应该得到通知。

相关内容