Anzeige:
Ergebnis 1 bis 5 von 5

Thema: Zentrieren von \SIrange in einer Tabelle

  1. #1
    Registrierter Benutzer
    Registriert seit
    24.10.2011
    Beiträge
    20

    Zentrieren von \SIrange in einer Tabelle

    Hallo Forum,

    Nach über sechsstündigem Scheitern möchte ich euch hier mein aktuelles Problem vorstellen. Ich möchte eine Tabelle erzeugen, in der eine lineare Parametrisierung für bestimmte Temperaturbereiche aufgelistet wird.
    Konkret stelle ich mir das so vor:

    Code:
    Temperaturbereich       alpha
          0 - 90            1,2
        >90 - 100           1,22
       >100 - 200           1,5
    Die Werte der linken Spalte sollen dabei am "-" zentriert werden. Leider bekomme ich das mit dem Paket siunitx und den mitgelieferten S-Spalten und dem \SIrange bzw. \numrange Befehl einfach nicht hin.

    Das Internet hat mir schon geraten, anstelle von \SIrange in einer Tabelle ohnehin besser zwei eigene Spalten zu verwenden, aber das will mir einfach nicht so richtig gefallen. Selbst dann ist die ordentliche Gestaltung nicht einfach:

    Code:
    \documentclass[
    	11pt, 
    	a4paper, 
    	titlepage, 
    	onecolumn, 
    	oneside,
    	]{scrbook}
    
    \usepackage[latin1]{inputenc}
    \usepackage[T1]{fontenc}
    \usepackage{lmodern}
    \usepackage[USenglish, ngerman]{babel}
    
    \usepackage{upgreek}
    \usepackage{multirow}
    \usepackage{booktabs}
    \usepackage{bigstrut}
    
    \usepackage[
    	per-mode=reciprocal, 
    	output-decimal-marker={,}, 
    	range-phrase={\ bis\ },
    	list-separator={,\,},
    	list-pair-separator={\ und\ },
    	list-final-separator={\ und\ }
    	]{siunitx}
    
    \begin{document}
    
    \begin{table}[htb]
    	\centering
    	\caption{Abschnittweise definierter Parameter $\upalpha$.}
    	\sisetup{
    	table-text-alignment = center
    	}
    	\begin{tabular}{
    		S[table-format = >3, table-number-alignment = left]	%table-number-alignment = left ist sinnlos?
    		%S[table-format = >3, table-number-alignment = center]
    		S[table-format = 3, table-number-alignment = left]
    		S[table-format = 1.2, table-number-alignment = center]
    		}
    		\toprule
    		\multicolumn{2}{c}{Temperatur / \SI{}{\celsius}} &                \bigstrut[t] \\
    		\cmidrule{1-2}
    		{von} & {bis}                                    & {$\upalpha$} \tabularnewline %\bigstrut[b] \\ funktioniert nach \tabularnewline nicht mehr
    		{von} & {bis}                                    & { $\upalpha$ } \bigstrut[b] \\ %alpha mit Leerzeichen,
    		{von} & {bis}                                    & {$\upalpha$} \bigstrut[b] \\	%alpha "ganz normal" -> wird in Spalte nicht korrekt zentriert
    		{von} & {bis}                                    & \multicolumn{1}{c}{$\upalpha$} \bigstrut[b] \\
    		\multicolumn{1}{r}{von} & \multicolumn{1}{l}{bis}                                    & \multicolumn{1}{c}{$\upalpha$} \bigstrut[b] \\
    		\midrule 
    		    0 & 90 & 1,2  \bigstrut[t] \\
    		> 90 & 100 & 1,22              \\
    		> 100 & 200 & 1,5 \bigstrut[b] \\
    		\bottomrule
    	\end{tabular}
    	\label{tab:label}
    \end{table}
    
    \end{document}
    sieht auch mies aus.

    Mittlerweile hab ich es aufgegeben und komme damit über die Runden:
    Code:
    \begin{table}[htb]
    	\centering
    	\caption{Abschnittweise definierter Parameter $\upalpha$.}
    	\sisetup{
    	table-text-alignment = center
    	}
    	\begin{tabular}{
    		S[table-format = >5, 
    			table-align-comparator = false,
    			table-align-text-pre = false,
    			table-align-text-post = false, 
    			table-number-alignment = left
    			]
    		S[table-format = 1.2]
    		}
    		\toprule
    		\multicolumn{1}{c}{Temperatur / \SI{}{\celsius}} & \multicolumn{1}{c}{$\upalpha$} \bigstrut[b] \\
    		\midrule 
    		0{ -- 90}      & 1,2  \bigstrut[t] \\
    		> 90{ -- 100}  & 1,22              \\
    		> 100{ -- 200} & 1,5  \bigstrut[b] \\
    		\bottomrule
    	\end{tabular}
    	\label{tab:label}
    \end{table}
    Das hab ich hier gefunden:
    Link

    Der Trick ist, dass man nur einen Teil von siunitx ausrichten lässt und den Rest des anzugebenden Werteintervalls in {}-Klammern setzt, wodurch es als Text interpretiert wird. Ich erreiche eine ungefähre Zentrierung unter der Überschrift aber nur dann, wenn ich die Spalte als S[table-format = >5] deklariere (obwohl ich keine 5-stelligen Zahlen eintrage), damit links von den Werten mehr Platz freigelassen wird.

    Ihr merkt schon, das tut weh, und geht eigentlich ganz weit am Sinn von TeX vorbei.

    Hat jemand von euch eine Idee, wie man das eleganter lösen könnte?
    Vielen Dank auf jeden Fall an alle, die sich hier mal Zeit nehmen und sich das ansehen.

    PS:
    So Spezialitäten wie
    Code:
    \multicolumn{1}{c}{$\upalpha$}
    damit ein griechischer Buchstabe korrekt in einer Überschriftszeile zentriert wird, sind dann noch das Salz in der Suppe wenn ohnehin schon Panik herrscht...

  2. #2
    Registrierter Benutzer
    Registriert seit
    06.08.2008
    Beiträge
    1.015
    Für eine einfache Zentrierung von nicht-numerischen Inhalten in S-Spalten genügt einfache Klammerung (statt multicolumn):

    Code:
    \begin{table}[htb]
    	\centering
    	\caption{Abschnittweise definierter Parameter $\upalpha$.}
    	\sisetup{
    	table-text-alignment = center
    	}
    	\begin{tabular}{
    		S[table-format = >5, 
    			table-align-comparator = false,
    			table-align-text-pre = false,
    			table-align-text-post = false, 
    			table-number-alignment = left
    			]
    		S[table-format = 1.2]
    		}
    		\toprule
    		{Temperatur / \si{\celsius}} & {$\upalpha$} \\
    		\midrule 
    		0{ -- 90}      & 1,2  \\
    		> 90{ -- 100}  & 1,22 \\
    		> 100{ -- 200} & 1,5 \\
    		\bottomrule
    	\end{tabular}
    	\label{tab:label}
    \end{table}
    Geändert von hakaze (04-01-2014 um 08:59 Uhr)

  3. #3
    Registrierter Benutzer
    Registriert seit
    24.10.2011
    Beiträge
    20
    Das hab ich natürlich zuerst auch versucht!
    In meinem Beispiel oben sind mehrere Varianten abgebildet.
    {$\upalpha$}, { $\upalpha$ } und auch die Variante mit \multicolumn{1}{c}{$\upalpha$}.

    Bei mir sehen alle Varianten unterschiedlich aus, und zentriert wird nur wenn ich es mit \multicolumn löse.

    Aber damit hab ich mich schon abgefunden.
    Was mich mehr zwickt, ist dass ich einfach keinen Weg finde die Zentrierung der \SIrange bzw. \numrange am Trennsymbol ("-") zu orientieren. Bei einem so umfangreichen Paket wie siuntix kann ich kaum daran glauben, dass es diese Möglichkeit nicht gibt. Ich glaub es scheitert eher in der korrekten Ausführung...

  4. #4
    Registrierter Benutzer
    Registriert seit
    06.08.2008
    Beiträge
    1.015
    Wenn du in deiner ersten Tabelle mal alle bigstrut-Befehle rausnimmst, werden auch alle Alphas (mit und ohne Leerzeichen bzw. multicolumn) richtig ausgerichtet.

    Zur Ausrichtung von siranges: das ist sicherlich nicht so einfach. Da muss effektiv dreimal ausrichten: 1. am Bereichstrenner (--), 2. am Dezimalzeichen der ersten Zahl und 3. am Dezimaltrenner der zweiten Zahl. Das macht die Sache kompliziert und auch nicht immer sinnvoll (siehe auch diese Diskussion um die Ausrichtung von komplexen Zahlen).

    Ich finde die Aufteilung in zwei Spalten (ohne sirange) noch am besten. Außerdem kannst du über die Definition des Spaltentrenners (@) auch einen entsprechenden Bereichstrenner einfügen:
    Code:
    \begin{table}[htb]
    	\centering
    	\caption{Abschnittweise definierter Parameter $\upalpha$.}
    	\sisetup{
    	table-text-alignment = center
    	}
    	\begin{tabular}{
    		S[table-format = >5, % Platz für 5 Ziffern reservieren
    			table-align-comparator = false,
    			table-align-text-pre = false,
    			table-align-text-post = false]
    		@{~--~}% -- als Spaltentrenner
    		S[table-format = 3, table-number-alignment = left]
    		S[table-format = 1.2, table-number-alignment = center]
    		}
    		\toprule
    		\multicolumn{2}{c}{Temperatur / \si{\celsius}} & {$\upalpha$} \\
    		\midrule 
    		    0 & 90 & 1,2 \\
    		> 90 & 100 & 1,22 \\
    		> 100 & 200 & 1,5 \\
    		\bottomrule
    	\end{tabular}
    	\label{tab:label}
    \end{table}
    Geändert von hakaze (04-01-2014 um 11:27 Uhr)

  5. #5
    Registrierter Benutzer
    Registriert seit
    24.10.2011
    Beiträge
    20
    Vielen Dank für deine Version mit dem Spaltentrenner - das sieht wirklich gut aus!

    Mir wurde einmal angeraten \bigstrut zu verwenden, und mittlerweile finde ich auch dass es das Erscheinungsbild der Tabellen bessert. Insofern kann bzw möchte ich eigentlich jetzt nicht bei ein, zwei Tabellen darauf verzichten. Aber es ist auch gut zu wissen, dass \bigstrut die Wurzel des \multicolumn-Übels war!

    Nochmal vielen Dank und liebe Grüße!

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •