PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Über subfloats hinweg am komma ausrichten



René Geppert
13-12-2008, 13:44
in einer tabelle befinden sich 2 subfloats
innerhalb jedes subfloats am komma ausrichten, funktioniert einwandfrei
ich hätte es aber auch gerne über beide subfloats hinweg ausgerichtet, sofern das möglich ist



\documentclass[11pt,a4paper,oneside]{scrreprt}
\usepackage[ngerman,USenglish]{babel}
\usepackage[T1]{fontenc}
\usepackage[ansinew]{inputenc}
\usepackage[english=american,babel]{csquotes}

%\setcounter{lotdepth}{2}
\usepackage{subfig}
\captionsetup[subtable]{labelformat=simple,listofformat=subsimple,positio n=top,singlelinecheck=false,font=normal}
\renewcommand{\thesubtable}{Panel~\Alph{subtable}: }

\usepackage{amsmath,amssymb,units}

\usepackage{tabularx,array,booktabs,ragged2e,rotat ing,dcolumn}
\usepackage[flushleft]{threeparttable}
\setlength{\parindent}{0pt}

\begin{document}


\begin{sidewaystable}\caption{Summary Statistics}\label{summary}\medskip
\begin{threeparttable}
\begin{tabular}{@{}p{0.8\textwidth}@{}}
\toprule
\vspace{-\intextsep}
\subfloat[Early Adopter \label{sumearly}]{%
\begin{tabularx}{\textwidth}{l*{5}{D{.}{.}{5}}}
\textit{Variable} & Median & Mean & StDev & Min & Max \\
\hspace{3pt}\textit{(N=67)} & & & & & \\ \addlinespace
(in mio US\$:) & & & & &\\
\textit{A} & & 316,721.0 & 592,812.3 & 289.0 & 2,199,848.0\\
\textit{B} & & 308,014.2 & 573,970.8 & 282.0 & 2,132,281.0\\
\textit{C} & & 127,668.1 & 247,738.8 & 44.0 & 900,000.0\\
\textit{D} & & 64,663.8 & 133,836.3 & 0.0 & 493,439.0\\ \addlinespace
(in \%:) & & & & & \\
\textit{$\nicefrac{A}{B}$} & & 96.51 & 2.52 & 89.62 & 99.61\\
\textit{$\nicefrac{A}{C}$} & & 24.28 & 13.38 & 4.36 & 65.13\\
\textit{$\nicefrac{B}{C}$} & & 7.80 & 11.49 & 0.00 & 43.04\\
\end{tabularx}
}%
\\
\subfloat[Late Adopter \label{sumlate}]{%
\begin{tabularx}{\textwidth}{l*{5}{D{.}{.}{5}}}
\textit{Variable} & Median & Mean & StDev & Min & Max \\
\hspace{3pt}\textit{(N=1014)} & & & & & \\ \addlinespace
(in mio US\$:) & & & & &\\
\textit{A} & & 11,158.4 & 50,937.7 & 46.0 & 812,433.0\\
\textit{B} & & 10,684.7 & 48,668.9 & 43.0 & 766,831.0\\
\textit{C} & & 2,881.1 & 22,372.7 & 0.0 & 377,275.0\\
\textit{D} & & 127.1 & 1,224.2 & 0.0 & 25949.0\\ \addlinespace
(in \%:) & & & & & \\
\textit{$\nicefrac{A}{B}$} & & 96.61 & 2.32 & 84.02 & 100.00\\
\textit{$\nicefrac{A}{C}$} & & 17.28 & 11.48 & 0.00 & 95.90\\
\textit{$\nicefrac{B}{C}$} & & 0.25 & 1.83 & 0.00 & 37.08\\
\end{tabularx}
}%
\end{tabular}
\end{threeparttable}
% \begin{tablenotes}
% \end{tablenotes}
\end{sidewaystable}

\end{document}


jemand eine idee wie?

mfg, René

mechanicus
13-12-2008, 13:50
jemand eine idee wie?
Hallo,

du hast aber auch immer Wünsche.:D (werde nachher mal rumspielen)

Gruß
Marco

voss
13-12-2008, 14:02
in einer tabelle befinden sich 2 subfloats
innerhalb jedes subfloats am komma ausrichten, funktioniert einwandfrei
ich hätte es aber auch gerne über beide subfloats hinweg ausgerichtet, sofern das möglich ist


wo ist überhaupt der Sinn von subfloats? Schließlich ist das ganze
eine einzige Tabelle? Also kann man das auch so behandeln und hat
automatisch die Ausrichtung.

Herbert

mechanicus
13-12-2008, 14:08
\documentclass[11pt,a4paper,oneside]{scrreprt}
\usepackage[ngerman,USenglish]{babel}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[english=american,babel]{csquotes}

%\setcounter{lotdepth}{2}
\usepackage{subfig}
\captionsetup[subtable]{labelformat=simple,listofformat=subsimple,positio n=top,singlelinecheck=false,font=normal}
\renewcommand{\thesubtable}{Panel~\Alph{subtable}: }

\usepackage{amsmath,amssymb,units}

\usepackage{tabularx,array,booktabs,ragged2e,rotat ing,dcolumn}
\usepackage[flushleft]{threeparttable}
\setlength{\parindent}{0pt}
\def\MA#1{\multicolumn{6}{l}{#1}}
\def\MC#1{\multicolumn{1}{c}{#1}}
\begin{document}


\begin{sidewaystable}\caption{Summary Statistics}\label{summary}\medskip
\begin{threeparttable}
\begin{tabular}{l*{5}{D{.}{.}{5}}}
\toprule
\MC{\subfloat[Early Adopter][\mbox{Early Adopter} \label{sumearly}]{\mbox{}}} \\
\MC{\textit{Variable}} & \MC{Median} & \MC{Mean} & \MC{StDev} & \MC{Min} & \MC{Max} \\
\MC{\textit{(N=67)}} & & & & & \\ \addlinespace
\MC{(in mio US\$:)} & & & & & \\
\textit{A} & & 316,721.0 & 592,812.3 & 289.0 & 2,199,848.0 \\
\textit{B} & & 308,014.2 & 573,970.8 & 282.0 & 2,132,281.0 \\
\textit{C} & & 127,668.1 & 247,738.8 & 44.0 & 900,000.0 \\
\textit{D} & & 64,663.8 & 133,836.3 & 0.0 & 493,439.0 \\ \addlinespace
(in \%:) & & & & & \\
\textit{$\nicefrac{A}{B}$} & & 96.51 & 2.52 & 89.62 & 99.61 \\
\textit{$\nicefrac{A}{C}$} & & 24.28 & 13.38 & 4.36 & 65.13 \\
\textit{$\nicefrac{B}{C}$} & & 7.80 & 11.49 & 0.00 & 43.04 \\
\MA{\subfloat[Early Adopter][\mbox{Early Adopter} \label{sumlate}]{\mbox{}}} \\
\MC{textit{Variable}} & \MC{Median} & \MC{Mean} & \MC{StDev} & \MC{Min} & \MC{Max} \\
\MC{\textit{(N=1014)}} & & & & & \\ \addlinespace
\MC{(in mio US\$:)} & & & & & \\
\textit{A} & & 11,158.4 & 50,937.7 & 46.0 & 812,433.0 \\
\textit{B} & & 10,684.7 & 48,668.9 & 43.0 & 766,831.0 \\
\textit{C} & & 2,881.1 & 22,372.7 & 0.0 & 377,275.0 \\
\textit{D} & & 127.1 & 1,224.2 & 0.0 & 25949.0 \\ \addlinespace
(in \%:) & & & & & \\
\textit{$\nicefrac{A}{B}$} & & 96.61 & 2.32 & 84.02 & 100.00 \\
\textit{$\nicefrac{A}{C}$} & & 17.28 & 11.48 & 0.00 & 95.90 \\
\textit{$\nicefrac{B}{C}$} & & 0.25 & 1.83 & 0.00 & 37.08 \\
\bottomrule
\end{tabular}
\end{threeparttable}
% \begin{tablenotes}
% \end{tablenotes}
\end{sidewaystable}

\end{document}

René Geppert
15-12-2008, 17:11
habe ganz vergessen mich für die gute arbeit zu bedanken^^
also, erstmal danke mechanicus

allerdings sind mir noch 2 kleine schönheitsfehler aufgefallen
a) anders als bei der vorherigen version (ohne ausrichtung am komma), funktionieren die sprungstellen zu den labels nicht korrekt (egal wie ich sie hin- und herschiebe); ich lande immer unterhalb der "Panel"-Labels.

\usepackage[all]{hypcap} was das problem für fließumgebungen normalerweise löst, ist bereits eingebunden

b) Eine Referenz der Panel im Text mit \ref oder \autoref erzeugt sowas in der richtung: 3Panel B:, dabei ist die 3 aber auch nicht die tabellennummer, sondern immer tablenumber+1 (also: : und zahl davor hätte ich gerne weg)

vorschläge? :D

-_-

René Geppert
15-12-2008, 17:40
"minimalbsp." nachgeliefert


\documentclass[11pt,a4paper,oneside]{scrreprt}
\usepackage[ngerman,USenglish]{babel}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}

\renewcommand{\thetable}{\arabic{table}}

\usepackage{tocloft}
\setcounter{lotdepth}{2}
\usepackage{subfig}
\renewcommand{\thesubtable}{Panel~\Alph{subtable}: }

\makeatletter
\renewcommand{\l@subtable}{\@dottedtocline{2}{5em} {5em}}
\makeatother

\usepackage{booktabs,ragged2e,rotating,dcolumn}
\usepackage[flushleft]{threeparttable}
\def\MA#1{\multicolumn{6}{l}{#1}}
\def\MC#1{\multicolumn{1}{c}{#1}}

\usepackage{hyperref}
\usepackage[all]{hypcap}

\begin{document}

\tableofcontents
\listoftables

\newpage

\begin{table}\caption{Summary Statistics}\label{summary}\medskip
\begin{threeparttable}
\begin{tabular}{l*{5}{D{.}{.}{5}}}
\toprule
\MC{\subfloat[Early Adopter][\mbox{Early Adopter} \label{sumearly}]{\mbox{}}} \\
\MC{\textit{Variable}} & \MC{Median} & \MC{Mean} & \MC{StDev} & \MC{Min} & \MC{Max} \\
\MC{\textit{(N=67)}} & & & & & \\ \addlinespace
\MC{(in mio US\$:)} & & & & & \\
\bottomrule
\end{tabular}
\end{threeparttable}
TEXT\\
TEXT\\
TEXT\\
TEXT\\
\newpage
TEXT\\
TEXT\\
\end{table}

\end{document}

btw - falls es an tocloft left, darauf kann ich leider nicht verzichten, da ich damit selbst erstellte verzeichnisse einbinde
allerdings hat es im mnml.bsp. auch keine auswirkungen (bis jetzt)

der hund liegt irgendwo bei
\renewcommand{\thetable}{\arabic{table}} begraben^^

mechanicus
15-12-2008, 19:58
der hund liegt irgendwo bei
\renewcommand{\thetable}{\arabic{table}} begraben^^

Nö:D,

\documentclass[11pt,a4paper,oneside]{scrreprt}
\usepackage[ngerman]{babel}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}

\renewcommand{\thetable}{\arabic{table}}

\usepackage{tocloft}
\setcounter{lotdepth}{2}
\usepackage[demo]{graphicx}
\usepackage[listofformat=subparens]{subfig}
\renewcommand{\thesubtable}{Panel~\Alph{subtable}}

\makeatletter
\renewcommand{\l@subtable}{\@dottedtocline{2}{5em} {5em}}
\makeatother

\usepackage{booktabs,ragged2e,rotating,dcolumn}
\usepackage[flushleft]{threeparttable}
\def\MA#1{\multicolumn{6}{l}{#1}}
\def\MC#1{\multicolumn{1}{c}{#1}}

\usepackage{hyperref}
\usepackage[all]{hypcap}
\usepackage{blindtext}
\begin{document}

\tableofcontents
\listoftables

\chapter{foo}

\begin{table}[ht]\centering
\captionabove{Summary Statistics}\label{summary}
\begin{threeparttable}
\begin{tabular}{l*{5}{D{.}{.}{5}}}
\toprule
\MC{\subfloat[Early Adopter][\mbox{Early Adopter} \label{sumearly}]{\mbox{}}} \\
\MC{\textit{Variable}} & \MC{Median} & \MC{Mean} & \MC{StDev} & \MC{Min} & \MC{Max} \\
\MC{\textit{(N=67)}} & & & & & \\ \addlinespace
\MC{(in mio US\$:)} & & & & & \\
\bottomrule
\end{tabular}
\end{threeparttable}
\end{table}
\blindtext

\clearpage

Aus Panel \subref{sumearly}
\begin{table}[ht]\centering
\captionabove{Summary Statistics}\label{summary1}
\begin{threeparttable}
\begin{tabular}{l*{5}{D{.}{.}{5}}}
\toprule
\MC{\subfloat[Early Adopter][\mbox{Early Adopter} \label{sumearly1}]{\mbox{}}} \\
\MC{\textit{Variable}} & \MC{Median} & \MC{Mean} & \MC{StDev} & \MC{Min} & \MC{Max} \\
\MC{\textit{(N=67)}} & & & & & \\ \addlinespace
\MC{(in mio US\$:)} & & & & & \\
\bottomrule
\end{tabular}
\end{threeparttable}
\end{table}
\blindtext
\begin{figure}[ht]
\centering
\subfloat[Bild \label{bilda}]{\includegraphics[width=0.2\textwidth]{duck}}
\hspace{3em}
\subfloat[Bild \label{bildb}]{\includegraphics[width=0.2\textwidth]{duck}}
\caption{BILD}
\end{figure}

Aus Bild \ref{bilda} und \ref{bildb} mit Panel \subref{sumearly1}
\end{document}


Gruß
Marco

René Geppert
15-12-2008, 20:40
nun gut...ich werde das grab dann mal verlegen

habe gerade gar nicht gepeilt, warum das bei mir nicht wollte, bis ich gecheckt habe, dass in meinem
\captionsetup[subtable]{labelformat=simple,listofformat=subsimple,positio n=top,singlelinecheck=false,font=normal} das bislang vorhandene position = top eine äußerst störende option war xD

listofformat=subparens war bei mir dann auch nicht mehr nötig, da ich zuvor bereits das captionpaket lade, was diese option ja als default lädt

aber mit dem doppelpunkt hast du natürlich getrickst, den einfach zu löschen hätte sogar ich gekonnt :D

mechanicus
15-12-2008, 20:57
aber mit dem doppelpunkt hast du natürlich getrickst, den einfach zu löschen hätte sogar ich gekonnt :D
Solange es passt :D

Gruß
Marco

sommerfee
16-12-2008, 10:48
\usepackage[all]{hypcap} was das problem für fließumgebungen normalerweise löst, ist bereits eingebunden

Das hypcap-Paket funktioniert nur bei ganz regulären Gleitumgebungen, aber nicht bei threeparttable, \subfloat etc.

Davon ab funktioniert die Zusammenarbeit von subfig und hyperref nicht richtig. Suche mal ein wenig danach hier im Forum, irgendwo wurde mal ein Workaround erarbeitet, der in vielen Fällen (aber leider nicht allen) hilft.

Alternativ kann man auch das subcaption-Paket statt subfig verwenden, welches ich genau aus dem Grunde als Alternative entwickelt hatte, denn das subfig-Paket wird leider nicht mehr gepflegt. :(

Liebe Grüße,
Axel

René Geppert
16-12-2008, 11:18
gut, threeparttable ist auch keine gleitumgebung oder täusche ich?

du meinst vermutlich folgenden beitrag:
http://www.mrunix.de/forums/archive/index.php/t-51742.html

frag mich nicht warum, aber bei mir geht das alles^^
dank tatkräftiger unterstützung von mechanicus

hier so ein paar auszüge


\usepackage{caption}
\captionsetup{labelfont=bf}
\setcounter{lotdepth}{2}
\usepackage{subfig}
\captionsetup[subtable]{labelformat=simple,listofformat=subsimple,singlel inecheck=false,font=normal}
\renewcommand{\thesubtable}{Panel~\Alph{subtable}}


\makeatletter
\renewcommand{\l@subtable}{\@dottedtocline{2}{5em} {5em}}
\makeatother

...

\usepackage{hyperref}
\hypersetup{linkbordercolor=white, urlbordercolor=white, citebordercolor=white, colorlinks=true, linkcolor=blue, urlcolor=red, linktoc=all}
\usepackage[all]{hypcap}

und habe das alles jetzt schon einige male getestet...ich lande bisher immer, wo ich hinwill^^

René Geppert
16-12-2008, 11:51
so sommerfee:

habe obigen beitrag mal angepasst


\documentclass{scrreprt}
\usepackage[ngerman]{babel}

\usepackage{tocloft}
\setcounter{lotdepth}{2}
\usepackage{subfig}

\makeatletter
\renewcommand{\l@subfigure}{\@dottedtocline{2}{5em }{5em}}
\renewcommand{\thefigure}{\@arabic\c@figure}
\makeatother
\usepackage{hyperref}

\begin{document}

\listoffigures

\chapter{MyChapterTitle}
Testing subfigures.

\begin{figure}
\subfloat[a text image \label{test}]{%
\fbox{%
\parbox[b][5\baselineskip][c]{.25\textwidth}{%
\hspace*{\fill}I'm an image!\hspace*{\fill}%
\par}}
}
\caption{a minimal example}
\end{figure}

\pagebreak

TEST

\ref{test}

\end{document}

so sollte das doch sein oder welcher sprung funktioniert nicht?

btw - kA, warum es nicht ohne tocloft und das 2. renewcommand funktioniert, aber darum könnt ihr profis euch ja kümmern :D

sommerfee
16-12-2008, 12:47
so sollte das doch sein oder welcher sprung funktioniert nicht?

Wenn es bei dir funktioniert ist doch alles ok. Ein Beispiel für ein Sprung in ein \subfloat, der nicht funktioniert, ist z.B. in dem von dir verlinkten Thread zu finden. Alternativ könnte man bei dir auch ein zweites Kapitel anhängen, dann geht der Sprung zur zweiten Unterabbildung nicht, es gibt eine hyperref-Warnung und der Sprung geht fälschlicherweise zur ersten Abbildung:


\documentclass{scrreprt}
\usepackage[ngerman]{babel}

\usepackage{tocloft}
\setcounter{lotdepth}{2}
\usepackage{subfig}

\makeatletter
\renewcommand{\l@subfigure}{\@dottedtocline{2}{5em }{5em}}
\renewcommand{\thefigure}{\@arabic\c@figure}
\makeatother
\usepackage{hyperref}

\begin{document}

\listoffigures

\chapter{MyChapterTitle}
Testing subfigures.

\begin{figure}
\subfloat[a text image \label{test}]{%
\fbox{%
\parbox[b][5\baselineskip][c]{.25\textwidth}{%
\hspace*{\fill}I'm an image!\hspace*{\fill}%
\par}}
}
\caption{a minimal example}
\end{figure}

\pagebreak

TEST

\ref{test}

\chapter{MyChapterTitle 2}
Testing subfigures.

\begin{figure}
\subfloat[a text image \label{test2}]{%
\fbox{%
\parbox[b][5\baselineskip][c]{.25\textwidth}{%
\hspace*{\fill}I'm an image!\hspace*{\fill}%
\par}}
}
\caption{a minimal example}
\end{figure}

\pagebreak

TEST

\ref{test2}

\end{document}



btw - kA, warum es nicht ohne tocloft und das 2. renewcommand funktioniert, aber darum könnt ihr profis euch ja kümmern :D

Das tocloft braucht man nicht, wenn man das \setcounter... nach \usepackage{subfig} verschiebt. Ansonsten versucht man, einen Zähler zu setzen, der noch gar nicht definiert ist. (Sowohl das tocloft-Paket als auch das subfig-Paket definieren diesen Zähler.)

Mit dem zweiten \renewcommand umgehst du etwas unkonventionell (und nur teilweise funktionierend, siehe oben) die schon erwähnten Probleme von subfig in Verbindung mit hyperref. Wäre subfig korrekt an hyperref angepasst, dann würde es auch ohne diese Zeile gehen. Das sieht man auch daran, daß es auch ohne das zweite \renewcommand funktioniert, wenn man



\usepackage{tocloft}
\setcounter{lotdepth}{2}
\usepackage{subfig}


mal testweise durch



\usepackage{caption}
\usepackage[list=on]{subcaption}


ersetzt.

Liebe Grüße,
Axel

René Geppert
21-12-2008, 01:42
ich schreib mal einfach hier rein, weils noch zum thema gehört, nur nen leicht anderer sachverhalt

ich stehe gerade vor dem problem mit dcolumn am punkt auszurichten
allerdings sind die werte in einer zeile der tabelle diskret in einerschritten, so dass es usinnig ist ein .0 dranzuhängen
ich wollte dann vor die zahl einfach ein "unsichtbares" komma zaubern, allerdings macht mir das textcolor-command aufgrund der dcolumn-matheumgebung einen strich durch die rechnung

{\textcolor{white}{.}}279 erzeugt einen fehler

{\text{.}}279 beseitigt zwar die matheumgebung, der punkt wird aufgrund der formatierung aber nicht mehr als solcher von dcolumn erkannt

hat jemand nen anderen vorschlag?


\documentclass{article}
\usepackage{dcolumn,xcolor,booktabs}

\begin{document}

\begin{tabular}{@{}>{\slshape}l*{8}{D{.}{.}{8}}@{}}
\toprule
& (0.135) & (0.0349) & (0.402) & (0.0926) & (0.126) & (0.0250) & (0.380) & (0.166) \\
\midrule
Observations & .279 & 279 & 288 & 279 & 306 & 306 & 315 & 306 \\
\end{tabular}
\end{document}


denke sieht so ausgerichtet wie bei .279 deutlich besser aus als an den anderen stellen
vll. hat ja auch jemand nen anderen ansatz als das komma zu weißen

gruß