我发现,如果使用选项来使用soul
该包,则使用包突出显示数学公式不起作用。一个最小(不)工作示例是:nag
l2tabu
\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
。