在 LaTeX 配套软件中,作者建议使用ifthen
复杂条件包。
但在他的回答中LaTeX 条件表达式威尔·罗伯逊 (Will Robertson) 没有提及它,而菲利普 (Philipp) 在评论中表示该包已经过时了。
问题是哪种方式ifthen
已经过时以及在文档中使用它的风险是什么。
答案1
答案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 的开发人员开发的更好的解决方案所取代。仍有一些事情你必须使用etoolbox
for,但条件表达式不在其中。expl3
现在,使用语法和/或新命令在 LaTeX 本身中创建命令和处理条件比依赖 等更可取etoolbox
。ifthen
这些(大部分)记录在usrguide
和 中clsguide
。
术语警告
我认为,我们在对包裹进行分类时需要一定程度的谨慎。虽然有些人可能考虑 ifthen
过时的,它当然没有被正式标记为过时的。
这并不是说通常没有更好的选择,而是更好的替代品的存在本身并不会使得一个方案过时。
比较处理子图的软件包的情况。subfigure
肯定是过时的,但这留下了其他几个选项,包括subfig
和subcaption
。 在很多情况下,后者比前者更可取 - 当然它更强大,它与强大的caption
软件包配合得很好等等。 但这并不意味着subfig
过时。
对我来说,过时意味着我有充分的理由更新现有代码(例如我负责的包或类),即使它没有明显的问题。如果我的代码包括使用\sf
LaTeX 文档或加载之类的东西subfigure
,我真的应该对此做些什么,如果这样做是可行的。
但是,我没有同样的理由去更新加载的代码subfig
,ifthen
因此描述这些软件包被标记为“过时”。但它们并没有过时。至少现在还没有。