软件包或 LaTeX3 基础的一些最新变化xparse
似乎导致参数处理方面的行为有所改变。在某些情况下,至少一个字符被吞噬,而它不应该被吞噬。
以下 MWE 显示了一种相当无害的情况,但我真正的问题是基于xparse
逐字文本的环境删除了该文本的第一个字符,请参阅https://github.com/TFS/tcolorbox/issues/43
MWEmyenv
使用一个可选参数构造环境。如果不使用此参数,则空格会被吞噬。在更复杂的场景中使用,如上所述,关键内容可能会被吞噬。
有第二个myENV
没有参数的环境来显示预期的行为。
\documentclass{article}
\usepackage{xparse}
\NewDocumentEnvironment{myenv}{ O{} }{Alpha}{Omega}
\NewDocumentEnvironment{myENV}{}{Alpha}{Omega}
\begin{document}
\begin{myenv}[parameter]
Test
\end{myenv}
\begin{myenv}[]
Test
\end{myenv}
\begin{myenv}
Test
\end{myenv}
\begin{myENV}
Test
\end{myENV}
\end{document}
如果此代码针对的安装进行编译xparse (2018/02/21)
,则输出将符合预期:
xparse (2018/04/30)
但是,如果针对或 的安装编译此代码xparse (2018/05/12)
,则输出为:
我认为这是一个错误。但是,如果这是一个功能,我该如何摆脱它?有没有办法用 clean 或 dirty 技巧恢复旧的行为,从而帮助解决我真正的问题(见上文)?