% titledefs.tex
%
% LilyPond titling for LaTeX
%
% Note:
%
%    Defining a value, but leaving it empty:
%        \def\lilypondfoo{}
%    makes LaTeX break on the \\ in:
%        \ifx\lilypondfoo\undefined\else{\lilypondfoo\\}\fi
%
\edef\titledefsELC{\the\endlinechar}%
\endlinechar -1\relax

% The feta characters for use in titles
\input feta20.tex

\font\fetasixteen=feta16
\def\fetafont{\fetasixteen}
\def\fetachar#1{\hbox{\fetasixteen#1}}

\def\makelilypondtitle{
  \begin{center}
    \lilypondifundefined{lilyponddedication}
    {}
    {\normalfont\lilyponddedication\\}
    
    \bfseries
    
    \lilypondifundefined{lilypondtitle}
    {}
    {\huge\lilypondtitle\\}
    
    \lilypondifundefined{lilypondsubtitle}
    {}
    {\Large\lilypondsubtitle\\}
    
    \lilypondifundefined{lilypondsubsubtitle}
    {}
    {\large\lilypondsubsubtitle\\}
  \end{center}
  
  \bigskip
  
  \begin{minipage}[t]{0.45\textwidth}
    \lilypondifundefined{lilypondpoet}
    {}
    {\lilypondpoet\\}
    
    \lilypondifundefined{lilypondtexttranslator}
    {}
    {\lilypondtexttranslator\\}
    
    \lilypondifundefined{lilypondmeter}
    {}
    {\lilypondmeter\\}
  \end{minipage}
  
  \hspace*{\fill}
  
  \begin{minipage}[t]{0.45\textwidth}
    \begin{flushright}
      \lilypondifundefined{lilypondcomposer}
      {}
      {\large\normalfont\scshape\lilypondcomposer\\}
      
      \lilypondifundefined{lilypondopus}
      {}
      {\lilypondopus\\}
      
      \lilypondifundefined{lilypondarranger}
      {}
      {\lilypondarranger\\}
    \end{flushright}
  \end{minipage}
  
  \par
  
  \lilypondifundefined{lilypondinstrument}
  {}
  {\centerline{\large\lilypondinstrument}}
  
  \lilypondifundefined{lilypondpiece}
  {}
  {\flushleft{\large\normalfont\lilypondpiece}
    \par}
  
% \leavevmode

  \global\let\lilypondopus\undefined
  \global\let\lilypondpiece\undefined
  \global\let\mustmakelilypondtitle\undefined
}

\def\makelilypondpiecetitle{
  \bigskip\myfilbreak

  \lilypondifundefined{lilypondopus}
  {}
  {\flushright{\lilypondopus}
    \par}
  
  \lilypondifundefined{lilypondpiece}
  {}
  {\flushleft{\large\normalfont\lilypondpiece}
    \par}
  
  \nopagebreak

  \global\let\lilypondopus\undefined
  \global\let\lilypondpiece\undefined
  \global\let\mustmakelilypondpiecetitle\undefined
}

% header -- head ?
% these names can't be changed: they're used in mutopia headers

\def\theheader{
  \lilypondifundefined{lilypondhead}
  {}
  \lilypondhead
}

\def\thefooter{
  \lilypondifundefined{lilypondfooter}
  {}
  \lilypondfooter
}

\def\makelilypondtagline{
  \lilypondifundefined{lilypondtagline}
  {}
  \lilypondtagline
}

\def\thecopyright{
  \lilypondifundefined{lilypondcopyright}
  \thefooter
  \lilypondcopyright
}

% Moved header and footer definitions here from the lilypond script.
% Separate page styles for first, last and ordinary (plain) pages.

\makeatletter

\renewcommand{\ps@plain}{
  \renewcommand{\@oddfoot}{
    \parbox{\textwidth}{\mbox{}\thefooter}}
  \renewcommand{\@evenfoot}{
    \@oddfoot}
  \renewcommand{\@evenhead}{
    \hbox to \textwidth{\textbf{\thepage}\hfill{\small\theheader}}}
  \renewcommand{\@oddhead}{
    \hbox to \textwidth{{\small\theheader}\hfill\textbf{\thepage}}}
}

\newcommand{\ps@firstpage}{
  \renewcommand{\@oddfoot}{
    \parbox{\textwidth}{\mbox{}\thecopyright}}
  \renewcommand{\@evenfoot}{
    \@oddfoot}
}

\newcommand{\ps@lastpage}{
  \renewcommand{\@oddfoot}{
    \parbox{\textwidth}{\mbox{}\makelilypondtagline}}
  \renewcommand{\@evenfoot}{
    \@oddfoot}
}

\makeatother

\endlinechar \titledefsELC
\endinput
