soul/tikz 与 accents 包不兼容

soul/tikz 与 accents 包不兼容

以下代码会引发错误。

\documentclass{amsart}
\usepackage{accents}
\usepackage{tikz}
\usepackage{soul}
\def\ubar#1{\underaccent{\bar}{#1}}
\begin{document}
$\ubar{x}$
\hl{$\bar{x}$}
\hl{$\ubar{x}$}
\end{document}

\hl{$\bar{x}$}如果注释掉该行,它就会运行良好,从而将问题隔离在\hl命令与\ubar命令之间的交互中。有没有简单的解决方法?

答案1

作为第 22 条的变体soul 文档,您可以在突出显示/下划线之前将内容放入保存框中。这意味着换行符将不起作用,但除此之外它工作正常。

\hluMWE,显示手动保存盒和执行盒子操作的新命令:

\documentclass{amsart}
\usepackage{accents}
\usepackage{soul}
\newsavebox{\ubarbox}

\def\ubar#1{\underaccent{\bar}{#1}}
\def\hlu#1{\savebox{\ubarbox}{#1}\hl{{\usebox\ubarbox}}}

\begin{document}
\savebox{\ubarbox}{$\ubar{x}$}
\noindent ubar: $\ubar{x}$\\
hl bar: \hl{$\bar{x}$}\\
hl usebox: \hl{abc {\usebox\ubarbox}}\\
hlu: \hlu{$\ubar{x}$}\\
\end{document}

结果:

在此处输入图片描述

相关内容