summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/liederbuch/liederbuch-listofsongs.sty
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/latex/liederbuch/liederbuch-listofsongs.sty')
-rw-r--r--Master/texmf-dist/tex/latex/liederbuch/liederbuch-listofsongs.sty202
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}