我正在尝试重新定义subfigure
由包定义的现有环境subcaption
。为此,我使用xparse
's,DeclareDocumentEnvironment
因为它应该声明一个新环境,无论它是否已经存在。但出于某种原因,我仍然收到编译警告,提示该\subfigure
命令已存在。
以下是 MWE:
\documentclass{article}
\usepackage{subcaption}
\usepackage{xparse}
\DeclareDocumentEnvironment{subfigure}{m}{%
% Do nothing
}{%
\subcaption{#1}%
}
\begin{document}
\begin{figure}
\begin{subfigure}{The caption}
The figure
\end{subfigure}
\end{figure}
\end{document}
这为什么不能按预期发挥作用?
当然,一种解决方法是简单地为我的自定义环境使用另一个名称,但我很好奇为什么这不能按我希望的方式工作。
答案1
该包在执行钩子时延迟了和subcaption
的定义。因此错误是因为想要定义一个已经存在的环境。事实上,如果你使用 ,你会得到完全相同的错误。subfigure
subtable
\AtBeginDocument
\newenvironment{subfigure}
\NewDocumentEnvironment
如果你
\AtBeginDocument{%
\DeclareDocumentEnvironment{subfigure}{m}{%
% Do nothing
}{%
\subcaption{#1}%
}%
}
没有错误。