带有歌曲包的垂直轮廓和弦图

带有歌曲包的垂直轮廓和弦图

如果可能的话,我想用歌曲乳胶包更好地勾勒出我的和弦图。我现在的输出是这样的:

not_outlines_chords

如您所见,F#(和弦名称)与 C#m7 不一致,G#m 在横按前有太多音符,并且 Dmaj7 的图表与其余部分不一致。

我想要的是类似这样的内容:

good_outline

这是来自 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所有标签具有相同的高度。

相关内容