![如何在一个命令中运行 LaTeX 和 lilypond-book?](https://linux22.com/image/267311/%E5%A6%82%E4%BD%95%E5%9C%A8%E4%B8%80%E4%B8%AA%E5%91%BD%E4%BB%A4%E4%B8%AD%E8%BF%90%E8%A1%8C%20LaTeX%20%E5%92%8C%20lilypond-book%EF%BC%9F.png)
我想知道是否有任何命令可以让我一步从 LyTeX 源创建 PDF。目前,我首先执行lilypond-book
:
lilypond-book --latex-program=pdflatex --pdf --lily-output-dir=./tmp ./thesis.lytex
完成后,通常的 PDFLaTeX 调用:
pdflatex ./thesis.tex
虽然这可以正常工作,但我想知道是否有办法将其作为单个命令执行(我想在 TeXworks 中为此创建一个排版规则,但为此,我需要将所有这些放在一个命令中)。我知道我可以为此创建一个自定义 shell 脚本(事实上,这就是我现在实际拥有的)。但是,我特别想知道是否有一个“内置”解决方案?我正在考虑一种类似于 LaTeXMK 方法的解决方案,它允许在同一个命令中运行 BibTeX 和 LaTeX 以及其他一些工具,并注意调用不同程序的正确顺序等。
答案1
让我尝试使用来解决您的问题arara
如果您arara
第一次听到这里的一个小摘要:
arara
允许从主文档中指定编译步骤
这句话不足以描述该工具的全部功能。因此,您可以查看文档或主页上的简短介绍:主页arara
的当前稳定版本arara
可在 CTAN 获得,它是 TeX Live/MacTeX 的一部分。如果您使用 MikTeX,则必须安装arara
。这也在文档。
以下描述期望两点:
- 您已经安装了
lilypond
(我知道您已经安装了;-)
) - 如果你调用,你会在终端中得到以下输出
arara
:
marco@imac:~/Desktop/test$arara
__ _ _ __ __ _ _ __ __ _
/ _` | '__/ _` | '__/ _` |
| (_| | | | (_| | | | (_| |
\__,_|_| \__,_|_| \__,_|
arara 3.0 - The cool TeX automation tool
Copyright (c) 2012, Paulo Roberto Massa Cereda
All rights reserved.
usage: arara [file [--log] [--verbose] [--timeout N] [--language L] |
--help | --version]
-h,--help print the help message
-L,--language <arg> set the application language
-l,--log generate a log output
-t,--timeout <arg> set the execution timeout (in milliseconds)
-v,--verbose print the command output
-V,--version print the application version
现在我们可以开始了。arara
提供了很多规则,但不是lilypond
。但是编写规则几乎很简单。以下规则可以作为起点。当然,您可以不做任何更改就使用该规则。将文件另存为lilypond.yaml
(扩展名很重要)。
lilypond.yaml
!config
# Mainfile rule for arara
# author: Marco Daniel
# requires arara 3.0+
identifier: lilypond
name: Lilypond
command: <arara> lilypond-book @{format} @{options} @{output} "@{file}"
arguments:
- identifier: format
flag: <arara> --format=@{parameters.latex-programm}
default: <arara> --format=latex
- identifier: options
flag: <arara> @{parameters.options}
- identifier: output
flag: <arara> --output=@{parameters.output}
下一步是新的文件扩展名lytex
。arara
支持tex
、,但不是你的文件扩展dtx
名ltx
。因此,你必须告诉使用新扩展名。这可以在名为which 的arara
文件中完成araraconfig.yaml
必须保存在您的主目录中。您可以在那里添加新规则和新扩展的路径。在我的系统中它看起来像:
araraconfig.yaml
!config
# Config file to use texmfhome as search path
# author: Marco Daniel
# requires arara 3.0+
paths:
- /Users/marco/Library/texmf/scripts/arara/rules
filetypes:
- extension: lytex
pattern: ^(\s)*%\s+
与此配置文件相关,您可以将提供的规则保存在文件夹中
/Users/marco/Library/texmf/scripts/arara/rules
执行此操作。如您所见,还指定了具有搜索模式的文件类型。您可以在文档。
现在让我们举个例子。我将文件保存为test.lytex
:
test.lytex
% arara: lilypond
% arara: pdflatex: { files: [ test.tex ] }
\documentclass{scrartcl}
\begin{document}
Text
\begin{lilypond}[staffsize=12]
\relative c' {
c2^"Text" g'2 \times 2/3 { f8 e d } c'2 g4
}
\end{lilypond}
\end{document}
拨打电话后arara
marco@imac:~/Desktop/test$arara test.lytex
__ _ _ __ __ _ _ __ __ _
/ _` | '__/ _` | '__/ _` |
| (_| | | | (_| | | | (_| |
\__,_|_| \__,_|_| \__,_|
Running Lilypond... SUCCESS
Running PDFLaTeX... SUCCESS
我得到以下输出: