From: Reinhold Kainhofer Date: Thu, 8 Sep 2011 22:43:58 +0000 (+0200) Subject: Properly implement configurable headers/footers X-Git-Url: https://repo.or.cz/w/orchestrallily.git/commitdiff_plain/ec207af3bde37cc8ec6cc74a955e0ca71e79633f Properly implement configurable headers/footers --- diff --git a/editionkainhofer.sty b/editionkainhofer.sty index 7e24110..e371985 100644 --- a/editionkainhofer.sty +++ b/editionkainhofer.sty @@ -139,8 +139,8 @@ \newcommand{\scorenumber}[1]{\gdef\@scorenumber{#1}} \let\@ismn\@empty \newcommand{\ismn}[1]{\gdef\@ismn{#1}} -\let\@year\@empty -\renewcommand{\year}[1]{\gdef\@year{#1}} +\let\@yearpublished\@empty +\newcommand{\yearpublished}[1]{\gdef\@yearpublished{#1}} \let\@todos\@empty \newcommand{\todos}[1]{\gdef\@todos{#1}} @@ -278,20 +278,27 @@ \let\oldmaketitle\maketitle +% \def\@printdate{\footnotesize \@date \par\vspace{1em}} +% \def\@printdate{\footnotesize[] \today[] \par[]\vspace{1em}} +\def\@printdate{\footnotesize \the\year \par\vspace{1em}} -\renewcommand\maketitle{\thispagestyle{empty}{\begin{titlepage}% +\renewcommand\maketitle{\thispagestyle{empty}% + \begin{titlepage}% \fontfamily{pbk}\selectfont \let\footnotesize\small \let\footnoterule\relax - \let \footnote \thanks +% \let\footnote\thanks \fontsize{16pt}{18pt}\selectfont \begin{center} \null\vfill + {\footnotesize \@date \par} + \vspace{0.5em} + \ifx\@composer\@empty% \else {\fontsize{22pt}{25pt}\selectfont\textbf{\@composer}\ifx\@composerdate\empty\else{} \relax \@composerdate\fi}% @@ -351,8 +358,8 @@ \vfill - \@publisher\ifx\@year\@empty% - \else, \@year% + \@publisher\ifx\@yearpublished\@empty% + \else, \@yearpublished% \fi\\ \@scorenumber% % \vfill\null @@ -360,7 +367,7 @@ \end{center} \end{titlepage}% - } + \setcounter{footnote}{0}% \global\let\maketitle\relax \setcounter{page}{2} diff --git a/orchestrallily.ily b/orchestrallily.ily index e2b046a..0f9e264 100644 --- a/orchestrallily.ily +++ b/orchestrallily.ily @@ -1406,80 +1406,77 @@ titleScoreMarkup = \markup \piece-title \fromproperty #'header:piece (interpret-markup layout props arg) empty-stencil))) -#(define no-header-table '()) -thisPageNoHeader = #(define-music-function (parser location) () - (let* ((label (gensym "header"))) - (set! no-header-table (cons label no-header-table)) - (make-music 'Music - 'page-marker #t - 'page-label label))) +#(define no-header-table '(1)) +addNoHeaderPage = #(define-music-function (parser location nr) (number?) + (set! no-header-table (cons nr no-header-table)) + (make-music 'Music 'void #t)) +setNoHeaderPages = #(define-music-function (parser location pages) (list?) + (set! no-header-table pages) + (make-music 'Music 'void #t)) - -% TODO: Use the no-header-table! #(define (is-header-page layout props arg) - (let* ((page-number (chain-assoc-get 'page:page-number props -1)) - ) - ;(if (and (> page-number 2) (!= page-number 7)) - (if (> page-number 1) + (let* ((page-number (chain-assoc-get 'page:page-number props -1))) + (if (not (member page-number no-header-table)) (interpret-markup layout props arg) empty-stencil))) -#(define no-footer-table '()) -thisPageNoFooter = #(define-music-function (parser location) () - (let* ((label (gensym "footer"))) - (set! no-footer-table (cons label no-footer-table)) - (make-music 'Music - 'page-marker #t - 'page-label label))) +#(define no-footer-table '(1)) +addNoFooterPage = #(define-music-function (parser location nr) (number?) + (set! no-footer-table (cons nr no-footer-table)) + (make-music 'Music 'void #t)) +setNoFooterPages = #(define-music-function (parser location pages) (list?) + (set! no-footer-table pages) + (make-music 'Music 'void #t)) -% TODO: Use the no-footer-table! #(define (is-footer-page layout props arg) - (let* ((page-number (chain-assoc-get 'page:page-number props -1)) - ;(label 'first-score-page) - ;(table (ly:output-def-lookup layout 'label-page-table)) - ;(label-page (and (list? table) (assoc label table))) - ;(page-number (and label-page (cdr label-page))) - ) - (if (and (> page-number 1)) + (let* ((page-number (chain-assoc-get 'page:page-number props -1))) + (if (not (member page-number no-footer-table)) (interpret-markup layout props arg) empty-stencil))) - -#(define copyright-footer-table '()) -thisPageCopyrightFooter = #(define-music-function (parser location) () - (let* ((label (gensym "copyrightfooter"))) - (set! copyright-footer-table (cons label copyright-footer-table)) - (make-music 'Music - 'page-marker #t - 'page-label label))) - -#(define copyright-pg 1) -#(define (set-copyright-page page) - (set! copyright-pg page) -) - -% TODO: Use the copyright-footer-table! -#(define (copyright-page layout props arg) - (if (= (chain-assoc-get 'page:page-number props -1) copyright-pg) +#(define copyright-pages-table '(1)) +addCopyrightPage = #(define-music-function (parser location nr) (number?) + (set! copyright-pages-table (cons nr copyright-pages-table)) + (make-music 'Music 'void #t)) +setCopyrightPages = #(define-music-function (parser location pages) (list?) + (set! copyright-pages-table pages) + (make-music 'Music 'void #t)) + +#(define (is-copyright-page layout props arg) + (let* ((page-number (chain-assoc-get 'page:page-number props -1))) + (if (member page-number copyright-pages-table) (interpret-markup layout props arg) - empty-stencil)) + empty-stencil))) + \paper { - oddHeaderMarkup = \markup \fill-line { + olyStdOddHeaderMarkup = \markup \fill-line { %% force the header to take some space, otherwise the %% page layout becomes a complete mess. " " \on-the-fly #is-header-page \fromproperty #'header:title \on-the-fly #is-header-page \fromproperty #'page:page-number-string } - evenHeaderMarkup = \markup \fill-line { + olyStdEvenHeaderMarkup = \markup \fill-line { \on-the-fly #is-header-page \fromproperty #'page:page-number-string \on-the-fly #is-header-page \fromproperty #'header:composer " " } + olyInstrumentOddHeaderMarkup = \markup \fill-line { + " " + \on-the-fly #is-header-page \concat { \fromproperty #'header:instrument } + \on-the-fly #is-header-page \fromproperty #'page:page-number-string + } + olyInstrumentEvenHeaderMarkup = \markup \fill-line { + \on-the-fly #is-header-page \fromproperty #'page:page-number-string + \on-the-fly #is-header-page \concat { \fromproperty #'header:composer ": " \fromproperty #'header:title } + " " + } + oddHeaderMarkup = \olyStdOddHeaderMarkup + evenHeaderMarkup = \olyStdEvenHeaderMarkup - oddFooterMarkup = \markup { + olyStdOddFooterMarkup = \markup { \column { \fill-line { %% publisher header field only on title page. @@ -1487,8 +1484,8 @@ thisPageCopyrightFooter = #(define-music-function (parser location) () } \fill-line { %% copyright on the first real score page - \on-the-fly #copyright-page \fromproperty #'header:copyright - \on-the-fly #copyright-page \null + \on-the-fly #is-copyright-page \fromproperty #'header:copyright + \on-the-fly #is-copyright-page \null } \fill-line { %% All other pages get the number of the edition centered @@ -1496,7 +1493,20 @@ thisPageCopyrightFooter = #(define-music-function (parser location) () } } } - + olyInstrumentOddFooterMarkup = \markup { + \column { + \fill-line { + %% copyright on the first real score page + \on-the-fly #is-copyright-page \fromproperty #'header:copyright + \on-the-fly #is-copyright-page \null + } + \fill-line { + %% All other pages get the number of the edition centered + \on-the-fly #is-footer-page \fromproperty #'header:scorenumber + } + } + } + oddFooterMarkup = \olyStdOddFooterMarkup }