无法使用 siunitx 定义新单位

无法使用 siunitx 定义新单位

我花了将近两个小时阅读了各种似乎存在相同问题的帖子,但没有一个解决方案对我有用。
我想定义新的单位(在我的情况下是 \thermal 和 \electrical)。scrartcl
可能与此有关吗?
或者包会干扰它?
这是我的序言:

\documentclass{scrartcl}  
\usepackage[utf8]{inputenc}  

\usepackage{amsmath}  
\usepackage{amssymb}  
\usepackage[german]{babel}  
\usepackage{graphicx}  
\usepackage{floatrow}  
\usepackage{subfigure}  
%\pagestyle{empty}  
\linespread{1.5}  
\usepackage[margin=3.5cm]{geometry}  
\usepackage{color}  

\usepackage{siunitx}  
    \sisetup{inter-unit-product =$\cdot$}  

\usepackage{cancel}  
\usepackage{float}  
\usepackage{enumitem}  
\usepackage{caption}  
\usepackage{booktabs}  
\usepackage{cleveref}  
\usepackage{colortbl}  
\usepackage{csquotes}  
\usepackage{helvet}  
\usepackage{mathpazo}  
\usepackage{listings}  
\usepackage{pgfplots}  
\usepackage{xcolor}  
\usepackage{hyperref}  

\usepackage{multirow}  

\renewcommand{\labelitemii}{$\circ$}  
\renewcommand{\labelitemiii}{$\diamond$}  
\renewcommand{\labelitemiv}{$\ast$}  

\allowdisplaybreaks  

\numberwithin{equation}{subsection} %Gleichungen bekommen die     SubKapitelnummer  

\DeclareSIUnit{\thermal}{t}  
\DeclareSIUnit{\electrical}{e}  

我收到以下错误:

! Missing } inserted.  
<inserted text>  
                }  
l.72 ...-1000 betrug \SI{3200}{\mega\watt\thermal}  

?  

我已经尝试了以下内容:
\DeclareSIUnit{\thermal}{t}
\DeclareSIUnit\thermal{t}

等等;空格、无空格、括号…… \newunit\thermal{t} 甚至无法识别。
如果您需要更多信息,我会发布它。感谢您阅读本文。

编辑:完整最小示例

\documentclass{scrartcl}
\usepackage[utf8]{inputenc}  
\usepackage{siunitx}  
    \sisetup{inter-unit-product =$\cdot$}
\usepackage{amsmath}  
\usepackage{booktabs}  
\usepackage{cancel}  
\usepackage{caption}  
\usepackage{cleveref}  
\usepackage{colortbl}  
\usepackage{csquotes}  
\usepackage{helvet}  
\usepackage{mathpazo}  
\usepackage{multirow}  
\usepackage{listings}  
\usepackage{pgfplots}  
\usepackage{xcolor}  

\DeclareSIUnit{\thermal}{t}  
\DeclareSIUnit{\electrical}{e}  
\begin{document}  
\SI{3200}{\mega\watt} \\  
\SI{3200}{\mega\watt\thermal}  
\end{document}  

错误信息:

! Missing } inserted.  
<inserted text>   
                }  
l.23 \SI{3200}{\mega\watt\thermal}  

?   


更新:如果我包含\sisetup{inter-unit-product =$\cdot$},我会收到一个错误,
我也从我原来的序言中删除了它,现在它可以正常工作了。

谢谢大家的帮助,这是我现在正在使用的行(对于那些可能遇到与我相同问题的人):
\sisetup{inter-unit-product=\ensuremath{{}\cdot{}}}

答案1

siunitx打印内部单位\ensuremath(与其他组件一样)。这允许在数学或文本模式中排版输出,必要时数学模式会自动启用。但是,强迫内部的数学模式\ensuremath会导致问题,正如这个简单的最小示例所复制的那样:

\documentclass{article}
\begin{document}
$x \cdot y$

\ensuremath{x \cdot y}

%\ensuremath{x $\cdot$ y}% <---- this is a problem
\end{document}

考虑到这一点,定义你的 SI 单位没有切换到数学模式:

\sisetup{inter-unit-product=\cdot}

如果您希望减少乘积操作数之间的空间,则使用

\sisetup{inter-unit-product=\mathord{\cdot}}

这是一个展示不同输出的简单示例:

在此处输入图片描述

\documentclass{article}
\usepackage{siunitx}

\DeclareSIUnit{\thermal}{t}

\begin{document}

\sisetup{inter-unit-product=\cdot}

\SI{3200}{\mega\watt\thermal}

\sisetup{inter-unit-product=\mathord{\cdot}}

\SI{3200}{\mega\watt\thermal}

\end{document}

作为间距\cdot和应用的参考\mathord,请参阅如何改变二元关系间距的默认值?

相关内容