问题:发现字符 @'@' 不能启动任何标记

问题:发现字符 @'@' 不能启动任何标记

我正在尝试创建一个 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)}

希望能帮助到你!:)

相关内容