是否可以將文件中所有使用的單位自動轉換為 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 頁說:
預定義單位的含義可以在
\DeclareSIUnit
載入 siunitx 後使用來更改。這將用新版本覆蓋原始定義。
所以使用這種方法應該不會有任何問題。
編輯 2:我花時間(重新)聲明了siunitx
包中有意義的 SI 派生單位(見下文,我使用了表 10這個網站作為參考並與維基百科進行雙重檢查)。請注意,我在巨集名稱前面新增了b
,以免覆蓋原始巨集。我之所以選擇這樣做,是因為我在聲明所有派生單位都由七個 SI 基本單位表示時遇到了一個問題。包中有類似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
(我認為)可能導致轉換錯誤(但我不完全確定這一點,如果你更了解,請隨時告訴我)。另外,由於\degreeCelsius
只是相對於 的導出單位273.15 K
,直接轉換會導致絕對溫度的錯誤數量,所以我也沒有包括它。