3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

楽譜を作るMusiXTeXの使い方

Posted at

musixtex について

ひょんなことからtexlive2022にmusixtexというのが含まれていることを知りました。楽譜組版用のマクロらしく、数式同様きれいな楽譜を作れる…らしいのですが、あまり広まってないのかQiitaで検索してみても記事がほとんどありませんでした。

そこで今回musixtexの使い方を書いてみることにしました。

ソースコード

例えばこんな楽譜を作りたいとします(きらきらぼしです)。みんなが知ってて譜面のソースコードがそれほど長くなくて普通のピアノの楽譜で右手と左手の譜面が両方あるものであと自分がメロディを覚えている曲だったのでこれにしました。

musixteximg-nt.png

ソースコードはこんな感じです。なお今回はコンパイルすることに焦点を当てているのでソースコードそのものの解説はしません。コードについてはMusiXTeXドキュメントをご覧ください。

platex文書
\documentclass[dvipdfmx]{jsarticle}
\usepackage{musixtex}
\pagestyle{empty}
\begin{document}
\nobarnumbers
\nostartrule
\begin{music}
	\parindent10mm
	\instrumentnumber{1}
	\setname1{Piano}
	\setstaffs1{2}
	\setclef16
	\generalmeter{\meterfrac44}
	\startpiece
	\Notes\qa {JJNN}|\qa {ccgg}\en\bar
	\Notes\qa{OO}\ha{N}|\qa{hh}\ha{g}\en\bar
	\Notes\qa{MMLL}|\qa{ffee}\en\bar
	\Notes\qa{KK}\ha{J}|\qa{dd}\ha{c}\en\setrightrepeat\bar
	\Notes\qa{NNMM}|\qa{ggff}\en\bar
	\Notes\qa{LL}\ha{K}|\qa{ee}\ha{d}\en\bar
	\Notes\qa{NNMM}|\qa{ggff}\en\bar
	\Notes\qa{LL}\ha{K}|\qa{ee}\ha{d}\en\bar
	\Notes\qa{JJNN}|\qa {ccgg}\en\bar
	\Notes\qa{OO}\ha{N}|\qa{hh}\ha{g}\en\bar
	\Notes\qa{MMLL}|\qa{ffee}\en\bar
	\Notes\qa{KK}\ha{J}|\qa{dd}\ha{c}\en\setrightrepeat
	\endpiece
	\end{music}
\end{document}

コンパイルレシピ

hoge.texhoge.pdfにするレシピは次のようなものです。

musixtexchart1.drawio.png

普通に platex+dvipdfmx をかけるとレイアウトが悲惨なことになります。

musixteximg-nt-mechakucha.drawio.png

これを回避するためにmx2ファイルを参照してコンパイルするのです。さらなる注意点としてmx2ファイルは次のコンパイル前に削除しないと正しいレイアウトになりません。正確には、行数が増えたときにその内容が反映されません。

以上を踏まえたLaTeX-Workshopの設定はこんな感じです。

settings.json
{
	"latex-workshop.latex.recipes": [
		{
			"name": "pmusixlatexmk",
			"tools": [
				"platex",
				"musixflx",
				"platexmk",
			]
		},
        {
			"name": "pmusixlatex",
			"tools": [
				"platex",
				"musixflx",
				"platex",
                "dvipdfmx"

			]
		},

	],
	"latex-workshop.latex.tools": [
		{
			"name": "platexmk",
			"command": "latexmk",
			"args": [
				"-e",
				"$latex=q/platex -synctex=1 -interaction=nonstopmode -halt-on-error/",
				"-e",
				"$bibtex=q/pbibtex/",
				"-e",
				"$biber=q/biber --bblencoding=utf8 -u -U --output_safechars/",
				"-e",
				"$dvipdf=q/dvipdfmx %O -o %D %S/",
				"-e",
				"$makeindex=q/mendex %O -o %D %S/",
				"%DOC%",
				"-e",
				"$ENV{'TEXINPUTS'}='.//:' . $ENV{'TEXINPUTS'}"
			]
		},
		{
			"name": "platex",
			"command": "platex",
			"args": [
				"-interaction=nonstopmode",
				"-synctex=1",
				"-halt-on-error",
				"-file-line-error",
				"%DOCFILE%.tex",
			],
		},
		{
			"name": "musixflx",
			"command": "musixflx",
			"args": [
				"%DOCFILE%.mx1",
			],
		},
        {
			"name": "dvipdfmx",
			"command": "dvipdfmx",
			"args": [
				"%DOCFILE%.dvi",
			],
		},

		],
	"latex-workshop.latex.autoClean.run": "onBuilt",
	"latex-workshop.latex.clean.fileTypes": [
		"*.aux",
		"*.out",
		"*.toc",
		"*.fls",
		"*.log",
		"*.fdb_latexmk",
		"*.synctex(busy)",
		"*.synctex.gz(busy)",
		"*.mx1",
		"*.mx2",
		"*.dvi",
		"*.txt"
	],
}

pmusixlatexmkでは目次と日本語付きの楽譜が作れるように、platex → musixflx → latexmk としています。dvipdfmx はlatexmk の中でやってくれます。一方pmusixlatexでは普通に platex → musixflx → platex → dvipdfmx としています。あと必ずmx2ファイルを削除してくれるようにlatex-workshop.latex.clean.fileTypesのリストに加えています。

これでコンパイルすると冒頭の楽譜を得ることができます。

参考文献

MusiXTeXドキュメント

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?