mirror of https://github.com/patacrep/patacrep.git
Louis
11 years ago
16 changed files with 546 additions and 428 deletions
@ -0,0 +1,60 @@ |
|||||
|
(* set indexes = "titleidx,authidx" *) |
||||
|
|
||||
|
(* extends "songs.tex" *) |
||||
|
|
||||
|
(* block songbookpreambule *) |
||||
|
(( super() )) |
||||
|
|
||||
|
\usepackage{chords} |
||||
|
|
||||
|
\title{((title))} |
||||
|
\author{((author))} |
||||
|
\subtitle{((subtitle))} |
||||
|
(* if version!="unknown" *) |
||||
|
\version{((version))} |
||||
|
(* endif *) |
||||
|
\mail{((mail))} |
||||
|
\web{((web))} |
||||
|
\picture{((picture))} |
||||
|
\picturecopyright{((picturecopyright))} |
||||
|
\footer{((footer))} |
||||
|
|
||||
|
\newindex{titleidx}{((filename))_title} |
||||
|
\newauthorindex{authidx}{((filename))_auth} |
||||
|
|
||||
|
(* for prefix in titleprefixwords *) |
||||
|
\titleprefixwords{((prefix))} |
||||
|
(* endfor*) |
||||
|
(* for key in titleprefixkeys *) |
||||
|
(* for word in authwords.key *) |
||||
|
(* if key=="after" *) |
||||
|
\authbyword{((word))} |
||||
|
(* else *) |
||||
|
\auth((key))word{((word))} |
||||
|
(* endif *) |
||||
|
(* endfor *) |
||||
|
(* endfor*) |
||||
|
(* endblock *) |
||||
|
|
||||
|
(* block title *) |
||||
|
\maketitle |
||||
|
(* endblock *) |
||||
|
|
||||
|
(* block index *) |
||||
|
\showindex{\songindexname}{titleidx} |
||||
|
\showindex{\authorindexname}{authidx} |
||||
|
(* if lang==french *) |
||||
|
\notenamesin{A}{B}{C}{D}{E}{F}{G} |
||||
|
\notenamesout{La}{Si}{Do}{Ré}{Mi}{Fa}{Sol} |
||||
|
(* endif *) |
||||
|
(* endblock *) |
||||
|
|
||||
|
(* block chords *) |
||||
|
% list of chords |
||||
|
\ifchorded |
||||
|
\phantomsection |
||||
|
\addcontentsline{toc}{section}{\chordlistname} |
||||
|
\chords |
||||
|
\fi |
||||
|
(* endblock *) |
||||
|
|
@ -1,154 +0,0 @@ |
|||||
% Copyright (C) 2009-2010 Romain Goffe, Alexandre Dupas |
|
||||
% Copyright (C) 2008 Kevin W. Hamlen |
|
||||
% |
|
||||
% This program is free software; you can redistribute it and/or |
|
||||
% modify it under the terms of the GNU General Public License |
|
||||
% as published by the Free Software Foundation; either version 2 |
|
||||
% of the License, or (at your option) any later version. |
|
||||
% |
|
||||
% This program is distributed in the hope that it will be useful, |
|
||||
% but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
||||
% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
||||
% GNU General Public License for more details. |
|
||||
% |
|
||||
% You should have received a copy of the GNU General Public License |
|
||||
% along with this program; if not, write to the Free Software |
|
||||
% Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, |
|
||||
% MA 02110-1301, USA. |
|
||||
% |
|
||||
% The latest version of this program can be obtained from |
|
||||
% http://songs.sourceforge.net. |
|
||||
% |
|
||||
% Modified to serve personnal purposes. Newer versions can be |
|
||||
% obtained from http://www.lohrun.net. |
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
|
||||
% Template parameters |
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
|
||||
%%:[ |
|
||||
%%: {"name":"title", "description":"Title", "default":"Recueil de chansons pour guitare", "mandatory":true}, |
|
||||
%%: {"name":"author", "description":"Author", "default":"The Songbook Team", "mandatory":true}, |
|
||||
%%: {"name":"booktype", "description":"Type", "type":"enum", "values":["chorded","lyric"], "default":"chorded", "mandatory":true}, |
|
||||
%%: {"name":"lang", "description":"Language", "default":"english"}, |
|
||||
%%: {"name":"instruments", "description":"Instruments", "type":"flag", "values":["guitar","ukulele"], "join":",", "mandatory":true, "default":["guitar"]}, |
|
||||
%%: {"name":"bookoptions", "description":"Options", "type":"flag", "values":["diagram","importantdiagramonly","lilypond","pictures","tabs","repeatchords","onesongperpage"], "join":",", "mandatory":true, "default":["diagram","pictures"]}, |
|
||||
%%: {"name":"version", "description":"Version", "default":"unknown"}, |
|
||||
%%: {"name":"subtitle", "description":"Subtitle"}, |
|
||||
%%: {"name":"web", "description":"Web", "default":"http://www.patacrep.com"}, |
|
||||
%%: {"name":"mail", "description":"Email", "default":"crep@team-on-fire.com"}, |
|
||||
%%: {"name":"picture", "description":"Picture", "type":"file", "default":"treble_a"}, |
|
||||
%%: {"name":"picturecopyright", "description":"Copyright", "default":"Dbolton \\url{http://commons.wikimedia.org/wiki/User:Dbolton}"}, |
|
||||
%%: {"name":"footer", "description":"Footer", "default":"\\begin{flushright}Generated using Songbook (\\url{http://www.patacrep.com})\\end{flushright}"}, |
|
||||
%%: {"name":"mainfontsize", "description":"Font Size", "type":"font", "default":"10"}, |
|
||||
%%: {"name":"songnumberbgcolor", "description":"Number Shade", "type":"color", "default":"#D1E4AE"}, |
|
||||
%%: {"name":"notebgcolor", "description":"Note Shade", "type":"color", "default":"#D1E4AE"}, |
|
||||
%%: {"name":"indexbgcolor", "description":"Index Shade", "type":"color", "default":"#D1E4AE"}, |
|
||||
%%: {"name":"titleprefixwords", "description":"Ignore some words in the beginning of song titles"}, |
|
||||
%%: {"name":"authwords", "descriptipn":"Set of options to process author string (LaTeX commands authsepword, authignoreword, authbyword)"}, |
|
||||
%%: {"name":"languages", "description":"List of languages used by songs", "default":""} |
|
||||
%%:] |
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
|
||||
% begin document |
|
||||
\makeatletter\def\input@path{{tex/}} |
|
||||
\documentclass[\getbooktype,\getinstruments,\getbookoptions,\getmainfontsize]{crepbook} |
|
||||
\usepackage[utf8]{inputenc} |
|
||||
\usepackage[T1]{fontenc} |
|
||||
\usepackage{lmodern} |
|
||||
|
|
||||
\PassOptionsToPackage{\getlanguages}{babel} |
|
||||
\PassOptionsToPackage{\getlang}{babel} |
|
||||
\usepackage{babel} |
|
||||
|
|
||||
\title{\gettitle} |
|
||||
\author{\getauthor} |
|
||||
\subtitle{\getsubtitle} |
|
||||
\version{\getversion} |
|
||||
\mail{\getmail} |
|
||||
\web{\getweb} |
|
||||
\picture{\getpicture} |
|
||||
\picturecopyright{\getpicturecopyright} |
|
||||
\footer{\getfooter} |
|
||||
\lang{\getlang} |
|
||||
|
|
||||
\newindex{titleidx}{\getname_title} |
|
||||
\newauthorindex{authidx}{\getname_auth} |
|
||||
|
|
||||
\graphicspath{\getDataImgDirectory} |
|
||||
|
|
||||
\definecolor{SongNumberBgColor}{HTML}{\getsongnumberbgcolor} |
|
||||
\definecolor{NoteBgColor}{HTML}{\getnotebgcolor} |
|
||||
\definecolor{IndexBgColor}{HTML}{\getindexbgcolor} |
|
||||
|
|
||||
\renewcommand{\snumbgcolor}{SongNumberBgColor} |
|
||||
\renewcommand{\notebgcolor}{NoteBgColor} |
|
||||
\renewcommand{\idxbgcolor}{IndexBgColor} |
|
||||
|
|
||||
\gettitleprefixwords |
|
||||
\getauthwords |
|
||||
|
|
||||
\pagestyle{empty} |
|
||||
|
|
||||
% Customization of the page appearance |
|
||||
\usepackage[ |
|
||||
a4paper % paper size |
|
||||
,includeheadfoot % include header and footer into text size |
|
||||
,hmarginratio=1:1 % ratio between inner and outer margin (default) |
|
||||
,outer=1.8cm % outer margin (right) |
|
||||
,vmarginratio=1:1 % ratio between top and bottom margin |
|
||||
,bmargin=1.3cm % bottom margin |
|
||||
% ,bindingoffset=1.7cm % space reserved to bound pages together |
|
||||
]{geometry} |
|
||||
|
|
||||
\usepackage{chords} |
|
||||
|
|
||||
\begin{document} |
|
||||
|
|
||||
% translate default title |
|
||||
\IfStrEq{\gettitle}{Recueil de chansons pour guitare}{ |
|
||||
\IfStrEq{\getlang}{english}{\title{Patacrep songbook}}{} |
|
||||
}{} |
|
||||
|
|
||||
\maketitle |
|
||||
|
|
||||
% indexes |
|
||||
\IfStrEq{\getlang}{english}{ |
|
||||
\showindex{Songs Index}{titleidx} |
|
||||
}{ |
|
||||
\showindex{Index des chansons}{titleidx} |
|
||||
} |
|
||||
\IfStrEq{\getlang}{english}{ |
|
||||
\showindex{Authors Index}{authidx} |
|
||||
}{ |
|
||||
\showindex{Index des auteurs}{authidx} |
|
||||
} |
|
||||
|
|
||||
% chords notation |
|
||||
\IfStrEq{\getlang}{french}{ |
|
||||
\notenamesin{A}{B}{C}{D}{E}{F}{G} |
|
||||
\notenamesout{La}{Si}{Do}{Ré}{Mi}{Fa}{Sol} |
|
||||
}{} |
|
||||
|
|
||||
% list of chords |
|
||||
\ifchorded |
|
||||
\phantomsection |
|
||||
\IfStrEq{\getlang}{english}{ |
|
||||
\addcontentsline{toc}{section}{Chords list} |
|
||||
}{ |
|
||||
\addcontentsline{toc}{section}{Liste des accords} |
|
||||
} |
|
||||
\chords |
|
||||
\fi |
|
||||
|
|
||||
% songs |
|
||||
\phantomsection |
|
||||
\IfStrEq{\getlang}{english}{ |
|
||||
\addcontentsline{toc}{section}{Songs list} |
|
||||
}{ |
|
||||
\addcontentsline{toc}{section}{Liste des chansons} |
|
||||
} |
|
||||
\begin{songs}{titleidx,authidx} |
|
||||
\getsongslist |
|
||||
\end{songs} |
|
||||
|
|
||||
\end{document} |
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
|
||||
% end document |
|
@ -0,0 +1,65 @@ |
|||||
|
%% Automaticly generated document. |
||||
|
%% You may edit this file but all changes will be overwritten. |
||||
|
%% If you want to change this document, have a look at |
||||
|
%% the templating system. |
||||
|
|
||||
|
% This program is free software; you can redistribute it and/or |
||||
|
% modify it under the terms of the GNU General Public License |
||||
|
% as published by the Free Software Foundation; either version 2 |
||||
|
% of the License, or (at your option) any later version. |
||||
|
% |
||||
|
% This program is distributed in the hope that it will be useful, |
||||
|
% but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
|
% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
|
% GNU General Public License for more details. |
||||
|
% |
||||
|
% You should have received a copy of the GNU General Public License |
||||
|
% along with this program; if not, write to the Free Software |
||||
|
% Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, |
||||
|
% MA 02110-1301, USA. |
||||
|
% |
||||
|
% The latest version of this program can be obtained from |
||||
|
% https://github.com/patacrep/ |
||||
|
|
||||
|
% Copyright (C) 2014 The Songbook team (www.patacrep.com) |
||||
|
|
||||
|
(* block documentclass *) |
||||
|
\documentclass[((booktype)), |
||||
|
(* for option in bookoptions *)((option)), |
||||
|
(* endfor *) |
||||
|
(* for instrument in instruments *)((instrument)), |
||||
|
(* endfor *) |
||||
|
((mainfontsize))pt]{crepbook} |
||||
|
(* endblock *) |
||||
|
|
||||
|
(* block songbookpreambule *) |
||||
|
\usepackage[utf8]{inputenc} |
||||
|
\usepackage[T1]{fontenc} |
||||
|
\usepackage{lmodern} |
||||
|
(* endblock songbookpreambule *) |
||||
|
|
||||
|
(* block preambule *) |
||||
|
(* endblock preambule *) |
||||
|
|
||||
|
\begin{document} |
||||
|
|
||||
|
(* block title *) |
||||
|
(* endblock *) |
||||
|
|
||||
|
(* block preface *) |
||||
|
(* endblock *) |
||||
|
|
||||
|
(* block index *) |
||||
|
(* endblock *) |
||||
|
|
||||
|
(* block chords *) |
||||
|
(* endblock *) |
||||
|
|
||||
|
(* block songs *) |
||||
|
(* endblock *) |
||||
|
|
||||
|
(* block postface *) |
||||
|
(* endblock *) |
||||
|
|
||||
|
\end{document} |
||||
|
% End of file |
@ -0,0 +1,53 @@ |
|||||
|
(% comment %) |
||||
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
||||
|
% Template parameters |
||||
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
||||
|
%%:[ |
||||
|
%%: {"name":"title", "description":"Title", "default":"Recueil de chansons pour guitare", "mandatory":true}, |
||||
|
%%: {"name":"author", "description":"Author", "default":"The Songbook Team", "mandatory":true}, |
||||
|
%%: {"name":"booktype", "description":"Type", "type":"enum", "values":["chorded","lyric"], "default":"chorded", "mandatory":true}, |
||||
|
%%: {"name":"lang", "description":"Language", "default":"english"}, |
||||
|
%%: {"name":"instruments", "description":"Instruments", "type":"flag", "values":["guitar","ukulele"], "join":",", "mandatory":true, "default":["guitar"]}, |
||||
|
%%: {"name":"bookoptions", "description":"Options", "type":"flag", "values":["diagram","importantdiagramonly","lilypond","pictures","tabs","repeatchords","onesongperpage"], "join":",", "mandatory":true, "default":["diagram","pictures"]}, |
||||
|
%%: {"name":"version", "description":"Version", "default":"unknown"}, |
||||
|
%%: {"name":"subtitle", "description":"Subtitle"}, |
||||
|
%%: {"name":"web", "description":"Web", "default":"http://www.patacrep.com"}, |
||||
|
%%: {"name":"mail", "description":"Email", "default":"crep@team-on-fire.com"}, |
||||
|
%%: {"name":"picture", "description":"Picture", "type":"file", "default":"treble_a"}, |
||||
|
%%: {"name":"picturecopyright", "description":"Copyright", "default":"Dbolton \\url{http://commons.wikimedia.org/wiki/User:Dbolton}"}, |
||||
|
%%: {"name":"footer", "description":"Footer", "default":"\\begin{flushright}Generated using Songbook (\\url{http://www.patacrep.com})\\end{flushright}"}, |
||||
|
%%: {"name":"mainfontsize", "description":"Font Size", "type":"font", "default":"10"}, |
||||
|
%%: {"name":"songnumberbgcolor", "description":"Number Shade", "type":"color", "default":"D1E4AE"}, |
||||
|
%%: {"name":"notebgcolor", "description":"Note Shade", "type":"color", "default":"D1E4AE"}, |
||||
|
%%: {"name":"indexbgcolor", "description":"Index Shade", "type":"color", "default":"D1E4AE"}, |
||||
|
%%: {"name":"titleprefixwords", "description":"Ignore some words in the beginning of song titles"}, |
||||
|
%%: {"name":"authwords", "descriptipn":"Set of options to process author string (LaTeX commands authsepword, authignoreword, authbyword)"}, |
||||
|
%%: {"name":"languages", "description":"List of languages used by songs", "default":"english"} |
||||
|
%%:] |
||||
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
||||
|
(% endcomment %) |
||||
|
|
||||
|
(* extends "default.tex" *) |
||||
|
|
||||
|
(* block songbookpreambule *) |
||||
|
\usepackage[ |
||||
|
a4paper % paper size |
||||
|
,includeheadfoot % include header and footer into text size |
||||
|
,hmarginratio=1:1 % ratio between inner and outer margin (default) |
||||
|
,outer=1.8cm % outer margin (right) |
||||
|
,vmarginratio=1:1 % ratio between top and bottom margin |
||||
|
,bmargin=1.3cm % bottom margin |
||||
|
]{geometry} |
||||
|
|
||||
|
(( super() )) |
||||
|
|
||||
|
\pagestyle{empty} |
||||
|
|
||||
|
\definecolor{SongNumberBgColor}{HTML}{((songnumberbgcolor))} |
||||
|
\definecolor{NoteBgColor}{HTML}{((notebgcolor))} |
||||
|
\definecolor{IndexBgColor}{HTML}{((indexbgcolor))} |
||||
|
|
||||
|
\renewcommand{\snumbgcolor}{SongNumberBgColor} |
||||
|
\renewcommand{\notebgcolor}{NoteBgColor} |
||||
|
\renewcommand{\idxbgcolor}{IndexBgColor} |
||||
|
(* endblock *) |
@ -0,0 +1,25 @@ |
|||||
|
(* extends "layout.tex" *) |
||||
|
|
||||
|
(* block songbookpreambule *) |
||||
|
(( super() )) |
||||
|
|
||||
|
|
||||
|
(* for lang in songlist.languages() *) |
||||
|
\PassOptionsToPackage{((lang))}{babel} |
||||
|
(* endfor *) |
||||
|
\usepackage[((lang))]{babel} |
||||
|
\lang{((lang))} |
||||
|
|
||||
|
\graphicspath{{((datadir))/img/}} |
||||
|
(* endblock *) |
||||
|
|
||||
|
(* block songs *) |
||||
|
\phantomsection |
||||
|
\addcontentsline{toc}{section}{\songlistname} |
||||
|
|
||||
|
\begin{songs}{((indexes|default('')))} |
||||
|
(* for song in songlist.songs *) |
||||
|
\input{((song.path))} |
||||
|
(* endfor *) |
||||
|
\end{songs} |
||||
|
(* endblock *) |
@ -0,0 +1,72 @@ |
|||||
|
#!/usr/bin/env python |
||||
|
# -*- coding: utf-8 -*- |
||||
|
"""Template for .tex generation settings and utilities""" |
||||
|
|
||||
|
from jinja2 import Environment, FileSystemLoader, ChoiceLoader, PackageLoader |
||||
|
import os |
||||
|
import re |
||||
|
|
||||
|
_LATEX_SUBS = ( |
||||
|
(re.compile(r'\\'), r'\\textbackslash'), |
||||
|
(re.compile(r'([{}_#%&$])'), r'\\\1'), |
||||
|
(re.compile(r'~'), r'\~{}'), |
||||
|
(re.compile(r'\^'), r'\^{}'), |
||||
|
(re.compile(r'"'), r"''"), |
||||
|
(re.compile(r'\.\.\.+'), r'\\ldots'), |
||||
|
) |
||||
|
|
||||
|
|
||||
|
def _escape_tex(value): |
||||
|
'''Escape TeX special characters''' |
||||
|
newval = value |
||||
|
for pattern, replacement in _LATEX_SUBS: |
||||
|
newval = pattern.sub(replacement, newval) |
||||
|
return newval |
||||
|
|
||||
|
class TexRenderer(object): |
||||
|
"""Render a template to a LaTeX file.""" |
||||
|
|
||||
|
def __init__(self, template, datadir=''): |
||||
|
'''Start a new jinja2 environment for .tex creation. |
||||
|
|
||||
|
Arguments: |
||||
|
- datadir: location of the user-defined templates |
||||
|
''' |
||||
|
self.template = template |
||||
|
|
||||
|
self.texenv = Environment( |
||||
|
loader=ChoiceLoader([ |
||||
|
FileSystemLoader( |
||||
|
os.path.join(datadir, 'templates') |
||||
|
), |
||||
|
PackageLoader( |
||||
|
'songbook_core', os.path.join('data', 'templates') |
||||
|
), |
||||
|
]) |
||||
|
) |
||||
|
self.texenv.block_start_string = '(*' |
||||
|
self.texenv.block_end_string = '*)' |
||||
|
self.texenv.variable_start_string = '((' |
||||
|
self.texenv.variable_end_string = '))' |
||||
|
self.texenv.comment_start_string = '(% comment %)' |
||||
|
self.texenv.comment_end_string = '(% endcomment %)' |
||||
|
self.texenv.filters['escape_tex'] = _escape_tex |
||||
|
self.texenv.trim_blocks = True |
||||
|
self.texenv.lstrip_blocks = True |
||||
|
|
||||
|
def file_template(self): |
||||
|
"""Return the filename of the selected template.""" |
||||
|
return self.texenv.get_template(self.template).filename |
||||
|
|
||||
|
def render_tex(self, output, context): |
||||
|
'''Render a template into a .tex file |
||||
|
|
||||
|
Arguments: |
||||
|
- output: a file object to write the result |
||||
|
- context: all the data to populate the template |
||||
|
''' |
||||
|
|
||||
|
#pylint: disable=star-args |
||||
|
output.write( |
||||
|
self.texenv.get_template(self.template).render(**context) |
||||
|
) |
Loading…
Reference in new issue