Discussion:
Verhalten von autoref an eqref anpassen
(zu alt für eine Antwort)
Mathias Lindner
2007-05-07 17:00:23 UTC
Permalink
Hallo

Hier wurde bereits schonmal die selbe Frage gestellt, leider ohne Antwort:

http://groups.google.com/group/de.comp.text.tex/msg/1ef2df8c16094100

Ich möchte also das Verhalten von autoref dahingehend anpassen, dass
Gleichungsreferenzen mit Klammern angegeben werden (wie das eqref
macht), Referenzen auf andere Elelmente aber nach wie vor ohne Klammern.
Also:

\autoref{eq_1} -> Gleichung (1.1)

\autoref{tab_1} -> Tabelle 1.1

Autoref erkennt doch intern, ob eine Gleichung oder etwas anderes
vorliegt, dementsprechend werden ja auch die Bezeichner gesetzt. Kann
man da keine Anpassung vornehmen?

Alternativ könnte ja auch das Argument von autoref ausgewertet werden --
sämtliche Labels für Formeln beginnen bei mir mit "eq_".

Kann mir jemand einen Hinweis geben, wie man an diese Aufgabe rangeht
oder hat sogar jemand eine Lösung parat?

Man(n) dankt!

Mathias
Norbert Melzer
2007-05-07 17:25:22 UTC
Permalink
Post by Mathias Lindner
Hallo
http://groups.google.com/group/de.comp.text.tex/msg/1ef2df8c16094100
Ich möchte also das Verhalten von autoref dahingehend anpassen, dass
Gleichungsreferenzen mit Klammern angegeben werden (wie das eqref
macht), Referenzen auf andere Elelmente aber nach wie vor ohne Klammern.
\autoref{eq_1} -> Gleichung (1.1)
\autoref{tab_1} -> Tabelle 1.1
Autoref erkennt doch intern, ob eine Gleichung oder etwas anderes
vorliegt, dementsprechend werden ja auch die Bezeichner gesetzt. Kann
man da keine Anpassung vornehmen?
Alternativ könnte ja auch das Argument von autoref ausgewertet werden --
sämtliche Labels für Formeln beginnen bei mir mit "eq_".
Kann mir jemand einen Hinweis geben, wie man an diese Aufgabe rangeht
oder hat sogar jemand eine Lösung parat?
Man(n) dankt!
Mathias
Schau mal in die Doku zu Hyperref :-) Da steht daß Du \equationname
umbenennen sollst, bzw. \AMSname. Ein Beispiel gibt es auch dazu für eine
andere Referenz-Art:

--- QUOTE ---
Example for a redefinition if babel is used:

\usepackage[ngerman]{babel}
\addto\extrasngerman{%
\def\subsectionautorefname{Unterkapitel}%
}
--- \QUOTE ---

Zu finden zB hier:

CTAN:/pub/tex-archive/macros/latex/contrib/hyperref/doc/manual.html#x1-120004

HTH
Norbert
Ulrich Diez
2007-05-07 20:14:11 UTC
Permalink
[...]
Post by Norbert Melzer
Post by Mathias Lindner
Ich möchte also das Verhalten von autoref dahingehend anpassen, dass
Gleichungsreferenzen mit Klammern angegeben werden (wie das eqref
macht), Referenzen auf andere Elelmente aber nach wie vor ohne Klammern.
\autoref{eq_1} -> Gleichung (1.1)
\autoref{tab_1} -> Tabelle 1.1
[...]
Post by Norbert Melzer
Schau mal in die Doku zu Hyperref :-) Da steht daß Du \equationname
umbenennen sollst, bzw. \AMSname. Ein Beispiel gibt es auch dazu für eine
Wieso sollte der OP \equationname umbenennen?
Wenn, dann sollte er was umdefinieren.
Und zwar \equationautorefname.
Dessen Definiert-sein wird zuerst abgeprüft, und wenn es definiert
ist, wird das genommen, auch wenn zusätzlich noch \equationname
definiert ist.
Und wenn der OP auch unbedingt Klammern haben will, muss er
dazu eventuell in den Quellcode vom hyperref-package reinschauen,
damit er die Argumentbegrenzer richtig macht.

Das untenstehende Beispiel läuft bei mir jedenfalls fehlerlos durch,
wobei ich zugegebenermassen grade nur auf ein altes MiKTeX 2.4
mit einem alten Package
hyperref 2003/11/30 v6.74m Hypertext links for LaTeX
Zugriff habe.

Ulrich

\documentclass{book}
\usepackage[ngerman]{hyperref}
\makeatletter
\@ifdefinable\equationname{%
\let\equationname\equationautorefname
}
\def\equationautorefname~#1\@empty\@empty\null{%
\equationname~(#1\@empty\@empty\null)%
}%
\makeatother
\begin{document}
\chapter{Erstes Kapitel}
\begin{equation}
x^2+2xy+y^2=\left(x+y\right)^2\label{eq_1}
\end{equation}
\begin{table}
Eine Gleitumgebung \caption{Tabelle} \label{tab_1}
\end{table}
Verweis auf die \autoref{eq_1}

Verweis auf die \autoref{tab_1}
\end{document}
Norbert Melzer
2007-05-07 20:40:43 UTC
Permalink
Post by Ulrich Diez
[...]
Post by Norbert Melzer
Post by Mathias Lindner
Ich möchte also das Verhalten von autoref dahingehend anpassen, dass
Gleichungsreferenzen mit Klammern angegeben werden (wie das eqref
macht), Referenzen auf andere Elelmente aber nach wie vor ohne Klammern.
\autoref{eq_1} -> Gleichung (1.1)
\autoref{tab_1} -> Tabelle 1.1
[...]
Post by Norbert Melzer
Schau mal in die Doku zu Hyperref :-) Da steht daß Du \equationname
umbenennen sollst, bzw. \AMSname. Ein Beispiel gibt es auch dazu für eine
Wieso sollte der OP \equationname umbenennen?
Wenn, dann sollte er was umdefinieren.
*grins*
Ja war in Eile :-)
Post by Ulrich Diez
Und zwar \equationautorefname.
Dessen Definiert-sein wird zuerst abgeprüft, und wenn es definiert
ist, wird das genommen, auch wenn zusätzlich noch \equationname
definiert ist.
Das hatte ich übersehen, s.o.
Post by Ulrich Diez
Und wenn der OP auch unbedingt Klammern haben will, muss er
dazu eventuell in den Quellcode vom hyperref-package reinschauen,
damit er die Argumentbegrenzer richtig macht.
Und als ich genau das tun wollte mit bischen mehr Zeit, habe ich überhaupt
nix gefunden, ich glaub da hätte man auch Chinesisch mit mir reden können,
aber der Inhalt der hyperref.sty war mir irgendwie zu kompliziert...
\providepackage und \requirepackage hab ich noch so eben nachvollziehen
können.

MfG

Norbert
Ulrich Diez
2007-05-07 20:51:54 UTC
Permalink
Post by Norbert Melzer
Post by Ulrich Diez
Und wenn der OP auch unbedingt Klammern haben will, muss er
dazu eventuell in den Quellcode vom hyperref-package reinschauen,
damit er die Argumentbegrenzer richtig macht.
Und als ich genau das tun wollte mit bischen mehr Zeit, habe ich überhaupt
nix gefunden, ich glaub da hätte man auch Chinesisch mit mir reden können,
aber der Inhalt der hyperref.sty war mir irgendwie zu kompliziert...
\providepackage und \requirepackage hab ich noch so eben nachvollziehen
können.
Das Problem kenne ich und habe mir (seinerzeit) wie folgt beholfen:
- Das ganze hyperref-package von CTAN runtergeladen
- Das gepackte Archiv entpackt und aus den dtx-files die pdf-Datei
hyperref.pdf mit den commented sources erstellt.
- hyperref.pdf-Datei mit Acrobat mit Acrobat geöffnet und
erstmal die Suchfunktion nach \autoref suchen lassen...

Mit dem reinen sty-file ohne die Kommentare wäre/war ich auch
überfordert. Also nichts für ungut.

Gruss

Ulrich
Norbert Melzer
2007-05-07 21:04:56 UTC
Permalink
Post by Ulrich Diez
Post by Norbert Melzer
Und als ich genau das tun wollte mit bischen mehr Zeit, habe ich überhaupt
nix gefunden, ich glaub da hätte man auch Chinesisch mit mir reden können,
aber der Inhalt der hyperref.sty war mir irgendwie zu kompliziert...
\providepackage und \requirepackage hab ich noch so eben nachvollziehen
können.
- Das ganze hyperref-package von CTAN runtergeladen
- Das gepackte Archiv entpackt und aus den dtx-files die pdf-Datei
hyperref.pdf mit den commented sources erstellt.
- hyperref.pdf-Datei mit Acrobat mit Acrobat geöffnet und
erstmal die Suchfunktion nach \autoref suchen lassen...
Mit dem reinen sty-file ohne die Kommentare wäre/war ich auch
überfordert. Also nichts für ungut.
Der Kommentierte Source ist ja dank MikTeX auch über texdoc zu erreichen,
aber dafür bin ich im Moment zu müde. Aber vielleicht verschaffe ich mir ja
mal die nächsten Tage "Just4Fun" einen kleinen überblick, vielleicht lerne
ich was dabei...
Mathias Lindner
2007-05-08 07:53:59 UTC
Permalink
Ulrich Diez schrieb:
...
Post by Ulrich Diez
\documentclass{book}
\usepackage[ngerman]{hyperref}
\makeatletter
\let\equationname\equationautorefname
}
}%
\makeatother
\begin{document}
\chapter{Erstes Kapitel}
\begin{equation}
x^2+2xy+y^2=\left(x+y\right)^2\label{eq_1}
\end{equation}
\begin{table}
Eine Gleitumgebung \caption{Tabelle} \label{tab_1}
\end{table}
Verweis auf die \autoref{eq_1}
Verweis auf die \autoref{tab_1}
\end{document}
Super, das ist genau das, was ich wollte. Ich benutze auch noch ein
MikTex 2.4, weiß also auch nicht, ob das bei höheren Versionen
funktioniert...

Vielen Dank für die schnelle Antwort!

MfG
Mathias

Loading...