thmtools:注释中的括号行为异常

thmtools:注释中的括号行为异常

我使用thmtools包来定义定理样式,因为我希望注释具有不同的颜色:

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

\declaretheoremstyle[
spaceabove = \topsep,
spacebelow = \topsep,
headfont = \normalfont\bfseries,
notefont = \color{olive}\normalfont\mdseries,
notebraces = {}{},
headformat = \NAME{} {\NUMBER}\NOTE,
headpunct = {\newline},
bodyfont = \normalfont\upshape
]{fordefinition}

\theoremstyle{fordefinition}
\newtheorem{defn}{Definition}[section]

\begin{document}
\begin{defn}[Property(T) group]
asdg
\end{defn}
\end{document}
 

但括号()在注释中表现得很奇怪。右括号总是出现在注释的末尾。

在此处输入图片描述

有什么办法可以解决这个问题,以便我得到我想要的括号吗?我试过使用,\right)但没有用,我认为这不是一个好主意。

PS 我是否也正确定义了换行符以在标题后给出换行符?它可以工作,但我不确定这是否是理想的方法。

答案1

这确实很奇怪。我尝试了一些众所周知的麻烦方法,其中包括:

  • %在宏中需要在行尾放置一个,但在这里无关紧要
  • 将括号作为一个整体(可以这么说)至关重要:{(T)}

看起来,当这个包的内部“吃掉并消化”数据时,你会感到困惑(正如 Knuth 对 TeX 所说的那样):

  • ...
  • 处理t得很好
  • 处理y得很好
  • 处理得很好
  • 处理(让你走上错误的路线

就是这样。

结果

% https://tex.stackexchange.com/questions/687217/thmtools-parentheses-behaving-weirdly-in-note

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

\declaretheoremstyle[%
spaceabove = \topsep,%
spacebelow = \topsep,%
headfont = \normalfont\bfseries,%
notefont = \color{olive}\normalfont\mdseries,%
notebraces = {}{},%
headformat = \NAME{} {\NUMBER}\NOTE,%
headpunct = {\newline},%
bodyfont = \normalfont\upshape%
]{fordefinition}

\theoremstyle{fordefinition}
\newtheorem{defn}{Definition}[section]

\begin{document}
 \begin{defn}[Property {(T)} group]% <<<
    Some of the most wonderful theorems ever heard of.
 \end{defn}
\end{document}

答案2

thmtools包使用()来在其某些宏中划定注释(它不应该),如果注释中有括号,则会失败。

这里我修补了相关的命令以供使用<>

\documentclass{article}
\usepackage{xcolor} 
\usepackage{amsthm}
\usepackage{thmtools}
\usepackage{xpatch}

\makeatletter
\xpatchcmd{\thmt@setheadstyle}{(}{<}{}{}
\xpatchcmd{\thmt@setheadstyle}{)}{>}{}{}
\def\thmt@embrace#1#2<#3>{#1#3#2}
\makeatother

\declaretheoremstyle[
  spaceabove = \topsep,
  spacebelow = \topsep,
  headfont = \normalfont\bfseries,
  notefont = \color{olive}\normalfont\mdseries,
  notebraces = {}{},
  headformat = \NAME\ \NUMBER\NOTE,
  headpunct = {\newline},
  bodyfont = \normalfont\upshape
]{fordefinition}

\theoremstyle{fordefinition}
\newtheorem{defn}{Definition}[section]

\begin{document}

\begin{defn}[Property(T) group]
asdg
\end{defn}

\end{document}

在此处输入图片描述

相关内容