无法理解 thmtools 的工作原理

无法理解 thmtools 的工作原理

答案这个问题指示我进行编辑\thmt@mklistcmd以更改定理列表的外观,这似乎是解决方案,因为它定义了\csname ll@\thmt@envname\endcsname(例如,\ll@definame如果我说\newtheorem{defi}{Definizione}),那么它就是导致该外观的原因。但以下 MWE 显示编辑该命令是无用的:

\documentclass[a4paper]{report}
\usepackage{amsthm,thmtools,amsmath,amssymb,amsfonts}
\newtheorem{teor}{Theorem}[section]
\makeatletter
\renewcommand\thmt@mklistcmd{%
  \@xa\protected@edef\csname l@\thmt@envname\endcsname{% CHECK: why p@edef?
    \@nx\@dottedtocline{1}{1.5em}{\@nx\thmt@listnumwidth}{\thmt@thmname}{mu}%
  }%
  \ifthmt@isstarred
    \@xa\def\csname ll@\thmt@envname\endcsname{%
      \protect\numberline{\thmt@thmname\protect\let\protect\autodot\protect:}%
      \ifx\@empty\thmt@shortoptarg\else\protect\thmtformatoptarg{\thmt@shortoptarg}\fi
    }%
  \else
    \@xa\def\csname ll@\thmt@envname\endcsname{%
      \thmt@thmname\ \csname the\thmt@envname\endcsname:\hfil%
      \ifx\@empty\thmt@shortoptarg\else\thmt@shortoptarg\fi
    }%
  \fi
  \@xa\gdef\csname thmt@contentsline@\thmt@envname\endcsname{%
    \thmt@contentslineShow% default:show
  }%
}
\makeatother

\begin{document}
\chapter{Measures}
\begin{teor}[name=$\sigma$-subadditivity of a measure]
If $(X,\mathcal{E},\mu)$ is a measure space, then for any countable collection of measurable sets $\{A_n\}_{n\in\mathbb{N}}$ we have:
\[\mu\!\left(\bigcup_{n\in\mathbb{N}}A_n\right)\leq\!\sum_{n=1}^\infty\mu(A_n).\]
\end{teor}

\listoftheorems
\end{document}

编译它任意多次,你(或者至少我)总是会得到与没有重新定义相同的结果\thmt@mklistcmd。但是,重新定义\ll@<envname>(例如\ll@definame工作。因此显然,无论是否\thmt@mklistcmd使用,一定有其他东西定义该控制序列。因此:

  1. 这是否\thmt@mklistcmd与定理列表的出现有关,或者尽管看起来有关系,但实际上没有关系?
  2. 什么负责定义\ll@<envname>每个定理?
  3. 也许存在一些需要重新定义的东西\ll@<envname>,或者\thmt@mklistcmd在某个点上超出了我的重新定义?

编辑: 问题已经准备好结束了:),因为正如@UlrikeFischer 指出的那样,我需要改变的只是必须进行重新定义 \newtheorem{defi}{Definition}[section]。抱歉问了这么愚蠢的问题,感谢@Ulrike 的评论。

答案1

由于这个问题还没有解决,所以让我来回答一下。

正如 Ulrike Fischer 所评论的那样,

我不知道您到底想改变什么,但首先我会将重新定义移到之前\newtheorem{teor}{Theorem}[section]

这就是你必须要做的全部。显然,在重新定义之前定义定理mklistcmd会使定理具有旧的定理mklistcmd,而在重新定义之后定义定理会使定理具有所需的新的定理mklistcmd

相关内容