summaryrefslogtreecommitdiff
path: root/Build/source/utils/songs
diff options
context:
space:
mode:
authorPeter Breitenlohner <peb@mppmu.mpg.de>2013-12-25 15:37:50 +0000
committerPeter Breitenlohner <peb@mppmu.mpg.de>2013-12-25 15:37:50 +0000
commit5b4a13bd983e11abef75e2c611614cccbf7393cb (patch)
treec71656b18d6b20bb8aef9dcd434dbef2ca4b2262 /Build/source/utils/songs
parentda41adb311640c5decf656f6b411bd0ab84bcf84 (diff)
automake 1.14.1
git-svn-id: svn://tug.org/texlive/trunk@32482 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build/source/utils/songs')
-rw-r--r--Build/source/utils/songs/Makefile.in5
-rw-r--r--Build/source/utils/songs/aclocal.m46
-rw-r--r--Build/source/utils/songs/songs-2.17-PATCHES/ChangeLog2
-rw-r--r--Build/source/utils/songs/songs-2.17-PATCHES/patch-02-const38
-rw-r--r--Build/source/utils/songs/songs.sty3783
5 files changed, 3825 insertions, 9 deletions
diff --git a/Build/source/utils/songs/Makefile.in b/Build/source/utils/songs/Makefile.in
index fba5deb7418..726eabba893 100644
--- a/Build/source/utils/songs/Makefile.in
+++ b/Build/source/utils/songs/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.14 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
# @configure_input@
# Copyright (C) 1994-2013 Free Software Foundation, Inc.
@@ -1004,9 +1004,10 @@ distcheck: dist
&& dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
&& am__cwd=`pwd` \
&& $(am__cd) $(distdir)/_build \
- && ../configure --srcdir=.. --prefix="$$dc_install_base" \
+ && ../configure \
$(AM_DISTCHECK_CONFIGURE_FLAGS) \
$(DISTCHECK_CONFIGURE_FLAGS) \
+ --srcdir=.. --prefix="$$dc_install_base" \
&& $(MAKE) $(AM_MAKEFLAGS) \
&& $(MAKE) $(AM_MAKEFLAGS) dvi \
&& $(MAKE) $(AM_MAKEFLAGS) check \
diff --git a/Build/source/utils/songs/aclocal.m4 b/Build/source/utils/songs/aclocal.m4
index fa895f79df1..b9ea8c9c06d 100644
--- a/Build/source/utils/songs/aclocal.m4
+++ b/Build/source/utils/songs/aclocal.m4
@@ -1,4 +1,4 @@
-# generated automatically by aclocal 1.14 -*- Autoconf -*-
+# generated automatically by aclocal 1.14.1 -*- Autoconf -*-
# Copyright (C) 1996-2013 Free Software Foundation, Inc.
@@ -35,7 +35,7 @@ AC_DEFUN([AM_AUTOMAKE_VERSION],
[am__api_version='1.14'
dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
dnl require some minimum version. Point them to the right macro.
-m4_if([$1], [1.14], [],
+m4_if([$1], [1.14.1], [],
[AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
])
@@ -51,7 +51,7 @@ m4_define([_AM_AUTOCONF_VERSION], [])
# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
# This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
-[AM_AUTOMAKE_VERSION([1.14])dnl
+[AM_AUTOMAKE_VERSION([1.14.1])dnl
m4_ifndef([AC_AUTOCONF_VERSION],
[m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
diff --git a/Build/source/utils/songs/songs-2.17-PATCHES/ChangeLog b/Build/source/utils/songs/songs-2.17-PATCHES/ChangeLog
index 8f07afdebdd..d7d50c2c8bb 100644
--- a/Build/source/utils/songs/songs-2.17-PATCHES/ChangeLog
+++ b/Build/source/utils/songs/songs-2.17-PATCHES/ChangeLog
@@ -3,5 +3,5 @@
Import songs-2.17, patches in songs-2.17-PATCHES.
* patch-01-protos: Prototypes only in headers.
- * patch-02-const: Mostly proper handling of const.
+ * patch-02-const: Proper handling of const.
diff --git a/Build/source/utils/songs/songs-2.17-PATCHES/patch-02-const b/Build/source/utils/songs/songs-2.17-PATCHES/patch-02-const
index 75f5e8e0ccc..632dcf2f7c4 100644
--- a/Build/source/utils/songs/songs-2.17-PATCHES/patch-02-const
+++ b/Build/source/utils/songs/songs-2.17-PATCHES/patch-02-const
@@ -1,7 +1,23 @@
diff -ur songs-2.17.orig/src/songidx/authidx.c songs-2.17/src/songidx/authidx.c
--- songs-2.17.orig/src/songidx/authidx.c 2013-01-02 21:05:12.000000000 +0100
-+++ songs-2.17/src/songidx/authidx.c 2013-12-19 15:05:01.000000000 +0100
-@@ -333,10 +333,10 @@
++++ songs-2.17/src/songidx/authidx.c 2013-12-20 13:18:55.000000000 +0100
+@@ -55,9 +55,12 @@
+ }
+ WORDLIST;
+
+-WORDLIST wl_and = { NULL, ws_lit("and") };
+-WORDLIST wl_by = { NULL, ws_lit("by") };
+-WORDLIST wl_unknown = { NULL, ws_lit("unknown") };
++WCHAR ws_and[] = ws_lit("and");
++WCHAR ws_by[] = ws_lit("by");
++WCHAR ws_unknown[] = ws_lit("unknown");
++WORDLIST wl_and = { NULL, ws_and };
++WORDLIST wl_by = { NULL, ws_by };
++WORDLIST wl_unknown = { NULL, ws_unknown };
+
+ /* wl_insert(<wordlist>,<word>)
+ * Insert a word onto the head of a wordlist. */
+@@ -333,10 +336,10 @@
int arraysize, numauthors, i;
WORDLIST *seplist=&wl_and, *afterlist=&wl_by, *ignorelist=&wl_unknown;
SONGENTRY **authors;
@@ -14,7 +30,7 @@ diff -ur songs-2.17.orig/src/songidx/authidx.c songs-2.17/src/songidx/authidx.c
fprintf(stderr, "songidx: Parsing author index data file %s...\n",
fs->filename);
-@@ -395,7 +395,7 @@
+@@ -395,7 +398,7 @@
ws_strcpy(thislink, linknamebuf);
for (bp=authorbuf;
@@ -57,3 +73,19 @@ diff -ur songs-2.17.orig/src/songidx/songsort.c songs-2.17/src/songidx/songsort.
- return (*((const SONGENTRY **) s1))->idx - (*((const SONGENTRY **) s2))->idx;
+ return (*((SONGENTRY * const *) s1))->idx - (*((SONGENTRY * const *) s2))->idx;
}
+diff -ur songs-2.17.orig/src/songidx/titleidx.c songs-2.17/src/songidx/titleidx.c
+--- songs-2.17.orig/src/songidx/titleidx.c 2013-01-02 21:06:28.000000000 +0100
++++ songs-2.17/src/songidx/titleidx.c 2013-12-20 13:22:35.000000000 +0100
+@@ -49,8 +49,10 @@
+ }
+ PREFIX;
+
+-PREFIX pre_A = { NULL, ws_lit("A") };
+-PREFIX pre_defaults = { &pre_A, ws_lit("The") };
++WCHAR ws_A[] = ws_lit("A");
++WCHAR ws_The[] = ws_lit("The");
++PREFIX pre_A = { NULL, ws_A };
++PREFIX pre_defaults = { &pre_A, ws_The };
+
+ /* freeprefixes(<list>)
+ * Free prefix list <list>. */
diff --git a/Build/source/utils/songs/songs.sty b/Build/source/utils/songs/songs.sty
new file mode 100644
index 00000000000..dca3f093e4e
--- /dev/null
+++ b/Build/source/utils/songs/songs.sty
@@ -0,0 +1,3783 @@
+%%
+%% This is file `songs.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% songs.dtx (with options: `package')
+%%
+%% This is a generated file.
+%%
+%% Copyright (C) 2013 by Kevin W. Hamlen
+%%
+%% This file may be distributed and/or modified under the conditions of
+%% the LaTeX Project Public License, either version 1.3a of this license
+%% or (at your option) any later version. The latest version of this
+%% license is in:
+%%
+%% http://www.latex-project.org/lppl.txt
+%%
+%% and version 1.3a or later is part of all distributions of LaTeX version
+%% 2004/10/01 or later.
+%%
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{songs}
+ [2013/07/10 v2.17 Songs package]
+\newif\ifSB@etex
+\ifx\eTeXversion\undefined\else
+ \ifx\eTeXversion\relax\else
+ \SB@etextrue
+ \IfFileExists{etex.sty}{\RequirePackage{etex}}{}
+ \fi
+\fi
+\newif\ifSB@pdf\SB@pdffalse
+\ifx\pdfoutput\undefined\else
+ \ifx\pdfoutput\relax\else
+ \ifnum\pdfoutput<\@ne\else
+ \SB@pdftrue
+ \fi
+ \fi
+\fi
+\newif\ifSB@preamble
+\SB@preambletrue
+\newif\ifSB@test
+\newif\ifSB@testii
+\newcommand\SB@temp{}
+\newcommand\SB@tempii{}
+\newcommand\SB@tempiii{}
+\newcommand\SB@tempiv{}
+\newcommand\SB@tempv{}
+\newcommand\SB@newcount[1]{\@ifdefinable#1{\newcount#1}}
+\newcommand\SB@newdimen[1]{\@ifdefinable#1{\newdimen#1}}
+\newcommand\SB@newbox[1]{\@ifdefinable#1{\newbox#1}}
+\newcommand\SB@newtoks[1]{\@ifdefinable#1{\newtoks#1}}
+\newcommand\SB@newwrite[1]{\@ifdefinable#1{\newwrite#1}}
+\SB@newdimen\SB@dimen
+\SB@newdimen\SB@dimenii
+\SB@newdimen\SB@dimeniii
+\SB@newdimen\SB@dimeniv
+\SB@newbox\SB@box
+\SB@newbox\SB@boxii
+\SB@newbox\SB@boxiii
+\SB@newtoks\SB@toks
+\SB@newcount\SB@cnt
+\SB@newcount\SB@cntii
+\newlength\SB@skip
+\SB@newbox\SB@envbox
+\RequirePackage{keyval}
+\newcommand\lyricfont{\normalfont\normalsize}
+\newcommand\stitlefont{%
+ \sffamily\ifslides\Huge\else\slshape\Large\fi%
+}
+\newcommand\versefont{}
+\newcommand\chorusfont{}
+\newcommand\notefont{}
+\newcommand\scripturefont{%
+ \usefont{OT1}{pzc}{mb}{it}%
+ \shiftdblquotes{-1.1\p@}\z@{-2\p@}\z@%
+}
+\newcommand\printscrcite[1]{\sffamily\small#1}
+\newcommand\snumbgcolor{SongbookShade}
+\newcommand\notebgcolor{SongbookShade}
+\newcommand\idxbgcolor{SongbookShade}
+\newcommand\versejustify{\justifyleft}
+\newcommand\chorusjustify{\justifyleft}
+\newcommand\notejustify{%
+ \advance\baselineskip\p@\relax%
+ \leftskip\z@skip\rightskip\z@skip%
+ \parfillskip\@flushglue\parindent\z@%
+}
+\newcommand\placenote[1]{%
+ \leftskip\z@skip\rightskip\@flushglue\SB@cbarshift%
+ \noindent#1\par%
+}
+\newcounter{songnum}
+\newcounter{versenum}
+\renewcommand\thesongnum{\songnumstyle{songnum}}
+\newcommand\songnumstyle{}
+\let\songnumstyle\arabic
+\renewcommand\theversenum{\versenumstyle{versenum}}
+\newcommand\versenumstyle{}
+\let\versenumstyle\arabic
+\newcommand\printsongnum[1]{\sffamily\bfseries\LARGE#1}
+\newcommand\printversenum[1]{\lyricfont#1.\ }
+\newcommand\placeversenum[1]{%
+ \hskip-\leftskip\hskip-\parindent\relax%
+ \box#1%
+}
+\newcommand\everyverse{}
+\newcommand\everychorus{}
+\newcommand\printchord[1]{\sffamily\slshape\large#1}
+\newcommand\chordlocals{}
+\newlength\versesep
+\versesep123456789sp\relax
+\newlength\afterpreludeskip
+\afterpreludeskip=2\p@\@plus4\p@
+\newlength\beforepostludeskip
+\beforepostludeskip=2\p@\@plus4\p@
+\newlength\baselineadj
+\baselineadj\z@skip
+\newcommand\clineparams{%
+ \baselineskip\f@size\p@%
+ \advance\baselineskip-2\p@%
+ \lineskiplimit-2\p@%
+ \lineskip-2\p@%
+}
+\parindent.25in
+\newlength\idxheadwidth
+\setlength\idxheadwidth{1.5cm}
+\newlength\songnumwidth
+\settowidth\songnumwidth{\printsongnum{999.}}
+\newlength\versenumwidth
+\settowidth\versenumwidth{\printversenum{9\kern1em}}
+\newlength\cbarwidth
+\setlength\cbarwidth\p@
+\newlength\sbarheight
+\setlength\sbarheight\p@
+\interlinepenalty\@m
+\SB@newcount\vvpenalty\vvpenalty200
+\SB@newcount\ccpenalty\ccpenalty200
+\SB@newcount\vcpenalty\vcpenalty200
+\SB@newcount\cvpenalty\cvpenalty200
+\SB@newcount\brkpenalty\brkpenalty200
+\SB@newcount\spenalty\spenalty100
+\newcommand\songmark{}
+\newcommand\versemark{}
+\newcommand\chorusmark{}
+\newcommand\extendprelude{\showrefs\showauthors}
+\newcommand\extendpostlude{\songcopyright\ \songlicense\unskip}
+\newcommand\idxheadfont{\sffamily\bfseries\LARGE}
+\newcommand\idxtitlefont{\sffamily\slshape}
+\newcommand\idxlyricfont{\rmfamily}
+\newcommand\idxscripfont{\sffamily\small\slshape}
+\newcommand\idxauthfont{\small\bfseries}
+\newcommand\idxrefsfont{\normalfont\normalsize}
+\newcommand\idxbook[1]{\small\bfseries#1}
+\newcommand\idxcont[1]{\small\textbf{#1} (continued)}
+\newcommand\colbotglue{}
+\let\colbotglue\z@skip
+\newcommand\lastcolglue{}
+\let\lastcolglue\@flushglue
+\SB@newcount\minfrets\minfrets4
+\SB@newdimen\SB@colwidth
+\DeclareOption{slides}{\slides}
+\newcommand\slides{%
+ \slidestrue%
+ \def\lyricfont{\normalfont\huge}%
+ \def\chorusfont{\slshape}%
+ \def\versejustify{\justifycenter}%
+ \let\chorusjustify\versejustify
+ \def\placenote##1{\justifycenter\noindent##1\par}%
+ \scriptureoff%
+ \onesongcolumn%
+ \ifSB@preamble\ifSB@chordedspec\else\SB@chordsoff\fi\fi%
+ \spenalty-\@M%
+ \let\colbotglue\@flushglue%
+ \setlength\cbarwidth\z@%
+ \setlength\sbarheight\z@%
+}
+\newcommand\justifyleft{%
+ \leftskip\parindent%
+ \ifSB@inverse\advance\leftskip\versenumwidth\fi%
+ \SB@cbarshift%
+ \parindent-\parindent%
+}
+\newcommand\justifycenter{%
+ \centering\SB@cbarshift\rightskip\leftskip%
+ \def\placeversenum##1{%
+ \hskip-\leftskip\hskip-\parindent\relax%
+ \hangindent-\wd##1\hangafter\m@ne%
+ \box##1\hfil%
+ }%
+}
+\newcommand\SB@outer{\outer}
+\DeclareOption{unouter}{\let\SB@outer\relax}
+\DeclareOption{rawtext}{\rawtexttrue\indexesoff}
+\DeclareOption{noshading}{\SB@colorboxesfalse}
+\DeclareOption{noindexes}{\indexesoff}
+\newcommand\indexeson{\songindexestrue}
+\newcommand\indexesoff{\songindexesfalse}
+\DeclareOption{nopdfindex}{%
+ \let\songtarget\@gobbletwo%
+ \let\songlink\@secondoftwo%
+}
+\newif\ifSB@measurespec
+\newif\ifSB@chordedspec
+\DeclareOption{chorded}{\chordson}
+\DeclareOption{lyric}{\chordsoff}
+\newcommand\chordson{\SB@chordedspectrue\SB@chordson}
+\newcommand\chordsoff{\SB@chordedspectrue\SB@chordsoff}
+\newcommand\SB@chordson{%
+ \ifrawtext%
+ \SB@errrtopt%
+ \else%
+ \chordedtrue\lyricfalse%
+ \let\SB@bracket\SB@chord%
+ \let\SB@rechord\SB@@rechord%
+ \let\SB@ch\SB@ch@on%
+ \ifSB@measurespec%
+ \ifmeasures\SB@measureson\else\SB@measuresoff\fi%
+ \else%
+ \SB@measureson%
+ \fi%
+ \ifSB@preamble\def\colbotglue{\z@\@plus.5\textheight}\fi%
+ \SB@setbaselineskip%
+ \fi%
+}
+\newcommand\SB@chordsoff{%
+ \chordedfalse\lyrictrue%
+ \def\SB@bracket##1]{\ignorespaces}%
+ \let\SB@rechord\relax%
+ \let\SB@ch\SB@ch@off%
+ \ifSB@measurespec%
+ \ifmeasures\SB@measureson\else\SB@measuresoff\fi%
+ \else%
+ \SB@measuresoff%
+ \fi%
+ \ifSB@preamble\let\colbotglue\z@skip\fi%
+ \SB@setbaselineskip%
+}
+\DeclareOption{showmeasures}{\measureson}
+\DeclareOption{nomeasures}{\measuresoff}
+\newcommand\measureson{\SB@measurespectrue\SB@measureson}
+\newcommand\measuresoff{\SB@measurespectrue\SB@measuresoff}
+\newcommand\SB@measureson{%
+ \measurestrue%
+ \let\SB@mbar\SB@makembar%
+ \ifchorded%
+ \let\SB@mch\SB@mch@on%
+ \else%
+ \let\SB@mch\SB@mch@m%
+ \fi%
+ \ifSB@inverse\SB@loadactives\fi%
+ \ifSB@inchorus\SB@loadactives\fi%
+}
+\newcommand\SB@measuresoff{%
+ \measuresfalse%
+ \let\SB@mbar\@gobbletwo%
+ \ifchorded%
+ \let\SB@mch\SB@ch@on%
+ \else%
+ \let\SB@mch\SB@ch@off%
+ \fi%
+ \ifSB@inverse\SB@loadactives\fi%
+ \ifSB@inchorus\SB@loadactives\fi%
+}
+\DeclareOption{transposecapos}{\transcapostrue}
+\DeclareOption{noscripture}{\SB@omitscriptrue}
+\newcommand\scriptureon{\SB@omitscripfalse}
+\newcommand\scriptureoff{\SB@omitscriptrue}
+\DeclareOption{twosongcolumns}{\SB@numcols\tw@}
+\DeclareOption{onesongcolumn}{\SB@numcols\@ne}
+\newcommand\songcolumns[1]{%
+ \SB@cnt#1\relax%
+ \ifnum\SB@cnt=\SB@numcols\else%
+ \ifSB@preamble\else{\SB@clearpage}\fi%
+ \fi%
+ \SB@numcols\SB@cnt%
+ \ifnum\SB@numcols>\z@%
+ \SB@colwidth-\columnsep%
+ \multiply\SB@colwidth\SB@numcols%
+ \advance\SB@colwidth\columnsep%
+ \advance\SB@colwidth\textwidth%
+ \divide\SB@colwidth\SB@numcols%
+ \else%
+ \ifrepchorus\SB@warnrc\fi%
+ \fi%
+}
+\newcommand\onesongcolumn{\songcolumns\@ne}
+\newcommand\twosongcolumns{\songcolumns\tw@}
+\newcommand\songlist{}
+\newcommand\includeonlysongs[1]{%
+ \ifSB@songsenv\SB@errpl\else%
+ \partiallisttrue%
+ \renewcommand\songlist{#1}%
+ \fi%
+}
+\newcommand\nosongnumbers{\setlength\songnumwidth\z@}
+\newcommand\noversenumbers{%
+ \renewcommand\printversenum[1]{}%
+ \setlength\versenumwidth\z@%
+}
+\ifSB@etex
+ \newcommand\repchoruses{%
+ \ifnum\SB@numcols<\@ne\SB@warnrc\fi%
+ \repchorustrue%
+ }
+\else
+ \newcommand\repchoruses{\SB@erretex}
+\fi
+\newcommand\norepchoruses{\repchorusfalse}
+\newcommand\sepverses{%
+ \vvpenalty-\@M%
+ \ccpenalty100 %
+ \vcpenalty\vvpenalty%
+ \cvpenalty\vvpenalty%
+ \let\colbotglue\@flushglue%
+}
+\AtBeginDocument{
+ \SB@setversesep
+ \songcolumns\SB@numcols
+ \SB@preamblefalse
+}
+\SB@newbox\SB@songbox
+\SB@newcount\SB@numcols\SB@numcols\tw@
+\SB@newcount\SB@colnum
+\SB@newbox\SB@colbox
+\SB@newbox\SB@pgbox
+\SB@newbox\SB@mrkbox
+\newcommand\SB@maxmin[3]{\ifdim#1#2#3#1#3\fi}
+\newcommand\SB@mkpage[4]{%
+ \ifvoid#2\else\begingroup%
+ \edef\SB@temp{\ifnum#2=\SB@box\SB@boxii\else\SB@box\fi}%
+ \edef\SB@tempii{\ifnum#2=\SB@boxiii\SB@boxii\else\SB@boxiii\fi}%
+ \splitmaxdepth\maxdepth\splittopskip\z@skip%
+ \ifnum#1=\z@\global\setbox#2\vbox{\unvbox#2\vfil}\fi%
+ \loop\ifnum#3<\SB@numcols%
+ \ifnum#1=\z@\setbox\SB@tempii\copy#2\fi%
+ \setbox\SB@temp\vsplit#2to#4\relax%
+ \ifvoid#2%
+ \ifnum#1=\z@%
+ \global\setbox#2\vbox{\unvbox\SB@tempii\unskip}%
+ \else%
+ \SB@updatepage%
+ \global\advance#3\@ne%
+ \fi%
+ #3\SB@numcols%
+ \else%
+ \SB@updatepage%
+ \global\advance#3\@ne%
+ \ifrepchorus\ifvoid\SB@chorusbox\else%
+ \SB@insertchorus#2%
+ \fi\fi%
+ \fi%
+ \repeat%
+ \endgroup\fi%
+}
+\newcommand\SB@migrate[1]{%
+ \SB@toks\expandafter{#1}%
+ \edef\SB@temp{\the\SB@toks}%
+ \ifx\SB@temp\@empty\else\mark{\the\SB@toks}\fi%
+}
+\newcommand\SB@updatepage{%
+ \global\setbox\SB@mrkbox\vbox{%
+ \unvbox\SB@mrkbox%
+ \SB@migrate\splitfirstmark%
+ \SB@migrate\splitbotmark%
+ }%
+ \global\setbox\SB@pgbox\hbox{%
+ \SB@dimen\SB@colwidth%
+ \advance\SB@dimen\columnsep%
+ \multiply\SB@dimen\SB@colnum%
+ \advance\SB@dimen-\wd\SB@pgbox%
+ \unhbox\SB@pgbox%
+ \ifdim\SB@dimen=\z@\else\hskip\SB@dimen\relax\fi%
+ \box\SB@temp%
+ }%
+}
+\newcommand\SB@droppage{\setbox\SB@temp\box\voidb@x}
+\newcommand\SB@output[1]{%
+ \ifnum\SB@numcols>\z@\begingroup%
+ \loop%
+ \SB@dimen\textheight%
+ \ifinner\else\advance\SB@dimen-\pagetotal\fi%
+ \SB@mkpage#1\SB@colbox\SB@colnum\SB@dimen%
+ \SB@testfalse\SB@testiitrue%
+ \ifnum#1>\@ne\ifvoid\SB@colbox\ifnum\SB@colnum>\z@%
+ \SB@testtrue\SB@testiifalse%
+ \fi\fi\fi%
+ \ifnum\SB@colnum<\SB@numcols\SB@testiifalse\else\SB@testtrue\fi%
+ \ifSB@test%
+ \unvbox\SB@mrkbox%
+ \ifinner\else\kern\z@\fi%
+ \box\SB@pgbox%
+ \ifinner\else\vfil\break\vskip\vsize\relax\fi%
+ \global\SB@colnum\z@%
+ \fi%
+ \ifSB@testii\repeat%
+ \endgroup\else%
+ \unvbox\SB@colbox\unskip%
+ \fi%
+}
+\newcommand\SB@putboxes[1]{%
+ \SB@dimen\ifnum\SB@numcols>\z@\ht\SB@colbox\else\p@\fi%
+ #1\SB@colbox%
+ \ifdim\SB@dimen>\z@%
+ \SB@breakpoint\spenalty%
+ \ifdim\sbarheight>\z@%
+ \vskip-\sbarheight\relax%
+ \fi%
+ \fi%
+ #1\SB@songbox%
+}
+\newcommand\SB@nextcol[2]{%
+ \ifnum#1>\z@%
+ \ifnum\SB@numcols>\z@%
+ \global\setbox\SB@colbox\vbox{%
+ \SB@cnt#1\relax%
+ \SB@dimen\ht\SB@colbox%
+ \unvbox\SB@colbox%
+ \unskip%
+ \ifdim\SB@dimen>\z@%
+ \vskip#2\relax%
+ \break%
+ \advance\SB@cnt\m@ne%
+ \fi%
+ \loop\ifnum\SB@cnt>\z@%
+ \nointerlineskip%
+ \null%
+ \vfil%
+ \break%
+ \advance\SB@cnt\m@ne%
+ \repeat%
+ }%
+ \SB@output1%
+ \else%
+ \ifnum\lastpenalty=-\@M\null\fi%
+ \break%
+ \fi%
+ \fi%
+}
+\newcommand\SB@selectcol{}
+\newcommand\SB@@selectcol{%
+ \begingroup%
+ \SB@cnt\z@%
+ \vbadness\@M\vfuzz\maxdimen%
+ \let\SB@updatepage\SB@droppage%
+ \SB@dimen\textheight%
+ \ifinner\else\advance\SB@dimen-\pagetotal\fi%
+ \setbox\SB@boxii\vbox{\SB@putboxes\unvcopy}%
+ \SB@cntii\SB@colnum%
+ \SB@mkpage0\SB@boxii\SB@cntii\SB@dimen%
+ \SB@spos%
+ \global\SB@cnt\SB@cnt%
+ \endgroup%
+ \SB@nextcol\SB@cnt\colbotglue%
+}
+\newcommand\SB@spbegnew{%
+ \setbox\SB@boxiii\copy\SB@songbox%
+ \SB@cntii\z@%
+ \SB@mkpage0\SB@boxiii\SB@cntii\textheight%
+}
+\newcommand\SB@spextold{%
+ \ifodd\c@page\else%
+ \SB@cntii\z@%
+ \SB@mkpage0\SB@boxii\SB@cntii\textheight%
+ \fi%
+}
+\newcommand\SB@spextnew{%
+ \SB@cntii\z@%
+ \SB@mkpage0\SB@boxiii\SB@cntii\textheight%
+}
+\newcommand\SB@spdblpg{%
+ \ifnum\SB@cntii<\SB@numcols%
+ \SB@cnt\SB@numcols%
+ \advance\SB@cnt-\SB@colnum%
+ \if@twoside\ifodd\c@page\else%
+ \advance\SB@cnt\SB@numcols%
+ \fi\fi%
+ \fi%
+}
+\newcommand\SB@sposi{%
+ \ifnum\SB@cntii<\SB@numcols\else\if@twoside%
+ \SB@spextold%
+ \fi\fi%
+ \ifnum\SB@cntii<\SB@numcols\else%
+ \SB@spbegnew%
+ \ifnum\SB@cntii<\SB@numcols\else\if@twoside%
+ \SB@spextnew%
+ \fi\fi%
+ \SB@spdblpg%
+ \fi%
+}
+\newcommand\SB@sposii{%
+ \ifnum\SB@cntii<\SB@numcols\else%
+ \SB@spbegnew%
+ \ifnum\SB@cntii<\SB@numcols%
+ \SB@cnt\SB@numcols%
+ \advance\SB@cnt-\SB@colnum%
+ \else%
+ \if@twoside%
+ \SB@spextold%
+ \ifnum\SB@cntii<\SB@numcols\else%
+ \SB@spextnew%
+ \SB@spdblpg%
+ \fi%
+ \fi%
+ \fi%
+ \fi%
+}
+\newcommand\SB@sposiii{%
+ \ifnum\SB@cntii>\SB@colnum%
+ \SB@cnt\SB@colnum%
+ \advance\SB@cnt\@ne%
+ \ifnum\SB@cnt<\SB@numcols%
+ \setbox\SB@boxiii\copy\SB@songbox%
+ \SB@mkpage0\SB@boxiii\SB@cnt\SB@dimen%
+ \advance\SB@cnt\m@ne%
+ \fi%
+ \ifnum\SB@cnt>\SB@colnum%
+ \SB@cnt\z@%
+ \SB@sposii%
+ \else%
+ \SB@cnt\@ne%
+ \fi%
+ \fi%
+}
+\newcommand\songpos[1]{%
+ \ifcase#1%
+ \let\SB@selectcol\relax%
+ \let\SB@spos\relax%
+ \or%
+ \let\SB@selectcol\SB@@selectcol%
+ \let\SB@spos\SB@sposi%
+ \or%
+ \let\SB@selectcol\SB@@selectcol%
+ \let\SB@spos\SB@sposii%
+ \or%
+ \let\SB@selectcol\SB@@selectcol%
+ \let\SB@spos\SB@sposiii%
+ \else%
+ \SB@errspos%
+ \fi%
+}
+\newcommand\SB@spos{}
+\songpos\thr@@
+\newcommand\SB@clearpage{%
+ \SB@testtrue%
+ \ifvoid\SB@pgbox%
+ \ifdim\ht\SB@colbox=\z@\ifdim\dp\SB@colbox=\z@%
+ \SB@testfalse%
+ \fi\fi%
+ \fi%
+ \ifSB@test%
+ \SB@cnt\SB@numcols%
+ \advance\SB@cnt-\SB@colnum%
+ \SB@nextcol\SB@cnt\lastcolglue%
+ \SB@output2%
+ \fi%
+}
+\newcommand\SB@cleardpage{%
+ \SB@clearpage%
+ \if@twoside\ifodd\c@page%
+ \SB@nextcol\SB@numcols\@flushglue%
+ \fi\fi%
+}
+\newcommand\SB@stype{\SB@stypcol}
+\newcommand\SB@stypcol{%
+ \ifnum\SB@numcols>\z@%
+ \SB@selectcol%
+ \global\setbox\SB@colbox\vbox{\SB@putboxes\unvbox}%
+ \SB@output0%
+ \else%
+ \unvbox\voidb@x%
+ \SB@breakpoint\spenalty%
+ \ifdim\sbarheight>\z@%
+ \vskip-\sbarheight\relax%
+ \fi%
+ \unvbox\SB@songbox%
+ \fi%
+}
+\newcommand\SB@styppage{%
+ \ifnum\SB@numcols>\z@%
+ \SB@clearpage%
+ \unvbox\SB@songbox%
+ \nointerlineskip\null%
+ \else%
+ \unvbox\SB@songbox%
+ \fi%
+ \nointerlineskip%
+}
+\newcommand\SB@sgroup{}
+\let\SB@sgroup\@empty
+\SB@newcount\SB@groupcnt
+\newcommand\SB@submitpart{%
+ \ifx\SB@sgroup\@empty\else%
+ \@for\SB@temp:=\songlist\do{%
+ \ifx\SB@temp\SB@sgroup%
+ \edef\SB@tempii{\SB@sgroup @\the\SB@groupcnt}%
+ \expandafter\SB@newbox\csname songbox@\SB@tempii\endcsname%
+ \global\expandafter\setbox
+ \csname songbox@\SB@tempii\endcsname\box\SB@songbox%
+ \global\expandafter\let%
+ \csname stype@\SB@tempii\endcsname\SB@stype%
+ \ifrepchorus\ifvoid\SB@chorusbox\else%
+ \expandafter\SB@newbox\csname chbox@\SB@tempii\endcsname%
+ \global\expandafter\setbox%
+ \csname chbox@\SB@tempii\endcsname\box\SB@chorusbox%
+ \fi\fi%
+ \fi%
+ }%
+ \global\advance\SB@groupcnt%
+ \ifnum\SB@groupcnt<\z@\m@ne\else\@ne\fi%
+ \fi%
+ \setbox\SB@songbox\box\voidb@x%
+ \setbox\SB@chorusbox\box\voidb@x%
+}
+\newcommand\SB@submitsong{%
+ \ifpartiallist\SB@submitpart\else\SB@stype\fi%
+}
+\newcommand\SB@submitenv{%
+ \begingroup%
+ \let\SB@songbox\SB@envbox%
+ \SB@styppage%
+ \endgroup%
+}
+\newcommand\SB@songlistbrk{}
+\def\SB@songlistbrk{brk}
+\newcommand\SB@songlistnc{}
+\def\SB@songlistnc{nextcol}
+\newcommand\SB@songlistcp{}
+\def\SB@songlistcp{sclearpage}
+\newcommand\SB@songlistcdp{}
+\def\SB@songlistcdp{scleardpage}
+\newcommand\commitsongs{%
+ \ifpartiallist%
+ \ifnum\SB@numcols>\z@%
+ \@for\SB@temp:=\songlist\do{%
+ \ifx\SB@temp\SB@songlistnc\SB@nextcol\@ne\@flushglue\else%
+ \ifx\SB@temp\SB@songlistbrk\SB@nextcol\@ne\colbotglue\else%
+ \ifx\SB@temp\SB@songlistcp\SB@clearpage\else%
+ \ifx\SB@temp\SB@songlistcdp\SB@cleardpage\else%
+ \SB@groupcnt\m@ne\SB@finloop%
+ \SB@groupcnt\z@\SB@finloop%
+ \fi\fi\fi\fi%
+ }%
+ \else%
+ \@for\SB@temp:=\songlist\do{%
+ \ifx\SB@temp\SB@songlistnc\vfil\break\else%
+ \ifx\SB@temp\SB@songlistbrk\break\else%
+ \ifx\SB@temp\SB@songlistcp\clearpage\else%
+ \ifx\SB@temp\SB@songlistcdp%
+ \clearpage%
+ \ifodd\c@page\null\newpage\fi%
+ \else%
+ \SB@groupcnt\m@ne\SB@finloop%
+ \SB@groupcnt\z@\SB@finloop%
+ \fi\fi\fi\fi%
+ }%
+ \fi%
+ \fi%
+ \SB@clearpage%
+}
+\newcommand\SB@finloop{%
+ \loop\edef\SB@tempii{\SB@temp @\the\SB@groupcnt}%
+ \expandafter\ifx%
+ \csname songbox@\SB@tempii\endcsname\relax\else%
+ \setbox\SB@songbox\expandafter\box%
+ \csname songbox@\SB@tempii\endcsname%
+ \expandafter\ifx\csname chbox@\SB@tempii\endcsname\relax%
+ \repchorusfalse%
+ \else%
+ \repchorustrue%
+ \setbox\SB@chorusbox\expandafter\box%
+ \csname chbox@\SB@tempii\endcsname%
+ \fi%
+ \csname stype@\SB@tempii\endcsname%
+ \advance\SB@groupcnt\ifnum\SB@groupcnt<\z@\m@ne\else\@ne\fi%
+ \repeat%
+}
+\newcommand\SB@insertchorus[1]{{%
+ \vbadness\@M\vfuzz\maxdimen%
+ \setbox\SB@box\copy#1%
+ \setbox\SB@box\vsplit\SB@box to\maxdimen%
+ \edef\SB@temp{\splitfirstmarks\SB@nocmarkclass}%
+ \ifx\SB@temp\SB@nocmark\else%
+ \edef\SB@temp{\splitfirstmarks\SB@cmarkclass}%
+ \ifx\SB@temp\SB@cmark%
+ \SB@dimen4096\p@%
+ \SB@dimenii\maxdimen%
+ \SB@dimeniii\SB@dimen%
+ \loop%
+ \SB@dimeniii.5\SB@dimeniii%
+ \setbox\SB@box\copy#1%
+ \setbox\SB@box\vsplit\SB@box to\SB@dimen%
+ \edef\SB@temp{\splitfirstmarks\SB@cmarkclass}%
+ \ifx\SB@temp\SB@cmark%
+ \SB@dimenii\SB@dimen%
+ \advance\SB@dimen-\SB@dimeniii%
+ \else%
+ \advance\SB@dimen\SB@dimeniii%
+ \fi%
+ \ifdim\SB@dimeniii>2\p@\repeat%
+ \setbox\SB@box\vsplit#1to\SB@dimenii%
+ \global\setbox#1\vbox{%
+ \unvbox\SB@box\unskip%
+ \SB@inversefalse\SB@prevversetrue\SB@stanzabreak%
+ \SB@putbox\unvcopy\SB@chorusbox%
+ \SB@inversetrue\SB@prevversefalse\SB@stanzabreak%
+ \unvbox#1%
+ }%
+ \else\ifx\SB@temp\SB@lastcmark%
+ \global\setbox#1\vbox{%
+ \unvbox#1%
+ \unskip%
+ \ifdim\sbarheight>\z@%
+ \setbox\SB@box\lastbox%
+ \unskip\unpenalty%
+ \fi%
+ \setbox\SB@box\lastbox%
+ \unskip\unskip%
+ \SB@inversefalse\SB@prevversetrue\SB@stanzabreak%
+ \marks\SB@nocmarkclass{\SB@nocmark}%
+ \unvcopy\SB@chorusbox%
+ \vskip\versesep\vskip\beforepostludeskip\relax%
+ \nointerlineskip\box\SB@box%
+ \ifdim\sbarheight>\z@%
+ \nobreak\vskip2\p@\@plus\p@%
+ \hrule\@height\sbarheight\@width\SB@colwidth%
+ \fi%
+ }%
+ \fi\fi%
+ \fi%
+}}
+\newcommand\nextcol{%
+ \@ifstar{\SB@nextcol\@ne\@flushglue}%
+ {\ifpartiallist\else\SB@nextcol\@ne\@flushglue\fi}%
+}
+\newcommand\sclearpage{%
+ \@ifstar\SB@clearpage{\ifpartiallist\else\SB@clearpage\fi}%
+}
+\newcommand\scleardpage{%
+ \@ifstar\SB@cleardpage{\ifpartiallist\else\SB@cleardpage\fi}%
+}
+\newcommand\SB@lop[1]{\expandafter\SB@@lop\the#1\SB@@lop#1}
+\newcommand\SB@@lop{}
+\def\SB@@lop\\#1\\#2\SB@@lop#3#4{\global#3{\\#2}\global#4{#1}}
+\newcommand\SB@emptylist{}
+\def\SB@emptylist{\\}
+\newcommand\SB@ifempty[3]{%
+ \edef\SB@temp{\the#1}%
+ \ifx\SB@temp\SB@emptylist#2\else#3\fi%
+}
+\SB@newtoks\SB@titlelist
+\SB@newtoks\SB@titletail
+\newcommand\songtitle{}
+\newcommand\resettitles{%
+ \global\SB@titletail\SB@titlelist%
+ \nexttitle%
+}
+\newcommand\nexttitle{%
+ \SB@ifempty\SB@titletail{%
+ \global\let\songtitle\relax%
+ }{%
+ \SB@lop\SB@titletail\SB@toks%
+ \edef\songtitle{\the\SB@toks}%
+ }%
+}
+\newcommand\foreachtitle[1]{%
+ \ifx\songtitle\relax\else%
+ \loop#1\nexttitle\ifx\songtitle\relax\else\repeat%
+ \fi%
+}
+\newif\ifSB@songsenv\SB@songsenvfalse
+\newif\ifSB@insong\SB@insongfalse
+\newif\ifSB@intersong\SB@intersongfalse
+\newif\ifSB@inverse\SB@inversefalse
+\newif\ifSB@inchorus\SB@inchorusfalse
+\newcommand\SB@closeall{}
+\newcommand\SB@rawrefs{}
+\newcommand\songauthors{}
+\newcommand\songcopyright{}
+\newcommand\songlicense{}
+\newcommand\songrefs{}
+\newcommand\setlicense{\gdef\songlicense}
+\newcommand\SB@clearbskeys{}
+\newcommand\newsongkey[2]{%
+ \expandafter\gdef\expandafter\SB@clearbskeys\expandafter%
+ {\SB@clearbskeys#2}%
+ \define@key{beginsong}{#1}%
+}
+\newsongkey{sr}{\def\SB@rawrefs{}\gdef\songrefs{}}
+ {\def\SB@rawrefs{#1}\SB@parsesrefs{#1}}
+\newsongkey{by}{\def\songauthors{}}{\def\songauthors{#1}}
+\newsongkey{cr}{\def\songcopyright{}}{\def\songcopyright{#1}}
+\newsongkey{li}{\setlicense{}}{\setlicense{#1}}
+\newsongkey{index}{}{\indexentry{#1}}
+\newsongkey{ititle}{}{\indextitleentry{#1}}
+\newenvironment{song}{\beginsong}{\SB@endsong}
+\newcommand\beginsong[1]{%
+ \ifSB@insong\SB@errboo\SB@closeall\fi%
+ \ifSB@intersong\SB@errbor\SB@closeall\fi%
+ \SB@insongtrue%
+ \def\SB@closeall{\endsong}%
+ \SB@parsetitles{#1}%
+ \global\setbox\SB@songwrites\box\voidb@x%
+ \SB@clearbskeys%
+ \@ifnextchar[\SB@bskvfmt\SB@@beginsong%
+}
+\newcommand\SB@@beginsong{%
+ \@ifnextchar\bgroup\SB@bsoldfmt\SB@@@beginsong%
+}
+\newcommand\SB@bsoldfmt[3]{%
+ \SB@bskvfmt[sr={#1},by={#2},cr={#3}]%
+}
+\newcommand\SB@bskvfmt{}
+\def\SB@bskvfmt[#1]{%
+ \setkeys{beginsong}{#1}%
+ \SB@@@beginsong%
+}
+\newcommand\SB@@@beginsong{%
+ \global\SB@stanzafalse%
+ \setbox\SB@chorusbox\box\voidb@x%
+ \SB@gotchorusfalse%
+ \setbox\SB@songbox\vbox\bgroup\begingroup%
+ \ifnum\SB@numcols>\z@\hsize\SB@colwidth\fi%
+ \leftskip\z@skip\rightskip\z@skip%
+ \parfillskip\@flushglue\parskip\z@skip%
+ \SB@raggedright%
+ \global\SB@transposefactor\z@%
+ \global\SB@cr@{\\}%
+ \protected@edef\@currentlabel{\p@songnum\thesongnum}%
+ \setcounter{versenum}{1}%
+ \SB@prevversetrue%
+ \meter44%
+ \resettitles%
+ \SB@addtoindexes\songtitle\SB@rawrefs\songauthors%
+ \nexttitle%
+ \foreachtitle{\expandafter\SB@addtotitles\expandafter{\songtitle}}%
+ \resettitles%
+ \lyricfont%
+ \SB@setbaselineskip%
+}
+\newcommand\SB@endsong{%
+ \ifSB@insong%
+ \ifSB@inverse\SB@erreov\endverse\fi%
+ \ifSB@inchorus\SB@erreoc\endchorus\fi%
+ \global\SB@skip\versesep%
+ \unskip%
+ \ifrepchorus\ifvoid\SB@chorusbox\else%
+ \ifSB@prevverse\ifvnumbered%
+ \marks\SB@cmarkclass{\SB@lastcmark}%
+ \fi\fi%
+ \fi\fi%
+ \endgroup\egroup%
+ \begingroup%
+ \ifnum\SB@numcols>\z@%
+ \hsize\ifpagepreludes\textwidth\else\SB@colwidth\fi%
+ \fi%
+ \leftskip\z@skip\rightskip\z@skip%
+ \parfillskip\@flushglue\parskip\z@skip\parindent\z@%
+ \global\setbox\SB@envbox\vbox{%
+ \songmark%
+ \unvbox\SB@songwrites%
+ \ifpagepreludes\else\ifdim\sbarheight>\z@%
+ \hrule\@height\sbarheight\@width\hsize%
+ \nobreak\vskip5\p@\relax%
+ \fi\fi%
+ \begingroup%
+ \resettitles%
+ \songtarget{\ifnum\c@section=\z@1\else2\fi}%
+ {song\theSB@songsnum-\thesongnum}%
+ \endgroup%
+ \vbox{\makeprelude}%
+ \nobreak\vskip\SB@skip%
+ \vskip\afterpreludeskip\relax%
+ }%
+ \ifnum\SB@numcols>\z@\hsize\SB@colwidth\fi%
+ \global\setbox\SB@songbox\vbox{%
+ \ifpagepreludes\else\unvbox\SB@envbox\fi%
+ \unvbox\SB@songbox%
+ \nobreak\vskip\SB@skip%
+ \vskip\beforepostludeskip\relax%
+ \nointerlineskip%
+ \vbox{\makepostlude}%
+ \ifdim\sbarheight>\z@%
+ \nobreak\vskip2\p@\@plus\p@%
+ \nointerlineskip%
+ \hbox{\vrule\@height\sbarheight\@width\hsize}%
+ \fi%
+ }%
+ \endgroup%
+ \SB@insongfalse%
+ \edef\SB@sgroup{\thesongnum}%
+ \global\SB@groupcnt\z@%
+ \ifpagepreludes\SB@submitenv\fi%
+ \SB@submitsong%
+ \ifnum\SB@grouplvl=\z@\let\SB@sgroup\@empty\fi%
+ \stepcounter{songnum}%
+ \else%
+ \ifSB@intersong\SB@erreor\SB@closeall%
+ \else\SB@erreot\fi%
+ \fi%
+}
+\newcommand\SB@setbaselineskip{%
+ \SB@dimen\f@size\p@%
+ \baselineskip\SB@dimen\relax%
+ \ifchorded%
+ \setbox\SB@box\hbox{{\printchord{ABCDEFG\shrp\flt/j7}}}%
+ \advance\baselineskip\ht\SB@box%
+ \advance\baselineskip2\p@%
+ \fi%
+ \ifslides%
+ \advance\baselineskip.2\SB@dimen\@plus.5\SB@dimen%
+ \@minus.2\SB@dimen%
+ \else%
+ \advance\baselineskip\z@\@plus.1\SB@dimen\relax%
+ \fi%
+ \advance\baselineskip\baselineadj%
+}
+\newcommand\SB@setversesep{%
+ \SB@dimen123456789sp%
+ \edef\SB@temp{\the\SB@dimen}%
+ \edef\SB@tempii{\the\versesep}%
+ \ifx\SB@temp\SB@tempii%
+ \begingroup%
+ \lyricfont%
+ \SB@dimen\f@size\p@%
+ \ifchorded%
+ \setbox\SB@box\hbox{{\printchord{ABCDEFG\shrp\flt/j7}}}%
+ \advance\SB@dimen\ht\SB@box%
+ \fi%
+ \ifslides%
+ \global\versesep1.2\SB@dimen\@plus.3\SB@dimen%
+ \@minus.3\SB@dimen%
+ \else%
+ \global\versesep.75\SB@dimen\@plus.25\SB@dimen%
+ \@minus.13\SB@dimen%
+ \fi%
+ \endgroup%
+ \fi%
+}
+\newcommand\makeprelude{%
+ \resettitles%
+ \ifslides%
+ \hbox to\hsize{{%
+ \hfil\stitlefont\songtitle\hfil%
+ }}%
+ \vskip5\p@%
+ \hbox to\hsize{%
+ \hfil%
+ \vbox{%
+ \divide\hsize\tw@\parskip\p@\relax%
+ \centering\small\extendprelude%
+ }%
+ \hfil%
+ }%
+ \else%
+ \ifdim\songnumwidth>\z@%
+ \setbox\SB@boxii\hbox{{\SB@colorbox\snumbgcolor{%
+ \hbox to\songnumwidth{%
+ \printsongnum{\thesongnum}\hfil%
+ }%
+ }}}%
+ \fi%
+ \setbox\SB@box\vbox{%
+ \ifdim\songnumwidth>\z@%
+ \SB@dimen\wd\SB@boxii%
+ \advance\SB@dimen3\p@%
+ \ifpagepreludes\multiply\SB@dimen\tw@\fi%
+ \advance\hsize-\SB@dimen%
+ \fi%
+ \ifpagepreludes\centering\else\SB@raggedright\fi%
+ \offinterlineskip\lineskip\p@%
+ {\stitlefont%
+ \songtitle\par%
+ \nexttitle%
+ \foreachtitle{(\songtitle)\par}}%
+ \ifdim\prevdepth=\z@\kern\p@\fi%
+ \parskip\p@\relax\tiny%
+ \extendprelude%
+ \kern\z@%
+ }%
+ \ifdim\songnumwidth>\z@%
+ \hbox{%
+ \ifdim\ht\SB@boxii>\ht\SB@box%
+ \box\SB@boxii%
+ \kern3\p@%
+ \vtop{\box\SB@box}%
+ \else%
+ \SB@colorbox\snumbgcolor{\vbox to\ht\SB@box{{%
+ \hbox to\songnumwidth{%
+ \printsongnum{\thesongnum}\hfil%
+ }\vfil%
+ }}}%
+ \kern3\p@%
+ \box\SB@box%
+ \fi%
+ }%
+ \else%
+ \unvbox\SB@box%
+ \fi%
+ \fi%
+}
+\newcommand\makepostlude{%
+ \SB@raggedright\baselineskip\z@skip\parskip\z@skip\parindent\z@%
+ \tiny\extendpostlude%
+}
+\newcommand\showauthors{%
+ \setbox\SB@box\hbox{\bfseries\sfcode`.\@m\songauthors}%
+ \ifdim\wd\SB@box>\z@\unhbox\SB@box\par\fi%
+}
+\newcommand\showrefs{%
+ \setbox\SB@box\hbox{\slshape\songrefs\vphantom,}%
+ \ifdim\wd\SB@box>\z@\unhbox\SB@box\par\fi%
+}
+\newcommand\SB@next{}
+\newcommand\SB@donext{}
+\newcommand\SB@dothis{}
+\newcommand\SB@nextname{}
+\newcommand\SB@appendsp[1]{#1\expandafter{\the#1 }}
+\newcommand\SB@parsetitles[1]{%
+ \begingroup%
+ \global\SB@titlelist{\\}%
+ \SB@toks{}%
+ \let\\\SB@titlesep%
+ \SB@pthead#1\SB@endparse%
+ \endgroup%
+}
+\newcommand\SB@pthead{\futurelet\SB@next\SB@@pthead}
+\newcommand\SB@@pthead{%
+ \ifcat\noexpand\SB@next\@sptoken%
+ \expandafter\SB@@@pthead%
+ \else%
+ \expandafter\SB@ptmain%
+ \fi%
+}
+\newcommand\SB@@@pthead{%
+ \afterassignment\SB@pthead%
+ \let\SB@next= }
+\newcommand\SB@ptloop{\futurelet\SB@next\SB@ptmain}
+\newcommand\SB@ptmain{%
+ \ifcat\noexpand\SB@next\@sptoken%
+ \let\SB@donext\SB@ptsp%
+ \else\ifcat\noexpand\SB@next\bgroup%
+ \let\SB@donext\SB@ptbg%
+ \else\ifx\SB@next\SB@endparse%
+ \global\SB@titlelist\expandafter{\the\SB@titlelist\\}%
+ \let\SB@donext\@gobble%
+ \else\ifx\SB@next\\%
+ \SB@toks{}%
+ \def\SB@donext{\SB@ptstep\SB@pthead}%
+ \else%
+ \def\SB@donext{\SB@ptstep\SB@ptloop}%
+ \fi\fi\fi\fi%
+ \SB@donext}
+\newcommand\SB@ptstep[2]{%
+ \global\SB@titlelist\expandafter\expandafter\expandafter{%
+ \expandafter\the\expandafter\SB@titlelist\the\SB@toks#2}%
+ \SB@toks{}%
+ #1}
+\newcommand\SB@ptbg[1]{\SB@ptstep\SB@ptloop{{#1}}}
+\newcommand\SB@ptsp{
+ \SB@appendsp\SB@toks%
+ \afterassignment\SB@ptloop%
+ \let\SB@next= }
+\newcommand\SB@titlesep{SB@titlesep}
+\newcommand\SB@endparse{%
+ \SB@Error{Title parsing failed}{This error should not occur.}%
+}
+\newcommand\SB@parsesrefs[1]{%
+ \begingroup%
+ \SB@toks{\begingroup\SB@sractives}%
+ \SB@prloop#1\SB@endparse%
+ \xdef\songrefs{\the\SB@toks\endgroup}%
+ \endgroup%
+}
+\newcommand\SB@prloop{\futurelet\SB@next\SB@prstep}
+\newcommand\SB@prstep{%
+ \ifcat\noexpand\SB@next A%
+ \expandafter\SB@prcpy%
+ \else%
+ \expandafter\SB@@prstep%
+ \fi%
+}
+\newcommand\SB@@prstep{%
+ \ifcat\noexpand\SB@next\@sptoken%
+ \let\SB@donext\SB@prspace%
+ \else\ifx\SB@next-%
+ \let\SB@donext\SB@prhyphen%
+ \else\ifx\SB@next,%
+ \let\SB@donext\SB@prcomma%
+ \else\ifx\SB@next\SB@endparse
+ \let\SB@donext\@gobble%
+ \else\ifcat\noexpand\SB@next\bgroup%
+ \let\SB@donext\SB@prgr%
+ \else%
+ \let\SB@donext\SB@prcpy%
+ \fi\fi\fi\fi\fi%
+ \SB@donext%
+}
+\newcommand\SB@prcpy[1]{\SB@toks\expandafter{\the\SB@toks#1}\SB@prloop}
+\newcommand\SB@prgr[1]{\SB@toks\expandafter{\the\SB@toks{#1}}\SB@prloop}
+
+\newcommand\SB@prcomma[1]{}
+{\catcode`,\active
+ \gdef\SB@prcomma#1{\SB@toks\expandafter{\the\SB@toks,}\SB@prloop}}
+\newcommand\SB@prhyphen[1]{}
+{\catcode`-\active
+ \gdef\SB@prhyphen#1{\SB@toks\expandafter{\the\SB@toks-}\SB@prloop}}
+\newcommand\SB@prspace[1]{}
+{\obeyspaces
+\gdef\SB@prspace{\SB@toks\expandafter{\the\SB@toks }\SB@@prspace}}
+\newcommand\SB@@prspace{\afterassignment\SB@prloop\let\SB@temp= }
+
+\newcommand\SB@sractives{}
+{\catcode`,\active\catcode`-\active\obeyspaces%
+\gdef\SB@sractives{%
+\let,\SB@srcomma\let-\SB@srhyphen\let \SB@srspace%
+\SB@srspacing}%
+}
+\newcommand\SB@srspacing{%
+ \nonfrenchspacing\sfcode`\;=1500\sfcode`\,=1250\relax%
+}
+\newcommand\SB@srcomma{,\futurelet\SB@next\SB@@srcomma}
+\newcommand\SB@@srcomma{%
+ \ifx\SB@next\SB@srspace\else%
+ \nobreak\thinspace%
+ \fi%
+}
+\newcommand\SB@srhyphen{\futurelet\SB@next\SB@@srhyphen}
+\newcommand\SB@@srhyphen{%
+ \ifx\SB@next\SB@srhyphen\expandafter\SB@srdash\else--\fi%
+}
+\newcommand\SB@srdash[1]{\futurelet\SB@next\SB@@srdash}
+\newcommand\SB@@srdash{%
+ \ifx\SB@next\SB@srhyphen---\expandafter\@gobble\else--\fi%
+}
+\newcommand\SB@srspace{\futurelet\SB@next\SB@@srspace}
+\newcommand\SB@@srspace{%
+ \let\SB@donext\relax%
+ \ifx\SB@next\SB@srspace\else%
+ \ifnum\spacefactor>\@m%
+ \ifnum\spacefactor>1499 %
+ \ifcat\noexpand\SB@next0%
+ \let\SB@donext\SB@srcso%
+ \else%
+ \penalty-5\enskip%
+ \fi%
+ \else%
+ \space%
+ \fi%
+ \else%
+ \nobreak\space%
+ \fi%
+ \fi%
+ \SB@donext%
+}
+\newcommand\SB@srcso[1]{\futurelet\SB@temp\SB@@srcso}
+\newcommand\SB@@srcso{%
+ \ifx\SB@temp\SB@srspace%
+ \penalty-5\enskip%
+ \else%
+ \space%
+ \fi%
+ \SB@next%
+}
+\newif\ifSB@stanza
+\newcommand\SB@stanzabreak{%
+ \ifhmode\par\fi%
+ \ifSB@stanza%
+ \SB@breakpoint{%
+ \ifSB@inverse%
+ \ifSB@prevverse\vvpenalty\else\cvpenalty\fi%
+ \else%
+ \ifSB@prevverse\vcpenalty\else\ccpenalty\fi%
+ \fi%
+ }%
+ \vskip\versesep%
+ \fi%
+}
+\newcommand\SB@breakpoint[1]{%
+ \begingroup%
+ \ifnum#1<\@M%
+ \SB@skip\colbotglue\relax%
+ \SB@skip-\SB@skip%
+ \else%
+ \SB@skip\z@skip%
+ \fi%
+ \advance\SB@skip\lastskip%
+ \unskip%
+ \nobreak%
+ \ifnum#1<\@M%
+ \vskip\colbotglue\relax%
+ \penalty#1%
+ \fi%
+ \vskip\SB@skip%
+ \endgroup%
+}
+\newcommand\SB@putbox[2]{%
+ \begingroup%
+ \SB@dimen\dp#2%
+ #1#2%
+ \setbox\SB@box\hbox{{\lyricfont p}}%
+ \ifdim\SB@dimen<\dp\SB@box%
+ \advance\SB@dimen-\dp\SB@box%
+ \vskip-\SB@dimen%
+ \fi%
+ \setbox\SB@box\box\voidb@x%
+ \endgroup%
+}
+\newcommand\SB@obeylines{%
+ \let\par\SB@par%
+ \obeylines%
+ \let\@par\SB@@par%
+}
+\newcommand\SB@par{%
+ \ifhmode%
+ \SB@cnt\interlinepenalty%
+ \interlinepenalty\@M%
+ \endgraf%
+ \interlinepenalty\SB@cnt%
+ \ifSB@inchorus%
+ \ifdim\cbarwidth>\z@\nobreak\else\SB@ilpenalty\fi%
+ \else%
+ \SB@ilpenalty%
+ \fi%
+ \fi%
+}
+\newcommand\SB@ilpenalty{%
+ \ifnum\interlinepenalty=\z@\else%
+ \penalty\interlinepenalty%
+ \fi%
+}
+\newcommand\SB@@par{\let\par\SB@par\par}
+\SB@newdimen\SB@parindent
+\newcommand\SB@everypar{}
+\newcommand\SB@raggedright{%
+ \SB@parindent\parindent%
+ \raggedright%
+ \parindent\SB@parindent%
+}
+\newif\ifvnumbered
+\newif\ifSB@prevverse
+\CheckCommand\verse{%
+ \let\\\@centercr%
+ \list{}{%
+ \itemsep\z@%
+ \itemindent-1.5em%
+ \listparindent\itemindent%
+ \rightmargin\leftmargin%
+ \advance\leftmargin1.5em%
+ }%
+ \item\relax%
+}
+\renewenvironment{verse}
+ {\vnumberedtrue\SB@beginverse}
+ {\SB@endverse}
+\newenvironment{verse*}
+ {\vnumberedfalse\SB@beginverse}
+ {\SB@endverse}
+\newcommand\beginverse{%
+ \begingroup%
+ \SB@loadactives%
+ \@ifstar{\endgroup\vnumberedfalse\SB@beginverse}%
+ {\endgroup\vnumberedtrue\SB@beginverse}%
+}
+\newcommand\SB@beginverse{%
+ \ifSB@insong%
+ \ifSB@inverse\SB@errbvv\endverse\fi%
+ \ifSB@inchorus\SB@errbvc\endchorus\fi%
+ \else%
+ \SB@errbvt\beginsong{Unknown Song}%
+ \fi%
+ \ifrepchorus\ifvoid\SB@chorusbox\else%
+ \SB@gotchorustrue%
+ \ifSB@prevverse\ifvnumbered%
+ \marks\SB@cmarkclass{\SB@cmark}%
+ \fi\fi%
+ \fi\fi%
+ \SB@inversetrue%
+ \def\SB@closeall{\endverse\endsong}%
+ \SB@stanzabreak%
+ \versemark\nobreak%
+ \global\SB@stanzatrue%
+ \SB@ifempty\SB@cr@\memorize{\replay[]}%
+ \setbox\SB@box\vbox\bgroup\begingroup%
+ \ifvnumbered%
+ \protected@edef\@currentlabel{\p@versenum\theversenum}%
+ \def\SB@everypar{%
+ \setbox\SB@box\hbox{{\printversenum{\theversenum}}}%
+ \ifdim\wd\SB@box<\versenumwidth%
+ \setbox\SB@box%
+ \hbox to\versenumwidth{\unhbox\SB@box\hfil}%
+ \fi%
+ \ifchorded\vrule\@height\baselineskip\@width\z@\@depth\z@\fi%
+ \placeversenum\SB@box%
+ \gdef\SB@everypar{}%
+ }%
+ \else%
+ \def\SB@everypar{%
+ \ifchorded\vrule\@height\baselineskip\@width\z@\@depth\z@\fi%
+ \gdef\SB@everypar{}%
+ }%
+ \fi%
+ \everypar{\SB@everypar\everypar{}}%
+ \versefont\versejustify%
+ \SB@loadactives%
+ \SB@obeylines%
+ \penalty12345 %
+ \everyverse\relax%
+}
+\newcommand\SB@endverse{%
+ \ifSB@insong%
+ \ifSB@inverse%
+ \unpenalty%
+ \endgroup\egroup%
+ \SB@putbox\unvbox\SB@box%
+ \SB@inversefalse%
+ \def\SB@closeall{\endsong}%
+ \ifvnumbered\stepcounter{versenum}\fi%
+ \SB@prevversetrue%
+ \else\ifSB@inchorus\SB@errevc\endchorus%
+ \else\SB@errevo\fi\fi%
+ \else%
+ \SB@errevt%
+ \fi%
+}
+\newif\ifSB@chorustop
+\SB@newbox\SB@chorusbox
+\newif\ifSB@gotchorus
+\ifSB@etex
+ \@ifundefined{newmarks}{
+ \@ifundefined{newmark}{
+ \mathchardef\SB@cmarkclass83
+ \mathchardef\SB@nocmarkclass84
+ }{
+ \newmark\SB@cmarkclass
+ \newmark\SB@nocmarkclass
+ }
+ }{
+ \newmarks\SB@cmarkclass
+ \newmarks\SB@nocmarkclass
+ }
+\fi
+\newcommand\SB@cmark{}
+\def\SB@cmark{SB@cmark}
+\newcommand\SB@lastcmark{}
+\def\SB@lastcmark{SB@lastcmark}
+\newcommand\SB@nocmark{}
+\def\SB@nocmark{SB@nocmark}
+\newenvironment{chorus}{\beginchorus}{\SB@endchorus}
+\newcommand\beginchorus{%
+ \ifSB@insong
+ \ifSB@inverse\SB@errbcv\endverse\fi%
+ \ifSB@inchorus\SB@errbcc\endchorus\fi%
+ \else%
+ \SB@errbct\beginsong{Unknown Song}%
+ \fi%
+ \SB@inchorustrue%
+ \def\SB@closeall{\endchorus\endsong}%
+ \SB@chorustoptrue%
+ \vnumberedfalse%
+ \SB@stanzabreak%
+ \chorusmark%
+ \ifrepchorus%
+ \ifSB@gotchorus\else\ifSB@prevverse\else%
+ \global\setbox\SB@chorusbox\vbox{%
+ \unvbox\SB@chorusbox%
+ \SB@stanzabreak%
+ \chorusmark%
+ }%
+ \fi\fi%
+ \fi%
+ \global\SB@stanzatrue%
+ \replay[]%
+ \SB@@beginchorus%
+ \everychorus\relax%
+}
+\newcommand\SB@@beginchorus{%
+ \ifrepchorus\marks\SB@cmarkclass{}\fi%
+ \setbox\SB@box\vbox\bgroup\begingroup%
+ \ifchorded%
+ \def\SB@everypar{%
+ \vrule\@height\baselineskip\@width\z@\@depth\z@%
+ \gdef\SB@everypar{}%
+ }%
+ \everypar{\SB@everypar\everypar{}}%
+ \fi%
+ \chorusfont\chorusjustify%
+ \SB@loadactives%
+ \SB@obeylines%
+ \penalty12345 %
+}
+\newcommand\SB@endchorus{%
+ \ifSB@insong%
+ \ifSB@inchorus%
+ \unpenalty%
+ \endgroup\egroup%
+ \SB@inchorusfalse%
+ \def\SB@closeall{\endsong}%
+ \setbox\SB@box\vbox{%
+ \SB@chorusbar\SB@box%
+ \SB@putbox\unvbox\SB@box%
+ }
+ \ifrepchorus\ifSB@gotchorus\else%
+ \global\setbox\SB@chorusbox\vbox{%
+ \unvbox\SB@chorusbox%
+ \unvcopy\SB@box%
+ }%
+ \fi\fi%
+ \unvbox\SB@box%
+ \SB@prevversefalse%
+ \else\ifSB@inverse\SB@errecv\endverse%
+ \else\SB@erreco\fi\fi%
+ \else%
+ \SB@errect%
+ \fi%
+}
+\newcommand\SB@cbarshift{%
+ \ifSB@inchorus\ifdim\cbarwidth>\z@%
+ \advance\leftskip\cbarwidth%
+ \advance\leftskip5\p@\relax%
+ \fi\fi%
+}
+\newcommand\SB@chorusbar[1]{%
+ \ifdim\cbarwidth>\z@%
+ \SB@dimen\ht#1%
+ \SB@dimenii\dp#1%
+ \advance\SB@dimen%
+ \ifSB@chorustop\ifchorded\else2\fi\fi\SB@dimenii%
+ \SB@skip\SB@dimen\relax%
+ \SB@computess\SB@skip1\@plus#1%
+ \SB@computess\SB@skip{-1}\@minus#1%
+ \nointerlineskip\null\nobreak%
+ \leaders\vrule\@width\cbarwidth\vskip\SB@skip%
+ \ifSB@chorustop\ifchorded\else%
+ \advance\SB@skip-\SB@dimenii%
+ \fi\fi%
+ \nobreak\vskip-\SB@skip%
+ \fi%
+}
+\newcommand\SB@computess[4]{%
+ \begingroup%
+ \vbadness\@M\vfuzz\maxdimen%
+ \SB@dimen4096\p@%
+ \setbox\SB@box\vbox spread#2\SB@dimen{\unvcopy#4}%
+ \ifnum\badness=\z@%
+ \global\advance#1\z@#31fil\relax%
+ \else%
+ \SB@dimenii\SB@dimen%
+ \loop%
+ \SB@dimenii.5\SB@dimenii%
+ \ifnum\badness<100 %
+ \advance\SB@dimen\SB@dimenii%
+ \else
+ \advance\SB@dimen-\SB@dimenii%
+ \fi%
+ \setbox\SB@box\vbox spread#2\SB@dimen{\unvcopy#4}%
+ \ifnum\badness=100 \SB@dimenii\z@\fi%
+ \ifdim\SB@dimenii>.1\p@\repeat%
+ \ifdim\SB@dimen<.1\p@\SB@dimen\z@\fi%
+ \global\advance#1\z@#3\SB@dimen\relax%
+ \fi%
+ \endgroup%
+}
+\newcommand\brk{%
+ \ifSB@insong%
+ \ifhmode\penalty-5 \else%
+ \unpenalty%
+ \ifSB@inchorus%
+ \ifdim\cbarwidth=\z@%
+ \ifrepchorus\marks\SB@cmarkclass{}\fi%
+ \SB@breakpoint\brkpenalty%
+ \else%
+ \endgroup\egroup%
+ \ifrepchorus\ifSB@gotchorus\else%
+ \global\setbox\SB@chorusbox\vbox{%
+ \unvbox\SB@chorusbox%
+ \SB@chorusbar\SB@box%
+ \unvcopy\SB@box%
+ \SB@breakpoint\brkpenalty%
+ }%
+ \fi\fi%
+ \SB@chorusbar\SB@box%
+ \unvbox\SB@box%
+ \SB@breakpoint\brkpenalty%
+ \SB@chorustopfalse%
+ \SB@@beginchorus%
+ \fi%
+ \else%
+ \SB@breakpoint\brkpenalty%
+ \fi%
+ \fi%
+ \else%
+ \ifpartiallist\else\SB@nextcol\@ne\colbotglue\fi%
+ \fi%
+}
+\newcommand\SB@boxup[1]{%
+ \setbox\SB@box\hbox{{\notefont#1}}%
+ \SB@dimen\wd\SB@box%
+ \advance\SB@dimen6\p@%
+ \advance\SB@dimen\leftskip%
+ \advance\SB@dimen\rightskip%
+ \ifdim\SB@dimen>\hsize%
+ \vbox{{%
+ \advance\hsize-6\p@%
+ \advance\hsize-\leftskip%
+ \advance\hsize-\rightskip%
+ \notejustify%
+ \unhbox\SB@box\par%
+ \kern\z@%
+ }}%
+ \else%
+ \vbox{\box\SB@box\kern\z@}%
+ \fi%
+}
+\newcommand\textnote[1]{%
+ \ifhmode\par\fi%
+ \ifnum\lastpenalty=12345\else%
+ \ifSB@inverse%
+ \vskip2\p@\relax%
+ \else\ifSB@inchorus%
+ \vskip2\p@\relax%
+ \else\ifSB@stanza%
+ \nobreak\vskip\versesep%
+ \fi\fi\fi%
+ \fi%
+ \begingroup%
+ \everypar{}%
+ \ifchorded\chordedfalse\SB@setbaselineskip\chordedtrue\fi%
+ \placenote{\SB@colorbox\notebgcolor{\SB@boxup{#1}}}%
+ \endgroup%
+ \nobreak%
+ \ifSB@inverse%
+ \vskip2\p@\relax%
+ \else\ifSB@inchorus%
+ \vskip2\p@\relax%
+ \else\ifSB@stanza\else%
+ \nobreak\vskip\versesep%
+ \fi\fi\fi%
+}
+\newcommand\musicnote[1]{\ifchorded\textnote{#1}\fi}
+\ifSB@etex
+ \newcommand\echo{\begingroup\@sanitize\SB@echo}
+ \newcommand\SB@echo[1]{%
+ \endgroup%
+ \begingroup%
+ \ifdim\fontdimen\@ne\font>\z@\upshape\else\slshape\fi%
+ \endlinechar\m@ne%
+ \scantokens{(#1)}%
+ \endgroup%
+ }
+\else
+ \newcommand\echo{%
+ \begingroup%
+ \ifdim\fontdimen\@ne\font>\z@\upshape\else\slshape\fi%
+ \afterassignment\SB@echo%
+ \setbox\SB@box\hbox%
+ }
+ \newcommand\SB@echo{\aftergroup\SB@@echo(}
+ \newcommand\SB@@echo{\unhbox\SB@box)\endgroup}
+\fi
+\newcommand\rep[1]{%
+ (\raise.25ex\hbox{%
+ \fontencoding{OMS}\fontfamily{cmsy}\selectfont\char\tw@%
+ }#1)%
+}
+\newenvironment{songgroup}{%
+ \ifnum\SB@grouplvl=\z@%
+ \edef\SB@sgroup{\thesongnum}%
+ \global\SB@groupcnt\m@ne%
+ \fi%
+ \advance\SB@grouplvl\@ne%
+}{%
+ \advance\SB@grouplvl\m@ne%
+ \ifnum\SB@grouplvl=\z@\let\SB@sgroup\@empty\fi%
+}
+\SB@newcount\SB@grouplvl
+\newenvironment{intersong}{%
+ \ifSB@insong\SB@errbro\SB@closeall\fi%
+ \ifSB@intersong\SB@errbrr\SB@closeall\fi%
+ \setbox\SB@chorusbox\box\voidb@x%
+ \SB@intersongtrue%
+ \def\SB@closeall{\end{intersong}}%
+ \setbox\SB@songbox\vbox\bgroup\begingroup%
+ \ifnum\SB@numcols>\z@\hsize\SB@colwidth\fi%
+ \ifdim\sbarheight>\z@%
+ \hrule\@height\sbarheight\@width\hsize%
+ \nobreak%
+ \fi%
+}{%
+ \ifSB@intersong
+ \ifdim\sbarheight>\z@%
+ \ifhmode\par\fi%
+ \SB@skip\lastskip%
+ \unskip\nobreak\vskip\SB@skip%
+ \hbox{\vrule\@height\sbarheight\@width\hsize}%
+ \fi%
+ \endgroup\egroup%
+ \ifSB@omitscrip%
+ \setbox\SB@songbox\box\voidb@x%
+ \else%
+ \SB@submitsong%
+ \fi%
+ \SB@intersongfalse%
+ \else%
+ \ifSB@insong\SB@errero\SB@closeall\else\SB@errert\fi%
+ \fi%
+}
+\newenvironment{intersong*}{%
+ \ifSB@insong\SB@errbro\SB@closeall\fi%
+ \ifSB@intersong\SB@errbrr\SB@closeall\fi%
+ \setbox\SB@chorusbox\box\voidb@x%
+ \SB@intersongtrue%
+ \def\SB@closeall{\end{intersong*}}%
+ \setbox\SB@songbox\vbox\bgroup\begingroup%
+}{%
+ \ifSB@intersong%
+ \endgroup\egroup%
+ \ifSB@omitscrip%
+ \setbox\SB@songbox\box\voidb@x%
+ \else%
+ \def\SB@stype{\SB@styppage}%
+ \SB@submitsong%
+ \def\SB@stype{\SB@stypcol}%
+ \fi%
+ \SB@intersongfalse%
+ \else%
+ \ifSB@insong\SB@errero\SB@closeall\else\SB@errert\fi%
+ \fi%
+}
+\newenvironment{scripture}{\beginscripture}{\SB@endscripture}
+\newcommand\beginscripture[1]{%
+ \begin{intersong}%
+ \SB@parsesrefs{#1}%
+ \setbox\SB@envbox\hbox{{\printscrcite\songrefs}}%
+ \def\SB@closeall{\endscripture}%
+ \nobreak\vskip5\p@%
+ \SB@parindent\parindent\parindent\z@%
+ \parskip\z@skip\parfillskip\@flushglue%
+ \leftskip\SB@parindent\rightskip\SB@parindent\relax%
+ \scripturefont%
+ \baselineskip\f@size\p@\@plus\p@\relax%
+ \advance\baselineskip\p@\relax%
+ \emergencystretch.3em%
+}
+\newcommand\SB@endscripture{%
+ \ifSB@intersong
+ \scitehere%
+ \ifhmode\par\fi%
+ \vskip-3\p@%
+ \end{intersong}%
+ \fi%
+}
+\newcommand\scitehere{%
+ \ifSB@intersong%
+ \ifvoid\SB@envbox\else%
+ \ifvmode%
+ \setbox\SB@box\lastbox%
+ \nointerlineskip\noindent\hskip-\leftskip%
+ \unhbox\SB@box\unskip%
+ \fi%
+ \unskip\nobreak\hfil\penalty50\hskip.8em\null\nobreak\hfil%
+ \box\SB@envbox\kern-\SB@parindent%
+ {\parfillskip\z@\finalhyphendemerits2000\par}%
+ \fi%
+ \else%
+ \SB@errscrip\scitehere%
+ \fi%
+}
+\newcommand\Acolon{\SB@colon2\Acolon}
+\newcommand\Bcolon{\SB@colon1\Bcolon}
+\newcommand\SB@colon[2]{%
+ \ifSB@intersong\else%
+ \SB@errscrip#2%
+ \beginscripture{Unknown}%
+ \fi%
+ \ifhmode\par\fi%
+ \begingroup%
+ \rightskip\SB@parindent\@plus4em%
+ \advance\leftskip2\SB@parindent%
+ \advance\parindent-#1\SB@parindent%
+ \def\par{\endgraf\endgroup}%
+ \obeylines%
+}
+\newcommand\strophe{%
+ \ifSB@intersong\else%
+ \SB@errscrip\strophe\beginscripture{Unknown}%
+ \fi%
+ \vskip.9ex\@plus.45ex\@minus.68ex\relax%
+}
+\newcommand\SB@scripdent[2]{%
+ \ifSB@intersong\else%
+ \SB@errscrip#2\beginscripture{Unknown}%
+ \fi%
+ \ifhmode\par\fi%
+ \advance\leftskip#1\SB@parindent\relax%
+}
+\newcommand\scripindent{\SB@scripdent1\scripindent}
+\newcommand\scripoutdent{\SB@scripdent-\scripoutdent}
+\newcommand\SB@quotesactive{%
+ \catcode`'\active%
+ \catcode``\active%
+}
+\newcommand\shiftdblquotes[4]{}
+\newcommand\SB@ldqleft{}
+\newcommand\SB@ldqright{}
+\newcommand\SB@rdqleft{}
+\newcommand\SB@rdqright{}
+\newcommand\SB@scanlq{}
+\newcommand\SB@scanrq{}
+\newcommand\SB@dolq{}
+\newcommand\SB@dorq{}
+{
+ \SB@quotesactive
+ \gdef\shiftdblquotes#1#2#3#4{%
+ \def\SB@ldqleft{\kern#1}%
+ \def\SB@ldqright{\kern#2}%
+ \def\SB@rdqleft{\kern#3}%
+ \def\SB@rdqright{\kern#4}%
+ \SB@quotesactive%
+ \def`{\futurelet\SB@next\SB@scanlq}%
+ \def'{\futurelet\SB@next\SB@scanrq}%
+ }
+ \gdef\SB@scanlq{%
+ \ifx\SB@next`%
+ \expandafter\SB@dolq%
+ \else%
+ \expandafter\lq%
+ \fi%
+ }
+ \gdef\SB@scanrq{%
+ \ifx\SB@next'%
+ \expandafter\SB@dorq%
+ \else%
+ \expandafter\rq%
+ \fi%
+ }
+ \gdef\SB@dolq`{%
+ \ifvmode\leavevmode\else\/\fi%
+ \vadjust{}%
+ \SB@ldqleft\lq\lq\SB@ldqright%
+ \vadjust{}%
+ }
+ \gdef\SB@dorq'{%
+ \ifvmode\leavevmode\else\/\fi%
+ \vadjust{}%
+ \SB@rdqleft\rq\rq\SB@rdqright%
+ \vadjust{}%
+ }
+}
+\SB@newcount\SB@transposefactor
+\newif\ifSB@convertnotes
+\newcommand\notenameA{}
+\newcommand\notenameB{}
+\newcommand\notenameC{}
+\newcommand\notenameD{}
+\newcommand\notenameE{}
+\newcommand\notenameF{}
+\newcommand\notenameG{}
+\newcommand\printnoteA{}
+\newcommand\printnoteB{}
+\newcommand\printnoteC{}
+\newcommand\printnoteD{}
+\newcommand\printnoteE{}
+\newcommand\printnoteF{}
+\newcommand\printnoteG{}
+\newcommand\notenamesin[7]{%
+ \def\notenameA{#1}%
+ \def\notenameB{#2}%
+ \def\notenameC{#3}%
+ \def\notenameD{#4}%
+ \def\notenameE{#5}%
+ \def\notenameF{#6}%
+ \def\notenameG{#7}%
+ \SB@convertnotestrue%
+}
+\newcommand\notenamesout[7]{%
+ \def\printnoteA{#1}%
+ \def\printnoteB{#2}%
+ \def\printnoteC{#3}%
+ \def\printnoteD{#4}%
+ \def\printnoteE{#5}%
+ \def\printnoteF{#6}%
+ \def\printnoteG{#7}%
+ \SB@convertnotestrue%
+}
+\newcommand\notenames[7]{%
+ \notenamesin{#1}{#2}{#3}{#4}{#5}{#6}{#7}%
+ \notenamesout{#1}{#2}{#3}{#4}{#5}{#6}{#7}%
+ \SB@convertnotesfalse%
+}
+\newcommand\alphascale{\notenames ABCDEFG}
+\newcommand\solfedge{\notenames{LA}{SI}{DO}{RE}{MI}{FA}{SOL}}
+\alphascale
+\newif\ifSB@prefshrps
+\newif\ifSB@needkey
+\newcommand\transpose[1]{%
+ \advance\SB@transposefactor by#1\relax%
+ \SB@cnt\SB@transposefactor%
+ \divide\SB@cnt12 %
+ \multiply\SB@cnt12 %
+ \advance\SB@transposefactor-\SB@cnt%
+ \SB@needkeytrue%
+}
+\newcommand\capo[1]{%
+ \iftranscapos\transpose{#1}\else\musicnote{capo #1}\fi%
+}
+\newcommand\prefersharps{\SB@prefshrpstrue\SB@needkeyfalse}
+\newcommand\preferflats{\SB@prefshrpsfalse\SB@needkeyfalse}
+\newcommand\transposehere[1]{%
+ \ifnum\SB@transposefactor=\z@%
+ \ifSB@convertnotes%
+ \SB@dotranspose{#1}%
+ \the\SB@toks%
+ \else%
+ #1%
+ \fi%
+ \else%
+ \ifSB@convertnotes%
+ {\SB@transposefactor\z@%
+ \SB@dotranspose{#1}%
+ \xdef\SB@tempv{\the\SB@toks}}%
+ \else%
+ \def\SB@tempv{#1}%
+ \fi%
+ \SB@dotranspose{#1}%
+ \expandafter\trchordformat\expandafter{\SB@tempv}{\the\SB@toks}%
+ \fi%
+}
+\newcommand\notrans[1]{%
+ \begingroup%
+ \SB@transposefactor\z@%
+ \transposehere{#1}%
+ \endgroup%
+}
+\newcommand\SB@dotranspose[1]{%
+ \SB@toks{}%
+ \let\SB@dothis\SB@trmain%
+ \SB@trscan#1\SB@trend%
+}
+\newcommand\trchordformat[2]{#2}
+\newcommand\SB@trscan{\futurelet\SB@next\SB@dothis}
+\newcommand\SB@trmain{%
+ \ifx\SB@next\bgroup%
+ \let\SB@donext\SB@trgroup%
+ \else\ifx\SB@next\egroup%
+ \SB@toks\expandafter{\the\SB@toks\egroup}%
+ \let\SB@donext\SB@trskip%
+ \else\ifcat\noexpand\SB@next\@sptoken%
+ \SB@appendsp\SB@toks%
+ \let\SB@donext\SB@trskip%
+ \else%
+ \let\SB@donext\SB@trstep%
+ \fi\fi\fi%
+ \SB@donext%
+}
+\newcommand\SB@trgroup[1]{%
+ \SB@toks\expandafter{\the\SB@toks{#1}}%
+ \SB@trscan%
+}
+\newcommand\SB@trskip{%
+ \afterassignment\SB@trscan%
+ \let\SB@next= }
+\newcommand\SB@trstep[1]{%
+ \let\SB@donext\SB@trscan%
+ \ifcat\noexpand\SB@next A%
+ \ifnum\uccode`#1=`#1%
+ \def\SB@temp{#1}%
+ \let\SB@dothis\SB@trnote%
+ \else%
+ \SB@toks\expandafter{\the\SB@toks#1}%
+ \fi%
+ \else\ifx\SB@next\SB@trend
+ \let\SB@donext\relax%
+ \else%
+ \SB@toks\expandafter{\the\SB@toks#1}%
+ \fi\fi%
+ \SB@donext%
+}
+\newcommand\SB@trnote{%
+ \ifcat\noexpand\SB@next A%
+ \let\SB@donext\SB@trnotestep%
+ \else\ifnum\SB@transposefactor=\z@%
+ \SB@cnt\z@%
+ \let\SB@donext\SB@trtrans%
+ \else\ifx\SB@next\flt%
+ \SB@cnt\m@ne%
+ \let\SB@donext\SB@tracc%
+ \else\ifx\SB@next\shrp%
+ \SB@cnt\@ne%
+ \let\SB@donext\SB@tracc%
+ \else%
+ \SB@cnt\z@%
+ \let\SB@donext\SB@trtrans%
+ \fi\fi\fi\fi%
+ \SB@donext%
+}
+\newcommand\SB@trnotestep[1]{%
+ \ifnum\uccode`#1=`#1%
+ \expandafter\def\expandafter\SB@temp\expandafter{\SB@temp#1}%
+ \expandafter\SB@trscan%
+ \else%
+ \SB@cnt\z@%
+ \expandafter\SB@trtrans\expandafter#1%
+ \fi%
+}
+\newcommand\SB@tracc[1]{\futurelet\SB@next\SB@trtrans}
+\newcommand\SB@trtrans{%
+ \advance\SB@cnt%
+ \ifx\SB@temp\notenameA\z@%
+ \else\ifx\SB@temp\notenameB\tw@%
+ \else\ifx\SB@temp\notenameC\thr@@%
+ \else\ifx\SB@temp\notenameD5 %
+ \else\ifx\SB@temp\notenameE7 %
+ \else\ifx\SB@temp\notenameF8 %
+ \else\ifx\SB@temp\notenameG10 %
+ \else-99 \fi\fi\fi\fi\fi\fi\fi%
+ \ifnum\SB@cnt<\m@ne%
+ \SB@toks\expandafter\expandafter\expandafter{%
+ \expandafter\the\expandafter\SB@toks\SB@temp}%
+ \else%
+ \advance\SB@cnt\SB@transposefactor%
+ \ifnum\SB@cnt<\z@\advance\SB@cnt12 \fi%
+ \ifnum\SB@cnt>11 \advance\SB@cnt-12 \fi%
+ \ifSB@needkey\ifnum\SB@transposefactor=\z@\else\SB@setkeysig\fi\fi%
+ \edef\SB@temp{%
+ \the\SB@toks%
+ \ifSB@prefshrps%
+ \ifcase\SB@cnt\printnoteA\or\printnoteA\noexpand\shrp\or%
+ \printnoteB\or\printnoteC\or\printnoteC\noexpand\shrp\or%
+ \printnoteD\or\printnoteD\noexpand\shrp\or\printnoteE\or%
+ \printnoteF\or\printnoteF\noexpand\shrp\or\printnoteG\or%
+ \printnoteG\noexpand\shrp\fi%
+ \else%
+ \ifcase\SB@cnt\printnoteA\or\printnoteB\noexpand\flt\or%
+ \printnoteB\or\printnoteC\or\printnoteD\noexpand\flt\or%
+ \printnoteD\or\printnoteE\noexpand\flt\or\printnoteE\or%
+ \printnoteF\or\printnoteG\noexpand\flt\or\printnoteG\or%
+ \printnoteA\noexpand\flt\fi%
+ \fi}%
+ \SB@toks\expandafter{\SB@temp}%
+ \fi%
+ \let\SB@dothis\SB@trmain%
+ \SB@trscan%
+}
+\newcommand\SB@setkeysig{%
+ \global\SB@needkeyfalse%
+ \ifcase\SB@cnt%
+ \global\SB@prefshrpstrue\or% A
+ \global\SB@prefshrpsfalse\or% Bb
+ \global\SB@prefshrpstrue\or% B
+ \ifx\SB@next m% C
+ \global\SB@prefshrpsfalse%
+ \else%
+ \global\SB@prefshrpstrue%
+ \fi\or%
+ \global\SB@prefshrpstrue\or% C#
+ \ifx\SB@next m% D
+ \global\SB@prefshrpsfalse%
+ \else%
+ \global\SB@prefshrpstrue%
+ \fi\or%
+ \global\SB@prefshrpsfalse\or% Eb
+ \global\SB@prefshrpstrue\or% E
+ \global\SB@prefshrpsfalse\or% F
+ \global\SB@prefshrpstrue\or% F#
+ \ifx\SB@next m% G
+ \global\SB@prefshrpsfalse%
+ \else%
+ \global\SB@prefshrpstrue%
+ \fi\or%
+ \global\SB@prefshrpsfalse\else% Ab
+ \global\SB@needkeytrue% non-chord
+ \fi%
+}
+\newcommand\SB@trend{%
+ \SB@Error{Internal Error: Transposition failed}%
+ {This error should not occur.}%
+}
+\newcommand\SB@metertop{}
+\newcommand\SB@meterbot{}
+\newcommand\meter[2]{\gdef\SB@metertop{#1}\gdef\SB@meterbot{#2}}
+\newcommand\SB@measuremark{SB@IsMeasure}
+\newcommand\SB@makembar[2]{%
+ \ifSB@inverse\else%
+ \ifSB@inchorus\else\SB@errmbar\fi%
+ \fi%
+ \ifhmode%
+ \SB@skip\lastskip\unskip%
+ \setbox\SB@box\lastbox%
+ \copy\SB@box%
+ \ifvbox\SB@box%
+ \begingroup%
+ \setbox\SB@boxii\copy\SB@box%
+ \vbadness\@M\vfuzz\maxdimen%
+ \setbox\SB@boxii%
+ \vsplit\SB@boxii to\maxdimen%
+ \endgroup%
+ \long\edef\SB@temp{\splitfirstmark}%
+ \ifx\SB@temp\SB@measuremark%
+ \penalty100\hskip1em%
+ \else%
+ \penalty100\hskip\SB@skip%
+ \fi%
+ \else%
+ \penalty100\hskip\SB@skip%
+ \fi%
+ \fi%
+ \ifvmode\leavevmode\fi%
+ \setbox\SB@box\hbox{\tiny\sffamily{#1}}%
+ \setbox\SB@boxii\hbox{\tiny\sffamily{#2}}%
+ \ifdim\wd\SB@box>\wd\SB@boxii%
+ \SB@dimen\wd\SB@box\relax%
+ \else%
+ \SB@dimen\wd\SB@boxii\relax%
+ \fi%
+ \ifdim\SB@dimen<.5\p@%
+ \SB@dimen.5\p@%
+ \fi%
+ \SB@dimenii\baselineskip%
+ \advance\SB@dimenii-2\p@%
+ \advance\SB@dimenii-\ht\SB@box%
+ \advance\SB@dimenii-\dp\SB@box%
+ \advance\SB@dimenii-\ht\SB@boxii%
+ \advance\SB@dimenii-\dp\SB@boxii%
+ \vbox{%
+ \mark{\SB@measuremark}%
+ \hbox to\SB@dimen{%
+ \hfil%
+ \box\SB@box%
+ \hfil%
+ }%
+ \nointerlineskip%
+ \hbox to\SB@dimen{%
+ \hfil%
+ \box\SB@boxii%
+ \hfil%
+ }%
+ \nointerlineskip%
+ \hbox to\SB@dimen{%
+ \hfil%
+ \vrule\@width.5\p@\@height\SB@dimenii%
+ \hfil%
+ }%
+ }%
+ \meter{}{}%
+}
+\newcommand\mbar{\SB@mbar}
+\newcommand\measurebar{%
+ \mbar\SB@metertop\SB@meterbot%
+}
+\newcommand\SB@repcolon{{%
+ \usefont{OT1}{cmss}{m}{n}\selectfont%
+ \ifchorded%
+ \baselineskip.5\SB@dimen%
+ \vbox{\hbox{:}\hbox{:}\kern.5\p@}%
+ \else%
+ \raise.5\p@\hbox{:}%
+ \fi%
+}}
+\newcommand\lrep{%
+ \SB@dimen\baselineskip%
+ \advance\SB@dimen-2\p@%
+ \vrule\@width1.5\p@\@height\SB@dimen\@depth\p@%
+ \kern1.5\p@%
+ \vrule\@width.5\p@\@height\SB@dimen\@depth\p@%
+ \SB@repcolon%
+}
+\newcommand\rrep{%
+ \SB@dimen\baselineskip%
+ \advance\SB@dimen-2\p@%
+ \SB@repcolon%
+ \vrule\@width.5\p@\@height\SB@dimen\@depth\p@%
+ \kern1.5\p@%
+ \vrule\@width1.5\p@\@height\SB@dimen\@depth\p@%
+}
+\newif\ifSB@wordends
+\newif\ifSB@brokenword
+\SB@newtoks\SB@lyric
+\SB@newcount\SB@numhyps
+\SB@newtoks\SB@lyricnohyp
+\SB@newbox\SB@lyricbox
+\SB@newbox\SB@chordbox
+\newcommand\SB@chbstok{}
+\newcommand\SB@setchord{}
+{
+ \catcode`^\active
+ \catcode`!7
+ \gdef\SB@setchord#1{%
+ \SB@gettabindtrue\SB@nohattrue%
+ \setbox\SB@chordbox\hbox{%
+ \unhbox\SB@chordbox%
+ \begingroup%
+ \ifSB@trackch%
+ \def\SB@activehat{\ifmmode!\else\global\SB@nohatfalse\fi}%
+ \else%
+ \def\SB@activehat{%
+ \ifmmode!\else\SB@lop\SB@ctail\SB@toks\the\SB@toks\fi%
+ }%
+ \fi%
+ \let^\SB@activehat%
+ \printchord{%
+ \ifSB@firstchord\else\kern.15em\fi%
+ \vphantom/%
+ \transposehere{#1}%
+ \kern.2em%
+ }%
+ \endgroup%
+ }%
+ \SB@gettabindfalse%
+ \ifSB@trackch\ifSB@nohat%
+ \global\SB@creg\expandafter{\the\SB@creg#1\\}%
+ \fi\fi%
+ \let\SB@noreplay\@firstofone%
+ }
+}
+\newcommand\SB@outertest{%
+ \expandafter\SB@otesta\meaning\SB@next:\SB@otesta%
+}
+\newcommand\SB@otesta{}
+\edef\SB@otesta#1:#2\SB@otesta{%
+ \noexpand\SB@otestb%
+ #1\string\outer%
+ \noexpand\SB@otestb%
+}
+\newcommand\SB@otestb{}
+\expandafter\def\expandafter\SB@otestb%
+\expandafter#\expandafter1\string\outer#2\SB@otestb{%
+ \def\SB@temp{#2}%
+ \ifx\SB@temp\@empty\SB@testfalse\else\SB@testtrue\fi%
+}
+\newcommand\SB@UTFtest{}
+\edef\SB@UTFtest#1{%
+ \noexpand\expandafter%
+ \noexpand\SB@@UTFtest%
+ \noexpand\meaning#1%
+ \string\UTFviii@zero@octets%
+ \noexpand\SB@@UTFtest%
+}
+\newcommand\SB@U@two{\global\SB@cnt\tw@}
+\newcommand\SB@U@three{\global\SB@cnt\thr@@}
+\newcommand\SB@U@four{\global\SB@cnt4\relax}
+\newcommand\SB@@UTFtest{}
+{\escapechar\m@ne
+ \xdef\SB@temp{\string\@octets}}
+\edef\SB@temp{##1\string\UTFviii@##2\SB@temp}
+\expandafter\def\expandafter\SB@@UTFtest\SB@temp#3\SB@@UTFtest{%
+ \SB@cnt\z@%
+ {\csname SB@U@#2\endcsname}%
+}
+\newcommand\SB@declare[3]{%
+ \afterassignment\iffalse\let\SB@next= #3\relax\fi%
+ \SB@UTFtest\SB@next%
+ \ifcase\SB@cnt%
+ \ifcat\noexpand#3\relax%
+ \SB@addNtest\SB@macrotests#1#2#3%
+ \else\ifcat\noexpand#3.%
+ \SB@addDtest\SB@othertests#1#2%
+ \else\ifcat\noexpand#3A%
+ \SB@addDtest\SB@lettertests#1#2%
+ \else%
+ \SB@addDtest\relax0#2%
+ \fi\fi\fi%
+ \or%
+ \SB@addNtest\SB@macrotests#1#2#3%
+ \else%
+ \SB@addMtest\SB@multitests#1#2#3\relax\relax\relax%
+ \fi%
+}
+\newcommand\DeclareLyricChar{\SB@declare\SB@testtrue0}
+\newcommand\DeclareNonLyric{%
+ \SB@declare\SB@testfalse\SB@testfalse%
+}
+\newcommand\DeclareNoHyphen{%
+ \SB@declare\SB@testfalse\SB@testtrue%
+}
+\newcommand\SB@lettertests{}
+\newcommand\SB@macrotests{}
+\newcommand\SB@multitests{}
+\newcommand\SB@othertests{}
+\newcommand\SB@addDtest[3]{%
+ \ifx0#2\else%
+ \def#1{{\csname SB@!\meaning\SB@next\endcsname}}%
+ \expandafter\def\csname SB@!\meaning\SB@next\endcsname{\global#2}%
+ \fi%
+ \ifx0#3\else%
+ \expandafter\def\csname SB@HT@\meaning\SB@next\endcsname{\global#3}%
+ \fi%
+}
+\newcommand\SB@addNtest[4]{%
+ \ifx0#2\else%
+ \def#1{{\csname SB@!\SB@nextname\endcsname}}%
+ \expandafter\def\csname SB@!\string#4\endcsname{\global#2}%
+ \fi%
+ \ifx0#3\else%
+ \expandafter\def\csname SB@HT@\string#4\endcsname{\global#3}%
+ \fi%
+}
+\newcommand\SB@addMtest[7]{%
+ \edef\SB@temp{%
+ \string#4%
+ \ifx\relax#5\else\string#5\fi%
+ \ifx\relax#6\else\string#6\fi%
+ \ifx\relax#7\else\string#7\fi%
+ }%
+ \ifx0#2\else%
+ \def#1{{\csname SB@!\SB@nextname\endcsname}}%
+ \expandafter\def\csname SB@!\SB@temp\endcsname{\global#2}%
+ \fi%
+ \ifx0#3\else%
+ \expandafter\def\csname SB@HT@\SB@temp\endcsname{\global#3}%
+ \fi%
+}
+\DeclareLyricChar\`
+\DeclareLyricChar\'
+\DeclareLyricChar\^
+\DeclareLyricChar\"
+\DeclareLyricChar\~
+\DeclareLyricChar\=
+\DeclareLyricChar\.
+\DeclareLyricChar\u
+\DeclareLyricChar\v
+\DeclareLyricChar\H
+\DeclareLyricChar\t
+\DeclareLyricChar\c
+\DeclareLyricChar\d
+\DeclareLyricChar\b
+\DeclareLyricChar\oe
+\DeclareLyricChar\OE
+\DeclareLyricChar\ae
+\DeclareLyricChar\AE
+\DeclareLyricChar\aa
+\DeclareLyricChar\AA
+\DeclareLyricChar\o
+\DeclareLyricChar\O
+\DeclareLyricChar\l
+\DeclareLyricChar\L
+\DeclareLyricChar\ss
+\DeclareLyricChar\i
+\DeclareLyricChar\j
+\DeclareLyricChar\/
+\DeclareLyricChar\-
+\DeclareLyricChar\discretionary
+\DeclareNoHyphen\par
+\newcommand\SB@bracket{}
+\newcommand\SB@chord{\SB@begincname\SB@@chord}
+\newcommand\SB@begincname{}
+{\catcode`\^^M\active
+ \gdef\SB@begincname{%
+ \begingroup%
+ \catcode`##\active\catcode`&\active%
+ \catcode`:12\relax%
+ \catcode`\^^M\active\SB@outer\def^^M{}%
+ \SB@outer\def\[{}%
+ \chordlocals\relax%
+ }
+}
+\newcommand\SB@endcname{}
+\let\SB@endcname\endgroup
+\newcommand\SB@nbsp{}
+\def\SB@nbsp{\nobreakspace{}}
+\newif\ifSB@firstchord\SB@firstchordtrue
+\newcommand*\SB@@chord{}
+\def\SB@@chord#1]{%
+ \SB@endcname%
+ \ifSB@firstchord%
+ \setbox\SB@lyricbox\hbox{\kern\SB@tabindent}%
+ \global\SB@tabindent\z@%
+ \SB@lyric{}%
+ \SB@numhyps\z@%
+ \SB@spcinit%
+ \setbox\SB@chordbox\box\voidb@x%
+ \fi%
+ \SB@setchord{#1}%
+ \SB@firstchordfalse%
+ \let\SB@dothis\SB@chstart%
+ \SB@chscan%
+}
+\newcommand\SB@spcinit{}
+\newcommand\MultiwordChords{%
+ \def\SB@spcinit{%
+ \let\SB@chdone\SB@chlyrdone%
+ \let\SB@chimpspace\SB@chnxtdone%
+ \let\SB@chexpspace\SB@chnxtdone%
+ \let\SB@chespace\SB@chendspace%
+ }%
+}
+\newcommand\SB@chscan{%
+ \let\SB@nextname\relax%
+ \futurelet\SB@next\SB@chmain%
+}
+\newcommand\SB@chmain{\SB@dothis\SB@donext}
+\newcommand\SB@chnxtrelax{\let\SB@donext\relax}
+\newcommand\SB@chnxtstep{\let\SB@donext\SB@chstep}
+\newcommand\SB@chnxtdone{\let\SB@donext\SB@chdone}
+\newcommand\SB@chstart{%
+ \ifx\SB@next\[\SB@chnxtrelax%
+ \else\ifx\SB@next\SB@activehat\SB@chnxtrelax%
+ \else\ifx\SB@next\ch\SB@chnxtrelax%
+ \else\ifx\SB@next\mch\SB@chnxtrelax%
+ \else\ifx\SB@next`\SB@chnxtstep%
+ \else\ifx\SB@next'\SB@chnxtstep%
+ \else\ifx\SB@next"\SB@chnxtstep%
+ \else%
+ \the\SB@lyric%
+ \SB@lyric{}%
+ \SB@firstchordtrue%
+ \let\SB@dothis\SB@chnorm%
+ \SB@chnorm%
+ \fi\fi\fi\fi\fi\fi\fi%
+}
+\newcommand\SB@chnorm{%
+ \ifcat\noexpand\SB@next A%
+ \SB@testtrue\SB@lettertests%
+ \ifSB@test%
+ \SB@chespace\SB@chnxtstep%
+ \else%
+ \SB@chnxtdone%
+ \fi%
+ \else%
+ \SB@chtrymacro%
+ \fi%
+}
+\newcommand\SB@chtrymacro{%
+ \ifcat\noexpand\SB@next\relax%
+ \SB@chmacro%
+ \else%
+ \SB@chother%
+ \fi%
+}
+\newcommand\SB@chother{%
+ \ifcat\noexpand\SB@next\@sptoken%
+ \SB@chexpspace%
+ \else\ifcat\noexpand\SB@next\bgroup%
+ \SB@chespace\let\SB@donext\SB@chbgroup%
+ \else\ifcat\noexpand\SB@next\egroup%
+ \SB@chespace\let\SB@donext\SB@chegroup%
+ \else\ifx\SB@next-%
+ \SB@numhyps\@ne\relax%
+ \SB@lyricnohyp\expandafter{\the\SB@lyric}%
+ \let\SB@dothis\SB@chhyph%
+ \SB@chespace\SB@chnxtstep%
+ \else\ifcat\noexpand\SB@next.%
+ \SB@testtrue\SB@othertests%
+ \ifSB@test%
+ \SB@chespace\SB@chnxtstep%
+ \else%
+ \SB@chnxtdone%
+ \fi%
+ \else%
+ \SB@chespace\SB@chnxtstep%
+ \fi\fi\fi\fi\fi%
+}
+\newcommand\SB@chmacro{%
+ \SB@outertest%
+ \ifSB@test%
+ \SB@chnxtdone%
+ \else%
+ \let\SB@donext\SB@chgetname%
+ \fi%
+}
+\newcommand\SB@chgetname[1]{%
+ \edef\SB@nextname{\string#1}%
+ \SB@@chmacro\SB@donext#1%
+}
+\newcommand\SB@@chmacro{%
+ \ifx\SB@next\SB@activehat%
+ \SB@chnxtdone%
+ \else\ifx\SB@next\SB@par%
+ \SB@chnxtdone%
+ \else\ifx\SB@next\measurebar%
+ \SB@chmbar%
+ \else\ifx\SB@next\mbar%
+ \SB@chmbar%
+ \else\ifx\SB@next\ch%
+ \SB@chespace\let\SB@donext\SB@chlig%
+ \else\ifx\SB@next\mch%
+ \SB@chespace\let\SB@donext\SB@mchlig%
+ \else\ifx\SB@next\ %
+ \SB@chimpspace%
+ \else\ifx\SB@next\SB@nbsp%
+ \SB@chimpspace%
+ \else%
+ \SB@UTFtest\SB@next%
+ \ifcase\SB@cnt\SB@chothermac%
+ \or\or\SB@chespace\let\SB@donext\SB@chsteptwo%
+ \or\SB@chespace\let\SB@donext\SB@chstepthree%
+ \or\SB@chespace\let\SB@donext\SB@chstepfour\fi%
+ \fi\fi\fi\fi\fi\fi\fi\fi%
+}
+\newcommand\SB@chothermac{%
+ \SB@testfalse%
+ \afterassignment\iffalse%
+ \SB@cnt\expandafter`\SB@nextname x\fi%
+ \ifnum\the\catcode\SB@cnt=\z@\else\SB@testtrue\fi%
+ \SB@macrotests%
+ \ifSB@test%
+ \SB@chespace\SB@chnxtstep%
+ \else%
+ \SB@chnxtdone%
+ \fi%
+}
+\newcommand\SB@chstep[1]{%
+ \SB@lyric\expandafter{\the\SB@lyric#1}%
+ \SB@chscan%
+}
+\newcommand\SB@chsteptwo[2]{\SB@chmulti{#1#2}{\string#1\string#2}}
+\newcommand\SB@chstepthree[3]{%
+ \SB@chmulti{#1#2#3}{\string#1\string#2\string#3}%
+}
+\newcommand\SB@chstepfour[4]{%
+ \SB@chmulti{#1#2#3#4}{\string#1\string#2\string#3\string#4}%
+}
+\newcommand\SB@chmulti[2]{%
+ \def\SB@next{#1}%
+ \edef\SB@nextname{#2}%
+ \SB@testtrue\SB@multitests%
+ \ifSB@test%
+ \SB@lyric\expandafter{\the\SB@lyric#1}%
+ \expandafter\SB@chscan%
+ \else%
+ \expandafter\SB@chmstop%
+ \fi%
+}
+\newcommand\SB@chmstop{\expandafter\SB@chdone\SB@next}
+\newcommand\SB@chhyph{%
+ \ifx\SB@next-%
+ \advance\SB@numhyps\@ne\relax%
+ \SB@chnxtstep%
+ \else%
+ \SB@chnxtdone%
+ \fi%
+}
+\newcommand\SB@chimpspace{}
+\let\SB@chimpspace\SB@chnxtdone
+\newcommand\SB@chexpspace{}
+\let\SB@chexpspace\SB@chnxtdone
+\newcommand\SB@chespace{}
+\newcommand\SB@chendspace{%
+ \let\SB@chdone\SB@chlyrdone%
+ \def\SB@chexpspace{\SB@chbspace\SB@chexpspace}%
+ \def\SB@chimpspace{\SB@chbspace\SB@chimpspace}%
+ \def\SB@chespace{}%
+}
+\newcommand\SB@chbspace{%
+ \setbox\SB@lyricbox\hbox{%
+ \unhbox\SB@lyricbox%
+ \the\SB@lyric%
+ }%
+ \SB@lyric{}%
+ \ifdim\wd\SB@lyricbox<\wd\SB@chordbox%
+ \let\SB@chbstok= \SB@next%
+ \def\SB@chexpspace{\let\SB@donext\SB@chgetspace}%
+ \let\SB@chimpspace\SB@chnxtstep%
+ \let\SB@chespace\SB@chendspace%
+ \let\SB@chdone\SB@chspcdone%
+ \else%
+ \let\SB@chimpspace\SB@chnxtdone%
+ \let\SB@chexpspace\SB@chnxtdone%
+ \fi%
+}
+\newcommand\SB@chgetspace{%
+ \SB@appendsp\SB@lyric%
+ \let\SB@nextname\relax%
+ \afterassignment\SB@chscan%
+ \let\SB@next= }
+\newcommand\SB@chmbar{%
+ \ifmeasures%
+ \SB@chnxtdone%
+ \else%
+ \SB@chespace\SB@chnxtstep%
+ \fi%
+}
+\newcommand\SB@chbgroup[1]{%
+ \SB@lyric\expandafter{\the\SB@lyric{#1}}%
+ \SB@chscan%
+}
+\newcommand\SB@chegroup{%
+ \let\SB@nextname\relax%
+ \afterassignment\SB@chegrpscan%
+ \let\SB@next= }
+\newcommand\SB@chegrpscan{%
+ \futurelet\SB@next\SB@chegrpmacro%
+}
+\newcommand\SB@chegrpmacro{%
+ \ifcat\noexpand\SB@next\relax%
+ \expandafter\SB@chegrpouter%
+ \else%
+ \expandafter\SB@chegrpdone%
+ \fi%
+}
+\newcommand\SB@chegrpouter{%
+ \SB@outertest%
+ \ifSB@test%
+ \expandafter\SB@chegrpdone%
+ \else%
+ \expandafter\SB@chegrpname%
+ \fi%
+}
+\newcommand\SB@chegrpname[1]{%
+ \edef\SB@nextname{\string#1}%
+ \SB@chegrpdone#1%
+}
+\newcommand\SB@chegrpdone{\SB@chdone\egroup}
+\newcommand\SB@chlig[5]{%
+ \gdef\SB@ligpre{{#3}}%
+ \gdef\SB@ligpost{\[#2]{#4}}%
+ \gdef\SB@ligfull{\[\SB@noreplay{\hphantom{{\lyricfont#3}}}#2]{#5}}%
+ \SB@chdone%
+}
+\newcommand\SB@mchlig[5]{%
+ \SB@lyric\expandafter{\the\SB@lyric#3}%
+ \let\SB@next\measurebar%
+ \edef\SB@nextname{\string\measurebar}%
+ \gdef\SB@ligpost{\measurebar\[#2]{#4}}%
+ \gdef\SB@ligfull{\measurebar\[#2]{#4}}%
+ \SB@chdone%
+}
+\newcommand\SB@chlyrdone{%
+ \setbox\SB@lyricbox\hbox{%
+ \unhbox\SB@lyricbox%
+ \ifnum\SB@numhyps=\@ne%
+ \the\SB@lyricnohyp%
+ \else%
+ \the\SB@lyric%
+ \fi%
+ }%
+ \SB@emitchord%
+}
+\newcommand\SB@chspcdone{%
+ \let\SB@nextname\relax%
+ \let\SB@next= \SB@chbstok%
+ \expandafter\SB@emitchord\the\SB@lyric%
+}
+\newcommand\SB@chdone{}
+\let\SB@chdone\SB@chlyrdone
+\newcommand\SB@ligpre{}
+\newcommand\SB@ligpost{}
+\newcommand\SB@ligfull{}
+\newcommand\SB@clearlig{%
+ \gdef\SB@ligpre{}%
+ \gdef\SB@ligpost{}%
+ \gdef\SB@ligfull{}%
+}
+\newcommand\SB@emitchord{%
+ \ifSB@inverse\else\ifSB@inchorus\else\SB@errchord\fi\fi%
+ \SB@testfalse%
+ \ifcat\noexpand\SB@next\@sptoken\SB@testtrue\fi%
+ \ifcat\noexpand\SB@next.\SB@testtrue\fi%
+ \ifx\SB@next\SB@par\SB@testtrue\fi%
+ \ifx\SB@next\egroup\SB@testtrue\fi%
+ \ifx\SB@next\endgroup\SB@testtrue\fi%
+ {\csname%
+ SB@HT@\ifx\SB@nextname\relax\meaning\SB@next\else\SB@nextname\fi%
+ \endcsname}%
+ \ifSB@test\SB@wordendstrue\else\SB@wordendsfalse\fi%
+ \SB@dimen\wd\SB@chordbox%
+ \ifvmode\leavevmode\fi%
+ \SB@brokenwordfalse%
+ \ifdim\wd\SB@lyricbox>\z@%
+ \ifdim\SB@dimen>\wd\SB@lyricbox%
+ \ifSB@wordends\else\SB@brokenwordtrue\fi%
+ \fi%
+ \else%
+ \SB@skip\lastskip%
+ \unskip\penalty200\hskip\SB@skip%
+ \fi%
+ \ifnum\SB@numhyps>\z@%
+ \ifnum\SB@numhyps>\@ne%
+ \SB@brokenwordfalse%
+ \else%
+ \SB@brokenwordtrue%
+ \fi%
+ \fi%
+ \SB@testfalse%
+ \ifnolyrics\ifdim\wd\SB@lyricbox=\z@\SB@testtrue\fi\fi%
+ \ifSB@test%
+ \unhbox\SB@chordbox%
+ \gdef\SB@temp{\expandafter\SB@clearlig\SB@ligfull}%
+ \else%
+ \vbox{\clineparams\relax%
+ \ifSB@brokenword%
+ \global\setbox\SB@lyricbox\hbox{%
+ \unhbox\SB@lyricbox%
+ \SB@ligpre%
+ }%
+ \SB@maxmin\SB@dimen<{\wd\SB@lyricbox}%
+ \advance\SB@dimen.5em%
+ \hbox to\SB@dimen{\unhbox\SB@chordbox\hfil}%
+ \hbox to\SB@dimen{%
+ \unhcopy\SB@lyricbox\hfil\char\hyphenchar\font\hfil%
+ }%
+ \global\SB@cnt\@m%
+ \gdef\SB@temp{\expandafter\SB@clearlig\SB@ligpost}%
+ \else%
+ \box\SB@chordbox%
+ \hbox{%
+ \unhcopy\SB@lyricbox%
+ \global\SB@cnt\spacefactor%
+ \hfil%
+ }%
+ \gdef\SB@temp{\expandafter\SB@clearlig\SB@ligfull}%
+ \fi%
+ }%
+ \ifSB@wordends%
+ \ifdim\wd\SB@lyricbox>\z@\else\nobreak\fi%
+ \else%
+ \penalty%
+ \ifnum\SB@numhyps>\z@\exhyphenpenalty%
+ \else\ifSB@brokenword\hyphenpenalty%
+ \else\@M\fi\fi%
+ \spacefactor\SB@cnt%
+ \fi%
+ \fi%
+ \SB@temp%
+}
+\newcommand\SB@accidental[1]{{%
+ \/%
+ \m@th#1%
+ \SB@dimen-\fontdimen\@ne\font%
+ \advance\SB@dimen.088142\p@%
+ \ifdim\SB@dimen<\z@%
+ \kern\f@size\SB@dimen%
+ \fi%
+}}
+\newcommand\sharpsymbol{\ensuremath{^\#}}
+\newcommand\flatsymbol{\raise.5ex\hbox{{\SB@flatsize$\flat$}}}
+\newcommand\shrp{\SB@accidental\sharpsymbol}
+\newcommand\flt{\SB@accidental\flatsymbol}
+\newcommand\DeclareFlatSize[2]{%
+ \expandafter\xdef\csname SB@flatsize@#1\endcsname{#2}%
+}
+\DeclareFlatSize\@vpt\@vpt
+\DeclareFlatSize\@vipt\@vipt
+\DeclareFlatSize\@viipt\@vipt
+\DeclareFlatSize\@viiipt\@viipt
+\DeclareFlatSize\@ixpt\@viiipt
+\DeclareFlatSize\@xpt\@ixpt
+\DeclareFlatSize\@xipt\@xpt
+\DeclareFlatSize\@xiipt\@xipt
+\DeclareFlatSize\@xivpt\@xiipt
+\DeclareFlatSize\@xviipt\@xivpt
+\DeclareFlatSize\@xxpt\@xviipt
+\DeclareFlatSize\@xxvpt\@xxpt
+\newcommand\SB@flatsize{%
+ \@ifundefined{SB@flatsize@\f@size}{}{%
+ \expandafter\fontsize%
+ \csname SB@flatsize@\f@size\endcsname\f@baselineskip%
+ \selectfont%
+ }%
+}
+\newcommand\ch{\SB@ch}
+\newcommand\SB@ch{}
+\newcommand\SB@ch@on{\SB@begincname\SB@@ch}
+\newcommand*\SB@@ch[1]{\SB@endcname\SB@@@ch{#1}}
+\newcommand*\SB@@@ch[4]{\[\SB@noreplay{\hphantom{#2}}#1]#4}
+\newcommand*\SB@ch@off[4]{#4}
+\newcommand\mch{\SB@mch}
+\newcommand\SB@mch{}
+\newcommand*\SB@mch@m[4]{#2\measurebar#3}
+\newcommand\SB@mch@on{\SB@begincname\SB@@mch}
+\newcommand*\SB@@mch[1]{\SB@endcname\SB@@@mch{#1}}
+\newcommand*\SB@@@mch[4]{#2\measurebar\[#1]#3}
+\newcommand\SB@activehat{%
+ \ifmmode^\else\expandafter\SB@rechord\fi%
+}
+\newcommand\SB@loadactives{}
+{
+ \catcode`&\active
+ \catcode`#\active
+ \catcode`|\active
+ \catcode`^\active
+ \global\let&\flt
+ \global\let#\shrp
+ \global\let|\measurebar
+ \global\let^\SB@activehat
+ \gdef\SB@loadactives{%
+ \catcode`^\ifchorded\active\else9 \fi%
+ \catcode`|\ifmeasures\active\else9 \fi%
+ \def\[{\SB@bracket}%
+ }
+}
+\newif\ifSB@trackch
+\SB@newtoks\SB@cr@
+\SB@newtoks\SB@ctail
+\newcommand\SB@creg{}
+\newcommand\newchords[1]{%
+ \@ifundefined{SB@cr@#1}{%
+ \expandafter\SB@newtoks\csname SB@cr@#1\endcsname%
+ \global\csname SB@cr@#1\endcsname{\\}%
+ }{\SB@errdup{#1}}%
+}
+\newcommand\memorize{%
+ \@ifnextchar[\SB@memorize{\SB@memorize[]}%
+}
+\newcommand\SB@memorize{}
+\def\SB@memorize[#1]{%
+ \@ifundefined{SB@cr@#1}{\SB@errreg{#1}}{%
+ \SB@trackchtrue%
+ \global\expandafter\let\expandafter\SB@creg%
+ \csname SB@cr@#1\endcsname%
+ \global\SB@creg{\\}%
+ }%
+}
+\newcommand\replay{\@ifnextchar[\SB@replay\SB@@replay}
+\newcommand\SB@replay{}
+\def\SB@replay[#1]{%
+ \@ifundefined{SB@cr@#1}{\SB@errreg{#1}}{%
+ \SB@trackchfalse%
+ \global\expandafter\let\expandafter\SB@creg%
+ \csname SB@cr@#1\endcsname%
+ \global\SB@ctail\SB@creg%
+ }%
+}
+\newcommand\SB@@replay{%
+ \SB@trackchfalse%
+ \global\SB@ctail\SB@creg%
+}
+\newcommand\SB@rechord{}
+\newcommand\SB@@rechord{%
+ \SB@ifempty\SB@ctail{%
+ \SB@errreplay%
+ \SB@toks{}%
+ \let\SB@donext\@gobble%
+ }{%
+ \SB@lop\SB@ctail\SB@toks%
+ \let\SB@donext\SB@chord%
+ \let\SB@noreplay\@gobble%
+ }%
+ \expandafter\SB@donext\the\SB@toks]%
+}
+\newif\ifSB@nohat
+\newcommand\SB@noreplay{}
+\let\SB@noreplay\@firstofone
+\newlength\SB@fretwidth
+\setlength\SB@fretwidth{6\p@}
+\newcommand\SB@fretnum[1]{{%
+ \sffamily\fontsize\@xpt\@xpt\selectfont#1%
+}}
+\newcommand\SB@onfret[1]{%
+ \rlap{\hbox to\SB@fretwidth{\hfil\vrule\@height6\p@\hfil}}%
+ \hbox to\SB@fretwidth{\hfil#1\hfil}%
+}
+\newcommand\SB@atopfret[1]{%
+ \hbox to\SB@fretwidth{\hfil#1\hfil}%
+}
+\newcommand\SB@fretbar{%
+ \nointerlineskip%
+ \hbox to\SB@dimen{%
+ \advance\SB@dimen-\SB@fretwidth%
+ \advance\SB@dimen.4\p@%
+ \hfil%
+ \vrule\@width\SB@dimen\@height.4\p@\@depth\z@%
+ \hfil%
+ }%
+ \nointerlineskip%
+}
+\newcommand\SB@topempty{\SB@atopfret\relax}
+\newcommand\SB@topX{\SB@atopfret{%
+ \hbox{%
+ \kern-.2\p@%
+ \fontencoding{OMS}\fontfamily{cmsy}%
+ \fontseries{m}\fontshape{n}%
+ \fontsize\@viipt\@viipt\selectfont\char\tw@%
+ \kern-.2\p@%
+ }%
+}}
+\newcommand\SB@topO{\SB@atopfret{%
+ \vrule\@width\z@\@height4.3333\p@\@depth.8333\p@%
+ \lower.74\p@\hbox{%
+ \fontencoding{OMS}\fontfamily{cmsy}%
+ \fontseries{m}\fontshape{n}%
+ \fontsize\@xpt\@xpt\selectfont\char14%
+ }%
+}}
+\newcommand\SB@fretempty{\SB@onfret\relax}
+\newcommand\SB@frethit{\SB@onfret{%
+ \hbox{%
+ \fontencoding{OMS}\fontfamily{cmsy}%
+ \fontseries{m}\fontshape{n}%
+ \fontsize\@xiipt\@xiipt\selectfont\char15%
+ }%
+}}
+\newcommand\SB@finger[1]{%
+ \SB@atopfret{\sffamily\fontsize\@vipt\@vipt\selectfont#1}%
+}
+\newif\ifSB@gettabind\SB@gettabindfalse
+\SB@newdimen\SB@tabindent
+\newcommand\SB@targfret{}
+\newcommand\SB@targstr{}
+\newcommand\SB@targfing{}
+\newcommand\SB@csify[2]{%
+ \SB@toks{}%
+ \SB@cnt\z@%
+ \SB@@csify#2\SB@@csify%
+ \edef#1{\the\SB@toks}%
+}
+\newcommand\SB@@csify[1]{%
+ \ifx#1\SB@@csify\else%
+ \advance\SB@cnt\@ne%
+ \SB@toks\expandafter{\the\SB@toks\csname#1\endcsname}%
+ \expandafter\SB@@csify%
+ \fi%
+}
+\newcommand\SB@gttop{%
+ \let\X\SB@topX\let\0\SB@topO\let\O\0\let\1\SB@topempty%
+ \let\2\1\let\3\1\let\4\1\let\5\1%
+ \let\6\1\let\7\1\let\8\1\let\9\1%
+}
+\newcommand\SB@gtinit{%
+ \let\X\SB@fretempty\let\0\X\let\O\X\let\1\SB@frethit%
+ \let\2\X\let\3\X\let\4\X\let\5\X%
+ \let\6\X\let\7\X\let\8\X\let\9\X%
+}
+\newcommand\SB@gtinc{%
+ \let\9\8\let\8\7\let\7\6\let\6\5\let\5\4%
+ \let\4\3\let\3\2\let\2\1\let\1\0%
+}
+\newcommand\SB@gtset[2]{%
+ \let\X#1\let\0\X\let\O\X%
+ \def\1{#21}\def\2{#22}\def\3{#23}%
+ \def\4{#24}\def\5{#25}\def\6{#26}%
+ \def\7{#27}\def\8{#28}\def\9{#29}%
+}
+\newcommand\SB@gtmax[1]{\ifnum\SB@cnt<#1\SB@cnt#1\fi}
+\newcommand\gtab{\SB@begincname\SB@gtab}
+\newcommand*\SB@gtab[1]{%
+ \SB@endcname%
+ \begingroup%
+ \catcode`:12\relax%
+ \SB@@gtab{#1}%
+}
+\newcommand*\SB@@gtab[2]{%
+ \endgroup%
+ \ifnum\SB@transposefactor=\z@%
+ \SB@@@gtab{#1}{#2}%
+ \else%
+ \begingroup%
+ \let\gtab\SB@@@gtab%
+ \gtabtrans{#1}{#2}%
+ \endgroup%
+ \fi%
+}
+\newcommand\gtabtrans[2]{\transposehere{#1}}
+\newcommand\SB@@@gtab[2]{%
+ \let\SB@targfret\@empty%
+ \let\SB@targstr\@empty%
+ \let\SB@targfing\@empty%
+ \SB@tabargs#2:::\SB@tabargs%
+ \ifx\SB@targstr\@empty%
+ \def\SB@targstr{\0\0\0\0\0\0}%
+ \fi%
+ \ifvmode\leavevmode\fi%
+ \vbox{%
+ \normalfont\normalsize%
+ \setbox\SB@box\hbox{%
+ \thinspace{\printchord{\transposehere{#1}\strut}}\thinspace%
+ }%
+ \setbox\SB@boxii\hbox{\SB@fretnum{\SB@targfret}}%
+ \setbox\SB@boxiii\hbox{{\SB@gttop\SB@targstr}}%
+ \hsize\wd\SB@box%
+ \ifSB@gettabind%
+ \global\SB@tabindent\wd\SB@boxii%
+ \global\advance\SB@tabindent.5\SB@fretwidth%
+ \global\advance\SB@tabindent-.5\p@%
+ \fi%
+ \SB@dimen\wd\SB@boxii%
+ \advance\SB@dimen\wd\SB@boxiii%
+ \ifdim\hsize<\SB@dimen%
+ \hsize\SB@dimen%
+ \else\ifSB@gettabind%
+ \SB@dimenii\hsize%
+ \advance\SB@dimenii-\SB@dimen%
+ \divide\SB@dimenii\tw@%
+ \global\advance\SB@tabindent\SB@dimenii%
+ \fi\fi%
+ \hbox to\hsize{\hfil\unhbox\SB@box\hfil}%
+ \kern-\p@\nointerlineskip%
+ \hbox to\hsize{%
+ \hfil%
+ \vtop{\kern\p@\kern2\p@\box\SB@boxii}%
+ \vtop{%
+ \SB@dimen\wd\SB@boxiii%
+ \box\SB@boxiii%
+ \SB@cnt\minfrets%
+ \SB@gtset\relax\SB@gtmax\SB@targstr%
+ \SB@gtinit%
+ \loop%
+ \SB@fretbar\hbox{\SB@targstr}%
+ \advance\SB@cnt\m@ne%
+ \ifnum\SB@cnt>\z@\SB@gtinc\repeat%
+ \SB@fretbar%
+ \ifx\SB@targsfing\@empty\else%
+ \kern1.5\p@%
+ \SB@gtset\SB@topempty\SB@finger%
+ \hbox{\SB@targfing}%
+ \fi%
+ }%
+ \hfil%
+ }%
+ \kern3\p@%
+ }%
+ \SB@gettabindfalse%
+}
+\newcommand\SB@ctoken{} \def\SB@ctoken{:}
+\newcommand\SB@tabargs{}
+\def\SB@tabargs#1:#2:#3:#4\SB@tabargs{%
+ \def\SB@temp{#4}%
+ \ifx\SB@temp\@empty%
+ \SB@csify\SB@targstr{#1}%
+ \else\ifx\SB@temp\SB@ctoken%
+ \SB@csify\SB@targstr{#1}%
+ \ifnum\SB@cnt>\@ne%
+ \SB@cntii\SB@cnt%
+ \SB@csify\SB@targfing{#2}%
+ \SB@cnt\SB@cntii%
+ \else%
+ \def\SB@targfret{#1}%
+ \SB@csify\SB@targstr{#2}%
+ \fi%
+ \else%
+ \def\SB@targfret{#1}%
+ \SB@csify\SB@targfing{#3}%
+ \SB@csify\SB@targstr{#2}%
+ \fi\fi%
+}
+\newcommand\songchapter{%
+ \let\SB@temp\@seccntformat%
+ \def\@seccntformat##1{}%
+ \@startsection{chapter}{0}{\z@}%
+ {3.5ex\@plus1ex\@minus.2ex}%
+ {.4ex\let\@seccntformat\SB@temp}%
+ {\sffamily\bfseries\LARGE\centering}%
+}
+\newcommand\songsection{%
+ \let\SB@temp\@seccntformat%
+ \def\@seccntformat##1{}%
+ \@startsection{section}{1}{\z@}%
+ {3.5ex\@plus1ex\@minus.2ex}%
+ {.4ex\let\@seccntformat\SB@temp}%
+ {\sffamily\bfseries\LARGE\centering}%
+}
+\newenvironment{songs}[1]{%
+ \ifSB@songsenv\SB@errnse\fi%
+ \gdef\SB@indexlist{#1}%
+ \SB@chkidxlst%
+ \stepcounter{SB@songsnum}%
+ \setcounter{songnum}{1}%
+ \let\SB@sgroup\@empty%
+ \ifinner\else\ifdim\pagetotal>\z@%
+ \null\nointerlineskip%
+ \fi\fi%
+ \songcolumns\SB@numcols%
+ \SB@songsenvtrue%
+}{%
+ \commitsongs%
+ \global\let\SB@indexlist\@empty%
+ \ifinner\else\clearpage\fi%
+ \SB@songsenvfalse%
+}
+\newcounter{SB@songsnum}
+\newcommand\songtarget[2]{%
+ \ifnum\@ne=0\ifSB@pdf\ifx\pdfbookmark\undefined\else%
+ \ifx\pdfbookmark\relax\else1\fi\fi\fi\relax%
+ \pdfbookmark[#1]{\thesongnum. \songtitle}{#2}%
+ \else\ifx\hypertarget\undefined%
+ \else\ifx\hypertarget\relax\else%
+ \hypertarget{#2}{\relax}%
+ \fi\fi\fi%
+}
+\newcommand\songlink{%
+ \ifnum\@ne=0\ifx\hyperlink\undefined\else%
+ \ifx\hyperlink\relax\else1\fi\fi\relax%
+ \expandafter\hyperlink%
+ \else%
+ \expandafter\@gobble%
+ \fi%
+}
+\newcommand\SB@indexlist{}
+\newcommand\SB@allindexes{}
+\let\SB@allindexes\@empty
+\newcommand\SB@out{}
+\let\SB@out\relax
+\newcommand\SB@newindex[4]{%
+ \expandafter\newcommand\csname SB@idxfilename@#3\endcsname{#4}%
+ \expandafter\newcommand\csname SB@idxsel@#3\endcsname[3]{###1}%
+ \expandafter\newcommand\csname SB@idxref@#3\endcsname{\thesongnum}%
+ \xdef\SB@allindexes{%
+ \ifx\SB@allindexes\@empty\else\SB@allindexes,\fi#3%
+ }%
+ \if@filesw%
+ \ifx\SB@out\relax%
+ \SB@newwrite\SB@out%
+ \immediate\openout\SB@out=\jobname.sxc\relax%
+ \fi%
+ \immediate\write\SB@out{\noexpand\SB@iwrite{#3}{#2}}%
+ \fi%
+}
+\newcommand\newindex{\SB@newindex1{TITLE INDEX DATA FILE}}
+\@onlypreamble\newindex
+\newcommand\newscripindex{\SB@newindex2{SCRIPTURE INDEX DATA FILE}}
+\@onlypreamble\newscripindex
+\newcommand\newauthorindex{\SB@newindex3{AUTHOR INDEX DATA FILE}}
+\@onlypreamble\newauthorindex
+\newcommand\SB@cwrite[2]{%
+ \ifx\SB@out\relax\else%
+ \protected@write\SB@out\SB@keepactive{\protect\SB@iwrite{#1}{#2}}%
+ \fi%
+}
+\newcommand\SB@keepactive{}
+{\catcode`\~\active
+ \catcode`\.12
+ \def\\#1#2{%
+ \endgroup
+ \expandafter\gdef\expandafter\SB@keepactive
+ \expandafter{\SB@keepactive\def#1{#2}}%
+ }
+ \def\SB@temp#1#2{%
+ \SB@cnt#1\relax
+ \loop
+ \begingroup
+ \uccode`\~\SB@cnt
+ \uccode`\.\SB@cnt
+ \uppercase{\\~.}
+ \ifnum\SB@cnt<#2\relax
+ \advance\SB@cnt\@ne
+ \repeat
+ }
+ \SB@temp{1}{8}
+ \SB@temp{11}{11}
+ \SB@temp{14}{91}
+ \SB@temp{93}{255}
+}
+\newcommand\SB@iwrite[2]{%
+ \def\SB@tempii{#1}%
+ \ifx\SB@temp\SB@tempii%
+ \SB@toks{#2}%
+ \immediate\write\SB@out{\the\SB@toks}%
+ \fi%
+}
+\newcommand\SB@uncombine{%
+ \ifx\SB@out\relax\else%
+ \immediate\closeout\SB@out%
+ \ifsongindexes%
+ \@for\SB@temp:=\SB@allindexes\do{%
+ \immediate\openout\SB@out=%
+ \csname SB@idxfilename@\SB@temp\endcsname.sxd\relax%
+ \begingroup\makeatletter\catcode`\%12\relax%
+ \input{\jobname.sxc}\endgroup%
+ \immediate\closeout\SB@out%
+ }%
+ \fi%
+ \fi%
+}
+\AtEndDocument{\SB@uncombine}
+\SB@newbox\SB@songwrites
+\newcommand\SB@addtoindex[2]{%
+ \protected@edef\SB@tempii{#2}%
+ \ifx\SB@tempii\@empty\else%
+ \global\setbox\SB@songwrites\vbox{%
+ \unvbox\SB@songwrites%
+ \SB@cwrite{#1}{#2}%
+ \SB@cwrite{#1}{\csname SB@idxref@#1\endcsname}%
+ \SB@cwrite{#1}{song\theSB@songsnum-\thesongnum.%
+ \ifnum\c@section=\z@1\else2\fi}%
+ }%
+ \fi%
+}
+\newcommand\SB@addtoindexes[3]{%
+ \@for\SB@temp:=\SB@indexlist\do{%
+ \SB@addtoindex\SB@temp%
+ {\csname SB@idxsel@\SB@temp\endcsname{#1}{#2}{#3}}%
+ }%
+}
+\newcommand\SB@addtotitles[1]{%
+ \@for\SB@temp:=\SB@indexlist\do{%
+ \csname SB@idxsel@\SB@temp\endcsname%
+ {\SB@addtoindex\SB@temp{#1}}{}{}%
+ }%
+}
+\newcommand\SB@chkidxlst{%
+ \let\SB@temp\SB@indexlist%
+ \let\SB@indexlist\@empty%
+ \@for\SB@tempii:=\SB@temp\do{%
+ \@ifundefined{SB@idxsel@\SB@tempii}{\SB@errnoidx\SB@tempii}{%
+ \ifx\SB@indexlist\@empty%
+ \SB@toks\expandafter{\SB@tempii}%
+ \else%
+ \SB@toks\expandafter\expandafter\expandafter{%
+ \expandafter\SB@indexlist\expandafter,\SB@tempii}%
+ \fi%
+ \edef\SB@indexlist{\the\SB@toks}%
+ }%
+ }%
+}
+\newcommand\indexentry{\@ifnextchar[{\SB@idxentry*}{\SB@@idxentry*}}
+\newcommand\SB@idxentry{}
+\def\SB@idxentry#1[#2]#3{{%
+ \def\SB@indexlist{#2}%
+ \SB@chkidxlst%
+ \SB@addtoindexes{#1#3}{#3}{#3}%
+}}
+\newcommand\SB@@idxentry[2]{\SB@addtotitles{#1#2}}
+\newcommand\indextitleentry{%
+ \@ifnextchar[{\SB@idxentry{}}{\SB@@idxentry{}}%
+}
+\newcommand\indexsongsas[1]{%
+ \@ifundefined{SB@idxref@#1}%
+ {\SB@errnoidx{#1}\@gobble}%
+ {\expandafter\renewcommand\csname SB@idxref@#1\endcsname}%
+}
+\newcommand\SB@idxcmd[3]{%
+ \ifx\SB@out\relax\else%
+ \@for\SB@temp:=\SB@allindexes\do{%
+ \csname SB@idxsel@\SB@temp\endcsname%
+ {\SB@@idxcmd{#1}}{\SB@@idxcmd{#2}}{\SB@@idxcmd{#3}}%
+ }%
+ \fi%
+}
+\newcommand\SB@@idxcmd[1]{%
+ \def\SB@tempii{#1}%
+ \ifx\SB@tempii\@empty\else%
+ \immediate\write\SB@out{%
+ \noexpand\SB@iwrite{\SB@temp}{#1}%
+ }%
+ \fi%
+}
+\newcommand\authsepword[1]{}
+\newcommand\authbyword[1]{}
+\newcommand\authignoreword[1]{}
+\newcommand\titleprefixword[1]{}
+{\catcode`\%=12
+ \gdef\authsepword#1{\SB@idxcmd{}{}{%sep #1}}
+ \gdef\authbyword#1{\SB@idxcmd{}{}{%after #1}}
+ \gdef\authignoreword#1{\SB@idxcmd{}{}{%ignore #1}}
+ \gdef\titleprefixword#1{\SB@idxcmd{%prefix #1}{}{}}}
+\@onlypreamble\authsepword
+\@onlypreamble\authbyword
+\@onlypreamble\authignoreword
+\@onlypreamble\titleprefixword
+\newcommand\SB@idxlineskip[1]{%
+ \vskip#1\p@\@plus#1\p@\@minus#1\p@%
+}
+\newcommand\SB@ellipspread[2]{%
+ \begingroup%
+ \SB@dimen\z@%
+ \def\SB@temp{#1}%
+ \SB@toks{#2}%
+ \setbox\SB@box\hbox{{%
+ \SB@temp%
+ \leaders\hbox to.5em{\hss.\hss}\hskip2em\@plus1fil%
+ {\the\SB@toks}%
+ }}%
+ \ifdim\wd\SB@box>\hsize%
+ \SB@balancerows%
+ \else%
+ \hbox to\hsize{\unhbox\SB@box}\par%
+ \fi%
+ \endgroup%
+}
+\newcommand\SB@balancerows{%
+ \edef\SB@tempii{\the\SB@toks}%
+ \setbox\SB@box\vbox{%
+ \SB@toks\expandafter{\expandafter\\\the\SB@toks\\}%
+ \SB@lop\SB@toks\SB@toks%
+ \settowidth\SB@dimen{\the\SB@toks}%
+ \advance\SB@dimen-.5em%
+ \leftskip.5cm%
+ {\hbadness\@M\hfuzz\maxdimen%
+ \hskip-.5cm\relax\SB@temp\unskip\nobreak%
+ \hskip\SB@dimen\nobreak%
+ \rightskip2em\@plus1fil\par}%
+ \setbox\SB@box\lastbox%
+ \setbox\SB@box\hbox{%
+ \unhbox\SB@box%
+ \unskip\unskip\unpenalty%
+ \unpenalty\unskip\unpenalty%
+ }%
+ \expandafter%
+ }%
+ \expandafter\SB@dimenii\the\wd\SB@box\relax%
+ \SB@dimen\hsize%
+ \advance\SB@dimen-.5cm%
+ \setbox\SB@box\vbox{%
+ \SB@multiline{\hbadness\@M\hfuzz\maxdimen}%
+ }%
+ \SB@dimeniii.5\SB@dimen%
+ \SB@dimeniv\SB@dimeniii%
+ \loop%
+ \SB@dimeniv.5\SB@dimeniv%
+ \setbox\SB@boxii\vbox{%
+ \SB@dimen\SB@dimeniii%
+ \SB@multiline{\hbadness\@M\hfuzz\maxdimen}%
+ }%
+ \ifnum\SB@cnt<\@M%
+ \ifdim\ht\SB@boxii>\ht\SB@box%
+ \advance\SB@dimeniii\SB@dimeniv%
+ \else%
+ \SB@dimen\SB@dimeniii%
+ \advance\SB@dimeniii-\SB@dimeniv%
+ \fi%
+ \else%
+ \advance\SB@dimeniii\SB@dimeniv%
+ \fi%
+ \ifdim\SB@dimeniv>2\p@\repeat%
+ \setbox\SB@box\box\voidb@x%
+ \setbox\SB@boxii\box\voidb@x%
+ \SB@multiline\relax%
+}
+\newcommand\SB@multiline[1]{%
+ \begingroup%
+ \SB@dimen-\SB@dimen%
+ \advance\SB@dimen\hsize%
+ \SB@dimenii-\SB@dimenii%
+ \advance\SB@dimenii\SB@dimen%
+ {#1\hskip-.5cm\relax\SB@temp\unskip\nobreak%
+ \SB@maxmin\SB@dimenii<{1.5em}%
+ \leftskip.5cm\rightskip2em\@plus1fil%
+ \interlinepenalty\@M%
+ \leaders\hbox to.5em{\hss.\hss}\hskip\SB@dimenii\@plus1fill%
+ \nobreak{\SB@tempii\kern-2em}%
+ \par\global\SB@cnt\badness}%
+ \endgroup%
+}%
+\newcommand\SB@idxitemsep{%
+ ,\kern-2em\penalty-8\hskip2.33em\@minus.11em%
+ \hskip-\SB@dimen\@plus-1fill%
+ \vadjust{}\nobreak%
+ \hskip\SB@dimen\@plus1fill\relax%
+}
+\newenvironment{idxblock}[1]{}{}
+\newcommand\idxentry[2]{}
+\newcommand\idxaltentry[2]{}
+\newenvironment{SB@lgidx}[1]{}{}
+\newenvironment{SB@smidx}[1]{}{}
+\newcommand\SB@idxsetup{%
+ \hsize\SB@colwidth%
+ \parskip\z@skip\parfillskip\z@skip\parindent\z@%
+ \baselineskip\f@size\p@\@plus\p@\@minus\p@%
+ \lineskiplimit\z@\lineskip\p@\@plus\p@\@minus\p@%
+ \hyphenpenalty\@M\exhyphenpenalty\@M%
+}
+\newcommand\SB@makeidxcolumn{%
+ \ifdim\ht\SB@box=\z@%
+ \hskip\hsize\relax%
+ \else%
+ \splittopskip\z@skip\splitmaxdepth\maxdepth%
+ \vsplit\SB@box to\SB@dimen%
+ \global\setbox\SB@box\vbox{%
+ \SB@idxsetup%
+ \splitbotmark%
+ \unvbox\SB@box%
+ }%
+ \fi%
+}
+\newcommand\SB@oneidxpage{}
+\newcommand\SB@displayindex[3]{%
+ \ifsongindexes\begingroup%
+ \SB@colwidth\hsize%
+ \advance\SB@colwidth-#1\columnsep%
+ \advance\SB@colwidth\columnsep%
+ \divide\SB@colwidth#1%
+ \setbox\SB@envbox\vbox{%
+ \let\SB@temp\songsection%
+ \ifx\chapter\undefined\else%
+ \ifx\chapter\relax\else%
+ \let\SB@temp\songchapter%
+ \fi%
+ \fi%
+ \SB@temp{#2}%
+ }%
+ \IfFileExists{\csname SB@idxfilename@#3\endcsname.sbx}{%
+ \ifsepindexes%
+ \global\setbox\SB@box\vbox{%
+ \null%
+ \vfil%
+ \unvcopy\SB@envbox%
+ \vskip.5in\@minus.3in\relax%
+ \hbox to\hsize{%
+ \hfil%
+ \vbox{%
+ \SB@idxsetup%
+ \renewenvironment{idxblock}[1]%
+ {\begin{SB@smidx}{####1}}{\end{SB@smidx}}%
+ \let\\\SB@idxitemsep%
+ \input{\csname SB@idxfilename@#3\endcsname.sbx}%
+ }%
+ \hfil%
+ }%
+ \vskip\z@\@plus2fil\relax%
+ }%
+ {\vbadness\@M\vfuzz\maxdimen%
+ \splitmaxdepth\maxdepth\splittopskip\z@skip%
+ \global\setbox\SB@boxii\vsplit\SB@box to\textheight}%
+ \ifvoid\SB@box%
+ \box\SB@boxii%
+ \else%
+ \SB@lgindex{#1}{#3}%
+ \fi%
+ \else%
+ \SB@lgindex{#1}{#3}%
+ \fi%
+ }%
+ {%
+ \ifsepindexes%
+ \vbox to\textheight{%
+ \vfil%
+ \unvbox\SB@envbox%
+ \vskip1em\relax%
+ \hbox to\hsize{\hfil[Index not yet generated.]\hfil}%
+ \vskip\z@\@plus2fil\relax%
+ }%
+ \else%
+ \unvbox\SB@envbox%
+ \hbox to\hsize{\hfil[Index not yet generated.]\hfil}%
+ \fi%
+ }%
+ \ifsepindexes\clearpage\fi%
+ \endgroup\fi%
+}
+\newcommand\SB@lgindex[2]{%
+ \global\setbox\SB@box\vbox{%
+ \renewenvironment{idxblock}[1]%
+ {\begin{SB@lgidx}{##1}}{\end{SB@lgidx}}%
+ \let\\\SB@idxitemsep%
+ \SB@idxsetup%
+ \input{\csname SB@idxfilename@#2\endcsname.sbx}%
+ \unskip%
+ }%
+ \SB@toks{\SB@makeidxcolumn}%
+ \SB@cnt#1\relax%
+ \loop\ifnum\SB@cnt>\@ne%
+ \SB@toks\expandafter{\the\SB@toks%
+ \kern\columnsep\SB@makeidxcolumn}%
+ \advance\SB@cnt\m@ne%
+ \repeat%
+ \edef\SB@oneidxpage{\the\SB@toks}%
+ \unvbox\SB@envbox%
+ \vskip.2in\relax%
+ \nointerlineskip%
+ \null%
+ \nointerlineskip%
+ \SB@cnt\vbadness\vbadness\@M%
+ \SB@dimenii\vfuzz\vfuzz\maxdimen%
+ \loop%
+ \SB@dimen\textheight%
+ \ifinner\else\kern\z@\advance\SB@dimen-\pagetotal\fi%
+ \global\setbox\SB@boxii\copy\SB@box%
+ \global\setbox\SB@boxiii\hbox{\SB@oneidxpage}%
+ \ifdim\ht\SB@box>\z@%
+ \box\SB@boxiii%
+ \vfil\break%
+ \repeat%
+ \SB@dimenii\ht\SB@boxii%
+ \divide\SB@dimenii#1\relax%
+ \SB@maxmin\SB@dimen>\SB@dimenii%
+ \loop%
+ \global\setbox\SB@box\copy\SB@boxii%
+ \global\setbox\SB@boxiii\hbox{\SB@oneidxpage}%
+ \ifdim\ht\SB@box>\z@%
+ \advance\SB@dimen\p@%
+ \repeat%
+ \box\SB@boxiii%
+ \global\setbox\SB@boxii\box\voidb@x%
+ \vbadness\SB@cnt\vfuzz\SB@dimenii%
+}
+\newcommand\showindex[3][0]{%
+ \@ifundefined{SB@idxsel@#3}{\SB@errnoidx{#3}}{%
+ \expandafter\let\expandafter\SB@temp\csname SB@idxsel@#3\endcsname%
+ \SB@cnt#1\relax%
+ \ifnum\SB@cnt<\@ne\SB@cnt\SB@temp232\relax\fi%
+ \expandafter\SB@temp%
+ \expandafter\SB@maketitleindex%
+ \expandafter\SB@makescripindex%
+ \expandafter\SB@makeauthorindex%
+ \expandafter{\the\SB@cnt}%
+ {#2}{#3}%
+ }%
+}
+\newcommand\SB@maketitleindex{%
+ \ifnum\idxheadwidth>\z@%
+ \renewenvironment{SB@lgidx}[1]{
+ \hbox{\SB@colorbox\idxbgcolor{\vbox{%
+ \hbox to\idxheadwidth{{\idxheadfont\relax##1}\hfil}%
+ }}}%
+ \nobreak\vskip3\p@\@plus2\p@\@minus2\p@\nointerlineskip%
+ }{\penalty-50\vskip5\p@\@plus5\p@\@minus4\p@}%
+ \else%
+ \renewenvironment{SB@lgidx}[1]{}{}%
+ \fi%
+ \renewenvironment{SB@smidx}[1]{}{}%
+ \renewcommand\idxentry[2]{%
+ \SB@ellipspread{\idxtitlefont\relax\ignorespaces##1\unskip}%
+ {{\idxrefsfont\relax##2}}%
+ }%
+ \renewcommand\idxaltentry[2]{%
+ \SB@ellipspread{\idxlyricfont\relax\ignorespaces##1\unskip}%
+ {{\idxrefsfont\relax##2}}%
+ }%
+ \SB@displayindex%
+}
+\newcommand\SB@idxcolhead{}
+\newcommand\SB@idxheadsep{{%
+ \SB@dimen4\p@%
+ \advance\SB@dimen-\prevdepth%
+ \SB@maxmin\SB@dimen<\z@%
+ \SB@dimenii\SB@dimen%
+ \SB@maxmin\SB@dimenii>\p@%
+ \vskip\SB@dimen\@plus\p@\@minus\SB@dimenii%
+}}
+\newcommand\SB@idxcont[1]{%
+ \hbox to\hsize{{\idxcont{#1}}\hfil}%
+ \nobreak%
+ \SB@idxheadsep\nointerlineskip%
+}
+\newcommand\SB@makescripindex{%
+ \renewenvironment{SB@lgidx}[1]{%
+ \gdef\SB@idxcolhead{##1}%
+ \hbox to\hsize{{\idxbook{##1}}\hfil}%
+ \nobreak%
+ \SB@idxheadsep\nointerlineskip%
+ }{%
+ \mark{\noexpand\relax}%
+ \penalty-20\vskip3\p@\@plus3\p@\relax%
+ }%
+ \renewenvironment{SB@smidx}[1]
+ {\begin{SB@lgidx}{##1}}{\end{SB@lgidx}}%
+ \renewcommand\idxentry[2]{%
+ \SB@ellipspread{\hskip.25cm\idxscripfont\relax##1}%
+ {{\idxrefsfont\relax##2}}%
+ \SB@toks\expandafter{\SB@idxcolhead}%
+ \mark{\noexpand\SB@idxcont{\the\SB@toks}}%
+ }%
+ \renewcommand\idxaltentry[2]{\SB@erridx{a scripture}}%
+ \SB@displayindex%
+}
+\newcommand\SB@makeauthorindex{%
+ \renewenvironment{SB@lgidx}[1]{}{}%
+ \renewenvironment{SB@smidx}[1]{}{}%
+ \renewcommand\idxentry[2]{%
+ \SB@ellipspread{{\idxauthfont\relax\sfcode`.\@m##1}}%
+ {{\idxrefsfont##2}}%
+ }%
+ \renewcommand\idxaltentry[2]{\SB@erridx{an author}}%
+ \SB@displayindex%
+}
+\newcommand\SB@Error{\PackageError{songs}}
+\newcommand\SB@Warn{\PackageWarning{songs}}
+\newcommand\SB@errspos{%
+ \SB@Error{Illegal \protect\songpos\space argument}{The argume%
+ nt to \protect\songpos\space must be a number from 0 to 3.}%
+}
+\newcommand\SB@errnse{%
+ \SB@Error{Nested songs environments are not supported}{End th%
+ e previous songs environment before beginning the next one.}%
+}
+\newcommand\SB@errpl{%
+ \SB@Error{\protect\includeonlysongs\space not permitted with%
+ in a songs environment}{\protect\includeonlysongs\space can o%
+ nly be used in the document preamble or between songs environ%
+ ments in the document body.}%
+}
+\newcommand\SB@errrtopt{%
+ \SB@Error{Cannot display chords in a rawtext dump}{You have u%
+ sed the rawtext option in the \protect\usepackage\space lin%
+ e and have either used the chorded option as well or have use%
+ d the \protect\chordson\space macro subsequently.}%
+}
+\newcommand\SB@warnrc{%
+ \SB@Warn{The \protect\repchoruses\space feature will not wor%
+ k when the number of columns is set to zero}%
+}
+\newcommand\SB@errboo{%
+ \SB@Error{Encountered \protect\beginsong\space without seein%
+ g an \protect\endsong\space for the previous song}%
+ {Song \thesongnum\space might be missing a%
+ n \protect\endsong\space line.}%
+}
+\newcommand\SB@errbor{%
+ \SB@Error{Encountered \protect\beginsong\space without seein%
+ g an \protect\endscripture\space for the preceding scriptur%
+ e quotation}{A scripture quotation appearing after son%
+ g \thesongnum\space might be missing a%
+ n \protect\endscripture\space line.}%
+}
+\newcommand\SB@erreov{%
+ \SB@Error{Encountered \protect\endsong\space without seein%
+ g an \protect\endverse\space for the preceding verse}{Son%
+ g \thesongnum\space has a \protect\beginverse\space%
+ line with no matching \protect\endverse\space line.}%
+}
+\newcommand\SB@erreoc{%
+ \SB@Error{Encountered \protect\endsong\space without seein%
+ g an \protect\endchorus\space for the preceding chorus}{Son%
+ g \thesongnum\space has a \protect\beginchorus\space%
+ line with no matching \protect\endchorus\space line.}%
+}
+\newcommand\SB@erreor{%
+ \SB@Error{Encountered \protect\endsong\space without seein%
+ g an \protect\endscripture for the preceding scripture quot%
+ e}{A scripture quote appearing before song \thesongnum\space%
+ ended with \protect\endsong\space instead of wit%
+ h \protect\endscripture.}%
+}
+\newcommand\SB@erreot{%
+ \SB@Error{Encountered \protect\endsong\space with no matchin%
+ g \protect\beginsong}{Before song \thesongnum\space there wa%
+ s an \protect\endsong\space with no matchin%
+ g \protect\beginsong.}%
+}
+\newcommand\SB@errbvv{%
+ \SB@Error{Encountered \protect\beginverse\space without seein%
+ g an \protect\endverse\space for the preceding verse}{Son%
+ g \thesongnum\space might have a verse that has n%
+ o \protect\endendverse\space line.}%
+}
+\newcommand\SB@errbvc{%
+ \SB@Error{Encountered \protect\beginverse\space without seein%
+ g an \protect\endchorus\space for the preceding chorus}{Son%
+ g \thesongnum\space might have a chorus that has n%
+ o \protect\endchorus\space line.}%
+}
+\newcommand\SB@errbvt{%
+ \SB@Error{Encountered \protect\beginverse\space without firs%
+ t seeing a \protect\beginsong\space line}{Before son%
+ g \thesongnum, there is a \protect\beginverse\space line no%
+ t contained in any song.}%
+}
+\newcommand\SB@errevc{%
+ \SB@Error{Encountered \protect\endverse\space while process%
+ ing a chorus}{Song \thesongnum\space might hav%
+ e a \protect\beginchorus\space concluded by a%
+ n \protect\endverse\space instead of an \protect\endchorus.}%
+}
+\newcommand\SB@errevo{%
+ \SB@Error{Encountered \protect\endverse\space without firs%
+ t seeing a \protect\beginverse}{Song \thesongnum\space m%
+ ight have an \protect\endverse\space with no matchin%
+ g \protect\beginverse.}%
+}
+\newcommand\SB@errevt{%
+ \SB@Error{Encountered an \protect\endverse\space outside o%
+ f any song}{Before song \thesongnum, there is a%
+ n \protect\endverse\space line not preceded b%
+ y a \protect\beginsong\space line.}%
+}
+\newcommand\SB@erretex{%
+ \SB@Error{The \protect\repchoruses\space feature requires e-%
+ TeX compatibility}{Your version of LaTeX2e does not appear t%
+ o be e-TeX compatible. Find a distribution that includes e-T%
+ eX support in order to use this feature.}%
+}
+\newcommand\SB@errbcv{%
+ \SB@Error{Encountered \protect\beginchorus\space without see%
+ ing an \protect\endverse\space for the preceding verse}{Son%
+ g \thesongnum\space might hav%
+ e a \protect\beginverse\space with no match%
+ ing \protect\endverse.}%
+}
+\newcommand\SB@errbcc{%
+ \SB@Error{Encountered \protect\beginchorus\space without see%
+ ing an \protect\endchorus\space for the preceding chorus}%
+ {Song \thesongnum\space might have a \protect\beginchorus%
+ \space with no matching \protect\endchorus.}%
+}
+\newcommand\SB@errbct{%
+ \SB@Error{Encountered \protect\beginchorus\space without see%
+ ing a \protect\beginsong\space line first}{After son%
+ g \thesongnum\space there is a \protect\beginchorus\space%
+ line outside of any song.}%
+}
+\newcommand\SB@errecv{%
+ \SB@Error{Encountered an \protect\endchorus\space while proc%
+ essing a verse}{Song \thesongnum\space might hav%
+ e a \protect\beginverse\space concluded by \protect\endchorus%
+ \space instead of \protect\endverse.}%
+}
+\newcommand\SB@erreco{%
+ \SB@Error{Encountered \protect\endchorus\space without firs%
+ t seeing a \protect\beginchorus}{Song \thesongnum\space m%
+ ight have an \protect\endchorus\space with no match%
+ ing \protect\beginchorus.}%
+}
+\newcommand\SB@errect{%
+ \SB@Error{Encountered an \protect\endchorus\space outside o%
+ f any song}{Before song \thesongnum, there is a%
+ n \protect\endchorus\space line not preceded b%
+ y a \protect\beginsong\space line.}%
+}
+\newcommand\SB@errbro{%
+ \SB@Error{Missing \protect\endsong}%
+ {Nested song and intersong environments are not supported%
+ . Song \thesongnum\space might be missing a%
+ n \protect\endsong\space line.}%
+}
+\newcommand\SB@errbrr{%
+ \SB@Error{Nested intersong environments are not supported}%
+ {A scripture quote or other intersong environment before s%
+ ong \thesongnum\space is missing its ending line.}%
+}
+\newcommand\SB@errero{%
+ \SB@Error{Encountered an \protect\endscripture\space whil%
+ e processing a song}{Song \thesongnum\space ends wit%
+ h \protect\endscripture\space when it should end wit%
+ h \protect\endsong.}%
+}
+\newcommand\SB@errert{%
+ \SB@Error{Encountered an \protect\endscripture\space with%
+ out first seeing a \protect\beginscripture}{Before son%
+ g \thesongnum, there is an \protect\endscripture\space w%
+ ith no matching \protect\beginscripture.}%
+}
+\newcommand\SB@errscrip[1]{%
+ \SB@Error{Encountered a \protect#1\space outside a scriptu%
+ re quote}{\protect#1\space can only appear betwee%
+ n \protect\beginscripture\space an%
+ d \protect\endscripture\space lines.}%
+}
+\newcommand\SB@errchord{%
+ \SB@Error{Song \thesongnum\space seems to have chord%
+ s that appear outside of any verse or chorus}{All chords a%
+ nd lyrics should appear between \protect\beginverse\space%
+ and \protect\endverse, or between \protect\beginchorus\space%
+ and \protect\endchorus.}%
+}
+\newcommand\SB@errreplay{%
+ \SB@Error{Replayed chord has no matching chord}{Son%
+ g \thesongnum\space uses \protect^ more times than the%
+ re are chords in the previously memorized verse.}%
+}
+\newcommand\SB@errreg[1]{%
+ \SB@Error{Unknown chord-replay register name: #1}{Chord-re%
+ play registers must be declared with \protect\newchords.}%
+}
+\newcommand\SB@errdup[1]{%
+ \SB@Error{Duplicate definition of chord-replay register%
+ : #1}{\protect\newchords\space was used to declare the sa%
+ me chord-replay register twice.}%
+}
+\newcommand\SB@errmbar{%
+ \SB@Error{Song \thesongnum\space seems to have measur%
+ e bars that appear outside of any verse or chorus}{All mea%
+ sure bars (produced with \protect\mbar\space or |) must ap%
+ pear between \protect\beginverse\space an%
+ d \protect\endverse, or between \protect\beginchorus\space%
+ and \protect\endchorus.}%
+}
+\newcommand\SB@errtab{%
+ \SB@Error{Invalid argument to \protect\gtab\space macro. R%
+ eplacing it with \protect\0.}{Valid arguments consist onl%
+ y of: X, O, 0, 1, 2, 3, or 4.}%
+}
+\newcommand\SB@errnoidx[1]{%
+ \SB@Error{Unknown index identifier: #1}{This index identifie%
+ r was never declared using \protect\newindex.}%
+}
+\newcommand\SB@erridx[1]{%
+ \SB@Error{\protect\idxaltentry\space not allowed in #1 index}%
+ {This error should not occur. The index generation routines ha%
+ ve malfunctioned. Try deleting all temporary files and then re%
+ compiling.}%
+}
+\newif\ifchorded
+\newif\iflyric\lyrictrue
+\newif\ifslides
+\newif\ifmeasures
+\newif\ifpartiallist
+\newif\ifrepchorus
+\newif\iftranscapos
+\newif\ifnolyrics
+\newif\ifrawtext
+\newif\ifsongindexes\songindexestrue
+\newif\ifsepindexes\sepindexestrue
+\newif\ifpagepreludes
+\newif\ifSB@colorboxes\SB@colorboxestrue
+\newif\ifSB@omitscrip
+\newcommand\nolyrics{}
+\let\nolyrics\nolyricstrue
+\newcommand\pagepreludes{\pagepreludestrue\songpos0}
+\SB@chordson
+\ProcessOptions\relax
+\ifSB@colorboxes
+ \RequirePackage{color}
+ \definecolor{SongbookShade}{gray}{.80}
+ \newcommand\SB@colorbox[2]{%
+ \ifx\@empty#1%
+ \vbox{%
+ \kern3\p@%
+ \hbox{\kern3\p@{#2}\kern3\p@}%
+ \kern3\p@%
+ }%
+ \else%
+ \colorbox{#1}{#2}%
+ \fi%
+ }
+\else
+ \newcommand\SB@colorbox[2]{\vbox{%
+ \kern3\p@%
+ \hbox{\kern3\p@{#2}\kern3\p@}%
+ \kern3\p@%
+ }}
+\fi
+\ifrawtext
+ \SB@newwrite\SB@txtout
+ \immediate\openout\SB@txtout=\jobname.txt
+ \newif\ifSB@doEOL
+ {\catcode`\^^M12 %
+ \catcode`\^^J12 %
+ \gdef\SB@printEOL{\ifSB@doEOL^^M^^J\fi}}
+ {\catcode`#12\gdef\SB@hash{#}}
+ {\catcode`&12\gdef\SB@amp{&}}
+ \renewcommand\SB@@@beginsong{%
+ \begingroup%
+ \def\'{}\def\`{}\def\v{}\def\u{}\def\={}\def\^{}%
+ \def\.{}\def\H{}\def\~{}\def\"{}\def\t{}%
+ \def\copyright{(c)}%
+ \let~\space%
+ \let\par\SB@printEOL%
+ \let\#\SB@hash%
+ \let\&\SB@amp%
+ \catcode`|9 %
+ \catcode`*9 %
+ \catcode`^9 %
+ \def\[##1]{}%
+ \resettitles%
+ \immediate\write\SB@txtout{\thesongnum. \songtitle}%
+ \nexttitle%
+ \foreachtitle{\immediate\write\SB@txtout{(\songtitle)}}%
+ \ifx\songauthors\@empty\else%
+ \immediate\write\SB@txtout{\songauthors}%
+ \fi%
+ \ifx\SB@rawrefs\@empty\else%
+ \immediate\write\SB@txtout{\SB@rawrefs}%
+ \fi%
+ \immediate\write\SB@txtout{}%
+ \SB@doEOLfalse%
+ \obeylines%
+ }
+ \renewcommand\SB@endsong{%
+ \SB@doEOLtrue%
+ \immediate\write\SB@txtout{\songcopyright\space%
+ \songlicense\SB@printEOL}%
+ \endgroup%
+ \SB@insongfalse%
+ \stepcounter{songnum}%
+ }
+ \def\SB@parsesrefs#1{\def\songrefs{#1}}
+ \long\def\beginverse#1#2\endverse{%
+ \SB@doEOLtrue\begingroup%
+ \def\textnote##1{##1}%
+ \def\SB@temp{#1}%
+ \def\SB@star{*}%
+ \ifx\SB@temp\SB@star%
+ \immediate\write\SB@txtout{\@gobble#2}%
+ \else%
+ \immediate\write\SB@txtout{#2}%
+ \fi%
+ \endgroup\SB@doEOLfalse}
+ \long\def\beginchorus#1\endchorus{%
+ \SB@doEOLtrue\begingroup%
+ \def\textnote##1{##1}%
+ \immediate\write\SB@txtout{Chorus:#1}%
+ \endgroup\SB@doEOLfalse}
+ \long\def\beginscripture#1\endscripture{}
+ \def\musicnote#1{}
+ \def\textnote#1{%
+ \SB@doEOLtrue%
+ \immediate\write\SB@txtout{#1\SB@printEOL}%
+ \SB@doEOLfalse}
+ \def\brk{}
+ \def\rep#1{(x#1)}
+ \def\echo#1{(#1)}
+ \def\mbar#1#2{}
+ \def\lrep{}
+ \def\rrep{}
+ \def\nolyrics{}
+ \renewcommand\memorize[1][]{}
+ \renewcommand\replay[1][]{}
+\fi
+\endinput
+%%
+%% End of file `songs.sty'.