带有 thmtools 的环境 => 如果在末尾使用 itemize 则空间过多(qed 符号也有问题)

带有 thmtools 的环境 => 如果在末尾使用 itemize 则空间过多(qed 符号也有问题)

我想使用这个thmtools包,因为它提供了一些用于声明环境(证明、定理、示例等)的很棒的功能。

我特别喜欢“qed”功能,它在环境末尾放置了一些不错的符号,例如 qed 方块。例如,我使用不同的符号来表示不同的环境。

但是,如果我在这样的环境末尾使用特殊块(itemize、align),则会出现一些问题。“qed”符号太低,浪费了很多空间。

测试以下例子:

\documentclass{book}

\usepackage{amsthm}
\usepackage{thmtools}

\declaretheoremstyle[headpunct=\\*,qed=\ensuremath{\triangle}]{myexstyle} 
\declaretheorem[style=myexstyle]{myexample} 

\begin{document} 

\begin{myexample}[This is an example 1]
This is an example...

And the symbol is on the correct line!
\end{myexample} 

\begin{myexample}[This is an example 2]
This is an another example...
\begin{itemize}
  \item And the symbol is \emph{not} on the correct line!
\end{itemize}
\end{myexample} 

\end{document}

我希望\triangle显示与最后一条 同一行\item

我已经为align环境修复了该问题(我现在正在使用包adjustboxund aligned),但如果我想使用itemize所示的方式,我无法解决该问题。

我想我也知道问题的原因。\end{itemize}结束段落并且必须开始一个新段落才能放置“qed”符号。

有办法吗?解决方法?最好是没有\qedhere或针对每个环境进行手动调整!我还想知道包enumitem(或另一个包)是否有任何选项有用?

答案1

结束标记的问题amsthm是一个众所周知的问题;以下注释来自文档:

proof如果环境的最后一部分是显示方程或列表环境或类似的东西,则QED 符号的放置可能会有问题 。在这种情况下,将\qedhere命令放在 QED 符号应该出现的位置...

因此,一个选择是手动输入\qedhere

\begin{myexample}[This is an example 2]
This is an another example...
\begin{itemize}
  \item And the symbol is on the correct line!\qedhere
\end{itemize}
\end{myexample}

但是,你说你不想手动使用\qedhere,那么恐怕使用amsthm并不是最好的选择。一种选择是使用而不是ntheorem作为 的后端,因为前者解决了在正确位置自动设置定理类环境的结束标记的问题(即使环境以 displaymath 或 list 环境结尾)。thmtoolsamsthm

现在,您必须做出选择:要么坚持amsthm并接受在某些情况下必须手动输入\qedhere,要么切换到ntheorem;也许定理包:使用哪一个,哪些会冲突?可以帮助您做出决定。

这是您的示例,但现在使用ntheorem

\documentclass{book}
\usepackage[thmmarks]{ntheorem}
\usepackage{thmtools}

\declaretheoremstyle[
headpunct={},
qed=\ensuremath{\triangle},
bodyfont=\normalfont
]{myexstyle} 
\declaretheorem[style=break]{myexample} 

\begin{document} 

\begin{myexample}[This is an example 1]
This is an example...

And the symbol is on the correct line!
\end{myexample} 

\begin{myexample}[This is an example 2]
This is an another example...
\begin{itemize}
  \item And the symbol is on the correct line!
\end{itemize}
\end{myexample} 

\end{document}

在此处输入图片描述

如您所见,标题的注释以粗体显示;不幸的是,notefont的键thmtools不受支持ntheorem,因此如果您想更改注释字体,则必须在序言中添加以下内容:

\makeatletter
\renewtheoremstyle{break}%
  {\item[\rlap{\vbox{\hbox{\hskip\labelsep \theorem@headerfont
          ##1\ ##2\theorem@separator}\hbox{\strut}}}]}%
  {\item[\rlap{\vbox{\hbox{\hskip\labelsep \theorem@headerfont
          ##1\ ##2\ {\normalfont(##3)}\theorem@separator}\hbox{\strut}}}]}
\makeatother

相关内容