![xparse 在环境之后丢失可选参数的默认值](https://linux22.com/image/442937/xparse%20%E5%9C%A8%E7%8E%AF%E5%A2%83%E4%B9%8B%E5%90%8E%E4%B8%A2%E5%A4%B1%E5%8F%AF%E9%80%89%E5%8F%82%E6%95%B0%E7%9A%84%E9%BB%98%E8%AE%A4%E5%80%BC.png)
一些曾经可以运行的代码在最近更新的系统上停止了工作(据我所知,是 l3packages 的修订版 61040;我不知道它能运行的版本号),我试图了解这是否是一个新的错误或者我是否做错了什么。
简而言之:对于使用NewDocumentEnvironment
具有指定默认值的可选参数(O
类型参数)定义的环境,该参数的值在环境主体前代码中正确设置为指定值或默认值 - 但如果使用默认值,则参数值将在环境主体后代码中恢复-NoValue-
。例如:
\documentclass{article}
\usepackage{xparse}
\NewDocumentEnvironment{env}{ O{a default value} }{%
Before time began, we had 1=[#1]%
}{%
but now 1=[#1].
}%
\begin{document}
\begin{env}[A specified argument] foo \end{env}
\begin{env} bar \end{env}
\end{document}
% Expected output:
% Before time began, we had 1=[A specified argument] foo but now 1=[A specified argument].
% Before time began, we had 1=[a default value] bar but now 1=[a default value].
% Observed output:
% Before time began, we had 1=[A specified argument] foo but now 1=[A specified argument].
% Before time began, we had 1=[a default value] bar but now 1=[-NoValue-].
我做错了什么吗?或者有什么建议吗?
答案1
正如 Ulrike Fischer 在评论中提到的那样,这个问题已在 LaTeX 版本中得到修复2021-11-15-PL1。