diff options
Diffstat (limited to 'Master/texmf-dist/tex/latex/liederbuch/liederbuch-listofsongs.sty')
-rw-r--r-- | Master/texmf-dist/tex/latex/liederbuch/liederbuch-listofsongs.sty | 202 |
1 files changed, 202 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex/liederbuch/liederbuch-listofsongs.sty b/Master/texmf-dist/tex/latex/liederbuch/liederbuch-listofsongs.sty new file mode 100644 index 00000000000..007e24e819d --- /dev/null +++ b/Master/texmf-dist/tex/latex/liederbuch/liederbuch-listofsongs.sty @@ -0,0 +1,202 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % +% Made by Gabriel Ruprecht % +% % +% This work is published under the % +% LaTeX project public license 1.3 % +% % +% Package version 1.1.0 % +% 2025-01-20 % +% % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\ProvidesPackage{liederbuch-listofsongs}[version 1.1.0] + +% Default names; Has Babel support in liederbuch.sty +\def\listofsongsname{List of Songs} +\def\LBsongComposer{composer}% +\def\LBsongLyricist{lyricist}% +\def\LBsongEditor{editor}% +\def\LBsongYear{year}% +\def\LBsongCopyright{copyright}% +\def\LBsongEditorialOffice{editorial office}% +\def\LBsongEditon{edition}% +\def\LBsongPrint{print}% + + +% The command, that outputs the list of songs. Mostly taken from listoffigures +\def\listofsongs{% + \newif\ifGFM@LB@chapterExists% + \GFM@LB@chapterExiststrue% + % + \ifx\undefined\chapter\relax% + \GFM@LB@chapterExistsfalse% + \fi% + % + \if@twocolumn% + \@restonecoltrue% + \onecolumn % + \else% + \@restonecolfalse% + \fi% + \ifGFM@LB@chapterExists\relax% + %starred/unstarred?% + \chapter*{\listofsongsname}% + \else% + \section*{\listofsongsname}% + \fi% + \@mkboth{\MakeUppercase \listofsongsname }{\MakeUppercase \listofsongsname }% + %Print nothing for one run, when the los style is changed + \ifx\listofsongsstyleprevrun\listofsongsstylevalue% + \else% + \def\l@song##1##2{}% + \fi% + %%%%%%%%%%%%%%%%%%%%%%%%%%%%% + %Most important line is here: + \@starttoc{los}% + %%%%%%%%%%%%%%%%%%%%%%%%%%%%% + \if@restonecol% + \twocolumn% + \fi% +} + + +% This is needed to check, if the same style is used than last +% time. If not, there will be no output for one compilation. +\AtEndDocument{ +\write\@auxout{\noexpand\gdef\noexpand\listofsongsstyleprevrun{\listofsongsstylevalue}} +} + + +% For checking, if a valid style had been selected. +\newif\iflistofsongsstyleExists\relax +\listofsongsstyleExistsfalse + +% Selects the style. Contains the default styles. +\def\listofsongsstyle#1{% + \edef\listofsongsstylevalue{#1}% + \def\GFM@compareB{twolines}% + \ifx\listofsongsstylevalue\GFM@compareB\relax% + \listofsongsstyleTwolines\relax% + \listofsongsstyleExiststrue% + \fi% + \def\GFM@compareB{semitwolines}% + \ifx\listofsongsstylevalue\GFM@compareB\relax% + \listofsongsstyleSemiTwolines\relax% + \listofsongsstyleExiststrue% + \fi% + \def\GFM@compareB{simple}% + \ifx\listofsongsstylevalue\GFM@compareB\relax% + \listofsongsstyleSimple\relax% + \listofsongsstyleExiststrue% + \fi% + \def\GFM@compareB{simple with number}% + \ifx\listofsongsstylevalue\GFM@compareB\relax% + \listofsongsstyleSimplewithnumber\relax% + \listofsongsstyleExiststrue% + \fi% + \def\GFM@compareB{simple with document number}% + \ifx\listofsongsstylevalue\GFM@compareB\relax% + \listofsongsstyleSimplewithdocumentnumber\relax% + \listofsongsstyleExiststrue% + \fi% + % TODO: create style registering and + \iflistofsongsstyleExists% + \else% + \PackageError{liederbuch}{liederbuch-listofsongs.sty, line 102: You tried to call a style for the list of songs, that is not defined.}{Did you make a typo? The default style is 'simple' and will automatically be used, if you don't use the command listofsongsstyle.}% + \fi% + \listofsongsstyleExistsfalse% +} + +\@onlypreamble\listofsongsstyle + +% Default style twolines: +% The definion of this is 90% taken from l@figure: +\def\listofsongsstyleTwolines{% + \newdimen\GFM@LB@losDimA\relax% + \newdimen\GFM@LB@losDimB\relax% + \GFM@LB@losDimA=1.5em\relax% + \GFM@LB@losDimB=2.3em\relax% + % +% \let\l@song\l@figure + \def\l@song##1##2{% + \show##1\relax% + \wlog{This is a marker} +% \show##2\relax% + \def\GFM@LB@extract####1\csname ####2@title\endcsname####3{ + \def\GFM@LB@expandedNamePre{####1}% + \def\GFM@LB@expandedName{####2}% + \def\GFM@LB@expandedNameAfter{####3}% + }% + \expandafter\GFM@LB@extract##1\relax% +% +%% \def\split####1={% +% % \def\GFM@LB@expandedName{####1}% +% % }\split##1@title=\relax% + \show\GFM@LB@expandedName% + \vskip 0.5em plus 0.05em minus 0.02em\relax% + \vskip \z@ \@plus .2\p@ % + {\leftskip \GFM@LB@losDimA\relax\rightskip \@tocrmarg \parfillskip -\rightskip \parindent \GFM@LB@losDimA\relax \@afterindenttrue \interlinepenalty \@M \leavevmode \@tempdima \GFM@LB@losDimB\relax \advance \leftskip \@tempdima \null \nobreak \hskip -\leftskip {\csname \GFM@LB@expandedName @title\endcsname }\newline\null% + \expandafter\ifx\csname \GFM@LB@expandedName @composer\endcsname \empty% + \else% + \csname \GFM@LB@expandedName @composer\endcsname\ -- \fi\csname% + \GFM@LB@expandedName @lyricist\endcsname% + \nobreak \leaders \hbox {$\m@th \mkern \@dotsep mu\hbox {.}\mkern \@dotsep mu$}\hfill \nobreak \hb@xt@ \@pnumwidth {\hfil \normalfont \normalcolor ##2\kern -\p@ \kern \p@ }\par }% + }% + \def\GFM@LB@addcontentsline{% + \addcontentsline{los}{song}{\unexpanded{\unexpanded{\csname}}\GFM@LB@expandedName @title\unexpanded{\unexpanded{\endcsname}}}% + }% +} + +% Default style semitwolines +% The definion of this is 90% taken from l@figure: +\def\listofsongsstyleSemiTwolines{% + \newdimen\GFM@LB@losDimA\relax% + \newdimen\GFM@LB@losDimB\relax% + \GFM@LB@losDimA=1.5em\relax% + \GFM@LB@losDimB=2.3em\relax% + % + \def\l@song##1##2{% + \def\split####1&####2&####3={% + \def\GFM@LB@losTitle{####1}% + \def\GFM@LB@losComposer{####2}% + \def\GFM@LB@losLyricist{####3}% + }\split##1=\relax% + \vskip 0.5em plus 0.05em minus 0.02em\relax% + \vskip \z@ \@plus .2\p@ % + {\leftskip \GFM@LB@losDimA\relax\rightskip \@tocrmarg \parfillskip -\rightskip \parindent \GFM@LB@losDimA\relax \@afterindenttrue \interlinepenalty \@M \leavevmode \@tempdima \GFM@LB@losDimB\relax \advance \leftskip \@tempdima \null \nobreak \hskip -\leftskip {\GFM@LB@losTitle}\ifx\GFM@LB@losComposer\empty\else\newline\null\GFM@LB@losComposer\ -- \fi\GFM@LB@losLyricist% + \nobreak \leaders \hbox {$\m@th \mkern \@dotsep mu\hbox {.}\mkern \@dotsep mu$}\hfill \nobreak \hb@xt@ \@pnumwidth {\hfil \normalfont \normalcolor ##2\kern -\p@ \kern \p@ }\par }% + }% + \def\GFM@LB@addcontentsline{% + \addcontentsline{los}{song}{% + \csname \GFM@LB@expandedName @title\endcsname &\csname \GFM@LB@expandedName @composer\endcsname &\csname \GFM@LB@expandedName @lyricist\endcsname% + }% + }% +} + + +% Default style simple: +\def\listofsongsstyleSimple{% + \let\l@song\l@figure\relax% + \def\GFM@LB@addcontentsline{% + \addcontentsline{los}{song}{\csname \GFM@LB@expandedName @title\endcsname }% + }% +} + +% Default style simple with number +\def\listofsongsstyleSimplewithnumber{% + \let\l@song\l@figure\relax% + \def\GFM@LB@addcontentsline{% + \addcontentsline{los}{song}{\numberline{\GFM@LB@number }\csname \GFM@LB@expandedName @title\endcsname }% + }% +} + +% Default style simple with document number +\def\listofsongsstyleSimplewithdocumentnumber{% + \let\l@song\l@figure\relax% + \def\GFM@LB@addcontentsline{% + \addcontentsline{los}{song}{\numberline {\arabic{liedcounter}}\csname \GFM@LB@expandedName @title\endcsname }% + }% +} + +%default value: +\listofsongsstyle{simple} |