使用 Bibtool 按类型和键的字母顺序对 bib 文件进行排序

使用 Bibtool 按类型和键的字母顺序对 bib 文件进行排序

我正在尝试使用 Bibtool 按字母顺序对 bib 文件进行排序,但我希望先按类型再按关键字对条目进行排序。例如,首先是所有文章,然后是书籍,等等...所有文章都按关键字的字母顺序排序,然后是书籍。

它看起来应该是这样的命令:

bibtool -s -sort.format={@type $key} -i BiBin.bib -o BiBout.bib 

答案1

按照第 60 页的示例BibTool 手册,可以用 指定类型%s($type)

例子:

@misc{def,
    note = {misc entry 1}
}
@article{xyz,
    author = {John Doe},
    title = {On Things},
}
@misc{abc,
    note = {misc entry 2},
}
@article{uvw,
    author = {John Smith},
    title = {Of Things},
}

bibtool -s --sort.format='{%s($type) %s($key)}' -i bibsort.bib -o bibsorted.bib

@Article{     uvw,
  author    = {John Smith},
  title     = {Of Things}
}
@Article{     xyz,
  author    = {John Doe},
  title     = {On Things}
}
@Misc{        abc,
  note      = {misc entry 2}
}
@Misc{        def,
  note      = {misc entry 1}
}

请注意,终端命令中需要单引号,以防止终端进行变量替换。

答案2

如果你使用 Biber,你可以使用以下方法sort.conf

<?xml version="1.0" encoding="UTF-8"?>
<config>
  <output_align>true</output_align>
  <output_fieldcase>lower</output_fieldcase>
  <sortingtemplate name="tool">
    <sort order="1">
      <sortitem order="1">entrytype</sortitem>
    </sort>
    <sort order="2">
      <sortitem order="1">entrykey</sortitem>
    </sort>
  </sortingtemplate>
</config>

然后在工具模式下调用Biber

biber --tool --configfile=sort.conf <yourbibfile>.bib

这将生成一个名为<yourbibfile>_bibertool.bib

标准 Biber--tool模式注意事项适用:防止 `biber --tool` 删除 .bib 文件中的非标准字段. 只有数据模型中已知的字段才能在工具模式下生存(因此,如果您使用标准数据模型无法识别的字段,则必须在自定义数据模型中让 Biber 知道它们,请参阅gusbrs 的回答)。

相关内容