Zeilenumbruch in Zelle

Tabellen und Grafiken erstellen und anordnen


kannstmasehn
Forum-Century
Forum-Century
Beiträge: 165
Registriert: Mo 5. Mai 2014, 16:55

Zeilenumbruch in Zelle

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

Besserwisser

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

kannstmasehn
Forum-Century
Forum-Century
Beiträge: 165
Registriert: Mo 5. Mai 2014, 16:55

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

Besserwisser

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

Besserwisser

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

kannstmasehn
Forum-Century
Forum-Century
Beiträge: 165
Registriert: Mo 5. Mai 2014, 16:55

Beitrag 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

Besserwisser

Beitrag von Besserwisser »

Sollen wir jetzt raten, wie du das konkret gemacht hast?

kannstmasehn
Forum-Century
Forum-Century
Beiträge: 165
Registriert: Mo 5. Mai 2014, 16:55

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

Besserwisser

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

kannstmasehn
Forum-Century
Forum-Century
Beiträge: 165
Registriert: Mo 5. Mai 2014, 16:55

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

Antworten