我正在开发一个使用 expl3 的包,并且\c_job_name_tl
正在使用。以下是 egreg 的评论
自 2015 年 9 月起,\c_job_name_tl 应变为 \c_sys_jobname_str – egreg 2015 年 9 月 30 日 9:55
但是,我不知道什么是正确的方法来获得一个能够可靠地判断 expl3 版本是在 2015 年之前还是之后的代码(尽管在这种特殊情况下我可能可以轻松地自己修复它。)
答案1
由于expl3
仍在开发中,团队的建议是要求最低版本并仅支持此版本。例如,在siunitx
我有
\RequirePackage{expl3}[2015/09/11]
\RequirePackage{xparse}
\ProvidesExplPackage {siunitx} {2017/02/19} {2.7d}
{A comprehensive (SI) units package}
\@ifpackagelater { expl3 } { 2015/09/11 }
{ }
{
\PackageError { siunitx } { Support~package~expl3~too~old }
{
You~need~to~update~your~installation~of~the~bundles~'l3kernel'~and~
'l3packages'.\MessageBreak
Loading~siunitx~will~abort!
}
\tex_endinput:D
}
如果所需的支持不可用,则会产生错误并退出。
如果您确实觉得必须支持较旧的安装,那么您可以使用\cs_if_exist:NF
:
\cs_if_exist:NF \c_job_name_tl
{ \cs_new_eq:NN \c_job_name_tl \c_sys_jobname_str }
请注意,这通常不受支持:团队故意删除旧代码。