\NeedsTeXFormat{LaTeX2e} \documentclass[10pt]{letter} \usepackage{geometry} \geometry{a4paper,noheadfoot,nomarginpar,left=1.5cm,right=1.5cm,top=1.5cm,bottom=1.5cm} \usepackage{fontspec} \defaultfontfeatures{Ligatures=TeX} \usepackage{polyglossia} \setdefaultlanguage[spelling=old]{german} \setmainfont{CMU Serif} \setsansfont{CMU Sans Serif} \setmonofont{CMU Typewriter Text} \usepackage{graphicx} % % compile with % lualatex --shell-escape lily_xe_lua_latex.tex % or % xelatex --shell-scape lily_xe_lua_latex.tex % \def\tmpNameFull{tmplily.ly} \newwrite\tmpFileFull \def\tmpNameHead{tmplilyhead.ly} \newwrite\tmpFileHead \def\tmpNameTail{tmplilytail.ly} \newwrite\tmpFileTail \def\tmpNamePaper{tmplilypaper.ly} \newwrite\tmpFilePaper \def\tmpNamePdf{tmplily.pdf } \newwrite\tmpFilePdf \def\tmpfragprefix{tmplilyfrag} \def\lilycommand{lilypond } \newcount\fragcount { \catcode`|=0 \catcode`[=1 \catcode`]=2 \catcode`\#=12 \catcode`\{=12 \catcode`\}=12 \catcode`\\=12 |gdef|eofull[\end{lilyfull}] |gdef|eohead[\end{lilyhead}] |gdef|eofrag[\end{lilyfrag}] |gdef|eotail[\end{lilytail}] |gdef|hashtag[#] |gdef|escape[\] |gdef|definepaper[\definepaper] ] { \obeylines \gdef\doline#1 { \def\oneline{#1} \ifx\oneline\eofull \def\next{\end{lilyfull}} \else \ifx\oneline\eohead \def\next{\end{lilyhead}} \else \ifx\oneline\eofrag \def\next{\end{lilyfrag}} \else \ifx\oneline\eotail \def\next{\end{lilytail}} \else \ifx\oneline\definepaper \immediate\write\tmpFile{\escape include "\tmpNamePaper"} \let\next\doline \else \immediate\write\tmpFile{\oneline} \let\next\doline \fi \fi \fi \fi \fi \next% } } \makeatletter \newenvironment{lilyfull}[2]{ \global\advance\fragcount by 1 \immediate\openout\tmpFileFull=\tmpNameFull \gdef\tmpFile{\tmpFileFull} \immediate\openout\tmpFilePaper=\tmpNamePaper \immediate\write\tmpFilePaper{\hashtag(set! paper-alist (cons '("mySize" . (cons (* #1) (* #2))) paper-alist))} \immediate\closeout\tmpFilePaper address@hidden }{ \immediate\closeout\tmpFileFull \immediate\write18{\lilycommand \tmpNameFull} \immediate\write18{pdfcrop \tmpNamePdf \tmpfragprefix\the\fragcount.pdf} \begin{center}\includegraphics{\tmpfragprefix\the\fragcount.pdf}\end{center} } \newenvironment{lilyfrag}[2]{ \global\advance\fragcount by 1 \immediate\openout\tmpFileFull=\tmpNameFull \gdef\tmpFile{\tmpFileFull} \immediate\write\tmpFileFull{\escape include "\tmpNameHead"} \immediate\openout\tmpFilePaper=\tmpNamePaper \immediate\write\tmpFilePaper{\hashtag(set! paper-alist (cons '("mySize" . (cons (* #1) (* #2))) paper-alist))} \immediate\closeout\tmpFilePaper address@hidden }{ \immediate\write\tmpFileFull{\escape include "\tmpNameTail"} \immediate\closeout\tmpFileFull \immediate\write18{\lilycommand \tmpNameFull} \immediate\write18{pdfcrop \tmpNamePdf \tmpfragprefix\the\fragcount.pdf} \begin{center}\includegraphics{\tmpfragprefix\the\fragcount.pdf}\end{center} } \newenvironment{lilyhead}{ \immediate\openout\tmpFileHead=\tmpNameHead \gdef\tmpFile{\tmpFileHead} address@hidden }{ \immediate\closeout\tmpFileHead } \newenvironment{lilytail}{ \immediate\openout\tmpFileTail=\tmpNameTail \gdef\tmpFile{\tmpFileTail} address@hidden }{ \immediate\closeout\tmpFileTail } \makeatother \def\lorem{ Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. } \begin{document} \pagestyle{empty} \lorem \begin{lilyfull}{10 cm}{4.5 cm} \version "2.18.2" \include "deutsch.ly" % Below a page size definition will be inserted instead of \definepaper! \definepaper \paper { #(set-paper-size "mySize") left-margin = 0\cm top-margin = 0\cm bottom-margin = 0\cm line-width = \paper-width indent = 0 page-count = #1 ragged-bottom = ##f ragged-last-bottom = ##f annotate-spacing=##f } \header { title = \markup { \override #'(font-name . "CMU Serif Bold") "Macht hoch die Tür" } subtitle = \markup { \override #'(font-name . "CMU Serif Bold") "Only an example" } tagline = ##f } #(set-global-staff-size 17) allowGrobCallback = #(define-scheme-function (parser location syms) (symbol-list?) (let ((interface (car syms)) (sym (cadr syms))) #{ \with { \consists #(lambda (context) `((acknowledgers . ((,interface . ,(lambda (engraver grob source-engraver) (let ((prop (ly:grob-property grob sym))) (if (procedure? prop) (ly:grob-set-property! grob sym (prop grob))))))))))}#})) absFontSize = #(define-scheme-function (parser location pt)(number?) (lambda (grob) (let* ((layout (ly:grob-layout grob)) (ref-size (ly:output-def-lookup (ly:grob-layout grob) 'text-font-size 12))) (magnification->font-size (/ pt ref-size))))) \score { << \new Voice = "Melody" \relative g'{ \key es \major \time 6/4 \partial 4 g4 b2 as4 g2 f4 es (f) g f2 \breathe \bar"" \break b4 as2 as4 g2 g4 f (es) f es2 \breathe } \new Lyrics \lyricsto "Melody" { \set stanza = "1." Macht hoch die Tür, die Tor macht weit; es kommt der Herr der Herr -- lich -- keit, } >> \layout { \context { \Score \allowGrobCallback font-interface.font-size \omit BarNumber } \override Lyrics.LyricText #'font-name = #"CMU Serif" \override LyricText.font-size = \absFontSize #10 \override StanzaNumber.font-name = #"CMU Serif Extra" \override StanzaNumber.font-size = \absFontSize #10 } } \end{lilyfull} \begin{lilyhead} \version "2.18.2" \include "deutsch.ly" % Below a page size definition will be inserted instead of \definepaper! \definepaper \paper { #(set-paper-size "mySize") left-margin = 0\cm top-margin = 0\cm bottom-margin = 0\cm line-width = \paper-width indent = 0 page-count = #1 ragged-bottom = ##t ragged-last-bottom = ##t ragged-right = ##f } \header { tagline = ##f } #(set-global-staff-size 17) \score { << \end{lilyhead} \begin{lilytail} >> \layout { \context { \Score \omit BarNumber } } } \end{lilytail} \lorem \begin{lilyfrag}{8 cm}{5 cm} \relative g'{ \key es \major \time 6/4 \partial 4 g4 b2 as4 g2 f4 es (f) g f2 \breathe} \end{lilyfrag} \lorem \begin{lilyfrag}{9 cm}{5 cm} \relative g'{\key es \major \time 6/4 \partial 4 b4 as2 as4 g2 g4 f (es) f es2 \breathe } \end{lilyfrag} \lorem \end{document}