如何在一个命令中运行 LaTeX 和 lilypond-book?

如何在一个命令中运行 LaTeX 和 lilypond-book?

我想知道是否有任何命令可以让我一步从 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。这也在文档

以下描述期望两点:

  1. 您已经安装了lilypond(我知道您已经安装了;-)
  2. 如果你调用,你会在终端中得到以下输出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}

下一步是新的文件扩展名lytexarara支持tex、,但不是你的文件扩展dtxltx。因此,你必须告诉使用新扩展名。这可以在名为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

我得到以下输出:

相关内容