我正在尝试使用 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 的回答)。