为什么用灵魂突出显示数学不能与 nag 包的 l2tabu 选项结合?

为什么用灵魂突出显示数学不能与 nag 包的 l2tabu 选项结合?

我发现,如果使用选项来使用soul该包,则使用包突出显示数学公式不起作用。一个最小(不)工作示例是:nagl2tabu

\documentclass{book}

\RequirePackage[l2tabu, orthodox]{nag}
\usepackage{soul}

\begin{document}
\hl{$0.47\pm0.06$}
\end{document}

但是,如果省略 l2tabu 选项,则一切正常。请注意,如果不突出显示数学,而是突出显示普通文本,我的最小示例将起作用。问题是为什么会出现这种情况以及如何改进?

答案1

简短回答:soul与不兼容nag

首选答案:避免nag,它不会做任何无法通过使用正确的风格获得的事情;soul也要避免。

更长的答案:如果你真的需要两个包

\RequirePackage[l2tabu, orthodox]{nag}
\documentclass{book}

\usepackage{soul}
\usepackage{etoolbox}
%\usepackage{hyperref} % try with and without it

\makeatletter
\@ifpackageloaded{nag}{%
\patchcmd{\SOUL@eval}
  {\ifcat$\noexpand\SOUL@@}% old test
  {\ifx\nag@maybedispmath\SOUL@@}% new test
  {}{}

% the argument of \SOUL@addmath must be delimited by active $
\begingroup\lccode`\~=`\$
\lowercase{\endgroup\def\SOUL@addmath~#1~}{%
    {\let\protect\noexpand
    \edef\x{\global\SOUL@word={\the\SOUL@word{{\hbox{$#1$}}}}}\x}%
    \SOUL@scan
}
}{}% end of \@ifpackageloaded
\makeatother

\begin{document}

\hl{$0.47\pm0.06$}
\end{document}

请记住,nag必须先加载\documentclass

相关内容