\c_job_name_tl 和 \c_sys_jobname_str

\c_job_name_tl 和 \c_sys_jobname_str

我正在开发一个使用 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 }

请注意,这通常不受支持:团队故意删除旧代码。

相关内容