Tabellenformatierung longtable

Tabellen und Grafiken erstellen und anordnen


Sunking
Forum-Anfänger
Forum-Anfänger
Beiträge: 20
Registriert: Do 7. Jan 2010, 12:58

Tabellenformatierung longtable

Beitrag von Sunking »

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.

Benutzeravatar
iTob
Forum-Meister
Forum-Meister
Beiträge: 1221
Registriert: Mo 19. Apr 2010, 22:19
Kontaktdaten:

Beitrag von iTob »

Du hast eine Spalte mehr definiert, als du dann tatsächlich verwendest.
\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} 
Übrigens: Bitte den Code-Button verwenden!

Grüße
Tobi

Sunking
Forum-Anfänger
Forum-Anfänger
Beiträge: 20
Registriert: Do 7. Jan 2010, 12:58

Beitrag von Sunking »

Sorry, war (ist) schon spät. Hier mit 4 Spalten und Code-Button:
\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}
Das ändert aber an dem Problem trotzdem nichts...Also was kann ich da tun??

Benutzeravatar
iTob
Forum-Meister
Forum-Meister
Beiträge: 1221
Registriert: Mo 19. Apr 2010, 22:19
Kontaktdaten:

Beitrag von iTob »

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.
\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} 
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:
\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} 
Anmerkungen:
  • 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.
Und ich bin nicht sicher, dass es eine gute Idee ist, color und xcolor gleichzeitig zu benutzen ;)

Xenara
Forum-Meister
Forum-Meister
Beiträge: 682
Registriert: Mi 25. Nov 2009, 09:41

Beitrag von Xenara »


Sunking
Forum-Anfänger
Forum-Anfänger
Beiträge: 20
Registriert: Do 7. Jan 2010, 12:58

Beitrag von Sunking »

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 :D

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} 
Nochmals, wie immer, vielen Dank für jeden einzelnen Tipp.

Benutzeravatar
iTob
Forum-Meister
Forum-Meister
Beiträge: 1221
Registriert: Mo 19. Apr 2010, 22:19
Kontaktdaten:

Beitrag von iTob »

Guten Morgen,
\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} 
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.
\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}  
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.
Zuletzt geändert von iTob am Sa 2. Okt 2010, 10:43, insgesamt 2-mal geändert.

Sunking
Forum-Anfänger
Forum-Anfänger
Beiträge: 20
Registriert: Do 7. Jan 2010, 12:58

Beitrag von Sunking »

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...

Sunking
Forum-Anfänger
Forum-Anfänger
Beiträge: 20
Registriert: Do 7. Jan 2010, 12:58

Beitrag von Sunking »

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...

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

Beitrag von KOMA »

Thema wegen Verstoß gegen die Multipost-Regel geschlossen.

Markus
(Moderator)

Gesperrt