
Tento renderizar acordes acima do texto usando a ajuda doplanilhaspacote. O pacote leadsheets fornece um comando de alto nível \chord{A#}
que evito por motivos que esqueci (não importa muito, acontece que a questão é independente dos leadsheets). Então eu uso um \overset{A#}{foo}
comando personalizado (aproximadamente copiado daquiCriando substitutos de modo não matemático para \overset e \underset não dependentes do pacote amsmath):
\documentclass{book}
\usepackage[full]{leadsheets}
% print chord over the line spanning several characters
\newcommand\textoverset[2]{%
\leavevmode
\vbox{\offinterlineskip
\halign{%
##\hfil\cr
\vphantom{A}#1\cr
\noalign{}
\strut#2\cr
}%
}%
}
\begin{document}
% \writechord from leadsheets package, \textoverset defined above
appar\textoverset{\writechord{Dm}}{ence}s\textoverset{\writechord{A\#}}{} \textoverset{\writechord{C}}{} ...
% EDIT: Inside song environment, sharp can be written without slash
\begin{song}{title=Foo}, interpret={F.Oo}\index{Foosong}
appar\textoverset{\writechord{Dm}}{ence}s\textoverset{\writechord{A#}}{} \textoverset{\writechord{C}}{} ...
\end{song}
\end{document}
Correr com latexmk -xelatex
.
Renderização:
O problema é que as letras dos acordes D
, A
e C
no exemplo não estão alinhadas verticalmente. Presumo que isso se deva à renderização do símbolo sustenido ♯
no pacote leadsheets, que possui um limite inferior vertical inferior às letras, embora a renderização do símbolo sustenido pareça muito especial (talvez para torná-lo maior), não tenho certeza do que é mágica. usado lá. O \chord
comando do leadsheets não tem essa falha, mas não entendo o látex de baixo nível o suficiente para copiar essa abordagem.
Qual é a melhor maneira de alinhar as letras verticalmente (para mim seria aceitável se o símbolo sustenido pudesse se sobrepor ao texto abaixo). Também seria aceitável alterar a maneira como a planilha de renderização do símbolo sustenido, se isso for mais fácil, embora pareça bonito do jeito que está.
(EDITAR: Na verdade, o mesmo desalinhamento vertical pode ser reproduzido sem folhas de chumbo, apenas usando o teste overset Aj
e Ax
. Idealmente, as bases do a
s devem estar alinhadas verticalmente. Mas para esta questão, apenas uma solução para o símbolo sustenido nas folhas de chumbo é necessária, como o a solução geral pode ser mais difícil e, felizmente, a notação musical não tem muitos outros símbolos com bases baixas.)
Responder1
Você parece ter redefinido \#
, porque seu código produz um # e não um sinal sustenido. Basta esmagá-lo.
\documentclass{book}
\usepackage[full]{leadsheets}
% print chord over the line spanning several characters
\newcommand\textoverset[2]{%
\leavevmode
\vbox{\offinterlineskip
\halign{%
##\hfil\cr
\vphantom{A}#1\cr
\noalign{}
\strut#2\cr
}%
}%
}
\DeclareRobustCommand{\#}{\smash{$\sharp$}}
\begin{document}
\show\#
% \writechord from leadsheets package, \textoverset defined above
appar\textoverset{\writechord{Dm}}{ence}s\textoverset{\writechord{A\#}}{} \textoverset{\writechord{C}}{} ...
\end{document}
Responder2
Com a ajuda de @egreg com base em cuja resposta eu fiz o custom \textoverset
, criei esta variação, que fornece um alinhamento mais estável de todos os oversets:
\newcommand\textoverset[2]{%
\leavevmode
\vbox{\offinterlineskip
\halign{%
##\hfil\cr % center
\strut#1\cr
\vphantom{(/Aj}#2\cr
}%
}%
}
Não consigo explicar bem o que acontece aqui em contraste com o original (qualquer um pode modificar a resposta para explicar), mas isso parece funcionar de forma robusta para vários personagens, alinhando excessos.