我想将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}