我编写了一个 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}
注意使用i
和c
标志。该规则可以用作
% 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