我目前正在文档正文中陈述定理,然后在附录中证明它们(使用 thmtools)。我目前会写类似
\begin{restatable}[Proof in \Cref{whatever}]{lemma}{whatever}
Lemma stuff
\end{restatable}
当我在附录中重述引理时,我不希望可选参数(说明证明在哪里)再次出现。有没有办法让 thmtools 或其他一些包来做到这一点?
编辑:下面我提供了一个工作示例
\documentclass{article}
\usepackage{amsthm}
\usepackage{thmtools}
\begin{document}
\newtheorem{lemma}{Lemma}
\begin{restatable}[Proof in Foo]{lemma}{whatever}
Lemma stuff
\end{restatable}
\section{Hmm}
\whatever*
\appendix
\section{Wow}
\whatever*
\end{document}
答案1
这apptools
包提供了\IfAppendix{<true>}{<false}
可用于检测\appendix
的xpatch
\thmt@restatable
我们可以进入(由 调用的宏)的定义\begin{restatable}
并调整可选参数的使用方式,相关部分是\csname #2\@xa\endcsname\ifx\@nx#1\@nx\else[{#1}]\fi
。我们可以将其设置为分支,以便仅在我们不在附录中时才使用可选参数,因此将该代码段替换为 ,\IfAppendix{\csname #2\@xa\endcsname}{\csname #2\@xa\endcsname\ifx\@nx#1\@nx\else[{#1}]\fi
以便\ifx
检查是否#1
为非空然后传递它的 仅包含在附录之外。
\documentclass{article}
\usepackage{xpatch}
\usepackage{thmtools}
\usepackage{apptools}
\makeatletter
\xpatchcmd{\thmt@restatable}% Edit \thmt@restatable
{\csname #2\@xa\endcsname\ifx\@nx#1\@nx\else[{#1}]\fi}% Replace this code
{\IfAppendix{\csname #2\@xa\endcsname}{\csname #2\@xa\endcsname\ifx\@nx#1\@nx\else[{#1}]\fi}}% with this code
{}{} % execute code for success/failure instances
\makeatother
\newtheorem{lemma}{Lemma}
\begin{document}
\begin{restatable}[Proof in Foo]{lemma}{whatever}
Lemma stuff
\end{restatable}
\whatever*
\appendix
\whatever*
\end{document}
生产