Seite 1 von 1

Tabelle - Einrückung verhindern und Feld mittig ausrichten

Verfasst: Di 16. Dez 2014, 19:44
von giztech
Wie im Minimalbeispiel schon beschrieben hätte ich gerne, dass nach dem Zeilenumbruch während der ganzen Tabelle nicht eingerückt wird.
Zusätzlich soll 'Text B' in der Vertikale mittig bezüglich des mehrzeiligen Texts in der linken Spalte ausgerichtete sein.
\documentclass{scrbook} 
\begin{document}
\begin{center}
\begin{tabular}{p{6cm}ccc}
\hline \rule[-2ex]{0pt}{5.5ex} \bf Bla  & \bf Bla  \\ 
\hline \rule[-2ex]{0pt}{5.5ex} Text über mehrere Zeilen, der ohne Einrückung umgebrochen werden soll  & Text B  \\ 
\hline
\end{tabular}
\end{center} 
\end{document}

Verfasst: Di 16. Dez 2014, 20:06
von Noch so einer
Deklariere die Umlaute. Verwende keine veraltete Befehle, für die Du ja auch Warnungen von scrartcl kassierst. Setze keine Leerzeichen, wo Du keine haben willst. Wenn Du vor der ersten und nach der letzten Spalte keinen Spaltenabstand haben willst, musst Du diesen explizit entfernen. Wenn Du vier Spalten deklarierst, solltest Du auch vier Spalten verwenden (ggf. leere Spalten). Wenn Du nur zwei Spalten benötigst, solltest Du auch nur zwei deklarieren. Der Rest geht dann mit Paketen wie booktabs, array und Anweisungen wie \arraystretch:
\documentclass{scrbook}
\usepackage{booktabs}
\usepackage{array}
\usepackage{selinput}
\SelectInputMappings{
  adieresis={ä},
  germandbls={ß},
}

\begin{document}
\begin{center}
\renewcommand*{\arraystretch}{1.75}
\begin{tabular}{@{}m{6cm}ccc@{}}
\toprule
\textbf{Bla}  & \textbf{Bla}  & & \\\midrule
Text über mehrere Zeilen, der ohne Einrückung umbrochen werden soll  & Text B & C & D \\
\bottomrule
\end{tabular}
\end{center}
\end{document}
BTW: "umbrochen" ist richtig (siehe DUDEN).

Bitte unbedingt die Anleitungen der verwendeten Pakete lesen! In der booktabs-Anleitung sind beispielsweise alternative Einstellmöglichkeiten für die Abstände zwischen den Tabellenzeilen zu finden.

Verfasst: Di 16. Dez 2014, 22:46
von giztech
Ok, ich habe Deinen Vorschlag meinen Wünschen angepasst:
\documentclass{scrbook}
\usepackage{array}


\begin{document}

\begin{center}
\renewcommand*{\arraystretch}{2}
\begin{tabular}{m{6cm}ccc}
\hline
\textbf{Spalte 1} & \textbf{Spalte 2} & \textbf{Spalte 3} & \textbf{Spalte 4} \\
\hline

Merhzeiliger Text mit Zeilenumbruch  & kurzer Text & kurzer Text & kurzer Text \\

Merhzeiliger Text mit Zeilenumbruch  & kurzer Text & kurzer Text & kurzer Text \\

Text ohne Zeilenumbruch  & kurzer Text & kurzer Text & kurzer Text \\

\hline
\end{tabular}
\end{center} 



\end{document}
Sieht auch schon besser aus, aber der Text 'Spalte 1' und 'Text ohne Zeilenumbruch' werden leider nicht mittig bezüglich der rechten Spalten angezeigt.


Ich habe hier noch eine Möglichkeit gefunden jede Zeile in der Zelle zu zentrieren:
\documentclass{scrbook}
\usepackage{array}
\newcolumntype{L}[1]{>{\raggedright\arraybackslash}p{#1}} % linksbündig mit Breitenangabe
\newcolumntype{C}[1]{>{\centering\arraybackslash}p{#1}} % zentriert mit Breitenangabe
\newcolumntype{R}[1]{>{\raggedleft\arraybackslash}p{#1}} % rechtsbündig mit Breitenangabe

\begin{document}

\begin{center}
\renewcommand*{\arraystretch}{2}
\begin{tabular}{C{6cm}ccc}
\hline
\textbf{Spalte 1} & \textbf{Spalte 2} & \textbf{Spalte 3} & \textbf{Spalte 4} \\
\hline

Merhzeiliger Text mit Zeilenumbruch  & kurzer Text & kurzer Text & kurzer Text \\

Merhzeiliger Text mit Zeilenumbruch  & kurzer Text & kurzer Text & kurzer Text \\

Text ohne Zeilenumbruch  & kurzer Text & kurzer Text & kurzer Text \\

\hline
\end{tabular}
\end{center} 



\end{document}
Wenn man das noch damit kombinieren könnte, dass die Textblöcke horizontal ausgerichtet sind wäre perfekt.

Verfasst: Mi 17. Dez 2014, 09:59
von Johannes_B
Mach aus den p halt m.

Wie soll ich das nennen? Phantasie? Intuition? Lust zum Ausprobieren?

Verfasst: Mi 17. Dez 2014, 10:14
von Noch so einer
Man kann dabei sogar die Spaltenbreite automatisch bestimmen lassen:
\documentclass{scrbook}
\usepackage{booktabs}
\usepackage{array}
\usepackage{selinput}
\SelectInputMappings{
  adieresis={ä},
  germandbls={ß},
}
\usepackage{ltablex}
\newcolumntype{C}{>{\raggedright\arraybackslash}X}
\newcommand*{\tabularhead}{\textbf}
\begin{document}
\begin{center}
\renewcommand*{\arraystretch}{2}
\renewcommand*{\tabularxcolumn}[1]{m{#1}}
\begin{tabularx}{\linewidth}{p{6cm}CCC}
\toprule
\tabularhead{Spalte 1}  & \tabularhead{Spalte 2} & \tabularhead{Spalte 3} &
\tabularhead{Spalte 4} \\\midrule
Text über mehrere Zeilen, der ohne Einrückung umbrochen werden soll  & Text B
& kurzer Text & kurzer Text \\
\bottomrule
\end{tabularx}
\end{center}
\end{document}
Zum Vergleich ruhig auch mal ausprobieren, was passiert, wenn man in der Deklaration der ersten Spalte p{6cm} durch X ersetzt.

Verfasst: Mi 17. Dez 2014, 22:39
von giztech
Johannes_B hat geschrieben:Mach aus den p halt m.

Wie soll ich das nennen? Phantasie? Intuition? Lust zum Ausprobieren?
Meinst Du so:
\documentclass{scrbook}
\usepackage{array}
\newcolumntype{L}[1]{>{\raggedright\arraybackslash}m{#1}} % linksbündig mit Breitenangabe
\newcolumntype{C}[1]{>{\centering\arraybackslash}m{#1}} % zentriert mit Breitenangabe
\newcolumntype{R}[1]{>{\raggedleft\arraybackslash}m{#1}} % rechtsbündig mit Breitenangabe

\begin{document}

\begin{center}
\renewcommand*{\arraystretch}{2}
\begin{tabular}{C{6cm}ccc}
\hline
\textbf{Spalte 1} & \textbf{Spalte 2} & \textbf{Spalte 3} & \textbf{Spalte 4} \\
\hline

Merhzeiliger Text mit Zeilenumbruch  & kurzer Text & kurzer Text & kurzer Text \\

Merhzeiliger Text mit Zeilenumbruch  & kurzer Text & kurzer Text & kurzer Text \\

Text ohne Zeilenumbruch  & kurzer Text & kurzer Text & kurzer Text \\

\hline
\end{tabular}
\end{center}



\end{document}
?
Das funktioniert nicht, dann sind die erste und letzte Zeile der linken Spalte nicht auf der gleichen Höhe wie die rechten Spalten.

Verfasst: Do 18. Dez 2014, 07:59
von Noch so einer
Ich sehe gerade, dass ich in einem Beispiel vergessen hatte, die erste Spalte als m-Spalte zu definieren:
\documentclass{scrbook}
\usepackage{booktabs}
\usepackage{array}
\usepackage{selinput}
\SelectInputMappings{
  adieresis={ä},
  germandbls={ß},
}
\usepackage{ltablex}
\renewcommand*{\tabularxcolumn}[1]{m{#1}}
\newcolumntype{C}{>{\raggedright\arraybackslash}X}
\newcommand*{\tabularhead}{\textbf}
\begin{document}
\begin{center}
\renewcommand*{\arraystretch}{2}
\begin{tabularx}{\linewidth}{m{6cm}CCC}
\toprule
\tabularhead{Spalte 1}  & \tabularhead{Spalte 2} & \tabularhead{Spalte 3} &
\tabularhead{Spalte 4} \\\midrule
Text über mehrere Zeilen, der ohne Einrückung umbrochen werden soll  & Text B
& kurzer Text & kurzer Text \\
\bottomrule
\end{tabularx}
\end{center}
\end{document}
Leider funktioniert die Zentrierung in den automatisch angepassten Spalten von ltablex nicht. Man müsste dann nicht automatisch angepasste Spalten verwenden:
\documentclass{scrbook}
\usepackage{booktabs}
\usepackage{array}
\usepackage{selinput}
\SelectInputMappings{
  adieresis={ä},
  germandbls={ß},
}
\newcolumntype{C}[1]{>{\centering\arraybackslash}m{#1}}
\newcommand*{\tabularhead}{\textbf}
\begin{document}
\begin{center}
\renewcommand*{\arraystretch}{2}
\begin{tabular}{m{6cm}*3{C{6em}}}
\toprule
\tabularhead{Spalte 1}  & \tabularhead{Spalte 2} & \tabularhead{Spalte 3} &
\tabularhead{Spalte 4} \\\midrule
Text über mehrere Zeilen, der ohne Einrückung umbrochen werden soll  & Text B
& kurzer Text & kurzer Text \\\midrule
Es & geht & auch & kurz. \\
\bottomrule
\end{tabular}
\end{center}
\end{document}