Tabellenspalten nach Dezimalstelle ausrichten trotz \SI{}{}

Tabellen und Grafiken erstellen und anordnen


Jordin1987
Forum-Newbie
Forum-Newbie
Beiträge: 2
Registriert: Sa 19. Sep 2015, 20:47

Tabellenspalten nach Dezimalstelle ausrichten trotz \SI{}{}

Beitrag von Jordin1987 »

Hallo Forum,

ich beschäftige mich zurzeit schon seit ein paar Tagen mit einem Problem und komme einfach nicht mehr weiter.

Es geht um die Ausrichtung der Werte in der Spalte, siehe Minimalbeispiel. In anderen Beiträgen habe ich gelesen, dass das mit siunitx mittels des Spaltentyps S sehr gut funktionieren soll. Das ganze klappt auch, nur habe ich in meiner Tabelle Zahlen mit den zugehörigen Einheiten mittels \SI{}{} definiert (siehe Beispiel), und da funktioniert offenbar die Ausrichtung nicht mehr / ich weiss nicht wie es funktioniert.

Ich habe in der siunitx-Dok nachgeschaut und da auch nichts gefunden.

Kann mir da jemand auf die Sprünge helfen? Darum wäre ich sehr dankbar.

Jordin

Code: Alles auswählen


% !TeX program = pdflatex 
\documentclass[ 
  captions=tableabove,        % Formatierung für Tabellenüberschriften 
  ngerman 
]{scrreprt} 
\usepackage[T1]{fontenc} 

\usepackage{babel} 
\usepackage{booktabs,multirow} 
\usepackage{siunitx} 

\begin{document} 

\renewcommand{\arraystretch}{1.2}		% Strecken der Tabelle vertikal für mehr Freiraum
\begin{table}[!htb]
	\centering
		\begin{tabular}{|S |S |S |l |}
		\hline
	  	\text{abcd}			& \text{abcd}			& \text{abcd}		& \text{abcd}						\\ \hline
	  	$\SI{1}{\mega\pascal}$		& $\SI{0}{\mega\pascal}$		& $\SI{-0.8}{\milli\metre}$		& $\SI{0.002}{\milli\metre}$		\\ \hline
	  	$\SI{100}{\mega\pascal}$		& $\SI{-100}{\mega\pascal}$	& $\SI{-0.09}{\milli\metre}$		& $\SI{0.191}{\milli\metre}$			\\ \hline
	  	$\SI{200}{\mega\pascal}$		& $\SI{-200}{\mega\pascal}$	& $\SI{-0.11778}{\milli\metre}$		& $\SI{0.360}{\milli\metre}$		\\ \hline
	  	$\SI{300}{\mega\pascal}$		& $\SI{-300}{\mega\pascal}$	& $\SI{-0.164}{\milli\metre}$		& $\SI{0.486}{\milli\metre}$			\\ \hline
	  	$\SI{400}{\mega\pascal}$		& $\SI{-200}{\mega\pascal}$	& $\SI{-0.346}{\milli\metre}$		& $\SI{0.478}{\milli\metre}$		\\ \hline
	  	$\SI{500}{\mega\pascal}$		& $\SI{-100}{\mega\pascal}$	& $\SI{-0.523}{\milli\metre}$		& $\SI{0.452}{\milli\metre}$		\\ \hline
	  	$\SI{600}{\mega\pascal}$		& $\SI{0}{\mega\pascal}$		& $\SI{-0.718}{\milli\metre}$		& $\SI{0.406}{\milli\metre}$		\\ \hline
		\end{tabular}
	\caption{text}
	\label{tab:parameterstudiegradienten}
\end{table}

\end{document}

Dateianhänge
Bildschirmfoto 2019-03-26 um 21.13.57.png
Bildschirmfoto 2019-03-26 um 21.13.57.png (82.56 KiB) 361 mal betrachtet
Zuletzt geändert von Jordin1987 am Di 26. Mär 2019, 21:27, insgesamt 1-mal geändert.


Bartman
Forum-Meister
Forum-Meister
Beiträge: 2180
Registriert: Do 16. Jul 2009, 21:41
Wohnort: Hessische Provinz

Beitrag von Bartman »

Der mathematische Modus wird in den Zellen nicht benötigt und bewirkt auch nicht die gewüschte Ausrichtung am Komma.

Du könntest wegen der Beschaffenheit der Werte in der dritten Spalte auch deren Typ S durch l ersetzen.

Eine Möglichkeit zeigt die folgende Änderung eines Teils Deines Beispiels:

Code: Alles auswählen

\documentclass[
%    captions=tableabove, % Formatierung für Tabellenüberschriften
    ngerman
]{scrreprt}

\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage{babel}
\usepackage{booktabs}
\usepackage[locale=DE]{siunitx}

\begin{document}
\begin{table}[htbp]
    \centering
    \renewcommand{\arraystretch}{1.2} % Strecken der Tabelle vertikal für mehr Freiraum
    \begin{tabular}{
        |S[table-format=3]@{\,}s
        |S[table-format=-3]@{\,}s
        |S[table-format=-1.5]@{\,}s
        |S[table-format=1.3]@{\,}s|
    }
    \hline
    \multicolumn{2}{|l|}{abcd} & \multicolumn{2}{l|}{abcd} & 
    \multicolumn{2}{l|}{abcd}  & \multicolumn{2}{l|}{abcd} \\ 
    \hline
    1   & \MPa &    0 & \MPa & -0.8     & \mm & 0.002 & \mm \\ 
    \hline
    100 & \MPa & -100 & \MPa & -0.09    & \mm & 0.191 & \mm \\ 
    \hline
    200 & \MPa & -200 & \MPa & -0.11778 & \mm & 0.360 & \mm \\ 
    \hline
\end{tabular}
\caption{text}
\label{tab:parameterstudiegradienten}
\end{table}
\end{document}
Wenn die Einheiten nicht in den Zellen stehen müssen, dann könntest Du für jede Spalte die Einheit in die Spaltenbeschriftung setzen, z. B. in einer eigenen Zeile.

In jedem Fall wäre es besser, Du benutzt das Befehlsangebot des von Dir bereits geladenen Pakets booktabs.
Zuletzt geändert von Bartman am Mi 27. Mär 2019, 06:42, insgesamt 2-mal geändert.

Gast

Beitrag von Gast »

Soweit ich weiß, geht S davon aus, dass die Spalten nur numerische Werte enthalten und nicht zusätzlich noch die Einheit. Es ist auch nicht unüblich, die Einheit nur in der Kopfzeile anzugeben und dann im Tabellenkörper nicht andauern zu wiederholen, das erspart Platz und Tintenverschwendung. Unter Nutzung von booktabs würde ich also

Code: Alles auswählen

\documentclass[
  captions=tableabove,        % Formatierung für Tabellenüberschriften
  ngerman
]{scrreprt}
\usepackage[T1]{fontenc}

\usepackage{babel}
\usepackage{booktabs}
\usepackage[locale=DE]{siunitx}

\begin{document}
\begin{table}[htbp]
  \centering
  \caption{text}
  \label{tab:parameterstudiegradienten}
  \begin{tabular}{S[table-format=3.0]S[table-format=-3.0]S[table-format=-1.5]S[table-format=1.3]}
    \toprule
      {abcd}                 & {abcd}                 & {abcd}                 & {abcd}                 \\ 
      {in \si{\mega\pascal}} & {in \si{\mega\pascal}} & {in \si{\milli\metre}} & {in \si{\milli\metre}} \\
    \midrule
          1   &    0 & -0.8     & 0.002 \\ 
        100   & -100 & -0.09    & 0.191 \\ 
        200   & -200 & -0.11778 & 0.360 \\ 
        300   & -300 & -0.164   & 0.486 \\ 
        400   & -200 & -0.346   & 0.478 \\ 
        500   & -100 & -0.523   & 0.452 \\ 
        600   &    0 & -0.718   & 0.406 \\ 
    \bottomrule
    \end{tabular}
\end{table}

\end{document}
vorschlagen. Da (besonders vertikale) Linien in Tabellen sparsam eingesetzt werden sollten, habe ich hier soweit wie möglich auf sie verzichtet. Wenn gewünscht ist, die einzelnen Zeilen stärker voneinander abzusetzen, kann man sie mit \addlinespace oder \midrules gruppieren.

Ich war so frei, mit locale=DE auf Kommas als Dezimaltrenner umzuschalten.

Jordin1987
Forum-Newbie
Forum-Newbie
Beiträge: 2
Registriert: Sa 19. Sep 2015, 20:47

Beitrag von Jordin1987 »

Hallo zusammen,

besten Dank für die Antworten. Ich habe die Dok zu booktabs durchgelesen und werde das Paket ab jetzt verwenden. Die Tabellen schauen so wirklich besser aus.

Noch eine Frage zur Antwort von Bartman:

Stellt in

Code: Alles auswählen

 |S[table-format=-3]@{\,}s 
das

Code: Alles auswählen

 @{\,} 
sicher, dass der halbe Abstand zwischen Zahl und Einheit vorhanden ist?

Bartman
Forum-Meister
Forum-Meister
Beiträge: 2180
Registriert: Do 16. Jul 2009, 21:41
Wohnort: Hessische Provinz

Beitrag von Bartman »


Antworten