summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2011-09-26 00:45:20 +0000
committerKarl Berry <karl@freefriends.org>2011-09-26 00:45:20 +0000
commitfbee1a3798fb7649597e715858e9f03bfaa21da6 (patch)
tree6777bc4d708e3dcdcb31745da59b9f22e75f1921
parent94ec53bd37e1f36540195f3aadee0aa1be7830ee (diff)
new latex package facture
git-svn-id: svn://tug.org/texlive/trunk@24092 c570f23f-e606-0410-a88d-b1316a301751
-rw-r--r--Master/texmf-dist/doc/xelatex/facture/README7
-rw-r--r--Master/texmf-dist/doc/xelatex/facture/exemple.pdfbin0 -> 20446 bytes
-rw-r--r--Master/texmf-dist/doc/xelatex/facture/exemple.tex34
-rw-r--r--Master/texmf-dist/doc/xelatex/facture/exemplesansTVA.pdfbin0 -> 19043 bytes
-rw-r--r--Master/texmf-dist/doc/xelatex/facture/exemplesansTVA.tex32
-rw-r--r--Master/texmf-dist/doc/xelatex/facture/facture.pdfbin0 -> 92376 bytes
-rw-r--r--Master/texmf-dist/doc/xelatex/facture/makefile21
-rw-r--r--Master/texmf-dist/source/xelatex/facture/facture.dtx433
-rw-r--r--Master/texmf-dist/source/xelatex/facture/facture.ins37
-rw-r--r--Master/texmf-dist/tex/xelatex/facture/facture.cls219
-rw-r--r--Master/tlpkg/tlpsrc/collection-langfrench.tlpsrc1
-rw-r--r--Master/tlpkg/tlpsrc/facture.tlpsrc0
12 files changed, 784 insertions, 0 deletions
diff --git a/Master/texmf-dist/doc/xelatex/facture/README b/Master/texmf-dist/doc/xelatex/facture/README
new file mode 100644
index 00000000000..ad40f89a105
--- /dev/null
+++ b/Master/texmf-dist/doc/xelatex/facture/README
@@ -0,0 +1,7 @@
+Classe XeLaTeX de facture, sous licence Créative Commons - partage des conditions initiales à l'identique - Paternité.
+
+http://creativecommons.org/licenses/by-sa/2.0/fr/
+
+La documentation se situe dans le fichier PDF généré lors de la compilation XELATEX du fichier .dtx
+
+Pour tout demande de corrections ou d'améliorations, merci d'ouvrir un ticket sur Github : https://github.com/maieul/facture/issues. \ No newline at end of file
diff --git a/Master/texmf-dist/doc/xelatex/facture/exemple.pdf b/Master/texmf-dist/doc/xelatex/facture/exemple.pdf
new file mode 100644
index 00000000000..90d00f0d6b3
--- /dev/null
+++ b/Master/texmf-dist/doc/xelatex/facture/exemple.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/xelatex/facture/exemple.tex b/Master/texmf-dist/doc/xelatex/facture/exemple.tex
new file mode 100644
index 00000000000..b78e4d01fad
--- /dev/null
+++ b/Master/texmf-dist/doc/xelatex/facture/exemple.tex
@@ -0,0 +1,34 @@
+\documentclass{facture}
+\usepackage{lipsum}
+\setmainfont[Mapping=tex-text]{Linux Libertine O}
+\datelimite{30}
+\dest{Client\\
+Dans telle rue\\
+CP VILLE
+}
+\fact{Client facturé
+Dans telle rue\\
+CP VILLE\\
+}
+\nomemet{Entreprise}
+\adresseemet{Adresse\\
+CP Ville\\
+courriel@domaine.tld \\
+Tel : 01 23 45 67 89 \\
+}
+\codedest{Ent}
+\numero{24}
+\type{Devis}
+\pied{Payable à l’ordre de XXXX ---
+SIRET : XXXX
+}
+\begin{document}
+\entete
+
+\begin{facture}
+\ligne{Produit 1}[2]{25}[][5,5]
+\ligne{Produit 2}{10}[2]
+\end{facture}
+
+\lipsum[1-2]
+\end{document} \ No newline at end of file
diff --git a/Master/texmf-dist/doc/xelatex/facture/exemplesansTVA.pdf b/Master/texmf-dist/doc/xelatex/facture/exemplesansTVA.pdf
new file mode 100644
index 00000000000..c66543628bc
--- /dev/null
+++ b/Master/texmf-dist/doc/xelatex/facture/exemplesansTVA.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/xelatex/facture/exemplesansTVA.tex b/Master/texmf-dist/doc/xelatex/facture/exemplesansTVA.tex
new file mode 100644
index 00000000000..a07a87235d6
--- /dev/null
+++ b/Master/texmf-dist/doc/xelatex/facture/exemplesansTVA.tex
@@ -0,0 +1,32 @@
+\documentclass[sansTVA]{facture}
+\usepackage{lipsum}
+\setmainfont[Mapping=tex-text]{Linux Libertine O}
+\datelimite{30}
+\dest{Client\\
+Dans telle rue\\
+CP VILLE
+}
+\fact{Client facturé
+Dans telle rue\\
+CP VILLE\\
+}
+\nomemet{Entreprise}
+\adresseemet{Adresse\\
+CP Ville\\
+courriel@domaine.tld \\
+Tel : 01 23 45 67 89 \\
+}
+\codedest{Ent}
+\numero{24}
+\type{Devis}
+\pied{Payable à l’ordre de XXXX ---
+SIRET : XXXX
+}
+\begin{document}
+\entete
+\begin{facture}
+\ligne{Produit 1}[2]{25}
+\ligne{Produit 2}{10}[2]
+\end{facture}
+\lipsum[1-2]
+\end{document} \ No newline at end of file
diff --git a/Master/texmf-dist/doc/xelatex/facture/facture.pdf b/Master/texmf-dist/doc/xelatex/facture/facture.pdf
new file mode 100644
index 00000000000..3acdc09975a
--- /dev/null
+++ b/Master/texmf-dist/doc/xelatex/facture/facture.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/xelatex/facture/makefile b/Master/texmf-dist/doc/xelatex/facture/makefile
new file mode 100644
index 00000000000..6fcbb05b5f0
--- /dev/null
+++ b/Master/texmf-dist/doc/xelatex/facture/makefile
@@ -0,0 +1,21 @@
+.PHONY:all clean
+
+all:facture.pdf exemple.pdf exemplesansTVA.pdf
+ zip facture.zip facture.ins facture.dtx *pdf README makefile *.tex
+
+
+
+%.cls:%.ins %.dtx
+ @xelatex $*.ins
+facture.pdf:facture.cls facture.dtx
+ @xelatex facture.dtx
+ @makeindex -s gglo.ist -o facture.gls facture.glo
+ @xelatex facture.dtx
+ @xelatex facture.dtx
+
+%.pdf:%.tex facture.cls
+ @xelatex $*
+
+clean:
+ rm -f *out *aux *log *pdf *glo *zip *cls *ilg *idx *gls *toc
+
diff --git a/Master/texmf-dist/source/xelatex/facture/facture.dtx b/Master/texmf-dist/source/xelatex/facture/facture.dtx
new file mode 100644
index 00000000000..079e0e8a4d1
--- /dev/null
+++ b/Master/texmf-dist/source/xelatex/facture/facture.dtx
@@ -0,0 +1,433 @@
+% \iffalse meta-comment
+% Droits d'auteur : Maïeul Rouquette 2011
+% Licence Creative Commons - Paternité -Partage des Conditions Initiales à l'identique
+% http://creativecommons.org/licenses/by-sa/2.0/fr/
+% \fi
+% \iffalse
+%<*driver>
+\ProvidesFile{facture.dtx}
+\documentclass{ltxdoc}
+\usepackage{fontspec}
+\usepackage{xunicode}
+\usepackage[frenchb]{babel}
+\usepackage{hyperref}
+\usepackage{csquotes}
+\usepackage{bidi}
+\EnableCrossrefs
+\RecordChanges
+\begin{document}
+ \raggedbottom
+ \DocInput{facture.dtx}
+\end{document}
+%</driver>
+%\fi
+% \CheckSum{436}
+% \changes{v1.0}{2011/09/10}{Première version}
+% \GetFileInfo{facture.dtx}
+% \title{La class \textsf{facture}\thanks{Ce document correspond à la version~1.0 de \textsf{facture}, datée du~10/09/2011.}}
+%\author{Maïeul Rouquette}
+%\maketitle
+%\begin{abstract}
+%Cette classe permet de rédiger factures et devis, avec ou sans TVA, en calculant automatiquement les sommes.
+%
+% Elle fonctionne avec \XeLaTeX{} et non pas \LaTeX{}.
+%
+% Elle est sous licence Creative Commons - Paternité - Partage des Conditions Initiales à l'identique\footnote{\url{http://creativecommons.org/licenses/by-sa/2.0/fr/}.}.
+%
+% Pour tout demande de corrections ou d'améliorations, merci d'ouvrir un ticket sur Github : \url{https://github.com/maieul/facture/issues}.
+%\end{abstract}
+%\tableofcontents
+%\section{Chargement et configuration}\label{meta}
+%\subsection{Avec ou sans TVA ?}\label{TVA}
+% La classe se charge comme toutes les classes. Une option \verb|sansTVA| permet de produire des factures sans gestion de la TVA. Typiquement pour des auto-entrepreneurs.
+% Ainsi :
+%\begin{verbatim}
+%\documentclass[sansTVA]{facture}
+%\end{verbatim}
+%
+% Permet de générer une facture sans gestion de la TVA. À contrario,
+%\begin{verbatim}
+%\documentclass{facture}
+%\end{verbatim}
+%
+%Permet de générer une facture avec TVA. Celle-ci est définie par défaut à 19,6~\%, mais il est possible de modifier le taux, grâce à la commande \DescribeMacro{\TVAdefaut}\cmd{\TVAdefaut}\marg{taux}. Par exemple pour avoir un taux de 5,5~\% :
+%\begin{verbatim}
+%\TVAdefaut{5,5}
+%\end{verbatim}
+%\subsection{Information sur document}
+%Cette classe permet de fabriquer des factures et des devis. Par défaut, elle fabrique des factures. La commande \DescribeMacro{\type}\cmd{\type}\marg{type} permet d'indiquer si on souhaite fabriquer une facture ou autre chose :
+%\begin{verbatim}
+%\type{Devis}
+%\end{verbatim}
+%
+% À noter que \meta{type} peut prendre n'importe quelle valeur.
+%
+% Le document peut avoir un numéro, défini par la commande \DescribeMacro{\numero}\cmd{\numero}\marg{numero}.
+%
+% Le document est automatiquement daté du jour de la compilation. Toutefois on peut utiliser la commande \DescribeMacro{\date}\cmd{\date}\marg{JJ/MM/AAAA} pour spécifier une date. Il est possible d'indiquer une date limite de paiement via la commande \DescribeMacro{\datelimite}\cmd{\datelimite}\marg{nbjours}. La date limite est calculée en ajoutant \meta{nbjours} à la date du document.
+%\subsection{Information sur l'émetteur}
+% La commande \DescribeMacro{\nomemet}\cmd{\nomemet}\marg{texte} permet d'indiquer le nom de l'émetteur, qui apparaîtra dans l'entête\footnote{On se reportera au fichier \href{exemple.pdf}{exemple} pour des … exemples}. Pour indiquer son adresse, qui apparaîtra dans l'entête mais à droite, on utilise \DescribeMacro{\adresseemet}\cmd{\adresseemet}\marg{texte}. On indique les retours à la ligne par \verb|\\|.
+%
+% Il existe également une commande \DescribeMacro{\pied}\cmd{\pied}\marg{texte} qui provoque l'affichage de \meta{texte} à droite du pied de page, sur toutes les pages.
+%
+%\subsection{Information sur le destinataire}%\label{dest}
+% Le destinataire peut avoir deux adresses : une adresse de livraison et une de facturation. Seule la première est obligatoire. Si la seconde est absente, la classe considère qu'il s'agit de la même adresse. À la différence de l'émetteur, le nom du destinataire s'indique en même temps que l'adresse.
+%
+%L'adresse de livraison se définie via la commande \DescribeMacro{\dest}\cmd{\dest}\marg{adresse}, l'adresse de facturation via \DescribeMacro{\fact}\marg{adresse}. Encore une fois, les différentes lignes de l'adresse doivent être séparées par \verb|\\|.
+%
+% Il est possible d'affecter un code au client, via la commande \DescribeMacro{\codeclient}\cmd{\codeclient}\marg{code}.
+%\subsection{Affichage des méta-données}
+%Toutes ces méta-données, à l'exception du taux de TVA et du pied de page sont affichées dans une zolie présentation avec la commande. \DescribeMacro{\entete}\cmd{\entete}.
+%\section{Insertion de texte}
+% La classe étant dérivée de la classe \emph{article}, il est possible d'insérer du texte sectionnable avec les commandes de \emph{article}. Il n'y a pas d'endroit obligatoire pour l'afficher.
+%\section{Insertion de la facture}.
+% Une facture est constituée de lignes indiquant les prix et quantités des différents produits. Chaque ligne s'appelle au sein de l'environnement \DescribeEnv{facture}\emph{facture}, via la commande \DescribeMacro{\ligne}\cmd{\ligne}\marg{produit}\oarg{quantité}\marg{prix unitaire HT}\oarg{remise}\oarg{taux de TVA}.
+%
+%\meta{produit} est le nom du produit.
+%\meta{quantité} est la quantité souhaitée. Le nombre peut être entier ou décimal. En l'absence de cet argument, on suppose que le produit n'est présent qu'une fois.
+%\meta{prix unitaire HT} n'est pas à décrire.
+%\meta{remise}s'applique sur le prix total HT.
+%\meta{taux de TVA}: si un produit n'a pas le même taux que celui par défaut (\emph{cf}.~section~\ref{TVA}), cet argument permet d'indiquer le taux. Il est exprimé en pourcentage, mais sans le signe \%.
+%
+%
+%Tout les nombres décimaux s'expriment en utilisant la virgule, même si l'usage du point fonctionne également.
+%
+% La commande se charge automatiquement de calculer et d'afficher le prix total HT, la TVA et le prix total TTC.
+% Le total des produits est affiché avec la fermeture de l'environnement \emph{facture}. Exemple (voir le fichier \href{exemple.pdf}{exemple.pdf} pour le résultat):
+%\begin{verbatim}
+%\begin{facture}
+%\ligne{Produit 1}[2]{25}
+%\ligne{Produit 2}{10}[2]
+%\end{facture}
+%\end{verbatim}
+%
+% Dans le cas où l'option \verb|sansTVA| (\emph{cf}. section~\ref{TVA}) a été passée lors de l'appel à la classe, les colonnes ne sont pas les mêmes. Exemple (voir le fichier \href{exemplesansTVA.pdf}{exemplesansTVA.pdf} pour le résultat):
+%\begin{verbatim}
+%\begin{facture}
+%\ligne{Produit 1}[2]{25}
+%\ligne{Produit 2}{10}[][2]
+%\end{facture}
+%\end{verbatim}
+%\subsection{Texte en dessous des totaux}
+% Dans le cas d'une facture sans TVA, l'environnement \emph{facture} indique le texte \enquote{TVA non applicable, art. 293 B}. Il est possible de modifier ce texte, ou d'en ajouter un pour les documents avec TVA, en redéclarant la commande \DescribeMacro{\postTotaux}\cmd{\postTotaux}\marg{texte}.
+%\begin{verbatim}
+%\renewcommand{\postTotaux}{\hfill un joli texte}
+%\end{verbatim}
+%\section{Personnalisation}
+% Plusieurs possibilités de personnalisation existent, en redéfinissant des commandes et/ou des couleurs. J'invite à lire le code pour savoir lesquels.
+%\begin{itemize}
+%\item Pour les couleurs et les mise en valeurs des textes, voir section~\ref{apparence}.
+%\item Pour les réglages concernant les mathématiques (arrondis par exemple), voir section~\ref{math}.
+%\item Pour les textes, voir section~\ref{texte}.
+%\item Pour le pieds de page, voir section~\ref{pied}.
+%\item Pour l'affichage de la TVA, voir p.~\pageref{afficheTVA}
+%\end{itemize}
+%\StopEventually{}
+%\section{Documentation du code}
+%\subsection{Chargement des packages}
+%<*facture>
+% \begin{macrocode}
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesClass{facture}[2011/09/10 v1.0]
+\LoadClass{article}%On se base sur la classe article
+\RequirePackage{fontspec}
+\RequirePackage{xunicode}
+\RequirePackage{polyglossia}
+\setmainlanguage{french}
+\RequirePackage{numprint}%Pour gérer l'affichage des nombres
+\RequirePackage{fltpoint}% Pour faire les calculs dans le tableau
+\RequirePackage{tikz} % tikz est utilisé pour tracer des boites, par exemple
+\RequirePackage{graphicx} % Pour insérer des images. Utiliser le format jpg pour plus de simplicité.
+\RequirePackage{fancyhdr} % Pour entête et pied de page
+\RequirePackage[paper=a4paper,top=2 cm, bottom=2 cm, left=1.5 cm, right=2.5 cm]{geometry} % On peut modifier ces valeurs pour augmenter ou réduire les marges.
+\RequirePackage{ifthen}
+\RequirePackage{array}
+\RequirePackage{longtable}
+\RequirePackage{colortbl}
+\RequirePackage{advdate}%Pour manipuler les dates
+\RequirePackage{xargs}%Pour des arguments conditionnels
+% \end{macrocode}
+%\subsection{Option sansTVA}
+% \begin{macrocode}
+\newif\ifsansTVA
+\sansTVAfalse
+\DeclareOption{sansTVA}{\sansTVAtrue}
+\ProcessOptions
+% \end{macrocode}
+%\subsection{Apparence}\label{apparence}
+% On définit ici les couleurs, l'écartement des colonnes, et l'apparences des libellés.
+% \begin{macrocode}
+\definecolor{entetes}{HTML}{888888}
+\definecolor{encadre}{RGB}{111,111,111}
+\newcommand{\libelle}[1]{\textcolor{entetes}{\textbf#1}}
+\setlength{\tabcolsep}{1pt}
+% \end{macrocode}
+%\subsection{Textes}\label{texte}
+%\subsubsection{Invariants}
+% \begin{macrocode}
+\newcommand{\codeclient}{Code client :}
+\newcommand{\datetxt}{Date:}
+\newcommand{\datelimitetxt}{À payer avant:}
+\newcommand{\facturation}{Facturation}
+\newcommand{\facturetxt}{Facture}
+\newcommand{\livraison}{Livraison}
+\newcommand{\livraisonfacturation}{Livraison et Facturation}
+\newcommand{\ntxt}{~n°}
+\newcommand{\produit}{Produit}
+\newcommand{\quantite}{Quantité}
+\newcommand{\remise}{Remise}
+\newcommand{\unite}{€}
+% \end{macrocode}
+%\subsubsection{Dépend du réglage sur la TVA (\emph{cf}.~section~\ref{TVA})}
+% \begin{macrocode}
+\ifsansTVA%
+ \newcommand{\tottxt}{Total}
+ \newcommand{\prixtxt}{Prix}
+ \newcommand{\postTotaux}{\hfill TVA non applicable, art. 293 B}
+\else%
+ \newcommand{\prixHT}{Prix HT}
+ \newcommand{\TVAtxt}{TVA}
+ \newcommand{\prixTTC}{Prix TTC}
+ \newcommand{\totHTtxt}{Total HT}
+ \newcommand{\totTVAtxt}{Total TVA}
+ \newcommand{\totTTCtxt}{Total TTC}
+ \newcommand{\postTotaux}{}
+\fi
+% \end{macrocode}
+%\subsection{Réglages mathématiques}\label{math}
+%On régle ici les paramètres mathématiques, définissables avec le package \emph{numprint}.
+% Tout d'abord on dit qu'on veut avoir les zéros finaux.
+% \begin{macrocode}
+\npaddmissingzero
+% \end{macrocode}
+% Puis on dit qu'on arrondis à deux chiffres après la virgule.
+% \begin{macrocode}
+\nprounddigits{2}
+% \end{macrocode}
+%\subsection{Quelques réglages standards}
+% Ici on régle la TVA par défaut et le type de document
+% \begin{macrocode}
+\gdef\@TVAdefaut{19,6}
+\gdef\@type{\facturetxt}
+% \end{macrocode}
+%\subsection{Méta-données}
+%Toutes ces commandes sont appelées par l'utilisateurs au tout début (\emph{cf}.~section~\ref{meta}). La plupart stockent dans une commande commençant par @ le code qui est passé.
+% \begin{macrocode}
+\renewcommand{\date}[1]{\SetDate[#1]}
+\newcommand{\TVAdefaut}[1]{\gdef\@TVAdefaut{#1}}
+\newcommand{\datelimite}[1]{\newcommand{\@datelimite}{#1}}
+\newcommand{\dest}[1]{\newcommand{\@dest}{#1}}
+\newcommand{\fact}[1]{\newcommand{\@fact}{#1}}
+\newcommand{\adresseemet}[1]{\gdef\@adresseemet{#1}}
+\newcommand{\nomemet}[1]{\gdef\@nomemet{#1}}
+\newcommand{\type}[1]{\gdef\@type{#1}}
+\newcommand{\numero}[1]{\gdef\@numero{#1}}
+\newcommand{\codedest}[1]{\gdef\@codedest{#1}}
+% \end{macrocode}
+
+%\subsection{Génération de l'entête}
+% On se base sur le package \emph{TikZ} pour le générer.
+%
+% Tout d'abord afficher le nom et l'adresse de l'émetteur
+% \begin{macrocode}
+\newcommand{\entete}{
+
+
+ \noindent\begin{tikzpicture}
+
+ \noindent\node [font=\bf\Huge,text width=0.5\textwidth,text=entetes,text centered]{%
+ \@nomemet%
+ };
+
+ \noindent\node (b)[xshift=0.5\textwidth,text width=0.5\textwidth, right]{%
+ \@adresseemet%
+ };
+% \end{macrocode}
+%
+%Ensuite déterminer la place que cela prend, puis tracer l'encadré.
+% \begin{macrocode}
+ \coordinate[xshift=-1\textwidth,yshift=1ex] (a) at (b.north);
+ \coordinate[xshift=1em,yshift=-1ex] (c) at (b.south);
+ \draw[color=encadre,line width=1.5mm] (a) rectangle (c);
+ \end{tikzpicture}
+% \end{macrocode}
+%
+%Ensuite afficher le titre, avec un peu d'espace avant et après, en le chassant à droite.
+% \begin{macrocode}
+
+
+
+ \vspace{3ex}
+
+ \begin{flushright}
+
+
+ {\Huge\libelle{\@type}}
+
+ \end{flushright}
+
+ \vspace{3ex}
+
+ \begin{tikzpicture}
+% \end{macrocode}
+%
+%Ensuite afficher les informations sur le destinataire. Des tests permettent d'afficher ou non la livraison séparement de la facture, en fonction de ce qu'a défini l'utilisateur (\emph{cf}.~section~\ref{dest}).
+% \begin{macrocode}
+
+
+ \ifdef{\@fact}{
+ \node[text width=0.33\textwidth,anchor=base]{
+ \libelle{\facturation}
+
+ \@fact
+ };
+ }{}
+
+ \node[xshift=0.33\textwidth,text width=0.33\textwidth,anchor=base]{\ifdef{\@fact}{
+ \libelle{\livraison}}
+ {\libelle{\livraisonfacturation}}
+
+ \@dest
+ };
+% \end{macrocode}
+%
+% On affiche finalement les dates, le numéro de la facture et le code client.
+% \begin{macrocode}
+ \node[text width=0.33\textwidth,xshift=0.66\textwidth,anchor=base]{
+ \libelle{{\datetxt}} \today \\
+ \ifdef{\@numero}{%
+ \libelle{{\@type\ntxt}} \@numero
+ }{}
+ \\
+ \ifdef{\@codedest}{%
+ \libelle{{\codeclient}} \@codedest
+ }{}
+ \ifdef{\@datelimite}{\\\AdvanceDate[\@datelimite]\libelle{{\datelimitetxt}} \today}{}
+ };
+
+ \end{tikzpicture}
+
+
+}
+% \end{macrocode}
+%\subsection{Le tableau de facturation}
+% On commence par définir des variables globales qui servent à stocker les totaux généraux
+% \begin{macrocode}
+\ifsansTVA
+ \xdef\tot{}
+\else
+ \xdef\totTVA{}
+ \xdef\totHT{}
+ \xdef\totTTC{}
+\fi
+% \end{macrocode}
+%
+%On définit ensuite un nouveau type de colonne, avec un alignement à droite
+% \begin{macrocode}
+\newcolumntype{P}[1]{>{\raggedleft}p{#1}}
+% \end{macrocode}
+%On définit ensuite l'environnement \emph{facture}.
+%\begin{environment}{facture}
+% Tout d'abord on affiche l'entête, selon qu'on soit avec ou sans TVA
+% \begin{macrocode}
+\newenvironment{facture}{%
+ \setlength{\extrarowheight}{0.5ex}
+ \setlength{\tabcolsep}{0.5em}
+ \arrayrulecolor{encadre}
+ \ifsansTVA%
+ \begin{longtable}{|p{0.2\textwidth}|P{0.2\textwidth}|P{0.2\textwidth}|P{0.2\textwidth}|P{0.2\textwidth}|}%
+ \hline%
+ \rowcolor{entetes}\centering\textbf\produit & \centering\textbf\quantite & \centering\textbf\prixtxt & \centering\textbf\remise & \centering\textbf\tottxt \tabularnewline[1ex]%
+ \else%
+ \begin{longtable}{|p{0.2\textwidth}|P{0.1\textwidth}|P{0.1\textwidth}|P{0.1\textwidth}|P{0.1\textwidth}|P{0.2\textwidth}|P{0.1\textwidth}|}%
+ \hline%
+ \rowcolor{entetes}\centering\textbf\produit & \centering\textbf\quantite & \centering\textbf\prixHT & \centering\textbf\remise & \centering\textbf\totHTtxt & \centering\textbf\TVAtxt & \textbf\prixTTC \tabularnewline[1ex]%
+ \fi%
+ \endhead%
+ \endfoot%
+
+ }%
+% \end{macrocode}
+%Le contenu du tableau est généré par les commandes \cmd{\ligne}. Lorsqu'on ferme l'environnement \emph{facture}, on ferme le tableau
+% \begin{macrocode}
+{%
+ \end{longtable}
+% \end{macrocode}
+%On affiche ensuite les totaux, qu'on place grâce à \emph{TikZ}. Le cercle de 0,001 de diamètre sert à faire prendre à la figure beamer le plus de place possible, pour que les textes soient alignés à droite.
+% \begin{macrocode}
+ \begin{tikzpicture}
+ \draw[color=white] (0,0) circle (0.001);
+ \node[right,xshift=0.66\textwidth,text width=0.33\textwidth]{%
+ \ifsansTVA%
+ \hfill \libelle{\tottxt:} \numprint[\unite]{\tot}\\%
+ \else%
+ \libelle{\totHTtxt:}\hfill \numprint[\unite]{\totHT} \\%
+ \libelle{\totTVAtxt:}\hfill \numprint[\unite]{\totTVA} \\%
+ \libelle{\totTTCtxt:}\hfill \numprint[\unite]{\totTTC} \\
+ \fi
+ \postTotaux};
+ \end{tikzpicture}
+
+ }
+% \end{macrocode}
+%\end{environment}
+% On a besoin de définir une commande \cmd{\lignesansTVA} pour afficher le contenu d'une ligne lorsqu'on n'a pas de TVA. En effet, dès qu'on change de cellule, les tests conditionnels sont perdus.
+% \begin{macrocode}
+\newcommand{\lignesansTVA}[5]{#1 & #2 & #3 & #4 & #5 \tabularnewline[1ex]}
+% \end{macrocode}
+%La commande \cmd{\afficheTVA} sert à afficher la TVA dans le tableau. En ne l'indiquant pas directement dans le code de \cmd{\ligne}, on permet de personnaliser plus facilement l'affichage de la TVA. \label{afficheTVA}
+% \begin{macrocode}
+\newcommand{\afficheTVA}[1]{\raggedleft{\numprint[\%]{#1}} \hfill $\triangleright$ \numprint[\unite]{\TVA}}
+% \end{macrocode}
+%
+% Voici maintenant la commande \cmd{\ligne}. Pour gérer les arguments optionnels, on se sert du package \emph{xargs}.
+% \begin{macrocode}
+\newcommandx{\ligne}[5][2=1,5=\@TVAdefaut,4=0,usedefault]{%
+% \end{macrocode}
+% On procède aux calculs grâce au package \emph{fltpoint}, on affiche les résultat grâce au package \emph{numprint}.
+% \begin{macrocode}
+ \ifsansTVA
+ \fpMul{\prix}{#3}{#2}%
+ \fpSub{\prix}{\prix}{#4}%
+ \fpAdd{\tot}{\prix}{\tot}%
+ \xdef\tot{\tot}%
+ \xdef\prix{\prix}%
+ %Affichage
+ \lignesansTVA{#1}{#2}{\numprint[\unite]{#3}}{\numprint[\unite]{#4}}{\numprint[\unite]{\prix}}%
+ \else
+ % Prix hors taxe
+ \fpMul{\HT}{#3}{#2}%
+ \fpSub{\HT}{\HT}{#4}%
+ \xdef\HT{\HT}%retenons
+ \fpAdd{\totHT}{\totHT}{\HT}%
+ \xdef\totHT{\totHT}%
+ % Calcul de la TVA
+ \fpDiv{\centieme}{#5}{100}%
+ \fpMul{\TVA}{\centieme}{\HT}%
+ \xdef\TVA{\TVA}%retenons
+ \fpAdd{\totTVA}{\totTVA}{\TVA}%
+ \xdef\totTVA{\totTVA}%
+ % Prix TTC
+ \fpAdd{\TTC}{\HT}{\TVA}%
+ \xdef\TTC{\TTC}%
+ \fpAdd{\totTTC}{\totTTC}{\TTC}%
+ \xdef\totTTC{\totTTC}%
+ % Affichage
+ #1 & #2 & \numprint[\unite]{#3} & \numprint[\unite]{#4} & \numprint[\unite]{\HT} & \afficheTVA{#5} & \numprint[\unite]{\TTC} \tabularnewline[1ex]%
+ \fi
+ \hline
+}
+% \end{macrocode}
+%\subsection{Apparence du pied}\label{pied}
+%On se base sur le package \emph{fancyhdr} pour personnaliser le pied.
+% \begin{macrocode}
+\pagestyle{fancy}
+\fancyhf{}
+\renewcommand{\headrule}{}%Pas de règle après l'entête
+\lfoot{\ifnumgreater{\thepage}{1}{\thepage}{}}%Indiquer le numéro de page, sauf sur la première
+\newcommand{\pied}[1]{\rfoot{#1}}%Le pied définissable par l'utilisateur
+% \end{macrocode}
+%</facture>
+% \PrintChanges
+%\Finale
+%\endinput \ No newline at end of file
diff --git a/Master/texmf-dist/source/xelatex/facture/facture.ins b/Master/texmf-dist/source/xelatex/facture/facture.ins
new file mode 100644
index 00000000000..c6cc446770c
--- /dev/null
+++ b/Master/texmf-dist/source/xelatex/facture/facture.ins
@@ -0,0 +1,37 @@
+%% Droits d'auteur : Maïeul Rouquette 2011
+%% Licence Creative Commons - Paternité - Partage des Conditions Initiales à l'identique
+%% http://creativecommons.org/licenses/by-sa/2.0/fr/
+
+\input docstrip
+\keepsilent
+
+\preamble
+
+Droit d'auteur : Maïeul Rouquette 2011,
+Licence Creative Commons - Paternité - Partage des Conditions Initiales à l'identique
+http://creativecommons.org/licenses/by-sa/2.0/fr/
+
+\endpreamble
+
+\generate{\file{facture.cls}{\from{facture.dtx}{facture}}}
+
+\nopreamble
+\nopostamble
+
+\obeyspaces
+\Msg{*************************************************************}
+\Msg{* *}
+\Msg{* To finish the installation you have to move the following *}
+\Msg{* file into a directory searched by TeX: *}
+\Msg{* *}
+\Msg{* facture.cls *}
+\Msg{* *}
+\Msg{* *}
+\Msg{* To produce the documentation run the file facture.dtx *}
+\Msg{* through XeLaTeX. *}
+\Msg{* *}
+\Msg{* Happy TeXing! *}
+\Msg{* *}
+\Msg{*************************************************************}
+
+\endbatchfile
diff --git a/Master/texmf-dist/tex/xelatex/facture/facture.cls b/Master/texmf-dist/tex/xelatex/facture/facture.cls
new file mode 100644
index 00000000000..a0c99ab02c6
--- /dev/null
+++ b/Master/texmf-dist/tex/xelatex/facture/facture.cls
@@ -0,0 +1,219 @@
+%%
+%% This is file `facture.cls',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% facture.dtx (with options: `facture')
+%%
+%% Droit d'auteur : Maïeul Rouquette 2011,
+%% Licence Creative Commons - Paternité - Partage des Conditions Initiales à l'identique
+%% http://creativecommons.org/licenses/by-sa/2.0/fr/
+%%
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesClass{facture}[2011/09/10 v1.0]
+\LoadClass{article}%On se base sur la classe article
+\RequirePackage{fontspec}
+\RequirePackage{xunicode}
+\RequirePackage{polyglossia}
+\setmainlanguage{french}
+\RequirePackage{numprint}%Pour gérer l'affichage des nombres
+\RequirePackage{fltpoint}% Pour faire les calculs dans le tableau
+\RequirePackage{tikz} % tikz est utilisé pour tracer des boites, par exemple
+\RequirePackage{graphicx} % Pour insérer des images. Utiliser le format jpg pour plus de simplicité.
+\RequirePackage{fancyhdr} % Pour entête et pied de page
+\RequirePackage[paper=a4paper,top=2 cm, bottom=2 cm, left=1.5 cm, right=2.5 cm]{geometry} % On peut modifier ces valeurs pour augmenter ou réduire les marges.
+\RequirePackage{ifthen}
+\RequirePackage{array}
+\RequirePackage{longtable}
+\RequirePackage{colortbl}
+\RequirePackage{advdate}%Pour manipuler les dates
+\RequirePackage{xargs}%Pour des arguments conditionnels
+\newif\ifsansTVA
+\sansTVAfalse
+\DeclareOption{sansTVA}{\sansTVAtrue}
+\ProcessOptions
+\definecolor{entetes}{HTML}{888888}
+\definecolor{encadre}{RGB}{111,111,111}
+\newcommand{\libelle}[1]{\textcolor{entetes}{\textbf#1}}
+\setlength{\tabcolsep}{1pt}
+\newcommand{\codeclient}{Code client :}
+\newcommand{\datetxt}{Date:}
+\newcommand{\datelimitetxt}{À payer avant:}
+\newcommand{\facturation}{Facturation}
+\newcommand{\facturetxt}{Facture}
+\newcommand{\livraison}{Livraison}
+\newcommand{\livraisonfacturation}{Livraison et Facturation}
+\newcommand{\ntxt}{~n°}
+\newcommand{\produit}{Produit}
+\newcommand{\quantite}{Quantité}
+\newcommand{\remise}{Remise}
+\newcommand{\unite}{€}
+\ifsansTVA%
+ \newcommand{\tottxt}{Total}
+ \newcommand{\prixtxt}{Prix}
+ \newcommand{\postTotaux}{\hfill TVA non applicable, art. 293 B}
+\else%
+ \newcommand{\prixHT}{Prix HT}
+ \newcommand{\TVAtxt}{TVA}
+ \newcommand{\prixTTC}{Prix TTC}
+ \newcommand{\totHTtxt}{Total HT}
+ \newcommand{\totTVAtxt}{Total TVA}
+ \newcommand{\totTTCtxt}{Total TTC}
+ \newcommand{\postTotaux}{}
+\fi
+\npaddmissingzero
+\nprounddigits{2}
+\gdef\@TVAdefaut{19,6}
+\gdef\@type{\facturetxt}
+\renewcommand{\date}[1]{\SetDate[#1]}
+\newcommand{\TVAdefaut}[1]{\gdef\@TVAdefaut{#1}}
+\newcommand{\datelimite}[1]{\newcommand{\@datelimite}{#1}}
+\newcommand{\dest}[1]{\newcommand{\@dest}{#1}}
+\newcommand{\fact}[1]{\newcommand{\@fact}{#1}}
+\newcommand{\adresseemet}[1]{\gdef\@adresseemet{#1}}
+\newcommand{\nomemet}[1]{\gdef\@nomemet{#1}}
+\newcommand{\type}[1]{\gdef\@type{#1}}
+\newcommand{\numero}[1]{\gdef\@numero{#1}}
+\newcommand{\codedest}[1]{\gdef\@codedest{#1}}
+
+\newcommand{\entete}{
+
+ \noindent\begin{tikzpicture}
+
+ \noindent\node [font=\bf\Huge,text width=0.5\textwidth,text=entetes,text centered]{%
+ \@nomemet%
+ };
+
+ \noindent\node (b)[xshift=0.5\textwidth,text width=0.5\textwidth, right]{%
+ \@adresseemet%
+ };
+ \coordinate[xshift=-1\textwidth,yshift=1ex] (a) at (b.north);
+ \coordinate[xshift=1em,yshift=-1ex] (c) at (b.south);
+ \draw[color=encadre,line width=1.5mm] (a) rectangle (c);
+ \end{tikzpicture}
+
+ \vspace{3ex}
+
+ \begin{flushright}
+
+ {\Huge\libelle{\@type}}
+
+ \end{flushright}
+
+ \vspace{3ex}
+
+ \begin{tikzpicture}
+
+ \ifdef{\@fact}{
+ \node[text width=0.33\textwidth,anchor=base]{
+ \libelle{\facturation}
+
+ \@fact
+ };
+ }{}
+
+ \node[xshift=0.33\textwidth,text width=0.33\textwidth,anchor=base]{\ifdef{\@fact}{
+ \libelle{\livraison}}
+ {\libelle{\livraisonfacturation}}
+
+ \@dest
+ };
+ \node[text width=0.33\textwidth,xshift=0.66\textwidth,anchor=base]{
+ \libelle{{\datetxt}} \today \\
+ \ifdef{\@numero}{%
+ \libelle{{\@type\ntxt}} \@numero
+ }{}
+ \\
+ \ifdef{\@codedest}{%
+ \libelle{{\codeclient}} \@codedest
+ }{}
+ \ifdef{\@datelimite}{\\\AdvanceDate[\@datelimite]\libelle{{\datelimitetxt}} \today}{}
+ };
+
+ \end{tikzpicture}
+
+}
+\ifsansTVA
+ \xdef\tot{}
+\else
+ \xdef\totTVA{}
+ \xdef\totHT{}
+ \xdef\totTTC{}
+\fi
+\newcolumntype{P}[1]{>{\raggedleft}p{#1}}
+\newenvironment{facture}{%
+ \setlength{\extrarowheight}{0.5ex}
+ \setlength{\tabcolsep}{0.5em}
+ \arrayrulecolor{encadre}
+ \ifsansTVA%
+ \begin{longtable}{|p{0.2\textwidth}|P{0.2\textwidth}|P{0.2\textwidth}|P{0.2\textwidth}|P{0.2\textwidth}|}%
+ \hline%
+ \rowcolor{entetes}\centering\textbf\produit & \centering\textbf\quantite & \centering\textbf\prixtxt & \centering\textbf\remise & \centering\textbf\tottxt \tabularnewline[1ex]%
+ \else%
+ \begin{longtable}{|p{0.2\textwidth}|P{0.1\textwidth}|P{0.1\textwidth}|P{0.1\textwidth}|P{0.1\textwidth}|P{0.2\textwidth}|P{0.1\textwidth}|}%
+ \hline%
+ \rowcolor{entetes}\centering\textbf\produit & \centering\textbf\quantite & \centering\textbf\prixHT & \centering\textbf\remise & \centering\textbf\totHTtxt & \centering\textbf\TVAtxt & \textbf\prixTTC \tabularnewline[1ex]%
+ \fi%
+ \endhead%
+ \endfoot%
+
+ }%
+{%
+ \end{longtable}
+ \begin{tikzpicture}
+ \draw[color=white] (0,0) circle (0.001);
+ \node[right,xshift=0.66\textwidth,text width=0.33\textwidth]{%
+ \ifsansTVA%
+ \hfill \libelle{\tottxt:} \numprint[\unite]{\tot}\\%
+ \else%
+ \libelle{\totHTtxt:}\hfill \numprint[\unite]{\totHT} \\%
+ \libelle{\totTVAtxt:}\hfill \numprint[\unite]{\totTVA} \\%
+ \libelle{\totTTCtxt:}\hfill \numprint[\unite]{\totTTC} \\
+ \fi
+ \postTotaux};
+ \end{tikzpicture}
+
+ }
+\newcommand{\lignesansTVA}[5]{#1 & #2 & #3 & #4 & #5 \tabularnewline[1ex]}
+\newcommand{\afficheTVA}[1]{\raggedleft{\numprint[\%]{#1}} \hfill $\triangleright$ \numprint[\unite]{\TVA}}
+\newcommandx{\ligne}[5][2=1,5=\@TVAdefaut,4=0,usedefault]{%
+ \ifsansTVA
+ \fpMul{\prix}{#3}{#2}%
+ \fpSub{\prix}{\prix}{#4}%
+ \fpAdd{\tot}{\prix}{\tot}%
+ \xdef\tot{\tot}%
+ \xdef\prix{\prix}%
+ %Affichage
+ \lignesansTVA{#1}{#2}{\numprint[\unite]{#3}}{\numprint[\unite]{#4}}{\numprint[\unite]{\prix}}%
+ \else
+ % Prix hors taxe
+ \fpMul{\HT}{#3}{#2}%
+ \fpSub{\HT}{\HT}{#4}%
+ \xdef\HT{\HT}%retenons
+ \fpAdd{\totHT}{\totHT}{\HT}%
+ \xdef\totHT{\totHT}%
+ % Calcul de la TVA
+ \fpDiv{\centieme}{#5}{100}%
+ \fpMul{\TVA}{\centieme}{\HT}%
+ \xdef\TVA{\TVA}%retenons
+ \fpAdd{\totTVA}{\totTVA}{\TVA}%
+ \xdef\totTVA{\totTVA}%
+ % Prix TTC
+ \fpAdd{\TTC}{\HT}{\TVA}%
+ \xdef\TTC{\TTC}%
+ \fpAdd{\totTTC}{\totTTC}{\TTC}%
+ \xdef\totTTC{\totTTC}%
+ % Affichage
+ #1 & #2 & \numprint[\unite]{#3} & \numprint[\unite]{#4} & \numprint[\unite]{\HT} & \afficheTVA{#5} & \numprint[\unite]{\TTC} \tabularnewline[1ex]%
+ \fi
+ \hline
+}
+\pagestyle{fancy}
+\fancyhf{}
+\renewcommand{\headrule}{}%Pas de règle après l'entête
+\lfoot{\ifnumgreater{\thepage}{1}{\thepage}{}}%Indiquer le numéro de page, sauf sur la première
+\newcommand{\pied}[1]{\rfoot{#1}}%Le pied définissable par l'utilisateur
+\endinput
+%%
+%% End of file `facture.cls'.
diff --git a/Master/tlpkg/tlpsrc/collection-langfrench.tlpsrc b/Master/tlpkg/tlpsrc/collection-langfrench.tlpsrc
index 40a07c3fc7b..079cb129bfe 100644
--- a/Master/tlpkg/tlpsrc/collection-langfrench.tlpsrc
+++ b/Master/tlpkg/tlpsrc/collection-langfrench.tlpsrc
@@ -5,6 +5,7 @@ depend aeguill
depend bib-fr
depend bibleref-french
depend booktabs-fr
+depend facture
depend frenchle
depend frletter
depend impnattypo
diff --git a/Master/tlpkg/tlpsrc/facture.tlpsrc b/Master/tlpkg/tlpsrc/facture.tlpsrc
new file mode 100644
index 00000000000..e69de29bb2d
--- /dev/null
+++ b/Master/tlpkg/tlpsrc/facture.tlpsrc