5

I wrote a perl script (teximporter) to facilitate the use of in-line foreign textual notation inclusion in LaTeX. Typically, it calculates a set of files (images, attach, ...) and a latex replacement string. Example:

\inline_abc[midi,width=\textwidth]{
X:1
T:Dó-Ré-Mi
K:Emaj
M:2/4
EF G2 | GG G2 | GA B2 | BB B2 | AG F2 | FF F2 | GF E>E|EE E2||
}

After

teximport ex.tex > _ti_ex.tex
pdflatex _ti_ex.tex

we got the expected result (a pdf image and a midi attach), enter image description here In order to hide command line activity (for IDEs), I decided to try arara. Here is my teximporter.yaml

!config
identifier: teximporter
name: teximporter
commands:
-  teximporter -o "_ti_@{file}" "@{file}" 
-  pdflatex "_ti_@{file}" 
arguments: []

But the final pdf file has the wrong name (_pi_ex.pdf instead of ex.pdf).

What is the best way to define a good arara configuration for a preprocessor, if possible capable of running in Linux, Windows and Mac.

JJoao
  • 683
  • According to the rule that you've specified, I'd say that _ti_ex.pdf is the appropriate name of the pdf. You could add another line to rename the pdf, which I have done in, for example, my answer to : http://tex.stackexchange.com/questions/31334/how-to-create-individual-chapter-pdfs. For reference, you might like to see: http://tex.stackexchange.com/questions/19182/how-to-influence-the-name-of-the-pdf-file-created-with-pdflatex-from-within-the – cmhughes Mar 01 '17 at 11:36
  • Hello João! Chris (@cmhughes) is right, when running pdflatex on a file named a.tex, you end up with a PDF file named a.pdf, so the current result is expected. Is _ti_ex.pdf the file you were expecting, only with the "wrong" name? If so, it is just a matter of writing a "rename" command in the list of commands. Chris wrote a solution for that, but I can come up with another solution if you want more features to be added to your rule. :) – Paulo Cereda Mar 01 '17 at 17:04
  • @cmhughes, thank you! in the suggested answers I learn some very nice tricks like isWindows("...", "..." and -jobname -- this way I see 2 good ways to write a system independent rename. – JJoao Mar 01 '17 at 19:06
  • @PauloCereda, muito obrigado! After Chris wise suggestions I will begin by trying - pdflatex -jobname="@{getBasename(file)}" "_ti_@{file}" This way it will work with some IDEs and in the music files, we just need a simple % arara: teximport. – JJoao Mar 01 '17 at 19:18
  • That's great! Perhaps you could self answer with your implementation :) – cmhughes Mar 01 '17 at 20:51
  • @cmhughes and @ PauloCereda, I tried to write down what I leaned so far: please correct my mistakes ... – JJoao Mar 01 '17 at 22:55

1 Answers1

1

This is not really my answer: all the wisdom came from @cmhughes and others (see references in the comments).

The configuration presented in question has some problems:

  • the pdf output for file a.tex is _pi_a.pdf -- problematic for the IDEs' users : rename needed
  • it forces the use of pdflatex : parameter needed

Following the new version of configuration teximporter.yaml :

!config
identifier: teximporter
name: teximporter
commands:
-  <arara> teximporter -o _ti_@{file} @{file} 
-  <arara> @{engine} -jobname=@{getBasename(file)} _ti_@{file}

arguments:
- identifier: engine
  flag: <arara> @{parameters.engine}
  default: pdflatex

Comments:

  • jobname=@{getBasename(file)} : renames output and auxiliary files to the initial basename (a.pdf, a.aux, etc)
  • @{engine} : defines a parameter (default: pdflatex) to be possible to choose different latex engines (lualatex, etc) (copied from @cmhughes)

To use teximporter preprocessor, add the following to the "tex" file:

% arara : teximporter

or

% arara : teximporter: { engine : lualatex }

And it is possible to directly use arara as the processor in IDEs like TexWorks.

JJoao
  • 683