diff options
author | Karl Berry <karl@freefriends.org> | 2011-09-26 00:45:20 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2011-09-26 00:45:20 +0000 |
commit | fbee1a3798fb7649597e715858e9f03bfaa21da6 (patch) | |
tree | 6777bc4d708e3dcdcb31745da59b9f22e75f1921 /Master/texmf-dist | |
parent | 94ec53bd37e1f36540195f3aadee0aa1be7830ee (diff) |
new latex package facture
git-svn-id: svn://tug.org/texlive/trunk@24092 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist')
-rw-r--r-- | Master/texmf-dist/doc/xelatex/facture/README | 7 | ||||
-rw-r--r-- | Master/texmf-dist/doc/xelatex/facture/exemple.pdf | bin | 0 -> 20446 bytes | |||
-rw-r--r-- | Master/texmf-dist/doc/xelatex/facture/exemple.tex | 34 | ||||
-rw-r--r-- | Master/texmf-dist/doc/xelatex/facture/exemplesansTVA.pdf | bin | 0 -> 19043 bytes | |||
-rw-r--r-- | Master/texmf-dist/doc/xelatex/facture/exemplesansTVA.tex | 32 | ||||
-rw-r--r-- | Master/texmf-dist/doc/xelatex/facture/facture.pdf | bin | 0 -> 92376 bytes | |||
-rw-r--r-- | Master/texmf-dist/doc/xelatex/facture/makefile | 21 | ||||
-rw-r--r-- | Master/texmf-dist/source/xelatex/facture/facture.dtx | 433 | ||||
-rw-r--r-- | Master/texmf-dist/source/xelatex/facture/facture.ins | 37 | ||||
-rw-r--r-- | Master/texmf-dist/tex/xelatex/facture/facture.cls | 219 |
10 files changed, 783 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 Binary files differnew file mode 100644 index 00000000000..90d00f0d6b3 --- /dev/null +++ b/Master/texmf-dist/doc/xelatex/facture/exemple.pdf 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 Binary files differnew file mode 100644 index 00000000000..c66543628bc --- /dev/null +++ b/Master/texmf-dist/doc/xelatex/facture/exemplesansTVA.pdf 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 Binary files differnew file mode 100644 index 00000000000..3acdc09975a --- /dev/null +++ b/Master/texmf-dist/doc/xelatex/facture/facture.pdf 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'. |