为什么我无法用 newenviron 包装图形环境?

为什么我无法用 newenviron 包装图形环境?

这看起来像是一种包装figure环境的相当简单的方法:

\documentclass{article}
\usepackage{newenviron}
\newenviron{myenv}{
    \begin{figure}
        \envbody
    \end{figure}
}
\begin{document}
\begin{myenv}
    Hi!
\end{myenv}
\end{document}

然而,我得到了这个:

Incomplete \ifcsname; all text was ignored after line 11.
<inserted text>

我见过一些例子,其中figure首先重命名(用\let),然后更新;但我的例子有什么问题?

答案1

你需要看看第一的错误:

! LaTeX Error: Missing \begin{document}.

See the LaTeX manual or LaTeX Companion for explanation.
Type  H <return>  for immediate help.
 ...                                              

l.8 \begin{d
            ocument}
? 

问题出在哪里?该软件包的简明文档指出

% \newenviron<optional *>
%   {<name>}[<narg>][<default of 1st argument>]{<start-code>}{<end-code>}

这表明语法与 相同\newenvironment

\documentclass{article}
\usepackage{newenviron}
\newenviron{myenv}{
    \begin{figure}
        \envbody
    \end{figure}
}{}%<--- nothing at end

\begin{document}
\begin{myenv}
    Hi!
\end{myenv}
\end{document}

我建议改用xparse

\documentclass{article}
\usepackage{xparse}

\NewDocumentEnvironment{myenv}{O{htp}+b}{%
    \begin{figure}[#1]
        #2
    \end{figure}
}{}

\begin{document}
\begin{myenv}
    Hi!
\end{myenv}
\end{document}

相关内容