summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/phonenumbers/phonenumbers-FR.def
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/latex/phonenumbers/phonenumbers-FR.def')
-rw-r--r--Master/texmf-dist/tex/latex/phonenumbers/phonenumbers-FR.def396
1 files changed, 396 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex/phonenumbers/phonenumbers-FR.def b/Master/texmf-dist/tex/latex/phonenumbers/phonenumbers-FR.def
new file mode 100644
index 00000000000..9b2a7bb2445
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/phonenumbers/phonenumbers-FR.def
@@ -0,0 +1,396 @@
+% phonenumbers package: phonenumbers-FR.def
+% Module for French telephone numbers
+% Author: K. Wehr
+% Version: 2.5
+% Date: 2022-07-01
+\clist_const:Nn \c_phone_FR_ortsvorwahlen_clist {01,
+02,
+0262,
+026200,
+0263,
+0269,
+03,
+04,
+05,
+0508,
+0590,
+0594,
+0596}
+\clist_const:Nn \c_phone_FR_sondervorwahlen_clist {06,
+0639,
+0690,
+0691,
+0692,
+0693,
+0694,
+0696,
+0697,
+07,
+0700,
+07005,
+07006,
+07007,
+07008,
+07009,
+08,
+09,
+09475,
+09476,
+09477,
+09478,
+09479,
+09760,
+09761,
+09762,
+09763,
+09764,
+09765,
+09766,
+09767,
+09768,
+09769}
+\tl_const:cn {c_phone_FR_ortsname_01_tl} {\^{I}le-de-France}
+\tl_const:cn {c_phone_FR_ortsname_02_tl} {Nord-ouest}
+\tl_const:cn {c_phone_FR_ortsname_0262_tl} {La~R\a'{e}union}
+\tl_const:cn {c_phone_FR_ortsname_026200_tl} {Terres~australes~et~antarctiques~fran\c{c}aises}
+\tl_const:cn {c_phone_FR_ortsname_0263_tl} {La~R\a'{e}union}
+\tl_const:cn {c_phone_FR_ortsname_0269_tl} {Mayotte}
+\tl_const:cn {c_phone_FR_ortsname_03_tl} {Nord-est}
+\tl_const:cn {c_phone_FR_ortsname_04_tl} {Sud-est}
+\tl_const:cn {c_phone_FR_ortsname_05_tl} {Sud-ouest}
+\tl_const:cn {c_phone_FR_ortsname_0508_tl} {Saint-Pierre-et-Miquelon}
+\tl_const:cn {c_phone_FR_ortsname_0590_tl} {Guadeloupe,~Saint-Barth\a'{e}lemy,~Saint-Martin}
+\tl_const:cn {c_phone_FR_ortsname_0594_tl} {Guyane}
+\tl_const:cn {c_phone_FR_ortsname_0596_tl} {Martinique}
+\tl_const:cn {c_phone_FR_ortsname_06_tl} {T\a'{e}l\a'{e}phone~mobile}
+\tl_const:cn {c_phone_FR_ortsname_0639_tl} {T\a'{e}l\a'{e}phone~mobile~(Mayotte)}
+\tl_const:cn {c_phone_FR_ortsname_0690_tl} {T\a'{e}l\a'{e}phone~mobile~(Guadeloupe)}
+\tl_const:cn {c_phone_FR_ortsname_0691_tl} {T\a'{e}l\a'{e}phone~mobile~(Guadeloupe)}
+\tl_const:cn {c_phone_FR_ortsname_0692_tl} {T\a'{e}l\a'{e}phone~mobile~(La~R\a'{e}union)}
+\tl_const:cn {c_phone_FR_ortsname_0693_tl} {T\a'{e}l\a'{e}phone~mobile~(La~R\a'{e}union)}
+\tl_const:cn {c_phone_FR_ortsname_0694_tl} {T\a'{e}l\a'{e}phone~mobile~(Guyane)}
+\tl_const:cn {c_phone_FR_ortsname_0696_tl} {T\a'{e}l\a'{e}phone~mobile~(Martinique)}
+\tl_const:cn {c_phone_FR_ortsname_0697_tl} {T\a'{e}l\a'{e}phone~mobile~(Martinique)}
+\tl_const:cn {c_phone_FR_ortsname_07_tl} {T\a'{e}l\a'{e}phone~mobile}
+\tl_const:cn {c_phone_FR_ortsname_0700_tl} {Communication~machine~\a`{a}~machine}
+\tl_const:cn {c_phone_FR_ortsname_07005_tl} {Communication~machine~\a`{a}~machine~(Guadeloupe)}
+\tl_const:cn {c_phone_FR_ortsname_07006_tl} {Communication~machine~\a`{a}~machine~(Guyane)}
+\tl_const:cn {c_phone_FR_ortsname_07007_tl} {Communication~machine~\a`{a}~machine~(Martinique)}
+\tl_const:cn {c_phone_FR_ortsname_07008_tl} {Communication~machine~\a`{a}~machine~(Mayotte)}
+\tl_const:cn {c_phone_FR_ortsname_07009_tl} {Communication~machine~\a`{a}~machine~(La~R\a'{e}union)}
+\tl_const:cn {c_phone_FR_ortsname_08_tl} {Service~\a`{a}~valeur~ajout\a'{e}e}
+\tl_const:cn {c_phone_FR_ortsname_09_tl} {Service~t\a'{e}l\a'{e}phonique~en~VoIP}
+\tl_const:cn {c_phone_FR_ortsname_09475_tl} {Service~t\a'{e}l\a'{e}phonique~en~VoIP~(Guadeloupe)}
+\tl_const:cn {c_phone_FR_ortsname_09476_tl} {Service~t\a'{e}l\a'{e}phonique~en~VoIP~(Guyane)}
+\tl_const:cn {c_phone_FR_ortsname_09477_tl} {Service~t\a'{e}l\a'{e}phonique~en~VoIP~(Martinique)}
+\tl_const:cn {c_phone_FR_ortsname_09478_tl} {Service~t\a'{e}l\a'{e}phonique~en~VoIP~(Mayotte)}
+\tl_const:cn {c_phone_FR_ortsname_09479_tl} {Service~t\a'{e}l\a'{e}phonique~en~VoIP~(La~R\a'{e}union)}
+\tl_const:cn {c_phone_FR_ortsname_09760_tl} {Service~t\a'{e}l\a'{e}phonique~en~VoIP~(Guadeloupe)}
+\tl_const:cn {c_phone_FR_ortsname_09761_tl} {Service~t\a'{e}l\a'{e}phonique~en~VoIP~(Guadeloupe)}
+\tl_const:cn {c_phone_FR_ortsname_09762_tl} {Service~t\a'{e}l\a'{e}phonique~en~VoIP~(La~R\a'{e}union)}
+\tl_const:cn {c_phone_FR_ortsname_09763_tl} {Service~t\a'{e}l\a'{e}phonique~en~VoIP~(La~R\a'{e}union)}
+\tl_const:cn {c_phone_FR_ortsname_09764_tl} {Service~t\a'{e}l\a'{e}phonique~en~VoIP~(Guyane)}
+\tl_const:cn {c_phone_FR_ortsname_09765_tl} {Service~t\a'{e}l\a'{e}phonique~en~VoIP~(Guyane)}
+\tl_const:cn {c_phone_FR_ortsname_09766_tl} {Service~t\a'{e}l\a'{e}phonique~en~VoIP~(Martinique)}
+\tl_const:cn {c_phone_FR_ortsname_09767_tl} {Service~t\a'{e}l\a'{e}phonique~en~VoIP~(Martinique)}
+\tl_const:cn {c_phone_FR_ortsname_09768_tl} {Service~t\a'{e}l\a'{e}phonique~en~VoIP~(Guadeloupe)}
+\tl_const:cn {c_phone_FR_ortsname_09769_tl} {Service~t\a'{e}l\a'{e}phonique~en~VoIP~(La~R\a'{e}union)}
+
+\tl_const:Nn \c_phone_FR_landesadjektiv_tl {French}
+\bool_const:Nn \c_phone_FR_erlaubt_durchwahl_bool {\c_false_bool}
+
+\clist_new:N \c_phone_FR_vorwahlen_clist
+\clist_concat:NNN \c_phone_FR_vorwahlen_clist \c_phone_FR_ortsvorwahlen_clist \c_phone_FR_sondervorwahlen_clist
+
+\msg_new:nnn {phonenumbers} {FR/illegal home area code}
+ {
+ The~only~legal~home~area~code~in~France~is~0508~(Saint-Pierre-et-Miquelon).~#1~cannot~be~set~as~home~area~code~\msg_line_context:.
+ }
+
+\msg_new:nnn {phonenumbers} {FR/missing zero}
+ {
+ French~phone~number~has~no~zero~in~the~beginning~\msg_line_context:
+ }
+
+% Prüfe, ob eine Vorwahl als Heimatvorwahl zulässig ist.
+% #1: Heimatvorwahl
+\prg_new_protected_conditional:Npnn \phone_FR_heimatvorwahl_erlaubt:n #1 {T}
+ {
+ \clist_if_in:NnTF \c_phone_FR_ortsvorwahlen_clist {#1}
+ {
+ % In Frankreich kann nur 0508 Heimatvorwahl sein.
+ \str_if_eq:nnTF {#1} {0508} { \prg_return_true: }
+ {
+ \msg_warning:nnn {phonenumbers} {FR/illegal home area code} {#1}
+ \prg_return_false:
+ }
+ }
+ {
+ \msg_warning:nnn {phonenumbers} {invalid home area code} {#1}
+ \prg_return_false:
+ }
+ }
+
+% #1: Vorwahl
+\cs_new:Npn \phone_FR_ermittle_landeskennzahl:n #1
+ {
+ \str_case:nnF {#1}
+ {
+ {0262} {262}
+ {026200} {262}
+ {0263} {262}
+ {0269} {262}
+ {0508} {508}
+ {0590} {590}
+ {0594} {594}
+ {0596} {596}
+ {0639} {262}
+ {0690} {590}
+ {0691} {590}
+ {0692} {262}
+ {0693} {262}
+ {0694} {594}
+ {0696} {596}
+ {0697} {596}
+ {07005} {590}
+ {07006} {594}
+ {07007} {596}
+ {07008} {262}
+ {07009} {262}
+ {09475} {590}
+ {09476} {594}
+ {09477} {596}
+ {09478} {262}
+ {09479} {262}
+ {09760} {590}
+ {09761} {590}
+ {09762} {262}
+ {09763} {262}
+ {09764} {594}
+ {09765} {594}
+ {09766} {596}
+ {09767} {596}
+ {09768} {590}
+ {09769} {262}
+ }
+ {
+ 33
+ }
+ }
+
+% #1: Vorwahl, #2: Rufnummer
+\cs_new_protected:Npn \phone_FR_vorwahl_und_rufnummer_schreiben:nn #1#2
+ {
+ \bool_lazy_or:nnTF { \str_if_eq_p:Vn \l_phone_auslandsvorwahltyp_str {off} } { \str_if_eq_p:Vn \l_phone_heimatland_str {FR} }
+ {
+ \clist_if_in:NnT \c_phone_FR_sondervorwahlen_clist {#1}
+ {
+ \str_if_eq:VnT \l_phone_vorwahldarstellung_str {place}
+ {
+ \str_set:Nn \l_phone_vorwahldarstellung_str {number}
+ }
+ }
+
+ \bool_lazy_and:nnTF { \str_if_eq_p:Vn \l_phone_heimatland_str {FR} } { \str_if_eq_p:Vn \l_phone_heimatvorwahl_str {#1} }
+ {
+ \phone_von_hinten_gruppiert_schreiben:n {#2} % reine Teilnehmerrufnummer in Saint-Pierre-et-Miquelon
+ }
+ {
+ \str_case:Vn \l_phone_vorwahldarstellung_str
+ {
+ {number}
+ {
+ \phone_von_vorne_gruppiert_schreiben:V \l_phone_bereinigte_nummer_str
+ }
+ {place}
+ {
+ \tl_if_exist:cTF {c_phone_FR_ortsname_#1_tl}
+ {
+ \tl_put_right:Nv \l_phone_ausgabetext_tl {c_phone_FR_ortsname_#1_tl}
+ \tl_put_right:NV \l_phone_ausgabetext_tl \c_space_tl
+ \phone_von_vorne_gruppiert_schreiben:n {#2}
+ }
+ {
+ \phone_von_vorne_gruppiert_schreiben:V \l_phone_bereinigte_nummer_str
+ }
+ }
+ {place-and-number}
+ {
+ \tl_if_exist:cT {c_phone_FR_ortsname_#1_tl}
+ {
+ \tl_put_right:Nv \l_phone_ausgabetext_tl {c_phone_FR_ortsname_#1_tl}
+ \tl_put_right:NV \l_phone_ausgabetext_tl \c_space_tl
+ }
+
+ \phone_von_vorne_gruppiert_schreiben:V \l_phone_bereinigte_nummer_str
+ }
+ }
+ }
+ }
+ {
+ \phone_gruppierte_auslandsvorwahl_schreiben:x { \phone_FR_ermittle_landeskennzahl:n {#1} }
+
+ \tl_put_right:NV \l_phone_ausgabetext_tl \c_space_tl
+
+ \str_if_eq:nnTF {#1} {0508} % in Saint-Pierre-et-Miquelon entfällt die Ortsvorwahl
+ {
+ \phone_von_hinten_gruppiert_schreiben:n {#2}
+ }
+ {
+ \phone_von_hinten_gruppiert_schreiben:x { \str_tail:N \l_phone_bereinigte_nummer_str }
+ }
+ }
+
+ % Linktext schreiben:
+ \str_put_right:Nx \l_phone_linktext_str { + \phone_FR_ermittle_landeskennzahl:n {#1} }
+ \str_if_eq:nnF {#1} {0508} % in Saint-Pierre-et-Miquelon entfällt die Ortsvorwahl
+ {
+ \str_put_right:Nx \l_phone_linktext_str { \str_tail:n {#1} }
+ }
+ \str_put_right:Nn \l_phone_linktext_str {#2}
+ }
+
+\cs_generate_variant:Nn \phone_FR_vorwahl_und_rufnummer_schreiben:nn {Vx,xx}
+
+\cs_new_protected:Npn \phone_FR_nummer_schreiben:
+ {
+ \int_set:Nn \l_phone_nummernlaenge_int { \str_count:N \l_phone_bereinigte_nummer_str }
+
+ \int_compare:nNnTF {\l_phone_nummernlaenge_int} < {10}
+ {
+ \str_if_eq:xnTF { \str_head:N \l_phone_bereinigte_nummer_str } {3}
+ {
+ \int_compare:nNnTF {\l_phone_nummernlaenge_int} < {4}
+ {
+ \msg_warning:nnnn {phonenumbers} {number too short} {short} {4}
+ \tl_put_right:NV \l_phone_ausgabetext_tl \l_phone_bereinigte_nummer_str
+ }
+ {
+ \int_compare:nNnTF {\l_phone_nummernlaenge_int} > {4}
+ {
+ \msg_warning:nnnn {phonenumbers} {number too long} {short} {4}
+ \tl_put_right:NV \l_phone_ausgabetext_tl \l_phone_bereinigte_nummer_str
+ }
+ {
+ \phone_von_vorne_gruppiert_schreiben:V \l_phone_bereinigte_nummer_str
+ \str_put_right:NV \l_phone_linktext_str \l_phone_bereinigte_nummer_str
+ }
+ }
+ }
+ {
+ \msg_warning:nnnn {phonenumbers} {number too short} {phone} {10}
+ \tl_put_right:NV \l_phone_ausgabetext_tl \l_phone_bereinigte_nummer_str
+ }
+ }
+ {
+ \str_if_eq:xnTF { \str_range:Nnn \l_phone_bereinigte_nummer_str {1} {4} } {0700}
+ {
+ \int_compare:nNnTF { \str_item:Nn \l_phone_bereinigte_nummer_str {5} } < {5}
+ {
+ % überlange Mobilfunknummer (machine to machine) im Mutterland (14 Stellen)
+ \phone_nummernlaenge_ueberpruefen:Vnnn \l_phone_bereinigte_nummer_str {14} {14} {machine~to~machine}
+ \bool_if:NTF \l_phone_teilnehmerrufnummer_gueltig_bool
+ {
+ \phone_FR_vorwahl_und_rufnummer_schreiben:xx
+ {
+ \str_range:Nnn \l_phone_bereinigte_nummer_str {1} {4}
+ }
+ {
+ \str_range:Nnn \l_phone_bereinigte_nummer_str {5} {-1}
+ }
+ }
+ {
+ \tl_put_right:NV \l_phone_ausgabetext_tl \l_phone_bereinigte_nummer_str
+ }
+ }
+ {
+ % überlange Mobilfunknummer (machine to machine) in den Überseegebieten (13 Stellen)
+ \phone_nummernlaenge_ueberpruefen:Vnnn \l_phone_bereinigte_nummer_str {13} {13} {machine~to~machine}
+ \bool_if:NTF \l_phone_teilnehmerrufnummer_gueltig_bool
+ {
+ \phone_FR_vorwahl_und_rufnummer_schreiben:xx
+ {
+ \str_range:Nnn \l_phone_bereinigte_nummer_str {1} {5}
+ }
+ {
+ \str_range:Nnn \l_phone_bereinigte_nummer_str {6} {-1}
+ }
+ }
+ {
+ \tl_put_right:NV \l_phone_ausgabetext_tl \l_phone_bereinigte_nummer_str
+ }
+ }
+ }
+ {
+ \int_compare:nNnTF {\l_phone_nummernlaenge_int} > {10}
+ {
+ \msg_warning:nnnn {phonenumbers} {number too long} {phone} {10}
+ \tl_put_right:NV \l_phone_ausgabetext_tl \l_phone_bereinigte_nummer_str
+ }
+ {
+ \str_if_eq:xnTF { \str_head:N \l_phone_bereinigte_nummer_str } {0}
+ {
+ \bool_set_false:N \l_phone_vorwahl_gefunden_bool
+
+ \int_step_inline:nnnn {6} {-1} {2}
+ {
+ \bool_if:NF \l_phone_vorwahl_gefunden_bool
+ {
+ \int_compare:nT { \l_phone_nummernlaenge_int >= ##1 }
+ {
+ \str_set:Nx \l_tmpa_str { \str_range:Nnn \l_phone_bereinigte_nummer_str {1} {##1} }
+
+ \clist_if_in:NVT \c_phone_FR_vorwahlen_clist \l_tmpa_str
+ {
+ \bool_set_true:N \l_phone_vorwahl_gefunden_bool
+ \phone_FR_vorwahl_und_rufnummer_schreiben:Vx \l_tmpa_str
+ {
+ \str_range:Nnn \l_phone_bereinigte_nummer_str {##1 + 1} {-1}
+ }
+ }
+ }
+ }
+ }
+
+ \bool_if:NF \l_phone_vorwahl_gefunden_bool
+ {
+ \msg_warning:nn {phonenumbers} {invalid area code}
+ \tl_put_right:NV \l_phone_ausgabetext_tl \l_phone_bereinigte_nummer_str
+ }
+ }
+ {
+ \msg_warning:nn {phonenumbers} {FR/missing zero}
+ \tl_put_right:NV \l_phone_ausgabetext_tl \l_phone_bereinigte_nummer_str
+ }
+ }
+ }
+ }
+ }
+
+\cs_new_protected:Npn \phone_FR_vorwahlliste_ausgeben:n #1
+ {
+ \begin{tabbing}
+ \hspace {4em} \= \kill
+
+ \bool_set_false:N \l_phone_zeilenumbruch_bool
+
+ \clist_map_inline:cn {c_phone_FR_ #1 _clist}
+ {
+ \bool_if:NTF \l_phone_zeilenumbruch_bool
+ {
+ \\
+ }
+ {
+ \bool_gset_true:N \l_phone_zeilenumbruch_bool
+ }
+
+ \phone_von_vorne_gruppiert_schreiben:n {##1}
+ \tl_use:N \l_phone_ausgabetext_tl
+ \>
+ \tl_if_exist:cT {c_phone_FR_ortsname_ ##1 _tl}
+ {
+ \tl_use:c {c_phone_FR_ortsname_ ##1 _tl}
+ }
+ }
+ \end{tabbing}
+ }