Anzeige:
Ergebnis 1 bis 5 von 5

Thema: Spaß mit biblatex und hyperref

  1. #1
    Registrierter Benutzer
    Registriert seit
    31.01.2006
    Beiträge
    82

    Unhappy Spaß mit biblatex und hyperref

    Hallo,

    ich hadere noch immer mit biblatex. Im Minimalbeispiel unten seht ihr mein bisheriges Setup, mit dem ich ganz zufrieden war. Kurz gesagt bekomme ich damit folgende ausgabe hin:

    \textcite{...} ergibt die Textform: Szyperski et al. (2002)
    \parencite{...} ergibt die Klammerform: [Szyperski et al., 2002]

    In Verbindung mit hyperref bestand allerdings das Problem, dass immer nur die Jahreszahlen verlinkt waren. Also habe ich mich des Internets bedient und eine Lösung gefunden: die beiden "DeclareCiteCommand"-Teile vor dem Dokumentenbeginn, die auch tun, was sie sollen.
    ABER: Das Problem zeigt sich am Besten anhand von Bildern.

    Vorher (ohne):
    Nachher (mit):

    Wird also ein Eintrag/Autor mehrfach referenziert, verschwindet er. Leider steig ich bei der biblatex-Manipulation nicht so durch, aber vielleicht kann mir jemand hier weiterhelfen?


    Code:
    \documentclass[final,ngerman]{scrbook}
    
    \usepackage[utf8]{inputenc}	
    \usepackage[ngerman]{babel}	
    \usepackage[T1]{fontenc}	
    
    \usepackage{filecontents}
    \begin{filecontents}{literatur.bib}
    @BOOK{Szyperski2002a,
      title = {Component Software: Beyond Object-Oriented Programming},
      year = {2002},
      author = {Clemens Szyperski},
    }
    @BOOK{Szyperski2002b,
      title = {Component Software: Beyond Object-Oriented Programming},
      year = {2002},
      author = {Clemens Szyperski},
    }
    \end{filecontents}
    
    % link color
    \usepackage[pdftex,natural,dvipsnames]{xcolor}
    \xdefinecolor{dblue}{rgb}{0,.1,.5}
    
    %% hyperref + link color
    \usepackage[pdftex,bookmarks,colorlinks]{hyperref}
    \hypersetup{citecolor=dblue,linkcolor=dblue}
    %% biblatex
    \usepackage[style=authoryear-comp]{biblatex}
    \bibliography{literatur}
    
    % comma separating author-year
    \renewcommand*{\nameyeardelim}{\addcomma\space}
    % using brackets for parencite [Doe et al., 2001]
    \renewcommand*{\mkbibparens}[1]{{\ifcitation{\bibleftbracket#1\bibrightbracket}%
       {\bibleftparen#1\bibrightparen}}}
     
    % auskommentieren %
    \DeclareCiteCommand{\parencite}[\mkbibparens]
      {\usebibmacro{prenote}}
      {\usebibmacro{citeindex}%
      	 \printtext[bibhyperref]{\usebibmacro{cite}}}
      {\multicitedelim}
      {\usebibmacro{postnote}}
      
    \DeclareCiteCommand{\textcite}
      {\boolfalse{cbx:parens}}
      {\usebibmacro{citeindex}%
       \printtext[bibhyperref]{\usebibmacro{textcite}}}
      {\ifbool{cbx:parens}
         {\bibcloseparen\global\boolfalse{cbx:parens}}
         {}%
       \multicitedelim}
      {\usebibmacro{textcite:postnote}}
     % % % %
     
    \begin{document}
    
    a. parens: \parencite{Szyperski2002a}\\
    b. text: \textcite{Szyperski2002b}\\
    a. text: \textcite{Szyperski2002a}\\
    b. parens: \parencite{Szyperski2002b}\\
    
    \printbibliography[title=Literaturverzeichnis]
    
    \end{document}
    Bei der Gelegenheit möchte ich nochmal Werbung für meine andere biblatex-Frage machen (bzgl. Literaturverzeichnis). Marco hatte sich schon verdient gemacht und mir mächtig weitergeholfen, aber am Ende hakte noch. Wäre super, wenn mir da auch jemand auf die Sprünge helfen könnte! http://www.mrunix.de/forums/showthread.php?t=71773

  2. #2
    Registrierter Benutzer
    Registriert seit
    31.01.2006
    Beiträge
    82
    .. oder anders herum gefragt: Hat jemand eine Idee, wie die Referenzen (Abb.1) so erscheinen, dass nicht nur die Jahreszahlen, sondern auch die Autoren verlinkt sind?

  3. #3
    Registrierter Benutzer
    Registriert seit
    03.04.2007
    Ort
    Wrestedt
    Beiträge
    987

    Versuch

    Zitat Zitat von sensemann Beitrag anzeigen
    .. oder anders herum gefragt: Hat jemand eine Idee, wie die Referenzen (Abb.1) so erscheinen, dass nicht nur die Jahreszahlen, sondern auch die Autoren verlinkt sind?
    Hallo sensemann,

    vielleicht kannst du aus diesem Code etwas für dich abzweigen
    Code:
    \documentclass[final]{scrbook}
    \usepackage[utf8]{inputenc}	
    \usepackage[ngerman]{babel}	
    \usepackage[T1]{fontenc}
    \usepackage[style=authoryear,maxcitenames=1,backref=true, backend=biber,hyperref=true]{biblatex}
    \usepackage{filecontents}
    
    %**********************************************
    % Advanced features for clever quotations
    %**********************************************
    \usepackage[autostyle,         						
    	  german=guillemets,							 
    	  english=british,
    	  french=guillemets
    	  ]{csquotes}
    
    \renewbibmacro*{cite}{% Adapted from cite macro in authoryear.cbx
      \printtext[bibhyperref]{% Enclose cite macro output in hyperlink
        \DeclareFieldAlias{bibhyperref}{default}% Prevent nested hyperlinks
        \iffieldundef{shorthand}
          {\ifthenelse{\ifnameundef{labelname}\OR\iffieldundef{labelyear}}
             {\usebibmacro{cite:label}%
              \setunit{\addspace}}
             {\printnames{labelname}%
              \setunit{\nameyeardelim}}%
           \usebibmacro{cite:labelyear+extrayear}}
          {\usebibmacro{cite:shorthand}}}}
    
    \DeclareCiteCommand{\textcite}% Adapted from \textcite command in authoryear.cbx
      {\boolfalse{cbx:parens}}
      {\usebibmacro{citeindex}%
       \printtext[bibhyperref]{% Enclose textcite macro output in hyperlink
         \DeclareFieldAlias{bibhyperref}{default}% Prevent nested hyperlinks
         \usebibmacro{textcite}%
         \iffieldundef{postnote}% Include closing parenthesis if no postnote
           {\ifbool{cbx:parens}
              {\bibcloseparen\global\boolfalse{cbx:parens}}
              {}}
           {}}}
      {\ifbool{cbx:parens}
         {\bibcloseparen\global\boolfalse{cbx:parens}}
         {}%
       \multicitedelim}
      {\iffieldundef{postnote}
        {}
        {\usebibmacro{textcite:postnote}}}
    
    \renewcommand{\baselinestretch}{1.25}
    \addbibresource{biblatex-examples.bib}
    
    % link color
    \usepackage[pdftex,natural,dvipsnames]{xcolor}
    \xdefinecolor{dblue}{rgb}{0,.1,.5}
    
    %% hyperref + link color
    \usepackage[pdftex,bookmarks,colorlinks]{hyperref}
    \hypersetup{citecolor=dblue,linkcolor=dblue}
    \begin{document}
    \null\vfill\noindent
    a. parens: \parencite{Szyperski2002a}\\
    b. text: \textcite{Szyperski2002b}\\
    a. text: \textcite{Szyperski2002a}\\
    b. parens: \parencite{Szyperski2002b}\\
    
    \printbibliography
    \end{document}
    Quelle: http://tex.stackexchange.com/questio...-biblatex-1-4b
    Viel Erfolg

    Gruß

    Martin
    Geändert von nixversteh (01-03-2012 um 16:07 Uhr) Grund: Nachtrag
    Der aus Büchern erworbene Reichtum fremder Erfahrung heißt Gelehrsamkeit. Eigene Erfahrung ist Weisheit. Das kleinste Kapital von dieser ist mehrt wert, als Millionen von jener.

    Gotthold Ephraim Lessing

  4. #4
    Registrierter Benutzer
    Registriert seit
    31.01.2006
    Beiträge
    82
    Tausend Dank, das sah auf Anhieb schon gut aus, bringt aber doch Probleme. Hier der Vorher-nachher-Vergleich: die Verlinkung klappt gut, aber mit aufeinanderfolgenden, gleichen Autoren hat er immer noch so seine Probleme...
    Zusätzlich kommt noch ein Problem mit Aufzählungen dazu, siehe ganz unten.



    Das Minimalbeispiel für den rechten Teil sieht so aus:

    Code:
    \documentclass[final,ngerman]{scrbook}
    
    \usepackage[utf8]{inputenc}	
    \usepackage[ngerman]{babel}	
    \usepackage[T1]{fontenc}	
    
    \usepackage{filecontents}
    \begin{filecontents}{literatur.bib}
    @BOOK{Szyperski2002a,
      title = {Component Software: Beyond Object-Oriented Programming},
      year = {2002},
      author = {Clemens Szyperski},
    }
    @BOOK{Szyperski2002b,
      title = {Component Software: Beyond Object-Oriented Programming},
      year = {2002},
      author = {Clemens Szyperski},
    }
    \end{filecontents}
    
    % link color
    \usepackage[pdftex,natural,dvipsnames]{xcolor}
    \xdefinecolor{dblue}{rgb}{0,.1,.5}
    
    %% hyperref + link color
    \usepackage[pdftex,bookmarks,colorlinks]{hyperref}
    \hypersetup{citecolor=dblue,linkcolor=dblue}
    %% biblatex
    \usepackage[style=authoryear-comp]{biblatex}
    \bibliography{literatur}
    
    % comma separating author-year
    \renewcommand*{\nameyeardelim}{\addcomma\space}
    % using brackets for parencite [Doe et al., 2001]
    \renewcommand*{\mkbibparens}[1]{{\ifcitation{\bibleftbracket#1\bibrightbracket}%
       {\bibleftparen#1\bibrightparen}}}
    
    \renewbibmacro*{cite}{% Adapted from cite macro in authoryear.cbx
      \printtext[bibhyperref]{% Enclose cite macro output in hyperlink
        \DeclareFieldAlias{bibhyperref}{default}% Prevent nested hyperlinks
        \iffieldundef{shorthand}
          {\ifthenelse{\ifnameundef{labelname}\OR\iffieldundef{labelyear}}
             {\usebibmacro{cite:label}%
              \setunit{\addspace}}
             {\printnames{labelname}%
              \setunit{\nameyeardelim}}%
           \usebibmacro{cite:labelyear+extrayear}}
          {\usebibmacro{cite:shorthand}}}}
    
    \DeclareCiteCommand{\textcite}% Adapted from \textcite command in authoryear.cbx
      {\boolfalse{cbx:parens}}
      {\usebibmacro{citeindex}%
       \printtext[bibhyperref]{% Enclose textcite macro output in hyperlink
         \DeclareFieldAlias{bibhyperref}{default}% Prevent nested hyperlinks
         \usebibmacro{textcite}%
         \iffieldundef{postnote}% Include closing parenthesis if no postnote
           {\ifbool{cbx:parens}
              {\bibcloseparen\global\boolfalse{cbx:parens}}
              {}}
           {}}}
      {\ifbool{cbx:parens}
         {\bibcloseparen\global\boolfalse{cbx:parens}}
         {}%
       \multicitedelim}
      {\iffieldundef{postnote}
        {}
        {\usebibmacro{textcite:postnote}}}
     
    \begin{document}
    
    a. parencite: \parencite{Szyperski2002a}\\
    a. textcite: \textcite{Szyperski2002a}\\
    \medskip
    
    b. textcite: \textcite{Szyperski2002b}\\
    b. parencite: \parencite{Szyperski2002b}\\
    
    \medskip
    a. parencite: \parencite{Szyperski2002a}\\
    b. parencite: \parencite{Szyperski2002b}\\
    a. textcite: \textcite{Szyperski2002a}\\
    b. textcite: \textcite{Szyperski2002b}\\
    
    \medskip
    
    a,b. parencite: \parencite{Szyperski2002a,Szyperski2002b}\\
    
    \printbibliography[title=Literaturverzeichnis]
    
    \end{document}

  5. #5
    Registrierter Benutzer
    Registriert seit
    31.01.2006
    Beiträge
    82
    Problem mehr oder weniger gelöst! Die Verkürzung kommt ja letztlich aufgrund des kompakten Modus' zustande, also nehm ich jetzt authoryear statt authoryear-comp, und beide Lösungen funktionieren.

    Danke!

Lesezeichen

Berechtigungen

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