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:NnTF
and \<module>_case:Nn
(当需要非真或假文本时)。T
当找到匹配项时,除了使用案例代码外,还使用该参数。
注意:为什么要使用\cs_if_exist:NF
包装器?因为,如果代码在仍使用较旧内核的系统上运行,则使用包装器l3
后它将停止工作。\cs_new_eq:NN
出于多种原因,LaTeX 团队可能会决定弃用某个或某组函数。例如,某个函数可能会因为具有更好功能和一致界面的新功能而变得过时。就函数而言\<module>_case:Nnn
,新函数主要具有更好的命名方案,可增强与布尔值的一致性(其中还有用于评估为真或假的测试)。
当某个功能被弃用时,团队不会立即将其删除,而是决定留出一个宽限期,以便让软件包开发人员有时间更新他们的软件。l3
弃用功能的宽限期过后,套件的新版本将不再拥有该功能。