Seite 1 von 1

Vertikal zentrierter Zelleninhalt trotz Zeilenumbruch

Verfasst: Mo 16. Apr 2018, 20:34
von Mattu
In folgendem Beispiel verwende ich einen selbstdefinierten Zellentyp, der auf den vertikal zentrierten Zellentyp m des tabularx-Pakets zurückgreift. Außerdem verbinde ich zwei solcher Zellen mit \multirow. Eine benachbarte Zelle bricht jedoch automatisch um und ist somit höher als die andere benachbarte Zelle der zweizeiligen Zelle. Der Text in der zweizeiligen Zelle wird jedoch genau auf die Trennlinie zwischen den beiden benachbarten Zellen (unterschiedlicher Höhe) gesetzt, anstatt auf die mittlere Höhe, wie ich es gerne hätte:
\documentclass[DIV=35, paper = A4, paper = landscape]{scrartcl} %DIV = 35, da ich praktisch keinen Rand will
\usepackage[UTF8]{inputenc} 	% für Zeichen wie Umlaute etc.
\usepackage{tabularx}		% um Tabellen mit definierter Breite erstellen zu können
\newcolumntype{C}[1]{>{\centering}m{#1}}	%Spalte horizontal (centering) und vertikal (Typ m) zentriert mit Breitenangabe
\usepackage{multirow} 		% um mehrere Zellen einer Spalte verbinden zu können (mehrere Zeilen einer Spalte)

\begin{document}
\pagestyle{empty}

\vspace*{-10pt}\noindent\begin{tabularx}{\linewidth}{|C{2cm}|C{12.8cm}|C{2.4cm}|C{2.4cm}|C{2cm}|c|}
\hline
	\multirow{2}{*}{Kuupäev} & \multirow{2}{*}{Sõidu eesmärk (maršruut)} & \multicolumn{2}{|c|}{Spidomeetri näit} & \multirow{2}{*}{\hspace*{-2pt}Läbisõit [km]} & \multirow{2}{*}{Kasutaja (allkiri)}\\ \cline{3-4}
	 & & {sõitu alustades} & {sõitu lõpetades} & &\tabularnewline\hline
	 & & & & & \tabularnewline\hline
\end{tabularx}
\end{document}
Weiß jemand Rat, wie ich den text auf die mittlere Höhe der Zelle bekomme?

Und als Bonusfrage habe ich noch diese: Gibt es eine Möglichkeit zwischen "Läbisõit" und "[km]" umzubrechen? Egal wie ich es versuche (automatisch (durch Verkleinerung der Zelle, die ohnehin ansteht), manuell: Mit \\[/] und Verzicht auf \arraybackslash in Zellendefinition, mit \newline, \linebreak, parbox, shortstack... Sonst finde ich nichts.

Re: Vertikal zentrierter Zelleninhalt trotz Zeilenumbruch

Verfasst: Di 17. Apr 2018, 07:34
von markusv
Moin!
Mattu hat geschrieben:Weiß jemand Rat, wie ich den text auf die mittlere Höhe der Zelle bekomme?
Wenn die Zelle über 3 Zeilen geht, solltest du das der Zelle sagen. Also statt \multirow{2}... entsprechend \multirow{3}...
Mattu hat geschrieben:Und als Bonusfrage habe ich noch diese: Gibt es eine Möglichkeit zwischen "Läbisõit" und "[km]" umzubrechen?
Gib eine definierte Länge an, also bspw. \multirow{3}{2cm}... statt \multirow{3}{*}....

Im Beispiel:
\documentclass[DIV=35,paper=landscape]{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage{tabularx}
\newcolumntype{C}[1]{>{\centering}m{#1}}
\usepackage{multirow}

\begin{document}
\begin{tabularx}{\linewidth}{|C{2cm}|C{12.8cm}|C{2.4cm}|C{2.4cm}|C{2cm}|c|}
\hline
   \multirow{3}{*}{Kuupäev} & \multirow{3}{*}{Sõidu eesmärk (maršruut)} & \multicolumn{2}{|c|}{Spidomeetri näit} & \multirow{3}{2cm}{\centering Läbisõit [km]} & \multirow{3}{*}{Kasutaja (allkiri)}\\ \cline{3-4}
    & & {sõitu alustades} & {sõitu lõpetades} & &\\\hline
\end{tabularx}
\end{document}

Re: Vertikal zentrierter Zelleninhalt trotz Zeilenumbruch

Verfasst: Di 17. Apr 2018, 08:27
von Gast
markusv hat geschrieben:
Mattu hat geschrieben:Und als Bonusfrage habe ich noch diese: Gibt es eine Möglichkeit zwischen "Läbisõit" und "[km]" umzubrechen?
Gib eine definierte Länge an, also bspw. \multirow{3}{2cm}... statt \multirow{3}{*}....
Alternativ kann man auch eine innere Tabelle verwenden:
\documentclass[DIV=35,paper=landscape]{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage{tabularx}
\newcolumntype{C}[1]{>{\centering}m{#1}}
\usepackage{multirow}

\begin{document}
\begin{tabularx}{\linewidth}{|C{2cm}|C{12.8cm}|C{2.4cm}|C{2.4cm}|C{2cm}|c|}
\hline
   \multirow{3}{*}{Kuupäev} & \multirow{3}{*}{Sõidu eesmärk (maršruut)} & \multicolumn{2}{|c|}{Spidomeetri näit} & \multirow{3}{*}{\begin{tabular}{@{}c@{}} Läbisõit\\\relax [km]\end{tabular}} & \multirow{3}{*}{Kasutaja (allkiri)}\\ \cline{3-4}
    & & {sõitu alustades} & {sõitu lõpetades} & &\\\hline
\end{tabularx}
\end{document}
Das \relax ist hier wichtig, weil sonst [km] als optionales Argument von \\ interpretiert wird, was natürlich nicht gewollt ist und zu einer Fehlermeldung führen würde.

Noch ein Tipp: Vermeide nach Möglichkeit vertikale Linien in Tabellen. Sie verbessern die Lesbarkeit meist nicht, sondern verschlechtern sie. Siehe auch [d]booktabs[/d] bzw. [d]booktabs-de[/d].

Off-Topic: Einheiten und Zahlen

Verfasst: Di 17. Apr 2018, 08:34
von Gast
BTW: Einheiten in eckige Klammern zu setzen ist bei Laien zwar sehr beliebt, aber eigentlich nicht korrekt. Eckige Klammern haben nach SI die Bedeutung Einheit von, was etwas ganz anderes ist als in der Einheit. Korrekt wäre daher beispielsweise die Verwendung von eckigen Klammern für [Läbisõit] = km. Ich glaube es gibt entsprechende Hinweise mehrfach im Forum. So dass ich das nicht weiter auszuwälzen gedenke.

Was ich aber eigentlich erwähnen wollte: Für Einheiten sei auf das Paket siunitx hingewiesen. Dieses bietet außerdem auch einen neuen Spaltentyp für Zahlen mit weitreichendem Einfluss auf die Formatierung derselben.

Dank für Fragenbeantwortung

Verfasst: Di 17. Apr 2018, 13:09
von Mattu
markusv hat geschrieben:Wenn die Zelle über 3 Zeilen geht, solltest du das der Zelle sagen. Also statt \multirow{2}... entsprechend \multirow{3}...
Oh, ich wusste nicht, dass es der Multizelle darum geht, wie viele Zeilen sie umspannt -- ich ging automatisch von "Tabellenzeilen" (das meint Zellen) aus. Da so auch automatische Umbrüche eine Änderung des Codes erfordern, ist dieser nur noch durch mehrmaliges ausprobieren (der Wissenschaftler würde sagen "iterativ" :D) zu schreiben. Das gefällt mir zwar nicht, ist aber ein Problem des Pakets multirow und daher nicht hier Thema. Die Lösung funktioniert einwandfrei! Dankeschön markusv dafür!
markusv hat geschrieben:Gib eine definierte Länge an, also bspw. \multirow{3}{2cm}... statt \multirow{3}{*}....
Verdammt, hier hatte ich die Zellenbreite nicht festzulegen versucht (nur im Tabellenkopf). Da habe ich im für mich neuen Feld Tabellenerstellung mit LaTeX leider die Übersicht verloren. Auch das funktioniert einwandfrei, dankeschön markusv!
Gast hat geschrieben:Das \relax ist hier wichtig, weil sonst [km] als optionales Argument von \\ interpretiert wird, was natürlich nicht gewollt ist und zu einer Fehlermeldung führen würde.
Sehr interessante Zusatzinformation! Dankeschön!
Gast hat geschrieben:Noch ein Tipp: Vermeide nach Möglichkeit vertikale Linien in Tabellen. Sie verbessern die Lesbarkeit meist nicht, sondern verschlechtern sie
Das mag für darstellende Tabellen gelten (ich werde mich bei Gelegenheit davon überzeugen), diese Tabelle soll aber gar nicht in erster Linie gut lesbar sein, sondern gut ausfüllbar -- und in diesem Fall sind vertikale Linien sehr hilfreich, das habe ich oftmals festgestellt (als sie fehlten).

Danke den Antwortenden!
Matthias

Re: Off-Topic: Einheiten und Zahlen

Verfasst: Di 17. Apr 2018, 13:16
von Mattu
Anonymous hat geschrieben:BTW: Einheiten in eckige Klammern zu setzen ist bei Laien zwar sehr beliebt, aber eigentlich nicht korrekt. Eckige Klammern haben nach SI die Bedeutung Einheit von, was etwas ganz anderes ist als in der Einheit. Korrekt wäre daher beispielsweise die Verwendung von eckigen Klammern für [Läbisõit] = km. Ich glaube es gibt entsprechende Hinweise mehrfach im Forum. So dass ich das nicht weiter auszuwälzen gedenke.
Sehr gut zu wissen! Danke!
Was ich aber eigentlich erwähnen wollte: Für Einheiten sei auf das Paket siunitx hingewiesen. Dieses bietet außerdem auch einen neuen Spaltentyp für Zahlen mit weitreichendem Einfluss auf die Formatierung derselben.
Ich wusste nicht, das siunitx auch einen eigenen Spaltentyp zur Verfügung stellt. Danke für den Tipp! Hier wird die Tabelle allerdings mit dem Stift in der Hand ausgefüllt, daher hier nicht notwendig.