\macro
当使用可选参数时,以下最小示例无法编译:
\documentclass{article}
\usepackage{xparse,amsmath}
\NewDocumentCommand{\macro}{o}{A\IfValueT{#1}{(#1)}}%
\begin{document}
\begin{align}
abc \macro \\
def \macro[A]% Error
\end{align}
\end{document}
我正在使用以下文件列表:
*文件列表* article.cls 2014/09/29 v1.4h 标准 LaTeX 文档类 size10.clo 2014/09/29 v1.4h 标准 LaTeX 文件(尺寸选项) xparse.sty 2016/03/26 v6466 L3 实验文档命令解析器 expl3.sty 2016/03/26 v6466 L3 编程层(加载器) expl3-code.tex 2016/03/26 v6466 L3 编程层 l3pdfmode.def 2016/03/26 v6465 L3 实验驱动程序:PDF 模式 amsmath.sty 2016/03/03 v2.15a AMS 数学功能 amstext.sty 2000/06/29 v2.01 AMS 文本 amsgen.sty 1999/11/30 v2.0 通用函数 amsbsy.sty 1999/11/29 v1.2d 粗体符号 amsopn.sty 1999/12/14 v2.01 运营商名称 ************
答案1
最新的更新使得l3kernel
由 定义的命令中的可选参数的代码\NewDocumentCommand
在所有情况下都不起作用(这种情况尤其会发生align
)。
2016/03/28发布的更新l3packages
(其中包括)修复了该问题。xparse
不幸的是,它也变得xparse
无法使用,因为它需要一个不存在的版本l3kernel
(它需要 2016/03/28,但 2016/03/26 是可作为发布日期的l3kernel
)。
我手动修复了日期,您的示例可以正常工作。我很确定这只是一个暂时的问题,我们会尽快修复这个错误。
更新,2016 年 4 月 1 日
今天更新后tlmgr
,TeX Live 的问题已经解决,您的示例编译时没有错误。
我相信更新的 MiKTeX 也能起作用。
> tlmgr info l3kernel l3packages
package: l3kernel
category: Package
shortdesc: LaTeX3 programming conventions
longdesc: [...]
installed: Yes
revision: 40184
sizes: src: 2329k, doc: 7473k, run: 877k
relocatable: No
cat-version: SVN 6468
cat-date: 2016-03-30 18:26:01 +0200
cat-license: lppl1.3
cat-topics: format latex3 pre-release
cat-related: l3packages l3experimental
collection: collection-latexrecommended
package: l3packages
category: Package
shortdesc: High-level LaTeX3 concepts
longdesc: [...]
installed: Yes
revision: 40176
sizes: src: 301k, doc: 1673k, run: 141k
relocatable: No
cat-version: SVN 6468
cat-date: 2016-03-29 00:16:53 +0200
cat-license: lppl1.3
cat-topics: macro-supp latex3 pre-release
cat-related: l3kernel l3experimental
collection: collection-latexrecommended