summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/ccref/ccref.sty
diff options
context:
space:
mode:
Diffstat (limited to 'macros/latex/contrib/ccref/ccref.sty')
-rw-r--r--macros/latex/contrib/ccref/ccref.sty212
1 files changed, 116 insertions, 96 deletions
diff --git a/macros/latex/contrib/ccref/ccref.sty b/macros/latex/contrib/ccref/ccref.sty
index a507a2652c..4358237afa 100644
--- a/macros/latex/contrib/ccref/ccref.sty
+++ b/macros/latex/contrib/ccref/ccref.sty
@@ -12,21 +12,28 @@
\NeedsTeXFormat{LaTeX2e}[2020-10-01]
\ProvidesExplPackage
{ccref}
- {2021/10/29}
+ {2021/10/30}
{}
- {cleveref with article contraction}
+ {Cross referencing with proper definite articles}
\RequirePackage{cleveref}
\tl_gset:Nn \g_ccref_prepf_tl {}
\tl_gset:Nn \g_ccref_prep_tl {}
-\NewDocumentCommand{\ccref}{sO{}m}{
- \IfBooleanTF{ #1 }{
- \tl_gset:Nn \g_ccref_prep_tl { #2 }
+\NewDocumentCommand{\ccref}{st-t+O{}m}{
+ \IfBooleanTF{ #2 }{
+ \tl_gset:Nn \g_ccref_prepf_tl { #4 }
}{
- \tl_gset:Nn \g_ccref_prepf_tl { #2 }
+ \IfBooleanTF{ #3 }{
+ \tl_gset:Nn \g_ccref_prep_tl { #4 }
+ }{
+ \str_case_e:nn { \ccref_prep_mode:nn } {
+ { - } { \tl_gset:Nn \g_ccref_prepf_tl { #4 } }
+ { + } { \tl_gset:Nn \g_ccref_prep_tl { #4 } }
+ }
+ }
}
- \cref {#3}
+ \IfBooleanTF{ #1 } { \cref*{#5} } { \cref{#5} }
\tl_gset:Nn \g_ccref_prep_tl {}
}
@@ -37,97 +44,110 @@
\tl_gset:Nn \g_ccref_prepf_tl {}
}
-\cs_set:Npn \ccref_contraction:nn #1#2 {
+\cs_set:Npn \ccref_prep_mode:nn {
\str_case_e:nn { \languagename }
{
- {french}{
- \str_case_e:nnF {#1~#2} {
- {à~le} {au}
- {à~la} {à~la}
- {à~l'} {à~l'}
- {à~les} {aux}
- {de~le} {du}
- {de~la} {de~la}
- {de~l'} {de~l'}
- {de~les} {des}
- }{#2}
- }
- {italian}{
- \str_case_e:nnF {#1~#2} {
- {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}
- }{#2}
- }
- {portuguese}{
- \str_case_e:nnF {#1~#2} {
- {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}
- }{#2}
- }
- {brazilian}{
- \str_case_e:nnF {#1~#2} {
- {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}
- }{#2}
- }
- {spanish}{
- \str_case_e:nnF {#1~#2} {
- {a~el} {al}
- {de~el} {del}
- }{#2}
+ {french} { + }
+ {italian} { + }
+ {spanish} { - }
+ {portuguese} { + }
+ {brazilian} { + }
+ }
+}
+
+\cs_set:Npn \ccref_contraction:nn #1#2 {
+ \str_if_eq:eeTF {#1} {} {#2} {
+ \str_case_e:nn { \languagename }
+ {
+ {french}{
+ \str_case_e:nnF {#1~#2} {
+ {à~le} {au}
+ {à~la} {à~la}
+ {à~l'} {à~l'}
+ {à~les} {aux}
+ {de~le} {du}
+ {de~la} {de~la}
+ {de~l'} {de~l'}
+ {de~les} {des}
+ }{#1~#2}
+ }
+ {italian}{
+ \str_case_e:nnF {#1~#2} {
+ {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}
+ }{#1~#2}
+ }
+ {portuguese}{
+ \str_case_e:nnF {#1~#2} {
+ {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}
+ }{#1~#2}
+ }
+ {brazilian}{
+ \str_case_e:nnF {#1~#2} {
+ {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}
+ }{#1~#2}
+ }
+ {spanish}{
+ \str_case_e:nnF {#1~#2} {
+ {a~el} {al}
+ {de~el} {del}
+ }{#1~#2}
+ }
}
}
}