Seite 1 von 1

tabularx mit multicolumn läuft, aber erzeugt Fehler

Verfasst: Mi 2. Jul 2014, 14:23
von LatexNeuling
Hallo,

ich habe folgendes Problem. Ich möchte eine Tabelle erzeugen, die unter der \bottomrule noch einen Text enthält der sich über alle Spalten erstreckt. Nach allerhand Zeit vor Google habe ich es nun soweit hinbekommen, dass es funktioniert wie ich es mir vorstelle. Er gibt mir beim Kompilieren jedoch 8 Fehlermeldungen aus :"Missing number, treated as zero" und "Illegal unit measure (pt inserted)".
Ich habe nun herausgefunden, dass genau mein Problem auftritt wenn man \\ verwendet und direkt eckige Klammern folgen, die aber nichts mit dem Spaltenabstand zu tun haben. Jedoch verwende ich keine eckigen Klammern und bin nun etwas ratlos.

Die Konstruktion: \multicolumn{3}{p{\columnwidth\tabcolsep}} habe ich mir ergoogelt. Bei meinen Versuchen wurde entweder die letzte Zeile in eine Zelle gequetscht oder kein Zeilenumbruch erzeugt.
\documentclass[12pt, a4paper, liststotoc]{scrreprt}[2007/10/19]
\usepackage[ngerman]{babel}		% neue deutsche Rechtschreibung
\usepackage{ucs}
\usepackage[latin9]{inputenc}	% Umwandlung für Sonderzeichen
\usepackage[T1]{fontenc}			% Silbentrennung bei Sonderzeichen
\usepackage{textcomp}					% Zusätzliche Symbolzeichen
\usepackage{cite}							% Zitieren
\usepackage{graphicx}					% Einbinden von Grafiken
\usepackage{tabularx}		% Tabellen mit definierter Breite
\usepackage{array,ragged2e}
\usepackage{booktabs}					% Linien für Tabellen
\usepackage[justification=RaggedRight, singlelinecheck=false]{caption} 			% captions werden linksbündig gesetzt
\usepackage{bibgerm}
\usepackage{multirow}
\usepackage{blindtext}
\usepackage[ 
nonumberlist, %keine Seitenzahlen anzeigen 
acronym,      %ein Abkürzungsverzeichnis erstellen 
toc,
section=chapter]           %Einträge im Inhaltsverzeichnis 
{glossaries} 
\usepackage[printonlyused]{acronym}
\usepackage[colorlinks=false]{hyperref}		% Muss als letztes eingebunden werden

\title{Minimalbeispiel zu tabularx und multicolumn.}
\author{Latex-Neuling}
\date{\today}
%
\begin{document}

\begin{table}[htp]
\begin{tabularx}{\textwidth}{XXl}
\toprule
A & B & C \\ \midrule
AA & BB & CC \\
\bottomrule
\multicolumn{3}{p{\columnwidth\tabcolsep}}{Text der über alle Spalten geht und dementsprechend umgebrochen werden soll, wenn er das Seitenende erreicht.} \\
\end{tabularx}
\caption{Minimalbeispiel Tabelle}
\label{Tabelle-Minimal}
\end{table}

\end{document}
Ich hätte sicher ein paar packages rausnehmen können, aber ich dachte mir falls es evtl. mit diesen zu tun hat ist es besser ich lasse alles drin.
Vielen Dank schon mal!

Verfasst: Mi 2. Jul 2014, 14:41
von Johannes_B
Du hast viiiiel zu komplisiert gedacht.
\documentclass{scrreprt}
\usepackage[ngerman]{babel}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{tabularx}
\usepackage{booktabs}
\usepackage[justification=RaggedRight, singlelinecheck=false]{caption}
\usepackage{blindtext}

\begin{document}
\blindtext
\begin{table}
\begin{tabularx}{\textwidth}{XXl}
\toprule
A & B & C \\ \midrule
AA & BB & CC \\
\bottomrule
\end{tabularx}
Text der über alle Spalten geht und dementsprechend umgebrochen werden soll, wenn er das Seitenende erreicht. 
\caption{Minimalbeispiel Tabelle}
\label{Tabelle-Minimal}
\end{table}

\end{document}
 

Verfasst: Mi 2. Jul 2014, 14:50
von LatexNeuling
Ach guck an...
ja das ist natürlich echt easy :shock:
:D Danke dir, so mach ichs

Verfasst: Mi 2. Jul 2014, 14:51
von esdd
Nimm
\multicolumn{3}{p{\dimexpr\linewidth-2\tabcolsep\relax}}{...}
Dabei wird von der zur Verfügung stehenden Breite der links und rechts eingefügte Abstand \tabcolsep abgezogen. \dimexpr leitet die Längenberechnung ein und \relax beendet sie.

Und dann würde ich \bottomrule unbedingt durch
\midrule[\heavyrulewidth]
ersetzen, da sonst der Text unter dieser Linie viel zu dicht an dieser dran ist. Das gilt auch, falls du die einfachere Lösung von Johannes wählst.

Gruß
Elke

PS: Ersetze bei den Klassenoptionen liststotoc durch listof=totoc.

Verfasst: Mi 2. Jul 2014, 14:53
von u_fischer
{p{\columnwidth\tabcolsep}}
Das ist Quatsch. Das ergibt keine sinnvoll Länge. Wahrscheinlich ist da ein Minuszeichen verloren gegangen. Und das Paket calc brauchen solche Rechnungen außerdem:
\documentclass{article}
\usepackage{calc}

\begin{document}
\begin{tabular}{lll}
\multicolumn{3}{p{\columnwidth-\tabcolsep}}{blub}
\end{tabular}
\end{document}

Verfasst: Mi 2. Jul 2014, 15:48
von LatexNeuling
Vielen Dank für die rege Unterstützung!

Habe nun doch die Variante von esdd übernommen. Damit ist der Text unter der Linie genauso eingerückt wie die Zeilen drüber. Sieht super aus! \bottomrule ist genau wie listoftoc rausgeflogen und ersetzt!