![thmtools 定理列表不起作用 - 缺少 \endcsname 插入](https://linux22.com/image/281627/thmtools%20%E5%AE%9A%E7%90%86%E5%88%97%E8%A1%A8%E4%B8%8D%E8%B5%B7%E4%BD%9C%E7%94%A8%20-%20%E7%BC%BA%E5%B0%91%20%5Cendcsname%20%E6%8F%92%E5%85%A5.png)
我正在尝试生成文档中所有方程的列表。我搜索过,似乎一个好的解决方案是使用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}
如果取消注释上述代码的第三行,则不会生成任何错误。在我看来,这种行为是无意的,属于错误;作者可能应该得到通知。