如何在旧版和新版 Latex 发行版上提供 xparse

如何在旧版和新版 Latex 发行版上提供 xparse

我写图书馆这需要足够新的xparse版本。因为我希望我的软件包尽可能具有可移植性,所以我(仅在 git 存储库中)包含了一份足够新的副本xparse.sty:这样(或多或少)任何克隆我的存储库的人都可以直接编译演示。

然而,似乎在新的 LaTeX 发行版中,xparse 是“内置的”(不确定从技术上来说是否正确),因此编译一些简单的东西:

\documentclass{article}

\usepackage{xparse}

\begin{document}
Hello
\end{document}

将会失败并出现以下错误(假设你将文件xparse.sty可用位置这里):

! LaTeX3 Error: Control sequence \l__xparse_arg_spec_tl already defined.

For immediate help type H <return>.
 ...                                              
                                                  
l.37 \tl_new:N \l__xparse_arg_spec_tl
                                     
? 
! Emergency stop.
 ...                                              
                                                  
l.37 \tl_new:N \l__xparse_arg_spec_tl
                                     
!  ==> Fatal error occurred, no output PDF file produced!
Transcript written on demo.log.

有没有办法(也许通过更改文件xparse.sty?)如果系统 xparse 比 更新2019-03-05,则使用它,否则使用提供的xparse.sty?我试图将 放在\@ifpackagelater{xparse}{2019-03-05}{}{...}整个文件周围,但随后出现另一个错误:

! Text line contains an invalid character.
l.1736 ...e_all:Nnn \l__xparse_split_list_tl { ^^@

答案1

如果您\usepackage{xparse}的文档中有此文件,但您没有分发自己的副本,那么该文档将适用于过去 10 年左右的任何 tex 发行版,分发 xparse 版本没有任何优势。无论哪个年代的发行版,都会有兼容的 xparse 版本。

如果你使用

\usepackage{xparse}[2020-01-01]

或者无论您选择什么日期,如果用户的 xparser 对于您的库来说太旧,他们就会收到一条错误消息。

相关内容