![如何在文档中使用 abc 符号制作多谱表音乐?](https://linux22.com/image/443959/%E5%A6%82%E4%BD%95%E5%9C%A8%E6%96%87%E6%A1%A3%E4%B8%AD%E4%BD%BF%E7%94%A8%20abc%20%E7%AC%A6%E5%8F%B7%E5%88%B6%E4%BD%9C%E5%A4%9A%E8%B0%B1%E8%A1%A8%E9%9F%B3%E4%B9%90%EF%BC%9F.png)
我一直在尝试使用包 '''abc''' 来在文档中生成多谱表音乐符号。如果可能的话,我想用这个而不是 LilyPond 等来找到解决方案。在咨询文档对于 '''abc''' 包,我觉得这应该是可能的。内容如下:
该语言的最新扩展名为 ABC Plus,允许设置多个谱表和复音。将这些符号转换为乐谱的最佳程序之一是 '''abcm2ps''',它可以获取 ABC 或 ABC Plus 文件并将其转换为 PostScript 文件。该软件包的目的是允许 LATEX 用户在其文档中包含直接用 ABC (Plus) 编写的音乐小片段。
这是我尝试过的:
\documentclass{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage[generate,ps2eps]{abc} % I've tried different things within the [], but I still suspect the problem lies here... This works for single-stave stuff.
\begin{ducument}
Here follows three identical renderings of Brother John:
\begin{abc}[name=brother1]
X:1
T: Brother John
L: 1/4
K: F
M: 4/4
V:1
FGAF | FGAF | ABcz | ABcz | c/d/c/B/ AF | c/d/c/B/ AF |
V:2
z4 | z4 | FGAF | FGAF | ABcz | ABcz |
\end{abc}
\begin{abc}[name=brother2]
X: 1
T: Brother John
L: 1/4
V: 1 clef=treble name="Soprano" sname="S"
V: 2 clef=treble name="Contralto" sname="C"
K: F
%
[V:1] FGAF | FGAF | ABcz | ABcz | c/d/c/B/ AF | c/d/c/B/ AF |
[V:2] z4 | z4 | FGAF | FGAF | ABcz | ABcz |
\end{abc}
\begin{abc}[name=brother3]
X: 1
T: Brother John
L: 1/4
K: F 0&2
%
z4 & FGAF |z4 & FGAF | FGAF & ABcz | FGAF & ABcz | ABcz & c/d/c/B/ AF | ABcz & c/d/c/B/ AF |
\end{abc}
\end{ducument}
前两种格式遵循ABC Plus 文档。
第三种格式关注 ABC2MTEX,我尝试了一下,看看它是否能起作用。
我尝试使用以下方法编译
latex --shell-escape testfile
dvips -o testfile.ps testfile.dvi
ps2pdf testfile.ps
这适用于单谱表音乐。
我的三个例子中有一个可以以某种方式改进吗,或者是否存在完全不同的制作多谱表乐谱的方法?
答案1
我不知道什么时候abcm2ps
开始在生成的 PostScript 文件中附加无用的数字,甚至没有任何选项可以关闭此功能。:-(
此外,如果文件中指定了标题.abc
,则该-O=
选项将使用它。:-(
这是一个临时的解决办法。
\documentclass{scrartcl}
\usepackage[generate,ps2eps]{abc}
\usepackage{xpatch}
\makeatletter
\renewcommand{\abc@parm}{-O\[email protected]\space -c}
\define@key{abc}{name}[]{%
\if!#1!\stepcounter{abc@count}%
\edef\abc@tempfile{\normalabcoutputfile-\@arabic\c@abc@count}%
\else
\def\abc@tempfile{#1001}%
\fi
}
\makeatother
\begin{document}
\begin{abc}[name=brother1]
X: 1
T: Brother John
C: Traditional
L: 1/4
K: F
M: 4/4
V:1
FGAF | FGAF | ABcz | ABcz | c/d/c/B/ AF | c/d/c/B/ AF |
V:2
z4 | z4 | FGAF | FGAF | ABcz | ABcz |
V:1
GCFz |GCFz | z4 | z4 |
V:2
c/d/c/B/ AF | c/d/c/B/ AF | GCFz | GCFz|
\end{abc}
\end{document}