Probleme mit longtable Umgebung

Antwort erstellen


Diese Frage dient dazu, das automatisierte Versenden von Formularen durch Spam-Bots zu verhindern.
Smilies
:D :) :( :o :shock: :? 8) :lol: :-x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen:

BBCode ist eingeschaltet
[img] ist eingeschaltet
[flash] ist ausgeschaltet
[url] ist eingeschaltet
Smilies sind eingeschaltet

Die letzten Beiträge des Themas

Ich habe die Datenschutzerklärung gelesen und bin damit einverstanden.

   

Wenn du eine Datei oder mehrere Dateien anhängen möchtest, gib die Details unten ein.

Ansicht erweitern Die letzten Beiträge des Themas: Probleme mit longtable Umgebung

von Gast » Di 9. Jul 2019, 09:42

Vielen Dank an euch alle. Es funktioniert jetzt einwandfrei und ich habe viel gelernt. Tolles Forum!

von u_fischer » Di 9. Jul 2019, 08:55

Bartman hat geschrieben: Mir ist gerade nicht bekannt, warum (a) hier in einer Gruppe stehen muss,
Weil wie die Dokumentation von booktabs sagt, "within a longtable, you can use the optional left and right trimming commands, which normally only work for
\cmidrules, with \toprule, \midrule and \bottomrule".

D.h. \midrule(rl) ist erlaubt und verkürzt die Linien. Das heißt aber auch, dass \midrule schaut, ob eine Klammer folgt, und (a) bringt es aus dem Tritt. Alles was, die beiden trennt hilft: \midrule\relax, \midrule{}.

von Gast » Di 9. Jul 2019, 08:53

Für die \multicolumn{4}{p{\textwidth}} muss eine ähnliche Berechnung wie für \mylength stattfinden (oder der Leerraum unterbunden werden). Sonst sorgt die dafür, dass die Tabelle zu breit ist.

Das (a) muss in geschweifte Klammern, da \midrule ähnlich wie \cmdirule ein Argument in runden Klammern akzeptiert und das (a) sonst als Trim-Argument liest. Siehe auch https://tex.stackexchange.com/q/228755/35864

Ich würde dazu raten, GMR im Mathemodus nicht als GMR zu setzen sondern als \mathit{GMR} oder \mathrm{GMR} am besten definiert man dazu einen eigenen Befehl.

Dann würde ich noch die (a), (b), (c)-Nummerierung in eine eigene Spalte setzen.
\documentclass[a4paper]{article}
\usepackage{lipsum}
\usepackage{longtable}
\usepackage{tabularx}% lädt array
\usepackage{booktabs, ragged2e}
\usepackage{showframe}
\newlength\mylength

\newcolumntype{L}{>{\RaggedRight}X}% \arraybackslash wird bei diesem Befehl nicht gebraucht
\newcolumntype{C}[1]{>{\centering\arraybackslash}p{#1}}

\newcommand*{\GMR}{\mathrm{GMR}}
\newcommand*{\Rsq}{\mathrm{R}^2}

\begin{document}
\lipsum

\setlength\mylength{\dimexpr\textwidth-10\tabcolsep}
\centering
\begin{longtable}{>{\RaggedRight}p{.02\mylength}>{\RaggedRight}p{.42\mylength}*{3}{C{.186\mylength}}}
\caption{Table caption}\\
\toprule
\multicolumn{2}{>{\RaggedRight}p{.44\mylength}}{Model} & $\Rsq$ (HG + RT) & $\Rsq$ (RT) & $\Rsq$ (HG)\\
\midrule\relax
(a) & $6.02 \cdot 10^6 \cdot d_p^{-1.62}$ & 0.925 & 0.925 & 0.922\\
(b) & $5.20 \cdot 10^6 \cdot d_p^{-1.62} \cdot \GMR^{0.15}$ & 0.966 & 0.977 & 0.946\\
(c) & $4.16 \cdot 10^6 \cdot d_p^{-1.57} \cdot \GMR^{0.16}$ & 0.972 & 0.975 & 0.966\\
\midrule
\multicolumn{5}{p{\dimexpr\textwidth-2\tabcolsep}}{Hier soll ein Zellenumbruch erfolgen, damit der Text über zwei Zeilen innerhalb der verbundenen Spalte angezeigt wird.}\\
\bottomrule
\end{longtable}
\end{document}
Für Tabellen mit vielen Zahlen empfehle ich meist siunitx und die S-Spalte das habe ich jetzt nicht versucht einzubauen, aber vielleicht ist es ja was für die nächste Tabelle.

von Gast » Di 9. Jul 2019, 08:04

Vielen Dank Bartman!

Funktioniert soweit alles wie ich es mir vorstelle. Allerdings ist die Tabelle nun nicht mehr bündig mit meinem Text bzw. ragt auf der rechten Seite ein wenig heraus. Hast du noch eine Idee wie ich das beheben kann?

Das mit dem (a) und der Gruppe nehme ich dann einfach so mal hin ohne genau zu verstehen warum das so ist. Ich danke dir für die Lösungsvorschlag.

Beste Grüße!

von Bartman » Mo 8. Jul 2019, 18:41

\documentclass[a4paper]{article}
\usepackage{lipsum}
\usepackage{longtable}
\usepackage{tabularx}% lädt array
\usepackage{booktabs, ragged2e}
\usepackage{showframe}

\newlength\mylength

\newcolumntype{L}{>{\RaggedRight}X}% \arraybackslash wird bei diesem Befehl nicht gebraucht 
\newcolumntype{C}[1]{>{\centering\arraybackslash}p{#1}}

\begin{document}
\lipsum

\setlength\mylength{\dimexpr\textwidth-5\arrayrulewidth-8\tabcolsep}
%\centering
\begin{longtable}{>{\RaggedRight}p{.4\mylength}C{.2\mylength}C{.2\mylength}C{.2\mylength}}
\caption{Table caption}\\
\toprule
Model & R$^2$ (HG + RT) & R$^2$ (RT) & R$^2$ (HG)\\
\midrule
{(a)} $6.02 \cdot 10^6 \cdot d_p^{-1.62}$ & 0.925 & 0.925 & 0.922\\
(b) $5.20 \cdot 10^6 \cdot d_p^{-1.62} \cdot GMR^{0.15}$ & 0.966 & 0.977 & 0.946\\
(c) $4.16 \cdot 10^6 \cdot d_p^{-1.57} \cdot GMR^{0.16}$ & 0.972 & 0.975 & 0.966\\
\midrule
\multicolumn{4}{p{\textwidth}}{Hier soll ein Zellenumbruch erfolgen, damit der Text ueber zwei Zeilen innerhalb der verbundenen Spalte angezeigt wird.}\\                
\bottomrule            
\end{longtable}
\end{document} 
Mir ist gerade nicht bekannt, warum (a) hier in einer Gruppe stehen muss, aber Du bekommst so keine Fehlermeldung mehr. Bei einer eigenen Spalte für die drei Buchstaben ist die gleiche Maßnahme nötig.

Außerdem ist Deine erste Spalte nicht linksbündig ausgerichtet, sondern auf Blocksatz eingestellt.

Stattdessen könntest Du auch mit xltabular arbeiten und threeparttablex für die Legende verwenden.

Probleme mit longtable Umgebung

von Gast » Mo 8. Jul 2019, 17:43

%
\documentclass[a4paper]{article}
\usepackage{lipsum}
\usepackage{longtable,array}
\usepackage{tabularx, booktabs,ragged2e} % für Tabellen
\newcolumntype{L}{>{\RaggedRight\arraybackslash}X}
\newlength\mylength\newcolumntype{C}[1]{>{\centering\arraybackslash}p{#1}}

\usepackage{lipsum}

\begin{document}

\lipsum

\setlength\mylength{\dimexpr\textwidth-5\arrayrulewidth-8\tabcolsep}
%\centering
\begin{longtable}{p{.4\mylength}C{.2\mylength}C{.2\mylength}C{.2\mylength}}
\caption{Table caption}\\
\toprule
Model & R$^2$ (HG + RT) & R$^2$ (RT) & R$^2$ (HG)\\
\midrule
 $(a) \, \, 6.02 \cdot 10^6 \cdot d_p^{-1.62}$ & 0.925 & 0.925 & 0.922\\
$(b) \, \, 5.20 \cdot 10^6 \cdot d_p^{-1.62} \cdot GMR^{0.15}$ & 0.966 & 0.977 & 0.946\\
$(c) \, \, 4.16 \cdot 10^6 \cdot d_p^{-1.57} \cdot GMR^{0.16}$ & 0.972 & 0.975 & 0.966\\
\midrule
\multicolumn{4}{l}{Hier soll ein Zellenumbruch erfolgen, damit der Text ueber zwei Zeilen innerhalb der verbundenen Spalte angezeigt wird.}\\                
\bottomrule             
\end{longtable}

\end{document}


Hallo zusammen,

ich habe zwei Probleme mit meiner Tabelle. Siehe MMB. Mir ist wichtig, dass meine Tabelle bündig mit dem Text ist. Funktioniert soweit gut. Außerdem ist mir wichtig, dass die erste Spalte mit den Formeln linksbündig ist und die restlichen drei Spalten zentriert sind. Das funktioniert auch soweit. Nun zu meinen Problemen: Ich habe Schwierigkeiten, wenn ich "(a)" vor die Formel schreibe. Momentan sind "(a)", "(b)", "(c)" in die Formel eingebunden/integriert. Obwohl es funktioniert, finde ich das suboptimal und würde auch sicherlich niemanden auffallen. Ich hätte aber gerne "(a)", "(b)", "(c)" vor der Formel stehen. Das funktioniert für die Zeilen mit den Formeln "b" und "c". Allerdings nicht für "(a)". Ich verstehe einfach nicht warum und bekomme es nicht kompiliert sofern das "(a)" vor der Gleichung steht...

Das zweite Problem besteht in der verbundenen unteren Zeile. Ich benötige hier einen Zeilenumbruch, da ich ansonsten nicht genügend Platz für meine Legende habe. Kann ich das irgendwie mit "p{}" realisieren?

Vielen Dank im Voraus!

Nach oben