如何重新定义 \str_if_eq_x:nnTF 以实现向后兼容

如何重新定义 \str_if_eq_x:nnTF 以实现向后兼容

在 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}

相关内容