Seite 1 von 1
Tabellenlinie mit cmidrule in tabularx
Verfasst: Fr 30. Nov 2018, 22:02
von Lowrider614
Hallo,
ich möchte eine Tabelle erstellen, aber die unterste Linie soll nicht über die ganze Tabellenbreite gehen. Dazu nutze ich das Paket bookmark. Als Tabellenumgebung nutze ich tabularx. Beim kompilieren des Minimalbeispiels erhalte ich folgende Fehlermeldung:
You have used a \hline command in the wrong place, probably outside a table. If the \hline command is written inside a table, try including \ before it.
Ich verstehe schon, dass bookmark sich im Hintergrund hline bedient, aber was muss ich nun ändern, damit die Fehlermeldung weggeht? Die Tabelle wird auch richtig erstellt, eigentlich stört mich nur die Fehlermeldung.
Danke für eure Hilfe,
schöne Grüße
Tim
Minimalbeispiel (ich weiß, es ist zu lang. Aber das ist genau die Umgebung in welcher der Fehler auftritt und ich wollte eventuelle Nebenwirkungen von Paketen berücksichtigen)
\documentclass[a4paper,oneside,12pt]{article}
\usepackage{tabularx}
\usepackage{multirow}
\usepackage{siunitx}
\usepackage{booktabs}
\usepackage{graphicx}
\newcolumntype{L}[1]{>{\raggedright\arraybackslash}p{#1}}
\newcolumntype{C}[1]{>{\centering\arraybackslash}p{#1}}
\newcolumntype{R}[1]{>{\raggedleft\arraybackslash}p{#1}}
\newcommand*\rot{\rotatebox{90}}
\begin{document}
\begin{table}[htb]
\sffamily
\centering
\caption{Einfluss der Niederhalter- und Gegenhalterkraft auf den Glattschnittanteil}
\begin{tabularx}{0.5\textwidth}{X L{0.05\textwidth} C{0.05\textwidth} C{0.05\textwidth} C{0.05\textwidth}}
& & \multicolumn{3}{c}{Niederhalterkraft in \si{\kilo\newton}}\\
& & 900 & 1000 & 1100\\
\cmidrule{2-5}
& 300 & \SI{90}{\percent} & \SI{92}{\percent} & \SI{90}{\percent}\\
& 400 & \SI{91}{\percent} & \SI{90}{\percent} & \SI{92}{\percent}\\
& 500 & \SI{94}{\percent} & \SI{92}{\percent} & \SI{91}{\percent}\\
\rot{\rlap{\shortstack{Gegenhalter-\\ kraft in \si{\kilo\newton}}}}
\cmidrule{2-5}
\end{tabularx}
\label{tab:ParameterstudieKraefte}
\end{table}
\end{document}
#Edit: In Overleafv1 bricht das Kompilieren mit einem Fehler ab. Wenn man den letzten \cmidrule Befehl auskommentiert, läuft es durch. Der Fehler ist derselbe wie in Overleafv2.
Verfasst: Fr 30. Nov 2018, 22:43
von Bartman
Dein Beispiel gibt eine Fehlermeldung aus, aber nicht die von Dir beschriebene. Nach dem Ende Deines Befehls \rot fehlt ein \\.
Wenn Deine Tabelle nicht so aussehen muss, dann möchte ich meinen Änderungsvorschlag einbringen, welcher sich an den Beispielen in
tabsatz orientiert:
\documentclass[a4paper,12pt]{article}
\usepackage[utf8]{inputenc}% Voreinstellung bei einer aktuellen Arbeitsumgebung
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage[ngerman]{babel}
\usepackage{siunitx}
\usepackage{booktabs}
\usepackage{caption}
\sisetup{
locale=DE,
detect-all
}
\newcommand*{\thead}[1]{%
\begin{tabular}[t]{@{}l@{}}#1\end{tabular}%
}
\begin{document}
\begin{table}[htb]
\sffamily
\centering
\caption{Einfluss der Niederhalter- und Gegenhalterkraft auf den Glattschnittanteil}
\label{tab:ParameterstudieKraefte}
\begin{tabular}{
S[table-format=3]
*3{S[table-format=2]}
}
\toprule
{\thead{Gegenhalter-\\kraft in \si{\kN}}}
& \multicolumn{3}{l}{\thead{Niederhalter-\\kraft in \si{\kN}}}\\
\cmidrule(lr){2-4}
& {900} & {1000} & {1100}\\
& \si{\percent} & \si{\percent} & \si{\percent}\\
\midrule
300 & 90 & 92 & 90\\
400 & 91 & 90 & 92\\
500 & 94 & 92 & 91\\
\bottomrule
\end{tabular}
\end{table}
\end{document}
Verfasst: Sa 1. Dez 2018, 11:12
von Lowrider614
Hallo Bartman,
vielen Dank für deine Antwort und die neu entworfene Tabelle.
Folgendes gebe ich zu bedenken:
Deine Tabelle trägt extrem auf, was die Höhe angeht. In vielen Arbeiten gibt es eine maximale Seitenbegrenzung, wo eine solch ausladende Tabelle nicht förderlich ist. Da ist es dann leider so, dass einem das schönste Layout nichts nützt, wenn dadurch die Seitenbeschränkung gerissen wird. Daher habe ich deinen Vorschlag ein wenig angepasst, aber das Rotieren der Gegenhalterkraft aufgegeben, das hat mir gut gefallen.
Fragen:
1. Wie kriege ich die oberste Linie so lang wie die anderen Linien in meinem Beispiel?
2. Was macht das \newcommand Kommando genau? Das ist mir noch nicht ganz klar.
\documentclass[a4paper,12pt]{article}
\usepackage[utf8]{inputenc}% Voreinstellung bei einer aktuellen Arbeitsumgebung
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage[ngerman]{babel}
\usepackage{siunitx}
\usepackage{booktabs}
\usepackage{caption}
\sisetup{
locale=DE,
detect-all
}
\newcommand*{\thead}[1]{%
\begin{tabular}[t]{@{}l@{}}#1\end{tabular}%
}
\begin{document}
\begin{table}[htb]
\sffamily
\centering
\caption{Einfluss der Niederhalter- und Gegenhalterkraft auf den Glattschnittanteil}
\label{tab:ParameterstudieKraefte}
\begin{tabular}{
S[table-format=3]
*3{S[table-format=2]}
}
{\thead{Gegenhalter-\\kraft in \si{\kN}}}
& \multicolumn{3}{l}{\thead{Niederhalter-\\kraft in \si{\kN}}}\\
\cmidrule(lr){2-4}
& {900} & {1000} & {1100}\\
%& \si{\percent} & \si{\percent} & \si{\percent}\\
\midrule
300 & 90\,\si{\percent} & 92\,\si{\percent} & 90\,\si{\percent}\\
400 & 91\,\si{\percent} & 90\,\si{\percent} & 92\,\si{\percent}\\
500 & 94\,\si{\percent} & 92\,\si{\percent} & 91\,\si{\percent}\\
\midrule
\end{tabular}
\end{table}
\end{document}
Verfasst: Sa 1. Dez 2018, 14:29
von Bartman
\documentclass[a4paper,12pt]{article}
\usepackage[utf8]{inputenc}% Voreinstellung bei einer aktuellen Arbeitsumgebung
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage[ngerman]{babel}
\usepackage{siunitx}
\usepackage{booktabs}
\usepackage{caption}
\sisetup{
locale=DE,
detect-all
}
\newcommand*{\thead}[1]{%
\begin{tabular}[t]{@{}l@{}}#1\end{tabular}%
}
\begin{document}
\begin{table}[htb]
\sffamily
\centering
\caption{Einfluss der Niederhalter- und Gegenhalterkraft auf den Glattschnittanteil}
\label{tab:ParameterstudieKraefte}
\begin{tabular}{
S[table-format=3]
*3{S[table-format=2, table-space-text-post=\,\si{\percent}]}% Erweiterung für das Prozentzeichen in den Zellen
}
{\thead{Gegenhalter-\\kraft in \si{\kN}}}
& \multicolumn{3}{l}{\thead{Niederhalter-\\kraft in \si{\kN}}}\\
\midrule% <- geändert
& {900} & {1000} & {1100}\\
%& \si{\percent} & \si{\percent} & \si{\percent}\\
\midrule
300 & 90\,\si{\percent} & 92\,\si{\percent} & 90\,\si{\percent}\\
400 & 91\,\si{\percent} & 90\,\si{\percent} & 92\,\si{\percent}\\
500 & 94\,\si{\percent} & 92\,\si{\percent} & 91\,\si{\percent}\\
\midrule
\end{tabular}
\end{table}
\end{document}
Der
Befehl \newcommand und die tabular-Umgebung dürften in den LaTeX-Einführungen erklärt werden. Mein Einführungswerk des Herrn Schlosser konnte mir jedenfalls weiterhelfen. Herr Weh behandelt auf seiner
Website vielleicht nicht alles, aber doch einige Inhalte, die in einführender Literatur angesprochen werden.
Verfasst: So 2. Dez 2018, 11:51
von Lowrider614
Hallo Bartman,
danke für die überarbeitete Antwort.
Ich entnehme deiner Antwort, dass es wohl nicht möglich ist, den \cmidrule Befehl dazu zu bewegen, die Linie nach rechts zu verlängern, weshalb er durch den \midrule Befehl zu ersetzen ist.
Zudem erreiche ich mit der unten stehenden Variante das Gleiche, wie du mit der table-space-text-post Definition. Ich persönlich bevorzuge meine Variante, da dann die Definition von Zahlen und Einheiten in meinem Dokument durchgängig ist. Vorher stellte diese Tabelle einen Sonderfall dar, den ich mir so erspare.
Vielen Dank für deine Hilfe, ich setze den Thread auf beantwortet.
Schöne Grüße
Tim
\documentclass[a4paper,12pt]{article}
\usepackage[utf8]{inputenc}% Voreinstellung bei einer aktuellen Arbeitsumgebung
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage[ngerman]{babel}
\usepackage{siunitx}
\usepackage{booktabs}
\usepackage{caption}
\sisetup{
locale=DE,
detect-all
}
\newcommand*{\thead}[1]{%
\begin{tabular}[t]{@{}l@{}}#1\end{tabular}%
}
\begin{document}
\begin{table}[htb]
\sffamily
\centering
\caption{Einfluss der Niederhalter- und Gegenhalterkraft auf den Glattschnittanteil}
\label{tab:ParameterstudieKraefte}
\begin{tabular}{
S[table-format=3]
*3{S[table-format=2]}%, table-space-text-post=\,\si{\percent}]}% Erweiterung für das Prozentzeichen in den Zellen % <- geändert
}
{\thead{Gegenhalter-\\kraft in \si{\kN}}}
& \multicolumn{3}{l}{\thead{Niederhalter-\\kraft in \si{\kN}}}\\
\midrule
& {900} & {1000} & {1100}\\
%& \si{\percent} & \si{\percent} & \si{\percent}\\
\midrule
300 & \SI{90}{\percent} & \SI{92}{\percent} & \SI{90}{\percent}\\ % <- geändert
400 & \SI{91}{\percent} & \SI{90}{\percent} & \SI{92}{\percent}\\ % <- geändert
500 & \SI{94}{\percent} & \SI{92}{\percent} & \SI{90}{\percent}\\ % <- geändert
\midrule
\end{tabular}
\end{table}
\end{document}
Verfasst: So 2. Dez 2018, 15:11
von Bartman
Lowrider614 hat geschrieben:Ich entnehme deiner Antwort, dass es wohl nicht möglich ist, den \cmidrule Befehl dazu zu bewegen, die Linie nach rechts zu verlängern, weshalb er durch den \midrule Befehl zu ersetzen ist.
Beide Befehle werden in der Dokumentation von
booktabs erläutert. Ich habe den Befehl ersetzt, weil \midrule, ohne weitere Einstellungen in einem Argument, die Länge ermöglicht, die Du gewünscht hast.