summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/lyluatex/lyluatex.sty
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/latex/lyluatex/lyluatex.sty')
-rw-r--r--Master/texmf-dist/tex/latex/lyluatex/lyluatex.sty73
1 files changed, 73 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex/lyluatex/lyluatex.sty b/Master/texmf-dist/tex/latex/lyluatex/lyluatex.sty
new file mode 100644
index 00000000000..f3cc35dbf22
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/lyluatex/lyluatex.sty
@@ -0,0 +1,73 @@
+\ProvidesPackage{lyluatex}
+
+% Dépendances
+\RequirePackage{luatexbase}
+\RequirePackage{luaotfload}
+\RequirePackage{kvoptions}
+\RequirePackage{graphicx}
+\RequirePackage{keycommand}
+\RequirePackage{environ}
+\RequirePackage{currfile}
+% Options
+\DeclareStringOption[lilypond]{program}[lilypond]
+\ProcessKeyvalOptions*
+% Script lua
+\directlua{dofile(kpse.find_file("lyluatex.lua"))}
+\directlua{LILYPOND = '\lyluatex@program'}
+
+% Une tricherie un peu sale pour récupérer la largeur de ligne
+\let\bs\textbackslash
+{\catcode`p=12 \catcode`t=12 \gdef\un#1pt{#1}}
+\newcommand*{\largeur}{\expandafter\un\the\linewidth}
+% Taille des partitions
+% Si la valeur est 0, elle sera automatiquement calculée
+% à partir de la taille de police.
+\def\staffsize{0}
+\let\localstaffsize\staffsize
+
+
+% Commandes principales
+% Inclusion d'un fichier ly
+\newkeycommand*\includely[staffsize=\staffsize][autres][1]{%
+\directlua{%
+ inclure_ly(
+ "\luatexluaescapestring{#1}",
+ "\luatexluaescapestring{\currfiledir}",
+ \luatexluaescapestring{\largeur},
+ \luatexluaescapestring{\commandkey{staffsize}}
+ )%
+}%
+}
+
+% Inclusion d'un fragment intégré au document (environnement de base)
+\NewEnviron{compilerly}{%
+\directlua{%
+ direct_ly(
+ "\luatexluaescapestring{\unexpanded\expandafter{\BODY}}",
+ \luatexluaescapestring{\largeur},
+ \luatexluaescapestring{\localstaffsize}
+ )%
+}%
+}
+
+% Commande et environnement avec paramètres
+\newkeycommand{\lily}[staffsize=\staffsize][autres][1]{%
+\def\localstaffsize{\commandkey{staffsize}}%
+\begin{compilerly}%
+{#1}
+\end{compilerly}%
+}
+
+\newkeyenvironment{ly}[staffsize=\staffsize][autres]{%
+\def\localstaffsize{\commandkey{staffsize}}%
+\compilerly%
+}{%
+\endcompilerly%
+}
+
+% Commandes pour la compatibilité avec lilypond-book
+\let\lilypondfile\includely
+\protected\def\lilypond{\def\reserved@a{lilypond}%
+ \ifx\reserved@a\@currenvir \expandafter \ly
+ \else \expandafter\lily \fi}
+\let\endlilypond\endly