無法使用 siunitx 定義新單位

無法使用 siunitx 定義新單位

我已經閱讀了近兩個小時的各種帖子,這些帖子似乎有相同的問題,但沒有一個解決方案對我有用。
我想定義新單位(在我的例子中是“熱”和“電”)。
是否有可能與 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,參見如何更改二元關係周圍間距的預設值?

相關內容