如果可能的话,我想用歌曲乳胶包更好地勾勒出我的和弦图。我现在的输出是这样的:
如您所见,F#(和弦名称)与 C#m7 不一致,G#m 在横按前有太多音符,并且 Dmaj7 的图表与其余部分不一致。
我想要的是类似这样的内容:
这是来自 ultimate-guitar.com 的,但正如您所见,所有和弦图和和弦名称都已勾勒出来。
可以使用 Songs 包来实现这一点吗?
以下是一个最小的工作示例:
\documentclass{article}
\usepackage{ifpdf}
\usepackage[chorded, onesongcolumn]{songs}
\begin{document}
\begin{songs}{}
\beginsong{Some Song}[by={Some Guy}]
\gtab{C#m7}{X42100:042100}
\gtab{F#}{2:(244322):034200}
\gtab{G#m}{(477444):034000}
\gtab{E}{022100:023100}
\gtab{Dmaj7}{XX(222)}
\gtab{C#}{X43(121):X43020}
\beginverse
\[Am]Alas my love, you\[G]do me wrong
\[F]to cast me off so \[E7]discourteously,
\[Am]for I have loved you \[G]for so long,
\[F]delighting \[E7]in your \[Am]company.
\endverse
\beginchorus
\[C]Greensleeves was \[G]all my joy,
\[F]Greensleeves was\[E7]my delight,
\[C]Greensleeves was my \[G]heart of gold,
and \[F]who but my \[E7]lady \[Am]Greensleeves.
\endchorus
\endsong
\end{songs}
\end{document}
编辑:我通过将和弦编辑为以下内容解决了 G#m 在横按前有太多音符的问题:
\gtab{G#m}{4:(133111):034000}
但Dmaj7的F#图和弦名的对齐问题仍然存在。
编辑 2:虽然 Sandy G 的解决方案是一个很好的方法,但我使用包\patchcmd
中的解决方案解决了这个\usepackage{etoolbox}
问题。现在它看起来像这样:
相关代码如下:
% make chord diagrams same length
\minfrets=5
% raise chord name when no open/muted strings
\patchcmd{\SB@topempty}
{\relax}% search
%{{\phantom{\framebox(1,5.15){}}}}% replace
{{\phantom{$\times$}}}% replace
{}{}
% raise chord diagram when no fingering is present TODO still one 0 must be present for this to work!
\patchcmd{\SB@finger}
{\SB@topempty}
{{\phantom{$\times$}}}
{}{}
这样做的目的是\phantom
在和弦图上方和下方插入一个隐藏的 x(带有)。这必须在序言中添加。
答案1
要使和弦名称垂直对齐,您可以将任何和弦名称括在命令中\raisebox
。根据字体,您可能需要对此进行一些调整。但这样\gtab
就不会使和弦名称居中。要纠正此问题,请\quad
在和弦名称前添加一个空格。和弦名称有多宽并不重要。
\gtab{\raisebox{5.15pt}{\quad F#}}{2fr:(133211):034200}
\all
为了简化这一点,我创建了以和弦名称作为参数的命令:
\newcommand{\all}[1]{\raisebox{5.15pt}{\quad #1}}
我没有很好的办法解决底部对齐问题,除非使用字符'
。这是我能找到的最无害的字符,songs
可以接受手指。
我还改变了封闭和弦,以便与 ultimate-guitar 的符号更加一致。
以下是生成上述图像的代码:
\documentclass{article}
\usepackage{ifpdf}
\usepackage[chorded, onesongcolumn]{songs}
\newcommand{\all}[1]{\raisebox{5.15pt}{\quad #1}}
\begin{document}
\begin{songs}{}
\minfrets=5
\gtab{C#m7}{X42100:042100}
\gtab{\all{F#}}{2fr:(133211):034200}
\gtab{\all{G#m}}{4fr:(133111):034000}
\gtab{E}{022100:023100}
\gtab{Dmaj7}{XX0(222):{00000'}}
\gtab{C#}{X43(121):X43020}
\end{songs}
\end{document}
答案2
您可以设置\minfrets=5
所有标签具有相同的高度。