PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Tabellenproblem



LuPi
10-10-2010, 15:19
Die folgende Tabelle entspricht inzwischen weitgehend den Verlagswünschen, allerdings sollten die Einträge der Spalten zwei bis vier noch mittig unter den "Y" zu stehen kommen. Wie mache ich das?

Zusatzfrage: Gibt es für die Ausrichtung am \cdot auch eine ähnliche Abkürzung wie mit den "d-Spalten"?


\documentclass{scrartcl}
\usepackage[ngerman]{babel}
\usepackage{booktabs}
\usepackage{numprint}
\usepackage{tabularx}
\newcolumntype{C}{>{\centering\arraybackslash}X}
\begin{document}
\begin{tabularx}{\linewidth}{@{}lr@{$\,\cdot\,$}lr @{$\,\cdot\,$}lr@{$\,\cdot\,$}l@{}}
\toprule
Frequenz & \multicolumn{6}{c}{Spezifische Reflektivitaet in X bei einer
Regenrate $R$ von} \\
& \multicolumn{2}{C}{Y} & \multicolumn{2}{C}{Y} &
\multicolumn{2}{C}{Y} \\
\cmidrule[\heavyrulewidth]{1-7}
3 GHz & 1,5 & \numprint{e-11} & 3 & \numprint{e-10} & 1,5 & \numprint{e-8} \\
10 GHz & 1,5 & \numprint{e-9} & 6 & \numprint{e-8} & 2 & \numprint{e-6} \\
30 GHz & 2 & \numprint{e-7} & 9 & \numprint{e-6} & 2 & \numprint{e-4} \\
\bottomrule
\end{tabularx}
\end{document}

mechanicus
10-10-2010, 15:29
Hi,

warum nimmst du tabularx. Du nutzt es ja nicht mal.


\documentclass{scrartcl}
\usepackage[ngerman]{babel}
\usepackage{booktabs}
\usepackage{numprint}
\usepackage{tabularx}
\newcolumntype{C}{>{\centering\arraybackslash}X}
\begin{document}
\begin{tabular}{@{}lr@{$\,\cdot\,$}lr@{$\,\cdot\,$ }lr@{$\,\cdot\,$}l@{}}
\toprule
Frequenz & \multicolumn{6}{l}{\parbox{5cm}{Spezifische Reflektivitaet in X bei einer
Regenrate $R$ von}} \\
& \multicolumn{2}{c}{Y} & \multicolumn{2}{c}{Y} &
\multicolumn{2}{c}{Y} \\
\cmidrule[\heavyrulewidth]{1-7}
3 GHz & 1,5 & \numprint{e-11} & 3 & \numprint{e-10} & 1,5 & \numprint{e-8} \\
10 GHz & 1,5 & \numprint{e-9} & 6 & \numprint{e-8} & 2 & \numprint{e-6} \\
30 GHz & 2 & \numprint{e-7} & 9 & \numprint{e-6} & 2 & \numprint{e-4} \\
\bottomrule
\end{tabular}
\end{document}

Gruß
Marco

LuPi
10-10-2010, 15:30
Hast Du Dir den Anhang angeschaut? Die Kopfzeile (und die Tabelle im Ganzen) wird mit "C" ausgetrieben.

mechanicus
10-10-2010, 15:32
Hast Du Dir den Anhang angeschaut? Die Kopfzeile (und die Tabelle im Ganzen) wird mit "C" ausgetrieben.
Die Tabelle entspricht ja deinem MB :D

Ich würde solche Tabellen mit siunitx machen.

LuPi
10-10-2010, 15:34
Mit siunitx habe ich mich noch nicht beschäftigt. Kann ich damit die gewünschte Tabellenausrichtung am "Malpunkt" erreichen?

mechanicus
10-10-2010, 16:54
Mit siunitx habe ich mich noch nicht beschäftigt. Kann ich damit die gewünschte Tabellenausrichtung am "Malpunkt" erreichen?

Das Problem ist die Lange Zeile am Anfang. Wenn diese nicht umgebrochen wird, wird es schwer mit der Ausrichtung. Anbei mal etwas Spielerei:

\documentclass{scrartcl}
\usepackage[ngerman]{babel}
\usepackage{booktabs}
\usepackage{numprint}
\usepackage{tabularx}
\usepackage{ragged2e}
\usepackage{calc}
\usepackage[locale=DE]{siunitx}
\sisetup{%
exponent-product =\cdot}
\newcolumntype{C}{>{\centering\arraybackslash}X}
\begin{document}
\begin{table}[!ht]
\centering
\sisetup{
table-number-alignment = center,
table-figures-integer = 1,
table-figures-exponent = 2
}

\begin{tabular}{@{}
S
S[table-figures-exponent = 3,table-figures-decimal = 1]
S[table-figures-exponent = 3,table-figures-decimal = 0]
S[table-figures-exponent = 2,table-figures-decimal = 1]
}
\toprule
{Frequenz} & \multicolumn{3}{>{\RaggedRight}m{5.5cm}@{}}{Spezifische Reflektivitaet in X bei einer
Regenrate $R$ von} \\
& {Y} & {Y} & {Y} \\ \cmidrule[\heavyrulewidth]{1-4}
\SI{3}{\giga\hertz} & 1.5e-11 & 3e-10 & 1.5e-8 \\
\SI{10}{\giga\hertz} & 1.5e-9 & 6e-8 & 2e-6 \\
\SI{30}{\giga\hertz} & 2e-7 & 9e-6 & 2e-4 \\
\bottomrule
\end{tabular}


\vspace*{3\baselineskip}

\renewcommand{\arraystretch}{1.25}
\begin{tabularx}{\textwidth}{@{}*{4}{>{\Centering}X}@{}}
\toprule
Frequenz & \multicolumn{3}{c}{Spezifische Reflektivitaet in X bei einer Regenrate $R$ von}
\\
& Y & Y & Y\\\cmidrule[\heavyrulewidth]{1-4}
\begin{tabular}{S[table-figures-decimal = 1]}
\SI{3}{\giga\hertz}\\ \SI{10}{\giga\hertz}\\\SI{30}{\giga\hertz}
\end{tabular}%
&
\begin{tabular}{S[table-figures-decimal = 1]}
1.5e-11\\ 1.5e-9\\2e-7
\end{tabular}%
&
\begin{tabular}{S[table-figures-decimal = 0]}
3e-10\\6e-8\\9e-6
\end{tabular}%
&
\begin{tabular}{S[table-figures-decimal = 1]}
1.5e-8\\2e-6 \\2e-4
\end{tabular}%
\\
\bottomrule
\end{tabularx}


\end{table}


\end{document}

Gruß
Marco

LuPi
10-10-2010, 18:00
Hm, das werde ich morgen testen, vielen Dank!

Da ich ansonsten auch gut ohne siunitx auskomme (ich nutze units), würde mir eine Lösung ohne siunitx natürlich auch nicht schlecht schmecken.

Einen schönen, sonnigen Herbstabend noch.

LuPi
11-10-2010, 08:14
Beim pdfLaTeXen kommt ein "undefined control sequence" "...\int_compare:nF" zum Vorschein. Was sagt mir das? Eine der gängigen Suchmaschinen hilft da nicht weiter.

voss
11-10-2010, 09:07
Beim pdfLaTeXen kommt ein "undefined control sequence" "...\int_compare:nF" zum Vorschein. Was sagt mir das? Eine der gängigen Suchmaschinen hilft da nicht weiter.

ist ein Fehler vom Autor von sinuitx, der vergessen hat auch
andere geänderte Pakete auf CTAN zu laden.

Sollte mit dem heutigen TeXLive update behoben sein.

Herbert

LuPi
11-10-2010, 10:05
Gut, dann werde ich das morgen noch einmal testen.

Aber, Herbert, gibt es hierfür tatsächlich keine "einfachere" Lösung, das heißt, ohne siunitx und nur mit Bordmitteln?

voss
11-10-2010, 14:25
gibt es hierfür tatsächlich keine "einfachere" Lösung, das heißt, ohne siunitx und nur mit Bordmitteln?


\documentclass{scrartcl}
\usepackage[ngerman]{babel}
\usepackage{booktabs}
\usepackage{numprint}
\usepackage{tabularx}
\def\Y{\tabular{r @{\,Y\,} l}\null&\null\endtabular}
\begin{document}

\begin{tabularx}{\linewidth}{@{}lr@{$\,\cdot\,$}lr @{$\,\cdot\,$}lr@{$\,\cdot\,$}l@{}}
\toprule
Frequenz & \multicolumn{6}{c}{Spezifische Reflektivitaet in X bei einer
Regenrate $R$ von} \\
& \multicolumn{2}{X}{\Y} & \multicolumn{2}{X}{\Y} &
\multicolumn{2}{X}{\Y} \\
\cmidrule[\heavyrulewidth]{1-7}
3 GHz & 1,5 & \numprint{e-11} & 3 & \numprint{e-10} & 1,5 & \numprint{e-8} \\
10 GHz & 1,5 & \numprint{e-9} & 6 & \numprint{e-8} & 2 & \numprint{e-6} \\
30 GHz & 2 & \numprint{e-7} & 9 & \numprint{e-6} & 2 & \numprint{e-4} \\
\bottomrule
\end{tabularx}
\end{document}

Herbert

LuPi
11-10-2010, 15:20
Vielen Dank, das ist schon fast das Gewünschte. Letzter Punkt: Wie kann ich die Spalten zwei bis vier zentrieren? Ich habe in dem Beispiel nur provisorisch (!) vertikale Linien eingezogen, an denen man erkennt, dass die Einträge linksbündig erscheinen.


\documentclass{scrartcl}
\usepackage[ngerman]{babel}
\usepackage{booktabs}
\usepackage{numprint}
\usepackage{tabularx}
\def\Y{\tabular{r @{\,Y\,} l}\null&\null\endtabular}
\begin{document}

\begin{tabularx}{\linewidth}{@{}l|r@{$\,\cdot\,$}l |r@{$\,\cdot\,$}l|r@{$\,\cdot\,$}l@{}}
\toprule
Frequenz & \multicolumn{6}{c}{Spezifische Reflektivitaet in X bei
einer
Regenrate $R$ von} \\
& \multicolumn{2}{X}{\Y} & \multicolumn{2}{X}{\Y} &
\multicolumn{2}{X}{\Y} \\
\cmidrule[\heavyrulewidth]{1-7}
3 GHz & 1,5 & \numprint{e-11} & 3 & \numprint{e-10} & 1,5 & \numprint{e-8} \\
10 GHz & 1,5 & \numprint{e-9} & 6 & \numprint{e-8} & 2 & \numprint{e-6} \\
30 GHz & 2 & \numprint{e-7} & 9 & \numprint{e-6} & 2 & \numprint{e-4} \\
\bottomrule
\end{tabularx}
\end{document}

voss
11-10-2010, 15:45
Vielen Dank, das ist schon fast das Gewünschte. Letzter Punkt: Wie kann ich die Spalten zwei bis vier zentrieren? Ich habe in dem Beispiel nur provisorisch (!) vertikale Linien eingezogen, an denen man erkennt, dass die Einträge linksbündig erscheinen.



\documentclass[parskip]{scrartcl}
\usepackage[ngerman]{babel}
\usepackage{booktabs}
\usepackage{numprint}
\usepackage{tabularx}
\usepackage{ragged2e}
\renewcommand\tabularxcolumn[1]{>{\Centering}p{#1}}
\def\TabA#1{\tabular{l@{\,GHz\hspace{\tabcolsep}}} #1\endtabular}
\def\TabB#1{\tabular{r @{\,$\cdot$\,} l}#1\endtabular}

\begin{document}


\rule{\linewidth}{1pt}

\begin{tabularx}{\linewidth}{@{} l X X X @{}}\toprule
Frequenz & \multicolumn{3}{c}{Spezifische Reflektivitaet in X bei einer Regenrate $R$ von} \\
& Y & Y & Y\\\midrule
\TabA{\phantom{0}3\\10\\30} &
\TabB{1,5 & \numprint{e-11}\\1,5 & \numprint{e-9}\\2 & \numprint{e-7}} &
\TabB{3 & \numprint{e-10}\\6 & \numprint{e-8}\\9 & \numprint{e-6}} &
\TabB{1.5 & \numprint{e-7}\\2 & \numprint{e-6}\\2 & \numprint{e-4}}\\\bottomrule
\end{tabularx}

\end{document}

Herbert

mechanicus
11-10-2010, 15:48
Hi,

einen Lösungsansatz habe ich dir bereits oben gegen und die Schwierigkeit mit dem langen Satz ebenfalls.


\documentclass{scrartcl}
\usepackage[ngerman]{babel}
\usepackage{booktabs}
\usepackage{numprint}
\usepackage{tabularx,ragged2e}
\def\Y{\tabular{r @{\,Y\,} l}\null&\null\endtabular}
\begin{document}

\begin{tabularx}{\linewidth}{@{}l|r@{$\,\cdot\,$}l |r@{$\,\cdot\,$}l|r@{$\,\cdot\,$}l@{}}
\toprule
Frequenz & \multicolumn{6}{c}{Spezifische Reflektivitaet in X bei
einer
Regenrate $R$ von} \\
& \multicolumn{2}{X}{\Y} & \multicolumn{2}{X}{\Y} &
\multicolumn{2}{X}{\Y} \\
\cmidrule[\heavyrulewidth]{1-7}
3 GHz & 1,5 & \numprint{e-11} & 3 & \numprint{e-10} & 1,5 & \numprint{e-8} \\
10 GHz & 1,5 & \numprint{e-9} & 6 & \numprint{e-8} & 2 & \numprint{e-6} \\
30 GHz & 2 & \numprint{e-7} & 9 & \numprint{e-6} & 2 & \numprint{e-4} \\
\bottomrule
\end{tabularx}


\def\SPL{\tabular{l} 3 GHz \\ 10 GHz \\30 GHz\endtabular}
\def\SPR#1{\tabular{r@{$\,\cdot\,$}l} #1 \endtabular}

\begin{tabularx}{\linewidth}{@{}l*{3}{>{\Centering}X}}
\toprule
Frequenz & \multicolumn{3}{c}{Spezifische Reflektivitaet in X bei einer Regenrate $R$ von}
\\
& {Y} & {Y} & {Y} \\
\cmidrule[\heavyrulewidth]{1-4}
\SPL%
&%
\SPR{1,5 & \numprint{e-11}\\ 1,5 & \numprint{e-9}\\2 & \numprint{e-7}}%
&%
\SPR{3 & \numprint{e-10}\\6 & \numprint{e-8} \\ 9 & \numprint{e-6}}%
&%
\SPR{1,5 & \numprint{e-8}\\ 2 & \numprint{e-6}\\ 2 & \numprint{e-4}}\\
\bottomrule
\end{tabularx}
\end{document}

@Herbert: Mit der Konstruktion hast du doch das gleich Probleme. Du nutzt zwar tabularx, doch die Hauptspalte nutzen den Vorzug der Breitenberechnung nicht. Somit kann das bzgl. der gewünschten Spalten doch gar nicht zentriert werden. Natürlich ist durch multicolum{2}{X} sichergestellt, dass die Breiten einen gewissen Startpunkt haben, aber das wars. Verstehst du wenigstens meine Aussage :rolleyes:

Gruß
Marco

mechanicus
11-10-2010, 15:49
@Herbert: Zwei ... ein Gedanke :p

Gruß
Marco

LuPi
11-10-2010, 16:17
Besten Dank, Ihr Beiden! Das ist jetzt tatsächlich genau das, was der Verlag haben will. Die Lösung(en) muss ich mir hinsichtlich ihrer Funktion noch mal genauer anschauen, aber mit den LaTeX-Tabellen bin ich ohnehin nicht gut Freund.