一般単位をSI単位に変換する方法

一般単位をSI単位に変換する方法

文書内で使用されているすべての単位を 7 つの SI 単位のいずれかに自動的に変換することは可能ですか?

たとえば \unit{\pascal}

\unit{\newton\per\square\meter}どこでも調整する必要なく、としてレンダリングしたいと思います 。

答え1

次のように、問題となっている単位を前文で一度 (再) 宣言することができます。

\documentclass{article}

\usepackage{siunitx}
\DeclareSIUnit{\pascal}{\newton\per\square\meter}

\begin{document}

\unit{\pascal}

\end{document}

編集:ユーザーマニュアル14ページにはこう書かれています。

定義済みユニットの意味は、 \DeclareSIUnitsiunitx をロードした後に を使用することで変更できます。これにより、元の定義が新しいバージョンで上書きされます。

したがって、このアプローチを使用しても問題は発生しないはずです。

編集2: パッケージ内のSI派生単位を(再)宣言するのに時間がかかりましたsiunitx(以下を参照、私は表10を使用しました)。このサイトbマクロ名の前に を追加して、元のマクロを上書きしないようにしていることに注意してください。 すべての派生単位を 7 つの SI 基本単位で表すように宣言する際に問題が 1 つ発生したため、 を追加しました。 パッケージにはMPaやなどの単位の省略形kNが定義されています。 省略形のあるものを単位マクロの再定義とともに使用すると、接頭辞が重複することによるエラーだけでなく、Mm^{-1}kgs^{-2}の代わりになど、間違った単位が発生する可能性がMPaあります。 結論として、既存の SI 派生単位の再定義は避け、代わりに新しいものを使用します。 ただし、既存のマクロを使用する場合は、接頭辞の付いた省略形を使用しない (または少なくともどれが安全かを確認する) か、それらを上書きしないように注意してください。

\DeclareSIUnit{\bhertz}{\per\second}
\DeclareSIUnit{\bnewton}{\kilo\gram\metre\per\square\second}
\DeclareSIUnit{\bpascal}{\kilo\gram\per\metre\per\square\second}
\DeclareSIUnit{\bjoule}{\kilo\gram\square\metre\per\square\second}
\DeclareSIUnit{\bwatt}{\kilo\gram\square\metre\per\cubic\second}
\DeclareSIUnit{\bcoulomb}{\ampere\second}
\DeclareSIUnit{\bvolt}{\kilo\gram\square\metre\per\ampere\per\cubic\second}
\DeclareSIUnit{\bfarad}{\per\kilo\gram\per\square\metre\square\ampere\second\tothe{4}}
\DeclareSIUnit{\bohm}{\kilo\gram\square\metre\per\square\ampere\per\cubic\second}
\DeclareSIUnit{\bsiemens}{\per\kilo\gram\per\square\metre\square\ampere\cubic\second}
\DeclareSIUnit{\bweber}{\kilo\gram\square\metre\per\ampere\per\square\second}
\DeclareSIUnit{\btesla}{\kilo\gram\per\ampere\per\square\second}
\DeclareSIUnit{\bhenry}{\kilo\gram\square\metre\per\square\ampere\per\square\second}
% wouldn't recommend using:
\DeclareSIUnit{\bbecquerel}{\per\second}
\DeclareSIUnit{\bgray}{\square\metre\per\square\second}
\DeclareSIUnit{\bsievert}{\square\metre\per\square\second}
\DeclareSIUnit{\bkatal}{\mole\per\second}

ユニットのスキーム/順序を希望する場合は、m-kg-s-A-K-mol-cd以下のバージョンが適しています。

\DeclareSIUnit{\bhertz}{\per\second}
\DeclareSIUnit{\bnewton}{\metre\kilo\gram\per\square\second}
\DeclareSIUnit{\bpascal}{\per\metre\kilo\gram\per\square\second}
\DeclareSIUnit{\bjoule}{\square\metre\kilo\gram\per\square\second}
\DeclareSIUnit{\bwatt}{\square\metre\kilo\gram\per\cubic\second}
\DeclareSIUnit{\bcoulomb}{\second\ampere}
\DeclareSIUnit{\bvolt}{\square\metre\kilo\gram\per\cubic\second\per\ampere}
\DeclareSIUnit{\bfarad}{\per\square\metre\per\kilo\gram\second\tothe{4}\square\ampere}
\DeclareSIUnit{\bohm}{\square\metre\kilo\gram\per\cubic\second\per\square\ampere}
\DeclareSIUnit{\bsiemens}{\per\square\metre\per\kilo\gram\cubic\second\square\ampere}
\DeclareSIUnit{\bweber}{\square\metre\kilo\gram\per\square\second\per\ampere}
\DeclareSIUnit{\btesla}{\kilo\gram\per\square\second\per\ampere}
\DeclareSIUnit{\bhenry}{\square\metre\kilo\gram\per\square\second\per\square\ampere}

と は省略しました\radian\steradianそれらの SI 基本単位は であり、 と も から派生しているためです。1を使用すると変換エラーが発生する可能性があります (ただし、これについては完全に確信があるわけではありません。詳しい方がいらっしゃいましたら、お気軽にお知らせください)。また、 はに対する派生単位にすぎないため、直接変換すると絶対温度を含む誤った数量が生成されるため、これも含めませんでした。\lumen\lux\candela\steradian\degreeCelsius273.15 K

答え2

ここに画像の説明を入力してください

\documentclass{article}

\usepackage{siunitx}

\DeclareSIUnit{\pascal}{\newton\per\square\meter}

\begin{document}

This is the distillation column pressure \SI{10}{\unit{\pascal}}.

\end{document}

注: 既に定義されているように、これによって何かが壊れるかどうかはわかりません。\pascalおそらく誰かがより適切な答えを持っているでしょうが、明らかなエラーもなく動作するようです。

関連情報