使用 arara 调用 biber --tool:.tex 文件中注释的 @ 符号有问题?

使用 arara 调用 biber --tool:.tex 文件中注释的 @ 符号有问题?

背景:我正在使用 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/bibertoolarara运行

% 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 规则。

相关内容