我目前正在制作一本歌本,因此我想在歌词上方显示和弦。我找到了几个软件包,但我想提高我的 TeXing 技能,所以我从头开始编写所有内容。
到目前为止,除了一件事之外,一切都运行良好:一些和弦太长并且与下一个和弦重叠。
我有办法做到这一点,每次解释哪个文本对应于每个和弦(参见最小示例的第二部分),但这意味着重写我已经拥有的所有歌曲。所以我想知道是否有一种方法可以在需要时自动添加空间,而不必指定哪个文本对应于哪个和弦!
这是一个最小的例子(整个代码很长但我认为这里不需要):
\documentclass{article}
\def\ch#1{%
\leavevmode\hbox to 0pt{\vbox{\hbox{\strut\tt#1}\kern.25cm}\hss}%
}
\begin{document}
\parskip.15cm
\ch{A}Lorem ipsum \ch{B}dolor sit amet, \ch{C}consectetuer \ch{D}adipiscing elit.
\ch{A}Ut purus elit, vesti\ch{B}bulum \ch{C}ut, placerat ac, adipiscing vitae, \ch{D}felis.
\ch{A}Curabi\ch{B7sus4}tur \ch{C}dictum \ch{D7sus4}gravi\ch{E}da mauris.
\bigskip
\textit{I would want to have something that look like this:}\par
\def\foo#1#2{%
\leavevmode\vbox{\hbox{\strut\tt#1 }\hbox{#2}}%
}
\foo{A}{Curabi}\foo{B7sus4}{tur} \foo{C}{dictum} \foo{D7sus4}{gravi}\foo{E}{da mauris}.
\end{document}
注意:我知道这在对齐的多行段落中可能是不可能的,但这里我们只有齐平/居中的段落(甚至是单行),所以单词之间的间距应该是固定的(我猜?)。
答案1
我可以建议使用类似这样的包吗leadsheets
:
\documentclass{article}
\usepackage{leadsheets}
\setleadsheets{
align-chords=l ,
chords/format=\ttfamily
}
\begin{document}
\begin{song}{title=Lorem Ipsum}
\begin{verse}
^{A}Lorem ipsum ^{B}dolor sit amet, ^{C}consectetuer ^{D}adipiscing elit. \\
^{A}Ut purus elit, vesti^{B}bulum ^{C}ut, placerat ac, adipiscing vitae,
^{D}felis. \\
^*{A}Curabi ^{B7sus4}tur ^{C}dictum ^{D7sus4}gravi ^{E}da mauris.
\end{verse}
\end{song}
\end{document}
在环境内部,song
和弦的放置快捷方式为^
:^{chord}word
。
对于一个单词上的两个和弦,您需要拆分该单词^*{A}Curabi ^{B7sus4}tur
并让带星号的版本^*{chord}word
吞噬下面的空白。
答案2
还有一个简单的包叫做musixguit
用吉他创建和弦...在这里我用我最喜欢的歌手添加了一个 MWE:
\documentclass[a4paper,12pt]{article}
\usepackage{musixguit}
\usepackage{tikzsymbols}
\begin{document}
\textbf{Gloria - Umberto Tozzi -}
\begin{song}
\emph{--1979--}
Great Umberto \dSmiley\dSmiley.
\chord{SI}Gloria, manchi tu nell'\chord{MI}aria
\chord{SI}manchi ad una mano che lavora \chord{MI}piano
\textit{with bold chords}
\textbf{\chord{SI}}Gloria, manchi tu nell'\textbf{\chord{MI}}aria
\textbf{\chord{SI}}manchi ad una mano che lavora \textbf{\chord{MI}}piano
\end{song}
\end{document}