knots TikZ 库如何与当前 l3(例如 TeX Live 2015)一起使用?

knots TikZ 库如何与当前 l3(例如 TeX Live 2015)一起使用?

TikZ 的库knots似乎与当前提供的 l3 包不兼容,例如 TeX Live 2015。

以下示例取自库的文档,可以pdflatex使用 TeX Live 2014 编译,但不能使用 TeX Live 2015 编译。

错误如下:

! Undefined control sequence.
<argument> ...l:N \l__spath_tmpa_tl }\tl_case:Nnn 
                                                  \l__spath_tmpc_tl {\g__spa...
l.14   \end{knot}

我该怎么做才能继续使用当前的 l3 包绘制结?

请不要花时间在这个问题上,除非 (1) 你发现它是一个内在的启迪和快乐的源泉,或 (2) 你正在研究 l3 的东西。

我回答这个问题是为了回答另一个问题,我认为答案很有用,尽管我现在认为它不太可能帮助原始问题的发布者。因此我提出了这个问题。我很快就会在这里发布答案。

我希望从事该l3领域工作的人能给出更好的答案……

答案1

添加

\ExplSyntaxOn
\cs_if_exist:NF \tl_case:Nnn
 {
  \cs_new_eq:NN \tl_case:Nnn \tl_case:NnF
 }
\ExplSyntaxOff

直到包更新。

所有_case函数的命名方案都发生了变化:\<module>_case:Nnn变成了

\<module>_case:NnF

加上\<module>_case:NnTFand \<module>_case:Nn(当需要非真或假文本时)。T当找到匹配项时,除了使用案例代码外,还使用该参数。

注意:为什么要使用\cs_if_exist:NF包装器?因为,如果代码在仍使用较旧内核的系统上运行,则使用包装器l3后它将停止工作。\cs_new_eq:NN


出于多种原因,LaTeX 团队可能会决定弃用某个或某组函数。例如,某个函数可能会因为具有更好功能和一致界面的新功能而变得过时。就函数而言\<module>_case:Nnn,新函数主要具有更好的命名方案,可增强与布尔值的一致性(其中还有用于评估为真或假的测试)。

当某个功能被弃用时,团队不会立即将其删除,而是决定留出一个宽限期,以便让软件包开发人员有时间更新他们的软件。l3弃用功能的宽限期过后,套件的新版本将不再拥有该功能。

相关内容