summaryrefslogtreecommitdiff
path: root/Build/source/utils/songs/songs.sty
diff options
context:
space:
mode:
Diffstat (limited to 'Build/source/utils/songs/songs.sty')
-rw-r--r--Build/source/utils/songs/songs.sty3783
1 files changed, 0 insertions, 3783 deletions
diff --git a/Build/source/utils/songs/songs.sty b/Build/source/utils/songs/songs.sty
deleted file mode 100644
index dca3f093e4e..00000000000
--- a/Build/source/utils/songs/songs.sty
+++ /dev/null
@@ -1,3783 +0,0 @@
-%%
-%% 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'.