Я читал почти два часа различные посты, в которых, похоже, есть та же проблема, но ни одно из решений не сработало для меня.
Я хочу определить новые единицы (в моем случае это \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} даже не распознается.
Если вам нужна дополнительная информация, я ее опубликую. Спасибо, что прочитали это.
EDIT: Полный минимальный пример
\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}
Имея это в виду, определите свою единицу СИ.безпереключение в математический режим:
\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
см.Как изменить интервал по умолчанию вокруг бинарных отношений?