Vertikal zentrierter Zelleninhalt trotz Zeilenumbruch

Tabellen und Grafiken erstellen und anordnen


Mattu
Forum-Anfänger
Forum-Anfänger
Beiträge: 29
Registriert: Sa 1. Nov 2014, 13:56
Wohnort: Pahkla, Estland

Vertikal zentrierter Zelleninhalt trotz Zeilenumbruch

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

markusv
Forum-Meister
Forum-Meister
Beiträge: 947
Registriert: Do 3. Sep 2015, 17:20
Wohnort: Leipzig

Re: Vertikal zentrierter Zelleninhalt trotz Zeilenumbruch

Beitrag 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}
Wäre Microsoft Word für das Schreiben von Büchern entwickelt worden,
würde es Microsoft Book heißen.

Unkomplizierte und schnelle LaTeX-Hilfe, bspw. Erstellung von Vorlagen und Bewerbungen.

Gast

Re: Vertikal zentrierter Zelleninhalt trotz Zeilenumbruch

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

Gast

Off-Topic: Einheiten und Zahlen

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

Mattu
Forum-Anfänger
Forum-Anfänger
Beiträge: 29
Registriert: Sa 1. Nov 2014, 13:56
Wohnort: Pahkla, Estland

Dank für Fragenbeantwortung

Beitrag 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

Mattu
Forum-Anfänger
Forum-Anfänger
Beiträge: 29
Registriert: Sa 1. Nov 2014, 13:56
Wohnort: Pahkla, Estland

Re: Off-Topic: Einheiten und Zahlen

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

Antworten