Seite 1 von 1

zentrieren eines 2-zeiligen Text über 3 Zeilen

Verfasst: Do 1. Jul 2010, 12:56
von fploink
Hallo,
ich hab ein Problem mit dem zentrieren über mehrere Zeilen.
Konkret möchte ich bei meinem Minimalbeispiel das Wort "Schifffahrt", das über zwei Zeilen geht, über die drei Zeilen des Tabellenkopfes zentrieren.

Kann mir da jemand weiterhelfen?
\documentclass[12pt]{scrreprt}

\usepackage[T1]{fontenc}
\usepackage{longtable}
\usepackage{lmodern}
\usepackage{tabularx}
\usepackage{multirow}								
\newcolumntype{C}[1]{>{\centering\arraybackslash}p{#1}} % zentrierte Spalten mit Breitenangabe 
\newcolumntype{R}[1]{>{\raggedleft\arraybackslash}p{#1}} % rechtsbündig mit Breitenangabe 
\newcolumntype{L}[1]{>{\raggedright\arraybackslash}p{#1}} % linksbündig mit Breitenangabe 

\begin{document}

\begin{tabular}{|C{1.3cm}|C{2.4cm}|C{2.45cm}|}
\hline 
\multicolumn{1}{|c|}{\multirow{3}{*}{{\bf{Text 1}}}}& \textbf{Gebäude-}& {\textbf{Schiff-}} \\ 
& \textbf{grund-}  &\bf{fahrt}  \\ 
 & \textbf{fläche} & \\ 
\hline
Hallo &    20 &       23  \\
\hline
\end{tabular}

\end{document}
Danke

mfg Florian

Verfasst: Do 1. Jul 2010, 13:15
von KOMA
Ich vermute, dass das ein typischer Fall für »weniger ist mehr« ist:
\documentclass[12pt]{scrreprt}
\usepackage[latin1]{inputenc}
\usepackage[ngerman]{babel}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\newcolumntype{C}[1]{>{\centering\arraybackslash}m{#1}} % zentrierte Spalten mit Breitenangabe

\begin{document}

\begin{tabular}{|C{1.3cm}|C{2.4cm}|C{2.45cm}|}
\hline
Text 1 & \hspace{0pt}Gebäudegrundfläche & \hspace{0pt}Schifffahrt \\
\hline
Hallo &    20 &       23  \\
\hline
\end{tabular}

\end{document}
BTW: Vertikale Linien sind in Tabellen höchst ungünstig. Siehe dazu die einschlägige typografische Literatur sowie die Anleitung zum Paket booktabs (← dies ist ein geprüfter Link, der direkt zur Paketkurzbeschreibung auf CTAN führt!) sowie das Dokument tabsatz.pdf (siehe dazu den zweiten Link in meiner Signatur).

Verfasst: Do 1. Jul 2010, 13:18
von Xenara
Das wäre so auch mein Vorschlag gewesen, KOMA war schneller. Dafür habe ich die Sache mit den vertikalen Linien bereits eingearbeitet ;)
\documentclass[12pt]{scrreprt} 

\usepackage[T1]{fontenc} 
%\usepackage{longtable} 
%\usepackage{lmodern} 
%\usepackage{tabularx} 
%\usepackage{multirow}   

\usepackage{array}
\usepackage{booktabs}
                      
\newcolumntype{C}[1]{>{\centering\arraybackslash}m{#1}} % horizontal und vertikal zentrierte Spalten mit Breitenangabe 
%\newcolumntype{R}[1]{>{\raggedleft\arraybackslash}p{#1}} % rechtsbündig mit Breitenangabe 
%\newcolumntype{L}[1]{>{\raggedright\arraybackslash}p{#1}} % linksbündig mit Breitenangabe 

\begin{document} 

\begin{tabular}{C{1.3cm}C{2.4cm}C{2.45cm}} 
\toprule 
Text 1& \bfseries Gebäude\-grund\-fläche & \bfseries Schiff-\par fahrt \\ 
\midrule 
Hallo &    20 &       23  \\ 
\bottomrule 
\end{tabular} 

\end{document} 
@Markus: Wieso setzt Du noch ein \hspace{0} vor die Einträge?

Verfasst: Do 1. Jul 2010, 13:25
von KOMA
TeX trennt das erste Wort eines Absatzes (also auch das erste Wort in einer \parbox, respektive m- oder b- oder p-Spalte) nicht automatisch. Um die automatische Trennung trotzdem zu ermöglichen, verwende ich \hspace{0pt} als erstes Wort. Das hätte man natürlich auch gleich in die Spaltendefinition mit einbauen können.

Für die automatische Trennung wird natürlich auch die richtige Sprache und die korrekte Eingabecodierung benötigt. Deshalb habe ich in meinem Beispiel beides ergänzt. Danach kann man die Trennung getrost TeX überlassen - solange dabei keine unschönen Trennungen entstehen, was ich keineswegs kontrolliert habe.

Verfasst: Do 1. Jul 2010, 13:29
von Xenara
Alles klar, vielen Dank für die Erläuterungen.