PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : dcolumn und Schiftgröße in Zellen



rawry
19-08-2008, 15:50
Hallo Latex-Cracks!

Ich habe mal wieder ein Problem:

Die Tabellen in meinem Dokument sind recht umfangreich und um eine Tabelle auf eine Seite zu bekommen, habe ich für die Zellen jeweils eine Schriftgröße definiert nach dem Schema:

\begin{tabular}{>{\myfontsizetable}l>{\myfontsizetable}c>{\myfontsizetable}c}

Nun soll ich aber die Spalten nach dem Komma bzw. Punkt zentrieren, was mit dem Paket dcolumn auch wunderbar funktioniert allerdings hat Latex dann ein Prob mit meiner vorgegebene Schriftgröße:

"LaTeX Font Warning: Command \footnotesize invalid in math mode on input line XY"

Was kann ich machen um das Problem zu beheben?

Kann ich evtl über \newcolumntype{d}{D{.}{.}{-1}} irgendwie global die Schriftgröße für d-Spalten ändern? Z.B. durch \newcolumntype{d}{\footnotesize D{.}{.}{-1}}} oder so (ich weiß, dass es so nicht hinhaut, aber vielleicht kann man das so in die Richtigung irgendwie lösen?!).

Dank schon mal im voraus!

Rawry

thongor
19-08-2008, 15:53
Was kann ich machen um das Problem zu beheben?

Ein Minimalbeispiel (http://www.minimalbeispiel.de/).

rawry
19-08-2008, 16:04
Der Link funzt nicht. Habe trotzdem verstanden ;-)

There you go:

Minimalbeispiel:
%%%%%%%%%%%%%%%%%%%%%%%%
\documentclass[11pt]{scrbook}
\usepackage{dcolumn}
\usepackage{tabularx}
\usepackage{array}
\usepackage{threeparttable}
\usepackage{booktabs}

\newcolumntype{d}{D{.}{.}{-1}}

\begin{document}

\begin{table}[htb]
\centering
\begin{threeparttable}

\begin{tabular}{>{\small}d}
\toprule
0.7\\
0.087 \\
\end{tabular}
\end{threeparttable}
\end{table}

\end{document}
%%%%%%%%%%%%%%%%%%%%%%%%

thongor
19-08-2008, 16:56
Der Link funzt nicht.
Sorry, das war mein Fehler. Sollte jetzt aber berichtigt sein.

Versuch doch bitte mal das Folgende:

\documentclass[11pt]{scrbook}
\usepackage{dcolumn,tabularx,array,threeparttable, booktabs}

\newcolumntype{d}{D{.}{.}{-1}}

\begin{document}

\begin{table}[htb]

\centering

\begin{threeparttable}

\tiny
\begin{tabular}{d}
\toprule
0.7\\ 0.087 \\
\end{tabular}

\footnotesize
\begin{tabular}{d}
\toprule
0.7\\ 0.087 \\
\end{tabular}

\end{threeparttable}

\end{table}

\end{document}

edico
20-08-2008, 09:49
Deine Spezifikation ist leider widersprüchlich; ich kann zumindest nicht erkennen, ob Du die Schrift für die Tabelle insgesamt oder nur für die d-Spalten ändern willst.

Für den Fall


Kann ich evtl über \newcolumntype{d}{D{.}{.}{-1}} irgendwie global die Schriftgröße für d-Spalten ändern?
möge das helfen:



\documentclass{article}
\usepackage{dcolumn}
\newcolumntype{d}{D{.}{.}{-1}}

%%% <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
% soll die Schriftgroesse fuer einzelne Spalten geaendert werden,
% auf das Paket numprint wechseln; das definiert Spaltentypen n und N.
\usepackage{numprint}
\npdecimalsign{.}% default ist ein Komma
\newcolumntype{g}{>{\tiny}n{1}{3}}% Zahlen anpassen od. als Argumente übergeben

\begin{document}
\begin{tabular}{ldg}
ABC & 0.7 & 0.7 \\
DEF & 0.087 & 0.087 \\
\end{tabular}
\end{document}


edico

rawry
20-08-2008, 11:05
Hallo zusammen!

Vielen Dank für Eure Lösungsvorschläge.

Die Idee von thongor funktioniert zwar grundsätzlich, allerdings bekomme ich dann zig Warnungen ("\footnotesize is not valid in mathmode"). Außerdem zerhaut es mir die Zeilenabstände innerhalb der Tabelle.


Der Vorschlag edico funktioniert grundsätzlich auch, liefert aber noch mehr Warnungen: "Package numprint Warning: mantisse exceeds reserved space after decimal sign on input line XY".

Was genau machen die {1} und die {3} in \newcolumntype{g}{>{\tiny}n{1}{3}?

Es ergibt sich hier nämlich auch das Problem, dass die Zeilenüberschrift zentriert sein soll (was ich mit multicolumn festlege), die Zahlen in der Spalte aber nun linksbündig stehen.



Da meine Tabellen zeimlich groß sind, so dass sie geradeso auf eine Seite gehen, definiere ich die Schriftgröße, die innerhalb meiner Tabellen verwendet werden soll global mit
\newcommand{\myfontsizetable}{\footnotesize\select font}

Und schreibe dann in allen Tabellen für die das gelten soll:
\begin{tabular}{>{\myfontsizetable}l>{\myfontsizetable}c}

Das sind dann in der Regel alle. Es soll also auch für die Spalte, in der die Ausrichtung am Punkt erfolgen soll, diese definierte Schriftgröße gelten.



Hier nochmal ein Minimalbeispiel:

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\documentclass[11pt]{scrbook}
\usepackage{dcolumn}
\usepackage{tabularx}
\usepackage{array}
\usepackage{threeparttable}
\usepackage{booktabs}

\newcommand{\myfontsizetable}{\footnotesize\select font}
\newcommand{\myfontsizetablefootnotes}{\tiny\selec tfont}

\newcolumntype{d}{D{.}{.}{-1}}

\begin{document}

\begin{table}
\centering
\begin{threeparttable}

\renewcommand{\baselinestretch}{0.9}

\begin{tabular}{>{\myfontsizetable}l>{\myfontsizetable}c>{\myfontsizetable}c>{\myfontsizetable}c>{\myfontsizetable}c>{\myfontsizetable}d}
\toprule
&&\multicolumn{2}{>{\myfontsizetable}c}{Scenario I\tnote{b}}& \multicolumn{2}{>{\myfontsizetable}c}{Scenario II\tnote{c}}\\[-1mm]
&&\multicolumn{1}{c}{{\scriptsize $\delta_O=0.1$}}&\multicolumn{1}{c}{{\scriptsize $\delta_O=0.35$}}&\multicolumn{1}{c}{{\scriptsize $\delta_O=0.1$}}&\multicolumn{1}{c}{{\scriptsize $\delta_O=0.35$}}\\
\midrule

\bfseries{XY}\tnote{d} & & & & & \\
U / E &16.5 (16.3)&8.0 &20.4 &19.0 &9.7 \\[-1mm]
U / A &6.5 (16.7)&17.6 &9.0 &17.9 &18.6 \\[-1mm]
U / O & &2.4 &20.7 &1.2 &13.8 \\
\bottomrule
\end{tabular}
\begin{tablenotes}\myfontsizetablefootnotes
\renewcommand{\baselinestretch}{0.5}
\setlength{\extrarowheight}{-5mm}
\item[a] Initial
\end{tablenotes}
\end{threeparttable}
\end{table}
\renewcommand{\baselinestretch}{1.5}
\end{document}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%



Warum kann ich einer d-column nicht sagen: "Hier Schriftgröße \myfonsizetable?" ;-)


Viele Grüße
Rawry

thongor
20-08-2008, 12:53
\usepackage{rccol}

\begin{tabular}{l>{\footnotesize}R{3}{2}r}
ab & 0,7 & CD \\
EF & 0,087 & gh \\
rt & 12,24 & UI
\end{tabular}


Je nachdem, was das für Zahlen sind, könntest du die runden, und dabei auch dezimal ausrichten. Das Paket verträgt auch Schriftgrößenänderungen.

rawry
20-08-2008, 13:46
Vielen Dank thongor, ich werde das probieren und dann berichten ob es geklappt hat.

Hatte diese Paket schon probiert und eine komische Fehlermeldung erhalten, werde es aber erneut installieren und mir mal die Doku dazu reinziehen.

Grüße
Rawry

edico
20-08-2008, 22:06
funktioniert grundsätzlich auch, liefert aber noch mehr Warnungen
aber nicht mit meinem Beispiel!?



Warum kann ich einer d-column nicht sagen: "Hier Schriftgröße \myfonsizetable?"

weil es IMO eben nicht geht; deswegen meine Empfehlung.


Was genau machen die {1} und die {3} in \newcolumntype{g}{>{\tiny}n{1}{3}?

Anzahl der Stellen vor und nach dem Komma (Punkt) - was sonst ;-)



\documentclass{article}
\usepackage{dcolumn}
\newcolumntype{d}{D{.}{.}{-1}}

%%% <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
% soll die Schriftgroesse fuerr einzelne Spalten geaendert werden,
% auf das Paket numprint wechseln; das definiert Spaltentypen n und N.
\usepackage{numprint}
\npdecimalsign{.}% default ist ein Komma
\newcolumntype{g}{>{\tiny}n{1}{3}}% Zahlen anpassen od. als Argumente übergeben
\newcolumntype{G}{>{\tiny}n{2}{1}}%

\begin{document}
\begin{tabular}{ldg}
ABC & 0.7 & 0.7 \\
DEF & 0.087 & 0.087 \\
\end{tabular}

\begin{tabular}{lGGGGG}
\bfseries{XY} & & & & & \\
U / E &16.5 (16.3) &8.0 &20.4 &19.0 &9.7 \\
U / A & 6.5 (16.7) &17.6 &9.0 &17.9 &18.6 \\
U / O & &2.4 &20.7 &1.2 &13.8 \\
\end{tabular}
\end{document}


edico

Stefan_K
20-08-2008, 22:42
Hallo,

in solchen Fällen kann \everymath helfen, z.B.:

\begingroup
\everymath{\scriptstyle}
% hier folgt die Tabelle
\endgroup


Stefan