Code: Select all
\chord
Code: Select all
\chord{modifiers}{x1, x2, . . .}{name}
Code: Select all
x1, x2 ...
You can specify the letter "b" in which case the circle around the number is larger than normal. For instance, in this diagram - http://www.screencast.com/users/metaper ... 3739eb1ef0
the "4" and the "1" are larger because they were specified with the "b" option as so:
\chord{8}{n,f4bp{11},f1p{8}f3p{10}f4p{11},f1p{8}f3p{10}f5p{12},f1bp{8},n}{}
I have bolded the letter "b"s so they are easier to see in the
Code: Select all
\chord
What I would like is to be able for them to be enclosed with a diamond or square as opposed to a larger circle, but am not sure how to do it.
Source code for gchords.sty follows:
Code: Select all
%
% GCHORDS, a LaTeX2e package to draw guitar chord diagrams.
%
% $Id: gchords.sty,v 1.20 2009/02/04 20:25:59 peekas Exp $
%
% Copyright (C) 2001-2009 Kasper Peeters <kasper.peeters@aei.mpg.de>
% Available under the GNU General Public License.
%
% - minor additions by D. R. Lovell, 05-nov-1998
% - bug fixes by Yotam Medini <yotam_medini@yahoo.com>, 11-aug-2001
% - bug fix by Brent Lievers, 23-sep-2002
% - minor additions by P. Margarita, 14-aug-2003
% - bug fix with f0 (thumb), thanks to Andreas Griewank, 15-jan-2005
% - added optional open string marker, 3-feb-2008
%
% See ChangeLog for a list of changes.
%
% The homepage for this macro package is
%
% http://www.aei.mpg.de/~peekas/gchords/
%
%-------------------------------------------------------------------------
% Variable, user definable stuff is below.
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{gchords}
% Your guitar
\newcommand\strings{6} % number of strings on your guitar
\newcommand\numfrets{5} % length (no of frets) of a diagram
% These should be modified if you want chords in a different size
\newcommand\mediumchords{
\def\chordsize{3.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
}
\newcommand\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
}
\smallchords
% Dot and line sizes (which scale with the chordsize macro)
\newcommand\fatsiz{1.6} % size of a fat note
% Changed by Margarita
%\newcommand\lenbar{2.0} % lenght of sixth part of barré
\newcommand\normalsiz{1.2} % size of a normal note
\newcommand\fingsiz{1.4} % size of the circle around a numbered finger
\newcommand\fatfingsiz{1.8} % size of the circle around a numbered finger
\newcommand\topfretsiz{2.0pt} % thickness of top fret
% Position of the chord in its bounding box
\newcommand\xoff{2} % pos(\xoff,\yoff) is left lower corner of diagram
\newcommand\yoff{2}
%-------------------------------------------------------------------------
\def\@forc#1#2#3{\expandafter\f@rc\expandafter#1{#2 K}{#3}}
\def\f@@rc#1#2#3\f@@rc#4{\def#1{#2}#4\f@rc#1{#3}{#4}}
% Chords above lyrics, macro by Yotam Medini.
\newlength{\cwidth}%
\newcommand{\upchord}[1]{%
\settowidth{\cwidth}{#1}%
\raisebox{\baselineskip}{#1}\hspace{-\cwidth}}
% The chord typesetting macros.
\makeatletter
\newcommand\basenote{\circle*{\fatsiz}}
% Changed by Margarita
% \newcommand\basenote{\line(1,0){\lenbar}}
\newcommand\stdnote{\circle*{\normalsiz}}
\newcommand\fingnote{\circle{\fingsiz}}
\newcommand\fatfingnote{\circle{\fatfingsiz}}
\newcommand\cvline{\line(0,1)}
\newcommand\chline{\line(1,0)}
\newcommand\chords[1]{$$\hbox{#1}$$}
\newcommand\chtext[1]{\vbox{\settowidth{\hsize}{#1 xxxx} {#1
\ascale=\chordsize\vskip8\ascale}}}
% #1 modifiers (like num, or fretbar0)
% #2 positions
% #3 chordname
\newcount\truewidth % the true width of the diagram, computed from strings
\newcount\topline
\newcount\myvpos
\newcount\mylength
\def\fnum{ } % current f{...} symbol (number of finger)
\newcount\fpos % current p{...} value
\newcount\ghor % string number currently being drawn
\newcount\prevpos % previous value of p{...}, zero if no previous dot on string
\newcount\dlen % length of the vertical line to draw between dots
\newcount\cpos % scratch variable to hold vertical position of dot
\newcount\stpos
\newdimen\needsize
\newdimen\ascale
\newcommand\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%
}
% \@tfor\modstr:=#1\do
% { \if\modstr t{\thicklines\put(\xoff,\myvpos){\chline{\truewidth}}\thinlines}%
% \else {\advance\topline by -2%
% \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}
}}}
\long\def\ReturnAfterFi#1\fi{\fi#1}
\def\f@rc#1#2#3{%
\def\temp@ty{#2}%
\ifx\@empty\temp@ty
\else
\ReturnAfterFi{%
\f@@rc#1#2\f@@rc{#3}%
}%
\fi
}%
\newcommand{\putdots}[2]{
\prevpos=0
\fpos=0
\ghor=\xoff
\let\curnote\stdnote
\let\curfing\fingnote
\def\Ktest{K}\def\cotest{,}\def\btest{b}\def\ftest{f}
\def\stest{s}\def\ptest{p}\def\xtest{x}\def\otest{o}\def\etest{e}\def\ntest{n}\def\Ltest{t}
\def\attest{ }
\@forc\thisel{#1}{
\ifx\thisel\Ktest{}
\else\ifx\thisel\cotest\cpos=-\fpos\advance\cpos by \numfrets\advance\cpos by \yoff
\dlen=\cpos
\advance\dlen by -\yoff
\put(\ghor,\yoff){\cvline{\dlen}}
\prevpos=0
\fpos=0
\def\fnum{ }
\renewcommand\pnow{n}
\renewcommand\fnow{n}
\renewcommand\snow{n}
\renewcommand\Lnow{n}
\advance\ghor by 1
\else\if\fnow y \edef\fnum{\thisel}\renewcommand\fnow{n}
\else\ifx\thisel\btest\let\curnote\basenote\let\curfing\fatfingnote
\else\ifx\thisel\ftest\renewcommand\snow{n}\renewcommand\pnow{n}\renewcommand\fnow{y}\renewcommand\Lnow{n}
\else\ifx\thisel\stest\renewcommand\snow{y}\renewcommand\pnow{n}\renewcommand\fnow{n}\renewcommand\Lnow{n}
\else\ifx\thisel\ptest\renewcommand\snow{n}\renewcommand\pnow{y}\renewcommand\fnow{n}\renewcommand\Lnow{n}
\else\ifx\thisel\Ltest\renewcommand\snow{n}\renewcommand\pnow{n}\renewcommand\fnow{n}\renewcommand\Lnow{y}
\else\ifx\thisel\xtest{\put(\ghor,\yoff){\cvline{\numfrets}}
\needsize=\ascale
\divide\needsize by 2
\unitlength\needsize
\multiply\ghor by 2
\multiply\topline by 2
\advance\topline by -1
\put(\ghor,\topline){\hbox to 0pt{\hss{\dampsymbol}\hss}}}
\else\ifx\thisel\otest{\put(\ghor,\yoff){\cvline{\numfrets}}
\needsize=\ascale
\divide\needsize by 2
\unitlength\needsize
\multiply\ghor by 2
\multiply\topline by 2
\advance\topline by -1
\put(\ghor,\topline){\hbox to 0pt{\hss{\opensymbol}\hss}}}
\else\ifx\thisel\ntest\put(\ghor,\yoff){\cvline{\numfrets}}
{\needsize=\ascale
\divide\needsize by 2
\unitlength\needsize
\multiply\ghor by 2
\multiply\topline by 2
\advance\topline by -1
\put(\ghor,\topline){\hbox to 0pt{\hss{\notelabel}\hss}}}
\edef\notelabel{}
\else\if\snow y \ghor=\thisel\advance\ghor by \xoff \advance\ghor by -1
\else\if\Lnow y \edef\notelabel{\thisel}\renewcommand\Lnow{n}
\else\prevpos=\fpos\advance\prevpos by -1
\fpos=\thisel
\ifx\fnum\attest
\put(\ghor,\yoff){\cvline{\numfrets}}
\else
\cpos=\fpos\advance\cpos by -1
\ifnum\cpos > \prevpos
\dlen=\fpos\advance\dlen by -\prevpos
\advance\dlen by -2
\stpos=\topline \advance\stpos by -\fpos
\put(\ghor,\stpos){\cvline{\dlen}}
\fi
\fi
\cpos=-\fpos\advance\cpos by \numfrets\advance\cpos by \yoff
{\needsize=\ascale
\divide\needsize by 2
\unitlength\needsize
\multiply\ghor by 2
\multiply\cpos by 2
\advance\cpos by 1
\ifx\fnum\attest
% Line added by Margarita
% \linethickness{2.0pt}
\put(\ghor,\cpos){\curnote}
\else
\put(\ghor,\cpos){\curfing}
\put(\ghor,\cpos){$\vcenter{\vskip 0.5em\vbox{\hbox to 0pt{\hss{\fingerfont\fnum}\hss}}}$}
\fi}
{\needsize=\ascale
\divide\needsize by 2
\unitlength\needsize
\multiply\ghor by 2
\multiply\topline by 2
\advance\topline by -1
\put(\ghor,\topline){\hbox to 0pt{\hss{\notelabel}\hss}}}
\let\curnote\stdnote
\let\curfing\fingnote
\edef\notelabel{}
\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi % one for each in the 'select' loop
} % end forc loop
\ifnum\cpos > \yoff % draw the last bit of vertical line
\dlen=\cpos
\advance\dlen by -\yoff
\put(\ghor,\yoff){\cvline{\dlen}}
\fi
}
\makeatother
% That's all folks!
%-------------------------------------------------------------------------