由于原始问题的答案是“这是不可能的”,所以我的新问题是:
如何编写一个 shell 脚本,在其中定义原始 bib 文件、应替换换行符的字段、应替换它们的字符串以及新 bib 文件的名称?我觉得这应该可以使用自动表达式来实现。(如果这个问题与 tex 不够相关,请随时关闭它。)
我的想法是在调用 latexmk 之前运行这个脚本,这样仍然能够自动用 \par 命令替换新行字符,而不必在每次 bib 文件更改时手动执行此操作(bib 文件本身已经由自动脚本创建)。
原始问题:
在我的参考书目中,摘要和注释字段通常有几段长。段落之间用两个换行符分隔
我想使用 biblatex 打印阅读清单。
如果我使用 biber 解析 bib 文件,biber 将删除所有换行符并将字段呈现为一行长行。
这是预期的行为,并且显然在 bibtex 中也是如此。
问题是:有没有自动解决方法?更准确地说,有没有办法解决这个问题,而不需要我手动将宏而不是换行符添加到 bib 文件中。
最初,我提交了错误报告在 biber 开发网站上,因为我认为这一定是一个错误,但 Philipp Kime 建议我询问是否有已知的方法可以在不改变 biber 的情况下解决这个问题。
答案1
Biber 使用 btparse C 库来解析 bibtex 数据。按照通常的 bibtex 方式,空格和换行符在字段值中是标准化的,因此唯一的方法是将某种特殊标记放入段落分隔符中,然后使用 biber 源映射功能将其替换为 TeX 宏,以便在读取 bib 数据源时生成段落分隔符。请参阅 biblatex 手册(了解如何通过 biblatex 宏进行源映射)或 biber 手册(如果您想在 biber 配置文件中进行源映射)。