%//////////////////////////////////////////////////////////////////////////////// %//// IDENTIFICATION //////////////////////////////////////////////////////////// %//////////////////////////////////////////////////////////////////////////////// \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{conditext}[2020/06/01 Extension personnelle, V1.5% (Jean-Louis Brabant), released under the LaTeX Project Public License % v1.3c or later] %//////////////////////////////////////////////////////////////////////////////// %//// CODE PR��LIMINAIRE ///////////////////////////////////////////////////////// %//////////////////////////////////////////////////////////////////////////////// \RequirePackage{simplekv} % Gestion des options cl��-valeur \setKVdefault[display]{% defaultdisplayall=false,% condispaceenabled=false} \setKVdefault[icf]{% icf=none} %//////////////////////////////////////////////////////////////////////////////// %//// DECLARATION DES OPTIONS /////////////////////////////////////////////////// %//////////////////////////////////////////////////////////////////////////////// \DeclareOption{defaultdisplayall}{% \setKV[display]{defaultdisplayall=true}} %//////////////////////////////////////////////////////////////////////////////// %//// EX��CUTION DES OPTIONS ///////////////////////////////////////////////////// %//////////////////////////////////////////////////////////////////////////////// \ProcessOptions %//////////////////////////////////////////////////////////////////////////////// %//// CHARGEMENT DES PAQUETS //////////////////////////////////////////////////// %//////////////////////////////////////////////////////////////////////////////// \RequirePackage{xifthen} % Gestion des conditions \RequirePackage{xparse} %//////////////////////////////////////////////////////////////////////////////// %//// COMMANDES ///////////////////////////////////////////////////////////////// %//////////////////////////////////////////////////////////////////////////////// %//////////////////////////////////////////////////////////////////////////////// %//// Commandes : gestion conditionnelle //////////////////////////////////////// %//////////////////////////////////////////////////////////////////////////////// %//// Commandes : gestion conditionnelle : domaine de condition implicite /////// %//////////////////////////////////////////////////////////////////////////////// \NewDocumentCommand\setimplicitcondifield{m}{% % Interface pour d��finir un domaine de condition implicite \ifcfemptythenelse{#1} % dc renseign�� ? {\errorifcfempty{setimplicitcondifield}} % non : message d'erreur sur dc {\ifcfokthenelse{#1} % oui : dc valide [cr����] ? {\setKV[icf]{icf=#1} \edef\icf{\useKV[icf]{icf}}} % oui : d��finit le dc comme dc implicite {\errorifcfnoncreated{setimplicitcondifield}{#1}}}} % non : message d'erreur sur dc %//// Commandes : gestion conditionnelle : domaines de condition //////////////// %//////////////////////////////////////////////////////////////////////////////// \NewDocumentCommand\newcondifield{s m}{% % Interface pour cr��er un domaine de condition \ifcfemptythenelse{#2} % dc renseign�� ? {\errorifcfempty{newcondifield}} % non : message d'erreur sur dc {\ifcfalreadycreatedthenelse{#2} % oui : dc d��j�� cr���� ? {\errorifcfalreadycreated{newcondifield}{#2}} % oui : message d'erreur sur dc {\setKVdefault[cf#2]{cf=#2}% % non : cr��e le dc \IfBooleanTF{#1} % ��toile ? {\ifcpalreadycreatedthenelse{#2}{#2} % oui : pc de m��me nom d��j�� cr����e pour le m��me dc ? {\errorifcpalreadycreated{newcondifield*}{#2}} % oui : message d'erreur sur pc {\setKVdefault[cp#2#2]{cp=#2#2}}} % non : cr��e la pc {}}}} % non : ne fait rien %//// Commandes : gestion conditionnelle : domaines de condition : tests //////// \NewDocumentCommand\ifcfalreadycreatedthenelse{m m m}{% Teste si le domaine de condition existe d��j�� \ifthenelse{\equal{\useKV[cf#1]{cf}}{#1}} {#2} {#3}} \NewDocumentCommand\ifcfokthenelse{m m m}{% % Teste si le domaine de condition est valide \ifthenelse{\equal{\useKV[cf#1]{cf}}{#1}}% {#2} {#3}} \NewDocumentCommand\ifcfemptythenelse{m m m}{% % Teste si le domaine de condition est renseign�� \ifthenelse{\equal{#1}{}} {#2} {#3}} %//// Commandes : gestion conditionnelle : propri��t��s de condition ////////////// %//////////////////////////////////////////////////////////////////////////////// \NewDocumentCommand\newcondiprop{m m}{% % Interface pour cr��er une propri��t�� de condition \ifcfemptythenelse{#1} % dc renseign�� ? {\errorifcfempty{newcondiprop}} % non : message d'erreur sur dc {\ifcfokthenelse{#1} % oui : dc valide [cr����] ? {\ifcpemptythenelse{#2} % oui : pc renseign��e ? {\errorifcpempty{newcondiprop}} % non : message d'erreur sur pc {\ifcpalreadycreatedthenelse{#1}{#2} % oui : pc d��j�� cr����e ? {\errorifcpalreadycreated{newcondiprop}{#2}} % oui : message d'erreur sur pc {\setKVdefault[cp#1#2]{cp=#1#2}}}} % non : cr��e la pc {\errorifcfnoncreated{newcondiprop}{#1}}}} % non : message d'erreur sur dc %//// Commandes : gestion conditionnelle : propri��t��s de condition : tests ////// \NewDocumentCommand\ifcpalreadycreatedthenelse{m m m m}{% % Teste si la propri��t�� de condition existe d��j�� \ifthenelse{\equal{\useKV[cp#1#2]{cp}}{#1#2}} {#3} {#4}} \NewDocumentCommand\ifcpokthenelse{m m m m}{% % Teste si la propri��t�� de condition est valide \ifthenelse{\equal{\useKV[cp#1#2]{cp}}{#1#2}}% {#3} {#4}} \NewDocumentCommand\ifcpemptythenelse{m m m}{% % Teste si la propri��t�� de condition est renseign��e \ifthenelse{\equal{#1}{}} {#2} {#3}} %//// Commandes : gestion conditionnelle : espaces de condition ///////////////// %//////////////////////////////////////////////////////////////////////////////// \NewDocumentCommand\setcondispace{s O{} m}{% % Interface pour d��finir un espace de condition \ifcfemptythenelse{#2}% % dc renseign�� ? {\ifcpemptythenelse{#3} % non : pc renseign��e ? {\errorifcpempty{setcondispace}} % non : message d'erreur sur pc {\ifcpokthenelse{\icf}{#3} % oui : (dc implicite) pc valide ? {\ifcsalreadydefinedthenelse{\icf}{#3} % oui : ec d��j�� d��fini ? {\errorifcsalreadydefined{setcondispace}{\icf}{#3}} % oui : message d'erreur sur ec {\setKVdefault[cs\icf#3]{cs=\icf#3}% % non : d��finit l'ec \setKV[display]{condispaceenabled=true} % indique qu'un ec est d��fini \IfBooleanT{#1} % ��toile ? {\ifthenelse{\equal{\icf}{language}} % oui : contexte de s��mantique linguistique ? {\setminicondispace{#3}} % oui : d��finit un mini-ec correspondant �� la langue {}}}} % non : ne fait rien {\errorifcpnonok{setcondispace}{#3}}}} % non : message d'erreur sur pc {\ifcfokthenelse{#2} % oui : dc valide [cr����] ? {\ifcpemptythenelse{#3} % oui : pc renseign��e ? {\ifcsalreadydefinedthenelse{#2}{all} % non : ec global d��j�� d��fini ? {\errorifcsalreadydefined{setcondispace}{#2}{all}} % oui : message d'erreur sur ec {\setKVdefault[cs#2all]{cs=#2all} % non : d��finit l'ec global \setKV[display]{condispaceenabled=true}}} % indique qu'un ec est d��fini {\ifcpokthenelse{#2}{#3} % oui : pc valide ? {\ifcsalreadydefinedthenelse{#2}{#3} % oui : ec d��j�� d��fini ? {\errorifcsalreadydefined{conditext}{#2}{#3}} % oui : message d'erreur sur ec {\setKVdefault[cs#2#3]{cs=#2#3}% % non : d��finit l'ec \setKV[display]{condispaceenabled=true} % indique qu'un ec est d��fini \IfBooleanT{#1} % ��toile ? {\ifthenelse{\equal{\#2}{language}} % oui : contexte de s��mantique linguistique ? {\setminicondispace{#3}} % oui : d��finit un mini-ec correspondant �� la langue {}}}} % non : ne fait rien {\errorifcpnonok{setcondispace}{#3}}}} % non : message d'erreur sur pc {\errorifcfnoncreated{setcondispace}{#2}}}} % non : message d'erreur sur dc %//// Commandes : gestion conditionnelle : espaces de condition : tests ///////// \NewDocumentCommand\ifcsalreadydefinedthenelse{m m m m}{% % Teste si l'espace de condition est d��j�� d��fini \ifthenelse{\equal{\useKV[cs#1#2]{cs}}{#1#2}} {#3} {#4}} \NewDocumentCommand\ifmatchingcsthenelse{m m m m}{% % Teste s'il existe un espace de condition correspondant au domaine de condition et �� la propri��t�� de condition renseign��s \ifthenelse{\equal{\useKV[cs#1#2]{cs}}{#1#2}} {#3} {#4}} %//// Commandes : gestion conditionnelle : contenu conditionnel ///////////////// %//////////////////////////////////////////////////////////////////////////////// \NewDocumentEnvironment{conditext}{O{} m s +b}{% % Interface pour contenu conditionnel \ifthenelse{\equal{\useKV[display]{condispaceenabled}}{true}} % Au moins un ec d��fini ? {\ifcfemptythenelse{#1} % oui : dc renseign�� ? {\ifcpemptythenelse{#2} % non : pc renseign��e ? {\errorifcpempty{conditext}} % non : message d'erreur sur pc {\ifcpokthenelse{\icf}{#2} % oui : (dc implicite) pc valide ? {\ifmatchingcsthenelse{\icf}{all} % oui : ec global correspondant ? {\IfBooleanTF{#3} % oui : ��toile ? {} % oui : n'affiche rien {\textdisplay{\icf}{#2}{#4}}} % non : affiche le contenu {\ifmatchingcsthenelse{\icf}{#2} % non : ec correspondant ? {\IfBooleanTF{#3} % oui : ��toile ? {} % oui : n'affiche rien {\textdisplay{\icf}{#2}{#4}}} % non : affiche le contenu {\IfBooleanTF{#3} % non : ��toile ? {\textdisplay{\icf}{#2}{#4}} % oui : affiche le contenu {}}}} % non : n'affiche rien {\errorifcpnonok{conditext}{#2}}}} % non : message d'erreur sur pc {\ifcfokthenelse{#1} % oui : dc valide ? {\ifcpemptythenelse{#2} % oui : pc renseign��e ? {\errorifcpempty{conditext}} % non : message d'erreur sur pc {\ifcpokthenelse{#1}{#2} % oui : pc valide ? {\ifmatchingcsthenelse{#1}{all} % oui : ec global correspondant ? {\IfBooleanTF{#3} % oui : ��toile ? {} % oui : n'affiche rien {\textdisplay{#1}{#2}{#4}}} % non : affiche le contenu {\ifmatchingcsthenelse{#1}{#2} % non : ec correspondant ? {\IfBooleanTF{#3} % oui : ��toile ? {} % oui : n'affiche rien {\textdisplay{#1}{#2}{#4}}} % non : affiche le contenu {\IfBooleanTF{#3} % non : ��toile ? {\textdisplay{#1}{#2}{#4}} % oui : affiche le contenu {}}}} % non : n'affiche rien {\errorifcpnonok{conditext}{#2}}}} % non : message d'erreur sur pc {\errorifcfnoncreated{conditext}{#1}}}} % non : message d'erreur sur dc {\ifthenelse{\equal{\useKV[display]{defaultdisplayall}}{true}} % non : affichage total par d��faut ? {\ifcfemptythenelse{#1} % oui : dc renseign�� ? {\ifcpemptythenelse{#2} % non : pc renseign��e ? {\errorifcpempty{conditext}} % non : message d'erreur sur pc {\ifcpokthenelse{\icf}{#2} % oui : (dc implicite) pc valide ? {\IfBooleanTF{#3} % oui : ��toile ? {} % oui : n'affiche rien {\textdisplay{\icf}{#2}{#4}}} % non : affiche le contenu {\errorifcpnonok{conditext}{#2}}}} % non : message d'erreur sur pc {\ifcfokthenelse{#1} % oui : dc valide ? {\ifcpemptythenelse{#2} % oui : pc renseign��e ? {\errorifcpempty{conditext}} % non : message d'erreur sur pc {\ifcpokthenelse{#1}{#2} % oui : pc valide ? {\IfBooleanTF{#3} % oui : ��toile ? {} % oui : n'affiche rien {\textdisplay{#1}{#2}{#4}}} % non : affiche le contenu {\errorifcpnonok{conditext}{#2}}}} % non : message d'erreur sur pc {\errorifcfnoncreated{conditext}{#1}}}} % non : message d'erreur sur dc {\ifcfemptythenelse{#1} % non : dc renseign�� ? {\ifcpemptythenelse{#2} % non : pc renseign��e ? {\errorifcpempty{conditext}} % non : message d'erreur sur pc {\ifcpokthenelse{\icf}{#2} % oui : (dc implicite) pc valide ? {\IfBooleanTF{#3} % oui : ��toile ? {\textdisplay{\icf}{#2}{#4}} % oui : affiche le contenu {}} % non : n'affiche rien {\errorifcpnonok{conditext}{#2}}}} % non : message d'erreur sur pc {\ifcfokthenelse{#1} % oui : dc valide ? {\ifcpemptythenelse{#2} % oui : pc renseign��e ? {\errorifcpempty{conditext}} % non : message d'erreur sur pc {\ifcpokthenelse{#1}{#2} % oui : pc valide ? {\IfBooleanTF{#3} % oui : ��toile ? {\textdisplay{#1}{#2}{#4}} % oui : affiche le contenu {}} % non : n'affiche rien {\errorifcpnonok{conditext}{#2}}}} % non : message d'erreur sur pc {\errorifcfnoncreated{conditext}{#1}}}}}} % non : message d'erreur sur dc \NewDocumentCommand\textdisplay{m m m}{% % Affiche une forme substituable selon que le domaine de condition est linguistique ou autre \ifthenelse{\equal{#1}{language}}% {\begin{otherlanguage}{#2}#3\end{otherlanguage}}% {#3}} %//////////////////////////////////////////////////////////////////////////////// %//// Commandes : mini-gestion conditionnelle /////////////////////////////////// %//////////////////////////////////////////////////////////////////////////////// %//// Commandes : mini-gestion conditionnelle : propri��t��s de condition ///////// %//////////////////////////////////////////////////////////////////////////////// \setKVdefault[mncpi]{mncpi=french} \setKVdefault[mncpii]{mncpii=english} \setKVdefault[mncpiii]{mncpiii=german} \setKVdefault[mncpiv]{mncpiv=spanish} \setKVdefault[mncpv]{mncpv=italian} \setKVdefault[mncpvi]{mncpvi=portuguese} \setKVdefault[mncpvii]{mncpvii=dutch} \setKVdefault[mncpviii]{mncpviii=danish} \setKVdefault[mncpix]{mncpix=norsk} \setKVdefault[mncplanguage]{mncplanguage=true} \setKVdefault[mncpreset]{mncpreset=false} \NewDocumentCommand\resettingminicondiprops{s}{% % Interface pour r��initialiser les propri��t��s de condition \IfBooleanTF{#1} {\setKV[mncpi]{mncpi=french} \setKV[mncpii]{mncpii=english} \setKV[mncpiii]{mncpiii=german} \setKV[mncpiv]{mncpiv=spanish} \setKV[mncpv]{mncpv=italian} \setKV[mncpvi]{mncpvi=portuguese} \setKV[mncpvii]{mncpvii=dutch} \setKV[mncpviii]{mncpviii=danish} \setKV[mncpix]{mncpix=norsk} \setKV[mncplanguage]{mncplanguage=true} \setKV[mncpreset]{mncpreset=true}} {\setKV[mncpi]{mncpi=none} \setKV[mncpii]{mncpii=none} \setKV[mncpiii]{mncpiii=none} \setKV[mncpiv]{mncpiv=none} \setKV[mncpv]{mncpv=none} \setKV[mncpvi]{mncpvi=none} \setKV[mncpvii]{mncpvii=none} \setKV[mncpviii]{mncpviii=none} \setKV[mncpix]{mncpix=none} \setKV[mncplanguage]{mncplanguage=false} \setKV[mncpreset]{mncpreset=true}}} \NewDocumentCommand\setminicondiprop{m m}{% % Interface g��n��rale pour red��finir une propri��t�� de condition pour mini-gestion conditionnelle \ifmncpnoresettingthenelse % r��initialisation pr��alable ? {\errorifmncpnoresetting{setminicondiprop-}} % non : message d'erreur {\ifmncpemptythenelse{#2} % oui : pc renseign��e ? {\errorifmncpempty{setminicondiprop#1}} % non : message d'erreur sur pc {\ifmncpalreadyredefinedthenelse{#1}{#2} % oui : pc d��j�� red��finie ? {\errorifmncpalreadyredefined{setminicondiprop#1}{#2}} % oui : message d'erreur sur pc {\setKV[mncp#1]{mncp#1=#2}}}}} % non : red��finit la pc \NewDocumentCommand\setminicondipropi{m}{% % Interface pour red��finir une propri��t�� de condition pour la forme substituable n�� 1 de la mini-gestion conditionnelle \setminicondiprop{i}{#1}} \NewDocumentCommand\setminicondipropii{m}{% % Interface pour red��finir une propri��t�� de condition pour la forme substituable n�� 2 de la mini-gestion conditionnelle \setminicondiprop{ii}{#1}} \NewDocumentCommand\setminicondipropiii{m}{% % Interface pour red��finir une propri��t�� de condition pour la forme substituable n�� 3 de la mini-gestion conditionnelle \setminicondiprop{iii}{#1}} \NewDocumentCommand\setminicondipropiv{m}{% % Interface pour red��finir une propri��t�� de condition pour la forme substituable n�� 4 de la mini-gestion conditionnelle \setminicondiprop{iv}{#1}} \NewDocumentCommand\setminicondipropv{m}{% % Interface pour red��finir une propri��t�� de condition pour la forme substituable n�� 5 de la mini-gestion conditionnelle \setminicondiprop{v}{#1}} \NewDocumentCommand\setminicondipropvi{m}{% % Interface pour red��finir une propri��t�� de condition pour la forme substituable n�� 6 de la mini-gestion conditionnelle \setminicondiprop{vi}{#1}} \NewDocumentCommand\setminicondipropvii{m}{% % Interface pour red��finir une propri��t�� de condition pour la forme substituable n�� 7 de la mini-gestion conditionnelle \setminicondiprop{vii}{#1}} \NewDocumentCommand\setminicondipropviii{m}{% % Interface pour red��finir une propri��t�� de condition pour la forme substituable n�� 8 de la mini-gestion conditionnelle \setminicondiprop{viii}{#1}} \NewDocumentCommand\setminicondipropix{m}{% % Interface pour red��finir une propri��t�� de condition pour la forme substituable n�� 9 de la mini-gestion conditionnelle \setminicondiprop{ix}{#1}} %//// Commandes : mini-gestion conditionnelle : propri��t��s de condition : tests / \NewDocumentCommand\ifmncpnoresettingthenelse{m m}{% % Teste s'il y a eu r��initialisation des propri��t��s de condition \ifthenelse{\equal{\useKV[mncpreset]{mncpreset}}{false}} {#1} {#2}} \NewDocumentCommand\ifmncpemptythenelse{m m m}{% % Teste si la propri��t�� de condition est renseign��e \ifthenelse{\equal{#1}{}} {#2} {#3}} \NewDocumentCommand\ifmncpnonethenelse{m m m}{% % Teste si la propri��t�� de condition est neutre \ifthenelse{\equal{\useKV[mncp#1]{mncp#1}}{none}} {#2 \errmsgifmncpnone{#1}} {#3}} \NewDocumentCommand\ifmncpokthenelse{m m m}{% % Teste si la propri��t�� de condition est valide \ifthenelse{\equal{\useKV[mncpi]{mncpi}}{#1} \AND \not\equal{\useKV[mncpi]{mncpi}}{none}} {#2} {\ifthenelse{\equal{\useKV[mncpii]{mncpii}}{#1} \AND \not\equal{\useKV[mncpii]{mncpii}}{none}} {#2} {\ifthenelse{\equal{\useKV[mncpiii]{mncpiii}}{#1} \AND \not\equal{\useKV[mncpiii]{mncpiii}}{none}} {#2} {\ifthenelse{\equal{\useKV[mncpiv]{mncpiv}}{#1} \AND \not\equal{\useKV[mncpiv]{mncpiv}}{none}} {#2} {\ifthenelse{\equal{\useKV[mncpv]{mncpv}}{#1} \AND \not\equal{\useKV[mncpv]{mncpv}}{none}} {#2} {\ifthenelse{\equal{\useKV[mncpvi]{mncpvi}}{#1} \AND \not\equal{\useKV[mncpvi]{mncpvi}}{none}} {#2} {\ifthenelse{\equal{\useKV[mncpvii]{mncpvii}}{#1} \AND \not\equal{\useKV[mncpvii]{mncpvii}}{none}} {#2} {\ifthenelse{\equal{\useKV[mncpviii]{mncpviii}}{#1} \AND \not\equal{\useKV[mncpviii]{mncpviii}}{none}} {#2} {\ifthenelse{\equal{\useKV[mncpix]{mncpix}}{#1} \AND \not\equal{\useKV[mncpix]{mncpix}}{none}} {#2} {#3}}}}}}}}}} \NewDocumentCommand\ifmncpalreadyredefinedthenelse{m m m m}{% % Teste si une propri��t�� de condition de m��me nom existe d��j�� \ifthenelse{\equal{#1}{i}} {\ifthenelse{% \equal{\useKV[mncpii]{mncpii}}{#2} \OR% \equal{\useKV[mncpiii]{mncpiii}}{#2} \OR% \equal{\useKV[mncpiv]{mncpiv}}{#2} \OR% \equal{\useKV[mncpv]{mncpv}}{#2} \OR% \equal{\useKV[mncpvi]{mncpvi}}{#2} \OR% \equal{\useKV[mncpvii]{mncpvii}}{#2} \OR% \equal{\useKV[mncpviii]{mncpviii}}{#2} \OR% \equal{\useKV[mncpix]{mncpix}}{#2}} {#3} {#4}} {\ifthenelse{\equal{#1}{ii}} {\ifthenelse{% \equal{\useKV[mncpi]{mncpi}}{#2} \OR% \equal{\useKV[mncpiii]{mncpiii}}{#2} \OR% \equal{\useKV[mncpiv]{mncpiv}}{#2} \OR% \equal{\useKV[mncpv]{mncpv}}{#2} \OR% \equal{\useKV[mncpvi]{mncpvi}}{#2} \OR% \equal{\useKV[mncpvii]{mncpvii}}{#2} \OR% \equal{\useKV[mncpviii]{mncpviii}}{#2} \OR% \equal{\useKV[mncpix]{mncpix}}{#2}} {#3} {#4}} {\ifthenelse{\equal{#1}{iii}} {\ifthenelse{% \equal{\useKV[mncpi]{mncpi}}{#2} \OR% \equal{\useKV[mncpii]{mncpii}}{#2} \OR% \equal{\useKV[mncpiv]{mncpiv}}{#2} \OR% \equal{\useKV[mncpv]{mncpv}}{#2} \OR% \equal{\useKV[mncpvi]{mncpvi}}{#2} \OR% \equal{\useKV[mncpvii]{mncpvii}}{#2} \OR% \equal{\useKV[mncpviii]{mncpviii}}{#2} \OR% \equal{\useKV[mncpix]{mncpix}}{#2}} {#3} {#4}} {\ifthenelse{\equal{#1}{iv}} {\ifthenelse{% \equal{\useKV[mncpi]{mncpi}}{#2} \OR% \equal{\useKV[mncpii]{mncpii}}{#2} \OR% \equal{\useKV[mncpiii]{mncpiii}}{#2} \OR% \equal{\useKV[mncpv]{mncpv}}{#2} \OR% \equal{\useKV[mncpvi]{mncpvi}}{#2} \OR% \equal{\useKV[mncpvii]{mncpvii}}{#2} \OR% \equal{\useKV[mncpviii]{mncpviii}}{#2} \OR% \equal{\useKV[mncpix]{mncpix}}{#2}} {#3} {#4}} {\ifthenelse{\equal{#1}{v}} {\ifthenelse{% \equal{\useKV[mncpi]{mncpi}}{#2} \OR% \equal{\useKV[mncpii]{mncpii}}{#2} \OR% \equal{\useKV[mncpiii]{mncpiii}}{#2} \OR% \equal{\useKV[mncpiv]{mncpiv}}{#2} \OR% \equal{\useKV[mncpvi]{mncpvi}}{#2} \OR% \equal{\useKV[mncpvii]{mncpvii}}{#2} \OR% \equal{\useKV[mncpviii]{mncpviii}}{#2} \OR% \equal{\useKV[mncpix]{mncpix}}{#2}} {#3} {#4}} {\ifthenelse{\equal{#1}{vi}} {\ifthenelse{% \equal{\useKV[mncpi]{mncpi}}{#2} \OR% \equal{\useKV[mncpii]{mncpii}}{#2} \OR% \equal{\useKV[mncpiii]{mncpiii}}{#2} \OR% \equal{\useKV[mncpiv]{mncpiv}}{#2} \OR% \equal{\useKV[mncpv]{mncpv}}{#2} \OR% \equal{\useKV[mncpvii]{mncpvii}}{#2} \OR% \equal{\useKV[mncpviii]{mncpviii}}{#2} \OR% \equal{\useKV[mncpix]{mncpix}}{#2}} {#3} {#4}} {\ifthenelse{\equal{#1}{vii}} {\ifthenelse{% \equal{\useKV[mncpi]{mncpi}}{#2} \OR% \equal{\useKV[mncpii]{mncpii}}{#2} \OR% \equal{\useKV[mncpiii]{mncpiii}}{#2} \OR% \equal{\useKV[mncpiv]{mncpiv}}{#2} \OR% \equal{\useKV[mncpv]{mncpv}}{#2} \OR% \equal{\useKV[mncpvi]{mncpvi}}{#2} \OR% \equal{\useKV[mncpviii]{mncpviii}}{#2} \OR% \equal{\useKV[mncpix]{mncpix}}{#2}} {#3} {#4}} {\ifthenelse{\equal{#1}{viii}} {\ifthenelse{% \equal{\useKV[mncpi]{mncpi}}{#2} \OR% \equal{\useKV[mncpii]{mncpii}}{#2} \OR% \equal{\useKV[mncpiii]{mncpiii}}{#2} \OR% \equal{\useKV[mncpiv]{mncpiv}}{#2} \OR% \equal{\useKV[mncpv]{mncpv}}{#2} \OR% \equal{\useKV[mncpvi]{mncpvi}}{#2} \OR% \equal{\useKV[mncpviii]{mncpvii}}{#2} \OR% \equal{\useKV[mncpix]{mncpix}}{#2}} {#3} {#4}} {\ifthenelse{\equal{#1}{ix}} {\ifthenelse{% \equal{\useKV[mncpi]{mncpi}}{#2} \OR% \equal{\useKV[mncpii]{mncpii}}{#2} \OR% \equal{\useKV[mncpiii]{mncpiii}}{#2} \OR% \equal{\useKV[mncpiv]{mncpiv}}{#2} \OR% \equal{\useKV[mncpv]{mncpv}}{#2} \OR% \equal{\useKV[mncpvi]{mncpvi}}{#2} \OR% \equal{\useKV[mncpvii]{mncpvii}}{#2} \OR% \equal{\useKV[mncpviii]{mncpvii}}{#2}} {#3} {#4}} {}}}}}}}}}} %//// Commandes : mini-gestion conditionnelle : espaces de condition //////////// %//////////////////////////////////////////////////////////////////////////////// \NewDocumentCommand\setminicondispace{m}{% % Interface pour d��finir l'espace de condition relatif �� la mini-gestion conditionnelle \ifmncsemptythenelse{#1} % pc renseign��e ? {\errorifmncsempty{setminicondispace}} % non : message d'erreur sur ec {\ifmncpokthenelse{#1} % oui : pc valide ? {\ifmncsalreadydefinedthenelse{#1} % oui : ec d��j�� d��fini ? {\errorifmncsalreadydefined{setminicondispace}{#1}} % oui : message d'erreur sur ec {\setKVdefault[mncs]{cs=#1}}} % non : d��finit l'ec {\errorifmncpnonok{setminicondispace}}}} % non : message d'erreur sur pc \NewDocumentCommand\ifmncsemptythenelse{m m m}{% % Teste si l'espace de condition relatif �� la mini-gestion conditionnelle est renseign�� \ifthenelse{\equal{#1}{}} {#2 \errmsgifmncsempty{}} {#3}} %//// Commandes : mini-gestion conditionnelle : espaces de condition : test ///// \NewDocumentCommand\ifmncsalreadydefinedthenelse{m m m}{% % Teste si l'espace de condition relatif �� la mini-gestion conditionnelle est d��j�� d��fini \ifthenelse{\equal{\useKV[mncs]{cs}}{#1}} {#2} {#3}} %//// Commandes : mini-gestion conditionnelle : formes substituables //////////// %//////////////////////////////////////////////////////////////////////////////// \NewDocumentCommand\minidisplay{m m m}{% % Affiche une forme substituable en mini-gestion conditionnelle \ifmncpnonethenelse{#1} % pc neutre ? {} % oui : n'affiche rien {\ifmatchingmncsthenelse{#1} % non : ec correspondant ? {#2} % oui {#3}}} % non \NewDocumentCommand\ifmatchingmncsthenelse{m m m}{% % Teste s'il existe un espace de condition pour mini-gestion condit. correspondant �� la propri��t�� de condition renseign��e \ifthenelse{\equal{\useKV[mncs]{cs}}{\useKV[mncp#1]{mncp#1}}} {#2} {#3}} \NewDocumentCommand\minidisplayi{m m}{\minidisplay{i}{#1}{#2}} % Affiche la forme substituable n�� 1 de la mini-gestion conditionnelle \NewDocumentCommand\minidisplayii{m m}{\minidisplay{ii}{#1}{#2}} % Affiche la forme substituable n�� 2 de la mini-gestion conditionnelle \NewDocumentCommand\minidisplayiii{m m}{\minidisplay{iii}{#1}{#2}} % Affiche la forme substituable n�� 3 de la mini-gestion conditionnelle \NewDocumentCommand\minidisplayiv{m m}{\minidisplay{iv}{#1}{#2}} % Affiche la forme substituable n�� 4 de la mini-gestion conditionnelle \NewDocumentCommand\minidisplayv{m m}{\minidisplay{v}{#1}{#2}} % Affiche la forme substituable n�� 5 de la mini-gestion conditionnelle \NewDocumentCommand\minidisplayvi{m m}{\minidisplay{vi}{#1}{#2}} % Affiche la forme substituable n�� 6 de la mini-gestion conditionnelle \NewDocumentCommand\minidisplayvii{m m}{\minidisplay{vii}{#1}{#2}} % Affiche la forme substituable n�� 7 de la mini-gestion conditionnelle \NewDocumentCommand\minidisplayviii{m m}{\minidisplay{viii}{#1}{#2}} % Affiche la forme substituable n�� 8 de la mini-gestion conditionnelle \NewDocumentCommand\minidisplayix{m m}{\minidisplay{xi}{#1}{#2}} % Affiche la forme substituable n�� 9 de la mini-gestion conditionnelle \NewDocumentCommand\miniconditext{m O{} O{} O{} O{} O{} O{} O{} O{}}{% % Interface pour contenus substituables en mini-gestion conditionnelle \minidisplayi{#1}{% \minidisplayii{#2}{% \minidisplayiii{#3}{% \minidisplayiv{#4}{% \minidisplayv{#5}{% \minidisplayvi{#6}{% \minidisplayvii{#7}{% \minidisplayviii{#8}{% \minidisplayix{#9}{}}}}}}}}}} %//////////////////////////////////////////////////////////////////////////////// %//// MESSAGES D'ERREUR ///////////////////////////////////////////////////////// %//////////////////////////////////////////////////////////////////////////////// %//////////////////////////////////////////////////////////////////////////////// %//// Messages d'erreur : gestion conditionnelle //////////////////////////////// %//////////////////////////////////////////////////////////////////////////////// %//// Messages d'erreur : gestion conditionnelle : domaines de condition //////// %//////////////////////////////////////////////////////////////////////////////// %//// Messages d'erreur : gestion conditionnelle : domaines de condition : non renseign�� \edef\errtxtifcfempty{no condition field entered} % Message d'erreur en cas de domaine de condition non renseign�� \edef\hlptxtifcfempty{You must not leave the argument empty : % % Message d'aide en cas de domaine de condition non renseign�� a condition field must be entered} \NewDocumentCommand\errorifcfempty{m}{% % Erreur d��clench��e en cas de domaine de condition non renseign�� \PackageError{conditext}% {#1 statement failed --> \errtxtifcfempty}% {\hlptxtifcfempty.}} %//// Messages d'erreur : gestion conditionnelle : domaines de condition : non cr���� \edef\errtxtifcfnoncreated{condition field not created} % Message d'erreur en cas de domaine de condition non cr���� \edef\hlptxtifcfnoncreated{You may not have created the condition field % % Message d'aide en cas de domaine de condition non cr���� whose name is entered : use a newcondifield % statement to make it} \NewDocumentCommand\errorifcfnoncreated{m m}{% % Erreur d��clench��e en cas de domaine de condition non cr���� \PackageError{conditext}% {#1 statement with "#2" failed --> \errtxtifcfnoncreated}% {\hlptxtifcfnoncreated.}} %//// Messages d'erreur : gestion conditionnelle : domaines de condition : d��j�� cr���� \edef\errtxtifcfalreadycreated{condition field already created} % Message d'erreur en cas de domaine de condition d��j�� cr���� \edef\hlptxtifcfalreadycreated{There must not be two condition fields with % % Message d'aide en cas de domaine de condition d��j�� cr���� the same name : you should check in the preamble % if there is not another newcondifield statement % already defined with the same name as argument} \NewDocumentCommand\errorifcfalreadycreated{m m}{% % Erreur d��clench��e en cas de domaine de condition d��j�� cr���� \PackageError{conditext}% {#1 statement with "#2" failed --> \errtxtifcfalreadycreated}% {\hlptxtifcfalreadycreated.}} %//// Messages d'erreur : gestion conditionnelle : propri��t��s de condition ////// %//////////////////////////////////////////////////////////////////////////////// %//// Messages d'erreur : gestion conditionnelle : propri��t��s de condition : non renseign��e \edef\errtxtifcpempty{no condition property entered} % Message d'erreur en cas de propri��t�� de condition non renseign��e \edef\hlptxtifcpempty{You must not leave the argument empty : % % Message d'aide en cas de propri��t�� de condition non renseign��e a condition property must be entered} \NewDocumentCommand\errorifcpempty{m}{% % Erreur d��clench��e en cas de propri��t�� de condition non renseign��e \PackageError{conditext}% {#1 statement failed --> \errtxtifcpempty}% {\hlptxtifcpempty.}} %//// Messages d'erreur : gestion conditionnelle : propri��t��s de condition : non cr����e \edef\errtxtifcpnoncreated{condition property non created} % Message d'erreur en cas de propri��t�� de condition non cr����e \edef\hlptxtifcpnoncreated{You may not have created the condition property % % Message d'aide en cas de propri��t�� de condition non cr����e whose name you have entered : use a newcondiprop % statement to make it} \NewDocumentCommand\errorifcpnoncreated{m m}{% % Erreur d��clench��e en cas de propri��t�� de condition non cr����e \PackageError{conditext}% {#1 statement with "#2" failed --> \errtxtifcpnoncreated}% {\hlptxtifcpnoncreated.}} %//// Messages d'erreur : gestion conditionnelle : propri��t��s de condition : non cr����e ou inappropri�� \edef\errtxtifcpnonok{\errtxtifcpnoncreated, or unsuitable} % Message d'erreur en cas de propri��t�� de condition non cr����e ou inappropri��e \edef\hlptxtifcpnonok{\hlptxtifcpnoncreated. Or maybe, you should look for % % Message d'aide en cas de propri��t�� de condition non cr����e ou inappropri��e a suitable condition property among the ones created % with link to the condition field entered in the first argument} \NewDocumentCommand\errorifcpnonok{m m}{% % Erreur d��clench��e en cas de propri��t�� de condition non cr����e ou inappropri��e \PackageError{conditext}% {#1 statement with "#2" failed --> \errtxtifcpnonok}% {\hlptxtifcpnonok.}} %//// Messages d'erreur : gestion conditionnelle : propri��t��s de condition : d��j�� cr����e \edef\errtxtifcpalreadycreated{condition property already created} % Message d'erreur en cas de propri��t�� de condition d��j�� cr����e \edef\hlptxtifcpalreadycreated{There must not be two condition properties with % % Message d'aide en cas de propri��t�� de condition d��j�� cr����e the same name when linked to the same condition field : % you should check in the preamble if there is not % another newcondiprop statement already defined % with the same names of condition field and % condition property as arguments} \NewDocumentCommand\errorifcpalreadycreated{m m}{% % Erreur d��clench��e en cas de propri��t�� de condition d��j�� cr����e \PackageError{conditext}% {#1 statement with "#2" failed --> \errtxtifcpalreadycreated}% {\hlptxtifcpalreadycreated.}} %//// Messages d'erreur : gestion conditionnelle : espaces de condition ///////// %//////////////////////////////////////////////////////////////////////////////// %//// Messages d'erreur : gestion conditionnelle : espaces de condition : d��j�� d��fini \edef\errtxtifcsalreadydefined{condition space already defined} % Message d'erreur en cas d'espace de condition d��j�� d��fini \edef\hlptxtifcsalreadydefined{You should check if there is not another % % Message d'aide en cas d'espace de condition d��j�� d��fini setcondispace statement already defined % with the same names of condition field and % condition property as arguments} \NewDocumentCommand\errorifcsalreadydefined{m m m}{% % Erreur d��clench��e en cas d'espace de condition d��j�� d��fini \PackageError{conditext}% {#1 statement with "#2" et "#3" failed --> \errtxtifcsalreadydefined}% {\hlptxtifcsalreadydefined.}} %//////////////////////////////////////////////////////////////////////////////// %//// Messages d'erreur : mini-gestion conditionnelle /////////////////////////// %//////////////////////////////////////////////////////////////////////////////// %//// Messages d'erreur : mini-gestion conditionnelle : propri��t��s de condition / %//////////////////////////////////////////////////////////////////////////////// %//// Messages d'erreur : mini-gestion conditionnelle : propri��t��s de condition : non r��initialisation \edef\errtxtifmncpnoresetting{no resetting of the condition properties % % Message d'erreur en cas de non r��initialisation has been made} \edef\hlptxtifmncpnoresetting{You must use a resettingminicondiprops statement % % Message d'aide en cas de propri��t�� de non r��initialisation before redefining the condition properties} \NewDocumentCommand\errorifmncpnoresetting{m}{% % Erreur d��clench��e en cas de propri��t�� de non r��initialisation \PackageError{conditext}% {#1 statement failed --> \errtxtifmncpnoresetting}% {\hlptxtifmncpnoresetting.}} %//// Messages d'erreur : mini-gestion conditionnelle : propri��t��s de condition : non renseign��e \edef\errtxtifmncpempty{no condition property entered} % Message d'erreur en cas de propri��t�� de condition non renseign��e \edef\hlptxtifmncpempty{You must not leave the argument empty : % % Message d'aide en cas de propri��t�� de condition non renseign��e a condition property must be entered} \NewDocumentCommand\errorifmncpempty{m}{% % Erreur d��clench��e en cas de propri��t�� de condition non renseign��e \PackageError{conditext}% {#1 statement failed --> \errtxtifmncpempty}% {\hlptxtifmncpempty.}} %//// Messages d'erreur : mini-gestion conditionnelle : propri��t��s de condition : d��j�� red��finie \edef\errtxtifmncpalreadyredefined{condition property already redefined} % Message d'erreur en cas de propri��t�� de condition d��j�� red��finie \edef\hlptxtifmncpalreadyredefined{There must not be two condition properties % % Message d'aide en cas de propri��t�� de condition d��j�� red��finie with the same name in a mini conditional management : % you should check in the preamble if there is not % another setminicondiprop- statement already defined % with the same name as argument} \NewDocumentCommand\errorifmncpalreadyredefined{m m}{% % Erreur d��clench��e en cas de propri��t�� de condition d��j�� red��finie \PackageError{conditext}% {#1 statement with "#2" failed --> \errtxtifmncpalreadyredefined}% {\hlptxtifmncpalreadyredefined.}} %//// Messages d'erreur : mini-gestion conditionnelle : propri��t��s de condition : neutre \edef\errtxtifmncpnone{condition property with "none" status} % Message d'erreur en cas de propri��t�� de condition neutre \edef\hlptxtifmncpnone{You must not use a condition property with a "none" status : % Message d'aide en cas de propri��t�� de condition neutre redefine it using a setminicondiprop- statement} \NewDocumentCommand\errorifmncpnone{m m}{% % Erreur d��clench��e en cas de propri��t�� de condition neutre \PackageError{conditext}% {#1 statement failed --> \errtxtifmncpalreadyredefined}% {\hlptxtifmncpalreadyredefined.}} %//// Messages d'erreur : mini-gestion conditionnelle : propri��t��s de condition : valide \edef\errtxtifmncpnonok{\errtxtifmncpnone, or unknown} % Message d'erreur en cas de propri��t�� de condition neutre ou saisie erron��ment \edef\hlptxtifmncpnonok{\hlptxtifmncpnone. Or you should check if % % Message d'aide en cas de propri��t�� de condition neutre ou saisie erron��ment the condition property is correctly entered} \NewDocumentCommand\errorifmncpnonok{m}{% % Erreur d��clench��e en cas de propri��t�� de condition neutre ou saisie erron��ment \PackageError{conditext}% {#1 statement failed --> \errtxtifmncpnonok}% {\hlptxtifmncpnonok.}} %//// Messages d'erreur : mini-gestion conditionnelle : espaces de condition //// %//////////////////////////////////////////////////////////////////////////////// %//// Messages d'erreur : mini-gestion conditionnelle : espaces de condition : non renseign�� \edef\errtxtifmncsempty{no condition space entered} % Message d'erreur en cas d'espace de condition non renseign�� \edef\hlptxtifmncsempty{You must not leave the argument empty : % % Message d'aide en cas d'espace de condition non renseign�� a condition space must be entered} \NewDocumentCommand\errorifmncsempty{m}{% % Erreur d��clench��e en cas d'espace de condition non renseign�� \PackageError{conditext}% {#1 statement failed --> \errtxtifmncsempty}% {\hlptxtifmncsempty.}} %//// Messages d'erreur : mini-gestion conditionnelle : espaces de condition : d��j�� d��fini \edef\errtxtifmncsalreadydefined{condition space already defined} % Message d'erreur en cas d'espace de condition d��j�� d��fini \edef\hlptxtifmncsalreadydefined{You should check if there is not % % Message d'aide en cas d'espace de condition d��j�� d��fini another setminicondispace statement already defined % with the same name as argument} \NewDocumentCommand\errorifmncsalreadydefined{m m}{% % Erreur d��clench��e en cas d'espace de condition d��j�� d��fini \PackageError{conditext}% {#1 statement with "#2" failed --> \errtxtifmncsalreadydefined}% {\hlptxtifmncsalreadydefined.}} %//////////////////////////////////////////////////////////////////////////////// %//// Valeurs d'��l��ments pr��d��finis ///////////////////////////////////////////// %//////////////////////////////////////////////////////////////////////////////// %//// Valeurs d'��l��ments pr��d��finis : domaine de condition linguistique ///////// %//////////////////////////////////////////////////////////////////////////////// \newcondifield{language} %//// Valeurs d'��l��ments pr��d��finis : domaine de condition implicite //////////// %//////////////////////////////////////////////////////////////////////////////// \setimplicitcondifield{language} %//// Valeurs d'��l��ments pr��d��finis : domaines de condition g��n��riques ////////// %//////////////////////////////////////////////////////////////////////////////// \newcondifield{fieldi} \newcondifield{fieldii} \newcondifield{fieldiii} %//// Valeurs d'��l��ments pr��d��finis : propri��t��s de condition linguistiques ///// %//////////////////////////////////////////////////////////////////////////////// \newcondiprop{language}{albanian} \newcondiprop{language}{american} \newcondiprop{language}{arabic} \newcondiprop{language}{armenian} \newcondiprop{language}{bosnian} \newcondiprop{language}{brazilian} \newcondiprop{language}{breton} \newcondiprop{language}{canadian} \newcondiprop{language}{cantonese} \newcondiprop{language}{catalan} \newcondiprop{language}{chinese} \newcondiprop{language}{croatian} \newcondiprop{language}{czech} \newcondiprop{language}{danish} \newcondiprop{language}{dutch} \newcondiprop{language}{english} \newcondiprop{language}{esperanto} \newcondiprop{language}{estonian} \newcondiprop{language}{finnish} \newcondiprop{language}{french} \newcondiprop{language}{georgian} \newcondiprop{language}{german} \newcondiprop{language}{greek} \newcondiprop{language}{hebrew} \newcondiprop{language}{hungarian} \newcondiprop{language}{icelandic} \newcondiprop{language}{irish} \newcondiprop{language}{italian} \newcondiprop{language}{japanese} \newcondiprop{language}{lithuanian} \newcondiprop{language}{luxemburgish} \newcondiprop{language}{macedonian} \newcondiprop{language}{mexican} \newcondiprop{language}{norsk} \newcondiprop{language}{occitan} \newcondiprop{language}{portuguese} \newcondiprop{language}{romanian} \newcondiprop{language}{romansh} \newcondiprop{language}{russian} \newcondiprop{language}{sanskrit} \newcondiprop{language}{serbian} \newcondiprop{language}{slovenian} \newcondiprop{language}{spanish} \newcondiprop{language}{swedish} \newcondiprop{language}{tibetan} \newcondiprop{language}{turkish} \newcondiprop{language}{ukrainian} \newcondiprop{language}{vietnamese} %//// Valeurs d'��l��ments pr��d��finis : propri��t��s de condition g��n��riques //////// %//////////////////////////////////////////////////////////////////////////////// \newcondiprop{fieldi}{propa} \newcondiprop{fieldi}{propb} \newcondiprop{fieldi}{propc} \newcondiprop{fieldi}{propd} \newcondiprop{fieldi}{prope} \newcondiprop{fieldi}{propf} \newcondiprop{fieldi}{propg} \newcondiprop{fieldi}{proph} \newcondiprop{fieldi}{propi} \newcondiprop{fieldii}{propaa} \newcondiprop{fieldii}{propbb} \newcondiprop{fieldii}{propcc} \newcondiprop{fieldii}{propdd} \newcondiprop{fieldii}{propee} \newcondiprop{fieldii}{propff} \newcondiprop{fieldii}{propgg} \newcondiprop{fieldii}{prophh} \newcondiprop{fieldii}{propii} \newcondiprop{fieldiii}{propaaa} \newcondiprop{fieldiii}{propbbb} \newcondiprop{fieldiii}{propccc} \newcondiprop{fieldiii}{propddd} \newcondiprop{fieldiii}{propeee} \newcondiprop{fieldiii}{propfff} \newcondiprop{fieldiii}{propggg} \newcondiprop{fieldiii}{prophhh} \newcondiprop{fieldiii}{propiii}