7

I'm trying to create an arara rule that will download my bibliography from zotero using its embedded server. The URL works, that's not the issue, but arara claims the file has a syntax issue.

The rules file has this:

!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}

When running the rule without parameters, I get this error:

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)}  
           ^                                                  

(the arrow is under the '@', shifted out of its place by the proportional font. I have another rule that uses this kind of parameter specification, and that works, so I'm at a loss to see why this wouldn't be accepted.

1 Answer 1

8

The answer to your question also explain why I had to introduce <arara> in the first place. :) Let's see a quote from the manual itself (I'm quite shocked that I added this remark!):

Sadly, we can't start values with @ because this symbol is reserved for future use in the YAML format. For example, foo: @bar is an invalid YAML format, so the correct usage is to enclose it in quotes: foo: '@bar' or foo: "@bar". We also need to enclose our strings with quotes in arara, but now we can save them by simply adding the <arara> prefix to the value. In other words, foo: <arara > @bar is correctly parsed; when that keyword in that specific position is found, arara removes it.

So we can replace

default: @{getBasename(file)}

by either

default: "@{getBasename(file)}"

or

default: '@{getBasename(file)}'

or

default: <arara> @{getBasename(file)}

Hope it helps! :)

2
  • It does; I didn't read that part of the manual (sorry!)
    – retorquere
    Dec 8, 2013 at 20:14
  • @friflaj: don't worry, the manual is boring. :) Dec 8, 2013 at 20:26

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .