Ich möchte gerne eine Tabelle formulieren (es muss eine longtable mit tabularx-Funktionen sein), die tatsächlich die orangenen Zellen in der Zeile Node.js mittig ausrichtet - also zur Hälte über die in der Zeile darunter befindliche Grüne und Blaue Zelle ausdehnt.

Doch genau das passiert nicht - obwohl die \multicolumn-Angaben dies erzwingen sollten. Vermutlich weil kein Inhalt in den Zellen enthalten ist?

Für den Tabellenaufbau habe ich insgesamt 7 Spalten festgelegt um in der einen Zeile über je 2 den \multicolumn-Befehl zu spannen - in der anderen über 3. Die letzte Zeile sollte deshalb den grünen Bereich genau bis zur Mitte des orangenen ausdehnen, was sie jedoch leider nicht tut. Hier ein minimal funktionierendes Beispiel:

Open in Online-Editor
\documentclass[11pt,twoside]{scrbook}

\usepackage[T1]{fontenc} 
\usepackage[utf8]{inputenc} 
\usepackage[ngerman]{babel} 
\usepackage{array}

\usepackage[table]{xcolor} 
\usepackage{tabularx} 
\usepackage{longtable} 
\usepackage{ltxtable}

\usepackage{filecontents}

\begin{document} 
   % package 'ltxtable' requires that the specification of the table is 
   % stored in a separate file. To allow doing that within the current document 
   % this can be achieved using the 'filecontents' package 
   \begin{filecontents}{table-openshift-matrix.auto} 
      \begin{longtable}{l*{6}{X}} 
         \textbf{Framework} & \multicolumn{6}{l}{\textbf{Versionen}}\\ 
         \hline 
         Node.js & \multicolumn{2}{l}{\cellcolor{green}0.10} & 
         \multicolumn{2}{l}{\cellcolor{orange}X} & 
         \multicolumn{2}{l}{\cellcolor{blue}X}\\ 
         \hline 
         Perl & \multicolumn{3}{l}{\cellcolor{green}5.16} & 
         \multicolumn{3}{l}{\cellcolor{blue}X}\\ 
         \hline 
      \end{longtable} 
   \end{filecontents} 
   \LTXtable{\linewidth}{table-openshift-matrix.auto} 
\end{document}

gefragt 19 Nov '16, 12:08

hking's gravatar image

hking
3636
Akzeptiert-Rate: 66%

bearbeitet 19 Nov '16, 13:01

saputello's gravatar image

saputello
11.1k154365

Willkommen auf TeXwelt! Sehr schönes VM! Da könnte sich mancher eine Scheibe von abschneiden, der schon länger dabei ist. Schade, dass ich für Frage keine Extrapunkte vergeben kann.

Inline-Code funktioniert übrigens mit Backticks: `\multicolumn` ergibt \multicolumn.

(19 Nov '16, 13:00) saputello

Das Problem ist, dass Du in Wirklichkeit keine einzige Zeile mit X-Spalten mehr hast. Deshalb funktioniert Dein Beispiel auch schon ohne longtable und ltxtable mit einer einfachen tabularx nicht. Deshalb wird die Breite der Tabelle auch nicht auf die angegebene Breite \linewidth gedehnt.

Glücklicherweise bietet das longtable-Paket eine Möglichkeit, eine Tabellenzeile quasi als Muster zu definieren, indem man ihr ein \kill anhängt. Diese Musterzeile wird bei der Ermittlung der Spaltenbreiten mit berücksichtigt, aber nie ausgegeben:

Open in Online-Editor
\documentclass[11pt,twoside]{scrbook}

\usepackage[T1]{fontenc} 
\usepackage[utf8]{inputenc} 
\usepackage[ngerman]{babel} 
\usepackage{array}

\usepackage[table]{xcolor} 
\usepackage{tabularx} 
\usepackage{longtable} 
\usepackage{ltxtable}

\usepackage{filecontents}

\begin{document} 
   \begin{filecontents}{table-openshift-matrix.auto} 
      \begin{longtable}{l*{6}{X}}
        Framework & 1 & 2 & 3 & 4 & 5 & 6 \\\kill
         \textbf{Framework} & \multicolumn{6}{l}{\centering\textbf{Versionen}}\\ 
         \hline 
         Node.js & \multicolumn{2}{l}{\cellcolor{green}0.10} & 
         \multicolumn{2}{l}{\cellcolor{orange}X} & 
         \multicolumn{2}{l}{\cellcolor{blue}X}\\ 
         \hline 
         Perl & \multicolumn{3}{l}{\cellcolor{green}5.16} & 
         \multicolumn{3}{l}{\cellcolor{blue}X}\\ 
         \hline 
      \end{longtable} 
   \end{filecontents} 
   \LTXtable{\linewidth}{table-openshift-matrix.auto} 
\end{document}

Damit kann dann tabularx die Breite der \multicolumn-Spalten entsprechend der für die angegebene Anzahl an X-Spalten ermittelte Breite einstellen.

alt text

Permanenter link

beantwortet 19 Nov '16, 12:58

saputello's gravatar image

saputello
11.1k154365
Akzeptiert-Rate: 51%

bearbeitet 19 Nov '16, 13:06

Mit ConTeXt MKIV

Open in Online-Editor
\starttext

\startsetups table:colors
  \setupTABLE[frame=off,background=color]
  \setupTABLE[row][each][topframe=on,bottomframe=on]
  \setupTABLE[row][first][topframe=off]
\stopsetups

\startTABLE[setups=table:colors]
  \NC \bold{Framework} \NC[nx=6] \bold{Versionen} \NC\NR
  \NC Node.js
    \NC[nx=2,backgroundcolor=green]  0.10
    \NC[nx=2,backgroundcolor=orange] X
    \NC[nx=2,backgroundcolor=blue]   X
  \NC\NR
  \NC Perl
    \NC[nx=3,backgroundcolor=green] 5.16
    \NC[nx=3,backgroundcolor=blue]  X
  \NC\NR
\stopTABLE

\stoptext

alt text

Permanenter link

beantwortet 21 Nov '16, 16:30

Henri's gravatar image

Henri
15.7k133943
Akzeptiert-Rate: 46%

Deine Antwort
Vorschau umschalten

Folgen dieser Frage

Per E-Mail:

Wenn sie sich anmelden, kommen Sie für alle Updates hier in Frage

Per RSS:

Antworten

Antworten und Kommentare

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs fügen Sie einfach zwei Leerzeichen an die Stelle an der die neue Linie sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Frage-Themen:

×39
×32
×7

gestellte Frage: 19 Nov '16, 12:08

Frage wurde gesehen: 7,622 Mal

zuletzt geändert: 21 Nov '16, 16:30