如何在 thmtools \listoftheorems 中显示定理主体

如何在 thmtools \listoftheorems 中显示定理主体

我想在我的文档中添加一个定理列表,因此我添加了thmtools。这给出了一个定理列表,但格式如下。

1.1 定理。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。24

1.2 定理。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。二十五

1.3 定理。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。二十八

我希望它看起来像这样:

定理 1.1。对于直角三角形,$x^2 + y^2 = z^2$。 。 。 。 。 。 。 。 。 。 。 。 。 。 。24

定理 1.2。$\sin^2(\theta) + \cos^2(\theta) = 1$ 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。二十五

定理 1.3。其他定理。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。二十八

我已经制定了以下计划:

\makeatletter
\def\ll@theorem{%
  {\bf \thmt@thmname~ \protect\numberline{\thetheorem.~}} %
  Theorem Body goes here...
}
\def\l@thmt@theorem{} 
\makeatother

这给了我这个:

定理 1.1。定理主体在此处...。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 24

定理 1.2。定理主体在此处...。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 二十五

定理 1.3。定理主体在此处...。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 二十八

我只是在努力弄清楚如何用和之间Theorem Body goes here...替换TeX\begin{theorem}\end{theorem}

这是一个可编译文档的示例

\documentclass{article}

\usepackage{amsthm, thmtools}
\newtheorem{theorem}{Theorem}[section]




\makeatletter
\def\ll@theorem{%
  {\bf \thmt@thmname~ \protect\numberline{\thetheorem.~}} %
  Theorem Body goes here...
}
\def\l@thmt@theorem{} 
\makeatother


\begin{document}
\title{Test}

\listoftheorems


\section{Section A}

\begin{theorem}
For a right angle triangle, $x^2 + y^2 = z^2$
\end{theorem}

\begin{proof}
Proof...
\end{proof}

\begin{theorem}
$\sin^2(\theta) + \cos^2(\theta) = 1$
\end{theorem}

\begin{proof}
Proof...
\end{proof}

\section{Section B}

\begin{theorem}
Some other theorem
\end{theorem}

\begin{proof}
Proof...
\end{proof}


\end{document}

干杯

安东尼

答案1

抓取‘BODY’,即可使用和命令完成theorem之间的内容。\begin{theorem}...\end{theorem}\RenewEnviron\BODY

\RenewEnviron命令定义theorem为原始版本(之前已存储到命令中)的包装\let\theorem@@orig\let\theorem@@origend

该包environ提供了包含if\BODY之间任何内容的命令,它是一个由或组成的环境。\begin{foo}...\end{foo}fooNewEnviron\RenewEnviron

\BODY然后就可以使用这个命令\ll@theorem了!

\documentclass{article}

\usepackage{amsthm, thmtools}
\newtheorem{theorem}{Theorem}[section]

\usepackage{environ}


\makeatletter
\def\ll@theorem{%
  {\bfseries \thmt@thmname~ \protect\numberline{\thetheorem.~}} %
  \BODY% 
}
\def\l@thmt@theorem{} 
\makeatother


\makeatletter
\let\theorem@@orig\theorem
\let\theorem@@origend\endtheorem
\RenewEnviron{theorem}{%
  \theorem@@orig%
  \BODY%
}[\theorem@@origend]
\makeatother


\title{Test}

\begin{document}

\listoftheorems


\section{Section A}

\begin{theorem}
For a right angle triangle, $x^2 + y^2 = z^2$
\end{theorem}

\begin{proof}
Proof...
\end{proof}

\begin{theorem}
  $\sin^2(\theta) + \cos^2(\theta) = 1$
\end{theorem}

\begin{proof}
  Proof...
\end{proof}

\section{Section B}

\begin{theorem}
Some other theorem
\end{theorem}

\begin{proof}
Proof...
\end{proof}


\end{document}

在此处输入图片描述

相关内容