明年我将开设一个教程,名为“音乐家的 LaTeX”,当然我希望向大家展示如何在他们的文本中加入音乐。我自己也是一名音乐家,但我从未使用过 LaTeX 来排版音乐。
我找到了两种在 LaTeX 文档中包含音乐的方法(另外:将音乐集成为图像),我想分享我的想法并寻求一些帮助(见下文)。首先,让我们更详细地了解这两种方法:
ABC
代码
% file abc.tex
\documentclass{scrartcl}
\usepackage{abc}
\begin{document}
Text
\begin{abc}[name=c-dur]
X: 1 % start of header
K: C % scale: C major
"Text"C4 G4 | (3FED c4 G2 |
\end{abc}
\end{document}
编译
pdflatex --shell-escape abc.tex
输出
荷花池
代码
% file lp.lytex
\documentclass{scrartcl}
\begin{document}
Text
\begin[staffsize=12]{lilypond}
\relative c' {
c2^"Text" g'2 \times 2/3 { f8 e d } c'2 g4
}
\end{lilypond}
\end{document}
编译
lilypond-book --output=out-dir --pdf lp.lytex
cd out-dir
pdflatex lp.tex
输出
比较
现在让我们来谈谈其优点和缺点。
- 这ABC工作流程更轻松比 LilyPond 的要好,只需要调用
pdflatex
。对于本教程的学生来说,这是更好的选择,因为他们中的大多数人都不是计算机极客。 - 这ABC 语法似乎更轻松乍一看。
- 荷花池使用正确的字体即LaTeX文档的字体。
abc.sty
总是产生显示样式图像,即,它开始一个新行并将其内容居中。此外,现在似乎有一个选项可以缩短行,使其仅适合键入的注释,而不是跨越整个行\linewidth
(解决方法:设置width=0.5\abcwidth
)。- 据我所知荷花池是更加灵活在排版音乐的方式数量上(排队,显示样式,……)以及一般的排版可能性。
- 这LilyPond 音乐字体看起来更好除了粗条线外。
问题
这些数字不是为了给出顺序。我给问题编号是为了方便回答……
- 您更喜欢使用哪种方式?对于不太擅长使用电脑的学生,您建议使用哪种方式?
- 我想知道是否有可能创建一个集成 LilyPond 的包,就像
abc.sty
宽度 ABC 符号一样 - 可以更改 ABC 输出的字体以使其与 LaTeX 主字体匹配吗?
- 有没有办法让 ABC 根据给定的音符数量找到合适的行长?
- 可以改变 LilyPonds 条线的宽度吗?
结论
我更愿意使用(和教授)LilyPond 的方式,但我担心编译工作流程会吓到学生。所以如果问题 2 能解决就太好了 :-)
我希望你能理解我的意思,因为我的英语可能不是很好。如果有不清楚的地方,请询问……
答案1
由于程序本身的限制,无法使用与 ABC 文档相同的字体abcm2ps
。不过,我已经很久没有更新它了,可能情况已经发生了变化(我会看看)。
添加音乐片段的“内联”版本应该很容易,但由于该包旨在包含完整的曲调,因此不存在该版本。
以同样的方式与 LilyPond 集成并不容易。我有一些“可以工作”的代码。一个主要的障碍是从 TeX 端传递 LilyPond 参数和指令的难度(对于 lilypond-book 则相反)。
由于大家似乎对这个话题感兴趣,我将尝试开发代码。目前,以下代码
\begin{filecontents*}{testlily.ly}
\version "2.13.38"
\include "config.ly"
\relative c'' {
c d e c
}
\end{filecontents*}
\begin{filecontents*}{testlily3.ly}
\version "2.13.38"
\include "config.ly"
\relative c' {
c2^"Text" g'2 \times 2/3 { f8 e d } c'2 g4
}
\end{filecontents*}
\documentclass[draft]{article}
\usepackage[final]{graphicx}
\usepackage[MacOSX,between-system-space=3]{lilypond}
\usepackage{lipsum}
\pagestyle{empty}
\begin{document}
Test: integrating \LaTeX{} and LilyPond.
\lilypondfile{testlily}
Not too bad, isn't it?
\lipsum[2]
\lilypondfile{testlily3}
\end{document}
将产生以下输出: