Seite 1 von 2

Zeilenumbruch in Zelle

Verfasst: Di 30. Jun 2015, 07:10
von kannstmasehn
Moin,

folgendes Problem habe ich: LaTeX trennt den Begriff "Anschaffungskosten" nicht wirklich. Ich möchte, dass die oberste Zeile durch den langen Text nicht zu hoch wird. Der Zeilenumbruch funktioniert leider nicht so, wie ich das gerne möchte. Hat da jemand mal Abhilfe? Das wäre super!

Mein Minimalbeispiel:
\documentclass[12pt,a4paper]{scrreprt}
\usepackage{booktabs}

\usepackage{rotating}
\newcommand\tabrotate[1]{\begin{turn}{90}\rlap{#1}\end{turn}}

\usepackage{varwidth}
\newcommand\tabvarwidth[2][3cm]{\begin{varwidth}[b]{#1}\centering #2\end{varwidth}}

\usepackage{color}
\usepackage{colortbl}	
\definecolor{dunkelgrau}{rgb}{0.8,0.8,0.8}
\definecolor{hellgrau}{rgb}{0.95,0.95,0.95}

\begin{document}


\begin{tabular}{lll}
& \tabrotate{{\tabvarwidth{Anschaffungskosten gering}}} 
& \tabrotate{Jährliche laufende Kosten gering} 
 \\
\toprule
Anschaffungskosten gering 
& \cellcolor{hellgrau} 
&2
 \\
Jährliche laufende Kosten gering 
&0
&\cellcolor{hellgrau}
 \\
Reproduzierbarkeit hoch 
&2
&2
 \\
Messgenauigkeit niedrig 
&2
&2
 \\
Zeitaufwand Erstmessung gering 
&1
&2
 \\
Zeitaufwand Wiederholungsmessung gering 
&1
&2
 \\
Flexibilität hoch 
&1
&2
 \\
\bottomrule
\end{tabular}

\end{document}

Vielen Dank dafür!

Verfasst: Di 30. Jun 2015, 07:53
von Besserwisser
Ich vermute, dass du schlicht willst, dass das Wort getrennt wird. Dann ist Deine Analyse nicht richtig. LaTeX kennt das Wort durchaus und kann es auch korrekt trennen. Die Ursache, dass da nicht getrennt wird, ist wie so oft schlicht, dass TeX das erste Wort in einem Absatz nicht trennt. Macht man \hspace{0pt} zum ersten Wort, wird das optisch erste Wort dann doch getrennt:
\newcommand\tabvarwidth[2][3cm]{\begin{varwidth}[b]{#1}\centering\hspace{0pt}\ignorespaces#2\end{varwidth}}

Verfasst: Di 30. Jun 2015, 08:01
von kannstmasehn
Besserwisser hat geschrieben:Ich vermute, dass du schlicht willst, dass das Wort getrennt wird. Dann ist Deine Analyse nicht richtig. LaTeX kennt das Wort durchaus und kann es auch korrekt trennen. Die Ursache, dass da nicht getrennt wird, ist wie so oft schlicht, dass TeX das erste Wort in einem Absatz nicht trennt. Macht man \hspace{0pt} zum ersten Wort, wird das optisch erste Wort dann doch getrennt:
\newcommand\tabvarwidth[2][3cm]{\begin{varwidth}[b]{#1}\centering\hspace{0pt}\ignorespaces#2\end{varwidth}}
Gut, das klappt schonmal. Danke dir! Wie kann ich dann den Text in der Zelle linksbündig anordnen?

Verfasst: Di 30. Jun 2015, 08:50
von Besserwisser
Er ist innerhalb der Zelle linksbündig. Oder meinst du wie innerhalb der varwidth-Umgebung – also vor der Rotation – nicht zentriert, sondern linksbündig gesetzt wird? Da hast du doch selbst explizit zentriert. Um das zu ändern muss man natürlich \centering durch \raggedright (oder eventuell besser \RaggedRight mit ragged2e) ersetzen. Falls dir das wirklich nicht klar war, solltest du unbedingt eine gute LaTeX-Einführung lesen. Das ist an einem Wochenende zu schaffen.

Ich würde übrigens für den rotierten Text eher c-Spalten verwenden, ihn also nicht linksbündig, sondern zentriert setzen.

Verfasst: Di 30. Jun 2015, 08:59
von Besserwisser
Hier einmal ein Beispiel, wie ich es für sinnvoll halte:
\documentclass[12pt,a4paper]{scrreprt}
\usepackage{booktabs}
\usepackage{ragged2e}
\usepackage{rotating}
\usepackage[ngerman]{babel}
\newcommand\tabrotate[1]{\begin{turn}{90}\rlap{#1}\end{turn}}

\usepackage{varwidth}
\newcommand\tabvarwidth[2][3cm]{\begin{varwidth}[b]{#1}\RaggedRight\hspace{0pt}\ignorespaces #2\end{varwidth}}

\usepackage{color}
\usepackage{colortbl}   
\definecolor{dunkelgrau}{rgb}{0.8,0.8,0.8}
\definecolor{hellgrau}{rgb}{0.95,0.95,0.95}

\begin{document}


\begin{tabular}{lcc}
& \tabrotate{{\tabvarwidth[7em]{Anschaffungskosten\\ gering}}} 
& \tabrotate{\tabvarwidth[7em]{Jährliche laufende Kosten gering}}
 \\
\toprule
Anschaffungskosten gering 
& \cellcolor{hellgrau} 
&2
 \\
Jährliche laufende Kosten gering 
&0
&\cellcolor{hellgrau}
 \\
Reproduzierbarkeit hoch 
&2
&2
 \\
Messgenauigkeit niedrig 
&2
&2
 \\
Zeitaufwand Erstmessung gering 
&1
&2
 \\
Zeitaufwand Wiederholungsmessung gering 
&1
&2
 \\
Flexibilität hoch 
&1
&2
 \\
\bottomrule
\end{tabular}

\end{document}

Verfasst: Do 2. Jul 2015, 08:47
von kannstmasehn
Super danke dir!

Da die Tabelle quer nicht auf eine DIN A4 Seite im Hochformat passt, habe ich sie um 90° gegen den Uhrzeigersinn gedreht. Nun tritt das Problem auf, dass die Tabelle nicht mehr vollständig mittig ist, sondern nur der Hauptkörper und die gedrehten Zellen rücken zu weit an den Rand der Seite. Wie kann ich die Tabelle richtig zentrieren? Mit centering scheint es ja nicht zu funktionieren. Ich könnte eine Box über die gesamte Tabelle legen und diese dann zentrieren oder die Tabelle ein Stück nach rechts verschieben. Oder gibt es da noch andere Möglichkeiten?


VG

Verfasst: Do 2. Jul 2015, 08:59
von Besserwisser
Sollen wir jetzt raten, wie du das konkret gemacht hast?

Verfasst: Do 2. Jul 2015, 09:04
von kannstmasehn
\documentclass[12pt,a4paper]{scrreprt}
\usepackage{booktabs}
\usepackage{ragged2e}
\usepackage{rotating}
\usepackage[ngerman]{babel}
\newcommand\tabrotate[1]{\begin{turn}{90}\rlap{#1}\end{turn}}

\usepackage{varwidth}
\newcommand\tabvarwidth[2][3.5cm]{\begin{varwidth}[b]{#1}\RaggedRight\hspace{0pt}\ignorespaces #2\end{varwidth}}

\usepackage{color}
\usepackage{colortbl}  
\definecolor{dunkelgrau}{rgb}{0.8,0.8,0.8}
\definecolor{hellgrau}{rgb}{0.95,0.95,0.95}

\begin{document}

\begin{table}[htbp]
\centering
\rotatebox{90}{%
\begin{tabular}{lcc}
& \tabrotate{Anschaffungskosten gering}
& \tabrotate{Jährliche laufende Kosten gering}
 \\
\toprule
Anschaffungskosten gering
& \cellcolor{hellgrau}
&2
 \\
Jährliche laufende Kosten gering
&0
&\cellcolor{hellgrau}
 \\
Reproduzierbarkeit hoch
&2
&2
 \\
Messgenauigkeit niedrig
&2
&2
 \\
Zeitaufwand Erstmessung gering
&1
&2
 \\
Zeitaufwand Wiederholungsmessung gering
&1
&2
 \\
Flexibilität hoch
&1
&2
 \\
\bottomrule
\end{tabular}
}
\caption{Bewertung der Systeme}
\label{tab:kap6:bewertung}
\end{table}

\end{document}

Verfasst: Do 2. Jul 2015, 09:36
von Besserwisser
Jetzt ist mir erst recht nicht so ganz klar, was dein Problem ist.

Ich finde das so eigentlich gut und richtig. Wenn du aber in der Horizontalen keine optische, sondern eine mathematische Zentrierung willst, dann lass das \rlap weg und verwende:
\newcommand\tabrotate[1]{\begin{turn}{90}\#1\end{turn}}
Wenn es dir hingegen um vertikale Zentrierung geht, dann ändere die Platzierungsoptionen in ein schlichtes p:
\begin{table}[p]
damit die Tabelle page statt top platziert wird.

Alles eigentlich ganz logisch oder habe ich dich falsch verstanden?

BTW: Für rotierte Gleitumgebungen sei außerdem auf das Paket pdflscape hingewiesen.

BTW2: Die Korrektheit der Zentrierung kann man besser beurteilen, wenn man zu Testzwecken einmal das Paket showframe einbindet, also
\usepackage{showframe}
ergänzt.

Verfasst: Do 2. Jul 2015, 09:45
von kannstmasehn
Bei deinem neuen Tabrotate-command muss ein Fehler drin sein, denn dieser funktioniert bei mir nicht so. Das ist aber auch nicht das Problem.

Zur Erläuterung: Meine Tabelle sieht so aus (mit den frames):

Bild

Der Text der rotierten Zellen (Anschaffungskosten, jährliche laufende...) sind für mich nicht zentriert. Der Text geht zu weit auf die linke Seite, so dass Probleme beim Lesen geben könnte, wenn die Arbeit gebunden ist.
Für mich ist nur der Hauptkörper (zwischen top- und bottomrule) zentriert. Wenn ich die rotierten Texte ändere, verschiebt sich die Tabelle nicht, obwohl sich die Breite der Tabelle deutlich ändert. Verstehst du jetzt was ich meine?