PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Geschicktes Verwalten von \caption{} und \label{} Referenzen



Harald
30-10-2011, 10:29
Hallo Leute!

Vor weg möchte ich mich entschuldigen falls ich diesen Beitrag falsch gepostet habe, habe leider wenig Erfahrung mit Foren. ;)

Um was geht es hier?

In LaTeX ist es ja so, dass bei umfangreichen Dokumenten sehr viel \caption und \label bzw. ganz allgemein sehr viel Referenzen entstehen. Dabei kann man leicht die Übersicht verlieren (...wie lautet noch mal schnell die Referenz dieses Bildes...), vor allem wenn über \input{Kapitel1} ... \input{KapitelN} einzelne Abschnitte eingefügt werden ist es lästig alle *.tex Dateien ab zu suchen (auch wenn man ungefähr weiß wo die Referenz vergeben wurde).

Meine Frage:

Gibt es eine Möglichkeit "alle" aktiven Referenzen zu extrahieren und irgendwie dar zu stellen.
Oder das beim kompilieren die Referenz sichtbar gemacht wird.

Wie merkt ihr euch alle Referenzen?

Dank und Gruß
Harald

ElGato
30-10-2011, 11:19
Hi,

es gibt bestimmt viele Wege. Bei mir heißt das label, wie das, auf das es sich bezieht:

\chapter{Haus}\label{chap:Haus}
\section{Haus2}label{sec:Haus2}

\begin{figure}
{test.png}
\caption{test.}\label{fig:test}
\end{figure}

Um Dir labels anzeigen zu lassen, hilft Dir das Paket showkeys.

Wenn Du Dein Dokument z.B. mit \documentclass[draft]{scrbook} kompilierst, dann zeigt Dir \usepackage[draft]{showkeys} Labelbezeichnungen an

ctansearch
30-10-2011, 12:49
Mit einem einfachen Trick geht das ganz gut.
Wahlweise die Sternchen im newcommand entfernen oder hinzufügen, dann werden die labels und refs angezeigt oder nicht.



\documentclass[a4paper]{article}
\newcommand{\mylabel}[1]{\label*{#1}}
\newcommand{\myref}[1]{\ref*{#1}}
\begin{document}
\section{Labeltest}
Ein bisschen Text
\mylabel{mylabel}
\myref{mylabel}
\end{document}

Harald
30-10-2011, 13:54
DANKE ElGato!
DANKE ctansearch!

Das das so schnell geht hätte ich nicht gedacht, DANKE!

@ELGato

Deine Antwort ist genau die Richtige, Danke! Nach so einem Verhalten habe ich gesucht :). Schade nur, dass die visualisierten Referenzen teilweise außerhalb der Seitenränder liegen und so nicht vollständig angezeigt werden. Kennst du das Problem? Ist das möglicher weiße auf eine Inkompatibilität der \usepackage (trotz LaTex-Ergebnis: 0 Fehler) zurück zu führen?

Kompiliere mit

\documentclass[11pt,a4paper]{report} %Bilder bleiben auch erhalten; noch leichteres auffinden
\usepackage[draft]{showkeys}
… wenn ich es so mache wie du gesagt hast „fallen“ nur die Bilder raus, die visualisierten Referenzen sind trotzdem unvollständig…

Danke!
Harald

tral
30-10-2011, 18:54
Hallo,

jeder vernünftige LaTeX-Editor sollte dir dabei helfen können. Ich benutze Emacs (mit RefTeX) und dort bekommt man eine Übersicht aller Label (inklusive der zugehörigen Überschriften) angezeigt und kann dann eins auswählen und schon wird die entsprechende Referenz erstellt.

Christian.

ctansearch
30-10-2011, 19:59
Ein Vorteil meines Vorschlags ist, daß man durch einfaches Formatieren im \newcommand die Labels im Text augenfällig hervorheben kann und diese Formatierung nach Belieben verändern und wieder wegnehmen kann.


\documentclass[a4paper]{article}
\usepackage{color}
\newcommand{\mylabel}[1]{\colorbox{green}{\label*{#1}}}
\newcommand{\myref}[1]{\ref*{#1}}
\begin{document}
\section{Labeltest}
Ein bisschen Text
\mylabel{mylabel}
\myref{mylabel}
\end{document}

sommerfee
31-10-2011, 06:58
[code]
\newcommand{\mylabel}[1]{\colorbox{green}{\label*{#1}}}
\newcommand{\myref}[1]{\ref*{#1}}

Deine beiden Beispieldokumente funktionieren bei mir nicht so recht, oder ich kapiere deinen Code nicht.

\label*{#1} ist identisch mit \label{*}{#1} (könnte man also auch genausogut als \label{*}#1 schreiben), setzt also ein Label namens "*" und gibt den Namen des Labels aus.

\ref*{#1} macht das gleiche mit \ref, ist also identisch mit \ref{*}{#1}, es sei denn, das hyperref-Paket ist geladen, denn das stellt ein "echtes" \ref* zur Verfügung.

Es wird also immer nur ein Label namens "*" generiert, und wenn man \mylabel mehrfach anwendet, bekommt man dementsprechend die Warnung "LaTeX Warning: There were multiply-defined labels." beim Übersetzen:



\documentclass[a4paper]{article}
\usepackage{color}
\newcommand{\mylabel}[1]{\colorbox{green}{\label*{#1}}}
\newcommand{\myref}[1]{\ref*{#1}}
\begin{document}
\section{Labeltest1}
Ein bisschen Text
\mylabel{mylabel1}
\myref{mylabel1}
\section{Labeltest2}
Ein bisschen Text
\mylabel{mylabel2}
\myref{mylabel2}
\end{document}


Die passende aux-Datei:


\relax
\@writefile{toc}{\contentsline {section}{\numberline {1}Labeltest1}{1}}
\newlabel{*}{{1}{1}}
\@writefile{toc}{\contentsline {section}{\numberline {2}Labeltest2}{1}}
\newlabel{*}{{2}{1}}

Schweinebacke
31-10-2011, 09:17
Um die Labels etc. sichtbar zu machen, kann man das Paket showkeys (http://www.ctan.org/pkg/showkeys) verwenden, falls der Editor nicht bessere Möglichkeiten anbietet.

ctansearch
31-10-2011, 23:33
@sommerfee
..moment

Stimmt, geht so nicht.