Tabellenformatierung longtable
Tabellenformatierung longtable
Hallo,
versuche mich gerade an meinen ersten Tabellen, weil ich eine mehrseitige Tabelle brauche und sie nicht als pdf einbinden kann. Verwende longtable und hätte gerne die erste Reihe farbi. Das schaut auch nicht schlecht aus, aber irgendwie kriegt Latex den Rahmen überhaupt nicht hin. Hab es schon mehrmals durchlaufen lassen, aber dei Rahmen sind entweder doppelt oder gar nicht da an manchen Stellen. Was kann man da machen?
Hier mein Minimalbeispiel:
------------------------------------
\documentclass[pdftex, a4paper, parskip, 12pt, final, oneside, listof=totoc, listof=flat, headings=small]{scrreprt}
\usepackage[ngerman]{babel}
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{mathptmx}
\renewcommand*\familydefault{\rmdefault}
\addtokomafont{disposition}{\rmfamily}
\usepackage{color}
\usepackage{longtable}
\usepackage{array}
\usepackage[table]{xcolor}
\begin{document}
\begin{longtable}{|l|r|c|p{2cm}| |p{2cm}|}
\rowcolor[gray]{.9}Linksbündige Spalte.&Rechtsbündige Spalte&Zentrierte Spalte&Parbox\\
\hline Kurzer Text.&Kurzer Text.&Kurzer Text.&Kurzer Text.\\
\hline
Text.&Text.&Text.&Text.\\
\hline
Text.&Text.&Text.&Text.\\
\hline
Text.&Text.&Text.&Text.\\
\caption{Caption}
\end{longtable}
\end{document}
-----------------------------
Vielen Dank schon mal im Voraus.
versuche mich gerade an meinen ersten Tabellen, weil ich eine mehrseitige Tabelle brauche und sie nicht als pdf einbinden kann. Verwende longtable und hätte gerne die erste Reihe farbi. Das schaut auch nicht schlecht aus, aber irgendwie kriegt Latex den Rahmen überhaupt nicht hin. Hab es schon mehrmals durchlaufen lassen, aber dei Rahmen sind entweder doppelt oder gar nicht da an manchen Stellen. Was kann man da machen?
Hier mein Minimalbeispiel:
------------------------------------
\documentclass[pdftex, a4paper, parskip, 12pt, final, oneside, listof=totoc, listof=flat, headings=small]{scrreprt}
\usepackage[ngerman]{babel}
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{mathptmx}
\renewcommand*\familydefault{\rmdefault}
\addtokomafont{disposition}{\rmfamily}
\usepackage{color}
\usepackage{longtable}
\usepackage{array}
\usepackage[table]{xcolor}
\begin{document}
\begin{longtable}{|l|r|c|p{2cm}| |p{2cm}|}
\rowcolor[gray]{.9}Linksbündige Spalte.&Rechtsbündige Spalte&Zentrierte Spalte&Parbox\\
\hline Kurzer Text.&Kurzer Text.&Kurzer Text.&Kurzer Text.\\
\hline
Text.&Text.&Text.&Text.\\
\hline
Text.&Text.&Text.&Text.\\
\hline
Text.&Text.&Text.&Text.\\
\caption{Caption}
\end{longtable}
\end{document}
-----------------------------
Vielen Dank schon mal im Voraus.
Du hast eine Spalte mehr definiert, als du dann tatsächlich verwendest.
Übrigens: Bitte den Code-Button verwenden!
Grüße
Tobi
\documentclass[pdftex, a4paper, parskip, 12pt, final, oneside, listof=totoc, listof=flat, headings=small]{scrreprt} \usepackage[ngerman]{babel} \usepackage[latin1]{inputenc} \usepackage[T1]{fontenc} \usepackage{mathptmx} \renewcommand*\familydefault{\rmdefault} \addtokomafont{disposition}{\rmfamily} \usepackage{color} \usepackage{longtable} \usepackage{array} \usepackage[table]{xcolor} \begin{document} \begin{longtable}{|l|r|c|p{2cm}| |p{2cm}|} \rowcolor[gray]{.9}Linksbündige Spalte.&Rechtsbündige Spalte&Zentrierte Spalte&Parbox\\ \hline Kurzer Text.&Kurzer Text.&Kurzer Text.&Kurzer Text.\\ \hline Text.&Text.&Text.&Text.\\ \hline Text.&Text.&Text.&Text.\\ \hline Text.&Text.&Text.&Text.\\ \caption{Caption} \end{longtable} \end{document}
Grüße
Tobi
Sorry, war (ist) schon spät. Hier mit 4 Spalten und Code-Button:
Das ändert aber an dem Problem trotzdem nichts...Also was kann ich da tun??
\documentclass[pdftex, a4paper, parskip, 12pt, final, oneside, listof=totoc, listof=flat, headings=small]{scrreprt} \usepackage[ngerman]{babel} \usepackage[latin1]{inputenc} \usepackage[T1]{fontenc} \usepackage{mathptmx} \renewcommand*\familydefault{\rmdefault} \addtokomafont{disposition}{\rmfamily} \usepackage{color} \usepackage{longtable} \usepackage{array} \usepackage[table]{xcolor} \begin{document} \begin{longtable}{|l|r|c|p{2cm}|} \rowcolor[gray]{.9}Linksbündige Spalte.&Rechtsbündige Spalte&Zentrierte Spalte&Parbox\\ \hline Kurzer Text.&Kurzer Text.&Kurzer Text.&Kurzer Text.\\ \hline Text.&Text.&Text.&Text.\\ \hline Text.&Text.&Text.&Text.\\ \hline Text.&Text.&Text.&Text.\\ \caption{Caption} \end{longtable} \end{document}
Also bei mir fehlen nur die Linien über der ersten und unter der letzten Zeile.
Das liegt daran, dass du an diesen Stellen das \hrule vergessen hast.
Alle anderen sind da und auch keine ist doppelt. Es kann nur sein, dass dein (PDF-)Programm einige Linien dicker macht als andere, weil du zu weit ausgezoomt hast...
Edit: Übrigens sind so viele vertikale Linien gar nicht schön, weil sie den Lesefluss in der Tabelle (in einer Zeile von Links nach Rechts) stören.
Und es sieht einfach doof aus.
Ich mache immer nur eine Linie unter die Überschriften und umrahme die ganze Tabelle. Und um dem Auge trozdem etwas Führung zu bieten, erhöhe ich den Abstand der Zellen mittels \arraystrech, s.u.
Für schmale p-Spalten kann es übrigens ganz schön sein, diese in sich rechtsbündig mit Silbentrennung zu setzten. Ich hab das hier nochmal eingebaut:
Anmerkungen:

Das liegt daran, dass du an diesen Stellen das \hrule vergessen hast.
\documentclass[pdftex, a4paper, parskip, 12pt, final, oneside, listof=totoc, listof=flat, headings=small]{scrreprt} \usepackage[ngerman]{babel} \usepackage[latin1]{inputenc} \usepackage[T1]{fontenc} \usepackage{mathptmx} \renewcommand*\familydefault{\rmdefault} \addtokomafont{disposition}{\rmfamily} \usepackage{color} \usepackage{longtable} \usepackage{array} \usepackage[table]{xcolor} \begin{document} \begin{longtable}{|l|r|c|p{2cm}|} \hline% <<=== diese hast du vergessen \rowcolor[gray]{.9}Linksbündige Spalte.&Rechtsbündige Spalte&Zentrierte Spalte&Parbox\\ \hline Kurzer Text.&Kurzer Text.&Kurzer Text.&Kurzer Text.\\ \hline Text.&Text.&Text.&Text.\\ \hline Text.&Text.&Text.&Text.\\ \hline Text.&Text.&Text.&Text.\\ \hline% <<== und diese ;-) \caption{Caption} \end{longtable} \end{document}
Edit: Übrigens sind so viele vertikale Linien gar nicht schön, weil sie den Lesefluss in der Tabelle (in einer Zeile von Links nach Rechts) stören.
Und es sieht einfach doof aus.
Ich mache immer nur eine Linie unter die Überschriften und umrahme die ganze Tabelle. Und um dem Auge trozdem etwas Führung zu bieten, erhöhe ich den Abstand der Zellen mittels \arraystrech, s.u.
Für schmale p-Spalten kann es übrigens ganz schön sein, diese in sich rechtsbündig mit Silbentrennung zu setzten. Ich hab das hier nochmal eingebaut:
\documentclass[pdftex, a4paper, parskip, 12pt, final, oneside, listof=totoc, listof=flat, headings=small]{scrreprt} \usepackage[ngerman]{babel} \usepackage[latin1]{inputenc} \usepackage[T1]{fontenc} \usepackage{mathptmx} \renewcommand*\familydefault{\rmdefault} \addtokomafont{disposition}{\rmfamily} \usepackage{color} \usepackage{ragged2e}% für silbengetrennten Flattersatz \usepackage{longtable} \usepackage{array} \usepackage[table]{xcolor} \renewcommand{\arraystretch}{2.5}% Zeilenabstand in Tabelle ändern. %Zu Demo-Zwecken übertrieben hoher Wert! \begin{document} \begin{longtable}{|lrc>{\RaggedRight\hspace{0pt}}p{1cm}|} \hline \rowcolor[gray]{.9}Linksbündige Spalte.&Rechtsbündige Spalte&Zentrierte Spalte&Parbox\\ \hline Kurzer Text.&Kurzer Text.&Kurzer Text.&Längerer Text.\\ Text.&Text.&Text.&Text.\\ Text.&Text.&Text.&Text.\\ Text.&Text.&Text.&Text.\\ \hline \caption{Caption} \end{longtable} \end{document}
- Zu Demo-Zwecken habe ich auch mal die p-Spalte etwas schmaler gemacht.
- Das > bedeutet, das das in den Klammern >{} stehende vor jede Zelle dieser Spalte geschrieben wird. gehört zum array-Paket
- \RaggedRight schaltet auf Rechtsbündig um (aus ragged2e).
- Der \hspace ist nötig, damit LaTeX auch das erste Wort einer Spalte trenn, dass macht er nämlich normaler weise nicht.

Vielen Dank, iTob. Mit deinem Code sieht es sehr gut aus. Und du hast Recht: die vertikalen Linien bräuchte man gar nicht. Ich bin da wohl ein bißchen Excel-geschädigt
Sorry, ich wusste nicht, dass Crossposts verboten sind.
2 Dinge stören mich noch, dann dürfte es perfekt sein:
1. hätte gerne, dass er als Schrift in der Tabelle die Helvetica benutzt. Wie binde ich die Packages "helvet" oder "tgheros" so ein, dass er die Schrift wirklich nur in der Tabelle benutzt und sonst alles mit Times schreibt?
2. Tabellen über eine Seite hinweg sind kein Problem, aber über eine Zeile hinweg offenbar schon. Wie erreiche ich, dass Latex die Reihen so skaliert, dass der gesamte Inhalt auf der Seite angezeigt wird? Im Moment bricht er einfach ab, sobald es über eine Zeile hinaus geht...hier nochmal der aktuelle Code:
Nochmals, wie immer, vielen Dank für jeden einzelnen Tipp.

Sorry, ich wusste nicht, dass Crossposts verboten sind.
2 Dinge stören mich noch, dann dürfte es perfekt sein:
1. hätte gerne, dass er als Schrift in der Tabelle die Helvetica benutzt. Wie binde ich die Packages "helvet" oder "tgheros" so ein, dass er die Schrift wirklich nur in der Tabelle benutzt und sonst alles mit Times schreibt?
2. Tabellen über eine Seite hinweg sind kein Problem, aber über eine Zeile hinweg offenbar schon. Wie erreiche ich, dass Latex die Reihen so skaliert, dass der gesamte Inhalt auf der Seite angezeigt wird? Im Moment bricht er einfach ab, sobald es über eine Zeile hinaus geht...hier nochmal der aktuelle Code:
\documentclass[pdftex, a4paper, parskip, 12pt, final, oneside, listof=totoc, listof=flat, headings=small]{scrreprt} \usepackage[ngerman]{babel} \usepackage[latin1]{inputenc} \usepackage[T1]{fontenc} \usepackage{mathptmx} \renewcommand*\familydefault{\rmdefault} \addtokomafont{disposition}{\rmfamily} %\usepackage{color} \usepackage{ragged2e}% für silbengetrennten Flattersatz \usepackage{longtable} \usepackage{array} \usepackage[table]{xcolor} \renewcommand{\arraystretch}{1.2}% Zeilenabstand in Tabelle ändern. %Zu Demo-Zwecken übertrieben hoher Wert! \begin{document} \begin{longtable}{|ccccccc|} \hline \rowcolor[gray]{.92}Name&Anschrift&Land&E-Mail&Telefon&Fax&Internet\\ \hline 7iD Technologies GmbH & Keplerstr. 105, 8020 Graz & A & rfid@7id.com & +43 316 716 720 & +43 316 716 720 399 & www.7id.at\\ %--> irgendwo zwischen Telefon und Fax ist die Zeile zu Ende und Latex verkleinert den Inhalt nicht!! \hline \caption{Caption} \end{longtable} \end{document}
Guten Morgen,
Das ist eine manuelle Lösung, da musst du dann für jede Tabelle die Schrift ändern. Ob das auch Automatisch geht kann ich nicht sagen – man kann sich natürlich eine eigene longtable-Umgebung bauen, die die Schriftart ändert.
WIe man die Tabellenbreite an die Seitenbreite anpasst – das meinst du doch oder? – steht z.B. im LateX-Begleiter, aber ich hab jetzt keine Lust, das zu lesen, zumal man auch ein Bisschen den Eindruck hat, das du selber noch fast keine (Einsteiger-)Literatur gelesen hast... 
Schönes Wochenende
Edit: Habe das zweite Bsp. noch verändert. Im Begleiter auf Seite 257 steht was zur Berechnung der Spaltenbreite und u.a. dem Paket tabularx bzw. tabulary. Ich weiß aber nicht, ob das mit longtable zusammen geht. Außerdem wird die Schriftgröße nicht automatisch verkleinert werden.
\documentclass[pdftex, a4paper, parskip, 12pt, final, oneside, listof=totoc, listof=flat, headings=small]{scrreprt} \usepackage[ngerman]{babel} \usepackage[latin1]{inputenc} \usepackage[T1]{fontenc} \usepackage{mathptmx} \renewcommand*\familydefault{\rmdefault} \addtokomafont{disposition}{\rmfamily} \usepackage{helvet} %\usepackage{color} \usepackage{ragged2e}% für silbengetrennten Flattersatz \usepackage{longtable} \usepackage{array} \usepackage[table]{xcolor} \usepackage{hyperref} \urlstyle{sf} \renewcommand{\arraystretch}{1.2}% Zeilenabstand in Tabelle ändern. %Zu Demo-Zwecken übertrieben hoher Wert! \begin{document} Text davor \begingroup \sffamily \begin{longtable}{|ccccccc|} \hline \rowcolor[gray]{.92}Name&Anschrift&Land&E-Mail&Telefon&Fax&Internet\\ \hline 7iD Technologies GmbH & Keplerstr. 105, 8020 Graz & A & \url{rfid@7id.com} & +43 316 716 720 & +43 316 716 720 399 & \url{www.7id.at} \\ %--> irgendwo zwischen Telefon und Fax ist die Zeile zu Ende und Latex verkleinert den Inhalt nicht!! \hline \caption{Caption} \end{longtable} \endgroup Text danach \end{document}
\documentclass[pdftex, a4paper, parskip, 12pt, final, oneside, listof=totoc, listof=flat, headings=small]{scrreprt} \usepackage[ngerman]{babel} \usepackage[latin1]{inputenc} \usepackage[T1]{fontenc} \usepackage{mathptmx} \renewcommand*\familydefault{\rmdefault} \addtokomafont{disposition}{\rmfamily} \usepackage{helvet} %\usepackage{color} \usepackage{ragged2e}% für silbengetrennten Flattersatz \usepackage{longtable} \usepackage{array} \usepackage[table]{xcolor} \usepackage{hyperref} \urlstyle{rm}% URL-Schriftart im Dok. \renewcommand{\arraystretch}{1.2}% Zeilenabstand in Tabelle ändern. %Zu Demo-Zwecken übertrieben hoher Wert! \newenvironment{mylongtable}[1]{% \begingroup \sffamily \urlstyle{sf}% URL-Schriftart in Tabelle weicht ab. \begin{longtable}{#1} }{% \end{longtable} \endgroup } \begin{document} Text davor \begin{mylongtable}{|ccccccc|} \hline \rowcolor[gray]{.92}Name&Anschrift&Land&E-Mail&Telefon&Fax&Internet\\ \hline 7iD Technologies GmbH & Keplerstr. 105, 8020 Graz & A & \url{rfid@7id.com} & +43 316 716 720 & +43 316 716 720 399 & \url{www.7id.at} \\ %--> irgendwo zwischen Telefon und Fax ist die Zeile zu Ende und Latex verkleinert den Inhalt nicht!! \hline \caption{Caption} \end{mylongtable} Text danach mit einer URL: \url{http://www.test.com} \end{document}

Schönes Wochenende
Edit: Habe das zweite Bsp. noch verändert. Im Begleiter auf Seite 257 steht was zur Berechnung der Spaltenbreite und u.a. dem Paket tabularx bzw. tabulary. Ich weiß aber nicht, ob das mit longtable zusammen geht. Außerdem wird die Schriftgröße nicht automatisch verkleinert werden.
Zuletzt geändert von iTob am Sa 2. Okt 2010, 10:43, insgesamt 2-mal geändert.
Vielen Dank, jetzt nutzt er Helvetica für die Tabelle. Ich werd selbst mal kurz im Latex-Begleiter nachlesen.
Ja, genau diese Skalierung meine ich. Der Eindruck über meine Kenntnisse täuscht. Kenn mich mit vielen Dingen recht gut aus, AUßER Tabellen...und da der Abgabetermin meiner Arbeit nicht mehr lange hin ist, hab ich es bißchen eilig. Dachte bisher bei der langen Tabelle, es würde reichen, am Ende ne pdf davon zu machen und gut ist. Hab dann gestern gemerkt, dass Latex das bei langen Tabellen nicht so ohne Weiteres einbinden kann und bin darum etwas panisch im Moment...sorry dafür.
Ich meld mich wieder, wenn ich im Begleiter gelesen habe.
Edit: Der Begleiter ist ja nicht gratis, merke ich gerade. Leider habe ich nicht mehr die Zeit, ihn zu bestellen usw....wäre echt super, wenn jemand den Befehl nennen könnte. Ich google auch noch danach, also keine Sorge, ich sitze hier gerade nicht faul herum und lasse Euch alleine für mich arbeiten...
Ja, genau diese Skalierung meine ich. Der Eindruck über meine Kenntnisse täuscht. Kenn mich mit vielen Dingen recht gut aus, AUßER Tabellen...und da der Abgabetermin meiner Arbeit nicht mehr lange hin ist, hab ich es bißchen eilig. Dachte bisher bei der langen Tabelle, es würde reichen, am Ende ne pdf davon zu machen und gut ist. Hab dann gestern gemerkt, dass Latex das bei langen Tabellen nicht so ohne Weiteres einbinden kann und bin darum etwas panisch im Moment...sorry dafür.
Ich meld mich wieder, wenn ich im Begleiter gelesen habe.
Edit: Der Begleiter ist ja nicht gratis, merke ich gerade. Leider habe ich nicht mehr die Zeit, ihn zu bestellen usw....wäre echt super, wenn jemand den Befehl nennen könnte. Ich google auch noch danach, also keine Sorge, ich sitze hier gerade nicht faul herum und lasse Euch alleine für mich arbeiten...
So, also ich gebs jetzt auf. Sorry, ich bin normal echt nicht faul, aber ich habe jetzt über ne Stunde mit tabularx, \small, \scriptsize, \textwidth und was weiß ich noch alles probiert, aber ich krieg es nicht hin. Und leider habe ich nicht mehr so viel Zeit, um Anleitungen lesen.
Hilfe wäre echt sehr schön! Alles, was ich möchte, ist ein Befehl ähnlich wie \textwidth, so dass die Schriftgröße der Tabelle an die Text- bzw. Seitenbreite angepasst wird.
Alternativ (und besser, da Schriftgröße nicht so klein sein müsste??) wäre auch möglich, feste Breiten vorzugeben (insgesamt eben genauso lang wie der restliche Text) und in jeder Zelle einen automatischen Zeilenumbruch zu integrieren. Aber da weiß ich noch weniger, wie ich das bei Tabellen mache...
Hilfe wäre echt sehr schön! Alles, was ich möchte, ist ein Befehl ähnlich wie \textwidth, so dass die Schriftgröße der Tabelle an die Text- bzw. Seitenbreite angepasst wird.
Alternativ (und besser, da Schriftgröße nicht so klein sein müsste??) wäre auch möglich, feste Breiten vorzugeben (insgesamt eben genauso lang wie der restliche Text) und in jeder Zelle einen automatischen Zeilenumbruch zu integrieren. Aber da weiß ich noch weniger, wie ich das bei Tabellen mache...
Thema wegen Verstoß gegen die Multipost-Regel geschlossen.
Markus
(Moderator)
Markus
(Moderator)
goLaTeX-Knigge (mit Minimalbeispiel und »So stellst Du Deine Frage richtig«)
Wie kann ich Code in meinem Beitrag hervorheben?
Wie hänge ich ein Bild an meine Frage?
KOMA-Script
Wie kann ich Code in meinem Beitrag hervorheben?
Wie hänge ich ein Bild an meine Frage?
KOMA-Script