我花了将近两个小时阅读了各种似乎存在相同问题的帖子,但没有一个解决方案对我有用。
我想定义新的单位(在我的情况下是 \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
,请参阅如何改变二元关系间距的默认值?