同じ問題を抱えていると思われるさまざまな投稿を 2 時間近く読んできましたが、どの解決策も私には役に立ちませんでした。
新しい単位を定義したいのですが (私の場合は \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
参考として、バイナリ関係の周囲のスペースのデフォルトを変更するにはどうすればよいですか?