
Estou tentando gerar uma lista de todas as equações em um documento. Pesquisei e me pareceu que uma boa solução seria usar o thmtools
, que pode gerar uma lista de todos os teoremas (se estiver correto). O que procuro é (no exemplo a seguir, no capítulo CheatSheet) uma lista com o conteúdo de todos os teoremas de igualdade, como tal (com formatação LaTeX):
$Some_{Lowtext}$ (1)
$Some^{Hightext}$ (2)
Exemplo mínimo (não) 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}
Isso me dá os seguintes erros (a linha 24 é a linha depois \listoftheorems
):
test.tex:24: Missing \endcsname inserted. []
test.tex:24: Too many }'s. []
Gostaria de saber se esta é a maneira de produzir essa lista e como posso resolver meu erro.
Responder1
Usar declaretheorem
em vez de\newtheorem
Os pacotes theorem
e thmtools
usam mecanismos diferentes para definir ambientes de teoremas: o pacote de Frank Mittelbach theorem
usa a macro do kernel LaTeX \newtheorem
, enquanto o pacote de Ulrich Schwarz thmtools
fornece uma \declaretheorem
macro.
O thmtools
pacote também fornece uma \listoftheorems
macro, mas esta última lista apenas os ambientes do teorema declarados com \declaretheorem
,nãoaqueles simplesmente declarados com \newtheorem
. Portanto, se você quiser tirar vantagem de \listoftheorems
, você deve declarar todos os seus teoremas com thmtools
's \declaretheorem
e não usar \newtheorem
explicitamente.
\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}
Mais detalhes sobre os erros que você relata
Se \declaretheorem
não for usado pelo menos uma vez no arquivo de entrada, \listoftheorems
gera os dois erros que você reporta. Aqui está um código mínimo que reproduz o problema:
\documentclass{report}
\usepackage{thmtools}
%\declaretheorem{foo}
\begin{document}
\listoftheorems
\end{document}
Nenhum erro será gerado se a terceira linha do código acima não for comentada. Na minha opinião, esse comportamento não é intencional e é qualificado como um bug; o autor provavelmente deveria ser notificado sobre isso.