我正在尝试创建一个 arara 规则,以便使用其嵌入式服务器从 zotero 下载我的参考书目。URL 有效,这不是问题,但 arara 声称该文件存在语法问题。
规则文件有以下内容:
!config
# Pull bibliography from zotero as part of build
# author: Emiliano Heyns
# last edited by: eeh, Dec 2nd 2013
# requires arara 3.0+
#
# Sample usage
#
# % arara: zoterobib
# % arara: zoterobib: {format: biblatex}
# \documentclass[mode=present,display=\powerdotmode]{powerdot}
#
identifier: zoterobib
name: ZoteroBib
commands:
- <arara> wget -O "@{tempfile}.bib" "http://localhost:@{port}/better-bibtex/collection?@{collection}.@{format}"
- <arara> wget -O "@{base}.bib" "http://localhost:@{port}/better-bibtex/collection?@{collection}.@{format}"
- <arara> @{ isWindows( "cmd /c del", "rm" ) } "@{tempfile}.bib"
arguments:
- identifier: base
flag: <arara> @{parameters.base}
default: @{getBasename(file)}
- identifier: tempfile
flag: <arara> @{parameters.tempfile}
default: @{getBasename(file)}_tmp
- identifier: port
flag: <arara> @{parameters.port}
default: 23119
- identifier: format
flag: <arara> @{parameters.format}
default: biblatex
- identifier: collection
flag: <arara> @{parameters.collection}
运行不带参数的规则时,出现此错误:
It appears that the 'zoterobib' task has a YAML syntax error or
an invalid field. Could you take a look at the 'zoterobib.yaml'
file located at 'C:\Program Files\arara\rules'. I tried my best
to dump the error message, so here it is:
Context: while scanning for the next token
Problem: found character @'@' that cannot start any token
Error found in line 21, column 11.
default: @{getBasename(file)}
^
(箭头在“@”下方,按比例字体移出了原来的位置。我有另一条使用这种参数规范的规则,而且有效,所以我不知道为什么它不会被接受。
答案1
对你问题的回答也解释了为什么我<arara>
首先要介绍。:)
让我们看看手册本身的引文(我很震惊我添加了这句话!):
遗憾的是,我们不能以 开头,
@
因为这个符号是为 YAML 格式的未来使用而保留的。例如,foo: @bar
是一种无效的 YAML 格式,因此正确的用法是将其括在引号中:foo: '@bar'
或foo: "@bar"
。我们还需要用 中的引号将字符串括起来arara
,但现在我们可以通过在值中添加前缀来保存它们<arara>
。换句话说,foo: <arara > @bar
被正确解析;当在特定位置找到该关键字时,arara
将其删除。
所以我们可以替换
default: @{getBasename(file)}
通过
default: "@{getBasename(file)}"
或者
default: '@{getBasename(file)}'
或者
default: <arara> @{getBasename(file)}
希望能帮助到你!:)