背景:我正在使用 Mendeley 创建我的 .bib 文件,并喜欢biber --tool
使用特定的规则集运行来清理该文件并重新标记某些内容。
arara -v mwe.tex
使用 mwe.tex 内容调用
% arara: biber: { options: [ '--tool', '--validate-datamodel', '--configfile=mwe.conf', './mwe.bib' ] }
% arara: pdflatex: { draft : yes}
% arara: biber
% arara: pdflatex
\documentclass{article}
\usepackage[backend=biber]{biblatex}
\addbibresource{./_bibertool.bib}
%@
\begin{document}
All I need to cite is Kress \textit{et al.}\supercite{Kress1988}
\end{document}
其中 mwe.bib 是
@article{Kress1988,
author = {Kress, Thomas H. and Leanna, Robert M.},
date = {1988},
journaltitle = {Synthesis},
pages = {803--805},
title = {{Synthesis, Stability, and Reactions of 2,6-Dichlorophenyllithium}},
abstract = {{irrelevant abstract comes here}},
}
并且 mwe.conf 是
<?xml version="1.0" encoding="UTF-8"?>
<config>
<output_fieldcase>lower</output_fieldcase>
<output_indent>2</output_indent>
<output_align>true</output_align>
<sourcemap>
<maps datatype="bibtex">
<map>
<map_step map_field_set="abstract" map_null="1"/>
</map>
</maps>
</sourcemap>
</config>
将以错误结束:
PS <PATH> arara -v mwe.tex
__ _ _ __ __ _ _ __ __ _
/ _` | '__/ _` | '__/ _` |
| (_| | | | (_| | | | (_| |
\__,_|_| \__,_|_| \__,_|
Processing 'mwe.tex' (size: 385 bytes, last modified: 02/13/2020
09:18:19), please wait.
-----------------------------------------------------------------
(Biber) The Biber reference management software
-----------------------------------------------------------------
INFO - This is Biber 2.14 running in TOOL mode
INFO - Config file is 'mwe.conf'
INFO - Logfile is './mwe.bib.blg'
INFO - Globbing data source './mwe.bib'
INFO - Globbed data source './mwe.bib' to ./mwe.bib
INFO - Globbing data source 'mwe'
INFO - Globbed data source 'mwe' to mwe
INFO - Looking for bibtex format file './mwe.bib'
INFO - LaTeX decoding ...
INFO - Found BibTeX data source './mwe.bib'
INFO - Looking for bibtex format file 'mwe'
INFO - LaTeX decoding ...
INFO - Found BibTeX data source './mwe.tex'
ERROR - BibTeX subsystem: C:\Users\mail\AppData\Local\Temp\biber_tmp_mwP6\mwe.tex_13692.utf8, line 16, syntax error: at end of input, expected "@"
INFO - ERRORS: 1
--------------------------------------------------------- FAILURE
Total: 1.72 seconds
C:\texlive\2019\bin\win32\runscript.tlu:907: command failed with exit code 1:
java.exe -jar c:\texlive\2019\texmf-dist\scripts\arara\arara.jar -v mwe.tex
如果%@
从 .tex 文件中删除该行,编译将正常工作。使用最新的 TeX Live 2019。在我%@
看来不知何故由 arara 解析,不知何故导致花式字符麻烦biber --tool
?
在删除 Temp 文件夹之前,我无法截取 .utf8 文件。但是,我能够截取从生产 .bib 文件生成的 .utf8 文件,因为它的大小明显更大。找不到 Biber 报告发现的任何语法错误;当我将内容复制到 mwe.bib 并在 内使用此文件时\addbibresource
,我能够biber --tool
毫无困难地编译文档(省略 )。感谢您的意见...!
答案1
我创建了一个文件bibertool.yaml
!config
# Arara, the cool TeX automation tool
# Copyright (c) 2018, Paulo Roberto Massa Cereda
# All rights reserved.
#
# This rule is part of arara.
identifier: bibertool
name: BiberTool
authors:
- Marco Daniel
- Paulo Cereda
commands:
- name: The Biber reference management software
command: >
@{
return getCommand('biber', options);
}
arguments:
- identifier: options
flag: >
@{
if (isList(parameters.options)) {
return parameters.options;
}
else {
throwError('I was expecting a list of options.');
}
}
只需改变线路
return getCommand('biber', options, getBasename(file));
并修复原始标识符biber.yaml
。将此文件另存为~/arara/rules/bibertool
并arara
运行
% arara: bibertool: { options: [ '--tool', '--validate-datamodel', '--configfile=mwe.conf', './mwe.bib' ] }
% arara: pdflatex: { draft : yes}
% arara: biber
% arara: pdflatex
\documentclass{article}
\usepackage[backend=biber]{biblatex}
\addbibresource{./_bibertool.bib}
%@
\begin{document}
All I need to cite is Kress \textit{et al.}\supercite{Kress1988}
\printbibliography
\end{document}
产生所需的输出,包括_bibertool.bib
文件
@article{Kress1988,
author = {Kress, Thomas H. and Leanna, Robert M.},
date = {1988},
journaltitle = {Synthesis},
pages = {803--805},
title = {{Synthesis, Stability, and Reactions of 2,6-Dichlorophenyllithium}},
}
答案2
无论有没有这个,它都会崩溃,%@
因为我的测试文件也包含其他垃圾。
您对 biber 的第一次调用是错误的,您向它传递了两个文件参数:biber --tool mwe.bib mwe
这意味着它尝试处理两个源文件。首先,正如所希望的 bib 文件:
Looking for bibtex format file './mwe.bib'
但随后它还尝试解析不带扩展名的请求mwe
并找到了 tex 文件:
INFO - Looking for bibtex format file 'mwe'
....
INFO - Found BibTeX data source './mwe.tex'
当尝试理解 tex 文件时,在 @ 处失败,但可能许多其他输入可能会在此处触发错误 - tex 文件根本不是 bib 文件。
我在 arara 文档中没有看到在没有第二个文件参数的情况下运行 biber 的方法,所以您可能需要一个新的 arara 规则。