Anzeige:
Ergebnis 1 bis 13 von 13

Thema: hyperref: "Abbildung 1.1" und nicht nur "1.1" als hyperlink

  1. #1
    Registrierter Benutzer
    Registriert seit
    05.09.2006
    Beiträge
    361

    hyperref: "Abbildung 1.1" und nicht nur "1.1" als hyperlink

    Hallo,

    habe schon sehr viel Zeit aufgewendet um z.B. "Abbildung 1.1" und nicht nur Abbildung "1.1" als hyperlink darstellen zu können. Und damit meine ich nicht das hyperref internet \autoref{Marke}, weil ich es gerne zusammen mit varioref nutzen möchte. Unten habe ich einen Befehl für Abbildung gefunden.

    Habe:
    \providecommand*{\abbvrefname}{Abbildung}\newcomma nd*{\abbvref}[1]{\hyperref[#1]{\abbvrefname}\vref{#1}
    im Netz gefunden, leider weiß ich echt nicht, wie ich es anwenden soll (was ist der Befehl und wo soll ich hier den label setzten, kommt das in die Preämbel?).

    Kann ich {Abbildung} problemlos in {\figurename} ändern (muss Protokolle in deutsch und in englisch schreiben, so ist es viel allgemeiner)?
    Wie kann ich den Befehl auch für Tabellen nutzen?

    Vielen Dank für Eure Hilfe!
    Ubuntu 14.04 LTS, Texstudio 2.6, TeX Live 2014 (manuell installiert)

  2. #2
    Registrierter Benutzer Avatar von rais
    Registriert seit
    18.07.2005
    Beiträge
    5.859
    Zitat Zitat von ElGato Beitrag anzeigen
    Hallo,

    habe schon sehr viel Zeit aufgewendet um z.B. "Abbildung 1.1" und nicht nur Abbildung "1.1" als hyperlink darstellen zu können. Und damit meine ich nicht das hyperref internet \autoref{Marke}, weil ich es gerne zusammen mit varioref nutzen möchte. Unten habe ich einen Befehl für Abbildung gefunden.

    Habe:
    \providecommand*{\abbvrefname}{Abbildung}\newcomma nd*{\abbvref}[1]{\hyperref[#1]{\abbvrefname}\vref{#1}
    im Netz gefunden, leider weiß ich echt nicht, wie ich es anwenden soll (was ist der Befehl und wo soll ich hier den label setzten, kommt das in die Preämbel?).
    so, wie sich der Befehl anhört, ist er als Ersatz für \vref gedacht, ein \label setzt Du also wie gewohnt hinter \caption, packst die Definition in die Präambel, und nutzt \abbvref{marke} im Text.
    Zitat Zitat von ElGato Beitrag anzeigen
    Kann ich {Abbildung} problemlos in {\figurename} ändern (muss Protokolle in deutsch und in englisch schreiben, so ist es viel allgemeiner)?
    Evtl tut es bereits
    Code:
    \newcommand*{\abbvref}[1]{\hyperref[#1]{\figurename}\vref{#1}}
    Zitat Zitat von ElGato Beitrag anzeigen
    Wie kann ich den Befehl auch für Tabellen nutzen?
    da dürfte das Einfachste ein entsprechend zweiter Befehl sein:
    Code:
    \newcommand*{\tabvref}[1]{\hyperref[#1]{\tablename}\vref{#1}}
    dann solltest Du mit \abbvref{fig:marke} bzw. \tabvref{tab:marke} entsprechend getrennt auf Abbildungen und Tabellen verweisen können.

    d.h. evtl müsstest Du noch ein \thefigure an \figurename, \thetable an \tablename anschließen...
    MfG,
    Rainer
    There's nothing a good whack with a hammer won't fix!

  3. #3
    Registrierter Benutzer
    Registriert seit
    05.09.2006
    Beiträge
    361
    Hi rais,

    Du glaubst ja gar nicht, wie dankbar ich Dir bin!

    Vielen, vielen Dank!!!!!!!!!!!!!!!!!!!!

    Ich habe echt Stunden mit diesem Problem verbracht, aber nun ist es gelöst!

    Nochmals Danke!
    ElGato
    Ubuntu 14.04 LTS, Texstudio 2.6, TeX Live 2014 (manuell installiert)

  4. #4
    Registrierter Benutzer
    Registriert seit
    05.09.2006
    Beiträge
    361
    Hallo,

    tut mir leid, über Nacht ist mir etwas eingefallen.
    Also Deine Anleitung funktioniert perfekt keine Frage, aber wie kann ich genau daselbe mit
    Kapiteln (chapter), Abschnitten (section), Unterabschnitten (subsection), Unterunterabschnitten (subsubsection) machen? Am Besten mit etwas globalen, also einem Namen für Chapter, wie für Abbildung {\figurename} das gleich verschiedene Sprachen abdeckt.

    Genau hier versuche ich die \autoref{} Befehle mit den \vref{} Befehlen zu kombinieren.
    Schade, dass es für sowas kein Packet gibt :-(

    So etwas gab es bisher noch nie im Netz, wäre toll, wenn es jemand schafft.
    Ubuntu 14.04 LTS, Texstudio 2.6, TeX Live 2014 (manuell installiert)

  5. #5
    Registrierter Benutzer Avatar von rais
    Registriert seit
    18.07.2005
    Beiträge
    5.859
    Hallo,
    Zitat Zitat von ElGato Beitrag anzeigen
    tut mir leid, über Nacht ist mir etwas eingefallen.
    Also Deine Anleitung funktioniert perfekt keine Frage, aber wie kann ich genau daselbe mit
    Kapiteln (chapter), Abschnitten (section), Unterabschnitten (subsection), Unterunterabschnitten (subsubsection) machen? Am Besten mit etwas globalen, also einem Namen für Chapter, wie für Abbildung {\figurename} das gleich verschiedene Sprachen abdeckt.
    Naja, \chaptername sollte eigentlich bereits definiert sein, d.h. bei den KOMA-Klassen gab's afaik auch einen Befehl, der gleich zwischen normalen Kapiteln und solchen im Anhang unterschieden hat, mußt Du mal im scrguide nachlesen.
    Für die (Unter...)Abschnitte gab's afaik keine vordefinierten Namen, die könntest Du aber selbst anlegen, z.B.
    Code:
    \newcommand{\sectionname}{section}
    und vllt mit babel auch gleich
    Code:
    \addto\captionsngerman{%
      \renewcommand{\sectionname}{Abschnitt}%
    }
    \addto\captionsspanish{%
      \renewcommand{\sectionname}{wie-auch-immer-ein-Abschnitt-auf-Spanisch-heißt}%
    }
    :
    definieren, das sollte unterschiedliche Sprachunterstützung gleich mit abhaken.
    So könntest Du nach demgleichen Strickmuster wie bei \abbvref entsprechende Befehle bereitstellen - das ist zwar noch etwas umständlich, aber mir fällt im Moment nix dazu ein, wie man anhand der Marke rausbekommen könnte, worauf sie denn verweist (dann bräuchte man wieder nur einen Befehl im Text zu verwenden) - aber dann sitz' ich auch gerade nicht an meinem heimischen Rechner und könnt' drauflosprobieren
    MfG,
    Rainer
    There's nothing a good whack with a hammer won't fix!

  6. #6
    Registrierter Benutzer
    Registriert seit
    05.09.2006
    Beiträge
    361
    Hi,

    habe mich wieder durch die hyperref doku gekämpft und habe die optimale Lösung gefunden:

    \newcommand*{\fvref}[1]{\hyperref[#1]{\figurename}\vref{#1}} % Abbildung + Nr., als hyperlink mit varioref
    \newcommand*{\tvref}[1]{\hyperref[#1]{\tablename}\vref{#1}} % Tabelle + Nr., als hyperlink mit varioref
    \newcommand*{\chaptervref}[1]{\hyperref[#1]{\chapterautorefname}\vref{#1}} % Kapitel + Nr., als hyperlink mit varioref
    \newcommand*{\sectionvref}[1]{\hyperref[#1]{\sectionautorefname}\vref{#1}} % Abschnitt + Nr., als hyperlink mit varioref
    \newcommand*{\subsectionvref}[1]{\hyperref[#1]{\subsectionautorefname}\vref{#1}} % Unterabschnitt + Nr., als hyperlink mit varioref

    So sind die Befehle sehr flexible und die Bezeichnungen (Kapitel, chapter, Abschnitt, section...) richten sich nach der dementsprechenden Sprache.

    Viel Spaß damit!

    ElGato
    Ubuntu 14.04 LTS, Texstudio 2.6, TeX Live 2014 (manuell installiert)

  7. #7
    Registrierter Benutzer
    Registriert seit
    05.09.2006
    Beiträge
    361
    Es gibt bei jedem 2. Kompilieren mit Xetex einen Fehler, wenn es zu einem Seitenumbruch des Hyperlinks kommt. Dabei gibt es mal 2 Seiten (mit Fehler) und mal 3 Seiten:

    Code:
    \documentclass{scrbook}
    \usepackage{xltxtra}
    \usepackage[ngerman]{babel}
    \usepackage[german]{varioref}
    \usepackage{hyperref}
    
    \newcommand*{\fvref}[1]{\hyperref[#1]{\figurename}\vref{#1}}
    
    
    \begin{document}
    \begin{figure}
    \rule{5cm}{4cm}\label{Bild1}
    \caption{Quadrat}
    \end{figure}
    \clearpage
    
    \vspace*{20cm}
    
    \hspace{10cm} \fvref{Bild1}.
    
    \end{document}
    Fehler:

    Code:
    LaTeX Info: Redefining \ref on input line 10.
    LaTeX Info: Redefining \pageref on input line 10.
    LaTeX Info: Redefining \nameref on input line 10.
    (./Hyperref.out) (./Hyperref.out)
    \@outlinefile=\write3
    \openout3 = `Hyperref.out'.
    LaTeX Info: Redefining \Ref on input line 10.
    (/usr/local/texlive/2010/texmf-dist/tex/generic/oberdiek/se-ascii-print.def
    File: se-ascii-print.def 2010/03/01 v1.8 stringenc: Printable ASCII characters
    )
    [1]
    ! Package varioref Error: \vref at page boundary 2-3 (may loop).
    See the varioref package documentation for explanation.
    Type H  for immediate help.
    ...
    l.19 \hspace{10cm} \fvref{Bild1}
    .
    Please check the pages in question. You might need to replace the \vref
    or \vpageref by a normal \(page)ref to stop LaTeX running forever.
    Package atveryend Info: Empty hook `BeforeClearDocument' on input line 21.
    [2
    ]
    Package atveryend Info: Empty hook `AfterLastShipout' on input line 21.
    (./Hyperref.aux)
    Package atveryend Info: Empty hook `AtVeryEndDocument' on input line 21.
    Package atveryend Info: Empty hook `AtEndAfterFileList' on input line 21.
    LaTeX Warning: Label(s) may have changed. Rerun to get cross-references right.
    Package atveryend Info: Empty hook `AtVeryVeryEnd' on input line 21.
    )
    Here is how much of TeX's memory you used:
    17343 strings out of 494522
    287314 string characters out of 3156642
    407125 words of memory out of 3000000
    20441 multiletter control sequences out of 15000+200000
    3964 words of font info for 18 fonts, out of 3000000 for 9000
    670 hyphenation exceptions out of 8191
    52i,7n,51p,547b,337s stack positions out of 5000i,500n,10000p,200000b,50000s
    Output written on Hyperref.pdf (2 pages).
    Wie kann ich den Fehler loswerden?

    Vielen Dank und liebe Grüße,

    ElGato
    Ubuntu 14.04 LTS, Texstudio 2.6, TeX Live 2014 (manuell installiert)

  8. #8
    Registrierter Benutzer
    Registriert seit
    05.09.2006
    Beiträge
    361

    Lösung

    Das Problem lag an varioref und ist in der Dokumentation beschrieben:

    Suppose, for example, that a generated text like ‘on the next page’ gets broken across pages. If this happens it is very difficult to find an acceptable solution and in fact can even result in a document that will always change from one state to another (i.e., inserting one string, finding that this is wrong, inserting another string on the next run which makes the first string correct again, inserting . . . ). The current implementation of varioref therefore issues an error message whenever the generated text is broken across page boundaries, e.g.,

    table 5 on the current (pagebreak) page

    would would result in an error, which needs to be resolved by the user by replacing the \vref command with an ordinary \ref just before the final run. This is not completely satisfactory but in such case no solution really is. During document preparation, while one is still changing the text, such error messages can be turned into warnings by placing a \vrefwarning command in the preamble.
    Heute bin ich auf die Idee gekommen, den Vorschlag von rais etwas zu modifizieren, indem ich das Paket cleveref verwende, das automatisch die richtigen Bezeichnungen (Abbildung, Tabelle, Kapitel ...) ausgibt.

    Code:
    \renewcommand*{\cref}[1]{\hyperref[#1]{\rightarrow \vref{#1}}}
    Wäre diese Umdefinierung in dieser Form okay?

    Liebe Grüße,

    ElGato

    Code:
    \documentclass{scrreprt}
    \usepackage{xltxtra}
    \usepackage[ngerman]{babel}
    \usepackage[german]{varioref}
    \usepackage{hyperref}
    \usepackage[all]{hypcap}
    \usepackage[german]{cleveref}
    
    \renewcommand*{\cref}[1]{\hyperref[#1]{Pointinghand \vref{#1}}}
    
    \begin{document}
    \chapter{test}\label{test}
    Hier steht nur etwas Dummytext, damit ich die Zeile voll kriege. Siehe
    \cref{test}.
    \clearpage
    
    \section{Sektion}\label{Sektion}
    \begin{figure}
    \rule{5cm}{4cm}
    \caption{Quadrat}\label{fig:Bild1}
    \end{figure}
    
    Siehe \cref{fig:Bild1} oder \cref{test}
    
    \end{document}
    Ubuntu 14.04 LTS, Texstudio 2.6, TeX Live 2014 (manuell installiert)

  9. #9
    Registrierter Benutzer
    Registriert seit
    23.03.2008
    Beiträge
    128
    Respekt, deinen alten Thread auszubuddeln und darin weiterzuposten statt einen neuen aufzumachen :-)

    Bei deinem Problem kann ich dir jedoch leider nicht helfen :-(

  10. #10
    Registrierter Benutzer
    Registriert seit
    10.07.2010
    Ort
    Offenhausen
    Beiträge
    654
    Könnte auch ein Problem mit xelatex sein:
    http://www.komascript.de/node/1486
    Dein erstes Beispiel funktioniert übrigens auch, wenn ich mit Text, anstatt mit \vspace oder \hspace arbeite, und einige Umformungen mache.
    Siehe auch Deinen Post
    http://www.mrunix.de/forums/showthread.php?t=71502

    Code:
    \listfiles
    \documentclass{scrbook}
    \usepackage{xltxtra}
    \usepackage[ngerman]{babel}
    \usepackage[german]{varioref}
    \usepackage{blindtext}
    \usepackage{hyperref}
    
    \newcommand*{\fvref}[1]{\hyperref[#1]{\figurename}\vref{#1}}
    
    
    \begin{document}
    Siehe auch \fvref{Bild2}.
    \begin{figure}
    \rule{5cm}{4cm}
    \caption{Quadrat}\label{Bild1}
    \end{figure}
    \blindtext[5] \fvref{Bild1}.
    \begin{figure}[h]
    \rule{5cm}{4cm}
    \caption{Quadrat}\label{Bild2}
    \end{figure}
    Siehe auch \fvref{Bild2}.
    \end{document}
    Siehe Anhang.
    Gruß, Sepp.-

  11. #11
    Registrierter Benutzer
    Registriert seit
    05.09.2006
    Beiträge
    361

    Zu spät veröffentlicht

    Hallo,

    ich schätze, ich habe zu lange geschrieben, so dass schon 2 Antworten da waren ... Meine Lösung seht ihr oben.

    Ich wollte keinen neuen Thread eröffnen: Besser eines in dem alles steht (kenne mich aber mit Foren nicht soo gut aus).

    Danke für eure Antworten, aber wie schon gesagt, der Fehler liegt wohl an varioref.
    Ubuntu 14.04 LTS, Texstudio 2.6, TeX Live 2014 (manuell installiert)

  12. #12
    Registrierter Benutzer Avatar von sommerfee
    Registriert seit
    02.07.2006
    Beiträge
    1.603
    Zitat Zitat von ElGato Beitrag anzeigen
    Genau hier versuche ich die \autoref{} Befehle mit den \vref{} Befehlen zu kombinieren.
    Schade, dass es für sowas kein Packet gibt :-(

    So etwas gab es bisher noch nie im Netz, wäre toll, wenn es jemand schafft.
    Ist die Problematik eigentlich noch aktuell?

    Wenn ja, gibt es hier einige Beispiele:

    http://www.mrunix.de/forums/showthread.php?t=65531
    http://www.mrunix.de/forums/showthread.php?t=71566

    (Die Sache mit den x verschiedenen Befehlen, für jede Gliederungsebene einen, kann man sich also sparen.)

  13. #13
    Registrierter Benutzer
    Registriert seit
    05.09.2006
    Beiträge
    361

    Smile

    Die Problematik ist nicht mehr aktuelle, da ich nun cleveref verwende.

    Varioref verursacht Fehler, wenn es zu einem Seitenumbruch IM Verweis kommt. Beispiel: Der Verweise "siehe nächste Seite" ist falsch, wenn der Verweis auf der vorherigen Seite anfängt und auf der Seite, wo der Verweis hinführt endet.

    Diesen Fehler kann man in als Warnung ausgeben lassen, dann geht wenigstens das Kompilieren fehlerfrei. Hierzu reicht der Befehl

    \vrefwarning

    Mittlerweile kombiniere ich die Mischung aus hyperref, varioref und cleveref:

    \renewcommand*{\cref}[1]{\hyperref[#1]{ZEICHEN \vref{#1}}} %Kombination aus cleveref und hyperref

    Es reduziert einen Haufen Befehle und funktioniert ganz gut.

    Mehr gibts hier:

    http://www.mrunix.de/forums/showthread.php?t=71502

    Hier wird auch das Problem behandelt, dass auf Verweise im Fließtext, Fußnote erwähnt wird.
    Ubuntu 14.04 LTS, Texstudio 2.6, TeX Live 2014 (manuell installiert)

Stichworte

Lesezeichen

Berechtigungen

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