Anzeige:
Ergebnis 1 bis 6 von 6

Thema: \Nameref umdefinieren

  1. #1
    Registrierter Benutzer
    Registriert seit
    25.02.2007
    Beiträge
    45

    \Nameref umdefinieren

    Liebes Forum,

    ich benutze das \nameref-Paket aus dem \hyperref-Package um statt der Kapitelnummer den Namen des Kapitels (der Sektion etc.) ausgeben zu lassen. In der nameref.sty habe ich gesehen, dass es die Möglichkeit gibt, mittels Großschreibung des Befehls, also \Nameref{}, den Kapitelnamen in einfachen Anführungszeichen mit Seitenzahl zu erhalten. Das funktioniert wunderbar, hat aber zwei Schönheitsfehler:

    Der Befehl in der sty-Datei lautet folgendermaßen:
    Code:
    \def\Nameref#1{`\nameref{#1}' on page~\pageref{#1}}
    1. Ihr seht schon, dass ich in einem deutschen Text kein "siehe "Kapitel 1" on page 12" gebrauchen kann.
    2. Außerdem benutze ich csquotes, das mir automatisch französische Guillemets (also >>text<<, statt "text") erstellt. Die werden so aber nicht ausgegeben.


    Jetzt wäre es ein Leichtes, die Anführungszeichen und die Seitenangabe in der sty-Datei zu ändern. Würde das aber nicht bedeuten, dass bei einem Update die Einstellung verloren geht?

    Kann mir jemand zeigen, wie ich mit \newcommand oder \renewcommand den Befehl in der Präambel umdefiniere?

    Vielen Dank im Voraus,
    euer Federstrich
    Die Feder ist mächtiger als...

  2. #2
    Registrierter Benutzer Avatar von rais
    Registriert seit
    18.07.2005
    Beiträge
    5.862
    Moin moin,
    warum kopierst Du es nicht einfach so in Deine Präambel und passt es da an?
    \def funzt da auch und Du bist Dir ja bereits bewußt, daß Du einen bereits vorhandenen Befehl überschreibst. Alternativ
    Code:
    \renewcommand*\Nameref[1]{`\nameref{#1}' auf Seite~\pageref{#1}}
    oder wie auch immer.;-)

    MfG
    Rainer
    There's nothing a good whack with a hammer won't fix!

  3. #3
    Registrierter Benutzer
    Registriert seit
    25.02.2007
    Beiträge
    45
    Hallo Rainer,

    vielen Dank! Du hast mir sehr geholfen. Obwohl ich schon seit einer ganzen Weile LaTeX benutze, habe ich mich nie mit der Definition neuer Befehle beschäftigt. Langsam fange ich an zu begreifen, wie praktisch solche Befehle sind, da sie so viel Tipparbeit ersparen.

    Da csquotes meine Anführungszeichen nicht umwandeln wollte (funktioniert sonst im ganzen Dokument wie gewollt), musste ich etwas tricksen.

    Ich habe mir jetzt folgendermaßen beholfen, sieht zwar schräg aus, aber funktioniert:
    Code:
    \renewcommand*\Nameref[1]{>>\ref{#1} \nameref{#1}<< auf Seite~\pageref{#1}}
    Vielen Dank für die schnelle, unkomplizierte Hilfe,
    euer Federstrich
    Die Feder ist mächtiger als...

  4. #4
    Registrierter Benutzer
    Registriert seit
    19.05.2009
    Beiträge
    4.045
    Wenn "schräge" Lösungen nötig sind, ist das oft ein Hinweis auf Fehler im Dokument. Mache ein vollständiges, lauffähiges Beispiel, das dein Problem demonstriert. Bei mir funktioniert csquotes problemlos innerhalb von Definitionen:

    Code:
    \documentclass{scrartcl}
    \usepackage[T1]{fontenc}
    \usepackage[ansinew]{inputenc}
    \usepackage[ngerman]{babel}
    \usepackage[babel]{csquotes}
    \MakeAutoQuote «»
    \newcommand*\testref[1]{«\ref{#1}» auf Seite~\pageref{#1}}
    \begin{document}
    \section{A}
    \label{test}
    \testref{test}
    
    «test»
    \end{document}

  5. #5
    Registrierter Benutzer
    Registriert seit
    25.02.2007
    Beiträge
    45
    Hallo Ulrike,

    vielen Dank für dein Hilfsangebot! Mit "schräg" meinte ich, dass ich meine normalen Anführungszeichen (also "`..."' in der Textzeile nicht benutzen konnte. Mit >>...<< funktioniert das Beispiel aber wie gewollt.

    Im Minimalbeispiel ist zu sehen, dass ich für Verweise "meine" Anführungszeichen nicht verwenden kann. Wie gesagt, das funktioniert sonst ganz gut, nur nicht eben im Querverweis:

    Code:
    \documentclass{scrartcl}
    \usepackage[T1]{fontenc}
    \usepackage[ansinew]{inputenc}
    \usepackage[ngerman]{babel}
    \usepackage[babel,german=guillemets]{csquotes}
    \defineshorthand{"`}{\openautoquote}
    \defineshorthand{"'}{\closeautoquote}
    \newcommand*\testref[1]{"`\ref{#1}"' auf Seite~\pageref{#1}}
    \begin{document}
    \section{A}
    \label{test}
    \testref{test}
    
    Das ist der «test» von Ulrike,\\
    das hier ist mein "`test"'.
    \end{document}
    Ich glaube nicht, dass da ein Fehler ist, sondern eher, dass meine Definition von csquotes nicht für testref übernommen wurde. Wenn ich \open- oder \closeautoquote statt "` und "' einsetzt, klappt alles wunderbar...

    Für mich ist die Geschichte gelöst, vielen Dank für dein Interesse,
    Federstrich
    Die Feder ist mächtiger als...

  6. #6
    Registrierter Benutzer Avatar von rais
    Registriert seit
    18.07.2005
    Beiträge
    5.862
    Moin moin,
    Zitat Zitat von Federstrich Beitrag anzeigen
    Im Minimalbeispiel ist zu sehen, dass ich für Verweise "meine" Anführungszeichen nicht verwenden kann. Wie gesagt, das funktioniert sonst ganz gut, nur nicht eben im Querverweis:
    evtl kommt etwas bei der Definition des \testref-Befehls durcheinander, weil " von babel noch nicht aktiviert wurde,
    Code:
    \documentclass{scrartcl}
    \usepackage[T1]{fontenc}
    \usepackage[utf8]{inputenc}
    \usepackage[ngerman]{babel}
    \usepackage[babel,german=guillemets]{csquotes}
    \defineshorthand{"`}{\openautoquote}
    \defineshorthand{"'}{\closeautoquote}
    \shorthandon{"}
    \newcommand*\testref[1]{"`\ref{#1}"' auf Seite~\pageref{#1}}
    \shorthandoff{"}
    \begin{document}
    \section{A}
    \label{test}
    \testref{test}
    \end{document}
    tut bei mir.;-)

    MfG
    Rainer
    There's nothing a good whack with a hammer won't fix!

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •