![在 siunitx 中用角度和空间定义新单位](https://linux22.com/image/338918/%E5%9C%A8%20siunitx%20%E4%B8%AD%E7%94%A8%E8%A7%92%E5%BA%A6%E5%92%8C%E7%A9%BA%E9%97%B4%E5%AE%9A%E4%B9%89%E6%96%B0%E5%8D%95%E4%BD%8D.png)
我想定义一个渲染单元
\SI{5}{\degTTh}
作为
到目前为止,我已经能够定义一个新单位
\DeclareSIUnit{\degTTh}{%
\text{$^\circ\ 2\theta$}%
}
但数字和度数符号之间有一个空格。使用该选项\SI[space-before-unit=false]{5}{\degTTh}
无法解决问题。
我也尝试过声明
\DeclareSIUnit{\TTh}{%
\text{$\ 2\theta$}%
}
然后使用\SI[space-before-unit=false]{5}{\degree\TTh}
,但这也会导致数字和度数符号之间出现空格。
。
我该如何定义这样的单位?
答案1
当创建新单位时希尼奇<options>
,您可以通过在字段中提供任何键值对选项来覆盖
\DeclareSIUnit[<options>]{<unit>}{<definition>}
数字和单位之间的符号用 来设置number-unit-product
。对于您的情况,您希望不数字和单位之间的符号,即{}
。单位的定义则变为
\DeclareSIUnit[number-unit-product={}]{\degTTh}{\SIUnitSymbolDegree\ensuremath{~2\theta}}
另外,我^\circ
用符号替换了\SIUnitSymbolDegree
,其定义为希尼奇。最后,我按照包文档中的建议,将 替换$ ... $
为。\ensuremath
\documentclass{article}
\usepackage{siunitx}
\setlength{\parindent}{0pt} % only to make all examples aligned.
\DeclareSIUnit{\degTThold}{\text{$^\circ\ 2\theta$}}
\DeclareSIUnit[number-unit-product={}]{\degTTh}{\SIUnitSymbolDegree\ensuremath{~2\theta}}
\begin{document}
\SI{5}{\degTThold} \\
\SI{5}{\degTTh} \\
$x = \SI{5}{\degTThold}$ \\
$x = \SI{5}{\degTTh}$
\end{document}