hello.yaml

hello.yaml

我编写了一个 shell 脚本,用于将我的一些文件转换为不同的格式,以供我的 LaTeX 文件使用。是否可以编写一条arara可以使用我的 shell 脚本的规则?

编辑

我应该注意:该脚本是通过我的 bashprofile文件加载的,它的定义如下

myscript () { <script contents> }

换句话说,该脚本并不作为某个目录中的可执行文件而存在。

答案1

是的,这当然可以做到。感谢保罗arara创作者)对此提供的帮助:)

假设您的文件.bashrc包含以下内容

function hello() {
   echo "Hello, $0!"
}

export -f hello

请注意使用可以从命令行export使用该函数。hello

然后我们就可以arara包含行的规则

- <arara> bash -i -c hello @{name}

注意使用ic标志。该规则可以用作

% arara: hello

或者

% arara: hello: {name: Ellett}

hello.yaml

!config
# Hello world
# author: Chris Hughes, Paulo Cereda
# last edited by: cmh, June 14th 2013
# requires arara 3.0+
#
# Sample usage: 
#
# % arara: hello
# % arara: hello: {name: A.Ellett}
#
# This rule is really just a shortcut for commands like the following
#
#   hello
# or
#   hello A.Ellett
#
identifier: hello
name: hello
commands: 
- <arara> bash -i -c hello @{name}
arguments: 
- identifier: name
  flag: <arara> @{parameters.name}
  default: "world"

myfile.tex

% arara: hello
% arara: hello: {name: Ellett}
\documentclass{article}

\begin{document}

test

\end{document}

以下是输出arara -v myfile.tex

  __ _ _ __ __ _ _ __ __ _ 
 / _` | '__/ _` | '__/ _` |
| (_| | | | (_| | | | (_| |
 \__,_|_|  \__,_|_|  \__,_|

Running hello... 

Hello, world!
Status: SUCCESS

Running hello... 

Hello, Ellett!
Status: SUCCESS

答案2

在下一版本的 TeXlive 中将会有尝试,它与 类似arara,但更简单。它使用简单的 bash 命令插入 TeX 注释中。

主要用途TrY是在文档中明确列出编译所需的命令列表,如下所示:

%
%$ xetex -shell-escape filename.tex 
%$ bibtex -min-crossref=3 filename.aux
%$ xetex -shell-escape filename.tex
%$ xetex -shell-escape filename.tex
%

但您可以用同样的方式从注释中调用您的脚本:

%
%$ ./myscript $0
%$ pdftex $0
%

其中$0是代表参数“本文档”的占位符。

您还可以将脚本放入注释中:

%
%$ while [ $a -le "$LIMIT" ]
%$ do
%$   a=$(($a+1))
%$   if [ "$a" -eq 3 ] || [ "$a" -eq 11 ]
%$   then
%$     continue
%$   fi
%$   echo -n "$a "
%$ done
%
%$ pdftex $0
%

(该脚本仅为示例,不具有特定的功能或含义)。

然后你必须用明显的方式编译该文档:

$ try mydocument.tex

相关内容