summaryrefslogtreecommitdiff
path: root/macros
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2020-04-19 03:02:39 +0000
committerNorbert Preining <norbert@preining.info>2020-04-19 03:02:39 +0000
commit0e85a1501dd8b23f1debab0ed20d89b11146ad34 (patch)
treebefb60d0cd0ba576dabe5d042857558605b21c27 /macros
parent1f544532dd3dd7f9b52644c6ca83b4db44d34051 (diff)
CTAN sync 202004190302
Diffstat (limited to 'macros')
-rw-r--r--macros/latex/contrib/babel-contrib/french/README.md12
-rw-r--r--macros/latex/contrib/babel-contrib/french/frenchb-doc.pdfbin156507 -> 153525 bytes
-rw-r--r--macros/latex/contrib/babel-contrib/french/frenchb-doc.tex144
-rw-r--r--macros/latex/contrib/babel-contrib/french/frenchb.dtx602
-rw-r--r--macros/latex/contrib/babel-contrib/french/frenchb.pdfbin246075 -> 308091 bytes
-rw-r--r--macros/latex/contrib/factura/factura-ejemplo-prefactura.pdfbin93244 -> 91569 bytes
-rw-r--r--macros/latex/contrib/factura/factura.dtx144
-rw-r--r--macros/latex/contrib/factura/factura.pdfbin922456 -> 915701 bytes
8 files changed, 521 insertions, 381 deletions
diff --git a/macros/latex/contrib/babel-contrib/french/README.md b/macros/latex/contrib/babel-contrib/french/README.md
index 103c7cc15a..50845e3684 100644
--- a/macros/latex/contrib/babel-contrib/french/README.md
+++ b/macros/latex/contrib/babel-contrib/french/README.md
@@ -1,7 +1,8 @@
The babel-french package (formerly known as `frenchb')
======================================================
-## Description
+Description
+-----------
This package provides support for the French language for the babel
multilingual system.
@@ -20,7 +21,8 @@ The bundle consists of the following files:
* frenchb-doc.tex: source file of frenchb-doc.pdf,
* README.md (this file).
-## License
+License
+-------
Released under the LaTeX Project Public License v1.3 or later
See http://www.latex-project.org/lppl.txt
@@ -36,12 +38,14 @@ distribution, do the following:
(default location: $TEXMF/tex/generic/babel-french/);
* rebuild the database (mktexlsr or so).
-## Documentation
+Documentation
+-------------
See the included manuals for usage instructions: frenchb.pdf in English or
the French documentation frenchb-doc.pdf.
-## Changes
+Changes
+-------
See the included manual frenchb.pdf, section "Change History".
diff --git a/macros/latex/contrib/babel-contrib/french/frenchb-doc.pdf b/macros/latex/contrib/babel-contrib/french/frenchb-doc.pdf
index f97bf7df85..bf2992cf94 100644
--- a/macros/latex/contrib/babel-contrib/french/frenchb-doc.pdf
+++ b/macros/latex/contrib/babel-contrib/french/frenchb-doc.pdf
Binary files differ
diff --git a/macros/latex/contrib/babel-contrib/french/frenchb-doc.tex b/macros/latex/contrib/babel-contrib/french/frenchb-doc.tex
index 4b639840da..8fd5aa56d5 100644
--- a/macros/latex/contrib/babel-contrib/french/frenchb-doc.tex
+++ b/macros/latex/contrib/babel-contrib/french/frenchb-doc.tex
@@ -11,26 +11,26 @@
\usepackage{url,alltt,shortvrb}
\usepackage{graphics}
\usepackage[dvipsnames]{xcolor}
-\usepackage{luatexbase} %%% Provisoire : pour microtype
%%% Fontes OpenType avec moteur LuaTeX : Erewhon/Cabin/Inconsolata
-\usepackage{fourier-otf}
+\usepackage[no-math]{fontspec}
\usepackage{realscripts}
-\setsansfont{Cabin}[Scale=MatchLowercase]
+\setmainfont{erewhon}
+%\setsansfont{Cabin}[Scale=MatchLowercase]
\setmonofont{Inconsolatazi4}% voir inconsolata-doc.pdf
- [Scale=MatchLowercase, HyphenChar=None, StylisticSet={2,3},
- ItalicFont = *-Regular, ItalicFeatures={FakeSlant=0.225}, % 13°
- SlantedFont= *-Regular, SlantedFeatures={FakeSlant=0.225},
- BoldItalicFont = *-Bold, BoldItalicFeatures={FakeSlant=0.225},
- BoldSlantedFont= *-Bold, BoldSlantedFeatures={FakeSlant=0.225},
- ]
+ [Scale=MatchLowercase, HyphenChar=None, StylisticSet={2,3},
+ ItalicFont = *-Regular, ItalicFeatures={FakeSlant=0.225}, % 13°
+ SlantedFont= *-Regular, SlantedFeatures={FakeSlant=0.225},
+ BoldItalicFont = *-Bold, BoldItalicFeatures={FakeSlant=0.225},
+ BoldSlantedFont= *-Bold, BoldSlantedFeatures={FakeSlant=0.225},
+ ]
%%% *** APRÈS fontspec ***
\usepackage{babel}
\frenchbsetup{og=«, fg=», AutoSpacePunctuation=false}
\frenchbsetup{ListItemsAsPar}
-\usepackage[babel=true,expansion=true,protrusion=true]{microtype}
+\usepackage{microtype}
% Mise en page
\usepackage[textwidth=160mm,textheight=247mm,hmarginratio=1:1
@@ -58,8 +58,7 @@
\def\verbatim@font{\ColorVerb\verbatim@fontORI}
\makeatother
% options de frenchb :
- \def\ColorArg{\color{Sepia}}
-% N.B. URL color = ForestGreen
+\def\ColorArg{\color{Sepia}}
%
\newcommand*{\file}[1]{\texttt{\ColorVerb #1}}
\newcommand*{\cls}[1]{\texttt{\ColorVerb #1}}
@@ -72,12 +71,13 @@
\newcommand*{\lang}[1]{\texttt{\ColorVerb #1}}
\newcommand*{\code}[1]{\texttt{\ColorVerb #1}}
\newcommand*{\argum}[1]{\textit{#1}}
-\newcommand*{\meta}[1]{\textit{\ColorArg #1}}
+\newcommand*{\meta}[1]{\textit{< #1 >}}
+\newcommand*{\LEFTmargin}{\texttt{<=}}
\providecommand\marg[1]{% % from ltxdoc.cls
- {\ttfamily\char`\{}\meta{#1}{\ttfamily\char`\}}}
+ {\ttfamily\char`\{}\textit{\ColorArg #1}{\ttfamily\char`\}}}
\providecommand\oarg[1]{%
- {\ttfamily[}\meta{#1}{\ttfamily]}}
+ {\ttfamily[}\textit{\ColorArg #1}{\ttfamily]}}
\DeclareRobustCommand\cs[1]{\texttt{\ColorVerb \char`\\#1}}% from ltxdoc.cls
\newcommand*\fbo[1]{\texttt{\ColorArg #1}}
@@ -113,8 +113,8 @@
unicode,
bookmarksopen,
colorlinks,
- urlcolor=ForestGreen,
- linkcolor=black, % appel note bas de page en noir
+ urlcolor=PineGreen,
+ linkcolor=Blue,
}
\newcommand*{\hlabel}[1]{\phantomsection\label{#1}}
% notes bas de page consécutives avec le même numéro
@@ -125,11 +125,11 @@
%
\title{Documentation sur le module \ext{babel-french}}
\author{\href{mailto:daniel.flipo@free.fr}{Daniel \textsc{Flipo}}}
-\newcommand*{\latestversion}{3.5g}
+\newcommand*{\latestversion}{3.5h}
\date{Version {\latestversion} -- \today}
\begin{document}
-\def\today{30 janvier 2020}
+\def\today{18 avril 2020}
\maketitle
\thispagestyle{empty}
@@ -198,7 +198,8 @@
\item[6 juillet 2018] Nouvelle option \fbo{ListItemsAsPar},
voir p.~\pageref{ListAsPar}.
\item[24 janvier 2019] L’option \fbo{StandardListSpacing=true} est à utiliser
- de préférence à \fbo{ReduceListSpacing=false}, voir p.~\pageref{ListAsPar}.
+ de préférence à \fbo{ReduceListSpacing=false},
+ voir p.~\pageref{listspacing}.
\item[14 mars 2019] Nouvelle commande |\NoEveryParQuote|, voir
p.~\pageref{frquote}.
\end{description}
@@ -213,7 +214,7 @@
\newpage
\section{Appel de l’extension Babel}
-Babel est installé en standard dans toutes distributions \LaTeXe,
+Babel est installé en standard dans toutes distributions LaTeX,
pour disposer des langues française et anglaise%
\footnote{En fait américaine (US-english), il existe une variante
\opt{british} pour l’anglais « britannique ».},
@@ -257,11 +258,11 @@ par exemple |\selectlanguage{british}| et pour revenir en français
Pour passer \emph{localement} dans une autre langue on peut utiliser
l’environnement \\
|\begin{otherlanguage}{|\argum{langue}|}|\\
-\hspace*{1em}\argum{texte\dots}\\
+\hspace*{1em}\argum{texte…}\\
|\end{otherlanguage}|\\
ou pour une courte citation dans un paragraphe\\
|\foreignlanguage{|\argum{langue}%
-|}{|\argum{texte\dots}|}|.
+|}{|\argum{texte…}|}|.
Depuis la version~3.10 de Babel, une syntaxe allégée est proposée pour les
changements de langue : en ajoutant par exemple dans le préambule
@@ -341,7 +342,8 @@ principale, \ext{babel-french} ne modifie en rien la présentation globale du
document : celle-ci est imposée uniquement par la classe et les autres
extensions chargées.
-Lorsque le français est la langue principale, la présentation globale du
+\goodbreak
+Lorsque le français est la langue principale, la présentation du
document (ou maquette) est modifiée de la façon suivante%
\footnote{Il est possible, pour chacun des points suivants, de revenir aux
réglages standard de LaTeX, voir section~\ref{sec:Perso}.} :
@@ -441,7 +443,9 @@ produit les effets suivants :
supprimer l’espace qui suit (cet espace est gênant devant une
parenthèse par exemple\dots)%
\footnote{Certains auteurs préfèrent en français «...» (codé \code{...}
- sans espace) à «\dots» (codé \cs{dots}).}.
+ sans espace) à «\dots» (codé \cs{dots}). Le mieux est d’utiliser
+ directement le caractère … dans le texte source dès lors que celui-ci est
+ codé en utf-8.}.
\item La commande |\today| retourne la date en français.
@@ -481,6 +485,11 @@ Des commandes ont été prévues pour faciliter la saisie :
au début de chaque paragraphe, sauf si \fbo{EveryParGuill=close} (guillemet
fermant dans ce cas) ou si \fbo{EveryParGuill=none} (aucun ajout).
+ Une commande |\NoEveryParQuote| permet de supprimer localement des guillemets
+ de début de paragraphe ajoutés inconsidérément par la commande |\frquote{}|
+ notamment dans les listes (après les labels) ; elle doit être utilisée dans
+ un environnement ou un groupe pour en limiter la portée.
+
Pour les citations imbriquées, plusieurs présentations sont proposées selon
les options choisies :
\begin{itemize}
@@ -503,6 +512,7 @@ Des commandes ont été prévues pour faciliter la saisie :
ce faire, il suffit de coder la citation interne avec |\frquote*{}| au lieu
de |\frquote{}|.
+\pagebreak
Exemple de citation imbriquée :
\vspace{0.5\baselineskip}
@@ -546,11 +556,6 @@ Le codage est le suivant :
{\ttfamily\ColorVerb Xavier raconte… |\frquote{|Au moment… l’hôtesse m’a
dit tout bonnement : |\frquote*{|Je suis désolée, … en anglais.|}}|}
- Une commande |\NoEveryParQuote| permet de supprimer localement des guillemets
- de début de paragraphe ajoutés inconsidérément par la commande |\frquote{}|
- notamment dans les listes (après les labels) ; elle doit être utilisée dans
- un environnement ou un groupe pour en limiter la portée.
-
\item La commande |\up| facilite la saisie des exposants en mode texte :
|M\up{me}| imprime M\up{me},
|1\up{er}| donne 1\up{er} ; % 1\ier ;
@@ -654,7 +659,7 @@ vertical des lettres supérieures simulées par |\fup|
En ajoutant |\usepackage{xspace}| dans le préambule, les espaces suivant
les commandes
-|\ier|,\dots, |\ieres|,
+|\ier|,…, |\ieres|,
|\ieme|, |\iemes|,
|\fg| et |\dots| sont
respectés sans avoir à les forcer par des |{}| ou
@@ -677,8 +682,7 @@ utilisée par d’autres extensions comme \ext{geometry} ou \ext{hyperref}.
Le recours à un fichier de configuration \file{frenchb.cfg} a été supprimé en
version~3.0.
-\subsection[\textbackslash frenchsetup{}]
- {\fbsetup{\textsl{$\langle$options$\rangle$}}}
+\subsection[\textbackslash frenchsetup{}]{\fbsetup{\meta{options}}}
\label{ssec:frenchbsetup}
La commande \fbsetup{ShowOptions} affiche dans le fichier \file{.log} la liste
@@ -700,6 +704,7 @@ La liste étant longue, les options sont regroupées par thèmes.
\subsubsection*{Inventaire des options}
\begin{description}
+ \setlength{\labelsep}{0.1666em}
\item [ShowOptions=true (false)]
affiche dans le fichier \file{.log} toutes les options
disponibles, ce qui permet de retrouver leurs noms facilement.
@@ -756,7 +761,7 @@ La liste étant longue, les options sont regroupées par thèmes.
modifie (en général en les réduisant, sauf pour les classes SMF)
les espaces verticaux%
\footnote{Il s’agit de \cs{itemsep}, \cs{parsep}, \cs{topsep}
- et \cs{partopsep}.}
+ et \cs{partopsep}.} \label{listspacing}
dans \emph{toutes les listes} produites à partir de l’environnement
\env{list}, en particulier les listes \env{enumerate}, \env{itemize} et
\env{description} mais aussi \env{abstract}, \env{quote}, \env{quotation},
@@ -882,11 +887,12 @@ La liste étant longue, les options sont regroupées par thèmes.
Le moteur LuaTeX permet un contrôle fin de l’ajout d’espace devant le
deux-points : si ce caractère n’est pas précédé d’un espace et que celui qui
- le suit est de type \textit{glyphe} (lettre, chiffre, /, \textbackslash, etc.)
- aucune espace n’est ajoutée en sortie, ce qui évite les espaces parasites
- dans les URLs (ftp://monsite), les chemins MSDOS (C:\textbackslash) et les
- horaires (10:55). Avec XeTeX ou pdfTeX |\textsf{http://truc}| donne
- \textsf{http~://truc} (espace parasite avant le «:»).
+ le suit est de type \textit{glyphe} (lettre, chiffre, /, \textbackslash,
+ etc.) aucune espace n’est ajoutée en sortie, ce qui évite les espaces
+ parasites dans les URLs (ftp://monsite), les chemins MSDOS
+ (C:\textbackslash), les horaires (10:55) et les ratios (1:1).
+ Avec XeTeX ou pdfTeX |http://truc| et |1:1| donnent http~://truc et 1~:1
+ (espace parasite avant le «:»).
Il y a une autre exception avec les moteurs LuaTeX et XeTeX :
si l’utilisateur code une espace insécable U+00A0 (\emph{pas}
@@ -997,7 +1003,7 @@ La liste étant longue, les options sont regroupées par thèmes.
produit \foreignlanguage{german}{(»Auf Deutsch«)}. %»
Ceci fonctionne en (pdf)LaTeX pour les codages d’entrée 8-bits (latin1,
- latin9, ansinew, applemac,\dots) et pour les codages sur plusieurs octets
+ latin9, ansinew, applemac,…) et pour les codages sur plusieurs octets
comme utf8 ou utf8x. Ceci fonctionne également avec LuaLaTeX et XeLaTeX ;
avec ces deux derniers toutefois, comme pour la ponctuation haute,
\ext{babel-french} respecte les espaces insécables U+00A0 et U+202F (fine).
@@ -1164,7 +1170,7 @@ Commande Babel & Commande pour le français & Intitulé par défaut en français
\name{part} & Première partie, Deuxième partie…\\
\name{encl} & P.~J.\\
\name{cc} & Copie à \\
-\name{headto} & $\langle$\textit{vide}$\rangle$\\
+\name{headto} & \meta{vide}\\
\name{page} & page\\
\name{see} & voir\\
\name{also} & voir aussi\\*
@@ -1185,7 +1191,7 @@ fonctionne toujours.\hlabel{captionsfrench}
\emph{Attention}, dans les deux cas, le nom de la langue est
\emph{obligatoirement} \opt{french}, les variantes \opt{frenchb} ou
\opt{francais} seraient sans effet ! Les commandes
-|\acadianabstractname|, \dots, |\acadianproofname| sont, elles, définies
+|\acadianabstractname|, …, |\acadianproofname| sont, elles, définies
(comme leurs homologues françaises) et personnalisables pour le français du
Canada (option \lang{acadian}).
\par}
@@ -1225,15 +1231,15 @@ premier niveau sur le retrait (|\parindent|) de début de paragraphe) :\par
{\centering
\fbox{\begin{minipage}[t]{.40\textwidth}\raggedright
\FBListItemsAsParfalse \parindent=1.5em \listindentFB=1.5em
- \noindent$\Leftarrow$ Marge gauche\par
+ \noindent\LEFTmargin{} Marge gauche\par
Paragraphe précédant la liste
\begin{itemize}
- \item Premier élément sur plus d’une ligne\dots{}
+ \item Premier élément sur plus d’une ligne…
\begin{itemize}
\item Un élément niveau 2,
\item Second élément niveau 2,
\end{itemize}
- \item Second élément\dots
+ \item Second élément…
\end{itemize}
\end{minipage}}\par
}
@@ -1265,15 +1271,15 @@ listes \env{itemize}, \env{enumerate} et \env{description} :
\begin{minipage}[t]{.45\textwidth}
\fbox{\begin{minipage}[t]{0.9\textwidth}\raggedright
\FBListItemsAsParfalse \parindent=0pt \listindentFB=1.5em
- \noindent$\Leftarrow$ Marge gauche\par
+ \noindent\LEFTmargin{} Marge gauche\par
Paragraphe précédant la liste
\begin{itemize}
- \item Premier élément sur plus d’une ligne\dots{}
+ \item Premier élément sur plus d’une ligne…
\begin{itemize}
\item Un élément niveau 2,
\item Second élément niveau 2,
\end{itemize}
- \item Second élément\dots
+ \item Second élément…
\end{itemize}
\end{minipage}
}\\
@@ -1284,15 +1290,15 @@ listes \env{itemize}, \env{enumerate} et \env{description} :
\hspace*{\fill}
\fbox{\begin{minipage}[t]{.9\textwidth}\raggedright % .72
\FBListItemsAsParfalse \parindent=0em \listindentFB=0em
- \noindent$\Leftarrow$ Marge gauche\par
+ \noindent\LEFTmargin{} Marge gauche\par
Paragraphe précédant la liste
\begin{itemize}
- \item Premier élément sur plus d’une ligne\dots{}
+ \item Premier élément sur plus d’une ligne…
\begin{itemize}
\item Un élément niveau 2,
\item Second élément niveau 2,
\end{itemize}
- \item Second élément\dots
+ \item Second élément…
\end{itemize}
\end{minipage}
}\hspace*{\fill}\\
@@ -1312,15 +1318,15 @@ listes \env{itemize}, \env{enumerate} et \env{description} :
\begin{minipage}[t]{.45\textwidth}
\fbox{\begin{minipage}[t]{.9\textwidth}\raggedright
\FBListItemsAsParfalse \parindent=1.5em \listindentFB=1.5em
- \noindent$\Leftarrow$ Marge gauche\par
+ \noindent\LEFTmargin{} Marge gauche\par
Paragraphe précédant la liste
\begin{enumerate}
- \item Premier élément sur plus d’une ligne\dots{}
+ \item Premier élément sur plus d’une ligne…
\begin{enumerate}
\item Un élément niveau 2,
\item Second élément niveau 2,
\end{enumerate}
- \item Second élément\dots
+ \item Second élément…
\end{enumerate}
\end{minipage}
}\\
@@ -1334,16 +1340,16 @@ listes \env{itemize}, \env{enumerate} et \env{description} :
\hspace*{\fill}
\fbox{\begin{minipage}[t]{0.9\textwidth}\raggedright
\FBListItemsAsParfalse \parindent=1.5em \listindentFB=1.5em
- \noindent$\Leftarrow$ Marge gauche\par
+ \noindent\LEFTmargin{} Marge gauche\par
Paragraphe précédant la liste
\begin{enumerate}
- \item Premier élément sur plus d’une ligne\dots{}
+ \item Premier élément sur plus d’une ligne…
\settowidth{\labelwidthFB}{(a)}%
\begin{enumerate}
\item Un élément niveau 2,
\item Second élément niveau 2,
\end{enumerate}
- \item Second élément\dots
+ \item Second élément…
\end{enumerate}
\end{minipage}
}\hspace*{\fill}\\
@@ -1367,15 +1373,15 @@ listes \env{itemize}, \env{enumerate} et \env{description} :
\fbox{\begin{minipage}[t]{0.9\textwidth}\raggedright
\FBListItemsAsParfalse
\parindent=0pt \listindentFB=1.5em \descindentFB=1.5em
- \noindent$\Leftarrow$ Marge gauche\par
+ \noindent\LEFTmargin{} Marge gauche\par
Paragraphe précédant la liste
\begin{description}
- \item [Premier] élément occupant plus d’une ligne\dots{}
+ \item [Premier] élément occupant plus d’une ligne…
\begin{itemize}
\item Un élément niveau 2,
\item Second élément niveau 2,
\end{itemize}
- \item [Second] élément\dots
+ \item [Second] élément…
\end{description}
\end{minipage}
}\\
@@ -1387,15 +1393,15 @@ listes \env{itemize}, \env{enumerate} et \env{description} :
\fbox{\begin{minipage}[t]{.9\textwidth}\raggedright % .72
\FBListItemsAsParfalse
\parindent=0pt \listindentFB=1.5em \descindentFB=0pt
- \noindent$\Leftarrow$ Marge gauche\par
+ \noindent\LEFTmargin{} Marge gauche\par
Paragraphe précédant la liste
\begin{description}
- \item [Premier] élément occupant plus d’une ligne\dots{}
+ \item [Premier] élément occupant plus d’une ligne…
\begin{itemize}
\item Un élément niveau 2,
\item Second élément niveau 2,
\end{itemize}
- \item [Second] élément\dots
+ \item [Second] élément…
\end{description}
\end{minipage}
}\hspace*{\fill}\\
@@ -1424,7 +1430,7 @@ sections~\ref{sec:description} (listes \env{itemize}) et
\begin{minipage}[t]{.45\textwidth}
\fbox{\begin{minipage}[t]{0.9\textwidth}\raggedright
\FBListItemsAsParfalse \parindent=1.5em \listindentFB=1.5em
- \noindent$\Leftarrow$ Marge gauche\par
+ \noindent\LEFTmargin{} Marge gauche\par
Paragraphe précédant la liste et qui s’étend sur deux lignes.
\begin{itemize}
\item Premier élément qui se prolonge sur plusieurs…
@@ -1432,7 +1438,7 @@ sections~\ref{sec:description} (listes \env{itemize}) et
\item Un élément niveau 2,
\item Second élément niveau 2 sur plus d’une ligne…
\end{itemize}
- \item Second élément\dots
+ \item Second élément…
\end{itemize}
\end{minipage}
}\\
@@ -1443,7 +1449,7 @@ sections~\ref{sec:description} (listes \env{itemize}) et
\hspace*{\fill}
\fbox{\begin{minipage}[t]{.9\textwidth}\raggedright % .72
\FBListItemsAsPartrue \parindent=1.5em \listindentFB=1.5em
- \noindent$\Leftarrow$ Marge gauche\par
+ \noindent\LEFTmargin{} Marge gauche\par
Paragraphe précédant la liste et qui s’étend sur deux lignes.
\begin{itemize}
\item Premier élément qui se prolonge sur plusieurs lignes…
@@ -1451,7 +1457,7 @@ sections~\ref{sec:description} (listes \env{itemize}) et
\item Un élément niveau 2,
\item Second élément niveau 2 sur plus d’une ligne…
\end{itemize}
- \item Second élément\dots
+ \item Second élément…
\end{itemize}
\end{minipage}
}\hspace*{\fill}\\
@@ -1515,7 +1521,7 @@ est inchangée.
Quelques bogues affectant la commande |\frquote{}| ont été corrigées dans les
versions 3.5b à 3.5d. Cette dernière introduit une nouvelle option
\fbo{StandardListSpacing} à utiliser à la place de \fbo{ReduceListSpacing},
-voir p.~\pageref{ListAsPar}. La présente documentation est maintenant
+voir p.~\pageref{listspacing}. La présente documentation est maintenant
incluse dans la distribution \ext{babel-french} sur CTAN.
La commande |\NoEveryParQuote| a été ajoutée en version~3.5e, voir
@@ -1751,7 +1757,7 @@ avec ces moteurs%
cette section ne concerne \emph{que les vieux moteurs} TeX’82 et pdfTeX.
Normalement, le nécessaire est fait par Babel pour que les caractères rendus
-actifs ne perturbent pas les autres extensions\dots{} mais il y a hélas des
+actifs ne perturbent pas les autres extensions… mais il y a hélas des
exceptions (\ext{tikz}, \ext{xypic}, \ext{xcolor}, \ext{autonum}, \ext{arabtex},
\ext{cleveref} par exemple). Il faut savoir que les caractères
rendus actifs par une langue \emph{le restent dans tout le document}, repasser
diff --git a/macros/latex/contrib/babel-contrib/french/frenchb.dtx b/macros/latex/contrib/babel-contrib/french/frenchb.dtx
index 4f9697f12d..4941b1cea7 100644
--- a/macros/latex/contrib/babel-contrib/french/frenchb.dtx
+++ b/macros/latex/contrib/babel-contrib/french/frenchb.dtx
@@ -13,12 +13,12 @@
%<frenchb>\ProvidesLanguage{frenchb}
%<lua>--[[
%<lua> File `frenchb.lua’ generated from frenchb.dtx
- [2020/01/30 v3.5g French support from the babel system]
+ [2020/04/18 v3.5h French support from the babel system]
%<*internal>
\iffalse
%</internal>
%<*lua>
- Copyright © 2014-2019 Daniel Flipo
+ Copyright © 2014-2020 Daniel Flipo
<daniel (dot) flipo (at) free (dot) fr>
License LPPL: see french.ldf.
--]]
@@ -32,7 +32,7 @@
%<*dtx|french>
%%
%% Babel package for LaTeX version 2e
-%% Copyright © 1996-2019
+%% Copyright © 1996-2020
%% by Daniel Flipo <daniel (dot) flipo (at) free (dot) fr>
%%
%</dtx|french>
@@ -43,22 +43,38 @@
%</dtx>
%<*filedriver>
\documentclass[a4paper]{ltxdoc}
-\usepackage[left=42mm,right=42mm,top=40mm,bottom=40mm]{geometry}
-\usepackage[utf8]{inputenc}
-\usepackage{bera,textcomp}
-\renewcommand{\rmdefault}{fvs}
-\usepackage{array}
+\usepackage[left=38mm,right=38mm,top=30mm,bottom=50mm]{geometry}
\usepackage[dvipsnames]{xcolor}
+\usepackage[no-math]{fontspec}
+\usepackage{realscripts}
+\setmainfont{FiraSans}[
+ Extension = .otf ,
+ UprightFont = *-Book,
+ ItalicFont = *-BookItalic,
+ BoldFont = *-Medium,
+ BoldItalicFont = *-MediumItalic,
+ SmallCapsFont = FiraSans-Book,
+ SmallCapsFeatures = {Letters=SmallCaps},
+ ]
+\setmonofont{FiraMono}[
+ Extension = .otf ,
+ UprightFont = *-Regular,
+ ItalicFont = *-Oblique,
+ BoldFont = *-Medium,
+ BoldItalicFont = *-MediumOblique,
+ Scale = MatchLowercase,
+ ]
+%
\def\PrintMacroName#1{%
\strut\MacroFont\color{Sepia}\normalsize\string#1}
+\def\ColorArg{\color{Sepia}}
\usepackage[expansion=true,protrusion=true]{microtype}
-\def\ColorArg{\color{PineGreen}}
-\usepackage{url}
+\usepackage{array,url}
\usepackage[numbered]{hypdoc}
-\hypersetup{colorlinks,urlcolor=blue,unicode}
+\hypersetup{colorlinks,urlcolor=Blue,linkcolor=Blue,unicode}
\newcommand*{\hlabel}[1]{\phantomsection\label{#1}}
-\newcommand*\babel{\textsf{babel}}
-\newcommand*\frenchb{\textsf{babel-french}}
+\newcommand*\babel{\texttt{Babel}}
+\newcommand*\frenchb{\texttt{babel-french}}
\newcommand*\file[1]{\texttt{#1}}
\newcommand*\cls[1]{\texttt{#1}}
\newcommand*\pkg[1]{\texttt{#1}}
@@ -70,7 +86,7 @@
\renewcommand\meta[1]{\textit{<#1>}} % no math mode (see doc.sty)
\let\Module\meta % no math mode (see doc.sty)
\renewcommand*\descriptionlabel[1]{%
- \hspace\labelsep \normalfont \fbo{#1}}
+ \hspace{\labelsep}\normalfont \fbo{#1}}
\let\up\textsuperscript
\newcommand*{\FRguillspace}{\penalty 10000
\hskip.8\fontdimen2\font
@@ -331,7 +347,7 @@
% \item \frenchb{} has been designed to take advantage of the
% \pkg{xspace} package if present: adding
% |\usepackage{xspace}| in the preamble will force macros
-% like |\fg|, |\ier|, |\ieme|, |\dots|, \dots, to respect
+% like |\fg|, |\ier|, |\ieme|, |\dots|, …, to respect
% the spaces you type after them, for instance typing
% `|1\ier juin|’ will print `1\up{er} juin’
% (no need for a forced space after |1\ier|).
@@ -370,12 +386,14 @@
% \frenchb{} is loaded as the \emph{last} option of \babel{}
% ---\babel’s \emph{main language}---, and is toggled otherwise.
% \begin{description}
+% \setlength{\labelsep}{0.1666em}
% \item [StandardLayout=true (false*)] forces \frenchb{} not to
% interfere with the layout: no action on any kind of lists,
% first paragraphs of sections are not indented (as in English),
% no action on footnotes; it useless unless French is the main
% language. This option can be used to avoid conflicts with
% classes or packages which customise lists or footnotes.
+%
% \item [GlobalLayoutFrench=false (true*)] can only be used when
% French is the main language; setting it to \fbo{false} will
% emulate what prior versions of \frenchb{} (pre-2.2) did:
@@ -385,10 +403,12 @@
% is a bad practice imho). Note that the layout of footnotes is
% language independent anyway (see below \fbo{FrenchFootnotes}
% and \fbo{AutoSpaceFootnotes}).
+%
% \item [IndentFirst=false (true*)]; set this option to \fbo{false}
% if you do not want \frenchb{} to force indentation of the
% first paragraph of sections. When French is the main language,
% this option applies to all languages.
+%
% \item [PartNameFull=false (true)]; when true, \frenchb{} numbers
% the title of |\part{}| commands as ``Première partie’’,
% ``Deuxième partie’’ and so on. With some classes which
@@ -411,12 +431,12 @@
% \noindent<= Leftmargin\par
% \textemdash{} first item running on two
% \hspace*{\parindent}\hspace*{\labelwidth}
-% lines or more\dots{}\par
+% lines or more…\par
% \hspace*{\labelwidth} \textemdash{} first second level
-% \hspace*{\parindent}\hspace*{\labelwidth}%
-% \hspace*{\labelwidth} item on two lines\dots{}\par
-% \hspace*{\labelwidth} \textemdash{} next one\dots{}\par
-% \textemdash{} second item\dots
+% item \hspace*{\parindent}\hspace*{\labelwidth}%
+% \hspace*{\labelwidth} on two lines…\par
+% \hspace*{\labelwidth} \textemdash{} next one…\par
+% \textemdash{} second item…
% }}
% \hfill \hlabel{ListAsPar}%
% \fbox{\parbox[t]{.4\textwidth}{\raggedright
@@ -426,14 +446,15 @@
% Text starting at `parindent’ \\
% \noindent<= Leftmargin\par
% \textemdash{} first item running on two
-% lines or more\dots{}\par
+% lines or more…\par
% \hspace*{\labelwidth} \textemdash{} first second level
-% \hspace*{\parindent} item on two lines\dots{}\par
-% \hspace*{\labelwidth} \textemdash{} next one\dots{}\par
-% \textemdash{} second item\dots
+% item \hspace*{\parindent}on two lines…\par
+% \hspace*{\labelwidth} \textemdash{} next one…\par
+% \textemdash{} second item…
% }}\par
-% Default French layout%
-% \hspace{\fill}With \fbo{ListItemsAsPar=true}%
+% \hspace*{3em} Default French layout%
+% \hspace{\fill}With \fbo{ListItemsAsPar=true} \hspace*{1em}
+%
% \item [StandardListSpacing=true (false*)]%
% \footnote{This option should be used instead of former option
% \fbo{ReduceListSpacing} (kept for backward compatibility) which
@@ -449,35 +470,43 @@
% Setting this option to \fbo{true} reverts to the standard
% settings of the \env{list} environment as defined by the document
% class.
+%
% \item [StandardItemizeEnv=true (false*)]; \frenchb{} redefines
% the \env{itemize} environment to suppress any vertical space
% between items of \env{itemize} lists in French and customises
% left margins. Setting this option to \fbo{true} reverts to
% the standard definition of \env{itemize}.
-% \item [StandardEnumerateEnv=true (false*)]; starting with
-% version~2.6 \frenchb{} redefines the \env{enumerate} and
-% \env{description} environments to make left margins match those
-% of the French version of \env{itemize} lists. Setting this
-% option to \fbo{true} reverts to the standard definition of
-% \env{enumerate} and \env{description}.
+%
+% \item [StandardEnumerateEnv=true (false*)]; \frenchb{} redefines
+% \env{enumerate} and \env{description} environments to make
+% left margins match those of the French version of \env{itemize}
+% lists. Setting this option to \fbo{true} reverts to the standard
+% definition of \env{enumerate} and \env{description}.
+%
% \item [StandardItemLabels=true (false*)] when set to \fbo{true}
% this option prevents \frenchb{} from changing the labels in
% \env{itemize} lists in French.
+%
% \item [ItemLabels=\cs{textbullet}, \cs{textendash},
-% \cs{ding\{43\}},...(\cs{textemdash}*)];\\
+% \cs{ding\{43\}}, (\cs{textemdash}*)]; \\
% when \fbo{StandardItemLabels=false} (the default), this option
% enables to choose the label used in French \env{itemize} lists
% for all levels. The next four options do the same but each
-% one for a specific level only. Note that the example
-% |\ding{43}| requires |\usepackage{pifont}|.
+% one for a specific level only. Note that \fbo{\cs{ding\{43\}}}
+% requires loading the \pkg{pifont} package.
+%
% \item [ItemLabeli=\cs{textbullet}, \cs{textendash},
-% \cs{ding\{43\}},...(\cs{textemdash}*)]
+% \cs{ding\{43\}} (\cs{textemdash}*)]
+%
% \item [ItemLabelii=\cs{textbullet}, \cs{textendash},
-% \cs{ding\{43\}},...(\cs{textemdash}*)]
-% \item [ItemLabeliii=\cs{textbullet}, \cs{textendash},
-% \cs{ding\{43\}},..(\cs{textemdash}*)]
+% \cs{ding\{43\}} (\cs{textemdash}*)]
+%
+% \item [ItemLabeliii=\cs{textbullet},
+% \cs{textendash}, \cs{ding\{43\}} (\cs{textemdash}*)]
+%
% \item [ItemLabeliv=\cs{textbullet}, \cs{textendash},
-% \cs{ding\{43\}},...(\cs{textemdash}*)]
+% \cs{ding\{43\}} (\cs{textemdash}*)]\hfill
+%
% \item [StandardLists=true (false*)] forbids \frenchb{} to
% customise any kind of list. Try the option \fbo{StandardLists}
% in case of conflicts with classes or packages that customise
@@ -485,6 +514,7 @@
% options \fbo{StandardListSpacing=true},
% \fbo{StandardItemizeEnv=true}, \fbo{StandardEnumerateEnv=true}
% and \fbo{StandardItemLabels=true}.
+%
% \item [ListOldLayout=true (false)]; starting with version~2.6a,
% the layout of lists has changed regarding leftmargins’ sizes
% and default itemize label (`---’ instead of `--’ up to~2.5k).
@@ -500,6 +530,7 @@
% footnotes locally; |\StandardFootnotes| can help when some
% footnotes are numbered with letters (inside minipages for
% instance).
+%
% \item [AutoSpaceFootnotes=false (true*)]; by default \frenchb{}
% adds a thin space in the running text before the number or
% symbol calling the footnote. Making this option \fbo{false}
@@ -538,17 +569,20 @@
% pdfTeX engines. LuaTeX no longer inserts any space in strings
% like http://mysite, C:\textbackslash Foo, 10:55…}
% or |{\NoAutoSpacing ???}| (needed for pdfTeX only).
-% \item [ThinColonSpace=true (false)] changes the inter-word
+%
+% \item [ThinColonSpace=true (false)] changes the
% non-breaking space added before the colon `:’ to a thin space,
% so that the same amount of space is added before any of the
% four `high punctuation’ characters. The default setting is
% supported by the French `Imprimerie Nationale’.
+%
% \item [OriginalTypewriter=true (false)] prevents any
% customisation of |\ttfamily| and |\texttt{}| in French.
% This option should only be used to ensure backward compatibility.
% The current default behaviour is to switch off any addition of
% space before high punctuation with typewriter fonts
% (\textit{e.g.} verbatim).
+%
% \item [UnicodeNoBreakSpaces=true (false)];\hlabel{ucs-nbsp}
% (experimental) this option should be set to \fbo{true}
% \emph{only while converting LuaLaTeX files} to HTML.
@@ -568,13 +602,15 @@
% without spaces) to get properly typeset French quotes.
% This option works with LuaLaTeX and XeLaTeX; with pdfLaTeX it
% requires \file{inputenc} to be loaded with a proper encoding:
-% 8-bits encoding (latin1, latin9, ansinew, applemac,\dots) or
+% 8-bits encoding (latin1, latin9, ansinew, applemac,…) or
% multi-byte encoding (utf8, utf8x).
+%
% \item [INGuillSpace=true (false)] resets the dimensions of spaces
% after opening French quotes and before closing French quotes to
% the French `Imprimerie Nationale’ standards (inter-word space).
% \frenchb’s default setting produces slightly narrower spaces
% with less stretchability.
+%
% \item [EveryParGuill=open, close, none (open)]; sets whether
% an opening quote (\texttt{«}) or a closing one (\texttt{»}) or
% nothing should be printed by |\frquote{}| at the beginning of
@@ -592,6 +628,7 @@
% and inner quotations are entered with |\frquote{}|). When
% \fbo{EveryLineGuill=open} or \fbo{=close} the inner quotation is
% always surrounded by « and », the next option is ineffective.
+%
% \item [InnerGuillSingle=true (false)];
% if \fbo{InnerGuillSingle=false} (default), inner quotations
% entered with |\frquote{}| start with~\texttt{``} and end
@@ -615,11 +652,14 @@
% \fbo{false}, |\figurename| and |\tablename| will be printed in
% French captions as ``Figure’’ and ``Table’’ instead of being
% printed in small caps (the default).
+%
% \item [CustomiseFigTabCaptions=false (true*)]; when \fbo{false}
% the default separator (colon) is used instead of
% |\CaptionSeparator|. Anyway, \frenchb{} tries hard to insert
% a proper space before it and warns if it fails to do so.
-% \item [OldFigTabCaptions=true (false)] is to be used when
+%
+% \item [OldFigTabCaptions=true (false)] is to be used \emph{only}
+% when
% figures’ and tables’ captions must be typeset as with pre~3.0
% versions of \frenchb{} (with |\CaptionSeparator| in French and
% colon otherwise). Intended for standard LaTeX classes only.
@@ -629,10 +669,12 @@
% Should only be made \fbo{false} to recompile documents written
% before 2008 without changes: by default |\up| now relies on
% |\fup| designed to produce better looking superscripts.
+%
% \item [LowercaseSuperscripts=false (true)]; by default \frenchb{}
% inhibits the uppercasing of superscripts (for instance when
% they are moved to page headers). Making this option
% \fbo{false} will disable this behaviour (not recommended).
+%
% \item [SuppressWarning=true (false)]; can be turned to \fbo{true}
% if you are bored with \frenchb’s warnings; use this option as
% \emph{first} option of \fbsetup{} to cancel warnings launched
@@ -664,6 +706,7 @@
% \subsubsection{Figure and table captions}
% \label{sssec-captions-fig}
%
+% \enlargethispage{-\baselineskip}
% In French, captions in figures and tables should never be printed
% as ‘Figure~1: ’ which is the default in standard LaTeX2e
% classes (a space should \emph{always} preceed a colon in French),
@@ -923,7 +966,7 @@
% generated from frenchb.dtx.}
%
% \clearpage
-% \newgeometry{left=53mm,right=25mm}
+% \newgeometry{left=50mm,right=23mm}
%
% \section{The code}
%
@@ -1404,8 +1447,8 @@
\else \FB@dialect=1 \relax
\fi
% \end{macrocode}
-% The first time whe enter French, we have to set the LuaTeX
-% tables for French (|\FB@dialet=0|) \emph{before} any dialect
+% When first entering French, we have to set the LuaTeX
+% tables for French (|\FB@dialect=0|) \emph{before} any dialect
% redefines any |\FB...space| command. Doing this `AtBeginDocument’
% would be too late: if French or a French dialect is the main
% language, |\extrasfrench| has been executed before!
@@ -1695,6 +1738,7 @@ local GLYPH = node_id("glyph")
local PENALTY = node_id("penalty")
local nobreak = new_node(PENALTY)
nobreak.penalty = 10000
+local nbspace = new_node(GLYPH)
local insert_node_before = node.insert_before
local insert_node_after = node.insert_after
local remove_node = node.remove
@@ -1829,7 +1873,15 @@ local has_attribute = node.has_attribute
% adding code with add\_to\_callback actually deletes the legacy
% kerning as pointed out by Marcel Krüger on SE.}
%
+% \changes{v3.5h}{2020/03/28}{Added glues and penalties should inherit
+% attributes from the related punctuation character; this is
+% mandatory for Lua-UL to underline and highlight them.
+% Thanks to Marcel Krüger for providing the fix.}
+%
+% \changes{v3.5h}{2020/04/10}{Code reorganised for better efficiency.}
+%
% \begin{macrocode}
+-- Main function (to be added to the kerning callback).
local function french_punctuation (head)
% \end{macrocode}
% Restore the built-in kerning for 8-bits fonts.
@@ -1838,29 +1890,32 @@ local function french_punctuation (head)
for item in node.traverse_id(GLYPH, head) do
local lang = item.lang
local char = item.char
- local fid = item.font
- local FRspacing = has_attribute(item, FBspacing)
- FRspacing = FRspacing and FRspacing > 0
- local FRucsNBSP = has_attribute(item, FBucsNBSP)
- FRucsNBSP = FRucsNBSP and FRucsNBSP > 0
- local FRdialect = has_attribute(item, FBdialect)
- FRdialect = FRdialect and FRdialect > 0
- local SIG = has_attribute(item, addGUILspace)
- SIG = SIG and SIG >0
- if lang ~= FR_fr and lang ~= FR_ca then
- FRspacing = nil
- end
- local nbspace = new_node("glyph")
- if FRspacing and FB_punct_left[char] and fid > 0 then
- local prev = item.prev
- local prev_id, prev_subtype, prev_char
- if prev then
- prev_id = prev.id
- prev_subtype = prev.subtype
- if prev_id == GLYPH then
- prev_char = prev.char
- end
- end
+% \end{macrocode}
+% Skip glyphs not concerned by French kernings.
+% \begin{macrocode}
+ if (lang == FR_fr or lang == FR_ca) and
+ (FB_punct_left[char] or FB_punct_right[char]) then
+ local fid = item.font
+ local attr = item.attr
+ local FRspacing = has_attribute(item, FBspacing)
+ FRspacing = FRspacing and FRspacing > 0
+ local FRucsNBSP = has_attribute(item, FBucsNBSP)
+ FRucsNBSP = FRucsNBSP and FRucsNBSP > 0
+ local FRdialect = has_attribute(item, FBdialect)
+ FRdialect = FRdialect and FRdialect > 0
+ local SIG = has_attribute(item, addGUILspace)
+ SIG = SIG and SIG >0
+ if FRspacing and fid > 0 then
+ if FB_punct_left[char] then
+ local prev = item.prev
+ local prev_id, prev_subtype, prev_char
+ if prev then
+ prev_id = prev.id
+ prev_subtype = prev.subtype
+ if prev_id == GLYPH then
+ prev_char = prev.char
+ end
+ end
% \end{macrocode}
%
% \changes{v3.0c}{2014/04/18}{Null glues should not trigger space
@@ -1875,12 +1930,12 @@ local function french_punctuation (head)
% positive glues (actually glues > 1 sp, for tabular `l’
% columns) are to be replaced by a non-breaking space.
% \begin{macrocode}
- local is_glue = prev_id == GLUE
- local glue_wd
- if is_glue then
- glue_wd = prev.width
- end
- local realglue = is_glue and glue_wd > 1
+ local is_glue = prev_id == GLUE
+ local glue_wd
+ if is_glue then
+ glue_wd = prev.width
+ end
+ local realglue = is_glue and glue_wd > 1
% \end{macrocode}
%
% \changes{v3.3d}{2017/10/17}{In default mode, for `:’ only, check
@@ -1909,63 +1964,66 @@ local function french_punctuation (head)
% a Unicode character U+00A0 or U+202F is inserted instead of
% penalty and glue.
% \begin{macrocode}
- if FB_punct_thin[char] or FB_punct_thick[char] then
- local SBDP = has_attribute(item, addDPspace)
- local auto = SBDP and SBDP > 0
- if FB_punct_thick[char] and auto then
- local next = item.next
- local next_id
- if next then
- next_id = next.id
- end
- if next_id and next_id == GLYPH then
- auto = false
- end
- end
- if auto then
- if (prev_char and FB_punct_null[prev_char]) or
- (is_glue and glue_wd <= 1) or
- (prev_id == HLIST and prev_subtype == 3) or
- (prev_id == TEMP) then
- auto = false
- end
- end
- local fbglue
- local t
- if FB_punct_thick[char] then
- if FRdialect then
- t = FBsp.colon.gl.ac
- nbspace.char = FBsp.colon.ch.ac
- else
- t = FBsp.colon.gl.fr
- nbspace.char = FBsp.colon.ch.fr
- end
- else
- if FRdialect then
- t = FBsp.thin.gl.ac
- nbspace.char = FBsp.thin.ch.ac
- else
- t = FBsp.thin.gl.fr
- nbspace.char = FBsp.thin.ch.fr
- end
- end
- fbglue = new_glue_scaled(fid, t)
+ if FB_punct_thin[char] or FB_punct_thick[char] then
+ local SBDP = has_attribute(item, addDPspace)
+ local auto = SBDP and SBDP > 0
+ if FB_punct_thick[char] and auto then
+ local next = item.next
+ local next_id
+ if next then
+ next_id = next.id
+ end
+ if next_id and next_id == GLYPH then
+ auto = false
+ end
+ end
+ if auto then
+ if (prev_char and FB_punct_null[prev_char]) or
+ (is_glue and glue_wd <= 1) or
+ (prev_id == HLIST and prev_subtype == 3) or
+ (prev_id == TEMP) then
+ auto = false
+ end
+ end
+ local fbglue
+ local t
+ if FB_punct_thick[char] then
+ if FRdialect then
+ t = FBsp.colon.gl.ac
+ nbspace.char = FBsp.colon.ch.ac
+ else
+ t = FBsp.colon.gl.fr
+ nbspace.char = FBsp.colon.ch.fr
+ end
+ else
+ if FRdialect then
+ t = FBsp.thin.gl.ac
+ nbspace.char = FBsp.thin.ch.ac
+ else
+ t = FBsp.thin.gl.fr
+ nbspace.char = FBsp.thin.ch.fr
+ end
+ end
+ fbglue = new_glue_scaled(fid, t)
% \end{macrocode}
% In case |new_glue_scaled| fails (returns |nil|) the node list
% remains unchanged.
% \begin{macrocode}
- if (realglue or auto) and fbglue then
- if realglue then
- head = remove_node(head,prev,true)
- end
- if (FRucsNBSP) then
- nbspace.font = fid
- insert_node_before(head, item, copy_node(nbspace))
- else
- insert_node_before(head, item, copy_node(nobreak))
- insert_node_before(head, item, copy_node(fbglue))
- end
- end
+ if (realglue or auto) and fbglue then
+ if realglue then
+ head = remove_node(head,prev,true)
+ end
+ if (FRucsNBSP) then
+ nbspace.font = fid
+ nbspace.attr = attr
+ insert_node_before(head,item,copy_node(nbspace))
+ else
+ nobreak.attr = attr
+ fbglue.attr = attr
+ insert_node_before(head,item,copy_node(nobreak))
+ insert_node_before(head,item,copy_node(fbglue))
+ end
+ end
% \end{macrocode}
% Let’s consider `»’ now (the only remaining glyph of
% |FB_punct_left| class): we just have to remove any \emph{glue}
@@ -1987,40 +2045,45 @@ local function french_punctuation (head)
% `l’ and `c’ columns.}
%
% \begin{macrocode}
- elseif SIG then
- local addgl = (prev_char and not FB_guil_null[prev_char]) or
- (not prev_char and
- prev_id ~= TEMP and
- not (prev_id == HLIST and prev_subtype == 3)
- )
+ elseif SIG then
+ local addgl = (prev_char and
+ not FB_guil_null[prev_char])
+ or
+ (not prev_char and
+ prev_id ~= TEMP and
+ not (prev_id == HLIST and
+ prev_subtype == 3)
+ )
% \end{macrocode}
% Correction for tabular `c’ (glue 0 plus 1 fil) and `l’ (glue 1sp)
% columns:
% \begin{macrocode}
- if is_glue and glue_wd <= 1 then
- addgl = false
- end
- local t = FBsp.guill.gl.fr
- nbspace.char = FBsp.guill.ch.fr
- if FRdialect then
- t = FBsp.guill.gl.ac
- nbspace.char = FBsp.guill.ch.ac
- end
- local fbglue = new_glue_scaled(fid, t)
- if addgl and fbglue then
- if is_glue then
- head = remove_node(head,prev,true)
- end
- if (FRucsNBSP) then
- nbspace.font = fid
- insert_node_before(head, item, copy_node(nbspace))
- else
- insert_node_before(head, item, copy_node(nobreak))
- insert_node_before(head, item, copy_node(fbglue))
+ if is_glue and glue_wd <= 1 then
+ addgl = false
+ end
+ local t = FBsp.guill.gl.fr
+ nbspace.char = FBsp.guill.ch.fr
+ if FRdialect then
+ t = FBsp.guill.gl.ac
+ nbspace.char = FBsp.guill.ch.ac
+ end
+ local fbglue = new_glue_scaled(fid, t)
+ if addgl and fbglue then
+ if is_glue then
+ head = remove_node(head,prev,true)
+ end
+ if (FRucsNBSP) then
+ nbspace.font = fid
+ nbspace.attr = attr
+ insert_node_before(head,item,copy_node(nbspace))
+ else
+ nobreak.attr = attr
+ fbglue.attr = attr
+ insert_node_before(head,item,copy_node(nobreak))
+ insert_node_before(head,item,copy_node(fbglue))
+ end
+ end
end
- end
- end
- end
% \end{macrocode}
% Similarly, for `«’ (unique member of the |FB_punct_right| class):
% unless either a) the next glyph is member of |FB_guil_null|, or
@@ -2038,66 +2101,70 @@ local function french_punctuation (head)
% a null glue (i.e. springs).}
%
% \begin{macrocode}
- if FRspacing and FB_punct_right[char]
- and fid > 0 and SIG then
- local next = item.next
- local next_id, next_subtype, next_char, nextnext, kern_wd
- if next then
- next_id = next.id
- next_subtype = next.subtype
- if next_id == GLYPH then
- next_char = next.char
+ elseif SIG then
+ local next = item.next
+ local next_id, next_subtype, next_char, nextnext, kern_wd
+ if next then
+ next_id = next.id
+ next_subtype = next.subtype
+ if next_id == GLYPH then
+ next_char = next.char
% \end{macrocode}
% A |kern0| might hide a |glue|, so look ahead if |next| is a kern
% (this occurs with |« \texttt{a} »|):
% \begin{macrocode}
- elseif next_id == KERN then
- kern_wd = next.kern
- if kern_wd == 0 then
- nextnext = next.next
- if nextnext then
- next = nextnext
- next_id = nextnext.id
- next_subtype = nextnext.subtype
- if next_id == GLYPH then
- next_char = nextnext.char
+ elseif next_id == KERN then
+ kern_wd = next.kern
+ if kern_wd == 0 then
+ nextnext = next.next
+ if nextnext then
+ next = nextnext
+ next_id = nextnext.id
+ next_subtype = nextnext.subtype
+ if next_id == GLYPH then
+ next_char = nextnext.char
+ end
+ end
end
end
end
- end
- end
- local is_glue = next_id == GLUE
- if is_glue then
- glue_wd = next.width
- end
- local addgl = (next_char and not FB_guil_null[next_char]) or
- (next and not next_char)
+ local is_glue = next_id == GLUE
+ if is_glue then
+ glue_wd = next.width
+ end
+ local addgl = (next_char and not FB_guil_null[next_char])
+ or (next and not next_char)
% \end{macrocode}
% Correction for tabular `c’ columns. For `r’ columns, a final
% `«’ character needs to be coded as |\mbox{«}| for proper spacing
% (|\NoAutoSpacing| is another option).
% \begin{macrocode}
- if is_glue and glue_wd == 0 then
- addgl = false
- end
- local fid = item.font
- local t = FBsp.guill.gl.fr
- nbspace.char = FBsp.guill.ch.fr
- if FRdialect then
- t = FBsp.guill.gl.ac
- nbspace.char = FBsp.guill.ch.ac
- end
- local fbglue = new_glue_scaled(fid, t)
- if addgl and fbglue then
- if is_glue then
- head = remove_node(head,next,true)
- end
- if (FRucsNBSP) then
- nbspace.font = fid
- insert_node_after(head, item, copy_node(nbspace))
- else
- insert_node_after(head, item, copy_node(fbglue))
- insert_node_after(head, item, copy_node(nobreak))
+ if is_glue and glue_wd == 0 then
+ addgl = false
+ end
+ local fid = item.font
+ local t = FBsp.guill.gl.fr
+ nbspace.char = FBsp.guill.ch.fr
+ if FRdialect then
+ t = FBsp.guill.gl.ac
+ nbspace.char = FBsp.guill.ch.ac
+ end
+ local fbglue = new_glue_scaled(fid, t)
+ if addgl and fbglue then
+ if is_glue then
+ head = remove_node(head,next,true)
+ end
+ if (FRucsNBSP) then
+ nbspace.font = fid
+ nbspace.attr = attr
+ insert_node_after(head, item, copy_node(nbspace))
+ else
+ nobreak.attr = attr
+ fbglue.attr = attr
+ insert_node_after(head, item, copy_node(fbglue))
+ insert_node_after(head, item, copy_node(nobreak))
+ end
+ end
end
end
end
@@ -2132,9 +2199,10 @@ return french_punctuation
LuaTeX,\\ use \noexpand\NoAutoSpacing
*inside a group* instead.}%
\else
- \PackageWarning{french.ldf}{\protect\shorthandoff{;:!?} is
- helpless with LuaTeX,\MessageBreak use \protect\NoAutoSpacing
- \space *inside a group* instead;\MessageBreak reported}%
+ \PackageWarning{french.ldf}{\protect\shorthandoff{;:!?}
+ is helpless with LuaTeX,\MessageBreak
+ use \protect\NoAutoSpacing \space *inside a group*
+ instead;\MessageBreak reported}%
\fi}%
\def\shorthandon##1{}%
}
@@ -2215,9 +2283,9 @@ return french_punctuation
% \begin{macrocode}
\ifFB@xetex@punct
\ifLaTeXe
- \PackageInfo{french.ldf}{No need for active punctuation characters%
- \MessageBreak with this version of XeTeX!%
- \MessageBreak reported}
+ \PackageInfo{french.ldf}{No need for active punctuation
+ characters\MessageBreak with this
+ version of XeTeX!\MessageBreak reported}
\else
\fb@info{No need for active punctuation characters\\
with this version of XeTeX!}
@@ -2332,9 +2400,10 @@ return french_punctuation
XeTeX,\\ use \noexpand\NoAutoSpacing
*inside a group* instead.}%
\else
- \PackageWarning{french.ldf}{\protect\shorthandoff{;:!?} is
- helpless with XeTeX,\MessageBreak use \protect\NoAutoSpacing
- \space *inside a group* instead;\MessageBreak reported}%
+ \PackageWarning{french.ldf}{\protect\shorthandoff{;:!?}
+ is helpless with XeTeX,\MessageBreak
+ use \protect\NoAutoSpacing\space *inside a group*
+ instead;\MessageBreak reported}%
\fi}%
\def\shorthandon##1{}%
% \end{macrocode}
@@ -2354,7 +2423,7 @@ return french_punctuation
% Small glues such as ``glue 1sp’’ in tabular `l’ columns or ``glue
% 0 plus 1 fil’’ in tabular `c’ columns or \env{lstlisting}
% environment should not trigger any extra space; they will still do
-% when \fbo{AutoSpacePunctuation} is true: unfortunately
+% when \fbo{AutoSpacePunctuation} is true:
% |\XeTeXcharclass=\FB@nonchar| isn’t specific to glue tokens (this
% class includes box and math boundaries f.i.), so the |\else| part
% cannot be omitted.
@@ -2509,7 +2578,6 @@ return french_punctuation
\declare@shorthand{system}{!}{\string!}
\declare@shorthand{system}{?}{\string?}
\declare@shorthand{system}{;}{\string;}
-%}
% \end{macrocode}
% We specify that the French group of shorthands should be used when
% switching to French.
@@ -2552,14 +2620,15 @@ return french_punctuation
% also in LaTeX to define \cs{FDP@colonspace}: needed for
% tex4ht, pointed out by MPG.}
%
-% |\autospace@beforeFDP| and |\noautospace@beforeFDP| are internal
-% commands. |\autospace@beforeFDP| defines |\FDP@thinspace| and
-% |\FDP@colonspace| as non-breaking spaces and sets LuaTeX attribute
-% |\FB@addDPspace| to 1 (true), while |\noautospace@beforeFDP|
-% lets these spaces empty and sets flag |\FB@addDPspace|
-% to 0 (false). User commands |\AutoSpaceBeforeFDP| and
-% |\NoAutoSpaceBeforeFDP| do the same and take care of the flag
-% |\ifFBAutoSpacePunctuation| in \LaTeX{}.
+% {\sloppypar |\autospace@beforeFDP| and |\noautospace@beforeFDP| are
+% internal commands. |\autospace@beforeFDP| defines |\FDP@thinspace|
+% and |\FDP@colonspace| as non-breaking spaces and sets LuaTeX
+% attribute |\FB@addDPspace| to 1 (true), while
+% |\noautospace@beforeFDP| lets these spaces empty and sets flag
+% |\FB@addDPspace| to 0 (false). User commands |\AutoSpaceBeforeFDP|
+% and |\NoAutoSpaceBeforeFDP| do the same and take care of the flag
+% |\ifFBAutoSpacePunctuation| in \LaTeX{}.\par}
+%
% Set the default now for Plain (done later for LaTeX).
% \begin{macrocode}
\def\autospace@beforeFDP{%
@@ -2668,7 +2737,7 @@ return french_punctuation
% \begin{macro}{\textquoteddblleft}
% \begin{macro}{\textquoteddblright}
% pdfLaTeX users are supposed to use 8-bit output
-% encodings (T1, LY1,\dots) to typeset French, those who still
+% encodings (T1, LY1,…) to typeset French, those who still
% stick to OT1 should load \pkg{aeguill} or a similar package.
% In both cases the commands |\guillemotleft| and |\guillemotright|
% will print the French opening and closing quote characters from
@@ -2821,7 +2890,8 @@ return french_punctuation
% use \cs{babel@save} instead.}
%
% \begin{macrocode}
-\addto\extrasfrench{\babel@save\og \babel@save\fg \bbl@frenchguillemets}
+\addto\extrasfrench{\babel@save\og \babel@save\fg
+ \bbl@frenchguillemets}
% \end{macrocode}
%
% \changes{v3.1a}{2014/05/20}{New command \cs{frquote} for imbedded or
@@ -2831,7 +2901,7 @@ return french_punctuation
% Another way of entering French quotes relies on |\frquote{}|
% with supports up to two levels of quotes.
% Let’s define the default quote characters to be used for level one
-% or two of quotes\dots{}
+% or two of quotes…
% \begin{macrocode}
\newcommand*{\ogi}{\FB@og}
\newcommand*{\fgi}{\FB@fg}
@@ -3102,7 +3172,7 @@ return french_punctuation
%
% \changes{v2.3a}{2008/09/30}{\cs{lowercase} changed to
% \cs{MakeLowercase} as the former doesn’t work for non ASCII
-% characters in encodings like applemac, utf-8,\dots}
+% characters in encodings like applemac, utf-8,…}
%
% |\up| eases the typesetting of superscripts like
% `1\up{er}’. Up to version 2.0 of \frenchb{} |\up| was just a
@@ -3162,7 +3232,7 @@ return french_punctuation
% It works as follows: the content of |\f@family| (family name of
% the current font) is split by |\FB@split| into two pieces, the
% first three characters (`|fut|’ for Fourier, `|ppl|’ for Adobe’s
-% Palatino, \dots) stored in |\FB@firstthree| and the rest stored
+% Palatino, …) stored in |\FB@firstthree| and the rest stored
% in |\FB@suffix| which is expected to be `|x|’ or `|j|’ for expert
% fonts.
% \begin{macrocode}
@@ -3272,7 +3342,7 @@ return french_punctuation
% \begin{macro}{\primo}
% \begin{macro}{\fprimo)}
% \changes{v3.1b}{2014/06/23}{Removed \cs{lowercase} from definitions
-% of \cs{FrenchEnumerate}, \dots{} \cs{No} and co: \cs{up} already
+% of \cs{FrenchEnumerate}, … \cs{No} and co: \cs{up} already
% does the conversion.}
%
% And some more macros relying on |\up| for numbering,
@@ -3542,7 +3612,7 @@ return french_punctuation
% \frenchb{} v.~1.x.\ about the change:
% \begin{macrocode}
\newcommand*{\nombre}[1]{{#1}\fb@warning{*** \noexpand\nombre
- no longer formats numbers\string! ***}}
+ no longer formats numbers\string! ***}}
% \end{macrocode}
% \end{macro}
%
@@ -3644,10 +3714,10 @@ return french_punctuation
% \changes{v3.3a}{2017/04/30}{Commands \cs{frenchpartfirst},
% \cs{frenchpartsecond} and \cs{frenchpartnameord} added.}
%
-% Let’s give a chance to a class or a package read before \frenchb{}
-% to define |\FBfigtabshape| as |\relax|, otherwise |\FBfigtabshape|
-% will be defined as |\scshape| (can be changed with
-% \fbsetup{SmallCapsFigTabCaptions=false}).
+% |\figurename| and |\tablename| are printed in small caps in French,
+% unless either \fbo{SmallCapsFigTabCaptions} is set to \fbo{false}
+% or a class or package loaded before \frenchb{} defines
+% |\FBfigtabshape| as |\relax|.
% \begin{macrocode}
\providecommand*{\FBfigtabshape}{\scshape}
% \end{macrocode}
@@ -3701,8 +3771,8 @@ return french_punctuation
\SetString{\partsecond}{Deuxi\`eme}
\SetString{\partnameord}{partie}
\SetStringLoop{ordinal#1}{%
- \partfirst,\partsecond,Troisi\`eme,Quatri\`eme,%
- Cinqui\`eme,Sixi\`eme,Septi\`eme,Huiti\`eme,Neuvi\`eme,Dixi\`eme,%
+ \partfirst,\partsecond,Troisi\`eme,Quatri\`eme, Cinqui\`eme,%
+ Sixi\`eme,Septi\`eme,Huiti\`eme,Neuvi\`eme,Dixi\`eme,%
Onzi\`eme,Douzi\`eme,Treizi\`eme,Quatorzi\`eme,Quinzi\`eme,%
Seizi\`eme,Dix-septi\`eme,Dix-huiti\`eme,Dix-neuvi\`eme,%
Vingti\`eme}
@@ -3756,7 +3826,7 @@ return french_punctuation
% according to Frank Mittelbach), is saved in |\STD@makecaption|.
% `AtBeginDocument’ we compare it to its current definition (some
% classes like \cls{memoir}, koma-script classes, AMS classes,
-% ua-thesis.cls\dots change it).
+% ua-thesis.cls… change it).
% If they are identical, \frenchb{} just adds a hook called
% |\FBCaption@Separator| to |\@makecaption|; |\FBCaption@Separator|
% defaults to `:~’ as in the standard |\@makecaption| and will be
@@ -3936,7 +4006,7 @@ return french_punctuation
\ifnum\value{FBcaption@count}>0
% \end{macrocode}
% \file{caption3.sty} has been loaded \emph{before} babel, maybe by
-% the class\dots
+% the class…
% \begin{macrocode}
\FBWarning
{Figures' and tables' captions might look like\MessageBreak
@@ -3968,7 +4038,7 @@ return french_punctuation
}
% \end{macrocode}
%
-% \subsection{Dots\dots}
+% \subsection{Dots…}
% \label{ssec-dots}
%
% \begin{macro}{\FBtextellipsis}
@@ -4104,16 +4174,17 @@ return french_punctuation
% the main language. After this, \fbsetup{} eventually modifies the
% preset values of these flags.
%
-% Option processing can occur either in \fbsetup{}, but \emph{only
-% for options explicitly set} by \fbsetup{}, or `AtBeginDocument’;
-% any option affecting |\extrasfrench{}| \emph{must} be processed by
-% \fbsetup{}: when French is the main language, |\extrasfrench{}| is
-% executed by \babel{} when it switches the main language and this
-% occurs \emph{before} reading the stuff postponed by \frenchb{}
-% `AtBeginDocument’. Reexecuting |\extrasfrench{}| is an option
-% which was used up to v2.6h, it has been dropped in v3.0a because
-% of its side-effects (f.i.\ |\babel@save| and |\babel@savevariable|
-% did not work for French).
+% {\sloppypar Option processing can occur either in \fbsetup{}, but
+% \emph{only for options explicitly set} by \fbsetup{}, or
+% `AtBeginDocument’; any option affecting |\extrasfrench{}|
+% \emph{must} be processed by \fbsetup{}: when French is the main
+% language, |\extrasfrench{}| is executed by \babel{} when it
+% switches the main language and this occurs \emph{before} reading
+% the stuff postponed by \frenchb{} `AtBeginDocument’. Reexecuting
+% |\extrasfrench{}| is an option which was used up to v2.6h, it has
+% been dropped in v3.0a because of its side-effects (f.i.\
+% |\babel@save| and |\babel@savevariable| did not work for
+% French).\par}
%
% \begin{macro}{\frenchsetup}
% Let’s now define this command which reads and sets the options
@@ -4603,7 +4674,7 @@ return french_punctuation
% quotes), this is done by |\FB@@og| and |\FB@@fg|; thus correct
% non-breaking spaces will be added automatically to French quotes.
% The quote characters typed in depend on the input encoding,
-% it can be single-byte (latin1, latin9, applemac,\dots) or
+% it can be single-byte (latin1, latin9, applemac,…) or
% multi-bytes (utf-8, utf8x); the next command is meant for checking
% whether a character is single-byte (|\FB@second| is empty) or not.
% \begin{macrocode}
@@ -4679,7 +4750,7 @@ return french_punctuation
\DeclareInputText{\the\@tempcnta}{\FB@@og}%
\else
% \end{macrocode}
-% Package \pkg{inputenc} not loaded, no way\dots{}
+% Package \pkg{inputenc} not loaded, no way…
% \begin{macrocode}
\FBWarning{Option `og' requires package
inputenc;\MessageBreak reported}%
@@ -4936,7 +5007,7 @@ return french_punctuation
% \begin{macrocode}
\ifFBShowOptions
\GenericWarning{* }{%
- ***** List of possible options for babel-french ****\MessageBreak
+ *** List of possible options for babel-french ***\MessageBreak
[Default values between brackets when french is loaded *LAST*]%
\MessageBreak
ShowOptions [false]\MessageBreak
@@ -5079,9 +5150,9 @@ return french_punctuation
% \changes{v3.3c}{2017/09/06}{LaTeX 2017-04-15 defines TU encoding
% for Unicode engines, fontspec is no longer required.}
%
-% Finally, a warning is issued with pdfLaTeX when OT1 encoding
-% is in use at the |\begin{document}|; mind that |\encodingdefault|
-% is defined as `long’, the test would fail if |\FBOTone| was
+% Finally, with pdfLaTeX, when OT1 encoding is in use at the
+% |\begin{document}| a warning is issued; |\encodingdefault|
+% being defined as `long’, the test would fail if |\FBOTone| was
% defined with |\newcommand*|!
% \begin{macrocode}
\begingroup
@@ -5117,7 +5188,7 @@ return french_punctuation
% the French variant |\listFB| of |\list|. Note that switching
% to |\listFB| reduces vertical spacing in \emph{all} environments
% built on |\list|: |itemize|, |enumerate|, |description|, but also
-% |abstract|, |quotation|, |quote| and |verse|\dots{}
+% |abstract|, |quotation|, |quote| and |verse|…
%
% The amount of vertical space before and after a list is given by
% |\topsep| + |\parskip| (+ |\partopsep| if the list starts a new
@@ -5157,8 +5228,8 @@ return french_punctuation
% \begin{itemize}
% \item The `\textbullet’ is never used in French itemize-lists,
% an emdash `---’ or an endash `--’ is preferred for all
-% levels. The item label to be used in French is stored in
-% |\FrenchLabelItem}|, it defaults to `---’ and can be changed
+% levels. The item label to be used in French, stored in
+% |\FrenchLabelItem}|, defaults to `---’ and can be changed
% using \fbsetup{} (see section~\ref{ssec-keyval}).
% \item Vertical spacing between items, before and after
% the list, should be \emph{null} with \emph{no glue} added;
@@ -5239,7 +5310,8 @@ return french_punctuation
\advance\itemindent by \labelsep
\leftmargini\z@
\bbl@for\FB@dp {2, 3, 4, 5, 6}%
- {\csname leftmargin\romannumeral\FB@dp\endcsname=\labelindentFB}%
+ {\csname leftmargin\romannumeral\FB@dp\endcsname =
+ \labelindentFB}%
\else
% \end{macrocode}
% Default layout: labels hanging into the left margin.
@@ -5247,11 +5319,12 @@ return french_punctuation
\leftmarginFB=\labelwidthFB
\advance\leftmarginFB by \labelsep
\bbl@for\FB@dp {1, 2, 3, 4, 5, 6}%
- {\csname leftmargin\romannumeral\FB@dp\endcsname=\leftmarginFB}%
+ {\csname leftmargin\romannumeral\FB@dp\endcsname =
+ \leftmarginFB}%
\advance\leftmargini by \listindentFB
\fi
- \leftmargin=\csname leftmargin\ifnum\@listdepth=\@ne i\else
- ii\fi\endcsname
+ \leftmargin=\csname leftmargin%
+ \ifnum\@listdepth=\@ne i\else ii\fi\endcsname
}
% \end{macrocode}
% \end{macro}
@@ -5617,7 +5690,7 @@ return french_punctuation
\let\@makefntextORI\@makefntext
\let\@@makefnmarkORI\@@makefnmark
% \end{macrocode}
-% |\@makefntextFB| and |\@@makefnmarkFB| will be used when option
+% |\@makefntextFB| and |\@@makefnmarkFB| are used when option
% \fbo{FrenchFootnotes} is \fbo{true}.
% \begin{macrocode}
\deffootnote[\FBfnindent]{0pt}{\parindentFFN}%
@@ -5956,4 +6029,5 @@ return french_punctuation
%%% Local Variables:
%%% fill-column: 72
%%% coding: utf-8
+%%% TeX-engine: luatex
%%% End:
diff --git a/macros/latex/contrib/babel-contrib/french/frenchb.pdf b/macros/latex/contrib/babel-contrib/french/frenchb.pdf
index c1454ccc36..f6b1da437c 100644
--- a/macros/latex/contrib/babel-contrib/french/frenchb.pdf
+++ b/macros/latex/contrib/babel-contrib/french/frenchb.pdf
Binary files differ
diff --git a/macros/latex/contrib/factura/factura-ejemplo-prefactura.pdf b/macros/latex/contrib/factura/factura-ejemplo-prefactura.pdf
index 557ded831c..2486e58a52 100644
--- a/macros/latex/contrib/factura/factura-ejemplo-prefactura.pdf
+++ b/macros/latex/contrib/factura/factura-ejemplo-prefactura.pdf
Binary files differ
diff --git a/macros/latex/contrib/factura/factura.dtx b/macros/latex/contrib/factura/factura.dtx
index 64b75962b5..58776779e2 100644
--- a/macros/latex/contrib/factura/factura.dtx
+++ b/macros/latex/contrib/factura/factura.dtx
@@ -1,7 +1,7 @@
%\iffalse meta-comment
%
% factura.dtx
-% Copyright 2019 Emilio Augusto Lazo Zaia <emiliolazozaia@gmail.com>
+% Copyright 2020 Emilio Augusto Lazo Zaia <emiliolazozaia@gmail.com>
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either
@@ -40,7 +40,7 @@
\input docstrip.tex
\preamble
-Copyright 2019 Emilio Augusto Lazo Zaia <emiliolazozaia@gmail.com>
+Copyright 2020 Emilio Augusto Lazo Zaia <emiliolazozaia@gmail.com>
This work may be distributed and/or modified under the
conditions of the LaTeX Project Public License, either
@@ -173,7 +173,7 @@ factura-ejemplo-reporte3.tex and factura-beispiel-rechnung.tex.
%<class>\ProvidesClass{factura}
%<def>\ProvidesFile{factura.def}
%<*class|def>
-[2019/08/16 v3.70
+[2020/04/18 v3.73
%<class>Clase para elaborar facturas legales
%<class>en la Repu'blica Bolivariana de Venezuela.
%<def>Archivo de valores iniciales y condiciones de borde para factura.cls
@@ -390,6 +390,7 @@ factura-ejemplo-reporte3.tex and factura-beispiel-rechnung.tex.
\author{Emilio Augusto Lazo Zaia\\ \texttt{<emiliolazozaia at gmail.com>}}
\GetFileInfo{\jobname.dtx}
+\DoNotIndex{}
\begin{document}
\maketitle
@@ -441,20 +442,25 @@ factura-ejemplo-reporte3.tex and factura-beispiel-rechnung.tex.
% v3.57 -> Esta será la última versión que sacamos solamente para corregir fechas de la Reconversión Monetaria; si el Gobierno Nacional cambia las fechas nuevamente, el usuario tendrá que hacer uso de la interfaz del paquete |datetime2| para ajustar el funcionamiento de esta clase a los nuevos plazos; para esto aclaramos que el identificador para la entrada de la Reconversión Monetaria se llama {\slshape FechaBsS}\footnote{recordemos que antes de esta fecha, los montos se expresan en Bolívares Fuertes y la nota automática aclara cuánto es en Bolívares Soberanos, y después de esta fecha es al contrario.} y el identificador para el momento (que aún no se ha dicho) desde el cual la moneda vuelve a llamarse Bolívar es {\slshape FechaBs}. Para ajustarlos se usa el comando \cs{DTMsavedate} y las fechas se dan en formato {\slshape yyyy-mm-dd}. Damos como ejemplo lo que actualmente está programado en esta clase:
- Desde el 15/02/2019 la moneda nacional se vuelve a llamar “Bolívar” abreviado “Bs” sin “soberano”; esto según Gaceta Oficial 41.587. Quitamos toda referencia a la Reconversión Monetaria.
+ % v3.70 -> Desde el 15/02/2019 la moneda nacional se vuelve a llamar “Bolívar” abreviado “Bs” sin “soberano”; esto según Gaceta Oficial 41.587. Quitamos toda referencia a la Reconversión Monetaria.
- También en esta versión establecemos la tasa de IVA general como 16\% tal como ya está vigente desde agosto del año 2018.
+ % v3.70 -> También en esta versión establecemos la tasa de IVA general como 16\% tal como ya está vigente desde agosto del año 2018.
- Ya no está activa la opción |electro| para descuentos en pagos por medios electrónicos porque ya no está vigente el decreto.
+ % v3.70 -> Ya no está activa la opción |electro| para descuentos en pagos por medios electrónicos porque ya no está vigente el decreto.
- Ahora en los totales aparece el signo monetario siempre a menos de que se pida en la clase la opción |sinmonedatotales|.
+ % v3.70 -> Ahora en los totales aparece el signo monetario siempre a menos de que se pida en la clase la opción |sinmonedatotales|.
- En esta misma versión se agregó un “gancho” llamado \cs{BeforeEndPreamble} para usos muy específicos.
+ % v3.70 -> En esta misma versión se agregó un “gancho” llamado \cs{BeforeEndPreamble} para usos muy específicos.
- Las “condiciones del documento” ya no son “condiciones” sino que ahora lo llamamos “nota final” porque es otra nota más aparte de las demás, y va al final del documento; no tiene sentido hablar de condiciones del documento para referirse a ese espacio. Con eso se renombran los 5 comandos, pero dejando por compatibilidad unos alias a los viejos; los nuevos son: \cs{NotaFinal}, \cs{PosNotaFinal}, \cs{SepNotaFinal}, \cs{LineaNotaFinal}, \cs{LetraNotaFinal}.
+ % v3.70 -> Las “condiciones del documento” ya no son “condiciones” sino que ahora lo llamamos “nota final” porque es otra nota más aparte de las demás, y va al final del documento; no tiene sentido hablar de condiciones del documento para referirse a ese espacio. Con eso se renombran los 5 comandos, pero dejando por compatibilidad unos alias a los viejos; los nuevos son: \cs{NotaFinal}, \cs{PosNotaFinal}, \cs{SepNotaFinal}, \cs{LineaNotaFinal}, \cs{LetraNotaFinal}.
- La macro \cs{PosNotaFinal} se comporta ahora como \cs{PosFirmas}, es decir, acepta un valor inicial en “x” y uno final.
+ % v3.70 -> La macro \cs{PosNotaFinal} se comporta ahora como \cs{PosFirmas}, es decir, acepta un valor inicial en “x” y uno final.
+ \begin{itemize}
+ \item La tasa de IVA adicional se ajustó a su valor actualizado (31\%).
+ \item Los comandos \cs{NotaPrevia}. \cs{NotaInterna}. \cs{NotaExterna} y \cs{NotaFinal} aceptan uno o dos asteriscos. Sin asteriscos, una segunda invocación del comando para la nota hace que se sustituya la primera nota especificada; con un asterisco, agrega al final de la nota ya existente, y con dos asteriscos, agrega lo nuevo al principio de la nota ya existente.
+ \end{itemize}
+
\section*{Agradecimientos}
Por pruebas y sugerencias que dieron lugar a mejoras agradezco a Ritguey%
@@ -599,7 +605,6 @@ factura-ejemplo-reporte3.tex and factura-beispiel-rechnung.tex.
% \changes{v3.40}{2017/12/11}{Nueva opción \texttt{iva} para agregar una columna adicional que muestra el IVA de cada item.}
% \changes{v3.40}{2017/12/11}{Modificada la macro interna \cs{@DescripcionAuxCmd} por problemas que daba en algunos casos.}
% \changes{v3.40}{2017/12/11}{Se renombró la opción \texttt{exparriba} por \texttt{expandecuadro}.}
-% \DoNotIndex{}
% \changes{v3.40}{2017/12/11}{Modificada la definición de \cs{ItemX} para que maneje la descripción especial para el archivo \texttt{csv}.}
% \changes{v3.40}{2017/12/11}{Nuevo comando \cs{ivaref} para referenciar el IVA del ítem etiquetado.}
% \changes{v3.40}{2017/12/11}{Se cambiaron unos \cs{AtEndDocument} por \cs{AtBeginShipoutNext}. Se hizo necesario siempre el paquete \texttt{eso-pic}.}
@@ -637,6 +642,11 @@ factura-ejemplo-reporte3.tex and factura-beispiel-rechnung.tex.
% \changes{v3.70}{2019/08/17}{Corregido el posicionamiento en “x” de la nota final.}
% \changes{v3.70}{2019/08/17}{Ahora la macro \cs{PosNotaFinal} acepta un intervalo en “x” para posicionar la nota final, es decir que funciona como \cs{PosFirmas}.}
% \changes{v3.70}{2019/08/17}{Mejorada la macro interna que escribe la fecha en la metadata; ya no usa \texttt{xstring} sino \LaTeX3. Quitado código espúreo de \texttt{xstring} en las macros que permiten fijar las posiciones de los elementos fijos.}
+% \changes{v3.73}{2020/04/18}{Cuando se definen dos entornos de factura ya no advierte sino que ignora el segundo.}
+% \changes{v3.73}{2020/04/18}{Asteriscos para las notas previa, interna, externa y final. Sin asteriscos, sustituye la nota, con un asterisco agrega la nueva nota al final de la nota previamente definida y con dos asteriscos agrega la nueva nota al principio de la nota previamente definida.}
+% \changes{v3.73}{2020/04/18}{Corrección en la metadata luego de que el paquete \texttt{oberdiek} fuera actualizado.}
+% \changes{v3.73}{2020/04/18}{Corregido error en referencia a macro interna \cs{@TamFinalEncabezadoado} introducido en versión v3.11.}
+% \changes{v3.73}{2020/04/18}{Actualizada la tasa de IVA adicional correcta en 31\%.}
%
%
% \tableofcontents
@@ -652,7 +662,7 @@ factura-ejemplo-reporte3.tex and factura-beispiel-rechnung.tex.
%
% \section{Introducción}
%
-% La clase de \LaTeX{} |factura| está diseñada para su uso en la República Bolivariana de Venezuela, conforme a los requerimientos fijados por las providencias del {\slshape SENIAT} 0591, 0257, 0071 y 0048, válidas éstas para agosto del año 2019.
+% La clase de \LaTeX{} |factura| está diseñada para su uso en la República Bolivariana de Venezuela, conforme a los requerimientos fijados por las providencias del {\slshape SENIAT} 0591, 0257, 0071 y 0048, válidas éstas para abril del año 2020.
%
% Con |factura| se pueden elaborar facturas en formas libres fiscales\footnote{En cuanto a las formas libres, cada hoja del talonario de facturas legales tiene un encabezado con los datos del emisor de la factura y un pie de página con la información de identificación de la imprenta, en tamaño de hoja carta entera; esto es lo que se llama “forma libre”.}, cotizaciones y reportes de servicios, dejando todos los cálculos a \TeX{}.
%
@@ -1239,7 +1249,7 @@ factura-ejemplo-reporte3.tex and factura-beispiel-rechnung.tex.
%
% Con |\FormatoFecha|, al tener todos sus argumentos opcionales, el usuario podrá especificar solamente el primero (que va entre corchetes), solamente el segundo (entre llaves), pero para especificar el tercero que también está entre llaves debe especificar el segundo, ya que ambos son opcionales pero se dan igualmente entre llaves. Naturalmente podrá especificar dos de estos argumentos o los tres.
%
-% Por ejemplo: |\FormatoFecha[mm-dd-aaaa]{mmddyyyy}{.}| serviría para que el usuario pueda dar la fecha así: |\Fecha{12-31-2019}| y que salga igualmente según el formato |mm-dd-aaaa| pero separado por puntos. También puede usarse |\FormatoFecha[aaaa-mm-dd]| para dar luego la fecha de esta forma: |\Fecha{2019-12-31}| pero esta saldrá igual impresa en la factura así: “|31-12-2019|”, ya que no cambiamos el formato de salida. También puede hacer |\FormatoFecha{mmddyyyy}{/}| y dar la fecha por ejemplo así: |\Fecha*{2019}{12}{31}| y saldrá impresa así: “|12/31/2019|”.
+% Por ejemplo: |\FormatoFecha[mm-dd-aaaa]{mmddyyyy}{.}| serviría para que el usuario pueda dar la fecha así: |\Fecha{12-31-2020}| y que salga igualmente según el formato |mm-dd-aaaa| pero separado por puntos. También puede usarse |\FormatoFecha[aaaa-mm-dd]| para dar luego la fecha de esta forma: |\Fecha{2020-12-31}| pero esta saldrá igual impresa en la factura así: “|31-12-2020|”, ya que no cambiamos el formato de salida. También puede hacer |\FormatoFecha{mmddyyyy}{/}| y dar la fecha por ejemplo así: |\Fecha*{2020}{12}{31}| y saldrá impresa así: “|12/31/2020|”.
%
% Los valores predeterminados cambiables con |\FormatoFecha| están definidos, como siempre, en el archivo |factura.def|.
%
@@ -1290,22 +1300,46 @@ factura-ejemplo-reporte3.tex and factura-beispiel-rechnung.tex.
%
% Pone un resumen que va en una caja a la derecha de los datos del cliente, separado de esta en una distancia ajustable con el comando |\SepEncabezado|, que se describirá más adelante. Este resumen es opcional.
%
-% \DescribeMacro{\NotaPrevia}{\macrooptcolor|\NotaPrevia|\marg{texto}}
+% \DescribeMacro{\NotaPrevia}
+% \DescribeMacro{\NotaPrevia*}
+% \DescribeMacro{\NotaPrevia**}
+% {\macrooptcolor|\NotaPrevia|\marg{texto}}\\
+% {\macrooptcolor|\NotaPrevia*|\marg{texto}}\\
+% {\macrooptcolor|\NotaPrevia**|\marg{texto}}
%
% La nota previa es una nota que puede ponerse antes del cuadro de la factura. Sin especificarla no sale nota alguna. Dicha nota va en un recuadro \tikz cuyo aspecto puede cambiarse, como ya se mencionó en la sección \ref{subsec:espacioslineas} donde se explican las líneas o contornos.
%
-% \DescribeMacro{\NotaInterna}{\macrooptcolor|\NotaInterna|\marg{texto}}
+% \DescribeMacro{\NotaInterna}
+% \DescribeMacro{\NotaInterna*}
+% \DescribeMacro{\NotaInterna**}
+% {\macrooptcolor|\NotaInterna|\marg{texto}}\\
+% {\macrooptcolor|\NotaInterna*|\marg{texto}}\\
+% {\macrooptcolor|\NotaInterna**|\marg{texto}}
%
% La nota interna es una coletilla que aparece dentro del cuadro de la factura, por eso la llamamos interna (es interna al cuadro), por ejemplo si aplicamos un descuento podemos decir allí cerca de los totales a qué corresponde tal descuento, o para hacer alguna aclaratoria sobre lo que precede inmediatamente como algún ítem de la factura.
%
-% \DescribeMacro{\NotaExterna}{\macrooptcolor|\NotaExterna|\marg{texto}}
+% \DescribeMacro{\NotaExterna}
+% \DescribeMacro{\NotaExterna*}
+% \DescribeMacro{\NotaExterna**}
+% {\macrooptcolor|\NotaExterna|\marg{texto}}\\
+% {\macrooptcolor|\NotaExterna*|\marg{texto}}\\
+% {\macrooptcolor|\NotaExterna**|\marg{texto}}
%
% La nota externa es otro texto opcional que el usuario puede introducir y saldrá al terminar el cuadro de la factura, antes de la opcional descripción larga (comando |\Descripcion|). {\itshape La nota externa no tiene formato \tikz.}
%
-% \DescribeMacro{\NotaFinal}{\macrooptcolor|\NotaFinal|\marg{texto}}
+% \DescribeMacro{\NotaFinal}
+% \DescribeMacro{\NotaFinal*}
+% \DescribeMacro{\NotaFinal**}
+% {\macrooptcolor|\NotaFinal|\marg{texto}}\\
+% {\macrooptcolor|\NotaFinal*|\marg{texto}}\\
+% {\macrooptcolor|\NotaFinal**|\marg{texto}}
%
% Con este comando se establece el texto para la nota final\footnote{Antiguas condiciones de la factura, por ejemplo, para las condiciones de pago si se trata de una factura, o para las condiciones de una cotización.}. Es opcional; si no se define no sale texto alguno. También se puede destinar este espacio para un diseño (que haría el usuario) en el que se agreguen también algunas casillas para especificar la forma de pago.
%
+% Las cuatro notas diferentes (previa, interna, externa y final) aceptan dos asteriscos opcionales. Sin asteriscos, cualquier invocación al comando elimina la invocación previa de ese mismo comando, es decir, sustituye la nota, sólo tiene efecto la última vez que se ejecutó ese comando. Si se especifica un asterisco, el texto para esa nota queda al final del texto para esa misma nota en la invocación anterior. Si se especifican dos asteriscos, agrega el texto al principio del texto previamente especificado para esa nota.
+%
+% Por ejemplo, escribir \cs{NotaPrevia\{1234\}}\cs{NotaPrevia\{5678\}} hace que el resultante sea como escribir solamente \cs{NotaPrevia\{5678\}}. Por otra parte, hacer \cs{NotaPrevia\{1234\}}\cs{NotaPrevia*\{5678\}} resulta en que la nota previa quede como si se utilizara \cs{NotaPrevia\{12345678\}}. Finalmente, hacer \cs{NotaPrevia\{1234\}}\cs{NotaPrevia**\{5678\}} es lo mismo que hacer \cs{NotaPrevia\{56781234\}}.
+%
%
% \subsection{Estableciendo los parámetros relativos al reporte}
%
@@ -1890,7 +1924,6 @@ factura-ejemplo-reporte3.tex and factura-beispiel-rechnung.tex.
% |\cantref| & Muestra la cantidad del ítem referenciado. \\
% |\CI| & Cédula de identidad del cliente. \\
% |\Cliente| & Carga un archivo |.def| o |.tex| con personalizaciones. \\
-% |\NotaFinal| & Establece la nota final. \\
% |\Conforme| & Nombre de quien recibe la factura, para el espacio de la firma. \\
% |\Contacto| & Persona de contacto. \\
% |\Credito| & Establece la cantidad de días para el crédito de la factura. \\
@@ -1966,9 +1999,14 @@ factura-ejemplo-reporte3.tex and factura-beispiel-rechnung.tex.
% \rmfamily \bfseries Comando & \bfseries Significado \\ \hline
% |\Moneda| & Cambia el signo monetario a mostrar. \\
% |\Nombre| & Establece el nombre del cliente. \\
-% |\NotaInterna| & Escribe una nota interna al cuadro de la factura. \\
% |\NotaExterna| & Escribe una nota extra externa al cuadro de la factura. \\
+% |\NotaExterna* **| & Con |*| agrega la nota externa después de la anterior; con |**|, al principio. \\
+% |\NotaFinal| & Establece la nota final. \\
+% |\NotaFinal* **| & Con |*| agrega la nota final después de la anterior; con |**|, al principio. \\
+% |\NotaInterna| & Escribe una nota interna al cuadro de la factura. \\
+% |\NotaInterna* **| & Con |*| agrega la nota interna después de la anterior; con |**|, al principio. \\
% |\NotaPrevia| & Escribe una nota antes del cuadro de la factura. \\
+% |\NotaPrevia* **| & Con |*| agrega la nota previa después de la anterior; con |**|, al principio. \\
% |\Num| & Número de la factura. \\
% |\NumControl| & Número de control de la factura. \\
% |\NumSerieControl| & Número de serie de control de la factura. \\
@@ -2385,11 +2423,12 @@ factura-ejemplo-reporte3.tex and factura-beispiel-rechnung.tex.
\ifxetex
\special{pdf: docinfo << /Subject (\@factura@ver) >>}
\else
- \ifluatex
- \pdfextension info{/Subject (\@factura@ver)}
- \else
- \pdfinfo{/Subject (\@factura@ver)}
- \fi
+ \AtEndDocument{
+ \ifluatex
+ \pdfextension info{/Subject (\@factura@ver)}
+ \else
+ \pdfinfo{/Subject (\@factura@ver)}
+ \fi}
\fi
\def\@EstableceOpciones{%
@@ -2687,7 +2726,7 @@ factura-ejemplo-reporte3.tex and factura-beispiel-rechnung.tex.
%<def> % \def\@AlicuotaGDescAlto{0.05}
%<def> % \def\@AlicuotaGDescLimite{2000000}
%<def>\def\@AlicuotaR{0.08}
-%<def>\def\@AlicuotaA{0.27}
+%<def>\def\@AlicuotaA{0.31}
%<def>
%</class|def>
%<*def>
@@ -2879,23 +2918,33 @@ factura-ejemplo-reporte3.tex and factura-beispiel-rechnung.tex.
%% Información de página: cabeceras de páginas o pies de página.
\def\InfoPagina#1{\gdef\@InfoPagina{#1}}
-%% Texto para la nota final.
-\NewDocumentCommand{\NotaFinal}{+m}{\gdef\@NotaFinal{#1}}
-\NewDocumentCommand{\Condiciones}{+m}{\gdef\@NotaFinal{#1}\@ClassWarningCondiciones}
-
-%% Advertencia para la migración de cualquier comando para condiciones a nota final.
+%% Advertencia para la migración de cualquier comando de condiciones a nota final.
\def\@ClassWarningCondiciones{\CLASSWARNING{Ya no son condiciones sino nota final, debe hacerse la migración a los nuevos comandos}}
%% Resumen opcional que va a la derecha de los datos del cliente.
\NewDocumentCommand{\Resumen}{+m}{\gdef\@Resumen{#1}}
-\NewDocumentCommand{\NotaPrevia}{+m}{\gdef\@NotaPrevia{#1}}
+%% Nota previa (al cuadro), nota interna (del cuadro), nota externa (luego del cuadro) y nota final (luego de la descripción).
+\NewDocumentCommand{\NotaPrevia}{s s +m}{%
+ \IfBooleanTF{#2}
+ {\gpreto{\@NotaPrevia}{#3}}
+ {\IfBooleanTF{#1}{\gappto{\@NotaPrevia}{#3}}{\gdef\@NotaPrevia{#3}}}}
-%% Nota interna al cuadro de la factura y nota externa a él (que sale antes de \Descripcion).
-\NewDocumentCommand{\NotaInterna}{+m}{%
- \ifdefvoid{\@NotaInterna}{}{\CLASSWARNING{Se sobreescribio' la nota interna previamente definida}}%
- \gdef\@NotaInterna{#1}}
-\NewDocumentCommand{\NotaExterna}{+m}{\gdef\@NotaExterna{#1}}
+\NewDocumentCommand{\NotaInterna}{s s +m}{%
+ \IfBooleanTF{#2}
+ {\gpreto{\@NotaInterna}{#3}}
+ {\IfBooleanTF{#1}{\gappto{\@NotaInterna}{#3}}{\gdef\@NotaInterna{#3}}}}
+
+\NewDocumentCommand{\NotaExterna}{s s +m}{%
+ \IfBooleanTF{#2}
+ {\gpreto{\@NotaExterna}{#3}}
+ {\IfBooleanTF{#1}{\gappto{\@NotaExterna}{#3}}{\gdef\@NotaExterna{#3}}}}
+
+\NewDocumentCommand{\NotaFinal}{s s +m}{%
+ \IfBooleanTF{#2}
+ {\gpreto{\@NotaFinal}{#3}}
+ {\IfBooleanTF{#1}{\gappto{\@NotaFinal}{#3}}{\gdef\@NotaFinal{#3}}}}
+\NewDocumentCommand{\Condiciones}{+m}{\gdef\@NotaFinal{#1}\@ClassWarningCondiciones}
\AtBeginDocument{%
% Si no se especificó fecha, tomamos la de hoy. Además, advertimos cuando el documento se está compilando en una fecha distinta de la fecha establecida en el encabezado.
@@ -3371,8 +3420,11 @@ factura-ejemplo-reporte3.tex and factura-beispiel-rechnung.tex.
%% Gracias a Heiko Oberdiek y a David Carlisle (Thanks to Heiko Oberdiek and David Carlisle).
%% http://tex.stackexchange.com/questions/108565/know-the-cell-width-with-tabular-or-include-a-paragraph-box-without-specifying
\NewEnviron{factura}{%
- \expandafter\@FacturaAuxCmd\expandafter{\BODY}%
- \ifnum\value{page}=1\else\CLASSERROR{La factura ocupa mas que una pagina}\fi}
+ \ifx\undefined\Total
+ \expandafter\@FacturaAuxCmd\expandafter{\BODY}%
+ \ifnum\value{page}=1\else\CLASSERROR{La factura ocupa mas que una pagina}\fi
+ \else
+ \CLASSERROR{Ya se uso' un entorno de factura, ignorando}\fi}
\NewEnviron{reverso}{%
\if@factura
@@ -3880,7 +3932,6 @@ factura-ejemplo-reporte3.tex and factura-beispiel-rechnung.tex.
\ifdim \ht\@CajaEspacioVacio=0pt \global\lineafalse \else \@ExpandeCuadrotrue \fi
\fi
- \ifx\undefined\Total\relax\else\CLASSERROR{Parece ya haberse usado un entorno de factura}\fi
%
% Comandos \David@SavePos, \David@XStart, \David@XEnd, \David@XPad, \David@XLeft y \David@XRight para poder manejar el salto de línea en las columnas adyacentes a la columna 'X' del tabularx (la descripción), cuando esta ocupa más que una línea.
% Gracias a David Carlisle (Thanks to David Carlisle).
@@ -4479,7 +4530,7 @@ factura-ejemplo-reporte3.tex and factura-beispiel-rechnung.tex.
\ifdim\@TamDatos>\@TamResumen
\setlength{\@TamFinalEncabezado}{\@TamDatos}%
\else
- \setlength{\@TamFinalEncabezadoado}{\@TamResumen}%
+ \setlength{\@TamFinalEncabezado}{\@TamResumen}%
\fi
\begin{tikzpicture}%
\expandafter\node\expandafter[\@DatosTIKZ]{%
@@ -4867,8 +4918,10 @@ factura-ejemplo-reporte3.tex and factura-beispiel-rechnung.tex.
%<factuno|factdos|factcinco|factocho>%% (\Resumen) Con resumen
%<facttres|factcuatro|factseis|factsiete|prefac|cotiza|repuno|repdos>%% Sin resumen
%<factcuatro|factnueve|factdiez>%% (\NotaPrevia) Con nota previa
+%<factnueve>%% (\NotaPrevia*) Con nota previa agregada al final de la nota previa anterior
%<factocho|factnueve>%% (\NotaInterna) Con nota interna
%<factnueve>%% (\NotaExterna) Con nota externa
+%<factnueve>%% (\NotaExterna**) Con nota externa agregada al principio de la nota externa anterior
%
%<factdos|facttres>%% Con artículos gravados con todos los IVA
%<factseis|factsiete|factocho>%% Escribimos un ítem cuya descripción ocupa más que una línea
@@ -5003,9 +5056,9 @@ factura-ejemplo-reporte3.tex and factura-beispiel-rechnung.tex.
%<factcinco>\FormatoFecha[yyyymmdd]{ddmmyyyy}{.}
%<facttres>\FormatoFecha{ddmmyyyy}{/}
%<factseis>\FormatoFecha{default}{/}
-%<!facttres&!factcuatro&!factcinco>\Fecha{06-11-2019}
-%<factcuatro>\Fecha*{2019}{06}{11}
-%<factcinco>\Fecha{20191106}
+%<!facttres&!factcuatro&!factcinco>\Fecha{02-07-2020}
+%<factcuatro>\Fecha*{2020}{07}{02}
+%<factcinco>\Fecha{20200702}
%<factsiete|factocho>
%<factsiete|factocho>\makeatletter
%<factocho> \renewcommand{\@@Fecha}{\slshape FECHA:}
@@ -5081,9 +5134,12 @@ factura-ejemplo-reporte3.tex and factura-beispiel-rechnung.tex.
%<beispiel>\NotaFinal{Die Zahlungsbedingungen}
%<factuno|factdos|factcinco|factocho>\Resumen{El resumen opcional}
%<beispiel>\Resumen{Zusammenfassung}
-%<factcuatro|factnueve|factdiez>\NotaPrevia{\hfill LA NOTA PREVIA}
+%<factcuatro|factdiez>\NotaPrevia{\hfill LA NOTA PREVIA}
+%<factnueve>\NotaPrevia{\hfill LA NOTA PREVIA}
+%<factnueve>\NotaPrevia*{- SEGUNDA PARTE DE LA NOTA PREVIA}
%<factocho|factnueve>\NotaInterna{LA NOTA INTERNA}
%<factnueve>\NotaExterna{LA NOTA EXTERNA}
+%<factnueve>\NotaExterna**{PRIMERA PARTE DE LA NOTA EXTERNA - }
\begin{document}
%<!reptres>
diff --git a/macros/latex/contrib/factura/factura.pdf b/macros/latex/contrib/factura/factura.pdf
index edffeb7031..fbaea53f48 100644
--- a/macros/latex/contrib/factura/factura.pdf
+++ b/macros/latex/contrib/factura/factura.pdf
Binary files differ