mirror of https://github.com/patacrep/patacrep.git
Luthaf
11 years ago
7 changed files with 298 additions and 331 deletions
@ -0,0 +1,123 @@ |
|||
(% 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":""} |
|||
%%:] |
|||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
|||
(% endcomment %) |
|||
(* extends "layout.tex" *) |
|||
(* block extrapackages *) |
|||
\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} |
|||
\usepackage{chords} |
|||
(* endblock extrapackages *) |
|||
|
|||
(* block header *) |
|||
|
|||
\title{((title))} |
|||
\author{((author))} |
|||
\subtitle{((subtitle))} |
|||
(* if version!="unknown" *) |
|||
\version{((version))} |
|||
(* endif *) |
|||
\mail{((mail))} |
|||
\web{((web))} |
|||
\picture{((picture))} |
|||
\picturecopyright{((picturecopyright))} |
|||
\footer{((footer))} |
|||
\lang{((mainlang))} |
|||
|
|||
\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*) |
|||
|
|||
\graphicspath{{((datadir))/img/}} |
|||
\pagestyle{empty} |
|||
(* endblock header *) |
|||
|
|||
(* block preface *) |
|||
\definecolor{SongNumberBgColor}{HTML}{((songnumberbgcolor))} |
|||
\definecolor{NoteBgColor}{HTML}{((notebgcolor))} |
|||
\definecolor{IndexBgColor}{HTML}{((indexbgcolor))} |
|||
|
|||
\renewcommand{\snumbgcolor}{SongNumberBgColor} |
|||
\renewcommand{\notebgcolor}{NoteBgColor} |
|||
\renewcommand{\idxbgcolor}{IndexBgColor} |
|||
|
|||
(* if mainlang==english *) |
|||
\showindex{Songs Index}{titleidx} |
|||
\showindex{Authors Index}{authidx} |
|||
(* else *) |
|||
\showindex{Index des chansons}{titleidx} |
|||
\showindex{Index des auteurs}{authidx} |
|||
(* endif *) |
|||
(* if mainlang==french *) |
|||
\notenamesin{A}{B}{C}{D}{E}{F}{G} |
|||
\notenamesout{La}{Si}{Do}{Ré}{Mi}{Fa}{Sol} |
|||
(* endif *) |
|||
|
|||
% list of chords |
|||
\ifchorded |
|||
\phantomsection |
|||
(* if mainlang==english *) |
|||
\addcontentsline{toc}{section}{Chords list} |
|||
(* else *) |
|||
\addcontentsline{toc}{section}{Liste des accords} |
|||
(* endif *) |
|||
% \chords |
|||
\fi |
|||
(* endblock *) |
|||
|
|||
(* block content *) |
|||
\phantomsection |
|||
(* if mainlang==english *) |
|||
\addcontentsline{toc}{section}{Songs list} |
|||
(* else *) |
|||
\addcontentsline{toc}{section}{Liste des chansons} |
|||
(* endif *) |
|||
|
|||
\begin{songs}{titleidx,authidx} |
|||
(* for song in songlist.songs *) |
|||
\input{((song.path))} |
|||
(* endfor *) |
|||
\end{songs} |
|||
(* endblock *) |
@ -1,152 +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} |
|||
|
|||
\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,58 @@ |
|||
%% 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) |
|||
|
|||
\documentclass[((booktype)), |
|||
(* for option in bookoptions *)((option)), |
|||
(* endfor *) |
|||
(* for instrument in instruments *)((instrument)), |
|||
(* endfor *) |
|||
((mainfontsize))pt]{crepbook} |
|||
(* block packages *) |
|||
\usepackage[utf8]{inputenc} |
|||
\usepackage[T1]{fontenc} |
|||
\usepackage{lmodern} |
|||
(* for lang in songlist.languages() *) |
|||
\PassOptionsToPackage{((lang))}{babel} |
|||
(* endfor *) |
|||
\usepackage{babel} |
|||
(* block extrapackages *) |
|||
(* endblock extrapackages *) |
|||
(* endblock packages *) |
|||
|
|||
(* block header *) |
|||
(* endblock header *) |
|||
|
|||
\begin{document} |
|||
\maketitle |
|||
(* block preface *) |
|||
(* endblock *) |
|||
|
|||
(* block content *) |
|||
(* endblock *) |
|||
|
|||
(* block postface *) |
|||
(* endblock *) |
|||
\end{document} |
|||
% End of file |
@ -0,0 +1,59 @@ |
|||
#!/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 |
|||
|
|||
|
|||
def _init_tex_env(datadir=''): |
|||
'''Start a new jinja2 environment for .tex creation''' |
|||
loader = ChoiceLoader([ |
|||
PackageLoader('songbook_core', 'data/templates'), |
|||
FileSystemLoader(os.path.join(datadir, 'templates')), |
|||
]) |
|||
texenv = Environment(loader=loader) |
|||
texenv.block_start_string = '(*' |
|||
texenv.block_end_string = '*)' |
|||
texenv.variable_start_string = '((' |
|||
texenv.variable_end_string = '))' |
|||
texenv.comment_start_string = '(% comment %)' |
|||
texenv.comment_end_string = '(% endcomment %)' |
|||
texenv.filters['escape_tex'] = _escape_tex |
|||
texenv.trim_blocks = True |
|||
texenv.lstrip_blocks = True |
|||
return texenv |
|||
|
|||
|
|||
def render_tex(output, context, datadir=''): |
|||
'''Render a template into a .tex file |
|||
|
|||
Arguments: |
|||
- output: a file object to write the result |
|||
- context: all the data to populate the template |
|||
- datadir: location of the user-defined templates |
|||
''' |
|||
env = _init_tex_env(datadir=datadir) |
|||
template = env.get_template(context['template']) |
|||
|
|||
content = template.render(**context) |
|||
output.write(content) |
|||
return None # TODO: gestion des erreurs |
Loading…
Reference in new issue