PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : \Nameref umdefinieren



Federstrich
05-09-2009, 13:34
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:

\def\Nameref#1{`\nameref{#1}' on page~\pageref{#1}}



Ihr seht schon, dass ich in einem deutschen Text kein "siehe "Kapitel 1" on page 12" gebrauchen kann.
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

rais
05-09-2009, 14:25
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


\renewcommand*\Nameref[1]{`\nameref{#1}' auf Seite~\pageref{#1}}

oder wie auch immer.;-)

MfG

Federstrich
05-09-2009, 14:49
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:

\renewcommand*\Nameref[1]{>>\ref{#1} \nameref{#1}<< auf Seite~\pageref{#1}}


Vielen Dank für die schnelle, unkomplizierte Hilfe,
euer Federstrich

u_fischer
05-09-2009, 15:07
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:


\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}

Federstrich
05-09-2009, 19:02
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:


\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

rais
06-09-2009, 00:03
Moin moin,


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,


\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