PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Kleines Problem mit Tabelle



pitterpolo
03-10-2011, 13:10
Hallo mrunixer,

ich war gerade dabei eine Vorlage zu erstellen, scheitere jedoch an einem kleinnen Problem.

Erstmal das Minimalbeispiel:


% Dokumentenklasse
\documentclass[12pt,a4paper]{scrartcl}

% Sprachpaket
\usepackage[utf8]{inputenc}

\usepackage{lmodern}
\usepackage[ngerman]{babel}

% Schrifttyp
\usepackage{mathptmx}
\usepackage[scaled=.90]{helvet}
\usepackage{courier}

% Tabulars with adjustable-width columns
\usepackage{tabularx}

% tabularx
\usepackage{array,booktabs}

% Einstellungen der Seitenränder
\usepackage[left=2cm,right=2cm,top=2.5cm,bottom=2.5cm,includeh eadfoot,includefoot]{geometry}

% Zeilenabstand
\usepackage{setspace}
\onehalfspace

\begin{document}

\section{Chemikalien}

\begin{tabularx}{\textwidth}{|X|X|X|X|X|X|} \hline
Name & Formel & Reinheit, Gehalt, Firma & H-Sätze & P-Sätze & Gefahrensymbole \\ \hline
~ & ~ & ~ & ~ & ~ & ~ \\
~ & ~ & ~ & ~ & ~ & ~ \\
~ & ~ & ~ & ~ & ~ & ~ \\
~ & ~ & ~ & ~ & ~ & ~ \\
~ & ~ & ~ & ~ & ~ & ~ \\ \hline
\end{tabularx}



\end{document}

Ich weiß nicht wie ich es hinkriege, dass 'Gefahrensymbole' nicht rausragt und stattdessen in die vorgesehene Zelle passt.

Generell scheine ich irgendwie Probleme mit Tabellen unter LaTeX zu haben.
Wann verwendet man z.B. tabular, tabular* und tabularx*? Und dann gibt es noch weitere Tabellenmöglichkeiten (longtable etc.), wobei ich nur bei den drei genannten tabular-varianten so meine Probleme habe und nicht so richtig weiß, wann ich was anwende und wann man welche Variante nochmal in eine eigene table-Umgebung packt. Vielleicht ist jemand so nett und kann kurz sagen, wann ich die drei verschiedenen tabular-Varianten verwenden sollte und wann man das Ganze nochmal in die table-Umgebung packt.

Ich füge noch das Output an und bedanke mich im Voraus für eure Beiträge.

Es grüßt,
pitterpolo

bobmalaria
03-10-2011, 14:20
hi,

der unterschied von tabular zu tabularx ist einfach, dass du mit letzterem die tabelle auf eine von dir gewünschte breite einstellen kannst und das durch die X spalten der verfügbare platz automatisch aufgeteilt wird.

es gibt ein recht neues paket das dir gut helfen kann tabellen zu erstellen. es heißt tabu und hat schon eine sehr gute dokumentation. damit lassen sich auch die breiten der X spalten verhältnismäßig vergrößern.


% Dokumentenklasse
\documentclass[12pt]{scrartcl}
\usepackage[utf8]{inputenc}

\usepackage{lmodern}
\usepackage[ngerman]{babel}

% Schrifttyp
\usepackage{mathptmx}
\usepackage[scaled=.90]{helvet}
\usepackage{courier}

\usepackage[left=2cm,right=2cm,top=2.5cm,bottom=2.5cm,includeh eadfoot,includefoot]{geometry}

% Zeilenabstand
\usepackage{tabu}

\begin{document}

\section{Chemikalien}

\begin{tabu} to \textwidth {|X|X|X|X|X|X[1.3]|} \hline
Name & Formel & Reinheit, Gehalt, Firma & H-Sätze & P-Sätze & Gefahrensymbole \\ \hline
~ & ~ & ~ & ~ & ~ & ~ \\
~ & ~ & ~ & ~ & ~ & ~ \\
~ & ~ & ~ & ~ & ~ & ~ \\
~ & ~ & ~ & ~ & ~ & ~ \\
~ & ~ & ~ & ~ & ~ & ~ \\ \hline
\end{tabu}
\end{document}

http://www.mrunix.de/forums/attachment.php?attachmentid=4803&stc=1&d=1317644325

man sollte übrigens die vertikalen linien in tabellen vermeiden. wie man es besser machen kann, kannst du dir mal hier ansehen

http://mirrors.ctan.org/info/german/tabsatz/tabsatz.pdf

gruss

pitterpolo
03-10-2011, 14:41
Hallo bobmalaria,

vielen Dank für deinen Beitrag.

Der Vorschlag mit dem Paket 'tabu' klingt interessant und wie du angemerkt hast, ist die Dokumentation auch nicht kurz geraten.

Habe ich richtig verstanden, dass tabu automatisch Pakete wie tabularx lädt oder bedeutet Folgendes, dass man tabu einfach mit tabularx kombinieren kann?


tabu also works in math mode and its name remains tabu.
tabu can contain any type of tabular, array, tabularx
tabu can be put inside tabular, array, tabularx, tabular*

http://ctan.org/tex-archive/macros/latex/contrib/tabu

Ich danke dir nochmals, bobmalaria und wünsche noch einen sonnigen Tag.

Es grüßt,
pitterpolo

Edit: Noch ein paar Fragen:
1) Du hast in 'a4paper' bei der documentclass entfernt. Muss man das nochmals angeben oder ist die Standardpapiergröße immer A4, sodass ich 'a4paper' weglassen kann und die Einstellungen bei geometry bleiben können.

2) Hast du setspace entfernt, damit mein Minimalbeispiel noch minimaler wird oder brauche ich das Paket nicht, wenn ich 1,5-fachen Zeilenabstand will?

bobmalaria
03-10-2011, 14:46
hi,

tabu enthält die funktionalität von verschiedenen anderen paketen, läd diese aber nicht direkt.

der von dir zitierte satz gedeutet lediglich, dass du innerhalb einer tabu-tabelle eine tabelle der art tabular oder array einfügen. kannst. sozusagen eine tabelle in einer tabelle (verschachtelung).

anstatt also 3-4 tabellenpakete zu laden, kannst du tabu verweden da es diese funktionen bereits beinhaltet. schau dir dazu einfach immer die beispiele in der doku an. die muss man ja nicht durchlesen sondern nur als nachschlagewerk verwenden.

pitterpolo
03-10-2011, 14:52
Hallo bobmalaria,

tut mir leid, falls ich nerve, aber das Folgende klingt für mich etwas widersprüchlich:



tabu enthält die funktionalität von verschiedenen anderen paketen, läd diese aber nicht direkt.



anstatt also 3-4 tabellenpakete zu laden, kannst du tabu verweden da es diese funktionen bereits beinhaltet.

Oder wolltest du sagen, dass man die anderen Funktionen (longtable...) mit longtabu etc. ausführen kann, ohne dass man jetzt longtable lädt?

Entschuldige meine Verwirrung.

Es grüßt,
pitterpolo

pitterpolo
03-10-2011, 15:53
Hallo bobmalaria,

tut mir leid für die vielen Beiträge; eine hoffentlich letzte Frage habe ich noch:


\begin{tabu} to \textwidth {XXXXXXXX}
Name & Formel & Reinheit & Gehalt & Firma & H-Sätze & P-Sätze & Gefahrensymbole \\ \hline
~ & ~ & ~ & ~ & ~ & ~ & ~ & ~ \\
~ & ~ & ~ & ~ & ~ & ~ & ~ & ~ \\
~ & ~ & ~ & ~ & ~ & ~ & ~ & ~ \\
~ & ~ & ~ & ~ & ~ & ~ & ~ & ~ \\
~ & ~ & ~ & ~ & ~ & ~ & ~ & ~ \\ \hline
\end{tabu}

Wenn ich jetzt noch zwei columns hinzugefügt habe, wird die Tabelle leicht verschoben. Woher weiß ich jetzt welchen Wert ich wo einsetzen muss, um die Tabelle korrekt positionieren zu können?
Im obigen Beispiel hast du bei 'Gefahrensymbol' noch eine 1,3 eingefügt - wurde die einzelne column dann 1,3 mal größer als die anderen columns?

Es grüßt,
pitterpolo

Koppi
03-10-2011, 18:56
Bei so vielen Spalten ist es ratsam eine Tabelle im Querformat zu machen. Oder du verringerst die Schriftgröße. Oder du drehst den Tabellenkopf um 90 Grad.

Wenn dies eine chemische Abschlussarbeit wird brauchst du Reinheit, Gehalt, H, P und Gefahrensymbole nicht mit aufschreiben. Es reicht lediglich die Angabe der Bezugsquelle.
Für ein Praktikumsprotokoll wiederrum brauchst du die Bezugsquelle nicht mit angeben, jedoch die H, P und Symbole.


PS: Erkläre mir bitte den Unterschied zwischen Gehalt und Reinheit ?!?!

pitterpolo
03-10-2011, 19:34
Bei so vielen Spalten ist es ratsam eine Tabelle im Querformat zu machen. Oder du verringerst die Schriftgröße. Oder du drehst den Tabellenkopf um 90 Grad.

Wenn dies eine chemische Abschlussarbeit wird brauchst du Reinheit, Gehalt, H, P und Gefahrensymbole nicht mit aufschreiben. Es reicht lediglich die Angabe der Bezugsquelle.
Für ein Praktikumsprotokoll wiederrum brauchst du die Bezugsquelle nicht mit angeben, jedoch die H, P und Symbole.


PS: Erkläre mir bitte den Unterschied zwischen Gehalt und Reinheit ?!?!

Guten Abend Koppi,

vielen Dank für deinen Beitrag.

Es handelt sich hierbei um eine Protokollvorlage. Unterschied zwischen Gehalt und Reinheit - gute Frage, ich habe selbst versucht aus einem fertigen Protokoll eine Vorlage für mich zu erarbeiten. Vielleicht nehme ich diese column auch raus bzw. kürze dann nur auf Gehalt (und Firma) - dann wäre das Problem vereinfacht. Vereinfacht deswegen, da eine column weniger (jetztz sieben), wobei die Verschiebung trotzdem auftritt:


\begin{tabu} to \textwidth {XXXXXXX}
Name & Formel & Gehalt & Firma & H-Sätze & P-Sätze & Gefahrensymbole \\ \hline
~ & ~ & ~ & ~ & ~ & ~ & ~ \\
~ & ~ & ~ & ~ & ~ & ~ & ~ \\
~ & ~ & ~ & ~ & ~ & ~ & ~ \\
~ & ~ & ~ & ~ & ~ & ~ & ~ \\
~ & ~ & ~ & ~ & ~ & ~ & ~ \\ \hline
\end{tabu}

Output: siehe Anhang.



Ist die colum-Anzahl jetzt immernoch zu hoch oder woran liegt es, dass es so 'verschoben' ist?

Es grüßt,
pitterpolo

Koppi
03-10-2011, 19:38
Bin kein Latex-Profi... Und hab tabu auch nie benutzt. Aber lösch mal die Leerzeichen zwischen \\ und \hline.

Ich verwende \toprule, \cmidrule{1-5} und \bottomrule
(die Zahlen in cmidrule sind Spalte 1 bis 5 bei einer fünfspaltigen Tabelle)

pitterpolo
03-10-2011, 19:52
Hallo Koppi,

vielen Dank für die Hinweise mit \toprule etc. - die 'Tabellenstriche' für die Tabelle, die mir bobmalaria zusammegebastelt hatte sieht jetztz etwas schöner aus, aber für mein jetziges Problem ist das wohl nicht die Lösung.

Edit: Also folgendermaßen funktioniert es:


\begin{tabu} to \textwidth {XXXXXXX[1.7]} \toprule
Name & Formel & Gehalt & Firma & H-Sätze & P-Sätze & Gefahrensymbole \\ \midrule
~ & ~ & ~ & ~ & ~ & ~ & ~ \\
~ & ~ & ~ & ~ & ~ & ~ & ~ \\
~ & ~ & ~ & ~ & ~ & ~ & ~ \\
~ & ~ & ~ & ~ & ~ & ~ & ~ \\
~ & ~ & ~ & ~ & ~ & ~ & ~ \\ \bottomrule
\end{tabu}

Keine Warnungen etc. - es sieht gut aus.

Wenn ich aber das Beispiel von oben (also bobmalarias Tabelle und die Tabelle hier oben) nehme, taucht das Problem auf. Ich füge mal ein Bild an.
Konkret sieht es mit den Codes dann so aus:

\begin{document}

\section{Chemikalien}

\begin{tabu} to \textwidth {XXXXXX[1.3]} \toprule
Name & Formel & Reinheit, Gehalt, Firma & H-Sätze & P-Sätze & Gefahrensymbole \\ \midrule
~ & ~ & ~ & ~ & ~ & ~ \\
~ & ~ & ~ & ~ & ~ & ~ \\
~ & ~ & ~ & ~ & ~ & ~ \\
~ & ~ & ~ & ~ & ~ & ~ \\
~ & ~ & ~ & ~ & ~ & ~ \\ \bottomrule
\end{tabu}



\begin{tabu} to \textwidth {XXXXXXX[1.7]} \toprule
Name & Formel & Gehalt & Firma & H-Sätze & P-Sätze & Gefahrensymbole \\ \midrule
~ & ~ & ~ & ~ & ~ & ~ & ~ \\
~ & ~ & ~ & ~ & ~ & ~ & ~ \\
~ & ~ & ~ & ~ & ~ & ~ & ~ \\
~ & ~ & ~ & ~ & ~ & ~ & ~ \\
~ & ~ & ~ & ~ & ~ & ~ & ~ \\ \bottomrule
\end{tabu}

\end{document}


Sehr merkwürdig. Woran liegt es, dass die zweite Tabelle 'verschoben' wird?

Edit2: Das Ergebnis (wenn ich beide Tabellen auf einer Seite kompiliere) ist das gleich, auch wenn ich dazwischen sowas wie \vspace* habe. Der einzige Unterschied ist, dass die Tabellen nur weiter auseinanderliegen, aber die unter Tabelle dennoch verschoben ist...

Edit3: Wenn ich jetzt einen Text zwischen die Tabellen reinsetze, sieht das Ergebnis immernoch gleich aus (siehe Anhang).

Koppi
03-10-2011, 20:26
Ich denke es liegt am tabu-Paket.

Für mich sieht es so aus als ob das "tabu-Objekt" keine Tabelle ist und Latex das wie einen großen Buchstabe behandelt und bei einem neuen Absatz wird es eingerückt. Schreib mal in dein \documentclass[]{...} noch parskip in die eckigen Klammern. Das deaktiviert das Einrücken.


Und als zweite Idee kommt mir noch:

\begin{table}[htbp]
\caption{xxx.}
\label{yyy}
\begin{tabu} to \textwidth {XXXXXXX[1.7]} \toprule
....
\end{tabu}
\end{table}

rstuby
03-10-2011, 20:53
Oder \noindent direkt vor das Objekt.

pitterpolo
03-10-2011, 21:42
Guten Abend,

vielen Dank für eure Beiträge.

Koppis Rat hat gewirkt - \noindent hingegen 'richtet' die Tabelle, aber Texte zwischen den Tabellen werden direkt unter bzw. über die Außenstriche geschrieben und wirken 'nicht normal'.

Jedenfalls bedanke ich mich erneut und wünsche noch einen angenehmen Abend.

Es grüßt,
pitterpolo

rstuby
04-10-2011, 06:53
Mit parskip hast du hatl überall Abstand anstatt Einrückung. Ich dachte, vielleicht möchtest du das gar nicht.

u_fischer
05-10-2011, 10:07
Anmerkung zum tabu-Paket: Die derzeitige Version hat einige Bugs (die nicht unbedingt fatal sein müssen). Der Autor hat vor einiger Zeit mitgeteilt, dass er an einer neuen Version arbeitet, allerdings ist er seit einigen Wochen aus comp.text.tex und fr.comp.text.tex verschwunden. Da er vorher sehr aktiv war, könnte das bedeuten, dass das Projekt zur Zeit nicht weiterentwickelt wird.