
Estoy intentando generar una lista de todas las ecuaciones en un documento. He buscado y me pareció que una buena solución sería utilizar thmtools
, que puede generar una lista de todos los teoremas (si estoy en lo cierto). Lo que estoy buscando es (en el siguiente ejemplo, en el capítulo CheatSheet) una lista con el contenido de todos los teoremas de igualdad, como tales (con formato LaTeX):
$Some_{Lowtext}$ (1)
$Some^{Hightext}$ (2)
Ejemplo mínimo (no) funcional:
\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}
Esto me da los siguientes errores (la línea 24 es la línea después \listoftheorems
):
test.tex:24: Missing \endcsname inserted. []
test.tex:24: Too many }'s. []
Me pregunto si esta es la manera de producir dicha lista y cómo puedo resolver mi error.
Respuesta1
Usar declaretheorem
en lugar de\newtheorem
Los paquetes theorem
y thmtools
utilizan diferentes mecanismos para definir entornos de teoremas: el paquete de Frank Mittelbach theorem
utiliza la macro del núcleo LaTeX \newtheorem
, mientras que el paquete de Ulrich Schwarz thmtools
proporciona una \declaretheorem
macro.
El thmtools
paquete también proporciona una \listoftheorems
macro, pero esta última solo enumera los entornos de teoremas declarados con \declaretheorem
,noaquellos simplemente declarados con \newtheorem
. Por lo tanto, si desea aprovechar \listoftheorems
, debe declarar todos sus teoremas con thmtools
y \declaretheorem
no usarlos \newtheorem
explícitamente.
\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}
Más detalles sobre los errores que reportas
Si \declaretheorem
no se utiliza al menos una vez en el archivo de entrada, \listoftheorems
genera los dos errores que informa. Aquí hay un código mínimo que reproduce el problema:
\documentclass{report}
\usepackage{thmtools}
%\declaretheorem{foo}
\begin{document}
\listoftheorems
\end{document}
No se generan errores si la tercera línea del código anterior no está comentada. En mi opinión, ese comportamiento no es intencionado y se considera un error; Probablemente debería notificarse al autor al respecto.