
El paquete lilyglyphs
proporciona un conjunto de macros para incorporar fácilmente fuentes Lilypond en archivos XeLaTeX. Ese paquete esta disponibleaquí. Estoy usando TeXLive 2013.
Con el siguiente MWE funciona como se esperaba con XeLaTeX:
\documentclass{memoir}
\usepackage{fontspec}
\usepackage{lilyglyphs}
\begin{document}
\lilyTimeC
\end{document}
Ejecutarlo con LuaLaTeX produce el siguiente error:
! Undefined control sequence. \lilyGetGlyph #1^^@-\XeTeXglyph
\XeTeXglyphindex "#1"
Rastreé esto hasta el core/genericAccess.inp
archivo que contiene la siguiente línea:
\newcommand*{\lilyGetGlyph}[1]{\XeTeXglyph\XeTeXglyphindex"#1" }
Bien, ese es un comando específico de XeTeX. Necesito la versión de LuaTeX para que esto funcione con LuaLaTeX. encontréesta respuestalo que sugiere algo como esto:
\def\lilyGetGlyph#1{\directlua{fonts.otf.char("#1")}}
Pero cuando ejecuto LuaLaTeX en MWE aparece el siguiente error:
! LuaTeX error [string "\directlua "]:1: attempt to index field 'otf' (a nil value)
stack traceback:
[string "\directlua "]:1: in main chunk.
\lilyGetGlyph ...\directlua {fonts.otf.char("#1")}
No tengo idea de lo que eso significa, pero tampoco entiendo la sintaxis de mi intento de solución (sigo ingresando palabras y símbolos con la esperanza de que algo funcione).
Entonces, lo que estoy buscando es la versión LuaTeX de ese fragmento de código XeLaTeX que permitirá que el paquete lilyglyphs
funcione con LuaLaTeX. Suponiendo, por supuesto, que esa sea la forma correcta de solucionar este problema.
Respuesta1
Bien, aparentemente \directlua{fonts.otf.char
ya no es compatible con LuaTeX segúnesta respuesta. Afortunadamente, ellos (@phg) también proporcionaron una solución:
\usepackage{luaotfload,luacode}
\begin{luacode}
documentdata = documentdata or { }
local stringformat = string.format
local texsprint = tex.sprint
local slot_of_name = luaotfload.aux.slot_of_name
documentdata.fontchar = function (chr)
local chr = slot_of_name(font.current(), chr, false)
if chr and type(chr) == "number" then
texsprint
(stringformat ([[\char"%X"]], chr))
end
end
\end{luacode}
\def\lilyGetGlyph#1{\directlua{documentdata.fontchar "#1"}}
Lo cual agregué al core/genericAccess.inp
archivo y ahora todo funciona como debería. Agregué algunas pruebas para verificar LuaTeX vs. XeTeX al código original y enviaré todo esto al autor del paquete.