我使用 biber,并且大多数时候我都喜欢它的输出;但手动修改创建的 bbl 文件似乎很困难(如果可能的话)。
有没有办法使用 biber(或类似的其他程序)来生成包含参考书目的可读 tex 文件?
从评论来看,答案似乎是“否”。但也许至少有部分“是”?
答案1
我无法回答您的问题,因为不清楚您到底想改变什么。
一般来说,手动更改不是一个好主意,bbl
因为它是一个临时文件,经常被重新创建和覆盖。更改 bbl 以获得一些特殊输出很容易出错,而且是繁琐的手动工作,因此应该只在紧急情况下进行。
关于 biber 生成的 bbl 格式的一些背景:
一开始,大部分格式化参考书目的工作都是由 bibtex 完成的:它不仅选择和排序条目本身,还插入逗号、分号、命令(如\em
、\newblock
等)。这给出了你可能称之为“人类可读的” bbl:
\bibitem{doody}
Terrence Doody.
\newblock Hemingway's style and {Jake's} narration.
\newblock {\em The Journal of Narrative Technique}, 4(3):212--225, 1974.
这种方法的问题在于更改格式相当困难。通常,如果您希望作者使用小写字母,或者用空格代替冒号,则需要一个新的 bst 文件。但调整 bst 文件并不容易。
因此人们创建了 bst 文件,它提供了更通用的输出。例如,\titlefont
而不是硬编码\em
等。
jurabib 包确实更进了一步:它试图通过特殊的-files 更好地访问核心数据,并将一些格式移至 latex 代码。这提供了更好的配置功能,但 bbl 输出却相当“不可读”:它是裸数据(数字、名称)和通用格式指令( )bst
的奇怪组合:\bibapifont
\bibitem[{Doody\jbdy {1974}}%
{The Journal of Narrative Technique, \Numbername~3, \volname~4, \jbsy
{1974}}%
{{0}{}{article}{1974}{}{}{}{212--225}%
{1974}}%
{{Hemingway's Style and {Jake's} Narration}%
{}{}{2}{}{}{}{}{}}%
]{doody}
\jbbibargs {\bibnf {Doody} {Terrence} {T.} {} {}} {Terrence Doody} {au}
{sexless} {\bibapifont {Hemingway's Style and {Jake's} Narration}\bibatsep {}
\bibJTsep \bibjtfont {The Journal of Narrative Technique}\ajtsep {}
\artvolumeformat {4} \artyearformat {1974}\artnumberformat {3}
\jbPages{212--225}} {\bibartperiodhowcited} \jbdoitem
{{Doody}{Terrence}{T.}{}{}} {} {} \bibAnnoteFile {doody}
尽管 jurabib 功能强大,但是 bbl 中复杂的数据和格式限制了它的使用。
然后出现了 biblatex。biblatex 从 bbl 中删除了所有格式化指令,并将其转换为 style 和 tex 代码。现在使用 bibtex 和 biber仅有的准备裸数据:他们选择并排序 bib 条目,提取字段,计算哈希值等。结果是一个(可读的)bbl,它显示数据但没有格式,因为所有格式化都是稍后完成的:
\entry{doody}{article}{}
\name{author}{1}{}{%
{{hash=936cee5fdd47aac6238f650db8b23a07}{Doody}{D\bibinitperiod}{Terrence}{T\bibinitperiod}{}{}{}{}}%
}
\strng{namehash}{936cee5fdd47aac6238f650db8b23a07}
\strng{fullhash}{936cee5fdd47aac6238f650db8b23a07}
\field{sortinit}{D}
\field{sortinithash}{78f7c4753a2004675f316a80bdb31742}
\field{labelnamesource}{author}
\field{labeltitlesource}{title}
\field{annotation}{An \texttt{article} entry cited as an excerpt from a \texttt{collection} entry. Note the format of the \texttt{related} and \texttt{relatedstring} fields}
\field{journaltitle}{The Journal of Narrative Technique}
\field{langid}{english}
\field{langidopts}{variant=american}
\field{number}{3}
\field{relatedstring}{\autocap{e}xcerpt in}
\field{title}{Hemingway's Style and {Jake's} Narration}
\field{volume}{4}
\field{year}{1974}
\field{related}{1e63d4bbc14872275675171be2dfa906}
\field{pages}{212\bibrangedash 225}
\range{pages}{14}
\endentry
这种数据处理和格式化之间的明确分离已被证明是非常强大和可扩展的。例如,很容易在一个文档中以不同的格式输出条目。但这也意味着,如果你想改变格式,你必须采取与旧的纯文本不同的方式bbl
。