我用它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}