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