将标记与 ntheorem 相结合

将标记与 ntheorem 相结合

我想将tagging包与结合起来ntheorem以获得ntheorem标记的环境。 一个最小的例子是:

\documentclass{scrartcl}
\usepackage{tagging}
\usepackage{ntheorem}

\newtheorem{Def}{Definition}

%\usetag{DefTag}
\droptag{DefTag}

\newenvironment{TaggedDef}{ %
    \begin{taggedblock}{DefTag} %
        \begin{Def} %
}
{
        \end{Def} %
    \end{taggedblock} %
}

\begin{document}


\begin{TaggedDef}
Test
\end{TaggedDef}

\begin{taggedblock}{DefTag}
\begin{Def}
    Test
\end{Def}
\end{taggedblock}

\end{document}

不幸的是,第一个测试不起作用。我收到错误消息:

\begin{TaggedDef} on input line 21 ended by \end{document}. \end{document}

\droptag{DefTag}如果将 替换为\usetag{DefTag},则第二个测试工作正常,并且第一个测试工作也正常。

我做错了什么?这样就不能嵌套环境吗?

答案1

使用与环境相关的命令(我还添加了一个可选参数来TaggedDef保留可选参数,Def但这当然是可选的):

\documentclass{scrartcl}
\usepackage{tagging}
\usepackage{ntheorem}
\usepackage{etoolbox}

\newtheorem{Def}{Definition}

\usetag{DefTag}
%\droptag{DefTag}

\newenvironment{TaggedDef}[1][]{%
    \taggedblock{DefTag}%
    \ifstrempty{#1}{\Def}{\Def[#1]}%
}
{%
        \endDef%
    \endtaggedblock%
}

\begin{document}

\begin{TaggedDef}
Test.
\end{TaggedDef}

\begin{TaggedDef}[An important definition]
Test.
\end{TaggedDef}

\end{document}

在此处输入图片描述

相关内容