具有手动定理编号的新定理环境

具有手动定理编号的新定理环境

我想知道如何创建一个新的定理环境/样式,以便我可以手动插入定理编号。也就是说,我设想了类似

 \begin{newtheorem}{2.3'}[title]
      This is a theorem.
 \end{newtheorem}

翻译成

定理 2.3'(标题)这是一个定理。

第二个例子是,

 \begin{newtheorem}{A}[title]
      This is a theorem.
 \end{newtheorem}

应该给予

定理A(标题)这是一个定理。

如何能够定义这样一个定理环境,其参数(除了手动插入“数字”之外)与通常的定理环境相同?

注意,如果我将 添加\label到此类定理中,我希望相应的\ref命令打印出参数中定义的定理编号。也就是说,在上面的例子中\ref应该打印2.3'

我将非常感激任何帮助!提前致谢!

答案1

非常简单!;-) 1

\documentclass{article}
\usepackage{amsthm}

\newtheorem{manualtheoreminner}{Theorem}
\newenvironment{manualtheorem}[1]{%
  \renewcommand\themanualtheoreminner{#1}%
  \manualtheoreminner
}{\endmanualtheoreminner}

\begin{document}

\begin{manualtheorem}{2.3'}[title]\label{foo}
This is a theorem.
\end{manualtheorem}

\begin{manualtheorem}{A}[title]\label{baz}
This is a theorem.
\end{manualtheorem}

Here is \ref{foo} and \ref{baz}.

\end{document}

在此处输入图片描述


1 去过也做过。

答案2

首先,您无法定义类似定理的环境newtheorem,因为已经存在\newtheorem定义这些环境的宏,这仅仅是由于名称冲突。假设我们有一个环境theorem。然后您可以在本地更改\thetheorem

\documentclass{article}
\usepackage{amsmath,amsthm}
  \newtheorem{theorem}{Theorem}

\begin{document}
\begingroup
\renewcommand\thetheorem{2.3'}
\begin{theorem}[title]
  This is a theorem.
\end{theorem}
\endgroup
\end{document}

当将其包装到自己的环境中时,您不需要明确分组,因为\begin\end定义会处理这个问题:

\newenvironment{Apollo13theorem}[1]{%
  \renewcommand\thetheorem{#1}
  \theorem
}{\endtheorem}

然后将按照 OP 的要求使用自定义环境:

\begin{Apollo13theorem}{A}[title]
  This is a theorem.
\end{Apollo13theorem}

例子

答案3

使用以下版本\NewDocumentEnvironment

\documentclass{article}
\usepackage{amsthm}
\newtheorem{theorem}{Theorem}
\NewDocumentEnvironment{mytheorem}{m}%
  {\renewcommand{\thetheorem}{$\mathbf{#1}$}%
   \begin{theorem}
  }%
  {\end{theorem}}
\begin{document}

\begin{mytheorem}{2.3'}[note]\label{foo}
  This is a theorem.
\end{mytheorem}

\begin{mytheorem}{A}[note]\label{baz}
  This is a theorem.
\end{mytheorem}

\ref{foo} and \ref{baz}.

\end{document}

在此处输入图片描述

相关内容