texlive[61970] Master/texmf-dist: crefthe (10feb22)

commits+karl at tug.org commits+karl at tug.org
Thu Feb 10 22:19:07 CET 2022


Revision: 61970
          http://tug.org/svn/texlive?view=revision&revision=61970
Author:   karl
Date:     2022-02-10 22:19:07 +0100 (Thu, 10 Feb 2022)
Log Message:
-----------
crefthe (10feb22)

Modified Paths:
--------------
    trunk/Master/texmf-dist/doc/latex/crefthe/crefthe-doc.pdf
    trunk/Master/texmf-dist/doc/latex/crefthe/crefthe-doc.tex
    trunk/Master/texmf-dist/tex/latex/crefthe/crefthe.sty

Modified: trunk/Master/texmf-dist/doc/latex/crefthe/crefthe-doc.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/crefthe/crefthe-doc.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/crefthe/crefthe-doc.tex	2022-02-10 21:18:52 UTC (rev 61969)
+++ trunk/Master/texmf-dist/doc/latex/crefthe/crefthe-doc.tex	2022-02-10 21:19:07 UTC (rev 61970)
@@ -64,10 +64,10 @@
         fonttitle = \sffamily,
         attach boxed title to top left = {yshift=-\tcboxedtitleheight/2, xshift=.5cm},
         boxed title style = {boxrule=0pt, colframe=paper},
-        before skip = 0.3cm,
-        after skip = 0.3cm,
-        top = 3mm,
-        bottom = 3mm,
+        before skip = 3mm,
+        after skip = 3mm,
+        top = 2.5mm,
+        bottom = 1.5mm,
         title={\scshape\sffamily #1}]%
 }{\end{tcolorbox}\ResumeLineNumbers}
 
@@ -89,7 +89,7 @@
 
 \title{\crefthepackage{} - cross referencing with proper definite articles}
 \author{Jinwen XU}
-\thanks{Corresponding to: \texttt{\crefthepackage{} 2022/02/04}}
+\thanks{Corresponding to: \texttt{\crefthepackage{} 2022/02/10}}
 \date{February 2022, in Paris}
 
 \maketitle
@@ -156,9 +156,9 @@
 \crefthename{theorem}[le]{théorème}[les]{théorèmes}
 \end{code}
 
-% \begin{tip}
-%     The \lstinline|\crefthename|s should be placed in your preamble.
-% \end{tip}
+\begin{tip}
+    The \lstinline|\crefthename|s should be placed in your preamble, otherwise the \lstinline|\cref| formats will not be set. These names can, however, be reset within the document body.
+\end{tip}
 
 Then you can use the command \lstinline|\crefthe| as follows:
 \begin{itemize}
@@ -207,7 +207,7 @@
 
 Voilà !
 
-\section{Regarding the cases}
+\section{Regarding the upper and lower cases}
 
 The commands also have correspoding uppercased version: \lstinline|\Crefthename| and \lstinline|\Crefthe|, similar to \textsf{cleveref}'s \lstinline|\Crefname| and \lstinline|\Cref|, reserved for use at the beginning of a sentence. \lstinline|\Crefthe| can handle case changing automatically: for example, with \lstinline|\Crefthe[À]{thm1,thm2,prop3}|, you will get something like
 
@@ -222,22 +222,22 @@
 \Crefthename{proposition}[La]{proposition}[Les]{propositions}
 \end{code}
 
-\section{Relationship with \textsf{cleveref}}
+\section{For writing multi-language documents}
 
+To place hyperlinks at the right place, \lstinline|\crefthename| touches the corresponding \lstinline|\crefformat| internally, which makes the format language-dependent. If you are writing multi-language documents, you may consider putting \lstinline|\crefthename| inside your language configuration so as to reset it each time you select a new language.
+
+
+\section{The relationship with \textsf{cleveref}}
+
 \crefthepackage{} loads \textsf{cleveref} automatically and pass all the options to it. All its commands, used without optional arguments, degenerate to those in \textsf{cleveref}. For example, \lstinline|\crefthe{...}| is the same as \lstinline|\cref{...}|, and \lstinline|\crefthename| is the same as \lstinline|\crefname| if the definite articles are not specified. That said, you can safely use the command \lstinline|\crefthe| everywhere in your document without causing extra trouble.
 
-With the option \texttt{overwrite}, user commands in \textsf{cleveref} will be replaced by those offered here, thus you can simply write \lstinline|\cref| for \lstinline|\crefthe| -- and similarly for \lstinline|\Cref|, \lstinline|\crefname| and \lstinline|\Crefname|.
+With the option \texttt{overwrite}, user commands in \textsf{cleveref} will be replaced by those offered here, thus you can simply write \lstinline|\cref| for \lstinline|\crefthe| -- and similarly with \lstinline|\Cref|, \lstinline|\crefname| and \lstinline|\Crefname|.
 
-\section{For multi-language documents}
 
-To place hyperlinks at the right place, \lstinline|\crefthename| touches the corresponding \lstinline|\crefformat| internally, which makes the format language-dependent. If you are writing multi-language documents, you may consider putting \lstinline|\crefthename| inside your language configuration so as to reset it each time you select a new language.
-
 \section{Known issues}
 \begin{itemize}
     \item \crefthepackage{} currently works for French, Italian, Portuguese (European and Brazilian) and Spanish, certainly more would be added to this list.
-    \item The current mechanism does not work for German. The author plans to adopt a more refined approach in later versions in order to support the various situations in German.
-    \item For now, the automatic case changing mechanism only works properly under Unicode based engines. If you are using pdf\LaTeX{} or typing accented letters with text commands, \lstinline|\Crefthe| may not work as expected.
-    % \item In case that the initial letter of \meta{prep} is capitalized, \crefthepackage{} cannot yet handle the case changes automatically. However, this should be a rare occurrence.
+    \item The current mechanism does not work for German. The author plans to adopt a more refined approach in later versions in order to support the various situations in German. Meanwhile, you may consider the package \textsf{zref-clever}, which has a much more powerful and sophisticated interface for configure cross referencing.
     \item The names of theorem-like environments are not provided --- for the moment you need to define them all by yourself. However, users are encouraged to use the \ProjLib{} toolkit, which already handles everything for you.
 \end{itemize}
 

Modified: trunk/Master/texmf-dist/tex/latex/crefthe/crefthe.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/crefthe/crefthe.sty	2022-02-10 21:18:52 UTC (rev 61969)
+++ trunk/Master/texmf-dist/tex/latex/crefthe/crefthe.sty	2022-02-10 21:19:07 UTC (rev 61970)
@@ -1,6 +1,6 @@
 %%
 %% Copyright (C) 2021-2022 by Jinwen XU
-%% -------------------------------
+%% ------------------------------------
 %%
 %% This file may be distributed and/or modified under the conditions of
 %% the LaTeX Project Public License, either version 1.3c of this license
@@ -13,323 +13,292 @@
 \RequirePackage{l3keys2e}
 \ProvidesExplPackage
   {crefthe}
-  {2022/02/04} {}
+  {2022/02/10} {}
   {Cross referencing with proper definite articles}
 
-\keys_define:nn {crefthe}
+\keys_define:nn { crefthe }
   {
     , overwrite .bool_set:N = \l__crefthe_overwrite_bool
-    , overwrite .initial:n = { false }
-    , unknown .code:n =
-        {
-          \PassOptionsToPackage { \CurrentOption } {cleveref}
-        }
+    , overwrite .initial:n  = { false }
+    , unknown .code:n       =
+      { \PassOptionsToPackage { \CurrentOption } { cleveref } }
   }
-\ProcessKeysOptions{crefthe}
+\ProcessKeysOptions { crefthe }
 
-\RequirePackage{cleveref}
+\RequirePackage { cleveref }
 
-\cs_set_eq:cc {crefthe_cref_original:n} {cref}
-\cs_set_eq:cc {crefthe_Cref_original:n} {Cref}
-\cs_set_eq:cc {crefthe_crefname_original:n} {crefname}
-\cs_set_eq:cc {crefthe_Crefname_original:n} {Crefname}
+\NewCommandCopy \crefthe_cref_original:w     \cref
+\NewCommandCopy \crefthe_Cref_original:w     \Cref
+\NewCommandCopy \crefthe_crefname_original:w \crefname
+\NewCommandCopy \crefthe_Crefname_original:w \Crefname
 
-\bool_if:NT \l__crefthe_overwrite_bool
-  {
-    \hook_gput_next_code:nn {package/crefthe/after}
-      {
-        \cs_set_eq:cc {cref} {crefthe}
-        \cs_set_eq:cc {Cref} {Crefthe}
-        \cs_set_eq:cc {crefname} {crefthename}
-        \cs_set_eq:cc {Crefname} {Crefthename}
-      }
-  }
+\str_new:N \l__crefthe_tmpa_str
 
-\tl_new:N \g__crefthe_prep_once_tl
-\tl_new:N \g__crefthe_prep_each_tl
+% \l__crefthe_prep_once_tl is for the "-" mode,
+% that only passes the preposition to the first definite article;
+% \l__crefthe_prep_each_tl is for the "+" mode,
+% that passes the preposition to every definite article.
+\tl_new:N \l__crefthe_prep_once_tl
+\tl_new:N \l__crefthe_prep_each_tl
 
-\tl_new:N \l__crefthe_prep_mode_tl
+\bool_new:N \l__crefthe_uppercase_bool
 
-\cs_new:Nn \crefthe_case:n { #1 }
-\cs_new:Nn \crefthe_nochange:n { #1 }
-
 \NewDocumentCommand \crefthe { s t- t+ O{} m }
   {
-    \bool_if:nTF { #2 }
+    \bool_set_false:N \l__crefthe_uppercase_bool
+    \__crefthe_cref_general:NNNnnN #1 #2 #3 { #4 } { #5 } \crefthe_cref_original:w
+  }
+\NewDocumentCommand \Crefthe { s t- t+ O{} m }
+  {
+    \bool_set_true:N \l__crefthe_uppercase_bool
+    \__crefthe_cref_general:NNNnnN #1 #2 #3 { #4 } { #5 } \crefthe_Cref_original:w
+  }
+\cs_new_protected:Npn \__crefthe_cref_general:NNNnnN #1 #2 #3 #4 #5 #6
+  {
+    \bool_if:NTF #2
+      { \tl_set:Nn \l__crefthe_prep_once_tl { #4 } }
       {
-        \tl_gset:Nn \g__crefthe_prep_once_tl { #4 }
-      }
-      {
-        \bool_if:nTF { #3 }
+        \bool_if:NTF #3
+          { \tl_set:Nn \l__crefthe_prep_each_tl { #4 } }
           {
-            \tl_gset:Nn \g__crefthe_prep_each_tl { #4 }
-          }
-          {
-            \exp_args:Nx \str_case:nn \l__crefthe_prep_mode_tl
+            % \str_set:Nx fully expands \__crefthe_prep_mode: into a string,
+            % then \str_case:Vn compares the value of the resulting string:
+            \str_set:Nx \l__crefthe_tmpa_str { \__crefthe_prep_mode: }
+            \str_case:Vn \l__crefthe_tmpa_str
               {
-                { - } { \tl_gset:Nn \g__crefthe_prep_once_tl { #4 } }
-                { + } { \tl_gset:Nn \g__crefthe_prep_each_tl  { #4 } }
+                { - } { \tl_set:Nn \l__crefthe_prep_once_tl { #4 } }
+                { + } { \tl_set:Nn \l__crefthe_prep_each_tl  { #4 } }
               }
           }
       }
-    \bool_if:nTF { #1 } { \crefthe_cref_original:n * { #5 } } { \crefthe_cref_original:n { #5 } }
-    \tl_gset:Nn \g__crefthe_prep_each_tl {}
+    \bool_if:NTF #1
+      { #6 * { #5 } } % here #6 is \crefthe_cref_original:w or \crefthe_Cref_original:w
+      { #6   { #5 } }
+    \tl_gclear:N \l__crefthe_prep_each_tl
   }
 
-\NewDocumentCommand \Crefthe { s t- t+ O{} m }
+% \__crefthe_prep_mode: defines the default mode for supported languages
+\cs_new:Npn \__crefthe_prep_mode:
   {
-    \cs_gset:Npn \crefthe_case:n ##1 { \text_titlecase:n {##1} }
-    \bool_if:nTF { #2 }
+    \str_case:Vn \languagename
       {
-        \tl_gset:Nn \g__crefthe_prep_once_tl { #4 }
+        {french}        { + }
+        {italian}       { + }
+        {spanish}       { - }
+        {portuguese}    { + }
+        {brazilian}     { + }
       }
-      {
-        \bool_if:nTF { #3 }
-          {
-            \tl_gset:Nn \g__crefthe_prep_each_tl { #4 }
-          }
-          {
-            \exp_args:Nx \str_case:nn \l__crefthe_prep_mode_tl
-              {
-                { - } { \tl_gset:Nn \g__crefthe_prep_once_tl { #4 } }
-                { + } { \tl_gset:Nn \g__crefthe_prep_each_tl  { #4 } }
-              }
-          }
-      }
-    \bool_if:nTF { #1 } { \crefthe_Cref_original:n * { #5 } } { \crefthe_Cref_original:n { #5 } }
-    \tl_gset:Nn \g__crefthe_prep_each_tl {}
   }
 
 \NewDocumentCommand \crefthename { m O{} m O{} m }
   {
-    \tl_if_blank:eTF { #2 }
-      {
-        \crefthe_crefname_original:n { #1 } { #3 } { #5 }
-        \cs_set:cn { cref_#1_format:nnn } { ##2 #3 ~ ##1 ##3 }
-        \cs_set:cn { cref_#1_format_first:nnn } { ##2 #5 ~ ##1 ##3 }
-      }
-      {
-        \crefthe_crefname_original:n { #1 } { \crefthemark{ #2 } #3 } { \crefthemark{ #4 } #5 }
-        \cs_set:cn { cref_#1_format:nnn } { \crefthemark { #2 } ##2 #3 ~ ##1 ##3 }
-        \cs_set:cn { cref_#1_format_first:nnn } { \crefthemark { #4 } ##2 #5 ~ ##1 ##3 }
-      }
-    \hook_gput_next_code:nn { begindocument }
-      {
-        \cs_set_eq:cc { cref@ #1 @format } { cref_#1_format:nnn }
-        \cs_set_eq:cc { cref@ #1 @format at first } { cref_#1_format_first:nnn }
-      }
+    \__crefthe_name_general:nnnnnNN { #1 } { #2 } { #3 } { #4 } { #5 }
+      c \crefthe_crefname_original:w
   }
-
 \NewDocumentCommand \Crefthename { m O{} m O{} m }
   {
-    \tl_if_blank:eTF { #2 }
+    \__crefthe_name_general:nnnnnNN { #1 } { #2 } { #3 } { #4 } { #5 }
+      C \crefthe_Crefname_original:w
+  }
+\cs_new_protected:Npn \__crefthe_name_general:nnnnnNN #1 #2 #3 #4 #5 #6 #7
+  {
+    % #6 is c or C
+    % #7 is \crefthe_crefname_original:w or \crefthe_Crefname_original:w
+    \tl_if_blank:nTF { #2 }
       {
-        \crefthe_Crefname_original:n { #1 } { #3 } { #5 }
-        \cs_set:cn { Cref_#1_format:nnn } { ##2 #3 ~ ##1 ##3 }
-        \cs_set:cn { Cref_#1_format_first:nnn } { ##2 #5 ~ ##1 ##3 }
+        #7 { #1 } { #3 } { #5 }
+        \cs_set:cn { #6ref_#1_format:nnn } { ##2 #3 ~ ##1 ##3 }
+        \cs_set:cn { #6ref_#1_format_first:nnn } { ##2 #5 ~ ##1 ##3 }
       }
       {
-        \crefthe_Crefname_original:n { #1 } { \crefthemark{ #2 } #3 }{ \crefthemark{ #4 } #5 }
-        \cs_set:cn { Cref_#1_format:nnn } { \crefthemark { #2 } ##2 #3 ~ ##1 ##3 }
-        \cs_set:cn { Cref_#1_format_first:nnn } { \crefthemark { #4 } ##2 #5 ~ ##1 ##3 }
+        #7 { #1 } { \crefthemark { #2 } #3 } { \crefthemark { #4 } #5 }
+        \cs_set:cn { #6ref_#1_format:nnn } { \crefthemark { #2 } ##2 #3 ~ ##1 ##3 }
+        \cs_set:cn { #6ref_#1_format_first:nnn } { \crefthemark { #4 } ##2 #5 ~ ##1 ##3 }
       }
-    \hook_gput_next_code:nn { begindocument }
+    \hook_gput_code:nnn { begindocument } { crefthe }
       {
-        \cs_set_eq:cc { Cref@ #1 @format } { Cref_#1_format:nnn }
-        \cs_set_eq:cc { Cref@ #1 @format at first } { Cref_#1_format_first:nnn }
+        \cs_set_eq:cc { #6ref@ #1 @format } { #6ref_#1_format:nnn }
+        \cs_set_eq:cc { #6ref@ #1 @format at first } { #6ref_#1_format_first:nnn }
       }
   }
 
+\cs_generate_variant:Nn \text_lowercase:n { V }
 \NewDocumentCommand \crefthemark { m }
   {
-    \crefthe_contraction:nn { \crefthe_case:n \g__crefthe_prep_each_tl }
-      {
-        \crefthe_contraction:nn { \crefthe_case:n \g__crefthe_prep_once_tl } { #1 }
-      }
-    \tl_gset:Nn \g__crefthe_prep_once_tl {}
-    \tl_gset:Nx \g__crefthe_prep_each_tl { \text_lowercase:n \g__crefthe_prep_each_tl }
+    \crefthe_contraction:Ve \l__crefthe_prep_each_tl
+      { \crefthe_contraction:Vn \l__crefthe_prep_once_tl { #1 } }
+    \tl_gclear:N \l__crefthe_prep_once_tl
+    \tl_set:Nx \l__crefthe_prep_each_tl
+      { \text_lowercase:V \l__crefthe_prep_each_tl }
     \str_if_eq:eeF { \str_tail:n { #1 } } { ' } { ~ }
-    \cs_gset:Npn \crefthe_case:n ##1 { \crefthe_nochange:n {##1} }
-    % \cs_gset:Npn \crefthe_case:n ##1 { \text_lowercase:n {##1} }
+    \bool_set_false:N \l__crefthe_uppercase_bool
   }
 
-\tl_set:Nn \l__crefthe_prep_mode_tl {
-  \str_case_e:nn { \languagename }
-    {
-      {french}        { + }
-      {italian}       { + }
-      {spanish}       { - }
-      {portuguese}    { + }
-      {brazilian}     { + }
-    }
-}
-
+\prg_generate_conditional_variant:Nnn \str_case_e:nn { nv } { p, T, F, TF }
 \cs_new:Npn \crefthe_contraction:nn #1#2
   {
-    \tl_if_blank:eTF { #1 }
-      { #2 }
+    \exp_args:Ne \__crefthe_contraction:nnn
+      { \text_lowercase:n { #2 } } { #1 } { #2 }
+  }
+\cs_generate_variant:Nn \crefthe_contraction:nn { V, Ve }
+\cs_new:Npn \__crefthe_contraction:nnn #1 #2 #3
+  {
+    % #1 is \text_lowercase:n { #3 }
+    % #2 is the preposition
+    \tl_if_blank:nTF { #2 }
+      { #3 }
       {
-        \tl_if_exist:cTF { crefthe_contraction_rule_ \languagename _tl }
+        \tl_if_exist:cTF { c_crefthe_contraction_rule_ \languagename _tl }
           {
-            \exp_args:Nnx \str_case_e:nnF { #1~\text_lowercase:n{ #2 } }
+            \exp_args:Ne \__crefthe_conditional_uppercase:n
               {
-                \tl_use:c { crefthe_contraction_rule_ \languagename _tl }
+                \str_case_e:nvF { #2~#1 }
+                  { c_crefthe_contraction_rule_ \languagename _tl }
+                  { #2~#1 }
               }
-              { #1~\text_lowercase:n{ #2 } }
           }
-          { #1 ~ #2 }
+          { #2~#3 }
       }
   }
-
-\tl_gset:Nn \crefthe_contraction_rule_french_tl
+\cs_new:Npn \__crefthe_conditional_uppercase:n #1
   {
-    { à~le }      { au }
-    { à~les }     { aux }
-    { de~le }     { du }
-    { de~les }    { des }
-    { À~le }      { Au }
-    { À~les }     { Aux }
-    { De~le }     { Du }
-    { De~les }    { Des }
+    \bool_if:NTF \l__crefthe_uppercase_bool
+      { \text_titlecase_first:n }
+      { \use:n }
+        { #1 }
   }
 
-\tl_gset:Nn \crefthe_contraction_rule_italian_tl
+\hook_gput_code:nnn { begindocument/end } { crefthe }
   {
-    { a~il }      { al }
-    { a~lo }      { allo }
-    { a~l' }      { all' }
-    { a~la }      { alla }
-    { di~il }     { del }
-    { di~lo }     { dello }
-    { di~l' }     { dell' }
-    { di~la }     { della }
-    { da~il }     { dal }
-    { da~lo }     { dallo }
-    { da~l' }     { dall' }
-    { da~la }     { dalla }
-    { in~il }     { nel }
-    { in~lo }     { nello }
-    { in~l' }     { nell' }
-    { in~la }     { nella }
-    { su~il }     { sul }
-    { su~lo }     { sullo }
-    { su~l' }     { sull' }
-    { su~la }     { sulla }
-    { a~i }       { ai }
-    { a~gli }     { agli }
-    { a~le }      { alle }
-    { di~i }      { dei }
-    { di~gli }    { degli }
-    { di~le }     { delle }
-    { da~i }      { dai }
-    { da~gli }    { dagli }
-    { da~le }     { dalle }
-    { in~i }      { nei }
-    { in~gli }    { negli }
-    { in~le }     { nelle }
-    { su~i }      { sui }
-    { su~gli }    { sugli }
-    { su~le }     { sulle }
-    { A~il }      { Al }
-    { A~lo }      { Allo }
-    { A~l' }      { All' }
-    { A~la }      { Alla }
-    { Di~il }     { Del }
-    { Di~lo }     { Dello }
-    { Di~l' }     { Dell' }
-    { Di~la }     { Della }
-    { Da~il }     { Dal }
-    { Da~lo }     { Dallo }
-    { Da~l' }     { Dall' }
-    { Da~la }     { Dalla }
-    { In~il }     { Nel }
-    { In~lo }     { Nello }
-    { In~l' }     { Nell' }
-    { In~la }     { Nella }
-    { Su~il }     { Sul }
-    { Su~lo }     { Sullo }
-    { Su~l' }     { Sull' }
-    { Su~la }     { Sulla }
-    { A~i }       { Ai }
-    { A~gli }     { Agli }
-    { A~le }      { Alle }
-    { Di~i }      { Dei }
-    { Di~gli }    { Degli }
-    { Di~le }     { Delle }
-    { Da~i }      { Dai }
-    { Da~gli }    { Dagli }
-    { Da~le }     { Dalle }
-    { In~i }      { Nei }
-    { In~gli }    { Negli }
-    { In~le }     { Nelle }
-    { Su~i }      { Sui }
-    { Su~gli }    { Sugli }
-    { Su~le }     { Sulle }
+    \bool_if:NT \l__crefthe_overwrite_bool
+      {
+        \RenewCommandCopy \cref     \crefthe
+        \RenewCommandCopy \Cref     \Crefthe
+        \RenewCommandCopy \crefname \crefthename
+        \RenewCommandCopy \Crefname \Crefthename
+      }
   }
 
-\tl_gset:Nn \crefthe_contraction_rule_spanish_tl
+\tl_const:Nn \c_crefthe_contraction_rule_french_tl
   {
-    { a~el }      { al }
-    { de~el }     { del }
-    { A~el }      { Al }
-    { De~el }     { Del }
+    { à~le   }     { au  }
+    { à~les  }     { aux }
+    { de~le  }     { du  }
+    { de~les }     { des }
+    { À~le   }     { Au  }
+    { À~les  }     { Aux }
+    { De~le  }     { Du  }
+    { De~les }     { Des }
   }
-
-\tl_gset:Nn \crefthe_contraction_rule_portuguese_tl
+\tl_const:Nn \c_crefthe_contraction_rule_italian_tl
   {
-    { a~o }       { ao }
-    { a~a }       { à }
-    { a~os }      { aos }
-    { a~as }      { às }
-    { de~o }      { do }
-    { de~a }      { da }
-    { de~os }     { dos }
-    { de~as }     { das }
-    { em~o }      { no }
-    { em~a }      { na }
-    { em~os }     { nos }
-    { em~as }     { nas }
-    { A~o }       { Ao }
-    { A~a }       { À }
-    { A~os }      { Aos }
-    { A~as }      { Às }
-    { De~o }      { Do }
-    { De~a }      { Da }
-    { De~os }     { Dos }
-    { De~as }     { Das }
-    { Em~o }      { No }
-    { Em~a }      { Na }
-    { Em~os }     { Nos }
-    { Em~as }     { Nas }
+    { a~il   }     { al    }
+    { a~lo   }     { allo  }
+    { a~l'   }     { all'  }
+    { a~la   }     { alla  }
+    { di~il  }     { del   }
+    { di~lo  }     { dello }
+    { di~l'  }     { dell' }
+    { di~la  }     { della }
+    { da~il  }     { dal   }
+    { da~lo  }     { dallo }
+    { da~l'  }     { dall' }
+    { da~la  }     { dalla }
+    { in~il  }     { nel   }
+    { in~lo  }     { nello }
+    { in~l'  }     { nell' }
+    { in~la  }     { nella }
+    { su~il  }     { sul   }
+    { su~lo  }     { sullo }
+    { su~l'  }     { sull' }
+    { su~la  }     { sulla }
+    { a~i    }     { ai    }
+    { a~gli  }     { agli  }
+    { a~le   }     { alle  }
+    { di~i   }     { dei   }
+    { di~gli }     { degli }
+    { di~le  }     { delle }
+    { da~i   }     { dai   }
+    { da~gli }     { dagli }
+    { da~le  }     { dalle }
+    { in~i   }     { nei   }
+    { in~gli }     { negli }
+    { in~le  }     { nelle }
+    { su~i   }     { sui   }
+    { su~gli }     { sugli }
+    { su~le  }     { sulle }
+    { A~il   }     { Al    }
+    { A~lo   }     { Allo  }
+    { A~l'   }     { All'  }
+    { A~la   }     { Alla  }
+    { Di~il  }     { Del   }
+    { Di~lo  }     { Dello }
+    { Di~l'  }     { Dell' }
+    { Di~la  }     { Della }
+    { Da~il  }     { Dal   }
+    { Da~lo  }     { Dallo }
+    { Da~l'  }     { Dall' }
+    { Da~la  }     { Dalla }
+    { In~il  }     { Nel   }
+    { In~lo  }     { Nello }
+    { In~l'  }     { Nell' }
+    { In~la  }     { Nella }
+    { Su~il  }     { Sul   }
+    { Su~lo  }     { Sullo }
+    { Su~l'  }     { Sull' }
+    { Su~la  }     { Sulla }
+    { A~i    }     { Ai    }
+    { A~gli  }     { Agli  }
+    { A~le   }     { Alle  }
+    { Di~i   }     { Dei   }
+    { Di~gli }     { Degli }
+    { Di~le  }     { Delle }
+    { Da~i   }     { Dai   }
+    { Da~gli }     { Dagli }
+    { Da~le  }     { Dalle }
+    { In~i   }     { Nei   }
+    { In~gli }     { Negli }
+    { In~le  }     { Nelle }
+    { Su~i   }     { Sui   }
+    { Su~gli }     { Sugli }
+    { Su~le  }     { Sulle }
   }
-
-\tl_gset:Nn \crefthe_contraction_rule_brazilian_tl
+\tl_const:Nn \c_crefthe_contraction_rule_spanish_tl
   {
-    { a~o }       { ao }
-    { a~a }       { à }
-    { a~os }      { aos }
-    { a~as }      { às }
-    { de~o }      { do }
-    { de~a }      { da }
-    { de~os }     { dos }
-    { de~as }     { das }
-    { em~o }      { no }
-    { em~a }      { na }
-    { em~os }     { nos }
-    { em~as }     { nas }
-    { A~o }       { Ao }
-    { A~a }       { À }
-    { A~os }      { Aos }
-    { A~as }      { Às }
-    { De~o }      { Do }
-    { De~a }      { Da }
-    { De~os }     { Dos }
-    { De~as }     { Das }
-    { Em~o }      { No }
-    { Em~a }      { Na }
-    { Em~os }     { Nos }
-    { Em~as }     { Nas }
+    { a~el  }      { al  }
+    { de~el }      { del }
+    { A~el  }      { Al  }
+    { De~el }      { Del }
   }
+\tl_const:Nn \c_crefthe_contraction_rule_portuguese_tl
+  {
+    { a~o   }      { ao  }
+    { a~a   }      { à   }
+    { a~os  }      { aos }
+    { a~as  }      { às  }
+    { de~o  }      { do  }
+    { de~a  }      { da  }
+    { de~os }      { dos }
+    { de~as }      { das }
+    { em~o  }      { no  }
+    { em~a  }      { na  }
+    { em~os }      { nos }
+    { em~as }      { nas }
+    { A~o   }      { Ao  }
+    { A~a   }      { À   }
+    { A~os  }      { Aos }
+    { A~as  }      { Às  }
+    { De~o  }      { Do  }
+    { De~a  }      { Da  }
+    { De~os }      { Dos }
+    { De~as }      { Das }
+    { Em~o  }      { No  }
+    { Em~a  }      { Na  }
+    { Em~os }      { Nos }
+    { Em~as }      { Nas }
+  }
+\tl_const:Nx \c_crefthe_contraction_rule_brazilian_tl
+  { \exp_not:V \c_crefthe_contraction_rule_portuguese_tl }
 
 \endinput
 %%



More information about the tex-live-commits mailing list.