为什么 ifthen 包已经过时了?

为什么 ifthen 包已经过时了?

在 LaTeX 配套软件中,作者建议使用ifthen复杂条件包。

但在他的回答中LaTeX 条件表达式威尔·罗伯逊 (Will Robertson) 没有提及它,而菲利普 (Philipp) 在评论中表示该包已经过时了。

问题是哪种方式ifthen已经过时以及在文档中使用它的风险是什么。

答案1

人们可能考虑的主要原因ifthen过时的(最后一个版本是 2001/05/26,大约有一页用户手册加上四页代码文档)是它被例如取代etoolbox,它利用了eTeX。使用这些可以加快处理速度。您仍然可以使用ifthen如果您愿意,可以将其用于现有和新文档,我认为这样做没有风险。但是对于新代码,尤其是使用大量布尔表达式的新软件包,建议使用更现代的替代方案。

答案2

从我在各种论坛和新闻组的经验来看,ifthen它往往弊大于利,尤其是新手使用时。主\ifthenelse命令很脆弱,因此

\section{\ifthenelse{\equal{a}{a}}{b}{c}}

不起作用。比较不可扩展,因此该命令“可能对宏代码编写者来说只有有限的用处”(引自手册ifthen)。此外,我发现语法与例如相比相当繁琐

\ifstrequal{a}{a}{b}{c}

这并不是对这个ifthen软件包的贬低;它的弱点是众所周知且不可避免的,因为它必须与较旧的宏包兼容,并且是在 e-TeX 实现之前很久编写的。我只是得出这样的结论:对于许多问题,存在问题较少的解决方案。如果您想使用该ifthen软件包,那很好,但您应该了解它的局限性。

答案3

2024 年更新:请注意etoolbox本身虽然没有过时,但大部分已被 LaTeX 3 的开发人员开发的更好的解决方案所取代。仍有一些事情你必须使用etoolboxfor,但条件表达式不在其中。expl3现在,使用语法和/或新命令在 LaTeX 本身中创建命令和处理条件比依赖 等更可取etoolboxifthen这些(大部分)记录在usrguide和 中clsguide

术语警告

我认为,我们在对包裹进行分类时需要一定程度的谨慎。虽然有些人可能考虑 ifthen过时的,它当然没有被正式标记为过时的。

比较ifthen 的 CTAN 页面子图

这并不是说通常没有更好的选择,而是更好的替代品的存在本身并不会使得一个方案过时。

比较处理子图的软件包的情况。subfigure肯定是过时的,但这留下了其他几个选项,包括subfigsubcaption。 在很多情况下,后者比前者更可取 - 当然它更强大,它与强大的caption软件包配合得很好等等。 但这并不意味着subfig过时。

对我来说,过时意味着我有充分的理由更新现有代码(例如我负责的包或类),即使它没有明显的问题。如果我的代码包括使用\sfLaTeX 文档或加载之类的东西subfigure,我真的应该对此做些什么,如果这样做是可行的。

但是,我没有同样的理由去更新加载的代码subfigifthen因此描述这些软件包被标记为“过时”。但它们并没有过时。至少现在还没有。

相关内容