Verschachtelte Tabellen mit tabularx und tabular Thema ist als GELÖST markiert

Tabellen und Grafiken erstellen und anordnen


Freddy

Verschachtelte Tabellen mit tabularx und tabular

Beitrag von Freddy »

Hallo,

ich versuche seit einiger Zeit eine verschachtelte Tabelle mit Tabularx und tabular hinzu bekommen. \multirow kann ich nicht benutzen, da mein Inhalt zu lang ist und es auch mit \multirow{2}{*}{\parbox{.2\textwidth}{XXXXXXXXXX} nicht genügend Platz zur Verfügung stellt. Daher möchte ich der nächsten Spalte mir einfach eine verschachtelte Tabelle erzeugen. Hier mal ein Minimalbeispiel, welche jedoch die gleichen Fehler erzeugt, wie in meiner großen Tabelle:
\documentclass[12pt,a4paper,onecolumn,oneside,titlepage,headings=small,final]{scrbook}

\usepackage{tabularx}

\begin{document}

\begin{tabularx}{\textwidth}{XXX}
\hline
\textit{Transmission of accounting records as per sec. 37w (2) WpHG / interim statement to Company Register for electronic storage} & \multicolumn{2}{
\begin{tabular}{cc}
\multicolumn{2}{Without undue delay after publication}\\
%\cline{1-2}
Legal reference:\newline Sec. 8b (2) no. 9, (3) sent. 1 no. 2 HGB in conjunction with sec. 37w (1) sent. 4 WpHG & Legal reference:\newline Sec. 8b (2) no. 9, (3) sent. 1 no. 2 HGB in conjunction with sec. 37x (1) sent. 4 WpHG\\
\end{tabular}}\\
\hline
\end{tabularx}

\end{document}
Danke für Eure Hilfe!

Benutzeravatar
KOMA
TeX-Entwickler
TeX-Entwickler
Beiträge: 2958
Registriert: Fr 4. Jul 2008, 17:28
Kontaktdaten:

Beitrag von KOMA »

Mir ist leider nicht klar, wie die Tabelle am ende aussehen soll. Dein Code enthält jedenfalls diverse Ungereimtheiten. Zum einen definierst Du die innere Tabelle mit zwei Spalten, verwendest aber offenbar teilweise nur eine. Zum anderen, verstehe ich nicht, wieso Du überhaupt zwei Spalten zusammen fasst, um darin dann wieder eine zweispaltige Tabelle unterzubringen, statt direkt die beiden Spalten der äußere Tabelle zu nutzen. Gravierend ist auf jedenfall der Fehler, dass Du \multicolumn mit zwei statt drei Argumenten verwendest. Jedenfalls hat \multicolumn drei obligatorische Argumente: Das erste Argument ist die Anzahl Spalten, die zusammengefasst werden sollen, das zweite Argument ist die Spaltendeklaration, die auf den Inhalt des dritten Arguments angewendet werden soll.

Wenn eine Tabelle nur aus X-Spalten besteht, kommt man übrigens auch ohne tabularx aus, weil man dann die Breite der Spalten direkt aus \textwidth, \tabcolsep und der Anzahl der Spalten berechnen kann. Damit tun es dann auch p-Spalten. Das hat den Vorteil, dass man keine Probleme durch die Besonderheiten von tabularx bekommen kann.

Freddy

Beitrag von Freddy »

Hey!

Danke eine erste, schnelle Antwort. Natürlich hatte ich das zweite Argument hier vergessen. Die Fehlermeldungen sind jetzt behoben, aber meine "Tabellen-Idee" ist von der Formatierung nicht umgesetzt. Ich zeige euch mal die "Original-Tabelle", damit vielleicht deutlicher wird was mein Problem ist und wieso ich auf diese verschachtelte Konstruktion kam:
\documentclass[12pt,a4paper,onecolumn,oneside,titlepage,headings=small,final]{scrbook}

\usepackage{tabularx}

\begin{document}

\begin{tabularx}{\textwidth}{|X|X|X|}
\hline
\textbf{Obligation} & \textbf{Half-yearly financial report} & \textbf{Interim management statement}\\
\hline
\textit{Parties effected} & Domestic issuers placing financial instruments according to sec. 2 (1) sent. 1 WpHG & Domestic issuers placing shares according to sec. (1) sent. 1 no. 1 WpHG\\
\hline
\textit{Exception} & Domestic issuers placing financial instruments according to sec. 2 (1) sent. 1 no. 2 WpHG or at debt securities which constitute an at least contingent right to obtain securities of sec. 2 (1) sent. 1 nos. 1, 2 WpHG, sec. 37z WpHG & Quarterly financial report according to sec. 37x (3) sent. 1 WpHG, sec. 37z WpHG\\
\hline
\multirow{2}{*}{\parbox{.2\textwidth}{\textit{Publication of announcement}}} & \multicolumn{2}{c|}{Before the report itself is made available to the public}\\
\cline{2-3}
& Legal reference:\newline Sec. 37w (1) sent. 2 WpHG & Legal reference:\newline Sec. 37x (1) sent. 2 WpHG\\
\hline
\multirow{2}{*}{\parbox{.2\textwidth}{\textit{BaFin to be notified of publication of announcement}}} & \multicolumn{2}{c|}{Simultaneously with publication}\\
\cline{2-3}
& Legal reference:\newline Sec. 37w (1) sent. 3 1st half WpHG & Legal reference:\newline Sec. 37x (1) sent. 3 1st half WpHG\\
\hline
\multirow{2}{*}{\parbox{.2\textwidth}{\textit{Transmission of announcement to Company Register for electronic storage}}} & \multicolumn{2}{c|}{Without undue delay after publication}\\
\cline{2-3}
& Legal reference:\newline Sec. 8b (2) no. 9, (3) sent. 1 no. 2 HGB in conjunction with sec. 37w (1) sent. 3 2nd half WpHG & Legal reference:\newline Sec. 8b (2) no. 9, (3) sent. 1 no. 2 HGB in conjunction with sec. 37x (1) sent. 3 2nd half WpHG \\
\hline
\multirow{2}{*}{\parbox{.2\textwidth}{\textit{Making interim report publicly available}}} & Without delay, albeit no later than 2 months after the end of the reporting period\newline Legal reference:\newline Sec. 37w (1) sent. 1 WpHG & Period between ten weeks after the beginning and 6 weeks before the end of the first and of the second half of the financial year\newline Legal reference:\newline Sec. 37x (1) sent. 1 WpHG\\
\hline
\multirow{2}{*}{\parbox{.2\textwidth}{\textit{Transmission of accounting records as per sec. 37w (2) WpHG / interim statement to Company Register for electronic storage}}} & \multicolumn{2}{c|}{Without undue delay after publication}\\
\cline{2-3}
& Legal reference:\newline Sec. 8b (2) no. 9, (3) sent. 1 no. 2 HGB in conjunction with sec. 37w (1) sent. 4 WpHG & Legal reference:\newline Sec. 8b (2) no. 9, (3) sent. 1 no. 2 HGB in conjunction with sec. 37x (1) sent. 4 WpHG \\
\hline
\textit{Minimum requirements on the interim report's content} & Shortened financial statement, shortened management report, responsibility statement (``Bilanzeid'') & Report about material developments of business as well as commercial operations, explanation of its impact of the issuer's financial situation, financial situation and results in the release period\newline Or\newline Quarterly financial report: shortened financial statement, shortened management report\\
\hline
Responsibility statement in accordance sec. 264 (2) sent. 3, sec. 289 (1) sent. 5 HGB & Obligation to disclose\newline sec. 37w (2) no. 3 WpHG & No disclosure requirements\newline No legal references\\
\hline
\multicolumn{3}{|c|}{If a parent company is obliged to prepare consolidated prepare consolidated financial statements and a group management report, secs. 37v to 37x WpHG apply subject to provisions of sex. 37y WpHG.}\\
\hline
\end{tabularx}
\end{document}


Sorry, bezüglich des langen Codes. Manchmal sieht man einfach seine Fehler nicht mehr. Lässt man das Problem der letzten \multicolumn{3}{|c|}{....} mal weg. Dann kann man erahnen wie die Tabelle aussehen sollte. Es gibt immer Mal Spalten mir "mulitrow" Inhalt, die mir aber nicht ordenlich umgebrochen werden. Daher versuchte ich an Stelle von multirow, die Problematik mit den angrenzenden Spalten und einer verschachtelten Tabelle zu lösen.

Benutzeravatar
KOMA
TeX-Entwickler
TeX-Entwickler
Beiträge: 2958
Registriert: Fr 4. Jul 2008, 17:28
Kontaktdaten:

Beitrag von KOMA »

Bitte vollständige Minimalbeispiele (← dies ist ein geprüfter Link mit relevanten Informationen!) vor dem Verschicken immer selbst in einem neuen Verzeichnis testen! Deines liefert nämlich eine vermeidbare Fehlermeldung!

Ich glaube folgendes reicht als Beispiel für das was ich bereits angedeutet hatte:
\documentclass[12pt,oneside,titlepage,headings=small,pagesize]{scrbook}
\usepackage{multirow}
\usepackage{tabularx}

\newlength{\onetabcolwidth}

\begin{document}

\setlength{\onetabcolwidth}{\dimexpr(\textwidth-6\tabcolsep-4\arrayrulewidth)/3\relax}
\noindent\begin{tabular}{|*3{p{\onetabcolwidth}|}}
\hline
\textbf{Obligation} & \textbf{Half-yearly financial report} & \textbf{Interim management statement}\\
\hline
\textit{Parties effected} & Domestic issuers placing financial instruments according to sec. 2 (1) sent. 1 WpHG & Domestic issuers placing shares according to sec. (1) sent. 1 no. 1 WpHG\\
\hline
\textit{Exception} & Domestic issuers placing financial instruments according to sec. 2 (1) sent. 1 no. 2 WpHG or at debt securities which constitute an at least contingent right to obtain securities of sec. 2 (1) sent. 1 nos. 1, 2 WpHG, sec. 37z WpHG & Quarterly financial report according to sec. 37x (3) sent. 1 WpHG, sec. 37z WpHG\\
\hline
\multirow{2}{*}{\parbox{\onetabcolwidth}{\textit{Publication of announcement}}} &
\multicolumn{2}{p{2\onetabcolwidth}|}{\centering Before the report itself is made available to the public}\\
\cline{2-3}
& Legal reference:\newline Sec. 37w (1) sent. 2 WpHG & Legal reference:\newline Sec. 37x (1) sent. 2 WpHG\\
\hline
\end{tabular}
\end{document}
Mit
\multicolumn{2}{c|}{Before the report itself is made available to the public}\\
funktioniert das übrigens auch. Ebenso kann man vermutlich
\multirow{2}{*}{\parbox{\linewidth}{\textit{Publication of announcement}}} &
schreiben. Damit kann man sich die Hilfslänge eigentlich auch sparen und die entsprechende Berechnung direkt bei Angabe der Spaltendefinition durchführen.

Im übrigen gefällt mir diese Klötzchengrafik überhaupt nicht. Mit den vielen Linien ist das unübersichtlich und schwer zu lesen. Siehe auch die Anleitung zum Paket booktabs und das Dokument tabsatz (über den zweiten Link in meiner Signatur).

Freddy

Beitrag von Freddy »

Hey!

Danke. Ich hatte diesen dummer Fehler mit dem \usepackage in meiner Eile mit vergessen in das Minimalbeispiel zu integrieren, da ich diese in meiner großen Datei ausgelagert habe.

Die Vorgehensweise funktioniert grundsätzlich einwandfrei. Sobald ich jedoch bei meiner Tabelle statt tabular tabularx verwende (da die originäre Tabelle über mehrere Seiten geht - siehe obigen Code) zerhaut es mir (logischerweise?!) die ganze Datei wieder. Eine weitere Idee, wie man deine Vorgehensweise auf mehrseitige Tabellen erweitern kann.

Übrigens: \multirow{2}{*}{\parbox{\linewidth}{\textit{Publication of announcement}}} hatte ich auch mal ausprobiert, jedoch Klappt dort der Zeilenumbruch ebenso nicht - daher versuchte ich es mit: \multirow{2}{*}{\parbox{.2\textwidth}{........}. Das Ergebnis war jedoch unbefriedigend, da der Text zum Teil in die nächste Tabellenzeile rutschte (siehe 2. geposteten Code von mir).

Benutzeravatar
KOMA
TeX-Entwickler
TeX-Entwickler
Beiträge: 2958
Registriert: Fr 4. Jul 2008, 17:28
Kontaktdaten:

Beitrag von KOMA »

tabularx kann keine mehrseitigen Tabellen ist also für die Lösung absolut unerheblich. Tabellen über mehrere Seiten macht man mit longtable oder supertabular. Siehe dazu auch die wichtigen Hinweise und Vorabhilfen zu diesem Unterforum. Wie ich gerade getestet habe, funktioniert meine Lösung offenbar auch mit longtable.

Tipp: Lies die Anleitungen zu den verwendeten Paketen, damit Du weist, welches wofür benötigt wird und wirf vor allem alles raus, was Du nicht benötigst.

In meinem Beispiel funktioniert der Zeilenumbruch übrigens - auch mit \linewidth.

Freddy

Beitrag von Freddy »

Tausend Dank Koma.

Ich nutze nun supertabular, da es mir beim Seitenumbruch nicht einfach eine Zeile trennt, sondern eine neue Tabellenzeilen auf der nächsten Seite anzeigt.

Ein letztes Problem habe ich jedoch noch, bevor ich mir deiner Kritik bzgl. des "Designs" kümmere.

Als letzte Zeile möchte ich ein \multicolumn über drei Spalten erzeugen.

Dazu versuchte ich den Befehl:

\multicolumn{3}{p{3\onetabcolwidth}|}{If a parent company is obliged to prepare consolidated prepare consolidated financial statements and a group management report, secs. 37v to 37x WpHG apply subject to provisions of sex. 37y WpHG.}

Dabei spuckt mir LaTeX dann u.a. folgende Fehlermeldung aus: "!Misplaced \noalign. \hline --> \noalign {\ifnum 0='}\fi \hrule \@height \ arrayrulewidth \futurelet..."

Wahrscheinlich kann ich deinen oben verwendeten Befehl nicht so einfach adaptieren? Könntest Du / jemand mir meinen Fehler erklären. Danke!

Antworten