将 PMX 预处理的 MusiXTeX 代码转换为正确的 LaTeX 代码

将 PMX 预处理的 MusiXTeX 代码转换为正确的 LaTeX 代码

我想将 MusiXTeX 脚本包含到普通 LaTeX 文档中,以便能够将另一段音乐添加到同一个输出 pdf 文档(将是一张 DIN A4 页面)。

当仅使用 MusiXTeX 时,脚本将不包含\documentclass(例如{scrartcl})或\begin{document},而在将 MusiXTeX 作为包加载到 LaTeX 中时,某些 MusiXTeX 命令似乎是不必要的(\usepackage{musixtex})(我认为这对于\input命令而言是正确的)甚至会导致错误(例如\nopagenumbers\bye)。

我们以以下 PMX 预处理的 MusiXTeX 代码为例:

%%%%%%%%%%%%%%%%%
%
% Saabund.tex
%
%%%%%%%%%%%%%%%%
\input musixtex
\input pmx
\setmaxslurs{24}\setmaxinstruments{24}%
\normalmusicsize%
\nopagenumbers
\tracingstats=2\relax
\hsize=524pt
\vsize740pt
\def\nbinstruments{1}
\setstaffs11
\setclef10
\setname1{ }
\generalsignature{-1}%
\generalmeter\meterC%
\parindent 0pt
\elemskip1pt\afterruleskip1.000pt\beforeruleskip0pt\relax
\stafftopmarg0pt\staffbotmarg5\Interligne\interstaff{10}\relax
\nostartrule
\readmod{Saabund}
\nobarnumbers%
\input musixlyr %
\startmuflex\startpiece\addspace\afterruleskip%
\global\parskip 0pt plus 12\Interligne minus 99\Interligne%
\def\upstrut{\znotes&\zcharnote{\upamt}{~}\en}%
\znotes\zcharnote{16}{\titles{2.0}{}{0}%
{Saabund on j\"{a}lle \"{o}\"{o}}{2.0}{}{0}}\en%
% Bar count 1
\starteq%
\pnotes{4.00}%
\pmxlyr{Saa-bund on j\"{a}-lle \"{o}\"{o}, mis mei-le t\"{a}h-te-de vaik-set ra-hu toob.}\spread{-6}%
\hu f\en%
\pnotes{2.83}\qu f\qu f\en%
% Bar count 2
\xbar
\pnotes{3.46}\qup g\en%
\pnotes{2.00}\cu{'a}\en%
\pnotes{2.83}\pcaesura00\qu f\qu f\en%
% Bar count 3
\xbar
\pnotes{3.46}\qlp{'b}\en%
\pnotes{2.00}\cl{'c}\en%
\pnotes{2.83}\qu{'a}\en%
\pnotes{2.00}\ibu1f2\qb1f\tbu1\qb1{'a}\en%
% Bar count 4
\alaligne
\pnotes{2.00}\spread{-6}\ibu1g{-1}\qb1{'a}\qb1{`g}\qb1f\tbu1\qb1e\en%
\pnotes{4.00}\pcaesura00\hu f\en%
% Bar count 5
\xbar
\pnotes{4.00}%
\pmxlyr{L\~{o}pp-e-nud p\"{a}ev-a-t\"{o}\"{o} ja puh-ke-aeg ta-sa v\"{a}rs-keid j\~{o}u-de koob.}%
\hu{'a}\en%
\pnotes{2.83}\qu{'a}\qu a\en%
% Bar count 6
\xbar
\pnotes{3.46}\qlp{'b}\en%
\pnotes{2.00}\cl{'c}\en%
\pnotes{2.83}\pcaesura00\qu{'a}\qu a\en%
% Bar count 7
\alaligne
\endeq%
\pnotes{3.46}\spread{-6}\qup g\en%
\pnotes{2.00}\cu{'a}\en%
\pnotes{2.83}\pcaesura00\qu f\en%
\pnotes{2.00}\ibl1{'a}2\qb1a\tbl1\qb1c\en%
% Bar count 8
\xbar
\pnotes{2.00}\ibu1{'b}{-1}\qb1c\qb1b\qb1a\tbu1\qb1{`g}\en%
\pnotes{4.00}\pcaesura00\hu{'a}\en%
% Bar count 9
\xbar
\pnotes{4.00}%
\pmxlyr{Kuu, s\"{a}-rav kuu, h\~{o}-be-da-ne kuu uj-ub o-ma val-gus-voos.}%
\hl{'c}\en%
\pnotes{2.83}\qu{'a}\qu{`f}\en%
% Bar count 10
\alaligne
\pnotes{4.00}\spread{-6}\pcaesura00\hu c\en%
\pnotes{2.00}\ibu1{'a}0\qb1{`f}\qb1{'c}\qb1a\tbu1\qb1{`f}\en%
% Bar count 11
\xbar
\pnotes{4.00}\pcaesura00\hu c\en%
\pnotes{2.00}\ibu1e{-1}\qb1f\qb1e\qb1d\tbu1\qb1c\en%
% Bar count 12
\xbar
\pnotes{2.83}\qu b\qu c\en%
\pnotes{4.00}\hu f\en%
\Endpiece
\vfill\eject\endmuflex
\bye

按照上述建议编辑脚本后,出现了更大的问题(比较帖子结尾)。起初,所有笔记都堆放在几乎没有空间的地方,然后尝试musixflx按照建议运行在这个问题中,抛出错误消息:“文件未找到:jobname.mx1”。因此,我尝试在脚本上运行 etex,但脚本本身无法读取等等\documentclass……

如何打破这个恶性循环?


\documentclass{scrartcl}
\usepackage[utf8]{inputenc} % for characters in lyrics
\usepackage{musixtex}

\input musixtex
\input pmx
\setmaxslurs{24}\setmaxinstruments{24}%
\normalmusicsize%
%\nopagenumbers
\begin{document}
\tracingstats=2\relax
\hsize=524pt
\vsize740pt
\def\nbinstruments{1}
\setstaffs11
\setclef10
\setname1{ }
\generalsignature{-1}%
\generalmeter\meterC%
\parindent 0pt
\elemskip1pt\afterruleskip1.000pt\beforeruleskip0pt\relax
\stafftopmarg0pt\staffbotmarg5\Interligne\interstaff{10}\relax
\nostartrule
\readmod{Saabund}
\nobarnumbers%
\input musixlyr %
\startmuflex\startpiece\addspace\afterruleskip%
\global\parskip 0pt plus 12\Interligne minus 99\Interligne%
\def\upstrut{\znotes&\zcharnote{\upamt}{~}\en}%
\znotes\zcharnote{16}{\titles{2.0}{}{0}%
{Saabund on j\"{a}lle \"{o}\"{o}}{2.0}{}{0}}\en%
% Bar count 1
\starteq%
\pnotes{4.00}%
\pmxlyr{Saa-bund on j\"{a}-lle \"{o}\"{o}, mis mei-le t\"{a}h-te-de vaik-set ra-hu toob.}\spread{-6}%
\hu f\en%
\pnotes{2.83}\qu f\qu f\en%
% Bar count 2
\xbar
\pnotes{3.46}\qup g\en%
\pnotes{2.00}\cu{'a}\en%
\pnotes{2.83}\pcaesura00\qu f\qu f\en%
% Bar count 3
\xbar
\pnotes{3.46}\qlp{'b}\en%
\pnotes{2.00}\cl{'c}\en%
\pnotes{2.83}\qu{'a}\en%
\pnotes{2.00}\ibu1f2\qb1f\tbu1\qb1{'a}\en%
% Bar count 4
\alaligne
\pnotes{2.00}\spread{-6}\ibu1g{-1}\qb1{'a}\qb1{`g}\qb1f\tbu1\qb1e\en%
\pnotes{4.00}\pcaesura00\hu f\en%
% Bar count 5
\xbar
\pnotes{4.00}%
\pmxlyr{L\~{o}pp-e-nud p\"{a}ev-a-t\"{o}\"{o} ja puh-ke-aeg ta-sa v\"{a}rs-keid j\~{o}u-de koob.}%
\hu{'a}\en%
\pnotes{2.83}\qu{'a}\qu a\en%
% Bar count 6
\xbar
\pnotes{3.46}\qlp{'b}\en%
\pnotes{2.00}\cl{'c}\en%
\pnotes{2.83}\pcaesura00\qu{'a}\qu a\en%
% Bar count 7
\alaligne
\endeq%
\pnotes{3.46}\spread{-6}\qup g\en%
\pnotes{2.00}\cu{'a}\en%
\pnotes{2.83}\pcaesura00\qu f\en%
\pnotes{2.00}\ibl1{'a}2\qb1a\tbl1\qb1c\en%
% Bar count 8
\xbar
\pnotes{2.00}\ibu1{'b}{-1}\qb1c\qb1b\qb1a\tbu1\qb1{`g}\en%
\pnotes{4.00}\pcaesura00\hu{'a}\en%
% Bar count 9
\xbar
\pnotes{4.00}%
\pmxlyr{Kuu, s\"{a}-rav kuu, h\~{o}-be-da-ne kuu uj-ub o-ma val-gus-voos.}%
\hl{'c}\en%
\pnotes{2.83}\qu{'a}\qu{`f}\en%
% Bar count 10
\alaligne
\pnotes{4.00}\spread{-6}\pcaesura00\hu c\en%
\pnotes{2.00}\ibu1{'a}0\qb1{`f}\qb1{'c}\qb1a\tbu1\qb1{`f}\en%
% Bar count 11
\xbar
\pnotes{4.00}\pcaesura00\hu c\en%
\pnotes{2.00}\ibu1e{-1}\qb1f\qb1e\qb1d\tbu1\qb1c\en%
% Bar count 12
\xbar
\pnotes{2.83}\qu b\qu c\en%
\pnotes{4.00}\hu f\en%
\Endpiece
\vfill\eject\endmuflex
%\bye
\end{document}

相关内容