Eine Größe wie “9.81 m/s²” korrekt zu setzen erfordert mehrere Konventionen: Einheiten in aufrechter (roman) Schrift, ein schmaler Abstand zwischen Zahl und Einheit und konsistente Abstände für Produkte und Quotienten zusammengesetzter Einheiten. Das alles von Hand einzuhalten ist mühsam und wird schnell uneinheitlich. Das Paket siunitx ist das Standardwerkzeug, das Zahlen, Einheiten und Größen automatisch nach einem konsistenten Regelwerk setzt. Diese Seite ordnet die drei zentralen Befehle der aktuellen Version (v3), \num, \unit und \qty, den Spaltentyp S zur Dezimalausrichtung in Tabellen und die Unterschiede zu den v2-Namen \SI und \si, die in älteren Dokumenten noch vorkommen.
Warum ein Einheitenpaket?
Wissenschaftliche Schreibweise folgt internationalen Konventionen (ISO 80000-2 / JIS Z 8000-2, siehe eigene Seite). Ein Kernpunkt lautet: Einheitensymbole werden aufrecht gesetzt. m, kg und s sind keine Variablen und dürfen daher nicht in Variablenschrift, also kursiv, gesetzt werden. In LaTeXs Mathematikmodus sind Buchstaben aber standardmäßig geneigt, sodass ein wörtliches $kg$ wie das Produkt eines kursiven k und g aussieht.
Ein zweiter Punkt ist Abstand. Zwischen Zahl und Einheit steht weder nichts noch zu viel, sondern ein schmaler Abstand (entsprechend \, in der Mathematik): nicht 9.81m und nicht 9.81 m. Bei zusammengesetzten Einheiten wie m/s soll außerdem das ganze Dokument einheitlich sein: Division als Schrägstrich oder negative Potenz s⁻¹, Produkte wie kg·m mit oder ohne Mittelpunkt. Schreibt man all das jeweils von Hand als \mathrm{m} usw., werden Abstände, Potenzen und Produkte schnell uneinheitlich.
siunitx übernimmt all das auf einmal: Es setzt Einheiten aufrecht, fügt den korrekten Abstand davor ein und stellt Produkte, Quotienten und Potenzen nach einer einheitlichen Regel dar. Eine einzige Einstellung kann das Aussehen im ganzen Dokument ändern. Aktiviert wird es mit \usepackage{siunitx} in der Präambel.
Eine Zahl formatieren: \num
\num{…} formatiert nur eine Zahl. Gibst du eine Zahl an, wird sie aufrecht gesetzt; Zifferngruppierung, Exponenten und Vorzeichen werden automatisch geordnet. Besonders nützlich ist die Exponentenerkennung: e, E, d und D werden als “×10 hoch …” verstanden. \num{1.234e5} setzt also 1.234 × 10⁵ und nicht wörtlich e5. Als Dezimalzeichen werden . und , akzeptiert; bei Bedarf wird vor dem Punkt eine führende 0 ergänzt.
\num{12345} % → 12 345(桁区切りが入る / digit grouping)
\num{1.234e5} % → 1.234 × 10^5
\num{0,1234} % → 0.1234(カンマも小数点として解釈 / comma as decimal)
\num{.5} % → 0.5(先頭に 0 を補う / leading zero added)
\num{3.45d-4} % → 3.45 × 10^{-4}Hier erhält 12345 einen schmalen Gruppierungsabstand und wird zu 12 345, 1.234e5 wird zu 1.234 × 10⁵, und .5 wird zu 0.5. Regionale Konventionen wie Kommagruppierung oder Dezimalkomma lassen sich per Option umstellen; für den Anfang genügt die Regel: Zahlen durch \num schicken statt nackte Ziffern zu schreiben. Für ein Produkt von Zahlen gibt es den eigenen Befehl \numproduct{1.2 x 3.4} (Einträge durch x getrennt); in v3 bildet \num selbst keine Produkte.
Eine Einheit setzen: \unit
\unit{…} setzt nur eine Einheit. Es gibt zwei Eingabestile. Der eine ist der literale Stil, bei dem die Einheitensymbole direkt geschrieben werden, etwa \unit{kg.m/s^2}. Der Punkt . ist dabei ein Produkt zwischen Einheiten, / ein Quotient, ^ und _ erzeugen Hoch- und Tiefstellungen. siunitx setzt das aufrecht mit korrektem Abstand: \unit{kg.m/s^2} erscheint als kg m/s², mit schmalem Abstand zwischen kg und m und hochgestellter 2 an s.
Der andere ist der interpretierte (Makro-)Stil, bei dem die Einheit aus Befehlen für Einheit, Präfix und Potenz aufgebaut wird, ähnlich wie man die Einheit auf Englisch vorliest. Die Tabelle zeigt die Bausteine.
| Befehl | Bedeutung | Ausgabe | |
|---|---|---|---|
gram | \gram / \metre / \second | Basiseinheiten (SI-Basiseinheitsnamen) | g / m / s |
kilo | \kilo \milli \micro … | Präfixe (vor die Einheit gesetzt) | k / m / µ |
kilogram | \kilogram | Vordefinierte Einheit mit Präfix | kg |
per | \per | Setzt die nächste Einheit in den Nenner | … ⁻¹ oder /… |
squared | \squared / \cubed | Quadriert / kubiert die vorherige Einheit (Postfix) | m² / m³ |
square | \square / \cubic | Quadriert / kubiert die folgende Einheit (Präfix) | m² / m³ |
\unit{\kilo\gram\per\cubic\metre} % → kg/m^3 (密度 / density)
\unit{\metre\per\second\squared} % → m/s^2 (加速度 / acceleration)
\unit{\kilo\gram} % → kg
\unit{\kilogram} % → kg(定義済みの一語 / predefined)Für ein präfigiertes “Kilogramm” ergeben sowohl die Folge \kilo\gram als auch das vordefinierte Einzelwort \kilogram dasselbe kg. \cubic\metre ist die Präfixform für “Kubikmeter, m³”, und \metre\per\second\squared nutzt das Postfix \squared für “Meter pro Sekunde zum Quadrat, m/s²”. Wie \per aussieht, negative Potenz s⁻¹ oder Schrägstrich /s, steuert die unten beschriebene Option per-mode.
Der literale und der interpretierte Stil können dasselbe Ergebnis liefern, doch der interpretierte Makrostil hat Vorteile: Das Aussehen von Potenzen, Präfixen und Produkten/Quotienten lässt sich insgesamt per Optionen steuern, und eigene neue Einheitenmakros können definiert werden. Der literale Stil ist dagegen bequem für schnelle Einheiten. In beiden Fällen steht die Einheit aufrecht und der Abstand stimmt.
Zahl und Einheit zusammen: \qty
In echten Dokumenten erscheinen Zahlen und Einheiten fast immer gemeinsam. \qty{…}{…} nimmt die Zahl als erstes und die Einheit als zweites Argument und setzt beides zusammen. Es kombiniert \num und \unit: Der Zahlteil wird wie bei \num, der Einheitenteil wie bei \unit geschrieben. Der Wert einer Größe ist “Zahl × Einheit”, wobei der Abstand dazwischen die Multiplikation darstellt; genau diese Idee macht der Befehl konkret.
重力加速度は \qty{9.81}{\metre\per\second\squared} である。
The acceleration of gravity is \qty{9.81}{\metre\per\second\squared}.
\qty{1.234e5}{\kilo\gram\per\cubic\metre} % → 1.234 × 10^5 kg/m^3
\qty{2.998e8}{m/s} % リテラル単位もそのまま使えるHier folgt auf 9.81 ein schmaler Abstand und dann das aufrechte m/s², sodass “9.81 m/s²” als eine Größe gesetzt wird. Eine Zahl mit Exponent kann direkt übergeben werden, etwa \qty{1.234e5}{…}. Der Einheitenteil darf ein Makro (\metre\per\second\squared) oder literal (m/s) sein.
Das Aussehen von \per wird mit der Option per-mode gewählt: Standard ist eine negative Potenz (m s⁻¹), per-mode=symbol ergibt einen Schrägstrich (m/s), und per-mode=fraction baut einen gestapelten Bruch (Zähler über Nenner). Optionen können einzeln in eckigen Klammern an jedem Befehl stehen oder in der Präambel mit \sisetup{…} dokumentweit gesetzt werden.
\qty{1.99}{\per\kilogram} % 既定 → 1.99 kg^{-1}
\qty[per-mode = symbol]{1.99}{\per\kilogram} % → 1.99 /kg
\qty[per-mode = fraction]{1.345}{\coulomb\per\mole} % → 縦組みの分数 C/mol
% 文書全体に方針を適用 / set a policy document-wide
\sisetup{per-mode = symbol}Für Winkel gibt es den eigenen Befehl \ang{…}. \ang{45} ergibt 45°; außerdem gibt es ein Bogenformat mit Semikolons für Grad, Minuten und Sekunden: \ang{45;30;15} setzt 45°30′15″. Bestandteile dürfen leer bleiben: \ang{;;1} setzt nur Sekunden, \ang{+10;;} nur Grad mit explizitem Vorzeichen. Winkel nehmen keine SI-Präfixe, daher nutzt man diesen Spezialbefehl statt \qty.
v2 und v3: \SI / \si sind alte Namen
Die oben genannten Befehle \num, \unit und \qty sind die zentralen Befehle von siunitx Version 3. In älteren Dokumenten und Webantworten begegnen dir stattdessen die Befehle aus Version 2. Die Zuordnung lautet:
| v2 (alter Name) | v3 (aktuell) | Rolle | |
|---|---|---|---|
SI | \SI{9.81}{\metre\per\second\squared} | \qty{9.81}{...} | Zahl + Einheit |
si | \si{\kilo\gram} | \unit{\kilo\gram} | Nur Einheit |
num | \num{1.234e5} | \num{1.234e5} (unverändert) | Nur Zahl |
SIrange | \SIrange{10}{20}{\metre} | \qtyrange{10}{20}{\metre} | Bereich (10 m bis 20 m) |
SIlist | \SIlist{10;20;30}{\metre} | \qtylist{10;20;30}{\metre} | Liste (10 m, 20 m, 30 m) |
Das offizielle Handbuch erklärt, dass v3 die Dokumentbefehle “aussagekräftiger” benannt hat und dass \SI, \si, \SIrange und \SIlist weiter verfügbar, aber für neue Dokumente nicht empfohlen sind; stattdessen soll die \qty…-Familie verwendet werden. Der Name \num ist in v2 und v3 unverändert. Wenn du ein altes Dokument kompilieren willst, kannst du mit \usepackage{siunitx}[=v2] das alte Verhalten aufrufen; für neue Texte sind aber v3s \qty, \unit und \num richtig.
v3 hat die Eingabe auch etwas strenger gemacht. Ein Präfix kann nicht allein verwendet werden, sondern muss eine Einheit begleiten; Produkte werden mit eigenen Befehlen geschrieben: \numproduct für Zahlen und \qtyproduct für Größen mit Einheiten. In vielen Fällen werden alte Optionsnamen intern auf neue abgebildet, mit einem entsprechenden Hinweis im Log.
Zahlen in Tabellen ausrichten: die S-Spalte
In Zahlentabellen sind Spalten schwer lesbar, wenn die Ziffern nicht ausgerichtet sind. Für tabular stellt siunitx den Spaltentyp S bereit: Schreibe in der Spaltenspezifikation S statt c, l oder r, und die Zahlen dieser Spalte werden am Dezimalpunkt ausgerichtet. Der Inhalt wird vom selben Parser wie \num gelesen, sodass auch Werte mit Exponent (1.2e3) korrekt behandelt werden.
\begin{tabular}{@{}S@{}}
\toprule
{Some Values} \\ % 見出しは波括弧で保護(数値と誤認させない)
\midrule
2.3456 \\
34.2345 \\
-6.7835 \\
5642.5 \\
1.2e3 \\
e4 \\
\bottomrule
\end{tabular}In dieser Tabelle richten sich die Zahlen am Dezimalpunkt aus; 1.2e3 wird als 1.2 × 10³ und e4 als 10⁴ gesetzt. Eine wichtige Einschränkung: Text wie eine Spaltenüberschrift muss in Klammern {…} stehen. Ohne den Schutz von {Some Values} versucht siunitx, ihn als Teil einer Zahl zu lesen, und die Ausrichtung bricht.
Um das Ziffernlayout festzulegen und die Spalte passend zu platzieren, teilt die Option table-format siunitx “Ganzzahlstellen.Dezimalstellen” mit. S[table-format=2.4] bedeutet “2 Ganzzahlstellen, 4 Dezimalstellen” und stabilisiert das Gesamtbild der Spalte. Für ausgerichtete Zahlen innerhalb von \multicolumn oder \multirow gibt es die Makrovariante \tablenum[table-format=…]{…}, die die S-Spalte ersetzt.
\begin{tabular}{@{}S[table-format=4.1]@{}}
\toprule
{Mass / \unit{\gram}} \\
\midrule
1234.5 \\
12.0 \\
6.7 \\
\bottomrule
\end{tabular}Hier verwendet die Spaltenüberschrift \unit{\gram}, um “Mass / g” mit aufrechter Einheit zu zeigen, während die Zahlen auf 4 Ganzzahlstellen und 1 Dezimalstelle ausgerichtet sind. Mit der S-Spalte lässt sich die Arbeit aufteilen: \qty für Größen im Text, S für Zahlen in Tabellen, und der Zahlenstil bleibt im ganzen Dokument konsistent.