这个问题似乎有些晦涩,它可能是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 更新后,我将在此发布更新。