带有限定符的用户定义单位宏在用于小数单位时会中断

带有限定符的用户定义单位宏在用于小数单位时会中断

考虑以下带有的 MWE siunitx

\documentclass{article}

\usepackage{siunitx}

\sisetup{detect-all}
\DeclareSIQualifier\peak{p}
\DeclareSIUnit\wattp{\watt\peak}
\DeclareSIUnit\usd{USD}

\begin{document}
\SI{41}{\usd/\wattp}

\SI{41}{\wattp}

\SI{41}{\usd \wattp}

\SI{41}{\usd\per\wattp}
\end{document}

结果是这样的:

siunitx 输出

看来小数表示会破坏用户定义单元宏中限定符的功能。我该如何解决这个问题?

不幸的是,\peak使用\protect宏保护限定符(\DeclareSIUnit\wattp{\watt\protect\peak} ) 保护限定符会破坏全部输出:

带保护

我希望“W_p”(参见原始输出中的第 2、3 和 4 个示例)也出现在分数单位(第 1 个示例)中。

答案1

你需要保护你的\peak资格赛。

\documentclass{article}

\usepackage{siunitx}

\sisetup{detect-all}
\DeclareSIQualifier\peak{p}
\DeclareSIUnit\wattp{\watt\protect\peak}
\DeclareSIUnit\usd{USD}

\begin{document}
\SI{41}{\usd/\wattp}

\SI{41}{\wattp}

\SI{41}{\usd \wattp}

\SI{41}{\usd\per\wattp}
\end{document}

相关内容