Tabellengröße stimmt nicht mit Seitengröße überein

Tabellen und Grafiken erstellen und anordnen


Domstadt19
Forum-Newbie
Forum-Newbie
Beiträge: 3
Registriert: So 28. Jul 2019, 08:56

Tabellengröße stimmt nicht mit Seitengröße überein

Beitrag von Domstadt19 »

Hallo,

ich möchte gerne ein DinA5-Dokument mit einer Tabelle erstellen, bei der die Spalten eine feste Breite haben. Bereite mit einer minimalen Test-Tabelle habe ich das Problem, dass sie deutlich über den Seitenrand geht, obwohl das von der Länge gar nicht passieren dürfte.

Am liebsten hätte ich:
- Breite der Seite: 21 cm
- 1 cm Rand links, 0,5cm Rand rechts => 19,5cm für die Tabelle

Ich habe bereits versucht:

Code: Alles auswählen

\documentclass[11pt]{article}
\usepackage{color}
\usepackage{tabulary} % Für Tabellen
\usepackage{geometry}
\geometry{
  left=1cm,
  right=0.5cm,
  top=1cm,
  bottom=1cm
}
\setlength{\paperwidth}{21cm}
\setlength{\paperheight}{14.8cm}

\begin{document}
\begin{tabulary}{19.5cm}{|p{3cm}|p{3cm}|p{3cm}|p{3cm}|p{3cm}|p{3cm}|p{1.5cm}}
\hline
A & B & C & D & E & F & G \\
\hline
\end{tabulary}
	
\end{document}
Irgendwie scheinen die Zentimeter der Seitengröße nicht mit den Zentimetern der Tabelle übereinzustimmen. Hat jemand eine Idee, wie man das lösen kann?

Gruß, Wolfgang

Gast

Beitrag von Gast »

Wie so oft (und sicher auch in diesem Forum mehrfach zu finden): Du hast nicht berücksichtigt, dass vor und nach jeder Spalte ein Abstand von \tabcolsep eingefügt wird (in dem sich beispielsweise die furchtbare vertikale Linie befindet, die du leider zwischen den Spalten einfügst und so das Lesen der Tabelle erschwerst → [d]booktabs[/d]-Anleitung).

Übrigens ist tabulary wenig sinnvoll, wenn man alle Spalten mit einer festen Breite versieht. Dann genügt eigentlich tabular. Der Sinn von tabulary ist ja gerade, dass man die Spaltenbreiten nicht alle selbst angibt, sondern mit J, C, L oder R arbeitet.

Und dann darf man ggf. auch nicht den Absatzeinzug vergessen.

Die Randeinstellungen sind übrigens unter aller Sau. Unbedingt sollte man die Papiergröße direkt bei \geometry angeben. Siehe Optionen papersize, paperwidth und paperheight in der [d]geometry[/d]-Anleitung. Nur dann kann \geometry und ggf. \newgeometry zuverlässig mit der Papiergröße arbeiten.

Ratgeber

Was nicht passt …

Beitrag von Ratgeber »

Anonymous hat geschrieben:[…] Unbedingt sollte man die Papiergröße direkt bei \geometry angeben. […]
Das ist nicht unbedingt nötig, wenn die richtigen Optionen der Dokumentklasse mitgegeben werden. Mit denen kommt »geometry« auch so ganz gut zurecht. Wenn das Ganze dann noch – hier mit »tabularx« – automatisiert und der Absatzeinzug lokal ausgeschaltet wird, passt die Tabelle auch auf die Seite.

Code: Alles auswählen

\documentclass[11pt,a5paper,landscape]{article}
\usepackage[T1]{fontenc}
\usepackage{babel}

\usepackage[
  left=1cm,
  right=0.5cm,
  top=1cm,
  bottom=1cm,
  includeheadfoot,
  nomarginpar,     % kein Platz für Randnotizen
  showframe        % Anzeige des Satzspiegels
]{geometry}

\usepackage{tabularx}

\usepackage{lmodern}
\usepackage{microtype}

\begin{document}
  \noindent % Absatzeinzug lokal auschalten
  \begin{tabularx}{\linewidth}{*{6}{|X}|p{1.5cm}|} \hline
    A & B & C & D & E & F & G \\ \hline
  \end{tabularx}
\end{document}

Domstadt19
Forum-Newbie
Forum-Newbie
Beiträge: 3
Registriert: So 28. Jul 2019, 08:56

Beitrag von Domstadt19 »

Danke schon mal. Den Vorschlag, die Geometry-Parameter als Argumente zu übergeben, setze ich gerne um. Danke auch für den Tipp mit \nomarginpar, dann ist der linke und rechte Rand auch frei.

Das eigentliche Problem ist damit aber nicht gelöst. Es fängt schon damit an, dass ich trotz der a5paper-Option als Ergebnis eine PDF-Datei im DIN A4-Format bekomme. Das macht es nicht einfacher, mit genauen Zentimeter-Angaben zu arbeiten.

Zunächst möchte ich eigentlich nicht mehr als eine stinknormale Tabelle (7 Spalten, 15 Zeilen) im DinA5-Format, bei der ich für jede Zeile und jede Spalte selbst entscheiden kann, wie viele Zentimeter sie groß ist. Wichtig ist aber, dass die Größe in Zentimeter auch mit der Größe der Seite und der Größe in der PDF-Datei übereinstimmt. Wenn ich also 3cm einstelle, möchte ich auch wirklich 3 cm haben. Das bedeutet, bei einer Breite von 21cm möchte ich etwa 19.5cm einteilen können.

Der Grund für tabulary ist ein weiterer. Später bekommt die Tabelle noch eine große Kopfzeile, in der ich mit multicolumn und cline arbeiten muss. Das geht meines Wissens nach am besten mit tabulary.

Gibt es eine Möglichkeit, diese genauen Vorstellungen in LaTex umzusetzen?

Gast

Beitrag von Gast »

\muticolumn und \cline hat nichts mit tabulary zu tun. Warum die Tabellenbreite nicht stimmt, habe ich oben erklärt (Stichwort [t[\tabcolsep[/t]).

esdd
Forum-Meister
Forum-Meister
Beiträge: 2480
Registriert: So 7. Feb 2010, 16:36

Beitrag von esdd »

Domstadt19 hat geschrieben: Das eigentliche Problem ist damit aber nicht gelöst. Es fängt schon damit an, dass ich trotz der a5paper-Option als Ergebnis eine PDF-Datei im DIN A4-Format bekomme.
Mit dem Beispiel von Ratgeber bekomme ich eindeutig A5.
Domstadt19 hat geschrieben: Zunächst möchte ich eigentlich nicht mehr als eine stinknormale Tabelle (7 Spalten, 15 Zeilen) im DinA5-Format, bei der ich für jede Zeile und jede Spalte selbst entscheiden kann, wie viele Zentimeter sie groß ist. Wichtig ist aber, dass die Größe in Zentimeter auch mit der Größe der Seite und der Größe in der PDF-Datei übereinstimmt. Wenn ich also 3cm einstelle, möchte ich auch wirklich 3 cm haben. Das bedeutet, bei einer Breite von 21cm möchte ich etwa 19.5cm einteilen können.
Du möchtest keinen Abstand zwischen Deinen Spalten? Dann entferne den Spaltenabstand mit @{} zwischen den Spalten. Die Linien müssen dabei natürlich auch weg.

Ein Beispiel wäre

Code: Alles auswählen


\documentclass[11pt,a5paper,landscape]{article} 
\usepackage{geometry} 
\geometry{ 
  margin=1cm, 
  right=0.5cm, 
  nomarginpar,
  includeheadfoot,
  showframe% anzeigen des Seitenlayouts
} 
\begin{document} 
\noindent% Entfernen des Absatzeinzuges
\begin{tabular}
{@{} *{6}{p{3cm}@{}} p{1.5cm}@{}}
\hline 
Das steht in der Spalte A.
  & Das steht in der Spalte B.
  & Das steht in der Spalte C.
  & Das steht in der Spalte D.
  & Das steht in der Spalte E.
  & Das steht in der Spalte F.
  & Es folgt G.
\tabularnewline 
\hline 
\end{tabular} 
\end{document}
Dabei ist *{6}{p{3cm}} nur eine Abkürzung für p{3cm}p{3cm}p{3cm}p{3cm}p{3cm}p{3cm}.

Ich bin mir aber ziemlich sicher, dass Dir das Ergebnis so ganz ohne Spaltenabstand nicht gefällt ;-)

Bild


Deshalb dürfte es sinnvoller sein, den Spaltenabstand einfach bei der Spaltendefinition zu berücksichtigen, in dem von der gewünschten Breite einfach 2\tabcolsep abgezogen werden.

Code: Alles auswählen

\documentclass[11pt,a5paper,landscape]{article} 
\usepackage{geometry} 
\geometry{ 
  margin=1cm, 
  right=0.5cm, 
  nomarginpar,
  includeheadfoot,
  showframe% anzeigen des Seitenlayouts
} 
\usepackage{calc}
\begin{document} 
\noindent% Entfernen des Absatzeinzuges
\begin{tabular}
{@{} *{6}{|p{3cm-2\tabcolsep}} |p{1.5cm-2\tabcolsep}}
\hline 
Das steht in der Spalte A.
  & Das steht in der Spalte B.
  & Das steht in der Spalte C.
  & Das steht in der Spalte D.
  & Das steht in der Spalte E.
  & Das steht in der Spalte F.
  & Es folgt G.
\tabularnewline 
\hline 
\end{tabular} 
\end{document} 
Dabei ist *{6}{p{3cm-2\tabcolsep}}} wieder nur eine Abkürzung für p{3cm-2\tabcolsep}p{3cm-2\tabcolsep}p{3cm-2\tabcolsep}p{3cm-2\tabcolsep}p{3cm-2\tabcolsep}p{3cm-2\tabcolsep}.

Verzichtet man auf das Paket calc muss man p{\dimexpr 3cm-2\tabcolsep \relax} statt p{3cm-2\tabcolsep} schreiben.

Ergebnis:

Bild

Domstadt19 hat geschrieben: Später bekommt die Tabelle noch eine große Kopfzeile, in der ich mit multicolumn und cline arbeiten muss. Das geht meines Wissens nach am besten mit tabulary.
Wo hast Du diese Info her? Weder für \multicolumn noch für \cline wird irgendein Paket benötigt.
Dateianhänge
gl_tabcolsep2.png
gl_tabcolsep2.png (13.82 KiB) 122 mal betrachtet
gl_tabcolsep1.png
gl_tabcolsep1.png (12.43 KiB) 130 mal betrachtet

Domstadt19
Forum-Newbie
Forum-Newbie
Beiträge: 3
Registriert: So 28. Jul 2019, 08:56

Beitrag von Domstadt19 »

Vielen Dank für die konstruktive Hilfe! Mit \tabcolsep sieht es genauso aus, wie ich es haben möchte.

Das DIN A5-Problem hat sich inzwischen auch gelöst, das war nur eine falsche Anzeige in meinem PDF-Reader. Mit einem anderen Reader wird es korrekt als DIN A5 angezeigt.

Danke nochmal!!!

Antworten