Homogénéisation de la procédure
This commit is contained in:
parent
95277a2891
commit
3d9fb7b622
|
@ -0,0 +1,203 @@
|
||||||
|
\usepackage{ifxetex}
|
||||||
|
\ifxetex
|
||||||
|
\usepackage{fontspec}
|
||||||
|
%\usepackage{microtype}
|
||||||
|
%\usepackage{xunicode}
|
||||||
|
\usepackage{polyglossia}
|
||||||
|
\usepackage{xltxtra}
|
||||||
|
\setdefaultlanguage{french}
|
||||||
|
\setotherlanguage{english}
|
||||||
|
\defaultfontfeatures{Mapping=tex-text} % To support LaTeX quoting style
|
||||||
|
%\setmainfont{Caviar Dreams}
|
||||||
|
\newfontfamily\headingfont[]{Caviar Dreams}
|
||||||
|
\usepackage{titlesec}
|
||||||
|
\defaultfontfeatures{Ligatures=TeX}
|
||||||
|
% Set sans serif font to Calibri
|
||||||
|
\setsansfont{LiberationSans}
|
||||||
|
% Set serifed font to Cambria
|
||||||
|
\setmainfont{LiberationSans}
|
||||||
|
\else
|
||||||
|
\usepackage[utf8]{inputenc}
|
||||||
|
\usepackage[T1]{fontenc}
|
||||||
|
\usepackage{amsfonts}
|
||||||
|
\usepackage[english, francais]{babel}
|
||||||
|
\fi
|
||||||
|
\usepackage{pifont}
|
||||||
|
\usepackage{geometry}
|
||||||
|
\usepackage{fancybox}
|
||||||
|
\usepackage{verbatim}
|
||||||
|
\usepackage{eurosym}
|
||||||
|
%\usepackage{color}
|
||||||
|
\usepackage[svgnames,table]{xcolor}
|
||||||
|
\usepackage{listings}
|
||||||
|
\usepackage{graphicx}
|
||||||
|
\usepackage{hyperref}
|
||||||
|
\usepackage{titlesec}
|
||||||
|
\usepackage{fancyhdr}
|
||||||
|
\usepackage{lastpage}
|
||||||
|
%\usepackage{enumitem}
|
||||||
|
\usepackage{makeidx}
|
||||||
|
\usepackage{tocbibind}
|
||||||
|
\usepackage[backend=biber,hyperref=true,backref=true]{biblatex}
|
||||||
|
\addbibresource{biblio.bib}
|
||||||
|
\usepackage{url}
|
||||||
|
\renewcommand{\baselinestretch}{1.3}
|
||||||
|
\addto\captionsfrench{\renewcommand{\contentsname}{Sommaire}}
|
||||||
|
\usepackage{graphicx}
|
||||||
|
\usepackage{pdfpages}
|
||||||
|
\makeindex
|
||||||
|
|
||||||
|
%
|
||||||
|
% Tableaux
|
||||||
|
%
|
||||||
|
\usepackage{array}
|
||||||
|
\usepackage{booktabs}
|
||||||
|
\usepackage{colortbl}
|
||||||
|
|
||||||
|
% Default
|
||||||
|
\newcolumntype{1}{l}
|
||||||
|
\newcolumntype{2}{l}
|
||||||
|
\newcolumntype{3}{l}
|
||||||
|
\newcolumntype{4}{l}
|
||||||
|
\newcolumntype{5}{l}
|
||||||
|
\newcolumntype{6}{l}
|
||||||
|
\newcolumntype{7}{l}
|
||||||
|
\newcolumntype{8}{l}
|
||||||
|
\newcommand*\heading{}
|
||||||
|
\newcommand*\beforeheading{}
|
||||||
|
\newcommand*\afterheading{}
|
||||||
|
\newcommand*\normalline{}
|
||||||
|
\newcommand*\lastline{}
|
||||||
|
|
||||||
|
%\renewcommand*\toprule{\arrayrulecolor{red}{\hline}}
|
||||||
|
|
||||||
|
% Nice looking rules, centered cells
|
||||||
|
\newcolumntype{1}{c}
|
||||||
|
\newcolumntype{2}{c}
|
||||||
|
\newcolumntype{3}{c}
|
||||||
|
\newcolumntype{4}{c}
|
||||||
|
\newcolumntype{5}{c}
|
||||||
|
\newcolumntype{6}{c}
|
||||||
|
\newcolumntype{7}{c}
|
||||||
|
\newcolumntype{8}{c}
|
||||||
|
\renewcommand*\heading[1]{\chapterfont\MakeUppercase{#1}}
|
||||||
|
\renewcommand*\beforeheading{\arrayrulecolor{CadolesBlue}\toprule}
|
||||||
|
\renewcommand*\afterheading{\midrule}
|
||||||
|
\renewcommand*\normalline{}
|
||||||
|
\renewcommand*\lastline{\bottomrule}
|
||||||
|
|
||||||
|
\definecolor{CadolesBlue}{rgb}{.16,.50,.69}
|
||||||
|
\definecolor{CadolesLightBlue}{rgb}{.31,.506,.741}
|
||||||
|
\newfontfamily\cadolesfont{Caviar Dreams}
|
||||||
|
\newfontfamily\chapterfont[Color=CadolesBlue]{Caviar Dreams}
|
||||||
|
\newfontfamily\sectionfont[Color=CadolesBlue]{Caviar Dreams}
|
||||||
|
\newfontfamily\subsectionfont[Color=CadolesLightBlue]{Caviar Dreams}
|
||||||
|
\newfontfamily\subsubsectionfont[Color=CadolesLightBlue]{Caviar Dreams}
|
||||||
|
|
||||||
|
\newcommand{\tickYes}{\color{Green}\checkmark}
|
||||||
|
\newcommand{\tickNo}{\color{red}{\hspace{1pt}\ding{55}}}
|
||||||
|
\newcommand{\wlink}[1]{\textcolor{CadolesBlue}{\underline{#1}}}
|
||||||
|
\newcommand{\classname}[1]{\texttt{\textbf{#1}}}
|
||||||
|
%\newcommand{\cadoles}{\chapterfont{Cadoles}}
|
||||||
|
\newcommand{\cadoles}{\cadolesfont\textcolor{black}{Cad}\textcolor{CadolesBlue}{ole}\textcolor{black}{s}}
|
||||||
|
\newcommand{\TitleRule}{\rule[0.5ex]{12cm}{0.5mm}}
|
||||||
|
\newcommand\espace{\vrule height 20pt width 0pt}
|
||||||
|
\newcommand{\titre}[1]{{\color{DarkBlue}\normalfont\LARGE\bfseries #1\smallskip\hrule height 1pt}\bigskip}
|
||||||
|
\renewcommand*\abstractname{Summary}
|
||||||
|
%\renewcommand{\FrenchLabelItem}{\color{DarkBlue}{\ding{68}}}
|
||||||
|
\let\oldfootnoterule\footnoterule
|
||||||
|
\renewcommand\footnoterule{\vspace*{-3pt}%
|
||||||
|
\noindent\rule{3in}{0.4pt}\vspace*{2.6pt}}% -3 + 0.4 + 2.6 = 0
|
||||||
|
|
||||||
|
%\pagestyle{headings}
|
||||||
|
\makeatletter
|
||||||
|
\renewcommand{\thesection}{}
|
||||||
|
\titleformat{\chapter}{\LARGE\chapterfont}{\thesection}{0ex}{}[\color{CadolesBlue}\hrule height 1pt]
|
||||||
|
\titleformat{\section}{\Large\sectionfont}{\thesection}{0ex}{}[\color{CadolesBlue}\hrule height 1pt]
|
||||||
|
\titleformat{\subsection}{\large\subsectionfont}{\thesection}{0ex}{}
|
||||||
|
\titleformat{\subsubsection}{\itshape\subsubsectionfont}{\thesection}{0ex}{}
|
||||||
|
|
||||||
|
\skbinput[from=rep]{style/00-entete-pied-de-page}
|
||||||
|
|
||||||
|
\def\maketitle{
|
||||||
|
\skbfigure[center]{logos/Cadoles}
|
||||||
|
\vspace{4.5cm}
|
||||||
|
|
||||||
|
\begin{flushleft}
|
||||||
|
\textbf{\Huge \cadolesfont\textcolor{CadolesBlue}{\@title}}
|
||||||
|
\end{flushleft}
|
||||||
|
\begin{center}
|
||||||
|
\color{CadolesBlue}\TitleRule
|
||||||
|
\end{center}
|
||||||
|
\begin{flushright}
|
||||||
|
\vspace{-1.5ex}
|
||||||
|
\textbf{\huge \cadolesfont\textcolor{DarkGrey}{\departement}}
|
||||||
|
\end{flushright}
|
||||||
|
\vspace{2.5cm}
|
||||||
|
\pagebreak
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
\def\origine{
|
||||||
|
\vspace{1.5cm}
|
||||||
|
\begin{flushleft}
|
||||||
|
\begin{minipage}[l]{8cm}
|
||||||
|
\skbinput[from=rep]{style/00-Coordonnees}
|
||||||
|
\end{minipage}
|
||||||
|
\end{flushleft}
|
||||||
|
}
|
||||||
|
|
||||||
|
%
|
||||||
|
% Itemize avec la petite cadoles
|
||||||
|
%
|
||||||
|
%\newenvironment{citemize}{\renewcommand{\labelitemi{$\odot$}}}
|
||||||
|
%\newenvironment{citemize}{\renewcommand{\labelitemi{\includegraphics[height=1.6ex]{inc/cadole.png}}}}
|
||||||
|
\newenvironment{citemize}{\renewcommand
|
||||||
|
\labelitemi{\includegraphics[height=1ex]{inc/cadole.png}}\begin{itemize}}{\end{itemize}}
|
||||||
|
|
||||||
|
|
||||||
|
%
|
||||||
|
% Box pour citations
|
||||||
|
%
|
||||||
|
\newsavebox{\fmbox}
|
||||||
|
\newenvironment{fmpage}[1]
|
||||||
|
{\begin{lrbox}{\fmbox}\begin{minipage}{#1}}
|
||||||
|
{\end{minipage}\end{lrbox}\fbox{\usebox{\fmbox}}}
|
||||||
|
|
||||||
|
\hypersetup{
|
||||||
|
backref=true, % Permet d'ajouter des liens dans
|
||||||
|
pagebackref=true, % les bibliographies
|
||||||
|
hyperindex=true, % Ajoute des liens dans les index.
|
||||||
|
colorlinks=true, % Colorise les liens.
|
||||||
|
breaklinks=true, % Permet le retour à la ligne dans les liens trop longs.
|
||||||
|
urlcolor= CadolesBlue, % Couleur des hyperliens.
|
||||||
|
linkcolor= CadolesBlue, % Couleur des liens internes.
|
||||||
|
bookmarks=true, % Créé des signets pour Acrobat.
|
||||||
|
bookmarksopen=true, % Si les signets Acrobat sont créés,
|
||||||
|
% les afficher complètement.
|
||||||
|
pdftitle={\@title}, % Titre du document.
|
||||||
|
% Informations apparaissant dans
|
||||||
|
pdfauthor={Cadoles}, % dans les informations du document
|
||||||
|
pdfsubject={Proposition Commerciale} % sous Acrobat.
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
%\topmargin 0in
|
||||||
|
%\leftmargin 2.5cm
|
||||||
|
%\rightmargin 2.5cm
|
||||||
|
|
||||||
|
\setlength{\hoffset}{-18pt}
|
||||||
|
\setlength{\oddsidemargin}{0pt} % Marge gauche sur pages impaires
|
||||||
|
\setlength{\evensidemargin}{9pt} % Marge gauche sur pages paires
|
||||||
|
\setlength{\marginparwidth}{54pt} % Largeur de note dans la marge
|
||||||
|
%\setlength{\textwidth}{481pt} % Largeur de la zone de texte (17cm)
|
||||||
|
\setlength{\voffset}{-18pt} % Bon pour DOS
|
||||||
|
\setlength{\marginparsep}{7pt} % Séparation de la marge
|
||||||
|
\setlength{\topmargin}{0pt} % Pas de marge en haut
|
||||||
|
\setlength{\headheight}{13pt} % Haut de page
|
||||||
|
\setlength{\headsep}{10pt} % Entre le haut de page et le texte
|
||||||
|
\setlength{\footskip}{27pt} % Bas de page + séparation
|
||||||
|
\setlength{\textheight}{708pt} % Hauteur de la zone de texte (25cm)
|
||||||
|
|
||||||
|
|
|
@ -7,6 +7,7 @@ import random
|
||||||
import time
|
import time
|
||||||
from os import path, makedirs, listdir
|
from os import path, makedirs, listdir
|
||||||
from jinja2 import Environment, FileSystemLoader
|
from jinja2 import Environment, FileSystemLoader
|
||||||
|
import pygit2
|
||||||
|
|
||||||
LICENSES = {'CC-by-sa-2.0': 'license-cc-by-sa-2.0',
|
LICENSES = {'CC-by-sa-2.0': 'license-cc-by-sa-2.0',
|
||||||
}
|
}
|
||||||
|
@ -46,8 +47,42 @@ def escape_tex(value):
|
||||||
return newval
|
return newval
|
||||||
|
|
||||||
|
|
||||||
|
def normalize_branch(args):
|
||||||
|
if 'master' in args:
|
||||||
|
return path.dirname(args.master).replace('/', '')
|
||||||
|
elif 'directory' in args:
|
||||||
|
return args.directory.replace('/', '')
|
||||||
|
else:
|
||||||
|
raise Exception('No sufficient information to create branch')
|
||||||
|
|
||||||
|
|
||||||
|
def git_integration(func):
|
||||||
|
def inner(args):
|
||||||
|
try:
|
||||||
|
repo = pygit2.Repository('./')
|
||||||
|
except:
|
||||||
|
repo = None
|
||||||
|
if repo:
|
||||||
|
branch_name = normalize_branch(args)
|
||||||
|
if not branch_name in repo.branches.local:
|
||||||
|
master_ref = repo.references['refs/heads/master']
|
||||||
|
commit = master_ref.peel()
|
||||||
|
repo.branches.local.create(branch_name, commit)
|
||||||
|
|
||||||
|
# état du dépôt, si il n’est pas propre, sortir
|
||||||
|
# checkout sur la branche master
|
||||||
|
# création d’une branche spécifique pour le document à partir de la branche master
|
||||||
|
# création des fichiers
|
||||||
|
func(args)
|
||||||
|
if repo: # à transformer en decorateur éventuellement
|
||||||
|
print('add et commit')
|
||||||
|
# ajout tout le contenu hors presentations dans la branche master
|
||||||
|
# ajout de tout le contenu de presentations dans la branche spécifique
|
||||||
|
return inner
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
|
|
||||||
|
@git_integration
|
||||||
def init(args):
|
def init(args):
|
||||||
"""
|
"""
|
||||||
init function
|
init function
|
||||||
|
@ -69,33 +104,20 @@ def main():
|
||||||
root = '../'
|
root = '../'
|
||||||
if args.directory:
|
if args.directory:
|
||||||
root = root + re.sub(r'[\w-]+/?', '../', args.directory)
|
root = root + re.sub(r'[\w-]+/?', '../', args.directory)
|
||||||
else:
|
|
||||||
root = '../'
|
|
||||||
|
|
||||||
name = args.name
|
name = 'master.tex'
|
||||||
if name:
|
|
||||||
if path.splitext(name)[1] == '':
|
|
||||||
name = name + '.tex'
|
|
||||||
else:
|
|
||||||
name = get_unique_name('formation')
|
|
||||||
|
|
||||||
title = args.title
|
title = args.title
|
||||||
if not title:
|
if not title:
|
||||||
title = 'FIXME'
|
title = 'FIXME'
|
||||||
else:
|
|
||||||
title = title
|
|
||||||
|
|
||||||
author = args.author
|
author = args.author
|
||||||
if not author:
|
if not author:
|
||||||
author = 'Cadoles'
|
author = 'Cadoles'
|
||||||
else:
|
|
||||||
author = author
|
|
||||||
|
|
||||||
client = args.client
|
client = args.client
|
||||||
if not client:
|
if not client:
|
||||||
client = 'FIXME'
|
client = 'FIXME'
|
||||||
else:
|
|
||||||
client = client
|
|
||||||
|
|
||||||
institutes = get_institutes_logos(args.institutes)
|
institutes = get_institutes_logos(args.institutes)
|
||||||
logos_count = len(institutes) + 1
|
logos_count = len(institutes) + 1
|
||||||
|
@ -121,7 +143,9 @@ def main():
|
||||||
master = TEMPLATES[document_class]['master']
|
master = TEMPLATES[document_class]['master']
|
||||||
master_dir = path.join('presentations', directory)
|
master_dir = path.join('presentations', directory)
|
||||||
programme_dir = path.join(master_dir, 'programme')
|
programme_dir = path.join(master_dir, 'programme')
|
||||||
resources = [(path.join('presentations', directory), master),
|
resources = [(master_dir, master),
|
||||||
|
(master_dir, 'programme.tex'),
|
||||||
|
(master_dir, 'support.tex'),
|
||||||
(programme_dir, 'contenu.tex'),
|
(programme_dir, 'contenu.tex'),
|
||||||
(programme_dir, 'duree.tex'),
|
(programme_dir, 'duree.tex'),
|
||||||
(programme_dir, 'evaluation.tex'),
|
(programme_dir, 'evaluation.tex'),
|
||||||
|
@ -130,9 +154,6 @@ def main():
|
||||||
(programme_dir, 'prerequis.tex'),
|
(programme_dir, 'prerequis.tex'),
|
||||||
(programme_dir, 'public.tex'),
|
(programme_dir, 'public.tex'),
|
||||||
]
|
]
|
||||||
#('slides', 'license-cc-by-sa-2.0.tex'),
|
|
||||||
#('slides', 'preambule.tex'),
|
|
||||||
#('slides', 'title.tex')]
|
|
||||||
for directory, template_file in resources:
|
for directory, template_file in resources:
|
||||||
template = jinja_env.get_template(template_file)
|
template = jinja_env.get_template(template_file)
|
||||||
rendered_template = template.render(**env)
|
rendered_template = template.render(**env)
|
||||||
|
@ -142,6 +163,7 @@ def main():
|
||||||
with open(path.join(directory, template_dest_name), 'w') as rendered_file:
|
with open(path.join(directory, template_dest_name), 'w') as rendered_file:
|
||||||
rendered_file.write(rendered_template)
|
rendered_file.write(rendered_template)
|
||||||
|
|
||||||
|
@git_integration
|
||||||
def update(args):
|
def update(args):
|
||||||
"""
|
"""
|
||||||
update function
|
update function
|
||||||
|
@ -172,6 +194,7 @@ def main():
|
||||||
rendered_file.write(rendered_template)
|
rendered_file.write(rendered_template)
|
||||||
|
|
||||||
|
|
||||||
|
@git_integration
|
||||||
def outline(args):
|
def outline(args):
|
||||||
"""
|
"""
|
||||||
outline creation
|
outline creation
|
||||||
|
@ -302,7 +325,7 @@ def main():
|
||||||
subparsers = parser.add_subparsers(help='Aide des sous-commandes')
|
subparsers = parser.add_subparsers(help='Aide des sous-commandes')
|
||||||
parser_init = subparsers.add_parser('init', help='Initialisation du fichier maître')
|
parser_init = subparsers.add_parser('init', help='Initialisation du fichier maître')
|
||||||
parser_init.add_argument('-f', '--format', help="Format du document", required=True)
|
parser_init.add_argument('-f', '--format', help="Format du document", required=True)
|
||||||
parser_init.add_argument('-n', '--name', help="Nom du fichier à créer", required=True)
|
#parser_init.add_argument('-n', '--name', help="Nom du fichier à créer", required=True)
|
||||||
parser_init.add_argument('-a', '--author', help="Auteur de la formation")
|
parser_init.add_argument('-a', '--author', help="Auteur de la formation")
|
||||||
parser_init.add_argument('-c', '--client', help="Client")
|
parser_init.add_argument('-c', '--client', help="Client")
|
||||||
parser_init.add_argument('-t', '--title', help="Titre de la formation")
|
parser_init.add_argument('-t', '--title', help="Titre de la formation")
|
||||||
|
|
|
@ -0,0 +1,56 @@
|
||||||
|
\documentclass[a4paper,11pt]{report}
|
||||||
|
|
||||||
|
\usepackage{skb}
|
||||||
|
|
||||||
|
\skbconfig[
|
||||||
|
root = (((root))),
|
||||||
|
rep = content,
|
||||||
|
pub = presentations,
|
||||||
|
fig = figures,
|
||||||
|
sli = slides,
|
||||||
|
acr = database/acr,
|
||||||
|
bib = database/bib
|
||||||
|
]{skblocal.tex}
|
||||||
|
|
||||||
|
\newcommand{\departement}{Cadoles Formations}
|
||||||
|
\newcommand{\numeroversion}{1.0}
|
||||||
|
\newcommand{\adresse}{29 bis, rue de l’Arquebuse}
|
||||||
|
\newcommand{\codepostal}{21000}
|
||||||
|
\newcommand{\ville}{Dijon}
|
||||||
|
\newcommand{\telephone}{Tél : 03 73 27 02 86}
|
||||||
|
\newcommand{\fax}{Fax : 09 72 29 61 11}
|
||||||
|
\newcommand{\siteweb}{Site : http://www.cadoles.com/}
|
||||||
|
\newcommand{\formateur}{Emmanuel Garette}
|
||||||
|
|
||||||
|
\skbinput[from=rep]{style/preambule-programme}
|
||||||
|
|
||||||
|
% TITRE DU DOCUMENT !
|
||||||
|
\title{Programme de Formation}
|
||||||
|
|
||||||
|
\author{Emmanuel Garette}
|
||||||
|
|
||||||
|
%\date{}
|
||||||
|
|
||||||
|
\begin{document}
|
||||||
|
\maketitle
|
||||||
|
\newpage
|
||||||
|
\section{Public visé}
|
||||||
|
\input{./programme/public.tex}
|
||||||
|
\section{Conditions préalables}
|
||||||
|
\input{./programme/prerequis.tex}
|
||||||
|
\section{Objectifs de la formation}
|
||||||
|
\input{./programme/objectifs.tex}
|
||||||
|
\section{Durée de la formation}
|
||||||
|
\input{./programme/duree.tex}
|
||||||
|
\section{Évaluation des acquis}
|
||||||
|
\input{./programme/evaluation.tex}
|
||||||
|
\newpage
|
||||||
|
\section{Contenu de la formation}
|
||||||
|
\input{./programme/contenu.tex}
|
||||||
|
\IfFileExists{./programme/moyens.tex}{%
|
||||||
|
\section{Moyens pédagogiques, techniques et d'encadrement}
|
||||||
|
\input{./programme/moyens.tex}
|
||||||
|
\section{Évaluation des acquis}
|
||||||
|
}{}
|
||||||
|
\end{document}
|
||||||
|
|
|
@ -0,0 +1,42 @@
|
||||||
|
\documentclass{article}
|
||||||
|
|
||||||
|
\usepackage{skb}
|
||||||
|
|
||||||
|
\skbconfig[
|
||||||
|
root = (((root))),
|
||||||
|
rep = content,
|
||||||
|
pub = presentations,
|
||||||
|
fig = figures,
|
||||||
|
sli = slides,
|
||||||
|
acr = database/acr,
|
||||||
|
bib = database/bib
|
||||||
|
]{skblocal.tex}
|
||||||
|
|
||||||
|
\skbinput[from=rep]{style/preambule-article}
|
||||||
|
\newcommand{\departement}{Cadoles Formations}
|
||||||
|
\newcommand{\numeroversion}{0.1}
|
||||||
|
\newcommand{\adresse}{29 bis, rue de l’Arquebuse}
|
||||||
|
\newcommand{\codepostal}{21000}
|
||||||
|
\newcommand{\ville}{Dijon}
|
||||||
|
\newcommand{\telephone}{03 73 27 02 86}
|
||||||
|
|
||||||
|
|
||||||
|
\begin{document}
|
||||||
|
\title{(((title)))}
|
||||||
|
|
||||||
|
\author{(((author)))}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
\date{{\small \today}}
|
||||||
|
\maketitle
|
||||||
|
|
||||||
|
\skbinput[from=rep]{style/title}
|
||||||
|
|
||||||
|
% Corps de la formation
|
||||||
|
%\skbinput[from=rep]{}
|
||||||
|
|
||||||
|
\skbinput[from=rep]{licences/(((license)))}
|
||||||
|
|
||||||
|
\end{document}
|
||||||
|
|
Loading…
Reference in New Issue