PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : newcommand für threeparttable



dodothegoof
22-07-2006, 13:37
Für das package threeparttable muss ich in rechtsbündigen Tabellen den Befehl für die Fußnote folgendermaßen schreiben:
\TPTrlap{\tnote{a}}
Zitat aus sty-Datei. \TPTrlap: A command with one argument, to make notes go out of the column, into the column separation (for right-aligning)

Das funktioniert auch alles wunderbar, nur habe ich mir gedacht ob es möglich wäre, diese zwei Commands "TPTrlap" und "tnote" in einem Zusammenzufassen, so dass man \trnote{a} schreiben könnte. Das wäre weniger Schreibarbeit und übersichtlicher im Code.
Mein erster Versuch
\newcommand{\trnote{a}}{\TPTrlap{\tnote{a}}}
scheint nicht zu funktionieren, auch hätte ich gern, dass man statt dem "a" jeden beliebigen Wert einsetzten kann, oder zumindest a,b,c,d,usw.

Gibt es eine Lösung für das Problem?

bischi
22-07-2006, 14:15
\newcommand{\trnote}[1]{\TPTrlap{\tnote{#1}}}

mit Aufruf: \trnote{bla}

MfG Bischi

dodothegoof
22-07-2006, 14:22
Danke, hat geklappt

Sportflo
15-07-2009, 18:23
Hallo zusammen

Ich möchte meine Tabellen mit threeparttable auf APA-Norm bringen. Diese umfasst drei verschiedene Fussnoten (siehe Code). Es gelingt mir jedoch nicht, das gewünschte Resultat zu erreichen.

1. Die Fussnoten sind zu gross, da ich bereits die Tabelle mit \footnotesize ausgebe. Notfalls würde ich das halt so belassen.

2. Die Fussnoten für einzelne Zellen (im Code a und b) sollten in den Zellen selbst tiefgestellt, in der Fussnote aber hochgestellt sein. Letzteres sollte das Paket eigentlich selbst machen, geschieht aber nicht. Mit dem Befehl: \newcommand{\tbnote}[1]{\textsubscript{\tnote{#1}}}, habe ich ersteres versucht zu beheben. Das Ergebnis sieht aber schrecklich aus.

3. Das Plus in der Fussnote sollte hochgestellt sein, beim Mal sieht es gut aus, da es halt so ausgegeben wird.

4. Zu guter Letzt bricht der Text in der Fusszeile nicht um. Manuell scheint das eine elende Flickerei zu geben.

Hier mein Minimalbeispiel.


\documentclass[a4paper,fontsize=12pt,captions=nooneline]{scrreprt}
%Deutsche Sprache wird verwendet
\usepackage[ngerman]{babel}
%inputenc für die Erkennung von Umlauten
\usepackage[latin1]{inputenc} %Option evtl. auf ansinew ändern
%Von 128 Zeichen auf 256 Zeichen
\usepackage[T1]{fontenc}
%Definieren der deutschen Anführungszeichen
\usepackage[babel,german=quotes]{csquotes}


%Für mathematische Formeln
\usepackage{amsmath}

%Für Tabellen
\usepackage{booktabs}
\usepackage{threeparttable}
\newcommand{\tbnote}[1]{\textsubscript{\tnote{#1}}}

%----------------------------------------------------------------------------------------------------------
\begin{document}

\begin{table}
\centering
\begin{threeparttable}
\caption{Vererbbarkeit motorischer Eigenschaften ; $h^{2}$ ist ein Populations-Mittelwert)}
\label{tbl:Vererbbarkeit motorischer Eigenschaften}
\footnotesize\sffamily
\begin{tabular}{@{}lp{4cm}p{4cm}@{}}
\addlinespace
\toprule
\textbf{Merkmal}& \textbf{Allgemeine genetische Kontrolle} & \textbf{Annäherung an den Mittelwert von $h^{2}$ } \\
\midrule[1\heavyrulewidth]
Alaktazide anaerobe Kapazität & Stark & 70-80\,Prozent \\
\midrule
Laktazide anaerobe Kapazität & Mittel & \verb=~=\,50\,Prozent \\
\midrule
Maximales Blutlaktat & Hoch & \verb=~=\,70\,Prozent \\
\midrule
Aerobe Kapazität ($VO_2$max) & Niedrig-mittel & \verb=~=\,30\,Prozent \\
\midrule
Maximale isometrische Kraft & Niedrig & 20-20\,Prozent \\
\midrule
Kraftausdauer & Mittel & 40-50\,Prozent \\
\midrule
Reaktionszeit & Niedrig & 20-30\,Prozent \\
\midrule
Koordination d. Armbewegung & Mittel & \verb=~=\,40\,Prozent \\
\midrule
Räumliche Orientierung & Hoch & \verb=~=\,60\,Prozent \\
\midrule
Gleichgewicht & Mittel & \verb=~=\,40\,Prozent \\
\midrule
Bewegungsfrequenz\tbnote{a} & Mittel\tnote{b} & 40-50\,Prozent \\
\midrule
Beweglichkeit\tnote{*} & Mittel\tnote{**} & \verb=~=\,40\,Prozent\tnote{+} \\
\bottomrule
\end{tabular}

%Fussnoten für allg. Bemerkungen oder um Abkürzungen zu erklären
\begin{tablenotes}[flushleft,online]
\item[\textit{Note:} Ist so richtig. Normalgross und kursiv. Was wäre wenn hier wohl ganz viel stehen würde, wie erscheint der Umbruch?!? Ja, da kommt leider kein Umbruch!]

%Fussnoten für Bemerkungen zu einzelnen Zellen
\end{tablenotes}
\begin{tablenotes}[normal,flushleft]
\item{a} Dieses a sollte hochgestellt sein.
\end{tablenotes}

%Fussnoten betreffend Signifikanzniveau. Das Pluszeichen verwendet man bei zweiseitigen Tests, das *-Zeichen bei einseitigen
\begin{tablenotes}[flushleft,para]
\item{*}\textit{p}\,<\,0.05,\item{**}\textit{p}\,<\,0.01,\item{+} (Dieses Plus sollte auch hochgestellt sein)\textit{p}\,<\,0.01
\end{tablenotes}

\end{threeparttable}
\end{table}

\end{document}

Ich habe die threeparttable Beschreibung gelesen (http://mirror.switch.ch/ftp/mirror/tex/macros/latex/contrib/misc/threeparttable.sty), aber das Neubefehlen ist mir noch etwas befremdend. Mit \makelabel sollten sich doch zumindest die Fussnoten untehalb der Tabelle machen lassen. Aber wie verwendet man den Befehl.

Um Ünterstützung bin ich sehr dankbar.

Freundliche Grüsse

Florian

Sportflo
30-07-2009, 17:55
Hallo zusammen

Ich konnte folgende Probleme lösen.

1. Mit \scriptsize lässt sich die Grösse der Fussnoten einfach anpassen.


%Fussnoten für allg. Bemerkungen oder um Abkürzungen zu erklären
\begin{tablenotes}[flushleft,online]
\item[\scriptsize{\textit{Note:}}] \scriptsize{Monat 1 entspricht gemäss dem Betrachteten Intervall dem 05.2001.}
\end{tablenotes}

3. Ich habe bei \item[] geschweifte Klammern gebraucht, dann funktionierts natürlich nicht mit den hochgestellten Fussnoten. Falls wie bei mir die online-Option nicht funktionieren sollte, kann man einfach \item{} gebrauchen.

Für 2. und 4. Problem habe ich noch keine Lösung gefunden. Habe versucht einen neuen Befehl zu definieren im threeparttble.sty. Naja, da fehlen wohl grundlegende Kenntnisse.

Gibst da jemand, der solche Sachen in threeparttable schon mal angepasst?

Gruss Florian

Sportflo
31-07-2009, 13:39
Hallo zusammen

Ich habe fast alle Probleme gelöst. Ich habe dafür in der threeparttable.sty herumgebastelt (ob das wohl legal ist?).

1. Ich habe eine neue Option für die allgemeine Fussnote (Note.) [apaonline] definiert. Man muss dazu folgende Ergänzung im threeparttable.sty vornehmen.


\def\TPT@opt@online{%
\def\TPTnoteSettings{\leftmargin1.5em \labelwidth1em \labelsep.5em\relax}%
\def\TPTnoteLabel##1{\TPTtagStyle{##1}\hfil}%
}
\DeclareOption{online}{\g@addto@macro\TPT@defaults {\TPT@opt@online}}\def\TPT@opt@apaonline{%
\def\TPTnoteSettings{\labelsep.2em \leftmargin\z@ \labelwidth\z@}%
\def\TPTnoteLabel##1{\TPTtagStyle{##1}\hfil}%
\rightskip\z@skip \leftskip\z@skip}
\DeclareOption{apaonline}{\g@addto@macro\TPT@defau lts{\TPT@opt@apaonline}} \def\TPT@opt@flushleft{%
\def\TPTnoteSettings

Also zwischen online und flushleft den roten Code einfügen.

2. Für die tiefgestellten Fussnoten in der Tabelle selbst (specific notes) habe ich einen neuen Befehl
\tsubnote{a} definiert. Man muss dazu folgende Ergänzung im threeparttable.sty vornehmen.



\let\TPTrlap\rlap
\def\tnote#1{\protect\TPToverlap{\textsuperscript{ \TPTtagStyle{#1}}}}%

\let\TPTrlap\rlap
\def\tsubnote#1{\protect\TPToverlap{\textsubscript {\TPTtagStyle{#1}}}}%

\def\TPTtagStyle#1{#1}

\def\TPTnoteSettings{%
\setlength\leftmargin{1.5em}%
\setlength\labelwidth{.5em}%


Also nach der tnote-Definierung den roten Code für die Definition von tsubnote einfügen.

3. Das so abgeänderte threeparttable.sty abspeichern (bei mir ist dies unter C:\Program Files (x86)\MiKTeX 2.7\tex\latex\ltxmisc gespeichert). Danach muss man MiKTeX refreshen. Also im Startmenü unter MiKTeX --> Settings. Refresh FNDB und Update Formats drücken.

4. Nun noch ein lauffähiges Minimalbeispiel. Die Tabelle ist ein bisschen gebastelt. Aber das ist nicht gerade einfach in Latex, finde ich. Die verschiedenen Fussnoten (\tsubnote{a} und \tnote{*}) können auch gemeinsam verwendet werden. Für * kann man auch $\star$ gebrauchen.


\documentclass[a4paper,fontsize=12pt,captions=nooneline]{scrreprt}

%Hier werden alle benötigten Package's aufgeführt


%Deutsche Sprache wird verwendet
\usepackage[ngerman]{babel}
%inputenc für die Erkennung von Umlauten
\usepackage[latin1]{inputenc} %Option evtl. auf ansinew ändern
%Von 128 Zeichen auf 256 Zeichen
\usepackage[T1]{fontenc}
%Definieren der deutschen Anführungszeichen
\usepackage[babel,german=quotes]{csquotes}


%Für mathematische Formeln
\usepackage{amsmath}

%Für Tabellen
\usepackage{booktabs}
\usepackage[flushleft]{threeparttable}






%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{document}

%Formatierung der Tabellenüberschrift und Unterschrift
\setkomafont{caption}{\sffamily}
\addtokomafont{caption}{\footnotesize}
\setkomafont{captionlabel}{\sffamily\bfseries\itsh ape}
\addtokomafont{captionlabel}{\footnotesize}

\begin{table}
\centering
\begin{threeparttable}
\caption{Geburtsmonatsverteilung Fall3}
\label{tbl:GeburtsmonatsverteilungBernFall3}
\footnotesize\sffamily
\begin{tabular}{@{}lccccc@{}}
%\addlinespace
\toprule
& \multicolumn{4}{c}{Geburtsmonat} & \\
\cline{2-5}\addlinespace
Selektion & 1\hspace{0.8cm}2\hspace{0.8cm}3\hspace{0.3cm} & 4\hspace{0.8cm}5\hspace{0.8cm}6\hspace{0.3cm} & 7\hspace{0.8cm}8\hspace{0.8cm}9\hspace{0.3cm} & 10\hspace{0.6cm}11\hspace{0.6cm}12 & $\chi^2$\\
\midrule[1\heavyrulewidth]
Selektionierte\tsubnote{a} & $\underbrace{5\hspace{0.8cm}6\hspace{0.8cm}9}_{\te xt{\scriptsize{\textit{N}\,=\,20 (36.36\%)}}}$\hspace{0.3cm} & $\underbrace{6\hspace{0.8cm}3\hspace{0.8cm}2}_{\te xt{\scriptsize{\textit{N}\,=\,11 (20.00\%)}}}$\hspace{0.3cm} & $\underbrace{4\hspace{0.8cm}7\hspace{0.8cm}1}_{\te xt{\scriptsize{\textit{N}\,=\,12 (21.82\%)}}}$\hspace{0.3cm} & $\underbrace{3\hspace{0.8cm}6\hspace{0.8cm}3}_{\te xt{\scriptsize{\textit{N}\,=\,12 (21.82\%)}}}$ & \textit{p}\,<\,0.01 \\
\midrule
Vorselektionierte\tsubnote{b} & $\underbrace{5\hspace{0.8cm}6\hspace{0.8cm}9}_{\te xt{\scriptsize{\textit{N}\,=\,20 (36.36\%)}}}$\hspace{0.3cm} & $\underbrace{5\hspace{0.8cm}6\hspace{0.8cm}9}_{\te xt{\scriptsize{\textit{N}\,=\,20 (36.36\%)}}}$\hspace{0.3cm} & $\underbrace{5\hspace{0.8cm}6\hspace{0.8cm}9}_{\te xt{\scriptsize{\textit{N}\,=\,20 (36.36\%)}}}$\hspace{0.3cm} & $\underbrace{5\hspace{0.8cm}6\hspace{0.8cm}9}_{\te xt{\scriptsize{\textit{N}\,=\,20 (36.36\%)}}}$ & \textit{p}\,<\,0.01\tsubnote{a}\tnote{*} \\
\midrule
Nicht-Selektionierte & $\underbrace{5\hspace{0.8cm}6\hspace{0.8cm}9}_{\te xt{\scriptsize{\textit{N}\,=\,20 (36.36\%)}}}$\hspace{0.3cm} & $\underbrace{5\hspace{0.8cm}6\hspace{0.8cm}9}_{\te xt{\scriptsize{\textit{N}\,=\,20 (36.36\%)}}}$\hspace{0.3cm} & $\underbrace{5\hspace{0.8cm}6\hspace{0.8cm}9}_{\te xt{\scriptsize{\textit{N}\,=\,20 (36.36\%)}}}$\hspace{0.3cm} & $\underbrace{5\hspace{0.8cm}6\hspace{0.8cm}9}_{\te xt{\scriptsize{\textit{N}\,=\,20 (36.36\%)}}}$ & \textit{p}\,<\,0.01 \\
\bottomrule
\end{tabular}

%Fussnoten für allg. Bemerkungen oder um Abkürzungen zu erklären
\begin{tablenotes}[apaonline]
\item[\scriptsize{\textit{Note.}}] \scriptsize{Monat 1 entspricht gemäss dem betrachteten Intervall dem 05.2001. Das schöne ist, dass jetzt plötzlich der Umbruch automatisch funktioniert. Also kann man hier so viel schreiben wie man will.}
\end{tablenotes}
\begin{tablenotes}[para]
\item[a] \scriptsize{Dieses a sollte in der Tabelle tiefgestellt sein. Dazu müsste man wohl ein eigenen tnote command generieren. Z.B. tsubnote in Anspielung an.}\item[b] \scriptsize{Diese specific notes müssen auch nacheinander aufgeführt sein.}
\end{tablenotes}
\begin{tablenotes}[para]
\item \scriptsize{\textit{p}\,<\,0.05} \item[**]\scriptsize{\textit{p}\,<\,0.01} \item[+] \scriptsize{\textit{p}\,<\,0.05} \item[++]\scriptsize{\textit{p}\,<\,0.01}
\end{tablenotes}

\end{threeparttable}
\end{table}

\end{document}

Ein letzter Hinweis. Im threeparttable.sty weist der Autor darauf hin, dass solche Flickereien nicht ganz toll sind.


Note that mixing options with redefinitions is unlikely
% to work smoothly. Please submit your redefinitions to be used as
% options in future versions!

Ich hoffe, meine Beschreibung ist einigermassen verständlich. Es empfiehlt sich vielleicht, eine Sicherheitskopie von threeparttable.sty anzulegen, oder dem abgeänderten Dokument einen anderen Namen zu gegeben (muss dann beim Aufruf des Package auch so angegeben werden). [Letztere Variante erscheint nach einem allgemeinen Update von MikTeX (am 28.8.2009) sinnvoller. Beim Update wird die threeparttable.sty ebenfalls upgedatet, d.h. alle manuellen Änderungen gehen verloren. Es lohnt sich also die abgeänderete threepartable.sty umzubenennen, Z.B. threeparttableapa.sty, dann wird sie beim update vielleicht nicht überschrieben. Den Versuch unterlasse ich lieber bis ich meine Arbeit abgegeben habe. Zudem kann so beliebig zwischen den beiden Varianten gewechselt werden. Für Anfänger wie ich einer war bis vor kurzem: entweder das original package laden \usepackage{threeparttable} oder das abgeänderte \usepackage{threeparttableapa}.]

Puhhh! Gruess und danke APA-Style

P.S.: Sehr wahrscheinlich gäbe es einen viel eleganteren Weg mittels newcommand.