goLaTeX - Mein LaTeX-Forum

Mein LaTeX-Forum


Login  | Registrieren
Direktlinks:
Zuletzt aktive Beiträge
Unbeantwortete Beiträge
[Erweitert]

Forenstatistik:
Beiträge: 101747
Top-Poster: Johannes_B (5072)

Wir begrüßen unseren neuesten Benutzer Fracture.

Links:


Mit Unterstützung von DANTE e.V.: Deutschsprachige Anwendervereinigung TeX. Danke den Mitgliedern!





Forum
      Option
[Erweitert]
  • Diese Seite weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Multicolumns bei tabularx-Tabellen einfärben

 

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.02.2020, 18:03     Titel: Multicolumns bei tabularx-Tabellen einfärben
  Antworten mit Zitat      
Hallo zusammen,

seit geraumer Zeit versuche ich, einen morphologischen Kasten mit tabularx zu erstellen (hat funktioniert) und dann die entsprechenden Ausprägungen einzufärben (funktioniert nur teilweise). Die Anzahl der Ausprägungen (Spalten) können dabei je Merkmal (Zeile) variieren.

Bisher nutze ich Multicolumns in tabularx-Tabellen in Verbindung mit \cellcolor bzw. einem auf tabularx-Tabellen angepassten Befehl (online gefunden, wahrscheinlich bei tex.stackexchange).
Beim Einfärben treten jedoch Probleme vor allem in den letzten Zellen einer Zeile auf. Außerdem passt die Spaltenaufteilung nicht mehr, wenn kein multicolumn genutzt wird.

Kann mir jemand einen Tipp geben, was ich übersehen habe bzw. wie ich das Ergebnis erhalte, das ich gerne möchte?
Ausprobiert habe ich auch verschachtelte Tabellen (in Verbindung mit \cellcolor), aber auch das war bisher nicht zielführend (Lage der verschachtelten Tabelle und deren Höhe passen nicht). Ein Beispiel dafür habe ich mit ins MWE gepackt. TikZ habe ich mir bisher nur am Rande angeschaut, da mich die gezeigten Beispiele nicht überzeugen. Einen Unterschied beim Verhalten zwischen tabu und tabularx konnte ich bisher nicht feststellen.

Vielen Dank im Voraus für eure Hilfe.

Folgend ein Beispiel mit einmal mit multicolumns und einmal mit verschachtelten Tabellen (neue Befehle habe ich mir definiert, da ich einige Tabellen so erstellen will/muss und es damit schneller geht):

Code
\documentclass{scrreport}
\usepackage{calc}
\usepackage{tabularx}
\usepackage{array}
\usepackage[table]{xcolor}            

%%% neue Befehle %%%
% neuer Spaltentyp für zentrierte X-Spalten
\newcolumntype{C}{>{\centering\arraybackslash}X}


% neuer Befehl für umbrechenden Multicolumns über X-Spalten. Funktioniert gut
\newcommand{\mcX}[2]{\multicolumn{#1}
            {%\def\Anzahl{#1}%
            |>{\hsize=\dimexpr#1\linewidth+#1\tabcolsep+#1\tabcolsep%-#1\arrayrulewidth
               }C|}
            {#2}}
% neuer Befehl, um Multicolumns über X-Spalten einzufärben. Funktioniert mäßig
\newcommand{\mcXColor}[2]{\multicolumn{#1}
            {%\def\Anzahl{#1}%
            |>{\cellcolor{lightgray}\hsize=\dimexpr#1\linewidth+#1\tabcolsep+#1\tabcolsep-#1\arrayrulewidth
               }C|}
            {#2}}

%%% Dokumentstart
\begin{document}

% für vertikal zentrierte Spalten die X-Spaltendefinition anpassen. Grundlage sind jetzt die m-Spalten (sonst die p-Spalten)
\renewcommand{\tabularxcolumn}[1]{>{\normalsize\centering\arraybackslash}m{#1}}


\begin{table}[htbp]
   \small
   \caption{Multicolumntabelle}
   \begin{tabularx}
   {\textwidth}      % Tabellenbreite = Textbreite
   {|m{2.5cm}|   % muss für die richtigen Zentrierung "m" sein
   *{6}{X|}
   }%
             %   >\centering\arraybackslash}%
               %}
                % horizontale & vertikale Zentrierung der X-Spalten
   \hline
   Merkmal &
      \mcX{6}{Merkmalsausprägung} \\
   \hline
   
   Forschungs\-gebiete &
      bio\-lo\-gisch & \cellcolor{lightgray}sozio\--technisch & öko\-logisch &
      öko\-nomisch & tech\-nisch & so\-zial \\
   \hline
   
   Ab\-strak\-tions\-grad &
      \mcX{3}{\cellcolor{lightgray}gegen\-ständlich} &
      \mcX{3}{formal} \\
   \hline
   
   Ent\-stehungs\-art &
      \mcX{3}{natürlich} &
      \mcX{3}{\cellcolor{lightgray}künstlich} \\
   \hline
   
   Zweck des Systems &
      \mcXColor{2}{Örtliche und zeitliche Veränderung} &
      \mcX{2}{Form\-veränderung} &
      \mcX{2}{Struktur\-änderung} \\
   \hline
   
   Zeit\-ab\-hängig\-keit &
      \mcX{3}{statisch} &
      \mcXColor{3}{dynamisch} \\
   \hline
   \end{tabularx}%
\end{table}


\begin{table}[htbp]
  \small
  \caption{verschachtelte Tabelle}
    \begin{tabularx}
         {\textwidth}
   {|m{2.5cm}|   % muss für die richtigen Zentrierung "m" sein
   X|
   }%
   \hline
   Merkmal &
      Merkmalsausprägung \\
   \hline
   
   Forschungs\-gebiete &
      {\begin{tabularx}{\linewidth+2\tabcolsep}{*{5}{X|}X}
         bio\-lo\-gisch & \cellcolor{lightgray}sozio\--technisch & öko\-logisch &
         öko\-nomisch & tech\-nisch & so\-zial
         \end{tabularx}}\\
   \hline
   
   Ab\-strak\-tions\-grad &
      {\begin{tabularx}{\linewidth+2\tabcolsep}{*{2}{X|}X}
         \cellcolor{lightgray}gegen\-ständlich & formal
         \end{tabularx}}\\
   \hline
   
   Ent\-stehungs\-art &
      {\begin{tabularx}{\linewidth+2\tabcolsep}{*{1}{X|}X}
         natürlich & \cellcolor{lightgray}künstlich
         \end{tabularx}}\\
   \hline
   
   Zweck des Systems &
      {\begin{tabularx}{\linewidth+2\tabcolsep}{*{2}{X|}X}
      \cellcolor{lightgray}Örtliche und zeitliche Veränderung &
      Form\-veränderung & Struktur\-änderung
      \end{tabularx}}\\
   \hline
   
   Zeit\-ab\-hängig\-keit &
      {\begin{tabularx}{\linewidth+2\tabcolsep}{*{1}{X|}X}
         statisch & \cellcolor{lightgray}dynamisch
         \end{tabularx}}\\
   \hline
    \end{tabularx}%
  \label{tab:Morphologie-Konzepte}%
   \par \normalsize
\end{table}%


% alte X-Spaltendefinition auf p-Basis wiederherstellen
\renewcommand{\tabularxcolumn}[1]{p{#1}}

\end{document}

Bartman
Forum-Meister
Forum-Meister


Beiträge: 2084
Anmeldedatum: 16.07.09
Wohnort: Hessische Provinz
Version: ---
     Beitrag Verfasst am: 26.02.2020, 18:41     Titel:
  Antworten mit Zitat      
In meinem Vorschlag werden zwar mehr Tabellen eingefügt, als nötig sind, aber dafür spare ich Quelltext. Die Tabellenumgebung in der Tabelle sowie ihr Spaltentyp erfordern jedoch die Eingabe der Zeilenumbrüche.

Code
\documentclass[captions=tableheading]{scrreprt}% Tippfehler in Klassenname entfernt
\usepackage[T1]{fontenc}% https://texwelt.de/fragen/5537
\usepackage{lmodern}
\usepackage[ngerman]{babel}
\usepackage{tabularx}% lädt array
\usepackage[table]{xcolor}
\usepackage{ragged2e}% für \RaggedRight

\newcommand{\ctab}[1]{%
   \begin{tabular}{@{}c@{}}#1\end{tabular}%
}

\newcommand{\mc}[2]{
   \multicolumn{#1
}{c|}{\ctab{#2}}
}

\newcommand{\mcc}[2]{
   \multicolumn{#1
}{
      >{\columncolor{lightgray
}}c|
   }{\ctab{#2}}
}


\begin{document}
\begin{table}[htbp]
    \small
    \caption{Morphologie-Konzepte}
    \label{tab:Morphologie-Konzepte}
    \renewcommand{\tabularxcolumn}[1]{>{\hspace{0pt}\Centering}m{#1}}
    \begin{tabularx}{\textwidth}{
        |>{\hspace{0pt
}\RaggedRight}m{2.5cm}|
        *6{X|}
    }
    \hline
    Merkmal & \mc{6}{Merkmalausprägung}\\
    \hline
    Forschungs\-gebiete & biologisch & \cellcolor{lightgray} soziotechnisch &
    öko\-logisch & öko\-nomisch & technisch & sozial\\
    \hline
    Abstraktionsgrad &
    \mcc{3}{gegenständlich} &
    \mc{3}{formal} \\
    \hline
    Entstehungsart & \mc{3}{natürlich} &
    \mcc{3}{künstlich}\\
    \hline
    Zweck des Systems &
    \mcc{2}{Örtliche und\\zeitliche\\Veränderung} &
    \mc{2}{Formveränderung} &
    \mc{2}{Strukturveränderung}\\
    \hline
     Zeitabhängig\-keit & \mc{3}{statisch} &
     \mcc{3}{dynamisch}\\
    \hline
    \end{tabularx}
\end{table}
\end{document}
Private Nachricht senden Benutzer-Profile anzeigen

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.02.2020, 09:43     Titel:
  Antworten mit Zitat      
Vielen Dank. Hab's getestet und funktioniert. War meine Befürchtung also gerechtfertigt, dass das mit X-Spalten nicht zufriedenstellend funktioniert. Schade. Aber die vorgeschlagene Lösung ergibt, was ich möchte und ist praktikabel. Ich werde sie so nutzen.

Threadersteller
Gast

Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.03.2020, 03:42     Titel:
  Antworten mit Zitat      
Sorry für das Reaktivieren, aber so ganz funktioniert es bei mir noch nicht.
Den Vorschlag wollte ich für weitere Tabellen nutzen. Dort sind aber andere/ mehr Kombinationen der Ausprägungen möglich. Daher habe ich, als quasi kleinstes gemeinsames Vielfaches, eine hohe Spaltenanzahl (30) genutzt, um die verschiedenen Varianten halbwegs symmetrisch/gleichmäßig verteilt abbilden zu können. Leider funktioniert es dort nicht. Dies liegt, wie ich herausgefunden haben, vor allem daran, dass die 30 einzelnen Spalten nicht einzeln genutzt werden. Die tabu- und die longtable-Pakete bieten entsprechende Lösungen an, wenn nur multicolumns genutzt werden. Gibt es eine entsprechende Möglichkeit bei tabularx oder andere Varianten? Die Nutzung der genannten alternativen Pakete hat leider kein zufriedenstellendes Ergebnis geliefert.

Code

\documentclass[11pt,twoside]{scrbook}

\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\usepackage[table]{xcolor}
\usepackage{tabularx}

\renewcommand{\tabularxcolumn}[1]{>{\normalsize\centering\arraybackslash}m{#1}}

\newcommand{\ctab}[1]{%
   \begin{tabular}{@{}c@{}}#1\end{tabular}%
}
\newcommand{\mc}[2]{
   \multicolumn{#1
}{c|}{\ctab{#2}}
}
\newcommand{\mcc}[2]{
   \multicolumn{#1
}{
      >{\columncolor{lightgray
}}c|
   }{\ctab{#2}}
}

\begin{document}
   \begin{tabularx} {\textwidth}{|m{2.3cm}|X|*{30}{X|}}
    \hline
    Merkmal & \mc{30}{Merkmalsausprägung}\\
    \hline
    Abstraktionsgrad &
         \mcc{15}{gegenständlich} &
         \mc{15}{formal} \\
    \hline
    Entstehungsart &
         \mc{15}{natürlich} &
         \mcc{15}{künstlich}\\
    \hline
    Zweck des Systems &
         \mcc{10}{Örtliche und\\zeitliche\\Veränderung} &
         \mc{10}{Formveränderung} &
         \mc{10}{Strukturveränderung}\\
    \hline
    Zeitabhängig\-keit &
         \mc{15}{statisch} &
         \mcc{15}{dynamisch}\\
    \hline\end{tabularx}
\end{document}

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.03.2020, 10:38     Titel:
  Antworten mit Zitat      
Zunächst einmal hast du 32 Spalten deklariert, verwendest aber nur 31. Dazu kommt, dass du in Wirklichkeit keine einzige Zeile mehr hast, in der tatsächlich eine X-Spalte verwendet wird. Sämtliche X-Spalten sind durch \multicolumn-Anweisungen überdeckt, bei denen als Spaltendeklaration c verwendet wird. c ist aber nicht dehnbar. Du kannst die Problematik sehr gut visualisieren, wenn du einmal über die erste echte Tabellenzeile noch eine Dummy-Zeile mit 31 leeren Spalten setzt. Du wirst dann sehen, dass diese weiter nach rechts reichen als die restlichen Tabellenzeilen.

Eigentlich sieht das ganze für mich ohnehin eher nach einer Grafik als einer Tabelle aus. Deshalb würde ich empfehlen, das mit pgf/TikZ zu machen. Wenn schon eine Tabelle, dann eher eine tabular* als eine tabularx. Allerdings funktioniert dabei das Füllen mit Farbe dann wieder nicht, weil der per \extracolsep{\fill} eingefügte Abstand nicht eingefärbt würde. Damit lande ich dann wieder bei meinem Vorschlag: Mach Grafiken besser als Bild. Ansonsten müsstest du in der Tat die Inneren Tabellen auf eine bestimmte Breite setzen statt sie einfach nur als c-Spalten zu realisieren. Das wäre in diesem Fall sogar möglich, da sowohl die Tabellenbreite als auch die Breite der einzigen nicht X-Spalte bekannt ist. Also kann man die Breite einer einzelnen Spalte einfach ausrechnen (die beiden \tabcolsep je Spalte nicht vergessen) und entsprechend \multicolumn-Zusammenfassungen als Spalten von entsprechenden Vielfachen dieser festen Breite definieren.

Man könnte auch versuchen, bei den \multicolumn wieder X-Spalten zu verwenden, muss dann aber zusätzliche Maßnahmen ergreifen, damit die Ausrichtung in allen Zellen passt. Außerdem bekommt man dann rasch einmal Probleme mit den vertikalen Linien (auf die man ohnehin besser verzichtet, wenn es eine Tabelle und keine Grafik sein soll):
Code
\documentclass[11pt,twoside]{scrbook}

\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\usepackage[table]{xcolor}
\usepackage{tabularx}
\usepackage{ragged2e}

\renewcommand{\tabularxcolumn}[1]{>{\normalsize\centering\arraybackslash}m{#1}}

\newcommand{\ctab}[1]{%
   \begin{tabular}{@{}c@{}}#1\end{tabular}%
}
\newcommand{\mc}[2]{%
   \multicolumn{#1}{X|}{\ctab{#2}}%
}
\newcommand{\mcc}[2]{%
   \multicolumn{#1}{%
      >{\columncolor{lightgray}}X|
   }{\ctab{#2}}%
}

\begin{document}
   \begin{tabularx} {\textwidth}{|>{\RaggedRight}m{2.9cm}|*{30}{c|}}
     \hline
    Merkmal & \multicolumn{30}{c|}{Merkmalsausprägung}\\
    \hline
    Abstraktionsgrad &
         \mcc{15}{gegenständlich} &
         \multicolumn{15}{c|}{formal} \\
    \hline
    Entstehungsart &
         \mc{15}{natürlich} &
         \mcc{15}{künstlich}\\
    \hline
    Zweck des Systems &
         \mcc{10}{Örtliche und\\zeitliche\\Veränderung} &
         \mc{10}{Formveränderung} &
         \mc{10}{Strukturveränderung}\\
    \hline
    Zeitabhängig\-keit &
         \mc{15}{statisch} &
         \mcc{15}{dynamisch}\\
     \hline
   \end{tabularx}
\end{document}
 

Threadersteller
Gast

Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.03.2020, 00:41     Titel:
  Antworten mit Zitat      
Danke für die Rückmeldung. Aber die Verwendung von tabular mit 30 Spalten mit definierter Breite hat mir leider nicht geholfen und auch dein Minimalbeispiel erzeugt bei mir nicht die gewünschte Ausgabe. Da das mit Tabellen scheinbar nicht so funktioniert, wie gewünscht, habe ich mich nun doch in pgf/tikz eingearbeitet (erstaunlich verständlich) und den Kasten damit erstellt (einfärben geht sogar auch), auch wenn der Umgang mit Text etwas gewöhnungsbedürftig ist. Danke trotzdem für die Hilfe.

Neues Thema eröffnen Neue Antwort erstellen



Options and Permissions
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum herunterladen
.

goLaTeX ist Teil der goForen
goForen.de goMATLAB.de goLaTeX.de


  Datenschutzerklärung | Impressum | FAQ | goLaTeX RSS Button RSS-Feed

Copyright © 2008 - 2020 goLaTeX.de