我如何删除这些和弦左边的空格?

我如何删除这些和弦左边的空格?

我正在使用 gchords 包,并且想要零边距(和弦进入图像)或保证边距是我可以修剪的一定数量的像素。

\documentclass[preview]{standalone}
\usepackage{gchords}
\begin{document}
\hsize=0mm
\begin{verse}
\smallchords
\chord{}{n,n,p1,p1,p1,n}{}
\end{verse}
\end{document}

我不确定这是否重要,但这是一个转换为图像的示例:

dvipng -D 450 -o gchtest.png gchtest.dvi

任何帮助都非常感谢!

答案1

至少有三个问题,我最多可以解决其中两个。

第一个问题是它verse是一个列表。因此,它的内容将被缩进,就像列表通常那样。这可以通过不使用它来解决。standalone喜欢环境,但我们可以创建一个不做任何事的包装器环境来创建一个组,以使其满意。

那很简单。

第二个问题是,gchords.sty至少在某些方面,它写得非常糟糕。这里特别有趣的是,它引入了大量各种空白。它随机注释行尾,而这些行尾本来也不会引入空格,然后包括空行、未注释的行尾、注释的行尾前面有空格等等。

软件包维护者应该在软件包中解决这个问题。举例来说,我修改了\smallchords\chord` 以删除大部分虚假空格。我没有删除不必要的注释符号,其中也有很多,因为它们没有实际危害。

理论上,这个问题很容易解决,但必须有人仔细检查包并进行相关工作,维护人员必须接受更改(或做出更改)并将结果推送到 CTAN。或者,您可以通过将包复制到新名称、更改横幅并自行修复代码来分叉包。

0第三,我认为最左边的字符串位于和的中间1,但我不确定如何-0.5通过或来1调整它-1

另外,我不确定这是否是必需的,或者这是否真的是图表本身的一部分。

在下面的代码中,我将\xoff\yoff设置0为用于说明目的。同样,也许这些应该是2。将它们设置为0应该将图表的左下角置于0,0,这表明0.5偏移量应该是图表的一部分。我不知道这样的图表应该是什么样子,所以说不准。

结果如下:

结果

\documentclass[]{standalone}
\usepackage{gchords}
\newenvironment{mychords}{}{}
\standaloneenv{mychords}
\makeatletter
\renewcommand\chord[3]{%
  \vbox{%
    \hbox{%
      \ascale=\chordsize
      \truewidth=\strings\advance\truewidth by -1%
      \advance\truewidth by \xoff
      \topline=\numfrets
      \advance\topline by \yoff
      \advance\topline by 2%
%
%       %%% The Diagram itself %%%%%%%%%
      \unitlength\ascale
      \begin{picture}(\truewidth,\topline)%
        \advance\topline by -1%
        \advance\truewidth by -\xoff
        \myvpos=\yoff\advance\myvpos by \numfrets
        %%% Parse the modifier string %%
        \newcommand\topbar{n}%
        \@tfor\modstr:=#1\do
        {%
          \def\ttest{t}%
          \ifx\modstr\ttest{\linethickness{\topfretsiz}\put(\xoff,\myvpos){\chline{\truewidth}}\thinlines}%
          \else
          {%
            \advance\topline by -1%
            \put(\xoff,\topline){%
              \hbox to 0pt{\hss\fretposfont\modstr~}%
            }%
          }%
          \fi%
        }%
%
%         %%% Horizontal lines (frets)%%%%
        \mylength=0%
        \myvpos=\yoff
        \advance\myvpos by 1%  % first fret starts a bit higher
        \@whilenum \mylength<\numfrets \do {%
          \put(\xoff,\myvpos){%
            \chline{\truewidth}%
          }%
          \advance\mylength by 1%
          \advance\myvpos   by 1}%
%
%         %%% The Dots %%%%%%%%%%%%%%%%%%%
        \newcommand\fnow{n}%
        \newcommand\pnow{n}%
        \newcommand\snow{n}%
        \newcommand\Lnow{n}%
%
        \edef\notelabel{}%
%
        \putdots{#2}{\chordsize}%
        \put(\xoff,0){\hbox to \truewidth\ascale{\hss\namefont #3\hss}}%
      \end{picture}%
    }%
  }%
}
\renewcommand\smallchords{%
  \def\chordsize{2.0mm}%    % distance between two frets (and two strings)
  \font\fingerfont=cmr5%    % font used for numbering fingers
  \font\namefont=cmr10%     % font used for labeling of the chord
  \font\fretposfont=cmr7%   % font used for the fret position marker
  \def\dampsymbol{$\scriptstyle\times$}%    % symbol of the `damp this string' marker
  \def\opensymbol{$\scriptstyle\circ$}%     % symbol of the `open string' marker
}
\renewcommand\xoff{0}
\renewcommand\yoff{0}
\makeatother
\begin{document}
\begin{mychords}
  \smallchords
  \chord{}{n,n,p1,p1,p1,n}{}%
\end{mychords}
\end{document}

请注意,包文件不应该使用\makeatletter,并且当读取包文件时。 已经是一个字母\makeatother@

我尝试删除 中的空格\putdots。然而,这对结果没有任何影响。

相关内容