使用 soul 和 siunitx 包突出显示二进制单元的问题

使用 soul 和 siunitx 包突出显示二进制单元的问题

我正在尝试使用 siunitx 包突出显示包含数量的文本。就像突出显示 \cite 等其他命令一样,它们必须用额外的括号括起来。但是,当使用二进制单位(\bit、\byte、\kibi\byte)时会出现问题,这会产生未定义控制序列错误。其他单位(如微秒或兆赫)突出显示,没有任何问题。

我离开了 MWE。感谢任何能给我的帮助。

\documentclass{article}

\usepackage{color}
\usepackage{soul}
\usepackage{siunitx}
    \sisetup{
        binary-units = true,
    }

\begin{document}

% These are OK
\hl{{\SI{32}{\MHz}}}

\hl{{\SI{32}{\us}}}

\SI{32}{\bit}

\SI{32}{\byte}

\SI{32}{\kibi\byte}

% These give errors
\hl{{\SI{32}{\bit}}}

\hl{{\SI{32}{\byte}}}

\hl{{\SI{32}{\kibi\byte}}}

\end{document}

答案1

使用\protect似乎可以解决问题。

\documentclass{article}

\usepackage{color}
\usepackage{soul}
\usepackage{siunitx}
    \sisetup{
        binary-units = true,
    }

\begin{document}

% These are OK
\hl{{\SI{32}{\MHz}}}

\hl{{\SI{32}{\us}}}

\SI{32}{\bit}

\SI{32}{\byte}

\SI{32}{\kibi\byte}

\hl{{\SI{32}{\protect\bit}}}

\hl{{\SI{32}{\protect\byte}}}

\hl{{\SI{32}{\protect\kibi\protect\byte}}}

\end{document}

在此处输入图片描述

相关内容