siunitx - Einheitendarstellung bei höheren Potenzen

Formelsatz für Mathematik, Naturwissenschaften und Technik


Willi
Forum-Newbie
Forum-Newbie
Beiträge: 9
Registriert: So 4. Sep 2011, 17:06

siunitx - Einheitendarstellung bei höheren Potenzen

Beitrag von Willi »

Hallo zusammen!

Nachdem mir das siunitx Paket gestern hier empfohlen wurde, bin ich nun am probieren. Generell scheint es mir sehr gut zu sein, vor allem auch die Tabular-Integration.

Ein Problem habe ich aber und bekomme es auch nicht gelöst. Ich nutze reziproke Darstellung statt Symbol bzw. fraction. Das klappt aber anscheinend nur, solange im Nenner max. die 2. Potenz auftaucht! Beispiele:
\documentclass[parskip,ngerman]{scrartcl}
\usepackage[T1]{fontenc}
\usepackage[latin1]{inputenc}
\usepackage{babel}
\usepackage{xfrac}
\usepackage{siunitx}
\sisetup{
locale=DE,
per-mode= reciprocal,
sticky-per=true
}
\begin{document}
Richtig: \\
\si{\metre\per\second} \\
\si{\metre\per\second\squared}

Falsch:\\
\si{\metre\per\second^{3}}\\
\SI{10}{\kg\per\metre^{3}}\\
\SI[per-mode= fraction]{10}{\kg\per\metre^{3}}\\
\SI[per-mode= reciprocal]{10}{\kg\per\metre^{3}}

Manuell - richtig, aber nicht Sinn der Sache!?\\
\si{\metre.\second^{-3}}\\
\SI{10}{\kg.\metre^{-3}}\\

per-mode=fraction lässt sich gar nicht darstellen -- d.h. hierfür müsste ein anderes Paket herhalten!?
\end{document} 
Die fraction-Darstellung funktioniert so überhaupt nicht, die reziproke nur manuell. Habe ich einen Fehler gemacht, oder ist das das Verhalten des Pakets?

Grüße
Willi

Benutzeravatar
iTob
Forum-Meister
Forum-Meister
Beiträge: 1221
Registriert: Mo 19. Apr 2010, 22:19
Kontaktdaten:

Beitrag von iTob »

Ich kann’s jetzt grad nicht probieren, aber ich glaube, du musst die Potenzen (engl. power) selber definieren, und dann mit \square, \cubic (oder so sind voreingestellt) anwenden. Schau mal in die Anleitung.

Morgen kann ich nötigenfalls auch nochmal einBeispiel machen.

Willi
Forum-Newbie
Forum-Newbie
Beiträge: 9
Registriert: So 4. Sep 2011, 17:06

Beitrag von Willi »

Hallo,

guter Hinweis! Habe es vorher nicht in der Anleitung gefunden. Das Problem mit Potenzen bei Units ist damit gelöst. Eine neue Frage ist aber aufgetaucht ;)

Erstmal die Lösung für Interessierte: es werden nur Makros akzeptiert! (Anleitung S. 11-13)
\documentclass[ngerman,parskip]{scrartcl}
\usepackage[T1]{fontenc}
\usepackage[latin1]{inputenc}
\usepackage{babel, xfrac, siunitx}

\begin{document}

\si{\metre\per\second\squared} \\
\si{\metre\per\second\cubed} \\
\SI{10}{\kg\per\metre\tothe{5}} \\
\SI{10}{\raiseto{3}\kg\per\metre\tothe{5}} \\

\end{document}
Neue Frage: wie gebe ich bei der Zahl z.B. eine Potenz an? Soweit ich es sehe, werden nur Zahlen und Exponenten akzeptiert. Lösung wäre parse-numbers=false zu setzen, was natürlich weitere Auswirkungen hat. OK, man könnte das auch über die Einheit lösen, aber manchmal möchte man eine bestimmte Einheit haben, ohne den Prefix anzupassen. Z.B. kWh soll nicht zu GWh werden.
\documentclass[ngerman,parskip]{scrartcl}
\usepackage[T1]{fontenc}
\usepackage[latin1]{inputenc}
\usepackage{babel, xfrac, siunitx}

\begin{document}

%Geht
\num{10e3}{kg}

%Geht nicht
\SI{10^{3}}{kg}

%Geht, Tausendertrennzeichen und weitere Formatierungen müssen manuell eingefügt werden
\SI[parse-numbers=false]{100000^3}{kg} \\

\end{document}
Man kann halt nicht alles haben, aber vielleicht habe ich da auch nur wieder was in der Anleitung übersehen :wink:

Grüße
Willi

IrenaSekuta
Forum-Century
Forum-Century
Beiträge: 230
Registriert: Di 2. Dez 2008, 10:05

Exponentialschreibweise

Beitrag von IrenaSekuta »

\documentclass[ngerman,parskip]{scrartcl}
\usepackage[T1]{fontenc}
\usepackage[latin1]{inputenc}
\usepackage{babel, xfrac, siunitx}

\begin{document}

%Geht
\num{10e3}{kg}   %   => Logisch, denn für Zahlen mit Einheiten..

%Geht nicht
\SI{10^{3}}{kg}  %   => ...  ist das \SI-Makro ja da  \SI{10E3}{kg}

\end{document}
----------------------------------
- WinXP und Win 7 und ansatzweise Ubuntu 9.10 :-)
- Miktex 2.9 (Portable)
- WinEdt 6

Benutzeravatar
iTob
Forum-Meister
Forum-Meister
Beiträge: 1221
Registriert: Mo 19. Apr 2010, 22:19
Kontaktdaten:

Beitrag von iTob »

Hm …
Kannst du mit input-protec-tokens oder input-ignore was erreichen. Siehe Doku S. 24

Wenn das nicht geht, könnte man sich ein eigenes Makro bauen, alla
\xSI{<Zahl>}{<Exponent>}{<Einheit>}
mit
\newcommand{\xSI}[3]{%
    \ensuremath{%
        \num{#1}% Nummer
        ^{#2}% Exponent
        \,% Trennzeichen, ggf. anpassen
        \si{#3}% Einheit
    }%
}
Edit: @Irena:
\num ist nur für Zahlen ohne Einheiten, \si ist für Einheiten und \SI ist für Zahlen mit Einheiten. Außerdem ging die Frage auch eher in die Richtung, ob Dinge wir \num{2^4} oder ähnlich möglich sind … Also nicht nur angehängte Zehnerpotenzen, die man selbstverständlich am einfachsten mit \num{3e4} setzten sollte.

Willi
Forum-Newbie
Forum-Newbie
Beiträge: 9
Registriert: So 4. Sep 2011, 17:06

Beitrag von Willi »

Hallo iTob,

mit input-protect-tokens habe ich es nicht hinbekommen. Habe aber deinen Vorschlag für ein eigenes Makro umgesetzt, damit passt alles. Danke!

Grüße
Willi

Benutzeravatar
iTob
Forum-Meister
Forum-Meister
Beiträge: 1221
Registriert: Mo 19. Apr 2010, 22:19
Kontaktdaten:

Beitrag von iTob »

Gut. Ich hab’s grad nochmal versucht und auch keine direkte Lösung gefunden. Du könntest bei tex.stackexchange nochmal fragen, wenn du willst. Dort ist der Paketautor auch aktiv …

Antworten