
O pacote lilyglyphs
fornece um conjunto de macros para incorporar facilmente fontes Lilypond em arquivos XeLaTeX. Esse pacote está disponívelaqui. Estou usando o TeXLive 2013.
Com o seguinte MWE funciona conforme esperado com o XeLaTeX:
\documentclass{memoir}
\usepackage{fontspec}
\usepackage{lilyglyphs}
\begin{document}
\lilyTimeC
\end{document}
Executá-lo com LuaLaTeX resulta no seguinte erro:
! Undefined control sequence. \lilyGetGlyph #1^^@-\XeTeXglyph
\XeTeXglyphindex "#1"
Rastreei isso até o core/genericAccess.inp
arquivo que contém a seguinte linha:
\newcommand*{\lilyGetGlyph}[1]{\XeTeXglyph\XeTeXglyphindex"#1" }
OK, esse é um comando específico do XeTeX. Eu preciso da versão LuaTeX para fazer isso funcionar com LuaLaTeX. eu encontreiesta respostaque sugere algo assim:
\def\lilyGetGlyph#1{\directlua{fonts.otf.char("#1")}}
Mas quando executo LuaLaTeX no MWE recebo o seguinte erro:
! 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")}
Não tenho ideia do que isso significa, mas também não entendo a sintaxe da minha tentativa de correção (continuo inserindo palavras e símbolos esperando que algo funcione).
Então o que estou procurando é a versão LuaTeX daquele trecho de código XeLaTeX que permitirá que o pacote lilyglyphs
funcione com LuaLaTeX. Supondo, é claro, que essa seja a maneira correta de consertar isso.
Responder1
OK, então aparentemente \directlua{fonts.otf.char
não é mais suportado no LuaTeX de acordo comesta resposta. Felizmente eles (@phg) também forneceram uma solução:
\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"}}
Que adicionei ao core/genericAccess.inp
arquivo e agora tudo funciona como deveria. Adicionei alguns testes para verificar LuaTeX vs. XeTeX ao código original e enviarei tudo isso para o autor do pacote.