定理的第二个可选论证

定理的第二个可选论证

我用它ntheorem来将定理包含到我的论文中。目前,我的定理标题打印如下:(xy)定理(标题)。

我用来实现这一点的代码大致如下。

\documentclass{scrreprt}

\usepackage[english]{babel}             
\usepackage[intlimits]{amsmath}         
\usepackage[amsmath,thmmarks,hyperref]{ntheorem}    % Definitionen, Sätze, ...                  

\makeatletter
\newtheoremstyle{nummermitklammern}
{\item[\theorem@headerfont\hskip\labelsep (##2)\ ##1.\theorem@separator]}%
{\item[\theorem@headerfont\hskip\labelsep (##2)\ ##1 (##3).\theorem@separator]}%
\makeatother
\theoremstyle{nummermitklammern}

\newtheorem{x}{}[chapter]
\newtheorem{theorem}[x]{Theorem}

\begin{document}
\begin{theorem}[Title]
This is a theorem.
\end{theorem}
\end{document}

我现在想要做的是在插入定理时提供第二个可选参数,例如来源。如果提供了来源,我希望将定理标题打印为:(xy)定理(标题)[来源]。

有什么办法可以做到这一点吗?请注意,我有其他类似定理的环境,如推论和示例定义(使用与定理相同的计数器),我希望它们的行为相同。

答案1

这是一个伪肮脏的黑客,似乎有效(至少在这种情况下,我不知道它是否会在其他情况下失败)

\documentclass{scrreprt}

\usepackage[english]{babel}             
\usepackage{mathtools}         
\usepackage[amsmath,thmmarks,hyperref]{ntheorem}
\usepackage{xparse}

\makeatletter
\newtheoremstyle{nummermitklammern}
  {\finaslonchasnummermitklammernaux{##1}{##2}}
  {\finaslonchasnummermitklammernaux{##1}{##2}[##3]}
\NewDocumentCommand\finaslonchasnummermitklammernaux{mmou\ignorespaces o}
 {\item[\theorem@headerfont\hskip\labelsep
    (#2)\ #1%
    \IfValueT{#3}{ (#3)}%
    \IfValueT{#5}{ [#5]}%
    .\theorem@separator]#4\ignorespaces}
\makeatother
\theoremstyle{nummermitklammern}

\newtheorem{theorem}{Theorem}[chapter]

\begin{document}

\begin{theorem}[Title][Source]
  This is a theorem.
\end{theorem}

\end{document}

相关内容