执行 \robustify\( 是否仍然有必要/有用?

执行 \robustify\( 是否仍然有必要/有用?

我知道这etoolbox提供了一个robustify命令,而且我一直\robustify\(在我的标题中执行它。但是,像这个还建议加载修复fixltx2e以使其变得健壮。

然而,CTAN 现在说该软件包除了产生警告之外什么都不做,当我查看描述对 latex 的更改的日志时,2019-10-01 的条目说许多以前脆弱的命令已经变得健壮,但没有明确\(提及\)

\(那么\)现在被定义为强大的吗?

答案1

使用最新的 LaTeX\show\(产品

> \(=macro:
->\x@protect \(\protect \(  .
l.10 \show\(

看起来非常坚固。

确实,source2e,§E.1.2,第 494 页,2020-10-01PL4 版本表明自从2015/01/01我们有了

\DeclareRobustCommand\({%
  \relax\ifmmode\@badmath\else$\fi}%
\DeclareRobustCommand\){%
  \relax\ifmmode\ifinner$\else\@badmath\fi\else \@badmath\fi}%

\IncludeInRelease{2015/01/01}{(}{Make ( robust}% 后跟上面引用的新的稳健定义。其下是脆弱定义。

ltnews从 2015 年 1 月的 22 版开始,我们发现fixltx2e现在在 LaTeX 内核中默认启用了来自 的所有修复,因此内核现在将\(和定义\)为强大的命令。从 2017 年 1 月的 26 版开始,ltnews我们发现fixltx2e在 LaTeX 版本中添加到内核的所有来自 的更改2015-01-01都受到 的保护\IncludeInRelease{2015/01/01},因此可以使用 进行回滚latexrelease

因此,如果你想用旧的脆弱行为进行测试,你可以将 LaTeX 版本回滚到latexrelease之前的日期2015/01/01,例如

\RequirePackage[2014/01/01]{latexrelease}
\documentclass{article}

\begin{document}
\tableofcontents
\section{\(x\)}
\end{document}

相关内容