logos” post=64734Devo mettere un piccolo pezzetto di musica in un file prevalentemente LaTeX, anzi XeLaTeX. Sono giusto poche note ed in gran parte è testo di matematica e fisica.
Ciao,
Andrea
Eccomi qui: ti dico come faccio io, permettendomi di postare gli aiuti che Enrico mi diede illo tempore. Vado per punti.
0.
Ti do la procedura che mi funziona su Mac OS X. Non ho idea se la stessa cosa vada bene anche su altre architetture. Prego Enrico di intervenire se dico boiate.
1.
Accèrtati che il tuo editor supporti il motore di LilyPond (TeXShop lo fa) e, se sì, attiva il motore: in qualche cartella di TeXShop ci sono i motori, basta spostarli in una cartella dove il programma li possa vedere. Poi copia il programma LilyPond nella stessa cartella in cui si trova il tuo editor (io ho visto che mi funziona solo così: su Mac, il file LilyPond è nella cartella TeX in Applicazioni).
2.
Crèati una cartella di lavoro nella quale metterai tutti i file che ti serviranno per comporre il tuo esempio.
3.
Copia questo codice in un file che registrerai come lilypond.sty e che metterai nella cartella del punto 2:
`% -*- coding: utf-8 -*-
% !TEX encoding = UTF-8 Unicode
% !TeX encoding = utf8
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{lilypond}
\RequirePackage{xkeyval}
\newlength{\lilypond@staffsize}
\newlength{\lilypond@betweensystemspace}
\setlength{\lilypond@betweensystemspace}{20mm}
\DeclareOptionX{staffsize}[0]{\setlength{\lilypond@staffsize}{#1pt}}
\DeclareOptionX{between-system-space}[20]{%
\setlength{\lilypond@betweensystemspace}{#1mm}}
\DeclareOptionX{GNU/Linux}{\chardef\lilypond@system\z@}
\DeclareOptionX{MacOSX}{\chardef\lilypond@system\@ne}
\ExecuteOptionsX{GNU/Linux}
\ProcessOptionsX
\RequirePackage{graphicx}
\RequirePackage{ifpdf}
\ifcase\lilypond@system
\def\lilypond@command{lilypond}
\or
\def\lilypond@command{/Applications/LilyPond.app/Contents/Resources/bin/lilypond}
\fi
\def\lilypond@writedim#1{\strip@pt\dimexpr.997#1\relax\string\pt}
\immediate\openout\@unused=config.ly
\immediate\write\@unused{
\string\paper {^^J
indent = 0\string\mm^^J
line-width = \lilypond@writedim{\columnwidth}^^J
oddFooterMarkup = \string”\string”^^J
oddHeaderMarkup = \string”\string”^^J
bookTitleMarkup = \string”\string”^^J
scoreTitleMarkup = \string”\string”^^J
between-system-space = \lilypond@writedim{\lilypond@betweensystemspace}^^J
}^^J
\string\layout{\string\context{\string\Score\string\remove
\string”Bar_number_engraver\string”}}%
}
\immediate\closeout\@unused
\ifpdf
\def\lilypond@ext{pdf}
\def\lilypond@option{}
\else
\def\lilypond@ext{eps}
\def\lilypond@option{–ps}
\fi
\ifnum\pdfshellescape=\@ne
\def\lilypond@process#1{\immediate\write18{%
\lilypond@command\space -dbackend=eps \lilypond@option\space #1.ly}
\par\noindent\includegraphics{#1}\par}
\else
\def\lilypond@process{\par\noindent\fbox{Missing music}\par}
\fi
\newcommand{\lilypondfile}[1]{%
\IfFileExists{#1.pdf}
{\par\noindent\includegraphics{#1}\par}
{\lilypond@process{#1}}}
\endinput`
4.
Copia questo codice in un file che registrerai come config.ly e che metterai nella stessa cartella del punto 2:
`\paper{
indent = 0\mm
line-width = 343.96294\pt
oddFooterMarkup = “”
oddHeaderMarkup = “”
bookTitleMarkup = “”
scoreTitleMarkup = “”
between-system-space = 8.51015\pt
}
\layout{\context{\Score\remove”Bar_number_engraver”}}`
5.
Copia questo codice in un file che registrerai come testlily.ly e che metterai nello stesso posto (nota che il numero di versione corrisponde all’ultima versione stabile disponibile, ma puoi usare anche una versione più vecchia: ci metterai il numero di versione corrispondente):
`\version “2.14.2”
\include “config.ly”
\relative c'' {
c d e c
}`
6.
Fa’ lo stesso con questo codice, che registrerai come testlily2.ly:
`\version “2.14.2”
\include “config.ly”
\relative c'' {
c d e c
c d e c
c d e c
c d e c
c d e c
c d e c
c d e c
c d e c
c d e c
c d e c
c d e c
c d e c
c d e c
c d e c
c d e c
c d e c
c d e c
c d e c
c d e c
}`
6.
A questo punto, copia questo codice in un file che registrerai come test.tex e che metterai nello stesso posto:
`% !TEX encoding = UTF-8 Unicode
% !TEX TS-program = pdflatex
\documentclass[draft]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[italian]{babel}
\usepackage[final]{graphicx}
\usepackage[MacOSX,between-system-space=3]{lilypond}
\usepackage{lipsum}
\begin{document}
Test: integrare \LaTeX{} e LilyPond.
\lilypondfile{testlily}
Non male, nevvero?
\lipsum[2]
\lilypondfile{testlily2}
\end{document}`
7.
Componi il tuo documento con pdflatex, assicurandoti che nelle preferenze del tuo editor sia attiva –shell-escape, oppure compila da terminale portandoti nella cartella di lavoro e dando
`pdflatex -shell-escape test`
Fammi sapere.
Ciao
Tommaso