diff --git a/Makefile b/Makefile index 9110593..48bd97e 100644 --- a/Makefile +++ b/Makefile @@ -54,7 +54,7 @@ ${BUILD_OPUS_DIR}: ${TMP_SONG_DIR}/%.pdf: ${SONG_DIR}/%.ly ${SONG_DIR}/%.tex cd ${SRC_DIR} && lualatex --jobname='$(notdir $(basename $@))' --output-directory=${WORKING_DIR}/${TMP_SONG_DIR} --shell-escape ${WORKING_DIR}/${SRC_DIR}/song.tex ${WORKING_DIR}/${SONG_DIR}/$(notdir $(basename $@)).ly ${WORKING_DIR}/${SONG_DIR}/$(notdir $(basename $@)).tex - rm -r ${SRC_DIR}/tmp_ly + rm -r ${SRC_DIR}/tmp-ly ${BUILD_MIDI_DIR}/%.midi: ${TMP_MIDI_DIR}/%-1.midi cp $< $@ @@ -67,7 +67,7 @@ ${BUILD_OPUS_DIR}/%.opus: ${BUILD_MIDI_DIR}/%.midi ${TMP_BOOK_DIR}/%.pdf: ${SRC_DIR}/%.tex ${SRC_DIR}/images/title.png latexmk -cd -lualatex -e '$$lualatex=q/lualatex %O -shell-escape %S/' -output-directory=${WORKING_DIR}/${TMP_BOOK_DIR} $< - rm -r ${SRC_DIR}/tmp_ly + rm -r ${SRC_DIR}/tmp-ly ${TMP_BOOK_DIR}/%-folio.pdf: ${TMP_BOOK_DIR}/%.pdf cd ${TMP_BOOK_DIR} && \ diff --git a/src/kommersbuch.tex b/src/kommersbuch.tex index d34508b..363a612 100644 --- a/src/kommersbuch.tex +++ b/src/kommersbuch.tex @@ -1,6 +1,6 @@ % !Mode:: "TeX:UTF-8" -\documentclass[11pt, openany, oneside]{scrbook} +\documentclass[11pt, openany, twoside]{scrbook} \usepackage[utf8]{inputenc} \usepackage{fontspec} \usepackage{fancyhdr} @@ -42,8 +42,25 @@ \renewcommand\addchaptertocentry[2]{\addtocentrydefault{chapter}{}{#2}} \renewcommand{\contentsname}{Inhalt} -\renewcommand{\cfttoctitlefont}{\huge\textbf\rmfamily} -\renewcommand{\cftchapfont}{\large\rmfamily} + +\setlength{\columnseprule}{0.2pt} + +\hypersetup +{ + bookmarks=true, % show bookmarks bar? + unicode=true, % non-Latin characters in Acrobat’s bookmarks + pdftoolbar=true, % show Acrobat’s toolbar? + pdfmenubar=false, % show Acrobat’s menu? + pdffitwindow=false, % window fit to page when opened + pdfstartview={FitH}, % fits the width of the page to the window + pdftitle={Alcolica Kommersbuch}, % title + pdfauthor={Sebastian Hugentobler}, % author + pdfsubject={Kantenprügel der Alcolica Verbindung}, % subject of the document + pdfcreator={Sebastian Hugentobler}, % creator of the document + pdfproducer={Sebastian Hugentobler}, % producer of the document + pdfnewwindow=true, % links in new window + colorlinks=false, % false: boxed links; true: colored links +} \begin{document} \begin{titlepage} @@ -62,6 +79,12 @@ \tableofcontents \newpage + \lysetoption{staffsize}{22} + \lysetoption{quote}{true} + \lysetoption{indent}{false} + \lysetoption{insert}{inline} + \lysetoption{pass-fonts}{true} + \songs \end{document} diff --git a/src/lyluatex.lua b/src/lyluatex.lua deleted file mode 100644 index 255b25f..0000000 --- a/src/lyluatex.lua +++ /dev/null @@ -1,187 +0,0 @@ -local err, warn, info, log = luatexbase.provides_module({ - name = "lyluatex", - version = '0', - greinternalversion = internalversion, - date = "2017/09/30", - description = "Module lyluatex.", - author = "The Gregorio Project (see CONTRIBUTORS.md)", - copyright = "2008-2017 - The Gregorio Project", - license = "MIT", -}) - -local md5 = require 'md5' - - -LILYPOND = 'lilypond' -TMP = 'tmp_ly' -N = 0 - - -function ly_definir_programme(lilypond) - if lilypond then LILYPOND = lilypond end -end - - -function contenuIntegral(contenu) - local content ="" - for i, Line in ipairs(contenu:explode('\n')) do - if Line:find("^%s*[^%%]*\\include") then - local i = io.open(Line:gsub('%s*\\include%s*"(.*)"%s*$', "%1"), 'r') - if i then - content = content .. contenuIntegral(i:read('*a')) - else - content = content .. Line .. "\n" - end - else - content = content .. Line .. "\n" - end - end - return content -end - - -function direct_ly(ly, largeur, facteur) - N = N + 1 - facteur = calcul_facteur(facteur) - ly = ly:gsub('\\par ', '\n'):gsub('\\([^%s]*) %-([^%s])', '\\%1-%2') - print(ly) - local sortie = TMP..'/'..string.gsub(md5.sumhexa(contenuIntegral(ly))..'-'..facteur..'-'..largeur, '%.', '-') - if not lfs.isfile(sortie..'-systems.tex') then - compiler_ly(entete_lilypond(facteur, largeur - 10)..'\n'..ly, sortie) - end - retour_tex(sortie) -end - - -function inclure_ly(entree, currfiledir, largeur, facteur) - facteur = calcul_facteur(facteur) - nom = splitext(entree, 'ly') - entree = currfiledir..nom..'.ly' - if not lfs.isfile(entree) then entree = kpse.find_file(nom..'.ly') end - if not lfs.isfile(entree) then err("Le fichier %s.ly n'existe pas.", nom) end - local i = io.open(entree, 'r') - ly = i:read('*a') - i:close() - local sortie = TMP..'/' ..string.gsub(md5.sumhexa(contenuIntegral(ly))..'-'..facteur..'-'..largeur, '%.', '-') - if not lfs.isfile(sortie..'-systems.tex') then - compiler_ly(entete_lilypond(facteur, largeur - 10)..'\n'..ly, sortie, dirname(entree)) - end - retour_tex(sortie) -end - - -function compiler_ly(ly, sortie, include) - mkdirs(dirname(sortie)) - local commande = LILYPOND.." ".. - "-dno-point-and-click ".. - "-dbackend=eps ".. - "-djob-count=2 ".. - "-ddelete-intermediate-files " - if include then commande = commande.."-I '"..lfs.currentdir().."/"..include.."' " end - commande = commande.."-o "..sortie.." -" - local p = io.popen(commande, 'w') - p:write(ly) - p:close() -end - - -function entete_lilypond(facteur, largeur) - return string.format( -[[%%En-tête -\version "2.18.2" -#(define default-toplevel-book-handler - print-book-with-defaults-as-systems ) - -#(define toplevel-book-handler - (lambda ( . rest) - (set! output-empty-score-list #f) - (apply print-book-with-defaults rest))) - -#(define toplevel-music-handler - (lambda ( . rest) - (apply collect-music-for-book rest))) - -#(define toplevel-score-handler - (lambda ( . rest) - (apply collect-scores-for-book rest))) - -#(define toplevel-text-handler - (lambda ( . rest) - (apply collect-scores-for-book rest))) - - -#(set-global-staff-size %s) - - -%%Paramètres de la partition -\paper{ - indent = 0\mm - line-width = %s\pt -} - -%%Partition originale -]], -facteur, -largeur -) -end - - -function calcul_facteur(facteur) - if facteur == 0 then facteur = fontinfo(font.current()).size/39321.6 end - return facteur -end - - -function retour_tex(sortie) - local i = io.open(sortie..'-systems.tex', 'r') - contenu = i:read("*all") - i:close() - texoutput, _ = string.gsub( - contenu, - [[includegraphics{]], [[includegraphics{]]..dirname(sortie) - ) - tex.print(([[\noindent]]..texoutput):explode('\n')) -end - - -function dirname(str) - if str:match(".-/.-") then - local name = string.gsub(str, "(.*/)(.*)", "%1") - return name - else - return '' - end -end - - -function splitext(str, ext) - if str:match(".-%..-") then - local name = string.gsub(str, "(.*)(%." .. ext .. ")", "%1") - return name - else - return str - end -end - - -function mkdirs(str) - path = '.' - for dir in string.gmatch(str, '([^%/]+)') do - path = path .. '/' .. dir - lfs.mkdir(path) - end -end - - -local fontdata = fonts.hashes.identifiers -function fontinfo(id) - local f = fontdata[id] - if f then - return f - end - return font.fonts[id] -end - - -mkdirs(TMP) diff --git a/src/lyluatex.sty b/src/lyluatex.sty deleted file mode 100644 index 2588452..0000000 --- a/src/lyluatex.sty +++ /dev/null @@ -1,71 +0,0 @@ -\ProvidesPackage{lyluatex} - -% Dépendances -\RequirePackage{luatexbase} -\RequirePackage{luaotfload} -\RequirePackage{kvoptions} -\RequirePackage{graphicx} -\RequirePackage{keycommand} -\RequirePackage{environ} -\RequirePackage{currfile} -% Options -\DeclareStringOption[lilypond]{program}[lilypond] -\ProcessKeyvalOptions* -% Script lua -\directlua{dofile(kpse.find_file("lyluatex.lua"))} -\directlua{LILYPOND = '\lyluatex@program'} - -% Une tricherie un peu sale pour récupérer la largeur de ligne -\let\bs\textbackslash -{\catcode`p=12 \catcode`t=12 \gdef\un#1pt{#1}} -\newcommand*{\largeur}{\expandafter\un\the\linewidth} -% Taille des partitions -% Si la valeur est 0, elle sera automatiquement calculée -% à partir de la taille de police. -\def\staffsize{0} -\let\localstaffsize\staffsize - - -% Commandes principales -% Inclusion d'un fichier ly -\newkeycommand*\includely[staffsize=\staffsize][autres][1]{% -\directlua{% - inclure_ly( - "\luatexluaescapestring{#1}", - "\luatexluaescapestring{\currfiledir}", - \luatexluaescapestring{\largeur}, - \luatexluaescapestring{\commandkey{staffsize}} - )% -}% -} - -% Inclusion d'un fragment intégré au document (environnement de base) -\NewEnviron{compilerly}{% -\directlua{% - direct_ly( - "\luatexluaescapestring{\unexpanded\expandafter{\BODY}}", - \luatexluaescapestring{\largeur}, - \luatexluaescapestring{\localstaffsize} - )% -}% -} - -% Commande et environnement avec paramètres -\newkeycommand{\lily}[staffsize=\staffsize][autres][1]{% -\def\localstaffsize{\commandkey{staffsize}}% -\begin{compilerly}% -#1 -\end{compilerly}% -} - -\newkeyenvironment{ly}[staffsize=\staffsize][autres]{% -\def\localstaffsize{\commandkey{staffsize}}% -\compilerly% -}{% -\endcompilerly% -} - -% Commandes pour la compatibilité avec lilypond-book -\let\lilypondfile\includely -\let\lilypond\ly -\let\endlilypond\endly diff --git a/src/song.tex b/src/song.tex index 9e85542..1fb88bb 100644 --- a/src/song.tex +++ b/src/song.tex @@ -3,7 +3,6 @@ \documentclass[11pt, openany, oneside]{scrbook} \usepackage{fontspec} -%%\usepackage[a4paper,left=3cm,right=3cm, top=3cm, bottom=3cm,includeheadfoot]{geometry} \usepackage[a4paper]{geometry} \usepackage{lmodern} \usepackage{tgschola} @@ -14,8 +13,14 @@ \pagenumbering{gobble} + \lysetoption{staffsize}{22} + \lysetoption{quote}{true} + \lysetoption{indent}{false} + \lysetoption{insert}{inline} + \lysetoption{pass-fonts}{true} + \directlua{ - tex.sprint("\string\\includely[staffsize=16]{" .. arg[5] .. "}") + tex.sprint("\string\\lilypondfile{" .. arg[5] .. "}") } ~\\ \directlua{ diff --git a/src/songs.lua b/src/songs.lua index 703c14b..00c489a 100644 --- a/src/songs.lua +++ b/src/songs.lua @@ -28,7 +28,7 @@ function find_songs(dir) local ly_title = string.match(ly_content, 'title = "(.-)"') tex.sprint('\\unchapter{' .. ly_title .. '}') - tex.sprint('\\includely[staffsize=16]{' .. dir .. '/' .. file .. '}') + tex.sprint('\\lilypondfile{' .. dir .. '/' .. file .. '}') tex.sprint('~\\\\') tex.sprint('~\\\\') tex.sprint('\\input{' .. dir .. '/' .. file:gsub("%.ly", ".tex") .. '}')