summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2022-02-10 21:19:07 +0000
committerKarl Berry <karl@freefriends.org>2022-02-10 21:19:07 +0000
commit2328328e473107d8bfe42ef7f2fcff96ce50c6f4 (patch)
tree7b21688bcb36c1342ba2f42b5bdd124933118d0e
parent1d69ba3a31952647ab48fdc693b18fcffd388cd8 (diff)
crefthe (10feb22)
git-svn-id: svn://tug.org/texlive/trunk@61970 c570f23f-e606-0410-a88d-b1316a301751
-rw-r--r--Master/texmf-dist/doc/latex/crefthe/crefthe-doc.pdfbin110051 -> 111955 bytes
-rw-r--r--Master/texmf-dist/doc/latex/crefthe/crefthe-doc.tex34
-rw-r--r--Master/texmf-dist/tex/latex/crefthe/crefthe.sty475
3 files changed, 239 insertions, 270 deletions
diff --git a/Master/texmf-dist/doc/latex/crefthe/crefthe-doc.pdf b/Master/texmf-dist/doc/latex/crefthe/crefthe-doc.pdf
index 7175c64abc7..5cf5715d5c1 100644
--- a/Master/texmf-dist/doc/latex/crefthe/crefthe-doc.pdf
+++ b/Master/texmf-dist/doc/latex/crefthe/crefthe-doc.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/crefthe/crefthe-doc.tex b/Master/texmf-dist/doc/latex/crefthe/crefthe-doc.tex
index 39d53e76b00..718672f8968 100644
--- a/Master/texmf-dist/doc/latex/crefthe/crefthe-doc.tex
+++ b/Master/texmf-dist/doc/latex/crefthe/crefthe-doc.tex
@@ -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 @@ Before everything, you need to define the names, which can be done with \lstinli
\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 @@ which would result in (provided that you have done \lstinline|\selectlanguage{fr
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 @@ Of course you will have to define the \lstinline|\Crefthename|s separately, for
\Crefthename{proposition}[La]{proposition}[Les]{propositions}
\end{code}
-\section{Relationship with \textsf{cleveref}}
+\section{For writing multi-language documents}
-\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.
+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.
-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|.
-\section{For multi-language documents}
+\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 with \lstinline|\Cref|, \lstinline|\crefname| and \lstinline|\Crefname|.
-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}
diff --git a/Master/texmf-dist/tex/latex/crefthe/crefthe.sty b/Master/texmf-dist/tex/latex/crefthe/crefthe.sty
index 2da17143342..27fbe01122a 100644
--- a/Master/texmf-dist/tex/latex/crefthe/crefthe.sty
+++ b/Master/texmf-dist/tex/latex/crefthe/crefthe.sty
@@ -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}
- }
- }
-
-\tl_new:N \g__crefthe_prep_once_tl
-\tl_new:N \g__crefthe_prep_each_tl
+\str_new:N \l__crefthe_tmpa_str
-\tl_new:N \l__crefthe_prep_mode_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
-\cs_new:Nn \crefthe_case:n { #1 }
-\cs_new:Nn \crefthe_nochange:n { #1 }
+\bool_new:N \l__crefthe_uppercase_bool
\NewDocumentCommand \crefthe { s t- t+ O{} m }
{
- \bool_if:nTF { #2 }
- {
- \tl_gset:Nn \g__crefthe_prep_once_tl { #4 }
- }
- {
- \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 {}
+ \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 }
{
- \cs_gset:Npn \crefthe_case:n ##1 { \text_titlecase:n {##1} }
- \bool_if:nTF { #2 }
- {
- \tl_gset:Nn \g__crefthe_prep_once_tl { #4 }
- }
+ \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 } }
{
- \bool_if:nTF { #3 }
- {
- \tl_gset:Nn \g__crefthe_prep_each_tl { #4 }
- }
+ \bool_if:NTF #3
+ { \tl_set:Nn \l__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 \crefthename { m O{} m O{} m }
+% \__crefthe_prep_mode: defines the default mode for supported languages
+\cs_new:Npn \__crefthe_prep_mode:
{
- \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 }
- }
+ \str_case:Vn \languagename
{
- \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@first } { cref_#1_format_first:nnn }
+ {french} { + }
+ {italian} { + }
+ {spanish} { - }
+ {portuguese} { + }
+ {brazilian} { + }
}
}
+\NewDocumentCommand \crefthename { m O{} m O{} m }
+ {
+ \__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@first } { Cref_#1_format_first:nnn }
+ \cs_set_eq:cc { #6ref@ #1 @format } { #6ref_#1_format:nnn }
+ \cs_set_eq:cc { #6ref@ #1 @format@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~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 }
+ { 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
%%