
Я пытаюсь сгенерировать список всех уравнений в документе. Я искал и, похоже, хорошим решением будет использовать thmtools
, который может сгенерировать список всех теорем (если я прав). То, что я ищу, это (в следующем примере, в главе CheatSheet) список с содержимым всех equate-теорем, как таковых (с форматированием 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
используют разные механизмы для определения сред теорем: пакет Фрэнка Миттельбаха theorem
использует макрос LaTeX-kernel , тогда как пакет \newtheorem
Ульриха Шварца предоставляет макрос.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}
Ошибок не возникает, если третья строка кода выше не комментируется. По моему мнению, такое поведение непреднамеренно и квалифицируется как ошибка; автору, вероятно, следует сообщить об этом.