PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Tabelle in Latex



Andreas Ratje
03-03-2010, 22:33
Hallo!
Bin ziemlicher Neuling in Latex und versuche gerade mit classic thesis meine Doktorarbeit anzufertigen. Möchte in einer Tabelle gerne die Zeilenstriche (nennt man das so?) einfügen, aber halt nur teilweise. Weiß jemand wie das geht? Die Verbindung der Spalten hat wunderbar geklappt. Mein zweites Problem besteht darin, daß ich zwar mit \caption{blabla} wunderbar die Tabelle benennen kann, aber nur als table 1 und nicht als Tabelle 1. Kann ich das irgendwie auf deutsch umstellen?

The EYE
03-03-2010, 22:47
Hey!
Bitte erstelle immer ein lauffähiges Minimalbeispiel! So hätte man deine Tabelle gleich umschreiben können.
Zur Bezeichnung: Nutzt du \usepackage[ngerman]{babel}?

Die horizontalen Linien erstellst du mit \hline

Ich erstelle einfach mal eine Beispieltabelle.


\documentclass[12pt]{article}
\usepackage[ngerman]{babel}
\begin{document}

\begin{table}[htbp]
\begin{tabular}[l]{|l|l|}
\hline
Texttexttext & Texttexttext \\
\hline
Texttexttext & Texttexttext \\
%hier wird keine horizontale Linie gezogen, weil das \hline fehlt
Texttexttext & Texttexttext \\
\hline
Texttexttext & Texttexttext \\
\hline
\end{tabular}
\caption{Tabellenbeschriftung}
\end{table}
\end{document}

Einfach mal testen und wenn noch Fragen sind bitte mit Minimalbeispiel :)

Gruß Max

Andreas Ratje
04-03-2010, 09:10
Mallo Max,

vielen Dank für die schnelle Hilfe. Ich habe Dein Beispiel mal in meine classic thesis Datei kopiert und wollte mir die Tabelle mit QuickBuild angucken. Wurde aber nicht ausgeführt, es erschien folgende Fehlermeldung:

[PDFLaTex] 3 errors, 48 warnings, 0 badboxes

Wenn ich Deine Tabelle rausnehme, läuft das komischerweise wieder. Hier mal meine Tabelle, die ich erstellen will (das ist vielleicht kein Minimalbeispiel, aber so ist das vielleicht am einfachsten):

{%
\newcommand{\mc}[3]{\multicolumn{#1}{#2}{#3}}
\begin{center}
\begin{table}[h]
\begin{tabular}{|c|c|c|c|c|}
& \mc{2}{c|}{\bf Eukaryonten} & \mc{2}{c|}{\bf Prokaryonten}\\
\bf Ribosom & \mc{2}{c|}{\bf 80S} & \mc{2}{c|}{\bf 70S}\\
% jetzt hätte ich gerne eine Zeile
& & & & \\
\bf Untereinheit& \bf 40S & \bf 60S & \bf 30S & \bf 50S\\
% jetzt hätte ich gerne eine Zeile
& & & & \\
\bf rRNAs & \bf 18S & \bf 28S & \bf 16S & \bf 23S \\
& \small (1874nt) & \small (4718nt) & \small (1542nt) & \small (2904nt)\\
& & \bf 5,8S & & \bf 5S \\
& & \small (160nt) & & \small (120nt)\\
& & \bf 5S & & \\
& & \small (120nt) & & \\
% jetzt hätte ich gerne eine Zeile
& & & & \\
\bf Anzahl Protein & \bf 33 & \bf 49 & \bf 21 & \bf 34
% jetzt hätte ich gerne eine Zeile
\end{tabular}
\caption{Zusammensetzung eukaryontischer und prokaryontischer Ribosomen}
\end{table}
\end{center}
}%

Das "Grundgerüst" der Tabelle habe ich im Wizard unter Tabular erstellt.

Vielen Dank,

Andreas

Legion
04-03-2010, 09:20
Deine Tabelle im Minimalbeispiel von The EYE läuft problemlos durch. Vielleicht machst du dich mal an die Erstellung eines eigenen Minimalbeispiels ;)

PS.: Ich würde zwischen Zahl und Einheit ein kleines Leerezeichen (\,) setzten. Das sieht besser aus als so angeklebte Einheiten und ist in der DIN 1301-1 vorgeschrieben ... DU kannst dir ja mal das SIunitx-Paket anschauen.

u_fischer
04-03-2010, 09:26
aber so ist das vielleicht am einfachsten

Für dich vielleicht, aber nicht für die, die dir helfen wollen. Da dein Beispiel nicht vollständig ist, kann es niemand ohne zusätzliche Arbeit testen. Da du nicht erwähnt hast, wie die erste Fehlermeldung heißt, kann man auch nicht raten, was wohl den Fehler verursacht und ob er überhaupt von deinem Codeschnipsel erzeugt wird, sondern müsste deinen ganzen unübersichtlichen Code durchgehen.

Aber zwei Dinge fallen direkt ins Auge: Benutze keine Umgebung (center) um die table-Umgebung herum, (siehe auch
http://www.tex.ac.uk/cgi-bin/texfaq2html?label=vertspacefloat) und benutze \bfseries statt \bf.

Andreas Ratje
04-03-2010, 09:36
Hallo Legion,

tut mir leid, aber das Minimalbeispiel von THE EYE läuft bei mir nicht. Weiß nicht, wo das Problem ist. Das mit den Linien funktioniert in meiner Tabelle jetzt aber ganz wunderbar. Nur das mit der deutschen Bezeichnung klappt noch nicht. Muß ich irgendwo in meinem Dokument die Zeile \usepackage[ngerman]{babel} einfügen? Sorry, bin absolut unerfahren mit Latex. Mir wurde das Programm aber dringend zur Erstellung einer Dissertation empfohlen. Also bloß nicht Word benutzen.

Andreas Ratje
04-03-2010, 09:40
Hallo Ulrike,

wieso ist mein Beispiel nicht vollständig? Sorry, aber das versteh ich leider nicht. Bin, wie oben erwähnt absoluter Neuling in Latex. Ich habe einfach alle Befehszeilen, die mir der Wizard ausgespuckt hat kopiert.

Legion
04-03-2010, 09:46
Dein Beisiel ist nicht vollständig, weil es keine (minimierte) Präambel hat und kein \begin{document} ... \end{document} hat. Es ist einfach nicht lauffähig, wenn man deinen Codeschnipsel in ein "frisches" TeX-Dokument einfügt.

Wenn das Minimalbeispiel von The EYE nicht läuft scheinst du arge Probleme zu haben ... oder du hast das ganze in dein Dokument kopiert und dadurch natürlich mehrmals \begin{document} ... \end{document} und zwei Präambeln. Darauf kommt Latex gar nicht klar ;) Mach ein neues Dokument und füge das Minimalbeispiel von The EYE ein und kopiere deine Tabelle in sein Beispiel. Also so:
\documentclass[12pt]{article}
\usepackage[ngerman]{babel}
\begin{document}

\newcommand{\mc}[3]{\multicolumn{#1}{#2}{#3}}
\begin{center}
\begin{table}[h]
\begin{tabular}{|c|c|c|c|c|}
& \mc{2}{c|}{\bf Eukaryonten} & \mc{2}{c|}{\bf Prokaryonten}\\
\bf Ribosom & \mc{2}{c|}{\bf 80S} & \mc{2}{c|}{\bf 70S}\\
% jetzt hätte ich gerne eine Zeile
& & & & \\
\bf Untereinheit& \bf 40S & \bf 60S & \bf 30S & \bf 50S\\
% jetzt hätte ich gerne eine Zeile
& & & & \\
\bf rRNAs & \bf 18S & \bf 28S & \bf 16S & \bf 23S \\
& \small (1874nt) & \small (4718nt) & \small (1542nt) & \small (2904nt)\\
& & \bf 5,8S & & \bf 5S \\
& & \small (160nt) & & \small (120nt)\\
& & \bf 5S & & \\
& & \small (120nt) & & \\
% jetzt hätte ich gerne eine Zeile
& & & & \\
\bf Anzahl Protein & \bf 33 & \bf 49 & \bf 21 & \bf 34
% jetzt hätte ich gerne eine Zeile
\end{tabular}
\caption{Zusammensetzung eukaryontischer und prokaryontischer Ribosomen}
\end{table}
\end{center}
\end{document}

Wo du \usepackage[ngerman]{babel} zu verwenden hast steht da ja auch schon :rolleyes:

Andreas Ratje
04-03-2010, 10:18
Puh, jetzt hab ich es. Sorry, aber das ist absolutes Neuland für mich, aber jetzt funktioniert es und sieht super aus. Die Befehlszeile \usepackage[ngerman]{babel}
habe ich in mein Master Dokument eingefügt, aber dann kam die Fehlermeldung ./ClassicThesis.aux:24:Package babel error: You haven't loaded the option american yet \select@language{american}

Muß ich in der aux.Datei auch noch was anpassen?

bobmalaria
04-03-2010, 10:19
hi,

dann lies dir doch auch mal eine grundlegende dokumentation zu latex durch. es bringt dir glaube ich viel wenn du mal einen halben tag mit lesen verbringst. das spart dir am ende wahrscheinlich jede menge ärger.
ideal ist es auch immer wenn du jemanden kennst der latex schon länger verwendet. einen halben tag mit so jemandem und du dürftest auf einem guten weg sein.

du solltest auf jeden fall auf die \begin{center}..\end{center} konstruktion verzichten. eine zentrierung bekommst du viel einfacher mit



\begin{table}
\centering


ausserdem produzierst du in einre tabelle mit horizontalen und vertikalen trennlinien ein wahrlich hässliches konstrukt :-)
versuche mal auf die vertikalen linien zu verzichten. das macht die tabelle vierl übersichtlicher.

u_fischer
04-03-2010, 10:29
Package babel error: You haven't loaded the option american yet \select@language{american}

Diese Meldungen von babel kannst du ignorieren. Sie tauchen auf, wenn du die Sprachoption änderst, und verschwinden beim nächsten Lauf wieder, wenn die aux-Datei von LaTeX wieder neu erstellt wurde.

bobmalaria
04-03-2010, 10:36
hi,

ich habe mal eine tabelle gemacht wie ich sie (auf die schnelle) machen würde. Vielleicht findest du ja ein paar anregungen


\documentclass[12pt]{article}
\usepackage[ngerman]{babel}
\usepackage{booktabs,array} %neu für tabellen als hilfe
\begin{document}

\newcommand{\mc}[3]{\multicolumn{#1}{#2}{#3}}

\begin{table}[!htb] %nur h angeben ist nicht gut
\centering %neu
\renewcommand{\arraystretch}{1.2}%20% mehr platz zwischen den zeilen
\begin{tabular}{ccccc} %vertikale linen gelöscht
\toprule %neu, obere trennline
& \mc{2}{c}{\bfseries Eukaryonten} & \mc{2}{c}{\bfseries Prokaryonten}\\
\bfseries Ribosom & \mc{2}{c}{\bfseries 80S} & \mc{2}{c}{\bfseries 70S}\\
\cmidrule[1pt](r){1-1}\cmidrule[1pt](l){2-5} %\cmidrule[liniendicke](trimmen){von-bis}
\addlinespace[2ex]
%addlinespace fügt abstand ein
% jetzt hätte ich gerne eine Zeile
%& & & & \\
\bfseries Untereinheit& \bfseries 40S & \bfseries 60S & \bfseries 30S & \bfseries 50S\\
\cmidrule[0.5pt](r){1-1}\cmidrule[0.5pt](l){2-5}\addlinespace[2ex]
% jetzt hätte ich gerne eine Zeile
%& & & & \\
\bfseries rRNAs & \bfseries 18S & \bfseries 28S & \bfseries 16S & \bfseries 23S \\
\cmidrule[0.5pt](r){1-1}\cmidrule[0.5pt](l){2-5}
& \small (1874nt) & \small (4718nt) & \small (1542nt) & \small (2904nt)\\
& & \bfseries 5,8S & & \bfseries 5S \\
\cmidrule[0.5pt](l){3-5}
& & \small (160nt) & & \small (120nt)\\
& & \bfseries 5S & & \\
\cmidrule[0.5pt](l){3-5}
& & \small (120nt) & & \\
\addlinespace[2ex]
% jetzt hätte ich gerne eine Zeile
%& & & & \\
\bfseries Anzahl Protein & \bfseries 33 & \bfseries 49 & \bfseries 21 & \bfseries 34\\
\bottomrule
\end{tabular}
\caption{Zusammensetzung eukaryontischer und prokaryontischer Ribosomen}
\label{tab:ribo-zusammensetzung}
%damit kann man sich später mit
%\ref{tab:ribo-zusammensetzung} auf die tabelle beziehen
\end{table}
% center umgebung gelöscht
\end{document}

ps: bio ist nicht so meine stärke :)

Andreas Ratje
04-03-2010, 10:54
Ich habe im Master Dokument die Zeile \usepackage[ngerman,american]{babel} in \usepackage[ngerman]{babel} geändert. Daraufhin kam die oben erwähnte Fehlermeldung. Habe jetzt einfch moch mal gestartet und dann kam die Fehlermeldung ClassicThesis.aux was modified by another program. View difference ergab folgendes:
--- - 2010-03-04 10:47:25.737569463 +0100
+++ /home/andreas/Dropbox/Dissertation/classicthesis/ClassicThesis.aux 2010-03-04 10:47:10.000000000 +0100
@@ -49,4 +49,3 @@
\@input{FrontBackmatter/Declaration.aux}
\gdef\mph@lastpage{20}
\csname mph@do@warn\endcsname

Außerdem gibt mir die Fehlermedlung folgende Möglichkeiten:

Overwrite Reload File Ignore Cancel


bobmalaria hat recht, ohne vertikale Linien sieht es besser aus und \centering klappt wunderbar. Ach so, ich habe einen Bekannten, der sich super mit Latex auskennt, nur ist der gerade jetzt im Urlaub.

Vielen Dank an Alle, die mir helfen.

u_fischer
04-03-2010, 11:04
Die aux-Datei wird bei jedem LaTeX-Lauf neu erzeugt und damit "geändert". Meldungen, dass sie geändert wurde, sind daher völlig normal.
LaTeX liest am Anfang immer die aux-Datei des vorherigen Laufes ein. Wenn das Dokument zwischenzeitlich stark geändert wurde, kann es passieren, dass die alte aux-Datei nicht zum neuen Stand des Dokuments passt und dann gibt es Fehler. Diese Fehler kann man manchmal ignorieren (wie die babel-Meldungen), manchmal ist es auch nötig, die komplette aux-Datei zu löschen, damit sich LaTeX wieder neu sortieren kann.

All das gilt auch für andere Dateien, die LaTeX erzeugt (toc, lof, lot usw. )

Andreas Ratje
04-03-2010, 11:07
Hi bobmalaria,

wow, genial. Die Tabelle werde ich als Standard behalten. Das sieht ja total genial aus. Irgendwie schon toll was Latex kann. Das Sprachproblem (table, statt Tabelle) hängt wohl mit dem Master Dokument zusammen.

Vielen vielen Dank,

Andreas

ps: ich glaube, Latex ist (noch?) nicht so meine Stärke. Bin Skarabaeus (Pillendreher, also Apotheker).

Andreas Ratje
04-03-2010, 11:10
Danke Ulrike,

das war es. Jetzt klappt es. Super, bin total happy.

Vielen vielen Dank,

Andreas