PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : longtable + relative Nummerierung zu Kapitel



chicken_chicken
27-03-2010, 18:12
Kurze Version: Falsche Verlinkung der Tabellen (immer auf Tabelle eins) Grund: Relative Nummerierung / Counter von longpage

Mini-Beispiel:


\documentclass{article}

\renewcommand{\thetable}{\arabic{section}-\arabic{table}}
\makeatletter \@addtoreset{table}{section} \makeatother

\usepackage{longtable}
\usepackage{hyperref}


\begin{document}
\listoftables
\newpage

\section{Section 1}
\begin{longtable}{ll} \hline
Tabelle & 1 \\ \hline
\caption{Tabelle 1}
\end{longtable}

\newpage

\section{Section 2}
\begin{longtable}{ll} \hline
Tabelle & 2 \\ \hline
\caption{Tabelle 2}
\end{longtable}

\newpage

\section{Section 3}
\begin{longtable}{ll} \hline
Tabelle & 3 \\ \hline
\caption{Tabelle 3}
\end{longtable}

\end{document}



Lange Version:

Ich verwende für die relative Nummerierung folgendes (also Tabelle 3-1 bedeutet, dass das die erste Grafik in Kapitel 3 ist)



% Tabellen relativ zum Kapitel nummerieren und formatieren
\renewcommand{\thetable}{\arabic{section}-\arabic{table}}
\makeatletter \@addtoreset{table}{section} \makeatother


Ich verwende für tabellen immer longtable, nicht tabular! Der Counter von longtable macht mir jetzt aber Probleme beim Tabellenverzeichnis.



\contentsline {table}{\numberline {2-1}{\ignorespaces Meine erste Tabelle in Section 2}}{7}{table.1}
\contentsline {table}{\numberline {2-2}{\ignorespaces Meine zweite Tabelle in Section 2}}{8}{table.2}
\contentsline {table}{\numberline {3-1}{\ignorespaces Meine erste Tabelle in Section 3}}{19}{table.1}
\contentsline {table}{\numberline {4-1}{\ignorespaces Meine erste Tabelle in Section 4}}{35}{table.1}


Das Problem dabei ist das "table.1" mehrmals auftritt.... Sobald eine neue Section beginnt, wird der Counter zurückgesetzt, was ja für die relative Nummerierung richtig ist. Jedoch spinnt dann die Verlinkung mit hyperref im Tabellenverzeichnis.


\usepackage[plainpages=false,pdfpagelabels]{hyperref} verwende ich schon, aber nützt nichts. Das Problem ist, dass der Counter aus {table} besteht, und nicht aus {section} und {table}. Erst das würde die tabelle einzigartig refernzieren.

Hat jemand eine Idee zur Lösung dieses Problem?

u_fischer
27-03-2010, 19:16
hyperref benutzt einen eigenen internen \the-Befehl, den musst du auch umdefinieren:


\usepackage{hyperref}
\renewcommand\theHtable {\arabic{section}-\arabic{table}}

chicken_chicken
27-03-2010, 19:31
Das war super! Nächstes mal komme ich früher, hab schon alles, alles probiert gehabt :)

Danke, klappt bestens!

Eine Frage der Interesse halber: Warum klappt es bei Abbildungen auch ohne diesen extra command? (figure)

u_fischer
27-03-2010, 19:42
? Tut es doch gar nicht. Wenn ich entsprechend \@addtoreset{figure}{section} einfüge, gibt es die gleichen Warnungen bei figure.

Btw: Die lange Problembeschreibung wäre gar nicht nötig gewesen. Das kurze Beispiel war perfekt: lauffähige und aussagekräftig.

chicken_chicken
27-03-2010, 19:46
Ja aber in der lof-datei steht kein eintrag doppelt sondern {figure.caption.X} wobei X eine ansteigende zahl ist ... ich hab jetzt aber zur sicherheit auch den Befehl für figures eingefügt.

Danke nochmal!

sommerfee
27-03-2010, 19:55
\usepackage{hyperref}
\renewcommand\theHtable {\arabic{section}-\arabic{table}}


Auch wenn es ein wenig Korintenkackerei ist und es unwahrscheinlich ist, daß obrige Umdefinition Ärger macht, würde ich trotzdem sicherheitshalber



\renewcommand\theHtable{\theHsection-\arabic{table}}


stattdessen verwenden.

BTW: Wenn das caption-Paket verwendet wird, kann man den ganzen Kram auch mit
\captionsetup{tablewithin=section} erledigen, das kümmert sich dann auch automatisch um die Hyperref-Anpassung.

Liebe Grüße,
Axel