如何在 thmtools 的 headstyle 中使用参数?

如何在 thmtools 的 headstyle 中使用参数?

我正在尝试定义一些类似于命名定理的东西自定义定理名称除了使用thmtools。据我所知,headspec 将在headstyle的键中提供\declaretheoremstyle。但是,以下 mwe 会产生错误

Illegal parameter number in definition of \thmt@tmp. ...eadstyle={{\thmnote{#3's }#1}}]{namedStyle}

当然我可以使用\newtheoremstyle而不是\declaretheoremstyle,但我宁愿不这样做,因为我thmtools无论如何都会使用,并且宁愿尽可能不重复内置默认值。而且 thmtools 语法看起来通常更简洁。

\documentclass{minimal}

\usepackage{amsthm}
\usepackage{thmtools}
\declaretheoremstyle[headstyle={\thmnote{#3's }#1}]{namedStyle}
\declaretheorem[style=namedStyle, title = Theorem]{named}

\begin{document}

Now let us present that most famous of all theorems.

\begin{named}[Fred]
All odd numbers are prime.
\end{named}

\end{document}

大部分 mwe 都抄袭自Loop Space 对上述问题的回答

答案1

在其中\declaretheoremstyle您可以参考参数#1#2以及在,和#3中使用的参数。\newtheoremstyle\NAME\NUMBER\NOTE

但是,\NOTE已经收到了格式化,所以我们需要将其删除。

\documentclass{article}
\usepackage{showframe}
\usepackage{amsthm}
\usepackage{thmtools}

\makeatletter
\declaretheoremstyle[
  notebraces={}{},
  notefont=\bfseries,
  headformat=\let\thmt@space\@empty\NOTE's \NAME,
]{namedStyle}
\makeatother

\declaretheorem[style=namedStyle, title = Theorem]{named}

\begin{document}

Now let us present that most famous of all theorems.

\begin{named}[Fred]
All odd numbers are prime.
\end{named}

\end{document}

没有可以改变的选项\thmt@space,所以我使用了一种破解方法。

在此处输入图片描述

规则由生成showframe,只是为了检查是否没有缩进。

相关内容