我写图书馆这需要足够新的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 对于您的库来说太旧,他们就会收到一条错误消息。