
我嘗試使用以下命令在文字上方渲染和弦鉛片包裹。 Leadsheets 套件提供了一個高級命令\chord{A#}
,我由於忘記的原因而避免使用該命令(這並不重要,事實證明問題與 Leadsheets 無關)。所以我使用自訂\overset{A#}{foo}
命令(大約從這裡複製創建非數學模式替代 \overset 和 \underset 不依賴 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}
運行與latexmk -xelatex
.
渲染:
問題在於範例中的和弦字母D
,A
和沒有垂直對齊。C
我認為這是由於 Leadsheets 包中尖銳符號的渲染造成的,該符號♯
的垂直下限低於字母,儘管尖銳符號的渲染看起來很特別(也許是為了使其更大),但不確定是什麼魔力在在那裡使用。 Leadsheets 中的指令\chord
沒有這個缺陷,但我對低階乳膠的了解不足以複製這個方法。
讓字母垂直對齊的最佳方法是什麼(對我來說,如果尖銳的符號可以與下面的文字重疊,那就可以接受)。如果更容易的話,更改渲染尖銳符號的鉛表方式也是可以接受的,儘管它看起來很漂亮。
(編輯:實際上,無需鉛表即可重現相同的垂直未對齊,只需使用重疊測試Aj
和Ax
。理想情況下 s 的底座a
應垂直對齊。但對於這個問題,只需要針對鉛表中的尖銳符號的解決方案,因為一般的解決方案可能會更困難,幸運的是音樂符號沒有許多其他具有低懸掛基礎的符號。
答案1
您似乎已經重新定義了\#
,因為您的程式碼產生了 # 而不是尖銳符號。就砸碎它吧。
\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}
答案2
在 @egreg 的幫助下,我根據他的答案進行了定制\textoverset
,我想出了這個變體,它為所有重疊提供了更穩定的對齊:
\newcommand\textoverset[2]{%
\leavevmode
\vbox{\offinterlineskip
\halign{%
##\hfil\cr % center
\strut#1\cr
\vphantom{(/Aj}#2\cr
}%
}%
}
我無法很好地解釋與原始內容相反的情況(任何人都可以修改答案來解釋),但這似乎對各種字符都有效,可以對齊重疊。