我正在尝试定义一些类似于命名定理的东西自定义定理名称除了使用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
,只是为了检查是否没有缩进。