xparse 的 \DeclareDocumentEnvironment 在已定义的环境中给出错误

xparse 的 \DeclareDocumentEnvironment 在已定义的环境中给出错误

我正在尝试重新定义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的定义。因此错误是因为想要定义一个已经存在的环境。事实上,如果你使用 ,你会得到完全相同的错误。subfiguresubtable\AtBeginDocument\newenvironment{subfigure}\NewDocumentEnvironment

如果你

\AtBeginDocument{%
  \DeclareDocumentEnvironment{subfigure}{m}{%
    % Do nothing
  }{%
    \subcaption{#1}%
  }%
}

没有错误。

相关内容