<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">\documentclass{article}
\usepackage[a4paper,twoside=true,hmargin=5cm,vmargin=4.3cm]{geometry} % Mise en page
\usepackage[T1]{fontenc} % Encodage pour fichier gÃ©nÃ©rÃ©
\usepackage[utf8]{inputenc} % Encodage pour fichier source
\usepackage[english,german, spanish, italian,french]{babel} % Typographie franÃ§aise
\usepackage{xspace} % Gestion des espaces
\usepackage[svgnames]{xcolor} % Couleur
\usepackage{marginnote} % Notes marginales
\usepackage{hyperref} % RÃ©fÃ©rences croisÃ©es en hypertexte
    \hypersetup{colorlinks=true, allcolors=Black} % ParamÃ©trage des hyperliens
\usepackage[french]{varioref} % Gestion des rÃ©fÃ©rences de page
\usepackage{graphicx} % IngÃ©ration d'images
\usepackage{xparse} % CrÃ©ation de commandes
\usepackage{soul} % texte soulignÃ©
\usepackage{lipsum} % Faux texte
\usepackage{conditext} % Gestion de texte conditionnel

\setlength{\parskip}{5pt} % Espace inter-paragraphes
\setminicondispace{french}

%//// Commandes internes ///////////////////////////////////////////
\NewDocumentCommand\initcap{m m}{% % Interface servant Ã&nbsp; mettre en majuscule la premiÃ¨re lettre d'un mot/groupe de mot sur valeur boolÃ©enne "true"
    \IfBooleanTF{#1}{\capitalize{#2}}{#2}}

\NewDocumentEnvironment{listplus}{m}% % Liste personnalisÃ©e
    {\begin{list}{}{\setlength{\topsep}{2mm}%
    \setlength{\partopsep}{0mm}\setlength{\itemsep}{0mm}%
    \setlength{\leftmargin}{2mm}#1}}{\end{list}}

%//// Mise en Ã©vidence de mots /////////////////////////////////////////////////

%//// Citation
\NewDocumentCommand\titcit{m}{\emph{#1}} % Titre de document citÃ©

%//// Noms propres
\NewDocumentCommand\techname{m}{\textsf{#1}} % Nom propre d'Ã©lÃ©ment technique
\NewDocumentCommand\app{m}{\techname{#1}} % Nom d'application
\NewDocumentCommand\class{m}{\techname{#1}} % Nom de classe
\NewDocumentCommand\xclass{s m}{% % Nom de classe avec terme introducteur
    \IfBooleanTF{#1}{\classml*}{\classml} \class{#2}}
\NewDocumentCommand\dist{m}{\techname{#1}} % Nom de distribution
\NewDocumentCommand\dial{m}{\techname{#1}} % Nom de fenÃªtre de dialogue
\NewDocumentCommand\file{m O{}}{\techname{#1}% % Nom de fichier
    \ifthenelse{\NOT\equal{#2}{}}{.#2}{}}
\NewDocumentCommand\menu{m}{\techname{#1}} % Nom de menu
\NewDocumentCommand\pack{m}{\techname{#1}} % Nom de paquet
\NewDocumentCommand\xpack{s m}{% % Nom de paquet avec terme introducteur
    \IfBooleanTF{#1}{\packml*}{\packml} \pack{#2}}
\newcommand\Latex{\LaTeX\xspace} % "LaTeX"
\NewDocumentCommand\site{s m o}{% % Nom de site
    \IfBooleanTF{#1}{%
        \ifthenelse{\NOT\equal{#2}{}}{\techname{#2}}{\techname{?}}}
        {\techname{\url{www.#2.#3}}}}
\NewDocumentCommand\sys{s m}{% % Nom de systÃ¨me
    \techname{#2}\IfBooleanT{#1}{\tmark}}
\NewDocumentCommand\tmark{}{\techname{\scriptsize{\texttrademark}}} % Symbole "trademark"

%//// Termes techniques
\NewDocumentCommand\termml{m m O{} O{} O{} O{} O{} O{} O{}}{% % Matrice servant Ã&nbsp; dÃ©finir des termes en version multilingue
    \miniconditext{\initcap{#1}{#2}}[\initcap{#1}{#3}][\initcap{#1}{#4}]%
        [\initcap{#1}{#5}][\initcap{#1}{#6}][\initcap{#1}{#7}][\initcap{#1}{#8}]%
        [\initcap{#1}{#9}]}
\NewDocumentCommand\argnml{s}{% % "Argument" en diffÃ©rentes langues
    \termml{#1}{argument}[argument]}
\NewDocumentCommand\classml{s}{% % "Classe" en diffÃ©rentes langues
    \termml{#1}{classe}[class]}
\NewDocumentCommand\cmdnml{s}{% % "Commande" en diffÃ©rentes langues
    \termml{#1}{commande}[command]}
\NewDocumentCommand\envnml{s}{% % "Environnement" en diffÃ©rentes langues
    \termml{#1}{environnement}[environment]}
\NewDocumentCommand\valoptml{s}{% % "Option" en diffÃ©rentes langues
    \termml{#1}{option}[option]}
\NewDocumentCommand\packml{s}{% % "Paquet" en diffÃ©rentes langues
    \termml{#1}{paquet}[package]}
\NewDocumentCommand\valml{s}{% % "Valeur" en diffÃ©rentes langues
    \termml{#1}{valeur}[value]}
\NewDocumentCommand\techterm{m}{\emph{#1}} % Terme technique
\NewDocumentCommand\conc{m}{\techterm{#1}} % Notion

%//// Ã‰lÃ©ments de code
\NewDocumentCommand\code{m}{\textnormal{\texttt{#1}}} % Ã‰lÃ©ment de code
\NewDocumentCommand\coden{m}{\txtvar{#1}} % Ã‰lÃ©ment de code : intitulÃ©
\NewDocumentEnvironment{codeblock}{}% % Bloc de code
    {\begin{list}{}{\setlength{\topsep}{2mm}%
    \setlength{\partopsep}{0mm}\setlength{\itemsep}{0mm}%
    \setlength{\leftmargin}{2mm}\ttfamily}}{\end{list}}
\NewDocumentEnvironment{subcodeblock}{}% % Sous-bloc de code
    {\begin{list}{}{\setlength{\topsep}{0mm}%
    \setlength{\partopsep}{0mm}\setlength{\itemsep}{0mm}%
    \setlength{\leftmargin}{2mm}\ttfamily}}{\end{list}}
\NewDocumentCommand\codestm{s m}{% % Instruction de code
        \IfBooleanTF{#1}%
            {\begin{codeblock}\item {#2}\end{codeblock}}%
            {\item \small#2}}
\NewDocumentCommand\endstm{}{\code{\%}} % Marque de fin dans une instruction
\NewDocumentCommand\cmdn{m}{\code{\textbackslash#1}} % Commande : nom pour mention
\NewDocumentCommand\xcmdn{s m}{% % Commande : nom pour mention avec terme introducteur
    \IfBooleanTF{#1}{\cmdnml*}{\cmdnml} \cmdn{#2}}
\NewDocumentCommand\cmdnx{m}{\code{#1}} % Commande : extrait de nom
\NewDocumentCommand\cmd{s m O{} O{}}{% % Commande : forme dÃ©clarative
    \IfBooleanTF{#1}%
        {\code{\textbackslash#2*}}%
        {\code{\textbackslash#2}}#3%
            \ifthenelse{\NOT\equal{#4}{}}
                {\textnormal{#4}}{}}
\NewDocumentCommand\cmdheader{m m}{% % Commande : signature
    \codestm*{\cmd{#1}[#2]}}
\NewDocumentCommand\envn{s m}{% % Environnement : nom pour mention
    \IfBooleanTF{#1}
        {\cmd{begin}[\argm{#2}]\\\cmd{end}[\argm{#2}]}
        {\code{#2}}}
\NewDocumentCommand\xenvn{s m}{% % Environnement : nom pour mention avec terme introducteur
    \IfBooleanTF{#1}{\envnml*}{\envnml} \envn{#2}}
\NewDocumentCommand\env{m O{} O{}}{% % Environnement : forme dÃ©clarative
    \begin{codeblock}
        \codestm{\cmd{begin}[\argm{#1}#2]}%
        \IfNoValueF{#3}%
            {\codestm{\code{#3}}}%
        \codestm{\cmd{end}[\argm{#1}]}%
    \end{codeblock}}
\NewDocumentCommand\envheader{m m}{% % Environnement : signature
    \codestm*{\env{#1}[#2][\txt]}}
\NewDocumentCommand\argmbegin{}{\{} % Borne de dÃ©but d'argument obligatoire
\NewDocumentCommand\argmend{}{\}} % Borne de fin d'argument obligatoire
\NewDocumentCommand\argm{m}{\code{\argmbegin{#1}\argmend}} % Argument obligatoire
\NewDocumentCommand\argmvoid{m}{\code{\argmbegin{\,}\argmend}} % Argument obligatoire vide
\NewDocumentCommand\argo{m}{\code{[{#1}]}}  % Argument facultatif
\NewDocumentCommand\argovoid{m}{\code{[{\,}]}}  % Argument facultatif vide
\NewDocumentCommand\argn{m}{\coden{#1}} % Argument : intitulÃ©
\NewDocumentCommand\xargn{s m}{% % Argument : intitulÃ© avec terme introducteur
    \IfBooleanTF{#1}{\argnml*}{\argnml} \argn{#2}}
\NewDocumentCommand\val{m}{\code{#1}} % Valeur d'argument
\NewDocumentCommand\xval{s m}{% % Valeur d'argument avec terme introducteur
    \IfBooleanTF{#1}{\valml*}{\valml} \val{#2}}
\NewDocumentCommand\valopt{m}{\code{#1}} % Valeur d'option
\NewDocumentCommand\xvalopt{s m}{% % Valeur d'option avec terme introducteur
    \IfBooleanTF{#1}{\valoptml*}{\valoptml} \val{#2}}
\NewDocumentEnvironment{valenum}{m}{% % Liste de valeurs
    \begin{listplus}{\rmfamily}
        \item #1
    \end{listplus}}{}
\NewDocumentCommand\comm{m}{\code{\endstm{}\quad#1}} % Commentaire de code
\NewDocumentCommand\txtvar{m}{$\langle$\textrm{\emph{#1}}$\rangle$} % Texte variable dans une expression de code
\NewDocumentCommand\txt{}{\coden{text}} % Texte : reprÃ©sentation dans une expression de code

%//// Texte spÃ©cialisÃ©
\NewDocumentEnvironment{exmptextnormal}{+b}{\textnormal #1}{}
\NewDocumentCommand\quo{m}{\og#1\fg} % Texte entre guillemets
\NewDocumentEnvironment{ltext}{}% % Texte littÃ©ral
    {\begin{list}{}{\setlength{\topsep}{2mm}%
    \setlength{\partopsep}{0mm}\setlength{\itemsep}{0mm}%
    \setlength{\leftmargin}{5mm}\sffamily\small}}{\end{list}}
\NewDocumentCommand\ltextline{m}{\item#1} % Texte littÃ©ral : ligne

%//// RÃ©fÃ©rences
\NewDocumentCommand\seeml{s}{% % "cf." en diffÃ©rentes langues
    \termml{#1}{cf.}[see]}
\NewDocumentCommand\seeref{s m}{% % RÃ©fÃ©rence prÃ©cÃ©dÃ©e de "cf."
    \IfBooleanTF{#1}
        {\vpageref{#2}}
        {\seeml{}~\vpageref{#2}}}
\NewDocumentCommand\titref{m}{% % RÃ©fÃ©rence avec titre
    \emph{\nameref{#1}}}

%//// Organisation du texte
\NewDocumentCommand\resumepar{}{\noindent} % Reprise de paragraphe aprÃ¨s incise
\NewDocumentCommand\tutostep{O{}}{% % Ã‰tape de tutoriel
    \subparagraph*{#1}}
\NewDocumentCommand\cmdbookmark{m}{% % Signet de commande
    \marginnote{\small{\cmdn{#1}}}}
\NewDocumentCommand\envbookmark{m}{% % Signet d'environnement
    \marginnote{\small{\envn*{#1}}}}
\NewDocumentCommand\note{m}{\paragraph*{#1.}} % Note

\begin{document}

\title{\xpack{conditext}}
\author{Jean-Louis Brabant}
\date{Version 1.5 du 1 juin 2020}
\maketitle

\begin{abstract}
Ce paquet permet de dÃ©finir et gÃ©rer du contenu conditionnel (multilingue ou autre) dans un document source \LaTeX, sous la forme de commandes d'emploi aisÃ©, et selon un paramÃ©trage minimal.
\end{abstract}

\setcounter{tocdepth}{2}
\tableofcontents

\part*{Introduction}
Ce paquet fournit quelques facilitÃ©s, sous la forme d'une petite dizaine de commandes, pour dÃ©finir et gÃ©rer du contenu conditionnel dans un document source \Latex.

Un \conc{contenu conditionnel}, au sens oÃ¹ ce paquet l'entend et le gÃ¨re, est un texte (y compris sous forme de formules mathÃ©matiques ou autres) et/ou un Ã©lÃ©ment graphique (diagramme, figure, image...) se prÃ©sentant sous des formes pouvant se substituer les unes aux autres -- appelÃ©es \conc{formes substituables} dans cette documentation -- qui, en fonction d'un test de condition, figurent ou non dans le document gÃ©nÃ©rÃ©.

L'une des gestions de contenu conditionnel les plus courantes est d'ordre multilingue, mais il peut aussi s'agir d'Ã©ditions \quo{versionnÃ©es}, de niveaux de services, de niveaux de confidentialitÃ© etc.

\note{Comment exploiter cette documentation}
Pour une toute premiÃ¨re utilisation du \xpack{conditext}, il est fortement conseillÃ©, aprÃ¨s un survol de cette documentation, de se reporter directement Ã&nbsp; la partie \titref{CtDoc_Tuto}. L'on y apprend Ã&nbsp; utiliser les diffÃ©rentes commandes disponibles, dans des contextes variÃ©s, avec des conseils de bonne pratique qui en permettront par la suite une exploitation optimisÃ©e.

Une fois en mesure d'utiliser les principales ressources fonctionnelles du prÃ©sent paquet, l'on pourra, avec profit et Ã&nbsp; loisir, consulter la partie \titref{CtDoc_Commandes} pour toutes prÃ©cisions utiles concernant les diffÃ©rentes commandes.

\part{Guide de l'utilisateur/rÃ©fÃ©rence des commandes}\label{CtDoc_Commandes}
\section{GÃ©nÃ©ralitÃ©s}
\subsection{Principe gÃ©nÃ©ral}
La philosophie du \xpack{conditext} repose sur les notions respectives de domaine de condition (\quo{condition field} en anglais), de propriÃ©tÃ© de condition (\quo{condition property}) et d'espace de condition (\quo{condition space}).

Avec \pack{conditext}, dans un document source, toute forme substituable est identifiÃ©e par un domaine de condition et une propriÃ©tÃ© de condition.

Le \conc{domaine de condition} est une thÃ©matique fonctionnelle qui permet de regrouper des formes substituables pour une mÃªme gestion conditionnelle.

La \conc{propriÃ©tÃ© de condition} est une caractÃ©risation fonctionnelle propre Ã&nbsp; chaque forme substituable d'une mÃªme domaine de condition.

L'\conc{espace de condition} permet de dÃ©signer la ou les formes substituables qui doivent figurer dans le document gÃ©nÃ©rÃ©. L'on dÃ©finit un espace de condition en spÃ©cifiant un domaine de condition et une propriÃ©tÃ© de condition propres Ã&nbsp; correspondre Ã&nbsp; une ou plusieurs formes substituables.

\subsection{DÃ©claration du paquet/option}
L'on dÃ©clare le \xpack{conditext} par l'instruction \cmdn{usepackage} (ou \cmdn{requirespackage} s'il s'agit d'intÃ©grer \pack{conditext} dans un paquet personnalisÃ©).

Pour information, \pack{conditext} fait usage des paquets \pack{xifthen} et \pack{xparse}.

\note{Option}
Dans sa dÃ©claration, \pack{conditext} accepte une option, sous la forme :

\codestm*{\cmd{usepackage}[\argo{defaultdisplayall}\argm{conditext}]}

Par dÃ©faut (dÃ©claration du paquet sans option), tant qu'aucun espace de condition n'est dÃ©fini, aucune forme substituable quelle qu'elle soit, ne figure dans le document gÃ©nÃ©rÃ©. L'option \val{defaultdisplayall} permet de modifier ce comportement : lorsqu'elle est spÃ©cifiÃ©e, si aucun espace de condition n'est dÃ©fini, toute forme substituable figure dans le document gÃ©nÃ©rÃ©. Pour retrouver le comportement d'origine, il suffit de retirer l'option dans la dÃ©claration du paquet.

\subsection{ModalitÃ©s d'utilisation des commandes}
Le \xpack{conditext} fournit une petite dizaine de commandes, dÃ©crites en dÃ©tail dans les pages qui suivent, et qui se rÃ©partissent en deux grandes catÃ©gories selon leur nature et leurs fonctionnalitÃ©s :

L'\xenvn{conditext} (\seeref{CtDoc_Commandes_CondiText}), ainsi que les commandes \cmdn{setcondispace} (\seeref{CtDoc_Commandes_SetCondiSpace}), \cmdn{newcondifield} (\seeref{CtDoc_Commandes_NewCondiField}), \cmdn{newcondiprop} (\seeref{CtDoc_Commandes_NewCondiProp}) et \cmdn{setimplicitcondifield} (\seeref{CtDoc_Commandes_SetImplicitCondiField}) sont destinÃ©s Ã&nbsp; une gestion conditionnelle Ã&nbsp; l'Ã©chelle multi-paragraphique (de plusieurs dizaines Ã&nbsp; plusieurs milliers de signes), appelÃ©e dÃ©sormais en tant que telle \conc{gestion de contenu conditionnel}.

Les commandes \cmdn{miniconditext} (\seeref{CtDoc_Commandes_MiniCondiText}), \cmdn{setminicondispace} (\seeref{CtDoc_Commandes_MiniCondiText}) et \cmdn{setminicondiprop-} (\seeref{CtDoc_Commandes_SetMiniCondiProp-}) sont destinÃ©es Ã&nbsp; une gestion conditionnelle Ã&nbsp; l'Ã©chelle paragraphique ou intra-paragraphique (mots, groupes de mots), appelÃ©e dÃ©sormais \conc{mini-gestion conditionnelle}.

\note{ComplÃ©mentaritÃ© des commandes}
Dans un document-source, une mini-gestion conditionnelle peut Ãªtre mise en oeuvre de maniÃ¨re indÃ©pendante, ou conjointement Ã&nbsp; une gestion conditionnelle ; d'une certaine maniÃ¨re, l'une et l'autre sont \emph{complÃ©mentaires}.

Dans le cas d'une gestion conditionnelle multilingue, l'\xenvn{conditext} et la \xcmdn{setcondispace} sont directement exploitables, sans nÃ©cessiter de prÃ©alable d'aucune sorte. Pour toute autre gestion de contenu conditionnel, avant d'utiliser ces commandes, il est nÃ©cessaire de procÃ©der aux crÃ©ations des domaines de condition et propriÃ©tÃ©s de condition nÃ©cessaires, au moyen des commandes \cmdn{newcondifield} et \cmdn{newcondiprop}.

\note{Emplacement des instructions}
De maniÃ¨re gÃ©nÃ©rale, les intructions \cmdn{setcondispace}, \cmdn{newcondifield}, \cmdn{newcondiprop}, \cmdn{setimplicitcondifield}, \cmdn{setminicondispace} et \cmdn{setminicondiprop-} devront Ãªtre placÃ©es dans le prÃ©ambule.

Toute instruction \envn{conditext} sera placÃ©e dans le corps mÃªme du document source.

Une instruction \cmdn{miniconditext} pourra, selon les cas, Ãªtre placÃ©e soit dans le prÃ©ambule, soit dans le corps du document source.

\section{Commandes relatives Ã&nbsp; la gestion de contenu conditionnel}
\subsection{Saisie des formes substituables}\label{CtDoc_Commandes_CondiText}
Tout contenu que l'on souhaite gÃ©rer comme forme substituable doit Ãªtre saisi dans un \xenvn{conditext}\envbookmark{conditext}. Cet environnement -- Ã©ponyme du prÃ©sent paquet -- s'utilise sous la forme suivante :

\envheader{conditext}{\argo{\argn{domaine de condition}}\argm{\argn{propriÃ©tÃ© de condition}}\argo{*}}

\subsubsection{Arguments et syntaxe}
Les arguments \argn{domaine de condition} et \argn{propriÃ©tÃ© de condition} sont Ã&nbsp; renseigner l'un et l'autre avec une valeur de type alphabÃ©tique, sans caractÃ¨res accentuÃ©s ou Ã&nbsp; diacritiques, et sans espaces.

Concernant l'argument~\val{*}, \seeref{CtDoc_Commandes_CondiText_Etoile}.

Il est indispensable que \argn{domaine de condition} et \argn{propriÃ©tÃ© de condition} aient Ã©tÃ© au prÃ©alable dÃ©clarÃ©s -- nous dirons dÃ©sormais \emph{crÃ©Ã©s} -- (commandes \cmdn{newcondifield} et \cmdn{newcondiprop}, cf. respectivement \seeref*{CtDoc_Commandes_NewCondiField} et \seeref*{CtDoc_Commandes_NewCondiProp}) ; dans le cas contraire, un message d'erreur sera dÃ©clenchÃ© lors de la compilation.

En outre, la propriÃ©tÃ© de condition spÃ©cifiÃ©e doit avoir Ã©tÃ© impÃ©rativement crÃ©Ã©e avec un domaine de rattachement (\seeref{CtDoc_Commandes_NewCondiProp}) identique Ã&nbsp; celui prÃ©cisÃ© en \xargn{domaine de condition} ; si tel n'est pas le cas, un message d'erreur sera sera dÃ©clenchÃ© lors de la compilation.

Si les arguments \argn{domaine de condition} ou \argn{propriÃ©tÃ© de condition} sont conjointement laissÃ©s vides (\argovoid{} et \argmvoid{}), un message d'erreur sera dÃ©clenchÃ© lors de la compilation.

Par dÃ©faut, dans un contexte de gestion de contenu conditionnel \emph{multilingue}, l'\xargn{propriÃ©tÃ© de condition} n'a pas besoin d'Ãªtre renseignÃ© (\seeref{CtDoc_Commandes_CondiText_Multilingue}).

\subsubsection{Utilisation}\label{CtDoc_Commandes_CondiText_Utilisation}
Un \xenvn{conditext} est, Ã&nbsp; l'instar de l'\xenvn{document}, d'amplitude large et peut contenir de plusieurs dizaines Ã&nbsp; plusieurs milliers de signes. Tous les aspects propres Ã&nbsp; l'organisation et Ã&nbsp; la composition d'un texte sous \Latex (divisions, paragraphes, listes etc.) y sont laissÃ©s Ã&nbsp; l'apprÃ©ciation de l'utilisateur.

Dans un document source, il y aura autant d'environnments \envn{conditext} que souhaitÃ©. Les propriÃ©tÃ©s de condition et/ou les domaines de condition spÃ©cifiÃ©s pourront ou non Ãªtre identiques, selon les besoins (plusieurs formes substituables appartenant Ã&nbsp; une mÃªme thÃ©matique, contenu conditionnel fragmentÃ© et rÃ©parti Ã&nbsp; diffÃ©rents endroits du document source etc.).

\note{Environnements imbriquÃ©s}
Les environnements \envn{conditext} peuvent Ãªtre imbriquÃ©s, Ã&nbsp; volontÃ©, et autoriser ainsi diverses \quo{profondeurs} de condition, sur la base de domaines de condition diffÃ©renciÃ©s (Ã&nbsp; savoir qu'imbriquer des environnements \envn{conditext} de domaines de condition identiques sera inÃ©vitablement source d'effets inattendus ou indÃ©sirables).

La sÃ©mantique d'imbrication et son niveau de \emph{profondeur} sont laissÃ©s Ã&nbsp; l'apprÃ©ciation de l'utilisateur.

Dans le cas de contenus conditionnels imbriquÃ©s, les espaces de condition prÃ©sentent certaines particularitÃ©s de comportement (\seeref{CtDoc_Commandes_SetCondiSpace_Utilisation}).

\subsubsection{Argument Ã©toile}\label{CtDoc_Commandes_CondiText_Etoile}
L'\xenvn{conditext} accepte une Ã©toile en troisiÃ¨me argument sous la forme :

\codestm*{\env{conditext}[\argo{\argn{domaine de condition}}\argm{\argn{propriÃ©tÃ© de condition}}*][\txt]}

Atypique de par sa position en regard de l'usage habituel de l'Ã©toile dans les commandes et environnements \Latex, l'argument~\val{*} affecte ponctuellement la prise en compte du domaine de condition et de la propriÃ©tÃ© de condition dans un espace de condition et modifie ainsi la logique d'affichage de la forme substituable correspondante dans le document gÃ©nÃ©rÃ©.

Plus prÃ©cisÃ©ment, l'Ã©toile permet : soit de forcer l'inclusion de la forme substituable dans le document gÃ©nÃ©rÃ© lorsqu'elle n'est pas dÃ©signÃ©e par un espace de condition ; soit Ã&nbsp; l'inverse, de forcer l'exclusion de la forme sustituable dans le document gÃ©nÃ©rÃ© lorsqu'elle est dÃ©signÃ©e par un espace de condition.

Cet argument est prÃ©vu pour une gestion individualisÃ©e \quo{au plus prÃ¨s} des formes substituables et son usage doit Ãªtre en principe limitÃ© Ã&nbsp; des situations appropriÃ©es.

Il est possible -- mÃªme si cette pratique est dÃ©conseillÃ©e car peu rÃ©guliÃ¨re (et encore moins efficace dans le cas d'un document source comportant de nombreuses instructions \envn{conditext}) --, de ne pas dÃ©finir d'espace de condition et d'utiliser uniquement l'argument~\val{*} pour forcer directement l'affichage ou le non affichage des formes substituables dans le document gÃ©nÃ©rÃ© (le rÃ©sultat Ã©tant inversÃ© selon que le \xpack{conditext} est dÃ©clarÃ© sans ou avec l'\xvalopt{defaultdisplayall}).

\subsubsection{Contenu conditionnel multilingue}\label{CtDoc_Commandes_CondiText_Multilingue}
Par dÃ©faut, lorsqu'un \xenvn{conditext} est destinÃ© Ã&nbsp; gÃ©rer un contenu conditionnel multilingue, l'\xargn{domaine de condition} n'a pas Ã&nbsp; Ãªtre spÃ©cifiÃ©. Il s'agit en fait d'un domaine de condition prÃ©dÃ©fini, intitulÃ© \val{language}, pris en compte implicitement. L'on peut ainsi formuler une instruction \envn{conditext} Ã&nbsp; sÃ©mantique linguistique sous la forme :

\codestm*{\env{conditext}[\argm{\argn{propriÃ©tÃ© de condition}}\argo{*}][\txt]}

Ce comportement par dÃ©faut est cependant modifiÃ© dÃ¨s lors qu'un domaine de condition implicite est dÃ©fini par l'utilisateur (\xcmdn{setimplicitcondifield}, \seeref{CtDoc_Commandes_SetImplicitCondiField}). il est alors nÃ©cessaire de spÃ©cifier \emph{explicitement} \val{language} comme domaine de condition dans toute instruction \envn{conditext} devant gÃ©rer un contenu conditionnel multilingue. Ceci s'applique Ã©galement Ã&nbsp; la \xcmdn{setcondispace}, \seeref{CtDoc_Commandes_SetCondiSpace}.

\note{Prise en charge par \pack{babel}}
L'\xargn{propriÃ©tÃ© de condition} doit Ãªtre impÃ©rativement renseignÃ© avec l'une des appellations linguistiques en vigueur dans le \xpack{babel}. Le \xpack{conditext} dispose des propriÃ©tÃ©s de condition prÃ©dÃ©finies suivantes :

\begin{valenum}
    {\val{albanian}, \val{american}, \val{arabic}, \val{armenian}, \val{bosnian}, \val{brazilian}, \val{breton}, \val{canadian}, \val{cantonese}, \val{catalan}, \val{chinese}, \val{croatian}, \val{czech}, \val{danish}, \val{dutch}, \val{english}, \val{esperanto}, \val{estonian}, \val{finnish}, \val{french}, \val{georgian}, \val{german}, \val{greek}, \val{hebrew}, \val{hungarian}, \val{icelandic}, \val{irish}, \val{italian}, \val{japanese}, \val{lithuanian}, \val{luxemburgish}, \val{macedonian}, \val{mexican}, \val{norsk}, \val{occitan}, \val{portuguese}, \val{romanian}, \val{romansh}, \val{russian}, \val{sanskrit}, \val{serbian}, \val{slovenian}, \val{spanish}, \val{swedish}, \val{tibetan}, \val{turkish}, \val{ukrainian}, \val{vietnamese}.}
\end{valenum}

Les propriÃ©tÃ©s de condition de sÃ©mantique linguistique sont plus que de simples \quo{Ã©tiquettes} ; elles permettent en fait de prendre en charge, pour chaque forme substituable saisie, le support linguistique spÃ©cifique -- notamment la gestion des cÃ©sures-- disponible dans \xpack{babel}.

Il est de ce fait indispensable que \pack{babel} soit dÃ©clarÃ© dans le prÃ©ambule, accompagnÃ© des langues susceptibles d'Ãªtre spÃ©cifiÃ©es en propriÃ©tÃ©s de condition (se reporter Ã&nbsp; la documentation \pack{babel} pour plus de dÃ©tails sur la dÃ©claration du paquet et des langues). Les commandes du \xpack{conditext} ne prennent pas en compte la prÃ©cÃ©dence de langue propre Ã&nbsp; \pack{babel} avec \val{main}.

Dans sa version actuelle, le \xpack{conditext} ne permet pas de crÃ©er de nouvelles propriÃ©tÃ©s de condition Ã&nbsp; sÃ©mantique linguistique.

\subsubsection{Domaines de condition et propriÃ©tÃ©s de condition prÃ©dÃ©finis}
Outres le domaine de condition \val{language} et les propriÃ©tÃ©s de condition Ã&nbsp; sÃ©mantique linguistique, le \xpack{conditext} fournit plusieurs domaines de condition et propriÃ©tÃ©s de condition prÃ©dÃ©finis, Ã&nbsp; appellation gÃ©nÃ©rique, avant tout destinÃ©s Ã&nbsp; des gestions de contenu conditionnel peu exigeantes ou Ã&nbsp; des tests.

Le principal (unique ?) avantage de ces domaines de condition et propriÃ©tÃ©s de condition prÃ©dÃ©finis est d'Ã©viter Ã&nbsp; l'utilisateur des crÃ©ations qui pourraient s'avÃ©rer fastidieuses, dans le cas de tests notamment.

Les domaines de condition gÃ©nÃ©riques prÃ©dÃ©finis sont au nombre de~3, disposant chacun d'un jeu de 9 propriÃ©tÃ©s de condition, soit :

\begin{itemize}
    \item le domaine de condition \val{fieldi}, avec les propriÃ©tÃ©s de condition
        \begin{valenum}
            { \val{propa},  \val{propb}, \val{propc}, \val{propd}, \val{prope}, \val{propf}, \val{propg}, \val{proph}, \val{propi} ;}
        \end{valenum}
    \item le domaine de condition \val{fieldii}, avec les propriÃ©tÃ©s de condition
        \begin{valenum}
            { \val{propaa},  \val{propbb}, \val{propcc}, \val{propdd}, \val{propee}, \val{propff}, \val{propgg}, \val{prophh}, \val{propii} ;}
        \end{valenum}
    \item le domaine de condition \val{fieldiii}, avec les propriÃ©tÃ©s de condition
        \begin{valenum}
            { \val{propaaa},  \val{propbbb}, \val{propccc}, \val{propddd}, \val{propeee}, \val{propfff}, \val{propggg}, \val{prophhh}, \val{propiii}.}
        \end{valenum}
\end{itemize}

\subsection{DÃ©finition d'un espace de condition}\label{CtDoc_Commandes_SetCondiSpace}
L'on dÃ©finit un espace de condition au moyen de la \xcmdn{setcondispace}\cmdbookmark{setcondispace}, sur la base conjointe d'un domaine de condition et d'une propriÃ©tÃ© de condition, sous la forme suivante :

\cmdheader{setcondispace}{\argo{*}\argo{\argn{domaine de condition}}\argm{\argn{propriÃ©tÃ© de condition}}}

\subsubsection{Arguments et syntaxe}
Les arguments \argn{domaine de condition} et \argn{propriÃ©tÃ© de condition} sont Ã&nbsp; renseigner l'un et l'autre avec une valeur de type alphabÃ©tique, sans caractÃ¨res accentuÃ©s ou Ã&nbsp; diacritiques, et sans espaces.

Concernant l'argument~\val{*}, \seeref{CtDoc_Commandes_SetCondiSpace_Etoile}.

Il est indispensable que \argn{domaine de condition} et \argn{propriÃ©tÃ© de condition} aient Ã©tÃ© crÃ©Ã©s au prÃ©alable (commandes \cmdn{newcondifield} et \cmdn{newcondiprop}, cf. respectivement \seeref*{CtDoc_Commandes_NewCondiField} et \seeref*{CtDoc_Commandes_NewCondiProp}) ; dans le cas contraire, un message d'erreur sera dÃ©clenchÃ© lors de la compilation.

En outre, la propriÃ©tÃ© de condition spÃ©cifiÃ©e doit avoir Ã©tÃ© impÃ©rativement crÃ©Ã©e avec un domaine de rattachement (\seeref{CtDoc_Commandes_NewCondiProp}) identique Ã&nbsp; celui prÃ©cisÃ© en \xargn{domaine de condition} ; si tel n'est pas le cas, un message d'erreur sera sera dÃ©clenchÃ© lors de la compilation.

Si les arguments \argn{domaine de condition} ou \argn{propriÃ©tÃ© de condition} sont conjointement laissÃ©s vides (\argovoid{} et \argmvoid{}), un message d'erreur sera dÃ©clenchÃ© lors de la compilation.

Dans un contexte de gestion de contenu conditionnel \emph{multilingue}, l'\xargn{domaine de condition} n'a pas besoin d'Ãªtre renseignÃ© (\seeref{CtDoc_Commandes_SetCondiSpace_Multilingue}).

Pour un usage spÃ©cifique de l'\xargn{propriÃ©tÃ© de condition} vide, \seeref{CtDoc_Commandes_SetCondiSpace_EspaceConditionGlobal}).

\subsubsection{Utilisation}\label{CtDoc_Commandes_SetCondiSpace_Utilisation}
Un espace de condition permet de dÃ©signer quelles formes substituables doivent figurer dans le document gÃ©nÃ©rÃ©, en fonction d'un domaine de condition et d'une propriÃ©tÃ© de condition propres Ã&nbsp; correspondre aux formes substituables concernÃ©es.

Plus prÃ©cisÃ©ment, un espace de condition repose sur un test de correspondance de type \quo{Ã©gal Ã&nbsp;} strict, entre : d'une part, un domaine de condition \emph{et} une propriÃ©tÃ© de condition spÃ©cifiÃ©s en arguments d'une instruction \envn{setcondispace}, et d'autre part, un domaine de condition \emph{et} une propriÃ©tÃ© de condition spÃ©cifiÃ©s en arguments d'une instruction \envn{conditext}.

Si aucune correspondance n'existe, l'instruction \cmdn{setcondispace} est sans effet (tout se passe comme s'il n'y avait pas d'instruction formulÃ©e) ; sinon, toute forme substituable satisfaisant au test de correspondance figure dans le document gÃ©nÃ©rÃ©.

L'actuelle version du \xpack{conditext} supporte uniquement les tests de correspondance de type \quo{Ã©gal Ã&nbsp;} strict.

\note{Instructions multiples}
Il y aura autant d'instructions \cmdn{setcondispace} que souhaitÃ©, avec domaines de condition identiques ou non, en fonction des besoins (notamment dÃ¨s lors la \quo{profondeur} de la gestion conditionnelle mise en oeuvre sera concernÃ©e). Si un espace de condition est dÃ©fini deux fois, un message d'erreur sera dÃ©clenchÃ© lors de la compilation.

Lorsque plusieurs instructions \cmd{setcondispace} sont formulÃ©es, l'ordre et la disposition dans lequel elles figurent, sont en principe laissÃ©s Ã&nbsp; l'apprÃ©ciation de l'utilisateur ; quel que soit l'ordre et la disposition adoptÃ©s pour les instructions \cmd{setcondispace}, les formes substituables figureront toujours dans le document gÃ©nÃ©rÃ© en fonction de l'ordre dans lequel elles figurent dans le document source.

\note{Cas des contenus conditionnels imbriquÃ©s}
Lorsque l'on gÃ¨re des contenus conditionnels imbriquÃ©s (\seeref{CtDoc_Commandes_CondiText_Utilisation}), une instruction \cmdn{setcondispace} prÃ©sente la particularitÃ© de comportement suivante : elle est sans effet si elle dÃ©signe un contenu conditionnel de niveau infÃ©rieur Ã&nbsp; un contenu conditionnel pour lequel un espace de condition n'est pas dÃ©fini.

Autrement dit, tout niveau de forme substituable supÃ©rieur Ã&nbsp; un niveau de forme substituable dÃ©signÃ© par un espace de condition, doit Ãªtre lui-mÃªme dÃ©signÃ© par un espace de condition pour que l'espace de condition relatif au niveau infÃ©rieur soit effectif.

\subsubsection{Espace de condition Ã&nbsp; sÃ©mantique linguistique}\label{CtDoc_Commandes_SetCondiSpace_Multilingue}
Par dÃ©faut, lorsque l'on dÃ©finit un espace de condition Ã&nbsp; sÃ©mantique linguistique, l'\xargn{domaine de condition}, de \xval{language}, est pris en compte implicitement et n'a pas Ã&nbsp; Ãªtre spÃ©cifiÃ©. L'on peut ainsi formuler une instruction \envn{setcondispace} Ã&nbsp; sÃ©mantique linguistique sous la forme :

\codestm*{\cmd{setcondispace}[\argm{\argn{propriÃ©tÃ© de condition}}]}

Ce comportement par dÃ©faut est cependant modifiÃ© dÃ¨s lors qu'un domaine de condition implicite est dÃ©fini par l'utilisateur (\xcmdn{setimplicitcondifield}, \seeref{CtDoc_Commandes_SetImplicitCondiField}). Il est alors nÃ©cessaire de spÃ©cifier \emph{explicitement} \val{language} comme domaine de condition pour tout espace de condition Ã&nbsp; sÃ©mantique linguistique que l'on est amenÃ© Ã&nbsp; dÃ©finir.

L'\xargn{propriÃ©tÃ© de condition} quant Ã&nbsp; lui, doit Ãªtre impÃ©rativement renseignÃ© avec l'une des appellations linguistiques en vigueur dans le \xpack{babel} (\seeref{CtDoc_Commandes_CondiText_Multilingue} pour la liste des propriÃ©tÃ©s de condition Ã&nbsp; sÃ©mantique linguistique disponibles).

\subsubsection{Version Ã©toilÃ©e}\label{CtDoc_Commandes_SetCondiSpace_Etoile}
La \xcmdn{setcondispace} accepte l'argument~\val{*}, mais uniquement dans le cadre d'une gestion de contenu conditionnel \emph{multilingue} ; l'argument~\val{*} est sans effet sinon.

L'Ã©toile permet de dÃ©finir, relativement Ã&nbsp; une \emph{mÃªme langue} spÃ©cifiÃ©e en \xargn{propriÃ©tÃ© de condition}, conjointement un espace de condition pour les formes substituables gÃ©rÃ©es par l'\xenvn{conditext} \emph{et} un espace de condition pour les formes substituables gÃ©rÃ©es par la \xcmdn{miniconditext} (\seeref{CtDoc_Commandes_SetMiniCondiSpace_EspacesCouples}).

L'argument~\val{*} peut s'avÃ©rer efficace dans les cas oÃ¹ les deux types de contenus substituables coexistent de maniÃ¨re interdÃ©pendante dans un mÃªme document source. L'usage de l'Ã©toile a toutefois son revers : l'instruction \cmdn{setminicondispace} (\seeref{CtDoc_Commandes_SetMiniCondiSpace}) n'apparaissant pas explicitement, cela peut Ãªtre source de confusion.

De plus, dans la mesure oÃ¹ il ne peut exister qu'une seule instruction \cmdn{setminicondispace} dans le prÃ©ambule (\seeref{CtDoc_Commandes_SetMiniCondiSpace}), il ne peut exister qu'une seule instruction \cmdn{setcondispace} avec Ã©toile. Si plusieurs instructions de ce type sont spÃ©cifiÃ©es, le compilateur ne prendra en compte que la derniÃ¨re de ces instructions, avec le risque d'effets indÃ©sirables ou inattendus.

En toute logique, l'Ã©toile est sans effet si l'instruction \cmdn{setcondispace} est utilisÃ©e pour dÃ©finir un espace de condition global (\seeref{CtDoc_Commandes_SetCondiSpace_EspaceConditionGlobal}).

\subsubsection{Espace de condition global}\label{CtDoc_Commandes_SetCondiSpace_EspaceConditionGlobal}
En plus de l'usage prÃ©alablement dÃ©crit, la \xcmdn{setcondispace} peut Ãªtre utilisÃ©e sous la forme spÃ©cifique suivante :

\codestm*{\cmd{setcondispace}[\argo{\argn{domaine de condition}}\argm{}]}

\resumepar L'espace de condition alors dÃ©fini, est un \emph{espace de condition global} : toutes les formes substituables rattachÃ©es Ã&nbsp; un mÃªme domaine de condition s'affichent sans exception dans le document gÃ©nÃ©rÃ©.

Ã€ noter que l'utilisation de la \xcmdn{setcondispace} sous la forme \cmd{setcondispace}[\argo{}\argm{}] dÃ©clenche un message d'erreur au moment de la compilation.

 Si l'on souhaite dÃ©finir un espace de condition global dans un contexte de contenu conditionnel multilingue, l'\xargn{domaine de condition} doit Ãªtre \emph{explicitement} renseignÃ© avec la \xval{language}.

\subsection{CrÃ©ation d'un domaine de condition}\label{CtDoc_Commandes_NewCondiField}
L'on crÃ©e un domaine de condition au moyen de la \xcmdn{newcondifield}\cmdbookmark{newcondifield}, que l'on utilise sous la forme suivante :

\cmdheader{newcondifield}{\argo{*}\argm{\argn{nouveau domaine de condition}}}

\subsubsection{argument et syntaxe}
L'\xargn{nouveau domaine de condition} est Ã&nbsp; renseigner sur la base d'une valeur de type alphabÃ©tique, sans caractÃ¨res accentuÃ©s ou Ã&nbsp; diacritiques, et sans espaces.

Si l'\xargn{nouveau domaine de condition} est laissÃ© vide, un message d'erreur sera dÃ©clenchÃ© lors de la compilation.

Concernant l'argument~\val{*}, \seeref{CtDoc_Commandes_NewCondiField_Etoile}.

\subsubsection{Utilisation}
Un domaine de condition est une thÃ©matique fonctionnelle permettant de rattacher diffÃ©rents contenus substituables Ã&nbsp; une mÃªme sÃ©mantique de gestion conditionnelle.

Ainsi, dans le cas de contenus substituables imbriquÃ©s, c'est le domaine de condition qui permet d'en gÃ©rer la profondeur avec ses diffÃ©rents niveaux.

La crÃ©ation d'un domaine de condition se fait toujours sur le nom \argn{nouveau domaine de condition}, Ã&nbsp; l'exclusion de tout autre identifiant. Une fois crÃ©Ã©, ce nom peut Ãªtre directement utilisÃ© en premier argument de l'\xenvn{conditext} et des commandes \cmdn{setcondispace} et \cmdn{newcondiprop}, ainsi qu'en argument unique de la \xcmdn{setimplicitcondifield}.

Il y aura autant d'instructions \cmd{newcondifield} que de domaines de condition Ã&nbsp; crÃ©er. Si un domaine de condition est crÃ©Ã© deux fois, un message d'erreur sera dÃ©clenchÃ© lors de la compilation.

Il est possible de donner un nom identique Ã&nbsp; un domaine de condition et Ã&nbsp; une propriÃ©tÃ© de condition, mais, de par les risques de confusion que cette pratique est susceptible de produire, il convient de la rÃ©server Ã&nbsp; des besoins spÃ©cifiques (\seeref{CtDoc_Commandes_NewCondiField_Etoile}).

En toute logique, toute instruction \cmdn{newcondifield} doit impÃ©rativement prÃ©cÃ©der l'utilisation de l'\xenvn{conditext} et des commandes \cmdn{setcondispace}, \cmdn{newcondiprop} et \cmdn{setimplicitcondifield} ; dans le cas contraire, un message d'erreur sera dÃ©clenchÃ© lors de la compilation. Plus gÃ©nÃ©ralement, un message d'erreur sera dÃ©clenchÃ© lors de la compilation si un domaine de condition est spÃ©cifiÃ© dans une instruction \envn{conditext}, \cmdn{setcondispace} ou \cmdn{setimplicitcondifield} alors qu'il n'a pas Ã©tÃ© crÃ©Ã©.

\subsubsection{Version Ã©toilÃ©e}\label{CtDoc_Commandes_NewCondiField_Etoile}
La \xcmdn{newcondifield} accepte l'argument~\val{*}, qui permet de crÃ©er tout Ã&nbsp; la fois un domaine de condition \emph{et} une propriÃ©tÃ© de condition portant le mÃªme nom.

Cet usage particulier de \cmdn{setcondispace} est essentiellement destinÃ© Ã&nbsp; une gestion conditionnelle binaire, oÃ¹ une seule propriÃ©tÃ© de condition suffit par domaine de condition (l'instruction \cmdn{setcondispace} faisant office de \quo{commande interrupteur}).

Il doit en principe rester modÃ©rÃ© : aucune instruction explicite relative Ã&nbsp; la propriÃ©tÃ© de condition ainsi crÃ©Ã©e ne figurant dans le code du document, cela peut induire une certaine confusion lorsque plusieurs instructions \cmdn{newcondifield} avec Ã©toile sont formulÃ©es, et favoriser le risque de crÃ©ations de propriÃ©tÃ©s de condition en doublon si l'on n'est pas suffisamment vigilant.

\subsubsection{Modification d'un domaine de condition}
Pour modifier un domaine de condition, il conviendra d'utiliser les fonctionnalitÃ©s de recherche/remplacement propres Ã&nbsp; l'Ã©diteur \Latex utilisÃ©, en veillant Ã&nbsp; ce que la valeur \argn{domaine de condition modifiÃ©} en argument de \cmdn{newcondifield} soit rÃ©percutÃ©e dans \emph{toutes} les instructions concernÃ©es, \envn{conditext}, \cmdn{setcondispace}, \cmdn{newcondiprop} ou encore \cmdn{setimplicitcondispace}.

\subsubsection{Suppression d'un domaine de condition}
La suppression d'un domaine de condition se pratique en retirant simplement l'instruction \cmdn{newcondifield} correspondant Ã&nbsp; ce domaine de condition. L'utilisateur veillera toutefois Ã&nbsp; ce qu'une fois cette instruction retirÃ©e, le domaine de condition concernÃ© ne demeure spÃ©cifiÃ© dans aucune instruction \cmdn{conditext}, \cmdn{setcondispace}, \cmdn{newcondiprop} ou \cmdn{setimplicitcondispace} ; dans le cas contraire, un message d'erreur sera dÃ©clenchÃ© lors de la compilation.

\subsection{CrÃ©ation d'une propriÃ©tÃ© de condition}\label{CtDoc_Commandes_NewCondiProp}
L'on crÃ©e un domaine de condition au moyen de la \xcmdn{newcondifield}\cmdbookmark{newcondifield}, que l'on utilise sous la forme suivante :

\cmdheader{newcondifield}{\argo{*}\argm{\argn{nouveau domaine de condition}}}

\subsubsection{argument et syntaxe}
L'\xargn{nouveau domaine de condition} est Ã&nbsp; renseigner sur la base d'une valeur de type alphabÃ©tique, sans caractÃ¨res accentuÃ©s ou Ã&nbsp; diacritiques, et sans espaces.

Si l'\xargn{nouveau domaine de condition} est laissÃ© vide, un message d'erreur sera dÃ©clenchÃ© lors de la compilation.

Concernant l'argument~\val{*}, \seeref{CtDoc_Commandes_NewCondiField_Etoile}.

\subsubsection{Utilisation}
Un domaine de condition est une thÃ©matique fonctionnelle permettant de rattacher diffÃ©rents contenus substituables Ã&nbsp; une mÃªme sÃ©mantique de gestion conditionnelle.

Ainsi, dans le cas de contenus substituables imbriquÃ©s, c'est le domaine de condition qui permet d'en gÃ©rer la profondeur avec ses diffÃ©rents niveaux.

La crÃ©ation d'un domaine de condition se fait toujours sur le nom \argn{nouveau domaine de condition}, Ã&nbsp; l'exclusion de tout autre identifiant. Une fois crÃ©Ã©, ce nom peut Ãªtre directement utilisÃ© en premier argument de l'\xenvn{conditext} et des commandes \cmdn{setcondispace} et \cmdn{newcondiprop}, ainsi qu'en argument unique de la \xcmdn{setimplicitcondifield}.

Il y aura autant d'instructions \cmd{newcondifield} que de domaines de condition Ã&nbsp; crÃ©er. Si un domaine de condition est crÃ©Ã© deux fois, un message d'erreur sera dÃ©clenchÃ© lors de la compilation.

Il est possible de donner un nom identique Ã&nbsp; un domaine de condition et Ã&nbsp; une propriÃ©tÃ© de condition, mais, de par les risques de confusion que cette pratique est susceptible de produire, il convient de la rÃ©server Ã&nbsp; des besoins spÃ©cifiques (\seeref{CtDoc_Commandes_NewCondiField_Etoile}).

En toute logique, toute instruction \cmdn{newcondifield} doit impÃ©rativement prÃ©cÃ©der l'utilisation de l'\xenvn{conditext} et des commandes \cmdn{setcondispace}, \cmdn{newcondiprop} et \cmdn{setimplicitcondifield} ; dans le cas contraire, un message d'erreur sera dÃ©clenchÃ© lors de la compilation. Plus gÃ©nÃ©ralement, un message d'erreur sera dÃ©clenchÃ© lors de la compilation si un domaine de condition est spÃ©cifiÃ© dans une instruction \envn{conditext}, \cmdn{setcondispace} ou \cmdn{setimplicitcondifield} alors qu'il n'a pas Ã©tÃ© crÃ©Ã©.

\subsubsection{Version Ã©toilÃ©e}\label{CtDoc_Commandes_NewCondiField_Etoile}
La \xcmdn{newcondifield} accepte l'argument~\val{*}, qui permet de crÃ©er tout Ã&nbsp; la fois un domaine de condition \emph{et} une propriÃ©tÃ© de condition portant le mÃªme nom.

Cet usage particulier de \cmdn{setcondispace} est essentiellement destinÃ© Ã&nbsp; une gestion conditionnelle binaire, oÃ¹ une seule propriÃ©tÃ© de condition suffit par domaine de condition (l'instruction \cmdn{setcondispace} faisant office de \quo{commande interrupteur}).

Il doit en principe rester modÃ©rÃ© : aucune instruction explicite relative Ã&nbsp; la propriÃ©tÃ© de condition ainsi crÃ©Ã©e ne figurant dans le code du document, cela peut induire une certaine confusion lorsque plusieurs instructions \cmdn{newcondifield} avec Ã©toile sont formulÃ©es, et favoriser le risque de crÃ©ations de propriÃ©tÃ©s de condition en doublon si l'on n'est pas suffisamment vigilant.

\subsubsection{Modification d'un domaine de condition}
Pour modifier un domaine de condition, il conviendra d'utiliser les fonctionnalitÃ©s de recherche/remplacement propres Ã&nbsp; l'Ã©diteur \Latex utilisÃ©, en veillant Ã&nbsp; ce que la valeur \argn{domaine de condition modifiÃ©} en argument de \cmdn{newcondifield} soit rÃ©percutÃ©e dans \emph{toutes} les instructions concernÃ©es, \envn{conditext}, \cmdn{setcondispace}, \cmdn{newcondiprop} ou encore \cmdn{setimplicitcondispace}.

\subsubsection{Suppression d'un domaine de condition}
La suppression d'un domaine de condition se pratique en retirant simplement l'instruction \cmdn{newcondifield} correspondant Ã&nbsp; ce domaine de condition. L'utilisateur veillera toutefois Ã&nbsp; ce qu'une fois cette instruction retirÃ©e, le domaine de condition concernÃ© ne demeure spÃ©cifiÃ© dans aucune instruction \cmdn{conditext}, \cmdn{setcondispace}, \cmdn{newcondiprop} ou \cmdn{setimplicitcondispace} ; dans le cas contraire, un message d'erreur sera dÃ©clenchÃ© lors de la compilation.

\subsection{DÃ©finition d'un domaine de condition implicite}\label{CtDoc_Commandes_SetImplicitCondiField}
Dans certains cas, notamment lorsque de nombreux environnements \envn{conditext} doivent Ãªtre utilisÃ©s avec un domaine de condition identique, il peut s'avÃ©rer pratique -- Ã&nbsp; la fois pour faciliter la saisie et rendre le code plus lisible -- que ce domaine de condition n'ait pas Ã&nbsp; Ãªtre spÃ©cifiÃ© Ã&nbsp; chaque fois.

L'on peut alors dÃ©finir ce domaine de condition comme \conc{domaine de condition implicite} (en anglais, \quo{implicit condition field}). Par dÃ©faut, c'est le domaine de condition \val{language} (\seeref{CtDoc_Commandes_CondiText_Multilingue}) qui est dÃ©fini comme domaine de condition implicite.

L'on dÃ©finit un domaine de condition implicite au moyen de la \xcmdn{implicitcondifield}\cmdbookmark{implicitcondifield}, sous la forme :

\cmdheader{setimplicitcondifield}{\argm{\argn{domaine de condition}}}

\subsubsection{Argument}
L'\xargn{domaine de condition} est Ã&nbsp; renseigner avec une valeur de type alphabÃ©tique, sans caractÃ¨res accentuÃ©s ou Ã&nbsp; diacritiques, et sans espaces.

Il est indispensable que \argn{domaine de condition} ait Ã©tÃ© au prÃ©alable crÃ©Ã© (\xcmdn{newcondifield} (\seeref{CtDoc_Commandes_NewCondiField}) ; dans le cas contraire, un message d'erreur est dÃ©clenchÃ© au moment de la compilation.

De mÃªme, si lâ€™argument \argn{domaine de condition} est laissÃ© vide, un message dâ€™erreur sera dÃ©clenchÃ© lors de la compilation.

\subsubsection{Utilisation}
Il ne peut exister qu'une seule instruction \cmdn{setimplicitcondifield} -- donc, un seul domaine de condition implicite -- par document source. Si plusieurs instructions de ce type sont spÃ©cifiÃ©es, le compilateur ne prendra en compte que la derniÃ¨re de ces instructions, avec le risque d'effets indÃ©sirables ou inattendus.

L'instruction \cmdn{setimplicitcondifield} devra Ãªtre prÃ©cisÃ©e avant toute instruction \cmdn{setcondispace}.

Il est possible, bien qu'inutile, de spÃ©cifier explicitement un domaine de condition dÃ©fini comme domaine de condition implicite.

Si l'utilisateur dÃ©finit un domaine de condition implicite tout en ayant Ã&nbsp; gÃ©rer par ailleurs certains contenus conditionnels multilingues dans le mÃªme document source, il est alors nÃ©cessaire de spÃ©cifier \emph{explicitement} \val{language} dans les instructions \envn{conditext} et \cmdn{setcondispace} liÃ©es Ã&nbsp; cette gestion conditionnelle multilingue -- lÃ&nbsp; oÃ¹, par dÃ©faut, cela n'avait pas lieu d'Ãªtre (\seeref{CtDoc_Commandes_CondiText_Multilingue}).

L'on peut rÃ©tablir le comportement par dÃ©faut (\val{language} comme domaine de condition implicite) : soit en retirant simplement l'instruction \cmdn{setimplicitcondispace}, soit en formulant l'instruction \cmd{setimplicitcondifield}[\argm{language}].

\section{Commandes relatives Ã&nbsp; la mini-gestion conditionnelle}
\subsection{Saisie des formes substituables pour une mini-gestion conditionnelle}\label{CtDoc_Commandes_MiniCondiText}
Toute forme substituable destinÃ©e Ã&nbsp; une mini-gestion conditionnelle doit Ãªtre saisie au moyen de la \cmdn{miniconditext}.

Ã€ la diffÃ©rence de l'\xenvn{conditext} qui permet de gÃ©rer des formes substituables multi-paragraphiques, la \xcmdn{miniconditext} est destinÃ©e Ã&nbsp; gÃ©rer des contenus conditionnels Ã&nbsp; l'Ã©chelle paragraphique ou intra-paragraphique (mots, groupes de mots).

L'un des usages auxquels elle est destinÃ©e, est la gestion conditionnelle multilingue de termes ou d'intitulÃ©s, mais il peut aussi s'agir d'expressions Ã&nbsp; formatage conditionnel en fonction des destinataires d'un document donnÃ© etc.

Autre diffÃ©rence fondamentale avec l'\xenvn{conditext} : alors que, dans le cadre d'une gestion de contenu conditionnel Ã&nbsp; l'Ã©chelle multi-paragraphique, l'on peut crÃ©er et gÃ©rer autant de domaines de condition et de propriÃ©tÃ©s de condition, et utiliser autant d'\xenvn{conditext} et d'espaces de condition que souhaitÃ©, la \xcmdn{miniconditext} est limitÃ©e Ã&nbsp; 9 propriÃ©tÃ©s de condition et 9 possibilitÃ©s de formes substituables et il ne peut y avoir qu'un seul espace de condition pour mini-gestion conditionnelle dans le prÃ©ambule.

La \xcmdn{miniconditext}\cmdbookmark{miniconditext} s'utilise sous la forme suivante :

\cmdheader{miniconditext}{\argm{\argn{forme substituable \no 1}}\argo{\argn{forme substituable \no 2}}\argo{\argn{forme substituable \no 3}}\argo{\argn{forme substituable \no 4}}\argo{\argn{forme substituable \no 5}}\argo{\argn{forme substituable \no 6}}\argo{\argn{forme substituable \no 7}}\argo{\argn{forme substituable \no 8}}\argo{\argn{forme substituable \no 9}}}


\subsubsection{Arguments et syntaxe}
Les arguments \argn{forme substituable \no 1}, \argn{forme substituable \no 2}~etc., sont Ã&nbsp; renseigner sur la base d'une valeur de type alphanumÃ©rique reprÃ©sentant un ou plusieurs mots, Ã©ventuellement un paragraphe.

Les deuxiÃ¨me, troisiÃ¨me, ...neuviÃ¨me arguments peuvent ne pas Ãªtre renseignÃ©s, sur la base de la rÃ¨gle suivante : tout argument non renseignÃ© entre deux arguments renseignÃ©s doit figurer sous la forme \argovoid{} (tout argument non renseignÃ© positionnÃ© aprÃ¨s le dernier argument renseignÃ© pouvant ne pas Ãªtre mentionnÃ©).

Le fait de renseigner un argument auquel est associÃ©e une propriÃ©tÃ© de condition \quo{neutre} (\seeref{CtDoc_Commandes_SetMiniCondiProp-_Utilisation}) est sans effet lors de la compilation.

\subsubsection{Utilisation}

L'on place une instruction \cmdn{miniconditext} Ã&nbsp; chaque endroit du document source oÃ¹ l'on souhaite que l'une des formes substituables spÃ©cifiÃ©es dans les arguments \argn{forme substituable \no 1}, \argn{forme substituable \no 2} etc., figure dans le document gÃ©nÃ©rÃ© en fonction de l'espace de condition qui sera dÃ©fini.

Dans un document source, il y aura autant d'instructions \cmdn{miniconditext} que de formes substituables devant Ãªtre gÃ©rÃ©es conditionnellement. Les formes substituables spÃ©cifiÃ©es dans les arguments \argn{forme substituable \no 1}, \argn{forme substituable \no 2} etc. pourront Ãªtre, selon les cas et les besoins, soit identiques, soit diffÃ©rentes d'une instruction \cmdn{miniconditext} Ã&nbsp; une autre.

\note{Forme minimale d'utilisation} La forme minimale d'utilisation de la \xcmdn{miniconditext} est :

\codestm*{\cmd{miniconditext}[\argm{\argn{forme substituable}}]}

Cela revient, dans ce cas, Ã&nbsp; pouvoir gÃ©rer l'affichage ou l'absence d'affichage d'une forme substituable donnÃ©e.

\note{Formes substituables et propriÃ©tÃ©s de condition}
La \xcmdn{miniconditext} est, de toutes les commandes fournies par le \xpack{conditext}, celle qui est la moins intuitive.

D'une part, en effet, dans un contexte de mini-gestion conditionnelle, la notion de domaine de condition n'existe pas Ã&nbsp; proprement parler ; plus exactement, \val{miniconditext} est un domaine de condition en soi.

D'autre part, Ã&nbsp; chacun des 9 arguments de la \xcmdn{miniconditext} est associÃ©e une propriÃ©tÃ© de condition, dont la particularitÃ© essentielle rÃ©side dans le fait d'Ãªtre \emph{globale} Ã&nbsp; la commande elle-mÃªme (et donc \emph{Ã&nbsp; l'ensemble} des instructions relatives Ã&nbsp; cette commande).

Ces 9 propriÃ©tÃ©s au total n'apparaissent pas dans la signature de la commande, mais il convient de toujours les garder Ã&nbsp; l'esprit puisque ce sont elles qui caractÃ©risent chaque forme substituable.

C'est Ã©galement sur la base de ces propriÃ©tÃ©s de condition que l'on dÃ©finit l'espace de condition permettant de dÃ©signer laquelle des 9 formes substituables doit figurer dans le document gÃ©nÃ©rÃ©, pour chaque instruction \cmdn{miniconditext} placÃ©e dans le document source. Dans la version actuelle du \xpack{conditext}, il ne peut exister \emph{qu'un seul espace de condition  par prÃ©ambule} (\seeref{CtDoc_Commandes_SetMiniCondiSpace}).

Par dÃ©faut, la sÃ©mantique des 9 propriÃ©tÃ©s de condition est linguistique (\seeref{CtDoc_Commandes_MiniConditext_Multilingue}) mais l'on peut Ã©galement redÃ©finir ces propriÃ©tÃ©s de condition pour les adapter Ã&nbsp; un usage spÃ©cifique (\seeref{CtDoc_Commandes_SetMiniCondiProp-_Multilingue}).

\note{Mini-gestion conditionnelle multilingue}\label{CtDoc_Commandes_MiniConditext_Multilingue}
Par dÃ©faut, la \xcmdn{miniconditext} est prÃ©vue pour gÃ©rer un contenu conditionnel multilingue.

En d'autres termes, les propriÃ©tÃ©s de condition associÃ©es aux arguments de la commande ont par dÃ©faut une sÃ©mantique linguistique, et chaque argument de la commande correspond ainsi Ã&nbsp; une langue donnÃ©e : le franÃ§ais pour \argn{forme substituable \no 1}, l'anglais pour \argn{forme substituable \no 2}, l'allemand pour \argn{forme substituable \no 3}, l'espagnol pour \argn{forme substituable \no 4}, l'italien pour \argn{forme substituable \no 5}, le portuguais pour \argn{forme substituable \no 6}, le nÃ©erlandais pour \argn{forme substituable \no 7}, le danois pour \argn{forme substituable \no 8} et le norvÃ©gien pour \argn{forme substituable \no 9}.

Il est possible de modifier l'ordre des langues ou les langues elles-mÃªmes en redÃ©finissant les propriÃ©tÃ©s de condition (\seeref{CtDoc_Commandes_SetMiniCondiProp-_Multilingue}).

\subsection{RedÃ©finition des propriÃ©tÃ©s de condition pour une mini-gestion conditionnelle}\label{CtDoc_Commandes_SetMiniCondiProp-}
Ã€ chacun des 9 arguments de la \xcmdn{miniconditext} est associÃ©e une propriÃ©tÃ© de condition, qui sert Ã&nbsp; caractÃ©riser la forme substituable correspondant Ã&nbsp; cet argument. Chacune de ces 9 propriÃ©tÃ©s de condition est, dans son association avec l'un des arguments, \emph{globale} Ã&nbsp; la commande elle-mÃªme.

Par dÃ©faut, chacun des arguments de la \xcmdn{miniconditext} est associÃ© Ã&nbsp; une propriÃ©tÃ© de condition Ã&nbsp; sÃ©mantique linguistique. Ces propriÃ©tÃ©s de condition ont les noms respectifs suivants, dans l'ordre des arguments de la \xcmdn{miniconditext} : \val{french}, \val{english}, \val{german}, \val{spanish}, \val{italian}, \val{portuguese}, \val{dutch},\val{danish}, \val{norsk}.

Dans un contexte de mini-gestion conditionnelle multilingue, ce sont ces noms que l'on utilise pour dÃ©finir l'espace de condition concernÃ© (\seeref{CtDoc_Commandes_SetMiniCondiSpace}).

Il est possible de modifier l'ordre des langues et/ou les langues elles-mÃªmes, \seeref{CtDoc_Commandes_SetMiniCondiProp-_Multilingue}.

DÃ¨s lors que l'on souhaite mettre en oeuvre une mini-gestion conditionnelle dans un contexte autre que multilingue, il est nÃ©cessaire de modifier les propriÃ©tÃ©s de condition, au moyen des commandes suivantes\cmdbookmark{setminicondiprop-} : \cmdn{setminicondipropi}, \cmdn{setminicondipropii}, \cmdn{setminicondipropiii}, \cmdn{setminicondipropiv}, \cmdn{setminicondipropv}, \cmdn{setminicondipropvi}, \cmdn{setminicondipropvii}, \cmdn{setminicondipropviii} et \cmdn{setminicondipropix}.

Chacune de ces commandes sert Ã&nbsp; modifier -- l'on dira dÃ©sormais \emph{redÃ©finir} -- une propriÃ©tÃ© de condition sur la base d'un indice de position en chiffres romains, correspondant Ã&nbsp; celui de l'argument auquel est associÃ©e la propriÃ©tÃ© de condition dans la \xcmdn{miniconditext}. Ainsi, la \xcmdn{setminicondipropi} redÃ©finit la propriÃ©tÃ© de condition associÃ©e au premier argument, la \xcmdn{setminicondipropii} redÃ©finit la propriÃ©tÃ© de condition associÃ©e au deuxiÃ¨me argument et ainsi de suite.

Une \xcmdn{setminicondiprop-} (oÃ¹ \code{-} reprÃ©sente \code{i}, \code{ii}, \code{iii}, \code{iv}, \code{v}, \code{vi}, \code{vii}, \code{viii} ou \code{ix}) s'utilise sous la forme :

\cmdheader{setminicondiprop-}{\argm{\argn{propriÃ©tÃ© de condition redÃ©finie}}}

\subsubsection{Argument et syntaxe}
L'\xargn{propriÃ©tÃ© de condition redÃ©finie} est Ã&nbsp; renseigner sur la base d'une valeur de type alphabÃ©tique, sans espace ni caractÃ¨res accentuÃ©s ou Ã&nbsp; diacritiques.

Si l'\xargn{propriÃ©tÃ© de condition redÃ©finie} est laissÃ© vide, un message d'erreur sera dÃ©clenchÃ© lors de la compilation.

\subsubsection{Utilisation}\label{CtDoc_Commandes_SetMiniCondiProp-_Utilisation}
Lorsque l'on utilise une \xcmdn{setminicondiprop-}, il n'y a pas crÃ©ation d'une nouvelle propriÃ©tÃ© de condition, mais \emph{redÃ©finition} d'une des propriÃ©tÃ©s de condition existant par dÃ©faut, par modification du nom, Ã&nbsp; l'exclusion de tout autre identifiant.

Pour redÃ©finir les propriÃ©tÃ©s de condition, il faut toujours respecter le schÃ©ma d'instructions suivant :

\begin{itemize}
    \item d'abord, une instruction \cmdn{resettingminicondiprops} ;
    \item ensuite, les instructions \cmdn{setminicondiprop-}.
\end{itemize}

La \xcmdn{resettingminicondiprops}\cmdbookmark{resettingminicondiprops} est une commande particuliÃ¨re qui effectue certaines initialisations indispensables avant que les propriÃ©tÃ©s de condition puissent Ãªtre redÃ©finies. Elle accepte un argument~\val{*}, rÃ©servÃ© Ã&nbsp; la redÃ©finition des propriÃ©tÃ©s de condition de sÃ©mantique linguistique (\seeref{CtDoc_Commandes_SetMiniCondiProp-_Multilingue}).

De par sa fonction particuliÃ¨re, l'instruction \cmdn{resettingminicondiprops} est indissociable des instructions \cmdn{setminicondiprop-}. Elle doit Ãªtre obligatoirement placÃ©e \emph{avant} les instructions \cmdn{setminicondiprop-}, \cmdn{miniconditext} et \cmdn{setminicondispace}. En cas de non formulation, un message d'erreur sera dÃ©clenchÃ© lors de la compilation.

\note{Principes de la redÃ©finition/propriÃ©tÃ©s de condition neutres}
En fonction des besoins, la redÃ©finition des propriÃ©tÃ©s de condition peut Ãªtre \emph{totale ou partielle}. L'on ne formule que les instructions \cmdn{setminicondiprop-} relatives aux propriÃ©tÃ©s de condition qui doivent Ãªtre redÃ©finies.

Cela signifie qu'il y a aura autant d'instructions \cmdn{setminicondiprop-} que de propriÃ©tÃ©s de condition Ã&nbsp; redÃ©finir. Pour rappel, toute instruction de type \cmd{setminicondiprop-}[\argmvoid{}] dÃ©clenchera un message d'erreur lors de la compilation.

Lorsque la \xcmdn{resettingminicondiprops} est utilisÃ©e sans Ã©toile, toute propriÃ©tÃ© de condition non redÃ©finie (aucune instruction \cmdn{setminicondiprop-} correspondante) est considÃ©rÃ©e comme \quo{neutre}. Si une forme substituable est renseignÃ©e dans un argument de \cmdn{miniconditext} auquel est associÃ©e une propriÃ©tÃ© de condition neutre, cette forme substituable ne sera pas prise en compte lors de la gÃ©nÃ©ration du document.

Si une propriÃ©tÃ© de condition est redÃ©finie avec un nom dÃ©jÃ&nbsp; utilisÃ© pour une autre propriÃ©tÃ© de condition, un message d'erreur sera dÃ©clenchÃ© lors de la compilation.

Si \argn{propriÃ©tÃ© de condition redÃ©finie} fait elle-mÃªme l'objet d'une modification dans une ou plusieurs instructions, l'utilisateur veillera Ã&nbsp; ce que cette modification soit rÃ©percutÃ©e dans \cmdn{setminicondispace} si besoin est.

Similairement, le fait de retirer une instruction \cmd{setminicondiprop-} nÃ©cessite de retirer Ã©galement toute forme substituable prÃ©alablement saisie dans l'argument correspondant de \cmdn{miniconditext}.

Il convient d'Ãªtre particuliÃ¨rement attentif au fait que la redÃ©finition des propriÃ©tÃ©s de condition a des implications sÃ©mantiques (les formes substituables spÃ©cifiÃ©es dans les arguments \argn{forme substituable \no 1}, \argn{forme substituable \no 2} etc. de la \xcmdn{miniconditext}) et fonctionnelles (la propriÃ©tÃ© de condition spÃ©cifiÃ©e avec la \xcmdn{setminicondispace}).

La modification des propriÃ©tÃ©s de condition doit se faire de maniÃ¨re raisonnÃ©e, selon une sÃ©mantique d'ensemble. Ainsi, mÃªme si les commandes \cmdn{setminicondiprop-} l'autorisent, a priori, faire coexister des propriÃ©tÃ©s de condition d'une certaine sÃ©mantique avec d'autres de sÃ©mantique diffÃ©rente est source potentielle de confusion, avec les Ã©ventuels effets indÃ©sirables ou inattendus que cela peut entraÃ®ner. De mÃªme -- sauf pour un usage exotique -- il conviendra d'Ã©viter les redÃ©finitions discontinues et de privilÃ©gier Ã&nbsp; tout prix de redÃ©finir les propriÃ©tÃ©s de condition dans l'ordre des indices.

\subsubsection{RedÃ©finition de propriÃ©tÃ©s de condition de sÃ©mantique linguistique}\label{CtDoc_Commandes_SetMiniCondiProp-_Multilingue}
Il est possible d'adapter la mini-gestion conditionnelle multilingue Ã&nbsp; des besoins prÃ©cis, en redÃ©finissant tout ou partie des langues par dÃ©faut. Dans l'actuelle version du \xpack{conditext}, modifier l'ordre des langues revient Ã&nbsp; redÃ©finir les langues dans le nouvel ordre souhaitÃ©.

De maniÃ¨re gÃ©nÃ©rale, toute langue redÃ©finie doit l'Ãªtre impÃ©rativement sous la forme d'une des appellations linguistiques en vigueur dans le \xpack{babel} ; autrement, un message d'erreur sera dÃ©clenchÃ© lors de la compilation.

Deux maniÃ¨res de faire existent, selon que l'on fait prÃ©cÃ©der les instructions \cmdn{setminicondiprop-} de l'instruction \cmdn{resettingminicondiprops} avec ou sans Ã©toile :

Lorsque les modifications Ã&nbsp; apporter s'avÃ¨rent importantes (toutes ou une grande partie des langues Ã&nbsp; redÃ©finir), l'usage de la \xcmdn{resettingminicondiprops} \emph{sans Ã©toile} est recommandÃ©e, dans la mesure oÃ¹ le type de rÃ©initialisation effectuÃ©e permet une lisibilitÃ© optimale : Ã&nbsp; une instruction \cmdn{setminicondiprop-} formulÃ©e correspond une langue effective et utilisable, et toute propriÃ©tÃ© de condition non redÃ©finie est considÃ©rÃ©e comme une absence de langue Ã&nbsp; la compilation. Si une forme substituable est renseignÃ©e dans un argument de \cmdn{miniconditext} auquel n'est associÃ©e aucune langue, cette forme substituable n'est pas prise en compte lors de la gÃ©nÃ©ration du document.

Lorsque les modifications Ã&nbsp; apporter s'avÃ¨rent peu importantes (quelques langues Ã&nbsp; redÃ©finir, ou la permutation d'une langue avec une autre), l'on peut utiliser la \xcmdn{resettingminicondiprops} \emph{avec Ã©toile} : dans ce cas, toute propriÃ©tÃ© de condition non redÃ©finie \emph{conserve l'intitulÃ© de langue par dÃ©faut}. Cela Ã©tant, si elle permet une certaine efficacitÃ©, l'instruction \cmd{resettingminicondiprops*} n'est cependant pas exempte de dÃ©fauts, notamment une lisibilitÃ© moindre pouvant favoriser certaines confusions lors des redÃ©finitions.

L'usage de la \xcmdn{resettingminicondiprops} avec l'argument~\val{*} doit Ãªtre rÃ©servÃ© aux propriÃ©tÃ©s de condition de sÃ©mantique linguistique ; autrement, cela ne peut Ãªtre que source d'effets indÃ©sirables ou inattendus.

\subsection{DÃ©finition d'une espace de condition pour une mini-gestion conditionnelle}\label{CtDoc_Commandes_SetMiniCondiSpace}
L'on dÃ©finit un espace de condition pour mini-gestion conditionnelle au moyen de la \xcmdn{setminicondispace}\cmdbookmark{setminicondispace}, sous la forme suivante :

\cmdheader{setminicondispace}{\argm{\argn{propriÃ©tÃ© de condition}}}

\subsubsection{Argument et syntaxe}
L'\xargn{propriÃ©tÃ© de condition} est Ã&nbsp; renseigner sur la base d'une valeur de type alphabÃ©tique, sans espace ni caractÃ¨res accentuÃ©s ou Ã&nbsp; diacritiques.

Si l'\xargn{propriÃ©tÃ© de condition redÃ©finie} est laissÃ© vide, un message d'erreur sera dÃ©clenchÃ© lors de la compilation.

Toute propriÃ©tÃ© de condition spÃ©cifiÃ©e doit correspondre Ã&nbsp; l'une des 9 propriÃ©tÃ©s de condition associÃ©es aux arguments de la \xcmdn{conditext} (soit dÃ©finie par dÃ©faut, soit redÃ©finie avec une \xcmdn{setminicondiprop-}, \seeref{CtDoc_Commandes_SetMiniCondiProp-}) ; dans le cas contraire, un message d'erreur sera systÃ©matiquement dÃ©clenchÃ© lors de la compilation.

\subsubsection{Utilisation}
Un espace de condition pour mini-gestion conditionnelle se dÃ©finit sur la base d'une des 9 propriÃ©tÃ©s de condition associÃ©es aux arguments de la \cmdn{miniconditext}. C'est cette propriÃ©tÃ© de condition qui, rapportÃ©e Ã&nbsp; un test de correspondance de type \quo{Ã©gal Ã&nbsp;} strict, permet de dÃ©signer, pour chaque instruction \cmdn{miniconditext} formulÃ©e dans le document source, la forme substituable devant figurer dans le document gÃ©nÃ©rÃ©.

Les 9 propriÃ©tÃ©s de condition spÃ©cifiques Ã&nbsp; la mini-gestion conditionnelles sont \emph{globales} Ã&nbsp; la \xcmdn{miniconditext} et, par consÃ©quent, \emph{Ã&nbsp; toutes} les instructions \cmdn{miniconditext} formulÃ©es dans le document source. Il ne peut donc exister qu'une seule instruction \cmdn{setminicondispace} effective dans le prÃ©ambule. Si plusieurs instructions sont spÃ©cifiÃ©es, le compilateur ne prendra en compte que la derniÃ¨re de ces instructions, avec le risque d'effets indÃ©sirables ou inattendus.

Il est toutefois possible -- bien qu'il ne s'agisse pas d'une pratique rÃ©guliÃ¨re -- de passer outre cette limitation de principe, en plaÃ§ant des instructions \cmdn{setminicondispace} Ã&nbsp; mÃªme le document source : chacune de ces instructions devient alors effective tant qu'une autre n'est pas rencontrÃ©e. Ainsi, d'une certaine faÃ§on, plusieurs espaces de condition pour mini-gestion conditionnelle peuvent coexister linÃ©airement parlant (au risque d'effets indÃ©sirables ou inattendus).

\subsubsection{Espaces de condition couplÃ©s}\label{CtDoc_Commandes_SetMiniCondiSpace_EspacesCouples}
Dans un contexte de gestion de contenu conditionnel \emph{multilingue}, l'usage de la \xcmdn{setcondispace} avec l'argument~\val{*} (\seeref{CtDoc_Commandes_SetCondiSpace_Etoile}) permet de dÃ©finir, relativement Ã&nbsp; une \emph{mÃªme langue} spÃ©cifiÃ©e en \xargn{propriÃ©tÃ© de condition} de \cmdn{setcondispace}, Ã&nbsp; la fois un espace de condition pour les formes substituables gÃ©rÃ©es par l'\xenvn{conditext} \emph{et} un espace de condition pour les formes substituables gÃ©rÃ©es par la \xcmdn{miniconditext}.

En d'autres termes, une instruction \cmd{setminicondispace} est formulÃ©e implicitement en mÃªme temps que l'instruction \cmdn{setcondispace} elle-mÃªme.

L'argument~\val{*} peut s'avÃ©rer efficace dans les cas oÃ¹ les deux types de contenus substituables coexistent de maniÃ¨re interdÃ©pendante dans un mÃªme document source. L'usage de l'Ã©toile a toutefois son revers : l'instruction \cmdn{setminicondispace} n'apparaissant pas explicitement, cela peut Ãªtre source de confusion.

De plus, dans la mesure oÃ¹ il ne peut exister qu'une seule instruction \cmdn{setminicondispace} dans le prÃ©ambule, il ne peut exister qu'une seule instruction \cmdn{setcondispace*}. Si plusieurs instructions de ce type sont spÃ©cifiÃ©es, le compilateur ne prendra en compte que la derniÃ¨re de ces instructions, avec le risque d'effets indÃ©sirables ou inattendus.

\part{Tutoriel : exemples commentÃ©s}\label{CtDoc_Tuto}
L'une des principales applications du texte conditionnel rÃ©sidant dans la production de documents multilingues, c'est ce genre de document que le \xpack{conditext} permet de gÃ©rer par dÃ©faut, sans nÃ©cessiter de prÃ©alable d'aucune sorte.

Dans ce tutoriel, nous commencerons prÃ©cisÃ©ment avec un exemple de document multilingue, qui nous familiarisera avec les notions de formes substituables, de domaines de condition, de propriÃ©tÃ©s de condition et d'espaces de condition. Ce premier exemple sera l'occasion de prÃ©senter quelques bonnes pratiques d'utilisation quant aux principales commandes du paquet.

Nous passerons ensuite Ã&nbsp; un exemple oÃ¹ nous crÃ©erons cette fois des domaines de condition et des propriÃ©tÃ©s de condition. Nous verrons Ã©galement avec ce deuxiÃ¨me exemple comment l'on peut imbriquer des formes substituables dans d'autres formes substituables et gÃ©rer ainsi une certaine \quo{profondeur} de contenu conditionnel.

Enfin, dans un troisiÃ¨me exemple, en deux parties, nous apprendrons Ã&nbsp; utiliser un ensemble de commandes permettant une mini-gestion conditionnelle, portant sur des formes substituables minimales.

\note{Remarque} Pour les besoins de certains de ces exemples, nous serons amenÃ©s Ã&nbsp; crÃ©er quelques commandes personnalisÃ©es. Ã€ cette occasion, nous adopterons la syntaxe propre au \xpack{xparse}, assez intuitive et dont la lisibilitÃ© est un atout dans le cadre d'un tutoriel. Dans nos exemples, l'instruction pour crÃ©er les commandes concernÃ©es aura toujours la forme suivante :

\codestm*{\cmd{NewDocumentCommand}[\cmdn{\argn{nom de la commande}}\argm{\argn{arguments}}\argm{\argn{code}}]}

\resumepar oÃ¹ \argn{arguments} reprÃ©sente les arguments qui doivent figurer dans le code : \val{m} (pour \quo{mandatory}) et \val{o} (pour \quo{optional}). Un argument optionnel peut avoir une valeur par dÃ©faut ; dans ce cas, il est reprÃ©sentÃ© par \val{O}\argm{\argn{valeur par dÃ©faut}}.

Tous les exemples de document source prÃ©sentÃ©s dans le tutoriel sont directement utilisables et compilables ; la maniÃ¨re dont ils sont prÃ©sentÃ©s n'a, en tant que telle, rien d'impÃ©ratif.

\section{Exemple commentÃ© \no 1 : un document en version multilingue}
Imaginons -- de maniÃ¨re quelque peu artificielle il est vrai -- que nous ayons Ã&nbsp; rÃ©diger dans un seul et mÃªme document source, un texte en version franÃ§aise, anglaise, allemande, espagnole et italienne, avec pour objectif de gÃ©nÃ©rer ensuite un document par version linguistique de ce texte.

Pour des raisons de commoditÃ©, nous prendrons ici pour texte l'article premier de la \titcit{DÃ©claration des droits de l'homme}, dÃ©clinÃ© respectivement en franÃ§ais, anglais, allemand, espagnol et italien. Ã€ noter toutefois que le \xpack{conditext} permet de gÃ©rer des textes conditionnels de plusieurs dizaines Ã&nbsp; plusieurs milliers de signes.

\tutostep
Voici le document source correspondant Ã&nbsp; notre exemple :

\begin{codeblock}
\codestm{\cmd{documentclass}[\argm{article}]}
\codestm{\cmd{usepackage}[\argo{english,german,spanish,italian,french}\argm{babel}]}
\codestm{\cmd{usepackage}[\argm{conditext}]}
\codestm{}
\codestm{\cmd{begin}[\argm{document}]}
\codestm{}
\codestm{\cmd{begin}[\argm{conditext}\argm{french}]}
    \begin{subcodeblock}
    \codestm{Tous les Ãªtres humains naissent libres et Ã©gaux en dignitÃ© et en droits. Ils sont douÃ©s de raison et de conscience et doivent agir les uns envers les autres dans un esprit de fraternitÃ©.}
    \end{subcodeblock}
\codestm{\cmd{end}[\argm{conditext}]}
\codestm{}
\codestm{\cmd{begin}[\argm{conditext}\argm{english}]}
    \begin{subcodeblock}
    \codestm{All human beings are born free and equal in dignity and rights. They are endowed with reason and conscience and should act towards one another in a spirit of brotherhood.}
    \end{subcodeblock}
\codestm{\cmd{end}[\argm{conditext}]}
\codestm{}
\codestm{\cmd{begin}[\argm{conditext}\argm{german}]}
    \begin{subcodeblock}
    \codestm{Alle Menschen sind frei und gleich an WÃ¼rde und Rechten geboren. Sie sind mit Vernunft und Gewissen begabt und sollen einander im Geist der BrÃ¼derlichkeit begegnen.}
    \end{subcodeblock}
\codestm{\cmd{end}[\argm{conditext}]}
\codestm{}
\codestm{\cmd{begin}[\argm{conditext}\argm{spanish}]}
    \begin{subcodeblock}
    \codestm{Todos los seres humanos nacen libres e iguales en dignidad y derechos y, dotados como estÃ¡n de razÃ³n y conciencia, deben comportarse fraternalmente los unos con los otros.}
    \end{subcodeblock}
\codestm{\cmd{end}[\argm{conditext}]}
\codestm{}
\codestm{\cmd{begin}[\argm{conditext}\argm{italian}]}
    \begin{subcodeblock}
    \codestm{Tutti gli esseri umani nascono liberi ed eguali in dignitÃ&nbsp; e diritti. Essi sono dotati di ragione e di coscienza e devono agire gli uni verso gli altri in spirito di fratellanza.}
    \end{subcodeblock}
\codestm{\cmd{end}[\argm{conditext}]}
\codestm{}
\codestm{\cmd{end}[\argm{document}]}
\end{codeblock}

L'on remarquera tout d'abord que chaque version linguistique du texte est placÃ©e dans un environnement nommÃ© \envn{conditext}, et se voit spÃ©cifier le nom de la langue dans laquelle elle est rÃ©digÃ©e, sous la forme d'un argument de type obligatoire.

Cet argument correspond Ã&nbsp; une \conc{propriÃ©tÃ© de condition}, c'est-Ã&nbsp;-dire une caractÃ©risation fonctionnelle sur la base de laquelle l'on pourra ensuite dÃ©signer quelle version de texte doit Ãªtre gÃ©nÃ©rÃ©e. Dans le cas de notre exemple, il s'agit de propriÃ©tÃ©s Ã&nbsp; sÃ©mantique linguistique, prÃ©dÃ©finies et fournies par le \xpack{conditext}. Il est possible de crÃ©er et utiliser des propriÃ©tÃ©s de condition de toute nature, comme nous le verrons \seeref{CtDoc_Tuto_Multicondition}.

Dans le cas d'un contenu conditionnel multilingue, l'\xenvn{conditext} n'utilise qu'un seul argument. En principe, il existe un second argument, optionnel celui-lÃ&nbsp;, servant Ã&nbsp; spÃ©cifier le domaine de condition, mais pour l'instant, il suffit de retenir que c'est l'argument obligatoire qui permet de spÃ©cifier la propriÃ©tÃ© de condition.

De maniÃ¨re gÃ©nÃ©rale, tout texte que l'on souhaite gÃ©rer comme \emph{forme substituable} doit Ãªtre placÃ© dans un \xenvn{conditext}. Dans un mÃªme document source, il peut Ãªtre spÃ©cifiÃ© autant d'environnements \envn{conditext} que souhaitÃ©, y compris avec des propriÃ©tÃ©s de condition (et des domaines de condition) identiques.

Ainsi, dans notre exemple, l'on pourrait faire figurer toute la \titcit{DÃ©claration des droits de l'homme}, avec chacun des articles prÃ©sentÃ© en version linguistique distincte (nous verrons plus bas que, s'il peut sembler a priori plus pratique de regrouper tous les articles d'une mÃªme version linguistique dans un mÃªme \xenvn{conditext}, le partitionnement permet dans certains cas une gestion conditionnelle plus prÃ©cise).

Les propriÃ©tÃ©s de condition de notre exemple ont respectivement la valeur \val{french}, \val{english}, \val{german}, \val{spanish} et \val{italian}. Lorsqu'il s'agit de texte conditionnel multilingue, les propriÃ©tÃ©s de condition doivent impÃ©rativement correspondre aux appellations linguistiques utilisÃ©es par le \xpack{babel}. Il est indispensable que ce paquet soit dÃ©clarÃ© dans le prÃ©ambule, accompagnÃ© des langues susceptibles d'Ãªtre spÃ©cifiÃ©es comme propriÃ©tÃ©s de condition. Pour les besoins de notre exemple, le prÃ©ambule contient donc la dÃ©claration suivante :

\begin{codeblock}
    \codestm{\cmd{usepackage}[\argo{english,german,spanish,italian,french}\argm{babel}]}
\end{codeblock}

\resumepar (faute de quoi, le compilateur produit un message d'erreur).

\tutostep
Si nous compilons le document source en l'Ã©tat, le document gÃ©nÃ©rÃ©... est vide (ou ne s'affiche pas, selon l'Ã©diteur \Latex utilisÃ©). Ceci est logique, en ce sens oÃ¹ il manque en effet l'instruction permettant de dÃ©signer quelle forme substituable doit figurer sur le document. En l'absence de cette instruction, aucun contenu d'\xenvn{conditext} ne figure dans le document gÃ©nÃ©rÃ©.

Partons de l'idÃ©e de gÃ©nÃ©rer un document avec la version italienne de l'article premier de la \titcit{DÃ©claration des droits de l'homme}. Pour ce faire, dans le prÃ©ambule, Ã&nbsp; la suite de la dÃ©claration des paquets, nous allons ajouter la ligne suivante :

\begin{codeblock}
\codestm{\cmd{setcondispace}[\argm{italian}]}
\end{codeblock}

Si nous compilons Ã&nbsp; nouveau le document source, c'est dÃ©sormais le texte suivant qui figure conformÃ©ment Ã&nbsp; nos attentes dans le document gÃ©nÃ©rÃ© :

\begin{ltext}
\ltextline{Tutti gli esseri umani nascono liberi ed eguali in dignitÃ&nbsp; e diritti. Essi sono dotati di ragione e di coscienza e devono agire gli uni verso gli altri in spirito di fratellanza.}\end{ltext}

Si nous souhaitons maintenant gÃ©nÃ©rer un document avec la version franÃ§aise, il suffit de modifier l'instruction initiale en :

\begin{codeblock}
    \codestm{\cmd{setcondispace}[\argm{french}]}
\end{codeblock}

\resumepar et de recompiler le document source. L'on obtient alors :

\begin{ltext}
\ltextline{Tous les Ãªtres humains naissent libres et Ã©gaux en dignitÃ© et en droits. Ils sont douÃ©s de raison et de conscience et doivent agir les uns envers les autres dans un esprit de fraternitÃ©.}\end{ltext}

\resumepar Et ainsi de suite...

L'instruction \cmdn{setcondispace} dÃ©finit un \emph{espace de condition}. Dans les deux cas prÃ©cÃ©dents, ce sont les valeurs \val{italian} et \val{french} qui sont spÃ©cifiÃ©es en argument de \cmdn{setcondispace} afin de sÃ©lectionner : dans le premier cas, la forme substituable correspondant au contenu de l'\xenvn{conditext} ayant \val{italian} spÃ©cifiÃ© en argument, et dans le deuxiÃ¨me cas, la forme substituable correspondant au contenu de l'\xenvn{conditext} ayant \val{french} spÃ©cifiÃ© en argument.

Plus prÃ©cisÃ©ment, un espace de condition repose sur un test de correspondance de type \quo{Ã©gal Ã&nbsp;} strict, entre une propriÃ©tÃ© de condition spÃ©cifiÃ©e en argument d'une instruction \envn{setcondispace} et une propriÃ©tÃ© de condition spÃ©cifiÃ©e en argument d'une instruction \cmdn{conditext}. Si aucune correspondance n'existe, l'instruction \cmdn{setcondispace} est sans effet (tout se passe comme s'il n'y avait pas d'instruction formulÃ©e) ; sinon, la correspondance existante permet de dÃ©signer une ou plusieurs formes substituables pour figurer dans le document gÃ©nÃ©rÃ©.

Dans le cas d'une gestion conditionnelle multilingue, la \xcmdn{setcondispace} n'utilise qu'un seul argument (la propriÃ©tÃ© de condition). En principe, un second argument, optionnel, permet de spÃ©cifier le domaine de condition -- le test de correspondance portant alors Ã&nbsp; la fois sur le domaine de condition et la propriÃ©tÃ© de condition.

\tutostep
Les instructions \envn{conditext} et \cmdn{setcondispace} de notre exemple rÃ©pondent Ã&nbsp; notre besoin initial. Imaginons maintenant -- Ã&nbsp; nouveau, de maniÃ¨re assez artificielle -- que nous ayons Ã&nbsp; gÃ©nÃ©rer les versions anglaise, allemande et espagnole du texte dans un seul et mÃªme document, sans les versions franÃ§aise et italienne.

La solution est simple : il suffit dans ce cas de spÃ©cifier autant d'instructions \cmd{condispace} que de langues concernÃ©es. Dans le prÃ©ambule, Ã&nbsp; la place de \cmd{setcondispace}[\argm{italian}], nous aurons donc :

\begin{codeblock}
    \codestm{\cmd{setcondispace}[\argm{english}]}
    \codestm{\cmd{setcondispace}[\argm{german}]}
    \codestm{\cmd{setcondispace}[\argm{spanish}]}
\end{codeblock}

DÃ©sormais, le document gÃ©nÃ©rÃ© contient le texte :

\begin{ltext}
\ltextline{All human beings are born free and equal in dignity and rights. They are endowed with reason and conscience and should act towards one another in a spirit of brotherhood.}
\ltextline{}
\ltextline{Alle Menschen sind frei und gleich an WÃ¼rde und Rechten geboren. Sie sind mit Vernunft und Gewissen begabt und sollen einander im Geist der BrÃ¼derlichkeit begegnen.}
\ltextline{}
\ltextline{Todos los seres humanos nacen libres e iguales en dignidad y derechos y, dotados como estÃ¡n de razÃ³n y conciencia, deben comportarse fraternalmente los unos con los otros.}
\end{ltext}

Ainsi qu'on peut le constater, il peut Ãªtre formulÃ© plusieurs instructions \cmd{setcondispace} en fonction des besoins. En principe, ces instructions peuvent Ãªtre indiffÃ©remment dans un ordre ou dans un autre ; ainsi, \cmd{setcondispace}[\argm{german}] aurait trÃ¨s bien pu prÃ©cÃ©der \cmd{setcondispace}[\argm{english}] sans provoquer une prÃ©sentation diffÃ©rente du texte dans le document gÃ©nÃ©rÃ©. En fait, le texte qui figure dans le document gÃ©nÃ©rÃ© respecte toujours l'ordre et la disposition adoptÃ©s dans le document source ; d'un certain point de vue, c'est l'une des limites (actuelles ?) du \xpack{conditext}.

\tutostep
Nous allons maintenant Ã©toffer notre exemple de dÃ©part, en insÃ©rant, Ã&nbsp; la suite de chaque version franÃ§aise, anglaise, allemande, espagnole et italienne de l'article premier de la \titcit{DÃ©claration des droits de l'homme}, le texte de l'article 2 dÃ©clinÃ© dans les mÃªmes langues. Le document source est dÃ©sormais le suivant, hors prÃ©ambule :

\begin{codeblock}
\codestm{\cmd{begin}[\argm{document}]}
\codestm{}
\codestm{\cmd{begin}[\argm{conditext}\argm{french}]}
    \begin{subcodeblock}
    \codestm{Tous les Ãªtres humains naissent libres et Ã©gaux en dignitÃ© et en droits. Ils sont douÃ©s de raison et de conscience et doivent agir les uns envers les autres dans un esprit de fraternitÃ©.}
    \end{subcodeblock}
\codestm{\cmd{end}[\argm{conditext}]}
\codestm{}
\codestm{\cmd{begin}[\argm{conditext}\argm{french}]}
    \begin{subcodeblock}
    \codestm{Chacun peut se prÃ©valoir de tous les droits et de toutes les libertÃ©s proclamÃ©s dans la prÃ©sente DÃ©claration, sans distinction aucune, notamment de race, de couleur, de sexe, de langue, de religion, d'opinion politique ou de toute autre opinion, d'origine nationale ou sociale, de fortune, de naissance ou de toute autre situation.\\De plus, il ne sera fait aucune distinction fondÃ©e sur le statut politique, juridique ou international du pays ou du territoire dont une personne est ressortissante, que ce pays ou territoire soit indÃ©pendant, sous tutelle, non autonome ou soumis Ã&nbsp; une limitation quelconque de souverainetÃ©.}
    \end{subcodeblock}
\codestm{\cmd{end}[\argm{conditext}]}
\codestm{}
\codestm{\cmd{begin}[\argm{conditext}\argm{english}]}
    \begin{subcodeblock}
    \codestm{All human beings are born free and equal in dignity and rights. They are endowed with reason and conscience and should act towards one another in a spirit of brotherhood.}
    \end{subcodeblock}
\codestm{\cmd{end}[\argm{conditext}]}
\codestm{}
\codestm{\cmd{begin}[\argm{conditext}\argm{english}]}
    \begin{subcodeblock}
    \codestm{Everyone is entitled to all the rights and freedoms set forth in this Declaration, without distinction of any kind, such as race, colour, sex, language, religion, political or other opinion, national or social origin, property, birth or other status.\\Furthermore, no distinction shall be made on the basis of the political, jurisdictional or international status of the country or territory to which a person belongs, whether it be independent, trust, non-self-governing or under any other limitation of sovereignty.}
    \end{subcodeblock}
\codestm{\cmd{end}[\argm{conditext}]}
\codestm{}
\codestm{\cmd{begin}[\argm{conditext}\argm{german}]}
    \begin{subcodeblock}
    \codestm{Alle Menschen sind frei und gleich an WÃ¼rde und Rechten geboren. Sie sind mit Vernunft und Gewissen begabt und sollen einander im Geist der BrÃ¼derlichkeit begegnen.}
    \end{subcodeblock}
\codestm{\cmd{end}[\argm{conditext}]}
\codestm{}
\codestm{\cmd{begin}[\argm{conditext}\argm{german}]}
    \begin{subcodeblock}
    \codestm{Jeder hat Anspruch auf die in dieser ErklÃ¤rung verkÃ¼ndeten Rechte und Freiheiten ohne irgendeinen Unterschied, etwa nach Rasse, Hautfarbe, Geschlecht, Sprache, Religion, politischer oder sonstiger Ãœberzeugung, nationaler oder sozialer Herkunft, VermÃ¶gen, Geburt oder sonstigem Stand.\\Des weiteren darf kein Unterschied gemacht werden auf Grund der politischen, rechtlichen oder internationalen Stellung des Landes oder Gebiets, dem eine Person angehÃ¶rt, gleichgÃ¼ltig ob dieses unabhÃ¤ngig ist, unter Treuhandschaft steht, keine Selbstregierung besitzt oder sonst in seiner SouverÃ¤nitÃ¤t eingeschrÃ¤nkt ist.}
    \end{subcodeblock}
\codestm{\cmd{end}[\argm{conditext}]}
\codestm{}
\codestm{\cmd{begin}[\argm{conditext}\argm{spanish}]}
    \begin{subcodeblock}
    \codestm{Todos los seres humanos nacen libres e iguales en dignidad y derechos y, dotados como estÃ¡n de razÃ³n y conciencia, deben comportarse fraternalmente los unos con los otros.}
    \end{subcodeblock}
\codestm{\cmd{end}[\argm{conditext}]}
\codestm{}
\codestm{\cmd{begin}[\argm{conditext}\argm{spanish}]}
    \begin{subcodeblock}
    \codestm{Toda persona tiene los derechos y libertades proclamados en esta DeclaraciÃ³n, sin distinciÃ³n alguna de raza, color, sexo, idioma, religiÃ³n, opiniÃ³n polÃ­tica o de cualquier otra Ã­ndole, origen nacional o social, posiciÃ³n econÃ³mica, nacimiento o cualquier otra condiciÃ³n.\\AdemÃ¡s, no se harÃ¡ distinciÃ³n alguna fundada en la condiciÃ³n polÃ­tica, jurÃ­dica o internacional del paÃ­s o territorio de cuya jurisdicciÃ³n dependa una persona, tanto si se trata de un paÃ­s independiente, como de un territorio bajo administraciÃ³n fiduciaria, no autÃ³nomo o sometido a cualquier otra limitaciÃ³n de soberanÃ­a.}
    \end{subcodeblock}
\codestm{\cmd{end}[\argm{conditext}]}
\codestm{}
\codestm{\cmd{begin}[\argm{conditext}\argm{italian}]}
    \begin{subcodeblock}
    \codestm{Tutti gli esseri umani nascono liberi ed eguali in dignitÃ&nbsp; e diritti. Essi sono dotati di ragione e di coscienza e devono agire gli uni verso gli altri in spirito di fratellanza.}
    \end{subcodeblock}
\codestm{\cmd{end}[\argm{conditext}]}
\codestm{\cmd{begin}[\argm{conditext}\argm{italian}]}
    \begin{subcodeblock}
    \codestm{Ad ogni individuo spettano tutti i diritti e tutte le libertÃ&nbsp; enunciate nella presente Dichiarazione, senza distinzione alcuna, per ragioni di razza, di colore, di sesso, di lingua, di religione, di opinione politica o di altro genere, di origine nazionale o sociale, di ricchezza, di nascita o di altra condizione.\\Nessuna distinzione sarÃ&nbsp; inoltre stabilita sulla base dello statuto politico, giuridico o internazionale del paese o del territorio cui una persona appartiene, sia indipendente, o sottoposto ad amministrazione fiduciaria o non autonomo, o soggetto a qualsiasi limitazione di sovranitÃ&nbsp;.}
    \end{subcodeblock}
\codestm{\cmd{end}[\argm{conditext}]}
\codestm{}
\codestm{\cmd{end}[\argm{document}]}
\end{codeblock}

Le document source contient maintenant deux environnements \envn{conditext} par langue concernÃ©e, l'un pour l'article premier et l'autre pour l'article 2 de la \titcit{DÃ©claration des droits de l'homme}.

D'aprÃ¨s ce que nous avons vu prÃ©cÃ©demment, si par exemple le document gÃ©nÃ©rÃ© doit contenir les deux premiers articles respectivement en franÃ§ais et en espagnol, il suffit de formuler dans le prÃ©ambule les instructions

\begin{codeblock}
    \codestm{\cmd{setcondispace}[\argm{french}]}
    \codestm{\cmd{setcondispace}[\argm{spanish}]}
\end{codeblock}

\resumepar et l'on obtient alors dans le document gÃ©nÃ©rÃ© :

\begin{ltext}
\ltextline{Tous les Ãªtres humains naissent libres et Ã©gaux en dignitÃ© et en droits. Ils sont douÃ©s de raison et de conscience et doivent agir les uns envers les autres dans un esprit de fraternitÃ©.}
\ltextline{}
\ltextline{Chacun peut se prÃ©valoir de tous les droits et de toutes les libertÃ©s proclamÃ©s dans la prÃ©sente DÃ©claration, sans distinction aucune, notamment de race, de couleur, de sexe, de langue, de religion, d'opinion politique ou de toute autre opinion, d'origine nationale ou sociale, de fortune, de naissance ou de toute autre situation.\\De plus, il ne sera fait aucune distinction fondÃ©e sur le statut politique, juridique ou international du pays ou du territoire dont une personne est ressortissante, que ce pays ou territoire soit indÃ©pendant, sous tutelle, non autonome ou soumis Ã&nbsp; une limitation quelconque de souverainetÃ©.}
\ltextline{}
\ltextline{Todos los seres humanos nacen libres e iguales en dignidad y derechos y, dotados como estÃ¡n de razÃ³n y conciencia, deben comportarse fraternalmente los unos con los otros.}
\ltextline{}
\ltextline{Toda persona tiene los derechos y libertades proclamados en esta DeclaraciÃ³n, sin distinciÃ³n alguna de raza, color, sexo, idioma, religiÃ³n, opiniÃ³n polÃ­tica o de cualquier otra Ã­ndole, origen nacional o social, posiciÃ³n econÃ³mica, nacimiento o cualquier otra condiciÃ³n.\\AdemÃ¡s, no se harÃ¡ distinciÃ³n alguna fundada en la condiciÃ³n polÃ­tica, jurÃ­dica o internacional del paÃ­s o territorio de cuya jurisdicciÃ³n dependa una persona, tanto si se trata de un paÃ­s independiente, como de un territorio bajo administraciÃ³n fiduciaria, no autÃ³nomo o sometido a cualquier otra limitaciÃ³n de soberanÃ­a.}
\end{ltext}

Il peut sembler peu judicieux d'avoir dans notre document source autant d'environnements \envn{conditext} qu'il est d'articles et de versions d'article, alors que l'on pourrait ne crÃ©er qu'un environnement pour les articles en langue franÃ§aise, un autre pour les articles en langue anglaise etc. Cette organisation textuelle s'avÃ¨re cependant nÃ©cessaire chaque fois qu'il s'agit de gÃ©rer les formes substituables au plus prÃ¨s.

Supposons justement qu'Ã&nbsp; partir de notre document source, pour une raison donnÃ©e, nous devions prÃ©senter dans le document gÃ©nÃ©rÃ© uniquement l'article~2 de la \titcit{DÃ©claration des droits de l'homme} en franÃ§ais et en espagnol. Telles quelles, les instructions \cmdn{setcondispace} spÃ©cifiÃ©es prÃ©cÃ©demment ne le permettent pas -- et le permettraient encore moins si les articles Ã©taient regroupÃ©s par langue dans un mÃªme environnement.

En fait, l'\xenvn{conditext} accepte une Ã©toile en troisiÃ¨me argument, que l'on utilise sous la forme atypique suivante :

\begin{codeblock}
    \codestm{\cmd{begin}[\argm{conditext}\argm{french}]*}
    \codestm{Tous les Ãªtres humains naissent libres et Ã©gaux en dignitÃ© et en droits. Ils sont douÃ©s de raison et de conscience et doivent agir les uns envers les autres dans un esprit de fraternitÃ©.\cmd{end}[\argm{conditext}]}
    \codestm{}
    \codestm{\cmd{begin}[\argm{conditext}\argm{spanish}]*}
    \codestm{Todos los seres humanos nacen libres e iguales en dignidad y derechos y, dotados como estÃ¡n de razÃ³n y conciencia, deben comportarse fraternalmente los unos con los otros.\cmd{end}[\argm{conditext}]}
\end{codeblock}

\resumepar Dans ce cas prÃ©cis, l'Ã©toile indique que l'article~2 de la \titcit{DÃ©claration des droits de l'homme} en franÃ§ais et en espagnol doit Ãªtre ignorÃ© par les instructions respectives \cmd{setcondispace}[\argm{french}] et \cmd{setcondispace}[\argm{spanish}].

D'une faÃ§on plus gÃ©nÃ©rale, l'astÃ©risque d'un \xenvn{conditext} -- dont la position atypique signifie que c'est la \emph{prise en compte de la propriÃ©tÃ© de condition} qui est affectÃ©e -- permet : soit de ne pas faire figurer dans le document gÃ©nÃ©rÃ© une forme substituable normalement dÃ©signÃ©e pour y figurer, soit Ã&nbsp; l'inverse de faire figurer dans le document gÃ©nÃ©rÃ© une forme substituable qui n'est en principe pas dÃ©signÃ©e pour y figurer.

\tutostep
Nous voici dÃ©sormais familiarisÃ©s avec l'\xenvn{conditext} et la \xcmdn{setcondispace}, deux dispositifs fondamentaux du \xpack{conditext}. Avant d'aller plus loin et d'aborder la crÃ©ation de domaines de condition et de propriÃ©tÃ©s de condition, indispensable dÃ¨s que l'on a un besoin d'une gestion de contenu conditionnelle spÃ©cifique, ajoutons encore deux points.

Ainsi que cela a Ã©tÃ© prÃ©cisÃ© au dÃ©but de cet exemple, tant qu'aucun espace de condition n'est dÃ©fini, aucun contenu d'\xenvn{conditext} ne figure dans le document gÃ©nÃ©rÃ©. Ceci correspond en fait Ã&nbsp; un comportement par dÃ©faut proposÃ© par le \xpack{conditext}. Il est possible de le modifier en dÃ©clarant le \xpack{conditext} avec l'\xvalopt{defaultdisplayall} sous la forme :

\codestm*{\cmd{usepackage}[\argo{defaultdisplayall}\argm{conditext}]}

En outre -- mÃªme si cette pratique n'est pas vÃ©ritablement rÃ©guliÃ¨re, et encore moins efficace dans un document source de taille importante comportant beaucoup d'instructions \envn{conditext} --, il est possible d'utiliser l'argument~\val{*} propre aux environnements \envn{conditext} \emph{sans dÃ©finir d'espace de condition}, afin de forcer \quo{directement} l'affichage ou le non affichage d'une ou plusieurs formes substituables dans le document gÃ©nÃ©rÃ©.

\section{Exemple commentÃ© d'utilisation \no 2 : un document Ã&nbsp; gestion conditionnelle multiple}\label{CtDoc_Tuto_Multicondition}
Pour les besoins de ce nouvel exemple, nous partons sur l'idÃ©e que nous avons Ã&nbsp; rÃ©diger un document prÃ©paratoire relatif Ã&nbsp; un projet d'application informatique, comportant des illustrations, avec du contenu textuel fixe et du contenu textuel diffÃ©renciÃ© par dÃ©partement (ici, le dÃ©veloppement, la conception de la base de donnÃ©es et la conception graphique). Un document devra Ãªtre gÃ©nÃ©rÃ© pour chacun de ces dÃ©partements avec en outre, pour chaque dÃ©partement concernÃ©, une version avec illustrations et un version sans illustration. Nous sommes dans le cas typique d'une gestion conditionnelle multiple.

Pour des raisons de commoditÃ©, nous reprÃ©senterons le texte sous la forme de quelques paragraphes en latin simulÃ©. Les illustrations correspondront Ã&nbsp; des fichiers image, simulÃ©s eux aussi, et supposÃ©s Ãªtre placÃ©s dans le mÃªme rÃ©pertoire que celui du document source.

\tutostep
Ã€ part pour la gestion conditionnelle multilingue (que nous avons abordÃ©e dans l'exemple prÃ©cÃ©dent) et pour une gestion conditionnelle gÃ©nÃ©raliste (qui ne sera pas abordÃ©e dans ce tutoriel), \pack{conditext} ne fournit aucun autre Ã©lÃ©ment prÃ©dÃ©fini, mais offre la possibilitÃ© d'en crÃ©er Ã&nbsp; volontÃ© pour rÃ©pondre aux besoins de gestion de contenu conditionnel les plus spÃ©cifiques.

En un premier temps, nous allons crÃ©er les domaines de condition et les propriÃ©tÃ©s de condition nÃ©cessaires Ã&nbsp; la gestion conditionnelle de notre exemple.

Pour rappel, un domaine de condition est une thÃ©matique fonctionnelle sous laquelle l'on peut regrouper les formes substituables qui sont liÃ©es par une mÃªme sÃ©mantique. Il nous faut deux domaines de condition, l'un pour une thÃ©matique \quo{dÃ©partements} et l'autre pour une thÃ©matique \quo{prÃ©sentation}. Nous les crÃ©ons au moyen des instructions suivantes, placÃ©es dans le prÃ©ambule :

\begin{codeblock}
    \codestm{\cmd{newcondifield}[\argm{departement}]}
    \codestm{\cmd{newcondifield}[\argm{presentation}]}
\end{codeblock}

La forme des noms \val{departement} et \val{presentation} (de mÃªme que celle des intitulÃ©s de propriÃ©tÃ©s de condition dÃ©finis plus bas) n'est peut-Ãªtre pas la plus judicieuse possible mais elle suffit pour notre exemple. De maniÃ¨re gÃ©nÃ©rale, le choix de l'intitulÃ© d'un domaine de condition ou d'une propriÃ©tÃ© de condition est laissÃ© Ã&nbsp; l'apprÃ©ciation de l'utilisateur, avec cela que l'on ne peut utiliser que des caractÃ¨res alphabÃ©tiques, avec ou sans majuscules, sans espace, sans caractÃ¨res accentuÃ©s ou Ã&nbsp; diacritiques.

Passons maintenant aux propriÃ©tÃ©s de condition. Pour rappel, une propriÃ©tÃ© de condition permet de caractÃ©riser fonctionnellement chaque forme substituable d'un domaine de condition donnÃ©. Nous crÃ©ons celles relatives aux dÃ©partements au moyen des instructions suivantes :

\begin{codeblock}
    \codestm{\cmd{newcondiprop}[\argm{departement}\argm{develop}]}
    \codestm{\cmd{newcondiprop}[\argm{departement}\argm{bdonnees}]}
    \codestm{\cmd{newcondiprop}[\argm{departement}\argm{graphisme}]}
\end{codeblock}

\resumepar Il y a une propriÃ©tÃ© de condition par dÃ©partement, puisque dans le cadre de notre exemple, la gestion conditionnelle par dÃ©partements implique que toute forme substituable du domaine de condition \val{departement} soit susceptible de concerner soit le dÃ©veloppement, soit la conception de la base de donnÃ©es, soit encore la conception graphique. Lorsque l'on crÃ©e une propriÃ©tÃ© de condition, outre le nom de la propriÃ©tÃ© en tant que telle, il faut \emph{systÃ©matiquement spÃ©cifier le domaine de condition} auquel l'on souhaite rattacher la propriÃ©tÃ© de condition concernÃ©e.

La gestion conditionnelle avec et sans illustration nÃ©cessite, elle, une rÃ©flexion prÃ©liminaire. L'on pourrait Ãªtre tentÃ© en effet de dÃ©finir d'emblÃ©e deux propriÃ©tÃ©s de condition, l'une pour caractÃ©riser les formes substituables avec illustration, et l'autre, les formes substituables sans illustration. Or, dans ce cas, cela reviendrait Ã&nbsp; devoir par la suite dÃ©finir un espace de condition testant les formes substituables avec illustration et une espace de condition testant les formes substituables sans illustration, soit un test en doublon inversÃ©, inutile et surtout source potentielle de confusion.

De maniÃ¨re gÃ©nÃ©rale, dans le cas d'une gestion conditionnelle binaire (avec/sans etc.), une seule propriÃ©tÃ© de condition s'avÃ¨re la plupart du temps suffisante. Relativement au domaine de condition \val{presentation}, nous ne crÃ©ons donc qu'une seule propriÃ©tÃ© de condition au moyen de l'instruction suivante :

\begin{codeblock}
    \codestm{\cmd{newcondiprop}[\argm{presentation}\argm{illustr}]}
\end{codeblock}

En rÃ©sumÃ©, la crÃ©ation de domaines de condition s'effectue au moyen de la \xcmdn{newcondifield} ; celle des propriÃ©tÃ©s de condition, au moyen de la \xcmdn{newcondiprop}.

Ã€ noter que les instructions \cmdn{newcondifield} et \cmdn{newcondiprop} doivent obligatoirement figurer avant toute autre instruction : si, dans un \xenvn{conditext} ou une commande telle que \cmdn{setcondispace}, l'on spÃ©cifie un domaine de condition ou une propriÃ©tÃ© de condition non crÃ©Ã©e prÃ©alablement, un message d'erreur sera dÃ©clenchÃ© lors de la compilation.

\tutostep
Voici maintenant le document source de notre exemple, incluant les prÃ©cÃ©dentes instructions :

\begin{codeblock}
\codestm{\cmd{documentclass}[\argm{article}]}
\codestm{\cmd{usepackage}[\argo{french}\argm{babel}]}
\codestm{\cmd{usepackage}[\argm{graphicx}]}
\codestm{\cmd{usepackage}[\argm{conditext}]}
\codestm{}
\codestm{\cmd{newcondifield}[\argm{departement}]}
\codestm{\cmd{newcondifield}[\argm{presentation}]}
\codestm{\cmd{newcondiprop}[\argm{departement}\argm{develop}]}
\codestm{\cmd{newcondiprop}[\argm{departement}\argm{bdonnees}]}
\codestm{\cmd{newcondiprop}[\argm{departement}\argm{graphisme}]}
\codestm{\cmd{newcondiprop}[\argm{presentation}\argm{illustr}]}
\codestm{}
\codestm{\cmd{begin}[\argm{document}]
\codestm{}
\codestm{\lipsum[1][1-5]}
\codestm{}
\codestm{\cmd{begin}[\argm{conditext}\argo{presentation}\argm{illustr}]}
    \begin{subcodeblock}
    \codestm{\cmd{includegraphics}[\argm{image1}]}
    \end{subcodeblock}
\codestm{\cmd{end}[\argm{conditext}]}
\codestm{}
\codestm{\cmd{begin}[\argm{conditext}\argo{departement}\argm{bdonnees}]}
    \begin{subcodeblock}
    \codestm{\lipsum[2][1-3]}
    \codestm{}
    \codestm{\cmd{begin}[\argm{conditext}\argo{presentation}\argm{illustr}]}
        \begin{subcodeblock}
        \codestm{\cmd{includegraphics}[\argm{image2}]}
        \end{subcodeblock}
    \codestm{\cmd{end}[\argm{conditext}]}
    \codestm{}
    \codestm{\lipsum[2][4-5]}
    \end{subcodeblock}
\codestm{\cmd{end}[\argm{conditext}]}
\codestm{}
\codestm{\cmd{begin}[\argm{conditext}\argo{departement}\argm{develop}]}
    \begin{subcodeblock}
    \codestm{\lipsum[3][1-3]}
    \codestm{}
    \codestm{\cmd{begin}[\argm{conditext}\argo{presentation}\argm{illustr}]}
        \begin{subcodeblock}
        \codestm{\cmd{includegraphics}[\argm{image3}]}
        \end{subcodeblock}
    \codestm{\cmd{end}[\argm{conditext}]}
    \codestm{}
    \codestm{\lipsum[3][4-5]}
    \end{subcodeblock}
\codestm{\cmd{end}[\argm{conditext}]}
\codestm{}
\codestm{\cmd{begin}[\argm{conditext}\argo{departement}\argm{develop}]}
    \begin{subcodeblock}
    \codestm{\lipsum[4][1-5]}
    \end{subcodeblock}
\cmd{end}[\argm{conditext}]}
\codestm{}
\codestm{\cmd{begin}[\argm{conditext}\argo{departement}\argm{graphisme}]}
    \begin{subcodeblock}
    \codestm{\lipsum[5][1-3]}
    \codestm{}
    \codestm{\cmd{begin}[\argm{conditext}\argo{presentation}\argm{illustr}]}
        \begin{subcodeblock}
        \codestm{\cmd{includegraphics}[\argm{image4}]}
        \end{subcodeblock}
    \codestm{\cmd{end}[\argm{conditext}]}
    \codestm{}
    \codestm{\lipsum[5][4-5]}
    \end{subcodeblock}
\codestm{\cmd{end}[\argm{conditext}]}
\codestm{}
\codestm{\lipsum[6][1-3]}
\codestm{}
\codestm{\cmd{end}[\argm{document}]}
\end{codeblock}

\resumepar (Le \xpack{graphicx} est nÃ©cessaire pour pouvoir utiliser la \xcmdn{includegraphics} permettant l'insertion des images dans le document.)

Remarquons avant tout que les environnements \envn{conditext} relatifs Ã&nbsp; la gestion conditionnelle des illustrations sont \emph{imbriquÃ©s} dans les environnements \envn{conditext} relatifs Ã&nbsp; la gestion conditionnelle des textes Ã&nbsp; destination des diffÃ©rents dÃ©partements.

L'on peut ainsi Ã&nbsp; volontÃ© et dans les limites de l'utilitÃ©, imbriquer diffÃ©rents environnements \envn{conditext}. La sÃ©mantique d'imbrication et son niveau de \emph{profondeur} sont laissÃ©s Ã&nbsp; l'apprÃ©ciation de l'utilisateur -- la seule contrainte Ã©tant que l'on ne peut imbriquer des environnments \envn{conditext} avec un mÃªme domaine de condition, sous risque d'effets inattendus ou indÃ©sirables.

Pour l'instant, aucun espace de condition n'est dÃ©fini, ce qui signifie que si le document source est compilÃ© tel quel, seuls, les premier et dernier paragraphes figureront dans le document gÃ©nÃ©rÃ©, puisqu'ils ne sont placÃ©s dans aucun \xenvn{conditext} (pour rappel, par dÃ©faut, en l'absence d'un espace de condition dÃ©fini, aucune forme substituable ne figure dans le document gÃ©nÃ©rÃ©).

\tutostep
Supposons que nous ayons Ã&nbsp; gÃ©nÃ©rer un document comportant le texte spÃ©cifique au dÃ©veloppement, accompagnÃ© de son illustration. Deux espaces de condition nÃ©cessitent d'Ãªtre crÃ©Ã©s, l'un pour gÃ©rer le texte spÃ©cifique au dÃ©veloppement et l'autre, pour gÃ©rer l'illustration, soit :

\begin{codeblock}
    \codestm{\cmd{setcondispace}[\argo{departement}\argm{develop}]}
    \codestm{\cmd{setcondispace}[\argo{presentation}\argm{illustr}]}
\end{codeblock}

De la sorte, aprÃ¨s compilation, le document gÃ©nÃ©rÃ© contient, conformÃ©ment Ã&nbsp; nos attentes :

\begin{ltext}
\ltextline{Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus
elit, vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur dic-
tum gravida mauris. Nam arcu libero, nonummy eget, consectetuer id,
vulputate a, magna. Donec vehicula augue eu neque.}
\ltextline{}
\ltextline{(image1)}
\ltextline{}
\ltextline{Nulla malesuada porttitor diam. Donec felis erat, congue non, vo-
lutpat at, tincidunt tristique, libero. Vivamus viverra fermentum felis.}
\ltextline{}
\ltextline{(image3)}
\ltextline{}
\ltextline{Donec nonummy pellentesque ante. Phasellus adipiscing semper elit.}
\ltextline{}
\ltextline{Quisque ullamcorper placerat ipsum. Cras nibh. Morbi vel justo vi-
tae lacus tincidunt ultrices. Lorem ipsum dolor sit amet, consectetuer
adipiscing elit. In hac habitasse platea dictumst.}
\ltextline{}
\ltextline{Suspendisse vel felis. Ut lorem lorem, interdum eu, tincidunt sit amet,
laoreet vitae, arcu. Aenean faucibus pede eu ante.}
\end{ltext}

Si nous ne souhaitons aucune illustration dans le document gÃ©nÃ©rÃ©, il suffit alors de retirer l'instruction \cmd{setcondispace}[\argo{presentation}\argm{illustr}].

Maintenant, pour une raison donnÃ©e, nous pourrions vouloir exclure l'illustration accompagnant le contenu textuel spÃ©cifique au dÃ©veloppement, mais conserver celle qui accompagne le contenu textuel fixe. Deux solution existent dans ce cas, la premiÃ¨re Ã©tant plus \quo{lisible} que la seconde :

Soit l'on maintient l'instruction \cmd{setcondispace}[\argo{presentation}\argm{illustr}] et l'on utilise l'Ã©toile en troisiÃ¨me argument de l'\xenvn{conditext} qui gÃ¨re l'illustration de la forme substituable relative au dÃ©veloppement, sous la forme :

\begin{codeblock}
\codestm{\cmd{begin}[\argm{conditext}\argo{presentation}\argm{illustr}*]}
    \begin{subcodeblock}
    \codestm{\cmd{includegraphics}[\argm{image3}]}
    \end{subcodeblock}
\codestm{\cmd{end}[\argm{conditext}]}
\end{codeblock}

Soit l'on retire l'instruction \cmd{setcondispace}[\argo{presentation}\argm{illustr}] et l'on utilise l'Ã©toile en troisiÃ¨me argument de l'\xenvn{conditext} qui gÃ¨re l'illustration du contenu textuel \emph{fixe}, sous la forme  :

\begin{codeblock}
\codestm{\cmd{begin}[\argm{conditext}\argo{presentation}\argm{illustr}*]}
    \begin{subcodeblock}
    \codestm{\cmd{includegraphics}[\argm{image1}]}
    \end{subcodeblock}
\codestm{\cmd{end}[\argm{conditext}]}
\end{codeblock}

De maniÃ¨re gÃ©nÃ©rale, lorsque l'on est amenÃ© Ã&nbsp; modifier individuellement la prise en compte d'un domaine et d'une propriÃ©tÃ© de condition dans une instruction \envn{conditext}, il est prÃ©fÃ©rable pour des raisons de lisibilitÃ© de le faire dans un contexte d'espace de condition dÃ©fini, plutÃ´t qu'en l'absence d'espace de condition.

\tutostep
Ce prÃ©sent exemple nous a familiarisÃ©s avec la crÃ©ation de domaines de condition et de propriÃ©tÃ©s de condition, ainsi qu'avec la pratique d'instructions \envn{conditext} imbriquÃ©es.

Avant de poursuivre avec un troisiÃ¨me et dernier exemple, et d'y aborder l'utilisation de la commande la plus particuliÃ¨re du \xpack{conditext}, voici quelques remarques complÃ©mentaires.

Dans les documents longs Ã&nbsp; contenu conditionnel, les formes substituables peuvent Ãªtre nombreuses, et par la mÃªme occasion, un certain nombre d'instructions \envn{conditext} est susceptible de figurer dans le document source, impliquant une saisie fastidieuse lorsqu'il s'agit notamment de spÃ©cifier un mÃªme domaine de condition de multiples fois.

Certes, l'on peut utiliser, dans ce cas comme dans bien d'autres d'ailleurs, les fonctions copier-coller de l'Ã©diteur \Latex utilisÃ©. Toutefois, le \xpack{conditext} propose la possibilitÃ© d'utiliser un \conc{domaine de condition implicite}, Ã&nbsp; raison d'un par document source -- ce qui, outre d'exonÃ©rer l'utilisateur d'une saisie fastidieuse, rend aussi le code plus lisible dans la plupart des cas.

Pour reprendre notre exemple, si nous souhaitons ne pas avoir Ã&nbsp; saisir (et ne pas voir figurer) le domaine de condition \val{departement} dans les instructions \envn{conditext}, nous pouvons ajouter l'instruction suivante dans le prÃ©ambule :

\begin{codeblock}
    \codestm{\cmd{setimplicitcondifield}[\argm{departement}]}
\end{codeblock}

DÃ©sormais, toutes les instructions \envn{conditext} permettant de gÃ©rer les formes substituables propres aux diffÃ©rents dÃ©partements pourront avoir la forme suivante :

\begin{codeblock}
    \codestm{\cmd{begin}[\argm{conditext}\argm{develop}]}
\end{codeblock}

\resumepar ou

\begin{codeblock}
    \codestm{\cmd{begin}[\argm{conditext}\argm{bdonnees}]}
\end{codeblock}

\resumepar ou

\begin{codeblock}
    \codestm{\cmd{begin}[\argm{conditext}\argm{graphisme}]}
\end{codeblock}

Ã€ noter que, dans un tel cas de figure, il reste toujours possible, bien qu'inutile, de spÃ©cifier \val{departement} explicitement.

Cela Ã©tant, dans la mesure oÃ¹ il ne peut exister qu'un seul domaine de condition implicite par document source, Ã&nbsp; supposer que -- toujours dans le cas de notre exemple --, nous soyons amenÃ©s Ã&nbsp; devoir gÃ©rer un contenu conditionnel multilingue en plus de ceux liÃ©s aux dÃ©partements et aux illustrations, nous devrons alors \emph{spÃ©cifier \val{language} explicitement} comme domaine de condition dans les instructions \envn{conditext} et \cmdn{setcondispace} concernÃ©es par la gestion conditionnelle multilingue.

Le domaine de condition \val{language} est un domaine de condition prÃ©dÃ©fini fourni avec le \xpack{conditext}. Par dÃ©faut, c'est lui est est spÃ©cifiÃ© comme domaine de condition implicite ; toute dÃ©finition d'un domaine de condition implicite autre que \val{language} (comme ici avec \val{departement}) revient donc Ã&nbsp; modifier ce comportement par dÃ©faut.

\section{Exemple commentÃ© d'utilisation \no 3 : une mini-gestion conditionnelle}
\subsection{}
Imaginons que nous ayons Ã&nbsp; rÃ©diger un texte utilisant un certain nombre d'expressions techniques rÃ©currentes, comme \quo{texte conditionnel}, \quo{domaine de condition} etc. Dans ce genre de cas, la solution trÃ¨s souvent adoptÃ©e pour faciliter la saisie consiste Ã&nbsp; crÃ©er une commande d'abrÃ©viation, telle que par exemple \cmdn{tc} qui, lors de la compilation, permettra d'afficher \quo{texte conditionnel} dans le document gÃ©nÃ©rÃ©.

Or, la limite de ces commandes d'abrÃ©viation se rencontre dÃ¨s que l'on est amenÃ© Ã&nbsp; devoir gÃ©rer un contenu conditionnel multilingue. Ainsi, en l'Ã©tat, notre \xcmdn{tc} n'est exploitable que dans un texte en franÃ§ais. Ã€ la rigueur, l'on pourrait crÃ©er autant de commandes d'abrÃ©viation pour une expression donnÃ©e qu'il y aurait de langues concernÃ©es, mais, dans un long document multilingue et pour un nombre important d'expressions diffÃ©rentes, l'utilisation de ces commandes (sans parler de leur administration en cas de modification) deviendrait trÃ¨s vite aussi fastidieuse que la saisie rÃ©pÃ©tÃ©e de l'expression elle-mÃªme, qui est pourtant ce que nous souhaitons Ã©viter.

La \xcmdn{miniconditext} permet de remÃ©dier Ã&nbsp; cette limite.

\tutostep
Partons sur l'idÃ©e que nous avons pour objectif de gÃ©nÃ©rer, Ã&nbsp; partir d'un seul document source Ã&nbsp; contenu conditionnel multilingue -- franÃ§ais, anglais, espagnol et italien pour les besoins de notre exemple --, diffÃ©rents documents contenant chacun une des versions linguistiques du texte.

Dans le cas de notre exemple, plutÃ´t qu'une commande dÃ©finie sous la forme \cmd{NewDocumentCommand}[\cmdn{tc}\argmvoid{}\argm{texte conditionnel}] et dÃ©clinÃ©e en franÃ§ais, anglais, espagnol et italien, nous allons pouvoir, grÃ¢ce Ã&nbsp; la \xcmdn{miniconditext}, inscrire diffÃ©rents \quo{niveaux} linguistiques Ã&nbsp; l'interne mÃªme d'une seule commande d'abrÃ©viation. Choisissons \cmdn{tcml} (\cmdnx{ml} pour \quo{multilingue}) comme nom de la commande et dÃ©finissons-la de la maniÃ¨re suivante :

\begin{codeblock}
\codestm{\cmd{NewDocumentCommand}[\cmdn{tcml}\argmvoid{}]\argmbegin{}}
    \begin{subcodeblock}
    \codestm{\cmd{miniconditext}[\argm{texte conditionnel}]}
    \codestm{\argo{conditional text}}
    \codestm{\argovoid{}}
    \codestm{\argo{texto condicional}}
    \codestm{\argo{testo condizionale}\argmend{}}
    \end{subcodeblock}
\end{codeblock}

PrÃ©cisons avant tout que le code qui prÃ©cÃ¨de est supposÃ© placÃ© dans le prÃ©ambule.

Cela Ã©tant, l'on remarquera en premier lieu que l'expression en franÃ§ais est spÃ©cifiÃ©e en tant qu'argument obligatoire de \cmdn{miniconditext} ; que les expressions en anglais, espagnol et italien sont spÃ©cifiÃ©es en tant qu'arguments optionnels de \cmdn{miniconditext} ; et qu'un argument vide figure entre l'argument correspondant Ã&nbsp; l'expression en anglais et l'argument correspondant Ã&nbsp; l'expression en espagnol.

En fait, nous utilisons ici les modalitÃ©s par dÃ©faut de \cmdn{miniconditext}, destinÃ©es Ã&nbsp; une gestion conditionnelle multilingue (nous verrons plus bas comment l'on peut utiliser \cmdn{miniconditext} dans d'autres contextes).

Chaque argument permet de spÃ©cifier une forme substituable dans une langue donnÃ©e, sur la base de 9 arguments au total -- tous optionnels sauf le premier --, correspondant respectivement et dans l'ordre, aux langues franÃ§aise, anglaise, allemande, espagnole, italienne, portuguaise, nÃ©erlandaise, danoise et norvÃ©gienne. Bien que non explicites dans la syntaxe de \cmdn{miniconditext}, l'on doit toujours avoir Ã&nbsp; l'esprit les correspondances entre les arguments et les langues pour pouvoir dÃ»ment spÃ©cifier les formes substituables.

L'argument vide qui figure dans le code correspond donc Ã&nbsp; la langue allemande ; il est laissÃ© vide puisque nous n'avons pas besoin de gÃ©rer cette langue (ni les langues portuguaise, nÃ©erlandaise etc.) dans le document source. Ã€ noter que, de faÃ§on gÃ©nÃ©rale, tout argument optionnel non renseignÃ© placÃ© entre un ou plusieurs arguments renseignÃ©s doit figurer sous la forme \argovoid{}.

\tutostep
Notre \xcmdn{tcml} ainsi dÃ©finie peut dÃ©sormais Ãªtre utilisÃ©e Ã&nbsp; volontÃ©, comme dans le document source ci-aprÃ¨s.

Pour constituer ce document source, nous avons utilisÃ© un petit texte sous traductions anglaise, espagnole et italienne fournies par le site \site*{Reverso}, mais il pourrait tout aussi bien s'agir de textes diffÃ©rents d'une langue Ã&nbsp; l'autre puisque la \xcmdn{tcml} y serait utilisÃ©e Ã&nbsp; l'identique.

\begin{codeblock}
\codestm{\cmd{documentclass}[\argm{article}]}
\codestm{\cmd{usepackage}[\argo{english,spanish,italian,french}\argm{babel}]}
\codestm{\cmd{usepackage}[\argm{conditext}]}
\codestm{}
\codestm{\cmd{NewDocumentCommand}[\cmdn{tcml}\argmvoid{}]\argmbegin{}}
    \begin{subcodeblock}
    \codestm{\cmd{miniconditext}[\argm{texte conditionnel}]}
    \codestm{\argo{conditional text}}
    \codestm{\argovoid{}}
    \codestm{\argo{texto condicional}}
    \codestm{\argo{testo condizionale}\argmend{}}
    \end{subcodeblock}
\codestm{}
\codestm{\cmd{setcondispace}[\argm{spanish}]}
\codestm{}
\codestm{\cmd{begin}[\argm{document}]}
\codestm{}
\codestm{\cmd{begin}[\argm{conditext}\argm{french}]}
    \begin{subcodeblock}
    \codestm{Vous pouvez crÃ©er un champ \cmd{tcml}[\argmvoid{}] qui affiche le mot "pages" au lieu du mot "page" dÃ¨s lors que le document comporte plusieurs pages. Pour afficher un \cmd{tcml}[\argmvoid{}] basÃ© sur le nombre de pages...}
    \end{subcodeblock}
\codestm{\cmd{end}[\argm{conditext}]}
\codestm{}
\codestm{\cmd{begin}[\argm{conditext}\argm{english}]}
    \begin{subcodeblock}
    \codestm{You can create a \cmd{tcml}[\argmvoid{}] field that displays the word "pages" instead of "page" if your document contains more than one page. To display \cmd{tcml}[\argmvoid{}] based on the number of pages...}
    \end{subcodeblock}
\codestm{\cmd{end}[\argm{conditext}]}
\codestm{}
\codestm{\cmd{begin}[\argm{conditext}\argm{spanish}]}
    \begin{subcodeblock}
    \codestm{Puede crear un campo de \cmd{tcml}[\argmvoid{}] que muestre la palabra "pÃ¡ginas" en lugar de "pÃ¡gina" si el documento contiene mÃ¡s de una pÃ¡gina. Para mostrar un \cmd{tcml}[\argmvoid{}] basado en el nÃºmero de pÃ¡ginas...}
    \end{subcodeblock}
\codestm{\cmd{end}[\argm{conditext}]}
\codestm{}
\codestm{\cmd{begin}[\argm{conditext}\argm{italian}]}
    \begin{subcodeblock}
    \codestm{Ãˆ possibile creare un campo \cmd{tcml}[\argmvoid{}] che visualizza la parola "pagine" invece della parola "pagina" se il documento ha piÃ¹ pagine. Per visualizzare un \cmd{tcml}[\argmvoid{}] basato sul numero di pagine...}
    \end{subcodeblock}
\codestm{\cmd{end}[\argm{conditext}]}
\codestm{}
\codestm{\cmd{end}[\argm{document}]}
\end{codeblock}

Si nous compilons en l'Ã©tat, nous obtenons bien un document comportant le texte espagnol, conformÃ©ment Ã&nbsp; l'instruction \cmd{setcondispace}[\argm{spanish}] figurant dans le prÃ©ambule. Toutefois, \quo{texto condicional} ne figure pas pour autant. En fait, il manque l'instruction spÃ©cifique permettant d'intÃ©grer l'expression dans le texte.

L'on dÃ©signe quelle forme substituable spÃ©cifiÃ©e dans \cmdn{miniconditext} doit figurer dans le document gÃ©nÃ©rÃ©, au moyen de la \xcmdn{setminicondispace}. Ainsi que son nom l'indique, \cmdn{setminicondispace} sert Ã&nbsp; dÃ©finir un espace de condition permettant de dÃ©signer une forme substituable parmi celles saisies dans \cmdn{miniconditext}.

Dans le cadre de notre exemple, nous devons ajouter, avant ou aprÃ¨s \cmd{setcondispace}[\argm{spanish}] mais \emph{aprÃ¨s} la dÃ©finition de la \xcmdn{tcml}, l'instruction suivante :

\begin{codeblock}
\codestm{\cmd{setminicondispace}[\argm{spanish}]}
\end{codeblock}

De la sorte, le document gÃ©nÃ©rÃ© correspond dÃ©sormais Ã&nbsp; :

\begin{ltext}
\ltextline{Puede crear un campo de texto condicional que muestre la palabra "pÃ¡ginas" en lugar de "pÃ¡gina" si el documento contiene mÃ¡s de una pÃ¡gina. Para mostrar un texto condicional basado en el nÃºmero de pÃ¡ginas...}
\end{ltext}

Les instructions \cmdn{setcondispace} et \cmdn{setminicondispace} modifiÃ©es de la faÃ§on suivante :

\begin{codeblock}
\codestm{\cmd{setcondispace}[\argm{english}]}
\codestm{\cmd{setminicondispace}[\argm{english}]}
\end{codeblock}

permettront Ã&nbsp; leur tour de gÃ©nÃ©rer un document contenant :

\begin{ltext}
\ltextline{You can create a conditional text field that displays the word "pages" instead of "page" if your document contains more than one page. To display conditional text based on the number of pages...}
\end{ltext}

\resumepar Et ainsi de suite.

Ã€ noter que, dans une instruction \cmdn{setminicondispace} utilisÃ©e pour une gestion conditionnelle multilingue, il faut toujours dÃ©signer la forme substituable qui doit figurer dans le document au moyen de l'appellation linguistique propre au \xpack{babel} (ici, respectivement \val{spanish} et \val{english}).

Il n'est pas possible de dÃ©finir plusieurs \quo{mini-espaces de condition}. Si plusieurs instructions \cmdn{setminicondispace} coexistent dans le prÃ©ambule, c'est la derniÃ¨re qui sera prise en compte, avec le risque Ã©ventuel d'effets inattendus ou indÃ©sirables.

\subsection{}
L'on peut Ã©galement utiliser \cmdn{miniconditext} dans des contextes de gestion conditionnelle autres qu'une gestion conditionnelle multilingue. Nous allons aborder dans cette derniÃ¨re partie du tutoriel, la mise en oeuvre d'une mini-gestion conditionnelle spÃ©cifique.

Cette mise en oeuvre sera aussi un peu plus complexe que toutes celles que nous avons pu aborder dans les prÃ©cÃ©dents exemples, dans la mesure oÃ¹ elle illustre la maniÃ¨re dont on peut exploiter certains formatages typographiques plus ou moins sophistiquÃ©s dans le cadre d'une mini-gestion conditionnelle.

Imaginons que nous ayons Ã&nbsp; rÃ©diger un rapport d'activitÃ©, dont le texte doit pouvoir contenir Ã&nbsp; divers endroits des commentaires Ã&nbsp; l'attention de diffÃ©rents services (comptabilitÃ©, communication), de maniÃ¨re distincte. En d'autres termes, notre objectif est, Ã&nbsp; partir d'un mÃªme document source, de pouvoir gÃ©nÃ©rer trois documents : l'un, qui sera Ã&nbsp; usage gÃ©nÃ©ral ;  l'autre accompagnÃ© de notes Ã&nbsp; l'attention du service comptabilitÃ© (avec usage de la couleur pourpre), le dernier accompagnÃ© de notes Ã&nbsp; l'attention service communication (avec usage de la couleur bleue).

La mini-gestion conditionnelle, avec les commandes qui lui sont propres, est Ã&nbsp; mÃªme de rÃ©pondre Ã&nbsp; ce besoin, moyennant certains amÃ©nagements.

Ceci implique d'abord de bien comprendre le fonctionnement de la \xcmdn{miniconditext}. Ainsi que nous l'avons vu prÃ©cÃ©demment, la \xcmdn{miniconditext} possÃ¨de un argument obligatoire et 8 autres arguments optionnels, chacun de ces arguments servant Ã&nbsp; spÃ©cifier une forme substituable. Il n'y a pas Ã&nbsp; proprement parler de domaine de condition lorsque l'on utilise la \xcmdn{miniconditext} ; plus exactement, \val{miniconditext} est un domaine de condition en soi.

D'autre part, les propriÃ©tÃ©s de condition sont invariablement au nombre de 9, Ã&nbsp; raison d'une par argument, et ont par dÃ©faut une sÃ©mantique linguistique (respectivement et par ordre d'argument : \val{french}, \val{english},  \val{german},  \val{spanish},  \val{italian},  \val{portuguese},  \val{dutch},  \val{danish} et \val{norsk}).

C'est essentiellement sur les propriÃ©tÃ©s de condition que doivent porter les modifications, ainsi que nous allons le voir maintenant en dÃ©tail.

\tutostep
Voici le document source de notre exemple ; pour des raisons de commoditÃ©, nous reprÃ©sentons le texte sous la forme de quelques paragraphes en latin simulÃ© :

\begin{codeblock}
\codestm{\cmd{documentclass}[\argm{article}]}
\codestm{\cmd{usepackage}[\argo{french}\argm{babel}]}
\codestm{\cmd{usepackage}[\argm{xcolor}]}
\codestm{\cmd{usepackage}[\argm{soul}]}
\codestm{\cmd{usepackage}[\argm{conditext}]}
\codestm{}
\codestm{\cmd{resettingminicondiprops}}
\codestm{\cmd{setminicondipropi}[\argm{general}]}
\codestm{\cmd{setminicondipropii}[\argm{compta}]}
\codestm{\cmd{setminicondipropiii}[\argm{com}]}
\codestm{}
\codestm{\cmd{NewDocumentCommand}[\cmdn{notecompta}\argm{m O\argm{merci de bien vouloir fournir le graphique correspondant}}]\argmbegin{}}
    \begin{subcodeblock}
    \codestm{\cmd{miniconditext}[\argm{\#1}]}
    \codestm{\argo{\cmd{ul}[\argm{\#1}]\cmd{textcolor}[\argm{purple}\argm{\$\cmd{rightarrow}\$ \cmd{emph}[\argm{\#2}]}]}\argmend{}}
    \end{subcodeblock}
\codestm{}
\codestm{\cmd{NewDocumentCommand}[\cmdn{notecom}\argm{m O\argm{merci de bien vouloir fournir un image}}]\argmbegin{}}
    \begin{subcodeblock}
    \codestm{\cmd{miniconditext}[\argm{\#1}]}
    \codestm{\argovoid{}}
    \codestm{\argo{\cmd{ul}[\argm{\#1}]\cmd{textcolor}[\argm{blue}\argm{\$\cmd{rightarrow}\$ \cmd{emph}[\argm{\#2}]}]}\argmend{}}
    \end{subcodeblock}
\codestm{}
\codestm{\cmd{setminicondispace}[\argm{general}]}
\codestm{}
\codestm{\cmd{begin}[\argm{document}]
\codestm{}
    \begin{subcodeblock}
    \codestm{\cmd{notecom}[\argm{Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur dictum gravida mauris. Nam arcu libero, nonummy eget, consectetuer id, vulputate a, magna. Donec vehicula augue eu neque.}]}
    \codestm{}
    \codestm{Nam dui ligula, fringilla a, euismod sodales, sollicitudin vel, wisi. Morbi auctor lorem non justo. Nam lacus libero, pretium at, lobortis vitae, ultricies et, \cmd{notecompta}[\argm{tellus}]. Donec aliquet, tortor sed accumsan bibendum, erat ligula aliquet magna, vitae ornare odio metus a mi. Morbi ac orci et nisl hendrerit mollis.}
    \codestm{}
    \codestm{Nulla malesuada porttitor diam. Donec felis erat, congue non, volutpat at, tincidunt tristique, libero. Vivamus viverra  \cmd{notecompta}[\argm{vel fermentum felis}\argo{disposez-vous d'un graphique eps concernant cet Ã©lÃ©ment ?}].}
    \end{subcodeblock}
\codestm{}
\codestm{\cmd{end}[\argm{document}]}}
\end{codeblock}

(Le \xpack{xcolor} est nÃ©cessaire pour attribuer les couleurs mauve et bleue, et le \xpack{soul}, pour souligner certains mots.)

\tutostep
Nous avons d'abord prÃ©parÃ© les propriÃ©tÃ©s de condition correspondant Ã&nbsp; notre besoin. Dans le cadre d'une mini-gestion conditionnelle, dÃ¨s lors que l'on souhaite utiliser la \xcmdn{miniconditext} dans un contexte autre que multilingue, il faut redÃ©finir les propriÃ©tÃ©s de condition par dÃ©faut (de sÃ©mantique linguistique). Cette redÃ©finition se fait au moyen des instructions suivantes :

\begin{codeblock}
\codestm{\cmd{resettingminicondiprops}}
\codestm{\cmd{setminicondipropi}[\argm{general}]}
\codestm{\cmd{setminicondipropii}[\argm{compta}]}
\codestm{\cmd{setminicondipropiii}[\argm{com}]}
\end{codeblock}

Il existe une commande de redÃ©finition par propriÃ©tÃ© de condition, soit 9 au total, chacune identifiÃ©e par chiffres romains (de \cmdnx{i} Ã&nbsp; \cmdnx{ix}, donc) : la \xcmdn{setminicondipropi} permet de redÃ©finir la propriÃ©tÃ© de condition attachÃ©e au premier argument, La \xcmdn{setminicondipropii} permet de redÃ©finir la propriÃ©tÃ© de condition attachÃ©e au deuxiÃ¨me argument, etc.

Dans le cadre de notre exemple, seules, les trois premiÃ¨res propriÃ©tÃ©s de condition doivent Ãªtre redÃ©finies -- une pour chaque service concernÃ© -- en fonction desquelles seront gÃ©nÃ©rÃ©es les diffÃ©rentes versions du document

La forme des noms \val{general}, \val{compta} et \val{com} n'est peut-Ãªtre pas la plus judicieuse possible mais elle suffit pour notre exemple. De maniÃ¨re gÃ©nÃ©rale, le choix d'un intitulÃ© de propriÃ©tÃ© de condition est laissÃ© Ã&nbsp; l'apprÃ©ciation de l'utilisateur, avec cela que l'on ne peut utiliser que des caractÃ¨res alphabÃ©tiques, avec ou sans majuscules, sans espace, sans caractÃ¨res accentuÃ©s ou Ã&nbsp; diacritiques.

Quel que soit le nombre de propriÃ©tÃ©s de condition Ã&nbsp; redÃ©finir, Il faut toujours impÃ©rativement \emph{commencer par l'instruction} \cmdn{resettingminicondiprops}, qui rÃ©initialise les 9 propriÃ©tÃ©s de condition avant leur redÃ©finition. Ã€ noter que, dans la prÃ©sente version du \pack{conditext}, la \xcmdn{miniconditext} ne peut Ãªtre utilisÃ©e qu'avec un seul jeu de propriÃ©tÃ©s de condition par document source.

Le premier argument de la commande \cmdn{miniconditext} auquel est associÃ©e la propriÃ©tÃ© de condition \val{general} sera une valeur par dÃ©faut, non directement exploitÃ©e ; nous aurions pu ici ne redÃ©finir que les premiÃ¨re et deuxiÃ¨me propriÃ©tÃ©s de condition (l'une \val{compta} et l'autre \val{com}) mais l'existence d'une propriÃ©tÃ© de condition ayant une valeur par dÃ©faut, rend le code plus lisible, et permet en outre l'usage -- certes non essentiel -- d'un espace de condition par dÃ©faut.

\tutostep
Nous avons dÃ©fini ensuite deux commandes similaires, nommÃ©es respectivement \cmdn{notecompta} et \cmdn{notecom}, chacune intÃ©grant une instruction \cmdn{miniconditext}.

Le principe de fonctionnalitÃ© est le mÃªme dans les deux cas : il s'agit de pouvoir mettre en relief des mots, des groupes de mots, voire des paragraphes dans le document gÃ©nÃ©rÃ© en les accompagnant de commentaires Ã&nbsp; l'attention du service comptabilitÃ© ou du service communication selon les cas. Ã€ noter que ces commandes n'ont d'autre prÃ©tention que celle d'illustrer un usage de \cmdn{miniconditext}) et ne prÃ©sentent aucune subtilitÃ© de conception particuliÃ¨re.

Nous dÃ©clarons chacune des commandes avec 2 arguments, l'un obligatoire (reprÃ©sentÃ© dans le code par \val{m} et \val{\#1}) correspondant Ã&nbsp; la forme substituable Ã&nbsp; mettre en relief, et l'autre facultatif avec valeur par dÃ©faut (reprÃ©sentÃ© dans le code par \val{O} et \val{\#2}) correspondant au commentaire accompagnant la forme substituable mise en relief. Pour les besoins de notre exemple, si l'argument facultatif de la \xcmdn{notecompta} n'est pas renseignÃ©, le commentaire \quo{merci de bien vouloir fournir le graphique correspondant} figurera par dÃ©faut ; de mÃªme, en ce qui concerne l'argument facultatif de la \xcmdn{notecom}, le commentaire par dÃ©faut sera \quo{merci de bien vouloir fournir un image}.

Dans l'une et l'autre commande, le premier argument de \cmdn{miniconditext}, auquel est associÃ©e la propriÃ©tÃ© de condition \val{general}, sert de valeur par dÃ©faut.

La \xcmdn{notecompta} utilise le deuxiÃ¨me argument de \cmdn{miniconditext}, auquel est associÃ©e la propriÃ©tÃ© de condition \val{compta}. Le code placÃ© dans cet argument est intÃ©gralement consacrÃ© au formatage de la forme substituable qui doit Ãªtre mise en relief (\val{\#1}) et au formatage du commentaire (\val{\#2}). La forme substituable sera soulignÃ©e (instruction \cmdn{ul} propre au \xpack{soul}), et sera suivie, prÃ©cÃ©dÃ©e d'une flÃ¨che, d'un commentaire en italiques (instruction \cmdn{emph}) et en mauve (instruction \cmdn{xcolor}).

La \xcmdn{notecom} utilise le troisiÃ¨me argument de de \cmdn{miniconditext}, auquel est associÃ©e la propriÃ©tÃ© de condition \val{com}. Le code placÃ© dans cet argument est le mÃªme que celui de \cmdn{notecompta}, avec le bleu Ã&nbsp; la place du mauve pour le texte du commentaire.

Dans le texte de notre exemple, nous avons placÃ© une instruction \cmdn{notecom} intÃ©grant le premier paragraphe dans son ensemble, sans commentaire explicite (c'est la formule par dÃ©faut qui figurera dans le document gÃ©nÃ©rÃ© Ã&nbsp; l'attention du service communication). Le deuxiÃ¨me paragraphe contient une instruction \cmdn{notecompta}, intÃ©grant un seul mot, sans commentaire explicite (c'est donc, comme dans le cas prÃ©cÃ©dent, la formule par dÃ©faut qui figurera dans le document gÃ©nÃ©rÃ©, Ã&nbsp; l'attention du service comptabilitÃ©). Dans le troisiÃ¨me et dernier paragraphe, est placÃ©e une instruction \cmdn{notecompta}, intÃ©grant plusieurs mots et cette fois, avec un commentaire personnalisÃ©.

\tutostep
Si, maintenant, nous compilons le document source sans instruction \cmdn{setminiconditext}, ou comme ici avec l'instruction \cmd{setminicondispace}[\argm{general}], nous obtenons le document suivant, dans sa version Ã&nbsp; usage gÃ©nÃ©ral comme attendu :

\begin{ltext}
\ltextline{Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur dictum gravida mauris. Nam arcu libero, nonummy eget, consectetuer id, vulputate a, magna. Donec vehicula augue eu neque.}
\ltextline{Nam dui ligula, fringilla a, euismod sodales, sollicitudin vel, wisi. Morbi auctor lorem non justo. Nam lacus libero, pretium at, lobortis vitae, ultricies et, tellus. Donec aliquet, tortor sed accumsan bibendum, erat ligula aliquet magna, vitae ornare odio metus a mi. Morbi ac orci et nisl hendrerit mollis.}
\ltextline{Nulla malesuada porttitor diam. Donec felis erat, congue non, volutpat at, tincidunt tristique, libero. Vivamus viverra vel fermentum felis.}
\end{ltext}

\resumepar Avec l'instruction \cmd{setminicondispace}[\argm{compta}], le document gÃ©nÃ©rÃ© sera :

 \begin{ltext}
\ltextline{Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur dictum gravida mauris. Nam arcu libero, nonummy eget, consectetuer id, vulputate a, magna. Donec vehicula augue eu neque.}
\ltextline{Nam dui ligula, fringilla a, euismod sodales, sollicitudin vel, wisi. Morbi auctor lorem non justo. Nam lacus libero, pretium at, lobortis vitae, ultricies et, \ul{tellus} \textcolor{purple}{$\rightarrow$ \emph{merci de bien vouloir fournir le graphique correspondant}}. Donec aliquet, tortor sed accumsan bibendum, erat ligula aliquet magna, vitae ornare odio metus a mi. Morbi ac orci et nisl hendrerit mollis.}
\ltextline{Nulla malesuada porttitor diam. Donec felis erat, congue non, volutpat at, tincidunt tristique, libero. Vivamus viverra \ul{vel fermentum felis} \textcolor{purple}{$\rightarrow$ \emph{disposez-vous d'un graphique eps concernant cet Ã©lÃ©ment ?}}.}
\end{ltext}

\resumepar et avec l'instruction \cmd{setminicondispace}[\argm{com}] :

 \begin{ltext}
\ltextline{\ul{Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur dictum gravida mauris. Nam arcu libero, nonummy eget, consectetuer id, vulputate a, magna. Donec vehicula augue eu neque} \textcolor{blue}{$\rightarrow$ \emph{merci de bien vouloir fournir un image}}.}
\ltextline{Nam dui ligula, fringilla a, euismod sodales, sollicitudin vel, wisi. Morbi auctor lorem non justo. Nam lacus libero, pretium at, lobortis vitae, ultricies et, tellus. Donec aliquet, tortor sed accumsan bibendum, erat ligula aliquet magna, vitae ornare odio metus a mi. Morbi ac orci et nisl hendrerit mollis.}
\ltextline{Nulla malesuada porttitor diam. Donec felis erat, congue non, volutpat at, tincidunt tristique, libero. Vivamus viverra vel fermentum felis.}
\end{ltext}

Vous voici arrivÃ©s Ã&nbsp; la fin de ce tutoriel. Son auteur espÃ¨re qu'il vous aura permis de vous familiariser agrÃ©ablement avec le \xpack{conditext}, ses diffÃ©rentes commandes et ses possibilitÃ©s. Dans ce domaine comme dans d'autres, rien ne vaut la pratique. Vous pourrez Ã&nbsp; loisir consulter la partie \titref{CtDoc_Commandes} de cette documentation pour obtenir la description dÃ©taillÃ©e d'une commande, certaines prÃ©cisions d'utilisation etc.

Que ce paquet puisse vous faciliter la tÃ¢che relativement Ã&nbsp; la gestion de contenus conditionnels sous \Latex, voilÃ&nbsp; le simple mais sincÃ¨re souhait de son auteur.

\end{document}
</pre></body></html>