Anzeige:
Ergebnis 1 bis 8 von 8

Thema: Mehr Biblatex Spaß: Formatierung

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

    Mehr Biblatex Spaß: Formatierung

    Hi,

    ich habe mir das Literaturverzeichnis inzwischen so zurechtgebogen, dass es ganz ordentlich aussieht (Hrsg. in Klammern etc.). Es gibt nur zwei Absonderheiten, bei denen ich nicht weiterkomme:

    (1) Verzeichniseinträge, z.B. Inproceeding, Inbook, etc. sehen so aus:

    Der Autor (Jahr): "Titel" In: Der Herausgeber (Hrsg.) Journal/Buchtitel., ....

    Prima wäre, wenn ich hinter den Herausgeber noch einen DOppelpunkt setzen könnte, also

    Der Autor (Jahr): "Titel" In: Der Herausgeber (Hrsg.): Journal/Buchtitel., ....

    Ich kann aber beim Deklarieren der BibliographyDriver sooft ich will \setunit{\labelnamepunkt} (bei mir ein colon) oder \setunit{\addcolon} schreiben - es passiert nix.

    (2) Das größere Problem: Solange ein Editor da ist, ist alles super. Falls nicht, wird der Titel der Publikation stattdessen hingeschrieben, á la:

    Der Autor (Jahr): "Titel" In: "Titel" TiteldesJournalsetc., ....

    Hilfe?
    Und hier das Minimalbeispiel, nur mit dem nötigsten und am Beispiel der Inproceedings. Ich hoffe, ich kann die Lösung dann auf die anderen Typen übertragen.

    Code:
    \documentclass[final,ngerman]{scrbook}
    
    \usepackage[utf8]{inputenc}	
    \usepackage[ngerman]{babel}	
    \usepackage[T1]{fontenc}	
    
    \usepackage{filecontents}
    \begin{filecontents}{literatur.bib}
    @INPROCEEDINGS{Yu2007,
      author = {Jin Yu and Boualem Benatallah and Regis Saint-Paul and Fabio Casati
    	and Florian Daniel and Maristella Matera},
      title = {{A} {F}ramework for {R}apid {I}ntegration of {P}resentation {C}omponents},
      booktitle = {{WWW} '07: Proceedings of the 16\textsuperscript{th} International
    	Conference on {W}orld {W}ide {W}eb},
      year = {2007},
      location = {Banff, Alberta, Canada},
      isbn = {978-1-59593-654-7},
      pages = {923--932},
      doi = {http://doi.acm.org/10.1145/1242572.1242697},
      keywords = {standard},
      editor = {Mr. Test}
    }
    \end{filecontents}
    
    \usepackage[style=authoryear-ibid,backend=biber,firstinits=true]{biblatex}
    \bibliography{literatur}
    
    \DeclareNameAlias{sortname}{last-first}
    \DefineBibliographyStrings{ngerman}{
    	editor    = {(Hrsg.)},
    	editors   = {(Hrsg.)} 
    }
    
     \DeclareBibliographyDriver{inproceedings}{%
      \usebibmacro{bibindex}%
      \usebibmacro{begentry}%
      \usebibmacro{author/translator+others}%
      \setunit{\labelnamepunct}\newblock
      \usebibmacro{title}%
      \newunit
      \printlist{language}%
      \newunit\newblock
      \usebibmacro{byauthor}%
      \newunit\newblock
      \usebibmacro{in:}%
      \begingroup% NEU
      \renewbibmacro*{date+extrayear}{}% NEU
      \usebibmacro{editor+others}           % NEU
      \setunit{\labelnamepunct}\newblock% MACHT NÜSCHT
    %  \newunit\newblock  
      \endgroup % NEU  
      \usebibmacro{maintitle+booktitle}%
      \newunit\newblock
      \usebibmacro{event+venue+date}%
      \newunit\newblock
    %  \usebibmacro{byeditor+others} % ALT
    %  \newunit\newblock			% ALT
      \iffieldundef{maintitle}
        {\printfield{volume}%
         \printfield{part}}
        {}%
      \newunit
      \printfield{volumes}%
      \newunit\newblock
      \usebibmacro{series+number}%
      \newunit\newblock
      \printfield{note}%
      \newunit\newblock
      \printlist{organization}%
      \newunit
      \usebibmacro{publisher+location+date}%
      \newunit\newblock
      \usebibmacro{chapter+pages}%
      \newunit\newblock
      \iftoggle{bbx:isbn}
        {\printfield{isbn}}
        {}%
      \newunit\newblock
      \usebibmacro{doi+eprint+url}%
      \newunit\newblock
      \usebibmacro{addendum+pubstate}%
      \setunit{\bibpagerefpunct}\newblock
      \usebibmacro{pageref}%
      \usebibmacro{finentry}}
    
    
    \begin{document}
    
    \dots \cite{Yu2007} \dots
    
    \printbibliography[title=Literaturverzeichnis]
    
    \end{document}
    Für euch sicher ein Kinderspiel

  2. #2
    Registrierter Benutzer
    Registriert seit
    31.01.2006
    Beiträge
    82
    Doch kein Kinderspiel?
    Hier die Probleme mal veranschaulicht:

    #1 inkl. Editor (wo ist der Doppelpunkt??):


    #2 ohne Editor:

  3. #3
    Registrierter Benutzer Avatar von domwass
    Registriert seit
    28.09.2010
    Beiträge
    90
    Ein kurzer Auszug aus deinem Beispiel:
    Code:
      \setunit{\labelnamepunct}\newblock% MACHT NÜSCHT
    %  \newunit\newblock  
      \endgroup % NEU  
      \usebibmacro{maintitle+booktitle}%
      \newunit\newblock
    Wenn das bibmacro »maintitle+booktitle« nichts ausgibt, überschreibt das
    darauf folgende \newunit dein \setunit{\labelnamepunct}. Abhilfe schafft
    eventuell \setunit*{...} statt \newunit, also die Sternvariante, da dann die
    Zeichensetzung nur erfolgt, wenn vorher etwas ausgegeben wurde (siehe
    biblatex-Anleitung, die sich im Abschnitt »Using the Punctuation Tracker«
    ausführlich mit dem Problem auseinandersetzt).

    Gruß,
    Dominik.-

  4. #4
    Registrierter Benutzer
    Registriert seit
    31.01.2006
    Beiträge
    82
    Bin nicht sicher, ob ich das verstanden hab. In dem Beispiel wird durch \usebibmacro{maintitle+booktitle} ja etwas ausgegeben. Hab mir den Abschnitt in der biblatex-Doku angeschaut, aber auch wenn ich selbst wenn ich den newunits/blocks rausnehme oder mit \setunit*{\adddot} (?) ersetze, ändert sich nix. Es gelingt mir überhaupt nicht, irgendwo später mal einen Doppelpunkt zu setzen...

    Ein Doppelpunkt erscheint nie.

    Code:
    ...
      \usebibmacro{in:}%
      \begingroup % NEU
        \renewbibmacro*{date+extrayear}{} % NEU
        \usebibmacro{editor+others} % NEU
        \setunit*{\labelnamepunct}\newblock	% MACHT NÜSCHT      
      \endgroup% NEU  
      \usebibmacro{maintitle+booktitle}%
      \setunit*{\adddot} % \newunit\newblock 
      \usebibmacro{event+venue+date}%
      \newunit\newblock
    Hast du bzgl. des zweiten Problems eine Idee?

  5. #5
    Registrierter Benutzer Avatar von domwass
    Registriert seit
    28.09.2010
    Beiträge
    90
    Wozu soll eigentlich \begingroup…\endgroup gut sein? Ich denke, damit setzt
    du den puncutation tracker nur lokal, mit \endgroup ist dein Doppelpunkt dann
    wieder weg (könnte ich mir vorstellen; sicher bin ich nicht). Nimm das mal
    probehalber raus.

    Gruß,
    Dominik.-

    [Edit]
    Habe gerade gesehen, dass du date+extrayear umdefinierst und das nur lokal
    haben willst. Das Umdefinieren von date+extrayear würde ich so nicht machen.
    Ich würde stattdessen editor+others anpassen – oder, wenn editor+others nur
    in diesem Fall anders sein soll als sonst, ein neues bibmacro dafür schreiben.

    Wenn irgendetwas durch das bibmacro »editor+others« ausgegeben
    wird, was nur bei Vorhandensein eines editor sinnvoll ist und sonst stört, kannst
    du auch eine \ifnameundef{editor}-Abfrage einbauen, also
    Code:
    \ifnameundef{editor}
      {}
      {\usebibmacro{editor+others}%
       \setunit*{\labelnamepunct}}
    Geändert von domwass (16-03-2012 um 09:37 Uhr)

  6. #6
    Registrierter Benutzer
    Registriert seit
    31.01.2006
    Beiträge
    82
    Hi, ich nutze eigentlich nur ganz stoisch diesen Vorschlag von lockstep, deshalb auch die Gruppierung.

    Nach viel probieren bin ich nun soweit, dass zumindest Problem (2) nicht mehr auftritt (DANKE!)
    Das Minimalbeispiel sieht nach deinem Vorschlag nun wie folgt aus - den Doppelpunkt bekomme ich leider immer noch nicht hin


    Code:
    \documentclass[final,ngerman]{scrbook}
    
    \usepackage[utf8]{inputenc}	
    \usepackage[ngerman]{babel}	
    \usepackage[T1]{fontenc}	
    
    \usepackage{filecontents}
    \begin{filecontents}{literatur.bib}
    @INPROCEEDINGS{Yu2007,
      author = {Jin Yu and Boualem Benatallah and Regis Saint-Paul and Fabio Casati
    	and Florian Daniel and Maristella Matera},
      title = {{A} {F}ramework for {R}apid {I}ntegration of {P}resentation {C}omponents},
      booktitle = {{WWW} '07: Proceedings of the 16\textsuperscript{th} International
    	Conference on {W}orld {W}ide {W}eb},
      year = {2007},
      location = {Banff, Alberta, Canada},
      isbn = {978-1-59593-654-7},
      pages = {923--932},
      doi = {http://doi.acm.org/10.1145/1242572.1242697},
      keywords = {standard},
      editor = {Mr. Test}
    }
    \end{filecontents}
    
    \usepackage[style=authoryear-ibid,backend=biber,firstinits=true]{biblatex}
    \bibliography{literatur}
    
    \renewcommand*{\nameyeardelim}{\addcomma\space}
    \renewcommand{\labelnamepunct}{\addcolon\space}
    
    %% sorting last name first
    \DeclareNameAlias{sortname}{last-first}
    %  german 
    \DefineBibliographyStrings{ngerman}{
    	editor    = {(Hrsg.)},
    	editors   = {(Hrsg.)} 
    }
    
    %% % % INPROCEEDINGS
     \DeclareBibliographyDriver{inproceedings}{%
      \usebibmacro{bibindex}%
      \usebibmacro{begentry}%
      \usebibmacro{author/translator+others}%
      \setunit{\labelnamepunct}\newblock
      \usebibmacro{title}%
      \newunit
      \printlist{language}%
      \newunit\newblock
      \usebibmacro{byauthor}%
      \newunit\newblock
      \usebibmacro{in:}%
      \ifnameundef{editor}
       {}
       {\usebibmacro{editor+others}%
       \setunit*{\labelnamepunct}\newblock}
      \usebibmacro{maintitle+booktitle}%
      \newunit\newblock
      \usebibmacro{event+venue+date}%
      \newunit\newblock
    %  \usebibmacro{byeditor+others} % ALT
    %  \newunit\newblock					% ALT
      \iffieldundef{maintitle}
        {\printfield{volume}%
         \printfield{part}}
        {}%
      \newunit
      \printfield{volumes}%
      \newunit\newblock
      \usebibmacro{series+number}%
      \newunit\newblock
      \printfield{note}%
      \newunit\newblock
      \printlist{organization}%
      \newunit
      \usebibmacro{publisher+location+date}%
      \newunit\newblock
      \usebibmacro{chapter+pages}%
      \newunit\newblock
      \iftoggle{bbx:isbn}
        {\printfield{isbn}}
        {}%
      \newunit\newblock
      \usebibmacro{doi+eprint+url}%
      \newunit\newblock
      \usebibmacro{addendum+pubstate}%
      \setunit{\bibpagerefpunct}\newblock
      \usebibmacro{pageref}%
      \usebibmacro{finentry}}
    
    \makeatletter
    \renewbibmacro*{bbx:editor}[1]{%
    \ifboolexpr{
    test \ifuseeditor
    and
    not test {\ifnameundef{editor}}
    }%
    {\printnames{editor}%
    \setunit{\addspace} % WAS: \setunit{\addcomma\space}%
    \usebibmacro{bbx:savehash}
    \usebibmacro{#1}%
    \clearname{editor}%
    \setunit{\addspace}
    }%
    {
    \global\undef\bbx@lasthash
    \usebibmacro{labeltitle}%
    \setunit*{\addspace}
    }%
    %\usebibmacro{date+extrayear}
    }
    \makeatother
    
    \begin{document}
    \dots \cite{Yu2007} 
    \printbibliography[title=Literaturverzeichnis]
    
    \end{document}

  7. #7
    Registrierter Benutzer Avatar von domwass
    Registriert seit
    28.09.2010
    Beiträge
    90
    Code:
    \DefineBibliographyStrings{ngerman}{
    	editor    = {(Hrsg.)},
    	editors   = {(Hrsg.)} 
    }
    Daran liegts. Der Punkt sorgt dafür, dass biblatex meint, es steht schon ein
    Satzzeichen da, und deshalb den Doppelpunkt weglässt. Nimm stattdessen
    Code:
    \DefineBibliographyStrings{ngerman}{
    	editor    = {\mkbibparens{Hrsg\adddot}},
    	editors   = {\mkbibparens{Hrsg\adddot}} 
    }
    \mkbibparens{Hrsg.} geht übrigens auch. Es ist aber immer besser, die von
    biblatex verwendeten Befehle für Zeichen zu verwenden, also \adddot für
    einen Punkt, \addperiod für einen Satzendepunkt, \mkbibparens für runde
    Klammern etc.

    Gruß,
    Dominik.-

  8. #8
    Registrierter Benutzer
    Registriert seit
    31.01.2006
    Beiträge
    82
    Super! Funktioniert alles wunderbar. Tausend Dank!

Lesezeichen

Berechtigungen

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