PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : \ref auf Tabellen u. Abbildungen enthalten nicht deren Bez.



ThotGor
10-03-2011, 15:30
Hallo,

bei Querverweisen auf Tabellen und Bilder per \ref{blub} gibt Latex die jeweiligen Gliederungsnummern des Kapitels aus (section.subsection...), jedoch nicht die Nummer der Tabelle oder des Bildes. Wenn ich einen Querverweis mache, sollen da möglichst auch die Nummern stehen, die unter dem Bild/der Tabelle angegeben sind.
Außerdem haut da irgendetwas beim Durchnummerieren der Tabellen und Bilder nicht hin. Ich möchte, dass Bilder und Tabellen zwei Zahlen bekommen: "section"."Nummer"
Bilder und Tabellen sollen nicht voneinander getrennt, sondern zusammen aufsteigend durchnummeriert werden.



\documentclass[a4paper]{article}

\renewcommand{\thefigure}{\arabic{section}.\arabic {figure}}
\makeatletter \@addtoreset{figure}{section} \makeatother

\renewcommand{\thetable}{\arabic{section}.\arabic{ figure}}
\makeatletter \@addtoreset{figure}{section} \makeatother



Falls das als Minimalbeispiel noch nicht ausreicht, kann ich auf Nachfrage noch mehr dazupacken.

Ein Dank für jede Hilfe, die mir angeboten wird ;-)

Sepp99
10-03-2011, 15:35
Falls das als Minimalbeispiel noch nicht ausreicht, kann ich auf Nachfrage noch mehr dazupacken.

Das ist kein Minimalbeispiel.

http://www.mrunix.de/forums/showthread.php?t=66921

Sepp.-

ThotGor
10-03-2011, 15:52
ich dachte, das obige reicht aus, weil alle relevanten informationen vorhanden sind. wie eine tabelle und ein bild erstellt werden, muss ich doch nicht nochmal auflisten, oder doch? ich hatte angenommen, dass die änderung sowieso in der präambel geschieht.



\documentclass[a4paper]{article}
\usepackage[ngerman]{babel}
\usepackage{graphicx}
\usepackage{tabularx}

\renewcommand{\thefigure}{\arabic{section}.\arabic {figure}}
\makeatletter \@addtoreset{figure}{section} \makeatother

\renewcommand{\thetable}{\arabic{section}.\arabic{ figure}}
\makeatletter \@addtoreset{figure}{section} \makeatother


\begin{document}

\section{blub}
\subsection{blublub}

\begin{figure}[!htb] \label{Bild}
\includegraphics[width=\textwidth]{Bild}
\caption{Bild sollte 1.1 hei"sen}
\end{figure}



\begin{table}[h] \label{Tabelle}
\begin{tabularx}{\textwidth}{|X|X|}
Max&Moritz
\end{tabularx}
\caption{Tabelle sollte 1.2 hei"sen}
\end{table}



Abbildung \ref{Bild}; hier sollte jetzt 1.1 stehen\\
Tabelle \ref{Tabelle}; und hier 1.2

\end{document}

rstuby
10-03-2011, 16:02
Ein Minimalbeispiel ist in erster Linie dafür da, dass man es AUSPROBIEREN kann. Natürlich können deine Helfer auch selber welche bauen, aber du willst ja schließlich die Hilfe haben.

ThotGor
10-03-2011, 16:17
hast recht, entschuldigt meine Unerfahrenheit. Ich wusste allerdings bei dieser Fragestellung auch nicht recht, wie ich das in ein anschauliches MB packen sollte. Hab mich jetzt eine halbe Stunde lang mit MBen beschäftigt, bin aber immernoch nicht schlauer, wie ich das Problem besser darstellen kann (, geschweige denn, dass ich weiß, wie ich das Problem selbst lösen könnte...^^). Also wäre es vielleicht schon eine Hilfe, wenn mir jemand einen Vorschlag macht, wie man das Problem als MB darstellen kann, um dann an einer Lösung des Problems zu arbeiten ;-)

Sepp99
10-03-2011, 16:24
Ewig alter Fehler: \label{...} immer nach \caption{...}

Sepp.-

rstuby
10-03-2011, 16:25
Nee, entschuldigung, das MB in #3 war schon OK, wenn man davon absieht, dass wir das Bild nicht haben. Ich wollte eigentlich auch gleich eine Lösung hinterherschicken, habe aber keine gefunden :-(

Sepp99
10-03-2011, 16:34
Die Nummerierung würde passen, wenn du die Tabelle in figure-Umgebung packst.

\documentclass[a4paper]{article}
\usepackage[ngerman]{babel}
\usepackage{graphicx}
\usepackage{tabularx}

\renewcommand{\thefigure}{\arabic{section}.\arabic {figure}}
\makeatletter \@addtoreset{figure}{section} \makeatother

\renewcommand{\thetable}{\arabic{section}.\arabic{ figure}}
\makeatletter \@addtoreset{figure}{section} \makeatother


\begin{document}

\section{blub}
\subsection{blublub}

\begin{figure}[!htb]
\includegraphics[width=\textwidth]{Bild}
\caption{Bild sollte 1.1 hei"sen}
\label{Bild}
\end{figure}


\begin{figure}[!htb]
\begin{tabularx}{\textwidth}{|X|X|}
Max&Moritz
\end{tabularx}
\caption{Tabelle sollte 1.2 hei"sen}
\label{Tabelle}
\end{figure}



Abbildung \ref{Bild}; hier sollte jetzt 1.1 stehen\\
Tabelle \ref{Tabelle}; und hier 1.2

\end{document}
Ob man den Zähler von figure und table anpassen kann muß ich erst noch testen.
Sepp.-

rstuby
10-03-2011, 16:50
Die Idee hatte ich auch, aber dann steht ja auch "Abbildung" in der Caption.
Obwohl... vielleicht ist das ja ganz OK mit einer gemeinsamen Bezeichnung, wenn die Nummerierung auch gemeinsam ist.

ThotGor
10-03-2011, 17:05
stimmt, darauf hatte ich noch gar nicht geachtet, aber ist ja eine logische Folge. Gefällt mir so nicht - eine Tabelle ist keine Abbildung. Sicher muss ich das bei jeder Tabelle manuell einstellen, dass da Tabelle statt Abbildung steht. Nur wie?:cool:

Sepp99
10-03-2011, 17:40
Wie sieht es damit aus

\documentclass[a4paper]{article}
\usepackage[ngerman]{babel}
\usepackage[demo]{graphicx}
\usepackage{tabularx}

\renewcommand{\thefigure}{\arabic{section}.\arabic {figure}}
\makeatletter \@addtoreset{figure}{section} \makeatother

\renewcommand{\thetable}{\arabic{section}.\arabic{ table}}
\makeatletter \@addtoreset{table}{section} \makeatother
\setcounter{table}{0}
\setcounter{figure}{0}

\begin{document}
\listoffigures
\listoftables

\section{blub}
\subsection{blublub}

\begin{figure}[!htb]
\refstepcounter{table}
\includegraphics[width=\textwidth]{Bild}
\caption{Bild sollte 1.1 hei"sen}
\label{Bild}
\end{figure}



\begin{table}[h]
\refstepcounter{figure}
\begin{tabularx}{\textwidth}{|X|X|}
Max&Moritz
\end{tabularx}
\caption{Tabelle sollte 1.2 hei"sen}
\label{Tabelle}
\end{table}


Abbildung \ref{Bild}; hier sollte jetzt 1.1 stehen\\
Tabelle \ref{Tabelle}; und hier 1.2

\begin{figure}[!htb]
\refstepcounter{table}
\includegraphics[width=\textwidth]{Bild}
\caption{Bild sollte 1.1 hei"sen}
\label{Bild2}
\end{figure}



\begin{table}[h]
\refstepcounter{figure}
\begin{tabularx}{\textwidth}{|X|X|}
Max&Moritz
\end{tabularx}
\caption{Tabelle sollte 1.2 hei"sen}
\label{Tabelle2}
\end{table}


Abbildung \ref{Bild2}; hier sollte jetzt 1.3 stehen\\
Tabelle \ref{Tabelle2}; und hier 1.4

\end{document}

Sepp.-

Schweinebacke
10-03-2011, 17:58
Wenn ich Dich richtig verstehe, dann ist das alles keine Hexerei:
\documentclass[a4paper]{article}
\usepackage[ngerman]{babel}
\usepackage[demo]{graphicx}% Option demo, weil ich die Bilder nicht habe
\usepackage{tabularx}
\usepackage[section]{placeins}% Das ist nicht zwingend aber vielleicht praktisch
\usepackage{chngcntr}

\counterwithin{figure}{section}% figure von section abhängig nummerieren
\counterwithin{table}{section}% table von section abhängig nummerieren
\makeatletter
\let\c@figure\c@table% figure ist derselbe Zähler wie table
\makeatother

\begin{document}

\section{blub}
\subsection{blublub}

\begin{figure}[htbp]% ausnahmsweise auch here erlauben
\includegraphics[width=\textwidth]{Bild}
\caption{Bild sollte 1.1 hei"sen}\label{Bild}
\end{figure}



\begin{table}[htbp]% ausnahmsweise auch here erlauben
\begin{tabularx}{\textwidth}{|X|X|}
Max&Moritz
\end{tabularx}
\caption{Tabelle sollte 1.2 hei"sen}\label{Tabelle}
\end{table}



Abbildung \ref{Bild}; hier sollte jetzt 1.1 stehen\\
Tabelle \ref{Tabelle}; und hier 1.2

\end{document}

Sepp99
10-03-2011, 18:16
@Schweinebacke
Hättest Du dich nicht gleich melden können :D ?

\let\c@figure\c@table% figure ist derselbe Zähler wie table

habe ich gesucht, aber nicht gefunden.
Gruß, Sepp.-

ThotGor
10-03-2011, 19:15
super! :) funktioniert alles reibungslos. die bilder und sections werden jetzt gemeinsam durchgehend nummeriert - allerdings fängt es bei einer neuen section wieder bei 1 an. was fehlt da noch?

rstuby
10-03-2011, 19:23
Das hattest du doch extra so eingestellt mit
\makeatletter \@addtoreset{figure}{section} \makeatother
Deshalb hat Schweinebacke das im counterwithin-Befehl übernommen. Lass ihn weg, wenn du es nicht mehr willst.

sommerfee
10-03-2011, 19:27
allerdings fängt es bei einer neuen section wieder bei 1 an. was fehlt da noch?

Eher das Gegenteil, du hast dieses Verhalten doch explizit eingestellt:

\makeatletter \@addtoreset{figure}{section} \makeatother
(Dito für table)

Mein Tipp: Code nicht nur per Copy-Paste kopieren, sondern bei der Gelegenheit auch gleich recherchieren, was er macht. (In diesem Falle \@addtoreset)

Schweinebacke
11-03-2011, 10:47
allerdings fängt es bei einer neuen section wieder bei 1 an. was fehlt da noch?
Ich dachte das willst Du. Deshalb gibt es in meinem Beispiel den Code


\usepackage{chngcntr}

\counterwithin{figure}{section}% figure von section abhängig nummerieren
\counterwithin{table}{section}% table von section abhängig nummerieren
bei dem explizit dabei steht, dass er genau das bewirkt.
Sooo viele Pakete und neue Anweisungen, dass man nicht die entsprechende Anleitung lesen könnte, habe ich außerdem auch nicht eingebaut. Die Anleitung von chngcntr hat gerade mal eine gute Seite. Das ist mit Sicherheit zumutbar.

Schweinebacke
11-03-2011, 10:49
@Schweinebacke
Hättest Du dich nicht gleich melden können :D ?

Ich kann leider nicht ständig überall sein und dachte mir deshalb: Wenn Sepp da antwortet, müsste das Problem - was immer es auch sein mag - doch bestimmt schnell gelöst sein. Also habe ich meine Zeit zunächst für anderes verwendet.

Sepp99
11-03-2011, 17:40
Ich kann leider nicht ständig überall sein und dachte mir deshalb: Wenn Sepp da antwortet, müsste das Problem - was immer es auch sein mag - doch bestimmt schnell gelöst sein. Also habe ich meine Zeit zunächst für anderes verwendet.
Danke für die Blumen. :p

Sepp.-