summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2006-01-13 00:10:57 +0000
committerKarl Berry <karl@freefriends.org>2006-01-13 00:10:57 +0000
commitf65449ef5ddb6cf94a22c17d567b255ee088a0fe (patch)
tree16e9d593b5a666cfee62f6618e632da094da404f
parentf88fe31bc3bee63a2c2878d32f4cf704c2e5f87c (diff)
verse
git-svn-id: svn://tug.org/texlive/trunk@1438 c570f23f-e606-0410-a88d-b1316a301751
-rw-r--r--Master/texmf-dist/tex/latex/verse/verse.sty304
1 files changed, 304 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex/verse/verse.sty b/Master/texmf-dist/tex/latex/verse/verse.sty
new file mode 100644
index 00000000000..97720bca8bf
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/verse/verse.sty
@@ -0,0 +1,304 @@
+%%
+%% This is file `verse.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% verse.dtx (with options: `usc')
+%%
+%% -----------------------------------------------------------------
+%% Author: Peter Wilson (herries dot press at earthlink dot net)
+%% Herries Press
+%% Copyright 2001--2005 Peter R. Wilson
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either
+%% version 1.3 of this license or (at your option) any
+%% later version.
+%% The latest version of the license is in
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of
+%% LaTeX version 2003/06/01 or later.
+%%
+%% This work has the LPPL maintenance status "author-maintained".
+%%
+%% This work consists of the files listed in the README file.
+%% -----------------------------------------------------------------
+%%
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{verse}[2005/08/22 v2.22 verse typesetting]
+
+\newcounter{vslineno}
+\newcounter{poemline}
+\newcounter{modulo@vs}
+\newcounter{verse@envctr}\setcounter{verse@envctr}{0}
+\newcommand*{\theHpoemline}{\arabic{verse@envctr}.\arabic{poemline}}
+
+\newcommand{\poemlines}[1]{%
+ \ifnum#1>\z@
+ \setcounter{modulo@vs}{#1}
+ \else
+ \setcounter{modulo@vs}{0}
+ \fi
+}
+\poemlines{0}
+
+\newcommand{\getmodulo@vs}{{\@tempcnta\c@poemline
+ \ifnum\c@modulo@vs<\@ne % no line numbers
+ \else
+ \ifnum\c@modulo@vs<\tw@ % number every line
+ \thepoemline
+ \else
+ \divide\@tempcnta\c@modulo@vs
+ \multiply\@tempcnta\c@modulo@vs
+ \ifnum\@tempcnta=\c@poemline\thepoemline\fi
+ \fi
+ \fi
+}}
+
+\newif\ifaltindent
+ \altindentfalse
+\newif\ifpattern
+ \patternfalse
+\newif\ifstarpattern
+ \starpatternfalse
+
+\newlength{\versewidth}
+
+\newlength{\vgap} \setlength{\vgap}{1.5em}
+\newcommand{\vin}{\hspace*{\vgap}}
+\newlength{\vindent} \setlength{\vindent}{2\vgap}
+\newlength{\stanzaskip} \setlength{\stanzaskip}{0.75\baselineskip}
+
+\newlength{\vleftskip}
+ \setlength{\vleftskip}{30pt}
+\newlength{\vrightskip}
+ \setlength{\vrightskip}{10pt}
+
+\newcommand{\flagverse}[1]{\hskip-\vleftskip\llap{#1}\hskip\vleftskip\ignorespaces}
+
+\newcommand{\verselinebreak}[1][\z@]{\newline\hspace*{#1}% extra verseindent
+}
+\newcommand{\incr@vsline}{%
+ \refstepcounter{poemline}%
+ \stepcounter{vslineno}}
+
+\newcommand{\@vsifbang}[1]{\@ifnextchar !{\@firstoftwo{#1}}}
+\newcommand{\@vsifgt}[1]{\@ifnextchar >{\@firstoftwo{#1}}}
+
+\newcommand{\@vscentercr}{%
+ \ifhmode \unskip\else \@nolnerr\fi
+ \hfill\rlap{\kern\vrightskip\kern\rightmargin\getmodulo@vs}%
+ \@vsifgt{\verselinebreak}{%
+ \incr@vsline
+ \par\@ifstar{\nobreak\@vsxcentercr}{%
+ \@vsifbang{\@ifnextchar[ {\@vsicentercr}{}}{\@vsxcentercr}}}}
+\newcommand{\@vsxcentercr}{\addvspace{-\parskip}%
+ \@ifnextchar[ {\@vsicentercr}{\start@vsline}}
+\def\@vsicentercr[#1]{\vskip #1\ignorespaces \start@vsline}
+\newcommand{\start@vsline}{%
+ \ifaltindent\ifodd\c@vslineno\else\vin\fi\fi%
+ \ifpattern\get@vsindent\fi%
+ \ifstarpattern\getstar@vsindent\fi}
+
+\renewenvironment{verse}[1][\linewidth]{
+ \stepcounter{verse@envctr}%
+ \setcounter{poemline}{0}\refstepcounter{poemline}%
+ \setcounter{vslineno}{1}%
+ \let\\=\@vscentercr
+ \list{}{\itemsep \z@
+ \itemindent -\vindent%
+ \listparindent\itemindent
+ \parsep \stanzaskip
+ \ifdim #1 < \linewidth
+ \rightmargin \z@
+ \setlength{\leftmargin}{\linewidth}%
+ \addtolength{\leftmargin}{-#1}%
+ \addtolength{\leftmargin}{-0.5\leftmargin}%
+ \else
+ \rightmargin \leftmargin
+ \fi
+ \addtolength{\leftmargin}{\vindent}}
+ \item[]}{\endlist}
+
+\newenvironment{altverse}%
+ {\starpatternfalse\patternfalse\altindenttrue\setcounter{vslineno}{1}}%
+ {\altindentfalse}
+
+\newcommand{\@nameedef}[1]{
+ \expandafter\protected@edef\csname #1\endcsname}
+
+\newif\ifbounderror
+ \bounderrorfalse
+\newif\ifinteger
+
+\newcounter{chrsinstr} % CHARactersINSTRing
+
+\newcommand{\newarray}[3]{%
+ \@nameedef{#1-low}{#2}%
+ \@nameedef{#1-high}{#3}%
+ \ifnum #3<#2
+ \PackageError{verse}{Limits for array #1 are in reverse order}{\@ehc}%
+ \fi
+}
+
+\newcommand{\stringtoarray}[2]{%
+ \def\@vsarrayname{#1}%
+ \protected@edef\the@vsstring{#2}%
+ \newarray{\@vsarrayname}{1}{1}%
+ \@ifmtarg{#2}{%
+ \c@chrsinstr \z@
+ \@namedef{\@vsarrayname-1}{}
+ }{%
+ \c@chrsinstr \@ne
+ \expandafter\@vsstringtoarray \the@vsstring\@vsend
+ }
+}
+
+\def\@vsstringtoarray #1#2\@vsend{%
+ \@namedef{\@vsarrayname-\the\c@chrsinstr}{#1}
+ \@nameedef{\@vsarrayname-high}{\the\c@chrsinstr}
+ \@ifmtarg{#2}{%
+ \def\@vsinext{}%
+ }{%
+ \advance\c@chrsinstr \@ne
+ \def\@vsinext{%
+ \@vsstringtoarray #2\@vsend%
+ }%
+ }
+ \@vsinext
+}
+
+\newcommand{\setarrayelement}[3]{%
+ \checkarrayindex{#1}{#2}%
+ \@nameedef{#1-#2}{#3}%
+}
+
+\newcommand{\getarrayelement}[3]{%
+ \checkarrayindex{#1}{#2}%
+ \protected@edef#3{\@nameuse{#1-#2}}%
+}
+
+\newcommand{\checkarrayindex}[2]{%
+ \bounderrorfalse
+ \expandafter\ifx\csname #1-low\endcsname\relax%
+ \ifpattern\else
+ \PackageError{verse}{No array called #1}{\@ehc}%
+ \fi
+ \bounderrortrue
+ \fi
+ \ifnum #2<\@nameuse{#1-low}\relax%
+ \ifpattern\else
+ \PackageError{verse}{Index #2 outside limits for array #1}{\@ehc}%
+ \fi
+ \bounderrortrue
+ \fi
+ \ifnum #2>\@nameuse{#1-high}\relax%
+ \ifpattern\else
+ \PackageError{verse}{Index #2 outside limits for array #1}{\@ehc}%
+ \fi
+ \bounderrortrue
+ \fi
+}
+
+\begingroup
+\catcode`\Q=3
+\long\gdef\@ifmtarg#1{\@xifmtarg#1QQ\@secondoftwo\@firstoftwo\@nil}
+\long\gdef\@xifmtarg#1#2Q#3#4#5\@nil{#4}
+\long\gdef\@ifnotmtarg#1{\@xifmtarg#1QQ\@firstofone\@gobble\@nil}
+\endgroup
+
+\newcommand{\arraytostring}[2]{%
+ \def#2{}%
+ \c@chrsinstr = \@nameuse{#1-low}%
+ \@vsarraytostring{#1}{#2}%
+}
+
+\newcommand{\@vsarraytostring}[2]{%
+ \ifnum\c@chrsinstr>\@nameuse{#1-high}\else
+ \protected@edef#2{#2\@nameuse{#1-\thechrsinstr}}%
+ \advance\c@chrsinstr\@ne%
+ \@vsarraytostring{#1}{#2}%
+ \fi%
+}
+
+\newcommand{\checkifinteger}[1]{%
+ \protected@edef\@vsa{#1}%
+ \ifcat _\ifnum9<1\gobm{#1} _\else A\fi
+ \integertrue%
+ \else
+ \integerfalse%
+ \fi%
+}
+\newcommand{\gobm}[1]{#1}
+
+\newcommand{\indentpattern}[1]{%
+ \stringtoarray{Array@vs}{#1}}
+
+\newcommand{\get@vsindent}{%
+ \getarrayelement{Array@vs}{\number\value{vslineno}}{\@vspat}%
+ \ifbounderror
+ \arraytostring{Array@vs}{\@vsp@t}%
+ \PackageWarning{verse}{%
+ Index `\thevslineno' for pattern `\@vsp@t' is out of bounds}%
+ \def\@vspat{0}%
+ \else
+ \checkifinteger{\@vspat}%
+ \ifinteger\else
+ \arraytostring{Array@vs}{\@vsp@t}%
+ \PackageWarning{verse}{%
+ `\@vspat' at index `\thevslineno' in pattern `\@vsp@t' is not a digit}%
+ \def\@vspat{0}%
+ \fi
+ \fi
+ \ifcase\@vspat\else\hspace*{\@vspat\vgap}\fi}
+\newcommand{\getstar@vsindent}{%
+ \expandafter\ifx\csname Array@vs-high\endcsname\relax
+ \PackageError{verse}{A pattern has not been specified}{\@ehc}
+ \else
+ \ifnum\c@vslineno>\@nameuse{Array@vs-high}%
+ \setcounter{vslineno}{1}%
+ \fi
+ \get@vsindent
+ \fi}
+
+\newenvironment{patverse}%
+ {\starpatternfalse\patterntrue\altindentfalse\setcounter{vslineno}{1}}%
+ {\patternfalse}
+
+\newenvironment{patverse*}%
+ {\starpatterntrue\patternfalse\altindentfalse\setcounter{vslineno}{1}}%
+ {\starpatternfalse}
+
+\newcommand{\poemtitle}{\par%
+ \secdef\@vsptitle\@vssptitle}
+\newcommand{\poemtoc}{section}
+
+\def\@vsptitle[#1]#2{%
+ \@nameuse{phantomsection}%
+ \addcontentsline{toc}{\poemtoc}{#1}
+ \poemtitlemark{#1}%
+ \@vstypeptitle{#2}
+ \@afterheading}
+
+\def\@vssptitle#1{%
+ \@vstypeptitle{#1}
+ \@afterheading}
+
+\newcommand{\@vstypeptitle}[1]{%
+ \vspace{\beforepoemtitleskip}
+ {\poemtitlefont #1\par}
+ \vspace{\afterpoemtitleskip}
+}
+
+\newcommand{\poemtitlefont}{\normalfont\large\bfseries\centering}
+\newcommand{\poemtitlemark}[1]{}
+
+\newlength{\beforepoemtitleskip}
+ \setlength{\beforepoemtitleskip}{3.5ex \@plus 1ex \@minus .2ex}
+\newlength{\afterpoemtitleskip}
+ \setlength{\afterpoemtitleskip}{2.3ex \@plus.2ex}
+
+\endinput
+%%
+%% End of file `verse.sty'.