我想restatable
在自定义环境中使用该包。它几乎可以正常工作,但当我重新声明时\name*
它不使用原始标签。
在您询问之前,我没有使用 newtheorem,因为它的格式不符合我的需要,而且amsthm
令我沮丧的是,使用不是一个选择。
这是一个简单的例子:
\documentclass{article}
\usepackage{thmtools}
\newcounter{main}
\newcommand{\envheader}[2]{%
\refstepcounter{main}\par\smallskip \textbf{{#2}~\thesection.\themain.}
\if\relax\detokenize{#1}\relax\else{({#1})}\fi %% Name of the theorem
}
\newenvironment{theorem}[1][]{\envheader{#1}{Theorem}\itshape\/}{\smallskip}
\newenvironment{lemma}[1][]{\envheader{#1}{Lemma}\itshape\/}{\smallskip}
\begin{document}
\begin{restatable}{theorem}{mytheorem}\label{thm:mytheorem}
How you doin'?
\end{restatable}
\mytheorem*
\end{document}
以下是我得到的结果:
答案1
restatable 要求内部计数器与环境同名,因此您应使用 theorem 而不是 main。附注:您的定义不会阻止定理标题和正文之间的分页符。
\documentclass{article}
\usepackage{thmtools}
\newcounter{theorem}
\newcommand{\envheader}[2]{%
\refstepcounter{theorem}\par\smallskip \textbf{{#2}~\thesection.\thetheorem.}
\if\relax\detokenize{#1}\relax\else{({#1})}\fi %% Name of the theorem
}
\newenvironment{theorem}[1][]{\envheader{#1}{Theorem}\itshape\/}{\smallskip}
\newenvironment{lemma}[1][]{\envheader{#1}{Lemma}\itshape\/}{\smallskip}
\begin{document}
\begin{restatable}{theorem}{mytheorem}\label{thm:mytheorem}
How you doin'?
\end{restatable}
\mytheorem*
\end{document}