是否有一个好的方法,使得证明结束标记(即\qedsymbol
)对于定理的证明看起来是一种方式,而对于引理的证明看起来则是另一种方式?
我知道我可以在任何时候出现引理证明时在本地更改其定义\qedsymbol
,但我想知道是否有办法自动执行此操作,而无需\qedsymbol
每次手动重新定义。
编辑(进一步澄清):
以下是我问题的另一种表述:我有
\theoremstyle{definition}
\newtheorem{theorem}{Theorem}
\newtheorem{lemma}[theorem]{Lemma}
在我的标题中创建theorem
和lemma
环境。我希望\begin{proof} \end{proof}
定理之后的环境与引理之后的环境相比具有不同的结束标记\begin{proof} \end{proof}
。有什么方法可以做到这一点吗?例如,有没有办法我可以轻松创建某种单独的lemmaproof
环境,该环境具有与默认环境不同的结束标记proof
?
答案1
您可以使用 LaTeX3 的钩子管理工具来利用环境结束后的代码执行。例如,
\AddToHook{env/theorem/after}{<stuff>}
将执行<stuff>
after
ironment theorem
env
。这样,您可以\qedsymbol
在每个特定的类定理环境之后进行更新。
\documentclass{article}
\usepackage{amsthm}
\theoremstyle{definition}
\newtheorem{theorem}{Theorem}
\newtheorem{lemma}[theorem]{Lemma}
% Default \qedsymbol is \openbox
% Make any subsequent proof have unique \qedsymbol
\AddToHook{env/theorem/after}{\renewcommand\qedsymbol{\openbox}}
\AddToHook{env/lemma/after}{\renewcommand\qedsymbol{$\clubsuit$}}
\begin{document}
% Theorem
\begin{theorem}
This is a theorem.
\end{theorem}
\begin{proof}
This is a proof of the theorem.
\end{proof}
% Lemma
\begin{lemma}
This is a lemma.
\end{lemma}
\begin{proof}
This is a proof of the lemma.
\end{proof}
\begin{proof}
This is a different proof of the lemma.
\end{proof}
% Theorem
\begin{theorem}
This is a theorem.
\end{theorem}
\begin{proof}
This is a proof of the theorem.
\end{proof}
\end{document}
如果您对定理风格的特定环境感兴趣,您可以使用如下内容:
\NewDocumentEnvironment{lemmaproof}{ }{%
\RenewDocumentCommand{\qedsymbol}{}{$\clubsuit$}% proof-specific \qedsymbol
\proof
}{%
\endproof
}
上述操作\qedsymbol
在本地更新,在新定义的内部lemmaproof
,同时仍然允许使用proof
环境的可选参数。