Tabelle, Problem mit eingefärbten Zellen und horizontale Linien Thema ist als GELÖST markiert

Tabellen und Grafiken erstellen und anordnen


RaTex
Forum-Newbie
Forum-Newbie
Beiträge: 2
Registriert: Di 29. Mär 2022, 20:20

Tabelle, Problem mit eingefärbten Zellen und horizontale Linien

Beitrag von RaTex »

Hallo,

ich knobel gerade an der Darstellung einer Tabelle, welche eingefärbte Zellen beinhaltet und bei der die Darstellung der horizontalen Linien durch die Einfärbung aufgehoben wird. Über Google und in LaTeX-Foren finden sich hunderte, m.E. identische Problemstellungen, aber ich habe es leider nicht geschafft die entsprechenden Lösungsvorschläge auf meine Tabelle zu übertragen.

Ich verwende LaTeX erst seit kurzem und bisher auch nur im Hobbybereich - die meisten Probleme konnte ich tatsächlich über Google bzw. diverse Forentreffer lösen, aber hier beiß ich mir die Zähne aus. Zum Schluss bin ich sogar auf Beiträge gestossen, welche völlig andere Pakete als die in diversen Tutorials für Tabellen benutzten Pakete verwendet haben, was die Verwirrung dann natürlich maximiert hat. Da dies auch gleichzeitig mein erster Beitrag in einer LaTeX-Community ist bitte ich zu entschuldigen, falls ich wichtige Informationen vergessen haben sollte.

Vorweg möchte ich sagen, dass ich durch die vielen Beiträge, durch die ich mich gehangelt habe festgestellt habe, dass sowohl Einfärbungen als auch vertikale Linien in Tabellen üblicherweise eher als hinderlich für den Lesefluß empfunden werden, was ich auch nachvollziehen kann.
Falls der Hintergrund zur gewünschten Tabellendarstellung relevant ist: das komplette Dokument ergibt ein Datenblatt aus dem Elektronikbereich, hier sind zumindest vertikale Linien in Tabellen durchaus üblich. Die Darstellung meines Datenblattes orientiert sich an den Dokumenten zu einer Entwicklungsumgebung eines Herstellers, der den Benutzern die Möglichkeit gibt, eigene Soft- und Hardwarekomponenten für die Elektronik zu erstellen. Möchte man mit der entsprechenden Community Komponenten teilen, sollte die Dokumentation bzw. das Datenblatt meiner Meinung nach ähnlich aufgebaut sein. Tja, und der Hersteller verwendet eben eingefärbte Tabellenköpfe...

Ich habe es zu zwei Implementierungen geschafft, welche vom Aufbau her dem entsprechen was ich haben möchte. Lediglich die Darstellung der horizontalen Linien geht schief:
\documentclass[pagesize, fontsize=12pt, parskip=half, x11names,headheight=3em]{scrartcl}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\renewcommand*{\familydefault}{\sfdefault}		%%change normal font
\usepackage[sfdefault]{carlito}					%%use Calibri-like font
\usepackage{babel,blindtext,layout}
\usepackage[automark]{scrlayer-scrpage}
\usepackage[left=2.0cm, right=2.0cm, top=2.0cm, bottom=2.0cm]{geometry}		%%set borders
\usepackage[dvipsnames,table,xcdraw]{xcolor}
\usepackage{tabulary,multirow}
\usepackage{hhline}

\setlength\arrayrulewidth{1.5pt}		%%adjust line width for tables

\begin{document}

\begin{tabulary}{\textwidth}{|l|C|C|C|C|C|C|C|C|}
	\hline
	%%	\rowcolor[HTML]{C0C0C0}
	\multirow{2}{*}{{\cellcolor[HTML]{C0C0C0}}Configuration} & \multicolumn{2}{c|}{{\cellcolor[HTML]{C0C0C0}}Device A} & \multicolumn{2}{c|}{{\cellcolor[HTML]{C0C0C0}}Device B} & \multicolumn{2}{c|}{{\cellcolor[HTML]{C0C0C0}}Device C} & \multicolumn{2}{c|}{{\cellcolor[HTML]{C0C0C0}}Device D} \\
	\hhline{|~|--------|}
	%%\cline{2-9} 
	%%	\rowcolor[HTML]{C0C0C0}
	{\cellcolor[HTML]{C0C0C0}} & {\cellcolor[HTML]{C0C0C0}}Flash (Bytes) & {\cellcolor[HTML]{C0C0C0}}RAM (Bytes) & {\cellcolor[HTML]{C0C0C0}}Flash (Bytes) & {\cellcolor[HTML]{C0C0C0}}RAM (Bytes) & {\cellcolor[HTML]{C0C0C0}}Flash (Bytes) & {\cellcolor[HTML]{C0C0C0}}RAM (Bytes) & {\cellcolor[HTML]{C0C0C0}}Flash (Bytes) & {\cellcolor[HTML]{C0C0C0}}RAM (Bytes) \\ \hline
	CONFIG\_A & 100 & 100 & 100 & 100 & 100 & 100 & 100 & 100 \\
	CONFIG\_B & 100 & 100 & 100 & 100 & 100 & 100 & 100 & 100 \\
	CONFIG\_C & 100 & 100 & 100 & 100 & 100 & 100 & 100 & 100 \\
	\hline
\end{tabulary}%%	}

\begin{table}[h]
	\begin{tabulary}{\textwidth}{|l|C|C|C|C|C|C|C|C|}
		\hline
		%%	\rowcolor[HTML]{C0C0C0}
		{\cellcolor[HTML]{C0C0C0}} & \multicolumn{2}{c|}{{\cellcolor[HTML]{C0C0C0}}Device A} & \multicolumn{2}{c|}{{\cellcolor[HTML]{C0C0C0}}Device B} & \multicolumn{2}{c|}{{\cellcolor[HTML]{C0C0C0}}Device C} & \multicolumn{2}{c|}{{\cellcolor[HTML]{C0C0C0}}Device D} \\
		\cline{2-9}
		%%	\rowcolor[HTML]{C0C0C0}
		{\cellcolor[HTML]{C0C0C0}}Configuration & {\cellcolor[HTML]{C0C0C0}}Flash (Bytes) & {\cellcolor[HTML]{C0C0C0}}RAM (Bytes) & {\cellcolor[HTML]{C0C0C0}}Flash (Bytes) & {\cellcolor[HTML]{C0C0C0}}RAM (Bytes) & {\cellcolor[HTML]{C0C0C0}}Flash (Bytes) & {\cellcolor[HTML]{C0C0C0}}RAM (Bytes) & {\cellcolor[HTML]{C0C0C0}}Flash (Bytes) & {\cellcolor[HTML]{C0C0C0}}RAM (Bytes) \\ \hline
		CONFIG\_A & 100 & 100 & 100 & 100 & 100 & 100 & 100 & 100 \\
		CONFIG\_B & 100 & 100 & 100 & 100 & 100 & 100 & 100 & 100 \\
		CONFIG\_C & 100 & 100 & 100 & 100 & 100 & 100 & 100 & 100 \\
		\hline
	\end{tabulary}%%	}
\end{table}
\end{document}
Als Resultat bekomme ich folgende Tabellen:
MWE - TeXstudio.png
Die erste verwendet "\hhline" und sollte durch "~" nach meinem Verständnis der Doku dazu keine Linie zeichnen, was aber wohl nicht korrekt ist. Das Einfärben der Zellen, egal ob dediziert per "\cellcolor" oder implizit mittels "\rowcolor" überschreibt das Wort "Configuration".
Die zweite Tabelle verwendet "\cline", womit nichts in der ersten Zelle diesbezüglich schief geht, aber hier wird durch das Einfärben die komplette Linie zwischen der ersten und zweiten Zeile, Spalte 2-9 wieder rausgeworfen. Hier hatte ich für die erste Zelle auch einen etwas anderen Ansatz gewählt, daher ist die vertikale Ausrichtung des Inhalts auch eine andere - ich würde mittig oder unten bevorzugen. "\cline" scheint soweit ich es herausfinden konnte i.V.m. mit dem Paket "xcolor" nicht gut zu funktionieren, aber ich habe nichts vergleichbares zu "\cline" gefunden, was funktioniert.

Mittlerweile seh ich den Wald vor lauter Bäumen nicht mehr... was mache ich falsch? Oder sollte ich für dieses Problem ein anderes Tabellenpaket verwenden? Hier hatte ich bspw. "nicematrix", "tabularray" und "cals" gefunden.

Grüße

RaTex
Forum-Newbie
Forum-Newbie
Beiträge: 2
Registriert: Di 29. Mär 2022, 20:20

Re: Tabelle, Problem mit eingefärbten Zellen und horizontale Linien

Beitrag von RaTex »

N'Abend,

ich habe es geschafft das Knobelspiel zu lösen. Somit ist meine erste Antwort in diesem Forum auch gleichzeitig die Antwort auf meine erste Frage :lol: Bekommt vermutlich auch nicht jeder hin...

Ich hatte mir die anderen Pakete "nicematrix" und "tabularray" angeschaut. Ersteres war ein Graus, damit habe ich es nicht geschafft, aber mit "tabularray" habe ich es hinbekommen:
\documentclass[pagesize, fontsize=12pt, parskip=half, x11names,headheight=3em]{scrartcl}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\renewcommand*{\familydefault}{\sfdefault}		%%change normal font
\usepackage[sfdefault]{carlito}					%%use Calibri-like font
\usepackage{babel,blindtext,layout}
\usepackage[automark]{scrlayer-scrpage}
\usepackage[left=2.0cm, right=2.0cm, top=2.0cm, bottom=2.0cm]{geometry}		%%set borders
\usepackage[dvipsnames,table,xcdraw]{xcolor}
\usepackage{tabularray}

\begin{document}
\begin{table}[h]
	\begin{tblr}{width=\textwidth,colspec={|l|X[c]|X[c]|X[c]|X[c]|X[c]|X[c]|X[c]|X[c]|},hlines={1.5pt},vlines={1.5pt}}
		\SetRow{gray8} \SetCell[r=2]{f} Configuration & \SetCell[c=2]{c} Device A & & \SetCell[c=2]{c} Device B & & \SetCell[c=2]{c} Device C & & \SetCell[c=2]{c} Device D &\\
		\SetRow{gray8} & Flash (Bytes) & RAM (Bytes) & Flash (Bytes) & RAM (Bytes) & Flash (Bytes) & RAM (Bytes) & Flash (Bytes) & RAM (Bytes) \\
		CONFIG\_A & 100 & 100 & 100 & 100 & 100 & 100 & 100 & 100 \\
		CONFIG\_B & 100 & 100 & 100 & 100 & 100 & 100 & 100 & 100 \\
		CONFIG\_C & 100 & 100 & 100 & 100 & 100 & 100 & 100 & 100 \\
	\end{tblr}
\end{table}
\end{document}
Das Resultat ist nun wie gewünscht:
MWE - Tabularray.png
Grüße

Antworten