PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : undefined references trotz keiner Probleme



alpe
07-05-2010, 12:30
Hallo,

ich habe eine kleine Verständnisfrage. Ich verwende die Vorlage von Matthias Pospiech um etwas größeres zu schreiben.

Bildern gebe ich als label sowas wie fig:bildlabel, tabellen bekommen tab:tabellenlabel, abschnitte sec:abschnittslabel.

Auf in dieser Weise versehene Bestandteile der Arbeit, nehme ich im Text mittels \figref{bildlabel}, \tabref{tabellenlabel} und \secref{abschnittslabel} bezug.
Das sieht im Ausgabedokument auch völlig korrekt aus. Die Logdatei bzw. Consolenausgabe zeigt mir allerdings so ziemlich alle meine Label als undefined an.

Kann ich das ruhigen Gewissens ignorieren, oder kann das später mal ein Problem werden?

Gruß
alpe

voss
07-05-2010, 12:34
Das sieht im Ausgabedokument auch völlig korrekt aus. Die Logdatei bzw. Consolenausgabe zeigt mir allerdings so ziemlich alle meine Label als undefined an.

Kann ich das ruhigen Gewissens ignorieren, oder kann das später mal ein Problem werden?


Beim letzten LaTeX-Lauf sollten _alle_ diesbezüglicehn Warnungen
verschwinden!

Herbert

alpe
07-05-2010, 12:46
Dieser Aussage würde ich auch bedingungslos zustimmen. Ich kann nur keine Auswirkungen nicht definierter Referenzen feststellen. Alles was angeblich 'undefined' ist, taucht als korrekter hyperref im PDF auf.

Ich bin jetzt bei insgesamt 4 pdflatex Durchläufen. Ich kann ja mal ein paar mehr Durchläufe machen lassen und sehen ob sich etwas ändern.

Legion
07-05-2010, 12:48
nimm das paket fancyref. dann kannst du deine label stehen lassen (\label{fig:bla} z.B.) und verweist dann mittels \fref{fig:bla}. Gibt bei mir keine Probleme oder Warnungen.

alpe
07-05-2010, 12:56
Danke für den Hinweis legion. Bei Verwendung von \Fref verschwinden die warnings.
Einziger 'Nachteil' ist dass das Wort Abbildung jetzt nicht mehr zum klickbaren Link gehört. Ist aber zu vernachlässigen.

sommerfee
07-05-2010, 19:49
Einziger 'Nachteil' ist dass das Wort Abbildung jetzt nicht mehr zum klickbaren Link gehört. Ist aber zu vernachlässigen.

Dann wäre noch \autoref eine Alternative. Gehört zum hyperref-Paket und "Abbildung" gehört dort auch zum Link.

Liebe Grüße,
Axel

alpe
08-05-2010, 10:36
Danke für den Hinweis. Ich werde das ausprobieren.

Mir bleibt dann nur noch die Frage, warum es mit der 'normalen' \ref Variante zu Problemen kommt. Sollte ja eigentlich nicht passieren dürfen, ist aber vielleicht dann ein Problem mit der Vorlage.

sommerfee
08-05-2010, 12:49
Sollte ja eigentlich nicht passieren dürfen, ist aber vielleicht dann ein Problem mit der Vorlage.

Das Problem an der Vorlage von Matthias Pospiech sehe ich darin, daß es sehr viele Paket lädt. Aber Pakete können irgendwie immer Inkompatibilitäten zu einander haben, und diese können sich auch abhängig vom Versionsstand äußern. Daher bevorzuge ich den Ansatz, mit einer KOMA-Dokumentenklasse zu beginnen und dann nur diejenigen Pakete zu laden, die man wirklich für sein Dokument braucht.

Würde ich nochmal was größeres setzen müssen, würde ich übrigens ConTeXt statt LaTeX nehmen, aber das ist ein anderes Thema...

Liebe Grüße,
Axel

alpe
10-05-2010, 13:21
Dann wäre noch \autoref eine Alternative. Gehört zum hyperref-Paket und "Abbildung" gehört dort auch zum Link.

Liebe Grüße,
Axel

Ich habe ein kleines Problem mit \autoref

Die Verwendung out of the box ( z.B. \autoref{fig:schema} ) setzt mir englische Begriffe wie Figure, Table usw.

Dagegen soll \renewcommand*{\figurename}{Abb.~} Abhilfe schaffen. Leider hat das bei mir keinen Effekt.

Habe ich etwas übersehen?

alpe
10-05-2010, 13:45
Kommando zurück..

Ich habe mir noch einmal das Macro der Vorlage angesehen.
Dort stand


\providecommand*{\figrefname}{Abb.~}
\newcommand*{\figref}[1]{%
\hyperref[#1]{\figrefname{}}\ref{fig:#1}%
}


Damit kommt es logischerweise zu einer undefined reference, da es heißen muss

\providecommand*{\figrefname}{Abb.~}
\newcommand*{\figref}[1]{%
\hyperref[fig:#1]{\figrefname{}}\ref{fig:#1}%
}

Ist mittlerweile schon in der Vorlage die man von seiner Homepage laden kann geändert... Dort lohnt sich vielleicht ein Datum mit aktueller Version der Vorlage und ein kleines changelog. Komplex genug ist sie ja mittlerweile.

MfG
alpe

Xenara
10-05-2010, 13:48
Definiere "ngerman" auch direkt in den Optionen der documentclass, dann sollte hyperref die Sprache erkennen. Also etwa


\documentclass[ngerman]{scrartcl}
...
\usepackage[ngerman]{babel}
...
\usepackage[Deine Optionen]{hyperref}


Beschriftungen ändern mache ich über


% "Abbildung" wird zu "Abb.", "Tabelle" wird zu "Tab."
\addto\captionsngerman{%
\renewcommand{\figurename}{Abb.}
\renewcommand{\tablename}{Tab.}}