von rais » Do 19. Okt 2023, 15:33
Vermutlich müsstest Du bei den ganzen \multicolumn{1}-Befehlen auch nach der Spaltendeklaration @{} einsetzen, das hab ich aber nicht näher untersucht. Wenn Du eh die Abstände loswerden willst, ist es IMHO einfacher, \tabcolsep auf Null zu setzen.
Vertikal zentrieren kannst Du, wenn Du statt p{} m{}-Spalten nimmst.
Nach \rowcolor braucht es keine \cellcolor, es sei denn, Du möchtest die Farbe einer einzelnen Zelle wieder ändern.
Die Breite der Tabelle kannst Du ausgeben lassen, indem Du die Tabelle erst in eine Box packst...
Zumindest für die \multicolumn-Befehle könntest Du Dir einen eigenen Befehl basten, der den Text entsprechend fett setzt (siehe \mcbf als Beispiel unten).
Wenn man dann auch noch die Breiten in der Deklaration zur tabular-Umgebung angibt, braucht es die ganzen \multicolumn{1}-Befehle nicht mehr:
\documentclass{article}
%\usepackage{multirow} wird hier nicht verwendet
\usepackage[table,xcdraw]{xcolor}
%\usepackage{tabularx} wird hier nicht verwendet
\usepackage{array}
\newcolumntype{C}[1]{>{\centering\arraybackslash}m{#1}}%<-- m statt p, siehe `texdoc array'
\newcommand\mcbf[3]{% multicolumn mit textbf kombiniert:
\multicolumn{#1}{#2}{\textbf{#3}}%
}
\newsavebox\mybox
\newlength\savedtabcolsep
\begin{document}
\setlength\savedtabcolsep{\tabcolsep}%
\setlength\tabcolsep{0pt}% statt all der @{} in den Spaltendeklarationen
\setlength\arrayrulewidth{1pt}% nur zur Demo, siehe auch Abschnitt ``Handling of rules'' in `texdoc array'
\sbox\mybox{% erstmal die Tabelle in eine Box packen
\begin{tabular}{*{2}{C{3.5cm}}|*{5}{C{1.8cm}}}
%\hline
\rowcolor[HTML]{CBCEFB}
\mcbf{2}{C{7cm}|}{%
AA-AAAA AAAAAA} % 1 Zeilig
&
\mcbf{5}{C{9cm}}{%
AAAAAAAAAAAAA AAA-AAAAAAAAAAA AAAAAA AAAA AAAAAA AA AAA} \\ % 2 Zeilig
\rowcolor[HTML]{FBCECB}
\textbf{AAAAAA AAAA}
&
\textbf{BBBBBBBBBBB BBBBBBB}
&
\textbf{CCCCC}
&
\cellcolor[HTML]{CBCEFB}\textbf{DDDDD}
&
\textbf{EEEEEE}
&
\textbf{FFFFFFFFFFF}
&
\textbf{GGGG GGGGG GGGGG} \\
A & B & C & D & E & F & G\\
A & B & C & D & E & F & G\\
\end{tabular}% <-- hier würde sich sonst ein Leerzeichen einschleichen
}% \sbox
\the\wd\mybox, \the\arrayrulewidth %Breite der Tabelle und Breite der vertikalen Linie
\noindent\usebox\mybox %Tabelle ausgeben
\bigskip
\setlength\tabcolsep{\savedtabcolsep}% \tabcolsep wieder herstellen
% Nur zur Demo, wo mit welcher Länge zu rechnen ist:
\begin{tabular}{C{1cm}|C{2cm}}
a & b\\
\hline
\end{tabular}
{\color{red}\rule{\tabcolsep}{1pc}}%
{\color{blue}\rule{1cm}{1pt}}%
{\color{red}\rule{\tabcolsep}{1pc}}%
\rule{\arrayrulewidth}{1pc}%
{\color{red}\rule{\tabcolsep}{1pc}}%
{\color{blue}\rule{2cm}{1pt}}%
{\color{red}\rule{\tabcolsep}{1pc}}%
\end{document}
VG
Rainer
Vermutlich müsstest Du bei den ganzen \multicolumn{1}-Befehlen auch nach der Spaltendeklaration @{} einsetzen, das hab ich aber nicht näher untersucht. Wenn Du eh die Abstände loswerden willst, ist es IMHO einfacher, \tabcolsep auf Null zu setzen.
Vertikal zentrieren kannst Du, wenn Du statt p{} m{}-Spalten nimmst.
Nach \rowcolor braucht es keine \cellcolor, es sei denn, Du möchtest die Farbe einer einzelnen Zelle wieder ändern.
Die Breite der Tabelle kannst Du ausgeben lassen, indem Du die Tabelle erst in eine Box packst...
Zumindest für die \multicolumn-Befehle könntest Du Dir einen eigenen Befehl basten, der den Text entsprechend fett setzt (siehe \mcbf als Beispiel unten).
Wenn man dann auch noch die Breiten in der Deklaration zur tabular-Umgebung angibt, braucht es die ganzen \multicolumn{1}-Befehle nicht mehr:
[code]
\documentclass{article}
%\usepackage{multirow} wird hier nicht verwendet
\usepackage[table,xcdraw]{xcolor}
%\usepackage{tabularx} wird hier nicht verwendet
\usepackage{array}
\newcolumntype{C}[1]{>{\centering\arraybackslash}m{#1}}%<-- m statt p, siehe `texdoc array'
\newcommand\mcbf[3]{% multicolumn mit textbf kombiniert:
\multicolumn{#1}{#2}{\textbf{#3}}%
}
\newsavebox\mybox
\newlength\savedtabcolsep
\begin{document}
\setlength\savedtabcolsep{\tabcolsep}%
\setlength\tabcolsep{0pt}% statt all der @{} in den Spaltendeklarationen
\setlength\arrayrulewidth{1pt}% nur zur Demo, siehe auch Abschnitt ``Handling of rules'' in `texdoc array'
\sbox\mybox{% erstmal die Tabelle in eine Box packen
\begin{tabular}{*{2}{C{3.5cm}}|*{5}{C{1.8cm}}}
%\hline
\rowcolor[HTML]{CBCEFB}
\mcbf{2}{C{7cm}|}{%
AA-AAAA AAAAAA} % 1 Zeilig
&
\mcbf{5}{C{9cm}}{%
AAAAAAAAAAAAA AAA-AAAAAAAAAAA AAAAAA AAAA AAAAAA AA AAA} \\ % 2 Zeilig
\rowcolor[HTML]{FBCECB}
\textbf{AAAAAA AAAA}
&
\textbf{BBBBBBBBBBB BBBBBBB}
&
\textbf{CCCCC}
&
\cellcolor[HTML]{CBCEFB}\textbf{DDDDD}
&
\textbf{EEEEEE}
&
\textbf{FFFFFFFFFFF}
&
\textbf{GGGG GGGGG GGGGG} \\
A & B & C & D & E & F & G\\
A & B & C & D & E & F & G\\
\end{tabular}% <-- hier würde sich sonst ein Leerzeichen einschleichen
}% \sbox
\the\wd\mybox, \the\arrayrulewidth %Breite der Tabelle und Breite der vertikalen Linie
\noindent\usebox\mybox %Tabelle ausgeben
\bigskip
\setlength\tabcolsep{\savedtabcolsep}% \tabcolsep wieder herstellen
% Nur zur Demo, wo mit welcher Länge zu rechnen ist:
\begin{tabular}{C{1cm}|C{2cm}}
a & b\\
\hline
\end{tabular}
{\color{red}\rule{\tabcolsep}{1pc}}%
{\color{blue}\rule{1cm}{1pt}}%
{\color{red}\rule{\tabcolsep}{1pc}}%
\rule{\arrayrulewidth}{1pc}%
{\color{red}\rule{\tabcolsep}{1pc}}%
{\color{blue}\rule{2cm}{1pt}}%
{\color{red}\rule{\tabcolsep}{1pc}}%
\end{document}
[/code]
VG
Rainer