使 biber 清洁 .bib 文件而不删除 xdata 字段

使 biber 清洁 .bib 文件而不删除 xdata 字段

我编写了一个小型 biber 配置文件 exper3.conf 来清理 .bib 文件。目标是按字母顺序排列和规范化各个条目。脚本是

<?xml version="1.0" encoding="UTF-8"?>
<config>
  <output-indent>2</output-indent>
  <output_align>true</output_align>
  <output_fieldcase>title</output_fieldcase>
  <output_field_order>author,title</output_field_order>
  <sortingtemplate name="tool">
    <sort order="1">
      <sortitem order="1">entrykey</sortitem>
    </sort>
  </sortingtemplate>
</config>

当我用这个命令行运行它时

biber --tool -O TexStackOutput.bib -g exper3.conf TexStackInput.bib

在此输入文件 TexStackInput.bib 上(请注意格式奇怪的行、无序的条目和无序的字段)

@XData{PHEnglewoodCliffs,
  Ids  = {PH:EnglewoodCliffs},
  Publisher = {Prentice-Hall},
  Location     = {Englewood Cliffs NJ},
}

@Article{wombat2016,
  Author           = {Wombat, Walther and Koala, Klaus},
  Title   = {The true meaning of 42},
  Date     = {2016},
         Journaltitle = {Journal of modern skepticism},
  Keywords     = {trusted},
}

@Book{WetherellEtudes,
  Date      = {1978},
 Author= {Charles Wetherell},
      Title   = {Etudes For Programmers},
  Xdata   = {PH:EnglewoodCliffs},
}

输出是这个文件

@Xdata{PHEnglewoodCliffs,
  Ids       = {PH:EnglewoodCliffs},
  Location  = {Englewood Cliffs NJ},
  Publisher = {Prentice-Hall},
}

@Book{WetherellEtudes,
  Author = {Wetherell, Charles},
  Title  = {Etudes For Programmers},
  Date   = {1978},
}

@Article{wombat2016,
  Author       = {Wombat, Walther and Koala, Klaus},
  Title        = {The true meaning of 42},
  Date         = {2016},
  Journaltitle = {Journal of modern skepticism},
  Keywords     = {trusted},
}

现在一切都整洁干净了……除了

Xdata 字段已从条目 WetherellEtudes 中删除。

如果我在命令行(或在 .conf 文件中)使用选项 --outputresolve,则 @XData 条目 PH:EnglewoodCliffs 中的数据将被正确复制,但 Xdata 字段仍会被删除。这正是我所期望的解决方案。

但是,我并不想为使用 biber 而解析或删除 Xdata 字段。我只想“整理”原始 .bib 文件,以便它(嗯,它是我在一个大项目中使用的非常大的兄弟文件)更容易操作和错误检查。

此外,这似乎是一个“错误”。如果没有办法将 Xdata 字段保留在 tidy 输出文件中,那么这似乎首先违背了 @XData 条目的目的。如果我想在 @XData 中进行更改并传播到其所有用法,该怎么办?我无法在 tidy 文件上执行此操作,因为 Xdata 字段已被解析或删除。我不想在原始输入上执行此操作;毕竟,它很脏,很难使用。工作流程强烈建议在输出经过测试和批准后,用“tidy”输出替换“脏”原始输出。如果 Xdata 字段在 tidy 结果中丢失,则无法进行此替换。

随着书目不断增长,我预计这个循环将会在这个项目期间重复多次。

我在 Mac 上使用 biber 2.18。

相关内容