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, 06:08

hking's gravatar image

hking
263
Akzeptiert: 100%

bearbeitet 19 Nov, 07:01

saputello's gravatar image

saputello
18.4k22352

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, 07: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, 06:58

saputello's gravatar image

saputello
18.4k22352

bearbeitet 19 Nov, 07: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, 10:30

Henri's gravatar image

Henri
10.0k31730

Deine Antwort auf die Frage (nicht auf andere Antworten)
Knebel-Vorschau

Folge dieser Frage

Per E-Mail:

Wenn Du Dich anmeldest, kannst Du Updates hier abonnieren

Per RSS:

Antworten

Antworten und Kommentare

Aktuelle Buch-Infos

LaTeX Cookbook

LaTeX Beginners Guide

Limitierter Rabatt ebook
50% Coupon code tDRet6Y

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üge einfach zwei Leerzeichen an die Stelle ein, an der die neue Zeile sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Zugeordnete Themen:

×31
×23
×4

Frage gestellt: 19 Nov, 06:08

Frage wurde angeschaut: 128 Mal

Zuletzt aktualisiert: 21 Nov, 10:30