PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Neues Präfix für fancyref



zubi
18-02-2007, 16:24
Hallo zusammen

bin seit 3 Tagen dabei, mir LaTeX im Rahmen einer Seminararbeit beizubringen. Bisher konnte ich alle meine Fragen/Probleme mit Hilfe des Webs lösen, doch jetzt stehe ich seit einigen Stunden an, weshalb ich in diesem Forum mein Glück versuche :).

Ich verwende in meinem Dokument das Package 'listings' um Sourcecode darzustellen. Weiter möchte ich mittels 'fancyref' die Verweise auf Bilder, Tabelle etc. darstellen, was prima funktioniert. Um jedoch auch auf Listings verweisen zu können, muss ich fancyref ein neues Präfix (in meinem Fall 'lst') und den entsprechenden Output beibringen. In der Beschreibung zum package wird alles schön erklärt, doch bei mir will's nicht funktionierten.
Hier die einzelnen Schritte:

Präfix definieren:

If you need to add a prefix, use the following syntax:
\newcommand*{macro}{prefix}
Ich füge also

\newcommand*{\fancyreflstlabelprefix}{lst}
hinzu.
Ausgabe definieren (der Autor spielt ein Beispiel für Verweise auf Theoreme durch, wobei sich die beiden Befehle \Fref.. und \fref lediglich durch Gross- rsp. Kleinschreibung unterscheiden):

\fancyrefaddcaptions{languaguage}{stringdefs}
\fancyrefaddcaptions{english}{%
\newcommand*{\Frefthmname}{Theorem}%
\newcommand*{\frefthmname}{%
\MakeLowercase{\Frefthmname}%
}%
}

Ich definiere:

\fancyrefaddcaptions{german}{
\newcommand*{\Freflstname}{Listing}
\newcommand*{\freflstname}{\Freflstname}
}
Format bestimmen:

\frefformat{format}{prefix-macro output}
Mein Format:

\frefformat{vario}{\fancyreflstlabelprefix}{\Frefl stname\fancyrefdefaultspacing#1#2}
wobei 'vario' dem Standardformat und 'fancyrefdefaultspacing' dem Standardabstand entspricht.

Wenn ich nun kompiliere erhalte ich die Meldung, der Befehl \Freflstname sei bereits definiert. Komischerweise erhalte ich die Meldung, der Befehl sei noch nicht bekannt, wenn ich \newcommand durch \renewcommand ersetze.
Einzige Lösung die bisher funktioniert ist Folgende:

\newcommand{\fancyreflstlabelprefix}{lst}
\newcommand{\Freflstname}{}
\newcommand{\freflstname}{}
\fancyrefaddcaptions{english}{
\renewcommand{\Freflstname}{Listing}
\renewcommand{\freflstname}{Listing}
}

Hat jemand eine Idee, was bei mir falsch läuft? Habe das Beispiel aus der Beschreibung 1:1 übernommen und erhalte gleiche Meldung.

Vielen Dank & Gruss
zubi

rais
20-02-2007, 19:54
Hallo und Herzlich Willkommen an Board :)


Hier die einzelnen Schritte:

gewöhne Dir bitte an, ein funktionierendes Minimalbeispiel zu erstellen ("funktionierend" heißt hier "Deinen Fehler reproduzierend")


Hat jemand eine Idee, was bei mir falsch läuft? Habe das Beispiel aus der Beschreibung 1:1 übernommen und erhalte gleiche Meldung.

nicht wirklich... so läuft es bei mir:


\documentclass{scrreprt}
\usepackage{listings}
\usepackage[german]{fancyref}
\newcommand*{\fancyreflstlabelprefix}{lst}
\fancyrefaddcaptions{german}{
\newcommand*{\Freflstname}{\lstlistingname}
\newcommand*{\freflstname}{\Freflstname}
}
\frefformat{vario}{\fancyreflstlabelprefix}{\Frefl stname\fancyrefdefaultspacing#1#3}
\begin{document}
\chapter{foo}
wie in \fref{lst:bla} zu sehen\dots
\chapter{bar}
\begin{lstlisting}[language={[LaTeX]TeX},caption={Testlisting},label={lst:bla}]
\documentclass{scrartcl}
\begin{document}
Hallo! %Kommentar...
\end{document}
\end{lstlisting}
\end{document}

:cool:-es Paket, bisher kannte ich nur varioref in ähnlicher Hinsicht;-)
MfG,

zubi
20-02-2007, 21:59
Hallo

Danke für Deine Antwort!

gewöhne Dir bitte an, ein funktionierendes Minimalbeispiel zu erstellen ("funktionierend" heißt hier "Deinen Fehler reproduzierend")
Wird nicht mehr vorkommen.

Nachfolgend ein Beispiel, welches den Fehler bei mir erzeugt:

\documentclass[10, a4paper]{article}
\usepackage{german}
\usepackage{listings}
\usepackage[german]{fancyref}
\newcommand*{\fancyreflstlabelprefix}{lst}
\fancyrefaddcaptions{german}{
\newcommand*{\Freflstname}{Listing}
\newcommand*{\freflstname}{\Freflstname}
}
\frefformat{vario}{\fancyreflstlabelprefix}{\Frefl stname\fancyrefdefaultspacing#1#3}

\begin{document}
\section{foobar}
blub
\end{document}

Das Problem wird durch das package 'german' verursacht. Kommentiere ich die Zeile aus, kompilierts ohne Fehler. Wenn ich es durch 'ngerman' (neue deutsche Rechtschreibung oder?) ersetze, geht's auch.

Jedenfalls danke für Deine Hilfe.

gruss

bobmalaria
21-02-2007, 01:09
hi,

und wenn du
\usepackage[german]{babel} nimmst?
so macht man die sprachauswahl auch normalerweise.

gruß

zubi
22-02-2007, 20:11
und wenn du
\usepackage[german]{babel} nimmst?

...ist das Resultat leider das Gleiche.

gruss

rais
23-02-2007, 18:29
Moin moin,

...ist das Resultat leider das Gleiche.

kA woran's liegt, aber wenn Du so auf die alten Definitionen beharrst bzw. das so machen musst, versuch's mal mit


\usepackage{listings}
\usepackage[german]{fancyref}
%hier Deine Definitiononen f. fancyref...
\usepackage[german]{babel}

Und was spricht gegen \usepackage[ngerman]{babel} ?
MfG,

zubi
24-02-2007, 02:40
Ich bin frei in der Wahl der Definition. Ich dachte ihr wollt den Fehler genauer analysieren :).
Mir hat Dein funktionierendes Beispiel sehr geholfen und seitdem weiss ich an was es lag und kann es umgehen. Danke dafür!

Gruss

Merci
16-12-2009, 14:59
sorry, fürs hochholen... ich hab da ein ähnliches Problem... ich MUSS Theoreme und Lemmata mit hilfe von \Fref aufrufen können, bekomme es aber iwie gar nicht hin, hab das Bsp hier auch versucht umzuschreiben, wieder mal ein Fehler...
\usepackage[vario,german]{fancyref} wird verwendet...



\documentclass[12pt,DIV=12]{scrartcl}
\usepackage[latin1]{inputenc}
\usepackage[ngerman]{babel}
\usepackage[T1]{fontenc}
\usepackage{listings}
\usepackage{amsthm}
\usepackage{amssymb}
\usepackage[vario,german]{fancyref}
\usepackage{fancyvrb}
\VerbatimFootnotes
\newtheorem{thm}{Theorem}[section]
\newtheorem{lem}[thm]{Lemma}


des steht bisher in der Präambel...
Es soll so in etwa aussehen
Theorem\label{thm:Theorem} als Schlüssel
Das \Fref{thm:Theorem}

hier kann mir bestimmt jemand weiterhelfen, im fancyref auf CTAN hab ich geschaut, da soll es auch stehen, aber iwie scheine ich das nicht zu verstehen :(
Bin schonmal dankbar im Voraus