PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Linksbündige Tabellenbeschriftung



runningsouth
08-07-2009, 09:12
Hallo,

so, mal wieder ein kleines Problem. Ich will meine Tabellen linksbündig beschriften und auch dafür sorgen, dass, wenn es mal mehr Text zu einer Tabelle gibt, dieser nicht über die Tabelle hinausragt sondern automatisch Zeilenumbruch durchführt.
Problem ist, dass ich in der Präambel die captions schon definiert habe für meine Abbildungen, das aber nicht für die Tabellen angewendet wird oder werden kann.
Hier ist meine Tabelle:

\documentclass[12pt]{scrreprt}
\usepackage{inputenc}
\usepackage[ngerman]{babel}
\usepackage[T1]{fontenc}
\usepackage{multirow}
\usepackage{lscape}
\usepackage[margin=10pt, font=small, labelfont=bf, format=plain, labelsep=colon]{caption} %Beschriftung für meine Abbildungen
\renewcommand{\thetable}{\arabic{table}}
\begin{document}
\newlength{\breite}
\begin{landscape}
\breite13mm
\begin{table}
\caption{Dieser Text soll linksbündig stehen nicht über die Tabelle hinausragen.}
\begin{tabular}{|p{\breite}||p{\breite}|p{\breite} |p{\breite}||p{\breite}|p{\breite}||p{\breite}||p{ \breite}||p{\breite}||p{\breite}||}
\hline
&\multicolumn{3}{|c||}{1}&\multicolumn{2}{|c||}{2}&3&4 &5&6\\\hline\hline
&7&8&9&10&11&&&&\\
\hline\hline
\end{tabular}
\end{table}
\end{landscape}
\end{document}
Den Befehl
\newlength{\breite} verwende ich nur hier im Minimalbsp, da Latex mir sonst eine Fehlermeldung gibt.

Danke für Eure Hilfe.

Viele Grüße,
Markus

u_fischer
08-07-2009, 09:53
Linkbündig werden deine Beschriftungen, wenn du singlelinecheck=false benutzt. Den rechten Rand der Tabellen kannst du mit margin begrenzen, welcher Wert benötigt wird, musst du ausrechnen, z.B indem du die Tabelle in eine Box steckst und deren Breite abfragst.

Lokal kannst du dann margin mit \captionsetup ändern:


\captionsetup{margin={0pt,15cm},singlelinecheck=fa lse}
\caption{Dieser Text soll linksbündig stehen nicht über die Tabelle hinausragen.}


Ulrike Fischer

runningsouth
08-07-2009, 10:41
Klasse, danke Dir vielmals! Wie funktioniert das mit der Berechnung der Breite und der Box?
Ähm, leider habe ich gerade auch ein anderes Problem festgestellt. Und zwar stimmt die Nummerierung jetzt nicht mehr. Diese Tabelle ist eigentlich die erste Tabelle, wird auch mit 1 beschriftet. Allerdings ist die nächste Tabelle danach auch die 1. Diese Tabelle wird aus irgendeinem Grund nicht zu den anderen gezählt. Liegt das am
\landscape Befehl oder woran? Und weiß jemand wie ich dafür sorgen kann, dass alle Tabellen zusammen durchnummeriert werden?

Gruß,
Markus

u_fischer
08-07-2009, 11:06
Klasse, danke Dir vielmals! Wie funktioniert das mit der Berechnung der Breite und der Box?


\documentclass[12pt]{scrreprt}
\usepackage{inputenc}
\usepackage[ngerman]{babel}
\usepackage[T1]{fontenc}
\usepackage[margin={10pt}, font=small, labelfont=bf, format=plain, labelsep=colon]{caption} %Beschriftung für meine Abbildungen
\newsavebox\mytab
\begin{document}

\begin{table}
abc
\sbox\mytab{\begin{tabular}{|p{10cm}|}
x\hfill y
\end{tabular}}
\captionsetup{margin={0pt,\the\dimexpr\linewidth-\wd\mytab-\parindent},
singlelinecheck=false}
\caption{Dieser Text soll linksbündig stehen nicht über die Tabelle hinausragen.}
\usebox\mytab
\end{table}
\end{document}



Wenn deine Tabelle kompliziertere Dinge (wie verbatim-Code) enthält, musst du eventuell statt der sbox lrbox benutzen.




Ähm, leider habe ich gerade auch ein anderes Problem festgestellt. Und zwar stimmt die Nummerierung jetzt nicht mehr. Diese Tabelle ist eigentlich die erste Tabelle, wird auch mit 1 beschriftet. Allerdings ist die nächste Tabelle danach auch die 1. Diese Tabelle wird aus irgendeinem Grund nicht zu den anderen gezählt. Liegt das am
\landscape Befehl oder woran?

Kann ich nicht nachvollziehen.

Ulrike Fischer

runningsouth
08-07-2009, 11:50
Ok, ich verstehe es auch nicht. In meiner Arbeit ist es so, dass die große Tabelle als Nr. 1 nummeriert wird, die nachfolgende Tabelle aber auch als Nummer 1. Jetzt habe ich gerade mal den ganzen Text, der dazwischen lag gelöscht und oh Wunder, jetzt ist die zweite Tabelle auch die Nr. 2. Wenn ich aber den Text wieder einfüge ist die zweite Tabelle auch wieder die Nr. 1. Ich weiß, es klingt verwirrend. Aber vielleicht weiß ja trotzdem jemand wo das Problem liegt?!?!?

Markus

Xenara
08-07-2009, 12:12
Passiert es auch, wenn du einen beliebigen Text einfügst oder nur mit genau diesem Text?

Probier mal folgendes aus:
- Nimm das Dokument, in dem der Fehler auftaucht.
- Speichere es unter neuem Namen, damit im Original nichts kaputt geht.
- Kommentiere den kompletten Text zwischen den Tabellen aus. Kompiliere 2x. Stimmt dann die Nummerierung? Dann müsste das die Ausgangsbasis deines letzten Posts sein.
- Kommentiere nun nach und nach den Text wieder ein, fang am besten mit einem unproblematischen Teil an, etwa wo nur ein paar ganz einfache Wörter stehen. Dann 2x kompilieren. Stimmt die Nummerierung noch?
- Wenn ja, dann so weitermachen, bis du herausgefunden hast, ab wann die Nummerierung nicht mehr stimmt.
Wenn du dann nicht mehr weiterkommst, kannst du daraus ein lauffähiges Minimalbeispiel basteln, an dem man das Problem hier nachvollziehen kann und das hier posten.

runningsouth
08-07-2009, 14:07
danke, Xenara! Deinem Vorschlag folgend, habe ich mir beim Mittagessen Gedanken über den möglichen Fehler gemacht und ich habe es gelöst, oder das Problem gefunden (für die Lösung hoffe ich auf Euch :)) Und zwar fiel mir ein, dass die erste Tabelle und alle anderen Tabellen in zwei verschiedenen Kapiteln sind (nebenbei, ich verwende scrreprt). Und vor zwei Tagen hatte ich noch das Problem, dass meine Tabellen nicht durchgehend, also 1 - 10, sondern nach Kapitel, also 5.1 5.2 6.1..., nummeriert werden. Daher nutzte ich
\renewcommand{\thetable}{\arabic{table}} in der Präambel und meine Nummerierung war durchgehend. Bis ich eben feststellen musste, dass die Nummerierung zwar durchgehend ist, aber immer im neuen Kapitel bei 1 anfängt :(
Daher die (endlich präzisierte) Frage: Wie kann ich dafür sorgen, dass meine Tabellen vom 1. bis zum letzten Kapitel durchgehend nummeriert werden?
Mir ist noch ein weiteres Problem aufgefallen: Die eigentlich zweite (nummerierte) Tabelle ist, wenn ich die Kapitel zusammenfüge auf einmal die 5. Tabelle. Es befinden sich davor noch unnummerierte longtable und unnummerierte tabular-Tabellen. Werden die trotzdem mitgezählt (oder habe ich da noch irgendwo ein Problem??) und wenn ja, wie kann ich das verhindern??

Viele Grüße,
Markus (der immer neue Probleme findet/erzeugt)

u_fischer
08-07-2009, 14:30
Durchgehende Nummerierung:

http://www.tex.ac.uk/cgi-bin/texfaq2html?label=running-nos

Für die Nummerierung wichtig sind nicht die Tabellen oder die Umgebungen (table), sondern nur die \caption/\captionof-Befehle.

Wenn du gleitende Objekte (table + \caption) und nicht gleitende (z.B. longtable + \caption oder tabular + \captionof) mischst, kann die Nummerierung durcheinander kommen. Dann musst du den Code eventuell solange rumschieben, bis es passt (mache es erst ganz zum Schluss)


\documentclass{article}
\usepackage[ngerman]{babel}
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{caption}
\begin{document}
\begin{table}[b]
\caption{A}
\caption{B}
\end{table}

text \captionof{table}{C}

\end{document}

Ulrike Fischer

runningsouth
08-07-2009, 14:43
ok, sorry wenn ich fünfzig Mal nachfrage, bin leider ziemlicher Anfänger (und so kompliziert wie Latex teilweise ist, werde ich das wohl auch immer bleiben). Das mit der durchgehenden Nummerierung muss ich mich einlesen. Nur dass mit dem Durcheinanderkommen bei der Nummerierung habe ich nicht ganz verstanden, da meine ganzen longtables und die anderen (nicht nummerierten) Tabellen keinen \caption oder \captionof befehl besitzen. Die meisten Tabellen sehen nur wie folgt aus:

\begin{tabular}{|p{4cm}|p{8,5cm}|} \hline
\textbf{Medium} & \textbf{Zusammensetzung}\\ \hline
Plating-Medium & 500 ml Williams E Medium; 5 \% FCS; 2 mM Glutamin; 1 \% (v/v) Penicillin/Streptomycin; 15 mM HEPES-Puffer; 1 mg Fungizone; 0,01 mM Dexamethason; 500 $\mu$g/ml Insulin; 0,05 \%Glucose\\ \hline
Erhaltungs-Medium & 500 ml Williams E Medium; 2mM Glutamin; 1 \% Penicillin/Streptomycin; 15 mM HEPES-Puffer; 1, 5 \% (v/v) DMSO; 1 mg Fungizone; Rocephin; 0,01 mM Dexamethason; 500 $\mu$g/ml Insulin; 0,05 \% Glucose\\ \hline
\end{tabular}\\

u_fischer
08-07-2009, 15:05
Nun, da die Nummerierung von \caption(of) erzeugt wird, werden Objekte, die die keinen der beiden Befehle benutzen, nicht nummeriert und können auch daher auch nicht falsch nummeriert werden.

Ulrike Fischer

runningsouth
08-07-2009, 15:12
ok, klingt logisch, aber warum werden dann meine longtable mitgezählt, auch wenn sie selbst keine Nummerierung erhalten? Und wie kann ich diese Nummerierung verhindern?

\documentclass[12pt]{scrreprt}
\usepackage{inputenc}
\usepackage[ngerman]{babel}
\usepackage[T1]{fontenc}
\usepackage{multirow}
\usepackage{lscape}
\usepackage{longtable}
\usepackage[margin=10pt, font=small, labelfont=bf, format=plain, labelsep=colon]{caption}
\renewcommand{\thetable}{\arabic{table}}
\begin{document}

\section{Geräte und Auswertungsprogramme}
\begin{longtable}{p{.5\textwidth}p{.5\textwidth}}
Aida & raytest GmbH, Straubenhardt\\
\end{longtable}

\begin{landscape}
\breite13mm
\begin{table}
\caption{Dieser Text soll linksbündig stehen nicht über die Tabelle hinausragen.}
\begin{tabular}{|p{\breite}||p{\breite}|p{\breite} |p{\breite}||p{\breite}|p{\breite}||p{\breite}||p{ \breite}||p{\breite}||p{\breite}||}
\hline
&\multicolumn{3}{|c||}{1}&\multicolumn{2}{|c||}{2}&3&4 &5&6\\\hline\hline
&7&8&9&10&11&&&&\\
\hline\hline
\end{tabular}
\end{table}
\end{landscape}
\end{document}

Tut mir leid für das längere "Minimalbeispiel" und Danke für die Geduld mit mir!

Markus

u_fischer
08-07-2009, 15:33
Ach Gott, stimmt, hatte ich vergessen. longtable setzt den Zähler nicht mit \caption, sondern direkt. Setze ihn nach der longtable wieder um eins zurück:


\addtocounter{table}{-1}

Ulrike Fischer

runningsouth
08-07-2009, 15:41
Heureka! Danke!!! :)

Für heute habe ich keine Fragen mehr ;)

Viele Grüße,
Markus

sommerfee
08-07-2009, 20:25
longtable setzt den Zähler nicht mit \caption, sondern direkt. Setze ihn nach der longtable wieder um eins zurück:


\addtocounter{table}{-1}

Das macht aber in Verbindung mit hyperref Probleme, weil dann zwei gleichnamige Anker gesetzt werden, einer in der longtable und einer auf die Tabelle danach. Der Tabellenverzeichniseintrag der "danach"-Tabelle (und die Referenzen im Text hierauf) springt dann zur longtable anstatt zur richtigen Tabelle.

Wenn das caption-Paket eh' schon eingebunden ist, würde ich stattdessen die longtable*-Umgebung statt longtable verwenden. Erzeugt keine hyperref-Anker und zählt nicht den Zähler hoch.

Und wenn wir eh' gerade dabei sind, Aufgaben auf das caption-Paket abzuwälzen, könnte man auch gleich


\renewcommand{\thetable}{\arabic{table}}

durch die caption-Paketoption "tablewithin=none" ersetzen, dann ist auch der Fehler mit der (noch nicht) durchgehenden Nummerierung weg.

Liebe Grüße,
Axel