Tabelle - Einrückung verhindern und Feld mittig ausrichten

Antwort erstellen


Diese Frage dient dazu, das automatisierte Versenden von Formularen durch Spam-Bots zu verhindern.
Smilies
:D :) :( :o :shock: :? 8) :lol: :-x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen:

BBCode ist eingeschaltet
[img] ist eingeschaltet
[flash] ist ausgeschaltet
[url] ist eingeschaltet
Smilies sind eingeschaltet

Die letzten Beiträge des Themas

Ich habe die Datenschutzerklärung gelesen und bin damit einverstanden.

   

Wenn du eine Datei oder mehrere Dateien anhängen möchtest, gib die Details unten ein.

Ansicht erweitern Die letzten Beiträge des Themas: Tabelle - Einrückung verhindern und Feld mittig ausrichten

von Noch so einer » Do 18. Dez 2014, 07:59

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}

von giztech » Mi 17. Dez 2014, 22:39

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.

von Noch so einer » Mi 17. Dez 2014, 10:14

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.

von Johannes_B » Mi 17. Dez 2014, 09:59

Mach aus den p halt m.

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

von giztech » Di 16. Dez 2014, 22:46

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.

von Noch so einer » Di 16. Dez 2014, 20:06

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.

Tabelle - Einrückung verhindern und Feld mittig ausrichten

von giztech » Di 16. Dez 2014, 19:44

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}

Nach oben