我需要提交一篇文章,所以我必须遵守期刊使用 PdfLaTeX 和 BibTeX 的规则。而且参考书目中的一条记录是俄文,所以对我来说唯一的选择就是使用bibtexu
。如果我逐一运行这个链:pdflatex -> bibtexu -> pdflatex -> pdflatex
一切顺利,我会得到一个正确的 PDF 文件。
如果现在我添加
% arara: pdflatex
% arara: bibtexu
% arara: pdflatex
% arara: pdflatex
在文件开头tex
然后运行arara file.tex
我得到<BibTeXu> ... FAILURE
。在 Windows 7 上使用 TeXLive 2019 并进行最新更新。如果我删除该俄语记录并将一切都更改为,则% arara: bibtexu
一切% arara: bibtex
正常。好吧,在这种特殊情况下,我可以手动运行命令,但是是否可以使用 的良好自动化arara
机制bibtexu
?
答案1
好的,我可能找到了解决方案。我在论坛上搜索了一下,找到了这讨论如何在arara
运行期间忽略命令中的错误。实际上,运行中没有真正的错误,它只是在每个名称和每个块之后bibtexu
发出警告(我想这是因为我使用的文件):bst
This is BibTeXu: a UTF-8 Big BibTeX version 0.99d
Implementation: Microsoft(R) C/C++ for Win32
Release version: 3.71 (04 mar 2019)
Compiled with: ICU version 63.1
The top-level auxiliary file: file.aux
The style file: style.bst
Reallocated glb_str_ptr (elt_size=4) to 10 items from 0.
Reallocated global_strs (elt_size=20001) to 10 items from 0.
Reallocated glb_str_end (elt_size=4) to 10 items from 0.
Reallocated wiz_functions (elt_size=4) to 6000 items from 3000.
Database file #1: file.bib
Warning--Gardner S.
Warning--Haxton W.C.
Warning--Holstein B.R.
Warning--after block
Warning--Kistryn S.
Warning--Lang J.
Warning--Liechti J.
Warning--Maier T.
Warning--Muller R.
Warning--Nessi-Tedaldi F.
Warning--Simonius M.
Warning--Smyrski J.
Warning--Jaccard S.
Warning--Haeberli W.
Warning--Sromicki J.
Warning--after block
Warning--Нурушев С.Б.
Warning--Рунцо М.Ф.
Warning--Стриханов М.Н.
Warning--after block
...
Here's how much of BibTeX's memory you used:
Cites: 10 out of 750
Fields: 344 out of 5000
Hash table: 99608 out of 100000
Strings: 1200 out of 100000
Free string pool: 12934 out of 65000
Wizard functions: 4014 out of 6000
(There were 100 warnings)
因此,没有错误,bbl
文件正确,但bibtexu
由于某些原因,退出代码不为零。我遵循了参考主题的建议并添加exit: value > 0
到bibtexu.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: bibtexu
name: BibTeXu
authors:
- Marco Daniel
- Paulo Cereda
commands:
- name: An 8-bit implementation of BibTeX 0.99 with a very large capacity
command: >
@{
return getCommand('bibtexu', options, getBasename(file));
}
exit: value > 0
arguments:
- identifier: options
flag: >
@{
if (isList(parameters.options)) {
return parameters.options;
}
else {
throwError('I was expecting a list of options.');
}
}
好吧,也许这不是真正的解决方案,只是一种肮脏的黑客行为,但它对我有用。当然,我必须检查生成的参考书目是否正确,所有引用是否正确,它们都是正确的!