在段落模式下使用 soul 和 siunitx 时出现问题

在段落模式下使用 soul 和 siunitx 时出现问题

这个问题似乎有些晦涩,它可能是siunitx或中的一个错误soul(我知道后者存在问题)。我不确定是哪一个,我也不确定它是否是一个错误。

我想要做的是在段落模式下突出显示一些文本,然后siunitx立即显示数字+单位(使用)。

以下是一些代码:

\documentclass{article}

\usepackage{siunitx}
\usepackage{soul}

\newcommand{\wibble}[1]{#1}

\begin{document}

   \paragraph{\hl{Hello}} \SI{12}{\meter}

   \hl{Hello} \SI{12}{\meter}

   \paragraph{\hl{Hello}} a \SI{12}{\meter}

   \paragraph{\hl{Hello}} \wibble{12~m}

\end{document}

所以在这里,我尝试了一些东西。上面的例子是出现故障的。它没有突出显示文本,而是在宏的参数前写入“hl”。以下情况没有出现故障:

  • 如果不在段落模式(第二个示例)。
  • 如果我在段落宏和 siunitx 之间放置其他内容(第三个示例)。
  • 如果我使用与siunitx段落宏不同的宏(第四个示例)。

答案1

egreg 观察到,通过在\leavevmode之前添加 可以修复此行为\SI。原因是 是\paragraph一个分段命令,但添加了参数\everypar而不是打印任何内容。这意味着如果\SI(或类似)命令是 之后的第一个命令,则\paragraph节标题最终会打印在 开始的组内\SI。这是一个问题,因为\hl被用作宏缩写siunitx(百升),因此行为不正确。

这显然不是理想的行为,因此算作 中的一个错误siunitx。今天晚些时候,我将更新代码,修复此问题,然后上传到 CTAN。CTAN 更新后,我将在此发布更新。

相关内容