]> git.donarmstrong.com Git - lilypond.git/blobdiff - tex/titledefs.tex
(Introduction): rewrite
[lilypond.git] / tex / titledefs.tex
index 1c853c8366a9fd0296484432667afa3b20ed08eb..9894742ba4cba42386f790fb0f038e988fb1d5a2 100644 (file)
+% titledefs.tex
 %
-% ideally, we should create a LaTeX/TeX class
-% for setting music in different sizes.
+% LilyPond titling for LaTeX
 %
-% Version 0.1
+% Note:
 %
-\def\thetitle{}
-\def\thesubtitle{}
-\def\thesubsubtitle{}
-\def\thecomposer{}
-\def\thearranger{}
-\def\theinstrument{}
-\def\theopus{}
-\def\thepiece{}
-\def\themeter{}
-\def\thepoet{}
-\def\theheader{}
-\def\thefooter{}
-\def\theorchestralinstrument{}
+%    Defining a value, but leaving it empty:
+%        \def\lilypondfoo{}
+%    makes LaTeX break on the \\ in:
+%        \ifx\lilypondfoo\undefined\else{\lilypondfoo\\}\fi
 %
-% duh.  LaTeX has a \title too.
-\renewcommand*{\title}[1]{\def\thetitle{#1}}
-\newcommand*{\subtitle}[1]{\def\thesubtitle{#1}}
-\newcommand*{\subsubtitle}[1]{\def\thesubsubtitle{#1}}
-\newcommand*{\composer}[1]{\def\thecomposer{#1}}
-\newcommand*{\arranger}[1]{\def\thearranger{#1}}
-\newcommand*{\instrument}[1]{\def\theinstrument{#1}}
-\newcommand*{\opus}[1]{\def\theopus{#1}}
-\newcommand*{\piece}[1]{\def\thepiece{#1}}
-\newcommand*{\meter}[1]{\def\themeter{#1}}
-\newcommand*{\poet}[1]{\def\thepoet{#1}}
-%
-\newcommand*{\lilypondtitle}[1]{\def\thetitle{#1}}
-\newcommand*{\lilypondsubtitle}[1]{\def\thesubtitle{#1}}
-\newcommand*{\lilypondsubsubtitle}[1]{\def\thesubsubtitle{#1}}
-\newcommand*{\lilypondfooter}[1]{\def\thefooter{#1}}
-\newcommand*{\lilypondhead}[1]{\def\theheader{#1}}
-\newcommand*{\lilypondcomposer}[1]{\def\thecomposer{#1}}
-\newcommand*{\lilypondarranger}[1]{\def\thearranger{#1}}
-\newcommand*{\lilypondinstrument}[1]{\def\theinstrument{#1}}
-\newcommand*{\lilypondopus}[1]{\def\theopus{#1}}
-\newcommand*{\lilypondpiece}[1]{\def\thepiece{#1}}
-\newcommand*{\lilypondmetre}[1]{\def\themeter{#1}}
-\newcommand*{\lilypondmeter}[1]{\def\themeter{#1}}
-\newcommand*{\lilypondpoet}[1]{\def\thepoet{#1}}
-%
-%
-\def\lilypondnull{}%
-%
-\def\makelilytitle{%
+\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}
-        \bfseries
-        \ifx\lilypondnull\thetitle\else{\huge\thetitle}\\ \fi
-        \ifx\lilypondnull\thesubtitle\else{\Large\thesubtitle}\\ \fi
-        \ifx\lilypondnull\thesubsubtitle\else{\large\thesubsubtitle}\\ \fi
+    \ifx\lilyponddedication\undefined
+    \else
+      {\normalfont\lilyponddedication\\}
+    \fi
+
+    \bfseries
+
+    \ifx\lilypondtitle\undefined
+    \else
+      {\huge\lilypondtitle\\}
+    \fi
+
+    \ifx\lilypondsubtitle\undefined
+    \else
+      {\Large\lilypondsubtitle\\}
+    \fi
+
+    \ifx\lilypondsubsubtitle\undefined
+    \else
+      {\large\lilypondsubsubtitle\\}
+    \fi
   \end{center}
+
   \bigskip
-  % urg
-  \edef\saveparskip{\parskip}\parskip-5mm
+
   \begin{minipage}[t]{0.45\textwidth}
-        \ifx\lilypondnull\thepoet\else{\thepoet}\\ \fi
-        \ifx\lilypondnull\themeter\else{\themeter}\\ \fi
-  \end{minipage}\hspace*{\fill}
+    \ifx\lilypondpoet\undefined
+    \else
+      {\lilypondpoet\\}
+    \fi
+
+    \ifx\lilypondtexttranslator\undefined
+    \else
+      {\lilypondtexttranslator\\}
+    \fi
+
+    \ifx\lilypondmeter\undefined
+    \else
+      {\lilypondmeter\\}
+    \fi
+  \end{minipage}
+
+  \hspace*{\fill}
+
   \begin{minipage}[t]{0.45\textwidth}
-      \begin{flushright}
-          \ifx\lilypondnull\thecomposer\else{\large\normalfont\scshape\thecomposer}\\ \fi
-          \ifx\lilypondnull\theopus\else{\theopus}\\ \fi
-          \ifx\lilypondnull\thearranger\else{\thearranger}\\ \fi
-        \end{flushright}%
-  \end{minipage}\par
-  \parskip\saveparskip
-  {\center{\large\theinstrument}\par}
-  {\flushleft{\large\normalfont\scshape\thepiece}\par}
-%  \leavevmode
-  \global\let\theopus\relax%
-  \global\let\thepiece\relax%
+    \begin{flushright}
+      \ifx\lilypondcomposer\undefined
+      \else
+        {\large\normalfont\scshape\lilypondcomposer\\}
+      \fi
+
+      \ifx\lilypondopus\undefined
+      \else
+        {\lilypondopus\\}
+      \fi
+
+      \ifx\lilypondarranger\undefined
+      \else
+        {\lilypondarranger\\}
+      \fi
+    \end{flushright}
+  \end{minipage}
+
+  \par
+
+  \ifx\lilypondinstrument\undefined
+  \else
+    {\center{\large\lilypondinstrument}
+     \par}
+  \fi
+
+  \ifx\lilypondpiece\undefined
+  \else
+    {\flushleft{\large\normalfont\scshape\lilypondpiece}
+     \par}
+  \fi
+
+% \leavevmode
+
+  \global\let\lilypondopus\relax
+  \global\let\lilypondpiece\relax
+  \global\let\mustmakelilypondtitle\undefined
 }
-\def\makelilypiecetitle
-{
+
+\def\makelilypondpiecetitle{
   \bigskip\myfilbreak
-  {\flushright{\theopus}\par}
-  {\flushleft{\large\normalfont\scshape\thepiece}\par}
-  \nopagebreak%
-  \global\let\theopus\relax%
-  \global\let\thepiece\relax%
+
+  \ifx\lilypondopus\undefined
+  \else
+    {\flushright{\lilypondopus}
+     \par}
+  \fi
+
+  \ifx\lilypondpiece\undefined
+  \else
+    {\flushleft{\large\normalfont\scshape\lilypondpiece}
+     \par}
+  \fi
+
+  \nopagebreak
+
+  \global\let\lilypondopus\relax
+  \global\let\lilypondpiece\relax
+  \global\let\mustmakelilypondpiecetitle\undefined
+}
+
+% header -- head ?
+% these names can't be changed: they're used in mutopia headers
+
+\def\theheader{
+  \ifx\lilypondhead\undefined
+  \else
+    \lilypondhead
+  \fi
+}
+
+\def\thefooter{
+  \ifx\lilypondfooter\undefined
+  \else
+    \lilypondfooter
+  \fi
+}
+
+\def\makelilypondtagline{
+  \ifx\undefined\lilypondtagline
+  \else
+    \lilypondtagline
+  \fi
 }
-\endinput
 
+\def\thecopyright{
+  \ifx\lilypondcopyright\undefined
+    \thefooter
+  \else
+    \lilypondcopyright
+  \fi
+}
+
+% Moved header and footer definitions here from the ly2dvi 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