Biblatex: Neuen Treiber mit neuen Feldern deklarieren

Biblatex: Neuen Treiber mit neuen Feldern deklarieren

Aus verschiedenen Gründen muss ich innerhalb eines LaTeX-Dokuments mit Hilfe von Biblatex einen neuen Treiber mit neuen Feldern deklarieren.

Beispielsweise könnte folgender BibTeX-Eintrag angegeben werden:

\begin{filecontents}{\jobname.bib}
    @aloa{chris,
        fu = {Hawaii},
        fubo = {Hawaiiboooo},
        year = {2015}}
\end{filecontents}

Dann möchte ich im LaTeX-Dokument so etwas definieren wie:

\DeclareBibliographyDriver{aloa}{%
    \newunit\newblock
    \printfield{fu}%
    \newunit\newblock
    \printfield{fubo}%
    \newunit\newblock
    \printfield{year}%
    \finentry}

Und dann möchte ich den Eintrag so zitieren, dass ich als Ausgabe im Literaturverzeichnis bekomme:

Hawaii Hawaiiboooo 2015

Ein Minimalbeispiel wäre etwa:

\documentclass{article}

\begin{filecontents}{\jobname.bib}
    @aloa{chris,
        fu = {Hawaii},
        fubo = {Hawaiiboooo},
        year = {2015}}
\end{filecontents}

\usepackage[backend=bibtex8]{biblatex}

\DeclareBibliographyDriver{aloa}{%
    \newunit\newblock
    \printfield{fu}%
    \newunit\newblock
    \printfield{fubo}%
    \newunit\newblock
    \printfield{year}%
    \finentry}

\bibliography{\jobname.bib}

\begin{document}
    \nocite{chris}
    \printbibliography
\end{document}

Ist es möglich, dies nur in der LaTeX-Datei zu tun (mit Bibtex und nicht mit Biber)?

Antwort1

Das Anlegen neuer Treiber und neuer Eingabefelder ist biblatexauch ohne möglich biber.

Wenn das Backend nicht ist biber, biblatexwird eine spezielle .bstDatei biblatex.bstzum Generieren der .bblDatei verwendet, daher muss geändert werden biblatex.bst. So geht's:

1) Suchen Sie die biblatex.bstDatei, erstellen Sie eine Kopie, benennen Sie die Kopie um (z. B. mybiblatex.bst) und legen Sie die umbenannte Kopie an einer Stelle ab, wo bibtexsie gefunden werden kann (eine einfache Lösung besteht darin, sie in denselben Ordner/dasselbe Verzeichnis wie die Latex-Datei zu legen).

2) Suchen Sie in der lokalen Kopie ENTRYdie Felder, die Sie hinzufügen möchten, und fügen Sie sie hinzu:

ENTRY {
  entryset 
  ...
  fu
  fubo
}

dies weist darauf hin bibtex , dass fuund Felder fubosind bibtex.

3) Lokale Kopie suchen FUNCTION {output.fields.3}und eine neue Funktion erstellen

FUNCTION {output.myfields} {
  "fu"    fu    output:write:field
  "fubo"  fubo  output:write:field
}

Diese Funktion gibt an bibtex, wie das neue Feld zu behandeln ist. Für jede Zeile sind die ersten beiden Argumente die Namen der neuen Felder; für das dritte Argument können Sie verwenden output:write:<type>, wobei je nach Datentyp des Eintrags <type>eines der folgenden Elemente vorhanden ist : name, field, verb, listoder .year

4) Suchen Sie in der lokalen Kopie die Funktion FUNCTION {output:entry}. Fügen Sie dieser Funktion hinzu output.myfields, so dass es aussehen sollte wie

FUNCTION {output:entry}{
  ...
  output.fields.3
  output.myfields
  output.compat.1
  ...
}

5) Fügen Sie für jeden neuen Treiber <driver>die Zeile hinzu

FUNCTION {<driver>} { type$ output:entry }

im Beispiel sollte dies sein

FUNCTION {aloa} {type$ output:entry}

6) fügen Sie Ihrer Latexquelle Folgendes hinzu:

\makeatletter
\def\blx@auxinit@bibtex#1{%
  \blx@auxwrite\blx@auxout@bibtex
    {\def\do##1{,\blx@stripbib{##1}}}
    {\ifx\blx@auxout@bibtex\@mainaux
     \else
       \blx@msg@aux
     \fi
     \string\bibstyle{mybiblatex}\blx@nl
     \string\bibdata{%
       \blx@ctrlfile@bibtex\blxauxsuffix
       \ifx#1\@empty
       \else
         \dolistloop#1%
       \fi}\blx@nl
     \string\citation{biblatex-control}}}
\makeatother

Dies gibt an, was anstelle der Standardeinstellung bibtexverwendet werden soll .mybiblatex.bstbiblatex.bst

Hier ist die Ausgabe auf dem MWE

Bildbeschreibung hier eingeben

verwandte Informationen