在 TeXLive 2012 中\str_if_eq:xxTF
被弃用并替换为\str_if_eq_x:nnTF
(见参考下文)。现在看来,从 TeXLive 2020 开始,该功能\str_if_eq_x:nnTF
已被弃用。
下面的 MWE 是对之前问题的解决方案的改编,它允许人们使用 TeXLive 2011 到 TeXLive 2019,并且对我很有用。我没有计划回到那么远,但想修改之前问题中提出的解决方案:
\cs_if_exist:NTF \str_if_eq_x:nnTF
{ \cs_gset_eq:NN \grill_str_if_eq_x:nnTF \str_if_eq_x:nnTF }
{ \cs_gset_eq:NN \grill_str_if_eq_x:nnTF \str_if_eq:xxTF }
这样我就可以轻松地在 TeXLive 2019 和更高版本之间切换。以下使用 TeXLive 2019 的 MWE 得出:
我如何让它工作两个都2019 和 2020,以便两个版本之间的输出相同。
参考:
代码:
\documentclass{article}
\usepackage{xparse}
\usepackage{expl3}
\def\SpecialDirName{special}%
\ExplSyntaxOn
%% Following is from https://tex.stackexchange.com/a/109503/4301.
%% Works fine in TeXLive 2019. I need it to work in 2019 and 2020.
\cs_if_exist:NTF \str_if_eq_x:nnTF
{ \cs_gset_eq:NN \grill_str_if_eq_x:nnTF \str_if_eq_x:nnTF }
{ \cs_gset_eq:NN \grill_str_if_eq_x:nnTF \str_if_eq:xxTF }
\DeclareExpandableDocumentCommand{\GetFileName}{%
O{default}%
m%
m%
m%
}{%
\grill_str_if_eq_x:nnTF{#1}{\SpecialDirName}{#4}{#2-#3-#4}%
}%
\ExplSyntaxOff
\begin{document}
\edef\FileName{\GetFileName{a}{b}{c}}
FileName = "\FileName".
\edef\FileName{\GetFileName[special]{a}{b}{c}}
FileName = "\FileName".
\end{document}