Verhindern Sie, dass „biber --tool“ nicht standardmäßige Felder in BIB-Dateien entfernt.

Verhindern Sie, dass „biber --tool“ nicht standardmäßige Felder in BIB-Dateien entfernt.

Bei dieser Frage ging es um eine Nebenwirkung beidiese Antwort. Eine Möglichkeit, diese Nebenwirkung zu vermeiden, besteht darin, kein Biber zu verwenden, sondern bibtool -biblatexwie indiese Antwort.

Ich verwende , biber --toolum Felder wie abstract, review, groups, und automatisch fileaus Biblatex-Einträgen in .bib-Dateien zu entfernen. Ein Nebeneffekt davon ist, dass alle Nicht-Standardfelder¹ ebenfalls entfernt zu werden scheinen, was ich verhindern möchte. Hier ist ein minimales Beispiel:

Dies ist der Eintrag in der .bib-Datei mybib.bib:

@Thesis{Author_18_TheThesis,
 author           = {Mr Author},
 title            = {The Thesis},
 type             = {Doctoral Dissertation},
 institution      = {Department of Documents, University of Stackexchange},
 year             = {2018},
 abstract         = {This is the abstract.},
 file             = {:author/Author_18_TheThesis.pdf:PDF},
 review           = {This is the review.},
 groups           = {publications},
 ispreprintpublic = {true},
}

Und dies ist die clean-bibfiles.confKonfigurationsdatei für biber --tool:

<?xml version="1.0" encoding="UTF-8"?>
<config>
    <output_fieldcase>lower</output_fieldcase>
    <output_indent>2</output_indent>
    <output_align>true</output_align>
    <sourcemap>
        <maps datatype="bibtex" map_overwrite="1">
            <map map_overwrite="1">
                <map_step map_field_set="abstract" map_null="1"/>
                <map_step map_field_set="review" map_null="1"/>
                <map_step map_field_set="groups" map_null="1"/>
                <map_step map_field_set="file" map_null="1"/>
            </map>
        </maps>
    </sourcemap>
</config>

Beim Ausführen biber --tool --configfile=clean-bibfiles.conf mybib.bibwird eine Datei erstellt mybib_bibertool.bib, die diesen Biblatex-Eintrag enthält:

@thesis{Author_18_TheThesis,
  author      = {Author, Mr},
  institution = {Department of Documents, University of Stackexchange},
  date        = {2018},
  title       = {The Thesis},
  type        = {Doctoral Dissertation},
}

Das Nicht-Standardfeld ispreprintpublicwurde aus dem Eintrag entfernt. Genauer gesagt würden die Felder groupsund reviewauch entfernt, wenn sie nicht in der Quellzuordnung enthalten wären, da beide ebenfalls Nicht-Standardfelder sind bzw. vom Artikeltyp „ausgeliehen“ wurden. Wie kann das automatische Entfernen solcher Felder bei der Verwendung verhindert werden biber --tool?


¹Siehe z. B. "2.1.1 Reguläre Typen" und "4.2.4.1 Generische Felder" imBiblatex-Dokumentation.

Antwort1

Tatsächlich biberwerden keine Felder verarbeitet, die nicht Teil des Datenmodells sind. Wenn Ihre Datenquelle also nicht standardmäßige Felder oder Eintragstypen hat, müssen Sie biberein Datenmodell bereitstellen, das diese einschließt.

Bevor Sie mit dieser Aufgabe fortfahren, sollten Sie jedoch herausfinden, was im von Ihnen benötigten Standarddatenmodell tatsächlich fehlt. Dies können Sie mit der folgenden --validate-datamodelOption tun:

biber --tool --validate-datamodel mybib.bib

Bei einer BIB-Datei, die Ihren Eintrag enthält, werden die folgenden Warnungen angezeigt:

WARN - Datamodel: Entry 'Author_18_TheThesis' (mybib.bib): Field 'review' invalid in data model - ignoring
WARN - Datamodel: Entry 'Author_18_TheThesis' (mybib.bib): Field 'groups' invalid in data model - ignoring
WARN - Datamodel: Entry 'Author_18_TheThesis' (mybib.bib): Field 'ispreprintpublic' invalid in data model - ignoring

Dadurch erfahren Sie genau, welche Felder Sie reviewin groupsdas ispreprintpublicDatenmodell einschließen müssen.

(Natürlich wäre es nicht „üblich“, reviewund groupszum Datenmodell hinzuzufügen, um sie dann in die Quellzuordnung einzufügen. Ich mache es hier nur der Allgemeingültigkeit und der Vorgehensweise halber.)

Um Ihre benutzerdefinierte biber-tool.confDatei festzulegen (Sie haben sie so genannt clean-bibfiles.conf, lassen wir es dabei, aber im Allgemeinen gibt es andere Vorgänge, die mit diesem Verfahren erreicht werden könnten), müssen Sie das Datenmodell anpassen, um die Zeile(n) Ihrer nicht standardmäßigen Felder in die <fields>...</fields>Gruppe aufzunehmen. In Ihrem Fall (vorausgesetzt, es handelt sich hier um Felder vom Typ „literal“):

<field fieldtype="field" datatype="literal">review</field>
<field fieldtype="field" datatype="literal">groups</field>
<field fieldtype="field" datatype="literal">ispreprintpublic</field>

Und fügen Sie innerhalb der Gruppe <entryfields><entrytype>thesis</entrytype>...</entryfields>hinzu:

<field>review</field>
<field>groups</field>
<field>ispreprintpublic</field>

Das Ergebnis clean-bibfiles.confsollte dann sein:

<?xml version="1.0" encoding="UTF-8"?>
<config>
  <output_fieldcase>title</output_fieldcase>
  <output_indent>2</output_indent>
  <output_align>true</output_align>
  <sourcemap>
    <maps datatype="bibtex" map_overwrite="1">
      <map map_overwrite="1">
        <map_step map_field_set="abstract" map_null="1"/>
        <map_step map_field_set="review" map_null="1"/>
        <map_step map_field_set="groups" map_null="1"/>
        <map_step map_field_set="file" map_null="1"/>
      </map>
    </maps>
  </sourcemap>
  <datamodel>
    <fields>
      <field fieldtype="field" datatype="literal">review</field>
      <field fieldtype="field" datatype="literal">groups</field>
      <field fieldtype="field" datatype="literal">ispreprintpublic</field>
    </fields>
    <entryfields>
      <entrytype>thesis</entrytype>
      <field>review</field>
      <field>groups</field>
      <field>ispreprintpublic</field>
    </entryfields>
  </datamodel>
</config>

Mit dieser Konfigurationsdatei kann der Befehl:

biber --tool --validate-datamodel --configfile=clean-bibfiles.conf mybib.bib

gibt mybib_bibertool.bibmit dem Eintrag wie gewünscht aus:

@Thesis{Author_18_TheThesis,
  Author           = {Author, Mr},
  Institution      = {Department of Documents, University of Stackexchange},
  Date             = {2018},
  Ispreprintpublic = {test},
  Title            = {The Thesis},
  Type             = {Doctoral Dissertation},
}

Um das Standarddatenmodell und die Konfiguration zu prüfen, können Sie den Speicherort für die Standardeinstellungen biber-tool.confwie folgt ermitteln:

biber --tool-config

Dies ist vielleicht nicht ganz so einfach. Aber um PLKsKommentaroben: „Die Vorteile eines Datenmodells im Tool-Modus überwiegen diese Art von Problem.“

verwandte Informationen