Zelleninhalt in tabularx vertikal zentrieren

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: Zelleninhalt in tabularx vertikal zentrieren

von Big-Gremlin » Mo 26. Jan 2015, 09:13

sehr schön :) danke

von Besserwisser » Mo 26. Jan 2015, 08:44

Wie immer: Bei jeder Definitionsebene muss man die # verdoppeln, damit TeX, weiß welches Argument Nummer 1 da gemeint ist:
\documentclass[oneside]{scrbook}

\usepackage{tabularx}% lädt auch array
\usepackage{blindtext}

\newcolumntype{C}[1]{>{\centering\arraybackslash}m{#1}}
\newcommand{\testtable}[1]{
   \begin{center}
   \renewcommand\tabularxcolumn[1]{>{\centering\arraybackslash}m{##1}}
   \begin{tabularx}{\textwidth}{|C{1.5cm}|X|m{1.5cm}|}
      #1 & \blindtext & #1
   \end{tabularx}
   \end{center}
}

\begin{document}

   \testtable{test}

   \begin{tabularx}{\textwidth}{|C{1.5cm}|X|m{1.5cm}|}
   test & \blindtext & test
   \end{tabularx}
\end{document}

von Big-Gremlin » Mo 26. Jan 2015, 08:31

Ansich funktioniert das. Danke schonmal :)

Jedoch wie funktioniert das dann, wenn ich die Tabelle in einen newcommand packe?

Folgendes Beispiel funktioniert nicht
\documentclass[oneside]{scrbook}

\usepackage{tabularx}% lädt auch array
\usepackage{blindtext}

\newcolumntype{C}[1]{>{\centering\arraybackslash}m{#1}}
\newcommand{\testtable}[1]{
	\begin{center}
	\renewcommand\tabularxcolumn[1]{>{\centering\arraybackslash}m{#1}}
	\begin{tabularx}{\textwidth}{|C{1.5cm}|X|m{1.5cm}|}
		#1 & \blindtext & #1
	\end{tabularx}
	\end{center}
}

\begin{document}

	\testtable{test}

	\begin{tabularx}{\textwidth}{|C{1.5cm}|X|m{1.5cm}|}
	test & \blindtext & test
	\end{tabularx}
\end{document}

von esdd » So 25. Jan 2015, 17:46

X Spalten werden als p Spalten mit entsprechend angepasster Breite gesetzt. Wenn alle Spalten vertikal zueinander zentriert werden sollen, muss \tabularxcolumn so umdefiniert werden, dass X Spalten auf dem m Spaltentyp basieren.
\renewcommand\tabularxcolumn[1]{m{#1}}
Wenn man das innerhalb von einer Gruppe macht, kann man diese Änderung lokal halten.
\documentclass[oneside]{scrbook} 

\usepackage{tabularx}% lädt auch array
\newcolumntype{C}[1]{>{\centering\arraybackslash}m{#1}}

\usepackage{blindtext}
\begin{document}
\begin{center}
\renewcommand\tabularxcolumn[1]{>{\centering\arraybackslash}m{#1}}
\begin{tabularx}{\textwidth}{|C{1.5cm}|X|m{1.5cm}|} 
test & \blindtext & test 
\end{tabularx}
\end{center}

\begin{center}
\begin{tabularx}{\textwidth}{| 
  C{1.5cm} | 
  >{\centering\arraybackslash}X | 
  m{1.5cm} | 
} 
test & \blindtext & test 
\end{tabularx}
\end{center}

\end{document}
Ich habe die Tabellen jeweils zentriert, weil zum einen etwas Abstand eingefügt wird und zum anderen der Absatzeinzug entfällt, der die Tabelle sonst ein Stück in den Rand rutschen lässt.

Gruß
Elke

Zelleninhalt in tabularx vertikal zentrieren

von Big-Gremlin » So 25. Jan 2015, 17:12

Vertikales zentrieren einer Zelle in TabularX ist garnicht so einfach.
Ich les städnig, dass bei einer vertikalen Zentrierung "m" für die Spalte gesetzt werden soll.
\documentclass[oneside]{scrbook}

\usepackage{array, tabularx, blindtext}
\newcolumntype{C}[1]{>{\centering\arraybackslash}m{#1}}

\begin{document} 
	\begin{tabularx}{\textwidth}{|
		C{1.5cm} |
		>{\centering\arraybackslash}X |
		m{1.5cm} |
	}
	
	 test & \blindtext & test
	
	\end{tabularx}
\end{document}
In dem Beispiel habe ich für Spalte 1 einen neuen Typ gesetzt und für Spalte 3 m direkt in die Zelle gesetzt. Vertikal zentriert wird aber nichts.

Kann tabularx keien vertikale Zentrierung? Ich hatte es mit tabular* schon versucht, aber die Spaltengröße hatte dabei nicht richtig hingehauen. Außerdem bekam ich damit unschöne zusätzliche Abstände mit rein.

Ich möchte links und rechts eine Spalte mit 1,5cm und in der Mitte eine Spalte die den Rest (der Textbreite) einnimmt. Mir geht es in erster Linie darum, kleine Bilder zu zentrieren.

Nach oben