Tabellenlinie mit cmidrule in tabularx

Tabellen und Grafiken erstellen und anordnen


Lowrider614
Forum-Anfänger
Forum-Anfänger
Beiträge: 44
Registriert: Mi 3. Aug 2011, 16:29

Tabellenlinie mit cmidrule in tabularx

Beitrag 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.
"Wenn du nicht helfen kannst, dann störe. Dabei sein ist alles."
Jürgen von der Lippe

Bartman
Forum-Meister
Forum-Meister
Beiträge: 2456
Registriert: Do 16. Jul 2009, 21:41
Wohnort: Hessische Provinz

Beitrag 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}

Lowrider614
Forum-Anfänger
Forum-Anfänger
Beiträge: 44
Registriert: Mi 3. Aug 2011, 16:29

Beitrag 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}
"Wenn du nicht helfen kannst, dann störe. Dabei sein ist alles."
Jürgen von der Lippe

Bartman
Forum-Meister
Forum-Meister
Beiträge: 2456
Registriert: Do 16. Jul 2009, 21:41
Wohnort: Hessische Provinz

Beitrag 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.

Lowrider614
Forum-Anfänger
Forum-Anfänger
Beiträge: 44
Registriert: Mi 3. Aug 2011, 16:29

Beitrag 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}
"Wenn du nicht helfen kannst, dann störe. Dabei sein ist alles."
Jürgen von der Lippe

Bartman
Forum-Meister
Forum-Meister
Beiträge: 2456
Registriert: Do 16. Jul 2009, 21:41
Wohnort: Hessische Provinz

Beitrag 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.

Antworten