[ << lilypond-book を実行する ] | [Top][Contents][Index] | [ 外部プログラム >> ] |
[ < lilypond-book テンプレート ] | [ Up : lilypond-book を実行する ] | [ テキストと楽譜を組み合わせる他の方法 > ] |
3.7 目次を共有する
この機能はすでに OrchestralLily パッケージで用意されています:
より自由度の高いテキスト処理をするために、lilypond から目次をエクスポートして、LaTeX に読み込ませる方法を好むユーザもいるかもしれません。
LilyPond から目次をエクスポートする
以下のコードは、複数の楽章を 1 つのファイルに出力するものと仮定しています。
#(define (oly:create-toc-file layout pages) (let* ((label-table (ly:output-def-lookup layout 'label-page-table))) (if (not (null? label-table)) (let* ((format-line (lambda (toc-item) (let* ((label (car toc-item)) (text (caddr toc-item)) (label-page (and (list? label-table) (assoc label label-table))) (page (and label-page (cdr label-page)))) (format #f "~a, section, 1, {~a}, ~a" page text label)))) (formatted-toc-items (map format-line (toc-items))) (whole-string (string-join formatted-toc-items ",\n")) (output-name (ly:parser-output-name)) (outfilename (format #f "~a.toc" output-name)) (outfile (open-output-file outfilename))) (if (output-port? outfile) (display whole-string outfile) (ly:warning (G_ "Unable to open output file ~a for the TOC information") outfilename)) (close-output-port outfile))))) \paper { #(define (page-post-process layout pages) (oly:create-toc-file layout pages)) }
LaTeX に目次をインポートする
LaTeX ファイルのヘッダ中に以下を記述します:
\usepackage{pdfpages} \includescore{nameofthescore}
ここで、\includescore
は以下のように定義されています:
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % \includescore{PossibleExtension} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Read in the TOC entries for a PDF file from the corresponding .toc file. % This requires some heave latex tweaking, since reading in things from a file % and inserting it into the arguments of a macro is not (easily) possible % Solution by Patrick Fimml on #latex on April 18, 2009: % \readfile{filename}{\variable} % reads in the contents of the file into \variable (undefined if file % doesn't exist) \newread\readfile@f \def\readfile@line#1{% {\catcode`\^^M=10\global\read\readfile@f to \readfile@tmp}% \edef\do{\noexpand\g@addto@macro{\noexpand#1}{\readfile@tmp}}\do% \ifeof\readfile@f\else% \readfile@line{#1}% \fi% } \def\readfile#1#2{% \openin\readfile@f=#1 % \ifeof\readfile@f% \typeout{No TOC file #1 available!}% \else% \gdef#2{}% \readfile@line{#2}% \fi \closein\readfile@f% }% \newcommand{\includescore}[1]{ \def\oly@fname{\oly@basename\@ifmtarg{#1}{}{_#1}} \let\oly@addtotoc\undefined \readfile{\oly@xxxxxxxxx}{\oly@addtotoc} \ifx\oly@addtotoc\undefined \includepdf[pages=-]{\oly@fname} \else \edef\includeit{\noexpand\includepdf[pages=-,addtotoc={\oly@addtotoc}] {\oly@fname}}\includeit \fi }
[ << lilypond-book を実行する ] | [Top][Contents][Index] | [ 外部プログラム >> ] |
[ < lilypond-book テンプレート ] | [ Up : lilypond-book を実行する ] | [ テキストと楽譜を組み合わせる他の方法 > ] |