Anzeige:
Ergebnis 1 bis 9 von 9

Thema: Umgebungsname (Kapitel, Abschnitt, Tabelle etc.) von \auroref übernehmen

  1. #1
    Registrierter Benutzer
    Registriert seit
    14.05.2009
    Beiträge
    297

    Umgebungsname (Kapitel, Abschnitt, Tabelle etc.) von \auroref übernehmen

    Hallo,

    Ich habe \autoref benutzt für mein gesamtes Dokument und jetzt benötigte ich NUR den Namen der Umgebung bzw. des Abschnittes o. ä. den \autoref mit erzeugt hat zb:

    Tabelle, Abbildung, Unterabschnitt, Kapitel etc.

    kommt man da irgendwie ran?

    Vielen Dank

  2. #2
    Registrierter Benutzer
    Registriert seit
    14.05.2009
    Beiträge
    297
    Achja: Ziel des Ganzen war die Umstellung auf \vref{} und vorher habe ich \auroref benutzt und demnach hat autoref ja Abbildung etc. davor geschrieben, das war super. \vref macht das nicht mehr....

  3. #3
    Registrierter Benutzer Avatar von sommerfee
    Registriert seit
    02.07.2006
    Beiträge
    1.603
    Bei figure steht der Name (also z.B. "Abbildung") in \figurename usw.

    Liebe Grüße,
    Axel

  4. #4
    Registrierter Benutzer
    Registriert seit
    14.05.2009
    Beiträge
    297
    Ja, aber ich möchte, das die Art (Abbildung, Tabelle etc.) automatisch erkannt wird, da ich

    \newcommand{\myref}[1]{\vref{#1}}

    definiert habe. Die soll dann davorstehen wie \autoref das auch macht sonst. Bei mir im text stehen hunderte "siehe \myref{txt:bla}" zitate und das ging super mit \autoref, da automatisch dann Abb. oder Tab. davor stand.

  5. #5
    Registrierter Benutzer Avatar von sommerfee
    Registriert seit
    02.07.2006
    Beiträge
    1.603
    Code:
    \documentclass[german]{article}
    \usepackage{babel,hyperref}
    \makeatletter
    \def\myautoref#1{% modifiziertes \HyPsd@@@autoref aus hyperref
      \expandafter\ifx\csname r@#1\endcsname\relax
        ??%
      \else
        \expandafter\expandafter\expandafter\HyPsd@autorefname
            \csname r@#1\endcsname{}{}{}{}\@nil
      \fi}
    \makeatother
    \begin{document}
    \section{A}\label{A}
    \myautoref{A}
    \begin{figure}
    \caption{F}\label{F}
    \end{figure}
    \myautoref{F}
    \end{document}
    Getestet habe ich das mit hyperref 6.77e, es funktioniert aber hoffentlich auch mit neueren Versionen.

    Man beachte, daß \myautoref neben dem Namen auch ein Leerzeichen dahinter produziert.

    Liebe Grüße,
    Axel

  6. #6
    Registrierter Benutzer
    Registriert seit
    14.05.2009
    Beiträge
    297
    super!

    das funktioniert wunderbar!!

    verstehen tue ich das aber nicht

  7. #7
    Registrierter Benutzer Avatar von sommerfee
    Registriert seit
    02.07.2006
    Beiträge
    1.603
    Zitat Zitat von sharpType Beitrag anzeigen
    verstehen tue ich das aber nicht
    Ich habe in hyperref die Codestelle rausgesucht, die von \autoref verwendet wird, um Namen und Nummer darzustellen. Das passende Makro heißt in hyperref \HyPsd@@@autoref, das habe ich genommen und in \myautoref umbenannt, und dann einfach nur die beiden Zeilen entfernt, die für die Nummer zuständig sind, so daß nur noch Name+Leerzeichen ausgegeben wird. Das ganze ist also einfach nach dem Motto "gut geklaut ist halb selbst programmiert" entstanden.

    Verstehen muß man das IMHO nicht wirklich, es reicht darauf zu vertrauen, daß der Entwickler von hyperref wußte, was er da tut. Allerdings hat man sich damit den Nachteil erkauft, daß diese Lösung nur solange funktioniert, solange Heiko nichts wesentliches an diesen hyperref-Interna ändert.

    Möchte man es dennoch verstehen, so sollte ein Blick in die kommentierten Quelltexte von hyperref helfen, nachdem man sich vorher mit dem TeX-Book von Donald Knuth bewaffnet hat.

    Liebe Grüße,
    Axel

  8. #8
    Registrierter Benutzer
    Registriert seit
    14.05.2009
    Beiträge
    297
    nicht schlecht, vielleicht schau ich mir das auch mal an bei gelegenheit

  9. #9
    Registrierter Benutzer Avatar von sommerfee
    Registriert seit
    02.07.2006
    Beiträge
    1.603
    Zitat Zitat von sharpType Beitrag anzeigen
    Ja, aber ich möchte, das die Art (Abbildung, Tabelle etc.) automatisch erkannt wird, da ich

    \newcommand{\myref}[1]{\vref{#1}}

    definiert habe. Die soll dann davorstehen wie \autoref das auch macht sonst.
    Code:
    \renewcommand*{\myref}[1]{\hyperref[#1]{\autoref*{#1} \vpageref{#1}}
    (\HyPsd@@@autoref braucht mal also für diesen Fall gar nicht.)

Lesezeichen

Berechtigungen

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