From 43a2b534750cd2a1b3f42e66d337ba315fa3a40d Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Mon, 13 Apr 2020 21:36:45 +0000 Subject: lettre (13apr20) git-svn-id: svn://tug.org/texlive/trunk@54722 c570f23f-e606-0410-a88d-b1316a301751 --- .../tex/latex/lettre/lettre-USenglish.ldf | 52 +- Master/texmf-dist/tex/latex/lettre/lettre-amg.cfg | 2 +- .../texmf-dist/tex/latex/lettre/lettre-english.ldf | 51 +- .../texmf-dist/tex/latex/lettre/lettre-french.ldf | 62 +- .../texmf-dist/tex/latex/lettre/lettre-german.ldf | 51 +- .../tex/latex/lettre/lettre-institut.tpl | 18 + Master/texmf-dist/tex/latex/lettre/lettre-obs.cfg | 13 +- .../texmf-dist/tex/latex/lettre/lettre-romand.ldf | 52 +- .../texmf-dist/tex/latex/lettre/lettre-telefax.tpl | 110 ++ Master/texmf-dist/tex/latex/lettre/lettre.cls | 1486 +++++++++++++++++--- Master/texmf-dist/tex/latex/lettre/lettre.tpl | 124 ++ 11 files changed, 1691 insertions(+), 330 deletions(-) create mode 100644 Master/texmf-dist/tex/latex/lettre/lettre-institut.tpl create mode 100644 Master/texmf-dist/tex/latex/lettre/lettre-telefax.tpl create mode 100644 Master/texmf-dist/tex/latex/lettre/lettre.tpl (limited to 'Master/texmf-dist/tex/latex/lettre') diff --git a/Master/texmf-dist/tex/latex/lettre/lettre-USenglish.ldf b/Master/texmf-dist/tex/latex/lettre/lettre-USenglish.ldf index 12f41cb64f4..7522ecc1768 100644 --- a/Master/texmf-dist/tex/latex/lettre/lettre-USenglish.ldf +++ b/Master/texmf-dist/tex/latex/lettre/lettre-USenglish.ldf @@ -1,24 +1,29 @@ -% file name : `lettre-USenglish.ldf'. -% package name: lettre -% maintenance : Vincent Belaïche (vincentb1@users.sourceforge.net) -% author : Denis Mégevand - Observatoire de Genève -% email : vincentb1@users.sourceforge.net -% version : v3.000 -% date : 2017/08/03 -% -% This file is part of the "lettre" package. -% This work may be distributed and/or modified under the conditions of the -% LaTeX Project Public License, either version 1.3 of this license or (at your -% option) any later version. The latest version of this license is in -% http://www.latex-project.org/lppl.txt and version 1.3 or later is part of all -% distributions of LaTeX version 2005/12/01 or later. -% -% This work has the LPPL maintenance status `maintained'. -% -% The Current Maintainer of this work is Vincent Belaïche. -% -% This work consists of all files listed in file README +%^^A file name : `lettre-USenglish.ldf'. +%^^A package name: lettre +%^^A maintenance : Vincent Belaïche (vincentb1@users.sourceforge.net) +%^^A author : Denis Mégevand - Observatoire de Genève +%^^A email : vincentb1@users.sourceforge.net +%^^A version : v3.002 +%^^A date : +%^^A +%^^A This file is part of the "lettre" package. +%^^A This work may be distributed and/or modified under the conditions of the +%^^A LaTeX Project Public License, either version 1.3 of this license or (at your +%^^A option) any later version. The latest version of this license is in +%^^A http://www.latex-project.org/lppl.txt and version 1.3 or later is part of all +%^^A distributions of LaTeX version 2005/12/01 or later. +%^^A +%^^A This work has the LPPL maintenance status `maintained'. +%^^A +%^^A The Current Maintainer of this work is Vincent Belaïche. +%^^A +%^^A This work consists of all files listed in file README +%^^A +%\subsubsection{Définitions pour la langue \texttt{americain}} % +%\DescribeMacro{\lettre@select@USenglish@labels} +%\DescribeMacro{\lettre@mlp@USenglish@use} +% \begin{macrocode} \LettreDeclareLanguage{USenglish}[english]{% \sigflag=1\relax \def\cejour{\ifcase\month\or @@ -47,4 +52,9 @@ }% \LettreProvidesLanguage{USenglish}[2015/11/18]% \endinput -% End of file `lettre-USenglish.ldf'. +% \end{macrocode} +%^^A End of file `lettre-USenglish.ldf'. +\iffalse Local Variables: \fi +\iffalse mode: DocTeX\fi +\iffalse ispell-dictionary: "english"\fi +\iffalse End: \fi \ No newline at end of file diff --git a/Master/texmf-dist/tex/latex/lettre/lettre-amg.cfg b/Master/texmf-dist/tex/latex/lettre/lettre-amg.cfg index 706bc50a455..1c0479cd2d4 100644 --- a/Master/texmf-dist/tex/latex/lettre/lettre-amg.cfg +++ b/Master/texmf-dist/tex/latex/lettre/lettre-amg.cfg @@ -10,7 +10,7 @@ \newcommand{\hvtwfv}{\hvfam\fontsize{25}{30pt}\selectfont} \address{\centering \vskip -10mm - \includegraphics[bb=1 0 75 160,totalheight=4cm]{amgmono.eps}% + \includegraphics[bb=1 0 75 160,totalheight=4cm]{amgmono.mps}% \vskip -1mm \mbox{\hss\hvten École de ski\hss}}% \location{\hvten Denis Mégevand\\Président}% diff --git a/Master/texmf-dist/tex/latex/lettre/lettre-english.ldf b/Master/texmf-dist/tex/latex/lettre/lettre-english.ldf index 743a9f5aa83..d67159df8bf 100644 --- a/Master/texmf-dist/tex/latex/lettre/lettre-english.ldf +++ b/Master/texmf-dist/tex/latex/lettre/lettre-english.ldf @@ -1,24 +1,28 @@ -% file name : `lettre-english.ldf'. -% package name: lettre -% maintenance : Vincent Belaïche (vincentb1@users.sourceforge.net) -% author : Denis Mégevand - Observatoire de Genève -% email : vincentb1@users.sourceforge.net -% version : v3.000 -% date : 2017/08/03 -% -% This file is part of the "lettre" package. -% This work may be distributed and/or modified under the conditions of the -% LaTeX Project Public License, either version 1.3 of this license or (at your -% option) any later version. The latest version of this license is in -% http://www.latex-project.org/lppl.txt and version 1.3 or later is part of all -% distributions of LaTeX version 2005/12/01 or later. -% -% This work has the LPPL maintenance status `maintained'. -% -% The Current Maintainer of this work is Vincent Belaïche. -% -% This work consists of all files listed in file README +%^^A file name : `lettre-english.ldf'. +%^^A package name: lettre +%^^A maintenance : Vincent Belaïche (vincentb1@users.sourceforge.net) +%^^A author : Denis Mégevand - Observatoire de Genève +%^^A email : vincentb1@users.sourceforge.net +%^^A version : v3.002 +%^^A date : +%^^A +%^^A This file is part of the "lettre" package. +%^^A This work may be distributed and/or modified under the conditions of the +%^^A LaTeX Project Public License, either version 1.3 of this license or (at your +%^^A option) any later version. The latest version of this license is in +%^^A http://www.latex-project.org/lppl.txt and version 1.3 or later is part of all +%^^A distributions of LaTeX version 2005/12/01 or later. +%^^A +%^^A This work has the LPPL maintenance status `maintained'. +%^^A +%^^A The Current Maintainer of this work is Vincent Belaïche. +%^^A +%^^A This work consists of all files listed in file README +%^^A +%\subsubsection{Définitions pour la langue \texttt{anglais}} % +%\DescribeMacro{\lettre@select@english@labels} +% \begin{macrocode} \LettreDeclareLanguage{english}{% \sigflag=1\space \def\cejour{\ifcase\month\or @@ -47,4 +51,9 @@ }% \LettreProvidesLanguage{english}[2015/11/18]% \endinput -% End of file `lettre-english.ldf'. +% \end{macrocode} +%^^A End of file `lettre-english.ldf'. +\iffalse Local Variables: \fi +\iffalse mode: DocTeX\fi +\iffalse ispell-dictionary: "english"\fi +\iffalse End: \fi \ No newline at end of file diff --git a/Master/texmf-dist/tex/latex/lettre/lettre-french.ldf b/Master/texmf-dist/tex/latex/lettre/lettre-french.ldf index d0129e11d1a..e479df1c761 100644 --- a/Master/texmf-dist/tex/latex/lettre/lettre-french.ldf +++ b/Master/texmf-dist/tex/latex/lettre/lettre-french.ldf @@ -1,26 +1,34 @@ -% file name : `lettre-french.ldf'. -% package name: lettre -% maintenance : Vincent Belaïche (vincentb1@users.sourceforge.net) -% author : Denis Mégevand - Observatoire de Genève -% email : vincentb1@users.sourceforge.net -% version : v3.000 -% date : 2017/08/03 -% -% This file is part of the "lettre" package. -% This work may be distributed and/or modified under the conditions of the -% LaTeX Project Public License, either version 1.3 of this license or (at your -% option) any later version. The latest version of this license is in -% http://www.latex-project.org/lppl.txt and version 1.3 or later is part of all -% distributions of LaTeX version 2005/12/01 or later. -% -% This work has the LPPL maintenance status `maintained'. -% -% The Current Maintainer of this work is Vincent Belaïche. -% -% This work consists of all files listed in file README +%^^A file name : `lettre-french.ldf'. +%^^A package name: lettre +%^^A maintenance : Vincent Belaïche (vincentb1@users.sourceforge.net) +%^^A author : Denis Mégevand - Observatoire de Genève +%^^A email : vincentb1@users.sourceforge.net +%^^A version : v3.002 +%^^A date : +%^^A +%^^A This file is part of the "lettre" package. +%^^A This work may be distributed and/or modified under the conditions of the +%^^A LaTeX Project Public License, either version 1.3 of this license or (at your +%^^A option) any later version. The latest version of this license is in +%^^A http://www.latex-project.org/lppl.txt and version 1.3 or later is part of all +%^^A distributions of LaTeX version 2005/12/01 or later. +%^^A +%^^A This work has the LPPL maintenance status `maintained'. +%^^A +%^^A The Current Maintainer of this work is Vincent Belaïche. +%^^A +%^^A This work consists of all files listed in file README +%^^A +%\subsubsection{Définitions pour la langue \texttt{francais}} % +%\DescribeMacro{\lettre@select@french@labels} +% \begin{macrocode} \LettreDeclareLanguage{french}{% \sigflag=0\space +% \end{macrocode} +% \changes{2.352}{2014-08-02}{Correction \href{https://gna.org/bugs/?22259}{bug\#22259} en rendant \cs{cejour} +% entièrement développable si \texttt{babel} n'est pas chargé, de sorte à éviter tout problème de fragilité}% +% \begin{macrocode} \def\cejour{le \ifnum\day=1\space 1\ifx\ier\undefined er\else\expandafter\ier\fi \else\number\day\fi @@ -48,11 +56,14 @@ \def\vrefname{V.\raise.4ex\hbox{\tiny /}r\'ef.~} \def\nrefname{N.\raise.4ex\hbox{\tiny /}r\'ef.~} }% +% \end{macrocode} +% \DescribeMacro{\lettre@set@french@envs}La macro \cs{lettre@set@french@envs} redéfinit les listes à la +% françaises. Le seul environnement redéfini est \texttt{itemize}. +% \begin{macrocode} \newcommand*{\lettre@set@french@envs}{% \renewenvironment{itemize}% {\begin{list}{\textendash}% {\settowidth{\labelwidth}{\textendash}% - \setlength{\leftmargin}{\listmargin}% \addtolength{\leftmargin}{\labelwidth}% \addtolength{\leftmargin}{\labelsep}% \ifnum\@listdepth=0 @@ -70,6 +81,13 @@ }% {\end{list}}% } +% \end{macrocode} +% \begin{macrocode} \LettreProvidesLanguage{french}[2015/11/18]% \endinput -% End of file `lettre-french.ldf'. +% \end{macrocode} +%^^A End of file `lettre-french.ldf'. +\iffalse Local Variables: \fi +\iffalse mode: DocTeX\fi +\iffalse ispell-dictionary: "francais"\fi +\iffalse End: \fi \ No newline at end of file diff --git a/Master/texmf-dist/tex/latex/lettre/lettre-german.ldf b/Master/texmf-dist/tex/latex/lettre/lettre-german.ldf index 43a6d8ced61..85dc11d0a17 100644 --- a/Master/texmf-dist/tex/latex/lettre/lettre-german.ldf +++ b/Master/texmf-dist/tex/latex/lettre/lettre-german.ldf @@ -1,24 +1,28 @@ -% file name : `lettre-german.ldf'. -% package name: lettre -% maintenance : Vincent Belaïche (vincentb1@users.sourceforge.net) -% author : Denis Mégevand - Observatoire de Genève -% email : vincentb1@users.sourceforge.net -% version : v3.000 -% date : 2017/08/03 -% -% This file is part of the "lettre" package. -% This work may be distributed and/or modified under the conditions of the -% LaTeX Project Public License, either version 1.3 of this license or (at your -% option) any later version. The latest version of this license is in -% http://www.latex-project.org/lppl.txt and version 1.3 or later is part of all -% distributions of LaTeX version 2005/12/01 or later. -% -% This work has the LPPL maintenance status `maintained'. -% -% The Current Maintainer of this work is Vincent Belaïche. -% -% This work consists of all files listed in file README +%^^A file name : `lettre-german.ldf'. +%^^A package name: lettre +%^^A maintenance : Vincent Belaïche (vincentb1@users.sourceforge.net) +%^^A author : Denis Mégevand - Observatoire de Genève +%^^A email : vincentb1@users.sourceforge.net +%^^A version : v3.002 +%^^A date : +%^^A +%^^A This file is part of the "lettre" package. +%^^A This work may be distributed and/or modified under the conditions of the +%^^A LaTeX Project Public License, either version 1.3 of this license or (at your +%^^A option) any later version. The latest version of this license is in +%^^A http://www.latex-project.org/lppl.txt and version 1.3 or later is part of all +%^^A distributions of LaTeX version 2005/12/01 or later. +%^^A +%^^A This work has the LPPL maintenance status `maintained'. +%^^A +%^^A The Current Maintainer of this work is Vincent Belaïche. +%^^A +%^^A This work consists of all files listed in file README +%^^A +%\subsubsection{Définitions pour la langue \texttt{allemand}} % +%\DescribeMacro{\lettre@select@german@labels} +% \begin{macrocode} \LettreDeclareLanguage{german}{% \sigflag=1\relax \def\cejour{den \number\day .\space\ifcase\month\or @@ -48,4 +52,9 @@ }% \LettreProvidesLanguage{german}[2015/11/18]% \endinput -% End of file `lettre-german.ldf'. +% \end{macrocode} +%^^A End of file `lettre-german.ldf'. +\iffalse Local Variables: \fi +\iffalse mode: DocTeX\fi +\iffalse ispell-dictionary: "francais"\fi +\iffalse End: \fi \ No newline at end of file diff --git a/Master/texmf-dist/tex/latex/lettre/lettre-institut.tpl b/Master/texmf-dist/tex/latex/lettre/lettre-institut.tpl new file mode 100644 index 00000000000..0d2c7b1dc49 --- /dev/null +++ b/Master/texmf-dist/tex/latex/lettre/lettre-institut.tpl @@ -0,0 +1,18 @@ +% This file is part of the "lettre" package. +% This package is distributed under the terms of the LaTeX Project +% Public License (LPPL) described in the file lppl.txt. +% +% Denis Mégevand - Observatoire de Genève. +% +% Ce fichier fait partie de la distribution du paquetage "lettre". +% Ce paquetage est distribué sous les termes de la licence publique +% du projet LaTeX (LPPL) décrite dans le fichier lppl.txt. +% +% ******************************** +% * DEFINITIONS LOCALES * +% ******************************** +% +\address{Nom\\Adresse} +\telephone{Numero de telephone} %|\notelephone +\fax{Numero de telefax} %|\nofax +\lieu{Lieu} %|\nolieu diff --git a/Master/texmf-dist/tex/latex/lettre/lettre-obs.cfg b/Master/texmf-dist/tex/latex/lettre/lettre-obs.cfg index 4cb9a33e08b..aafbbd71093 100644 --- a/Master/texmf-dist/tex/latex/lettre/lettre-obs.cfg +++ b/Master/texmf-dist/tex/latex/lettre/lettre-obs.cfg @@ -29,12 +29,11 @@ \def\fromaddress{\centering \vskip -5mm% \if@letter - \treit RÉPUBLIQUE\\[-1mm]% - \treit ET CANTON DE GENÈVE\\[-1mm]% + \treit R\'EPUBLIQUE\\[-1mm]% + \treit ET CANTON DE GEN\`EVE\\[-1mm]% \fi - \includegraphics[viewport=-5.5 -7 55 65,clip=true,height=2.5cm]{ecusson55.pdf}\\ -% {\unitlength1mm\begin{picture}(0,0)\put(0,20){\makebox(0,0){$\diamond$}}\end{picture}}\\ - \mbox{\hss\trfvtn OBSERVATOIRE DE GENÈVE\hss}\\[2mm]% + \raisebox{0.5mm}[22.55mm][2.45mm]{\includegraphics[height=1.565cm]{ecusson55.mps}}\\ + \mbox{\hss\trfvtn OBSERVATOIRE DE GEN\`EVE\hss}\\[2mm]% \if@letter %\trten Ch. des Maillettes 51\\% \fi @@ -55,7 +54,7 @@ \newcommand{\CMD}{\dhfam\fontsize{14}{17pt}\selectfont} \long\def\addressobs{% \def\fromaddress{\centering - \CMD OBSERVATOIRE DE GENÈVE\rule[6pt]{0pt}% + \CMD OBSERVATOIRE DE GEN\`EVE\rule[6pt]{0pt}% {1.0\baselineskip}\\[3mm]% \cmd \if@letter @@ -76,7 +75,7 @@ \def\telephoneobs{\def\telephonenum{+41 (22) 755 26 11}}% \def\faxobs{\def\faxnum{+41 (22) 755 39 83}}% \def\ccpobs{\ccp{12-2130-4}}% -\def\ccittobs{\l@@warning{L'adresse X400 de l'Observatoire (\string\ccittobs) ne doit plus être utilisée}}% +\def\ccittobs{\l@@warning{L'adresse X400 de l'Observatoire (\string\ccittobs) ne doit plus \^etre utilis\'ee}}% \def\internetobs{\internet{obs.unige.ch}}% \def\ftpobs{{\tt obsftp.unige.ch \rm(129.194.65.3)}} \def\wwwobs{{\tt http://obswww.unige.ch/ \rm(129.194.65.3)}} diff --git a/Master/texmf-dist/tex/latex/lettre/lettre-romand.ldf b/Master/texmf-dist/tex/latex/lettre/lettre-romand.ldf index 68c821db870..4d09d5fc3e9 100644 --- a/Master/texmf-dist/tex/latex/lettre/lettre-romand.ldf +++ b/Master/texmf-dist/tex/latex/lettre/lettre-romand.ldf @@ -1,24 +1,29 @@ -% file name : `lettre-romand.ldf'. -% package name: lettre -% maintenance : Vincent Belaïche (vincentb1@users.sourceforge.net) -% author : Denis Mégevand - Observatoire de Genève -% email : vincentb1@users.sourceforge.net -% version : v3.000 -% date : 2017/08/03 -% -% This file is part of the "lettre" package. -% This work may be distributed and/or modified under the conditions of the -% LaTeX Project Public License, either version 1.3 of this license or (at your -% option) any later version. The latest version of this license is in -% http://www.latex-project.org/lppl.txt and version 1.3 or later is part of all -% distributions of LaTeX version 2005/12/01 or later. -% -% This work has the LPPL maintenance status `maintained'. -% -% The Current Maintainer of this work is Vincent Belaïche. -% -% This work consists of all files listed in file README +%^^A file name : `lettre-romand.ldf'. +%^^A package name: lettre +%^^A maintenance : Vincent Belaïche (vincentb1@users.sourceforge.net) +%^^A author : Denis Mégevand - Observatoire de Genève +%^^A email : vincentb1@users.sourceforge.net +%^^A version : v3.002 +%^^A date : +%^^A +%^^A This file is part of the "lettre" package. +%^^A This work may be distributed and/or modified under the conditions of the +%^^A LaTeX Project Public License, either version 1.3 of this license or (at your +%^^A option) any later version. The latest version of this license is in +%^^A http://www.latex-project.org/lppl.txt and version 1.3 or later is part of all +%^^A distributions of LaTeX version 2005/12/01 or later. +%^^A +%^^A This work has the LPPL maintenance status `maintained'. +%^^A +%^^A The Current Maintainer of this work is Vincent Belaïche. +%^^A +%^^A This work consists of all files listed in file README +%^^A +%\subsubsection{Définitions pour la langue \texttt{romand}} % +%\DescribeMacro{\lettre@select@romand@labels} +%\DescribeMacro{\lettre@mlp@romand@use} +% \begin{macrocode} \LettreDeclareLanguage{romand}[french]{% \sigflag=0 % \def\cejour{le @@ -50,4 +55,9 @@ }% \LettreProvidesLanguage{romand}[2015/11/18]% \endinput -% End of file `lettre-romand.ldf'. +% \end{macrocode} +%^^A End of file `lettre-romand.ldf'. +\iffalse Local Variables: \fi +\iffalse mode: DocTeX\fi +\iffalse ispell-dictionary: "francais"\fi +\iffalse End: \fi diff --git a/Master/texmf-dist/tex/latex/lettre/lettre-telefax.tpl b/Master/texmf-dist/tex/latex/lettre/lettre-telefax.tpl new file mode 100644 index 00000000000..62f20238418 --- /dev/null +++ b/Master/texmf-dist/tex/latex/lettre/lettre-telefax.tpl @@ -0,0 +1,110 @@ +% This file is part of the "lettre" package. +% This package is distributed under the terms of the LaTeX Project +% Public License (LPPL) described in the file lppl.txt. +% +% Denis Mégevand - Observatoire de Genève. +% +% Ce fichier fait partie de la distribution du paquetage "lettre". +% Ce paquetage est distribué sous les termes de la licence publique +% du projet LaTeX (LPPL) décrite dans le fichier lppl.txt. + +\documentclass[10pt|11pt|12pt,twoside,leqno,fleqn,% + francais|romand||allemand|anglais|americain,% + origdate]{lettre} +%\usepackage{french} +%\usepackage{babel} +% +\begin{document} +% +% Declaration du fichier de defauts +% ================================= +% +% Permet d'ecrire des telefax personalises +% sans repreciser a chaque fois les parametres de l'expediteur +% +%\institut{fichier} +% +% Declaration du destinataire et environnement +% ============================================ +% +\begin{telefax}{numero}{Destinataire \\ + Adresse \\ + no, rue \\ + NPA Lieu } +% +% Parametre obligatoire +% ===================== +% +\name{Nom de l'expediteur} +% +% Parametres facultatifs de l'entete % (defauts) +% =============================================== +% +%\address{Adresse d'expedition} % ( OBSERVATOIRE DE ) +% % ( GENEVE ) +% % ( ) +% % ( CH-1290 Sauverny ) +%\psobs % ( Logo de l'Observatoire ) +%\detailledaddress % ( Suisse ) +% +%\lieu{Se met devant la date} % (Sauverny, ) +%\nolieu +%\date{date fixe} % (date courante) +%\nodate +% +% Parametre de mise en page % (defauts) +% ============================================== +% +%\marge{largeur} % (15mm) +% +% Parametres facultatifs % (defauts) +% ============================================== +% +%\pagestyle{empty|headings} % ( plain par defaut ) +%\francais|\anglais| %\_______________(\francais) +%\americain|\allemand %/ +% +%\addpages{nombre} % () +% +%\location{Expediteur} % (\name) +%\signature{signature} % (\name) +%\secondsignature{signature} % () +%\thirdsignature{signature} % () +% +%\telephone{No de tel expediteur} % ( +41(22) 755 26 11 ) +%\fax{numero} % ( +41(22) 755 39 83 ) +%\email{adresse} % ( ) +%\telex{numero} % ( ) +% +%\basedepage{texte} % () +%\username{nom d'utilisateur} % () +%\internet{adresse RFC 822} % () +%\ccitt{adresse X400} % () +%\bitnet{adresse bitnet} % () +%\telepac{numero telepac} % () +%\decnet{numero decnet} % () +%\internetobs % ([username@]scsun.unige.ch) +%\ccittobs % ([S=username;]OU=scsun;O=unige;% +% % PRMD=switch;ADMD=arcom;C=ch) +% +%\conc{Sujet du message} % () +% +% Corps du fax +% ============ +% +\opening{Cher Ami,} +% + Texte du message +% +\closing{Salutations} +% +% Paragraphes supplementaires +% =========================== +% +%\ps{label}{texte du post-scriptum} +%\encl{annexes separees par des \\} +%\cc{destinataires de copies conformes separes par des \\} +% +\end{telefax} +% +\end{document} diff --git a/Master/texmf-dist/tex/latex/lettre/lettre.cls b/Master/texmf-dist/tex/latex/lettre/lettre.cls index 5b1f29b6fb0..d25c212c0ea 100644 --- a/Master/texmf-dist/tex/latex/lettre/lettre.cls +++ b/Master/texmf-dist/tex/latex/lettre/lettre.cls @@ -1,31 +1,62 @@ -% file name : `lettre.cls'. -% package name: lettre -% maintenance : Vincent Belaïche (vincentb1@users.sourceforge.net) -% author : Denis Mégevand - Observatoire de Genève -% email : vincentb1@users.sourceforge.net -% version : v3.000 -% date : 2017/08/03 -% -% This file is part of the "lettre" package. -% This work may be distributed and/or modified under the conditions of the -% LaTeX Project Public License, either version 1.3 of this license or (at your -% option) any later version. The latest version of this license is in -% http://www.latex-project.org/lppl.txt and version 1.3 or later is part of all -% distributions of LaTeX version 2005/12/01 or later. -% -% This work has the LPPL maintenance status `maintained'. -% -% The Current Maintainer of this work is Vincent Belaïche. -% -% This work consists of all files listed in file README +%^^A file name : `lettre.cls'. +%^^A package name: lettre +%^^A maintenance : Vincent Belaïche (vincentb1@users.sourceforge.net) +%^^A author : Denis Mégevand - Observatoire de Genève +%^^A email : vincentb1@users.sourceforge.net +%^^A version : v3.002 +%^^A date : +%^^A +%^^A This file is part of the "lettre" package. +%^^A This work may be distributed and/or modified under the conditions of the +%^^A LaTeX Project Public License, either version 1.3 of this license or (at your +%^^A option) any later version. The latest version of this license is in +%^^A http://www.latex-project.org/lppl.txt and version 1.3 or later is part of all +%^^A distributions of LaTeX version 2005/12/01 or later. +%^^A +%^^A This work has the LPPL maintenance status `maintained'. +%^^A +%^^A The Current Maintainer of this work is Vincent Belaïche. +%^^A +%^^A This work consists of all files listed in file README +%^^A % +%\subsection{Préambule} +% \begin{macrocode} \NeedsTeXFormat{LaTeX2e} +% \end{macrocode} +%\changes{2.354}{2014-09-19}{Ajout \texttt{etoolbox} requis: c'est pour avoir \cs{ifcsundef}}% +% \begin{macrocode} \RequirePackage{etoolbox} +% \end{macrocode} +% \begin{macrocode} \RequirePackage{graphicx} -\ProvidesClass{lettre}[2017/08/03 v3.000]\typeout{Copyleft Denis Megevand - Observatoire de Geneve}% +% \end{macrocode} +% \begin{macrocode} +\ProvidesClass{lettre}[ v3.002]% +\typeout{Copyleft Denis Megevand - Observatoire de Geneve}% +% \end{macrocode} +%\subsection{Déclaration des options de paquetage} +%\subsubsection{Options pour la mise en forme} +% \begin{macrocode} \DeclareOption{10pt}{\renewcommand\@ptsize{0}} \DeclareOption{11pt}{\renewcommand\@ptsize{1}} \DeclareOption{12pt}{\renewcommand\@ptsize{2}} +% \end{macrocode} +% \changes{2.351}{2014-07-26}{Ajout option \texttt{a4paper}}% +% \changes{2.354}{2014-10-02}{Ajout options \texttt{letterpaper}, +% \texttt{legalpaper}, \texttt{executivepaper}, \texttt{b5paper} et +% \texttt{a5paper}, pour cela on définit les longueurs \cs{lettre@x@mm} +% et \cs{lettre@y@mm}}% +% La longueur \cs{lettre@x@mm} et \cs{lettre@y@mm} permettent de +% ramener les longueurs données pour du format A4 dans le format +% courant. C'est à dire que la longueur \cs{lettre@x@mm} est telle +% que~: +% \[\cs{lettre@x@mm} = +% \frac{\cs{paperwidth}}{\SI{210}{\milli\metre}}\si{\milli\metre}\] +% De même la longueur \cs{lettre@y@mm} est telle que~: +% \[\cs{lettre@y@mm} = +% \frac{\cs{paperheight}}{\SI{297}{\milli\metre}}\si{\milli\metre}\] +% \begin{macrocode} \newlength\lettre@x@mm \setlength\lettre@x@mm{1mm}% \newlength\lettre@y@mm @@ -37,6 +68,8 @@ \lettre@x@mm=1mm% \lettre@y@mm=1mm% } +% \end{macrocode} +% \begin{macrocode} \DeclareOption{letterpaper} {\setlength\paperheight {11.00in}% \setlength\paperwidth {8.50in}% @@ -81,9 +114,20 @@ \DeclareOption{final}{\setlength\overfullrule{0pt}} \DeclareOption{leqno}{\input{leqno.clo}} \DeclareOption{fleqn}{\input{fleqn.clo}} -\DeclareOption{keepenvs=true}{\lettre@keep@envstrue}% -\DeclareOption{keepenvs=false}{\lettre@keep@envsfalse}% +% \end{macrocode} +%\changes{3.000}{2015-12-28}{Ajout option \texttt{keep envs}}% +%\changes{3.001}{2019-07-23}{Refonte implémentation option \texttt{keep envs}, pour prendre en charge détection auto.}% +% \begin{macrocode} +\DeclareOption{keepenvs=true}{\lettre@keep@envs1}% +\DeclareOption{keepenvs=false}{\lettre@keep@envs2}% \DeclareOption{keepenvs}{\ExecuteOptions{keepenvs=true}}% +% \end{macrocode} +%\subsubsection{Options pour la langue} +% Tout d'abord on se fait un petit itérateur, histoire de gérer l'ensemble des langues de façon +% programatique. Le principe c'est que si on appelle +% \cs{lettre@iterate}\meta{liste}\texttt{,}\cs{@nil}\texttt{,}, alors \cs{lettre@iterate@body} est appelé sur +% chaque élément de la liste \meta{liste} qui est une liste dont les items sont séparés par des virgules. +% \begin{macrocode} \def\lettre@iterate#1,{% {% \def\@tempa{#1}% @@ -98,15 +142,35 @@ \expandafter }\@tempa }% +% \end{macrocode} +%\begin{macro}{\lettre@supported@language@list} +% Liste des langues prises en charge par la classe \texttt{lettre}. C'est une liste dont les éléments sont +% séparés par des virgules (sans espaces ni éléments vides). Chaque élément de la liste est un langage pour +% lequel \texttt{lettre} a une option de langue et est capable de charger les définitions +% correspondantes. La raison d'être de cette liste est de factoriser les itérations pour les cas suivants: +% \begin{itemize} +% \item charger les définitions lorsque le langage en question est utilisé par \texttt{babel} ou \texttt{mlp}~; +% \item charger les définitions lorsque le langage est demandé par une option de classe. +% \end{itemize} +% \begin{macrocode} \newcommand*\lettre@supported@language@list{% francais,french,frenchb,romand,% allemand,german,germanb,ngerman,ngermanb,% americain,american,USenglish,% anglais,english,british,UKenglish% }% +% \end{macrocode} +%\end{macro} +% Cependant, toutes les langues \meta{langue} dans \cs{lettre@supported@language@list} ne correspondent pas à +% un fichier \texttt{lettre-}\meta{langue}\texttt{.ldf}, car certaines ne sont que des alias. Aussi on commence +% par définir que par défaut une langue n'a pas d'alias (en d'autres termes elle est l'alias d'elle-même). +% \begin{macrocode} \newcommand*\lettre@iterate@body[1]{% \expandafter\def\csname lettre@#1@alias@of\endcsname{#1}}% \expandafter\lettre@iterate\lettre@supported@language@list,\@nil,% +% \end{macrocode} +% Ceci étant fait, on définit celles des langues qui sont des alias d'une autre langue~: +% \begin{macrocode} \def\@tempa#1#2{\expandafter\def\csname lettre@#1@alias@of\endcsname{#2}}% \@tempa{frenchb}{french} \@tempa{francais}{french} @@ -118,10 +182,34 @@ \@tempa{british}{english} \@tempa{american}{USenglish} \@tempa{americain}{USenglish} +% \end{macrocode} +% \DescribeMacro{\lettre@languages} \cs{lettre@languages} contient la liste des langues pour lesquelles les +% définitions ont été chargées. Le chargement ne se fait pas immédiatement, mais après le \cs{ProcessOption} de +% sorte à rendre possible que dans le fichier de définitions il y ait un \cs{RequirePackage}. Cette +% possibilité n'est pas utilisée actuellement. +% \begin{macrocode} \newcommand*\lettre@languages{}% +% \end{macrocode} +% \DescribeMacro{\lettre@mainlang}\cs{lettre@mainlang} est la langue demandée par l'utilisateur. C'est +% nécessairement un élément de la liste \cs{lettre@supported@language@list}. +% \begin{macrocode} \newcommand*\lettre@mainlang{}% +% \end{macrocode} +% \DescribeMacro{\lettre@ldf@version} \cs{lettre@ldf@version}\marg{lang} est la version de chaque fichier +% \texttt{lettre-}\meta{langue}\texttt{.ldf} +% \begin{macrocode} \newcommand*\lettre@ldf@filename[1]{lettre-#1.ldf}% \newcommand*\lettre@ldf@version[1]{ver@\lettre@ldf@filename{#1}}% +% \end{macrocode} +% Toutes ces langues \meta{langue} n'ont pas leur propre fichier de définition +% \texttt{lettre-\meta{langue}.ldf}, en effet certaines de ces langues ne sont juste que des alias. +% \changes{3.000}{2015-12-20}{Listage des options de langue dans \cs{lettre@languages} dans l'ordre de +% déclaration au sein de \cs{documentclass}}% +% +% Par contre pour chacune des ces \meta{langue} une option \meta{langue} est définie, c'est l'une des façons +% dont l'utilisateur peut charger les définitions correspondant à cette langue. La dernière options passée +% donne la langue par défaut au début du document. +% \begin{macrocode} \def\lettre@iterate@body#1{% \DeclareOption{#1}{% \edef\@tempa{\csname lettre@#1@alias@of\endcsname}% @@ -144,20 +232,54 @@ }% }% \expandafter\lettre@iterate\lettre@supported@language@list,\@nil,% +% \end{macrocode} +% \changes{3.000}{2015-12-20}{Ajout option \texttt{pass lang}}% +% \begin{macrocode} \DeclareOption{passlang=true}{\lettre@pass@langtrue}% \DeclareOption{passlang=false}{\lettre@pass@langfalse}% \DeclareOption{passlang}{\ExecuteOptions{pass lang=true}}% +% \end{macrocode} +%\changes{2.354}{2014-10-04}{Ajout des options \texttt{noinfo}, \texttt{loghighlight}, et \texttt{strict}}% +%\subsubsection{Options pour la gestion des relevés du journal de compliation} +% Le journal de compilation est le fichier \meta{jobname}\texttt{.log} produit par la compilation. Il contient +% des relevés de trois types : erreur, avertissement, et info. +% +% Suppression des relevés d'info dans le journal, on peut aussi faire ça avec la commande \cs{noinfo} mais dans +% ce cas on aura quand même, s'il en est, les relevés d'info provoqués par le traitement des options. +% \begin{macrocode} \DeclareOption{noinfo}{\c@infos=0} +% \end{macrocode} +% Désactive ou active les traces de type \texttt{LETTRE INFO ===} ou \texttt{LETTRE AVERTISSEMENT ===} placé au +% début des relevés. Elles ne sont pas utiles dans un environnement de développement qui colorise le journal. +%\changes{2.354}{2015-11-30}{Remplacement option `nologhighlight' par `loghighlight=false'}% +% \begin{macrocode} \DeclareOption{loghighlight=false}{\lettre@loghighlightfalse} \DeclareOption{loghighlight=true}{\lettre@loghighlighttrue} \DeclareOption{loghighlight}{\ExecuteOptions{loghighlight=true}} +% \end{macrocode} +% Mue certains relevés d'avertissement en relevés d'erreur, rendant ainsi la classe moins permissive. +%\changes{2.354}{2015-11-30}{Ajout options `strict=false' \& `strict=true'}% +% \begin{macrocode} \DeclareOption{strict}{\ExecuteOptions{strict=true}} \DeclareOption{strict=true}{\lettre@stricttrue\l@@info{Mode `strict': traite certains avertissements comme des erreurs}} \DeclareOption{strict=false}{\lettre@strictfalse\l@@info{Mode `strict' desactive}} +% \end{macrocode} +%\subsubsection{Options par défaut} +% \begin{macrocode} \if@compatibility\else \DeclareOption*{\l@@warning{Option inconnue : `\CurrentOption', assurez-vous que c'est une option globale passee aux paquetages utilises dans votre document}} \fi +% \end{macrocode} +%\subsection{Messages et avertissements} +% Envoyés à la console et dans le fichier journal \meta{jobname}\texttt{.log}. +% +% On peut supprimer allumer ou éteindre en tout temps les +% relevés d'informations par les commandes \cs{infos} et \cs{noinfos}. +% Les avertissements ne peuvent être supprimés. L'option \texttt{strict} fait que les avertissements causent +% une erreur en appelant \cs{ClassError} au lieu de \cs{ClassWarning}. +%\changes{2.354}{2014-10-04}{Ajout des options \texttt{noinfo}, \texttt{nologhighlight}, et \texttt{strict}}% +% \begin{macrocode} \def\l@@error#1{\ClassError{lettre}{#1}}% \def\infos{\c@infos=1\relax} \def\noinfos{\c@infos=0\relax} @@ -188,15 +310,41 @@ }{% Class lettre Message: #1\@gobble}% \fi}% +% \end{macrocode} +%\subsection{Macros utiles aux fichier de définitions de langue} +% \DescribeMacro{\LettreProvidesLanguage} +% \begin{macrocode} \newcommand*{\LettreProvidesLanguage}[1]{% \ProvidesFile{lettre-#1.ldf}% }% +% \end{macrocode} +% \begin{macro}{\LettreDeclareLanguage}\cs{LettreDeclareLanguage}\marg{dialècte}\oarg{langue-de-base}\marg{définitions}, +% cette macro définit globalement soit une, soit deux macros~: +% \begin{itemize} +% \item La macro \cs{lettre@select@\meta{dialecte}@labels} est définie pour se développer en \meta{définitions}, et +% \item La macro \cs{lettre@lmp@\meta{dialecte}@use} (où \og \texttt{lmp}\fg{} veut dire \og language for +% multilang processor\fg) n'est définie que si l'argument optionnel \meta{langue-de-base} est fourni, et +% auquel cas est définie pour se développer en \meta{langue-de-base}. +% \end{itemize} +% \begin{macrocode} \newcommand*{\LettreDeclareLanguage}[1]{% \begingroup +% \end{macrocode} +% La première chose qu'on fait c'est de mettre \meta{dialecte} dans \cs{toks0}. Quant à \cs{toks2} il +% contiendra le code définissant ou non la macro \cs{lettre@lmp@\meta{dialecte}@use}. La macro +% \cs{lettre@declare@language@arg@ii} sert à récupérer l'argument \meta{langue-de-base} lorsqu'il est présent. +% \begin{macrocode} \toks0{#1}% \@ifnextchar[\lettre@declare@language@arg@ii {% +% \end{macrocode} +% En cas d'absence de l'argument optionnel \meta{langue-de-base} \cs{toks2} est donc vide, puisqu'on ne +% définit pas \cs{lettre@lmp@\meta{dialecte}@use}~: +% \begin{macrocode} \toks2{}% +% \end{macrocode} +% La macro \cs{lettre@declare@language@arg@iii} sert à récupérer l'argument \meta{définitions}~: +% \begin{macrocode} \lettre@declare@language@arg@iii }% }% @@ -213,7 +361,8 @@ \toks3{#1}% \edef\@tempa{% \noexpand\ifcsdef{lettre@select@\the\toks0 @labels}{% - \noexpand\l@@error{Macro `\string\lettre@select@\the\toks0 @labels\space d'ej`a d'efinie}% + \noexpand\l@@error{Macro `\string\lettre@select@\the\toks0 @labels\space + d'ej`a d'efinie}% }{% \noexpand\gdef \expandafter\noexpand\csname lettre@select@\the\toks0@labels\endcsname{% @@ -223,16 +372,42 @@ }% \expandafter\endgroup\@tempa }% +% \end{macrocode} +% \end{macro} +% +%\subsection{Déclaration des sorties des options de paquetage, et exécutions des options} +%\label{sec:sortie-opt-pako} +% \begin{macrocode} \newcommand\@ptsize{} \newcount\c@infos\c@infos=1\relax \newif\if@origdate\@origdatefalse \newif\if@etiq\@etiqfalse +% \end{macrocode} +% \changes{3.000}{2015-12-20}{Ajout option \texttt{pass lang}}% +% \begin{macrocode} \newif\iflettre@pass@lang\lettre@pass@langtrue -\newif\iflettre@keep@envs\lettre@keep@envsfalse +% \end{macrocode} +% \changes{3.001}{2019-07-23}{Option \texttt{keep envs} avec détection par défaut}% +% L'option \texttt{keep envs} se traduit dans le compteur \cs{lettre@keep@envs} de la manière suivante~:\\ +% \begin{tabular}{>{\rrab}p{3cm}p{\dimexpr\linewidth-3cm-4\tabcolsep}}\toprule +% \cs{lettre@keep@envs}&Signification\\\midrule +% 0&Détection automatique du comportement \texttt{keep envs=true}, ou \texttt{keep envs=false}\\ +% 1&Correspond à \texttt{keep envs=true}, c.-à-d.\ que \texttt{lettre} ne redéfinit pas les +% environnements \texttt{itemize} et consorts\\ +% 2&Correspond à \texttt{keep envs=false}, c.-à-d.\ que \texttt{lettre} redéfinit selon la langue les +% environnements \texttt{itemize} et consorts\\\bottomrule +% \end{tabular} +% \begin{macrocode} +\newcount\lettre@keep@envs +\lettre@keep@envs0 % \newif\iflettre@strict\lettre@strictfalse \newif\iflettre@loghighlight\lettre@loghighlightfalse \ExecuteOptions{10pt,oneside,final} \ProcessOptions +% \end{macrocode} +% Chargement des définitions de langue. On fait un \cs{input} de tous les fichiers \meta{nomfic} dont la macro +% version \cs{ver@}\meta{nomfic} a été durant le traitements des options configurée à \og To be loaded\fg. +% \begin{macrocode} \def\lettre@iterate@body#1{% \edef\@tempa{\csname lettre@#1@alias@of\endcsname}% \def\@tempb{To be loaded}% @@ -243,8 +418,21 @@ \fi }% \expandafter\lettre@iterate\lettre@supported@language@list,\@nil,% +% \end{macrocode} +% Passage des options de langue au paquetages tels +% \texttt{babel}.\newline\DescribeMacro{\lettre@languageable@packages}Tout d'abord on se fait une liste de +% paquetages auxquels passer les options de langues. C'est à dire qu'on gère ces options comme si elles étaient +% globales vis à vis de ces paquetages là seulement. +% \begin{macrocode} \newcommand\lettre@languageable@packages{babel,fmtcount,mlp}% +% \end{macrocode} +% Maintenant on passe toutes les options stockées dans \cs{lettre@languages} à tous les paquetage listés dans +% \cs{lettre@languageable@packages}. +% \begin{macrocode} \ifx\lettre@languages\@empty\else +% \end{macrocode} +% \changes{3.000}{2015-12-20}{Ajout option \texttt{pass lang}}% +% \begin{macrocode} \iflettre@pass@lang \def\lettre@iterate@body#1{% \let\@tempb\lettre@iterate@body @@ -257,6 +445,9 @@ \expandafter\lettre@iterate\lettre@languages,\@nil,% \fi \fi +% \end{macrocode} +%\subsection{Polices} +% \begin{macrocode} \input{size1\@ptsize.clo} \DeclareOldFontCommand{\rm}{\rmfamily}{\mathrm} \DeclareOldFontCommand{\sl}{\slshape}{\@nomath\sl} @@ -267,6 +458,9 @@ \DeclareOldFontCommand{\tt}{\ttfamily}{\mathtt} \DeclareRobustCommand*{\cal}{\@fontswitch{\relax}{\mathcal}} \DeclareRobustCommand*{\mit}{\@fontswitch{\relax}{\mathnormal}} +% \end{macrocode} +%\subsubsection{Paramètres pour le contrôle des paragraphes} +% \begin{macrocode} \lineskip 1pt% \normallineskip 1pt% \parskip .7em% @@ -275,28 +469,79 @@ \partopsep 0pt% \itemsep .2em% \renewcommand\baselinestretch{1} +% \end{macrocode} +% +% \begin{macrocode} \@lowpenalty 51\relax \@medpenalty 151\relax \@highpenalty 301\relax \@beginparpenalty -\@lowpenalty \@endparpenalty -\@lowpenalty \@itempenalty -\@lowpenalty +% \end{macrocode} +%\subsubsection{Paramètres pour le contrôle de la mise en page} +%\changes{2.354}{2014-10-04}{Utilisation des longueurs \cs{lettre@x@mm} et \cs{lettre@y@mm} pour la prise en +% charge des options \texttt{letterpaper}, \texttt{legalpaper}, \texttt{executivepaper}, \texttt{b5paper} et +% \texttt{a5paper}.}% +% Marge supérieure +% \begin{macrocode} \topmargin 25\lettre@y@mm +% \end{macrocode} +% suppression de l'offset vertical +% \begin{macrocode} \advance\topmargin by -1in +% \end{macrocode} +% Separation d'entête \SI{4}{\milli\metre} +% \begin{macrocode} \headheight 0pt% \headsep 4\lettre@y@mm +% \end{macrocode} +% hauteur texte \SI{250}{\milli\metre} +% \begin{macrocode} \textheight 250\lettre@y@mm +% \end{macrocode} +% sep d'embase \SI{9}{\milli\metre} +% \begin{macrocode} \footskip 9\lettre@y@mm +% \end{macrocode} +% Total vertical \(25+4+250+9=\SI{288}{\milli\metre}\), reste \SI{9}{\milli\metre} sur A4 = 297 mm. +% \begin{macrocode} \footnotesep 5\lettre@y@mm \marginparpush 1\lettre@x@mm +% \end{macrocode} +% marge gauche \SI{25}{\milli\metre} +% \begin{macrocode} \oddsidemargin 25\lettre@x@mm \evensidemargin 25\lettre@x@mm +% \end{macrocode} +% suppression de l'offset horizontal +% \begin{macrocode} \advance\oddsidemargin by -1in \advance\evensidemargin by -1in +% \end{macrocode} +% largeur texte 160mm +% \begin{macrocode} \textwidth 160\lettre@x@mm +% \end{macrocode} +% sep. note lat. 4mm +% \begin{macrocode} \marginparsep 4\lettre@x@mm +% \end{macrocode} +% larg. note lat 15mm +% \begin{macrocode} \marginparwidth 15\lettre@x@mm +% \end{macrocode} +% Total horizontal \(25+160+4+15=\SI{204}{\milli\metre}\), reste \SI{6}{\milli\metre} sur A4 = +% \SI{210}{\milli\metre}. +% \begin{macrocode} \skip\footins 4mm plus 2pt minus 4pt% +% \end{macrocode} +% +%\subsection{Le format lettre et fax de l'observatoire de Genève} +% +%\subsubsection{newcounts, newdimens, newifs, et newwrite} +% Il y a aussi un \cs{newcount} dans la \S~\ref{sec:sortie-opt-pako}. +% \begin{macrocode} \newcount\auxcount \newcount\c@labelstart \newcount\c@lettre @@ -323,25 +568,43 @@ \newdimen\faxbox@width \newdimen\toaddress@fax@width \newdimen\fromname@fax@width +% \end{macrocode} +%\changes{2.354}{2014-10-21}{Ajout \cs{lettre@vref@width} et \cs{lettre@nref@width}}% +% \begin{macrocode} \newlength\lettre@vref@width \newlength\lettre@nref@width +% \end{macrocode} +%Il y a aussi des \cs{newif} dans la \S~\ref{sec:sortie-opt-pako}. +% \begin{macrocode} \newif\if@letter\@lettertrue \newif\if@detail\@detailfalse +% \end{macrocode} +% Fichiers auxiliaires +% \begin{macrocode} \newwrite\@tensionaux \newwrite\@dateaux \newwrite\@etiqaux \newwrite\@faxaux +% \end{macrocode} +%\subsubsection{Macros internes} +%\label{sec:macros-internes} +% \begin{macrocode} +\let\lettre@par\@par \@ifundefined{lettre@t}{}{\ClassError{lettre}{Definition en double}% - {Redefinition de la macro `lettre@t'}} + {Redefinition de la macro \protect\lettre@t}} \def\lettre@t#1#2{\begin{list}{#1}{\setlength{\labelsep}{10pt}% - \setlength{\labelwidth}{\listmargin}% - \setlength{\leftmargin}{\listmargin}% - \setlength{\listparindent}{0pt}}% - \item #2% - \end{list}} + \setlength{\labelwidth}{\listmargin}% + \setlength{\leftmargin}{\listmargin}% + \setlength{\listparindent}{0pt}}% + \item\relax #2% + \end{list}} \def\detailledaddress{\@detailtrue}% +% \end{macrocode} +% \begin{macrocode} \def\stopletter{\vskip0ptplus1filll}% \def\stopfax{\vskip0ptplus1filll}% +% \end{macrocode} +% \begin{macrocode} \def\resetopenenv{% \faxpage=0\relax \csuse{\lettre@mainlang}% @@ -358,6 +621,12 @@ \def\resetauxenv{ \def\auxflag{} \auxcount=0\relax +% \end{macrocode} +% Les macro \cs{toref} et \cs{fromref} sont intialisé à \cs{space} de sorte à ce que par défaut la +% configuration de l'une des deux références entraîne l'affichage des deux boîtes de référence, avec +% éventuellement l'autre boîte à blanc (c.-à-d. contenant juste un espace).% +% \changes{2.354}{2014-10-21}{Un argument vide à \cs{Vref} ou \cs{Nref} supprime la référence}% +% \begin{macrocode} \let\toref\space\let\fromref\space \def\telexnum{}\def\ccpnum{} } @@ -365,33 +634,72 @@ \def\emailflag{} \emailcount=0\relax \def\@username{} - \def\ccittnum{}\def\internetnum{}\def\bitnetnum{}\def\telepacnum{}\def\decnetnum{} + \def\ccittnum{}\def\internetnum{}\def\bitnetnum{}% + \def\telepacnum{}\def\decnetnum{} } -\long\def\@processto#1{\@xproc #1\\@@@\ifx\toaddress\@empty - \else \@yproc #1@@@\fi}% -\long\def\@xproc #1\\#2@@@{\def\toname{#1}\def\toaddress{#2}}% -\long\def\@yproc #1\\#2@@@{\def\toaddress{#2}}% -\def\stopbreaks{\interlinepenalty \@M - \def\par{\@@par\nobreak}\let\\=\@nobreakcr +% \end{macrocode} +% \DescribeMacro{\lettre@processto}\cs{lettre@processto} extrait \cs{toname} et \cs{toaddress} de l'argument +% adresse passé aux environnements \texttt{letter} ou \texttt{telefax}. +% \changes{3.001}{2017-08-10}{Renommage \cs{@processto}, \cs{@xproc} et \cs{yproc} pour préfixer par +% \texttt{lettre} afin d'être à l'épreuve du temps contre des conflits de nommage potentiels. Utilisation +% \cs{@nil} comme terminateur plutôt que \texttt{@@@} que l'utilisateur pourrait utiliser dans son adresse.} +% \begin{macrocode} +\long\def\lettre@processto#1{\lettre@xproc #1\\\@nil\ifx\toaddress\@empty + \else \lettre@yproc #1\@nil\fi}% +\long\def\lettre@xproc #1\\#2\@nil{\def\toname{#1}\def\toaddress{#2}}% +\long\def\lettre@yproc #1\\#2\@nil{\def\toaddress{#2}}% +% \end{macrocode} +% \DescribeMacro{\lettre@stopbreaks}La macro \cs{lettre@stopbreaks} fait rentrer dans un mode où l'on empèche +% les sauts de ligne. +% \changes{3.001}{2019-06-30}{Correction anomalie +% \href{https://puszcza.gnu.org.ua/bugs/index.php?428}{\#428}. Les +% \og\cs{def}\cs{par}\texttt{\{}\ldots\texttt{\}}\fg\ sont remplacés par des +% \og\cs{@setpar}\texttt{\{}\ldots\texttt{\}}\fg} +% \begin{macrocode} +\def\lettre@stopbreaks{% + \interlinepenalty \@M + \@setpar{\@@par\nobreak\lettre@parshape}\let\\=\@nobreakcr \let\vspace\@nobreakvspace}% \def\@nobreakvspace{\@ifstar{\@nobreakvspacex}{\@nobreakvspacex}}% \def\@nobreakvspacex#1{\ifvmode\nobreak\vskip #1\relax\else \@bsphack\vadjust{\nobreak\vskip #1}\@esphack\fi}% \def\@nobreakcr{\vadjust{\penalty\@M}\@ifstar{\@xnewline}{\@xnewline}}% -\def\startbreaks{\let\\=\@normalcr - \interlinepenalty 200\relax\def\par{\@@par\penalty -100\relax}}% +% \end{macrocode} +% \DescribeMacro{\lettre@startbreaks}La macro \cs{lettre@startbreaks} fait rentrer dans un mode où l'on +% autorise les sauts de ligne. +% \begin{macrocode} +\def\lettre@startbreaks{% + \let\\=\@normalcr + \interlinepenalty 200\relax + \@setpar{\@@par\penalty -100\relax + \lettre@parshape}}% +% \end{macrocode} +%\subsection{Étiquettes} +% La commande \cs{startlabels} suivante définit des pages A4 de 2 colonnes d'étiquettes avec +% \SI{15}{\milli\metre} de marges gauche et droite sur chaque étiquette. Si l'on change le nombre +% d'étiquettes sur une page, il faut aussi modifier la macro \cs{@startlabels}. +%\DescribeMacro{\startlabels} +% \begin{macrocode} \def\startlabels{% \baselineskip=0pt\lineskip=0pt% \pagestyle{empty}% \let\@texttop=\relax \topmargin=0pt\headsep=0pt% \oddsidemargin=15mm\evensidemargin=15mm% +% \end{macrocode} +% modifications des dimensions de la page à faire ici +% \begin{macrocode} \textheight=297mm\textwidth=180mm\columnsep=30mm% \@colht=\textheight\@colroom=\textheight\vsize=\textheight \small \baselineskip=0pt\lineskip=0pt% \boxmaxdepth=0pt% \twocolumn\relax}% +% \end{macrocode} +% La commande \cs{@startlabels} suivante définit la position de la +% première étiquette sur la page, à partir de la valeur du +% compteur \texttt{labelstart}. +% \begin{macrocode} \def\@startlabels{% \l@@info{Position de la premiere etiquette: \the\c@labelstart}% \ifnum\c@labelstart>\z@ @@ -406,36 +714,81 @@ \l@@warning@strictable{Position de la premiere etiquette ignoree}% \fi }% +% \end{macrocode} +% \DescribeMacro{\mlabel}La commande \cs{mlabel}\marg{l'étiquette} fabrique une étiquette de +% \SI{37}{\milli\metre} de hauteur, la largeur étant définie dans \cs{startlabels} +% (\(\SI{105}{\milli\metre}-\SI{30}{\milli\metre}\) de marges) chacune contenant \SI{70}{\milli\metre} de +% texte \meta{l'étiquette} au centre de l'étiquette. +% \begin{macrocode} \def\mlabel#1{\setbox0\vbox{\parbox[b]{70mm}{\rm\strut\ignorespaces #1}}% \vbox to 37mm{\vskip5mmplus1fil \box0 \vskip5mmplus1fil}}% +% \end{macrocode} +% \DescribeMacro{\makelabels}\cs{makelabels}\oarg{num label} demande à \verb+\begin{document}+ d'imprimer +% sur le fichier auxiliaire \verb+.etq+ l'ordre de préparer les étiquettes. Son argument optionnel +% \meta{num label} est un numéro définissant quelle est la prochaine étiquette libre sur la page en +% partant du numéro \(1\), de manière à utiliser des feuilles déjà partiellement utilisées. Dans ce cas, +% \verb+\begin{document}+ imprime autant d'étiquettes vides que nécessaire. +% \begin{macrocode} \def\makelabels{% \@etiqtrue \l@@info{On demande des etiquettes}% \@ifnextchar [{\i@makelabels}{\i@makelabels[1]}}% \def\i@makelabels[#1]{\c@labelstart=#1}% +% \end{macrocode} +%\subsection{Interface utilisateur} +%\subsubsection{Adaptations des paramètres par défaut} +%\DescribeMacro{\institut} +% \changes{3.000}{2015-10-21}{Nom fichier institut en \texttt{lettre-\meta{institut}.cfg}} +% \begin{macrocode} \newcommand*\lettre@institut[1]{% \l@@info{Fichier de defaut: #1}% \def\lettre@input@institut{\makeatletter \input{#1}% \makeatother}}% +% \end{macrocode} +% On prend en compte le cas où l'utilisateur malicieux aurait mis un chemin à l'institut. C'est surtout pour +% être rétro-compatible avec l'utilisation de l'extention \textsf{.ins} pour les fichiers instituts qu'on fait +% ça. On utilise la macro \cs{filename@parse} du noyeau \LaTeX\ dont le résultat l'analyse va dans les macros +% \cs{filename@area}, \cs{filename@base} et \cs{filename@ext}. On détourne \cs{filename@area} pour recevoir le +% nom du fichier insititut en \texttt{.cfg}. +% \begin{macrocode} \newcommand*\lettre@institut@parse[1]{% \filename@parse{#1}% - \edef\filename@area{\filename@area lettre-\filename@base\unless\ifx\filename@ext\relax.\filename@ext\fi.cfg}% + \edef\filename@area{\filename@area lettre-\filename@base + \unless\ifx\filename@ext\relax.\filename@ext\fi.cfg}% }% +% \end{macrocode} +% Avec l'option \texttt{strict} le fichier institut doit se nommer que \texttt{lettre-\meta{institut}.cfg}. +% \begin{macrocode} \iflettre@strict \newcommand*\institut[1]{% \lettre@institut@parse{#1}% \expandafter\lettre@institut\expandafter{\filename@area}}% \else +% \end{macrocode} +% Sans l'option \texttt{strict} le fichier institut peut se nommer soit \texttt{lettre-\meta{institut}.cfg}, +% soit \texttt{\meta{institut}.ins}, on teste la première possibilité en premier. +% \begin{macrocode} \newcommand*\institut[1]{% \lettre@institut@parse{#1}% - \IfFileExists{\filename@area}{\expandafter\lettre@institut\expandafter{\filename@area}}{% - \l@@warning{Le nommage des fichiers instituts en `.ins' est obsolete, veuillez les nommer en - `lettre-.cfg'}% + \IfFileExists{\filename@area}{% + \expandafter\lettre@institut\expandafter{\filename@area}}{% + \l@@warning{Le nommage des fichiers instituts en `.ins' est obsolete, + veuillez les nommer en `lettre-.cfg'}% \lettre@institut{#1.ins}}% } \fi +% \end{macrocode} +% +%\subsubsection{Environnements letter et fax} +% +%\DescribeEnv{letter} L'environnement \cs{begin\{letter\}}\marg{adresse}\ldots\cs{end\{letter\}} définit une +% lettre +% \changes{2.354}{2014-09-19}{Utilisation de \protect\ifcsundef\space pour tester \protect\csname +% letter\protect\the\expandafter\protect\csname c@lettre\endcsname\protect\endcsname} +% \begin{macrocode} \long\def\letter#1{% + \global\let\lettre@tns@vspace\lettre@letter@tns@vspace \rm \global\advance\c@lettre\@ne \l@@info{Lettre \the\c@lettre}% @@ -454,14 +807,21 @@ \fi \fi \c@page\@ne +% \end{macrocode} +% \changes{2.354}{2014-10-22}{Correction bug \href{https://gna.org/bugs/?23959}{\#23959}~: \og\cs{c@footnote} +% n'est pas re-initialisé au début de chaque lettre\fg} +% \begin{macrocode} \c@footnote0 % \resetopenenv\resetcloseenv\resetauxenv\resetemailenv \@lettertrue \lettre@input@institut \let\opening=\letteropening \interlinepenalty=200\relax - \@processto{#1} + \lettre@processto{#1} }% +% \end{macrocode} +%\DescribeEnv{endletter} +% \begin{macrocode} \def\endletter{\par \ifdim\pagetotal < 50pt \immediate\write\@tensionaux{% @@ -535,7 +895,16 @@ \\\toaddress}}% \endgroup \fi}% +% \end{macrocode} +% \DescribeEnv{telefax}L'environnement \texttt{telefax} permet de formater une télécopie. Liste des +% arguments~:\newline +% \begin{tabular}{@{\#}l@{ : }l@{}} +% 1&Numéro du destinataire\\ +% 2&Nom+adresse du destinataire\\ +% \end{tabular} +% \begin{macrocode} \long\def\telefax#1#2{% + \global\let\lettre@tns@vspace\@empty \rm \global\advance\c@telefax\@ne \l@@info{Telefax \the\c@telefax}% @@ -563,8 +932,11 @@ \@input{\jobname.fax}% \l@@info{Lecture du fichier auxiliaire de fax: Nombre total de pages=\totalpages}% \makeatother - \@processto{#2} + \lettre@processto{#2} }% +% \end{macrocode} +% \DescribeMacro{\endtelefax} +% \begin{macrocode} \def\endtelefax{% \stopfax \begingroup @@ -574,14 +946,27 @@ \def\protect##1{\string##1\space}% \immediate\openout\@faxaux=\jobname.fax% \immediate\write\@faxaux{\string\def\string\totalpages{\the\faxpage}}% - \if\totalpages\the\faxpage\else - \l@@warning{Le nombre de pages du fax a change, \MessageBreak - (ancien=\totalpages, nouveau=\the\faxpage) \MessageBreak - veuillez recompiler pour le corriger dans l'entete}% - \fi + \ifx\totalpages\@empty + \let\@tempa\@firstoftwo + \else\ifnum\totalpages=\the\faxpage + \let\@tempa\@firstoftwo + \else + \let\@tempa\@secondoftwo + \fi\fi + \@tempa + {}{\l@@warning{Le nombre de pages du fax a change, \MessageBreak + (ancien=\totalpages, nouveau=\the\faxpage) \MessageBreak + veuillez recompiler pour le corriger dans l'entete}}% \endgroup \@@par\pagebreak\@@par }% +% \end{macrocode} +%\subsubsection{Les commandes \cs{opening} et \cs{closing}} +% \DescribeMacro{\lettre@write@pdate@to@dateaux}\cs{lettre@write@pdate@to@dateaux} permet d'écrire dans le +% fichier \cs{jobname}\texttt{.odt} la date de première compilation en cas de mode \texttt{origdate}. Cette +% action est effectuée au moment de la commande \cs{opening}. +% \changes{2.352}{2014-08-02}{Création macro \cs{lettre@write@pdate@to@dateaux} pour correction \href{https://gna.org/bugs/index.php?22423}{bogue\#22423}} +% \begin{macrocode} \def\lettre@write@pdate@to@dateaux{% \l@@info{`\pdate' ecrit dans \jobname.odt}% {% @@ -590,15 +975,43 @@ \string\expandafter\string\def% \string\csname\space origdate\the\c@lettre \string\endcsname{\pdate}}}} +% \end{macrocode} +% \DescribeMacro{\lettre@get@date}\cs{lettre@get@date} permet de relire la date à partir de +% \cs{jobname}\texttt{.odt} lorsqu'elle y est disponible. +% \changes{2.352}{2014-08-06}{Nouvelle macro \cs{lettre@get@date}} +% \changes{2.354}{2014-09-19}{Utilisation de \protect\ifcsundef\space pour tester \protect\csname +% origdate\protect\the\expandafter\protect\csname c@lettre\endcsname\protect\endcsname} +% \begin{macrocode} \def\lettre@get@date{% \if@origdate \ifcsundef{origdate\the\c@lettre}{}{% \l@@info{Date originale lue dans \jobname.odt}% \def\pdate{\csname origdate\the\c@lettre\endcsname}% }% +% \end{macrocode} +% On re-écrit systématiquement dans le fichier \cs{jobname}\texttt{.odt} même lorsque la date n'a pas changé, +% ce qui fait que son horodate change à chaque compilation même si le contenu peut rester inchangé. La raison +% c'est que~: +% \begin{enumerate} +% \item l'implémentation est plus simple (on ouvre systématiquement le \cs{write}) +% \item dans le cas où il y a plusieurs plusieurs lettres dans le même document, disons deux, il se peut que +% la seconde soit ajoutée au document alors que la première y était déjà, dans ce cas il faut quand même +% re-écrire \cs{pdate} dans le \cs{jobname}\texttt{.odt} pour la première lettre, même si c'est inchangé, à +% cause de la nouvelle lettre. +% \end{enumerate} +% \changes{2.352}{2014-08-02}{Correction \href{https://gna.org/bugs/index.php?22423}{bug\#22423} avec macro +% \cs{lettre@write@pdate@to@dateaux}} +% \begin{macrocode} \lettre@write@pdate@to@dateaux \fi } +% \end{macrocode} +% \DescribeMacro{\lettre@put@fromlieu@date}La macro \cs{lettre@put@fromlieu@date} place \cs{fromlieu} et la +% date \cs{pdate} séparés d'une virgule. La virgule n'est présente que si ni l'un ni l'autre n'est vide. +% \changes{2.352}{2014-08-02}{Correction \href{https://gna.org/bugs/index.php?22383}{bug\#22383}, la virgule +% après \cs{fromlieu} est rendue conditionnelle à ce que \cs{fromlieu} soit non-vide. Lorsqu'il n'y a pas de +% date on ne met rien, et non plus un espace insécable}% +% \begin{macrocode} \def\lettre@put@fromlieu@date{% \ifx\@empty\fromlieu \else @@ -606,12 +1019,22 @@ \ifx\@empty\pdate\else, \fi \fi \ifx\@empty\pdate\else\pdate\fi} +% \end{macrocode} +%\paragraph{Dans le cas d'une lettre, \cs{opening}} +%\label{sec:lettre-opening} +% +%\DescribeMacro{\letteropening}La macro \cs{opening} pointe par un \cs{let} sur \cs{letteropening} dans le cas +% de l'environnement \texttt{letter}. +% \begin{macrocode} \def\letteropening#1{% +% \end{macrocode} +% \changes{2.352}{2014-08-06}{Factorisation du code entre \cs{faxopening} et \cs{letteropening} avec la macro +% \cs{lettre@get@date}} +% \begin{macrocode} \lettre@get@date \hbadness=10000\relax \thispagestyle{empty}% \setlength{\unitlength}{1mm}% - \advance\rightskip -75pt% \begin{picture}(\pict@let@width,\pict@let@height)% (\pict@let@hoffset,\pict@let@voffset)% \put(\rule@hpos,\rule@vpos){\line(1,0){\rule@length}}% @@ -632,39 +1055,56 @@ \fi}}} \put(\fromlieu@let@hpos,\fromlieu@let@vpos){\makebox(0,0)[bl]{% \parbox[t]{\fromlieu@let@width}{% +% \end{macrocode} +% \changes{2.352}{2014-08-06}{Factorisation du code entre \cs{faxopening} et \cs{letteropening} avec la macro +% \cs{lettre@put@fromlieu@date}} +% \begin{macrocode} \lettre@put@fromlieu@date }}}% \put(\toaddress@let@hpos,\toaddress@let@vpos){\makebox(0,0)[tl]{% \parbox{\toaddress@let@width}{% \toname\\\toaddress}}}% \end{picture}% - \par\vskip\csname letter\the\c@lettre\endcsname mm - \advance\leftskip\lettermargin - \advance\rightskip75pt% + \par +% \end{macrocode} +% Espacement vertical lu dans le fichier \texttt{.tns} destiné à optimiser la mise en page. +% \begin{macrocode} + \lettre@letter@tns@vspace +% \end{macrocode} +% \changes{3.001}{2017-08-05}{Correction de l'anomalie \href{http://gna.org/bugs/?25373}{GNA\No 25373}; aka +% \href{https://puszcza.gnu.org.ua/bugs/index.php?397}{\No 397}, on corrige la gestion de la marge}% +% \begin{macrocode} + \lettre@adjust@margin +% \end{macrocode} +% Références, Télex, \& CCP de la lettre, s'il en est. +% \begin{macrocode} \ifx\@empty\auxflag \vspace{2\openingspace}% \else \vspace{\openingspace}\auxline\vspace{\openingspace}% \fi - \vskip\csname letter\the\c@lettre\endcsname mm - \ifx\@empty\concdecl - \vspace{\openingspace}% - \else - \concline\vspace{\openingspace}% - \fi - \vskip\csname letter\the\c@lettre\endcsname mm - \hbadness=1000\relax - {\parindent=\openingindent - #1}\par\startbreaks\nobreak - \let\flushleft=\letterflushleft - \let\raggedright=\letterraggedright - \let\center=\lettercenter - \let\centering=\lettercentering}% +% \end{macrocode} +% Espacement vertical lu dans le fichier \texttt{.tns} destiné à optimiser la mise en page. +% \begin{macrocode} + \lettre@letter@tns@vspace +% \end{macrocode} +% Objet de la lettre, s'il en est, suivi de la formule de salutation. +% \changes{3.001}{2017-11-28}{Factorisation de code entre \cs{faxopening} et \cs{letteropening} avec la macro +% \cs{lettre@start@body}.} +% \begin{macrocode} + \lettre@start@body{#1}% +}% +% \end{macrocode} +%\paragraph{Dans le cas d'une télécopie, \cs{opening}} +%\label{sec:fax-opening} +% +%\DescribeMacro{\faxopening}\cs{opening} pointe par un \cs{let} sur \cs{faxopening} dans le cas d'une +% télécopie. +% \begin{macrocode} \def\faxopening#1{% \hbadness=10000\relax \thispagestyle{empty}% \setlength{\unitlength}{1mm}% - \advance\rightskip -75pt% \begin{picture}(\pict@fax@width,\pict@fax@height) (\pict@fax@hoffset,\pict@fax@voffset)% \put(\fromaddress@fax@hpos,\fromaddress@fax@vpos){\makebox(0,0)[tl]{ @@ -701,63 +1141,75 @@ \begin{tabular*}{\faxbox@width}[t]{@{}r@{}}% \vrule height 0pt depth 0pt width \faxbox@width\\ \multicolumn{1}{r}{% +% \end{macrocode} +% \changes{2.352}{2014-08-06}{Factorisation du code entre \cs{faxopening} et \cs{letteropening} avec les macro +% \cs{lettre@get@date} et \cs{lettre@put@fromlieu@date}}% +% \begin{macrocode} \lettre@get@date \lettre@put@fromlieu@date }\\% \end{tabular*}% \par \vspace{\openingspace}% - \advance\leftskip \lettermargin - \advance\rightskip 75pt% - \ifx\@empty\concdecl - \vspace{\openingspace}% - \else - \concline\vspace{\openingspace}% - \fi - \hbadness=1000\relax - {\parindent=\openingindent - #1}\par\startbreaks\nobreak - \let\flushleft=\letterflushleft - \let\raggedright=\letterraggedright - \let\center=\lettercenter - \let\centering=\lettercentering}% + \lettre@adjust@margin +% \end{macrocode} +% Objet du fax, s'il en est, suivi de la formule de salutation. +% \changes{3.001}{2017-11-28}{Factorisation de code entre \cs{faxopening} et \cs{letteropening} avec la macro +% \cs{lettre@start@body}.} +% \begin{macrocode} + \lettre@start@body{#1}% +}% +% \end{macrocode} +%\paragraph{\cs{closing}} +%\label{sec:closing} +%\DescribeMacro{\closing} +% \begin{macrocode} \long\def\closing#1{% \let\center=\normalcenter \let\centering=\normalcentering \let\flushleft=\normalflushleft \let\raggedright=\normalraggedright - \par\stopbreaks - \if@letter - \vskip\csname letter\the\c@lettre\endcsname mm - \fi + \par\lettre@stopbreaks +% \end{macrocode} +% Espacement vertical lu dans le fichier \texttt{.tns} destiné à optimiser la mise en page, seulement dans le +% cas d'une lettre et non d'une télécopie. +% \begin{macrocode} + \lettre@tns@vspace +% \end{macrocode} +% \strut +% \begin{macrocode} \par\vspace{2\parskip}% \nobreak \noindent \l@@info{Signature \ifcase\signum manquante\or simple\or double\or triple\fi}% +% \end{macrocode} +% Dans le cas où \cs{signum} est nul, la signature est générée à partir de \cs{fromname}. Il est donc +% nécessaire que \cs{name}\marg{Mon nom} ait été appelé dans le préambule ou indirectement via la commande +% \cs{institut}. +% \changes{3.000}{2016-02-26}{Message d'erreur explicite en cas d'absence de \cs{name}\marg{Mon nom}.} +% \begin{macrocode} \ifnum\signum=0\space\ifx\fromname\undefined \l@@error{\protect\fromname\space non d'efini, vous avez sans doute omis de sp'ecifier \protect\name\space ou \protect\institut\space!} \fi\fi +% \end{macrocode} +% Le compteur \cs{sigflag} permet de sélectionner une présentation de la signature en fonction de la locale. +% \changes{3.001}{2017-08-05}{Factorisation de code dans \cs{closing} sur le \cs{ifcase}\cs{sigflag}.} +% \begin{macrocode} \ifcase\sigflag + \parbox[t]{\letterwidth}{#1}% + \par\vspace*{4\parskip}% + \vspace*{\sigspace}% \ifcase\signum - \parbox[t]{\letterwidth}{#1}% - \par\vspace*{4\parskip}% - \vspace*{\sigspace}% \hspace*{\ssigindent}% \noindent \parbox[t]{\ssigwidth}{\centering \ignorespaces\fromname}% \or - \parbox[t]{\letterwidth}{#1}% - \par\vspace*{4\parskip}% - \vspace*{\sigspace}% \hspace*{\ssigindent}% \noindent \parbox[t]{\ssigwidth}{\centering \ignorespaces\fromsig}% \or - \parbox[t]{\letterwidth}{#1}% - \par\vspace*{4\parskip}% - \vspace*{\sigspace}% \msigwidth=\letterwidth \divide\msigwidth by 2\relax \advance\msigwidth -3pt% @@ -765,9 +1217,6 @@ \mbox{\parbox[t]{\msigwidth}{\centering\ignorespaces\fromsig}% \parbox[t]{\msigwidth}{\centering\ignorespaces\fromssig}}% \or - \parbox[t]{\letterwidth}{#1}% - \par\vspace*{4\parskip}% - \vspace*{\sigspace}% \msigwidth=\letterwidth \divide\msigwidth by 3\relax \advance\msigwidth -3pt% @@ -816,27 +1265,116 @@ \parbox[t]{\msigwidth}{\centering\ignorespaces\fromtsig}}% \fi \fi - \par\vfill\startbreaks + \par\vfill +% \end{macrocode} +% Fin du corps de la lettre sous la marge définie par \cs{marge}. +% \begin{macrocode} + \lettre@endadjust@margin + \lettre@startbreaks + \let\@par\lettre@par + \let\lettre@parshape\@empty +% \end{macrocode} +% Fin de la macro \cs{closing}. +% \begin{macrocode} }% +\newdimen\lettre@save@leftmargin +\newdimen\lettre@save@leftskip +\newdimen\lettre@leftmargin +% \end{macrocode} +% \DescribeMacro{\lettre@adjust@margin}Début du corps de lettre dans lequel la marge est réglée selon la +% commande \cs{marge} qui a été passée avant le \cs{opening}. +% \begin{macrocode} +\newcommand*\lettre@adjust@margin{% + \@setpar{\@@par\lettre@parshape}% + \lettre@save@leftmargin\leftmargin + \lettre@leftmargin\lettermargin + \advance\@totalleftmargin by \lettre@leftmargin + \leftmargin\lettre@leftmargin + \advance\linewidth by -\lettre@leftmargin + \lettre@save@leftskip\leftskip + \def\lettre@parshape{\parshape \@ne\@totalleftmargin \linewidth}% + \lettre@parshape +} +% \end{macrocode} +% \DescribeMacro{\lettre@endadjust@margin}Fin du corps de lettre. Après cette commande la marge n'est plus +% contrôlée selon le réglage fait pas la commande \cs{marge}. +% \begin{macrocode} +\newcommand*\lettre@endadjust@margin{% + \advance\@totalleftmargin by -\lettre@leftmargin + \advance\linewidth by \lettre@leftmargin + \leftmargin\lettre@save@leftmargin + \leftskip\lettre@save@leftskip + } +% \end{macrocode} +% \DescribeMacro{\lettre@letter@tns@vspace}La macro \cs{lettre@letter@tns@vspace} insère l'espace vertical +% utilisé pour optimiser la mise en page des lettres via le fichier \texttt{.tns}. Cette macro n'est utilisée +% que dans le cas des lettres, et pas dans celui des télécopies. +% \begin{macrocode} +\newcommand*\lettre@letter@tns@vspace{% + \vskip\csname letter\the\c@lettre\endcsname mm} +% \end{macrocode} +% \DescribeMacro{\lettre@tns@vspace}La macro \cs{lettre@tns@vspace} pointe en fait sur +% \cs{lettre@letter@tns@vspace} dans le cas des lettres, ou sur \cs{@empty} dans celui d'une télécopie. Elle +% permet d'appeler l'une ou l'autre macro dans les parties communes aux deux types de missives, par ex.\ au +% sein de \cs{closing} ou de \cs{lettre@start@body}. +% \begin{macrocode} +\newcommand*\lettre@tns@vspace{} +% \end{macrocode} +% \DescribeMacro{\lettre@start@body}La macro \cs{lettre@start@body} insère l'objet, s'il en est, suivi de la +% formule de salutation, puis débute le corps de la lettre en terminant \cs{opening} par l'espacement +% nécessaire et en redéfinissant les environnement \texttt{center} et consorts de manière adéquate. +% \begin{macrocode} +\newcommand*\lettre@start@body[1]{% + \ifx\@empty\concdecl + \vspace{\openingspace}% + \else + \concline\vspace{\openingspace}% + \fi + \lettre@tns@vspace + \hbadness=1000\relax + {\parindent=\openingindent + #1}\par\lettre@startbreaks\nobreak + \let\flushleft=\letterflushleft + \let\raggedright=\letterraggedright + \let\center=\lettercenter + \let\centering=\lettercentering +} +% \end{macrocode} +% \DescribeMacro{\marge}La macro \cs{marge} règle la marge du corps de la lettre. Elle est à appelé entre le +% \cs{begin\{letter\}} et le \cs{opening}. +% \begin{macrocode} \def\marge#1{% \lettermargin=#1% \listmargin=#1% - \leftmargini=\listmargin% - \advance\leftmargini 2.5em% \letterwidth=\textwidth - \advance\letterwidth by -\lettermargin - \advance\letterwidth by 0pt}% + \advance\letterwidth by -\lettermargin +}% +% \end{macrocode} +%\DescribeMacro{\basdepage} +% \begin{macrocode} \def\basdepage#1{% \def\bdp{#1}}% +% \end{macrocode} +%\DescribeMacro{\tension} +% \begin{macrocode} \def\tension#1{% \if@letter \expandafter\def\csname letter\the\c@lettre\endcsname{#1}% \fi }% +% \end{macrocode} +%\DescribeMacro{\addpages} +% \begin{macrocode} \def\addpages#1{% \l@@info{Pages additionnelles: #1}% \advance\faxpage by #1}% +% \end{macrocode} +%\DescribeMacro{\name} +% \begin{macrocode} \def\name#1{\def\fromname{#1}}% +% \end{macrocode} +%\DescribeMacro{\signature} +% \begin{macrocode} \def\signature#1{% \ifnum\signum=0\relax \def\fromsig{#1}\signum=1\relax @@ -844,6 +1382,9 @@ \l@@warning@strictable{Signature deja definie}% \fi }% +% \end{macrocode} +%\DescribeMacro{\secondsignature} +% \begin{macrocode} \def\secondsignature#1{% \ifnum\signum=1\relax \def\fromssig{#1}\signum=2\relax @@ -851,6 +1392,9 @@ \l@@warning@strictable{Seconde signature illegale ou deja definie}% \fi }% +% \end{macrocode} +%\DescribeMacro{\thirdsignature} +% \begin{macrocode} \def\thirdsignature#1{% \ifnum\signum=2\relax \def\fromtsig{#1}\signum=3\relax @@ -858,7 +1402,16 @@ \l@@warning@strictable{Troisieme signature illegale ou deja definie}% \fi }% -\def\vref{\l@@warning@strictable{La commande \protect\Vref\space devrait etre utilisee}\Vref} +% \end{macrocode} +%\DescribeMacro{\vref} +% \begin{macrocode} +\def\vref{\l@@warning@strictable{La commande \protect\Vref\space devrait etre + utilisee}\Vref} +% \end{macrocode} +%\DescribeMacro{\Vref} +%\changes{2.354}{2014-10-21}{Ajout \cs{lettre@vref@width}}% +%\changes{2.354}{2014-10-21}{Un argument vide à \cs{Vref} supprime la référence}% +% \begin{macrocode} \def\Vref#1{% \def\@tempa{#1}% \ifx\@empty\@tempa @@ -868,7 +1421,16 @@ \def\toref{\parbox[t]{\lettre@vref@width}{#1}}% \fi }% -\def\nref{\l@@warning@strictable{La commande \protect\Nref\space devrait etre utilisee}\Nref} +% \end{macrocode} +%\DescribeMacro{\nref} +% \begin{macrocode} +\def\nref{\l@@warning@strictable{La commande \protect\Nref\space devrait etre + utilisee}\Nref} +% \end{macrocode} +%\DescribeMacro{\Nref} +%\changes{2.354}{2014-10-21}{Ajout \cs{lettre@nref@width}}% +%\changes{2.354}{2014-10-21}{Un argument vide à \cs{Nref} supprime la référence}% +% \begin{macrocode} \def\Nref#1{% \def\@tempa{#1}% \ifx\@empty\@tempa @@ -878,10 +1440,17 @@ \def\fromref{\parbox[t]{\lettre@nref@width}{#1}}% \fi }% +% \end{macrocode} +%\DescribeMacro{\concline}La macro \cs{concline} contient l'objet de la lettre ou du fax. +% \begin{macrocode} \def\concline{% \noindent\parbox[t]{\letterwidth}% {\@hangfrom{\textrm{\concname}}\ignorespaces\concdecl\strut}% \par}% +% \end{macrocode} +% \DescribeMacro{\auxline}La macro \cs{auxline} contient les références, ainsi que les numéro télex ou +% \textsc{ccp}. +% \begin{macrocode} \def\auxline{% \l@@info{Ligne auxiliaire demandee}% {\scriptsize @@ -890,7 +1459,7 @@ \ifx\space\toref \hspace{\lettre@vref@width}% \else - {\small\toref} + {\small\toref}% \fi \hfill \fi @@ -899,7 +1468,7 @@ \ifx\space\fromref \hspace{\lettre@nref@width}% \else - {\small\fromref} + {\small\fromref}% \fi \hfill \fi @@ -914,6 +1483,9 @@ \else C.C.P.\ \ccpnum\hspace{5mm}% \fi}\par}% +% \end{macrocode} +%\DescribeMacro{\emailine} +% \begin{macrocode} \def\emailine{% \l@@info{Ligne d'E-Mail demandee}% {\scriptsize @@ -941,6 +1513,9 @@ \ifnum\emailcount<3\relax \hfill\mbox{}% \fi}}% +% \end{macrocode} +%\DescribeMacro{\address} +% \begin{macrocode} \long\def\address#1{\l@@info{Adresse precisee}\def\fromaddress{#1}}% %\long\def\address*#1{\if@letter % \l@@info{Adresse avec nom precisee}% @@ -948,85 +1523,149 @@ % \else % \l@@warning@strictable{Commande illegale dans un fax} % \fi}% +% \end{macrocode} +%\DescribeMacro{\nodate} +% \begin{macrocode} \def\nodate{\l@@info{Date supprimee}\def\pdate{}}% \def\date#1{\l@@info{Date precisee}\def\pdate{#1}}% +% \end{macrocode} +%\DescribeMacro{\nolieu} +% \begin{macrocode} \def\nolieu{\l@@info{Lieu supprime}\def\fromlieu{}}% +% \end{macrocode} +%\DescribeMacro{\lieu} +% \begin{macrocode} \def\lieu#1{\l@@info{Lieu precise}\def\fromlieu{#1}}% +% \end{macrocode} +%\DescribeMacro{\conc} +% \begin{macrocode} \def\conc#1{\l@@info{Champ d'objet defini}\def\concdecl{#1}}% +% \end{macrocode} +%\DescribeMacro{\location} +% \begin{macrocode} \def\location#1{\l@@info{Precision d'adresse definie}\def\fromlocation{#1}}% +% \end{macrocode} +%\DescribeMacro{\notelephone} +% \begin{macrocode} \def\notelephone{\l@@info{Numero de telephone supprime}\def\telephonenum{}}% +% \end{macrocode} +%\DescribeMacro{\telephone} +% \begin{macrocode} \def\telephone#1{\l@@info{Numero de telephone precise}\def\telephonenum{#1}}% +% \end{macrocode} +%\DescribeMacro{\nofax} +% \begin{macrocode} \def\nofax{\l@@info{Numero de fax supprime}\def\faxnum{}}% +% \end{macrocode} +%\DescribeMacro{\fax} +% \begin{macrocode} \def\fax#1{\l@@info{Numero de fax precise}\def\faxnum{#1}}% +% \end{macrocode} +%\DescribeMacro{\email} +% \begin{macrocode} \def\email#1{\l@@info{Numero d'E-Mail precise}\def\emailnum{#1}}% +% \end{macrocode} +%\DescribeMacro{\username} +% \begin{macrocode} \def\username#1{\def\@username{#1}}% -\def\ccitt#1{\ifnum\emailcount<3\relax - \def\emailflag{.}% - \advance\emailcount by 1\relax - \def\ccittnum{\ifx\@empty \@username - \l@@warning@strictable{<> indefini} - #1% - \else - S=\@username;#1% - \fi}% - \else - \def\ccittnum{}% - \fi}% -\def\internet#1{\ifnum\emailcount<3\relax - \def\emailflag{.}% - \advance\emailcount by 1\relax - \def\internetnum{\ifx\@empty \@username - \l@@warning@strictable{<> indefini} - #1\relax - \else - \@username @#1\relax - \fi}% - \else - \def\internetnum{}% - \fi}% -\def\bitnet#1{\ifnum\emailcount<3\relax - \def\emailflag{.}% - \advance\emailcount by 1\relax - \def\bitnetnum{\ifx\@empty \@username - \l@@warning@strictable{<> indefini} - #1\relax - \else - \@username\ at #1\relax - \fi}% - \else - \def\bitnetnum{}% - \fi}% -\def\telepac#1{\ifnum\emailcount<3\relax - \def\emailflag{.}% - \advance\emailcount by 1\relax - \def\telepacnum{\ifx\@empty \@username - \l@@warning@strictable{<> indefini} - #1\relax - \else - #1::\@username - \fi}% - \else - \def\telepacnum{}% - \fi}% -\def\decnet#1{\ifnum\emailcount<3\relax - \def\emailflag{.}% - \advance\emailcount by 1\relax - \def\decnetnum{\ifx\@empty \@username - \l@@warning@strictable{<> indefini} - #1\relax - \else - #1::\@username - \fi}% - \else - \def\decnetnum{}% - \fi}% +% \end{macrocode} +%\DescribeMacro{\ccitt} +% \begin{macrocode} +\def\ccitt#1{% + \ifnum\emailcount<3\relax + \def\emailflag{.}% + \advance\emailcount by 1\relax + \def\ccittnum{% + \ifx\@empty \@username + \l@@warning@strictable{<> indefini} + #1% + \else + S=\@username;#1% + \fi}% + \else + \def\ccittnum{}% + \fi}% +% \end{macrocode} +%\DescribeMacro{\internet} +% \begin{macrocode} +\def\internet#1{% + \ifnum\emailcount<3\relax + \def\emailflag{.}% + \advance\emailcount by 1\relax + \def\internetnum{% + \ifx\@empty\@username + \l@@warning@strictable{<> indefini} + #1\relax + \else + \@username @#1\relax + \fi}% + \else + \def\internetnum{}% + \fi}% +% \end{macrocode} +%\DescribeMacro{\bitnet} +% \begin{macrocode} +\def\bitnet#1{% + \ifnum\emailcount<3\relax + \def\emailflag{.}% + \advance\emailcount by 1\relax + \def\bitnetnum{% + \ifx\@empty \@username + \l@@warning@strictable{<> indefini} + #1\relax + \else + \@username\ at #1\relax + \fi}% + \else + \def\bitnetnum{}% + \fi}% +% \end{macrocode} +%\DescribeMacro{\telepac} +% \begin{macrocode} +\def\telepac#1{% + \ifnum\emailcount<3\relax + \def\emailflag{.}% + \advance\emailcount by 1\relax + \def\telepacnum{% + \ifx\@empty \@username + \l@@warning@strictable{<> indefini} + #1\relax + \else + #1::\@username + \fi}% + \else + \def\telepacnum{}% + \fi}% +% \end{macrocode} +%\DescribeMacro{\decnet} +% \begin{macrocode} +\def\decnet#1{% + \ifnum\emailcount<3\relax + \def\emailflag{.}% + \advance\emailcount by 1\relax + \def\decnetnum{% + \ifx\@empty \@username + \l@@warning@strictable{<> indefini} + #1\relax + \else + #1::\@username + \fi}% + \else + \def\decnetnum{}% + \fi}% +% \end{macrocode} +%\DescribeMacro{\telex} +% \begin{macrocode} \def\telex#1{\ifnum\auxcount<2\relax - \def\auxflag{.}% - \advance\auxcount by 1\relax - \def\telexnum{#1}% - \else - \def\telexnum{}% - \fi}% + \def\auxflag{.}% + \advance\auxcount by 1\relax + \def\telexnum{#1}% + \else + \def\telexnum{}% + \fi}% +% \end{macrocode} +%\DescribeMacro{\ccp} +% \begin{macrocode} \def\ccp#1{\ifnum\auxcount<2\relax \def\auxflag{.}% \advance\auxcount by 1\relax @@ -1034,58 +1673,125 @@ \else \def\ccpnum{}% \fi}% +% \end{macrocode} +%\DescribeMacro{\ps} +% \begin{macrocode} \def\ps#1#2{\penalty100\relax - \if@letter - \vskip\csname letter\the\c@lettre\endcsname mm - \fi + \lettre@tns@vspace \l@@info{Post-scriptum defini}% \noindent\lettre@t{#1}{#2\\}\vfill\penalty-100\relax}% +% \end{macrocode} +%\DescribeMacro{\cc} +% \begin{macrocode} \def\cc#1{\penalty100\relax - \if@letter - \vskip\csname letter\the\c@lettre\endcsname mm - \fi + \lettre@tns@vspace \l@@info{Copies declarees}% \noindent\lettre@t{\ccname}{#1\\}\vfill\penalty-100\relax}% +% \end{macrocode} +%\DescribeMacro{\encl} +% \begin{macrocode} \def\encl#1{\penalty100\relax - \if@letter - \vskip\csname letter\the\c@lettre\endcsname mm - \fi + \lettre@tns@vspace \l@@info{Annexes declarees}% \noindent\lettre@t{\enclname}{#1\\}\vfill\penalty-100\relax}% +% \end{macrocode} +%\DescribeMacro{\mencl} +% \begin{macrocode} \def\mencl{\penalty100\relax - \if@letter - \vskip\csname letter\the\c@lettre\endcsname mm - \fi + \lettre@tns@vspace \l@@info{Annexes mentionnees}% \noindent\lettre@t{\mentionname\\}{~}\vfill\penalty-100\relax}% +% \end{macrocode} +% +%\subsubsection{Définitions dépendant du langage} +% +%\DescribeMacro{\lettrelmpselectlanguage}La macro \cs{lettrelmpselectlanguage} permet, lorsque une langue est +% chargée dans dans un processeur multilingue (par ex.\ \texttt{babel}) de sélectionner cette langue et de +% redéfinir les environnements de liste tels qu'\texttt{itemize} pour le français. +% \begin{macrocode} \newcommand*{\lettrelmpselectlanguage}[1]{% +% \end{macrocode} +% Si l'utilisateur n'a pas chargé les définitions de cette langue, on essaie de le faire ici : +% \begin{macrocode} \lettreloadlang{#1}% +% \end{macrocode} +% Ensuite, en premier lieu on vérifie que la langue \texttt{\#1} est bien prise en charge. +% \begin{macrocode} {% \ifcsundef{lettre@#1@alias@of}{% \l@@warning@strictable{Langue #1 non ger'ee par lettre}% \let\@tempa\@empty }{% - \toks0\expandafter\expandafter\expandafter{\csname lettre@#1@alias@of\endcsname}% +% \end{macrocode} +% Ensuite, il s'agit d'appeler \cs{lettre@lmp@selectlanguage}. En fait si l'on pose que +% \meta{lang}$=$\texttt{\#1}, alors on ne veut pas appeler +% \cs{lettre@lmp@selectlanguage}\texttt{\{}\meta{lang}\texttt{\}} mais +% \cs{lettre@lmp@selectlanguage}\texttt{\{}\meta{lang$^{\prime\prime}$}\texttt{\}}, où ci-après on déduit +% \meta{lang$^{\prime}$} de \meta{lang}, puis \meta{lang$^{\prime\prime}$} de \meta{lang$^{\prime}$}. On +% regarde donc d'abord de quoi \meta{lang}$=$\texttt{\#1} est l'alias, et on met le résultat dans +% \meta{lang$^\prime$}$=$\cs{toks}$0$. Par ex.\ si \meta{lang}$=$\texttt{french}, alors on a aussi +% \meta{lang$^\prime$}$=$\texttt{french}, parce que \texttt{french} est l'alias de lui-même (en d'autre terme ce +% n'est pas un alias d'autre chose), mais si \meta{lang}$=$\texttt{francais}, alors on aura +% \meta{lang$^\prime$}$=$\texttt{french}, parce que \texttt{francais} est un alias de \texttt{french}. +% \begin{macrocode} + \toks0\expandafter\expandafter\expandafter + {\csname lettre@#1@alias@of\endcsname}% +% \end{macrocode} +% Puis, si pour cette langue \meta{lang$^\prime$}, par ex.\ \texttt{romand}, on a déclaré d'utiliser une autre +% langue pour le gestionnaire de langue, par ex.\ \texttt{french}, on utilise celle-là au lieu de celle-ci, on +% met le résultat dans \meta{lang$^{\prime\prime}$}$=$\cs{toks}$1$. +% \begin{macrocode} \ifcsundef{lettre@lmp@\the\toks0@use}{% \toks1\toks0 % }{% - \toks1\expandafter\expandafter\expandafter{\csname lettre@lmp@\the\toks0@use\endcsname}% + \toks1\expandafter\expandafter\expandafter + {\csname lettre@lmp@\the\toks0@use\endcsname}% }% +% \end{macrocode} +% En définitive, on va appeler \cs{lettre@lmp@selectlanguage}\texttt{\{}\meta +% {lang$^{\prime\prime}$}\texttt{\}}, et cet appel est préparé dans \cs{toks}$4$. Mais pas tout à fait, on +% gère en plus la modification par \texttt{lettre} des environnements de base (par ex.\ \texttt{itemize}) en +% fonction de la langue, de sorte qu'en fin de compte c'est la séquence +% \cs{the}\cs{toks}$3$\cs{the}\cs{toks}$4$\cs{the}\cs{toks}$5$ qui sera appelé. +% \begin{macrocode} \toks4\expandafter{% \expandafter\lettre@lmp@selectlanguage\expandafter{% \the\toks1}}% - \iflettre@keep@envs +% \end{macrocode} +% Il y a trois cas possibles. Le premier c'est que la gestion des environnements par \texttt{lettre} est +% désactivée, ou en d'autres termes que le compteur \cs{lettre@keep@envs} est à 1. Dans ce cas on ne +% fait rien de plus qu'appeler \cs{lettre@lmp@selectlanguage}\texttt{\{}\meta +% {lang$^{\prime\prime}$}\texttt{\}}, c.-à-d.\ que \cs{toks}$3$ et \cs{toks}$5$ sont vide. +% \begin{macrocode} + \ifnum\lettre@keep@envs=1 % \toks3{}% \toks5{}% \else +% \end{macrocode} +% Dans le deuxième cas, la gestion des environnements par \texttt{lettre} est activée, mais il n'y a pas de +% redéfinition d'environnements disponible pour la langue \meta{lang$^{\prime\prime}$}. Dans ce cas on +% appelle \cs{lettre@restore@orig@envs} avant \cs{lettre@lmp@selectlanguage}\texttt{\{}\meta +% {lang$^{\prime\prime}$}\texttt{\}}, et \cs{lettre@store@orig@envs}. Si \meta{lang$^{\prime\prime}$} est la +% seule langue utilisée dans tout le document, cela ne sert à rien, mais au cas où le document contiendrait +% avant la lettre utilisant \meta{lang$^{\prime\prime}$} une lettre qui aurait redéfini les environnements, +% on a besoin du \cs{lettre@restore@orig@envs} pour ne pas perturber le paquetage de gestion de langue. +% \begin{macrocode} \toks3{\lettre@restore@orig@envs}% \ifcsundef{lettre@set@\the\toks1@envs}{% \toks5{\lettre@store@orig@envs}% }{% +% \end{macrocode} +% Dans le troisième cas, une redéfinition d'environnements est disponible pour la langue +% \meta{lang$^{\prime\prime}$}. Dans ce cas on fait la même chose que dans le deuxième cas, à ceci près +% qu'on appelle en tout dernier lieu \cs{lettre@set@}\meta{lang$^{\prime\prime}$}\texttt{@envs}. +% \begin{macrocode} \toks5\expandafter{\expandafter\lettre@store@orig@envs \csname lettre@set@\the\toks1 @envs\endcsname}% }% \fi +% \end{macrocode} +% Il ne reste plus qu'à appeler ce qu'on a préparé dans les \cs{toks} allant de $3$ à $5$. +% \begin{macrocode} \edef\@tempa{% \the\toks3 % \the\toks4 % @@ -1094,12 +1800,34 @@ \expandafter }\@tempa }% +% \end{macrocode} +%\DescribeMacro{\FAXSTR} +% \begin{macrocode} \def\FAXSTR{\fontfamily{cmdh}\fontseries{m}\fontshape{n}\selectfont}% +% \end{macrocode} +%\DescribeMacro{\lettre@lmp@selectlanguage}La macro \cs{lettrelmpselectlanguage} n'est en fait qu'un pointeur +% qui appelle le \cs{selectlanguage} ou son équivalent selon le processeur multilingue utilisé (typiquement +% \texttt{mlp}, \texttt{babel}, ou \texttt{polyglossia}). Ici on définit une implémentation par défaut qui ne +% fait rien en attendant un \cs{let} vers la bonne macro. +% \begin{macrocode} \newcommand*\lettre@lmp@selectlanguage[1]{% - \l@@warning{ `\string\lettre@lmp@selectlanguage{#1}' appel'e, mais ne fait rien. Vous n'avez charg'e ni babel, -ni mlp, ni polyglossia, ni french}} + \l@@warning{ `\string\lettre@lmp@selectlanguage{#1}' appel'e, mais ne + fait rien. Vous n'avez charg'e ni babel, ni mlp, ni polyglossia, ni + french}} +% \end{macrocode} +%\DescribeMacro{\lettrelabelselectlanguage}\cs{lettrelabelselectlanguage} change la langue des étiquettes de +% la lettre, ainsi que la disposition de la signature. +% \begin{macrocode} \newcommand*\lettrelabelselectlanguage[1]{% +% \end{macrocode} +% Si l'utilisateur n'a pas chargé les définitions de cette langue, on essaie de le faire ici : +% \begin{macrocode} \lettreloadlang{#1}% +% \end{macrocode} +% Et maintenant on sélectionne la langue \meta{langue}$=$\texttt{\#1}, ce qui correspond à appeler la macro +% \cs{lettre@select@\meta{langue}@labels} avec quelques gardefous. Au-passage, si aucun des gardefous n'est +% franchi, \cs{lettre@mainlang} est redéfini à \texttt{\#1}. +% \begin{macrocode} {% \ifcsundef{lettre@#1@alias@of}{% \l@@warning@strictable{La langue <<#1>> n'est pas prise en charge par lettre}% @@ -1118,12 +1846,30 @@ ni mlp, ni polyglossia, ni french}} \expandafter }\@tempa }% +% \end{macrocode} +% \DescribeMacro{\lettreloadlang}La macro \cs{lettreloadlang}\marg{langue} charge les définitions pour la +% langue \meta{langue}. Ceci revient à faire un \cs{input} du fichier nommé \texttt{lettre-\meta{langue}.ldf}. +% \begin{macrocode} \newcommand*\lettreloadlang[1]{% +% \end{macrocode} +% On ouvre un groupe pour pouvoir y faire des définitions locales. +% \begin{macrocode} {% +% \end{macrocode} +% On vérifie tout d'abord si la langue \texttt{\#1} fait partie des langues prises en charge par +% \texttt{lettre}. On met dans \cs{@tempa} la valeur \meta{lang$^{\prime}$} à laquelle \texttt{\#1} est égale, +% ou en est l'alias. On met dans \cs{toks0} tout traitement éventuel de redéfinition de +% \cs{lettre@\#1@alias@of}. +% \begin{macrocode} \newif\iflettre@lang@not@supported \ifcsundef{lettre@#1@alias@of}{% \lettre@lang@not@supportedtrue - \l@@warning@strictable{La langue <<#1>> ne fait pas partie des langues prises en charge par lettre}% + \l@@warning@strictable{La langue <<#1>> ne fait pas partie des + langues prises en charge par lettre}% +% \end{macrocode} +% Le code suivant consiste à définir \cs{lettre@\#1@alias@of} comme \texttt{\#1}, de sorte que la langue +% \texttt{\#1} soit dorénavant considérée comme prise en charge. +% \begin{macrocode} \def\@tempb##1{\toks0{\def##1{#1}}}% \expandafter\@tempb\csname lettre@#1@alias@of\endcsname \def\@tempa{#1}% @@ -1135,7 +1881,8 @@ ni mlp, ni polyglossia, ni french}} \edef\@tempc{\lettre@ldf@filename{\@tempa}}% \IfFileExists{\@tempc}{% \iflettre@lang@not@supported - \l@@info{Un fichier `\@tempc' ne faisant pas partie de lettre a 'et'e trouv'e, et va etre charg'e.}% + \l@@info{Un fichier `\@tempc' ne faisant pas partie de lettre a 'et'e + trouv'e, et va etre charg'e.}% \fi \ifcsundef{\lettre@ldf@version{\@tempa}}{% \edef\@tempa{% @@ -1149,28 +1896,75 @@ ni mlp, ni polyglossia, ni french}} \expandafter }\@tempa }% +% \end{macrocode} +% \DescribeMacro{\lettreselectlanguage} \cs{lettreselectlanguage} Sélectionne la langue à la fois pour le +% paquetage de gestion de langue (césure, environnements liste, etc\ldots) en appelant +% \cs{lettrelmpselectlanguage} et pour la présentation de la lettre (étiquettes, disposition signature) en +% appelant \cs{lettrelabelselectlanguage}. L'ordre d'appel est important, parce que certains paquetages de +% gestion de langue redéfinissent certaines des macros de l'environnement \texttt{letter}. Notamment pour le +% romand avec le paquetage de gestion de langue \texttt{french}, ce dernier définit \cs{enclname} (l'étiquette +% introduisant la pièce jointe) comme \texttt{P. j.~:}, c-à-d.\ à la française, au lieu de le définir comme +% \texttt{Ann.~:}, c-à-d.\ à la romande, ce que fait \texttt{lettre}. +% \begin{macrocode} \newcommand*\lettreselectlanguage[1]{% \lettrelmpselectlanguage{#1}% \lettrelabelselectlanguage{#1}% }% +% \end{macrocode} +% \begin{macro}{\lettre@babel@selectlanguage}La macro \cs{lettre@babel@selectlanguage} est une émulation de +% la macro \cs{selectlanguage} quand le paquetage \texttt{babel} est chargé. Le but est de faire un +% traitement particulier pour le cas \texttt{german}. +% \begin{macrocode} \newcommand*\lettre@babel@selectlanguage[1]{% \ifcsdef{lettre@babel@#1}{\csname lettre@babel@#1\endcsname}{\selectlanguage{#1}}% }% +% \end{macrocode} +% Le traitement particulier pour \texttt{german} est effectué par \cs{lettre@babel@german}, et c'est le +% suivant : +% \begin{itemize} +% \item si \texttt{babel} a chargé \texttt{ngerman}, ce que l'on teste avec +% \cs{ifcsdef}\texttt{\{ver@ngerman.ldf\}\ldots}, alors on appelle \cs{selectlanguage}\texttt{\{ngerman\}}, +% \item sinon, on appelle \cs{selectlanguage}\texttt{\{german\}} +% \end{itemize} +% +% \begin{macrocode} \newcommand*\lettre@babel@german{% - \ifcsdef{ver@ngerman.ldf}{\selectlanguage{ngerman}}{\selectlanguage{german}}% + \ifcsdef{ver@ngerman.ldf}{\selectlanguage{ngerman}}% + {\selectlanguage{german}}% } +% \end{macrocode} +% \end{macro} +% \begin{macro}{\lettre@efrench@selectlanguage} La macro \cs{lettre@efrench@selectlanguage} est une émulation de la +% macro \cs{selectlanguage} quand le paquetage \texttt{french} est chargé. +% \begin{macrocode} \newcommand*\lettre@efrench@selectlanguage[1]{% \ifx\undefined\frenchname - \l@@warning@strictable{L'un des paquetages mlp ou french n'a pas 'et'e charg'e correctement}% + \l@@warning@strictable{L'un des paquetages mlp ou french n'a pas 'et'e + charg'e correctement}% \else - \def\@tempb{\l@@warning@strictable{La langue `#1' n'est pas dans \string{french, german, english\string} qui sont les trois seules langues que lettre peut demander `a mlp}}% +% \end{macrocode} +% Préparation d'un avertissement, au cas où \texttt{\#1} ne serait pas l'une des langues prises en charge par \texttt{mlp}. +% \begin{macrocode} + \def\@tempb{\l@@warning@strictable{La langue `#1' n'est pas dans + \string{french, german, english\string} qui sont les trois seules + langues que lettre peut demander `a mlp}}% \def\@tempc{#1}% \def\lettre@iterate@body##1{% \def\@tempd{##1}% \ifx\@tempc\@tempd +% \end{macrocode} +% Suppression de l'avertissement, car \texttt{\#1} est bien l'une des langues prises en charge par \texttt{mlp}. +% \begin{macrocode} \let\@tempb\@empty - \l@@info{Selection de la langue `#1' dans le paquetage french ou mlp d'efrench}% +% \end{macrocode} +% Ici on sélectionne la langue avec une macro enveloppante de la commande correspondante de \texttt{mlp}. +% \begin{macrocode} + \l@@info{Selection de la langue `#1' dans le paquetage french ou + mlp d'efrench}% \csname lettre@efr@#1\endcsname +% \end{macrocode} +% Le \cs{@tempc} permet de casser la boucle en gobant le \cs{lettre@iterate} qui suit, ainsi que ses arguments restants. +% \begin{macrocode} \def\@tempc####1\@nil,{}% \expandafter\@tempc \fi @@ -1179,10 +1973,18 @@ ni mlp, ni polyglossia, ni french}} \@tempb \fi }% +% \end{macrocode} +% \end{macro} +% Définition des macros enveloppantes des langues prises en charge par \texttt{mlp}. +% +% \DescribeMacro{\lettre@efr@german} Pour \texttt{german}, on fait en sorte que l'allemand moderne (le seul +% utilisé par \texttt{babel}) l'emporte sur le vieil allemand. +% \begin{macrocode} \newcommand*\lettre@efr@german{% \ifx\undefined\ngermanTeXmods \ifx\undefined\germanTeXmods - \l@@warning@strictable{Ni \protect\german\space ni \protect\ngerman\space ne sont d'efinis !} + \l@@warning@strictable{Ni \protect\german\space ni \protect\ngerman\space + ne sont d'efinis !} \else \german \fi @@ -1190,11 +1992,32 @@ ni mlp, ni polyglossia, ni french}} \ngerman \fi } +% \end{macrocode} +% \begin{macro}{\lettre@efr@french}Pour \cs{french} il faut prendre deux précautions avant d'appeler la +% macro. +% \begin{itemize} +% \item La première est qu'appeler \cs{french} alors qu'on est déjà en français cause une erreur. Pour +% éviter cela, on fait le test \cs{ifFrench}. +% \item La seconde est que si on appelle \cs{lettre@efr@french} dans le \cs{AtBeginDocument}, alors +% \cs{french} ne sera pas encore défini. Donc on teste que \cs{french} est défini avant de rappeler +% \cs{lettre@efr@french} avec une nouvelle définition <<\verb+\ifFrench\else\french\fi+>>. +% \end{itemize} +% +% \begin{macrocode} \newcommand*\lettre@efr@french{\ifcsdef{french}{% \def\lettre@efr@french{\ifFrench\else\french\fi}\lettre@efr@french }{\l@@warning@strictable{La commande \protect\french\space n'est pas d'efinie.}}} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\lettre@efr@english}Pour \cs{english}, le wrapper ne fait qu'appeler la macro \cs{english} +% correspondante du paquetage \texttt{mlp} ou \texttt{french}. +% \begin{macrocode} \newcommand*\lettre@efr@english{\english} +% \end{macrocode} +% \end{macro} +% Définitions des macros telles que \cs{francais}, \cs{anglais}, etc\ldots +% \begin{macrocode} \def\@tempa#1{% \expandafter\newcommand\expandafter*\csname #1\endcsname{% {% @@ -1209,6 +2032,9 @@ ni mlp, ni polyglossia, ni french}} \@tempa{allemand}% \@tempa{anglais}% \@tempa{americain}% +% \end{macrocode} +% Crochet \cs{begin\{document\}}~: +% \begin{macrocode} \AtBeginDocument{% \makeatletter \@input{\jobname.tns}% @@ -1219,27 +2045,95 @@ ni mlp, ni polyglossia, ni french}} \immediate\openout\@dateaux=\jobname.odt% \fi \endgroup +% \end{macrocode} +% Pour écrire \og\cs{startlabels}\fg\ sur le fichier \verb+.etq+ et exécuter \cs{@startlabels}. +% \begin{macrocode} \if@etiq \immediate\openout\@etiqaux=\jobname.etq% \immediate\write\@etiqaux{\string\startlabels}% \@startlabels \fi - {% - \toks0{}% - \toks1{\def\lettre@lmp@selectlanguage#1{\selectlanguage{#1}}}% - \toks2{\let\lettre@lmp@selectlanguage\lettre@efrench@selectlanguage}% - \toks3{\let\lettre@lmp@selectlanguage\lettre@babel@selectlanguage}% +% \end{macrocode} +% On ouvre un groupe pour pouvoir bidouiller des définitions locales comme \cs{toks0}, etc. +% \begin{macrocode} + {% +% \end{macrocode} +% On met dans \cs{@tempa} un traitement systématique à faire pour tout paquetage de gestion de langue chargé. En +% l'occurrence on désactive la rédéfinition des environnements \texttt{itemize} et consorts par +% \texttt{lettre} si un tel paquetage est chargé et qu'on n'a pas explicitement \texttt{keep envs=false}. +% \begin{macrocode} + \def\@tempa{% + \ifnum\lettre@keep@envs=0 % + \lettre@keep@envs=1 % + \fi + }% +% \end{macrocode} +% Maintenant, redéfinition de la macro \cs{lettre@lmp@selectlanguage} selon le paquetage de gestion de +% langue\footnote{\emph{lmp} dans le nom de la macro veut dire \og Language Managagement Package\fg, c-à-d.\ +% \og Paquetage de Gestion de Lange\fg.} utilisé. On va faire une boucle qui va scruter une liste +% d'association dont chaque élément sera de la forme \meta{paquetage}\texttt{:}\meta{cas}, où \meta{cas} est +% un nombre.\newline Tout d'abord on définit le traitement à appliquer à chacun des cas et on le place dans le +% registre \cs{toks}\meta{cas}. Premier cas possible, c.-à-d.\ $\meta{cas}=0$, c'est le cas par défaut où on +% ne trouve aucun \meta{paquetage} de gestion de langue, alors on ne fait rien, c'est à dire qu'on reste sur +% la définition par défaut de \cs{lettre@lmp@selectlanguage}.\\ +% Mais encore, toujours dans ce $\meta{cas}=0$, c'est à dire dans le cas où l'on n'a détecté le chargement +% d'aucun paquetage de gestion de langue, si \cs{lettre@keep@envs} est à 0, c'est que de surcroît l'option +% \texttt{keep envs=true} n'a pas été donnée, alors on fait comme si on avait eu l'option \texttt{keep +% envs=false}, c'est à dire que \texttt{lettre} redéfinit les environnemnts \texttt{itemize} et consorts selon +% la langue~: +% \begin{macrocode} + \toks0{% + \ifnum\lettre@keep@envs=0 % + \lettre@keep@envs=2 % + \fi + }% +% \end{macrocode} +% Deuxième cas possible, c.-à-d.\ $\meta{cas}=1$, on trouve un paquetage de gestion de langue qui fournit la +% macro \cs{selectlanguage}, alors \cs{lettre@lmp@selectlanguage} appelle \cs{selectlanguage} --- à noter que +% dans chaque cas on développe le traitement par défaut défini dans \cs{@tempa}~: +% \begin{macrocode} + \toks1\expandafter{\@tempa + \def\lettre@lmp@selectlanguage#1{\selectlanguage{#1}}}% +% \end{macrocode} +% Troisième cas possible, c.-à-d.\ $\meta{cas}=2$, le paquetage de gestion de langue fait partie +% d'\texttt{e-french}, on utilise \cs{lettre@efrench@selectlanguage} qui fait les traitements ad-hoc pour ce +% cas : +% \begin{macrocode} + \toks2\expandafter{\@tempa + \let\lettre@lmp@selectlanguage\lettre@efrench@selectlanguage}% +% \end{macrocode} +% Quatrième cas possible, c.-à-d.\ $\meta{cas}=3$, le paquetage de gestion de langue fait partie +% de \texttt{babel}, on utilise \cs{lettre@babel@selectlanguage} qui fait les traitements ad-hoc pour ce +% cas : +% \begin{macrocode} + \toks3\expandafter{\@tempa + \let\lettre@lmp@selectlanguage\lettre@babel@selectlanguage}% +% \end{macrocode} +% Le \meta{cas} sélectionné va être mis dans \cs{count}\texttt{0}, par défaut on initialise au premier cas : +% \begin{macrocode} \count0=0 % +% \end{macrocode} +% Et maintenant on se fait un macro \cs{@tempb} qui va analyser chaque élément de la liste d'association, +% c'est à dire qui va pour chaque \meta{paquetage} \texttt{\#1} testé, si ce paquetage est chargé sélectionner +% le bon \meta{cas} \texttt{\#2} : +% \begin{macrocode} \def\lettre@iterate@body#1{\@tempb#1\@nil}% \def\@tempb#1:#2\@nil{% \@ifpackageloaded{#1}{% \l@@info{Le paquetage `#1' est charg'e}% \count0=#2 % +% \end{macrocode} +% On redéfinit \cs{lettre@iterate} pour casser la boucle de scrutation de la liste d'association, de toute +% façon on est au sein d'un groupe, donc l'effet de cette re-définition est local : +% \begin{macrocode} \def\lettre@iterate##1\@nil,{}% }{% \l@@info{Le paquetage `#1' n'est pas charg'e}% }% }% +% \end{macrocode} +% Et voici la boucle elle-même, avec pour chaque paquetage le cas correspondant : +% \begin{macrocode} \l@@info{Scrutation des paquetages de gestion de langue}% \lettre@iterate% babel:3,% @@ -1247,10 +2141,19 @@ ni mlp, ni polyglossia, ni french}} french:2,% mlp:2,% \@nil,% +% \end{macrocode} +% Il n'y a plus qu'à appliquer le traitement correspondant au cas sélectionné : +% \begin{macrocode} \expandafter }\the\toks\count0 % \makeatother +% \end{macrocode} +% Fin du \cs{AtBeginDocument}. +% \begin{macrocode} }% +% \end{macrocode} +% Crochet \cs{end\{document\}} pour sortir la page d'étiquettes, si nécessaire. +% \begin{macrocode} \AtEndDocument{% \l@@info{Nombre de lettres :\the\c@lettre}% \l@@info{Nombre de telefax :\the\c@telefax}% @@ -1272,7 +2175,15 @@ ni mlp, ni polyglossia, ni french}} \fi \endgroup }% +% \end{macrocode} +% +%\subsubsection{Styles de page} +% +% \begin{macrocode} \def\@texttop{\ifnum\c@page=1\vskip 0pt plus .00001fil\relax\fi}% +% \end{macrocode} +% +% \begin{macrocode} \if@twoside \def\ps@headings{% \headheight 12pt% @@ -1293,6 +2204,9 @@ ni mlp, ni polyglossia, ni french}} \def\@evenhead{}% \def\@evenfoot{}}% \fi +% \end{macrocode} +% \DescribeMacro{\ps@empty} +% \begin{macrocode} \def\ps@empty{% \headheight 0pt% \headsep 9pt% @@ -1316,6 +2230,9 @@ ni mlp, ni polyglossia, ni french}} \fi}% \def\@evenhead{}% \def\@evenfoot{}}% +% \end{macrocode} +% \DescribeMacro{\ps@firstpage} +% \begin{macrocode} \def\ps@firstpage{% \headheight 12pt% \headsep 25pt% @@ -1323,6 +2240,9 @@ ni mlp, ni polyglossia, ni french}} \def\@oddfoot{}% \def\@evenhead{}% \def\@evenfoot{}}% +% \end{macrocode} +% \DescribeMacro{\ps@plain} +% \begin{macrocode} \def\ps@plain{% \headheight 0pt% \headsep 9pt% @@ -1330,46 +2250,75 @@ ni mlp, ni polyglossia, ni french}} \def\@oddfoot{\textrm{\hfill\thepage\hfill}}% \def\@evenhead{}% \def\@evenfoot{\textrm{\hfill\thepage\hfill}}}% +% \end{macrocode} +% +%\subsubsection{\texttt{center} et \texttt{flushleft}} +% +% \begin{macrocode} \def\normalcenter{\trivlist \normalcentering\item[]}% \def\lettercenter{\trivlist \lettercentering\item[]}% \def\normalcentering{\let\\=\@centercr\rightskip\@flushglue \leftskip\@flushglue \parindent\z@\parfillskip\z@}% \def\lettercentering{\let\\=\@centercr\rightskip\@flushglue - \leftskip\@flushglue\advance\leftskip\lettermargin + \leftskip\@flushglue \parindent\z@\parfillskip\z@}% \let\endcenter=\endtrivlist +% \end{macrocode} +% \DescribeMacro{\normalflushleft} +% \begin{macrocode} \def\normalflushleft{\trivlist \normalraggedright\item[]}% \def\letterflushleft{\trivlist \letterraggedright\item[]}% \def\normalraggedright{\let\\=\@centercr\leftskip\z@ \@rightskip\@flushglue\rightskip\@rightskip \parindent\z@}% -\def\letterraggedright{\let\\=\@centercr\leftskip\lettermargin +\def\letterraggedright{\let\\=\@centercr\leftskip\z@ \@rightskip\@flushglue\rightskip\@rightskip \parindent\z@}% \let\endflushleft=\endtrivlist +% \end{macrocode} +% +%\subsubsection{Listes} +% +% \DescribeMacro{\lettre@store@orig@envs}Tout d'abord on définit \cs{lettre@store@orig@envs} qui prend note de +% l'environnement \texttt{itemize} d'origine fourni par \LaTeX, et qui sera appelé \cs{AtBeginDocument}, et +% immédiatement après chaque changement de langue effectué par le paquetage de gestion de langue. +% \begin{macrocode} \newcommand*{\lettre@store@orig@envs}{% \let\lettre@orig@itemize\itemize \let\lettre@orig@enditemize\enditemize }% \AtBeginDocument{\lettre@store@orig@envs}% +% \end{macrocode} +% \DescribeMacro{\lettre@restore@orig@envs}La macro \cs{lettre@restore@orig@envs} permet de restaurer les +% environnments \LaTeX\ que \texttt{lettre} redéfinit selon la langue. Notamment l'environnement +% \texttt{itemize} redéfini en français. +% \begin{macrocode} \newcommand*{\lettre@restore@orig@envs}{% \let\itemize\lettre@orig@itemize \let\enditemize\lettre@orig@enditemize}% -\newcommand*{\reset@frenchitemize}{\l@@warning@strictable{\protect\reset@frenchitemize\space est obsolete, utilisez - plutot \protect\lettre@set@french@envs}\lettre@set@french@envs} +% \end{macrocode} +% \DescribeMacro{\reset@frenchitemize}La macro \cs{reset@frenchitemize} est obsolète, appelez plutôt +% \cs{lettre@set@french@envs} définie dans \texttt{lettre-french.ldf}. +% \begin{macrocode} +\newcommand*{\reset@frenchitemize}{\l@@warning@strictable + {\protect\reset@frenchitemize\space est obsolete, utilisez + plutot \protect\lettre@set@french@envs}\lettre@set@french@envs} +% \end{macrocode} +% +% \begin{macrocode} \rightmargin 25mm% - \advance\rightmargin 5pt% +\advance\rightmargin 5pt% +\leftmargini 1.5em% \leftmarginii 2.2em% \leftmarginiii 1.87em% \leftmarginiv 1.7em% \leftmarginv 1em% \leftmarginvi 1em% -\leftmargin\leftmargini \labelsep 5pt% \parsep 0pt% -\def\@listi{\leftmargin\listmargin\labelwidth\leftmargin - \advance\leftmargin 1.5em\advance\labelwidth-\labelsep}% +\def\@listi{\leftmargin\leftmargini\labelwidth\leftmargin + \advance\labelwidth-\labelsep}% \def\@listii{\leftmargin\leftmarginii \labelwidth\leftmarginii\advance\labelwidth-\labelsep}% \def\@listiii{\leftmargin\leftmarginiii @@ -1382,10 +2331,16 @@ ni mlp, ni polyglossia, ni french}} \labelwidth\leftmarginv\advance\labelwidth-\labelsep}% \def\@listvi{\leftmargin\leftmarginvi \labelwidth\leftmarginvi\advance\labelwidth-\labelsep}% +% \end{macrocode} +% +% \begin{macrocode} \def\labelitemi{$\bullet$}% \def\labelitemii{\bfseries --}% \def\labelitemiii{$\ast$}% \def\labelitemiv{$\cdot$}% +% \end{macrocode} +% +% \begin{macrocode} \def\labelenumi{\arabic{enumi}.}% \def\theenumi{\arabic{enumi}}% \def\labelenumii{(\alph{enumii})}% @@ -1397,39 +2352,89 @@ ni mlp, ni polyglossia, ni french}} \def\labelenumiv{\Alph{enumiv}.}% \def\theenumiv{\Alph{enumiv}}% \def\p@enumiv{\p@enumiii\theenumiii}% +% \end{macrocode} +% \DescribeEnv{verse} +% \begin{macrocode} \def\verse{\let\\=\@centercr \list{}{\itemsep\z@ \itemindent -15pt\listparindent \itemindent \rightmargin\leftmargin\advance\leftmargin 15pt}\item[]}% \let\endverse\endlist +% \end{macrocode} +% \DescribeEnv{quotation} +% \begin{macrocode} \def\quotation{\list{}{\listparindent 1.5em% \itemindent\listparindent \rightmargin\leftmargin}\item[]}% \let\endquotation=\endlist +% \end{macrocode} +% \DescribeEnv{quote} +% \begin{macrocode} \def\quote{\list{}{\rightmargin\leftmargin}\item[]}% \let\endquote=\endlist -\def\descriptionlabel#1{\itshape #1}% -\def\description{\list{}{\leftmargin=2\listmargin - \labelwidth\listmargin \advance\labelwidth -\labelsep +% \end{macrocode} +% \DescribeMacro{\descriptionlabel}Format des étiquettes de listes de type \texttt{description}. +% \changes{3.001}{2020-02-25}{Étiquettes de liste \texttt{description} en gras.} +% \begin{macrocode} +\def\descriptionlabel#1{\bfseries #1}% +% \end{macrocode} +% \DescribeEnv{description} +% \begin{macrocode} +\def\description{\list{}{\advance\leftmargin by 5.75em + \labelwidth\leftmargin \advance\labelwidth -\labelsep \let\makelabel\descriptionlabel}}% \let\enddescription\endlist +% \end{macrocode} +% +%\subsubsection{Divers} +% +% \begin{macrocode} \def\@begintheorem#1#2{\itshape \trivlist \item[\hskip \labelsep{\bfseries #1\ #2}]}% \def\@endtheorem{\endtrivlist}% +% \end{macrocode} +% \DescribeMacro{\theequation} +% \begin{macrocode} \def\theequation{\arabic{equation}}% +% \end{macrocode} +% +% \begin{macrocode} \arraycolsep 5pt% \tabcolsep 5pt% \arrayrulewidth .4pt% \doublerulesep 2pt% \tabbingsep\labelsep \skip\@mpfootins=\skip\footins +% \end{macrocode} +% Espace laissé entre la boîte et le texte par \cs{fbox} et \cs{framebox}. +% \begin{macrocode} \fboxsep = 3pt +% \end{macrocode} +% Épaisseur des filets faits par \cs{fbox} et \cs{framebox}. +% \begin{macrocode} \fboxrule = .4pt +% \end{macrocode} +%\changes{3.000}{2015-12-20}{Ajout \cs{today} nécessaire à \texttt{e-french}.}% +% \begin{macrocode} \newcommand*\today{\cejour} +% \end{macrocode} +% +%\subsubsection{Notes en bas de page} +% +% \begin{macrocode} \def\footnoterule{\kern-1\p@ \hrule width .4\columnwidth \kern .6\p@}% +% \end{macrocode} +% \DescribeMacro{\@makefntext} +% \begin{macrocode} \long\def\@makefntext#1{\parindent 1em\noindent \hb@xt@1.8em{% \hss\@textsuperscript{\normalfont\@thefnmark}}#1}% +% \end{macrocode} +% +%\subsection{Initialisations} +%\subsubsection{Initialisation des valeurs par défauts} +% +% \begin{macrocode} \def\pict@let@width{185}% \def\pict@let@height{65}% \def\pict@let@hoffset{0}% @@ -1446,6 +2451,9 @@ ni mlp, ni polyglossia, ni french}} \def\toaddress@let@hpos{90}% \def\toaddress@let@vpos{40}% \toaddress@let@width=80mm +% \end{macrocode} +% +% \begin{macrocode} \def\pict@fax@width{185}% \def\pict@fax@height{30}% \def\pict@fax@hoffset{0}% @@ -1459,29 +2467,57 @@ ni mlp, ni polyglossia, ni french}} \faxbox@width=170mm% \toaddress@fax@width=69mm% \fromname@fax@width=69mm% +% \end{macrocode} +%\changes{2.354}{2014-10-21}{Ajout \cs{lettre@vref@width} et \cs{lettre@nref@width}}% +% \begin{macrocode} \lettre@vref@width=21mm% \lettre@nref@width=21mm% +% \end{macrocode} +% \DescribeMacro{\lettre@input@institut}Définition par défaut de \cs{lettre@input@institut}, cette définition +% peut être changée par l'appel à \cs{institut}. +% \changes{3.000}{2015-10-30}{Nom fichier institut par défaut en +% \texttt{lettre-default.cfg}} +% \begin{macrocode} \def\lettre@input@institut{\makeatletter \input{lettre-default.cfg}% \makeatother}% +% \end{macrocode} +% +% \begin{macrocode} \smallskipamount=.5\parskip \medskipamount=\parskip \bigskipamount=2\parskip +% \end{macrocode} +% +% \begin{macrocode} \ps@plain \pagenumbering{arabic}% \raggedbottom \onecolumn +% \end{macrocode} +% \subsubsection{Initialisations des variables de la lettre} +% \begin{macrocode} \def\pdate{\cejour}% +% \end{macrocode} +% \begin{macrocode} \def\emailnum{}% +% \end{macrocode} +% \begin{macrocode} \def\fromlocation{}% \signum=0\relax \def\fromsig{}% \def\fromssig{}% \def\fromtsig{}% +% \end{macrocode} +% Langue française par défaut, si rien d'autre n'a été demandé. +% \begin{macrocode} \ifx\lettre@mainlang\@empty \def\lettre@mainlang{francais}% \lettreloadlang{french}% \fi +% \end{macrocode} +% Sélection de la langue principale au début du document. +% \begin{macrocode} {% \edef\@tempa{% \noexpand\AtBeginDocument{% @@ -1489,6 +2525,8 @@ ni mlp, ni polyglossia, ni french}} \noexpand\l@@info{Langage par defaut: \lettre@mainlang}}% }% \expandafter}\@tempa +% \end{macrocode} +% \begin{macrocode} \def\concdecl{}% \marge{15mm}% \msigwidth=\letterwidth @@ -1499,15 +2537,24 @@ ni mlp, ni polyglossia, ni french}} \sigspace=1.5cm \openingspace=1cm \openingindent=0pt +% \end{macrocode} +% \begin{macrocode} \@lettertrue \faxpage=0\relax \def\totalpages{}% +% \end{macrocode} +% \begin{macrocode} \def\auxflag{}% \auxcount=0\relax +% \end{macrocode} +% \changes{2.354}{2014-10-21}{Un argument vide à \cs{Vref} ou \cs{Nref} supprime la référence}% +% \begin{macrocode} \let\toref\space \let\fromref\space \def\telexnum{}% \def\ccpnum{}% +% \end{macrocode} +% \begin{macrocode} \def\emailflag{}% \emailcount=0\relax \def\@username{}% @@ -1516,6 +2563,13 @@ ni mlp, ni polyglossia, ni french}} \def\bitnetnum{}% \def\telepacnum{}% \def\decnetnum{}% +% \end{macrocode} +% \begin{macrocode} \def\bdp{}% \endinput -% End of file `lettre.cls'. +% \end{macrocode} +%^^A End of file `lettre.cls'. +\iffalse Local Variables: \fi +\iffalse mode: DocTeX\fi +\iffalse ispell-dictionary: "francais"\fi +\iffalse End: \fi diff --git a/Master/texmf-dist/tex/latex/lettre/lettre.tpl b/Master/texmf-dist/tex/latex/lettre/lettre.tpl new file mode 100644 index 00000000000..3c9e282f8db --- /dev/null +++ b/Master/texmf-dist/tex/latex/lettre/lettre.tpl @@ -0,0 +1,124 @@ +% This file is part of the "lettre" package. +% This package is distributed under the terms of the LaTeX Project +% Public License (LPPL) described in the file lppl.txt. +% +% Denis Mégevand - Observatoire de Genève. +% +% Ce fichier fait partie de la distribution du paquetage "lettre". +% Ce paquetage est distribué sous les termes de la licence publique +% du projet LaTeX (LPPL) décrite dans le fichier lppl.txt. + +\documentclass[10pt|11pt|12pt,twoside,leqno,fleqn,% + francais|romand|allemand|anglais|americain% + origdate]{lettre} +%\usepackage{french} +%\usepackage{babel} +% +% Production d'etiquettes[commencant a la nieme etiquette de la page] +% =================================================================== +% +%\makelabels[n] +% +\begin{document} +% +% Declaration du fichier de defauts +% ================================= +% +% Permet d'ecrire des lettres personalisees +% sans repreciser a chaque fois les parametres de l'expediteur +% +%\institut{fichier} +% +% Declaration du destinataire et environnement +% ============================================ +% +% Permet d'ecrire plusieurs lettres a des destinataires differents +% sans repreciser les parametres de l'expediteur +% +\begin{letter}{Destinataire \\ + Adresse \\ + no, rue \\ + NPA Lieu } +% +% +% Parametre obligatoire +% ===================== +% +\name{Nom de l'expediteur} +% +% Parametres facultatifs de l'entete % (defauts) +% =============================================== +% +%\address{Adresse d'expedition} % ( OBSERVATOIRE DE ) +% % ( GENEVE ) +% % ( ) +% % ( CH-1290 Sauverny ) +%\psobs % ( Logo de l'Observatoire ) +%\location{Precision d'adresse} % ( ) +%\telephone{No de tel expediteur} % ( +41(22) 755 26 11 ) +%\notelephone +%\fax{No de fax expediteur} % ( +41(22) 755 39 83 ) +%\nofax +%\email{adresse} % ( ) +% +%\lieu{Se met devant la date} % (Sauverny, ) +%\nolieu +%\date{date fixe} % (date courante) +%\nodate +% +% Parametre de mise en page % (defauts) +% ============================================== +% +%\marge{largeur} % (15mm) +%\tension{valeur} % (2) +% +% Parametres facultatifs % (defauts) +% =============================================== +% +%\pagestyle{empty|headings} % ( plain par defaut ) +%\francais|\romand|\anglais| %\(\francais) +%\americain|\allemand %/ +% +%\signature{signature} % (\name) +%\secondsignature{signature} % () +%\thirdsignature{signature} % () +% +%\nref{reference}|\Nref{reference} % () +%\vref{reference}|\Vref{reference} % () +%\telex{numero} % () +%\ccp{numero} % () +%\faxobs % (+41(22) 755 39 83) +%\ccpobs % (12-2130-4) +% +%\basdepage{texte} % () +%\username{nom d'utilisateur} % () +%\internet{adresse RFC 822} % () +%\ccitt{adresse X400} % () +%\bitnet{adresse bitnet} % () +%\telepac{numero telepac} % () +%\decnet{numero decnet} % () +%\internetobs % ([username@]scsun.unige.ch) +%\ccittobs % ([S=username;]OU=scsun;O=unige;% +% % PRMD=switch;ADMD=arcom;C=ch) +% +%\conc{Sujet de la lettre} % () +% +% Corps de la lettre +% ================== +% +\opening{Cher Ami,} +% + Texte de la lettre +% +\closing{Salutations} +% +% Paragraphes supplementaires +% =========================== +% +%\ps{label}{texte du post-scriptum} +%\encl{annexes separees par des \\} +%\cc{destinataires de copies conformes separes par des \\} +% +\end{letter} +% +\end{document} -- cgit v1.2.3