summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/datetime2-contrib
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/latex/contrib/datetime2-contrib
Initial commit
Diffstat (limited to 'macros/latex/contrib/datetime2-contrib')
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-bahasai/README57
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-bahasai/datetime2-bahasai.dtx429
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-bahasai/datetime2-bahasai.ins38
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-bahasai/datetime2-bahasai.pdfbin0 -> 271608 bytes
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-basque/CHANGES10
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-basque/Makefile24
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-basque/README.txt59
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-basque/datetime2-basque-small-test.tex50
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-basque/datetime2-basque-test.tex45
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-basque/datetime2-basque.dtx537
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-basque/datetime2-basque.ins41
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-breton/README57
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-breton/datetime2-breton.dtx574
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-breton/datetime2-breton.ins61
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-breton/datetime2-breton.pdfbin0 -> 281164 bytes
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-bulgarian/README57
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-bulgarian/datetime2-bulgarian.dtx662
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-bulgarian/datetime2-bulgarian.ins61
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-bulgarian/datetime2-bulgarian.pdfbin0 -> 82570 bytes
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-catalan/README57
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-catalan/datetime2-catalan.dtx628
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-catalan/datetime2-catalan.ins61
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-catalan/datetime2-catalan.pdfbin0 -> 279878 bytes
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-croatian/README57
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-croatian/datetime2-croatian.dtx830
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-croatian/datetime2-croatian.ins61
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-croatian/datetime2-croatian.pdfbin0 -> 84678 bytes
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-czech/README57
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-czech/datetime2-czech.dtx631
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-czech/datetime2-czech.ins61
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-czech/datetime2-czech.pdfbin0 -> 82269 bytes
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-danish/README57
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-danish/datetime2-danish.dtx723
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-danish/datetime2-danish.ins61
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-danish/datetime2-danish.pdfbin0 -> 83760 bytes
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-dutch/README57
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-dutch/datetime2-dutch.dtx583
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-dutch/datetime2-dutch.ins38
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-dutch/datetime2-dutch.pdfbin0 -> 278249 bytes
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-en-fulltext/README50
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-en-fulltext/datetime2-en-fulltext.dtx901
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-en-fulltext/datetime2-en-fulltext.ins40
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-en-fulltext/datetime2-en-fulltext.pdfbin0 -> 231420 bytes
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-en-fulltext/sample-en-fulltext.pdfbin0 -> 46528 bytes
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-en-fulltext/sample-en-fulltext.tex164
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-english/CHANGES22
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-english/README69
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-english/datetime2-english-sample.pdfbin0 -> 96433 bytes
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-english/datetime2-english-sample.tex89
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-english/datetime2-english.dtx4905
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-english/datetime2-english.ins164
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-english/datetime2-english.pdfbin0 -> 547119 bytes
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-esperanto/README57
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-esperanto/datetime2-esperanto.dtx633
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-esperanto/datetime2-esperanto.ins61
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-esperanto/datetime2-esperanto.pdfbin0 -> 82017 bytes
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-estonian/README57
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-estonian/datetime2-estonian.dtx646
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-estonian/datetime2-estonian.ins61
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-estonian/datetime2-estonian.pdfbin0 -> 81570 bytes
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-finnish/CHANGES13
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-finnish/README58
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-finnish/datetime2-finnish.dtx1129
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-finnish/datetime2-finnish.ins63
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-finnish/datetime2-finnish.pdfbin0 -> 88796 bytes
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-french/README55
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-french/datetime2-french-test-luatex.pdfbin0 -> 10294 bytes
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-french/datetime2-french-test-luatex.tex9
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-french/datetime2-french-test-pdftex.pdfbin0 -> 15778 bytes
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-french/datetime2-french-test-pdftex.tex8
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-french/datetime2-french-test-xetex.pdfbin0 -> 9013 bytes
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-french/datetime2-french-test-xetex.tex9
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-french/datetime2-french-test.tex30
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-french/datetime2-french.dtx1145
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-french/datetime2-french.ins64
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-french/datetime2-french.pdfbin0 -> 122396 bytes
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-galician/README57
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-galician/datetime2-galician.dtx637
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-galician/datetime2-galician.ins61
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-galician/datetime2-galician.pdfbin0 -> 81654 bytes
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-german/README.md31
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-german/datetime2-german.dtx2242
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-german/datetime2-german.ins109
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-german/datetime2-german.pdfbin0 -> 323394 bytes
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-greek/README57
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-greek/datetime2-greek.dtx539
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-greek/datetime2-greek.ins61
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-greek/datetime2-greek.pdfbin0 -> 80026 bytes
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-hebrew/README51
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-hebrew/datetime2-hebrew.dtx361
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-hebrew/datetime2-hebrew.ins38
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-hebrew/datetime2-hebrew.pdfbin0 -> 270248 bytes
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-icelandic/README57
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-icelandic/datetime2-icelandic.dtx632
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-icelandic/datetime2-icelandic.ins61
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-icelandic/datetime2-icelandic.pdfbin0 -> 81343 bytes
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-irish/README71
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-irish/datetime2-irish.dtx1133
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-irish/datetime2-irish.ins83
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-irish/datetime2-irish.pdfbin0 -> 321160 bytes
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-it-fulltext/README34
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-it-fulltext/datetime2-it-fulltext.dtx814
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-it-fulltext/datetime2-it-fulltext.ins35
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-it-fulltext/datetime2-it-fulltext.pdfbin0 -> 121043 bytes
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-it-fulltext/samples/BatTest.tex797
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-it-fulltext/samples/BatTestDate.tex41
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-it-fulltext/samples/it-fulltext-en-fulltext.tex58
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-it-fulltext/samples/sample-it-fulltext-second.tex24
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-it-fulltext/samples/sample-it-fulltext-semplice.tex23
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-it-fulltext/samples/sample-it-fulltext-twenty-four-second.tex24
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-it-fulltext/samples/sample-it-fulltext-twenty-four.tex24
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-it-fulltext/samples/sample-it-fulltext.tex28
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-it-fulltext/samples/sample-it-timedatestyle1.tex62
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-it-fulltext/samples/sample-it-timedatestyle2.tex144
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-italian/README58
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-italian/datetime2-italian.dtx868
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-italian/datetime2-italian.ins64
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-italian/datetime2-italian.pdfbin0 -> 270609 bytes
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-italian/sample/datetime1.tex13
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-italian/sample/datetime2-sample-babel.tex56
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-italian/sample/datetime2-sample-calc.tex76
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-italian/sample/datetime2-sample-hyperref.tex78
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-italian/sample/datetime2-sample-styles.tex148
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-italian/sample/esempio1.tex5
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-italian/sample/esempio10.tex16
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-italian/sample/esempio11.tex16
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-italian/sample/esempio12.tex15
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-italian/sample/esempio13.tex5
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-italian/sample/esempio2.tex5
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-italian/sample/esempio3.tex13
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-italian/sample/esempio4.tex13
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-italian/sample/esempio5.tex15
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-italian/sample/esempio6.tex14
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-italian/sample/esempio6a.tex15
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-italian/sample/esempio7.tex19
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-italian/sample/esempio8.tex16
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-italian/sample/esempio9.tex16
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-italian/sample/tomorrow.tex39
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-latin/README57
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-latin/datetime2-latin.dtx501
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-latin/datetime2-latin.ins38
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-latin/datetime2-latin.pdfbin0 -> 271915 bytes
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-lsorbian/README57
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-lsorbian/datetime2-lsorbian.dtx793
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-lsorbian/datetime2-lsorbian.ins61
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-lsorbian/datetime2-lsorbian.pdfbin0 -> 86607 bytes
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-magyar/README57
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-magyar/datetime2-magyar.dtx647
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-magyar/datetime2-magyar.ins61
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-magyar/datetime2-magyar.pdfbin0 -> 81879 bytes
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-norsk/README57
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-norsk/datetime2-norsk.dtx724
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-norsk/datetime2-norsk.ins61
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-norsk/datetime2-norsk.pdfbin0 -> 84821 bytes
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-polish/README57
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-polish/datetime2-polish.dtx724
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-polish/datetime2-polish.ins61
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-polish/datetime2-polish.pdfbin0 -> 84368 bytes
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-portuges/README57
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-portuges/datetime2-portuges.dtx652
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-portuges/datetime2-portuges.ins61
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-portuges/datetime2-portuges.pdfbin0 -> 286014 bytes
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-romanian/README55
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-romanian/datetime2-romanian-test-luatex.pdfbin0 -> 10086 bytes
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-romanian/datetime2-romanian-test-luatex.tex9
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-romanian/datetime2-romanian-test-pdftex.pdfbin0 -> 15119 bytes
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-romanian/datetime2-romanian-test-pdftex.tex8
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-romanian/datetime2-romanian-test-xetex.pdfbin0 -> 8820 bytes
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-romanian/datetime2-romanian-test-xetex.tex9
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-romanian/datetime2-romanian-test.tex30
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-romanian/datetime2-romanian.dtx1013
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-romanian/datetime2-romanian.ins64
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-romanian/datetime2-romanian.pdfbin0 -> 88354 bytes
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-russian/README57
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-russian/datetime2-russian.dtx641
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-russian/datetime2-russian.ins61
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-russian/datetime2-russian.pdfbin0 -> 78346 bytes
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-samin/README57
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-samin/datetime2-samin.dtx638
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-samin/datetime2-samin.ins61
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-samin/datetime2-samin.pdfbin0 -> 73831 bytes
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-scottish/README57
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-scottish/datetime2-scottish.dtx634
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-scottish/datetime2-scottish.ins61
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-scottish/datetime2-scottish.pdfbin0 -> 286527 bytes
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-serbian/README57
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-serbian/datetime2-serbian.dtx806
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-serbian/datetime2-serbian.ins61
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-serbian/datetime2-serbian.pdfbin0 -> 86831 bytes
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-slovak/README57
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-slovak/datetime2-slovak.dtx634
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-slovak/datetime2-slovak.ins61
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-slovak/datetime2-slovak.pdfbin0 -> 82010 bytes
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-slovene/README57
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-slovene/datetime2-slovene.dtx639
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-slovene/datetime2-slovene.ins61
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-slovene/datetime2-slovene.pdfbin0 -> 81195 bytes
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-spanish/README57
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-spanish/datetime2-spanish.dtx722
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-spanish/datetime2-spanish.ins61
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-spanish/datetime2-spanish.pdfbin0 -> 287459 bytes
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-swedish/README57
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-swedish/datetime2-swedish.dtx730
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-swedish/datetime2-swedish.ins61
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-swedish/datetime2-swedish.pdfbin0 -> 84200 bytes
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-turkish/README57
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-turkish/datetime2-turkish.dtx540
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-turkish/datetime2-turkish.ins61
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-turkish/datetime2-turkish.pdfbin0 -> 80887 bytes
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-ukrainian/README.md54
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-ukrainian/datetime2-ukrainian.dtx1593
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-ukrainian/datetime2-ukrainian.ins117
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-ukrainian/datetime2-ukrainian.pdfbin0 -> 63582 bytes
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-usorbian/README57
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-usorbian/datetime2-usorbian.dtx792
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-usorbian/datetime2-usorbian.ins61
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-usorbian/datetime2-usorbian.pdfbin0 -> 85533 bytes
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-welsh/README57
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-welsh/datetime2-welsh.dtx600
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-welsh/datetime2-welsh.ins61
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-welsh/datetime2-welsh.pdfbin0 -> 285782 bytes
221 files changed, 43550 insertions, 0 deletions
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-bahasai/README b/macros/latex/contrib/datetime2-contrib/datetime2-bahasai/README
new file mode 100644
index 0000000000..743548b669
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-bahasai/README
@@ -0,0 +1,57 @@
+Bahasai Language Module for datetime2 Package
+
+Author: Nicola L. C. Talbot (inactive)
+
+Licence: LPPL
+
+Required Packages: datetime2, tracklang
+
+This module is unmaintained. If you want to volunteer to take over
+the maintenance contact me at www.dickimaw-books.com/contact.html
+
+Example usage:
+
+\documentclass{article}
+\usepackage[bahasai]{datetime2}
+\begin{document}
+\today
+\end{document}
+
+\documentclass[bahasai]{article}
+\usepackage{babel}
+\usepackage[useregional]{datetime2}
+\begin{document}
+\today
+\end{document}
+
+\documentclass{article}
+\usepackage{polyglossia}
+\setmainlanguage{bahasai}
+\usepackage[bahasai]{datetime2}
+\begin{document}
+\today
+\end{document}
+
+INSTALLATION
+============
+
+latex datetime2-bahasai.ins
+
+Move all *.ldf files to
+TEXMF/tex/latex/datetime2-contrib/datetime2-bahasai/
+
+Documentation:
+
+pdflatex datetime2-bahasai.dtx
+makeindex -s gind.ist datetime2-bahasai.idx
+makeindex -s gglo.ist -o datetime2-bahasai.gls datetime2-bahasai.glo
+pdflatex datetime2-bahasai.dtx
+pdflatex datetime2-bahasai.dtx
+
+Move datetime2-bahasai.pdf and README to
+TEXMF/doc/latex/datetime2-contrib/datetime2-bahasai/
+
+This material is subject to the LaTeX Project Public License.
+See http://www.ctan.org/license/lppl1.3 for the details of that
+license.
+
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-bahasai/datetime2-bahasai.dtx b/macros/latex/contrib/datetime2-contrib/datetime2-bahasai/datetime2-bahasai.dtx
new file mode 100644
index 0000000000..f2163f5f74
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-bahasai/datetime2-bahasai.dtx
@@ -0,0 +1,429 @@
+%\iffalse
+%<*package>
+%% \CharacterTable
+%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+%% Digits \0\1\2\3\4\5\6\7\8\9
+%% Exclamation \! Double quote \" Hash (number) \#
+%% Dollar \$ Percent \% Ampersand \&
+%% Acute accent \' Left paren \( Right paren \)
+%% Asterisk \* Plus \+ Comma \,
+%% Minus \- Point \. Solidus \/
+%% Colon \: Semicolon \; Less than \<
+%% Equals \= Greater than \> Question mark \?
+%% Commercial at \@ Left bracket \[ Backslash \\
+%% Right bracket \] Circumflex \^ Underscore \_
+%% Grave accent \` Left brace \{ Vertical bar \|
+%% Right brace \} Tilde \~}
+%</package>
+%\fi
+% \iffalse
+% Doc-Source file to use with LaTeX2e
+% Copyright (C) 2018 Nicola Talbot, all rights reserved.
+% (New maintainer add relevant lines here.)
+% \fi
+% \iffalse
+%<*driver>
+\documentclass{ltxdoc}
+
+\usepackage{alltt}
+\usepackage{graphicx}
+\usepackage[utf8]{inputenc}
+\usepackage[T1]{fontenc}
+\usepackage[colorlinks,
+ bookmarks,
+ hyperindex=false,
+ pdfauthor={Nicola L.C. Talbot},
+ pdftitle={datetime2.sty Bahasai Module}]{hyperref}
+
+
+\CheckSum{173}
+
+\renewcommand*{\usage}[1]{\hyperpage{#1}}
+\renewcommand*{\main}[1]{\hyperpage{#1}}
+\IndexPrologue{\section*{\indexname}\markboth{\indexname}{\indexname}}
+\setcounter{IndexColumns}{2}
+
+\newcommand*{\sty}[1]{\textsf{#1}}
+\newcommand*{\opt}[1]{\texttt{#1}\index{#1=\texttt{#1}|main}}
+
+\RecordChanges
+\PageIndex
+\CodelineNumbered
+
+\begin{document}
+\DocInput{datetime2-bahasai.dtx}
+\end{document}
+%</driver>
+%\fi
+%
+%\MakeShortVerb{"}
+%
+%\title{Bahasai Module for datetime2 Package}
+%\author{Nicola L. C. Talbot (inactive)}
+%\date{2018-01-10 (v1.01)}
+%\maketitle
+%
+%This module is currently unmaintained and may be subject to change.
+%If you want to volunteer to take over maintenance, contact me at
+%\url{http://www.dickimaw-books.com/contact.html}
+%
+%\begin{abstract}
+%This is the Bahasai language module for the \sty{datetime2}
+%package. If you want to use the settings in this module you must
+%install it in addition to installing \sty{datetime2}. If you use
+%\sty{babel} or \sty{polyglossia}, you will need this module to
+%prevent them from redefining \cs{today}. The \sty{datetime2}
+% \opt{useregional} setting must be set to "text" or "numeric"
+% for the language styles to be set.
+% Alternatively, you can set the style in the document using
+% \cs{DTMsetstyle}, but this may be changed by \cs{date}\meta{language}
+% depending on the value of the \opt{useregional} setting.
+%\end{abstract}
+%
+%I've copied the date style from \texttt{babel-bahasai}'s \cs{today}.
+%
+%I don't know if these settings are correct.
+%In particular, I don't know if the "bahasai" time style is
+%correct. Currently this just uses the "default" time style. Please
+%be aware that this may change. Whoever takes over maintanance
+%of this module may can change it as appropriate.
+%
+%The new maintainer should add the line:
+%\begin{verbatim}
+% The Current Maintainer of this work is Name.
+%\end{verbatim}
+%to the preamble part in \texttt{datetime2-bahasai.ins} where Name
+%is the name of the maintainer(s) and replace
+%the `inactive' status to `maintained'.
+%
+%Currently there is only a regionless style.
+%
+%\StopEventually{%
+%\clearpage
+%\phantomsection
+%\addcontentsline{toc}{section}{Change History}%
+%\PrintChanges
+%\addcontentsline{toc}{section}{\indexname}%
+%\PrintIndex}
+%\section{The Code}
+%At the moment there is only the one ".ldf" file.
+%
+%\subsection{Main Bahasai Module (\texttt{datetime2-bahasai.ldf})}
+%\changes{1.0}{2015-03-29}{Initial release}
+%
+%\iffalse
+% \begin{macrocode}
+%<*datetime2-bahasai.ldf>
+% \end{macrocode}
+%\fi
+%
+% Identify Module
+% \begin{macrocode}
+\ProvidesDateTimeModule{bahasai}[2018/01/10 v1.01]
+% \end{macrocode}
+%\begin{macro}{\DTMbahasaiordinal}
+% I don't know if this is correct, but it's provided in case
+% a suffix is required.
+% \begin{macrocode}
+\newcommand*{\DTMbahasaiordinal}[1]{%
+ \number#1 % space intended
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMbahasaimonthname}
+% Bahasai month names.
+% \begin{macrocode}
+\newcommand*{\DTMbahasaimonthname}[1]{%
+ \ifcase#1
+ \or
+ Januari%
+ \or
+ Pebruari%
+ \or
+ Maret%
+ \or
+ April%
+ \or
+ Mei%
+ \or
+ Juni%
+ \or
+ Juli%
+ \or
+ Agustus%
+ \or
+ September%
+ \or
+ Oktober%
+ \or
+ Nopember%
+ \or
+ Desember%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%
+% Define the \texttt{bahasai} style.
+% The time style is the same as the "default" style
+% provided by \sty{datetime2}. This may need correcting. For
+% example, if a 12 hour style similar to the "englishampm" (from the
+% "english-base" module) is required.
+%
+% Allow the user a way of configuring the "bahasai" and
+% "bahasai-numeric" styles. This doesn't use the package wide
+% separators such as
+% \cs{dtm@datetimesep} in case other date formats are also required.
+%\begin{macro}{\DTMbahasaidaymonthsep}
+% The separator between the day and month for the text format.
+% \begin{macrocode}
+\newcommand*{\DTMbahasaidaymonthsep}{%
+ \DTMtexorpdfstring{\protect~}{\space}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMbahasaimonthyearsep}
+% The separator between the month and year for the text format.
+% \begin{macrocode}
+\newcommand*{\DTMbahasaimonthyearsep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMbahasaidatetimesep}
+% The separator between the date and time blocks in the full format
+% (either text or numeric).
+% \begin{macrocode}
+\newcommand*{\DTMbahasaidatetimesep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMbahasaitimezonesep}
+% The separator between the time and zone blocks in the full format
+% (either text or numeric).
+% \begin{macrocode}
+\newcommand*{\DTMbahasaitimezonesep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMbahasaidatesep}
+% The separator for the numeric date format.
+% \begin{macrocode}
+\newcommand*{\DTMbahasaidatesep}{/}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMbahasaitimesep}
+% The separator for the numeric time format.
+% \begin{macrocode}
+\newcommand*{\DTMbahasaitimesep}{:}
+% \end{macrocode}
+%\end{macro}
+%
+%Provide keys that can be used in \cs{DTMlangsetup} to set these
+%separators.
+% \begin{macrocode}
+\DTMdefkey{bahasai}{daymonthsep}{\renewcommand*{\DTMbahasaidaymonthsep}{#1}}
+\DTMdefkey{bahasai}{monthyearsep}{\renewcommand*{\DTMbahasaimonthyearsep}{#1}}
+\DTMdefkey{bahasai}{datetimesep}{\renewcommand*{\DTMbahasaidatetimesep}{#1}}
+\DTMdefkey{bahasai}{timezonesep}{\renewcommand*{\DTMbahasaitimezonesep}{#1}}
+\DTMdefkey{bahasai}{datesep}{\renewcommand*{\DTMbahasaidatesep}{#1}}
+\DTMdefkey{bahasai}{timesep}{\renewcommand*{\DTMbahasaitimesep}{#1}}
+% \end{macrocode}
+%
+% TODO: provide a boolean key to switch between full and abbreviated
+% formats if appropriate. (I don't know how the date should be
+% abbreviated.)
+%
+% Define a boolean key that determines if the time zone mappings
+% should be used.
+% \begin{macrocode}
+\DTMdefboolkey{bahasai}{mapzone}[true]{}
+% \end{macrocode}
+% The default is to use mappings.
+% \begin{macrocode}
+\DTMsetbool{bahasai}{mapzone}{true}
+% \end{macrocode}
+%
+% Define a boolean key that determines if the day of month should be
+% displayed.
+% \begin{macrocode}
+\DTMdefboolkey{bahasai}{showdayofmonth}[true]{}
+% \end{macrocode}
+% The default is to show the day of month.
+% \begin{macrocode}
+\DTMsetbool{bahasai}{showdayofmonth}{true}
+% \end{macrocode}
+%
+% Define a boolean key that determines if the year should be
+% displayed.
+% \begin{macrocode}
+\DTMdefboolkey{bahasai}{showyear}[true]{}
+% \end{macrocode}
+% The default is to show the year.
+% \begin{macrocode}
+\DTMsetbool{bahasai}{showyear}{true}
+% \end{macrocode}
+%
+% Define the "bahasai" style. (TODO: implement day of week?)
+% \begin{macrocode}
+\DTMnewstyle
+ {bahasai}% label
+ {% date style
+ \renewcommand*\DTMdisplaydate[4]{%
+ \DTMifbool{bahasai}{showdayofmonth}
+ {\DTMbahasaiordinal{##3}\DTMbahasaidaymonthsep}%
+ {}%
+ \DTMbahasaimonthname{##2}%
+ \DTMifbool{bahasai}{showyear}%
+ {%
+ \DTMbahasaimonthyearsep
+ \number##1 % space intended
+ }%
+ {}%
+ }%
+ \renewcommand*\DTMDisplaydate{\DTMdisplaydate}%
+ }%
+ {% time style (use default)
+ \DTMsettimestyle{default}%
+ }%
+ {% zone style
+ \DTMresetzones
+ \DTMbahasaizonemaps
+ \renewcommand*{\DTMdisplayzone}[2]{%
+ \DTMifbool{bahasai}{mapzone}%
+ {\DTMusezonemapordefault{##1}{##2}}%
+ {%
+ \ifnum##1<0\else+\fi\DTMtwodigits{##1}%
+ \ifDTMshowzoneminutes\DTMbahasaitimesep\DTMtwodigits{##2}\fi
+ }%
+ }%
+ }%
+ {% full style
+ \renewcommand*{\DTMdisplay}[9]{%
+ \ifDTMshowdate
+ \DTMdisplaydate{##1}{##2}{##3}{##4}%
+ \DTMbahasaidatetimesep
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \DTMbahasaitimezonesep
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+ \renewcommand*{\DTMDisplay}{\DTMdisplay}%
+ }%
+% \end{macrocode}
+%
+% Define numeric style.
+% \begin{macrocode}
+\DTMnewstyle
+ {bahasai-numeric}% label
+ {% date style
+ \renewcommand*\DTMdisplaydate[4]{%
+ \DTMifbool{bahasai}{showdayofmonth}%
+ {%
+ \number##3 % space intended
+ \DTMbahasaidatesep
+ }%
+ {}%
+ \number##2 % space intended
+ \DTMifbool{bahasai}{showyear}%
+ {%
+ \DTMbahasaidatesep
+ \number##1 % space intended
+ }%
+ {}%
+ }%
+ \renewcommand*{\DTMDisplaydate}{\DTMdisplaydate}%
+ }%
+ {% time style
+ \renewcommand*\DTMdisplaytime[3]{%
+ \number##1
+ \DTMbahasaitimesep\DTMtwodigits{##2}%
+ \ifDTMshowseconds\DTMbahasaitimesep\DTMtwodigits{##3}\fi
+ }%
+ }%
+ {% zone style
+ \DTMresetzones
+ \DTMbahasaizonemaps
+ \renewcommand*{\DTMdisplayzone}[2]{%
+ \DTMifbool{bahasai}{mapzone}%
+ {\DTMusezonemapordefault{##1}{##2}}%
+ {%
+ \ifnum##1<0\else+\fi\DTMtwodigits{##1}%
+ \ifDTMshowzoneminutes\DTMbahasaitimesep\DTMtwodigits{##2}\fi
+ }%
+ }%
+ }%
+ {% full style
+ \renewcommand*{\DTMdisplay}[9]{%
+ \ifDTMshowdate
+ \DTMdisplaydate{##1}{##2}{##3}{##4}%
+ \DTMbahasaidatetimesep
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \DTMbahasaitimezonesep
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+ \renewcommand*{\DTMDisplay}{\DTMdisplay}%
+ }
+% \end{macrocode}
+%
+%\begin{macro}{\DTMbahasaizonemaps}
+% The time zone mappings are set through this command, which can be
+% redefined if extra mappings are required or mappings need to be
+% removed. This currently has no mappings.
+% \begin{macrocode}
+\newcommand*{\DTMbahasaizonemaps}{%
+}
+% \end{macrocode}
+%\end{macro}
+
+% Switch style according to the \opt{useregional} setting.
+% \begin{macrocode}
+\DTMifcaseregional
+{}% do nothing
+{\DTMsetstyle{bahasai}}
+{\DTMsetstyle{bahasai-numeric}}
+% \end{macrocode}
+%
+% Redefine \cs{datebahasai} (or \cs{date}\meta{dialect}) to prevent
+% \sty{babel} from resetting \cs{today}. (For this to work,
+% \sty{babel} must already have been loaded if it's required.)
+%\changes{1.01}{2018-01-10}{removed spurious space}
+% \begin{macrocode}
+\ifcsundef{date\CurrentTrackedDialect}
+{%
+ \ifundef\datebahasai
+ {% do nothing
+ }%
+ {%
+ \def\datebahasai{%
+ \DTMifcaseregional
+ {}% do nothing
+ {\DTMsetstyle{bahasai}}%
+ {\DTMsetstyle{bahasai-numeric}}%
+ }%
+ }%
+}%
+{%
+ \csdef{date\CurrentTrackedDialect}{%
+ \DTMifcaseregional
+ {}% do nothing
+ {\DTMsetstyle{bahasai}}%
+ {\DTMsetstyle{bahasai-numeric}}%
+ }%
+}%
+% \end{macrocode}
+%\iffalse
+% \begin{macrocode}
+%</datetime2-bahasai.ldf>
+% \end{macrocode}
+%\fi
+%\Finale
+\endinput
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-bahasai/datetime2-bahasai.ins b/macros/latex/contrib/datetime2-contrib/datetime2-bahasai/datetime2-bahasai.ins
new file mode 100644
index 0000000000..171720abf0
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-bahasai/datetime2-bahasai.ins
@@ -0,0 +1,38 @@
+\input docstrip
+
+\preamble
+
+ datetime2-bahasai.dtx
+ Copyright 2018 Nicola Talbot
+
+ This work may be distributed and/or modified under the
+ conditions of the LaTeX Project Public License, either version 1.3
+ of this license of (at your option) any later version.
+ The latest version of this license is in
+ http://www.latex-project.org/lppl.txt
+ and version 1.3 or later is part of all distributions of LaTeX
+ version 2005/12/01 or later.
+
+ This work has the LPPL maintenance status `inactive'.
+
+ This work consists of the files datetime2-bahasai.dtx and
+ datetime2-bahasai.ins and the derived file
+ datetime2-bahasai.ldf.
+
+\endpreamble
+
+\askforoverwritefalse
+
+\generate
+{%
+ \file
+ {datetime2-bahasai.ldf}%
+ {%
+ \usepreamble\defaultpreamble
+ \usepostamble\defaultpostamble
+ \from{datetime2-bahasai.dtx}{datetime2-bahasai.ldf,package}%
+ }%
+}
+
+\endbatchfile
+
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-bahasai/datetime2-bahasai.pdf b/macros/latex/contrib/datetime2-contrib/datetime2-bahasai/datetime2-bahasai.pdf
new file mode 100644
index 0000000000..4f9ed194f6
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-bahasai/datetime2-bahasai.pdf
Binary files differ
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-basque/CHANGES b/macros/latex/contrib/datetime2-contrib/datetime2-basque/CHANGES
new file mode 100644
index 0000000000..377402ea1f
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-basque/CHANGES
@@ -0,0 +1,10 @@
+1.2a (2018-03-20)
+ * Suppress spurious space.
+
+1.2 (2015-09-03):
+ * Add inessive date form
+ * Change numeric date separator to /
+ * Fix: numeric date order to year/month/day
+
+1.0 (2015-03-24):
+ * Initial Release \ No newline at end of file
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-basque/Makefile b/macros/latex/contrib/datetime2-contrib/datetime2-basque/Makefile
new file mode 100644
index 0000000000..d2207ace90
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-basque/Makefile
@@ -0,0 +1,24 @@
+smalltest: datetime2-basque-small-test.pdf
+longtest: datetime2-basque-test.pdf
+test: smalltest longtest
+doc: datetime2-basque.pdf
+archive: datetime2-basque.zip
+
+datetime2-basque-test.pdf: datetime2-basque.ldf datetime2-basque-test.tex
+ pdflatex datetime2-basque-test.tex
+
+datetime2-basque-small-test.pdf: datetime2-basque.ldf datetime2-basque-small-test.tex
+ pdflatex datetime2-basque-small-test.tex
+
+datetime2-basque.ldf: datetime2-basque.dtx datetime2-basque.ins
+ pdflatex datetime2-basque.ins
+
+datetime2-basque.pdf: datetime2-basque.dtx
+ pdflatex datetime2-basque.dtx
+ makeindex -s gind.ist datetime2-basque.idx
+ makeindex -s gglo.ist -o datetime2-basque.gls datetime2-basque.glo
+ pdflatex datetime2-basque.dtx
+ pdflatex datetime2-basque.dtx
+
+datetime2-basque.zip: datetime2-basque.dtx datetime2-basque.ins
+ git archive --format=zip --prefix=datetime2-basque/ -o datetime2-basque.zip master
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-basque/README.txt b/macros/latex/contrib/datetime2-contrib/datetime2-basque/README.txt
new file mode 100644
index 0000000000..98fbe3e687
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-basque/README.txt
@@ -0,0 +1,59 @@
+Basque Language Module for datetime2 Package
+Version: 1.2a
+
+Authors: Nicola L. C. Talbot (inactive)
+ Zunbeltz Izaola
+
+Licence: LPPL
+
+Required Packages: datetime2, tracklang
+
+This module is maintained by Zunbeltz Izaola.
+If you find any bug or you have any suggestion contact to zunbeltz@gmail.com
+
+Example usage:
+
+\documentclass{article}
+\usepackage[basque]{datetime2}
+\begin{document}
+\today
+\end{document}
+
+\documentclass[basque]{article}
+\usepackage{babel}
+\usepackage[useregional]{datetime2}
+\begin{document}
+\today
+\end{document}
+
+\documentclass{article}
+\usepackage{polyglossia}
+\setmainlanguage{basque}
+\usepackage[basque]{datetime2}
+\begin{document}
+\today
+\end{document}
+
+INSTALLATION
+============
+
+latex datetime2-basque.ins
+
+Move all *.ldf files to
+TEXMF/tex/latex/datetime2-contrib/datetime2-basque/
+
+Documentation:
+
+pdflatex datetime2-basque.dtx
+makeindex -s gind.ist datetime2-basque.idx
+makeindex -s gglo.ist -o datetime2-basque.gls datetime2-basque.glo
+pdflatex datetime2-basque.dtx
+pdflatex datetime2-basque.dtx
+
+Move datetime2-basque.pdf and README to
+TEXMF/doc/latex/datetime2-contrib/datetime2-basque/
+
+This material is subject to the LaTeX Project Public License.
+See http://www.ctan.org/license/lppl1.3 for the details of that
+license.
+
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-basque/datetime2-basque-small-test.tex b/macros/latex/contrib/datetime2-contrib/datetime2-basque/datetime2-basque-small-test.tex
new file mode 100644
index 0000000000..8b93e0bd56
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-basque/datetime2-basque-small-test.tex
@@ -0,0 +1,50 @@
+\documentclass{article}
+\usepackage[basque]{babel}
+\usepackage[]{datetime2}
+\usepackage{pgffor}
+
+
+\newcommand{\test}{%
+\noindent This PDF was created on \today.
+
+\noindent This PDF was created on \DTMnow.
+ \texttt{\\DTMdisplaydate} \DTMdisplaydate{2015}{4}{23}{3}
+ \texttt{\\DTMDisplaydate} \DTMDisplaydate{2015}{4}{23}{3}
+ \texttt{\\today} \today
+ \texttt{\\Today} \Today
+ \texttt{\\DTMdate} \DTMdate{2015-04-23}
+ \texttt{\\DTMDate} \DTMDate{2015-04-23}
+ \texttt{\\DTMdisplaytime} \DTMdisplaytime{10}{30}{23}
+ \texttt{\\DTMdisplayzone} \DTMdisplayzone{2}{00}
+ \texttt{\\DTMcurrenttime} \DTMcurrenttime
+ \texttt{\\DTMcurrentzone} \DTMcurrentzone
+ \texttt{\\DTMtime} \DTMtime{10:30:23}
+ \texttt{\\DTMdisplay} \DTMdisplay{2015}{04}{23}{3}{10}{30}{23}{2}{00}
+ \texttt{\\DTMDisplay} \DTMDisplay{2015}{04}{23}{3}{10}{30}{23}{2}{00}
+ \texttt{\\DTMnow} \DTMnow
+ \texttt{\\DTMNow} \DTMNow
+
+\vspace*{\baselineskip}
+}
+
+\begin{document}
+\foreach \style in {basque, basque-numeric}{
+%\style
+%}
+\noindent\texttt{DTMsetstyle\{\style\}} \DTMsetstyle{\style}
+
+\test
+}
+
+\DTMlangsetup[basque]{inessive=true}
+\DTMsetstyle{basque}
+
+\test
+
+
+\end{document}
+
+%%% Local Variables:
+%%% mode: latex
+%%% TeX-master: t
+%%% End:
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-basque/datetime2-basque-test.tex b/macros/latex/contrib/datetime2-contrib/datetime2-basque/datetime2-basque-test.tex
new file mode 100644
index 0000000000..f3c54e10de
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-basque/datetime2-basque-test.tex
@@ -0,0 +1,45 @@
+\documentclass[basque, twocolumn]{article}
+\usepackage{babel}
+\usepackage[useregional]{datetime2}
+\usepackage{pgffor}
+
+\makeatletter
+\newcommand{\changeyear}[1]{%
+\def\@dtm@currentyear{#1}
+}
+\newcommand{\changemonth}[1]{%
+\def\@dtm@currentmonth{#1}
+}
+\newcommand{\changeday}[1]{%
+\def\@dtm@currentday{#1}
+}
+\makeatother
+
+\begin{document}
+\DTMlangsetup[basque]{inessive=true}
+\foreach \myyear in {2000,...,2005}{
+ \changeyear{\myyear}
+ \foreach \mymonth in {1,...,12}{
+ \changemonth{\mymonth}
+ \foreach \myday in {1,...,31}{
+ \changeday{\myday}
+ \today\par
+ }
+ \newpage
+ }
+}
+
+
+% \changemonth{2}
+% \changeday{13}
+% This PDF was created on \today.
+
+% \changeyear{2001}
+% This PDF was created on \today.
+\end{document}
+
+
+%%% Local Variables:
+%%% mode: latex
+%%% TeX-master: t
+%%% End:
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-basque/datetime2-basque.dtx b/macros/latex/contrib/datetime2-contrib/datetime2-basque/datetime2-basque.dtx
new file mode 100644
index 0000000000..50dc35c5a2
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-basque/datetime2-basque.dtx
@@ -0,0 +1,537 @@
+%\iffalse
+%<*package>
+%% \CharacterTable
+%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+%% Digits \0\1\2\3\4\5\6\7\8\9
+%% Exclamation \! Double quote \" Hash (number) \#
+%% Dollar \$ Percent \% Ampersand \&
+%% Acute accent \' Left paren \( Right paren \)
+%% Asterisk \* Plus \+ Comma \,
+%% Minus \- Point \. Solidus \/
+%% Colon \: Semicolon \; Less than \<
+%% Equals \= Greater than \> Question mark \?
+%% Commercial at \@ Left bracket \[ Backslash \\
+%% Right bracket \] Circumflex \^ Underscore \_
+%% Grave accent \` Left brace \{ Vertical bar \|
+%% Right brace \} Tilde \~}
+%</package>
+%\fi
+% \iffalse
+% Doc-Source file to use with LaTeX2e
+% Copyright (C) 2015 Nicola Talbot
+% Copyright (C) 2015-2018 Zunbeltz Izaola, all rights reserved.
+% Maintainer Zunbeltz Izaola. Based on the basque-date package by Edorta Ibarra.
+% \fi
+% \iffalse
+%<*driver>
+\documentclass{ltxdoc}
+
+\usepackage{alltt}
+\usepackage{graphicx}
+\usepackage[utf8]{inputenc}
+\usepackage[T1]{fontenc}
+\usepackage[colorlinks,
+ bookmarks,
+ hyperindex=false,
+ pdfauthor={Nicola L.C. Talbot},
+ pdftitle={datetime2.sty Basque Module}]{hyperref}
+
+
+\CheckSum{377}
+
+\renewcommand*{\usage}[1]{\hyperpage{#1}}
+\renewcommand*{\main}[1]{\hyperpage{#1}}
+\IndexPrologue{\section*{\indexname}\markboth{\indexname}{\indexname}}
+\setcounter{IndexColumns}{2}
+
+\newcommand*{\sty}[1]{\textsf{#1}}
+\newcommand*{\opt}[1]{\texttt{#1}\index{#1=\texttt{#1}|main}}
+
+\RecordChanges
+\PageIndex
+\CodelineNumbered
+
+\begin{document}
+\DocInput{datetime2-basque.dtx}
+\end{document}
+%</driver>
+%\fi
+%
+%\MakeShortVerb{"}
+%
+%\title{Basque Module for datetime2 Package}
+%\author{Zunbeltz Izaola \and Nicola L. C. Talbot (inactive)}
+%\date{2018-03-20 (v1.2a)}
+%\maketitle
+%
+%
+%\begin{abstract}
+%This is the Basque language module for the \sty{datetime2}
+%package. If you want to use the settings in this module you must
+%install it in addition to installing \sty{datetime2}. If you use
+%\sty{babel} or \sty{polyglossia}, you will need this module to
+%prevent them from redefining \cs{today}. The \sty{datetime2}
+% \opt{useregional} setting must be set to "text" or "numeric"
+% for the language styles to be set.
+% Alternatively, you can set the style in the document using
+% \cs{DTMsetstyle}, but this may be changed by \cs{date}\meta{language}
+% depending on the value of the \opt{useregional} setting.
+% Currently there is only a regionless style.
+%\end{abstract}
+%
+% \section{Introduction}
+%
+% According to The Basque Language Academy (\textit{Euskaltzaindia}), there
+% are various correct forms to display the date in Basque.\footnote{\textit{37.
+% araua. Data nola adierazi}: \url{http://euskaltzaindia.net/dok/arauak/Araua\_0037.pdf}}
+% The most used form, which includes the name of the location where the document or
+% text has been written, is the following:
+%
+% \begin{center}
+% \textit{Durango(n), 1983ko martxoaren 7a(n)},
+% \end{center}
+% where the inessive case \textit{``n''} is optional. It must be taken into account
+% that the declination of numbers in Basque is not straightforward.
+% The inessive case is deactivated by default. To activate it, set the
+% \sty{inessive} boolean option to \sty{true} with \cs{DTMlangsetup}:
+% \begin{verbatim}
+% \DTMlangsetup[basque]{inessive=true}
+% \end{verbatim}
+
+%\StopEventually{%
+%\clearpage
+%\phantomsection
+%\addcontentsline{toc}{section}{Change History}%
+%\PrintChanges
+%\addcontentsline{toc}{section}{\indexname}%
+%\PrintIndex}
+%
+%\section{The Code}
+%At the moment there is only the one ".ldf" file.
+%
+%\subsection{Main Basque Module (\texttt{datetime2-basque.ldf})}
+%\changes{1.0}{2015-03-29}{Initial release}
+%
+%\iffalse
+% \begin{macrocode}
+%<*datetime2-basque.ldf>
+% \end{macrocode}
+%\fi
+%
+% Identify Module
+% \begin{macrocode}
+\ProvidesDateTimeModule{basque}[2018/03/20 v1.2a]
+% \end{macrocode}
+%
+% Define a boolean to use the inessive case. It is not used by default.
+%
+% \begin{macrocode}
+\DTMdefboolkey{basque}{inessive}[false]{}
+% \end{macrocode}
+
+%\begin{macro}{\DTMbasqueordinal}
+% Numbers are declined according to to the case.
+% \begin{macrocode}
+\newcommand*{\DTMbasqueordinal}[1]{%
+ \number#1%
+ \DTMifbool{basque}{inessive}{%
+ \ifcase\number#1 %declination for the day (inessive case)
+ \or ean\or an\or an\or an\or ean\or an\or an\or an\or an\or ean\or
+ n\or an\or an\or an\or ean\or an\or an\or an\or an\or an\or ean\or
+ an\or an\or an\or ean\or an\or an\or an\or an\or ean\or n\fi%
+ }{%
+ \ifcase\number#1 %declination for the day (absolutive case)
+ \or a\or a\or a\or a\or a\or a\or a\or a\or a\or a\or \or
+ a\or a\or a\or a\or a\or a\or a\or a\or a\or a\or a\or a\or
+ a\or a\or a\or a\or a\or a\or a\or\fi%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMbasquemonthname}
+% Basque declined month names.
+% \begin{macrocode}
+\newcommand*{\DTMbasquemonthname}[1]{%
+ \ifcase#1
+ \or
+ urtarrilaren%
+ \or
+ otsailaren%
+ \or
+ martxoaren%
+ \or
+ apirilaren%
+ \or
+ maiatzaren%
+ \or
+ ekainaren%
+ \or
+ uztailaren%
+ \or
+ abuztuaren%
+ \or
+ irailaren%
+ \or
+ urriaren%
+ \or
+ azaroaren%
+ \or
+ abenduaren%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMbasqueMonthname}
+% As above but start with a capital.
+% \begin{macrocode}
+\newcommand*{\DTMbasqueMonthname}[1]{%
+ \ifcase#1
+ \or
+ Urtarrilaren%
+ \or
+ Otsailaren%
+ \or
+ Martxoaren%
+ \or
+ Apirilaren%
+ \or
+ Maiatzaren%
+ \or
+ Ekainaren%
+ \or
+ Uztailaren%
+ \or
+ Abuztuaren%
+ \or
+ Irailaren%
+ \or
+ Urriaren%
+ \or
+ Azaroaren%
+ \or
+ Abenduaren%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+% Define the \texttt{basque} style.
+% The time style is the same as the "default" style
+% provided by \sty{datetime2}. This may need correcting. For
+% example, if a 12 hour style similar to the "englishampm" (from the
+% "english-base" module) is required.
+%
+% Allow the user a way of configuring the "basque" and
+% "basque-numeric" styles. This doesn't use the package wide
+% separators such as
+% \cs{dtm@datetimesep} in case other date formats are also required.
+%\begin{macro}{\DTMbasquemonthdaysep}
+% The separator between the day and month for the text format.
+% \begin{macrocode}
+\newcommand*{\DTMbasquemonthdaysep}{%
+ \DTMtexorpdfstring{\protect~}{\space}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMbasqueyearmonthsep}
+% The separator between the month and year for the text format.
+% According to the Basque declination rules for year
+% \begin{macrocode}
+\newcommand*{\DTMbasqueyearmonthsep}{\ifcase\DTMtwodigits{\@dtm@currentyear}
+ %Declination for the year
+ %00-20
+ ko \or eko \or ko \or ko \or ko \or eko \or ko
+ \or ko \or ko \or ko \or eko \or ko \or ko
+ \or ko \or ko \or eko \or ko \or ko \or ko
+ \or ko \or ko \or
+ %21-40
+ eko \or ko \or ko \or ko \or eko \or ko
+ \or ko \or ko \or ko \or eko \or ko \or ko
+ \or ko \or ko \or eko \or ko \or ko \or ko
+ \or ko \or ko \or
+ %41-60
+ eko \or ko \or ko \or ko \or eko \or ko
+ \or ko \or ko \or ko \or eko \or ko \or ko
+ \or ko \or ko \or eko \or ko \or ko \or ko
+ \or ko \or ko \or
+ %61-80
+ eko \or ko \or ko \or ko \or eko \or ko
+ \or ko \or ko \or ko \or eko \or ko \or ko
+ \or ko \or ko \or eko \or ko \or ko \or ko
+ \or ko \or ko \or
+ %81-100
+ eko \or ko \or ko \or ko \or eko \or ko
+ \or ko \or ko \or ko \or eko \or ko \or ko
+ \or ko \or ko \or eko \or ko \or ko \or ko
+ \or ko \or eko
+ \fi%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMbasquedatetimesep}
+% The separator between the date and time blocks in the full format
+% (either text or numeric).
+% \begin{macrocode}
+\newcommand*{\DTMbasquedatetimesep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMbasquetimezonesep}
+% The separator between the time and zone blocks in the full format
+% (either text or numeric).
+% \begin{macrocode}
+\newcommand*{\DTMbasquetimezonesep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMbasquedatesep}
+% The separator for the numeric date format.
+%
+% There is no clear tradition for the puctuation mark to separe the numbers.
+% Spanish tradition will use either slash (/) or en-dash (-). I couldn't find typographic guidelines on the french tradition.
+% I choose the slash over the en-dash because I found that more compact dates are nicer.
+%
+% \begin{macrocode}
+\newcommand*{\DTMbasquedatesep}{/}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMbasquetimesep}
+% The separator for the numeric time format.
+% \begin{macrocode}
+\newcommand*{\DTMbasquetimesep}{:}
+% \end{macrocode}
+%\end{macro}
+%
+%Provide keys that can be used in \cs{DTMlangsetup} to set these
+%separators.
+% \begin{macrocode}
+\DTMdefkey{basque}{monthdaysep}{\renewcommand*{\DTMbasquemonthdaysep}{#1}}
+\DTMdefkey{basque}{yearmonthsep}{\renewcommand*{\DTMbasqueyearmonthsep}{#1}}
+\DTMdefkey{basque}{datetimesep}{\renewcommand*{\DTMbasquedatetimesep}{#1}}
+\DTMdefkey{basque}{timezonesep}{\renewcommand*{\DTMbasquetimezonesep}{#1}}
+\DTMdefkey{basque}{datesep}{\renewcommand*{\DTMbasquedatesep}{#1}}
+\DTMdefkey{basque}{timesep}{\renewcommand*{\DTMbasquetimesep}{#1}}
+% \end{macrocode}
+%
+% TODO: provide a boolean key to switch between full and abbreviated
+% formats if appropriate. (I don't know how the date should be
+% abbreviated.)
+%
+% Define a boolean key that determines if the time zone mappings
+% should be used.
+% \begin{macrocode}
+\DTMdefboolkey{basque}{mapzone}[true]{}
+% \end{macrocode}
+% The default is to use mappings.
+% \begin{macrocode}
+\DTMsetbool{basque}{mapzone}{true}
+% \end{macrocode}
+%
+% Define a boolean key that determines if the day of month should be
+% displayed.
+% \begin{macrocode}
+\DTMdefboolkey{basque}{showdayofmonth}[true]{}
+% \end{macrocode}
+% The default is to show the day of month.
+% \begin{macrocode}
+\DTMsetbool{basque}{showdayofmonth}{true}
+% \end{macrocode}
+%
+% Define a boolean key that determines if the year should be
+% displayed.
+% \begin{macrocode}
+\DTMdefboolkey{basque}{showyear}[true]{}
+% \end{macrocode}
+% The default is to show the year.
+% \begin{macrocode}
+\DTMsetbool{basque}{showyear}{true}
+% \end{macrocode}
+%
+% Define the "basque" style. (TODO: implement day of week?)
+% \begin{macrocode}
+\DTMnewstyle
+ {basque}% label
+ {% date style
+ \renewcommand*\DTMdisplaydate[4]{%
+ \DTMifbool{basque}{showyear}%
+ {%
+ \number##1%
+ \DTMbasqueyearmonthsep
+ }%
+ {}%
+ \DTMbasquemonthname{##2}%
+ \DTMifbool{basque}{showdayofmonth}
+ {\DTMbasquemonthdaysep\DTMbasqueordinal{##3}}%
+ {}%
+ }%
+ \renewcommand*\DTMDisplaydate[4]{%
+ \DTMifbool{basque}{showyear}%
+ {%
+ \number##1%
+ \DTMbasqueyearmonthsep
+ \DTMbasquemonthname{##2}%
+ }%
+ {%
+ \DTMbasqueMonthname{##2}%
+ }%
+ \DTMifbool{basque}{showdayofmonth}
+ {\DTMbasquemonthdaysep\DTMbasqueordinal{##3}}%
+ {}%
+ }%
+ }%
+ {% time style (use default)
+ \DTMsettimestyle{default}%
+ }%
+ {% zone style
+ \DTMresetzones
+ \DTMbasquezonemaps
+ \renewcommand*{\DTMdisplayzone}[2]{%
+ \DTMifbool{basque}{mapzone}%
+ {\DTMusezonemapordefault{##1}{##2}}%
+ {%
+ \ifnum##1<0\else+\fi\DTMtwodigits{##1}%
+ \ifDTMshowzoneminutes\DTMbasquetimesep\DTMtwodigits{##2}\fi
+ }%
+ }%
+ }%
+ {% full style
+ \renewcommand*{\DTMdisplay}[9]{%
+ \ifDTMshowdate
+ \DTMdisplaydate{##1}{##2}{##3}{##4}%
+ \DTMbasquedatetimesep
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \DTMbasquetimezonesep
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+ \renewcommand*{\DTMDisplay}[9]{%
+ \ifDTMshowdate
+ \DTMDisplaydate{##1}{##2}{##3}{##4}%
+ \DTMbasquedatetimesep
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \DTMbasquetimezonesep
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+ }%
+% \end{macrocode}
+%
+% Define numeric style.
+% \begin{macrocode}
+\DTMnewstyle
+ {basque-numeric}% label
+ {% date style
+ \renewcommand*\DTMdisplaydate[4]{%
+ \DTMifbool{basque}{showyear}%
+ {%
+ \number##1%
+ \DTMbasquedatesep
+ }%
+ {}%
+ \number##2%
+ \DTMifbool{basque}{showdayofmonth}%
+ {%
+ \DTMbasquedatesep
+ \number##3 % space intended
+ }%
+ {}%
+ }%
+ \renewcommand*{\DTMDisplaydate}{\DTMdisplaydate}%
+ }%
+ {% time style
+ \renewcommand*\DTMdisplaytime[3]{%
+ \number##1
+ \DTMbasquetimesep\DTMtwodigits{##2}%
+ \ifDTMshowseconds\DTMbasquetimesep\DTMtwodigits{##3}\fi
+ }%
+ }%
+ {% zone style
+ \DTMresetzones
+ \DTMbasquezonemaps
+ \renewcommand*{\DTMdisplayzone}[2]{%
+ \DTMifbool{basque}{mapzone}%
+ {\DTMusezonemapordefault{##1}{##2}}%
+ {%
+ \ifnum##1<0\else+\fi\DTMtwodigits{##1}%
+ \ifDTMshowzoneminutes\DTMbasquetimesep\DTMtwodigits{##2}\fi
+ }%
+ }%
+ }%
+ {% full style
+ \renewcommand*{\DTMdisplay}[9]{%
+ \ifDTMshowdate
+ \DTMdisplaydate{##1}{##2}{##3}{##4}%
+ \DTMbasquedatetimesep
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \DTMbasquetimezonesep
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+ \renewcommand*{\DTMDisplay}{\DTMdisplay}%
+ }
+% \end{macrocode}
+%
+%\begin{macro}{\DTMbasquezonemaps}
+% The time zone mappings are set through this command, which can be
+% redefined if extra mappings are required or mappings need to be
+% removed. This currently has no mappings.
+% \begin{macrocode}
+\newcommand*{\DTMbasquezonemaps}{%
+}
+% \end{macrocode}
+%\end{macro}
+
+% Switch style according to the \opt{useregional} setting.
+% \begin{macrocode}
+\DTMifcaseregional
+{}% do nothing
+{\DTMsetstyle{basque}}
+{\DTMsetstyle{basque-numeric}}
+% \end{macrocode}
+%
+% Redefine \cs{datebasque} (or \cs{date}\meta{dialect}) to prevent
+% \sty{babel} from resetting \cs{today}. (For this to work,
+% \sty{babel} must already have been loaded if it's required.)
+% \changes{v1.2a}{2018/03/20}{Suppress spurious space.}
+% \begin{macrocode}
+\ifcsundef{date\CurrentTrackedDialect}
+{%
+ \ifundef\datebasque
+ {% do nothing
+ }%
+ {%
+ \def\datebasque{%
+ \DTMifcaseregional
+ {}% do nothing
+ {\DTMsetstyle{basque}}%
+ {\DTMsetstyle{basque-numeric}}%
+ }%
+ }%
+}%
+{%
+ \csdef{date\CurrentTrackedDialect}{%
+ \DTMifcaseregional
+ {}% do nothing
+ {\DTMsetstyle{basque}}%
+ {\DTMsetstyle{basque-numeric}}%
+ }%
+}%
+% \end{macrocode}
+%\iffalse
+% \begin{macrocode}
+%</datetime2-basque.ldf>
+% \end{macrocode}
+%\fi
+%\Finale
+\endinput
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-basque/datetime2-basque.ins b/macros/latex/contrib/datetime2-contrib/datetime2-basque/datetime2-basque.ins
new file mode 100644
index 0000000000..22142c5eff
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-basque/datetime2-basque.ins
@@ -0,0 +1,41 @@
+\input docstrip
+
+\preamble
+
+ datetime2-basque.dtx
+ Copyright (C) 2015 Nicola Talbot
+ Copyright (C) 2015-2018 Zunbeltz Izaola
+
+ This work may be distributed and/or modified under the
+ conditions of the LaTeX Project Public License, either version 1.3
+ of this license of (at your option) any later version.
+ The latest version of this license is in
+ http://www.latex-project.org/lppl.txt
+ and version 1.3 or later is part of all distributions of LaTeX
+ version 2005/12/01 or later.
+
+ This work has the LPPL maintenance status `maintained'.
+
+ The Current Maintainer of this work is Zunbeltz Izaola.
+
+ This work consists of the files datetime2-basque.dtx and
+ datetime2-basque.ins and the derived file
+ datetime2-basque.ldf.
+
+\endpreamble
+
+\askforoverwritefalse
+
+\generate
+{%
+ \file
+ {datetime2-basque.ldf}%
+ {%
+ \usepreamble\defaultpreamble
+ \usepostamble\defaultpostamble
+ \from{datetime2-basque.dtx}{datetime2-basque.ldf,package}%
+ }%
+}
+
+\endbatchfile
+
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-breton/README b/macros/latex/contrib/datetime2-contrib/datetime2-breton/README
new file mode 100644
index 0000000000..f488940b76
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-breton/README
@@ -0,0 +1,57 @@
+Breton Language Module for datetime2 Package
+
+Author: Nicola L. C. Talbot (inactive)
+
+Licence: LPPL
+
+Required Packages: datetime2, tracklang
+
+This module is unmaintained. If you want to volunteer to take over
+the maintenance contact me at www.dickimaw-books.com/contact.html
+
+Example usage:
+
+\documentclass{article}
+\usepackage[breton]{datetime2}
+\begin{document}
+\today
+\end{document}
+
+\documentclass[breton]{article}
+\usepackage{babel}
+\usepackage[useregional]{datetime2}
+\begin{document}
+\today
+\end{document}
+
+\documentclass{article}
+\usepackage{polyglossia}
+\setmainlanguage{breton}
+\usepackage[breton]{datetime2}
+\begin{document}
+\today
+\end{document}
+
+INSTALLATION
+============
+
+latex datetime2-breton.ins
+
+Move all *.ldf files to
+TEXMF/tex/latex/datetime2-contrib/datetime2-breton/
+
+Documentation:
+
+pdflatex datetime2-breton.dtx
+makeindex -s gind.ist datetime2-breton.idx
+makeindex -s gglo.ist -o datetime2-breton.gls datetime2-breton.glo
+pdflatex datetime2-breton.dtx
+pdflatex datetime2-breton.dtx
+
+Move datetime2-breton.pdf and README to
+TEXMF/doc/latex/datetime2-contrib/datetime2-breton/
+
+This material is subject to the LaTeX Project Public License.
+See http://www.ctan.org/license/lppl1.3 for the details of that
+license.
+
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-breton/datetime2-breton.dtx b/macros/latex/contrib/datetime2-contrib/datetime2-breton/datetime2-breton.dtx
new file mode 100644
index 0000000000..5af0e7b515
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-breton/datetime2-breton.dtx
@@ -0,0 +1,574 @@
+%\iffalse
+%<*package>
+%% \CharacterTable
+%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+%% Digits \0\1\2\3\4\5\6\7\8\9
+%% Exclamation \! Double quote \" Hash (number) \#
+%% Dollar \$ Percent \% Ampersand \&
+%% Acute accent \' Left paren \( Right paren \)
+%% Asterisk \* Plus \+ Comma \,
+%% Minus \- Point \. Solidus \/
+%% Colon \: Semicolon \; Less than \<
+%% Equals \= Greater than \> Question mark \?
+%% Commercial at \@ Left bracket \[ Backslash \\
+%% Right bracket \] Circumflex \^ Underscore \_
+%% Grave accent \` Left brace \{ Vertical bar \|
+%% Right brace \} Tilde \~}
+%</package>
+%\fi
+% \iffalse
+% Doc-Source file to use with LaTeX2e
+% Copyright (C) 2018 Nicola Talbot, all rights reserved.
+% (New maintainer add relevant lines here.)
+% \fi
+% \iffalse
+%<*driver>
+\documentclass{ltxdoc}
+
+\usepackage{alltt}
+\usepackage{graphicx}
+\usepackage[utf8]{inputenc}
+\usepackage[T1]{fontenc}
+\usepackage[colorlinks,
+ bookmarks,
+ hyperindex=false,
+ pdfauthor={Nicola L.C. Talbot},
+ pdftitle={datetime2.sty Breton Module}]{hyperref}
+
+
+\CheckSum{252}
+
+\renewcommand*{\usage}[1]{\hyperpage{#1}}
+\renewcommand*{\main}[1]{\hyperpage{#1}}
+\IndexPrologue{\section*{\indexname}\markboth{\indexname}{\indexname}}
+\setcounter{IndexColumns}{2}
+
+\newcommand*{\sty}[1]{\textsf{#1}}
+\newcommand*{\opt}[1]{\texttt{#1}\index{#1=\texttt{#1}|main}}
+
+\RecordChanges
+\PageIndex
+\CodelineNumbered
+
+\begin{document}
+\DocInput{datetime2-breton.dtx}
+\end{document}
+%</driver>
+%\fi
+%
+%\MakeShortVerb{"}
+%
+%\title{Breton Module for datetime2 Package}
+%\author{Nicola L. C. Talbot (inactive)}
+%\date{2018-03-19 (v1.1)}
+%\maketitle
+%
+%This module is currently unmaintained and may be subject to change.
+%If you want to volunteer to take over maintanance, contact me at
+%\url{http://www.dickimaw-books.com/contact.html}
+%
+%\begin{abstract}
+%This is the Breton language module for the \sty{datetime2}
+%package. If you want to use the settings in this module you must
+%install it in addition to installing \sty{datetime2}. If you use
+%\sty{babel} or \sty{polyglossia}, you will need this module to
+%prevent them from redefining \cs{today}. The \sty{datetime2}
+% \opt{useregional} setting must be set to "text" or "numeric"
+% for the language styles to be set.
+% Alternatively, you can set the style in the document using
+% \cs{DTMsetstyle}, but this may be changed by \cs{date}\meta{language}
+% depending on the value of the \opt{useregional} setting.
+%\end{abstract}
+%
+%I've copied the date style from \texttt{babel-breton}'s \cs{today}.
+%
+%I don't know if these settings are correct as I can't speak Breton.
+%In particular, I don't know if the "breton" time style is
+%correct. Currently this just uses the "default" time style. Please
+%be aware that this may change. Whoever takes over maintanance
+%of this module may can change it as appropriate.
+%
+%The new maintainer should add the line:
+%\begin{verbatim}
+% The Current Maintainer of this work is Name.
+%\end{verbatim}
+%to the preamble part in \texttt{datetime2-breton.ins} where Name
+%is the name of the maintainer(s) and replace
+%the `inactive' status to `maintained'.
+%
+%Currently there is only a regionless style.
+%
+%\StopEventually{%
+%\clearpage
+%\phantomsection
+%\addcontentsline{toc}{section}{Change History}%
+%\PrintChanges
+%\addcontentsline{toc}{section}{\indexname}%
+%\PrintIndex}
+%\section{The Code}
+%\iffalse
+% \begin{macrocode}
+%<*datetime2-breton-utf8.ldf>
+% \end{macrocode}
+%\fi
+%\subsection{UTF-8}
+%This file contains the settings that use UTF-8 characters. This
+%file is loaded if XeLaTeX or LuaLaTeX are used. Please make sure
+%your text editor is set to UTF-8 if you want to view this code.
+%\changes{1.0}{2015-03-29}{Initial release}
+% Identify module
+% \begin{macrocode}
+\ProvidesDateTimeModule{breton-utf8}[2018/03/19 v1.1]
+% \end{macrocode}
+%\begin{macro}{\DTMbretonordinal}
+% \begin{macrocode}
+\newcommand*{\DTMbretonordinal}[1]{%
+ \number#1
+ \ifnum#1=1
+ \DTMbretonfmtordinal{aƱ}%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMbretonfmtordinal}
+% \begin{macrocode}
+\newcommand*{\DTMbretonfmtordinal}[1]{%
+ \DTMtexorpdfstring{\protect\/\protect\textsuperscript{#1}}{#1}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMbretonmonthname}
+% Breton month names.
+% \begin{macrocode}
+\newcommand*{\DTMbretonmonthname}[1]{%
+ \ifcase#1
+ \or
+ Genver%
+ \or
+ C'hwevrer%
+ \or
+ Meurzh%
+ \or
+ Ebrel%
+ \or
+ Mae%
+ \or
+ Mezheven%
+ \or
+ Gouere%
+ \or
+ Eost%
+ \or
+ Gwengolo%
+ \or
+ Here%
+ \or
+ Du%
+ \or
+ Kerzu%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%If abbreviated dates are supported, short month names should be
+%likewise provided.
+%
+%\iffalse
+% \begin{macrocode}
+%</datetime2-breton-utf8.ldf>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*datetime2-breton-ascii.ldf>
+% \end{macrocode}
+%\fi
+%\subsection{ASCII}
+%This file contains the settings that use \LaTeX\ commands for
+%non-ASCII characters. This should be input if neither XeLaTeX nor
+%LuaLaTeX are used. Even if the user has loaded \sty{inputenc} with
+%"utf8", this file should still be used not the
+%\texttt{datetime2-breton-utf8.ldf} file as the non-ASCII
+%characters are made active in that situation and would need
+%protecting against expansion.
+%\changes{1.0}{2015-03-29}{Initial release}
+% Identify module
+% \begin{macrocode}
+\ProvidesDateTimeModule{breton-ascii}[2018/03/19 v1.1]
+% \end{macrocode}
+%
+%If abbreviated dates are supported, short month names should be
+%likewise provided.
+%\begin{macro}{\DTMbretonordinal}
+% \begin{macrocode}
+\newcommand*{\DTMbretonordinal}[1]{%
+ \number#1
+ \ifnum#1=1
+ \DTMbretonfmtordsuffix{a\protect\~{n}}%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMbretonfmtordsuffix}
+% \begin{macrocode}
+\newcommand*{\DTMbretonfmtordsuffix}[1]{%
+ \DTMtexorpdfstring{\protect\/\protect\textsuperscript{#1}}{#1}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMbretonmonthname}
+% Breton month names.
+% \begin{macrocode}
+\newcommand*{\DTMbretonmonthname}[1]{%
+ \ifcase#1
+ \or
+ Genver%
+ \or
+ C'hwevrer%
+ \or
+ Meurzh%
+ \or
+ Ebrel%
+ \or
+ Mae%
+ \or
+ Mezheven%
+ \or
+ Gouere%
+ \or
+ Eost%
+ \or
+ Gwengolo%
+ \or
+ Here%
+ \or
+ Du%
+ \or
+ Kerzu%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\iffalse
+% \begin{macrocode}
+%</datetime2-breton-ascii.ldf>
+% \end{macrocode}
+%\fi
+%
+%\subsection{Main Breton Module (\texttt{datetime2-breton.ldf})}
+%\changes{1.0}{2015-03-29}{Initial release}
+%
+%\iffalse
+% \begin{macrocode}
+%<*datetime2-breton.ldf>
+% \end{macrocode}
+%\fi
+%
+% Identify Module
+% \begin{macrocode}
+\ProvidesDateTimeModule{breton}[2018/03/19 v1.1]
+% \end{macrocode}
+% Need to find out if XeTeX or LuaTeX are being used.
+% \begin{macrocode}
+\RequirePackage{ifxetex,ifluatex}
+% \end{macrocode}
+% XeTeX and LuaTeX natively support UTF-8, so load
+% \texttt{breton-utf8} if either of those engines are used
+% otherwise load \texttt{breton-ascii}.
+% \begin{macrocode}
+\ifxetex
+ \RequireDateTimeModule{breton-utf8}
+\else
+ \ifluatex
+ \RequireDateTimeModule{breton-utf8}
+ \else
+ \RequireDateTimeModule{breton-ascii}
+ \fi
+\fi
+% \end{macrocode}
+%
+% Define the \texttt{breton} style.
+% The time style is the same as the "default" style
+% provided by \sty{datetime2}. This may need correcting. For
+% example, if a 12 hour style similar to the "englishampm" (from the
+% "english-base" module) is required.
+%
+% Allow the user a way of configuring the "breton" and
+% "breton-numeric" styles. This doesn't use the package wide
+% separators such as
+% \cs{dtm@datetimesep} in case other date formats are also required.
+%\begin{macro}{\DTMbretondaymonthsep}
+% The separator between the day and month for the text format.
+% \begin{macrocode}
+\newcommand*{\DTMbretondaymonthsep}{\space a\space viz\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMbretonmonthyearsep}
+% The separator between the month and year for the text format.
+% \begin{macrocode}
+\newcommand*{\DTMbretonmonthyearsep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMbretondatetimesep}
+% The separator between the date and time blocks in the full format
+% (either text or numeric).
+% \begin{macrocode}
+\newcommand*{\DTMbretondatetimesep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMbretontimezonesep}
+% The separator between the time and zone blocks in the full format
+% (either text or numeric).
+% \begin{macrocode}
+\newcommand*{\DTMbretontimezonesep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMbretondatesep}
+% The separator for the numeric date format.
+% \begin{macrocode}
+\newcommand*{\DTMbretondatesep}{/}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMbretontimesep}
+% The separator for the numeric time format.
+% \begin{macrocode}
+\newcommand*{\DTMbretontimesep}{:}
+% \end{macrocode}
+%\end{macro}
+%
+%Provide keys that can be used in \cs{DTMlangsetup} to set these
+%separators.
+% \begin{macrocode}
+\DTMdefkey{breton}{daymonthsep}{\renewcommand*{\DTMbretondaymonthsep}{#1}}
+\DTMdefkey{breton}{monthyearsep}{\renewcommand*{\DTMbretonmonthyearsep}{#1}}
+\DTMdefkey{breton}{datetimesep}{\renewcommand*{\DTMbretondatetimesep}{#1}}
+\DTMdefkey{breton}{timezonesep}{\renewcommand*{\DTMbretontimezonesep}{#1}}
+\DTMdefkey{breton}{datesep}{\renewcommand*{\DTMbretondatesep}{#1}}
+\DTMdefkey{breton}{timesep}{\renewcommand*{\DTMbretontimesep}{#1}}
+% \end{macrocode}
+%
+% Define a setting to change the ordinal suffix style.
+% \begin{macrocode}
+\DTMdefchoicekey{breton}{ord}[\val\nr]{level,raise,omit,sc}{%
+ \ifcase\nr\relax
+ \renewcommand*{\DTMbretonfmtordsuffix}[1]{##1}%
+ \or
+ \renewcommand*{\DTMbretonfmtordsuffix}[1]{%
+ \DTMtexorpdfstring{\protect\textsuperscript{##1}}{##1}}%
+ \or
+ \renewcommand*{\DTMbretonfmtordsuffix}[1]{}%
+ \or
+ \renewcommand*{\DTMbretonfmtordsuffix}[1]{%
+ \DTMtexorpdfstring{\protect\textsc{##1}}{##1}}%
+ \fi
+}
+% \end{macrocode}
+%
+% TODO: provide a boolean key to switch between full and abbreviated
+% formats if appropriate. (I don't know how the date should be
+% abbreviated.)
+%
+% Define a boolean key that determines if the time zone mappings
+% should be used.
+% \begin{macrocode}
+\DTMdefboolkey{breton}{mapzone}[true]{}
+% \end{macrocode}
+% The default is to use mappings.
+% \begin{macrocode}
+\DTMsetbool{breton}{mapzone}{true}
+% \end{macrocode}
+%
+% Define a boolean key that determines if the day of month should be
+% displayed.
+% \begin{macrocode}
+\DTMdefboolkey{breton}{showdayofmonth}[true]{}
+% \end{macrocode}
+% The default is to show the day of month.
+% \begin{macrocode}
+\DTMsetbool{breton}{showdayofmonth}{true}
+% \end{macrocode}
+%
+% Define a boolean key that determines if the year should be
+% displayed.
+% \begin{macrocode}
+\DTMdefboolkey{breton}{showyear}[true]{}
+% \end{macrocode}
+% The default is to show the year.
+% \begin{macrocode}
+\DTMsetbool{breton}{showyear}{true}
+% \end{macrocode}
+%
+% Define the "breton" style. (TODO: implement day of week?)
+% \begin{macrocode}
+\DTMnewstyle
+ {breton}% label
+ {% date style
+ \renewcommand*\DTMdisplaydate[4]{%
+ \DTMifbool{breton}{showdayofmonth}
+ {\DTMbretonordinal{##3}\DTMbretondaymonthsep}%
+ {}%
+ \DTMbretonmonthname{##2}%
+ \DTMifbool{breton}{showyear}%
+ {%
+ \DTMbretonmonthyearsep
+ \number##1 % space intended
+ }%
+ {}%
+ }%
+ \renewcommand*\DTMDisplaydate{\DTMdisplaydate}%
+ }%
+ {% time style (use default)
+ \DTMsettimestyle{default}%
+ }%
+ {% zone style
+ \DTMresetzones
+ \DTMbretonzonemaps
+ \renewcommand*{\DTMdisplayzone}[2]{%
+ \DTMifbool{breton}{mapzone}%
+ {\DTMusezonemapordefault{##1}{##2}}%
+ {%
+ \ifnum##1<0\else+\fi\DTMtwodigits{##1}%
+ \ifDTMshowzoneminutes\DTMbretontimesep\DTMtwodigits{##2}\fi
+ }%
+ }%
+ }%
+ {% full style
+ \renewcommand*{\DTMdisplay}[9]{%
+ \ifDTMshowdate
+ \DTMdisplaydate{##1}{##2}{##3}{##4}%
+ \DTMbretondatetimesep
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \DTMbretontimezonesep
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+ \renewcommand*{\DTMDisplay}{\DTMdisplay}%
+ }%
+% \end{macrocode}
+%
+% Define numeric style.
+% \begin{macrocode}
+\DTMnewstyle
+ {breton-numeric}% label
+ {% date style
+ \renewcommand*\DTMdisplaydate[4]{%
+ \DTMifbool{breton}{showdayofmonth}%
+ {%
+ \number##3 % space intended
+ \DTMbretondatesep
+ }%
+ {}%
+ \number##2 % space intended
+ \DTMifbool{breton}{showyear}%
+ {%
+ \DTMbretondatesep
+ \number##1 % space intended
+ }%
+ {}%
+ }%
+ \renewcommand*{\DTMDisplaydate}[4]{\DTMdisplaydate{##1}{##2}{##3}{##4}}%
+ }%
+ {% time style
+ \renewcommand*\DTMdisplaytime[3]{%
+ \number##1
+ \DTMbretontimesep\DTMtwodigits{##2}%
+ \ifDTMshowseconds\DTMbretontimesep\DTMtwodigits{##3}\fi
+ }%
+ }%
+ {% zone style
+ \DTMresetzones
+ \DTMbretonzonemaps
+ \renewcommand*{\DTMdisplayzone}[2]{%
+ \DTMifbool{breton}{mapzone}%
+ {\DTMusezonemapordefault{##1}{##2}}%
+ {%
+ \ifnum##1<0\else+\fi\DTMtwodigits{##1}%
+ \ifDTMshowzoneminutes\DTMbretontimesep\DTMtwodigits{##2}\fi
+ }%
+ }%
+ }%
+ {% full style
+ \renewcommand*{\DTMdisplay}[9]{%
+ \ifDTMshowdate
+ \DTMdisplaydate{##1}{##2}{##3}{##4}%
+ \DTMbretondatetimesep
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \DTMbretontimezonesep
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+ \renewcommand*{\DTMDisplay}{\DTMdisplay}%
+ }
+% \end{macrocode}
+%
+%\begin{macro}{\DTMbretonzonemaps}
+% The time zone mappings are set through this command, which can be
+% redefined if extra mappings are required or mappings need to be
+% removed.
+% \begin{macrocode}
+\newcommand*{\DTMbretonzonemaps}{%
+ \DTMdefzonemap{01}{00}{CET}%
+ \DTMdefzonemap{02}{00}{CEST}%
+}
+% \end{macrocode}
+%\end{macro}
+
+% Switch style according to the \opt{useregional} setting.
+% \begin{macrocode}
+\DTMifcaseregional
+{}% do nothing
+{\DTMsetstyle{breton}}
+{\DTMsetstyle{breton-numeric}}
+% \end{macrocode}
+%
+% Redefine \cs{datebreton} (or \cs{date}\meta{dialect}) to prevent
+% \sty{babel} from resetting \cs{today}. (For this to work,
+% \sty{babel} must already have been loaded if it's required.)
+%\changes{1.1}{2018-03-19}{removed spurious space}
+% \begin{macrocode}
+\ifcsundef{date\CurrentTrackedDialect}
+{%
+ \ifundef\datebreton
+ {% do nothing
+ }%
+ {%
+ \def\datebreton{%
+ \DTMifcaseregional
+ {}% do nothing
+ {\DTMsetstyle{breton}}%
+ {\DTMsetstyle{breton-numeric}}%
+ }%
+ }%
+}%
+{%
+ \csdef{date\CurrentTrackedDialect}{%
+ \DTMifcaseregional
+ {}% do nothing
+ {\DTMsetstyle{breton}}%
+ {\DTMsetstyle{breton-numeric}}%
+ }%
+}%
+% \end{macrocode}
+%\iffalse
+% \begin{macrocode}
+%</datetime2-breton.ldf>
+% \end{macrocode}
+%\fi
+%\Finale
+\endinput
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-breton/datetime2-breton.ins b/macros/latex/contrib/datetime2-contrib/datetime2-breton/datetime2-breton.ins
new file mode 100644
index 0000000000..93da959d28
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-breton/datetime2-breton.ins
@@ -0,0 +1,61 @@
+\input docstrip
+
+\preamble
+
+ datetime2-breton.dtx
+ Copyright 2018 Nicola Talbot
+
+ This work may be distributed and/or modified under the
+ conditions of the LaTeX Project Public License, either version 1.3
+ of this license of (at your option) any later version.
+ The latest version of this license is in
+ http://www.latex-project.org/lppl.txt
+ and version 1.3 or later is part of all distributions of LaTeX
+ version 2005/12/01 or later.
+
+ This work has the LPPL maintenance status `inactive'.
+
+ This work consists of the files datetime2-breton.dtx and
+ datetime2-breton.ins and the derived files
+ datetime2-breton-utf8.ldf, datetime2-breton-ascii.ldf and
+ datetime2-breton.ldf.
+
+\endpreamble
+
+\askforoverwritefalse
+
+\generate
+{%
+ \file
+ {datetime2-breton-utf8.ldf}%
+ {%
+ \usepreamble\defaultpreamble
+ \usepostamble\defaultpostamble
+ \from{datetime2-breton.dtx}{datetime2-breton-utf8.ldf,package}%
+ }%
+}
+
+\generate
+{%
+ \file
+ {datetime2-breton-ascii.ldf}%
+ {%
+ \usepreamble\defaultpreamble
+ \usepostamble\defaultpostamble
+ \from{datetime2-breton.dtx}{datetime2-breton-ascii.ldf,package}%
+ }%
+}
+
+\generate
+{%
+ \file
+ {datetime2-breton.ldf}%
+ {%
+ \usepreamble\defaultpreamble
+ \usepostamble\defaultpostamble
+ \from{datetime2-breton.dtx}{datetime2-breton.ldf,package}%
+ }%
+}
+
+\endbatchfile
+
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-breton/datetime2-breton.pdf b/macros/latex/contrib/datetime2-contrib/datetime2-breton/datetime2-breton.pdf
new file mode 100644
index 0000000000..55340962c1
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-breton/datetime2-breton.pdf
Binary files differ
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-bulgarian/README b/macros/latex/contrib/datetime2-contrib/datetime2-bulgarian/README
new file mode 100644
index 0000000000..705206adf7
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-bulgarian/README
@@ -0,0 +1,57 @@
+Bulgarian Language Module for datetime2 Package
+
+Author: Nicola L. C. Talbot (inactive)
+
+Licence: LPPL
+
+Required Packages: datetime2, tracklang
+
+This module is unmaintained. If you want to volunteer to take over
+the maintenance contact me at www.dickimaw-books.com/contact.html
+
+Example usage:
+
+\documentclass{article}
+\usepackage[bulgarian]{datetime2}
+\begin{document}
+\today
+\end{document}
+
+\documentclass[bulgarian]{article}
+\usepackage{babel}
+\usepackage[useregional]{datetime2}
+\begin{document}
+\today
+\end{document}
+
+\documentclass{article}
+\usepackage{polyglossia}
+\setmainlanguage{bulgarian}
+\usepackage[bulgarian]{datetime2}
+\begin{document}
+\today
+\end{document}
+
+INSTALLATION
+============
+
+xelatex datetime2-bulgarian.ins
+
+Move all *.ldf files to
+TEXMF/tex/latex/datetime2-contrib/datetime2-bulgarian/
+
+Documentation:
+
+xelatex datetime2-bulgarian.dtx
+makeindex -s gind.ist datetime2-bulgarian.idx
+makeindex -s gglo.ist -o datetime2-bulgarian.gls datetime2-bulgarian.glo
+xelatex datetime2-bulgarian.dtx
+xelatex datetime2-bulgarian.dtx
+
+Move datetime2-bulgarian.pdf and README to
+TEXMF/doc/latex/datetime2-contrib/datetime2-bulgarian/
+
+This material is subject to the LaTeX Project Public License.
+See http://www.ctan.org/license/lppl1.3 for the details of that
+license.
+
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-bulgarian/datetime2-bulgarian.dtx b/macros/latex/contrib/datetime2-contrib/datetime2-bulgarian/datetime2-bulgarian.dtx
new file mode 100644
index 0000000000..8ce03f5d6d
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-bulgarian/datetime2-bulgarian.dtx
@@ -0,0 +1,662 @@
+%\iffalse
+%<*package>
+%% \CharacterTable
+%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+%% Digits \0\1\2\3\4\5\6\7\8\9
+%% Exclamation \! Double quote \" Hash (number) \#
+%% Dollar \$ Percent \% Ampersand \&
+%% Acute accent \' Left paren \( Right paren \)
+%% Asterisk \* Plus \+ Comma \,
+%% Minus \- Point \. Solidus \/
+%% Colon \: Semicolon \; Less than \<
+%% Equals \= Greater than \> Question mark \?
+%% Commercial at \@ Left bracket \[ Backslash \\
+%% Right bracket \] Circumflex \^ Underscore \_
+%% Grave accent \` Left brace \{ Vertical bar \|
+%% Right brace \} Tilde \~}
+%</package>
+%\fi
+% \iffalse
+% Doc-Source file to use with LaTeX2e
+% Copyright (C) 2018 Nicola Talbot, all rights reserved.
+% (New maintainer add relevant lines here.)
+% \fi
+% \iffalse
+%<*driver>
+\documentclass{ltxdoc}
+
+\usepackage{alltt}
+\usepackage{graphicx}
+\usepackage{fontspec}
+\usepackage[colorlinks,
+ bookmarks,
+ hyperindex=false,
+ pdfauthor={Nicola L.C. Talbot},
+ pdftitle={datetime2.sty Bulgarian Module}]{hyperref}
+
+\newfontfamily\cyrillicfont{Liberation Serif}
+\setmonofont{Liberation Mono}
+
+\CheckSum{545}
+
+\renewcommand*{\usage}[1]{\hyperpage{#1}}
+\renewcommand*{\main}[1]{\hyperpage{#1}}
+\IndexPrologue{\section*{\indexname}\markboth{\indexname}{\indexname}}
+\setcounter{IndexColumns}{2}
+
+\newcommand*{\sty}[1]{\textsf{#1}}
+\newcommand*{\opt}[1]{\texttt{#1}\index{#1=\texttt{#1}|main}}
+
+\RecordChanges
+\PageIndex
+\CodelineNumbered
+
+\begin{document}
+\DocInput{datetime2-bulgarian.dtx}
+\end{document}
+%</driver>
+%\fi
+%
+%\MakeShortVerb{"}
+%
+%\title{Bulgarian Module for datetime2 Package}
+%\author{Nicola L. C. Talbot (inactive)}
+%\date{2018-03-19 (v1.1)}
+%\maketitle
+%
+%This module is currently unmaintained and may be subject to change.
+%If you want to volunteer to take over maintanance, contact me at
+%\url{http://www.dickimaw-books.com/contact.html}
+%
+%\begin{abstract}
+%This is the Bulgarian language module for the \sty{datetime2}
+%package. If you want to use the settings in this module you must
+%install it in addition to installing \sty{datetime2}. If you use
+%\sty{babel} or \sty{polyglossia}, you will need this module to
+%prevent them from redefining \cs{today}. The \sty{datetime2}
+% \opt{useregional} setting must be set to "text" or "numeric"
+% for the language styles to be set.
+% Alternatively, you can set the style in the document using
+% \cs{DTMsetstyle}, but this may be changed by \cs{date}\meta{language}
+% depending on the value of the \opt{useregional} setting.
+%\end{abstract}
+%
+%I've copied the date style from \texttt{babel-bulgarian}'s \cs{today}.
+%
+%I don't know if these settings are correct as I can't speak Bulgarian.
+%In particular, I don't know if the "bulgarian" time style is
+%correct. Currently this just uses the "default" time style. Please
+%be aware that this may change. Whoever takes over maintanance
+%of this module may can change it as appropriate.
+%
+%The new maintainer should add the line:
+%\begin{verbatim}
+% The Current Maintainer of this work is Name.
+%\end{verbatim}
+%to the preamble part in \texttt{datetime2-bulgarian.ins} where Name
+%is the name of the maintainer(s) and replace
+%the `inactive' status to `maintained'.
+%
+%Currently there is only a regionless style.
+%
+%\StopEventually{%
+%\clearpage
+%\phantomsection
+%\addcontentsline{toc}{section}{Change History}%
+%\PrintChanges
+%\addcontentsline{toc}{section}{\indexname}%
+%\PrintIndex}
+%\section{The Code}
+%\iffalse
+% \begin{macrocode}
+%<*datetime2-bulgarian-utf8.ldf>
+% \end{macrocode}
+%\fi
+%\subsection{UTF-8}
+%This file contains the settings that use UTF-8 characters. This
+%file is loaded if XeLaTeX or LuaLaTeX are used. Please make sure
+%your text editor is set to UTF-8 if you want to view this code.
+%\changes{1.0}{2015-03-29}{Initial release}
+% Identify module
+% \begin{macrocode}
+\ProvidesDateTimeModule{bulgarian-utf8}[2018/03/19 v1.1]
+% \end{macrocode}
+%\begin{macro}{\DTMbulgarianordinal}
+% \begin{macrocode}
+\newcommand*{\DTMbulgarianordinal}[1]{%
+ \number#1
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMbulgarianyear}
+% \begin{macrocode}
+\newcommand*{\DTMbulgarianyear}[1]{%
+ \number#1
+ \DTMtexorpdfstring{\protect~}{\space}Š³.%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%
+%\begin{macro}{\DTMbulgarianmonthname}
+% Bulgarian month names.
+% \begin{macrocode}
+\newcommand*{\DTMbulgarianmonthname}[1]{%
+ \ifcase#1
+ \or
+ яŠ½ŃƒŠ°Ń€Šø%
+ \or
+ фŠµŠ²Ń€ŃƒŠ°Ń€Šø%
+ \or
+ Š¼Š°Ń€Ń‚%
+ \or
+ Š°ŠæрŠøŠ»%
+ \or
+ Š¼Š°Š¹%
+ \or
+ юŠ½Šø%
+ \or
+ юŠ»Šø%
+ \or
+ Š°Š²Š³ŃƒŃŃ‚%
+ \or
+ сŠµŠæтŠµŠ¼Š²Ń€Šø%
+ \or
+ Š¾ŠŗтŠ¾Š¼Š²Ń€Šø%
+ \or
+ Š½Š¾ŠµŠ¼Š²Ń€Šø%
+ \or
+ Š“ŠµŠŗŠµŠ¼Š²Ń€Šø%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMbulgarianMonthname}
+% As above but capitalize.
+% \begin{macrocode}
+\newcommand*{\DTMbulgarianMonthname}[1]{%
+ \ifcase#1
+ \or
+ ŠÆŠ½ŃƒŠ°Ń€Šø%
+ \or
+ Š¤ŠµŠ²Ń€ŃƒŠ°Ń€Šø%
+ \or
+ ŠœŠ°Ń€Ń‚%
+ \or
+ ŠŠæрŠøŠ»%
+ \or
+ ŠœŠ°Š¹%
+ \or
+ Š®Š½Šø%
+ \or
+ Š®Š»Šø%
+ \or
+ ŠŠ²Š³ŃƒŃŃ‚%
+ \or
+ Š”ŠµŠæтŠµŠ¼Š²Ń€Šø%
+ \or
+ ŠžŠŗтŠ¾Š¼Š²Ń€Šø%
+ \or
+ ŠŠ¾ŠµŠ¼Š²Ń€Šø%
+ \or
+ Š”ŠµŠŗŠµŠ¼Š²Ń€Šø%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%If abbreviated dates are supported, short month names should be
+%likewise provided.
+%
+%\iffalse
+% \begin{macrocode}
+%</datetime2-bulgarian-utf8.ldf>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*datetime2-bulgarian-ascii.ldf>
+% \end{macrocode}
+%\fi
+%\subsection{ASCII}
+%This file contains the settings that use \LaTeX\ commands for
+%non-ASCII characters. This should be input if neither XeLaTeX nor
+%LuaLaTeX are used. Even if the user has loaded \sty{inputenc} with
+%"utf8", this file should still be used not the
+%\texttt{datetime2-bulgarian-utf8.ldf} file as the non-ASCII
+%characters are made active in that situation and would need
+%protecting against expansion.
+%\changes{1.0}{2015-03-29}{Initial release}
+% Identify module
+% \begin{macrocode}
+\ProvidesDateTimeModule{bulgarian-ascii}[2018/03/19 v1.1]
+% \end{macrocode}
+%
+%If abbreviated dates are supported, short month names should be
+%likewise provided.
+%\begin{macro}{\DTMbulgarianordinal}
+% \begin{macrocode}
+\newcommand*{\DTMbulgarianordinal}[1]{%
+ \number#1
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMbulgarianyear}
+% \begin{macrocode}
+\newcommand*{\DTMbulgarianyear}[1]{%
+ \number#1
+ \DTMtexorpdfstring{\protect~}{\space}\protect\cyrg.%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMbulgarianmonthname}
+% Bulgarian month names.
+% \begin{macrocode}
+\newcommand*{\DTMbulgarianmonthname}[1]{%
+ \ifcase#1
+ \or
+ \protect\cyrya\protect\cyrn\protect\cyru\protect\cyra\protect\cyrr
+ \protect\cyri
+ \or
+ \protect\cyrf\protect\cyre\protect\cyrv\protect\cyrr\protect\cyru
+ \protect\cyra\protect\cyrr\protect\cyri
+ \or
+ \protect\cyrm\protect\cyra\protect\cyrr\protect\cyrt
+ \or
+ \protect\cyra\protect\cyrp\protect\cyrr\protect\cyri\protect\cyrl
+ \or
+ \protect\cyrm\protect\cyra\protect\cyrishrt
+ \or
+ \protect\cyryu\protect\cyrn\protect\cyri
+ \or
+ \protect\cyryu\protect\cyrl\protect\cyri
+ \or
+ \protect\cyra\protect\cyrv\protect\cyrg\protect\cyru\protect\cyrs
+ \protect\cyrt
+ \or
+ \protect\cyrs\protect\cyre\protect\cyrp\protect\cyrt\protect\cyre
+ \protect\cyrm\protect\cyrv\protect\cyrr\protect\cyri
+ \or
+ \protect\cyro\protect\cyrk\protect\cyrt\protect\cyro\protect\cyrm
+ \protect\cyrv\protect\cyrr\protect\cyri
+ \or
+ \protect\cyrn\protect\cyro\protect\cyre\protect\cyrm\protect\cyrv
+ \protect\cyrr\protect\cyri
+ \or
+ \protect\cyrd\protect\cyre\protect\cyrk\protect\cyre\protect\cyrm
+ \protect\cyrv\protect\cyrr\protect\cyri
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMbulgarianMonthname}
+% As above but start with a capital.
+% \begin{macrocode}
+\newcommand*{\DTMbulgarianMonthname}[1]{%
+ \ifcase#1
+ \or
+ \protect\CYRYA\protect\cyrn\protect\cyru\protect\cyra\protect\cyrr
+ \protect\cyri
+ \or
+ \protect\CYRF\protect\cyre\protect\cyrv\protect\cyrr\protect\cyru
+ \protect\cyra\protect\cyrr\protect\cyri
+ \or
+ \protect\CYRM\protect\cyra\protect\cyrr\protect\cyrt
+ \or
+ \protect\CYRA\protect\cyrp\protect\cyrr\protect\cyri\protect\cyrl
+ \or
+ \protect\CYRM\protect\cyra\protect\cyrishrt
+ \or
+ \protect\CYRYU\protect\cyrn\protect\cyri
+ \or
+ \protect\CYRYU\protect\cyrl\protect\cyri
+ \or
+ \protect\CYRA\protect\cyrv\protect\cyrg\protect\cyru\protect\cyrs
+ \protect\cyrt
+ \or
+ \protect\CYRS\protect\cyre\protect\cyrp\protect\cyrt\protect\cyre
+ \protect\cyrm\protect\cyrv\protect\cyrr\protect\cyri
+ \or
+ \protect\CYRO\protect\cyrk\protect\cyrt\protect\cyro\protect\cyrm
+ \protect\cyrv\protect\cyrr\protect\cyri
+ \or
+ \protect\CYRN\protect\cyro\protect\cyre\protect\cyrm\protect\cyrv
+ \protect\cyrr\protect\cyri
+ \or
+ \protect\CYRD\protect\cyre\protect\cyrk\protect\cyre\protect\cyrm
+ \protect\cyrv\protect\cyrr\protect\cyri
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\iffalse
+% \begin{macrocode}
+%</datetime2-bulgarian-ascii.ldf>
+% \end{macrocode}
+%\fi
+%
+%\subsection{Main Bulgarian Module (\texttt{datetime2-bulgarian.ldf})}
+%\changes{1.0}{2015-03-29}{Initial release}
+%
+%\iffalse
+% \begin{macrocode}
+%<*datetime2-bulgarian.ldf>
+% \end{macrocode}
+%\fi
+%
+% Identify Module
+% \begin{macrocode}
+\ProvidesDateTimeModule{bulgarian}[2018/03/19 v1.1]
+% \end{macrocode}
+% Need to find out if XeTeX or LuaTeX are being used.
+% \begin{macrocode}
+\RequirePackage{ifxetex,ifluatex}
+% \end{macrocode}
+% XeTeX and LuaTeX natively support UTF-8, so load
+% \texttt{bulgarian-utf8} if either of those engines are used
+% otherwise load \texttt{bulgarian-ascii}.
+% \begin{macrocode}
+\ifxetex
+ \RequireDateTimeModule{bulgarian-utf8}
+\else
+ \ifluatex
+ \RequireDateTimeModule{bulgarian-utf8}
+ \else
+ \RequireDateTimeModule{bulgarian-ascii}
+ \fi
+\fi
+% \end{macrocode}
+%
+% Define the \texttt{bulgarian} style.
+% The time style is the same as the "default" style
+% provided by \sty{datetime2}. This may need correcting. For
+% example, if a 12 hour style similar to the "englishampm" (from the
+% "english-base" module) is required.
+%
+% Allow the user a way of configuring the "bulgarian" and
+% "bulgarian-numeric" styles. This doesn't use the package wide
+% separators such as
+% \cs{dtm@datetimesep} in case other date formats are also required.
+%\begin{macro}{\DTMbulgariandaymonthsep}
+% The separator between the day and month for the text format.
+% \begin{macrocode}
+\newcommand*{\DTMbulgariandaymonthsep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMbulgarianmonthyearsep}
+% The separator between the month and year for the text format.
+% \begin{macrocode}
+\newcommand*{\DTMbulgarianmonthyearsep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMbulgariandatetimesep}
+% The separator between the date and time blocks in the full format
+% (either text or numeric).
+% \begin{macrocode}
+\newcommand*{\DTMbulgariandatetimesep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMbulgariantimezonesep}
+% The separator between the time and zone blocks in the full format
+% (either text or numeric).
+% \begin{macrocode}
+\newcommand*{\DTMbulgariantimezonesep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMbulgariandatesep}
+% The separator for the numeric date format.
+% \begin{macrocode}
+\newcommand*{\DTMbulgariandatesep}{.}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMbulgariantimesep}
+% The separator for the numeric time format.
+% \begin{macrocode}
+\newcommand*{\DTMbulgariantimesep}{:}
+% \end{macrocode}
+%\end{macro}
+%
+%Provide keys that can be used in \cs{DTMlangsetup} to set these
+%separators.
+% \begin{macrocode}
+\DTMdefkey{bulgarian}{daymonthsep}{\renewcommand*{\DTMbulgariandaymonthsep}{#1}}
+\DTMdefkey{bulgarian}{monthyearsep}{\renewcommand*{\DTMbulgarianmonthyearsep}{#1}}
+\DTMdefkey{bulgarian}{datetimesep}{\renewcommand*{\DTMbulgariandatetimesep}{#1}}
+\DTMdefkey{bulgarian}{timezonesep}{\renewcommand*{\DTMbulgariantimezonesep}{#1}}
+\DTMdefkey{bulgarian}{datesep}{\renewcommand*{\DTMbulgariandatesep}{#1}}
+\DTMdefkey{bulgarian}{timesep}{\renewcommand*{\DTMbulgariantimesep}{#1}}
+% \end{macrocode}
+%
+% TODO: provide a boolean key to switch between full and abbreviated
+% formats if appropriate. (I don't know how the date should be
+% abbreviated.)
+%
+% Define a boolean key that determines if the time zone mappings
+% should be used.
+% \begin{macrocode}
+\DTMdefboolkey{bulgarian}{mapzone}[true]{}
+% \end{macrocode}
+% The default is to use mappings.
+% \begin{macrocode}
+\DTMsetbool{bulgarian}{mapzone}{true}
+% \end{macrocode}
+%
+% Define a boolean key that determines if the day of month should be
+% displayed.
+% \begin{macrocode}
+\DTMdefboolkey{bulgarian}{showdayofmonth}[true]{}
+% \end{macrocode}
+% The default is to show the day of month.
+% \begin{macrocode}
+\DTMsetbool{bulgarian}{showdayofmonth}{true}
+% \end{macrocode}
+%
+% Define a boolean key that determines if the year should be
+% displayed.
+% \begin{macrocode}
+\DTMdefboolkey{bulgarian}{showyear}[true]{}
+% \end{macrocode}
+% The default is to show the year.
+% \begin{macrocode}
+\DTMsetbool{bulgarian}{showyear}{true}
+% \end{macrocode}
+%
+% Define the "bulgarian" style. (TODO: implement day of week?)
+% \begin{macrocode}
+\DTMnewstyle
+ {bulgarian}% label
+ {% date style
+ \renewcommand*\DTMdisplaydate[4]{%
+ \DTMifbool{bulgarian}{showdayofmonth}
+ {\DTMbulgarianordinal{##3}\DTMbulgariandaymonthsep}%
+ {}%
+ \DTMbulgarianmonthname{##2}%
+ \DTMifbool{bulgarian}{showyear}%
+ {%
+ \DTMbulgarianmonthyearsep
+ \DTMbulgarianyear{##1}%
+ }%
+ {}%
+ }%
+ \renewcommand*\DTMDisplaydate[4]{%
+ \DTMifbool{bulgarian}{showdayofmonth}
+ {%
+ \DTMbulgarianordinal{##3}\DTMbulgariandaymonthsep
+ \DTMbulgarianmonthname{##2}%
+ }%
+ {%
+ \DTMbulgarianMonthname{##2}%
+ }%
+ \DTMifbool{bulgarian}{showyear}%
+ {%
+ \DTMbulgarianmonthyearsep
+ \DTMbulgarianyear{##1}%
+ }%
+ {}%
+ }%
+ }%
+ {% time style (use default)
+ \DTMsettimestyle{default}%
+ }%
+ {% zone style
+ \DTMresetzones
+ \DTMbulgarianzonemaps
+ \renewcommand*{\DTMdisplayzone}[2]{%
+ \DTMifbool{bulgarian}{mapzone}%
+ {\DTMusezonemapordefault{##1}{##2}}%
+ {%
+ \ifnum##1<0\else+\fi\DTMtwodigits{##1}%
+ \ifDTMshowzoneminutes\DTMbulgariantimesep\DTMtwodigits{##2}\fi
+ }%
+ }%
+ }%
+ {% full style
+ \renewcommand*{\DTMdisplay}[9]{%
+ \ifDTMshowdate
+ \DTMdisplaydate{##1}{##2}{##3}{##4}%
+ \DTMbulgariandatetimesep
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \DTMbulgariantimezonesep
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+ \renewcommand*{\DTMDisplay}[9]{%
+ \ifDTMshowdate
+ \DTMDisplaydate{##1}{##2}{##3}{##4}%
+ \DTMbulgariandatetimesep
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \DTMbulgariantimezonesep
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+ }%
+% \end{macrocode}
+%
+% Define numeric style.
+% \begin{macrocode}
+\DTMnewstyle
+ {bulgarian-numeric}% label
+ {% date style
+ \renewcommand*\DTMdisplaydate[4]{%
+ \DTMifbool{bulgarian}{showdayofmonth}%
+ {%
+ \number##3 % space intended
+ \DTMbulgariandatesep
+ }%
+ {}%
+ \number##2 % space intended
+ \DTMifbool{bulgarian}{showyear}%
+ {%
+ \DTMbulgariandatesep
+ \number##1 % space intended
+ }%
+ {}%
+ }%
+ \renewcommand*{\DTMDisplaydate}[4]{\DTMdisplaydate{##1}{##2}{##3}{##4}}%
+ }%
+ {% time style
+ \renewcommand*\DTMdisplaytime[3]{%
+ \number##1
+ \DTMbulgariantimesep\DTMtwodigits{##2}%
+ \ifDTMshowseconds\DTMbulgariantimesep\DTMtwodigits{##3}\fi
+ }%
+ }%
+ {% zone style
+ \DTMresetzones
+ \DTMbulgarianzonemaps
+ \renewcommand*{\DTMdisplayzone}[2]{%
+ \DTMifbool{bulgarian}{mapzone}%
+ {\DTMusezonemapordefault{##1}{##2}}%
+ {%
+ \ifnum##1<0\else+\fi\DTMtwodigits{##1}%
+ \ifDTMshowzoneminutes\DTMbulgariantimesep\DTMtwodigits{##2}\fi
+ }%
+ }%
+ }%
+ {% full style
+ \renewcommand*{\DTMdisplay}[9]{%
+ \ifDTMshowdate
+ \DTMdisplaydate{##1}{##2}{##3}{##4}%
+ \DTMbulgariandatetimesep
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \DTMbulgariantimezonesep
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+ \renewcommand*{\DTMDisplay}{\DTMdisplay}%
+ }
+% \end{macrocode}
+%
+%\begin{macro}{\DTMbulgarianzonemaps}
+% The time zone mappings are set through this command, which can be
+% redefined if extra mappings are required or mappings need to be
+% removed.
+% \begin{macrocode}
+\newcommand*{\DTMbulgarianzonemaps}{%
+ \DTMdefzonemap{02}{00}{EET}%
+ \DTMdefzonemap{03}{00}{EEST}%
+}
+% \end{macrocode}
+%\end{macro}
+
+% Switch style according to the \opt{useregional} setting.
+% \begin{macrocode}
+\DTMifcaseregional
+{}% do nothing
+{\DTMsetstyle{bulgarian}}
+{\DTMsetstyle{bulgarian-numeric}}
+% \end{macrocode}
+%
+% Redefine \cs{datebulgarian} (or \cs{date}\meta{dialect}) to prevent
+% \sty{babel} from resetting \cs{today}. (For this to work,
+% \sty{babel} must already have been loaded if it's required.)
+%\changes{1.1}{2018-03-19}{removed spurious space}
+% \begin{macrocode}
+\ifcsundef{date\CurrentTrackedDialect}
+{%
+ \ifundef\datebulgarian
+ {% do nothing
+ }%
+ {%
+ \def\datebulgarian{%
+ \DTMifcaseregional
+ {}% do nothing
+ {\DTMsetstyle{bulgarian}}%
+ {\DTMsetstyle{bulgarian-numeric}}%
+ }%
+ }%
+}%
+{%
+ \csdef{date\CurrentTrackedDialect}{%
+ \DTMifcaseregional
+ {}% do nothing
+ {\DTMsetstyle{bulgarian}}%
+ {\DTMsetstyle{bulgarian-numeric}}%
+ }%
+}%
+% \end{macrocode}
+%\iffalse
+% \begin{macrocode}
+%</datetime2-bulgarian.ldf>
+% \end{macrocode}
+%\fi
+%\Finale
+\endinput
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-bulgarian/datetime2-bulgarian.ins b/macros/latex/contrib/datetime2-contrib/datetime2-bulgarian/datetime2-bulgarian.ins
new file mode 100644
index 0000000000..1077a2dc83
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-bulgarian/datetime2-bulgarian.ins
@@ -0,0 +1,61 @@
+\input docstrip
+
+\preamble
+
+ datetime2-bulgarian.dtx
+ Copyright 2018 Nicola Talbot
+
+ This work may be distributed and/or modified under the
+ conditions of the LaTeX Project Public License, either version 1.3
+ of this license of (at your option) any later version.
+ The latest version of this license is in
+ http://www.latex-project.org/lppl.txt
+ and version 1.3 or later is part of all distributions of LaTeX
+ version 2005/12/01 or later.
+
+ This work has the LPPL maintenance status `inactive'.
+
+ This work consists of the files datetime2-bulgarian.dtx and
+ datetime2-bulgarian.ins and the derived files
+ datetime2-bulgarian-utf8.ldf, datetime2-bulgarian-ascii.ldf and
+ datetime2-bulgarian.ldf.
+
+\endpreamble
+
+\askforoverwritefalse
+
+\generate
+{%
+ \file
+ {datetime2-bulgarian-utf8.ldf}%
+ {%
+ \usepreamble\defaultpreamble
+ \usepostamble\defaultpostamble
+ \from{datetime2-bulgarian.dtx}{datetime2-bulgarian-utf8.ldf,package}%
+ }%
+}
+
+\generate
+{%
+ \file
+ {datetime2-bulgarian-ascii.ldf}%
+ {%
+ \usepreamble\defaultpreamble
+ \usepostamble\defaultpostamble
+ \from{datetime2-bulgarian.dtx}{datetime2-bulgarian-ascii.ldf,package}%
+ }%
+}
+
+\generate
+{%
+ \file
+ {datetime2-bulgarian.ldf}%
+ {%
+ \usepreamble\defaultpreamble
+ \usepostamble\defaultpostamble
+ \from{datetime2-bulgarian.dtx}{datetime2-bulgarian.ldf,package}%
+ }%
+}
+
+\endbatchfile
+
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-bulgarian/datetime2-bulgarian.pdf b/macros/latex/contrib/datetime2-contrib/datetime2-bulgarian/datetime2-bulgarian.pdf
new file mode 100644
index 0000000000..2b252d944c
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-bulgarian/datetime2-bulgarian.pdf
Binary files differ
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-catalan/README b/macros/latex/contrib/datetime2-contrib/datetime2-catalan/README
new file mode 100644
index 0000000000..ebd2936c69
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-catalan/README
@@ -0,0 +1,57 @@
+Catalan Language Module for datetime2 Package
+
+Author: Nicola L. C. Talbot (inactive)
+
+Licence: LPPL
+
+Required Packages: datetime2, tracklang
+
+This module is unmaintained. If you want to volunteer to take over
+the maintenance contact me at www.dickimaw-books.com/contact.html
+
+Example usage:
+
+\documentclass{article}
+\usepackage[catalan]{datetime2}
+\begin{document}
+\today
+\end{document}
+
+\documentclass[catalan]{article}
+\usepackage{babel}
+\usepackage[useregional]{datetime2}
+\begin{document}
+\today
+\end{document}
+
+\documentclass{article}
+\usepackage{polyglossia}
+\setmainlanguage{catalan}
+\usepackage[catalan]{datetime2}
+\begin{document}
+\today
+\end{document}
+
+INSTALLATION
+============
+
+latex datetime2-catalan.ins
+
+Move all *.ldf files to
+TEXMF/tex/latex/datetime2-contrib/datetime2-catalan/
+
+Documentation:
+
+pdflatex datetime2-catalan.dtx
+makeindex -s gind.ist datetime2-catalan.idx
+makeindex -s gglo.ist -o datetime2-catalan.gls datetime2-catalan.glo
+pdflatex datetime2-catalan.dtx
+pdflatex datetime2-catalan.dtx
+
+Move datetime2-catalan.pdf and README to
+TEXMF/doc/latex/datetime2-contrib/datetime2-catalan/
+
+This material is subject to the LaTeX Project Public License.
+See http://www.ctan.org/license/lppl1.3 for the details of that
+license.
+
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-catalan/datetime2-catalan.dtx b/macros/latex/contrib/datetime2-contrib/datetime2-catalan/datetime2-catalan.dtx
new file mode 100644
index 0000000000..e3ef920459
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-catalan/datetime2-catalan.dtx
@@ -0,0 +1,628 @@
+%\iffalse
+%<*package>
+%% \CharacterTable
+%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+%% Digits \0\1\2\3\4\5\6\7\8\9
+%% Exclamation \! Double quote \" Hash (number) \#
+%% Dollar \$ Percent \% Ampersand \&
+%% Acute accent \' Left paren \( Right paren \)
+%% Asterisk \* Plus \+ Comma \,
+%% Minus \- Point \. Solidus \/
+%% Colon \: Semicolon \; Less than \<
+%% Equals \= Greater than \> Question mark \?
+%% Commercial at \@ Left bracket \[ Backslash \\
+%% Right bracket \] Circumflex \^ Underscore \_
+%% Grave accent \` Left brace \{ Vertical bar \|
+%% Right brace \} Tilde \~}
+%</package>
+%\fi
+% \iffalse
+% Doc-Source file to use with LaTeX2e
+% Copyright (C) 2018 Nicola Talbot, all rights reserved.
+% (New maintainer add relevant lines here.)
+% \fi
+% \iffalse
+%<*driver>
+\documentclass{ltxdoc}
+
+\usepackage{alltt}
+\usepackage{graphicx}
+\usepackage[utf8]{inputenc}
+\usepackage[T1]{fontenc}
+\usepackage[colorlinks,
+ bookmarks,
+ hyperindex=false,
+ pdfauthor={Nicola L.C. Talbot},
+ pdftitle={datetime2.sty Catalan Module}]{hyperref}
+
+
+\CheckSum{258}
+
+\renewcommand*{\usage}[1]{\hyperpage{#1}}
+\renewcommand*{\main}[1]{\hyperpage{#1}}
+\IndexPrologue{\section*{\indexname}\markboth{\indexname}{\indexname}}
+\setcounter{IndexColumns}{2}
+
+\newcommand*{\sty}[1]{\textsf{#1}}
+\newcommand*{\opt}[1]{\texttt{#1}\index{#1=\texttt{#1}|main}}
+
+\RecordChanges
+\PageIndex
+\CodelineNumbered
+
+\begin{document}
+\DocInput{datetime2-catalan.dtx}
+\end{document}
+%</driver>
+%\fi
+%
+%\MakeShortVerb{"}
+%
+%\title{Catalan Module for datetime2 Package}
+%\author{Nicola L. C. Talbot (inactive)}
+%\date{2018-03-19 (v1.1)}
+%\maketitle
+%
+%This module is currently unmaintained and may be subject to change.
+%If you want to volunteer to take over maintanance, contact me at
+%\url{http://www.dickimaw-books.com/contact.html}
+%
+%\begin{abstract}
+%This is the Catalan language module for the \sty{datetime2}
+%package. If you want to use the settings in this module you must
+%install it in addition to installing \sty{datetime2}. If you use
+%\sty{babel} or \sty{polyglossia}, you will need this module to
+%prevent them from redefining \cs{today}. The \sty{datetime2}
+% \opt{useregional} setting must be set to "text" or "numeric"
+% for the language styles to be set.
+% Alternatively, you can set the style in the document using
+% \cs{DTMsetstyle}, but this may be changed by \cs{date}\meta{language}
+% depending on the value of the \opt{useregional} setting.
+%\end{abstract}
+%
+%I've copied the date style from \texttt{babel-catalan}'s \cs{today}.
+%
+%I don't know if these settings are correct as I can't speak Catalan.
+%In particular, I don't know if the "catalan" time style is
+%correct. Currently this just uses the "default" time style. Please
+%be aware that this may change. Whoever takes over maintanance
+%of this module may can change it as appropriate.
+%
+%The new maintainer should add the line:
+%\begin{verbatim}
+% The Current Maintainer of this work is Name.
+%\end{verbatim}
+%to the preamble part in \texttt{datetime2-catalan.ins} where Name
+%is the name of the maintainer(s) and replace
+%the `inactive' status to `maintained'.
+%
+%Currently there is only a regionless style.
+%
+%\StopEventually{%
+%\clearpage
+%\phantomsection
+%\addcontentsline{toc}{section}{Change History}%
+%\PrintChanges
+%\addcontentsline{toc}{section}{\indexname}%
+%\PrintIndex}
+%\section{The Code}
+%\iffalse
+% \begin{macrocode}
+%<*datetime2-catalan-utf8.ldf>
+% \end{macrocode}
+%\fi
+%\subsection{UTF-8}
+%This file contains the settings that use UTF-8 characters. This
+%file is loaded if XeLaTeX or LuaLaTeX are used. Please make sure
+%your text editor is set to UTF-8 if you want to view this code.
+%\changes{1.0}{2015-03-29}{Initial release}
+% Identify module
+% \begin{macrocode}
+\ProvidesDateTimeModule{catalan-utf8}[2018/03/19 v1.1]
+% \end{macrocode}
+%\begin{macro}{\DTMcatalanordinal}
+% \begin{macrocode}
+\newcommand*{\DTMcatalanordinal}[1]{%
+ \number#1
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMcatalanmonthname}
+% Catalan month names.
+% \begin{macrocode}
+\newcommand*{\DTMcatalanmonthname}[1]{%
+ \ifcase#1
+ \or
+ de gener%
+ \or
+ de febrer%
+ \or
+ de marƧ%
+ \or
+ d'abril%
+ \or
+ de maig%
+ \or
+ de juny%
+ \or
+ de juliol%
+ \or
+ d'agost%
+ \or
+ de setembre%
+ \or
+ d'octubre%
+ \or
+ de novembre%
+ \or
+ de desembre%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMcatalanMonthname}
+% As above but start with a capital.
+% \begin{macrocode}
+\newcommand*{\DTMcatalanMonthname}[1]{%
+ \ifcase#1
+ \or
+ De gener%
+ \or
+ De febrer%
+ \or
+ De marƧ%
+ \or
+ D'abril%
+ \or
+ De maig%
+ \or
+ De juny%
+ \or
+ De juliol%
+ \or
+ D'agost%
+ \or
+ De setembre%
+ \or
+ D'octubre%
+ \or
+ De novembre%
+ \or
+ De desembre%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%If abbreviated dates are supported, short month names should be
+%likewise provided.
+%
+%\iffalse
+% \begin{macrocode}
+%</datetime2-catalan-utf8.ldf>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*datetime2-catalan-ascii.ldf>
+% \end{macrocode}
+%\fi
+%\subsection{ASCII}
+%This file contains the settings that use \LaTeX\ commands for
+%non-ASCII characters. This should be input if neither XeLaTeX nor
+%LuaLaTeX are used. Even if the user has loaded \sty{inputenc} with
+%"utf8", this file should still be used not the
+%\texttt{datetime2-catalan-utf8.ldf} file as the non-ASCII
+%characters are made active in that situation and would need
+%protecting against expansion.
+%\changes{1.0}{2015-03-29}{Initial release}
+% Identify module
+% \begin{macrocode}
+\ProvidesDateTimeModule{catalan-ascii}[2018/03/19 v1.1]
+% \end{macrocode}
+%
+%If abbreviated dates are supported, short month names should be
+%likewise provided.
+%\begin{macro}{\DTMcatalanordinal}
+% \begin{macrocode}
+\newcommand*{\DTMcatalanordinal}[1]{%
+ \number#1
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMcatalanmonthname}
+% Catalan month names.
+% \begin{macrocode}
+\newcommand*{\DTMcatalanmonthname}[1]{%
+ \ifcase#1
+ \or
+ de gener%
+ \or
+ de febrer%
+ \or
+ de mar\protect\c{c}%
+ \or
+ d'abril%
+ \or
+ de maig%
+ \or
+ de juny%
+ \or
+ de juliol%
+ \or
+ d'agost%
+ \or
+ de setembre%
+ \or
+ d'octubre%
+ \or
+ de novembre%
+ \or
+ de desembre%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMcatalanMonthname}
+% As above but start with a capital.
+% \begin{macrocode}
+\newcommand*{\DTMcatalanMonthname}[1]{%
+ \ifcase#1
+ \or
+ De gener%
+ \or
+ De febrer%
+ \or
+ De mar\protect\c{c}%
+ \or
+ D'abril%
+ \or
+ De maig%
+ \or
+ De juny%
+ \or
+ De juliol%
+ \or
+ D'agost%
+ \or
+ De setembre%
+ \or
+ D'octubre%
+ \or
+ De novembre%
+ \or
+ De desembre%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%
+%\iffalse
+% \begin{macrocode}
+%</datetime2-catalan-ascii.ldf>
+% \end{macrocode}
+%\fi
+%
+%\subsection{Main Catalan Module (\texttt{datetime2-catalan.ldf})}
+%\changes{1.0}{2015-03-29}{Initial release}
+%
+%\iffalse
+% \begin{macrocode}
+%<*datetime2-catalan.ldf>
+% \end{macrocode}
+%\fi
+%
+% Identify Module
+% \begin{macrocode}
+\ProvidesDateTimeModule{catalan}[2018/03/19 v1.1]
+% \end{macrocode}
+% Need to find out if XeTeX or LuaTeX are being used.
+% \begin{macrocode}
+\RequirePackage{ifxetex,ifluatex}
+% \end{macrocode}
+% XeTeX and LuaTeX natively support UTF-8, so load
+% \texttt{catalan-utf8} if either of those engines are used
+% otherwise load \texttt{catalan-ascii}.
+% \begin{macrocode}
+\ifxetex
+ \RequireDateTimeModule{catalan-utf8}
+\else
+ \ifluatex
+ \RequireDateTimeModule{catalan-utf8}
+ \else
+ \RequireDateTimeModule{catalan-ascii}
+ \fi
+\fi
+% \end{macrocode}
+%
+% Define the \texttt{catalan} style.
+% The time style is the same as the "default" style
+% provided by \sty{datetime2}. This may need correcting. For
+% example, if a 12 hour style similar to the "englishampm" (from the
+% "english-base" module) is required.
+%
+% Allow the user a way of configuring the "catalan" and
+% "catalan-numeric" styles. This doesn't use the package wide
+% separators such as
+% \cs{dtm@datetimesep} in case other date formats are also required.
+%\begin{macro}{\DTMcatalandaymonthsep}
+% The separator between the day and month for the text format.
+% \begin{macrocode}
+\newcommand*{\DTMcatalandaymonthsep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMcatalanmonthyearsep}
+% The separator between the month and year for the text format.
+% \begin{macrocode}
+\newcommand*{\DTMcatalanmonthyearsep}{%
+ \space de\DTMtexorpdfstring{\protect~}{\space}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMcatalandatetimesep}
+% The separator between the date and time blocks in the full format
+% (either text or numeric).
+% \begin{macrocode}
+\newcommand*{\DTMcatalandatetimesep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMcatalantimezonesep}
+% The separator between the time and zone blocks in the full format
+% (either text or numeric).
+% \begin{macrocode}
+\newcommand*{\DTMcatalantimezonesep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMcatalandatesep}
+% The separator for the numeric date format.
+% \begin{macrocode}
+\newcommand*{\DTMcatalandatesep}{/}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMcatalantimesep}
+% The separator for the numeric time format.
+% \begin{macrocode}
+\newcommand*{\DTMcatalantimesep}{:}
+% \end{macrocode}
+%\end{macro}
+%
+%Provide keys that can be used in \cs{DTMlangsetup} to set these
+%separators.
+% \begin{macrocode}
+\DTMdefkey{catalan}{daymonthsep}{\renewcommand*{\DTMcatalandaymonthsep}{#1}}
+\DTMdefkey{catalan}{monthyearsep}{\renewcommand*{\DTMcatalanmonthyearsep}{#1}}
+\DTMdefkey{catalan}{datetimesep}{\renewcommand*{\DTMcatalandatetimesep}{#1}}
+\DTMdefkey{catalan}{timezonesep}{\renewcommand*{\DTMcatalantimezonesep}{#1}}
+\DTMdefkey{catalan}{datesep}{\renewcommand*{\DTMcatalandatesep}{#1}}
+\DTMdefkey{catalan}{timesep}{\renewcommand*{\DTMcatalantimesep}{#1}}
+% \end{macrocode}
+%
+% TODO: provide a boolean key to switch between full and abbreviated
+% formats if appropriate. (I don't know how the date should be
+% abbreviated.)
+%
+% Define a boolean key that determines if the time zone mappings
+% should be used.
+% \begin{macrocode}
+\DTMdefboolkey{catalan}{mapzone}[true]{}
+% \end{macrocode}
+% The default is to use mappings.
+% \begin{macrocode}
+\DTMsetbool{catalan}{mapzone}{true}
+% \end{macrocode}
+%
+% Define a boolean key that determines if the day of month should be
+% displayed.
+% \begin{macrocode}
+\DTMdefboolkey{catalan}{showdayofmonth}[true]{}
+% \end{macrocode}
+% The default is to show the day of month.
+% \begin{macrocode}
+\DTMsetbool{catalan}{showdayofmonth}{true}
+% \end{macrocode}
+%
+% Define a boolean key that determines if the year should be
+% displayed.
+% \begin{macrocode}
+\DTMdefboolkey{catalan}{showyear}[true]{}
+% \end{macrocode}
+% The default is to show the year.
+% \begin{macrocode}
+\DTMsetbool{catalan}{showyear}{true}
+% \end{macrocode}
+%
+% Define the "catalan" style. (TODO: implement day of week?)
+% \begin{macrocode}
+\DTMnewstyle
+ {catalan}% label
+ {% date style
+ \renewcommand*\DTMdisplaydate[4]{%
+ \DTMifbool{catalan}{showdayofmonth}
+ {\DTMcatalanordinal{##3}\DTMcatalandaymonthsep}%
+ {}%
+ \DTMcatalanmonthname{##2}%
+ \DTMifbool{catalan}{showyear}%
+ {%
+ \DTMcatalanmonthyearsep
+ \number##1 % space intended
+ }%
+ {}%
+ }%
+ \renewcommand*\DTMDisplaydate[4]{%
+ \DTMifbool{catalan}{showdayofmonth}
+ {%
+ \DTMcatalanordinal{##3}\DTMcatalandaymonthsep
+ \DTMcatalanmonthname{##2}%
+ }%
+ {\DTMcatalanMonthname{##2}}%
+ \DTMifbool{catalan}{showyear}%
+ {%
+ \DTMcatalanmonthyearsep
+ \number##1 % space intended
+ }%
+ {}%
+ }%
+ }%
+ {% time style (use default)
+ \DTMsettimestyle{default}%
+ }%
+ {% zone style
+ \DTMresetzones
+ \DTMcatalanzonemaps
+ \renewcommand*{\DTMdisplayzone}[2]{%
+ \DTMifbool{catalan}{mapzone}%
+ {\DTMusezonemapordefault{##1}{##2}}%
+ {%
+ \ifnum##1<0\else+\fi\DTMtwodigits{##1}%
+ \ifDTMshowzoneminutes\DTMcatalantimesep\DTMtwodigits{##2}\fi
+ }%
+ }%
+ }%
+ {% full style
+ \renewcommand*{\DTMdisplay}[9]{%
+ \ifDTMshowdate
+ \DTMdisplaydate{##1}{##2}{##3}{##4}%
+ \DTMcatalandatetimesep
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \DTMcatalantimezonesep
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+ \renewcommand*{\DTMDisplay}[9]{%
+ \ifDTMshowdate
+ \DTMDisplaydate{##1}{##2}{##3}{##4}%
+ \DTMcatalandatetimesep
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \DTMcatalantimezonesep
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+ }%
+% \end{macrocode}
+%
+% Define numeric style.
+% \begin{macrocode}
+\DTMnewstyle
+ {catalan-numeric}% label
+ {% date style
+ \renewcommand*\DTMdisplaydate[4]{%
+ \DTMifbool{catalan}{showdayofmonth}%
+ {%
+ \number##3 % space intended
+ \DTMcatalandatesep
+ }%
+ {}%
+ \number##2 % space intended
+ \DTMifbool{catalan}{showyear}%
+ {%
+ \DTMcatalandatesep
+ \number##1 % space intended
+ }%
+ {}%
+ }%
+ \renewcommand*{\DTMDisplaydate}[4]{\DTMdisplaydate{##1}{##2}{##3}{##4}}%
+ }%
+ {% time style
+ \renewcommand*\DTMdisplaytime[3]{%
+ \number##1
+ \DTMcatalantimesep\DTMtwodigits{##2}%
+ \ifDTMshowseconds\DTMcatalantimesep\DTMtwodigits{##3}\fi
+ }%
+ }%
+ {% zone style
+ \DTMresetzones
+ \DTMcatalanzonemaps
+ \renewcommand*{\DTMdisplayzone}[2]{%
+ \DTMifbool{catalan}{mapzone}%
+ {\DTMusezonemapordefault{##1}{##2}}%
+ {%
+ \ifnum##1<0\else+\fi\DTMtwodigits{##1}%
+ \ifDTMshowzoneminutes\DTMcatalantimesep\DTMtwodigits{##2}\fi
+ }%
+ }%
+ }%
+ {% full style
+ \renewcommand*{\DTMdisplay}[9]{%
+ \ifDTMshowdate
+ \DTMdisplaydate{##1}{##2}{##3}{##4}%
+ \DTMcatalandatetimesep
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \DTMcatalantimezonesep
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+ \renewcommand*{\DTMDisplay}{\DTMdisplay}%
+ }
+% \end{macrocode}
+%
+%\begin{macro}{\DTMcatalanzonemaps}
+% The time zone mappings are set through this command, which can be
+% redefined if extra mappings are required or mappings need to be
+% removed.
+% \begin{macrocode}
+\newcommand*{\DTMcatalanzonemaps}{%
+ \DTMdefzonemap{01}{00}{CET}%
+ \DTMdefzonemap{02}{00}{CEST}%
+}
+% \end{macrocode}
+%\end{macro}
+
+% Switch style according to the \opt{useregional} setting.
+% \begin{macrocode}
+\DTMifcaseregional
+{}% do nothing
+{\DTMsetstyle{catalan}}
+{\DTMsetstyle{catalan-numeric}}
+% \end{macrocode}
+%
+% Redefine \cs{datecatalan} (or \cs{date}\meta{dialect}) to prevent
+% \sty{babel} from resetting \cs{today}. (For this to work,
+% \sty{babel} must already have been loaded if it's required.)
+%\changes{1.1}{2018-03-19}{removed spurious space}
+% \begin{macrocode}
+\ifcsundef{date\CurrentTrackedDialect}
+{%
+ \ifundef\datecatalan
+ {% do nothing
+ }%
+ {%
+ \def\datecatalan{%
+ \DTMifcaseregional
+ {}% do nothing
+ {\DTMsetstyle{catalan}}%
+ {\DTMsetstyle{catalan-numeric}}%
+ }%
+ }%
+}%
+{%
+ \csdef{date\CurrentTrackedDialect}{%
+ \DTMifcaseregional
+ {}% do nothing
+ {\DTMsetstyle{catalan}}%
+ {\DTMsetstyle{catalan-numeric}}%
+ }%
+}%
+% \end{macrocode}
+%\iffalse
+% \begin{macrocode}
+%</datetime2-catalan.ldf>
+% \end{macrocode}
+%\fi
+%\Finale
+\endinput
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-catalan/datetime2-catalan.ins b/macros/latex/contrib/datetime2-contrib/datetime2-catalan/datetime2-catalan.ins
new file mode 100644
index 0000000000..379682e5b3
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-catalan/datetime2-catalan.ins
@@ -0,0 +1,61 @@
+\input docstrip
+
+\preamble
+
+ datetime2-catalan.dtx
+ Copyright 2018 Nicola Talbot
+
+ This work may be distributed and/or modified under the
+ conditions of the LaTeX Project Public License, either version 1.3
+ of this license of (at your option) any later version.
+ The latest version of this license is in
+ http://www.latex-project.org/lppl.txt
+ and version 1.3 or later is part of all distributions of LaTeX
+ version 2005/12/01 or later.
+
+ This work has the LPPL maintenance status `inactive'.
+
+ This work consists of the files datetime2-catalan.dtx and
+ datetime2-catalan.ins and the derived files
+ datetime2-catalan-utf8.ldf, datetime2-catalan-ascii.ldf and
+ datetime2-catalan.ldf.
+
+\endpreamble
+
+\askforoverwritefalse
+
+\generate
+{%
+ \file
+ {datetime2-catalan-utf8.ldf}%
+ {%
+ \usepreamble\defaultpreamble
+ \usepostamble\defaultpostamble
+ \from{datetime2-catalan.dtx}{datetime2-catalan-utf8.ldf,package}%
+ }%
+}
+
+\generate
+{%
+ \file
+ {datetime2-catalan-ascii.ldf}%
+ {%
+ \usepreamble\defaultpreamble
+ \usepostamble\defaultpostamble
+ \from{datetime2-catalan.dtx}{datetime2-catalan-ascii.ldf,package}%
+ }%
+}
+
+\generate
+{%
+ \file
+ {datetime2-catalan.ldf}%
+ {%
+ \usepreamble\defaultpreamble
+ \usepostamble\defaultpostamble
+ \from{datetime2-catalan.dtx}{datetime2-catalan.ldf,package}%
+ }%
+}
+
+\endbatchfile
+
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-catalan/datetime2-catalan.pdf b/macros/latex/contrib/datetime2-contrib/datetime2-catalan/datetime2-catalan.pdf
new file mode 100644
index 0000000000..bded077c14
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-catalan/datetime2-catalan.pdf
Binary files differ
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-croatian/README b/macros/latex/contrib/datetime2-contrib/datetime2-croatian/README
new file mode 100644
index 0000000000..458bd172b3
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-croatian/README
@@ -0,0 +1,57 @@
+Croatian Language Module for datetime2 Package
+
+Author: Nicola L. C. Talbot (inactive)
+
+Licence: LPPL
+
+Required Packages: datetime2, tracklang
+
+This module is unmaintained. If you want to volunteer to take over
+the maintenance contact me at www.dickimaw-books.com/contact.html
+
+Example usage:
+
+\documentclass{article}
+\usepackage[croatian]{datetime2}
+\begin{document}
+\today
+\end{document}
+
+\documentclass[croatian]{article}
+\usepackage{babel}
+\usepackage[useregional]{datetime2}
+\begin{document}
+\today
+\end{document}
+
+\documentclass{article}
+\usepackage{polyglossia}
+\setmainlanguage{croatian}
+\usepackage[croatian]{datetime2}
+\begin{document}
+\today
+\end{document}
+
+INSTALLATION
+============
+
+xelatex datetime2-croatian.ins
+
+Move all *.ldf files to
+TEXMF/tex/latex/datetime2-contrib/datetime2-croatian/
+
+Documentation:
+
+xelatex datetime2-croatian.dtx
+makeindex -s gind.ist datetime2-croatian.idx
+makeindex -s gglo.ist -o datetime2-croatian.gls datetime2-croatian.glo
+xelatex datetime2-croatian.dtx
+xelatex datetime2-croatian.dtx
+
+Move datetime2-croatian.pdf and README to
+TEXMF/doc/latex/datetime2-contrib/datetime2-croatian/
+
+This material is subject to the LaTeX Project Public License.
+See http://www.ctan.org/license/lppl1.3 for the details of that
+license.
+
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-croatian/datetime2-croatian.dtx b/macros/latex/contrib/datetime2-contrib/datetime2-croatian/datetime2-croatian.dtx
new file mode 100644
index 0000000000..7aba69614c
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-croatian/datetime2-croatian.dtx
@@ -0,0 +1,830 @@
+%\iffalse
+%<*package>
+%% \CharacterTable
+%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+%% Digits \0\1\2\3\4\5\6\7\8\9
+%% Exclamation \! Double quote \" Hash (number) \#
+%% Dollar \$ Percent \% Ampersand \&
+%% Acute accent \' Left paren \( Right paren \)
+%% Asterisk \* Plus \+ Comma \,
+%% Minus \- Point \. Solidus \/
+%% Colon \: Semicolon \; Less than \<
+%% Equals \= Greater than \> Question mark \?
+%% Commercial at \@ Left bracket \[ Backslash \\
+%% Right bracket \] Circumflex \^ Underscore \_
+%% Grave accent \` Left brace \{ Vertical bar \|
+%% Right brace \} Tilde \~}
+%</package>
+%\fi
+% \iffalse
+% Doc-Source file to use with LaTeX2e
+% Copyright (C) 2015 Nicola Talbot, all rights reserved.
+% (New maintainer add relevant lines here.)
+% \fi
+% \iffalse
+%<*driver>
+\documentclass{ltxdoc}
+
+\usepackage{alltt}
+\usepackage{graphicx}
+\usepackage{fontspec}
+\usepackage[colorlinks,
+ bookmarks,
+ hyperindex=false,
+ pdfauthor={Nicola L.C. Talbot},
+ pdftitle={datetime2.sty Croatian Module}]{hyperref}
+
+\setmainfont{Liberation Serif}
+\setmonofont{Liberation Mono}
+
+\CheckSum{359}
+
+\renewcommand*{\usage}[1]{\hyperpage{#1}}
+\renewcommand*{\main}[1]{\hyperpage{#1}}
+\IndexPrologue{\section*{\indexname}\markboth{\indexname}{\indexname}}
+\setcounter{IndexColumns}{2}
+
+\newcommand*{\sty}[1]{\textsf{#1}}
+\newcommand*{\opt}[1]{\texttt{#1}\index{#1=\texttt{#1}|main}}
+
+\RecordChanges
+\PageIndex
+\CodelineNumbered
+
+\begin{document}
+\DocInput{datetime2-croatian.dtx}
+\end{document}
+%</driver>
+%\fi
+%
+%\MakeShortVerb{"}
+%
+%\title{Croatian Module for datetime2 Package}
+%\author{Nicola L. C. Talbot (inactive)}
+%\date{2015-03-30 (v1.0)}
+%\maketitle
+%
+%This module is currently unmaintained and may be subject to change.
+%If you want to volunteer to take over maintanance, contact me at
+%\url{http://www.dickimaw-books.com/contact.html}
+%
+%\begin{abstract}
+%This is the Croatian language module for the \sty{datetime2}
+%package. If you want to use the settings in this module you must
+%install it in addition to installing \sty{datetime2}. If you use
+%\sty{babel} or \sty{polyglossia}, you will need this module to
+%prevent them from redefining \cs{today}. The \sty{datetime2}
+% \opt{useregional} setting must be set to "text" or "numeric"
+% for the language styles to be set.
+% Alternatively, you can set the style in the document using
+% \cs{DTMsetstyle}, but this may be changed by \cs{date}\meta{language}
+% depending on the value of the \opt{useregional} setting.
+%\end{abstract}
+%
+%I've copied the date style from \texttt{babel-croatian}'s \cs{today}.
+%
+%I don't know if these settings are correct as I can't speak Croatian.
+%In particular, I don't know if the "croatian" time style is
+%correct. Currently this just uses the "default" time style. Please
+%be aware that this may change. Whoever takes over maintanance
+%of this module may can change it as appropriate.
+%
+%The new maintainer should add the line:
+%\begin{verbatim}
+% The Current Maintainer of this work is Name.
+%\end{verbatim}
+%to the preamble part in \texttt{datetime2-croatian.ins} where Name
+%is the name of the maintainer(s) and replace
+%the `inactive' status to `maintained'.
+%
+%Currently there is only a regionless style.
+%
+%\StopEventually{%
+%\clearpage
+%\phantomsection
+%\addcontentsline{toc}{section}{Change History}%
+%\PrintChanges
+%\addcontentsline{toc}{section}{\indexname}%
+%\PrintIndex}
+%\section{The Code}
+%\iffalse
+% \begin{macrocode}
+%<*datetime2-croatian-utf8.ldf>
+% \end{macrocode}
+%\fi
+%\subsection{UTF-8}
+%This file contains the settings that use UTF-8 characters. This
+%file is loaded if XeLaTeX or LuaLaTeX are used. Please make sure
+%your text editor is set to UTF-8 if you want to view this code.
+%\changes{1.0}{2015-03-30}{Initial release}
+% Identify module
+% \begin{macrocode}
+\ProvidesDateTimeModule{croatian-utf8}[2015/03/30 v1.0]
+% \end{macrocode}
+%\begin{macro}{\DTMcroatianordinal}
+% \begin{macrocode}
+\newcommand*{\DTMcroatianordinal}[1]{%
+ \number#1.%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMcroatianyear}
+% \begin{macrocode}
+\newcommand*{\DTMcroatianyear}[1]{%
+ \number#1.%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%
+%\begin{macro}{\DTMcroatianmonthname}
+% Croatian month names.
+% \begin{macrocode}
+\newcommand*{\DTMcroatianmonthname}[1]{%
+ \ifcase#1
+ \or
+ siječnja%
+ \or
+ veljače%
+ \or
+ ožujka%
+ \or
+ travnja%
+ \or
+ svibnja%
+ \or
+ lipnja%
+ \or
+ srpnja%
+ \or
+ kolovoza%
+ \or
+ rujna%
+ \or
+ listopada%
+ \or
+ studenoga%
+ \or
+ prosinca%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMcroatianMonthname}
+% As above but capitalize.
+% \begin{macrocode}
+\newcommand*{\DTMcroatianMonthname}[1]{%
+ \ifcase#1
+ \or
+ Siječnja%
+ \or
+ Veljače%
+ \or
+ Ožujka%
+ \or
+ Travnja%
+ \or
+ Svibnja%
+ \or
+ Lipnja%
+ \or
+ Srpnja%
+ \or
+ Kolovoza%
+ \or
+ Rujna%
+ \or
+ Listopada%
+ \or
+ Studenoga%
+ \or
+ Prosinca%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%If abbreviated dates are supported, short month names should be
+%likewise provided.
+%
+%\begin{macro}{\DTMcroatianweekdayname}
+% Croatian day of week names.
+% \begin{macrocode}
+\newcommand*{\DTMcroatianweekdayname}[1]{%
+ \ifcase#1
+ nedjelja%
+ \or
+ ponedjeljak%
+ \or
+ utorak%
+ \or
+ srijeda%
+ \or
+ četvrtak%
+ \or
+ petak%
+ \or
+ subota%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMcroatianWeekdayname}
+% As above but start with a capital.
+% \begin{macrocode}
+\newcommand*{\DTMcroatianWeekdayname}[1]{%
+ \ifcase#1
+ Nedjelja%
+ \or
+ Ponedjeljak%
+ \or
+ Utorak%
+ \or
+ Srijeda%
+ \or
+ Četvrtak%
+ \or
+ Petak%
+ \or
+ Subota%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMcroatianshortweekdayname}
+%Abbreviated Croatian day of week names.
+% \begin{macrocode}
+\newcommand*{\DTMcroatianshortweekdayname}[1]{%
+ \ifcase#1
+ ned%
+ \or
+ pon%
+ \or
+ uto%
+ \or
+ sri%
+ \or
+ čet%
+ \or
+ pet%
+ \or
+ sub%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMcroatianshortWeekdayname}
+%As above but start with a capital.
+% \begin{macrocode}
+\newcommand*{\DTMcroatianshortWeekdayname}[1]{%
+ \ifcase#1
+ Ned%
+ \or
+ Pon%
+ \or
+ Uto%
+ \or
+ Sri%
+ \or
+ Čet%
+ \or
+ Pet%
+ \or
+ Sub%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%
+%\iffalse
+% \begin{macrocode}
+%</datetime2-croatian-utf8.ldf>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*datetime2-croatian-ascii.ldf>
+% \end{macrocode}
+%\fi
+%\subsection{ASCII}
+%This file contains the settings that use \LaTeX\ commands for
+%non-ASCII characters. This should be input if neither XeLaTeX nor
+%LuaLaTeX are used. Even if the user has loaded \sty{inputenc} with
+%"utf8", this file should still be used not the
+%\texttt{datetime2-croatian-utf8.ldf} file as the non-ASCII
+%characters are made active in that situation and would need
+%protecting against expansion.
+%\changes{1.0}{2015-03-30}{Initial release}
+% Identify module
+% \begin{macrocode}
+\ProvidesDateTimeModule{croatian-ascii}[2015/03/30 v1.0]
+% \end{macrocode}
+%
+%If abbreviated dates are supported, short month names should be
+%likewise provided.
+%\begin{macro}{\DTMcroatianordinal}
+% \begin{macrocode}
+\newcommand*{\DTMcroatianordinal}[1]{%
+ \number#1.%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMcroatianyear}
+% \begin{macrocode}
+\newcommand*{\DTMcroatianyear}[1]{%
+ \number#1.%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMcroatianmonthname}
+% Croatian month names.
+% \begin{macrocode}
+\newcommand*{\DTMcroatianmonthname}[1]{%
+ \ifcase#1
+ \or
+ sije\protect\v{c}nja%
+ \or
+ velja\protect\v{c}e%
+ \or
+ o\protect\v{z}ujka%
+ \or
+ travnja%
+ \or
+ svibnja%
+ \or
+ lipnja%
+ \or
+ srpnja%
+ \or
+ kolovoza%
+ \or
+ rujna%
+ \or
+ listopada%
+ \or
+ studenoga%
+ \or
+ prosinca%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMcroatianMonthname}
+% As above but start with a capital.
+% \begin{macrocode}
+\newcommand*{\DTMcroatianMonthname}[1]{%
+ \ifcase#1
+ \or
+ Sije\protect\v{c}nja%
+ \or
+ Velja\protect\v{c}e%
+ \or
+ O\protect\v{z}ujka%
+ \or
+ Travnja%
+ \or
+ Svibnja%
+ \or
+ Lipnja%
+ \or
+ Srpnja%
+ \or
+ Kolovoza%
+ \or
+ Rujna%
+ \or
+ Listopada%
+ \or
+ Studenoga%
+ \or
+ Prosinca%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMcroatianweekdayname}
+% Croatian day of week names.
+% \begin{macrocode}
+\newcommand*{\DTMcroatianweekdayname}[1]{%
+ \ifcase#1
+ nedjelja%
+ \or
+ ponedjeljak%
+ \or
+ utorak%
+ \or
+ srijeda%
+ \or
+ \protect\v{c}etvrtak%
+ \or
+ petak%
+ \or
+ subota%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMcroatianWeekdayname}
+% As above but start with a capital.
+% \begin{macrocode}
+\newcommand*{\DTMcroatianWeekdayname}[1]{%
+ \ifcase#1
+ Nedjelja%
+ \or
+ Ponedjeljak%
+ \or
+ Utorak%
+ \or
+ Srijeda%
+ \or
+ \protect\v{C}etvrtak%
+ \or
+ Petak%
+ \or
+ Subota%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMcroatianshortweekdayname}
+% Abbreviated Croatian day of week names.
+% \begin{macrocode}
+\newcommand*{\DTMcroatianshortweekdayname}[1]{%
+ \ifcase#1
+ ned%
+ \or
+ pon%
+ \or
+ uto%
+ \or
+ sri%
+ \or
+ \protect\v{c}et%
+ \or
+ pet%
+ \or
+ sub%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMcroatianshortWeekdayname}
+% As above but start with a capital.
+% \begin{macrocode}
+\newcommand*{\DTMcroatianshortWeekdayname}[1]{%
+ \ifcase#1
+ Ned%
+ \or
+ Pon%
+ \or
+ Uto%
+ \or
+ Sri%
+ \or
+ \protect\v{C}et%
+ \or
+ Pet%
+ \or
+ Sub%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\iffalse
+% \begin{macrocode}
+%</datetime2-croatian-ascii.ldf>
+% \end{macrocode}
+%\fi
+%
+%\subsection{Main Croatian Module (\texttt{datetime2-croatian.ldf})}
+%\changes{1.0}{2015-03-30}{Initial release}
+%
+%\iffalse
+% \begin{macrocode}
+%<*datetime2-croatian.ldf>
+% \end{macrocode}
+%\fi
+%
+% Identify Module
+% \begin{macrocode}
+\ProvidesDateTimeModule{croatian}[2015/03/30 v1.0]
+% \end{macrocode}
+% Need to find out if XeTeX or LuaTeX are being used.
+% \begin{macrocode}
+\RequirePackage{ifxetex,ifluatex}
+% \end{macrocode}
+% XeTeX and LuaTeX natively support UTF-8, so load
+% \texttt{croatian-utf8} if either of those engines are used
+% otherwise load \texttt{croatian-ascii}.
+% \begin{macrocode}
+\ifxetex
+ \RequireDateTimeModule{croatian-utf8}
+\else
+ \ifluatex
+ \RequireDateTimeModule{croatian-utf8}
+ \else
+ \RequireDateTimeModule{croatian-ascii}
+ \fi
+\fi
+% \end{macrocode}
+%
+% Define the \texttt{croatian} style.
+% The time style is the same as the "default" style
+% provided by \sty{datetime2}. This may need correcting. For
+% example, if a 12 hour style similar to the "englishampm" (from the
+% "english-base" module) is required.
+%
+% Allow the user a way of configuring the "croatian" and
+% "croatian-numeric" styles. This doesn't use the package wide
+% separators such as
+% \cs{dtm@datetimesep} in case other date formats are also required.
+%\begin{macro}{\DTMcroatiandaymonthsep}
+% The separator between the day and month for the text format.
+% \begin{macrocode}
+\newcommand*{\DTMcroatiandaymonthsep}{\DTMtexorpdfstring{\protect~}{\space}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMcroatianmonthyearsep}
+% The separator between the month and year for the text format.
+% \begin{macrocode}
+\newcommand*{\DTMcroatianmonthyearsep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMcroatiandatetimesep}
+% The separator between the date and time blocks in the full format
+% (either text or numeric).
+% \begin{macrocode}
+\newcommand*{\DTMcroatiandatetimesep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMcroatiantimezonesep}
+% The separator between the time and zone blocks in the full format
+% (either text or numeric).
+% \begin{macrocode}
+\newcommand*{\DTMcroatiantimezonesep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMcroatiandatesep}
+% The separator for the numeric date format.
+% \begin{macrocode}
+\newcommand*{\DTMcroatiandatesep}{.}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMcroatiantimesep}
+% The separator for the numeric time format.
+% \begin{macrocode}
+\newcommand*{\DTMcroatiantimesep}{:}
+% \end{macrocode}
+%\end{macro}
+%
+%Provide keys that can be used in \cs{DTMlangsetup} to set these
+%separators.
+% \begin{macrocode}
+\DTMdefkey{croatian}{daymonthsep}{\renewcommand*{\DTMcroatiandaymonthsep}{#1}}
+\DTMdefkey{croatian}{monthyearsep}{\renewcommand*{\DTMcroatianmonthyearsep}{#1}}
+\DTMdefkey{croatian}{datetimesep}{\renewcommand*{\DTMcroatiandatetimesep}{#1}}
+\DTMdefkey{croatian}{timezonesep}{\renewcommand*{\DTMcroatiantimezonesep}{#1}}
+\DTMdefkey{croatian}{datesep}{\renewcommand*{\DTMcroatiandatesep}{#1}}
+\DTMdefkey{croatian}{timesep}{\renewcommand*{\DTMcroatiantimesep}{#1}}
+% \end{macrocode}
+%
+% TODO: provide a boolean key to switch between full and abbreviated
+% formats if appropriate. (I don't know how the date should be
+% abbreviated.)
+%
+% Define a boolean key that determines if the time zone mappings
+% should be used.
+% \begin{macrocode}
+\DTMdefboolkey{croatian}{mapzone}[true]{}
+% \end{macrocode}
+% The default is to use mappings.
+% \begin{macrocode}
+\DTMsetbool{croatian}{mapzone}{true}
+% \end{macrocode}
+%
+% Define a boolean key that determines if the day of month should be
+% displayed.
+% \begin{macrocode}
+\DTMdefboolkey{croatian}{showdayofmonth}[true]{}
+% \end{macrocode}
+% The default is to show the day of month.
+% \begin{macrocode}
+\DTMsetbool{croatian}{showdayofmonth}{true}
+% \end{macrocode}
+%
+% Define a boolean key that determines if the year should be
+% displayed.
+% \begin{macrocode}
+\DTMdefboolkey{croatian}{showyear}[true]{}
+% \end{macrocode}
+% The default is to show the year.
+% \begin{macrocode}
+\DTMsetbool{croatian}{showyear}{true}
+% \end{macrocode}
+%
+% Define the "croatian" style. (TODO: implement day of week?)
+% \begin{macrocode}
+\DTMnewstyle
+ {croatian}% label
+ {% date style
+ \renewcommand*\DTMdisplaydate[4]{%
+ \DTMifbool{croatian}{showdayofmonth}
+ {\DTMcroatianordinal{##3}\DTMcroatiandaymonthsep}%
+ {}%
+ \DTMcroatianmonthname{##2}%
+ \DTMifbool{croatian}{showyear}%
+ {%
+ \DTMcroatianmonthyearsep
+ \DTMcroatianyear{##1}%
+ }%
+ {}%
+ }%
+ \renewcommand*\DTMDisplaydate[4]{%
+ \DTMifbool{croatian}{showdayofmonth}
+ {%
+ \DTMcroatianordinal{##3}\DTMcroatiandaymonthsep
+ \DTMcroatianmonthname{##2}%
+ }%
+ {%
+ \DTMcroatianMonthname{##2}%
+ }%
+ \DTMifbool{croatian}{showyear}%
+ {%
+ \DTMcroatianmonthyearsep
+ \DTMcroatianyear{##1}%
+ }%
+ {}%
+ }%
+ }%
+ {% time style (use default)
+ \DTMsettimestyle{default}%
+ }%
+ {% zone style
+ \DTMresetzones
+ \DTMcroatianzonemaps
+ \renewcommand*{\DTMdisplayzone}[2]{%
+ \DTMifbool{croatian}{mapzone}%
+ {\DTMusezonemapordefault{##1}{##2}}%
+ {%
+ \ifnum##1<0\else+\fi\DTMtwodigits{##1}%
+ \ifDTMshowzoneminutes\DTMcroatiantimesep\DTMtwodigits{##2}\fi
+ }%
+ }%
+ }%
+ {% full style
+ \renewcommand*{\DTMdisplay}[9]{%
+ \ifDTMshowdate
+ \DTMdisplaydate{##1}{##2}{##3}{##4}%
+ \DTMcroatiandatetimesep
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \DTMcroatiantimezonesep
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+ \renewcommand*{\DTMDisplay}[9]{%
+ \ifDTMshowdate
+ \DTMDisplaydate{##1}{##2}{##3}{##4}%
+ \DTMcroatiandatetimesep
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \DTMcroatiantimezonesep
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+ }%
+% \end{macrocode}
+%
+% Define numeric style.
+% \begin{macrocode}
+\DTMnewstyle
+ {croatian-numeric}% label
+ {% date style
+ \renewcommand*\DTMdisplaydate[4]{%
+ \DTMifbool{croatian}{showdayofmonth}%
+ {%
+ \number##3 % space intended
+ \DTMcroatiandatesep
+ }%
+ {}%
+ \number##2 % space intended
+ \DTMifbool{croatian}{showyear}%
+ {%
+ \DTMcroatiandatesep
+ \number##1 % space intended
+ }%
+ {}%
+ }%
+ \renewcommand*{\DTMDisplaydate}[4]{\DTMdisplaydate{##1}{##2}{##3}{##4}}%
+ }%
+ {% time style
+ \renewcommand*\DTMdisplaytime[3]{%
+ \number##1
+ \DTMcroatiantimesep\DTMtwodigits{##2}%
+ \ifDTMshowseconds\DTMcroatiantimesep\DTMtwodigits{##3}\fi
+ }%
+ }%
+ {% zone style
+ \DTMresetzones
+ \DTMcroatianzonemaps
+ \renewcommand*{\DTMdisplayzone}[2]{%
+ \DTMifbool{croatian}{mapzone}%
+ {\DTMusezonemapordefault{##1}{##2}}%
+ {%
+ \ifnum##1<0\else+\fi\DTMtwodigits{##1}%
+ \ifDTMshowzoneminutes\DTMcroatiantimesep\DTMtwodigits{##2}\fi
+ }%
+ }%
+ }%
+ {% full style
+ \renewcommand*{\DTMdisplay}[9]{%
+ \ifDTMshowdate
+ \DTMdisplaydate{##1}{##2}{##3}{##4}%
+ \DTMcroatiandatetimesep
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \DTMcroatiantimezonesep
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+ \renewcommand*{\DTMDisplay}{\DTMdisplay}%
+ }
+% \end{macrocode}
+%
+%\begin{macro}{\DTMcroatianzonemaps}
+% The time zone mappings are set through this command, which can be
+% redefined if extra mappings are required or mappings need to be
+% removed.
+% \begin{macrocode}
+\newcommand*{\DTMcroatianzonemaps}{%
+ \DTMdefzonemap{01}{00}{CET}%
+ \DTMdefzonemap{02}{00}{CEST}%
+}
+% \end{macrocode}
+%\end{macro}
+
+% Switch style according to the \opt{useregional} setting.
+% \begin{macrocode}
+\DTMifcaseregional
+{}% do nothing
+{\DTMsetstyle{croatian}}
+{\DTMsetstyle{croatian-numeric}}
+% \end{macrocode}
+%
+% Redefine \cs{datecroatian} (or \cs{date}\meta{dialect}) to prevent
+% \sty{babel} from resetting \cs{today}. (For this to work,
+% \sty{babel} must already have been loaded if it's required.)
+% \begin{macrocode}
+\ifcsundef{date\CurrentTrackedDialect}
+{%
+ \ifundef\datecroatian
+ {% do nothing
+ }%
+ {%
+ \def\datecroatian{%
+ \DTMifcaseregional
+ {}% do nothing
+ {\DTMsetstyle{croatian}}%
+ {\DTMsetstyle{croatian-numeric}}%
+ }%
+ }%
+}%
+{%
+ \csdef{date\CurrentTrackedDialect}{%
+ \DTMifcaseregional
+ {}% do nothing
+ {\DTMsetstyle{croatian}}%
+ {\DTMsetstyle{croatian-numeric}}
+ }%
+}%
+% \end{macrocode}
+%\iffalse
+% \begin{macrocode}
+%</datetime2-croatian.ldf>
+% \end{macrocode}
+%\fi
+%\Finale
+\endinput
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-croatian/datetime2-croatian.ins b/macros/latex/contrib/datetime2-contrib/datetime2-croatian/datetime2-croatian.ins
new file mode 100644
index 0000000000..078c709a20
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-croatian/datetime2-croatian.ins
@@ -0,0 +1,61 @@
+\input docstrip
+
+\preamble
+
+ datetime2-croatian.dtx
+ Copyright 2015 Nicola Talbot
+
+ This work may be distributed and/or modified under the
+ conditions of the LaTeX Project Public License, either version 1.3
+ of this license of (at your option) any later version.
+ The latest version of this license is in
+ http://www.latex-project.org/lppl.txt
+ and version 1.3 or later is part of all distributions of LaTeX
+ version 2005/12/01 or later.
+
+ This work has the LPPL maintenance status `inactive'.
+
+ This work consists of the files datetime2-croatian.dtx and
+ datetime2-croatian.ins and the derived files
+ datetime2-croatian-utf8.ldf, datetime2-croatian-ascii.ldf and
+ datetime2-croatian.ldf.
+
+\endpreamble
+
+\askforoverwritefalse
+
+\generate
+{%
+ \file
+ {datetime2-croatian-utf8.ldf}%
+ {%
+ \usepreamble\defaultpreamble
+ \usepostamble\defaultpostamble
+ \from{datetime2-croatian.dtx}{datetime2-croatian-utf8.ldf,package}%
+ }%
+}
+
+\generate
+{%
+ \file
+ {datetime2-croatian-ascii.ldf}%
+ {%
+ \usepreamble\defaultpreamble
+ \usepostamble\defaultpostamble
+ \from{datetime2-croatian.dtx}{datetime2-croatian-ascii.ldf,package}%
+ }%
+}
+
+\generate
+{%
+ \file
+ {datetime2-croatian.ldf}%
+ {%
+ \usepreamble\defaultpreamble
+ \usepostamble\defaultpostamble
+ \from{datetime2-croatian.dtx}{datetime2-croatian.ldf,package}%
+ }%
+}
+
+\endbatchfile
+
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-croatian/datetime2-croatian.pdf b/macros/latex/contrib/datetime2-contrib/datetime2-croatian/datetime2-croatian.pdf
new file mode 100644
index 0000000000..2da114369d
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-croatian/datetime2-croatian.pdf
Binary files differ
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-czech/README b/macros/latex/contrib/datetime2-contrib/datetime2-czech/README
new file mode 100644
index 0000000000..7f8e8a7c2c
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-czech/README
@@ -0,0 +1,57 @@
+Czech Language Module for datetime2 Package
+
+Author: Nicola L. C. Talbot (inactive)
+
+Licence: LPPL
+
+Required Packages: datetime2, tracklang
+
+This module is unmaintained. If you want to volunteer to take over
+the maintenance contact me at www.dickimaw-books.com/contact.html
+
+Example usage:
+
+\documentclass{article}
+\usepackage[czech]{datetime2}
+\begin{document}
+\today
+\end{document}
+
+\documentclass[czech]{article}
+\usepackage{babel}
+\usepackage[useregional]{datetime2}
+\begin{document}
+\today
+\end{document}
+
+\documentclass{article}
+\usepackage{polyglossia}
+\setmainlanguage{czech}
+\usepackage[czech]{datetime2}
+\begin{document}
+\today
+\end{document}
+
+INSTALLATION
+============
+
+xelatex datetime2-czech.ins
+
+Move all *.ldf files to
+TEXMF/tex/latex/datetime2-contrib/datetime2-czech/
+
+Documentation:
+
+xelatex datetime2-czech.dtx
+makeindex -s gind.ist datetime2-czech.idx
+makeindex -s gglo.ist -o datetime2-czech.gls datetime2-czech.glo
+xelatex datetime2-czech.dtx
+xelatex datetime2-czech.dtx
+
+Move datetime2-czech.pdf and README to
+TEXMF/doc/latex/datetime2-contrib/datetime2-czech/
+
+This material is subject to the LaTeX Project Public License.
+See http://www.ctan.org/license/lppl1.3 for the details of that
+license.
+
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-czech/datetime2-czech.dtx b/macros/latex/contrib/datetime2-contrib/datetime2-czech/datetime2-czech.dtx
new file mode 100644
index 0000000000..cb9018754e
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-czech/datetime2-czech.dtx
@@ -0,0 +1,631 @@
+%\iffalse
+%<*package>
+%% \CharacterTable
+%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+%% Digits \0\1\2\3\4\5\6\7\8\9
+%% Exclamation \! Double quote \" Hash (number) \#
+%% Dollar \$ Percent \% Ampersand \&
+%% Acute accent \' Left paren \( Right paren \)
+%% Asterisk \* Plus \+ Comma \,
+%% Minus \- Point \. Solidus \/
+%% Colon \: Semicolon \; Less than \<
+%% Equals \= Greater than \> Question mark \?
+%% Commercial at \@ Left bracket \[ Backslash \\
+%% Right bracket \] Circumflex \^ Underscore \_
+%% Grave accent \` Left brace \{ Vertical bar \|
+%% Right brace \} Tilde \~}
+%</package>
+%\fi
+% \iffalse
+% Doc-Source file to use with LaTeX2e
+% Copyright (C) 2018 Nicola Talbot, all rights reserved.
+% (New maintainer add relevant lines here.)
+% \fi
+% \iffalse
+%<*driver>
+\documentclass{ltxdoc}
+
+\usepackage{alltt}
+\usepackage{graphicx}
+\usepackage{fontspec}
+\usepackage[colorlinks,
+ bookmarks,
+ hyperindex=false,
+ pdfauthor={Nicola L.C. Talbot},
+ pdftitle={datetime2.sty Czech Module}]{hyperref}
+
+\setmainfont{Liberation Serif}
+\setmonofont{Liberation Mono}
+
+\CheckSum{301}
+
+\renewcommand*{\usage}[1]{\hyperpage{#1}}
+\renewcommand*{\main}[1]{\hyperpage{#1}}
+\IndexPrologue{\section*{\indexname}\markboth{\indexname}{\indexname}}
+\setcounter{IndexColumns}{2}
+
+\newcommand*{\sty}[1]{\textsf{#1}}
+\newcommand*{\opt}[1]{\texttt{#1}\index{#1=\texttt{#1}|main}}
+
+\RecordChanges
+\PageIndex
+\CodelineNumbered
+
+\begin{document}
+\DocInput{datetime2-czech.dtx}
+\end{document}
+%</driver>
+%\fi
+%
+%\MakeShortVerb{"}
+%
+%\title{Czech Module for datetime2 Package}
+%\author{Nicola L. C. Talbot (inactive)}
+%\date{2018-03-19 (v1.1)}
+%\maketitle
+%
+%This module is currently unmaintained and may be subject to change.
+%If you want to volunteer to take over maintanance, contact me at
+%\url{http://www.dickimaw-books.com/contact.html}
+%
+%\begin{abstract}
+%This is the Czech language module for the \sty{datetime2}
+%package. If you want to use the settings in this module you must
+%install it in addition to installing \sty{datetime2}. If you use
+%\sty{babel} or \sty{polyglossia}, you will need this module to
+%prevent them from redefining \cs{today}. The \sty{datetime2}
+% \opt{useregional} setting must be set to "text" or "numeric"
+% for the language styles to be set.
+% Alternatively, you can set the style in the document using
+% \cs{DTMsetstyle}, but this may be changed by \cs{date}\meta{language}
+% depending on the value of the \opt{useregional} setting.
+%\end{abstract}
+%
+%I've copied the date style from \texttt{babel-czech}'s \cs{today}.
+%
+%I don't know if these settings are correct as I can't speak Czech.
+%In particular, I don't know if the "czech" time style is
+%correct. Currently this just uses the "default" time style. Please
+%be aware that this may change. Whoever takes over maintanance
+%of this module may can change it as appropriate.
+%
+%The new maintainer should add the line:
+%\begin{verbatim}
+% The Current Maintainer of this work is Name.
+%\end{verbatim}
+%to the preamble part in \texttt{datetime2-czech.ins} where Name
+%is the name of the maintainer(s) and replace
+%the `inactive' status to `maintained'.
+%
+%Currently there is only a regionless style.
+%
+%\StopEventually{%
+%\clearpage
+%\phantomsection
+%\addcontentsline{toc}{section}{Change History}%
+%\PrintChanges
+%\addcontentsline{toc}{section}{\indexname}%
+%\PrintIndex}
+%\section{The Code}
+%\iffalse
+% \begin{macrocode}
+%<*datetime2-czech-utf8.ldf>
+% \end{macrocode}
+%\fi
+%\subsection{UTF-8}
+%This file contains the settings that use UTF-8 characters. This
+%file is loaded if XeLaTeX or LuaLaTeX are used. Please make sure
+%your text editor is set to UTF-8 if you want to view this code.
+%\changes{1.0}{2015-03-30}{Initial release}
+% Identify module
+% \begin{macrocode}
+\ProvidesDateTimeModule{czech-utf8}[2018/03/19 v1.1]
+% \end{macrocode}
+%\begin{macro}{\DTMczechordinal}
+% \begin{macrocode}
+\newcommand*{\DTMczechordinal}[1]{%
+ \number#1.%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%
+%\begin{macro}{\DTMczechmonthname}
+% Czech month names.
+% \begin{macrocode}
+\newcommand*{\DTMczechmonthname}[1]{%
+ \ifcase#1
+ \or
+ ledna%
+ \or
+ Ćŗnora%
+ \or
+ března%
+ \or
+ dubna%
+ \or
+ května%
+ \or
+ června%
+ \or
+ července%
+ \or
+ srpna%
+ \or
+ zĆ”Å™Ć­%
+ \or
+ Å™Ć­jna%
+ \or
+ listopadu%
+ \or
+ prosince%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMczechMonthname}
+% As above but capitalize.
+% \begin{macrocode}
+\newcommand*{\DTMczechMonthname}[1]{%
+ \ifcase#1
+ \or
+ Ledna%
+ \or
+ ƚnora%
+ \or
+ Března%
+ \or
+ Dubna%
+ \or
+ Května%
+ \or
+ Června%
+ \or
+ Července%
+ \or
+ Srpna%
+ \or
+ ZĆ”Å™Ć­%
+ \or
+ Å˜Ć­jna%
+ \or
+ Listopadu%
+ \or
+ Prosince%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%If abbreviated dates are supported, short month names should be
+%likewise provided.
+%
+%
+%\iffalse
+% \begin{macrocode}
+%</datetime2-czech-utf8.ldf>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*datetime2-czech-ascii.ldf>
+% \end{macrocode}
+%\fi
+%\subsection{ASCII}
+%This file contains the settings that use \LaTeX\ commands for
+%non-ASCII characters. This should be input if neither XeLaTeX nor
+%LuaLaTeX are used. Even if the user has loaded \sty{inputenc} with
+%"utf8", this file should still be used not the
+%\texttt{datetime2-czech-utf8.ldf} file as the non-ASCII
+%characters are made active in that situation and would need
+%protecting against expansion.
+%\changes{1.0}{2015-03-30}{Initial release}
+% Identify module
+% \begin{macrocode}
+\ProvidesDateTimeModule{czech-ascii}[2018/03/19 v1.1]
+% \end{macrocode}
+%
+%If abbreviated dates are supported, short month names should be
+%likewise provided.
+%\begin{macro}{\DTMczechordinal}
+% \begin{macrocode}
+\newcommand*{\DTMczechordinal}[1]{%
+ \number#1.%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMczechmonthname}
+% Czech month names.
+% \begin{macrocode}
+\newcommand*{\DTMczechmonthname}[1]{%
+ \ifcase#1
+ \or
+ ledna%
+ \or
+ \protect\'unora%
+ \or
+ b\protect\v{r}ezna%
+ \or
+ dubna%
+ \or
+ kv\protect\v{e}tna%
+ \or
+ \protect\v{c}ervna%
+ \or
+ \protect\v{c}ervence%
+ \or
+ srpna%
+ \or
+ z\protect\'a\protect\v{r}\protect\'{\protect\i}%
+ \or
+ \protect\v{r}\protect\'{\protect\i}jna%
+ \or
+ listopadu%
+ \or
+ prosince%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMczechMonthname}
+% As above but start with a capital.
+% \begin{macrocode}
+\newcommand*{\DTMczechMonthname}[1]{%
+ \ifcase#1
+ \or
+ Ledna%
+ \or
+ \protect\'Unora%
+ \or
+ B\protect\v{r}ezna%
+ \or
+ Dubna%
+ \or
+ Kv\protect\v{e}tna%
+ \or
+ \protect\v{C}ervna%
+ \or
+ \protect\v{C}ervence%
+ \or
+ Srpna%
+ \or
+ Z\protect\'a\protect\v{r}\protect\'{\protect\i}%
+ \or
+ \protect\v{R}\protect\'{\protect\i}jna%
+ \or
+ Listopadu%
+ \or
+ Prosince%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\iffalse
+% \begin{macrocode}
+%</datetime2-czech-ascii.ldf>
+% \end{macrocode}
+%\fi
+%
+%\subsection{Main Czech Module (\texttt{datetime2-czech.ldf})}
+%\changes{1.0}{2015-03-30}{Initial release}
+%
+%\iffalse
+% \begin{macrocode}
+%<*datetime2-czech.ldf>
+% \end{macrocode}
+%\fi
+%
+% Identify Module
+% \begin{macrocode}
+\ProvidesDateTimeModule{czech}[2018/03/19 v1.1]
+% \end{macrocode}
+% Need to find out if XeTeX or LuaTeX are being used.
+% \begin{macrocode}
+\RequirePackage{ifxetex,ifluatex}
+% \end{macrocode}
+% XeTeX and LuaTeX natively support UTF-8, so load
+% \texttt{czech-utf8} if either of those engines are used
+% otherwise load \texttt{czech-ascii}.
+% \begin{macrocode}
+\ifxetex
+ \RequireDateTimeModule{czech-utf8}
+\else
+ \ifluatex
+ \RequireDateTimeModule{czech-utf8}
+ \else
+ \RequireDateTimeModule{czech-ascii}
+ \fi
+\fi
+% \end{macrocode}
+%
+% Define the \texttt{czech} style.
+% The time style is the same as the "default" style
+% provided by \sty{datetime2}. This may need correcting. For
+% example, if a 12 hour style similar to the "englishampm" (from the
+% "english-base" module) is required.
+%
+% Allow the user a way of configuring the "czech" and
+% "czech-numeric" styles. This doesn't use the package wide
+% separators such as
+% \cs{dtm@datetimesep} in case other date formats are also required.
+%\begin{macro}{\DTMczechdaymonthsep}
+% The separator between the day and month for the text format.
+% \begin{macrocode}
+\newcommand*{\DTMczechdaymonthsep}{\DTMtexorpdfstring{\protect~}{\space}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMczechmonthyearsep}
+% The separator between the month and year for the text format.
+% \begin{macrocode}
+\newcommand*{\DTMczechmonthyearsep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMczechdatetimesep}
+% The separator between the date and time blocks in the full format
+% (either text or numeric).
+% \begin{macrocode}
+\newcommand*{\DTMczechdatetimesep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMczechtimezonesep}
+% The separator between the time and zone blocks in the full format
+% (either text or numeric).
+% \begin{macrocode}
+\newcommand*{\DTMczechtimezonesep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMczechdatesep}
+% The separator for the numeric date format.
+% \begin{macrocode}
+\newcommand*{\DTMczechdatesep}{.}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMczechtimesep}
+% The separator for the numeric time format.
+% \begin{macrocode}
+\newcommand*{\DTMczechtimesep}{:}
+% \end{macrocode}
+%\end{macro}
+%
+%Provide keys that can be used in \cs{DTMlangsetup} to set these
+%separators.
+% \begin{macrocode}
+\DTMdefkey{czech}{daymonthsep}{\renewcommand*{\DTMczechdaymonthsep}{#1}}
+\DTMdefkey{czech}{monthyearsep}{\renewcommand*{\DTMczechmonthyearsep}{#1}}
+\DTMdefkey{czech}{datetimesep}{\renewcommand*{\DTMczechdatetimesep}{#1}}
+\DTMdefkey{czech}{timezonesep}{\renewcommand*{\DTMczechtimezonesep}{#1}}
+\DTMdefkey{czech}{datesep}{\renewcommand*{\DTMczechdatesep}{#1}}
+\DTMdefkey{czech}{timesep}{\renewcommand*{\DTMczechtimesep}{#1}}
+% \end{macrocode}
+%
+% TODO: provide a boolean key to switch between full and abbreviated
+% formats if appropriate. (I don't know how the date should be
+% abbreviated.)
+%
+% Define a boolean key that determines if the time zone mappings
+% should be used.
+% \begin{macrocode}
+\DTMdefboolkey{czech}{mapzone}[true]{}
+% \end{macrocode}
+% The default is to use mappings.
+% \begin{macrocode}
+\DTMsetbool{czech}{mapzone}{true}
+% \end{macrocode}
+%
+% Define a boolean key that determines if the day of month should be
+% displayed.
+% \begin{macrocode}
+\DTMdefboolkey{czech}{showdayofmonth}[true]{}
+% \end{macrocode}
+% The default is to show the day of month.
+% \begin{macrocode}
+\DTMsetbool{czech}{showdayofmonth}{true}
+% \end{macrocode}
+%
+% Define a boolean key that determines if the year should be
+% displayed.
+% \begin{macrocode}
+\DTMdefboolkey{czech}{showyear}[true]{}
+% \end{macrocode}
+% The default is to show the year.
+% \begin{macrocode}
+\DTMsetbool{czech}{showyear}{true}
+% \end{macrocode}
+%
+% Define the "czech" style. (TODO: implement day of week?)
+% \begin{macrocode}
+\DTMnewstyle
+ {czech}% label
+ {% date style
+ \renewcommand*\DTMdisplaydate[4]{%
+ \DTMifbool{czech}{showdayofmonth}
+ {\DTMczechordinal{##3}\DTMczechdaymonthsep}%
+ {}%
+ \DTMczechmonthname{##2}%
+ \DTMifbool{czech}{showyear}%
+ {%
+ \DTMczechmonthyearsep
+ \number##1
+ }%
+ {}%
+ }%
+ \renewcommand*\DTMDisplaydate[4]{%
+ \DTMifbool{czech}{showdayofmonth}
+ {%
+ \DTMczechordinal{##3}\DTMczechdaymonthsep
+ \DTMczechmonthname{##2}%
+ }%
+ {%
+ \DTMczechMonthname{##2}%
+ }%
+ \DTMifbool{czech}{showyear}%
+ {%
+ \DTMczechmonthyearsep
+ \number##1
+ }%
+ {}%
+ }%
+ }%
+ {% time style (use default)
+ \DTMsettimestyle{default}%
+ }%
+ {% zone style
+ \DTMresetzones
+ \DTMczechzonemaps
+ \renewcommand*{\DTMdisplayzone}[2]{%
+ \DTMifbool{czech}{mapzone}%
+ {\DTMusezonemapordefault{##1}{##2}}%
+ {%
+ \ifnum##1<0\else+\fi\DTMtwodigits{##1}%
+ \ifDTMshowzoneminutes\DTMczechtimesep\DTMtwodigits{##2}\fi
+ }%
+ }%
+ }%
+ {% full style
+ \renewcommand*{\DTMdisplay}[9]{%
+ \ifDTMshowdate
+ \DTMdisplaydate{##1}{##2}{##3}{##4}%
+ \DTMczechdatetimesep
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \DTMczechtimezonesep
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+ \renewcommand*{\DTMDisplay}[9]{%
+ \ifDTMshowdate
+ \DTMDisplaydate{##1}{##2}{##3}{##4}%
+ \DTMczechdatetimesep
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \DTMczechtimezonesep
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+ }%
+% \end{macrocode}
+%
+% Define numeric style.
+% \begin{macrocode}
+\DTMnewstyle
+ {czech-numeric}% label
+ {% date style
+ \renewcommand*\DTMdisplaydate[4]{%
+ \DTMifbool{czech}{showdayofmonth}%
+ {%
+ \number##3 % space intended
+ \DTMczechdatesep
+ }%
+ {}%
+ \number##2 % space intended
+ \DTMifbool{czech}{showyear}%
+ {%
+ \DTMczechdatesep
+ \number##1 % space intended
+ }%
+ {}%
+ }%
+ \renewcommand*{\DTMDisplaydate}[4]{\DTMdisplaydate{##1}{##2}{##3}{##4}}%
+ }%
+ {% time style
+ \renewcommand*\DTMdisplaytime[3]{%
+ \number##1
+ \DTMczechtimesep\DTMtwodigits{##2}%
+ \ifDTMshowseconds\DTMczechtimesep\DTMtwodigits{##3}\fi
+ }%
+ }%
+ {% zone style
+ \DTMresetzones
+ \DTMczechzonemaps
+ \renewcommand*{\DTMdisplayzone}[2]{%
+ \DTMifbool{czech}{mapzone}%
+ {\DTMusezonemapordefault{##1}{##2}}%
+ {%
+ \ifnum##1<0\else+\fi\DTMtwodigits{##1}%
+ \ifDTMshowzoneminutes\DTMczechtimesep\DTMtwodigits{##2}\fi
+ }%
+ }%
+ }%
+ {% full style
+ \renewcommand*{\DTMdisplay}[9]{%
+ \ifDTMshowdate
+ \DTMdisplaydate{##1}{##2}{##3}{##4}%
+ \DTMczechdatetimesep
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \DTMczechtimezonesep
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+ \renewcommand*{\DTMDisplay}{\DTMdisplay}%
+ }
+% \end{macrocode}
+%
+%\begin{macro}{\DTMczechzonemaps}
+% The time zone mappings are set through this command, which can be
+% redefined if extra mappings are required or mappings need to be
+% removed.
+% \begin{macrocode}
+\newcommand*{\DTMczechzonemaps}{%
+ \DTMdefzonemap{01}{00}{CET}%
+ \DTMdefzonemap{02}{00}{CEST}%
+}
+% \end{macrocode}
+%\end{macro}
+
+% Switch style according to the \opt{useregional} setting.
+% \begin{macrocode}
+\DTMifcaseregional
+{}% do nothing
+{\DTMsetstyle{czech}}
+{\DTMsetstyle{czech-numeric}}
+% \end{macrocode}
+%
+% Redefine \cs{dateczech} (or \cs{date}\meta{dialect}) to prevent
+% \sty{babel} from resetting \cs{today}. (For this to work,
+% \sty{babel} must already have been loaded if it's required.)
+%\changes{1.1}{2018-03-19}{removed spurious space}
+% \begin{macrocode}
+\ifcsundef{date\CurrentTrackedDialect}
+{%
+ \ifundef\dateczech
+ {% do nothing
+ }%
+ {%
+ \def\dateczech{%
+ \DTMifcaseregional
+ {}% do nothing
+ {\DTMsetstyle{czech}}%
+ {\DTMsetstyle{czech-numeric}}%
+ }%
+ }%
+}%
+{%
+ \csdef{date\CurrentTrackedDialect}{%
+ \DTMifcaseregional
+ {}% do nothing
+ {\DTMsetstyle{czech}}%
+ {\DTMsetstyle{czech-numeric}}%
+ }%
+}%
+% \end{macrocode}
+%\iffalse
+% \begin{macrocode}
+%</datetime2-czech.ldf>
+% \end{macrocode}
+%\fi
+%\Finale
+\endinput
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-czech/datetime2-czech.ins b/macros/latex/contrib/datetime2-contrib/datetime2-czech/datetime2-czech.ins
new file mode 100644
index 0000000000..6997179488
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-czech/datetime2-czech.ins
@@ -0,0 +1,61 @@
+\input docstrip
+
+\preamble
+
+ datetime2-czech.dtx
+ Copyright 2018 Nicola Talbot
+
+ This work may be distributed and/or modified under the
+ conditions of the LaTeX Project Public License, either version 1.3
+ of this license of (at your option) any later version.
+ The latest version of this license is in
+ http://www.latex-project.org/lppl.txt
+ and version 1.3 or later is part of all distributions of LaTeX
+ version 2005/12/01 or later.
+
+ This work has the LPPL maintenance status `inactive'.
+
+ This work consists of the files datetime2-czech.dtx and
+ datetime2-czech.ins and the derived files
+ datetime2-czech-utf8.ldf, datetime2-czech-ascii.ldf and
+ datetime2-czech.ldf.
+
+\endpreamble
+
+\askforoverwritefalse
+
+\generate
+{%
+ \file
+ {datetime2-czech-utf8.ldf}%
+ {%
+ \usepreamble\defaultpreamble
+ \usepostamble\defaultpostamble
+ \from{datetime2-czech.dtx}{datetime2-czech-utf8.ldf,package}%
+ }%
+}
+
+\generate
+{%
+ \file
+ {datetime2-czech-ascii.ldf}%
+ {%
+ \usepreamble\defaultpreamble
+ \usepostamble\defaultpostamble
+ \from{datetime2-czech.dtx}{datetime2-czech-ascii.ldf,package}%
+ }%
+}
+
+\generate
+{%
+ \file
+ {datetime2-czech.ldf}%
+ {%
+ \usepreamble\defaultpreamble
+ \usepostamble\defaultpostamble
+ \from{datetime2-czech.dtx}{datetime2-czech.ldf,package}%
+ }%
+}
+
+\endbatchfile
+
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-czech/datetime2-czech.pdf b/macros/latex/contrib/datetime2-contrib/datetime2-czech/datetime2-czech.pdf
new file mode 100644
index 0000000000..e83c82ea71
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-czech/datetime2-czech.pdf
Binary files differ
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-danish/README b/macros/latex/contrib/datetime2-contrib/datetime2-danish/README
new file mode 100644
index 0000000000..2fb682a883
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-danish/README
@@ -0,0 +1,57 @@
+Danish Language Module for datetime2 Package
+
+Author: Nicola L. C. Talbot (inactive)
+
+Licence: LPPL
+
+Required Packages: datetime2, tracklang
+
+This module is unmaintained. If you want to volunteer to take over
+the maintenance contact me at www.dickimaw-books.com/contact.html
+
+Example usage:
+
+\documentclass{article}
+\usepackage[danish]{datetime2}
+\begin{document}
+\today
+\end{document}
+
+\documentclass[danish]{article}
+\usepackage{babel}
+\usepackage[useregional]{datetime2}
+\begin{document}
+\today
+\end{document}
+
+\documentclass{article}
+\usepackage{polyglossia}
+\setmainlanguage{danish}
+\usepackage[danish]{datetime2}
+\begin{document}
+\today
+\end{document}
+
+INSTALLATION
+============
+
+xelatex datetime2-danish.ins
+
+Move all *.ldf files to
+TEXMF/tex/latex/datetime2-contrib/datetime2-danish/
+
+Documentation:
+
+xelatex datetime2-danish.dtx
+makeindex -s gind.ist datetime2-danish.idx
+makeindex -s gglo.ist -o datetime2-danish.gls datetime2-danish.glo
+xelatex datetime2-danish.dtx
+xelatex datetime2-danish.dtx
+
+Move datetime2-danish.pdf and README to
+TEXMF/doc/latex/datetime2-contrib/datetime2-danish/
+
+This material is subject to the LaTeX Project Public License.
+See http://www.ctan.org/license/lppl1.3 for the details of that
+license.
+
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-danish/datetime2-danish.dtx b/macros/latex/contrib/datetime2-contrib/datetime2-danish/datetime2-danish.dtx
new file mode 100644
index 0000000000..a8936a48e1
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-danish/datetime2-danish.dtx
@@ -0,0 +1,723 @@
+%\iffalse
+%<*package>
+%% \CharacterTable
+%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+%% Digits \0\1\2\3\4\5\6\7\8\9
+%% Exclamation \! Double quote \" Hash (number) \#
+%% Dollar \$ Percent \% Ampersand \&
+%% Acute accent \' Left paren \( Right paren \)
+%% Asterisk \* Plus \+ Comma \,
+%% Minus \- Point \. Solidus \/
+%% Colon \: Semicolon \; Less than \<
+%% Equals \= Greater than \> Question mark \?
+%% Commercial at \@ Left bracket \[ Backslash \\
+%% Right bracket \] Circumflex \^ Underscore \_
+%% Grave accent \` Left brace \{ Vertical bar \|
+%% Right brace \} Tilde \~}
+%</package>
+%\fi
+% \iffalse
+% Doc-Source file to use with LaTeX2e
+% Copyright (C) 2018 Nicola Talbot, all rights reserved.
+% (New maintainer add relevant lines here.)
+% \fi
+% \iffalse
+%<*driver>
+\documentclass{ltxdoc}
+
+\usepackage{alltt}
+\usepackage{graphicx}
+\usepackage{fontspec}
+\usepackage[colorlinks,
+ bookmarks,
+ hyperindex=false,
+ pdfauthor={Nicola L.C. Talbot},
+ pdftitle={datetime2.sty Danish Module}]{hyperref}
+
+\setmainfont{Liberation Serif}
+\setmonofont{Liberation Mono}
+
+\CheckSum{301}
+
+\renewcommand*{\usage}[1]{\hyperpage{#1}}
+\renewcommand*{\main}[1]{\hyperpage{#1}}
+\IndexPrologue{\section*{\indexname}\markboth{\indexname}{\indexname}}
+\setcounter{IndexColumns}{2}
+
+\newcommand*{\sty}[1]{\textsf{#1}}
+\newcommand*{\opt}[1]{\texttt{#1}\index{#1=\texttt{#1}|main}}
+
+\RecordChanges
+\PageIndex
+\CodelineNumbered
+
+\begin{document}
+\DocInput{datetime2-danish.dtx}
+\end{document}
+%</driver>
+%\fi
+%
+%\MakeShortVerb{"}
+%
+%\title{Danish Module for datetime2 Package}
+%\author{Nicola L. C. Talbot (inactive)}
+%\date{2018-03-19 (v1.1)}
+%\maketitle
+%
+%This module is currently unmaintained and may be subject to change.
+%If you want to volunteer to take over maintanance, contact me at
+%\url{http://www.dickimaw-books.com/contact.html}
+%
+%\begin{abstract}
+%This is the Danish language module for the \sty{datetime2}
+%package. If you want to use the settings in this module you must
+%install it in addition to installing \sty{datetime2}. If you use
+%\sty{babel} or \sty{polyglossia}, you will need this module to
+%prevent them from redefining \cs{today}. The \sty{datetime2}
+% \opt{useregional} setting must be set to "text" or "numeric"
+% for the language styles to be set.
+% Alternatively, you can set the style in the document using
+% \cs{DTMsetstyle}, but this may be changed by \cs{date}\meta{language}
+% depending on the value of the \opt{useregional} setting.
+%\end{abstract}
+%
+%I've copied the date style from \texttt{babel-danish}'s \cs{today}.
+%
+%I don't know if these settings are correct as I can't speak Danish.
+%In particular, I don't know if the "danish" time style is
+%correct. Currently this just uses the "default" time style. Please
+%be aware that this may change. Whoever takes over maintanance
+%of this module may can change it as appropriate.
+%
+%The new maintainer should add the line:
+%\begin{verbatim}
+% The Current Maintainer of this work is Name.
+%\end{verbatim}
+%to the preamble part in \texttt{datetime2-danish.ins} where Name
+%is the name of the maintainer(s) and replace
+%the `inactive' status to `maintained'.
+%
+%Currently there is only a regionless style.
+%
+%\StopEventually{%
+%\clearpage
+%\phantomsection
+%\addcontentsline{toc}{section}{Change History}%
+%\PrintChanges
+%\addcontentsline{toc}{section}{\indexname}%
+%\PrintIndex}
+%\section{The Code}
+%\iffalse
+% \begin{macrocode}
+%<*datetime2-danish-utf8.ldf>
+% \end{macrocode}
+%\fi
+%\subsection{UTF-8}
+%This file contains the settings that use UTF-8 characters. This
+%file is loaded if XeLaTeX or LuaLaTeX are used. Please make sure
+%your text editor is set to UTF-8 if you want to view this code.
+%\changes{1.0}{2015-03-30}{Initial release}
+% Identify module
+% \begin{macrocode}
+\ProvidesDateTimeModule{danish-utf8}[2018/03/19 v1.1]
+% \end{macrocode}
+%\begin{macro}{\DTMdanishordinal}
+% \begin{macrocode}
+\newcommand*{\DTMdanishordinal}[1]{%
+ \number#1.%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%
+%\begin{macro}{\DTMdanishmonthname}
+% Danish month names.
+% \begin{macrocode}
+\newcommand*{\DTMdanishmonthname}[1]{%
+ \ifcase#1
+ \or
+ januar%
+ \or
+ februar%
+ \or
+ marts%
+ \or
+ april%
+ \or
+ maj%
+ \or
+ juni%
+ \or
+ juli%
+ \or
+ august%
+ \or
+ september%
+ \or
+ oktober%
+ \or
+ november%
+ \or
+ december%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMdanishMonthname}
+% As above but capitalize.
+% \begin{macrocode}
+\newcommand*{\DTMdanishMonthname}[1]{%
+ \ifcase#1
+ \or
+ Januar%
+ \or
+ Februar%
+ \or
+ Marts%
+ \or
+ April%
+ \or
+ Maj%
+ \or
+ Juni%
+ \or
+ Juli%
+ \or
+ August%
+ \or
+ September%
+ \or
+ Oktober%
+ \or
+ November%
+ \or
+ December%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%If abbreviated dates are supported, short month names should be
+%likewise provided.
+%
+%\begin{macro}{\DTMdanishweekdayname}
+% Danish day of week names.
+% \begin{macrocode}
+\newcommand*{\DTMdanishweekdayname}[1]{%
+ \ifcase#1
+ mandag%
+ \or
+ tirsdag%
+ \or
+ onsdag%
+ \or
+ torsdag%
+ \or
+ fredag%
+ \or
+ lĆørdag%
+ \or
+ sĆøndag%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMdanishWeekdayname}
+% As above but start with a capital.
+% \begin{macrocode}
+\newcommand*{\DTMdanishWeekdayname}[1]{%
+ \ifcase#1
+ Mandag%
+ \or
+ Tirsdag%
+ \or
+ Onsdag%
+ \or
+ Torsdag%
+ \or
+ Fredag%
+ \or
+ LĆørdag%
+ \or
+ SĆøndag%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\iffalse
+% \begin{macrocode}
+%</datetime2-danish-utf8.ldf>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*datetime2-danish-ascii.ldf>
+% \end{macrocode}
+%\fi
+%\subsection{ASCII}
+%This file contains the settings that use \LaTeX\ commands for
+%non-ASCII characters. This should be input if neither XeLaTeX nor
+%LuaLaTeX are used. Even if the user has loaded \sty{inputenc} with
+%"utf8", this file should still be used not the
+%\texttt{datetime2-danish-utf8.ldf} file as the non-ASCII
+%characters are made active in that situation and would need
+%protecting against expansion.
+%\changes{1.0}{2015-03-30}{Initial release}
+% Identify module
+% \begin{macrocode}
+\ProvidesDateTimeModule{danish-ascii}[2018/03/19 v1.1]
+% \end{macrocode}
+%
+%If abbreviated dates are supported, short month names should be
+%likewise provided.
+%\begin{macro}{\DTMdanishordinal}
+% \begin{macrocode}
+\newcommand*{\DTMdanishordinal}[1]{%
+ \number#1.%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMdanishmonthname}
+% Danish month names.
+% \begin{macrocode}
+\newcommand*{\DTMdanishmonthname}[1]{%
+ \ifcase#1
+ \or
+ januar%
+ \or
+ februar%
+ \or
+ marts%
+ \or
+ april%
+ \or
+ maj%
+ \or
+ juni%
+ \or
+ juli%
+ \or
+ august%
+ \or
+ september%
+ \or
+ oktober%
+ \or
+ november%
+ \or
+ december%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMdanishMonthname}
+% As above but capitalize.
+% \begin{macrocode}
+\newcommand*{\DTMdanishMonthname}[1]{%
+ \ifcase#1
+ \or
+ Januar%
+ \or
+ Februar%
+ \or
+ Marts%
+ \or
+ April%
+ \or
+ Maj%
+ \or
+ Juni%
+ \or
+ Juli%
+ \or
+ August%
+ \or
+ September%
+ \or
+ Oktober%
+ \or
+ November%
+ \or
+ December%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMdanishweekdayname}
+% Danish day of week names.
+% \begin{macrocode}
+\newcommand*{\DTMdanishweekdayname}[1]{%
+ \ifcase#1
+ mandag%
+ \or
+ tirsdag%
+ \or
+ onsdag%
+ \or
+ torsdag%
+ \or
+ fredag%
+ \or
+ l\protect\o rdag%
+ \or
+ s\protect\o ndag%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMdanishWeekdayname}
+% As above but start with a capital.
+% \begin{macrocode}
+\newcommand*{\DTMdanishWeekdayname}[1]{%
+ \ifcase#1
+ Mandag%
+ \or
+ Tirsdag%
+ \or
+ Onsdag%
+ \or
+ Torsdag%
+ \or
+ Fredag%
+ \or
+ L\protect\o rdag%
+ \or
+ S\protect\o ndag%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%
+%\iffalse
+% \begin{macrocode}
+%</datetime2-danish-ascii.ldf>
+% \end{macrocode}
+%\fi
+%
+%\subsection{Main Danish Module (\texttt{datetime2-danish.ldf})}
+%\changes{1.0}{2015-03-30}{Initial release}
+%
+%\iffalse
+% \begin{macrocode}
+%<*datetime2-danish.ldf>
+% \end{macrocode}
+%\fi
+%
+% Identify Module
+% \begin{macrocode}
+\ProvidesDateTimeModule{danish}[2018/03/19 v1.1]
+% \end{macrocode}
+% Need to find out if XeTeX or LuaTeX are being used.
+% \begin{macrocode}
+\RequirePackage{ifxetex,ifluatex}
+% \end{macrocode}
+% XeTeX and LuaTeX natively support UTF-8, so load
+% \texttt{danish-utf8} if either of those engines are used
+% otherwise load \texttt{danish-ascii}.
+% \begin{macrocode}
+\ifxetex
+ \RequireDateTimeModule{danish-utf8}
+\else
+ \ifluatex
+ \RequireDateTimeModule{danish-utf8}
+ \else
+ \RequireDateTimeModule{danish-ascii}
+ \fi
+\fi
+% \end{macrocode}
+%
+% Define the \texttt{danish} style.
+% The time style is the same as the "default" style
+% provided by \sty{datetime2}. This may need correcting. For
+% example, if a 12 hour style similar to the "englishampm" (from the
+% "english-base" module) is required.
+%
+% Allow the user a way of configuring the "danish" and
+% "danish-numeric" styles. This doesn't use the package wide
+% separators such as
+% \cs{dtm@datetimesep} in case other date formats are also required.
+%\begin{macro}{\DTMdanishdaymonthsep}
+% The separator between the day and month for the text format.
+% \begin{macrocode}
+\newcommand*{\DTMdanishdaymonthsep}{\DTMtexorpdfstring{\protect~}{\space}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMdanishmonthyearsep}
+% The separator between the month and year for the text format.
+% \begin{macrocode}
+\newcommand*{\DTMdanishmonthyearsep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMdanishdatetimesep}
+% The separator between the date and time blocks in the full format
+% (either text or numeric).
+% \begin{macrocode}
+\newcommand*{\DTMdanishdatetimesep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMdanishtimezonesep}
+% The separator between the time and zone blocks in the full format
+% (either text or numeric).
+% \begin{macrocode}
+\newcommand*{\DTMdanishtimezonesep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMdanishdatesep}
+% The separator for the numeric date format.
+% \begin{macrocode}
+\newcommand*{\DTMdanishdatesep}{-}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMdanishtimesep}
+% The separator for the numeric time format.
+% \begin{macrocode}
+\newcommand*{\DTMdanishtimesep}{:}
+% \end{macrocode}
+%\end{macro}
+%
+%Provide keys that can be used in \cs{DTMlangsetup} to set these
+%separators.
+% \begin{macrocode}
+\DTMdefkey{danish}{daymonthsep}{\renewcommand*{\DTMdanishdaymonthsep}{#1}}
+\DTMdefkey{danish}{monthyearsep}{\renewcommand*{\DTMdanishmonthyearsep}{#1}}
+\DTMdefkey{danish}{datetimesep}{\renewcommand*{\DTMdanishdatetimesep}{#1}}
+\DTMdefkey{danish}{timezonesep}{\renewcommand*{\DTMdanishtimezonesep}{#1}}
+\DTMdefkey{danish}{datesep}{\renewcommand*{\DTMdanishdatesep}{#1}}
+\DTMdefkey{danish}{timesep}{\renewcommand*{\DTMdanishtimesep}{#1}}
+% \end{macrocode}
+%
+% TODO: provide a boolean key to switch between full and abbreviated
+% formats if appropriate. (I don't know how the date should be
+% abbreviated.)
+%
+% Define a boolean key that determines if the time zone mappings
+% should be used.
+% \begin{macrocode}
+\DTMdefboolkey{danish}{mapzone}[true]{}
+% \end{macrocode}
+% The default is to use mappings.
+% \begin{macrocode}
+\DTMsetbool{danish}{mapzone}{true}
+% \end{macrocode}
+%
+% Define a boolean key that determines if the day of month should be
+% displayed.
+% \begin{macrocode}
+\DTMdefboolkey{danish}{showdayofmonth}[true]{}
+% \end{macrocode}
+% The default is to show the day of month.
+% \begin{macrocode}
+\DTMsetbool{danish}{showdayofmonth}{true}
+% \end{macrocode}
+%
+% Define a boolean key that determines if the year should be
+% displayed.
+% \begin{macrocode}
+\DTMdefboolkey{danish}{showyear}[true]{}
+% \end{macrocode}
+% The default is to show the year.
+% \begin{macrocode}
+\DTMsetbool{danish}{showyear}{true}
+% \end{macrocode}
+%
+% Define the "danish" style. (TODO: implement day of week?)
+% \begin{macrocode}
+\DTMnewstyle
+ {danish}% label
+ {% date style
+ \renewcommand*\DTMdisplaydate[4]{%
+ \DTMifbool{danish}{showdayofmonth}
+ {\DTMdanishordinal{##3}\DTMdanishdaymonthsep}%
+ {}%
+ \DTMdanishmonthname{##2}%
+ \DTMifbool{danish}{showyear}%
+ {%
+ \DTMdanishmonthyearsep
+ \number##1
+ }%
+ {}%
+ }%
+ \renewcommand*\DTMDisplaydate[4]{%
+ \DTMifbool{danish}{showdayofmonth}
+ {%
+ \DTMdanishordinal{##3}\DTMdanishdaymonthsep
+ \DTMdanishmonthname{##2}%
+ }%
+ {%
+ \DTMdanishMonthname{##2}%
+ }%
+ \DTMifbool{danish}{showyear}%
+ {%
+ \DTMdanishmonthyearsep
+ \number##1
+ }%
+ {}%
+ }%
+ }%
+ {% time style (use default)
+ \DTMsettimestyle{default}%
+ }%
+ {% zone style
+ \DTMresetzones
+ \DTMdanishzonemaps
+ \renewcommand*{\DTMdisplayzone}[2]{%
+ \DTMifbool{danish}{mapzone}%
+ {\DTMusezonemapordefault{##1}{##2}}%
+ {%
+ \ifnum##1<0\else+\fi\DTMtwodigits{##1}%
+ \ifDTMshowzoneminutes\DTMdanishtimesep\DTMtwodigits{##2}\fi
+ }%
+ }%
+ }%
+ {% full style
+ \renewcommand*{\DTMdisplay}[9]{%
+ \ifDTMshowdate
+ \DTMdisplaydate{##1}{##2}{##3}{##4}%
+ \DTMdanishdatetimesep
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \DTMdanishtimezonesep
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+ \renewcommand*{\DTMDisplay}[9]{%
+ \ifDTMshowdate
+ \DTMDisplaydate{##1}{##2}{##3}{##4}%
+ \DTMdanishdatetimesep
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \DTMdanishtimezonesep
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+ }%
+% \end{macrocode}
+%
+% Define numeric style.
+% \begin{macrocode}
+\DTMnewstyle
+ {danish-numeric}% label
+ {% date style
+ \renewcommand*\DTMdisplaydate[4]{%
+ \DTMifbool{danish}{showdayofmonth}%
+ {%
+ \number##3 % space intended
+ \DTMdanishdatesep
+ }%
+ {}%
+ \number##2 % space intended
+ \DTMifbool{danish}{showyear}%
+ {%
+ \DTMdanishdatesep
+ \number##1 % space intended
+ }%
+ {}%
+ }%
+ \renewcommand*{\DTMDisplaydate}[4]{\DTMdisplaydate{##1}{##2}{##3}{##4}}%
+ }%
+ {% time style
+ \renewcommand*\DTMdisplaytime[3]{%
+ \number##1
+ \DTMdanishtimesep\DTMtwodigits{##2}%
+ \ifDTMshowseconds\DTMdanishtimesep\DTMtwodigits{##3}\fi
+ }%
+ }%
+ {% zone style
+ \DTMresetzones
+ \DTMdanishzonemaps
+ \renewcommand*{\DTMdisplayzone}[2]{%
+ \DTMifbool{danish}{mapzone}%
+ {\DTMusezonemapordefault{##1}{##2}}%
+ {%
+ \ifnum##1<0\else+\fi\DTMtwodigits{##1}%
+ \ifDTMshowzoneminutes\DTMdanishtimesep\DTMtwodigits{##2}\fi
+ }%
+ }%
+ }%
+ {% full style
+ \renewcommand*{\DTMdisplay}[9]{%
+ \ifDTMshowdate
+ \DTMdisplaydate{##1}{##2}{##3}{##4}%
+ \DTMdanishdatetimesep
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \DTMdanishtimezonesep
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+ \renewcommand*{\DTMDisplay}{\DTMdisplay}%
+ }
+% \end{macrocode}
+%
+%\begin{macro}{\DTMdanishzonemaps}
+% The time zone mappings are set through this command, which can be
+% redefined if extra mappings are required or mappings need to be
+% removed.
+% \begin{macrocode}
+\newcommand*{\DTMdanishzonemaps}{%
+ \DTMdefzonemap{01}{00}{CET}%
+ \DTMdefzonemap{02}{00}{CEST}%
+}
+% \end{macrocode}
+%\end{macro}
+
+% Switch style according to the \opt{useregional} setting.
+% \begin{macrocode}
+\DTMifcaseregional
+{}% do nothing
+{\DTMsetstyle{danish}}
+{\DTMsetstyle{danish-numeric}}
+% \end{macrocode}
+%
+% Redefine \cs{datedanish} (or \cs{date}\meta{dialect}) to prevent
+% \sty{babel} from resetting \cs{today}. (For this to work,
+% \sty{babel} must already have been loaded if it's required.)
+%\changes{1.1}{2018-03-19}{removed spurious space}
+% \begin{macrocode}
+\ifcsundef{date\CurrentTrackedDialect}
+{%
+ \ifundef\datedanish
+ {% do nothing
+ }%
+ {%
+ \def\datedanish{%
+ \DTMifcaseregional
+ {}% do nothing
+ {\DTMsetstyle{danish}}%
+ {\DTMsetstyle{danish-numeric}}%
+ }%
+ }%
+}%
+{%
+ \csdef{date\CurrentTrackedDialect}{%
+ \DTMifcaseregional
+ {}% do nothing
+ {\DTMsetstyle{danish}}%
+ {\DTMsetstyle{danish-numeric}}%
+ }%
+}%
+% \end{macrocode}
+%\iffalse
+% \begin{macrocode}
+%</datetime2-danish.ldf>
+% \end{macrocode}
+%\fi
+%\Finale
+\endinput
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-danish/datetime2-danish.ins b/macros/latex/contrib/datetime2-contrib/datetime2-danish/datetime2-danish.ins
new file mode 100644
index 0000000000..4e6b9ddfef
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-danish/datetime2-danish.ins
@@ -0,0 +1,61 @@
+\input docstrip
+
+\preamble
+
+ datetime2-danish.dtx
+ Copyright 2018 Nicola Talbot
+
+ This work may be distributed and/or modified under the
+ conditions of the LaTeX Project Public License, either version 1.3
+ of this license of (at your option) any later version.
+ The latest version of this license is in
+ http://www.latex-project.org/lppl.txt
+ and version 1.3 or later is part of all distributions of LaTeX
+ version 2005/12/01 or later.
+
+ This work has the LPPL maintenance status `inactive'.
+
+ This work consists of the files datetime2-danish.dtx and
+ datetime2-danish.ins and the derived files
+ datetime2-danish-utf8.ldf, datetime2-danish-ascii.ldf and
+ datetime2-danish.ldf.
+
+\endpreamble
+
+\askforoverwritefalse
+
+\generate
+{%
+ \file
+ {datetime2-danish-utf8.ldf}%
+ {%
+ \usepreamble\defaultpreamble
+ \usepostamble\defaultpostamble
+ \from{datetime2-danish.dtx}{datetime2-danish-utf8.ldf,package}%
+ }%
+}
+
+\generate
+{%
+ \file
+ {datetime2-danish-ascii.ldf}%
+ {%
+ \usepreamble\defaultpreamble
+ \usepostamble\defaultpostamble
+ \from{datetime2-danish.dtx}{datetime2-danish-ascii.ldf,package}%
+ }%
+}
+
+\generate
+{%
+ \file
+ {datetime2-danish.ldf}%
+ {%
+ \usepreamble\defaultpreamble
+ \usepostamble\defaultpostamble
+ \from{datetime2-danish.dtx}{datetime2-danish.ldf,package}%
+ }%
+}
+
+\endbatchfile
+
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-danish/datetime2-danish.pdf b/macros/latex/contrib/datetime2-contrib/datetime2-danish/datetime2-danish.pdf
new file mode 100644
index 0000000000..96445b2415
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-danish/datetime2-danish.pdf
Binary files differ
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-dutch/README b/macros/latex/contrib/datetime2-contrib/datetime2-dutch/README
new file mode 100644
index 0000000000..7b78ccf61c
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-dutch/README
@@ -0,0 +1,57 @@
+Dutch Language Module for datetime2 Package
+
+Author: Nicola L. C. Talbot (inactive)
+
+Licence: LPPL
+
+Required Packages: datetime2, tracklang
+
+This module is unmaintained. If you want to volunteer to take over
+the maintenance contact me at www.dickimaw-books.com/contact.html
+
+Example usage:
+
+\documentclass{article}
+\usepackage[dutch]{datetime2}
+\begin{document}
+\today
+\end{document}
+
+\documentclass[dutch]{article}
+\usepackage{babel}
+\usepackage[useregional]{datetime2}
+\begin{document}
+\today
+\end{document}
+
+\documentclass{article}
+\usepackage{polyglossia}
+\setmainlanguage{dutch}
+\usepackage[dutch]{datetime2}
+\begin{document}
+\today
+\end{document}
+
+INSTALLATION
+============
+
+latex datetime2-dutch.ins
+
+Move all *.ldf files to
+TEXMF/tex/latex/datetime2-contrib/datetime2-dutch/
+
+Documentation:
+
+pdflatex datetime2-dutch.dtx
+makeindex -s gind.ist datetime2-dutch.idx
+makeindex -s gglo.ist -o datetime2-dutch.gls datetime2-dutch.glo
+pdflatex datetime2-dutch.dtx
+pdflatex datetime2-dutch.dtx
+
+Move datetime2-dutch.pdf and README to
+TEXMF/doc/latex/datetime2-contrib/datetime2-dutch/
+
+This material is subject to the LaTeX Project Public License.
+See http://www.ctan.org/license/lppl1.3 for the details of that
+license.
+
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-dutch/datetime2-dutch.dtx b/macros/latex/contrib/datetime2-contrib/datetime2-dutch/datetime2-dutch.dtx
new file mode 100644
index 0000000000..2ba2a1ef15
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-dutch/datetime2-dutch.dtx
@@ -0,0 +1,583 @@
+%\iffalse
+%<*package>
+%% \CharacterTable
+%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+%% Digits \0\1\2\3\4\5\6\7\8\9
+%% Exclamation \! Double quote \" Hash (number) \#
+%% Dollar \$ Percent \% Ampersand \&
+%% Acute accent \' Left paren \( Right paren \)
+%% Asterisk \* Plus \+ Comma \,
+%% Minus \- Point \. Solidus \/
+%% Colon \: Semicolon \; Less than \<
+%% Equals \= Greater than \> Question mark \?
+%% Commercial at \@ Left bracket \[ Backslash \\
+%% Right bracket \] Circumflex \^ Underscore \_
+%% Grave accent \` Left brace \{ Vertical bar \|
+%% Right brace \} Tilde \~}
+%</package>
+%\fi
+% \iffalse
+% Doc-Source file to use with LaTeX2e
+% Copyright (C) 2018 Nicola Talbot, all rights reserved.
+% (New maintainer add relevant lines here.)
+% \fi
+% \iffalse
+%<*driver>
+\documentclass{ltxdoc}
+
+\usepackage{alltt}
+\usepackage{graphicx}
+\usepackage[utf8]{inputenc}
+\usepackage[T1]{fontenc}
+\usepackage[colorlinks,
+ bookmarks,
+ hyperindex=false,
+ pdfauthor={Nicola L.C. Talbot},
+ pdftitle={datetime2.sty Dutch Module}]{hyperref}
+
+
+\CheckSum{246}
+
+\renewcommand*{\usage}[1]{\hyperpage{#1}}
+\renewcommand*{\main}[1]{\hyperpage{#1}}
+\IndexPrologue{\section*{\indexname}\markboth{\indexname}{\indexname}}
+\setcounter{IndexColumns}{2}
+
+\newcommand*{\sty}[1]{\textsf{#1}}
+\newcommand*{\opt}[1]{\texttt{#1}\index{#1=\texttt{#1}|main}}
+
+\RecordChanges
+\PageIndex
+\CodelineNumbered
+
+\begin{document}
+\DocInput{datetime2-dutch.dtx}
+\end{document}
+%</driver>
+%\fi
+%
+%\MakeShortVerb{"}
+%
+%\title{Dutch Module for datetime2 Package}
+%\author{Nicola L. C. Talbot (inactive)}
+%\date{2018-04-06 (v1.1)}
+%\maketitle
+%
+%This module is currently unmaintained and may be subject to change.
+%If you want to volunteer to take over maintanance, contact me at
+%\url{http://www.dickimaw-books.com/contact.html}
+%
+%\begin{abstract}
+%This is the Dutch language module for the \sty{datetime2}
+%package. If you want to use the settings in this module you must
+%install it in addition to installing \sty{datetime2}. If you use
+%\sty{babel} or \sty{polyglossia}, you will need this module to
+%prevent them from redefining \cs{today}. The \sty{datetime2}
+% \opt{useregional} setting must be set to "text" or "numeric"
+% for the language styles to be set.
+% Alternatively, you can set the style in the document using
+% \cs{DTMsetstyle}, but this may be changed by \cs{date}\meta{language}
+% depending on the value of the \opt{useregional} setting.
+%\end{abstract}
+%
+%I've copied the date style from \texttt{babel-dutch}'s \cs{today}.
+%
+%I don't know if these settings are correct.
+%In particular, I don't know if the "dutch" time style is
+%correct. Currently this just uses the "default" time style. Please
+%be aware that this may change. Whoever takes over maintanance
+%of this module may can change it as appropriate.
+%
+%The new maintainer should add the line:
+%\begin{verbatim}
+% The Current Maintainer of this work is Name.
+%\end{verbatim}
+%to the preamble part in \texttt{datetime2-dutch.ins} where Name
+%is the name of the maintainer(s) and replace
+%the `inactive' status to `maintained'.
+%
+%Currently there is only a regionless style.
+%
+%\StopEventually{%
+%\clearpage
+%\phantomsection
+%\addcontentsline{toc}{section}{Change History}%
+%\PrintChanges
+%\addcontentsline{toc}{section}{\indexname}%
+%\PrintIndex}
+%\section{The Code}
+%At the moment there is only the one ".ldf" file.
+%
+%\subsection{Main Dutch Module (\texttt{datetime2-dutch.ldf})}
+%\changes{1.0}{2015-03-29}{Initial release}
+%
+%\iffalse
+% \begin{macrocode}
+%<*datetime2-dutch.ldf>
+% \end{macrocode}
+%\fi
+%
+% Identify Module
+% \begin{macrocode}
+\ProvidesDateTimeModule{dutch}[2018/04/06 v1.1]
+% \end{macrocode}
+%\begin{macro}{\DTMdutchordinal}
+% I don't know if this is correct, but it's provided in case
+% a suffix is required.
+% \begin{macrocode}
+\newcommand*{\DTMdutchordinal}[1]{%
+ \number#1 % space intended
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMdutchmonthname}
+% Dutch month names.
+% \begin{macrocode}
+\newcommand*{\DTMdutchmonthname}[1]{%
+ \ifcase#1
+ \or
+ januari%
+ \or
+ februari%
+ \or
+ maart%
+ \or
+ april%
+ \or
+ mei%
+ \or
+ juni%
+ \or
+ juli%
+ \or
+ augustus%
+ \or
+ september%
+ \or
+ oktober%
+ \or
+ november%
+ \or
+ december%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMdutchMonthname}
+% As above but start with a capital.
+% \begin{macrocode}
+\newcommand*{\DTMdutchMonthname}[1]{%
+ \ifcase#1
+ \or
+ Januari%
+ \or
+ Februari%
+ \or
+ Maart%
+ \or
+ April%
+ \or
+ Mei%
+ \or
+ Juni%
+ \or
+ Juli%
+ \or
+ Augustus%
+ \or
+ September%
+ \or
+ Oktober%
+ \or
+ November%
+ \or
+ December%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+% Week day names are provided but currently not used in the date style.
+%
+%\begin{macro}{\DTMdutchweekdayname}
+% Dutch day of week names.
+% \begin{macrocode}
+\newcommand*{\DTMdutchweekdayname}[1]{%
+ \ifcase#1
+ maandag%
+ \or
+ dinsdag%
+ \or
+ woensdag%
+ \or
+ donderdag%
+ \or
+ vrijdag%
+ \or
+ zaterdag%
+ \or
+ zondag%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMdutchWeekdayname}
+% As above but start with a capital.
+% \begin{macrocode}
+\newcommand*{\DTMdutchWeekdayname}[1]{%
+ \ifcase#1
+ Maandag%
+ \or
+ Dinsdag%
+ \or
+ Woensdag%
+ \or
+ Donderdag%
+ \or
+ Vrijdag%
+ \or
+ Zaterdag%
+ \or
+ Zondag%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMdutchshortweekdayname}
+% Abbreviated day of week names.
+% \begin{macrocode}
+\newcommand*{\DTMdutchshortweekdayname}[1]{%
+ \ifcase#1
+ ma%
+ \or
+ di%
+ \or
+ wo%
+ \or
+ do%
+ \or
+ vr%
+ \or
+ za%
+ \or
+ zo%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMdutchshortWeekdayname}
+% As above but start with a capital.
+% \begin{macrocode}
+\newcommand*{\DTMdutchshortWeekdayname}[1]{%
+ \ifcase#1
+ Ma%
+ \or
+ Di%
+ \or
+ Wo%
+ \or
+ Do%
+ \or
+ Vr%
+ \or
+ Za%
+ \or
+ Zo%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+% Define the \texttt{dutch} style.
+% The time style is the same as the "default" style
+% provided by \sty{datetime2}. This may need correcting. For
+% example, if a 12 hour style similar to the "englishampm" (from the
+% "english-base" module) is required.
+%
+% Allow the user a way of configuring the "dutch" and
+% "dutch-numeric" styles. This doesn't use the package wide
+% separators such as
+% \cs{dtm@datetimesep} in case other date formats are also required.
+%\begin{macro}{\DTMdutchdaymonthsep}
+% The separator between the day and month for the text format.
+% \begin{macrocode}
+\newcommand*{\DTMdutchdaymonthsep}{%
+ \DTMtexorpdfstring{\protect~}{\space}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMdutchmonthyearsep}
+% The separator between the month and year for the text format.
+% \begin{macrocode}
+\newcommand*{\DTMdutchmonthyearsep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMdutchdatetimesep}
+% The separator between the date and time blocks in the full format
+% (either text or numeric).
+% \begin{macrocode}
+\newcommand*{\DTMdutchdatetimesep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMdutchtimezonesep}
+% The separator between the time and zone blocks in the full format
+% (either text or numeric).
+% \begin{macrocode}
+\newcommand*{\DTMdutchtimezonesep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMdutchdatesep}
+% The separator for the numeric date format.
+% \begin{macrocode}
+\newcommand*{\DTMdutchdatesep}{-}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMdutchtimesep}
+% The separator for the numeric time format.
+% \begin{macrocode}
+\newcommand*{\DTMdutchtimesep}{:}
+% \end{macrocode}
+%\end{macro}
+%
+%Provide keys that can be used in \cs{DTMlangsetup} to set these
+%separators.
+% \begin{macrocode}
+\DTMdefkey{dutch}{daymonthsep}{\renewcommand*{\DTMdutchdaymonthsep}{#1}}
+\DTMdefkey{dutch}{monthyearsep}{\renewcommand*{\DTMdutchmonthyearsep}{#1}}
+\DTMdefkey{dutch}{datetimesep}{\renewcommand*{\DTMdutchdatetimesep}{#1}}
+\DTMdefkey{dutch}{timezonesep}{\renewcommand*{\DTMdutchtimezonesep}{#1}}
+\DTMdefkey{dutch}{datesep}{\renewcommand*{\DTMdutchdatesep}{#1}}
+\DTMdefkey{dutch}{timesep}{\renewcommand*{\DTMdutchtimesep}{#1}}
+% \end{macrocode}
+%
+% TODO: provide a boolean key to switch between full and abbreviated
+% formats if appropriate. (I don't know how the date should be
+% abbreviated.)
+%
+% Define a boolean key that determines if the time zone mappings
+% should be used.
+% \begin{macrocode}
+\DTMdefboolkey{dutch}{mapzone}[true]{}
+% \end{macrocode}
+% The default is to use mappings.
+% \begin{macrocode}
+\DTMsetbool{dutch}{mapzone}{true}
+% \end{macrocode}
+%
+% Define a boolean key that determines if the day of month should be
+% displayed.
+% \begin{macrocode}
+\DTMdefboolkey{dutch}{showdayofmonth}[true]{}
+% \end{macrocode}
+% The default is to show the day of month.
+% \begin{macrocode}
+\DTMsetbool{dutch}{showdayofmonth}{true}
+% \end{macrocode}
+%
+% Define a boolean key that determines if the year should be
+% displayed.
+% \begin{macrocode}
+\DTMdefboolkey{dutch}{showyear}[true]{}
+% \end{macrocode}
+% The default is to show the year.
+% \begin{macrocode}
+\DTMsetbool{dutch}{showyear}{true}
+% \end{macrocode}
+%
+% Define the "dutch" style. (TODO: implement day of week?)
+% \begin{macrocode}
+\DTMnewstyle
+ {dutch}% label
+ {% date style
+ \renewcommand*\DTMdisplaydate[4]{%
+ \DTMifbool{dutch}{showdayofmonth}
+ {\DTMdutchordinal{##3}\DTMdutchdaymonthsep}%
+ {}%
+ \DTMdutchmonthname{##2}%
+ \DTMifbool{dutch}{showyear}%
+ {%
+ \DTMdutchmonthyearsep
+ \number##1 % space intended
+ }%
+ {}%
+ }%
+ \renewcommand*\DTMDisplaydate[4]{%
+ \DTMifbool{dutch}{showdayofmonth}
+ {%
+ \DTMdutchordinal{##3}\DTMdutchdaymonthsep
+ \DTMdutchmonthname{##2}%
+ }%
+ {%
+ \DTMdutchMonthname{##2}%
+ }%
+ \DTMifbool{dutch}{showyear}%
+ {%
+ \DTMdutchmonthyearsep
+ \number##1 % space intended
+ }%
+ {}%
+ }%
+ }%
+ {% time style (use default)
+ \DTMsettimestyle{default}%
+ }%
+ {% zone style
+ \DTMresetzones
+ \DTMdutchzonemaps
+ \renewcommand*{\DTMdisplayzone}[2]{%
+ \DTMifbool{dutch}{mapzone}%
+ {\DTMusezonemapordefault{##1}{##2}}%
+ {%
+ \ifnum##1<0\else+\fi\DTMtwodigits{##1}%
+ \ifDTMshowzoneminutes\DTMdutchtimesep\DTMtwodigits{##2}\fi
+ }%
+ }%
+ }%
+ {% full style
+ \renewcommand*{\DTMdisplay}[9]{%
+ \ifDTMshowdate
+ \DTMdisplaydate{##1}{##2}{##3}{##4}%
+ \DTMdutchdatetimesep
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \DTMdutchtimezonesep
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+ \renewcommand*{\DTMDisplay}[9]{%
+ \ifDTMshowdate
+ \DTMDisplaydate{##1}{##2}{##3}{##4}%
+ \DTMdutchdatetimesep
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \DTMdutchtimezonesep
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+ }%
+% \end{macrocode}
+%
+% Define numeric style.
+% \begin{macrocode}
+\DTMnewstyle
+ {dutch-numeric}% label
+ {% date style
+ \renewcommand*\DTMdisplaydate[4]{%
+ \DTMifbool{dutch}{showdayofmonth}%
+ {%
+ \number##3 % space intended
+ \DTMdutchdatesep
+ }%
+ {}%
+ \number##2 % space intended
+ \DTMifbool{dutch}{showyear}%
+ {%
+ \DTMdutchdatesep
+ \number##1 % space intended
+ }%
+ {}%
+ }%
+ \renewcommand*{\DTMDisplaydate}{\DTMdisplaydate}%
+ }%
+ {% time style
+ \renewcommand*\DTMdisplaytime[3]{%
+ \number##1
+ \DTMdutchtimesep\DTMtwodigits{##2}%
+ \ifDTMshowseconds\DTMdutchtimesep\DTMtwodigits{##3}\fi
+ }%
+ }%
+ {% zone style
+ \DTMresetzones
+ \DTMdutchzonemaps
+ \renewcommand*{\DTMdisplayzone}[2]{%
+ \DTMifbool{dutch}{mapzone}%
+ {\DTMusezonemapordefault{##1}{##2}}%
+ {%
+ \ifnum##1<0\else+\fi\DTMtwodigits{##1}%
+ \ifDTMshowzoneminutes\DTMdutchtimesep\DTMtwodigits{##2}\fi
+ }%
+ }%
+ }%
+ {% full style
+ \renewcommand*{\DTMdisplay}[9]{%
+ \ifDTMshowdate
+ \DTMdisplaydate{##1}{##2}{##3}{##4}%
+ \DTMdutchdatetimesep
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \DTMdutchtimezonesep
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+ \renewcommand*{\DTMDisplay}{\DTMdisplay}%
+ }
+% \end{macrocode}
+%
+%\begin{macro}{\DTMdutchzonemaps}
+% The time zone mappings are set through this command, which can be
+% redefined if extra mappings are required or mappings need to be
+% removed.
+% \begin{macrocode}
+\newcommand*{\DTMdutchzonemaps}{%
+ \DTMdefzonemap{01}{00}{CET}%
+ \DTMdefzonemap{02}{00}{CEST}%
+}
+% \end{macrocode}
+%\end{macro}
+
+% Switch style according to the \opt{useregional} setting.
+% \begin{macrocode}
+\DTMifcaseregional
+{}% do nothing
+{\DTMsetstyle{dutch}}
+{\DTMsetstyle{dutch-numeric}}
+% \end{macrocode}
+%
+% Redefine \cs{datedutch} (or \cs{date}\meta{dialect}) to prevent
+% \sty{babel} from resetting \cs{today}. (For this to work,
+% \sty{babel} must already have been loaded if it's required.)
+%\changes{1.1}{2018-04-06}{removed spurious space}
+% \begin{macrocode}
+\ifcsundef{date\CurrentTrackedDialect}
+{%
+ \ifundef\datedutch
+ {% do nothing
+ }%
+ {%
+ \def\datedutch{%
+ \DTMifcaseregional
+ {}% do nothing
+ {\DTMsetstyle{dutch}}%
+ {\DTMsetstyle{dutch-numeric}}%
+ }%
+ }%
+}%
+{%
+ \csdef{date\CurrentTrackedDialect}{%
+ \DTMifcaseregional
+ {}% do nothing
+ {\DTMsetstyle{dutch}}%
+ {\DTMsetstyle{dutch-numeric}}%
+ }%
+}%
+% \end{macrocode}
+%\iffalse
+% \begin{macrocode}
+%</datetime2-dutch.ldf>
+% \end{macrocode}
+%\fi
+%\Finale
+\endinput
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-dutch/datetime2-dutch.ins b/macros/latex/contrib/datetime2-contrib/datetime2-dutch/datetime2-dutch.ins
new file mode 100644
index 0000000000..c1fbd4bd35
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-dutch/datetime2-dutch.ins
@@ -0,0 +1,38 @@
+\input docstrip
+
+\preamble
+
+ datetime2-dutch.dtx
+ Copyright 2018 Nicola Talbot
+
+ This work may be distributed and/or modified under the
+ conditions of the LaTeX Project Public License, either version 1.3
+ of this license of (at your option) any later version.
+ The latest version of this license is in
+ http://www.latex-project.org/lppl.txt
+ and version 1.3 or later is part of all distributions of LaTeX
+ version 2005/12/01 or later.
+
+ This work has the LPPL maintenance status `inactive'.
+
+ This work consists of the files datetime2-dutch.dtx and
+ datetime2-dutch.ins and the derived file
+ datetime2-dutch.ldf.
+
+\endpreamble
+
+\askforoverwritefalse
+
+\generate
+{%
+ \file
+ {datetime2-dutch.ldf}%
+ {%
+ \usepreamble\defaultpreamble
+ \usepostamble\defaultpostamble
+ \from{datetime2-dutch.dtx}{datetime2-dutch.ldf,package}%
+ }%
+}
+
+\endbatchfile
+
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-dutch/datetime2-dutch.pdf b/macros/latex/contrib/datetime2-contrib/datetime2-dutch/datetime2-dutch.pdf
new file mode 100644
index 0000000000..ff9c68be42
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-dutch/datetime2-dutch.pdf
Binary files differ
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-en-fulltext/README b/macros/latex/contrib/datetime2-contrib/datetime2-en-fulltext/README
new file mode 100644
index 0000000000..97586a91b7
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-en-fulltext/README
@@ -0,0 +1,50 @@
+English Full Text Styles for datetime2 Package
+
+Author: Nicola L. C. Talbot
+ www.dickimaw-books.com
+
+Licence: LPPL
+
+Required Packages: datetime2, fmtcount
+
+This package provides the following the date and time
+styles "en-fulltext", "en-FullText", "en-FULLTEXT" and the
+additional time style "en-Fulltext". (The date equivalent can be
+obtained through commands like \Today.)
+
+Example usage:
+
+\documentclass{article}
+\usepackage[showdow]{datetime2-en-fulltext}
+\begin{document}
+Date: \today. Time: \DTMcurrenttime.
+\end{document}
+
+Unlike the base styles provided by datetime2.sty, these styles
+aren't expandable styles. This means that you can't use the
+date or time in PDF bookmarks or in the argument of certain
+commands, such as \MakeUppercase, while these styles are in use.
+
+INSTALLATION
+============
+
+latex datetime2-fulltext.ins
+
+Move *.sty file to
+TEXMF/tex/latex/datetime2-contrib/datetime2-en-fulltext/
+
+Documentation:
+
+pdflatex datetime2-fulltext.dtx
+makeindex -s gind.ist datetime2-fulltext.idx
+makeindex -s gglo.ist -o datetime2-fulltext.gls datetime2-fulltext.glo
+pdflatex datetime2-fulltext.dtx
+pdflatex datetime2-fulltext.dtx
+
+Move datetime2-fulltext.pdf and README to
+TEXMF/doc/latex/datetime2-contrib/datetime2-fulltext/
+
+This material is subject to the LaTeX Project Public License.
+See http://www.ctan.org/license/lppl1.3 for the details of that
+license.
+
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-en-fulltext/datetime2-en-fulltext.dtx b/macros/latex/contrib/datetime2-contrib/datetime2-en-fulltext/datetime2-en-fulltext.dtx
new file mode 100644
index 0000000000..e3958a3a38
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-en-fulltext/datetime2-en-fulltext.dtx
@@ -0,0 +1,901 @@
+%\iffalse
+%<*package>
+%% \CharacterTable
+%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+%% Digits \0\1\2\3\4\5\6\7\8\9
+%% Exclamation \! Double quote \" Hash (number) \#
+%% Dollar \$ Percent \% Ampersand \&
+%% Acute accent \' Left paren \( Right paren \)
+%% Asterisk \* Plus \+ Comma \,
+%% Minus \- Point \. Solidus \/
+%% Colon \: Semicolon \; Less than \<
+%% Equals \= Greater than \> Question mark \?
+%% Commercial at \@ Left bracket \[ Backslash \\
+%% Right bracket \] Circumflex \^ Underscore \_
+%% Grave accent \` Left brace \{ Vertical bar \|
+%% Right brace \} Tilde \~}
+%</package>
+%\fi
+% \iffalse
+% Doc-Source file to use with LaTeX2e
+% Copyright (C) 2015 Nicola Talbot, all rights reserved.
+% \fi
+% \iffalse
+%<*driver>
+\documentclass{ltxdoc}
+
+\usepackage{alltt}
+\usepackage{graphicx}
+\usepackage[utf8]{inputenc}
+\usepackage[T1]{fontenc}
+\usepackage{datetime2-en-fulltext}
+\usepackage[colorlinks,
+ bookmarks,
+ hyperindex=false,
+ pdfauthor={Nicola L.C. Talbot},
+ pdftitle={datetime2-en-fulltext.sty: English Full Text
+Date and Time Styles}]{hyperref}
+
+
+\CheckSum{649}
+
+\renewcommand*{\usage}[1]{\hyperpage{#1}}
+\renewcommand*{\main}[1]{\hyperpage{#1}}
+\IndexPrologue{\section*{\indexname}\markboth{\indexname}{\indexname}}
+\setcounter{IndexColumns}{2}
+
+\newcommand*{\sty}[1]{\textsf{#1}}
+\newcommand*{\opt}[1]{\texttt{#1}\index{#1=\texttt{#1}|main}}
+
+\RecordChanges
+\PageIndex
+\CodelineNumbered
+
+\begin{document}
+\DocInput{datetime2-en-fulltext.dtx}
+\end{document}
+%</driver>
+%\fi
+%
+%\MakeShortVerb{"}
+%
+%\title{datetime2-en-fulltext.sty: English Full Text Date and Time
+%Styles}
+%\author{Nicola L. C. Talbot}
+%\date{2014-04-01 (v1.0)}
+%\maketitle
+%
+%\begin{abstract}
+%This is a supplementary package that provides English full text date and
+%time styles for the datetime2.sty package. These styles are
+%analogous to the styles provided by the old \sty{datetime}'s
+%\cs{textdate} and \cs{oclock}. \textbf{These styles are not
+%expandable styles.} This means that you can't use them in PDF
+%bookmarks nor can you use them in case-changing commands such as
+%\cs{MakeUppercase}.
+%\end{abstract}
+%
+%\section{Introduction}
+%
+%This package loads the \sty{datetime2} package and the
+%"english-base" language module, if not already loaded, and provides the
+%date styles:
+%\begin{description}
+%\item[en-fulltext] Produces the date in the style:
+%\DTMsetdatestyle{en-fulltext}\today. (Lower case ordinal and number
+%words.) Commands such as \cs{Today} will start with a capital. For
+%example: \Today.
+%\item[en-FullText] Produces the date in the style:
+%\DTMsetdatestyle{en-FullText}\today. (Title Case.)
+%\item[en-FULLTEXT] Produces the date in the style:
+%\DTMsetdatestyle{en-FULLTEXT}\today. (All caps.)
+%\end{description}
+%These styles honour the \opt{showdow} setting. Example:
+%\begin{verbatim}
+%\documentclass{article}
+%\usepackage[showdow]{datetime2-en-fulltext}
+%\begin{document}
+%Date: \today.
+%\end{document}
+%\end{verbatim}
+%The separator between the month and year is given by
+%\cs{DTMenfulltextmonthyearsep} which may be redefined using
+%\cs{renewcommand}.
+%
+%The \sty{datetime2-en-fulltext} package automatically switches on
+%the "en-fulltext" date style. You can switch the style using
+%\cs{DTMsetdatestyle}. For example:
+%\begin{verbatim}
+%\DTMsetdatestyle{en-FullText}
+%\end{verbatim}
+%
+%This package also provides the time styles:
+%\begin{description}
+%\item[en-fulltext] Produces the time in the style:
+%\DTMsettimestyle{en-fulltext}\DTMcurrenttime. (Lower case.)
+%
+%\item[en-Fulltext] Produces the time in the style:
+%\DTMsettimestyle{en-Fulltext}\DTMcurrenttime. (Initial capital.)
+%
+%\item[en-FullText] Produces the time in the style:
+%\DTMsettimestyle{en-FullText}\DTMcurrenttime. (Title Case.)
+%
+%\item[en-FULLTEXT] Produces the time in the style:
+%\DTMsettimestyle{en-FULLTEXT}\DTMcurrenttime. (All caps.)
+%
+%\end{description}
+%
+%The \sty{datetime2-en-fulltext} package automatically switches on
+%the "en-fulltext" time style. You can switch the style using
+%\cs{DTMsettimestyle}. For example:
+%\begin{verbatim}
+%\DTMsettimestyle{en-FullText}
+%\end{verbatim}
+%
+%Note that if you use \sty{polyglossia} or \sty{babel} and you don't
+%have \sty{datetime2}'s \opt{useregional} setting set to "false",
+%then the regional styles will override the styles provided here.
+%
+%\StopEventually{%
+%\clearpage
+%\phantomsection
+%\addcontentsline{toc}{section}{Change History}%
+%\PrintChanges
+%\addcontentsline{toc}{section}{\indexname}%
+%\PrintIndex}
+%\section{The Code}
+%
+%\changes{1.0}{2015-04-01}{Initial release}
+%\iffalse
+% \begin{macrocode}
+%<*datetime2-en-fulltext.sty>
+% \end{macrocode}
+%\fi
+%Identify package
+% \begin{macrocode}
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{datetime2-en-fulltext}[2015/04/01 v1.0]
+% \end{macrocode}
+% Pass all options to \sty{datetime2}:
+% \begin{macrocode}
+\DeclareOption*{\PassOptionsToPackage{\CurrentOption}{datetime2}}
+\ProcessOptions
+% \end{macrocode}
+% Requires \sty{datetime2}:
+% \begin{macrocode}
+\RequirePackage{datetime2}
+% \end{macrocode}
+% Also requries \sty{fmtcount}:
+% \begin{macrocode}
+\RequirePackage{fmtcount}
+% \end{macrocode}
+% If the "english-base" language module hasn't been loaded, load it now.
+% \begin{macrocode}
+\def\CurrentTrackedDialect{english}
+\RequireDateTimeModule{english-base}
+\undef\CurrentTrackedDialect
+% \end{macrocode}
+% Define the "en-fulltext" date style:
+% \begin{macrocode}
+\DTMnewdatestyle{en-fulltext}{%
+ \renewcommand*\DTMdisplaydate[4]{%
+ \ifDTMshowdow
+ \ifnum##4>-1
+ \DTMenglishweekdayname{##4} the\space
+ \fi
+ \fi
+ \protect\ordinalstringnum{##3} of \DTMenglishmonthname{##2}%
+ \DTMenfulltextmonthyearsep
+ \protect\numberstringnum{##1}%
+ }%
+ \renewcommand*\DTMDisplaydate[4]{%
+ \ifDTMshowdow
+ \ifnum##4>-1
+ \DTMenglishweekdayname{##4} the\space
+ \else
+ \protect\Ordinalstringnum{##3}
+ \fi
+ \else
+ \protect\Ordinalstringnum{##3}
+ \fi
+ of \DTMenglishmonthname{##2}%
+ \DTMenfulltextmonthyearsep
+ \protect\numberstringnum{##1}%
+ }%
+}
+% \end{macrocode}
+%
+% Define the "en-FullText" date style:
+% \begin{macrocode}
+\DTMnewdatestyle{en-FullText}{%
+ \renewcommand*\DTMdisplaydate[4]{%
+ \ifDTMshowdow
+ \ifnum##4>-1
+ \DTMenglishweekdayname{##4} the\space
+ \fi
+ \fi
+ \protect\Ordinalstringnum{##3} of \DTMenglishmonthname{##2}%
+ \DTMenfulltextmonthyearsep
+ \protect\Numberstringnum{##1}%
+ }%
+ \renewcommand*\DTMDisplaydate{\DTMdisplaydate}%
+}
+% \end{macrocode}
+%
+% Define the "en-FULLTEXT" date style:
+% \begin{macrocode}
+\DTMnewdatestyle{en-FULLTEXT}{%
+ \renewcommand*\DTMdisplaydate[4]{%
+ \ifDTMshowdow
+ \ifnum##4>-1
+ \MakeUppercase{\DTMenglishweekdayname{##4}} THE\space
+ \fi
+ \fi
+ \protect\ORDINALstringnum{##3} OF
+ \MakeUppercase{\DTMenglishmonthname{##2}%
+ \DTMenfulltextmonthyearsep}%
+ \protect\NUMBERstringnum{##1}%
+ }%
+ \renewcommand*\DTMDisplaydate{\DTMdisplaydate}%
+}
+% \end{macrocode}
+%
+%\begin{macro}{\DTMenfulltextmonthyearsep}
+% Separator between month and year.
+% \begin{macrocode}
+\newcommand*\DTMenfulltextmonthyearsep{,\space}
+% \end{macrocode}
+%\end{macro}
+% Set the "en-fulltext" date style:
+% \begin{macrocode}
+\DTMsetdatestyle{en-fulltext}
+% \end{macrocode}
+%
+%Define the "en-fulltext" time style. Seconds are ignored.
+% \begin{macrocode}
+\DTMnewtimestyle{en-fulltext}{%
+ \renewcommand*\DTMdisplaytime[3]{%
+ \ifboolexpr
+ { test {\ifnumequal{##2}{0}} and
+ (
+ test {\ifnumequal{##1}{0}}
+ or test {\ifnumequal{##1}{12}}
+ or test {\ifnumequal{##1}{24}}
+ )
+ }%
+ {%
+% \end{macrocode}
+% Either midnight or midday.
+% \begin{macrocode}
+ \ifnum##1=12
+ \DTMenglishnoon
+ \else
+ \DTMenglishmidnight
+ \fi
+ }%
+ {%
+% \end{macrocode}
+% Neither midnight nor midday.
+% \begin{macrocode}
+ \ifnum##2=0
+% \end{macrocode}
+% On the hour.
+% \begin{macrocode}
+ \protect\numberstringnum{##1} \DTMoclockstring
+ \else
+% \end{macrocode}
+% Not on the hour.
+% \begin{macrocode}
+ \ifnum##2<31
+% \end{macrocode}
+% Past the hour.
+% \begin{macrocode}
+ \ifnum##2=15
+% \end{macrocode}
+% Quarter past the hour.
+% \begin{macrocode}
+ \DTMquarterpaststring\space
+ \else
+ \ifnum##2=30
+% \end{macrocode}
+% Half past the hour.
+% \begin{macrocode}
+ \DTMhalfpaststring\space
+ \else
+ \protect\numberstringnum{##2}
+ \ifnum##2=1 \DTMminutepaststring\else \DTMminutespaststring\fi
+ \space
+ \fi
+ \fi
+ \ifnum##1>12
+ \ifnum##1=24
+ \DTMenglishmidnight
+ \else
+ \protect\numberstringnum{\numexpr##1-12}%
+ \fi
+ \else
+ \ifnum##1=0
+ \DTMenglishmidnight
+ \else
+ \protect\numberstringnum{##1}%
+ \fi
+ \fi
+ \else
+% \end{macrocode}
+% To the hour.
+% \begin{macrocode}
+ \ifnum##2=45
+ \DTMquartertostring\space
+ \else
+ \protect\numberstringnum{\numexpr60-##2}
+ \ifnum##2=59 \DTMminutetostring\else \DTMminutestostring\fi
+ \space
+ \fi
+ \ifnum##1>12
+ \ifnum##1=24
+ \protect\numberstringnum{1}%
+ \else
+ \ifnum##1=23
+ \DTMenglishmidnight
+ \else
+ \protect\numberstringnum{\numexpr##1-11}%
+ \fi
+ \fi
+ \else
+ \ifnum##1=12
+ \protect\numberstringnum{1}%
+ \else
+ \protect\numberstringnum{\numexpr##1+1}%
+ \fi
+ \fi
+ \fi
+ \fi
+ \ifnum##1>11
+ \ifnum##1=23
+ \ifnum##2<31
+ \space\DTMafternoonstring
+ \fi
+ \else
+ \ifnum##1=24
+ \ifnum##2>30
+ \space\DTMmorningstring
+ \fi
+ \else
+ \space\DTMafternoonstring
+ \fi
+ \fi
+ \else
+ \ifnum##1>0
+ \space\DTMmorningstring
+ \else
+ \ifnum##2>30
+ \space\DTMmorningstring
+ \fi
+ \fi
+ \fi
+ }%
+ }%
+}
+% \end{macrocode}
+%
+%Define the "en-Fulltext" time style. Seconds are ignored.
+% \begin{macrocode}
+\DTMnewtimestyle{en-Fulltext}{%
+ \renewcommand*\DTMdisplaytime[3]{%
+ \ifboolexpr
+ { test {\ifnumequal{##2}{0}} and
+ (
+ test {\ifnumequal{##1}{0}}
+ or test {\ifnumequal{##1}{12}}
+ or test {\ifnumequal{##1}{24}}
+ )
+ }%
+ {%
+% \end{macrocode}
+% Either midnight or midday.
+% \begin{macrocode}
+ \ifnum##1=12
+ \expandafter\MakeUppercase\DTMenglishnoon
+ \else
+ \expandafter\MakeUppercase\DTMenglishmidnight
+ \fi
+ }%
+ {%
+% \end{macrocode}
+% Neither midnight nor midday.
+% \begin{macrocode}
+ \ifnum##2=0
+% \end{macrocode}
+% On the hour.
+% \begin{macrocode}
+ \protect\Numberstringnum{##1} \DTMoclockstring
+ \else
+% \end{macrocode}
+% Not on the hour.
+% \begin{macrocode}
+ \ifnum##2<31
+% \end{macrocode}
+% Past the hour.
+% \begin{macrocode}
+ \ifnum##2=15
+% \end{macrocode}
+% Quarter past the hour.
+% \begin{macrocode}
+ \expandafter\MakeUppercase\DTMquarterpaststring\space
+ \else
+ \ifnum##2=30
+% \end{macrocode}
+% Half past the hour.
+% \begin{macrocode}
+ \expandafter\MakeUppercase\DTMhalfpaststring\space
+ \else
+ \protect\Numberstringnum{##2}
+ \ifnum##2=1 \DTMminutepaststring\else \DTMminutespaststring\fi
+ \space
+ \fi
+ \fi
+ \ifnum##1>12
+ \ifnum##1=24
+ \DTMenglishmidnight
+ \else
+ \protect\numberstringnum{\numexpr##1-12}%
+ \fi
+ \else
+ \ifnum##1=0
+ \DTMenglishmidnight
+ \else
+ \protect\numberstringnum{##1}%
+ \fi
+ \fi
+ \else
+% \end{macrocode}
+% To the hour.
+% \begin{macrocode}
+ \ifnum##2=45
+ \expandafter\MakeUppercase\DTMquartertostring\space
+ \else
+ \protect\Numberstringnum{\numexpr60-##2}
+ \ifnum##2=59 \DTMminutetostring\else \DTMminutestostring\fi
+ \space
+ \fi
+ \ifnum##1>12
+ \ifnum##1=24
+ \protect\numberstringnum{1}%
+ \else
+ \ifnum##1=23
+ \DTMenglishmidnight
+ \else
+ \protect\numberstringnum{\numexpr##1-11}%
+ \fi
+ \fi
+ \else
+ \ifnum##1=12
+ \protect\numberstringnum{1}%
+ \else
+ \protect\numberstringnum{\numexpr##1+1}%
+ \fi
+ \fi
+ \fi
+ \fi
+ \ifnum##1>11
+ \ifnum##1=23
+ \ifnum##2<31
+ \space\DTMafternoonstring
+ \fi
+ \else
+ \ifnum##1=24
+ \ifnum##2>30
+ \space\DTMmorningstring
+ \fi
+ \else
+ \space\DTMafternoonstring
+ \fi
+ \fi
+ \else
+ \ifnum##1>0
+ \space\DTMmorningstring
+ \else
+ \ifnum##2>30
+ \space\DTMmorningstring
+ \fi
+ \fi
+ \fi
+ }%
+ }%
+}
+% \end{macrocode}
+%
+%Define the "en-FULLTEXT" time style. Seconds are ignored.
+% \begin{macrocode}
+\DTMnewtimestyle{en-FULLTEXT}{%
+ \renewcommand*\DTMdisplaytime[3]{%
+ \ifboolexpr
+ { test {\ifnumequal{##2}{0}} and
+ (
+ test {\ifnumequal{##1}{0}}
+ or test {\ifnumequal{##1}{12}}
+ or test {\ifnumequal{##1}{24}}
+ )
+ }%
+ {%
+% \end{macrocode}
+% Either midnight or midday.
+% \begin{macrocode}
+ \ifnum##1=12
+ \MakeUppercase\DTMenglishnoon
+ \else
+ \MakeUppercase\DTMenglishmidnight
+ \fi
+ }%
+ {%
+% \end{macrocode}
+% Neither midnight nor midday.
+% \begin{macrocode}
+ \ifnum##2=0
+% \end{macrocode}
+% On the hour.
+% \begin{macrocode}
+ \protect\NUMBERstringnum{##1} \MakeUppercase\DTMoclockstring
+ \else
+% \end{macrocode}
+% Not on the hour.
+% \begin{macrocode}
+ \ifnum##2<31
+% \end{macrocode}
+% Past the hour.
+% \begin{macrocode}
+ \ifnum##2=15
+% \end{macrocode}
+% Quarter past the hour.
+% \begin{macrocode}
+ \MakeUppercase\DTMquarterpaststring\space
+ \else
+ \ifnum##2=30
+% \end{macrocode}
+% Half past the hour.
+% \begin{macrocode}
+ \MakeUppercase\DTMhalfpaststring\space
+ \else
+ \protect\NUMBERstringnum{##2}
+ \MakeUppercase
+ {%
+ \ifnum##2=1 \DTMminutepaststring\else \DTMminutespaststring\fi
+ }%
+ \space
+ \fi
+ \fi
+ \ifnum##1>12
+ \ifnum##1=24
+ \MakeUppercase\DTMenglishmidnight
+ \else
+ \protect\NUMBERstringnum{\numexpr##1-12}%
+ \fi
+ \else
+ \ifnum##1=0
+ \MakeUppercase\DTMenglishmidnight
+ \else
+ \protect\NUMBERstringnum{##1}%
+ \fi
+ \fi
+ \else
+% \end{macrocode}
+% To the hour.
+% \begin{macrocode}
+ \ifnum##2=45
+ \MakeUppercase\DTMquartertostring\space
+ \else
+ \protect\NUMBERstringnum{\numexpr60-##2}
+ \MakeUppercase
+ {%
+ \ifnum##2=59 \DTMminutetostring\else \DTMminutestostring\fi
+ }%
+ \space
+ \fi
+ \ifnum##1>12
+ \ifnum##1=24
+ \protect\NUMBERstringnum{1}%
+ \else
+ \ifnum##1=23
+ \MakeUppercase\DTMenglishmidnight
+ \else
+ \protect\NUMBERstringnum{\numexpr##1-11}%
+ \fi
+ \fi
+ \else
+ \ifnum##1=12
+ \protect\NUMBERstringnum{1}%
+ \else
+ \protect\NUMBERstringnum{\numexpr##1+1}%
+ \fi
+ \fi
+ \fi
+ \fi
+ \ifnum##1>11
+ \ifnum##1=23
+ \ifnum##2<31
+ \space\MakeUppercase\DTMafternoonstring
+ \fi
+ \else
+ \ifnum##1=24
+ \ifnum##2>30
+ \space\MakeUppercase\DTMmorningstring
+ \fi
+ \else
+ \space\MakeUppercase\DTMafternoonstring
+ \fi
+ \fi
+ \else
+ \ifnum##1>0
+ \space\MakeUppercase\DTMmorningstring
+ \else
+ \ifnum##2>30
+ \space\MakeUppercase\DTMmorningstring
+ \fi
+ \fi
+ \fi
+ }%
+ }%
+}
+% \end{macrocode}
+%
+%Define the "en-FullText" time style. Seconds are ignored.
+% \begin{macrocode}
+\DTMnewtimestyle{en-FullText}{%
+ \renewcommand*\DTMdisplaytime[3]{%
+ \ifboolexpr
+ { test {\ifnumequal{##2}{0}} and
+ (
+ test {\ifnumequal{##1}{0}}
+ or test {\ifnumequal{##1}{12}}
+ or test {\ifnumequal{##1}{24}}
+ )
+ }%
+ {%
+% \end{macrocode}
+% Either midnight or midday.
+% \begin{macrocode}
+ \ifnum##1=12
+ \expandafter\MakeUppercase\DTMenglishnoon
+ \else
+ \expandafter\MakeUppercase\DTMenglishmidnight
+ \fi
+ }%
+ {%
+% \end{macrocode}
+% Neither midnight nor midday.
+% \begin{macrocode}
+ \ifnum##2=0
+% \end{macrocode}
+% On the hour.
+% \begin{macrocode}
+ \protect\Numberstringnum{##1} \DTMOClockstring
+ \else
+% \end{macrocode}
+% Not on the hour.
+% \begin{macrocode}
+ \ifnum##2<31
+% \end{macrocode}
+% Past the hour.
+% \begin{macrocode}
+ \ifnum##2=15
+% \end{macrocode}
+% Quarter past the hour.
+% \begin{macrocode}
+ \DTMQuarterPaststring\space
+ \else
+ \ifnum##2=30
+% \end{macrocode}
+% Half past the hour.
+% \begin{macrocode}
+ \DTMHalfPaststring\space
+ \else
+ \protect\Numberstringnum{##2}
+ \ifnum##2=1 \DTMMinutePaststring\else \DTMMinutesPaststring\fi
+ \space
+ \fi
+ \fi
+ \ifnum##1>12
+ \ifnum##1=24
+ \expandafter\MakeUppercase\DTMenglishmidnight
+ \else
+ \protect\Numberstringnum{\numexpr##1-12}%
+ \fi
+ \else
+ \ifnum##1=0
+ \expandafter\MakeUppercase\DTMenglishmidnight
+ \else
+ \protect\Numberstringnum{##1}%
+ \fi
+ \fi
+ \else
+% \end{macrocode}
+% To the hour.
+% \begin{macrocode}
+ \ifnum##2=45
+ \DTMQuarterTostring\space
+ \else
+ \protect\Numberstringnum{\numexpr60-##2}
+ \ifnum##2=59 \DTMMinuteTostring\else \DTMMinutesTostring\fi
+ \space
+ \fi
+ \ifnum##1>12
+ \ifnum##1=24
+ \protect\Numberstringnum{1}%
+ \else
+ \ifnum##1=23
+ \expandafter\MakeUppercase\DTMenglishmidnight
+ \else
+ \protect\Numberstringnum{\numexpr##1-11}%
+ \fi
+ \fi
+ \else
+ \ifnum##1=12
+ \protect\Numberstringnum{1}%
+ \else
+ \protect\Numberstringnum{\numexpr##1+1}%
+ \fi
+ \fi
+ \fi
+ \fi
+ \ifnum##1>11
+ \ifnum##1=23
+ \ifnum##2<31
+ \space\DTMAfterNoonstring
+ \fi
+ \else
+ \ifnum##1=24
+ \ifnum##2>30
+ \space\DTMMorningstring
+ \fi
+ \else
+ \space\DTMAfterNoonstring
+ \fi
+ \fi
+ \else
+ \ifnum##1>0
+ \space\DTMMorningstring
+ \else
+ \ifnum##2>30
+ \space\DTMMorningstring
+ \fi
+ \fi
+ \fi
+ }%
+ }%
+}
+% \end{macrocode}
+%
+%\begin{macro}{\DTMoclockstring}
+% \begin{macrocode}
+\newcommand*{\DTMoclockstring}{o'clock}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMOClockstring}
+% \begin{macrocode}
+\newcommand*{\DTMOClockstring}{O'Clock}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMquarterpaststring}
+% \begin{macrocode}
+\newcommand*{\DTMquarterpaststring}{quarter past}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMQuarterPaststring}
+% \begin{macrocode}
+\newcommand*{\DTMQuarterPaststring}{Quarter Past}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMminutepaststring}
+% \begin{macrocode}
+\newcommand*{\DTMminutepaststring}{minute past}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMminutespaststring}
+% \begin{macrocode}
+\newcommand*{\DTMminutespaststring}{minutes past}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMMinutePaststring}
+% \begin{macrocode}
+\newcommand*{\DTMMinutePaststring}{Minute Past}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMMinutesPaststring}
+% \begin{macrocode}
+\newcommand*{\DTMMinutesPaststring}{Minutes Past}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMhalfpaststring}
+% \begin{macrocode}
+\newcommand*{\DTMhalfpaststring}{half past}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMHalfPaststring}
+% \begin{macrocode}
+\newcommand*{\DTMHalfPaststring}{Half Past}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMquartertostring}
+% \begin{macrocode}
+\newcommand*{\DTMquartertostring}{quarter to}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMQuarterTostring}
+% \begin{macrocode}
+\newcommand*{\DTMQuarterTostring}{Quarter to}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMminutetostring}
+% \begin{macrocode}
+\newcommand*{\DTMminutetostring}{minute to}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMMinuteTostring}
+% \begin{macrocode}
+\newcommand*{\DTMMinuteTostring}{Minute to}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMminutestostring}
+% \begin{macrocode}
+\newcommand*{\DTMminutestostring}{minutes to}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMMinutesTostring}
+% \begin{macrocode}
+\newcommand*{\DTMMinutesTostring}{Minutes to}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMmorningstring}
+% \begin{macrocode}
+\newcommand*{\DTMmorningstring}{in the morning}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMMorningstring}
+% \begin{macrocode}
+\newcommand*{\DTMMorningstring}{in the Morning}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMafternoonstring}
+% \begin{macrocode}
+\newcommand*{\DTMafternoonstring}{in the afternoon}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMAfterNoonstring}
+% \begin{macrocode}
+\newcommand*{\DTMAfterNoonstring}{in the Afternoon}
+% \end{macrocode}
+%\end{macro}
+%
+%
+%Set the "en-fulltext" time style:
+% \begin{macrocode}
+\DTMsettimestyle{en-fulltext}
+% \end{macrocode}
+%
+%\iffalse
+% \begin{macrocode}
+%</datetime2-en-fulltext.sty>
+% \end{macrocode}
+%\fi
+%\Finale
+\endinput
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-en-fulltext/datetime2-en-fulltext.ins b/macros/latex/contrib/datetime2-contrib/datetime2-en-fulltext/datetime2-en-fulltext.ins
new file mode 100644
index 0000000000..761fe12867
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-en-fulltext/datetime2-en-fulltext.ins
@@ -0,0 +1,40 @@
+\input docstrip
+
+\preamble
+
+ datetime2-en-fulltext.dtx
+ Copyright 2015 Nicola Talbot
+
+ This work may be distributed and/or modified under the
+ conditions of the LaTeX Project Public License, either version 1.3
+ of this license of (at your option) any later version.
+ The latest version of this license is in
+ http://www.latex-project.org/lppl.txt
+ and version 1.3 or later is part of all distributions of LaTeX
+ version 2005/12/01 or later.
+
+ This work has the LPPL maintenance status `maintained'.
+
+ The Current Maintainer of this work is Nicola Talbot.
+
+ This work consists of the files datetime2-en-fulltext.dtx and
+ datetime2-en-fulltext.ins and the derived file
+ datetime2-en-fulltext.sty.
+
+\endpreamble
+
+\askforoverwritefalse
+
+\generate
+{%
+ \file
+ {datetime2-en-fulltext.sty}%
+ {%
+ \usepreamble\defaultpreamble
+ \usepostamble\defaultpostamble
+ \from{datetime2-en-fulltext.dtx}{datetime2-en-fulltext.sty,package}%
+ }%
+}
+
+\endbatchfile
+
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-en-fulltext/datetime2-en-fulltext.pdf b/macros/latex/contrib/datetime2-contrib/datetime2-en-fulltext/datetime2-en-fulltext.pdf
new file mode 100644
index 0000000000..2f5a6a05e6
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-en-fulltext/datetime2-en-fulltext.pdf
Binary files differ
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-en-fulltext/sample-en-fulltext.pdf b/macros/latex/contrib/datetime2-contrib/datetime2-en-fulltext/sample-en-fulltext.pdf
new file mode 100644
index 0000000000..b672ba4120
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-en-fulltext/sample-en-fulltext.pdf
Binary files differ
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-en-fulltext/sample-en-fulltext.tex b/macros/latex/contrib/datetime2-contrib/datetime2-en-fulltext/sample-en-fulltext.tex
new file mode 100644
index 0000000000..ee2bee11f7
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-en-fulltext/sample-en-fulltext.tex
@@ -0,0 +1,164 @@
+% This file is public domain.
+\documentclass{article}
+
+\usepackage[showdow]{datetime2-en-fulltext}
+
+\begin{document}
+\section{Date}
+
+\begin{description}
+\item[en-fulltext:]
+\DTMsetdatestyle{en-fulltext}
+\today.
+
+\item[en-FullText:]
+\DTMsetdatestyle{en-FullText}
+\today.
+
+\item[en-FULLTEXT:]
+\DTMsetdatestyle{en-FULLTEXT}
+\today.
+\end{description}
+
+\section{Time}
+\subsection{Default (en-fulltext)}
+
+Time: \DTMcurrenttime.
+
+12.00: \DTMdisplaytime{12}{00}{00}.
+
+0.00: \DTMdisplaytime{0}{0}{0}.
+
+24.00: \DTMdisplaytime{24}{0}{0}.
+
+0.01: \DTMdisplaytime{0}{1}{0}.
+
+0.30: \DTMdisplaytime{0}{30}{0}.
+
+0.45: \DTMdisplaytime{0}{45}{0}.
+
+8.01: \DTMdisplaytime{8}{01}{0}.
+
+8.59: \DTMdisplaytime{8}{59}{0}.
+
+6.30: \DTMdisplaytime{6}{30}{0}.
+
+11.45: \DTMdisplaytime{11}{45}{0}.
+
+12.15: \DTMdisplaytime{12}{15}{0}.
+
+12.55: \DTMdisplaytime{12}{55}{0}.
+
+23.58: \DTMdisplaytime{23}{58}{0}.
+
+24.03: \DTMdisplaytime{24}{03}{0}.
+
+24.48: \DTMdisplaytime{24}{48}{0}.
+
+\subsection{en-Fulltext}
+\DTMsettimestyle{en-Fulltext}
+
+Time: \DTMcurrenttime.
+
+12.00: \DTMdisplaytime{12}{00}{00}.
+
+0.00: \DTMdisplaytime{0}{0}{0}.
+
+24.00: \DTMdisplaytime{24}{0}{0}.
+
+0.01: \DTMdisplaytime{0}{1}{0}.
+
+0.30: \DTMdisplaytime{0}{30}{0}.
+
+0.45: \DTMdisplaytime{0}{45}{0}.
+
+8.01: \DTMdisplaytime{8}{01}{0}.
+
+8.59: \DTMdisplaytime{8}{59}{0}.
+
+6.30: \DTMdisplaytime{6}{30}{0}.
+
+11.45: \DTMdisplaytime{11}{45}{0}.
+
+12.15: \DTMdisplaytime{12}{15}{0}.
+
+12.55: \DTMdisplaytime{12}{55}{0}.
+
+23.58: \DTMdisplaytime{23}{58}{0}.
+
+24.03: \DTMdisplaytime{24}{03}{0}.
+
+24.48: \DTMdisplaytime{24}{48}{0}.
+
+\subsection{en-FULLTEXT}
+\DTMsettimestyle{en-FULLTEXT}
+
+Time: \DTMcurrenttime.
+
+12.00: \DTMdisplaytime{12}{00}{00}.
+
+0.00: \DTMdisplaytime{0}{0}{0}.
+
+24.00: \DTMdisplaytime{24}{0}{0}.
+
+0.01: \DTMdisplaytime{0}{1}{0}.
+
+0.30: \DTMdisplaytime{0}{30}{0}.
+
+0.45: \DTMdisplaytime{0}{45}{0}.
+
+8.01: \DTMdisplaytime{8}{01}{0}.
+
+8.59: \DTMdisplaytime{8}{59}{0}.
+
+6.30: \DTMdisplaytime{6}{30}{0}.
+
+11.45: \DTMdisplaytime{11}{45}{0}.
+
+12.15: \DTMdisplaytime{12}{15}{0}.
+
+12.55: \DTMdisplaytime{12}{55}{0}.
+
+23.58: \DTMdisplaytime{23}{58}{0}.
+
+24.03: \DTMdisplaytime{24}{03}{0}.
+
+24.48: \DTMdisplaytime{24}{48}{0}.
+
+\subsection{en-FullText}
+\DTMsettimestyle{en-FullText}
+
+Time: \DTMcurrenttime.
+
+12.00: \DTMdisplaytime{12}{00}{00}.
+
+0.00: \DTMdisplaytime{0}{0}{0}.
+
+24.00: \DTMdisplaytime{24}{0}{0}.
+
+0.01: \DTMdisplaytime{0}{1}{0}.
+
+0.30: \DTMdisplaytime{0}{30}{0}.
+
+0.45: \DTMdisplaytime{0}{45}{0}.
+
+8.01: \DTMdisplaytime{8}{01}{0}.
+
+8.59: \DTMdisplaytime{8}{59}{0}.
+
+6.30: \DTMdisplaytime{6}{30}{0}.
+
+11.45: \DTMdisplaytime{11}{45}{0}.
+
+12.15: \DTMdisplaytime{12}{15}{0}.
+
+12.55: \DTMdisplaytime{12}{55}{0}.
+
+23.58: \DTMdisplaytime{23}{58}{0}.
+
+24.03: \DTMdisplaytime{24}{03}{0}.
+
+24.48: \DTMdisplaytime{24}{48}{0}.
+
+\end{document}
+
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-english/CHANGES b/macros/latex/contrib/datetime2-contrib/datetime2-english/CHANGES
new file mode 100644
index 0000000000..f754b79612
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-english/CHANGES
@@ -0,0 +1,22 @@
+v1.04 (2016-03-09):
+
+ * Added "dowdaysep" option to en-GB, en-AU, en-NZ, en-GG,
+ en-JE, en-IM, en-MT and en-IE modules.
+
+v1.03 (2016-01-23):
+
+ * Added "zone" option to en-US, en-CA and en-AU modules.
+
+ * Bug fix in englishampm time style
+
+v1.02 (2016-01-18):
+
+ * Added support for "showdow" to the en-US and en-CA styles.
+
+v1.01 (2015-04-09):
+
+ * Fixed bug where en-GB-numeric was mistyped as en-GB-regional
+
+v1.0 (2015-03-24):
+
+ * Initial release
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-english/README b/macros/latex/contrib/datetime2-contrib/datetime2-english/README
new file mode 100644
index 0000000000..17eef77f2a
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-english/README
@@ -0,0 +1,69 @@
+English Language Module for datetime2 Package
+
+Author: Nicola L. C. Talbot
+ www.dickimaw-books.com
+
+Licence: LPPL
+
+Required Packages: datetime2, tracklang
+
+This module provides the following styles:
+
+english (English - no region)
+en-GB (English - United Kingdom of Great Britain and Northern Ireland)
+en-US (English - United States of America)
+en-CA (English - Canada)
+en-AU (English - Commonwealth of Australia)
+en-NZ (English - New Zealand)
+en-GG (English - Bailiwick of Guernsey)
+en-JE (English - Bailiwick of Jersey)
+en-IM (English - Isle of Man)
+en-MT (English - Republic of Malta)
+en-IE (English - Republic of Ireland)
+
+Example usage:
+
+\documentclass{article}
+\usepackage[en-GB]{datetime2}
+\begin{document}
+\today
+\end{document}
+
+\documentclass[british]{article}
+\usepackage{babel}
+\usepackage[useregional]{datetime2}
+\begin{document}
+\today
+\end{document}
+
+\documentclass{article}
+\usepackage{polyglossia}
+\setmainlanguage[variant=uk]{english}
+\usepackage[en-GB]{datetime2}
+\begin{document}
+\today
+\end{document}
+
+INSTALLATION
+============
+
+latex datetime2-english.ins
+
+Move all *.ldf files to
+TEXMF/tex/latex/datetime2-contrib/datetime2-english/
+
+Documentation:
+
+pdflatex datetime2-english.dtx
+makeindex -s gind.ist datetime2-english.idx
+makeindex -s gglo.ist -o datetime2-english.gls datetime2-english.glo
+pdflatex datetime2-english.dtx
+pdflatex datetime2-english.dtx
+
+Move datetime2-english.pdf and README to
+TEXMF/doc/latex/datetime2-contrib/datetime2-english/
+
+This material is subject to the LaTeX Project Public License.
+See http://www.ctan.org/license/lppl1.3 for the details of that
+license.
+
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-english/datetime2-english-sample.pdf b/macros/latex/contrib/datetime2-contrib/datetime2-english/datetime2-english-sample.pdf
new file mode 100644
index 0000000000..f51efa41f5
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-english/datetime2-english-sample.pdf
Binary files differ
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-english/datetime2-english-sample.tex b/macros/latex/contrib/datetime2-contrib/datetime2-english/datetime2-english-sample.tex
new file mode 100644
index 0000000000..685bf9a7f1
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-english/datetime2-english-sample.tex
@@ -0,0 +1,89 @@
+% This file is public domain
+% arara: pdflatex
+% arara: pdflatex
+\documentclass[british,american,australian,canadian,newzealand,en-GG,en-JE,en-IM,en-MT,en-IE]{article}
+
+\usepackage{babel}
+\usepackage[useregional,% use regional style instead of default ISO format
+ showzoneminutes=false,% don't show time zone minutes
+ showdow% show the day of week name if supported
+ ]{datetime2}
+\usepackage[colorlinks]{hyperref}
+
+% Use standard mappings for the time zones (if supported)
+\DTMlangsetup*{mapzone,zone=standard}
+
+% Save some date and times for later use
+\DTMsavetimestamp{mydate}{2014-06-03T12:45:02+01:00}
+\DTMsavetimestamp{mydate2}{2015-03-20T08:05:09+00:00}
+\DTMsavetimestamp{mydate3}{2012-12-28T13:35:28-04:00}
+\DTMsavetimestamp{mydate3}{2014-12-15T23:55:49-06:00}
+\DTMsavetimestamp{mydate4}{2014-01-27T12:05:00+09:30}
+\DTMsavetimestamp{mydate5}{2013-11-28T02:05:00+11:00}
+
+% Define command to test each region for this sample document
+\newcommand{\testregion}[1]{%
+ \ifcsdef{date#1}{\selectlanguage{#1}}{\DTMsetstyle{#1}}%
+
+ \section{#1}
+
+ Today: \today.
+
+ Now: \DTMnow.
+
+ \subsection{\DTMuse{mydate}}
+ Saved Date (\texttt{mydate}): \DTMusedate{mydate}
+ Saved time (\texttt{mydate}): \DTMusetime{mydate}.
+ \typeout{Date (#1): \DTMusedate{mydate}}
+
+ \subsection{\DTMuse{mydate2}}
+ Saved Date (\texttt{mydate2}): \DTMusedate{mydate2}
+ Saved time (\texttt{mydate2}): \DTMusetime{mydate2}.
+ \typeout{Date (#1): \DTMusedate{mydate2}}
+
+ \subsection{\DTMuse{mydate3}}
+ Saved Date (\texttt{mydate3}): \DTMusedate{mydate3}
+ Saved time (\texttt{mydate3}): \DTMusetime{mydate3}.
+ \typeout{Date (#1): \DTMusedate{mydate3}}
+
+ \subsection{\DTMuse{mydate4}}
+ Saved Date (\texttt{mydate4}): \DTMusedate{mydate4}
+ Saved time (\texttt{mydate4}): \DTMusetime{mydate4}.
+ \typeout{Date (#1): \DTMusedate{mydate4}}
+
+ \subsection{\DTMuse{mydate5}}
+ Saved Date (\texttt{mydate5}): \DTMusedate{mydate5}
+ Saved time (\texttt{mydate5}): \DTMusetime{mydate5}.
+ \typeout{Date (#1): \DTMusedate{mydate5}}
+}
+
+\title{Sample Document Illustrating datetime2-english}
+\author{Nicola Talbot}
+
+\begin{document}
+\maketitle
+
+\tableofcontents
+
+\testregion{british}
+
+\testregion{american}
+
+\testregion{australian}
+
+\testregion{canadian}
+
+\testregion{newzealand}
+
+% no official babel language for these regions as far as I can tell:
+\testregion{en-GG}
+
+\testregion{en-JE}
+
+\testregion{en-IM}
+
+\testregion{en-MT}
+
+\testregion{en-IE}
+
+\end{document}
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-english/datetime2-english.dtx b/macros/latex/contrib/datetime2-contrib/datetime2-english/datetime2-english.dtx
new file mode 100644
index 0000000000..0b1376ca17
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-english/datetime2-english.dtx
@@ -0,0 +1,4905 @@
+%\iffalse
+%<*package>
+%% \CharacterTable
+%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+%% Digits \0\1\2\3\4\5\6\7\8\9
+%% Exclamation \! Double quote \" Hash (number) \#
+%% Dollar \$ Percent \% Ampersand \&
+%% Acute accent \' Left paren \( Right paren \)
+%% Asterisk \* Plus \+ Comma \,
+%% Minus \- Point \. Solidus \/
+%% Colon \: Semicolon \; Less than \<
+%% Equals \= Greater than \> Question mark \?
+%% Commercial at \@ Left bracket \[ Backslash \\
+%% Right bracket \] Circumflex \^ Underscore \_
+%% Grave accent \` Left brace \{ Vertical bar \|
+%% Right brace \} Tilde \~}
+%</package>
+%\fi
+% \iffalse
+% Doc-Source file to use with LaTeX2e
+% Copyright (C) 2015 Nicola Talbot, all rights reserved.
+% \fi
+% \iffalse
+%<*driver>
+\documentclass{ltxdoc}
+
+\usepackage{alltt}
+\usepackage{graphicx}
+\usepackage[utf8]{inputenc}
+\usepackage[T1]{fontenc}
+\usepackage[colorlinks,
+ bookmarks,
+ hyperindex=false,
+ pdfauthor={Nicola L.C. Talbot},
+ pdftitle={datetime2.sty English Module}]{hyperref}
+
+
+\CheckSum{2727}
+
+\renewcommand*{\usage}[1]{\hyperpage{#1}}
+\renewcommand*{\main}[1]{\hyperpage{#1}}
+\IndexPrologue{\section*{\indexname}\markboth{\indexname}{\indexname}}
+\setcounter{IndexColumns}{2}
+
+\newcommand*{\sty}[1]{\textsf{#1}}
+\newcommand*{\opt}[1]{\texttt{#1}\index{#1=\texttt{#1}|main}}
+\newcommand*{\utc}[2]{\textsc{utc}\ifnum#1<0 $-$\number-#1\else $+$\number#1\fi
+ \ifnum#2>0 :\number#2 \fi\relax}
+
+\RecordChanges
+\PageIndex
+\CodelineNumbered
+
+\begin{document}
+\DocInput{datetime2-english.dtx}
+\end{document}
+%</driver>
+%\fi
+%
+%\MakeShortVerb{"}
+%
+%\title{English Module for datetime2 Package}
+%\author{Nicola L. C. Talbot}
+%\date{2016-03-09 (v1.04)}
+%\maketitle
+%
+%\begin{abstract}
+%This is the English language module for the \sty{datetime2}
+%package. If you want to use the settings in this module you must
+%install it in addition to installing \sty{datetime2}. If you use
+%\sty{babel} or \sty{polyglossia}, you will need this module to
+%prevent them from redefining \cs{today}. The \sty{datetime2}
+% \opt{useregional} setting must be on (\texttt{text} or
+% \texttt{numeric}) for the language styles to be set.
+% Alternatively, you can set them in the document using
+% \cs{DTMsetstyle}, but without the \opt{useregional} setting on the
+% style will be changed by \cs{date}\meta{language}.
+%\end{abstract}
+%
+%\tableofcontents
+%\clearpage
+%
+%\section{Introduction}
+%\label{sec:intro}
+% This bundle provides the English modules for \sty{datetime2}.
+% The basic "english" module is used when "english" has been
+% detected as one of the document's language settings but no
+% regional variant has been detected. Note that the \sty{tracklang}
+% package can't detect the variant passed to \sty{polyglossia} unless it's been
+% passed as a document class option or passed to \sty{tracklang}.
+% See the \sty{tracklang} documentation for further details.
+%
+% Here are some examples for British English with
+% \sty{polyglossia}:
+%
+%\begin{enumerate}
+%\item Pass "british" in the document class option list:
+%\begin{verbatim}
+%\documentclass[british]{article}
+%
+%\usepackage{fontspec}
+%\usepackage{polyglossia}
+%\setmainlanguage[variant=uk]{english}
+%\usepackage{datetime2}
+%\end{verbatim}
+%(You need to set the \opt{useregional} option to either
+%\texttt{text} or \texttt{numeric} to enable the "en-GB" or
+%"en-GB-numeric" styles.)
+%
+%\item Pass "en-GB" in the document class option list:
+%\begin{verbatim}
+%\documentclass[en-GB]{article}
+%
+%\usepackage{fontspec}
+%\usepackage{polyglossia}
+%\setdefaultlanguage[variant=uk]{english}
+%
+%\usepackage{datetime2}
+%\end{verbatim}
+%(You need to set the \opt{useregional} option to either
+%\texttt{text} or \texttt{numeric} to enable the "en-GB" or
+%"en-GB-numeric" styles.)
+%
+%\item Pass "en-GB" to \sty{datetime2}:
+%\begin{verbatim}
+%\documentclass{article}
+%
+%\usepackage{fontspec}
+%\usepackage{polyglossia}
+%\setdefaultlanguage[variant=uk]{english}
+%
+%\usepackage[en-GB]{datetime2}
+%\end{verbatim}
+% In this last example, the style is automatically switched to
+% "en-GB".
+%\end{enumerate}
+%
+%Note that if you pass the language setting through the
+%\sty{datetime2} package option list (as in the above example)
+%this will also set the \opt{useregional} option to \texttt{text}.
+%
+%If you're not using \sty{babel} or \sty{polyglossia} but still
+% want to use the English modules, you can similarly use the language or
+% regional setting in the document class or \sty{datetime2} package
+% options. Note that since \sty{datetime2} loads \sty{tracklang},
+% this setting will be remembered by any subsequently loaded
+% packages that use \sty{tracklang} to determine the document
+% language settings.
+%
+% For example, to use the "en-GB" date style without loading
+% \sty{babel} or \sty{polyglossia}:
+%\begin{verbatim}
+%\documentclass{article}
+%\usepackage[en-GB]{datetime2}
+%\begin{document}
+%\today
+%\end{document}
+%\end{verbatim}
+%
+% If you want to change the settings for a particular module, you
+% must use the module's name (such as "en-GB") rather than a
+% \sty{babel} or \sty{polyglossia} synonym (such as "british" or "uk").
+% For example:
+%\begin{verbatim}
+%\DTMlangsetup[en-GB]{ord=raise}
+%\end{verbatim}
+%
+%\section{Base module}
+%\label{sec:base}
+%The "english-base" module is loaded by all the English modules. It
+%provides the commands that produce text, such as the month names.
+%It also provides a 12 hour time style called \texttt{englishampm}.
+%
+%\section{English (no region)}
+%\label{sec:english}
+% The default "english" module is used when English has been set as
+% one of the document languages, but no regional variant has been
+% detected or there is no support for the given region.
+%
+% This basic module provides the date-time style "english" which
+% uses the same style as \LaTeX's default \cs{today}. (That is, the
+% middle-endian date style.) This style ignores most of the settings, including
+% \opt{showdow} and the date separators. The time style uses the
+% "englishampm" style defined in the base module which uses the
+% package-wide \opt{hourminsep} setting. The zone style is the
+% same as that provided by the "default" style. (That is, numerical
+% ISO or just ``Z''.) The full date, time and zone style (used by \cs{DTMdisplay})
+% have spaces between each block. The \opt{showdate}, \opt{showzone}, \opt{showseconds},
+% \opt{showzoneminutes} and \opt{showisoZ} \sty{datetime2} settings are honoured.
+%
+%This module checks for the existence of \cs{dateenglish} or
+%\cs{date}\meta{dialect} (in the case of an unknown English
+%variant that doesn't match any of the supplied English dialect modules).
+%If it exists, the command will be redefined so that it
+%sets the date, time and zone styles to "english" if the
+%\opt{useregional} setting is set to \texttt{text}. If the setting
+%is \texttt{numeric} the "default" numeric style will be used as the
+%lack of region makes it ambiguous.
+%
+%\section{English (GB)}
+%\label{sec:en-GB}
+%
+%The "en-GB" module is loaded if British English has been specified.
+%This may be specified through options such as "british", "en-GB" or
+%"UKenglish". (See the note on \sty{polyglossia} in \S\ref{sec:intro}.)
+%
+% This module defines the text style "en-GB" and the
+% numeric style "en-GB-numeric" style. The "en-GB" style will
+% automatically be set if the \opt{useregional} option is
+% set to \texttt{text}. The "en-GB-numeric" style will automatically
+% be set if the \opt{useregional} option is set to \texttt{numeric}.
+%
+% The "en-GB" time style uses the base "englishampm" style.
+%
+% There are a number of settings provided that can be used in
+% \cs{DTMlangsetup} to modify the date-time style. These are:
+%
+%\begin{description}
+%\item[\opt{dowdaysep}] The separator between the day of week name and the
+%day of month number. This defaults to \cs{space}. Ignored if the
+%\opt{showdow} option is \opt{false}.
+%
+%\item[\opt{daymonthsep}] The separator between the day and the month
+%name in the \texttt{en-GB} style. This defaults to \cs{space}.
+%
+%\item[\opt{monthyearsep}] The separator between the month name and year
+% in the \texttt{en-GB} style. This defaults to \cs{space}.
+%
+%\item[\opt{datesep}] The separator between the date numbers in the
+%"en-GB-numeric" style. This defaults to "/" (slash).
+%
+%\item[\opt{timesep}] The separator between the hours and minutes in the
+%"en-GB-numeric" style. This defaults to ":" (colon).
+%
+%\item[\opt{datetimesep}] The separator between the date and time for the
+%full date-time format (as used by \cs{DTMdisplay}) for both the
+%"en-GB" and "en-GB-numeric" styles. This defaults
+%to \cs{space}.
+%
+%\item[\opt{timezonesep}] The separator between the time and zone for the
+%full date-time format (as used by \cs{DTMdisplay}) for both the
+%"en-GB" and "en-GB-numeric" styles. This defaults
+%to \cs{space}.
+%
+%\item[\opt{abbr}] This is a~boolean key. If "true", the month (and week
+%day name if shown) is abbreviated for the "en-GB" style. The default is "false".
+%
+%\item[\opt{mapzone}] This is a~boolean key. If "true" the time zone
+%mappings are applied. (The default is \texttt{true}.) The "en-GB"
+% and "en-GB-numeric" styles set the mappings GMT
+%(\utc{00}{00}) and BST (\utc{01}{00}).
+%Other time zone mappings that have previously been set
+%(for example, by another regional style) will remain unchanged
+%unless you redefine \cs{DTMresetzones} to reset or unset them.
+%
+%\item[\opt{ord}] This may take one of the following values: "level"
+%(ordinal suffix level with the number), "raise" (ordinal suffix as
+%a superscript\footnote{Just in case you plan to send me an irate
+%email on this issue, the superscript is a regional handwriting
+%style not an invention of word processors although they have
+%adopted the style. I was using this style in school in the 1970s
+%before I'd ever heard of a word processor so please don't tell me
+%I've picked up the habit from Word. I'm not a time-traveller, nor
+%were my primary school teachers\,---\,that I know of! If, conversely,
+%you want to know why the default is \texttt{level} rather than
+%\texttt{raise}, it's because the main purpose of the
+%\sty{datetime2} package is to provide an \emph{expandable} text
+%format and \cs{textsuperscript} isn't expandable.}),
+% "omit" (omit the ordinal suffix) and "sc" (small
+%caps ordinal suffix). If you want a different style you can
+%redefine \cs{DTMenGBfmtordsuffix} which takes one argument (the
+%suffix). Take care if \cs{DTMenGBfmtordsuffix} contains fragile
+%commands, as they will need to be protected against expansion.
+%
+%\item[\opt{showdayofmonth}] A boolean key that determines whether
+%or not to show the day of the month. The default value is "true".
+%If "false" the day-month separator is also omitted.
+%
+%\item[\opt{showyear}] A boolean key that determines whether
+%or not to show the year. The default value is "true". If "false"
+%the month-year separator is also omitted.
+%\end{description}
+%
+%The above settings are specific to this module. In addition, the
+%\opt{showdow} boolean option provided by the \sty{datetime2} package is
+%also checked to determine whether or not to show the day of the
+%week in the "en-GB" style.
+%
+%The time zone checks the \opt{mapzone}
+%setting (described above). If it's set, then
+%\cs{DTMusezonemapordefault} is used otherwise a numeric
+%\meta{TZH}\meta{sep}\meta{TZM} is displayed. (The minute part will be
+%omitted if the \sty{datetime2} package option \opt{showzoneminutes} is
+%set to "false". The zone style ignores the \opt{showisoZ} option.
+%
+%
+%\section{English (US)}
+%\label{sec:en-US}
+%
+%The "en-US" module is loaded if US English has been specified. This
+%may be done through options such as "american", "en-US" or
+%"USenglish". (See the note on \sty{polyglossia} in \S\ref{sec:intro}.)
+%
+%This module defines the styles "en-US" and
+%"en-US-numeric". There a number of settings that can be used in
+% \cs{DTMlangsetup} to modify these styles. They are:
+%\begin{description}
+%\item[\opt{monthdaysep}] The separator between the month name and
+%the day in the "en-US" style. The default is \cs{space}
+%
+%\item[\opt{dayyearsep}] The separator between the day and the year
+%in the "en-US" style. The default is ",\space"
+%
+%\item[\opt{dowmonthsep}] The separator between the day-of-week
+%name and the month name in the "en-US" style. The default is
+%\cs{space}. This is new to version 1.02, which now supports the
+%\opt{showdow} package option.
+%
+%\item[\opt{datesep}] The separator between the date numbers in the
+%"en-US-numeric" format.
+%
+%\item[\opt{timesep}] The separator between the hour and minutes in the
+%"en-US-numeric" format.
+%
+%\item[\opt{datetimesep}] The separator between the date and the
+%time for the full style used by \cs{DTMdisplay} for the "en-US"
+%and "en-US-numeric". The default is \cs{space}
+%
+%\item[\opt{timezonesep}] The separator between the times and
+%zone for the full style used by \cs{DTMdisplay}. The default is
+%\cs{space}
+%
+%\item[\opt{abbr}] This is a~boolean key. If "true", the month
+%is abbreviated. The default is "false".
+%
+%\item[\opt{ord}] The same as the "en-GB" style except that the default
+%value is "omit".
+%
+%\item[\opt{showdayofmonth}] A boolean key that determines whether
+%or not to show the day of the month. The default value is "true".
+%If "false" the day-year separator is also omitted.
+%
+%\item[\opt{showyear}] A boolean key that determines whether
+%or not to show the year. The default value is "true". If "false"
+%the day-year separator is also omitted if the day of the month is
+%shown otherwise both the day-year and month-day separators are omitted.
+%
+%\item[\opt{mapzone}] This is a~boolean key. If "true" the time zone
+%mappings are applied. (The default is \texttt{false}.) The "en-US" style sets the mappings ADT
+%(\utc{-03}{00}), AST (\utc{-04}{00}), EST (\utc{-05}{00}), CST
+%(\utc{-06}{00}),
+%MST (\utc{-07}{00}) and PST (\utc{-08}{00}). If your want to use different
+%mappings, you can redefine \cs{DTMenUSzonemaps}.
+%Other time zone mappings that have previously been set
+%(for example, by another regional style) will remain unchanged
+%unless you redefine \cs{DTMresetzones} to reset or unset them.
+%
+%\item[\opt{zone}] (new to v1.03) As mentioned above, if the \opt{mapzone}
+% option is set, the time zone mappings are set using \cs{DTMenUSzonemaps}.
+% This option can be used to both append to \cs{DTMenUSzonemaps} and
+% set the new mappings. The \opt{zone} option may take one of the
+% following values:
+% \begin{itemize}
+% \item \opt{std} or \opt{standard}: set the standard time zone
+% mappings AST (\utc{-4}{00}), EST (\utc{-5}{00}), CST (\utc{-6}{00}), MST
+% (\utc{-7}{00}), PST (\utc{-8}{00}), AKST (\utc{-9}{00}), HAST (\utc{-10}{00}), SST
+% (\utc{-10}{00}), ChST (\utc{10}{00}).
+% \item \opt{dst} or \opt{daylight}: set the daylight savings time
+% zone mappings ADT (\utc{-3}{00}), EDT (\utc{-4}{00}), CDT (\utc{-6}{00}), MDT
+% (\utc{-6}{00}), PDT (\utc{-7}{00}), AKDT (\utc{-8}{00}), HADT (\utc{-9}{00}).
+% \item \opt{atlantic}: set the Atlantic standard and daylight
+% saving mappings AST (\utc{-4}{00}) and ADT (\utc{-3}{00}).
+% \item \opt{eastern}: set the Eastern standard and daylight
+% saving mappings EST (\utc{-5}{00}) and EDT (\utc{-4}{00}).
+% \item \opt{central}: set the Central standard and daylight
+% saving mappings CST (\utc{-6}{00}) and CDT (\utc{-5}{00}).
+% \item \opt{mountain}: set the Mountain standard and daylight
+% saving mappings MST (\utc{-7}{00}) and MDT (\utc{-6}{00}).
+% \item \opt{pacific}: set the Pacific standard and daylight
+% saving mappings PST (\utc{-8}{00}) and PDT (\utc{-7}{00}).
+% \item \opt{alaska}: set the Alaska standard and daylight
+% saving mappings AKST (\utc{-9}{00}) and AKDT (\utc{-8}{00}).
+% \item \opt{hawaii-aleutian} or \opt{hawaii} or \opt{aleutian}:
+% set the Hawaii-Aleutian standard and daylight
+% saving mappings HAST (\utc{-10}{00}) and HADT (\utc{-9}{00}).
+% \item \opt{samoa}: set the Samoa Standard Time mapping SST (\utc{-11}{00}).
+% \item \opt{chamorro}: set the Chamorro Standard Time mapping ChST (\utc{-10}{00}).
+% \item \opt{clear}: redefines \cs{DTMenUSzonemaps} to empty and
+% clears the mappings (using \cs{DTMclearmap}) for \utc{-3}{00}, \utc{-4}{00},
+% \utc{-5}{00}, \utc{-6}{00}, \utc{-7}{00}, \utc{-8}{00}, \utc{-9}{00}, \utc{-10}{00},
+% \utc{-11}{00} and \utc{10}{00}.
+% \end{itemize}
+% Other existing mappings are unchanged. For example,
+%\begin{verbatim}
+%\DTMlangsetup[en-US]{zone=atlantic,zone=pacific}
+%\end{verbatim}
+% will set the mappings AST (\utc{-4}{00}), ADT (\utc{-3}{00}), PST (\utc{-8}{00})
+% and PDT (\utc{-7}{00}). Any other time zone offset mappings that were
+% previously set will remain the same. However:
+%\begin{verbatim}
+%\DTMlangsetup[en-US]{zone=atlantic,zone=eastern}
+%\end{verbatim}
+% will result in the mappings ADT (\utc{-3}{00}), EST (\utc{-5}{00}) and EDT
+% (\utc{-4}{00}), since the EDT mapping will overwrite the AST mapping.
+% Again, any other time zone offset mappings that were previously
+% set remain the same.
+%
+% Another example:
+%\begin{verbatim}
+%\DTMlangsetup[en-US]{zone=dst,zone=atlantic,zone=pacific}
+%\end{verbatim}
+% This will first set the daylight saving mappings and then set the
+% Atlantic mappings, which means that \utc{-4}{00} will now be mapped to
+% AST instead of EDT, and then it will set the Pacific mappings,
+% which means that \utc{-8}{00} will now be mapped to PST instead of
+% AKDT.
+%\end{description}
+%
+%The "en-US" time style uses the "englishampm" style. The "en-US-numeric"
+%uses a 24 hour style. The time zone checks the \opt{mapzone}
+%setting (described above). If it's set, then
+%\cs{DTMusezonemapordefault} is used otherwise a numeric
+%\meta{TZH}:\meta{TZM} is displayed. (The minute part will be
+%omitted if the \sty{datetime2} package option \opt{showzoneminutes} is
+%set to "false". The zone style ignores the \opt{showisoZ} option.
+%
+%\section{English (CA)}
+%\label{sec:en-CA}
+%
+%The "en-CA" module is loaded if Canadian English has been specified. This
+%may be done through options such as "en-CA" or
+%"canadian". (See the note on \sty{polyglossia} in \S\ref{sec:intro}.)
+%
+% This module provides the "en-CA" and "en-CA-numeric" styles
+% that are virtually identical to the "en-US" and "en-US-numeric" style.
+% These have the same options as for the US styles but the zone maps
+% are provided by \cs{DTMenCAzonemaps}, which can be redefined as required.
+% As from v1.03, there's also a \opt{zone} setting that works in a
+% similar manner to the \opt{zone} setting for the "en-US" module
+% described above. For "en-CA", the
+% available values are:
+% \begin{itemize}
+% \item \opt{std} or \opt{standard}: set the standard time zone
+% mappings NST (\utc{-3}{30}), AST (\utc{-4}{00}), EST (\utc{-5}{00}), CST (\utc{-6}{00}), MST
+% (\utc{-7}{00}), PST (\utc{-8}{00}).
+% \item \opt{dst} or \opt{daylight}: set the daylight savings time
+% zone mappings NDT (\utc{-2}{30}), ADT (\utc{-3}{00}), EDT (\utc{-4}{00}), CDT (\utc{-6}{00}),
+% MDT (\utc{-6}{00}), PDT (\utc{-7}{00}).
+% \item \opt{newfoundland}: set the Newfoundland standard and daylight
+% saving mappings NST (\utc{-3}{30}) and NDT (\utc{-2}{30}).
+% \item \opt{atlantic}: set the Atlantic standard and daylight
+% saving mappings AST (\utc{-4}{00}) and ADT (\utc{-3}{00}).
+% \item \opt{eastern}: set the Eastern standard and daylight
+% saving mappings EST (\utc{-5}{00}) and EDT (\utc{-4}{00}).
+% \item \opt{central}: set the Central standard and daylight
+% saving mappings CST (\utc{-6}{00}) and CDT (\utc{-5}{00}).
+% \item \opt{mountain}: set the Mountain standard and daylight
+% saving mappings MST (\utc{-7}{00}) and MDT (\utc{-6}{00}).
+% \item \opt{pacific}: set the Pacific standard and daylight
+% saving mappings PST (\utc{-8}{00}) and PDT (\utc{-7}{00}).
+% \item \opt{clear}: redefines \cs{DTMenCAzonemaps} to empty and
+% clears the mappings (using \cs{DTMclearmap}) for \utc{-2}{30},
+% \utc{-3}{30}, \utc{-3}{00}, \utc{-4}{00}, \utc{-5}{00}, \utc{-6}{00}, \utc{-7}{00} and \utc{-8}{00}.
+% \end{itemize}
+% For example, if you live in a region that doesn't implement
+% daylight saving:
+%\begin{verbatim}
+%\DTMlangsetup[en-CA]{zone=std}
+%\end{verbatim}
+%
+%\section{English (AU)}
+%\label{sec:en-AU}
+%
+%The "en-AU" module is loaded if Australian English has been specified. This
+%may be done through options such as "en-AU" or
+%"australian". (See the note on \sty{polyglossia} in \S\ref{sec:intro}.)
+%
+% This module provides the "en-AU" and "en-AU-numeric" styles that
+% are virtually identical to the "en-GB" and "en-GB-numeric" styles.
+% These have the same options as the GB styles (except that the default value of
+% \opt{ord} is "omit" rather than "level" and the default value of
+% "mapzone" is false) but the zone maps are provided by
+%\cs{DTMenAUzonemaps}, which can be redefined as required. This
+%doesn't take all zones into account, but as from v1.03, there is
+%now the \opt{zone} option, which modifies \cs{DTMenAUzonemaps}.
+%This works in much the same way as for the "en-US" and "en-CA"
+%options of the same name, described above. Available values for the "en-AU" module:
+% \begin{itemize}
+% \item \opt{std} or \opt{standard}: set the standard time zone
+% mappings CCT (\utc{6}{30}), CXT (\utc{7}{00}), AWST (\utc{8}{00}), ACWST (\utc{8}{45}),
+% ACST (\utc{9}{30}), AEST (\utc{10}{00}), LHST (\utc{10}{30}),
+% NFT (\utc{11}{00}).
+% \item \opt{dst} or \opt{daylight}: set the daylight savings time
+% zone mappings AWDT (\utc{9}{00}), ACDT (\utc{10}{30}), AEDT (\utc{11}{00}).
+% Note that conflicting zones are missing, such as LHDT (\utc{11}{00})
+% which coincides with AEDT.
+% \item \opt{central}: set the Australian Central standard and daylight
+% saving mappings ACST (\utc{9}{30}) and ACDT (\utc{10}{30}).
+% \item \opt{central-western}: set the Australian Central Western
+% Standard Time mapping ACWST (\utc{8}{45}).
+% \item \opt{western}: set the Australian Western standard and daylight
+% saving mappings AWST (\utc{8}{0}) and AWDT (\utc{9}{0}).
+% \item \opt{eastern}: set the Australian Eastern standard and daylight
+% saving mappings AEST (\utc{10}{0}) and AEDT (\utc{11}{0}).
+% \item \opt{christmas}: set the Christmas Island Time mapping CXT
+% (\utc{7}{0}).
+% \item \opt{lord-howe}: set the Lord Howe Island standard and daylight
+% saving mappings LHST (\utc{10}{30}) and LHDT (\utc{11}{0}).
+% \item \opt{norfolk}: set the Norfolk Island
+% time mapping NFT (\utc{11}{0}).
+% \item \opt{cocos} or \opt{keeling}: set the Cocos (Keeling) island
+% time mapping CCT (\utc{6}{30}).
+% \item \opt{clear}: redefines \cs{DTMenAUzonemaps} to empty and
+% clears the mappings (using \cs{DTMclearmap}) for \utc{6}{30},
+% \utc{7}{00}, \utc{8}{00}, \utc{8}{45}, \utc{9}{00}, \utc{9}{30}, \utc{10}{00},
+% \utc{10}{30}, \utc{11}{00}.
+% \end{itemize}
+%Example:
+%\begin{verbatim}
+%\DTMlangsetup[en-AU]{zone=cocos,zone=christmas}
+%\end{verbatim}
+%
+%\section{English (NZ)}
+%\label{sec:en-NZ}
+%
+%The "en-NZ" module is loaded if New Zealand English has been specified. This
+%may be done through options such as "en-NZ" or
+%"newzealand". (See the note on \sty{polyglossia} in \S\ref{sec:intro}.)
+%
+% This module provides the "en-NZ" and "en-NZ-numeric" styles that
+% are virtually identical to the "AU" styles but the zone maps are provided by
+%\cs{DTMenNZzonemaps}, which can be redefined as required.
+% The default NZ mappings are NZST (\utc{12}{00}), CHAST (\utc{12}{45}),
+% NZDT (\utc{13}{00}), CHADT (\utc{13}{45}).
+%
+%\section{English (GG)}
+%\label{sec:en-GG}
+%
+% The Guernsey English "en-GG" and "en-GG-numeric" styles are like the
+% British English "en-GB" and "en-GB-numeric" styles, but replace \texttt{enGB}
+% with \texttt{enGG} in the command names. This style can be loaded
+% by using \texttt{en-GG} as a document class option or as a
+% package option for either \sty{tracklang} or \sty{datetime2}.
+%
+%\section{English (JE)}
+%\label{sec:en-JE}
+% The Jersey English "en-JE" and "en-JE-numeric" styles are like the
+% British English "en-GB" and "en-GB-numeric" styles, but replace \texttt{enGB}
+% with \texttt{enJE} in the command names. This style can be loaded
+% by using \texttt{en-JE} as a document class option or as a
+% package option for either \sty{tracklang} or \sty{datetime2}.
+%
+%\section{English (IM)}
+%\label{sec:en-IM}
+% The Isle of Man "en-IM" and "en-IM-numeric" styles are like the
+% British English "en-GB" and "en-GB-numeric" styles, but replace \texttt{enGB}
+% with \texttt{enIM} in the command names. This style can be loaded
+% by using \texttt{en-IM} as a document class option or as a
+% package option for either \sty{tracklang} or \sty{datetime2}.
+%
+%\section{English (MT)}
+%\label{sec:en-MT}
+% The Malta English "en-MT" and "en-MT-numeric" styles are like the
+% British English "en-GB" and "en-GB-numeric" styles, but replace \texttt{enGB}
+% with \texttt{enMT} in the command names. This style can be loaded
+% by using \texttt{en-MT} as a document class option or as a
+% package option for either \sty{tracklang} or \sty{datetime2}.
+%
+% There are two main differences in the
+% \texttt{en-GB}\slash\texttt{en-GB-numeric} and
+% \texttt{en-MT}\slash\texttt{en-MT-numeric} styles: the \opt{ord} option
+% (for the text styles) defaults to
+% \texttt{omit} and the CET (\utc{1}{0}) and CEST (\utc{2}{0}) time zone
+% mappings are added (for both the text and numeric styles).
+%
+%\section{English (IE)}
+%\label{sec:en-IE}
+% The Republic of Ireland English "en-IE" and "en-IE-numeric" styles are like the
+% British English "en-GB" and "en-GB-numeric" styles, but replace \texttt{enGB}
+% with \texttt{enIE} in the command names. This style can be loaded
+% by using \texttt{en-IE} as a document class option or as a
+% package option for either \sty{tracklang} or \sty{datetime2}.
+% You will need at least version 1.2 of the \sty{tracklang} package
+% installed.
+%
+% The only difference in the
+% \texttt{en-GB}\slash\texttt{en-GB-numeric} and
+% \texttt{en-IE}\slash\texttt{en-IE-numeric} styles is that
+% the \utc{1}{0} time zone is mapped to IST instead of
+% BST. If you prefer WET/WEST time zones, you can do:
+%\begin{verbatim}
+%\renewcommand*{\DTMenIEzonemaps}{%
+% \DTMdefzonemap{00}{00}{WET}%
+% \DTMdefzonemap{01}{00}{WEST}%
+%}
+%\end{verbatim}
+%
+%For Irish Gaelic you need the "irish" module instead.
+%
+%\StopEventually{%
+%\clearpage
+%\phantomsection
+%\addcontentsline{toc}{section}{Change History}%
+%\PrintChanges
+%\addcontentsline{toc}{section}{\indexname}%
+%\PrintIndex}
+%\section{The Code}
+%\iffalse
+% \begin{macrocode}
+%<*datetime2-english-base.ldf>
+% \end{macrocode}
+%\fi
+%\subsection{Base Code (\texttt{datetime2-english-base.ldf})}
+%This file contains the code common to all the English regional
+%variations.
+%\changes{1.0}{2015-03-24}{Initial release}
+% Identify module
+% \begin{macrocode}
+\ProvidesDateTimeModule{english-base}[2016/03/09 v1.04 (NLCT)]
+% \end{macrocode}
+% Since the main emphasize of the \sty{datetime2} package is to
+% provide expandable dates where possible, the commands here need to
+% be expandable. (Anything that wasn't expandable would need to be
+% protected.) Therefore the default ordinal format is a simple
+% expandable format (which is why \sty{fmtcount} isn't being used).
+%\begin{macro}{\DTMenglishordinal}
+% \begin{macrocode}
+\newcommand*{\DTMenglishordinal}[1]{%
+ \number#1 % space intended
+ \DTMenglishfmtordsuffix{%
+ \ifcase#1
+ \or \DTMenglishst
+ \or \DTMenglishnd
+ \or \DTMenglishrd
+ \or \DTMenglishth
+ \or \DTMenglishth
+ \or \DTMenglishth
+ \or \DTMenglishth
+ \or \DTMenglishth
+ \or \DTMenglishth
+ \or \DTMenglishth
+ \or \DTMenglishth
+ \or \DTMenglishth
+ \or \DTMenglishth
+ \or \DTMenglishth
+ \or \DTMenglishth
+ \or \DTMenglishth
+ \or \DTMenglishth
+ \or \DTMenglishth
+ \or \DTMenglishth
+ \or \DTMenglishth
+ \or \DTMenglishst
+ \or \DTMenglishnd
+ \or \DTMenglishrd
+ \or \DTMenglishth
+ \or \DTMenglishth
+ \or \DTMenglishth
+ \or \DTMenglishth
+ \or \DTMenglishth
+ \or \DTMenglishth
+ \or \DTMenglishth
+ \or \DTMenglishst
+ \fi
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%Just in case a~user has some need to change the ordinal suffixes,
+%these are provided as commands.
+%\begin{macro}{\DTMenglishst}
+% \begin{macrocode}
+\newcommand*{\DTMenglishst}{st}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\DTMenglishnd}
+% \begin{macrocode}
+\newcommand*{\DTMenglishnd}{nd}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\DTMenglishrd}
+% \begin{macrocode}
+\newcommand*{\DTMenglishrd}{rd}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\DTMenglishth}
+% \begin{macrocode}
+\newcommand*{\DTMenglishth}{th}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMenglishfmtordsuffix}
+%The suffix can have a format applied to it (for example, made a
+%superscript or converted to small caps). The default ignores
+%the argument, which makes it consistent with \TeX's default date
+%format. This can be changed by regional modules.
+% \begin{macrocode}
+\newcommand*{\DTMenglishfmtordsuffix}[1]{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMenglishmonthname}
+% English month names.
+% \begin{macrocode}
+\newcommand*{\DTMenglishmonthname}[1]{%
+ \ifcase#1
+ \or
+ January%
+ \or
+ February%
+ \or
+ March%
+ \or
+ April%
+ \or
+ May%
+ \or
+ June%
+ \or
+ July%
+ \or
+ August%
+ \or
+ September%
+ \or
+ October%
+ \or
+ November%
+ \or
+ December%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMenglishshortmonthname}
+% Abbreviated English month names.
+% \begin{macrocode}
+\newcommand*{\DTMenglishshortmonthname}[1]{%
+ \ifcase#1
+ \or
+ Jan%
+ \or
+ Feb%
+ \or
+ Mar%
+ \or
+ Apr%
+ \or
+ May%
+ \or
+ Jun%
+ \or
+ Jul%
+ \or
+ Aug%
+ \or
+ Sep%
+ \or
+ Oct%
+ \or
+ Nov%
+ \or
+ Dec%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMenglishweekdayname}
+% English day of week names.
+% \begin{macrocode}
+\newcommand*{\DTMenglishweekdayname}[1]{%
+ \ifcase#1
+ Monday%
+ \or
+ Tuesday%
+ \or
+ Wednesday%
+ \or
+ Thursday%
+ \or
+ Friday%
+ \or
+ Saturday%
+ \or
+ Sunday%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMenglishweekdayname}
+% English abbreviated day of week names.
+% \begin{macrocode}
+\newcommand*{\DTMenglishshortweekdayname}[1]{%
+ \ifcase#1
+ Mon%
+ \or
+ Tue%
+ \or
+ Wed%
+ \or
+ Thu%
+ \or
+ Fri%
+ \or
+ Sat%
+ \or
+ Sun%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+% 12 hour time tags.
+%\begin{macro}{\DTMenglisham}
+% \begin{macrocode}
+\newcommand*\DTMenglisham{am}%
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMenglishpm}
+% \begin{macrocode}
+\newcommand*\DTMenglishpm{pm}%
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMenglishmidnight}
+% \begin{macrocode}
+\newcommand*\DTMenglishmidnight{midnight}%
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMenglishnoon}
+% \begin{macrocode}
+\newcommand*\DTMenglishnoon{noon}%
+% \end{macrocode}
+%\end{macro}
+%
+% am/pm time style.
+%\begin{macro}{\DTMenglishampmfmt}
+% \begin{macrocode}
+\newcommand*{\DTMenglishampmfmt}[1]{#1}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMenglishtimesep}
+% \begin{macrocode}
+\newcommand*{\DTMenglishtimesep}{\DTMsep{hourmin}}
+% \end{macrocode}
+%\end{macro}
+%
+% This style ignores seconds.
+% \begin{macrocode}
+\DTMnewtimestyle
+ {englishampm}% label
+ {%
+ \renewcommand*\DTMdisplaytime[3]{%
+ \ifnum##2=0
+ \ifnum##1=12
+ \DTMtexorpdfstring
+ {\DTMenglishampmfmt{\DTMenglishnoon}}%
+ {\DTMenglishnoon}%
+ \else
+ \ifnum##1=0
+ \DTMtexorpdfstring
+ {\DTMenglishampmfmt{\DTMenglishmidnight}}%
+ {\DTMenglishmidnight}%
+ \else
+ \ifnum##1=24
+ \DTMtexorpdfstring
+ {\DTMenglishampmfmt{\DTMenglishmidnight}}%
+ {\DTMenglishmidnight}%
+ \else
+ \ifnum##1<12
+ \number##1
+ \DTMtexorpdfstring
+ {\DTMenglishampmfmt{\DTMenglisham}}%
+ {\DTMenglisham}%
+ \else
+ \number\numexpr##1-12\relax
+ \DTMtexorpdfstring
+ {\DTMenglishampmfmt{\DTMenglishpm}}%
+ {\DTMenglishpm}%
+ \fi
+ \fi
+ \fi
+ \fi
+ \else
+ \ifnum##1<13
+ \ifnum##1=0
+ 12%
+ \else
+ \number##1
+ \fi
+ \DTMenglishtimesep\DTMtwodigits{##2}%
+ \ifnum##1=12
+% \end{macrocode}
+% v1.03 bug fixed replaced \cs{DTMenglisham} with \cs{DTMenglishpm}
+%\changes{1.03}{2016-01-23}{fixed bug that displayed am instead of pm}
+% \begin{macrocode}
+ \DTMtexorpdfstring
+ {\DTMenglishampmfmt{\DTMenglishpm}}%
+ {\DTMenglishpm}%
+ \else
+ \DTMtexorpdfstring
+ {\DTMenglishampmfmt{\DTMenglisham}}%
+ {\DTMenglisham}%
+ \fi
+ \else
+ \number\numexpr##1-12\relax
+ \DTMenglishtimesep\DTMtwodigits{##2}%
+ \ifnum##1=24
+% \end{macrocode}
+% v1.03 bug fixed replaced \cs{DTMenglishpm} with \cs{DTMenglisham}
+%\changes{1.03}{2016-01-23}{fixed bug that displayed am instead of pm}
+% \begin{macrocode}
+ \DTMtexorpdfstring
+ {\DTMenglishampmfmt{\DTMenglisham}}%
+ {\DTMenglisham}%
+ \else
+ \DTMtexorpdfstring
+ {\DTMenglishampmfmt{\DTMenglishpm}}%
+ {\DTMenglishpm}%
+ \fi
+ \fi
+ \fi
+ }%
+ }%
+% \end{macrocode}
+%
+%
+%\iffalse
+% \begin{macrocode}
+%</datetime2-english-base.ldf>
+% \end{macrocode}
+%\fi
+%\subsection{Default English Code (\texttt{datetime2-english.ldf})}
+% This file contains the style used if English is requested without
+% a~known region. It uses \TeX's default date style.
+% This style ignores the \opt{showdow} (show day of week) setting.
+%\changes{1.0}{2015-03-24}{Initial release}
+%
+%\iffalse
+% \begin{macrocode}
+%<*datetime2-english.ldf>
+% \end{macrocode}
+%\fi
+%
+% Identify Module
+% \begin{macrocode}
+\ProvidesDateTimeModule{english}[2016/03/09 v1.04 (NLCT)]
+% \end{macrocode}
+% Load the base English module.
+% \begin{macrocode}
+\RequireDateTimeModule{english-base}
+% \end{macrocode}
+%
+% Define default English text style (TeX's default) labelled "english".
+% The time zone is just the "default" style (no mappings applied)
+% but "showisoZ" setting checked. The full style places a space
+% between each block (date, time and zone). The numeric setting is
+% ambiguous without a region so it will use the "default" style.
+% \begin{macrocode}
+\DTMnewstyle
+ {english}% label
+ {% date style
+ \renewcommand*{\DTMenglishfmtordsuffix}[1]{}%
+ \renewcommand*\DTMdisplaydate[4]{%
+ \DTMenglishmonthname{##2}\space\number##3, \number##1
+ }%
+ \renewcommand*{\DTMDisplaydate}[4]{\DTMdisplaydate{##1}{##2}{##3}{##4}}%
+ }%
+ {% time style
+ \renewcommand*{\DTMenglishtimesep}{\DTMsep{hourmin}}%
+ \DTMsettimestyle{englishampm}%
+ }%
+ {% zone style
+ \DTMsetzonestyle{default}%
+ }%
+ {% full style
+ \renewcommand*{\DTMdisplay}[9]{%
+ \ifDTMshowdate
+ \DTMdisplaydate{##1}{##2}{##3}{##4}%
+ \space
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \space
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+ \renewcommand*{\DTMDisplay}{\DTMdisplay}%
+ }%
+% \end{macrocode}
+% Switch the style according to the \opt{useregional} setting.
+% \begin{macrocode}
+\DTMifcaseregional
+{}% do nothing
+{\DTMsetstyle{english}}%
+{\DTMsetstyle{default}}%
+% \end{macrocode}
+%
+% Redefine \cs{dateenglish} (or \cs{date}\meta{dialect}) to prevent
+% \sty{babel} from resetting \cs{today}. (For this to work,
+% \sty{babel} must already have been loaded if it's required.)
+% \begin{macrocode}
+\ifcsundef{date\CurrentTrackedDialect}
+{%
+ \ifundef\dateenglish
+ {% do nothing
+ }%
+ {%
+ \def\dateenglish{%
+ \DTMifcaseregional
+ {}% do nothing
+ {\DTMsetstyle{english}}%
+ {\DTMsetstyle{default}}%
+ }%
+ }%
+}%
+{%
+ \csdef{date\CurrentTrackedDialect}{%
+ \DTMifcaseregional
+ {}% do nothing
+ {\DTMsetstyle{english}}%
+ {\DTMsetstyle{default}}%
+ }%
+}%
+% \end{macrocode}
+%\iffalse
+% \begin{macrocode}
+%</datetime2-english.ldf>
+% \end{macrocode}
+%\fi
+%
+%\subsection{English (GB) Code (\texttt{datetime2-en-GB.ldf})}
+%This file contains the British English style.
+%\changes{1.0}{2015-03-24}{Initial release}
+%\iffalse
+% \begin{macrocode}
+%<*datetime2-en-GB.ldf>
+% \end{macrocode}
+%\fi
+% Identify this module.
+% \begin{macrocode}
+\ProvidesDateTimeModule{en-GB}[2016/03/09 v1.04 (NLCT)]
+% \end{macrocode}
+% Load base English module.
+% \begin{macrocode}
+\RequireDateTimeModule{english-base}
+% \end{macrocode}
+%
+% Allow the user a way of configuring the "en-GB" and
+% "en-GB-numeric" styles. This doesn't use the package wide separators such as
+% \cs{dtm@datetimesep} in case other date formats are also required.
+%
+%\begin{macro}{\DTMenGBdowdaysep}
+%\changes{1.04}{2016-03-09}{new}
+% The separator between the day of week name and the day of month
+% number for the text format.
+% \begin{macrocode}
+\newcommand*{\DTMenGBdowdaysep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMenGBdaymonthsep}
+% The separator between the day and month for the text format.
+% \begin{macrocode}
+\newcommand*{\DTMenGBdaymonthsep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMenGBmonthyearsep}
+% The separator between the month and year for the text format.
+% \begin{macrocode}
+\newcommand*{\DTMenGBmonthyearsep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMenGBdatetimesep}
+% The separator between the date and time blocks in the full format
+% (either text or numeric).
+% \begin{macrocode}
+\newcommand*{\DTMenGBdatetimesep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMenGBtimezonesep}
+% The separator between the time and zone blocks in the full format
+% (either text or numeric).
+% \begin{macrocode}
+\newcommand*{\DTMenGBtimezonesep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMenGBdatesep}
+% The separator for the numeric date format.
+% \begin{macrocode}
+\newcommand*{\DTMenGBdatesep}{/}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMenGBtimesep}
+% The separator for the numeric time format.
+% \begin{macrocode}
+\newcommand*{\DTMenGBtimesep}{:}
+% \end{macrocode}
+%\end{macro}
+%
+%Provide keys that can be used in \cs{DTMlangsetup} to set these
+%separators.
+% \begin{macrocode}
+\DTMdefkey{en-GB}{dowdaysep}{\renewcommand*{\DTMenGBdowdaysep}{#1}}
+\DTMdefkey{en-GB}{daymonthsep}{\renewcommand*{\DTMenGBdaymonthsep}{#1}}
+\DTMdefkey{en-GB}{monthyearsep}{\renewcommand*{\DTMenGBmonthyearsep}{#1}}
+\DTMdefkey{en-GB}{datetimesep}{\renewcommand*{\DTMenGBdatetimesep}{#1}}
+\DTMdefkey{en-GB}{timezonesep}{\renewcommand*{\DTMenGBtimezonesep}{#1}}
+\DTMdefkey{en-GB}{datesep}{\renewcommand*{\DTMenGBdatesep}{#1}}
+\DTMdefkey{en-GB}{timesep}{\renewcommand*{\DTMenGBtimesep}{#1}}
+% \end{macrocode}
+%
+% Define a boolean key that can switch between full and abbreviated
+% formats for the month and day of week names in the text format.
+% \begin{macrocode}
+\DTMdefboolkey{en-GB}{abbr}[true]{}
+% \end{macrocode}
+% The default is the full name.
+% \begin{macrocode}
+\DTMsetbool{en-GB}{abbr}{false}
+% \end{macrocode}
+%
+% Define a boolean key that determines if the time zone mappings
+% should be used.
+% \begin{macrocode}
+\DTMdefboolkey{en-GB}{mapzone}[true]{}
+% \end{macrocode}
+% The default is to use mappings.
+% \begin{macrocode}
+\DTMsetbool{en-GB}{mapzone}{true}
+% \end{macrocode}
+%
+% Define a boolean key that determines whether to show or hide the
+% day of the month. (Called "showdayofmonth" instead of "showday" to
+% avoid confusion with the day of the week.)
+% \begin{macrocode}
+\DTMdefboolkey{en-GB}{showdayofmonth}[true]{}
+% \end{macrocode}
+% The default is to show the day of the month.
+% \begin{macrocode}
+\DTMsetbool{en-GB}{showdayofmonth}{true}
+% \end{macrocode}
+%
+% Define a boolean key that determines whether to show or hide the
+% year.
+% \begin{macrocode}
+\DTMdefboolkey{en-GB}{showyear}[true]{}
+% \end{macrocode}
+% The default is to show the year.
+% \begin{macrocode}
+\DTMsetbool{en-GB}{showyear}{true}
+% \end{macrocode}
+%
+%\begin{macro}{\DTMenGBfmtordsuffix}
+% Define the ordinal suffix to be used by this style.
+% \begin{macrocode}
+\newcommand*{\DTMenGBfmtordsuffix}[1]{#1}
+% \end{macrocode}
+%\end{macro}
+%
+% Define a setting to change the ordinal suffix style.
+% \begin{macrocode}
+\DTMdefchoicekey{en-GB}{ord}[\val\nr]{level,raise,omit,sc}{%
+ \ifcase\nr\relax
+ \renewcommand*{\DTMenGBfmtordsuffix}[1]{##1}%
+ \or
+ \renewcommand*{\DTMenGBfmtordsuffix}[1]{%
+ \DTMtexorpdfstring{\protect\textsuperscript{##1}}{##1}}%
+ \or
+ \renewcommand*{\DTMenGBfmtordsuffix}[1]{}%
+ \or
+ \renewcommand*{\DTMenGBfmtordsuffix}[1]{%
+ \DTMtexorpdfstring{\protect\textsc{##1}}{##1}}%
+ \fi
+}
+% \end{macrocode}
+%
+% Define the "en-GB" style.
+% \begin{macrocode}
+\DTMnewstyle
+ {en-GB}% label
+ {% date style
+ \renewcommand*{\DTMenglishfmtordsuffix}{\DTMenGBfmtordsuffix}%
+ \renewcommand*\DTMdisplaydate[4]{%
+ \ifDTMshowdow
+ \ifnum##4>-1
+ \DTMifbool{en-GB}{abbr}%
+ {\DTMenglishshortweekdayname{##4}}%
+ {\DTMenglishweekdayname{##4}}%
+ \DTMenGBdowdaysep
+ \fi
+ \fi
+ \DTMifbool{en-GB}{showdayofmonth}%
+ {%
+ \DTMenglishordinal{##3}%
+ \DTMenGBdaymonthsep
+ }%
+ {}%
+ \DTMifbool{en-GB}{abbr}%
+ {\DTMenglishshortmonthname{##2}}%
+ {\DTMenglishmonthname{##2}}%
+ \DTMifbool{en-GB}{showyear}%
+ {%
+ \DTMenGBmonthyearsep\number##1 % space intended
+ }%
+ {}%
+ }%
+ \renewcommand*{\DTMDisplaydate}[4]{\DTMdisplaydate{##1}{##2}{##3}{##4}}%
+ }%
+ {% time style
+ \renewcommand*\DTMenglishtimesep{\DTMenGBtimesep}%
+ \DTMsettimestyle{englishampm}%
+ }%
+ {% zone style
+ \DTMresetzones
+ \DTMenGBzonemaps
+ \renewcommand*{\DTMdisplayzone}[2]{%
+ \DTMifbool{en-GB}{mapzone}%
+ {\DTMusezonemapordefault{##1}{##2}}%
+ {%
+ \ifnum##1<0\else+\fi\DTMtwodigits{##1}%
+ \ifDTMshowzoneminutes\DTMenGBtimesep\DTMtwodigits{##2}\fi
+ }%
+ }%
+ }%
+ {% full style
+ \renewcommand*{\DTMdisplay}[9]{%
+ \ifDTMshowdate
+ \DTMdisplaydate{##1}{##2}{##3}{##4}%
+ \DTMenGBdatetimesep
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \DTMenGBtimezonesep
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+ \renewcommand*{\DTMDisplay}{\DTMdisplay}%
+ }%
+% \end{macrocode}
+%
+% Define numeric style.
+%\changes{1.01}{2015-04-09}{fixed mispelt style name}
+% \begin{macrocode}
+\DTMnewstyle
+ {en-GB-numeric}% label
+ {% date style
+ \renewcommand*\DTMdisplaydate[4]{%
+ \DTMifbool{en-GB}{showdayofmonth}%
+ {%
+ \number##3 % space intended
+ \DTMenGBdatesep
+ }%
+ {}%
+ \number##2 % space intended
+ \DTMifbool{en-GB}{showyear}%
+ {%
+ \DTMenGBdatesep
+ \number##1 % space intended
+ }%
+ {}%
+ }%
+ \renewcommand*{\DTMDisplaydate}[4]{\DTMdisplaydate{##1}{##2}{##3}{##4}}%
+ }%
+ {% time style
+ \renewcommand*\DTMdisplaytime[3]{%
+ \number##1
+ \DTMenGBtimesep\DTMtwodigits{##2}%
+ \ifDTMshowseconds\DTMenGBtimesep\DTMtwodigits{##3}\fi
+ }%
+ }%
+ {% zone style
+ \DTMresetzones
+ \DTMenGBzonemaps
+ \renewcommand*{\DTMdisplayzone}[2]{%
+ \DTMifbool{en-GB}{mapzone}%
+ {\DTMusezonemapordefault{##1}{##2}}%
+ {%
+ \ifnum##1<0\else+\fi\DTMtwodigits{##1}%
+ \ifDTMshowzoneminutes\DTMenGBtimesep\DTMtwodigits{##2}\fi
+ }%
+ }%
+ }%
+ {% full style
+ \renewcommand*{\DTMdisplay}[9]{%
+ \ifDTMshowdate
+ \DTMdisplaydate{##1}{##2}{##3}{##4}%
+ \DTMenGBdatetimesep
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \DTMenGBtimezonesep
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+ \renewcommand*{\DTMDisplay}{\DTMdisplay}%
+ }
+% \end{macrocode}
+%
+%\begin{macro}{\DTMenGBzonemaps}
+% The time zone mappings are set through this command, which can be
+% redefined if extra mappings are required or mappings need to be
+% removed.
+% \begin{macrocode}
+\newcommand*{\DTMenGBzonemaps}{%
+ \DTMdefzonemap{00}{00}{GMT}%
+ \DTMdefzonemap{01}{00}{BST}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+% Switch style according to the \opt{useregional} setting.
+% \begin{macrocode}
+\DTMifcaseregional
+{}% do nothing
+{\DTMsetstyle{en-GB}}%
+{\DTMsetstyle{en-GB-numeric}}%
+% \end{macrocode}
+%
+% Redefine \cs{dateenglish} (or \cs{date}\meta{dialect}) to prevent
+% \sty{babel} from resetting \cs{today}. (For this to work,
+% \sty{babel} must already have been loaded if it's required.)
+% \begin{macrocode}
+\ifcsundef{date\CurrentTrackedDialect}
+{% do nothing
+ \ifundef\dateenglish
+ {%
+ }%
+ {%
+ \def\dateenglish{%
+ \DTMifcaseregional
+ {}% do nothing
+ {\DTMsetstyle{en-GB}}%
+ {\DTMsetstyle{en-GB-numeric}}%
+ }%
+ }%
+}%
+{%
+ \csdef{date\CurrentTrackedDialect}{%
+ \DTMifcaseregional
+ {}% do nothing
+ {\DTMsetstyle{en-GB}}%
+ {\DTMsetstyle{en-GB-numeric}}%
+ }%
+}%
+% \end{macrocode}
+%
+%\iffalse
+% \begin{macrocode}
+%</datetime2-en-GB.ldf>
+% \end{macrocode}
+%\fi
+%\subsection{English (US) Code (\texttt{datetime2-en-US.ldf})}
+%This file contains the US English style.
+%\changes{1.0}{2015-03-24}{Initial release}
+%\iffalse
+% \begin{macrocode}
+%<*datetime2-en-US.ldf>
+% \end{macrocode}
+%\fi
+%
+% Identify this module.
+% \begin{macrocode}
+\ProvidesDateTimeModule{en-US}[2016/03/09 v1.04 (NLCT)]
+% \end{macrocode}
+% Load base English module.
+% \begin{macrocode}
+\RequireDateTimeModule{english-base}
+% \end{macrocode}
+%
+% Allow the user a way of configuring the "en-US" date format.
+% This doesn't use the package wide separators such as
+% \cs{dtm@datetimesep} in case other date formats are also required.
+%\begin{macro}{\DTMenUSmonthdaysep}
+% The separator between the month and day for the text format.
+% \begin{macrocode}
+\newcommand*{\DTMenUSmonthdaysep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMenUSdowmonthsep}
+% The separator between the day of week name and the month for the text format.
+% (New to version 1.02.)
+%\changes{1.02}{2016-01-18}{new}
+% \begin{macrocode}
+\newcommand*{\DTMenUSdowmonthsep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMenUSdayyearsep}
+% The separator between the day and year for the text format.
+% \begin{macrocode}
+\newcommand*{\DTMenUSdayyearsep}{,\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMenUSdatetimesep}
+% The separator between the date and time blocks in the full format
+% (either text or numeric).
+% \begin{macrocode}
+\newcommand*{\DTMenUSdatetimesep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMenUStimezonesep}
+% The separator between the time and zone blocks in the full format
+% (either text or numeric).
+% \begin{macrocode}
+\newcommand*{\DTMenUStimezonesep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMenUSdatesep}
+% The separator for the numeric date format.
+% \begin{macrocode}
+\newcommand*{\DTMenUSdatesep}{/}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMenUStimesep}
+% The separator for the numeric time format.
+% \begin{macrocode}
+\newcommand*{\DTMenUStimesep}{:}
+% \end{macrocode}
+%\end{macro}
+%
+%Provide keys that can be used in \cs{DTMlangsetup} to set these
+%separators.
+% \begin{macrocode}
+\DTMdefkey{en-US}{monthdaysep}{\renewcommand*{\DTMenUSmonthdaysep}{#1}}
+\DTMdefkey{en-US}{dowmonthsep}{\renewcommand*{\DTMenUSdowmonthsep}{#1}}
+\DTMdefkey{en-US}{dayyearsep}{\renewcommand*{\DTMenUSdayyearsep}{#1}}
+\DTMdefkey{en-US}{datetimesep}{\renewcommand*{\DTMenUSdatetimesep}{#1}}
+\DTMdefkey{en-US}{timezonesep}{\renewcommand*{\DTMenUStimezonesep}{#1}}
+\DTMdefkey{en-US}{datesep}{\renewcommand*{\DTMenUSdatesep}{#1}}
+\DTMdefkey{en-US}{timesep}{\renewcommand*{\DTMenUStimesep}{#1}}
+% \end{macrocode}
+%
+% Define a boolean key that can switch between full and abbreviated
+% formats for the month and day of week names in the text format.
+% \begin{macrocode}
+\DTMdefboolkey{en-US}{abbr}[true]{}
+% \end{macrocode}
+% The default is the full name.
+% \begin{macrocode}
+\DTMsetbool{en-US}{abbr}{false}
+% \end{macrocode}
+%
+% Define a boolean key that determines if the time zone mappings
+% should be used.
+% \begin{macrocode}
+\DTMdefboolkey{en-US}{mapzone}[true]{}
+% \end{macrocode}
+% The default is no mappings.
+% \begin{macrocode}
+\DTMsetbool{en-US}{mapzone}{false}
+% \end{macrocode}
+%
+% Define a boolean key that determines whether to show or hide the
+% day of the month. (Called "showdayofmonth" instead of "showday" to
+% avoid confusion with the day of the week.)
+% \begin{macrocode}
+\DTMdefboolkey{en-US}{showdayofmonth}[true]{}
+% \end{macrocode}
+% The default is to show the day of the month.
+% \begin{macrocode}
+\DTMsetbool{en-US}{showdayofmonth}{true}
+% \end{macrocode}
+%
+% Define a boolean key that determines whether to show or hide the
+% year.
+% \begin{macrocode}
+\DTMdefboolkey{en-US}{showyear}[true]{}
+% \end{macrocode}
+% The default is to show the year.
+% \begin{macrocode}
+\DTMsetbool{en-US}{showyear}{true}
+% \end{macrocode}
+%
+%\begin{macro}{\DTMenUSfmtordsuffix}
+% Define the ordinal suffix to be used by this style.
+% \begin{macrocode}
+\newcommand*{\DTMenUSfmtordsuffix}[1]{}
+% \end{macrocode}
+%\end{macro}
+%
+% Define a setting to change the ordinal suffix style.
+% \begin{macrocode}
+\DTMdefchoicekey{en-US}{ord}[\val\nr]{level,raise,omit,sc}{%
+ \ifcase\nr\relax
+ \renewcommand*{\DTMenUSfmtordsuffix}[1]{##1}%
+ \or
+ \renewcommand*{\DTMenUSfmtordsuffix}[1]{%
+ \DTMtexorpdfstring{\protect\textsuperscript{##1}}{##1}}%
+ \or
+ \renewcommand*{\DTMenUSfmtordsuffix}[1]{}%
+ \or
+ \renewcommand*{\DTMenUSfmtordsuffix}[1]{%
+ \DTMtexorpdfstring{\protect\textsc{##1}}{##1}}%
+ \fi
+}
+% \end{macrocode}
+%
+% Define a setting to change zone mappings.
+%\changes{1.03}{2016-01-23}{added zone option to en-US}
+% \begin{macrocode}
+\DTMdefchoicekey{en-US}{zone}[\val\nr]%
+ {std,standard,dst,daylight,atlantic,eastern,central,mountain,%
+ pacific,alaska,hawaii-aleutian,hawaii,aleutian,samoa,charmorro,clear}%
+{%
+ \ifcase\nr\relax
+ % std
+ \appto\DTMenUSzonemaps{\DTMenUSstdzonemaps}%
+ \DTMenUSstdzonemaps
+ \or
+ % standard
+ \appto\DTMenUSzonemaps{\DTMenUSstdzonemaps}%
+ \DTMenUSstdzonemaps
+ \or
+ % dst
+ \appto\DTMenUSzonemaps{\DTMenUSdstzonemaps}%
+ \DTMenUSdstzonemaps
+ \or
+ % daylight
+ \appto\DTMenUSzonemaps{\DTMenUSdstzonemaps}%
+ \DTMenUSdstzonemaps
+ \or
+ % atlantic
+ \appto\DTMenUSzonemaps{\DTMenUSatlanticzonemaps}%
+ \DTMenUSatlanticzonemaps
+ \or
+ % eastern
+ \appto\DTMenUSzonemaps{\DTMenUSeasternzonemaps}%
+ \DTMenUSeasternzonemaps
+ \or
+ % central
+ \appto\DTMenUSzonemaps{\DTMenUScentralzonemaps}%
+ \DTMenUScentralzonemaps
+ \or
+ % mountain
+ \appto\DTMenUSzonemaps{\DTMenUSmountainzonemaps}%
+ \DTMenUSmountainzonemaps
+ \or
+ % pacific
+ \appto\DTMenUSzonemaps{\DTMenUSpacificzonemaps}%
+ \DTMenUSpacificzonemaps
+ \or
+ % alaska
+ \appto\DTMenUSzonemaps{\DTMenUSalaskazonemaps}%
+ \DTMenUSalaskazonemaps
+ \or
+ % hawaii-aleutian
+ \appto\DTMenUSzonemaps{\DTMenUShawaiialeutianzonemaps}%
+ \DTMenUShawaiialeutianzonemaps
+ \or
+ % hawaii
+ \appto\DTMenUSzonemaps{\DTMenUShawaiialeutianzonemaps}%
+ \DTMenUShawaiialeutianzonemaps
+ \or
+ % aleutian
+ \appto\DTMenUSzonemaps{\DTMenUShawaiialeutianzonemaps}%
+ \DTMenUShawaiialeutianzonemaps
+ \or
+ % samoa
+ \appto\DTMenUSzonemaps{\DTMenUSsamoazonemaps}%
+ \DTMenUSsamoazonemaps
+ \or
+ % chamorro
+ \appto\DTMenUSzonemaps{\DTMenUSchamorrozonemaps}%
+ \DTMenUSchamorrozonemaps
+ \or
+ % clear
+ \renewcommand*{\DTMenUSzonemaps}{}%
+ \DTMclearmap{-3}{0}%
+ \DTMclearmap{-4}{0}%
+ \DTMclearmap{-5}{0}%
+ \DTMclearmap{-6}{0}%
+ \DTMclearmap{-7}{0}%
+ \DTMclearmap{-8}{0}%
+ \DTMclearmap{-9}{0}%
+ \DTMclearmap{-10}{0}%
+ \DTMclearmap{-11}{0}%
+ \DTMclearmap{10}{0}%
+ \fi
+}
+% \end{macrocode}
+%
+%
+% Define the "en-US" style. Hiding the day of month is a bit awkward
+% as the default day-year separator has a comma that should
+% disappear if the day number is missing so the month-day separator
+% is used as the month-year separator if the day is missing.
+%\changes{1.02}{2016-01-18}{added support for showdow option}
+% \begin{macrocode}
+\DTMnewstyle
+ {en-US}% label
+ {% date style
+ \renewcommand*{\DTMenglishfmtordsuffix}{\DTMenUSfmtordsuffix}%
+ \renewcommand*\DTMdisplaydate[4]{%
+% \end{macrocode}
+% Support for \opt{showdow} added in v1.02 (thanks to Alan Munn).
+% \begin{macrocode}
+ \ifDTMshowdow
+ \ifnum##4>-1 % space intended
+ \DTMifbool{en-US}{abbr}%
+ {\DTMenglishshortweekdayname{##4}}%
+ {\DTMenglishweekdayname{##4}}%
+ \DTMenUSdowmonthsep
+ \fi
+ \fi
+ \DTMifbool{en-US}{abbr}%
+ {\DTMenglishshortmonthname{##2}}%
+ {\DTMenglishmonthname{##2}}%
+ \DTMifbool{en-US}{showdayofmonth}%
+ {%
+ \DTMenUSmonthdaysep
+ \DTMenglishordinal{##3}%
+ \DTMifbool{en-US}{showyear}%
+ {%
+ \DTMenUSdayyearsep
+ \number##1 % space intended
+ }%
+ {}%
+ }%
+ {%
+ \DTMifbool{en-US}{showyear}%
+ {%
+ \DTMenUSmonthdaysep
+ \number##1 % space intended
+ }%
+ {}%
+ }%
+ }%
+ \renewcommand*{\DTMDisplaydate}[4]{\DTMdisplaydate{##1}{##2}{##3}{##4}}%
+ }%
+ {% time style
+ \renewcommand*\DTMenglishtimesep{\DTMenUStimesep}%
+ \DTMsettimestyle{englishampm}%
+ }%
+ {% zone style
+ \DTMresetzones
+ \DTMenUSzonemaps
+ \renewcommand*{\DTMdisplayzone}[2]{%
+ \DTMifbool{en-US}{mapzone}%
+ {\DTMusezonemapordefault{##1}{##2}}%
+ {%
+ \ifnum##1<0\else+\fi\DTMtwodigits{##1}%
+ \ifDTMshowzoneminutes\DTMenUStimesep\DTMtwodigits{##2}\fi
+ }%
+ }%
+ }%
+ {% full style
+ \renewcommand*{\DTMdisplay}[9]{%
+ \ifDTMshowdate
+ \DTMdisplaydate{##1}{##2}{##3}{##4}%
+ \DTMenUSdatetimesep
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \DTMenUStimezonesep
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+ \renewcommand*{\DTMDisplay}{\DTMdisplay}%
+ }%
+% \end{macrocode}
+%
+% Define numeric style.
+% \begin{macrocode}
+\DTMnewstyle
+ {en-US-numeric}% label
+ {% date style
+ \renewcommand*\DTMdisplaydate[4]{%
+ \number##2 % space intended
+ \DTMifbool{en-US}{showdayofmonth}%
+ {%
+ \DTMenUSdatesep
+ \number##3 % space intended
+ }%
+ {}%
+ \DTMifbool{en-US}{showyear}%
+ {%
+ \DTMenUSdatesep
+ \number##1 % space intended
+ }%
+ {}%
+ }%
+ \renewcommand*{\DTMDisplaydate}[4]{\DTMdisplaydate{##1}{##2}{##3}{##4}}%
+ }%
+ {% time style
+ \renewcommand*\DTMdisplaytime[3]{%
+ \number##1
+ \DTMenUStimesep\DTMtwodigits{##2}%
+ \ifDTMshowseconds\DTMenUStimesep\DTMtwodigits{##3}\fi
+ }%
+ }%
+ {% zone style
+ \DTMresetzones
+ \DTMenUSzonemaps
+ \renewcommand*{\DTMdisplayzone}[2]{%
+ \DTMifbool{en-US}{mapzone}%
+ {\DTMusezonemapordefault{##1}{##2}}%
+ {%
+ \ifnum##1<0\else+\fi\DTMtwodigits{##1}%
+ \ifDTMshowzoneminutes\DTMenUStimesep\DTMtwodigits{##2}\fi
+ }%
+ }%
+ }%
+ {% full style
+ \renewcommand*{\DTMdisplay}[9]{%
+ \ifDTMshowdate
+ \DTMdisplaydate{##1}{##2}{##3}{##4}%
+ \DTMenUSdatetimesep
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \DTMenUStimezonesep
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+ \renewcommand*{\DTMDisplay}{\DTMdisplay}%
+ }
+% \end{macrocode}
+%
+%\begin{macro}{\DTMenUSzonemaps}
+% The time zone mappings are set through this command, which can be
+% redefined if extra mappings are required or mappings need to be
+% removed. (These don't take daylight saving into account.)
+% \begin{macrocode}
+\newcommand*{\DTMenUSzonemaps}{%
+ \DTMdefzonemap{-3}{00}{ADT}%
+ \DTMdefzonemap{-4}{00}{AST}%
+ \DTMdefzonemap{-5}{00}{EST}%
+ \DTMdefzonemap{-6}{00}{CST}%
+ \DTMdefzonemap{-7}{00}{MST}%
+ \DTMdefzonemap{-8}{00}{PST}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMenUSstdzonemaps}
+% Just the standard time zone mappings.
+%\changes{1.03}{2016-01-23}{new}
+% \begin{macrocode}
+\newcommand*{\DTMenUSstdzonemaps}{%
+ \DTMdefzonemap{-4}{00}{AST}%
+ \DTMdefzonemap{-5}{00}{EST}%
+ \DTMdefzonemap{-6}{00}{CST}%
+ \DTMdefzonemap{-7}{00}{MST}%
+ \DTMdefzonemap{-8}{00}{PST}%
+ \DTMdefzonemap{-9}{00}{AKST}%
+ \DTMdefzonemap{-10}{00}{HAST}%
+ \DTMdefzonemap{-11}{00}{SST}%
+ \DTMdefzonemap{10}{00}{ChST}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMenUSdstzonemaps}
+% Just daylight saving mappings.
+%\changes{1.03}{2016-01-23}{new}
+% \begin{macrocode}
+\newcommand*{\DTMenUSdstzonemaps}{%
+ \DTMdefzonemap{-3}{00}{ADT}%
+ \DTMdefzonemap{-4}{00}{EDT}%
+ \DTMdefzonemap{-5}{00}{CDT}%
+ \DTMdefzonemap{-6}{00}{MDT}%
+ \DTMdefzonemap{-7}{00}{PDT}%
+ \DTMdefzonemap{-8}{00}{AKDT}%
+ \DTMdefzonemap{-9}{00}{HADT}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMenUSatlanticzonemaps}
+% Just the Atlantic zone mappings (AST and ADT).
+%\changes{1.03}{2016-01-23}{new}
+% \begin{macrocode}
+\newcommand*{\DTMenUSatlanticzonemaps}{%
+ \DTMdefzonemap{-4}{00}{AST}%
+ \DTMdefzonemap{-3}{00}{ADT}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMenUSeasternzonemaps}
+% Just the Eastern zone mappings (EST and EDT).
+%\changes{1.03}{2016-01-23}{new}
+% \begin{macrocode}
+\newcommand*{\DTMenUSeasternzonemaps}{%
+ \DTMdefzonemap{-5}{00}{EST}%
+ \DTMdefzonemap{-4}{00}{EDT}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMenUScentralzonemaps}
+% Just the Central zone mappings (CST and CDT).
+%\changes{1.03}{2016-01-23}{new}
+% \begin{macrocode}
+\newcommand*{\DTMenUScentralzonemaps}{%
+ \DTMdefzonemap{-6}{00}{CST}%
+ \DTMdefzonemap{-5}{00}{CDT}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMenUSmountainzonemaps}
+% Just the Mountain zone mappings (MST and MDT).
+%\changes{1.03}{2016-01-23}{new}
+% \begin{macrocode}
+\newcommand*{\DTMenUSmountainzonemaps}{%
+ \DTMdefzonemap{-7}{00}{MST}%
+ \DTMdefzonemap{-6}{00}{MDT}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMenUSpacificzonemaps}
+% Just the Pacific zone mappings (PST and PDT).
+%\changes{1.03}{2016-01-23}{new}
+% \begin{macrocode}
+\newcommand*{\DTMenUSpacificzonemaps}{%
+ \DTMdefzonemap{-8}{00}{PST}%
+ \DTMdefzonemap{-7}{00}{PDT}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMenUSalaskazonemaps}
+% Just the Alaska zone mappings (AKST and AKDT).
+%\changes{1.03}{2016-01-23}{new}
+% \begin{macrocode}
+\newcommand*{\DTMenUSalaskazonemaps}{%
+ \DTMdefzonemap{-9}{00}{AKST}%
+ \DTMdefzonemap{-8}{00}{AKDT}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMenUShawaiialeutianzonemaps}
+% Just the Hawaii-Aleutian zone mappings (HAST and HADT).
+%\changes{1.03}{2016-01-23}{new}
+% \begin{macrocode}
+\newcommand*{\DTMenUShawaiialeutianzonemaps}{%
+ \DTMdefzonemap{-10}{00}{HAST}%
+ \DTMdefzonemap{-9}{00}{HADT}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMenUSsamoazonemaps}
+% Just the Samoa standard time (SST).
+%\changes{1.03}{2016-01-23}{new}
+% \begin{macrocode}
+\newcommand*{\DTMenUSsamoazonemaps}{%
+ \DTMdefzonemap{-11}{00}{SST}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMenUSchamorrozonemaps}
+% Just the Chamorro standard time (ChST).
+%\changes{1.03}{2016-01-23}{new}
+% \begin{macrocode}
+\newcommand*{\DTMenUSchamorrozonemaps}{%
+ \DTMdefzonemap{10}{00}{ChST}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%
+% Switch style according to the \opt{useregional} setting.
+% \begin{macrocode}
+\DTMifcaseregional
+{}% do nothing
+{\DTMsetstyle{en-US}}%
+{\DTMsetstyle{en-US-numeric}}%
+% \end{macrocode}
+%
+% Redefine \cs{dateenglish} (or \cs{date}\meta{dialect}) to prevent
+% \sty{babel} from resetting \cs{today}. (For this to work,
+% \sty{babel} must already have been loaded if it's required.)
+% \begin{macrocode}
+\ifcsundef{date\CurrentTrackedDialect}
+{% do nothing
+ \ifundef\dateenglish
+ {%
+ }%
+ {%
+ \def\dateenglish{%
+ \DTMifcaseregional
+ {}% do nothing
+ {\DTMsetstyle{en-US}}%
+ {\DTMsetstyle{en-US-numeric}}%
+ }%
+ }%
+}%
+{%
+ \csdef{date\CurrentTrackedDialect}{%
+ \DTMifcaseregional
+ {}% do nothing
+ {\DTMsetstyle{en-US}}%
+ {\DTMsetstyle{en-US-numeric}}%
+ }%
+}%
+% \end{macrocode}
+%
+%\iffalse
+% \begin{macrocode}
+%</datetime2-en-US.ldf>
+% \end{macrocode}
+%\fi
+%\subsection{English (Canada) Code (\texttt{datetime2-en-CA.ldf})}
+%This file contains the Canadian English style. This is very similar
+%to the US style.
+%\changes{1.0}{2015-03-24}{Initial release}
+%\iffalse
+% \begin{macrocode}
+%<*datetime2-en-CA.ldf>
+% \end{macrocode}
+%\fi
+%
+% Identify this module.
+% \begin{macrocode}
+\ProvidesDateTimeModule{en-CA}[2016/03/09 v1.04 (NLCT)]
+% \end{macrocode}
+% Load base English module.
+% \begin{macrocode}
+\RequireDateTimeModule{english-base}
+% \end{macrocode}
+%
+% Allow the user a way of configuring the "en-CA" and
+% "en-CA-numeric" formats. This doesn't use the package wide separators such as
+% \cs{dtm@datetimesep} in case other date formats are also required.
+%\begin{macro}{\DTMenCAmonthdaysep}
+% The separator between the month and day for the text format.
+% \begin{macrocode}
+\newcommand*{\DTMenCAmonthdaysep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMenCAdowmonthsep}
+% The separator between the day of week name and the month for the text format.
+% (New to version 1.02.)
+%\changes{1.02}{2016-01-18}{new}
+% \begin{macrocode}
+\newcommand*{\DTMenCAdowmonthsep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMenCAdayyearsep}
+% The separator between the day and year for the text format.
+% \begin{macrocode}
+\newcommand*{\DTMenCAdayyearsep}{,\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMenCAdatetimesep}
+% The separator between the date and time blocks in the full format
+% (either text or numeric).
+% \begin{macrocode}
+\newcommand*{\DTMenCAdatetimesep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMenCAtimezonesep}
+% The separator between the time and zone blocks in the full format
+% (either text or numeric).
+% \begin{macrocode}
+\newcommand*{\DTMenCAtimezonesep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMenCAdatesep}
+% The separator for the numeric date format.
+% \begin{macrocode}
+\newcommand*{\DTMenCAdatesep}{/}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMenCAtimesep}
+% The separator for the numeric time format.
+% \begin{macrocode}
+\newcommand*{\DTMenCAtimesep}{:}
+% \end{macrocode}
+%\end{macro}
+%
+%Provide keys that can be used in \cs{DTMlangsetup} to set these
+%separators.
+% \begin{macrocode}
+\DTMdefkey{en-CA}{monthdaysep}{\renewcommand*{\DTMenCAmonthdaysep}{#1}}
+\DTMdefkey{en-CA}{dowmonthsep}{\renewcommand*{\DTMenCAdowmonthsep}{#1}}
+\DTMdefkey{en-CA}{dayyearsep}{\renewcommand*{\DTMenCAdayyearsep}{#1}}
+\DTMdefkey{en-CA}{datetimesep}{\renewcommand*{\DTMenCAdatetimesep}{#1}}
+\DTMdefkey{en-CA}{timezonesep}{\renewcommand*{\DTMenCAtimezonesep}{#1}}
+\DTMdefkey{en-CA}{datesep}{\renewcommand*{\DTMenCAdatesep}{#1}}
+\DTMdefkey{en-CA}{timesep}{\renewcommand*{\DTMenCAtimesep}{#1}}
+% \end{macrocode}
+%
+% Define a boolean key that can switch between full and abbreviated
+% formats for the month and day of week names in the text format.
+% \begin{macrocode}
+\DTMdefboolkey{en-CA}{abbr}[true]{}
+% \end{macrocode}
+% The default is the full name.
+% \begin{macrocode}
+\DTMsetbool{en-CA}{abbr}{false}
+% \end{macrocode}
+%
+% Define a boolean key that determines if the time zone mappings
+% should be used.
+% \begin{macrocode}
+\DTMdefboolkey{en-CA}{mapzone}[true]{}
+% \end{macrocode}
+% The default is no mappings.
+% \begin{macrocode}
+\DTMsetbool{en-CA}{mapzone}{false}
+% \end{macrocode}
+%
+% Define a boolean key that determines whether to show or hide the
+% day of the month. (Called "showdayofmonth" instead of "showday" to
+% avoid confusion with the day of the week.)
+% \begin{macrocode}
+\DTMdefboolkey{en-CA}{showdayofmonth}[true]{}
+% \end{macrocode}
+% The default is to show the day of the month.
+% \begin{macrocode}
+\DTMsetbool{en-CA}{showdayofmonth}{true}
+% \end{macrocode}
+%
+% Define a boolean key that determines whether to show or hide the
+% year.
+% \begin{macrocode}
+\DTMdefboolkey{en-CA}{showyear}[true]{}
+% \end{macrocode}
+% The default is to show the year.
+% \begin{macrocode}
+\DTMsetbool{en-CA}{showyear}{true}
+% \end{macrocode}
+%
+%\begin{macro}{\DTMenCAfmtordsuffix}
+% Define the ordinal suffix to be used by this style.
+% \begin{macrocode}
+\newcommand*{\DTMenCAfmtordsuffix}[1]{}
+% \end{macrocode}
+%\end{macro}
+%
+% Define a setting to change the ordinal suffix style.
+% \begin{macrocode}
+\DTMdefchoicekey{en-CA}{ord}[\val\nr]{level,raise,omit,sc}{%
+ \ifcase\nr\relax
+ \renewcommand*{\DTMenCAfmtordsuffix}[1]{##1}%
+ \or
+ \renewcommand*{\DTMenCAfmtordsuffix}[1]{%
+ \DTMtexorpdfstring{\protect\textsuperscript{##1}}{##1}}%
+ \or
+ \renewcommand*{\DTMenCAfmtordsuffix}[1]{}%
+ \or
+ \renewcommand*{\DTMenCAfmtordsuffix}[1]{%
+ \DTMtexorpdfstring{\protect\textsc{##1}}{##1}}%
+ \fi
+}
+% \end{macrocode}
+%
+% Define a setting to change zone mappings.
+%\changes{1.03}{2016-01-23}{added zone option to en-CA}
+% \begin{macrocode}
+\DTMdefchoicekey{en-CA}{zone}[\val\nr]%
+ {std,standard,dst,daylight,newfoundland,atlantic,eastern,central,mountain,%
+ pacific,clear}%
+{%
+ \ifcase\nr\relax
+ % std
+ \appto\DTMenCAzonemaps{\DTMenCAstdzonemaps}%
+ \DTMenCAstdzonemaps
+ \or
+ % standard
+ \appto\DTMenCAzonemaps{\DTMenCAstdzonemaps}%
+ \DTMenCAstdzonemaps
+ \or
+ % dst
+ \appto\DTMenCAzonemaps{\DTMenCAdstzonemaps}%
+ \DTMenCAdstzonemaps
+ \or
+ % daylight
+ \appto\DTMenCAzonemaps{\DTMenCAdstzonemaps}%
+ \DTMenCAdstzonemaps
+ \or
+ % newfoundland
+ \appto\DTMenCAzonemaps{\DTMenCAnewfoundlandzonemaps}%
+ \DTMenCAnewfoundlandzonemaps
+ \or
+ % atlantic
+ \appto\DTMenCAzonemaps{\DTMenCAatlanticzonemaps}%
+ \DTMenCAatlanticzonemaps
+ \or
+ % eastern
+ \appto\DTMenCAzonemaps{\DTMenCAeasternzonemaps}%
+ \DTMenCAeasternzonemaps
+ \or
+ % central
+ \appto\DTMenCAzonemaps{\DTMenCAcentralzonemaps}%
+ \DTMenCAcentralzonemaps
+ \or
+ % mountain
+ \appto\DTMenCAzonemaps{\DTMenCAmountainzonemaps}%
+ \DTMenCAmountainzonemaps
+ \or
+ % pacific
+ \appto\DTMenCAzonemaps{\DTMenCApacificzonemaps}%
+ \DTMenCApacificzonemaps
+ \or
+ % clear
+ \renewcommand*{\DTMenCAzonemaps}{}%
+ \DTMclearmap{-2}{30}%
+ \DTMclearmap{-3}{30}%
+ \DTMclearmap{-3}{0}%
+ \DTMclearmap{-4}{0}%
+ \DTMclearmap{-5}{0}%
+ \DTMclearmap{-6}{0}%
+ \DTMclearmap{-7}{0}%
+ \DTMclearmap{-8}{0}%
+ \fi
+}
+% \end{macrocode}
+%
+% Define the "en-CA" style (similar to "en-US").
+% \begin{macrocode}
+\DTMnewstyle
+ {en-CA}% label
+ {% date style
+ \renewcommand*{\DTMenglishfmtordsuffix}{\DTMenCAfmtordsuffix}%
+ \renewcommand*\DTMdisplaydate[4]{%
+% \end{macrocode}
+% Support for \opt{showdow} added in v1.02 (thanks to Alan Munn).
+% \begin{macrocode}
+ \ifDTMshowdow
+ \ifnum##4>-1 % space intended
+ \DTMifbool{en-CA}{abbr}%
+ {\DTMenglishshortweekdayname{##4}}%
+ {\DTMenglishweekdayname{##4}}%
+ \DTMenCAdowmonthsep
+ \fi
+ \fi
+ \DTMifbool{en-CA}{abbr}%
+ {\DTMenglishshortmonthname{##2}}%
+ {\DTMenglishmonthname{##2}}%
+ \DTMifbool{en-CA}{showdayofmonth}%
+ {%
+ \DTMenCAmonthdaysep
+ \DTMenglishordinal{##3}%
+ \DTMifbool{en-CA}{showyear}%
+ {%
+ \DTMenCAdayyearsep
+ \number##1 % intended
+ }%
+ {}%
+ }%
+ {%
+ \DTMifbool{en-CA}{showyear}%
+ {%
+ \DTMenCAmonthdaysep
+ \number##1 % intended
+ }%
+ {}%
+ }%
+ }%
+ \renewcommand*{\DTMDisplaydate}[4]{\DTMdisplaydate{##1}{##2}{##3}{##4}}%
+ }%
+ {% time style
+ \renewcommand*\DTMenglishtimesep{\DTMenCAtimesep}%
+ \DTMsettimestyle{englishampm}%
+ }%
+ {% zone style
+ \DTMresetzones
+ \DTMenCAzonemaps
+ \renewcommand*{\DTMdisplayzone}[2]{%
+ \DTMifbool{en-CA}{mapzone}%
+ {\DTMusezonemapordefault{##1}{##2}}%
+ {%
+ \ifnum##1<0\else+\fi\DTMtwodigits{##1}%
+ \ifDTMshowzoneminutes\DTMenCAtimesep\DTMtwodigits{##2}\fi
+ }%
+ }%
+ }%
+ {% full style
+ \renewcommand*{\DTMdisplay}[9]{%
+ \ifDTMshowdate
+ \DTMdisplaydate{##1}{##2}{##3}{##4}%
+ \DTMenCAdatetimesep
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \DTMenCAtimezonesep
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+ \renewcommand*{\DTMDisplay}{\DTMdisplay}%
+ }%
+% \end{macrocode}
+%
+% Define numeric style.
+% \begin{macrocode}
+\DTMnewstyle
+ {en-CA-numeric}% label
+ {% date style
+ \renewcommand*\DTMdisplaydate[4]{%
+ \number##2 % space intended
+ \DTMifbool{en-CA}{showdayofmonth}%
+ {%
+ \DTMenCAdatesep
+ \number##3 % space intended
+ }%
+ {}%
+ \DTMifbool{en-CA}{showyear}%
+ {%
+ \DTMenCAdatesep
+ \number##1 % space intended
+ }%
+ {}%
+ }%
+ \renewcommand*{\DTMDisplaydate}[4]{\DTMdisplaydate{##1}{##2}{##3}{##4}}%
+ }%
+ {% time style
+ \renewcommand*\DTMdisplaytime[3]{%
+ \number##1
+ \DTMenCAtimesep\DTMtwodigits{##2}%
+ \ifDTMshowseconds\DTMenCAtimesep\DTMtwodigits{##3}\fi
+ }%
+ }%
+ {% zone style
+ \DTMresetzones
+ \DTMenCAzonemaps
+ \renewcommand*{\DTMdisplayzone}[2]{%
+ \DTMifbool{en-CA}{mapzone}%
+ {\DTMusezonemapordefault{##1}{##2}}%
+ {%
+ \ifnum##1<0\else+\fi\DTMtwodigits{##1}%
+ \ifDTMshowzoneminutes\DTMenCAtimesep\DTMtwodigits{##2}\fi
+ }%
+ }%
+ }%
+ {% full style
+ \renewcommand*{\DTMdisplay}[9]{%
+ \ifDTMshowdate
+ \DTMdisplaydate{##1}{##2}{##3}{##4}%
+ \DTMenCAdatetimesep
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \DTMenCAtimezonesep
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+ \renewcommand*{\DTMDisplay}{\DTMdisplay}%
+ }
+% \end{macrocode}
+%
+%\begin{macro}{\DTMenCAzonemaps}
+% The time zone mappings are set through this command, which can be
+% redefined if extra mappings are required or mappings need to be
+% removed. (These don't take daylight saving into account, except
+% for NDT.)
+% \begin{macrocode}
+\newcommand*{\DTMenCAzonemaps}{%
+ \DTMdefzonemap{-2}{30}{NDT}%
+ \DTMdefzonemap{-3}{30}{NST}%
+ \DTMdefzonemap{-4}{00}{AST}%
+ \DTMdefzonemap{-5}{00}{EST}%
+ \DTMdefzonemap{-6}{00}{CST}%
+ \DTMdefzonemap{-7}{00}{MST}%
+ \DTMdefzonemap{-8}{00}{PST}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMenCAstdzonemaps}
+% Just the standard time zone mappings.
+%\changes{1.03}{2016-01-23}{new}
+% \begin{macrocode}
+\newcommand*{\DTMenCAstdzonemaps}{%
+ \DTMdefzonemap{-3}{30}{NST}%
+ \DTMdefzonemap{-4}{00}{AST}%
+ \DTMdefzonemap{-5}{00}{EST}%
+ \DTMdefzonemap{-6}{00}{CST}%
+ \DTMdefzonemap{-7}{00}{MST}%
+ \DTMdefzonemap{-8}{00}{PST}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMenCAdstzonemaps}
+% Just daylight saving mappings.
+%\changes{1.03}{2016-01-23}{new}
+% \begin{macrocode}
+\newcommand*{\DTMenCAdstzonemaps}{%
+ \DTMdefzonemap{-2}{30}{NDT}%
+ \DTMdefzonemap{-3}{00}{ADT}%
+ \DTMdefzonemap{-4}{00}{EDT}%
+ \DTMdefzonemap{-5}{00}{CDT}%
+ \DTMdefzonemap{-6}{00}{MDT}%
+ \DTMdefzonemap{-7}{00}{PDT}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMenCAnewfoundlandzonemaps}
+% Just the Newfoundland zone mappings (NST and NDT).
+%\changes{1.03}{2016-01-23}{new}
+% \begin{macrocode}
+\newcommand*{\DTMenCAnewfoundlandzonemaps}{%
+ \DTMdefzonemap{-3}{30}{NST}%
+ \DTMdefzonemap{-2}{30}{NDT}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMenCAatlanticzonemaps}
+% Just the Atlantic zone mappings (AST and ADT).
+%\changes{1.03}{2016-01-23}{new}
+% \begin{macrocode}
+\newcommand*{\DTMenCAatlanticzonemaps}{%
+ \DTMdefzonemap{-4}{00}{AST}%
+ \DTMdefzonemap{-3}{00}{ADT}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMenCAeasternzonemaps}
+% Just the Eastern zone mappings (EST and EDT).
+%\changes{1.03}{2016-01-23}{new}
+% \begin{macrocode}
+\newcommand*{\DTMenCAeasternzonemaps}{%
+ \DTMdefzonemap{-5}{00}{EST}%
+ \DTMdefzonemap{-4}{00}{EDT}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMenCAcentralzonemaps}
+% Just the Central zone mappings (CST and CDT).
+%\changes{1.03}{2016-01-23}{new}
+% \begin{macrocode}
+\newcommand*{\DTMenCAcentralzonemaps}{%
+ \DTMdefzonemap{-6}{00}{CST}%
+ \DTMdefzonemap{-5}{00}{CDT}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMenCAmountainzonemaps}
+% Just the Mountain zone mappings (MST and MDT).
+%\changes{1.03}{2016-01-23}{new}
+% \begin{macrocode}
+\newcommand*{\DTMenCAmountainzonemaps}{%
+ \DTMdefzonemap{-7}{00}{MST}%
+ \DTMdefzonemap{-6}{00}{MDT}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMenCApacificzonemaps}
+% Just the Pacific zone mappings (PST and PDT).
+%\changes{1.03}{2016-01-23}{new}
+% \begin{macrocode}
+\newcommand*{\DTMenCApacificzonemaps}{%
+ \DTMdefzonemap{-8}{00}{PST}%
+ \DTMdefzonemap{-7}{00}{PDT}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%
+% Switch style according to the \opt{useregional} setting.
+% \begin{macrocode}
+\DTMifcaseregional
+{}% do nothing
+{\DTMsetstyle{en-CA}}%
+{\DTMsetstyle{en-CA-numeric}}%
+% \end{macrocode}
+%
+% Redefine \cs{dateenglish} (or \cs{date}\meta{dialect}) to prevent
+% \sty{babel} from resetting \cs{today}. (For this to work,
+% \sty{babel} must already have been loaded if it's required.)
+% \begin{macrocode}
+\ifcsundef{date\CurrentTrackedDialect}
+{% do nothing
+ \ifundef\dateenglish
+ {%
+ }%
+ {%
+ \def\dateenglish{%
+ \DTMifcaseregional
+ {}% do nothing
+ {\DTMsetstyle{en-CA}}%
+ {\DTMsetstyle{en-CA-numeric}}%
+ }%
+ }%
+}%
+{%
+ \csdef{date\CurrentTrackedDialect}{%
+ \DTMifcaseregional
+ {}% do nothing
+ {\DTMsetstyle{en-CA}}%
+ {\DTMsetstyle{en-CA-numeric}}%
+ }%
+}%
+% \end{macrocode}
+%
+%\iffalse
+% \begin{macrocode}
+%</datetime2-en-CA.ldf>
+% \end{macrocode}
+%\fi
+%\subsection{English (Australia) Code (\texttt{datetime2-en-AU.ldf})}
+%This file contains the Australian English style.
+%\changes{1.0}{2015-03-24}{Initial release}
+%\iffalse
+% \begin{macrocode}
+%<*datetime2-en-AU.ldf>
+% \end{macrocode}
+%\fi
+%
+% Identify this module.
+% \begin{macrocode}
+\ProvidesDateTimeModule{en-AU}[2016/03/09 v1.04 (NLCT)]
+% \end{macrocode}
+% Load base English module.
+% \begin{macrocode}
+\RequireDateTimeModule{english-base}
+% \end{macrocode}
+%
+% Allow the user a way of configuring the "en-AU" and
+% "en-AU-numeric" styles. This doesn't use the package wide separators such as
+% \cs{dtm@datetimesep} in case other date formats are also required.
+%
+%\begin{macro}{\DTMenAUdowdaysep}
+%\changes{1.04}{2016-03-09}{new}
+% The separator between the day of week name and the day of month number for the
+% text format.
+% \begin{macrocode}
+\newcommand*{\DTMenAUdowdaysep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMenAUdaymonthsep}
+% The separator between the day and month for the text format.
+% \begin{macrocode}
+\newcommand*{\DTMenAUdaymonthsep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMenAUmonthyearsep}
+% The separator between the month and year for the text format.
+% \begin{macrocode}
+\newcommand*{\DTMenAUmonthyearsep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMenAUdatetimesep}
+% The separator between the date and time blocks in the full format
+% (either text or numeric).
+% \begin{macrocode}
+\newcommand*{\DTMenAUdatetimesep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMenAUtimezonesep}
+% The separator between the time and zone blocks in the full format
+% (either text or numeric).
+% \begin{macrocode}
+\newcommand*{\DTMenAUtimezonesep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMenAUdatesep}
+% The separator for the numeric date format.
+% \begin{macrocode}
+\newcommand*{\DTMenAUdatesep}{/}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMenAUtimesep}
+% The separator for the numeric time format.
+% \begin{macrocode}
+\newcommand*{\DTMenAUtimesep}{:}
+% \end{macrocode}
+%\end{macro}
+%
+%Provide keys that can be used in \cs{DTMlangsetup} to set these
+%separators.
+% \begin{macrocode}
+\DTMdefkey{en-AU}{dowdaysep}{\renewcommand*{\DTMenAUdowdaysep}{#1}}
+\DTMdefkey{en-AU}{daymonthsep}{\renewcommand*{\DTMenAUdaymonthsep}{#1}}
+\DTMdefkey{en-AU}{monthyearsep}{\renewcommand*{\DTMenAUmonthyearsep}{#1}}
+\DTMdefkey{en-AU}{datetimesep}{\renewcommand*{\DTMenAUdatetimesep}{#1}}
+\DTMdefkey{en-AU}{timezonesep}{\renewcommand*{\DTMenAUtimezonesep}{#1}}
+\DTMdefkey{en-AU}{datesep}{\renewcommand*{\DTMenAUdatesep}{#1}}
+\DTMdefkey{en-AU}{timesep}{\renewcommand*{\DTMenAUtimesep}{#1}}
+% \end{macrocode}
+%
+% Define a boolean key that can switch between full and abbreviated
+% formats for the month and day of week names in the text format.
+% \begin{macrocode}
+\DTMdefboolkey{en-AU}{abbr}[true]{}
+% \end{macrocode}
+% The default is the full name.
+% \begin{macrocode}
+\DTMsetbool{en-AU}{abbr}{false}
+% \end{macrocode}
+%
+% Define a boolean key that determines if the time zone mappings
+% should be used.
+% \begin{macrocode}
+\DTMdefboolkey{en-AU}{mapzone}[true]{}
+% \end{macrocode}
+% The default is no mappings.
+% \begin{macrocode}
+\DTMsetbool{en-AU}{mapzone}{false}
+% \end{macrocode}
+%
+% Define a boolean key that determines whether to show or hide the
+% day of the month. (Called "showdayofmonth" instead of "showday" to
+% avoid confusion with the day of the week.)
+% \begin{macrocode}
+\DTMdefboolkey{en-AU}{showdayofmonth}[true]{}
+% \end{macrocode}
+% The default is to show the day of the month.
+% \begin{macrocode}
+\DTMsetbool{en-AU}{showdayofmonth}{true}
+% \end{macrocode}
+%
+% Define a boolean key that determines whether to show or hide the
+% year.
+% \begin{macrocode}
+\DTMdefboolkey{en-AU}{showyear}[true]{}
+% \end{macrocode}
+% The default is to show the year.
+% \begin{macrocode}
+\DTMsetbool{en-AU}{showyear}{true}
+% \end{macrocode}
+%
+%\begin{macro}{\DTMenAUfmtordsuffix}
+% Define the ordinal suffix to be used by this style.
+% \begin{macrocode}
+\newcommand*{\DTMenAUfmtordsuffix}[1]{}
+% \end{macrocode}
+%\end{macro}
+%
+% Define a setting to change the ordinal suffix style.
+% \begin{macrocode}
+\DTMdefchoicekey{en-AU}{ord}[\val\nr]{level,raise,omit,sc}{%
+ \ifcase\nr\relax
+ \renewcommand*{\DTMenAUfmtordsuffix}[1]{##1}%
+ \or
+ \renewcommand*{\DTMenAUfmtordsuffix}[1]{%
+ \DTMtexorpdfstring{\protect\textsuperscript{##1}}{##1}}%
+ \or
+ \renewcommand*{\DTMenAUfmtordsuffix}[1]{}%
+ \or
+ \renewcommand*{\DTMenAUfmtordsuffix}[1]{%
+ \DTMtexorpdfstring{\protect\textsc{##1}}{##1}}%
+ \fi
+}
+% \end{macrocode}
+%
+% Define a setting to change zone mappings.
+%\changes{1.03}{2016-01-23}{added zone option to en-AU}
+% \begin{macrocode}
+\DTMdefchoicekey{en-AU}{zone}[\val\nr]%
+ {std,standard,dst,daylight,central,central-western,western%
+ eastern,christmas,lord-howe,cocos,keeling,clear}%
+{%
+ \ifcase\nr\relax
+ % std
+ \appto\DTMenAUzonemaps{\DTMenAUstdzonemaps}%
+ \DTMenAUstdzonemaps
+ \or
+ % standard
+ \appto\DTMenAUzonemaps{\DTMenAUstdzonemaps}%
+ \DTMenAUstdzonemaps
+ \or
+ % dst
+ \appto\DTMenAUzonemaps{\DTMenAUdstzonemaps}%
+ \DTMenAUdstzonemaps
+ \or
+ % daylight
+ \appto\DTMenAUzonemaps{\DTMenAUdstzonemaps}%
+ \DTMenAUdstzonemaps
+ \or
+ % central
+ \appto\DTMenAUzonemaps{\DTMenAUcentralzonemaps}%
+ \DTMenAUcentralzonemaps
+ \or
+ % central-western
+ \appto\DTMenAUzonemaps{\DTMenAUcentralwesternzonemaps}%
+ \DTMenAUcentralwesternzonemaps
+ \or
+ % western
+ \appto\DTMenAUzonemaps{\DTMenAUwesternzonemaps}%
+ \DTMenAUwesternzonemaps
+ \or
+ % eastern
+ \appto\DTMenAUzonemaps{\DTMenAUeasternzonemaps}%
+ \DTMenAUeasternzonemaps
+ \or
+ % christmas
+ \appto\DTMenAUzonemaps{\DTMenAUchristmaszonemaps}%
+ \DTMenAUchristmaszonemaps
+ \or
+ % lord-howe
+ \appto\DTMenAUzonemaps{\DTMenAUlordhowezonemaps}%
+ \DTMenAUlordhowezonemaps
+ \or
+ % norfolk
+ \appto\DTMenAUzonemaps{\DTMenAUnorfolkzonemaps}%
+ \DTMenAUnorfolkzonemaps
+ \or
+ % cocos
+ \appto\DTMenAUzonemaps{\DTMenAUcocoszonemaps}%
+ \DTMenAUcocoszonemaps
+ \or
+ % keeling
+ \appto\DTMenAUzonemaps{\DTMenAUcocoszonemaps}%
+ \DTMenAUcocoszonemaps
+ \or
+ % clear
+ \renewcommand*{\DTMenAUzonemaps}{}%
+ \DTMclearmap{6}{30}%
+ \DTMclearmap{7}{00}%
+ \DTMclearmap{8}{00}%
+ \DTMclearmap{8}{45}%
+ \DTMclearmap{9}{00}%
+ \DTMclearmap{9}{30}%
+ \DTMclearmap{10}{00}%
+ \DTMclearmap{10}{30}%
+ \DTMclearmap{11}{00}%
+ \fi
+}
+% \end{macrocode}
+% Define the "en-AU" style.
+% \begin{macrocode}
+\DTMnewstyle
+ {en-AU}% label
+ {% date style
+ \renewcommand*{\DTMenglishfmtordsuffix}{\DTMenAUfmtordsuffix}%
+ \renewcommand*\DTMdisplaydate[4]{%
+ \ifDTMshowdow
+ \ifnum##4>-1%
+ \DTMifbool{en-AU}{abbr}%
+ {\DTMenglishshortweekdayname{##4}}%
+ {\DTMenglishweekdayname{##4}}%
+ \DTMenAUdowdaysep
+ \fi
+ \fi
+ \DTMifbool{en-AU}{showdayofmonth}%
+ {%
+ \DTMenglishordinal{##3}%
+ \DTMenAUdaymonthsep
+ }%
+ {}%
+ \DTMifbool{en-AU}{abbr}%
+ {\DTMenglishshortmonthname{##2}}%
+ {\DTMenglishmonthname{##2}}%
+ \DTMifbool{en-AU}{showyear}%
+ {%
+ \DTMenAUmonthyearsep\number##1 % space intended
+ }%
+ {}%
+ }%
+ \renewcommand*{\DTMDisplaydate}[4]{\DTMdisplaydate{##1}{##2}{##3}{##4}}%
+ }%
+ {% time style
+ \renewcommand*\DTMenglishtimesep{\DTMenAUtimesep}%
+ \DTMsettimestyle{englishampm}%
+ }%
+ {% zone style
+ \DTMresetzones
+ \DTMenAUzonemaps
+ \renewcommand*{\DTMdisplayzone}[2]{%
+ \DTMifbool{en-AU}{mapzone}%
+ {\DTMusezonemapordefault{##1}{##2}}%
+ {%
+ \ifnum##1<0\else+\fi\DTMtwodigits{##1}%
+ \ifDTMshowzoneminutes\DTMenAUtimesep\DTMtwodigits{##2}\fi
+ }%
+ }%
+ }%
+ {% full style
+ \renewcommand*{\DTMdisplay}[9]{%
+ \ifDTMshowdate
+ \DTMdisplaydate{##1}{##2}{##3}{##4}%
+ \DTMenAUdatetimesep
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \DTMenAUtimezonesep
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+ \renewcommand*{\DTMDisplay}{\DTMdisplay}%
+ }%
+% \end{macrocode}
+%
+% Define numeric style.
+% \begin{macrocode}
+\DTMnewstyle
+ {en-AU-numeric}% label
+ {% date style
+ \renewcommand*\DTMdisplaydate[4]{%
+ \DTMifbool{en-AU}{showdayofmonth}%
+ {%
+ \number##3 % space intended
+ \DTMenAUdatesep
+ }%
+ {}%
+ \number##2 % space intended
+ \DTMifbool{en-AU}{showyear}%
+ {%
+ \DTMenAUdatesep
+ \number##1 % space intended
+ }%
+ {}%
+ }%
+ \renewcommand*{\DTMDisplaydate}[4]{\DTMdisplaydate{##1}{##2}{##3}{##4}}%
+ }%
+ {% time style
+ \renewcommand*\DTMdisplaytime[3]{%
+ \number##1
+ \DTMenAUtimesep\DTMtwodigits{##2}%
+ \ifDTMshowseconds\DTMenAUtimesep\DTMtwodigits{##3}\fi
+ }%
+ }%
+ {% zone style
+ \DTMresetzones
+ \DTMenAUzonemaps
+ \renewcommand*{\DTMdisplayzone}[2]{%
+ \DTMifbool{en-AU}{mapzone}%
+ {\DTMusezonemapordefault{##1}{##2}}%
+ {%
+ \ifnum##1<0\else+\fi\DTMtwodigits{##1}%
+ \ifDTMshowzoneminutes\DTMenAUtimesep\DTMtwodigits{##2}\fi
+ }%
+ }%
+ }%
+ {% full style
+ \renewcommand*{\DTMdisplay}[9]{%
+ \ifDTMshowdate
+ \DTMdisplaydate{##1}{##2}{##3}{##4}%
+ \DTMenAUdatetimesep
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \DTMenAUtimezonesep
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+ \renewcommand*{\DTMDisplay}{\DTMdisplay}%
+ }
+% \end{macrocode}
+%
+%\begin{macro}{\DTMenAUzonemaps}
+% The time zone mappings are set through this command, which can be
+% redefined if extra mappings are required or mappings need to be
+% removed.
+% \begin{macrocode}
+\newcommand*{\DTMenAUzonemaps}{%
+ \DTMdefzonemap{10}{30}{ACDT}% Australian Central Daylight Time
+ \DTMdefzonemap{11}{00}{AEDT}% Australian Eastern Daylight Time
+ \DTMdefzonemap{9}{30}{ACST}% Australian Central Standard Time
+ \DTMdefzonemap{8}{45}{ACWST}% Australian Central Western Standard Time
+ \DTMdefzonemap{9}{00}{ACWDT}% Australian Central Western Daylight Time
+ \DTMdefzonemap{10}{00}{AEDT}% Australian Eastern Standard Time
+ \DTMdefzonemap{8}{00}{AWDT}% Australian Western Standard Time
+ \DTMdefzonemap{7}{00}{CXT}% Christmas Island Time
+ \DTMdefzonemap{11}{30}{NFT}% Norfolk Island Time
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMenAUstdzonemaps}
+% Just the standard time zone mappings.
+%\changes{1.03}{2016-01-23}{new}
+% \begin{macrocode}
+\newcommand*{\DTMenAUstdzonemaps}{%
+ \DTMdefzonemap{6}{30}{CCT}%
+ \DTMdefzonemap{7}{00}{CXT}%
+ \DTMdefzonemap{9}{30}{ACST}%
+ \DTMdefzonemap{8}{00}{AWST}%
+ \DTMdefzonemap{8}{45}{ACWST}%
+ \DTMdefzonemap{10}{00}{AEST}%
+ \DTMdefzonemap{10}{30}{LHST}%
+ \DTMdefzonemap{11}{00}{NFT}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMenAUdstzonemaps}
+% Just daylight saving mappings. (Conflicts omitted.)
+%\changes{1.03}{2016-01-23}{new}
+% \begin{macrocode}
+\newcommand*{\DTMenAUdstzonemaps}{%
+ \DTMdefzonemap{9}{00}{AWDT}%
+ \DTMdefzonemap{10}{30}{ACDT}%
+ \DTMdefzonemap{11}{00}{AEDT}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMenAUcentralzonemaps}
+% Just the Australian Central zone mappings (ACST and ACDT).
+%\changes{1.03}{2016-01-23}{new}
+% \begin{macrocode}
+\newcommand*{\DTMenAUcentralzonemaps}{%
+ \DTMdefzonemap{9}{30}{ACST}%
+ \DTMdefzonemap{10}{30}{ACDT}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMenAUcentralwesternzonemaps}
+% Just the Australian Central Western zone mapping (ACWST).
+%\changes{1.03}{2016-01-23}{new}
+% \begin{macrocode}
+\newcommand*{\DTMenAUcentralwesternzonemaps}{%
+ \DTMdefzonemap{8}{45}{ACWST}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMenAUwesternzonemaps}
+% Just the Australian Western zone mappings (AWST and AWDT).
+%\changes{1.03}{2016-01-23}{new}
+% \begin{macrocode}
+\newcommand*{\DTMenAUwesternzonemaps}{%
+ \DTMdefzonemap{8}{00}{AWST}%
+ \DTMdefzonemap{9}{00}{AWDT}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMenAUeasternzonemaps}
+% Just the Australian Eastern zone mappings (AEST and AEDT).
+%\changes{1.03}{2016-01-23}{new}
+% \begin{macrocode}
+\newcommand*{\DTMenAUeasternzonemaps}{%
+ \DTMdefzonemap{10}{00}{AEST}%
+ \DTMdefzonemap{11}{00}{AEDT}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMenAUchrismaszonemaps}
+% Just the Christmas Island zone mapping (CXT).
+%\changes{1.03}{2016-01-23}{new}
+% \begin{macrocode}
+\newcommand*{\DTMenAUchristmaszonemaps}{%
+ \DTMdefzonemap{7}{00}{CXT}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMenAUlordhowezonemaps}
+% Just the Lord Howe Island zone mappings (LHST and LHDT).
+%\changes{1.03}{2016-01-23}{new}
+% \begin{macrocode}
+\newcommand*{\DTMenAUlordhowezonemaps}{%
+ \DTMdefzonemap{10}{30}{LHST}%
+ \DTMdefzonemap{11}{00}{LHDT}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMenAUnorfolkzonemaps}
+% Just the Norfolk Island zone mapping (NFT).
+%\changes{1.03}{2016-01-23}{new}
+% \begin{macrocode}
+\newcommand*{\DTMenAUnorfolkzonemaps}{%
+ \DTMdefzonemap{11}{00}{NFT}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMenAUcocoszonemaps}
+% Just the Cocos (Keeling) Island zone mapping (CCT).
+%\changes{1.03}{2016-01-23}{new}
+% \begin{macrocode}
+\newcommand*{\DTMenAUcocoszonemaps}{%
+ \DTMdefzonemap{6}{30}{CCT}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%
+% Switch style according to the \opt{useregional} setting.
+% \begin{macrocode}
+\DTMifcaseregional
+{}% do nothing
+{\DTMsetstyle{en-AU}}%
+{\DTMsetstyle{en-AU-numeric}}%
+% \end{macrocode}
+%
+% Redefine \cs{dateenglish} (or \cs{date}\meta{dialect}) to prevent
+% \sty{babel} from resetting \cs{today}. (For this to work,
+% \sty{babel} must already have been loaded if it's required.)
+% \begin{macrocode}
+\ifcsundef{date\CurrentTrackedDialect}
+{% do nothing
+ \ifundef\dateenglish
+ {%
+ }%
+ {%
+ \def\dateenglish{%
+ \DTMifcaseregional
+ {}% do nothing
+ {\DTMsetstyle{en-AU}}%
+ {\DTMsetstyle{en-AU-numeric}}%
+ }%
+ }%
+}%
+{%
+ \csdef{date\CurrentTrackedDialect}{%
+ \DTMifcaseregional
+ {}% do nothing
+ {\DTMsetstyle{en-AU}}%
+ {\DTMsetstyle{en-AU-numeric}}%
+ }%
+}%
+% \end{macrocode}
+%
+%\iffalse
+% \begin{macrocode}
+%</datetime2-en-AU.ldf>
+% \end{macrocode}
+%\fi
+%\subsection{English (New Zealand) Code (\texttt{datetime2-en-NZ.ldf})}
+%This file contains the New Zealand English style.
+%\changes{1.0}{2015-03-24}{Initial release}
+%\iffalse
+% \begin{macrocode}
+%<*datetime2-en-NZ.ldf>
+% \end{macrocode}
+%\fi
+%
+% Identify this module.
+% \begin{macrocode}
+\ProvidesDateTimeModule{en-NZ}[2016/03/09 v1.04 (NLCT)]
+% \end{macrocode}
+% Load base English module.
+% \begin{macrocode}
+\RequireDateTimeModule{english-base}
+% \end{macrocode}
+%
+% Allow the user a way of configuring the "en-NZ" and
+% "en-NZ-numeric" styles.
+% This doesn't use the package wide separators such as
+% \cs{dtm@datetimesep} in case other date formats are also required.
+%
+%\begin{macro}{\DTMenNZdowdaysep}
+%\changes{1.04}{2016-03-09}{new}
+% The separator between the day of week name and the day of month
+% number for the text format.
+% \begin{macrocode}
+\newcommand*{\DTMenNZdowdaysep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMenNZdaymonthsep}
+% The separator between the day and month for the text format.
+% \begin{macrocode}
+\newcommand*{\DTMenNZdaymonthsep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMenNZmonthyearsep}
+% The separator between the month and year for the text format.
+% \begin{macrocode}
+\newcommand*{\DTMenNZmonthyearsep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMenNZdatetimesep}
+% The separator between the date and time blocks in the full format
+% (either text or numeric).
+% \begin{macrocode}
+\newcommand*{\DTMenNZdatetimesep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMenNZtimezonesep}
+% The separator between the time and zone blocks in the full format
+% (either text or numeric).
+% \begin{macrocode}
+\newcommand*{\DTMenNZtimezonesep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMenNZdatesep}
+% The separator for the numeric date format.
+% \begin{macrocode}
+\newcommand*{\DTMenNZdatesep}{/}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMenNZtimesep}
+% The separator for the numeric time format.
+% \begin{macrocode}
+\newcommand*{\DTMenNZtimesep}{:}
+% \end{macrocode}
+%\end{macro}
+%
+%Provide keys that can be used in \cs{DTMlangsetup} to set these
+%separators.
+% \begin{macrocode}
+\DTMdefkey{en-NZ}{dowdaysep}{\renewcommand*{\DTMenNZdowdaysep}{#1}}
+\DTMdefkey{en-NZ}{daymonthsep}{\renewcommand*{\DTMenNZdaymonthsep}{#1}}
+\DTMdefkey{en-NZ}{monthyearsep}{\renewcommand*{\DTMenNZmonthyearsep}{#1}}
+\DTMdefkey{en-NZ}{datetimesep}{\renewcommand*{\DTMenNZdatetimesep}{#1}}
+\DTMdefkey{en-NZ}{timezonesep}{\renewcommand*{\DTMenNZtimezonesep}{#1}}
+\DTMdefkey{en-NZ}{datesep}{\renewcommand*{\DTMenNZdatesep}{#1}}
+\DTMdefkey{en-NZ}{timesep}{\renewcommand*{\DTMenNZtimesep}{#1}}
+% \end{macrocode}
+%
+% Define a boolean key that can switch between full and abbreviated
+% formats for the month and day of week names in the text format.
+% \begin{macrocode}
+\DTMdefboolkey{en-NZ}{abbr}[true]{}
+% \end{macrocode}
+% The default is the full name.
+% \begin{macrocode}
+\DTMsetbool{en-NZ}{abbr}{false}
+% \end{macrocode}
+%
+% Define a boolean key that determines if the time zone mappings
+% should be used.
+% \begin{macrocode}
+\DTMdefboolkey{en-NZ}{mapzone}[true]{}
+% \end{macrocode}
+% The default is no mappings.
+% \begin{macrocode}
+\DTMsetbool{en-NZ}{mapzone}{false}
+% \end{macrocode}
+%
+% Define a boolean key that determines whether to show or hide the
+% day of the month. (Called "showdayofmonth" instead of "showday" to
+% avoid confusion with the day of the week.)
+% \begin{macrocode}
+\DTMdefboolkey{en-NZ}{showdayofmonth}[true]{}
+% \end{macrocode}
+% The default is to show the day of the month.
+% \begin{macrocode}
+\DTMsetbool{en-NZ}{showdayofmonth}{true}
+% \end{macrocode}
+%
+% Define a boolean key that determines whether to show or hide the
+% year.
+% \begin{macrocode}
+\DTMdefboolkey{en-NZ}{showyear}[true]{}
+% \end{macrocode}
+% The default is to show the year.
+% \begin{macrocode}
+\DTMsetbool{en-NZ}{showyear}{true}
+% \end{macrocode}
+%
+%\begin{macro}{\DTMenNZfmtordsuffix}
+% Define the ordinal suffix to be used by this style.
+% \begin{macrocode}
+\newcommand*{\DTMenNZfmtordsuffix}[1]{}
+% \end{macrocode}
+%\end{macro}
+%
+% Define a setting to change the ordinal suffix style.
+% \begin{macrocode}
+\DTMdefchoicekey{en-NZ}{ord}[\val\nr]{level,raise,omit,sc}{%
+ \ifcase\nr\relax
+ \renewcommand*{\DTMenNZfmtordsuffix}[1]{##1}%
+ \or
+ \renewcommand*{\DTMenNZfmtordsuffix}[1]{%
+ \DTMtexorpdfstring{\protect\textsuperscript{##1}}{##1}}%
+ \or
+ \renewcommand*{\DTMenNZfmtordsuffix}[1]{}%
+ \or
+ \renewcommand*{\DTMenNZfmtordsuffix}[1]{%
+ \DTMtexorpdfstring{\protect\textsc{##1}}{##1}}%
+ \fi
+}
+% \end{macrocode}
+%
+% Define the "en-NZ" style.
+% \begin{macrocode}
+\DTMnewstyle
+ {en-NZ}% label
+ {% date style
+ \renewcommand*{\DTMenglishfmtordsuffix}{\DTMenNZfmtordsuffix}%
+ \renewcommand*\DTMdisplaydate[4]{%
+ \ifDTMshowdow
+ \ifnum##4>-1%
+ \DTMifbool{en-NZ}{abbr}%
+ {\DTMenglishshortweekdayname{##4}}%
+ {\DTMenglishweekdayname{##4}}%
+ \DTMenNZdowdaysep
+ \fi
+ \fi
+ \DTMifbool{en-NZ}{showdayofmonth}%
+ {%
+ \DTMenglishordinal{##3}%
+ \DTMenNZdaymonthsep
+ }%
+ {}%
+ \DTMifbool{en-NZ}{abbr}%
+ {\DTMenglishshortmonthname{##2}}%
+ {\DTMenglishmonthname{##2}}%
+ \DTMifbool{en-NZ}{showyear}%
+ {%
+ \DTMenNZmonthyearsep\number##1 % space intended
+ }%
+ {}%
+ }%
+ \renewcommand*{\DTMDisplaydate}[4]{\DTMdisplaydate{##1}{##2}{##3}{##4}}%
+ }%
+ {% time style
+ \renewcommand*\DTMenglishtimesep{\DTMenNZtimesep}%
+ \DTMsettimestyle{englishampm}%
+ }%
+ {% zone style
+ \DTMresetzones
+ \DTMenNZzonemaps
+ \renewcommand*{\DTMdisplayzone}[2]{%
+ \DTMifbool{en-NZ}{mapzone}%
+ {\DTMusezonemapordefault{##1}{##2}}%
+ {%
+ \ifnum##1<0\else+\fi\DTMtwodigits{##1}%
+ \ifDTMshowzoneminutes\DTMenNZtimesep\DTMtwodigits{##2}\fi
+ }%
+ }%
+ }%
+ {% full style
+ \renewcommand*{\DTMdisplay}[9]{%
+ \ifDTMshowdate
+ \DTMdisplaydate{##1}{##2}{##3}{##4}%
+ \DTMenNZdatetimesep
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \DTMenNZtimezonesep
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+ \renewcommand*{\DTMDisplay}{\DTMdisplay}%
+ }%
+% \end{macrocode}
+%
+% Define numeric style.
+% \begin{macrocode}
+\DTMnewstyle
+ {en-NZ-numeric}% label
+ {% date style
+ \renewcommand*\DTMdisplaydate[4]{%
+ \DTMifbool{en-NZ}{showdayofmonth}%
+ {%
+ \number##3 % space intended
+ \DTMenNZdatesep
+ }%
+ {}%
+ \number##2 % space intended
+ \DTMifbool{en-NZ}{showyear}%
+ {%
+ \DTMenNZdatesep
+ \number##1 % space intended
+ }%
+ {}%
+ }%
+ \renewcommand*{\DTMDisplaydate}[4]{\DTMdisplaydate{##1}{##2}{##3}{##4}}%
+ }%
+ {% time style
+ \renewcommand*\DTMdisplaytime[3]{%
+ \number##1
+ \DTMenNZtimesep\DTMtwodigits{##2}%
+ \ifDTMshowseconds\DTMenNZtimesep\DTMtwodigits{##3}\fi
+ }%
+ }%
+ {% zone style
+ \DTMresetzones
+ \DTMenNZzonemaps
+ \renewcommand*{\DTMdisplayzone}[2]{%
+ \DTMifbool{en-NZ}{mapzone}%
+ {\DTMusezonemapordefault{##1}{##2}}%
+ {%
+ \ifnum##1<0\else+\fi\DTMtwodigits{##1}%
+ \ifDTMshowzoneminutes\DTMenNZtimesep\DTMtwodigits{##2}\fi
+ }%
+ }%
+ }%
+ {% full style
+ \renewcommand*{\DTMdisplay}[9]{%
+ \ifDTMshowdate
+ \DTMdisplaydate{##1}{##2}{##3}{##4}%
+ \DTMenNZdatetimesep
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \DTMenNZtimezonesep
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+ \renewcommand*{\DTMDisplay}{\DTMdisplay}%
+ }
+% \end{macrocode}
+%
+%\begin{macro}{\DTMenNZzonemaps}
+% The time zone mappings are set through this command, which can be
+% redefined if extra mappings are required or mappings need to be
+% removed.
+% \begin{macrocode}
+\newcommand*{\DTMenNZzonemaps}{%
+ \DTMdefzonemap{12}{00}{NZST}%
+ \DTMdefzonemap{12}{45}{CHAST}%
+ \DTMdefzonemap{13}{00}{NZDT}%
+ \DTMdefzonemap{13}{45}{CHADT}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+% Switch style according to the \opt{useregional} setting.
+% \begin{macrocode}
+\DTMifcaseregional
+{}% do nothing
+{\DTMsetstyle{en-NZ}}%
+{\DTMsetstyle{en-NZ-numeric}}%
+% \end{macrocode}
+%
+% Redefine \cs{dateenglish} (or \cs{date}\meta{dialect}) to prevent
+% \sty{babel} from resetting \cs{today}. (For this to work,
+% \sty{babel} must already have been loaded if it's required.)
+% \begin{macrocode}
+\ifcsundef{date\CurrentTrackedDialect}
+{% do nothing
+ \ifundef\dateenglish
+ {%
+ }%
+ {%
+ \def\dateenglish{%
+ \DTMifcaseregional
+ {}% do nothing
+ {\DTMsetstyle{en-NZ}}%
+ {\DTMsetstyle{en-NZ-numeric}}%
+ }%
+ }%
+}%
+{%
+ \csdef{date\CurrentTrackedDialect}{%
+ \DTMifcaseregional
+ {}% do nothing
+ {\DTMsetstyle{en-NZ}}%
+ {\DTMsetstyle{en-NZ-numeric}}%
+ }%
+}%
+% \end{macrocode}
+%
+%\iffalse
+% \begin{macrocode}
+%</datetime2-en-NZ.ldf>
+% \end{macrocode}
+%\fi
+%\subsection{English (GG) Code (\texttt{datetime2-en-GG.ldf})}
+%This file contains the \texttt{en-GG} style.
+%\changes{1.0}{2015-03-24}{Initial release}
+%\iffalse
+% \begin{macrocode}
+%<*datetime2-en-GG.ldf>
+% \end{macrocode}
+%\fi
+%
+% Identify this module.
+% \begin{macrocode}
+\ProvidesDateTimeModule{en-GG}[2016/03/09 v1.04 (NLCT)]
+% \end{macrocode}
+% Load base English module.
+% \begin{macrocode}
+\RequireDateTimeModule{english-base}
+% \end{macrocode}
+%
+% Allow the user a way of configuring the "en-GG" and
+% "en-GG-numeric" styles. This doesn't use the package wide separators such as
+% \cs{dtm@datetimesep} in case other date formats are also required.
+%
+%\begin{macro}{\DTMenGGdowdaysep}
+%\changes{1.04}{2016-03-09}{new}
+% The separator between the day of week name and the day of month
+% number for the text format.
+% \begin{macrocode}
+\newcommand*{\DTMenGGdowdaysep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMenGGdaymonthsep}
+% The separator between the day and month for the text format.
+% \begin{macrocode}
+\newcommand*{\DTMenGGdaymonthsep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMenGGmonthyearsep}
+% The separator between the month and year for the text format.
+% \begin{macrocode}
+\newcommand*{\DTMenGGmonthyearsep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMenGGdatetimesep}
+% The separator between the date and time blocks in the full format
+% (either text or numeric).
+% \begin{macrocode}
+\newcommand*{\DTMenGGdatetimesep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMenGGtimezonesep}
+% The separator between the time and zone blocks in the full format
+% (either text or numeric).
+% \begin{macrocode}
+\newcommand*{\DTMenGGtimezonesep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMenGGdatesep}
+% The separator for the numeric date format.
+% \begin{macrocode}
+\newcommand*{\DTMenGGdatesep}{/}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMenGGtimesep}
+% The separator for the numeric time format.
+% \begin{macrocode}
+\newcommand*{\DTMenGGtimesep}{:}
+% \end{macrocode}
+%\end{macro}
+%
+%Provide keys that can be used in \cs{DTMlangsetup} to set these
+%separators.
+% \begin{macrocode}
+\DTMdefkey{en-GG}{dowdaysep}{\renewcommand*{\DTMenGGdowdaysep}{#1}}
+\DTMdefkey{en-GG}{daymonthsep}{\renewcommand*{\DTMenGGdaymonthsep}{#1}}
+\DTMdefkey{en-GG}{monthyearsep}{\renewcommand*{\DTMenGGmonthyearsep}{#1}}
+\DTMdefkey{en-GG}{datetimesep}{\renewcommand*{\DTMenGGdatetimesep}{#1}}
+\DTMdefkey{en-GG}{timezonesep}{\renewcommand*{\DTMenGGtimezonesep}{#1}}
+\DTMdefkey{en-GG}{datesep}{\renewcommand*{\DTMenGGdatesep}{#1}}
+\DTMdefkey{en-GG}{timesep}{\renewcommand*{\DTMenGGtimesep}{#1}}
+% \end{macrocode}
+%
+% Define a boolean key that can switch between full and abbreviated
+% formats for the month and day of week names in the text format.
+% \begin{macrocode}
+\DTMdefboolkey{en-GG}{abbr}[true]{}
+% \end{macrocode}
+% The default is the full name.
+% \begin{macrocode}
+\DTMsetbool{en-GG}{abbr}{false}
+% \end{macrocode}
+%
+% Define a boolean key that determines if the time zone mappings
+% should be used.
+% \begin{macrocode}
+\DTMdefboolkey{en-GG}{mapzone}[true]{}
+% \end{macrocode}
+% The default is to use mappings.
+% \begin{macrocode}
+\DTMsetbool{en-GG}{mapzone}{true}
+% \end{macrocode}
+%
+% Define a boolean key that determines whether to show or hide the
+% day of the month. (Called "showdayofmonth" instead of "showday" to
+% avoid confusion with the day of the week.)
+% \begin{macrocode}
+\DTMdefboolkey{en-GG}{showdayofmonth}[true]{}
+% \end{macrocode}
+% The default is to show the day of the month.
+% \begin{macrocode}
+\DTMsetbool{en-GG}{showdayofmonth}{true}
+% \end{macrocode}
+%
+% Define a boolean key that determines whether to show or hide the
+% year.
+% \begin{macrocode}
+\DTMdefboolkey{en-GG}{showyear}[true]{}
+% \end{macrocode}
+% The default is to show the year.
+% \begin{macrocode}
+\DTMsetbool{en-GG}{showyear}{true}
+% \end{macrocode}
+%
+%\begin{macro}{\DTMenGGfmtordsuffix}
+% Define the ordinal suffix to be used by this style.
+% \begin{macrocode}
+\newcommand*{\DTMenGGfmtordsuffix}[1]{#1}
+% \end{macrocode}
+%\end{macro}
+%
+% Define a setting to change the ordinal suffix style.
+% \begin{macrocode}
+\DTMdefchoicekey{en-GG}{ord}[\val\nr]{level,raise,omit,sc}{%
+ \ifcase\nr\relax
+ \renewcommand*{\DTMenGGfmtordsuffix}[1]{##1}%
+ \or
+ \renewcommand*{\DTMenGGfmtordsuffix}[1]{%
+ \DTMtexorpdfstring{\protect\textsuperscript{##1}}{##1}}%
+ \or
+ \renewcommand*{\DTMenGGfmtordsuffix}[1]{}%
+ \or
+ \renewcommand*{\DTMenGGfmtordsuffix}[1]{%
+ \DTMtexorpdfstring{\protect\textsc{##1}}{##1}}%
+ \fi
+}
+% \end{macrocode}
+%
+% Define the "en-GG" style.
+% \begin{macrocode}
+\DTMnewstyle
+ {en-GG}% label
+ {% date style
+ \renewcommand*{\DTMenglishfmtordsuffix}{\DTMenGGfmtordsuffix}%
+ \renewcommand*\DTMdisplaydate[4]{%
+ \ifDTMshowdow
+ \ifnum##4>-1%
+ \DTMifbool{en-GG}{abbr}%
+ {\DTMenglishshortweekdayname{##4}}%
+ {\DTMenglishweekdayname{##4}}%
+ \DTMenGGdowdaysep
+ \fi
+ \fi
+ \DTMifbool{en-GG}{showdayofmonth}%
+ {%
+ \DTMenglishordinal{##3}%
+ \DTMenGGdaymonthsep
+ }%
+ {}%
+ \DTMifbool{en-GG}{abbr}%
+ {\DTMenglishshortmonthname{##2}}%
+ {\DTMenglishmonthname{##2}}%
+ \DTMifbool{en-GG}{showyear}%
+ {%
+ \DTMenGGmonthyearsep\number##1 % space intended
+ }%
+ {}%
+ }%
+ \renewcommand*{\DTMDisplaydate}[4]{\DTMdisplaydate{##1}{##2}{##3}{##4}}%
+ }%
+ {% time style
+ \renewcommand*\DTMenglishtimesep{\DTMenGGtimesep}%
+ \DTMsettimestyle{englishampm}%
+ }%
+ {% zone style
+ \DTMresetzones
+ \DTMenGGzonemaps
+ \renewcommand*{\DTMdisplayzone}[2]{%
+ \DTMifbool{en-GG}{mapzone}%
+ {\DTMusezonemapordefault{##1}{##2}}%
+ {%
+ \ifnum##1<0\else+\fi\DTMtwodigits{##1}%
+ \ifDTMshowzoneminutes\DTMenGGtimesep\DTMtwodigits{##2}\fi
+ }%
+ }%
+ }%
+ {% full style
+ \renewcommand*{\DTMdisplay}[9]{%
+ \ifDTMshowdate
+ \DTMdisplaydate{##1}{##2}{##3}{##4}%
+ \DTMenGGdatetimesep
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \DTMenGGtimezonesep
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+ \renewcommand*{\DTMDisplay}{\DTMdisplay}%
+ }%
+% \end{macrocode}
+%
+% Define numeric style.
+% \begin{macrocode}
+\DTMnewstyle
+ {en-GG-numeric}% label
+ {% date style
+ \renewcommand*\DTMdisplaydate[4]{%
+ \DTMifbool{en-GG}{showdayofmonth}%
+ {%
+ \number##3 % space intended
+ \DTMenGGdatesep
+ }%
+ {}%
+ \number##2 % space intended
+ \DTMifbool{en-GG}{showyear}%
+ {%
+ \DTMenGGdatesep
+ \number##1 % space intended
+ }%
+ {}%
+ }%
+ \renewcommand*{\DTMDisplaydate}[4]{\DTMdisplaydate{##1}{##2}{##3}{##4}}%
+ }%
+ {% time style
+ \renewcommand*\DTMdisplaytime[3]{%
+ \number##1
+ \DTMenGGtimesep\DTMtwodigits{##2}%
+ \ifDTMshowseconds\DTMenGGtimesep\DTMtwodigits{##3}\fi
+ }%
+ }%
+ {% zone style
+ \DTMresetzones
+ \DTMenGGzonemaps
+ \renewcommand*{\DTMdisplayzone}[2]{%
+ \DTMifbool{en-GG}{mapzone}%
+ {\DTMusezonemapordefault{##1}{##2}}%
+ {%
+ \ifnum##1<0\else+\fi\DTMtwodigits{##1}%
+ \ifDTMshowzoneminutes\DTMenGGtimesep\DTMtwodigits{##2}\fi
+ }%
+ }%
+ }%
+ {% full style
+ \renewcommand*{\DTMdisplay}[9]{%
+ \ifDTMshowdate
+ \DTMdisplaydate{##1}{##2}{##3}{##4}%
+ \DTMenGGdatetimesep
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \DTMenGGtimezonesep
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+ \renewcommand*{\DTMDisplay}{\DTMdisplay}%
+ }
+% \end{macrocode}
+%
+%\begin{macro}{\DTMenGGzonemaps}
+% The time zone mappings are set through this command, which can be
+% redefined if extra mappings are required or mappings need to be
+% removed.
+% \begin{macrocode}
+\newcommand*{\DTMenGGzonemaps}{%
+ \DTMdefzonemap{00}{00}{GMT}%
+ \DTMdefzonemap{01}{00}{BST}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+% Switch style according to the \opt{useregional} setting.
+% \begin{macrocode}
+\DTMifcaseregional
+{}% do nothing
+{\DTMsetstyle{en-GG}}%
+{\DTMsetstyle{en-GG-numeric}}%
+% \end{macrocode}
+%
+% Redefine \cs{dateenglish} (or \cs{date}\meta{dialect}) to prevent
+% \sty{babel} from resetting \cs{today}. (For this to work,
+% \sty{babel} must already have been loaded if it's required.)
+% \begin{macrocode}
+\ifcsundef{date\CurrentTrackedDialect}
+{% do nothing
+ \ifundef\dateenglish
+ {%
+ }%
+ {%
+ \def\dateenglish{%
+ \DTMifcaseregional
+ {}% do nothing
+ {\DTMsetstyle{en-GG}}%
+ {\DTMsetstyle{en-GG-numeric}}%
+ }%
+ }%
+}%
+{%
+ \csdef{date\CurrentTrackedDialect}{%
+ \DTMifcaseregional
+ {}% do nothing
+ {\DTMsetstyle{en-GG}}%
+ {\DTMsetstyle{en-GG-numeric}}%
+ }%
+}%
+% \end{macrocode}
+%\iffalse
+% \begin{macrocode}
+%</datetime2-en-GG.ldf>
+% \end{macrocode}
+%\fi
+%\subsection{English (JE) Code (\texttt{datetime2-en-JE.ldf})}
+%This file contains the \texttt{en-JE} style.
+%\changes{1.0}{2015-03-24}{Initial release}
+%\iffalse
+% \begin{macrocode}
+%<*datetime2-en-JE.ldf>
+% \end{macrocode}
+%\fi
+%
+% Identify this module.
+% \begin{macrocode}
+\ProvidesDateTimeModule{en-JE}[2016/03/09 v1.04 (NLCT)]
+% \end{macrocode}
+% Load base English module.
+% \begin{macrocode}
+\RequireDateTimeModule{english-base}
+% \end{macrocode}
+%
+% Allow the user a way of configuring the "en-JE" and
+% "en-JE-numeric" styles. This doesn't use the package wide separators such as
+% \cs{dtm@datetimesep} in case other date formats are also required.
+%
+%\begin{macro}{\DTMenJEdowdaysep}
+%\changes{1.04}{2016-03-09}{new}
+% The separator between the day of week name and the day of month
+% number for the text format.
+% \begin{macrocode}
+\newcommand*{\DTMenJEdowdaysep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMenJEdaymonthsep}
+% The separator between the day and month for the text format.
+% \begin{macrocode}
+\newcommand*{\DTMenJEdaymonthsep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMenJEmonthyearsep}
+% The separator between the month and year for the text format.
+% \begin{macrocode}
+\newcommand*{\DTMenJEmonthyearsep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMenJEdatetimesep}
+% The separator between the date and time blocks in the full format
+% (either text or numeric).
+% \begin{macrocode}
+\newcommand*{\DTMenJEdatetimesep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMenJEtimezonesep}
+% The separator between the time and zone blocks in the full format
+% (either text or numeric).
+% \begin{macrocode}
+\newcommand*{\DTMenJEtimezonesep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMenJEdatesep}
+% The separator for the numeric date format.
+% \begin{macrocode}
+\newcommand*{\DTMenJEdatesep}{/}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMenJEtimesep}
+% The separator for the numeric time format.
+% \begin{macrocode}
+\newcommand*{\DTMenJEtimesep}{:}
+% \end{macrocode}
+%\end{macro}
+%
+%Provide keys that can be used in \cs{DTMlangsetup} to set these
+%separators.
+% \begin{macrocode}
+\DTMdefkey{en-JE}{dowdaysep}{\renewcommand*{\DTMenJEdowdaysep}{#1}}
+\DTMdefkey{en-JE}{daymonthsep}{\renewcommand*{\DTMenJEdaymonthsep}{#1}}
+\DTMdefkey{en-JE}{monthyearsep}{\renewcommand*{\DTMenJEmonthyearsep}{#1}}
+\DTMdefkey{en-JE}{datetimesep}{\renewcommand*{\DTMenJEdatetimesep}{#1}}
+\DTMdefkey{en-JE}{timezonesep}{\renewcommand*{\DTMenJEtimezonesep}{#1}}
+\DTMdefkey{en-JE}{datesep}{\renewcommand*{\DTMenJEdatesep}{#1}}
+\DTMdefkey{en-JE}{timesep}{\renewcommand*{\DTMenJEtimesep}{#1}}
+% \end{macrocode}
+%
+% Define a boolean key that can switch between full and abbreviated
+% formats for the month and day of week names in the text format.
+% \begin{macrocode}
+\DTMdefboolkey{en-JE}{abbr}[true]{}
+% \end{macrocode}
+% The default is the full name.
+% \begin{macrocode}
+\DTMsetbool{en-JE}{abbr}{false}
+% \end{macrocode}
+%
+% Define a boolean key that determines if the time zone mappings
+% should be used.
+% \begin{macrocode}
+\DTMdefboolkey{en-JE}{mapzone}[true]{}
+% \end{macrocode}
+% The default is to use mappings.
+% \begin{macrocode}
+\DTMsetbool{en-JE}{mapzone}{true}
+% \end{macrocode}
+%
+% Define a boolean key that determines whether to show or hide the
+% day of the month. (Called "showdayofmonth" instead of "showday" to
+% avoid confusion with the day of the week.)
+% \begin{macrocode}
+\DTMdefboolkey{en-JE}{showdayofmonth}[true]{}
+% \end{macrocode}
+% The default is to show the day of the month.
+% \begin{macrocode}
+\DTMsetbool{en-JE}{showdayofmonth}{true}
+% \end{macrocode}
+%
+% Define a boolean key that determines whether to show or hide the
+% year.
+% \begin{macrocode}
+\DTMdefboolkey{en-JE}{showyear}[true]{}
+% \end{macrocode}
+% The default is to show the year.
+% \begin{macrocode}
+\DTMsetbool{en-JE}{showyear}{true}
+% \end{macrocode}
+%
+%\begin{macro}{\DTMenJEfmtordsuffix}
+% Define the ordinal suffix to be used by this style.
+% \begin{macrocode}
+\newcommand*{\DTMenJEfmtordsuffix}[1]{#1}
+% \end{macrocode}
+%\end{macro}
+%
+% Define a setting to change the ordinal suffix style.
+% \begin{macrocode}
+\DTMdefchoicekey{en-JE}{ord}[\val\nr]{level,raise,omit,sc}{%
+ \ifcase\nr\relax
+ \renewcommand*{\DTMenJEfmtordsuffix}[1]{##1}%
+ \or
+ \renewcommand*{\DTMenJEfmtordsuffix}[1]{%
+ \DTMtexorpdfstring{\protect\textsuperscript{##1}}{##1}}%
+ \or
+ \renewcommand*{\DTMenJEfmtordsuffix}[1]{}%
+ \or
+ \renewcommand*{\DTMenJEfmtordsuffix}[1]{%
+ \DTMtexorpdfstring{\protect\textsc{##1}}{##1}}%
+ \fi
+}
+% \end{macrocode}
+%
+% Define the "en-JE" style.
+% \begin{macrocode}
+\DTMnewstyle
+ {en-JE}% label
+ {% date style
+ \renewcommand*{\DTMenglishfmtordsuffix}{\DTMenJEfmtordsuffix}%
+ \renewcommand*\DTMdisplaydate[4]{%
+ \ifDTMshowdow
+ \ifnum##4>-1%
+ \DTMifbool{en-JE}{abbr}%
+ {\DTMenglishshortweekdayname{##4}}%
+ {\DTMenglishweekdayname{##4}}%
+ \DTMenJEdowdaysep
+ \fi
+ \fi
+ \DTMifbool{en-JE}{showdayofmonth}%
+ {%
+ \DTMenglishordinal{##3}%
+ \DTMenJEdaymonthsep
+ }%
+ {}%
+ \DTMifbool{en-JE}{abbr}%
+ {\DTMenglishshortmonthname{##2}}%
+ {\DTMenglishmonthname{##2}}%
+ \DTMifbool{en-JE}{showyear}%
+ {%
+ \DTMenJEmonthyearsep\number##1 % space intended
+ }%
+ {}%
+ }%
+ \renewcommand*{\DTMDisplaydate}[4]{\DTMdisplaydate{##1}{##2}{##3}{##4}}%
+ }%
+ {% time style
+ \renewcommand*\DTMenglishtimesep{\DTMenJEtimesep}%
+ \DTMsettimestyle{englishampm}%
+ }%
+ {% zone style
+ \DTMresetzones
+ \DTMenJEzonemaps
+ \renewcommand*{\DTMdisplayzone}[2]{%
+ \DTMifbool{en-JE}{mapzone}%
+ {\DTMusezonemapordefault{##1}{##2}}%
+ {%
+ \ifnum##1<0\else+\fi\DTMtwodigits{##1}%
+ \ifDTMshowzoneminutes\DTMenJEtimesep\DTMtwodigits{##2}\fi
+ }%
+ }%
+ }%
+ {% full style
+ \renewcommand*{\DTMdisplay}[9]{%
+ \ifDTMshowdate
+ \DTMdisplaydate{##1}{##2}{##3}{##4}%
+ \DTMenJEdatetimesep
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \DTMenJEtimezonesep
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+ \renewcommand*{\DTMDisplay}{\DTMdisplay}%
+ }%
+% \end{macrocode}
+%
+% Define numeric style.
+% \begin{macrocode}
+\DTMnewstyle
+ {en-JE-numeric}% label
+ {% date style
+ \renewcommand*\DTMdisplaydate[4]{%
+ \DTMifbool{en-JE}{showdayofmonth}%
+ {%
+ \number##3 % space intended
+ \DTMenJEdatesep
+ }%
+ {}%
+ \number##2 % space intended
+ \DTMifbool{en-JE}{showyear}%
+ {%
+ \DTMenJEdatesep
+ \number##1 % space intended
+ }%
+ {}%
+ }%
+ \renewcommand*{\DTMDisplaydate}[4]{\DTMdisplaydate{##1}{##2}{##3}{##4}}%
+ }%
+ {% time style
+ \renewcommand*\DTMdisplaytime[3]{%
+ \number##1
+ \DTMenJEtimesep\DTMtwodigits{##2}%
+ \ifDTMshowseconds\DTMenJEtimesep\DTMtwodigits{##3}\fi
+ }%
+ }%
+ {% zone style
+ \DTMresetzones
+ \DTMenJEzonemaps
+ \renewcommand*{\DTMdisplayzone}[2]{%
+ \DTMifbool{en-JE}{mapzone}%
+ {\DTMusezonemapordefault{##1}{##2}}%
+ {%
+ \ifnum##1<0\else+\fi\DTMtwodigits{##1}%
+ \ifDTMshowzoneminutes\DTMenJEtimesep\DTMtwodigits{##2}\fi
+ }%
+ }%
+ }%
+ {% full style
+ \renewcommand*{\DTMdisplay}[9]{%
+ \ifDTMshowdate
+ \DTMdisplaydate{##1}{##2}{##3}{##4}%
+ \DTMenJEdatetimesep
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \DTMenJEtimezonesep
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+ \renewcommand*{\DTMDisplay}{\DTMdisplay}%
+ }
+% \end{macrocode}
+%
+%\begin{macro}{\DTMenJEzonemaps}
+% The time zone mappings are set through this command, which can be
+% redefined if extra mappings are required or mappings need to be
+% removed.
+% \begin{macrocode}
+\newcommand*{\DTMenJEzonemaps}{%
+ \DTMdefzonemap{00}{00}{GMT}%
+ \DTMdefzonemap{01}{00}{BST}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+% Switch style according to the \opt{useregional} setting.
+% \begin{macrocode}
+\DTMifcaseregional
+{}% do nothing
+{\DTMsetstyle{en-JE}}%
+{\DTMsetstyle{en-JE-numeric}}%
+% \end{macrocode}
+%
+% Redefine \cs{dateenglish} (or \cs{date}\meta{dialect}) to prevent
+% \sty{babel} from resetting \cs{today}. (For this to work,
+% \sty{babel} must already have been loaded if it's required.)
+% \begin{macrocode}
+\ifcsundef{date\CurrentTrackedDialect}
+{% do nothing
+ \ifundef\dateenglish
+ {%
+ }%
+ {%
+ \def\dateenglish{%
+ \DTMifcaseregional
+ {}% do nothing
+ {\DTMsetstyle{en-JE}}%
+ {\DTMsetstyle{en-JE-numeric}}%
+ }%
+ }%
+}%
+{%
+ \csdef{date\CurrentTrackedDialect}{%
+ \DTMifcaseregional
+ {}% do nothing
+ {\DTMsetstyle{en-JE}}%
+ {\DTMsetstyle{en-JE-numeric}}%
+ }%
+}%
+% \end{macrocode}
+%\iffalse
+% \begin{macrocode}
+%</datetime2-en-JE.ldf>
+% \end{macrocode}
+%\fi
+%\subsection{English (IM) Code (\texttt{datetime2-en-IM.ldf})}
+%This file contains the \texttt{en-IM} style.
+%\changes{1.0}{2015-03-24}{Initial release}
+%\iffalse
+% \begin{macrocode}
+%<*datetime2-en-IM.ldf>
+% \end{macrocode}
+%\fi
+%
+% Identify this module.
+% \begin{macrocode}
+\ProvidesDateTimeModule{en-IM}[2016/03/09 v1.04 (NLCT)]
+% \end{macrocode}
+% Load base English module.
+% \begin{macrocode}
+\RequireDateTimeModule{english-base}
+% \end{macrocode}
+%
+% Allow the user a way of configuring the "en-IM" and
+% "en-IM-numeric" styles. This doesn't use the package wide separators such as
+% \cs{dtm@datetimesep} in case other date formats are also required.
+%
+%\begin{macro}{\DTMenIMdowdaysep}
+%\changes{1.04}{2016-03-09}{new}
+% The separator between the day of week name and the day of month
+% number for the text format.
+% \begin{macrocode}
+\newcommand*{\DTMenIMdowdaysep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMenIMdaymonthsep}
+% The separator between the day and month for the text format.
+% \begin{macrocode}
+\newcommand*{\DTMenIMdaymonthsep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMenIMmonthyearsep}
+% The separator between the month and year for the text format.
+% \begin{macrocode}
+\newcommand*{\DTMenIMmonthyearsep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMenIMdatetimesep}
+% The separator between the date and time blocks in the full format
+% (either text or numeric).
+% \begin{macrocode}
+\newcommand*{\DTMenIMdatetimesep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMenIMtimezonesep}
+% The separator between the time and zone blocks in the full format
+% (either text or numeric).
+% \begin{macrocode}
+\newcommand*{\DTMenIMtimezonesep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMenIMdatesep}
+% The separator for the numeric date format.
+% \begin{macrocode}
+\newcommand*{\DTMenIMdatesep}{/}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMenIMtimesep}
+% The separator for the numeric time format.
+% \begin{macrocode}
+\newcommand*{\DTMenIMtimesep}{:}
+% \end{macrocode}
+%\end{macro}
+%
+%Provide keys that can be used in \cs{DTMlangsetup} to set these
+%separators.
+% \begin{macrocode}
+\DTMdefkey{en-IM}{dowdaysep}{\renewcommand*{\DTMenIMdowdaysep}{#1}}
+\DTMdefkey{en-IM}{daymonthsep}{\renewcommand*{\DTMenIMdaymonthsep}{#1}}
+\DTMdefkey{en-IM}{monthyearsep}{\renewcommand*{\DTMenIMmonthyearsep}{#1}}
+\DTMdefkey{en-IM}{datetimesep}{\renewcommand*{\DTMenIMdatetimesep}{#1}}
+\DTMdefkey{en-IM}{timezonesep}{\renewcommand*{\DTMenIMtimezonesep}{#1}}
+\DTMdefkey{en-IM}{datesep}{\renewcommand*{\DTMenIMdatesep}{#1}}
+\DTMdefkey{en-IM}{timesep}{\renewcommand*{\DTMenIMtimesep}{#1}}
+% \end{macrocode}
+%
+% Define a boolean key that can switch between full and abbreviated
+% formats for the month and day of week names in the text format.
+% \begin{macrocode}
+\DTMdefboolkey{en-IM}{abbr}[true]{}
+% \end{macrocode}
+% The default is the full name.
+% \begin{macrocode}
+\DTMsetbool{en-IM}{abbr}{false}
+% \end{macrocode}
+%
+% Define a boolean key that determines if the time zone mappings
+% should be used.
+% \begin{macrocode}
+\DTMdefboolkey{en-IM}{mapzone}[true]{}
+% \end{macrocode}
+% The default is to use mappings.
+% \begin{macrocode}
+\DTMsetbool{en-IM}{mapzone}{true}
+% \end{macrocode}
+%
+% Define a boolean key that determines whether to show or hide the
+% day of the month. (Called "showdayofmonth" instead of "showday" to
+% avoid confusion with the day of the week.)
+% \begin{macrocode}
+\DTMdefboolkey{en-IM}{showdayofmonth}[true]{}
+% \end{macrocode}
+% The default is to show the day of the month.
+% \begin{macrocode}
+\DTMsetbool{en-IM}{showdayofmonth}{true}
+% \end{macrocode}
+%
+% Define a boolean key that determines whether to show or hide the
+% year.
+% \begin{macrocode}
+\DTMdefboolkey{en-IM}{showyear}[true]{}
+% \end{macrocode}
+% The default is to show the year.
+% \begin{macrocode}
+\DTMsetbool{en-IM}{showyear}{true}
+% \end{macrocode}
+%
+%\begin{macro}{\DTMenIMfmtordsuffix}
+% Define the ordinal suffix to be used by this style.
+% \begin{macrocode}
+\newcommand*{\DTMenIMfmtordsuffix}[1]{#1}
+% \end{macrocode}
+%\end{macro}
+%
+% Define a setting to change the ordinal suffix style.
+% \begin{macrocode}
+\DTMdefchoicekey{en-IM}{ord}[\val\nr]{level,raise,omit,sc}{%
+ \ifcase\nr\relax
+ \renewcommand*{\DTMenIMfmtordsuffix}[1]{##1}%
+ \or
+ \renewcommand*{\DTMenIMfmtordsuffix}[1]{%
+ \DTMtexorpdfstring{\protect\textsuperscript{##1}}{##1}}%
+ \or
+ \renewcommand*{\DTMenIMfmtordsuffix}[1]{}%
+ \or
+ \renewcommand*{\DTMenIMfmtordsuffix}[1]{%
+ \DTMtexorpdfstring{\protect\textsc{##1}}{##1}}%
+ \fi
+}
+% \end{macrocode}
+%
+% Define the "en-IM" style.
+% \begin{macrocode}
+\DTMnewstyle
+ {en-IM}% label
+ {% date style
+ \renewcommand*{\DTMenglishfmtordsuffix}{\DTMenIMfmtordsuffix}%
+ \renewcommand*\DTMdisplaydate[4]{%
+ \ifDTMshowdow
+ \ifnum##4>-1%
+ \DTMifbool{en-IM}{abbr}%
+ {\DTMenglishshortweekdayname{##4}}%
+ {\DTMenglishweekdayname{##4}}%
+ \DTMenIMdowdaysep
+ \fi
+ \fi
+ \DTMifbool{en-IM}{showdayofmonth}%
+ {%
+ \DTMenglishordinal{##3}%
+ \DTMenIMdaymonthsep
+ }%
+ {}%
+ \DTMifbool{en-IM}{abbr}%
+ {\DTMenglishshortmonthname{##2}}%
+ {\DTMenglishmonthname{##2}}%
+ \DTMifbool{en-IM}{showyear}%
+ {%
+ \DTMenIMmonthyearsep\number##1 % space intended
+ }%
+ {}%
+ }%
+ \renewcommand*{\DTMDisplaydate}[4]{\DTMdisplaydate{##1}{##2}{##3}{##4}}%
+ }%
+ {% time style
+ \renewcommand*\DTMenglishtimesep{\DTMenIMtimesep}%
+ \DTMsettimestyle{englishampm}%
+ }%
+ {% zone style
+ \DTMresetzones
+ \DTMenIMzonemaps
+ \renewcommand*{\DTMdisplayzone}[2]{%
+ \DTMifbool{en-IM}{mapzone}%
+ {\DTMusezonemapordefault{##1}{##2}}%
+ {%
+ \ifnum##1<0\else+\fi\DTMtwodigits{##1}%
+ \ifDTMshowzoneminutes\DTMenIMtimesep\DTMtwodigits{##2}\fi
+ }%
+ }%
+ }%
+ {% full style
+ \renewcommand*{\DTMdisplay}[9]{%
+ \ifDTMshowdate
+ \DTMdisplaydate{##1}{##2}{##3}{##4}%
+ \DTMenIMdatetimesep
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \DTMenIMtimezonesep
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+ \renewcommand*{\DTMDisplay}{\DTMdisplay}%
+ }%
+% \end{macrocode}
+%
+% Define numeric style.
+% \begin{macrocode}
+\DTMnewstyle
+ {en-IM-numeric}% label
+ {% date style
+ \renewcommand*\DTMdisplaydate[4]{%
+ \DTMifbool{en-IM}{showdayofmonth}%
+ {%
+ \number##3 % space intended
+ \DTMenIMdatesep
+ }%
+ {}%
+ \number##2 % space intended
+ \DTMifbool{en-IM}{showyear}%
+ {%
+ \DTMenIMdatesep
+ \number##1 % space intended
+ }%
+ {}%
+ }%
+ \renewcommand*{\DTMDisplaydate}[4]{\DTMdisplaydate{##1}{##2}{##3}{##4}}%
+ }%
+ {% time style
+ \renewcommand*\DTMdisplaytime[3]{%
+ \number##1
+ \DTMenIMtimesep\DTMtwodigits{##2}%
+ \ifDTMshowseconds\DTMenIMtimesep\DTMtwodigits{##3}\fi
+ }%
+ }%
+ {% zone style
+ \DTMresetzones
+ \DTMenIMzonemaps
+ \renewcommand*{\DTMdisplayzone}[2]{%
+ \DTMifbool{en-IM}{mapzone}%
+ {\DTMusezonemapordefault{##1}{##2}}%
+ {%
+ \ifnum##1<0\else+\fi\DTMtwodigits{##1}%
+ \ifDTMshowzoneminutes\DTMenIMtimesep\DTMtwodigits{##2}\fi
+ }%
+ }%
+ }%
+ {% full style
+ \renewcommand*{\DTMdisplay}[9]{%
+ \ifDTMshowdate
+ \DTMdisplaydate{##1}{##2}{##3}{##4}%
+ \DTMenIMdatetimesep
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \DTMenIMtimezonesep
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+ \renewcommand*{\DTMDisplay}{\DTMdisplay}%
+ }
+% \end{macrocode}
+%
+%\begin{macro}{\DTMenIMzonemaps}
+% The time zone mappings are set through this command, which can be
+% redefined if extra mappings are required or mappings need to be
+% removed.
+% \begin{macrocode}
+\newcommand*{\DTMenIMzonemaps}{%
+ \DTMdefzonemap{00}{00}{GMT}%
+ \DTMdefzonemap{01}{00}{BST}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+% Switch style according to the \opt{useregional} setting.
+% \begin{macrocode}
+\DTMifcaseregional
+{}% do nothing
+{\DTMsetstyle{en-IM}}%
+{\DTMsetstyle{en-IM-numeric}}%
+% \end{macrocode}
+%
+% Redefine \cs{dateenglish} (or \cs{date}\meta{dialect}) to prevent
+% \sty{babel} from resetting \cs{today}. (For this to work,
+% \sty{babel} must already have been loaded if it's required.)
+% \begin{macrocode}
+\ifcsundef{date\CurrentTrackedDialect}
+{% do nothing
+ \ifundef\dateenglish
+ {%
+ }%
+ {%
+ \def\dateenglish{%
+ \DTMifcaseregional
+ {}% do nothing
+ {\DTMsetstyle{en-IM}}%
+ {\DTMsetstyle{en-IM-numeric}}%
+ }%
+ }%
+}%
+{%
+ \csdef{date\CurrentTrackedDialect}{%
+ \DTMifcaseregional
+ {}% do nothing
+ {\DTMsetstyle{en-IM}}%
+ {\DTMsetstyle{en-IM-numeric}}%
+ }%
+}%
+% \end{macrocode}
+%\iffalse
+% \begin{macrocode}
+%</datetime2-en-IM.ldf>
+% \end{macrocode}
+%\fi
+%\subsection{English (MT) Code (\texttt{datetime2-en-MT.ldf})}
+%This file contains the \texttt{en-MT} style.
+%\changes{1.0}{2015-03-24}{Initial release}
+%\iffalse
+% \begin{macrocode}
+%<*datetime2-en-MT.ldf>
+% \end{macrocode}
+%\fi
+%
+% Identify this module.
+% \begin{macrocode}
+\ProvidesDateTimeModule{en-MT}[2016/03/09 v1.04 (NLCT)]
+% \end{macrocode}
+% Load base English module.
+% \begin{macrocode}
+\RequireDateTimeModule{english-base}
+% \end{macrocode}
+%
+% Allow the user a way of configuring the "en-MT" and
+% "en-MT-numeric" styles. This doesn't use the package wide separators such as
+% \cs{dtm@datetimesep} in case other date formats are also required.
+%
+%\begin{macro}{\DTMenMTdowdaysep}
+%\changes{1.04}{2016-03-09}{new}
+% The separator between the day of week name and the day of month
+% number for the text format.
+% \begin{macrocode}
+\newcommand*{\DTMenMTdowdaysep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMenMTdaymonthsep}
+% The separator between the day and month for the text format.
+% \begin{macrocode}
+\newcommand*{\DTMenMTdaymonthsep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMenMTmonthyearsep}
+% The separator between the month and year for the text format.
+% \begin{macrocode}
+\newcommand*{\DTMenMTmonthyearsep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMenMTdatetimesep}
+% The separator between the date and time blocks in the full format
+% (either text or numeric).
+% \begin{macrocode}
+\newcommand*{\DTMenMTdatetimesep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMenMTtimezonesep}
+% The separator between the time and zone blocks in the full format
+% (either text or numeric).
+% \begin{macrocode}
+\newcommand*{\DTMenMTtimezonesep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMenMTdatesep}
+% The separator for the numeric date format.
+% \begin{macrocode}
+\newcommand*{\DTMenMTdatesep}{/}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMenMTtimesep}
+% The separator for the numeric time format.
+% \begin{macrocode}
+\newcommand*{\DTMenMTtimesep}{:}
+% \end{macrocode}
+%\end{macro}
+%
+%Provide keys that can be used in \cs{DTMlangsetup} to set these
+%separators.
+% \begin{macrocode}
+\DTMdefkey{en-MT}{dowdaysep}{\renewcommand*{\DTMenMTdowdaysep}{#1}}
+\DTMdefkey{en-MT}{daymonthsep}{\renewcommand*{\DTMenMTdaymonthsep}{#1}}
+\DTMdefkey{en-MT}{monthyearsep}{\renewcommand*{\DTMenMTmonthyearsep}{#1}}
+\DTMdefkey{en-MT}{datetimesep}{\renewcommand*{\DTMenMTdatetimesep}{#1}}
+\DTMdefkey{en-MT}{timezonesep}{\renewcommand*{\DTMenMTtimezonesep}{#1}}
+\DTMdefkey{en-MT}{datesep}{\renewcommand*{\DTMenMTdatesep}{#1}}
+\DTMdefkey{en-MT}{timesep}{\renewcommand*{\DTMenMTtimesep}{#1}}
+% \end{macrocode}
+%
+% Define a boolean key that can switch between full and abbreviated
+% formats for the month and day of week names in the text format.
+% \begin{macrocode}
+\DTMdefboolkey{en-MT}{abbr}[true]{}
+% \end{macrocode}
+% The default is the full name.
+% \begin{macrocode}
+\DTMsetbool{en-MT}{abbr}{false}
+% \end{macrocode}
+%
+% Define a boolean key that determines if the time zone mappings
+% should be used.
+% \begin{macrocode}
+\DTMdefboolkey{en-MT}{mapzone}[true]{}
+% \end{macrocode}
+% The default is to use mappings.
+% \begin{macrocode}
+\DTMsetbool{en-MT}{mapzone}{true}
+% \end{macrocode}
+%
+% Define a boolean key that determines whether to show or hide the
+% day of the month. (Called "showdayofmonth" instead of "showday" to
+% avoid confusion with the day of the week.)
+% \begin{macrocode}
+\DTMdefboolkey{en-MT}{showdayofmonth}[true]{}
+% \end{macrocode}
+% The default is to show the day of the month.
+% \begin{macrocode}
+\DTMsetbool{en-MT}{showdayofmonth}{true}
+% \end{macrocode}
+%
+% Define a boolean key that determines whether to show or hide the
+% year.
+% \begin{macrocode}
+\DTMdefboolkey{en-MT}{showyear}[true]{}
+% \end{macrocode}
+% The default is to show the year.
+% \begin{macrocode}
+\DTMsetbool{en-MT}{showyear}{true}
+% \end{macrocode}
+%
+%\begin{macro}{\DTMenMTfmtordsuffix}
+% Define the ordinal suffix to be used by this style.
+% \begin{macrocode}
+\newcommand*{\DTMenMTfmtordsuffix}[1]{}
+% \end{macrocode}
+%\end{macro}
+%
+% Define a setting to change the ordinal suffix style.
+% \begin{macrocode}
+\DTMdefchoicekey{en-MT}{ord}[\val\nr]{level,raise,omit,sc}{%
+ \ifcase\nr\relax
+ \renewcommand*{\DTMenMTfmtordsuffix}[1]{##1}%
+ \or
+ \renewcommand*{\DTMenMTfmtordsuffix}[1]{%
+ \DTMtexorpdfstring{\protect\textsuperscript{##1}}{##1}}%
+ \or
+ \renewcommand*{\DTMenMTfmtordsuffix}[1]{}%
+ \or
+ \renewcommand*{\DTMenMTfmtordsuffix}[1]{%
+ \DTMtexorpdfstring{\protect\textsc{##1}}{##1}}%
+ \fi
+}
+% \end{macrocode}
+%
+% Define the "en-MT" style.
+% \begin{macrocode}
+\DTMnewstyle
+ {en-MT}% label
+ {% date style
+ \renewcommand*{\DTMenglishfmtordsuffix}{\DTMenMTfmtordsuffix}%
+ \renewcommand*\DTMdisplaydate[4]{%
+ \ifDTMshowdow
+ \ifnum##4>-1%
+ \DTMifbool{en-MT}{abbr}%
+ {\DTMenglishshortweekdayname{##4}}%
+ {\DTMenglishweekdayname{##4}}%
+ \DTMenMTdowdaysep
+ \fi
+ \fi
+ \DTMifbool{en-MT}{showdayofmonth}%
+ {%
+ \DTMenglishordinal{##3}%
+ \DTMenMTdaymonthsep
+ }%
+ {}%
+ \DTMifbool{en-MT}{abbr}%
+ {\DTMenglishshortmonthname{##2}}%
+ {\DTMenglishmonthname{##2}}%
+ \DTMifbool{en-MT}{showyear}%
+ {%
+ \DTMenMTmonthyearsep\number##1 % space intended
+ }%
+ {}%
+ }%
+ \renewcommand*{\DTMDisplaydate}[4]{\DTMdisplaydate{##1}{##2}{##3}{##4}}%
+ }%
+ {% time style
+ \renewcommand*\DTMenglishtimesep{\DTMenMTtimesep}%
+ \DTMsettimestyle{englishampm}%
+ }%
+ {% zone style
+ \DTMresetzones
+ \DTMenMTzonemaps
+ \renewcommand*{\DTMdisplayzone}[2]{%
+ \DTMifbool{en-MT}{mapzone}%
+ {\DTMusezonemapordefault{##1}{##2}}%
+ {%
+ \ifnum##1<0\else+\fi\DTMtwodigits{##1}%
+ \ifDTMshowzoneminutes\DTMenMTtimesep\DTMtwodigits{##2}\fi
+ }%
+ }%
+ }%
+ {% full style
+ \renewcommand*{\DTMdisplay}[9]{%
+ \ifDTMshowdate
+ \DTMdisplaydate{##1}{##2}{##3}{##4}%
+ \DTMenMTdatetimesep
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \DTMenMTtimezonesep
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+ \renewcommand*{\DTMDisplay}{\DTMdisplay}%
+ }%
+% \end{macrocode}
+%
+% Define numeric style.
+% \begin{macrocode}
+\DTMnewstyle
+ {en-MT-numeric}% label
+ {% date style
+ \renewcommand*\DTMdisplaydate[4]{%
+ \DTMifbool{en-MT}{showdayofmonth}%
+ {%
+ \number##3 % space intended
+ \DTMenMTdatesep
+ }%
+ {}%
+ \number##2 % space intended
+ \DTMifbool{en-MT}{showyear}%
+ {%
+ \DTMenMTdatesep
+ \number##1 % space intended
+ }%
+ {}%
+ }%
+ \renewcommand*{\DTMDisplaydate}[4]{\DTMdisplaydate{##1}{##2}{##3}{##4}}%
+ }%
+ {% time style
+ \renewcommand*\DTMdisplaytime[3]{%
+ \number##1
+ \DTMenMTtimesep\DTMtwodigits{##2}%
+ \ifDTMshowseconds\DTMenMTtimesep\DTMtwodigits{##3}\fi
+ }%
+ }%
+ {% zone style
+ \DTMresetzones
+ \DTMenMTzonemaps
+ \renewcommand*{\DTMdisplayzone}[2]{%
+ \DTMifbool{en-MT}{mapzone}%
+ {\DTMusezonemapordefault{##1}{##2}}%
+ {%
+ \ifnum##1<0\else+\fi\DTMtwodigits{##1}%
+ \ifDTMshowzoneminutes\DTMenMTtimesep\DTMtwodigits{##2}\fi
+ }%
+ }%
+ }%
+ {% full style
+ \renewcommand*{\DTMdisplay}[9]{%
+ \ifDTMshowdate
+ \DTMdisplaydate{##1}{##2}{##3}{##4}%
+ \DTMenMTdatetimesep
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \DTMenMTtimezonesep
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+ \renewcommand*{\DTMDisplay}{\DTMdisplay}%
+ }
+% \end{macrocode}
+%
+%\begin{macro}{\DTMenMTzonemaps}
+% The time zone mappings are set through this command, which can be
+% redefined if extra mappings are required or mappings need to be
+% removed.
+% \begin{macrocode}
+\newcommand*{\DTMenMTzonemaps}{%
+ \DTMdefzonemap{02}{00}{CEST}%
+ \DTMdefzonemap{01}{00}{CET}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+% Switch style according to the \opt{useregional} setting.
+% \begin{macrocode}
+\DTMifcaseregional
+{}% do nothing
+{\DTMsetstyle{en-MT}}%
+{\DTMsetstyle{en-MT-numeric}}%
+% \end{macrocode}
+%
+% Redefine \cs{dateenglish} (or \cs{date}\meta{dialect}) to prevent
+% \sty{babel} from resetting \cs{today}. (For this to work,
+% \sty{babel} must already have been loaded if it's required.)
+% \begin{macrocode}
+\ifcsundef{date\CurrentTrackedDialect}
+{% do nothing
+ \ifundef\dateenglish
+ {%
+ }%
+ {%
+ \def\dateenglish{%
+ \DTMifcaseregional
+ {}% do nothing
+ {\DTMsetstyle{en-MT}}%
+ {\DTMsetstyle{en-MT-numeric}}%
+ }%
+ }%
+}%
+{%
+ \csdef{date\CurrentTrackedDialect}{%
+ \DTMifcaseregional
+ {}% do nothing
+ {\DTMsetstyle{en-MT}}%
+ {\DTMsetstyle{en-MT-numeric}}%
+ }%
+}%
+% \end{macrocode}
+%
+%\iffalse
+% \begin{macrocode}
+%</datetime2-en-MT.ldf>
+% \end{macrocode}
+%\fi
+%\subsection{English (IE) Code (\texttt{datetime2-en-IE.ldf})}
+%This file contains the \texttt{en-IE} style.
+%\changes{1.0}{2015-03-24}{Initial release}
+%\iffalse
+% \begin{macrocode}
+%<*datetime2-en-IE.ldf>
+% \end{macrocode}
+%\fi
+%
+% Identify this module.
+% \begin{macrocode}
+\ProvidesDateTimeModule{en-IE}[2016/03/09 v1.04 (NLCT)]
+% \end{macrocode}
+% Load base English module.
+% \begin{macrocode}
+\RequireDateTimeModule{english-base}
+% \end{macrocode}
+%
+% Allow the user a way of configuring the "en-IE" and
+% "en-IE-numeric" styles. This doesn't use the package wide separators such as
+% \cs{dtm@datetimesep} in case other date formats are also required.
+%
+%\begin{macro}{\DTMenIEdowdaysep}
+%\changes{1.04}{2016-03-09}{new}
+% The separator between the day and month for the text format.
+% \begin{macrocode}
+\newcommand*{\DTMenIEdowdaysep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMenIEdaymonthsep}
+% The separator between the day and month for the text format.
+% \begin{macrocode}
+\newcommand*{\DTMenIEdaymonthsep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMenIEmonthyearsep}
+% The separator between the month and year for the text format.
+% \begin{macrocode}
+\newcommand*{\DTMenIEmonthyearsep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMenIEdatetimesep}
+% The separator between the date and time blocks in the full format
+% (either text or numeric).
+% \begin{macrocode}
+\newcommand*{\DTMenIEdatetimesep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMenIEtimezonesep}
+% The separator between the time and zone blocks in the full format
+% (either text or numeric).
+% \begin{macrocode}
+\newcommand*{\DTMenIEtimezonesep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMenIEdatesep}
+% The separator for the numeric date format.
+% \begin{macrocode}
+\newcommand*{\DTMenIEdatesep}{/}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMenIEtimesep}
+% The separator for the numeric time format.
+% \begin{macrocode}
+\newcommand*{\DTMenIEtimesep}{:}
+% \end{macrocode}
+%\end{macro}
+%
+%Provide keys that can be used in \cs{DTMlangsetup} to set these
+%separators.
+% \begin{macrocode}
+\DTMdefkey{en-IE}{dowdaysep}{\renewcommand*{\DTMenIEdowdaysep}{#1}}
+\DTMdefkey{en-IE}{daymonthsep}{\renewcommand*{\DTMenIEdaymonthsep}{#1}}
+\DTMdefkey{en-IE}{monthyearsep}{\renewcommand*{\DTMenIEmonthyearsep}{#1}}
+\DTMdefkey{en-IE}{datetimesep}{\renewcommand*{\DTMenIEdatetimesep}{#1}}
+\DTMdefkey{en-IE}{timezonesep}{\renewcommand*{\DTMenIEtimezonesep}{#1}}
+\DTMdefkey{en-IE}{datesep}{\renewcommand*{\DTMenIEdatesep}{#1}}
+\DTMdefkey{en-IE}{timesep}{\renewcommand*{\DTMenIEtimesep}{#1}}
+% \end{macrocode}
+%
+% Define a boolean key that can switch between full and abbreviated
+% formats for the month and day of week names in the text format.
+% \begin{macrocode}
+\DTMdefboolkey{en-IE}{abbr}[true]{}
+% \end{macrocode}
+% The default is the full name.
+% \begin{macrocode}
+\DTMsetbool{en-IE}{abbr}{false}
+% \end{macrocode}
+%
+% Define a boolean key that determines if the time zone mappings
+% should be used.
+% \begin{macrocode}
+\DTMdefboolkey{en-IE}{mapzone}[true]{}
+% \end{macrocode}
+% The default is to use mappings.
+% \begin{macrocode}
+\DTMsetbool{en-IE}{mapzone}{true}
+% \end{macrocode}
+%
+% Define a boolean key that determines whether to show or hide the
+% day of the month. (Called "showdayofmonth" instead of "showday" to
+% avoid confusion with the day of the week.)
+% \begin{macrocode}
+\DTMdefboolkey{en-IE}{showdayofmonth}[true]{}
+% \end{macrocode}
+% The default is to show the day of the month.
+% \begin{macrocode}
+\DTMsetbool{en-IE}{showdayofmonth}{true}
+% \end{macrocode}
+%
+% Define a boolean key that determines whether to show or hide the
+% year.
+% \begin{macrocode}
+\DTMdefboolkey{en-IE}{showyear}[true]{}
+% \end{macrocode}
+% The default is to show the year.
+% \begin{macrocode}
+\DTMsetbool{en-IE}{showyear}{true}
+% \end{macrocode}
+%
+%\begin{macro}{\DTMenIEfmtordsuffix}
+% Define the ordinal suffix to be used by this style.
+% \begin{macrocode}
+\newcommand*{\DTMenIEfmtordsuffix}[1]{#1}
+% \end{macrocode}
+%\end{macro}
+%
+% Define a setting to change the ordinal suffix style.
+% \begin{macrocode}
+\DTMdefchoicekey{en-IE}{ord}[\val\nr]{level,raise,omit,sc}{%
+ \ifcase\nr\relax
+ \renewcommand*{\DTMenIEfmtordsuffix}[1]{##1}%
+ \or
+ \renewcommand*{\DTMenIEfmtordsuffix}[1]{%
+ \DTMtexorpdfstring{\protect\textsuperscript{##1}}{##1}}%
+ \or
+ \renewcommand*{\DTMenIEfmtordsuffix}[1]{}%
+ \or
+ \renewcommand*{\DTMenIEfmtordsuffix}[1]{%
+ \DTMtexorpdfstring{\protect\textsc{##1}}{##1}}%
+ \fi
+}
+% \end{macrocode}
+%
+% Define the "en-IE" style.
+% \begin{macrocode}
+\DTMnewstyle
+ {en-IE}% label
+ {% date style
+ \renewcommand*{\DTMenglishfmtordsuffix}{\DTMenIEfmtordsuffix}%
+ \renewcommand*\DTMdisplaydate[4]{%
+ \ifDTMshowdow
+ \ifnum##4>-1%
+ \DTMifbool{en-IE}{abbr}%
+ {\DTMenglishshortweekdayname{##4}}%
+ {\DTMenglishweekdayname{##4}}%
+ \DTMenIEdowdaysep
+ \fi
+ \fi
+ \DTMifbool{en-IE}{showdayofmonth}%
+ {%
+ \DTMenglishordinal{##3}%
+ \DTMenIEdaymonthsep
+ }%
+ {}%
+ \DTMifbool{en-IE}{abbr}%
+ {\DTMenglishshortmonthname{##2}}%
+ {\DTMenglishmonthname{##2}}%
+ \DTMifbool{en-IE}{showyear}%
+ {%
+ \DTMenIEmonthyearsep\number##1 % space intended
+ }%
+ {}%
+ }%
+ \renewcommand*{\DTMDisplaydate}[4]{\DTMdisplaydate{##1}{##2}{##3}{##4}}%
+ }%
+ {% time style
+ \renewcommand*\DTMenglishtimesep{\DTMenIEtimesep}%
+ \DTMsettimestyle{englishampm}%
+ }%
+ {% zone style
+ \DTMresetzones
+ \DTMenIEzonemaps
+ \renewcommand*{\DTMdisplayzone}[2]{%
+ \DTMifbool{en-IE}{mapzone}%
+ {\DTMusezonemapordefault{##1}{##2}}%
+ {%
+ \ifnum##1<0\else+\fi\DTMtwodigits{##1}%
+ \ifDTMshowzoneminutes\DTMenIEtimesep\DTMtwodigits{##2}\fi
+ }%
+ }%
+ }%
+ {% full style
+ \renewcommand*{\DTMdisplay}[9]{%
+ \ifDTMshowdate
+ \DTMdisplaydate{##1}{##2}{##3}{##4}%
+ \DTMenIEdatetimesep
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \DTMenIEtimezonesep
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+ \renewcommand*{\DTMDisplay}{\DTMdisplay}%
+ }%
+% \end{macrocode}
+%
+% Define numeric style.
+% \begin{macrocode}
+\DTMnewstyle
+ {en-IE-numeric}% label
+ {% date style
+ \renewcommand*\DTMdisplaydate[4]{%
+ \DTMifbool{en-IE}{showdayofmonth}%
+ {%
+ \number##3 % space intended
+ \DTMenIEdatesep
+ }%
+ {}%
+ \number##2 % space intended
+ \DTMifbool{en-IE}{showyear}%
+ {%
+ \DTMenIEdatesep
+ \number##1 % space intended
+ }%
+ {}%
+ }%
+ \renewcommand*{\DTMDisplaydate}[4]{\DTMdisplaydate{##1}{##2}{##3}{##4}}%
+ }%
+ {% time style
+ \renewcommand*\DTMdisplaytime[3]{%
+ \number##1
+ \DTMenIEtimesep\DTMtwodigits{##2}%
+ \ifDTMshowseconds\DTMenIEtimesep\DTMtwodigits{##3}\fi
+ }%
+ }%
+ {% zone style
+ \DTMresetzones
+ \DTMenIEzonemaps
+ \renewcommand*{\DTMdisplayzone}[2]{%
+ \DTMifbool{en-IE}{mapzone}%
+ {\DTMusezonemapordefault{##1}{##2}}%
+ {%
+ \ifnum##1<0\else+\fi\DTMtwodigits{##1}%
+ \ifDTMshowzoneminutes\DTMenIEtimesep\DTMtwodigits{##2}\fi
+ }%
+ }%
+ }%
+ {% full style
+ \renewcommand*{\DTMdisplay}[9]{%
+ \ifDTMshowdate
+ \DTMdisplaydate{##1}{##2}{##3}{##4}%
+ \DTMenIEdatetimesep
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \DTMenIEtimezonesep
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+ \renewcommand*{\DTMDisplay}{\DTMdisplay}%
+ }
+% \end{macrocode}
+%
+%\begin{macro}{\DTMenIEzonemaps}
+% The time zone mappings are set through this command, which can be
+% redefined if extra mappings are required or mappings need to be
+% removed.
+% \begin{macrocode}
+\newcommand*{\DTMenIEzonemaps}{%
+ \DTMdefzonemap{00}{00}{GMT}%
+ \DTMdefzonemap{01}{00}{IST}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+% Switch style according to the \opt{useregional} setting.
+% \begin{macrocode}
+\DTMifcaseregional
+{}% do nothing
+{\DTMsetstyle{en-IE}}%
+{\DTMsetstyle{en-IE-numeric}}%
+% \end{macrocode}
+%
+% Redefine \cs{dateenglish} (or \cs{date}\meta{dialect}) to prevent
+% \sty{babel} from resetting \cs{today}. (For this to work,
+% \sty{babel} must already have been loaded if it's required.)
+% \begin{macrocode}
+\ifcsundef{date\CurrentTrackedDialect}
+{% do nothing
+ \ifundef\dateenglish
+ {%
+ }%
+ {%
+ \def\dateenglish{%
+ \DTMifcaseregional
+ {}% do nothing
+ {\DTMsetstyle{en-IE}}%
+ {\DTMsetstyle{en-IE-numeric}}%
+ }%
+ }%
+}%
+{%
+ \csdef{date\CurrentTrackedDialect}{%
+ \DTMifcaseregional
+ {}% do nothing
+ {\DTMsetstyle{en-IE}}%
+ {\DTMsetstyle{en-IE-numeric}}%
+ }%
+}%
+% \end{macrocode}
+%
+%\iffalse
+% \begin{macrocode}
+%</datetime2-en-IE.ldf>
+% \end{macrocode}
+%\fi
+%\Finale
+\endinput
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-english/datetime2-english.ins b/macros/latex/contrib/datetime2-contrib/datetime2-english/datetime2-english.ins
new file mode 100644
index 0000000000..6767459acc
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-english/datetime2-english.ins
@@ -0,0 +1,164 @@
+\input docstrip
+
+\preamble
+
+ datetime2-english.dtx
+ Copyright 2015 Nicola Talbot
+
+ This work may be distributed and/or modified under the
+ conditions of the LaTeX Project Public License, either version 1.3
+ of this license of (at your option) any later version.
+ The latest version of this license is in
+ http://www.latex-project.org/lppl.txt
+ and version 1.3 or later is part of all distributions of LaTeX
+ version 2005/12/01 or later.
+
+ This work has the LPPL maintenance status `maintained'.
+
+ The Current Maintainer of this work is Nicola Talbot.
+
+ This work consists of the files datetime2-english.dtx and
+ datetime2-english.ins and the derived files
+ datetime2-english-base.ldf, datetime2-english.ldf,
+ datetime2-en-GB.ldf, datetime2-en-US.ldf, datetime2-en-CA.ldf,
+ datetime2-en-AU.ldf, datetime2-en-NZ.ldf, datetime2-en-GG.ldf,
+ datetime2-en-JE.ldf, datetime2-en-IM.ldf, datetime2-en-MT.ldf,
+ datetime2-en-IE.ldf.
+
+\endpreamble
+
+\askforoverwritefalse
+
+\generate
+{%
+ \file
+ {datetime2-english-base.ldf}%
+ {%
+ \usepreamble\defaultpreamble
+ \usepostamble\defaultpostamble
+ \from{datetime2-english.dtx}{datetime2-english-base.ldf,package}%
+ }%
+}
+
+\generate
+{%
+ \file
+ {datetime2-english.ldf}%
+ {%
+ \usepreamble\defaultpreamble
+ \usepostamble\defaultpostamble
+ \from{datetime2-english.dtx}{datetime2-english.ldf,package}%
+ }%
+}
+
+\generate
+{%
+ \file{datetime2-en-GB.ldf}%
+ {%
+ \usepreamble\defaultpreamble
+ \usepostamble\defaultpostamble
+ \from{datetime2-english.dtx}{datetime2-en-GB.ldf,package}%
+ }%
+}
+
+\generate
+{%
+ \file
+ {datetime2-en-US.ldf}%
+ {%
+ \usepreamble\defaultpreamble
+ \usepostamble\defaultpostamble
+ \from{datetime2-english.dtx}{datetime2-en-US.ldf,package}%
+ }%
+}
+
+\generate
+{%
+ \file
+ {datetime2-en-CA.ldf}%
+ {%
+ \usepreamble\defaultpreamble
+ \usepostamble\defaultpostamble
+ \from{datetime2-english.dtx}{datetime2-en-CA.ldf,package}%
+ }%
+}
+
+\generate
+{%
+ \file
+ {datetime2-en-AU.ldf}%
+ {%
+ \usepreamble\defaultpreamble
+ \usepostamble\defaultpostamble
+ \from{datetime2-english.dtx}{datetime2-en-AU.ldf,package}%
+ }%
+}
+
+\generate
+{%
+ \file
+ {datetime2-en-NZ.ldf}%
+ {%
+ \usepreamble\defaultpreamble
+ \usepostamble\defaultpostamble
+ \from{datetime2-english.dtx}{datetime2-en-NZ.ldf,package}%
+ }%
+}
+
+\generate
+{%
+ \file
+ {datetime2-en-GG.ldf}%
+ {%
+ \usepreamble\defaultpreamble
+ \usepostamble\defaultpostamble
+ \from{datetime2-english.dtx}{datetime2-en-GG.ldf,package}%
+ }%
+}
+
+\generate
+{%
+ \file
+ {datetime2-en-JE.ldf}%
+ {%
+ \usepreamble\defaultpreamble
+ \usepostamble\defaultpostamble
+ \from{datetime2-english.dtx}{datetime2-en-JE.ldf,package}%
+ }%
+}
+
+\generate
+{%
+ \file
+ {datetime2-en-IM.ldf}%
+ {%
+ \usepreamble\defaultpreamble
+ \usepostamble\defaultpostamble
+ \from{datetime2-english.dtx}{datetime2-en-IM.ldf,package}%
+ }%
+}
+
+\generate
+{%
+ \file
+ {datetime2-en-MT.ldf}%
+ {%
+ \usepreamble\defaultpreamble
+ \usepostamble\defaultpostamble
+ \from{datetime2-english.dtx}{datetime2-en-MT.ldf,package}%
+ }%
+}
+
+\generate
+{%
+ \file
+ {datetime2-en-IE.ldf}%
+ {%
+ \usepreamble\defaultpreamble
+ \usepostamble\defaultpostamble
+ \from{datetime2-english.dtx}{datetime2-en-IE.ldf,package}%
+ }%
+}
+
+\endbatchfile
+
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-english/datetime2-english.pdf b/macros/latex/contrib/datetime2-contrib/datetime2-english/datetime2-english.pdf
new file mode 100644
index 0000000000..189c2989a3
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-english/datetime2-english.pdf
Binary files differ
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-esperanto/README b/macros/latex/contrib/datetime2-contrib/datetime2-esperanto/README
new file mode 100644
index 0000000000..204c0647b2
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-esperanto/README
@@ -0,0 +1,57 @@
+Esperanto Language Module for datetime2 Package
+
+Author: Nicola L. C. Talbot (inactive)
+
+Licence: LPPL
+
+Required Packages: datetime2, tracklang
+
+This module is unmaintained. If you want to volunteer to take over
+the maintenance contact me at www.dickimaw-books.com/contact.html
+
+Example usage:
+
+\documentclass{article}
+\usepackage[esperanto]{datetime2}
+\begin{document}
+\today
+\end{document}
+
+\documentclass[esperanto]{article}
+\usepackage{babel}
+\usepackage[useregional]{datetime2}
+\begin{document}
+\today
+\end{document}
+
+\documentclass{article}
+\usepackage{polyglossia}
+\setmainlanguage{esperanto}
+\usepackage[esperanto]{datetime2}
+\begin{document}
+\today
+\end{document}
+
+INSTALLATION
+============
+
+xelatex datetime2-esperanto.ins
+
+Move all *.ldf files to
+TEXMF/tex/latex/datetime2-contrib/datetime2-esperanto/
+
+Documentation:
+
+xelatex datetime2-esperanto.dtx
+makeindex -s gind.ist datetime2-esperanto.idx
+makeindex -s gglo.ist -o datetime2-esperanto.gls datetime2-esperanto.glo
+xelatex datetime2-esperanto.dtx
+xelatex datetime2-esperanto.dtx
+
+Move datetime2-esperanto.pdf and README to
+TEXMF/doc/latex/datetime2-contrib/datetime2-esperanto/
+
+This material is subject to the LaTeX Project Public License.
+See http://www.ctan.org/license/lppl1.3 for the details of that
+license.
+
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-esperanto/datetime2-esperanto.dtx b/macros/latex/contrib/datetime2-contrib/datetime2-esperanto/datetime2-esperanto.dtx
new file mode 100644
index 0000000000..82c64704f7
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-esperanto/datetime2-esperanto.dtx
@@ -0,0 +1,633 @@
+%\iffalse
+%<*package>
+%% \CharacterTable
+%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+%% Digits \0\1\2\3\4\5\6\7\8\9
+%% Exclamation \! Double quote \" Hash (number) \#
+%% Dollar \$ Percent \% Ampersand \&
+%% Acute accent \' Left paren \( Right paren \)
+%% Asterisk \* Plus \+ Comma \,
+%% Minus \- Point \. Solidus \/
+%% Colon \: Semicolon \; Less than \<
+%% Equals \= Greater than \> Question mark \?
+%% Commercial at \@ Left bracket \[ Backslash \\
+%% Right bracket \] Circumflex \^ Underscore \_
+%% Grave accent \` Left brace \{ Vertical bar \|
+%% Right brace \} Tilde \~}
+%</package>
+%\fi
+% \iffalse
+% Doc-Source file to use with LaTeX2e
+% Copyright (C) 2018 Nicola Talbot, all rights reserved.
+% (New maintainer add relevant lines here.)
+% \fi
+% \iffalse
+%<*driver>
+\documentclass{ltxdoc}
+
+\usepackage{alltt}
+\usepackage{graphicx}
+\usepackage{fontspec}
+\usepackage[colorlinks,
+ bookmarks,
+ hyperindex=false,
+ pdfauthor={Nicola L.C. Talbot},
+ pdftitle={datetime2.sty Esperanto Module}]{hyperref}
+
+\setmainfont{Liberation Serif}
+\setmonofont{Liberation Mono}
+
+\CheckSum{258}
+
+\renewcommand*{\usage}[1]{\hyperpage{#1}}
+\renewcommand*{\main}[1]{\hyperpage{#1}}
+\IndexPrologue{\section*{\indexname}\markboth{\indexname}{\indexname}}
+\setcounter{IndexColumns}{2}
+
+\newcommand*{\sty}[1]{\textsf{#1}}
+\newcommand*{\opt}[1]{\texttt{#1}\index{#1=\texttt{#1}|main}}
+
+\RecordChanges
+\PageIndex
+\CodelineNumbered
+
+\begin{document}
+\DocInput{datetime2-esperanto.dtx}
+\end{document}
+%</driver>
+%\fi
+%
+%\MakeShortVerb{"}
+%
+%\title{Esperanto Module for datetime2 Package}
+%\author{Nicola L. C. Talbot (inactive)}
+%\date{2018-04-06 (v1.1)}
+%\maketitle
+%
+%This module is currently unmaintained and may be subject to change.
+%If you want to volunteer to take over maintanance, contact me at
+%\url{http://www.dickimaw-books.com/contact.html}
+%
+%\begin{abstract}
+%This is the Esperanto language module for the \sty{datetime2}
+%package. If you want to use the settings in this module you must
+%install it in addition to installing \sty{datetime2}. If you use
+%\sty{babel} or \sty{polyglossia}, you will need this module to
+%prevent them from redefining \cs{today}. The \sty{datetime2}
+% \opt{useregional} setting must be set to "text" or "numeric"
+% for the language styles to be set.
+% Alternatively, you can set the style in the document using
+% \cs{DTMsetstyle}, but this may be changed by \cs{date}\meta{language}
+% depending on the value of the \opt{useregional} setting.
+%\end{abstract}
+%
+%I've copied the date style from \texttt{babel-esperanto}'s \cs{today}.
+%
+%I don't know if these settings are correct as I can't speak Esperanto.
+%In particular, I don't know if the "esperanto" time style is
+%correct. Currently this just uses the "default" time style. Please
+%be aware that this may change. Whoever takes over maintanance
+%of this module may can change it as appropriate.
+%
+%The new maintainer should add the line:
+%\begin{verbatim}
+% The Current Maintainer of this work is Name.
+%\end{verbatim}
+%to the preamble part in \texttt{datetime2-esperanto.ins} where Name
+%is the name of the maintainer(s) and replace
+%the `inactive' status to `maintained'.
+%
+%Currently there is only a regionless style.
+%
+%\StopEventually{%
+%\clearpage
+%\phantomsection
+%\addcontentsline{toc}{section}{Change History}%
+%\PrintChanges
+%\addcontentsline{toc}{section}{\indexname}%
+%\PrintIndex}
+%\section{The Code}
+%\iffalse
+% \begin{macrocode}
+%<*datetime2-esperanto-utf8.ldf>
+% \end{macrocode}
+%\fi
+%\subsection{UTF-8}
+%This file contains the settings that use UTF-8 characters. This
+%file is loaded if XeLaTeX or LuaLaTeX are used. Please make sure
+%your text editor is set to UTF-8 if you want to view this code.
+%\changes{1.0}{2015-03-30}{Initial release}
+% Identify module
+% \begin{macrocode}
+\ProvidesDateTimeModule{esperanto-utf8}[2018/04/06 v1.1]
+% \end{macrocode}
+%\begin{macro}{\DTMesperantoordinal}
+% \begin{macrocode}
+\newcommand*{\DTMesperantoordinal}[1]{%
+ \number#1ā€“a%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%
+%\begin{macro}{\DTMesperantomonthname}
+% Esperanto month names.
+% \begin{macrocode}
+\newcommand*{\DTMesperantomonthname}[1]{%
+ \ifcase#1
+ \or
+ januaro%
+ \or
+ februaro%
+ \or
+ marto%
+ \or
+ aprilo%
+ \or
+ majo%
+ \or
+ junio%
+ \or
+ julio%
+ \or
+ aÅ­gusto%
+ \or
+ septembro%
+ \or
+ oktobro%
+ \or
+ novembro%
+ \or
+ decembro%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMesperantoMonthname}
+% As above but capitalize.
+% \begin{macrocode}
+\newcommand*{\DTMesperantoMonthname}[1]{%
+ \ifcase#1
+ \or
+ Januaro%
+ \or
+ Februaro%
+ \or
+ Marto%
+ \or
+ Aprilo%
+ \or
+ Majo%
+ \or
+ Junio%
+ \or
+ Julio%
+ \or
+ AÅ­gusto%
+ \or
+ Septembro%
+ \or
+ Oktobro%
+ \or
+ Novembro%
+ \or
+ Decembro%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%If abbreviated dates are supported, short month names should be
+%likewise provided.
+%
+%\iffalse
+% \begin{macrocode}
+%</datetime2-esperanto-utf8.ldf>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*datetime2-esperanto-ascii.ldf>
+% \end{macrocode}
+%\fi
+%\subsection{ASCII}
+%This file contains the settings that use \LaTeX\ commands for
+%non-ASCII characters. This should be input if neither XeLaTeX nor
+%LuaLaTeX are used. Even if the user has loaded \sty{inputenc} with
+%"utf8", this file should still be used not the
+%\texttt{datetime2-esperanto-utf8.ldf} file as the non-ASCII
+%characters are made active in that situation and would need
+%protecting against expansion.
+%\changes{1.0}{2015-03-30}{Initial release}
+% Identify module
+% \begin{macrocode}
+\ProvidesDateTimeModule{esperanto-ascii}[2018/04/06 v1.1]
+% \end{macrocode}
+%
+%If abbreviated dates are supported, short month names should be
+%likewise provided.
+%\begin{macro}{\DTMesperantoordinal}
+% \begin{macrocode}
+\newcommand*{\DTMesperantoordinal}[1]{%
+ \number#1--a%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMesperantomonthname}
+% Esperanto month names.
+% \begin{macrocode}
+\newcommand*{\DTMesperantomonthname}[1]{%
+ \ifcase#1
+ \or
+ januaro%
+ \or
+ februaro%
+ \or
+ marto%
+ \or
+ aprilo%
+ \or
+ majo%
+ \or
+ junio%
+ \or
+ julio%
+ \or
+ a\protect\u{u}gusto%
+ \or
+ septembro%
+ \or
+ oktobro%
+ \or
+ novembro%
+ \or
+ decembro%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMesperantoMonthname}
+% As above but capitalize.
+% \begin{macrocode}
+\newcommand*{\DTMesperantoMonthname}[1]{%
+ \ifcase#1
+ \or
+ Januaro%
+ \or
+ Februaro%
+ \or
+ Marto%
+ \or
+ Aprilo%
+ \or
+ Majo%
+ \or
+ Junio%
+ \or
+ Julio%
+ \or
+ A\protect\u{u}gusto%
+ \or
+ Septembro%
+ \or
+ Oktobro%
+ \or
+ Novembro%
+ \or
+ Decembro%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%
+%\iffalse
+% \begin{macrocode}
+%</datetime2-esperanto-ascii.ldf>
+% \end{macrocode}
+%\fi
+%
+%\subsection{Main Esperanto Module (\texttt{datetime2-esperanto.ldf})}
+%\changes{1.0}{2015-03-30}{Initial release}
+%
+%\iffalse
+% \begin{macrocode}
+%<*datetime2-esperanto.ldf>
+% \end{macrocode}
+%\fi
+%
+% Identify Module
+% \begin{macrocode}
+\ProvidesDateTimeModule{esperanto}[2018/04/06 v1.1]
+% \end{macrocode}
+% Need to find out if XeTeX or LuaTeX are being used.
+% \begin{macrocode}
+\RequirePackage{ifxetex,ifluatex}
+% \end{macrocode}
+% XeTeX and LuaTeX natively support UTF-8, so load
+% \texttt{esperanto-utf8} if either of those engines are used
+% otherwise load \texttt{esperanto-ascii}.
+% \begin{macrocode}
+\ifxetex
+ \RequireDateTimeModule{esperanto-utf8}
+\else
+ \ifluatex
+ \RequireDateTimeModule{esperanto-utf8}
+ \else
+ \RequireDateTimeModule{esperanto-ascii}
+ \fi
+\fi
+% \end{macrocode}
+%
+% Define the \texttt{esperanto} style.
+% The time style is the same as the "default" style
+% provided by \sty{datetime2}. This may need correcting. For
+% example, if a 12 hour style similar to the "englishampm" (from the
+% "english-base" module) is required.
+%
+% Allow the user a way of configuring the "esperanto" and
+% "esperanto-numeric" styles. This doesn't use the package wide
+% separators such as
+% \cs{dtm@datetimesep} in case other date formats are also required.
+%\begin{macro}{\DTMesperantodaymonthsep}
+% The separator between the day and month for the text format.
+% \begin{macrocode}
+\newcommand*{\DTMesperantodaymonthsep}{%
+ \DTMtexorpdfstring{\protect~}{\space}%
+ de%
+ \DTMtexorpdfstring{\protect~}{\space}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMesperantomonthyearsep}
+% The separator between the month and year for the text format.
+% \begin{macrocode}
+\newcommand*{\DTMesperantomonthyearsep}{,\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMesperantodatetimesep}
+% The separator between the date and time blocks in the full format
+% (either text or numeric).
+% \begin{macrocode}
+\newcommand*{\DTMesperantodatetimesep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMesperantotimezonesep}
+% The separator between the time and zone blocks in the full format
+% (either text or numeric).
+% \begin{macrocode}
+\newcommand*{\DTMesperantotimezonesep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMesperantodatesep}
+% The separator for the numeric date format.
+% \begin{macrocode}
+\newcommand*{\DTMesperantodatesep}{-}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMesperantotimesep}
+% The separator for the numeric time format.
+% \begin{macrocode}
+\newcommand*{\DTMesperantotimesep}{:}
+% \end{macrocode}
+%\end{macro}
+%
+%Provide keys that can be used in \cs{DTMlangsetup} to set these
+%separators.
+% \begin{macrocode}
+\DTMdefkey{esperanto}{daymonthsep}{\renewcommand*{\DTMesperantodaymonthsep}{#1}}
+\DTMdefkey{esperanto}{monthyearsep}{\renewcommand*{\DTMesperantomonthyearsep}{#1}}
+\DTMdefkey{esperanto}{datetimesep}{\renewcommand*{\DTMesperantodatetimesep}{#1}}
+\DTMdefkey{esperanto}{timezonesep}{\renewcommand*{\DTMesperantotimezonesep}{#1}}
+\DTMdefkey{esperanto}{datesep}{\renewcommand*{\DTMesperantodatesep}{#1}}
+\DTMdefkey{esperanto}{timesep}{\renewcommand*{\DTMesperantotimesep}{#1}}
+% \end{macrocode}
+%
+% TODO: provide a boolean key to switch between full and abbreviated
+% formats if appropriate. (I don't know how the date should be
+% abbreviated.)
+%
+% Define a boolean key that determines if the time zone mappings
+% should be used.
+% \begin{macrocode}
+\DTMdefboolkey{esperanto}{mapzone}[true]{}
+% \end{macrocode}
+% The default is to use mappings.
+% \begin{macrocode}
+\DTMsetbool{esperanto}{mapzone}{true}
+% \end{macrocode}
+%
+% Define a boolean key that determines if the day of month should be
+% displayed.
+% \begin{macrocode}
+\DTMdefboolkey{esperanto}{showdayofmonth}[true]{}
+% \end{macrocode}
+% The default is to show the day of month.
+% \begin{macrocode}
+\DTMsetbool{esperanto}{showdayofmonth}{true}
+% \end{macrocode}
+%
+% Define a boolean key that determines if the year should be
+% displayed.
+% \begin{macrocode}
+\DTMdefboolkey{esperanto}{showyear}[true]{}
+% \end{macrocode}
+% The default is to show the year.
+% \begin{macrocode}
+\DTMsetbool{esperanto}{showyear}{true}
+% \end{macrocode}
+%
+% Define the "esperanto" style. (TODO: implement day of week?)
+% \begin{macrocode}
+\DTMnewstyle
+ {esperanto}% label
+ {% date style
+ \renewcommand*\DTMdisplaydate[4]{%
+ \DTMifbool{esperanto}{showdayofmonth}
+ {\DTMesperantoordinal{##3}\DTMesperantodaymonthsep}%
+ {}%
+ \DTMesperantomonthname{##2}%
+ \DTMifbool{esperanto}{showyear}%
+ {%
+ \DTMesperantomonthyearsep
+ \number##1
+ }%
+ {}%
+ }%
+ \renewcommand*\DTMDisplaydate[4]{%
+ \DTMifbool{esperanto}{showdayofmonth}
+ {%
+ \DTMesperantoordinal{##3}\DTMesperantodaymonthsep
+ \DTMesperantomonthname{##2}%
+ }%
+ {%
+ \DTMesperantoMonthname{##2}%
+ }%
+ \DTMifbool{esperanto}{showyear}%
+ {%
+ \DTMesperantomonthyearsep
+ \number##1
+ }%
+ {}%
+ }%
+ }%
+ {% time style (use default)
+ \DTMsettimestyle{default}%
+ }%
+ {% zone style
+ \DTMresetzones
+ \DTMesperantozonemaps
+ \renewcommand*{\DTMdisplayzone}[2]{%
+ \DTMifbool{esperanto}{mapzone}%
+ {\DTMusezonemapordefault{##1}{##2}}%
+ {%
+ \ifnum##1<0\else+\fi\DTMtwodigits{##1}%
+ \ifDTMshowzoneminutes\DTMesperantotimesep\DTMtwodigits{##2}\fi
+ }%
+ }%
+ }%
+ {% full style
+ \renewcommand*{\DTMdisplay}[9]{%
+ \ifDTMshowdate
+ \DTMdisplaydate{##1}{##2}{##3}{##4}%
+ \DTMesperantodatetimesep
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \DTMesperantotimezonesep
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+ \renewcommand*{\DTMDisplay}[9]{%
+ \ifDTMshowdate
+ \DTMDisplaydate{##1}{##2}{##3}{##4}%
+ \DTMesperantodatetimesep
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \DTMesperantotimezonesep
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+ }%
+% \end{macrocode}
+%
+% Define numeric style.
+% \begin{macrocode}
+\DTMnewstyle
+ {esperanto-numeric}% label
+ {% date style
+ \renewcommand*\DTMdisplaydate[4]{%
+ \DTMifbool{esperanto}{showdayofmonth}%
+ {%
+ \number##3 % space intended
+ \DTMesperantodatesep
+ }%
+ {}%
+ \number##2 % space intended
+ \DTMifbool{esperanto}{showyear}%
+ {%
+ \DTMesperantodatesep
+ \number##1 % space intended
+ }%
+ {}%
+ }%
+ \renewcommand*{\DTMDisplaydate}{\DTMdisplaydate}%
+ }%
+ {% time style
+ \renewcommand*\DTMdisplaytime[3]{%
+ \number##1
+ \DTMesperantotimesep\DTMtwodigits{##2}%
+ \ifDTMshowseconds\DTMesperantotimesep\DTMtwodigits{##3}\fi
+ }%
+ }%
+ {% zone style
+ \DTMresetzones
+ \DTMesperantozonemaps
+ \renewcommand*{\DTMdisplayzone}[2]{%
+ \DTMifbool{esperanto}{mapzone}%
+ {\DTMusezonemapordefault{##1}{##2}}%
+ {%
+ \ifnum##1<0\else+\fi\DTMtwodigits{##1}%
+ \ifDTMshowzoneminutes\DTMesperantotimesep\DTMtwodigits{##2}\fi
+ }%
+ }%
+ }%
+ {% full style
+ \renewcommand*{\DTMdisplay}[9]{%
+ \ifDTMshowdate
+ \DTMdisplaydate{##1}{##2}{##3}{##4}%
+ \DTMesperantodatetimesep
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \DTMesperantotimezonesep
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+ \renewcommand*{\DTMDisplay}{\DTMdisplay}%
+ }
+% \end{macrocode}
+%
+%\begin{macro}{\DTMesperantozonemaps}
+% The time zone mappings are set through this command, which can be
+% redefined if extra mappings are required or mappings need to be
+% removed. No default mappings are provided at the moment.
+% \begin{macrocode}
+\newcommand*{\DTMesperantozonemaps}{%
+}
+% \end{macrocode}
+%\end{macro}
+
+% Switch style according to the \opt{useregional} setting.
+% \begin{macrocode}
+\DTMifcaseregional
+{}% do nothing
+{\DTMsetstyle{esperanto}}
+{\DTMsetstyle{esperanto-numeric}}
+% \end{macrocode}
+%
+% Redefine \cs{dateesperanto} (or \cs{date}\meta{dialect}) to prevent
+% \sty{babel} from resetting \cs{today}. (For this to work,
+% \sty{babel} must already have been loaded if it's required.)
+%\changes{1.1}{2018-04-06}{removed spurious space}
+% \begin{macrocode}
+\ifcsundef{date\CurrentTrackedDialect}
+{%
+ \ifundef\dateesperanto
+ {% do nothing
+ }%
+ {%
+ \def\dateesperanto{%
+ \DTMifcaseregional
+ {}% do nothing
+ {\DTMsetstyle{esperanto}}%
+ {\DTMsetstyle{esperanto-numeric}}%
+ }%
+ }%
+}%
+{%
+ \csdef{date\CurrentTrackedDialect}{%
+ \DTMifcaseregional
+ {}% do nothing
+ {\DTMsetstyle{esperanto}}%
+ {\DTMsetstyle{esperanto-numeric}}%
+ }%
+}%
+% \end{macrocode}
+%\iffalse
+% \begin{macrocode}
+%</datetime2-esperanto.ldf>
+% \end{macrocode}
+%\fi
+%\Finale
+\endinput
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-esperanto/datetime2-esperanto.ins b/macros/latex/contrib/datetime2-contrib/datetime2-esperanto/datetime2-esperanto.ins
new file mode 100644
index 0000000000..9cbd70f2a2
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-esperanto/datetime2-esperanto.ins
@@ -0,0 +1,61 @@
+\input docstrip
+
+\preamble
+
+ datetime2-esperanto.dtx
+ Copyright 2018 Nicola Talbot
+
+ This work may be distributed and/or modified under the
+ conditions of the LaTeX Project Public License, either version 1.3
+ of this license of (at your option) any later version.
+ The latest version of this license is in
+ http://www.latex-project.org/lppl.txt
+ and version 1.3 or later is part of all distributions of LaTeX
+ version 2005/12/01 or later.
+
+ This work has the LPPL maintenance status `inactive'.
+
+ This work consists of the files datetime2-esperanto.dtx and
+ datetime2-esperanto.ins and the derived files
+ datetime2-esperanto-utf8.ldf, datetime2-esperanto-ascii.ldf and
+ datetime2-esperanto.ldf.
+
+\endpreamble
+
+\askforoverwritefalse
+
+\generate
+{%
+ \file
+ {datetime2-esperanto-utf8.ldf}%
+ {%
+ \usepreamble\defaultpreamble
+ \usepostamble\defaultpostamble
+ \from{datetime2-esperanto.dtx}{datetime2-esperanto-utf8.ldf,package}%
+ }%
+}
+
+\generate
+{%
+ \file
+ {datetime2-esperanto-ascii.ldf}%
+ {%
+ \usepreamble\defaultpreamble
+ \usepostamble\defaultpostamble
+ \from{datetime2-esperanto.dtx}{datetime2-esperanto-ascii.ldf,package}%
+ }%
+}
+
+\generate
+{%
+ \file
+ {datetime2-esperanto.ldf}%
+ {%
+ \usepreamble\defaultpreamble
+ \usepostamble\defaultpostamble
+ \from{datetime2-esperanto.dtx}{datetime2-esperanto.ldf,package}%
+ }%
+}
+
+\endbatchfile
+
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-esperanto/datetime2-esperanto.pdf b/macros/latex/contrib/datetime2-contrib/datetime2-esperanto/datetime2-esperanto.pdf
new file mode 100644
index 0000000000..4ac097b783
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-esperanto/datetime2-esperanto.pdf
Binary files differ
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-estonian/README b/macros/latex/contrib/datetime2-contrib/datetime2-estonian/README
new file mode 100644
index 0000000000..e671f924ee
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-estonian/README
@@ -0,0 +1,57 @@
+Estonian Language Module for datetime2 Package
+
+Author: Nicola L. C. Talbot (inactive)
+
+Licence: LPPL
+
+Required Packages: datetime2, tracklang
+
+This module is unmaintained. If you want to volunteer to take over
+the maintenance contact me at www.dickimaw-books.com/contact.html
+
+Example usage:
+
+\documentclass{article}
+\usepackage[estonian]{datetime2}
+\begin{document}
+\today
+\end{document}
+
+\documentclass[estonian]{article}
+\usepackage{babel}
+\usepackage[useregional]{datetime2}
+\begin{document}
+\today
+\end{document}
+
+\documentclass{article}
+\usepackage{polyglossia}
+\setmainlanguage{estonian}
+\usepackage[estonian]{datetime2}
+\begin{document}
+\today
+\end{document}
+
+INSTALLATION
+============
+
+xelatex datetime2-estonian.ins
+
+Move all *.ldf files to
+TEXMF/tex/latex/datetime2-contrib/datetime2-estonian/
+
+Documentation:
+
+xelatex datetime2-estonian.dtx
+makeindex -s gind.ist datetime2-estonian.idx
+makeindex -s gglo.ist -o datetime2-estonian.gls datetime2-estonian.glo
+xelatex datetime2-estonian.dtx
+xelatex datetime2-estonian.dtx
+
+Move datetime2-estonian.pdf and README to
+TEXMF/doc/latex/datetime2-contrib/datetime2-estonian/
+
+This material is subject to the LaTeX Project Public License.
+See http://www.ctan.org/license/lppl1.3 for the details of that
+license.
+
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-estonian/datetime2-estonian.dtx b/macros/latex/contrib/datetime2-contrib/datetime2-estonian/datetime2-estonian.dtx
new file mode 100644
index 0000000000..797a33a1a1
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-estonian/datetime2-estonian.dtx
@@ -0,0 +1,646 @@
+%\iffalse
+%<*package>
+%% \CharacterTable
+%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+%% Digits \0\1\2\3\4\5\6\7\8\9
+%% Exclamation \! Double quote \" Hash (number) \#
+%% Dollar \$ Percent \% Ampersand \&
+%% Acute accent \' Left paren \( Right paren \)
+%% Asterisk \* Plus \+ Comma \,
+%% Minus \- Point \. Solidus \/
+%% Colon \: Semicolon \; Less than \<
+%% Equals \= Greater than \> Question mark \?
+%% Commercial at \@ Left bracket \[ Backslash \\
+%% Right bracket \] Circumflex \^ Underscore \_
+%% Grave accent \` Left brace \{ Vertical bar \|
+%% Right brace \} Tilde \~}
+%</package>
+%\fi
+% \iffalse
+% Doc-Source file to use with LaTeX2e
+% Copyright (C) 2018 Nicola Talbot, all rights reserved.
+% (New maintainer add relevant lines here.)
+% \fi
+% \iffalse
+%<*driver>
+\documentclass{ltxdoc}
+
+\usepackage{alltt}
+\usepackage{graphicx}
+\usepackage{fontspec}
+\usepackage[colorlinks,
+ bookmarks,
+ hyperindex=false,
+ pdfauthor={Nicola L.C. Talbot},
+ pdftitle={datetime2.sty Estonian Module}]{hyperref}
+
+\setmainfont{Liberation Serif}
+\setmonofont{Liberation Mono}
+
+\CheckSum{265}
+
+\renewcommand*{\usage}[1]{\hyperpage{#1}}
+\renewcommand*{\main}[1]{\hyperpage{#1}}
+\IndexPrologue{\section*{\indexname}\markboth{\indexname}{\indexname}}
+\setcounter{IndexColumns}{2}
+
+\newcommand*{\sty}[1]{\textsf{#1}}
+\newcommand*{\opt}[1]{\texttt{#1}\index{#1=\texttt{#1}|main}}
+
+\RecordChanges
+\PageIndex
+\CodelineNumbered
+
+\begin{document}
+\DocInput{datetime2-estonian.dtx}
+\end{document}
+%</driver>
+%\fi
+%
+%\MakeShortVerb{"}
+%
+%\title{Estonian Module for datetime2 Package}
+%\author{Nicola L. C. Talbot (inactive)}
+%\date{2018-04-13 (v1.1)}
+%\maketitle
+%
+%This module is currently unmaintained and may be subject to change.
+%If you want to volunteer to take over maintanance, contact me at
+%\url{http://www.dickimaw-books.com/contact.html}
+%
+%\begin{abstract}
+%This is the Estonian language module for the \sty{datetime2}
+%package. If you want to use the settings in this module you must
+%install it in addition to installing \sty{datetime2}. If you use
+%\sty{babel} or \sty{polyglossia}, you will need this module to
+%prevent them from redefining \cs{today}. The \sty{datetime2}
+% \opt{useregional} setting must be set to "text" or "numeric"
+% for the language styles to be set.
+% Alternatively, you can set the style in the document using
+% \cs{DTMsetstyle}, but this may be changed by \cs{date}\meta{language}
+% depending on the value of the \opt{useregional} setting.
+%\end{abstract}
+%
+%I've copied the date style from \texttt{babel-estonian}'s \cs{today}.
+%
+%I don't know if these settings are correct as I can't speak Estonian.
+%In particular, I don't know if the "estonian" time style is
+%correct. Currently this just uses the "default" time style. Please
+%be aware that this may change. Whoever takes over maintanance
+%of this module may can change it as appropriate.
+%
+%The new maintainer should add the line:
+%\begin{verbatim}
+% The Current Maintainer of this work is Name.
+%\end{verbatim}
+%to the preamble part in \texttt{datetime2-estonian.ins} where Name
+%is the name of the maintainer(s) and replace
+%the `inactive' status to `maintained'.
+%
+%Currently there is only a regionless style.
+%
+%\StopEventually{%
+%\clearpage
+%\phantomsection
+%\addcontentsline{toc}{section}{Change History}%
+%\PrintChanges
+%\addcontentsline{toc}{section}{\indexname}%
+%\PrintIndex}
+%\section{The Code}
+%\iffalse
+% \begin{macrocode}
+%<*datetime2-estonian-utf8.ldf>
+% \end{macrocode}
+%\fi
+%\subsection{UTF-8}
+%This file contains the settings that use UTF-8 characters. This
+%file is loaded if XeLaTeX or LuaLaTeX are used. Please make sure
+%your text editor is set to UTF-8 if you want to view this code.
+%\changes{1.0}{2015-03-30}{Initial release}
+% Identify module
+% \begin{macrocode}
+\ProvidesDateTimeModule{estonian-utf8}[2018/04/13 v1.1]
+% \end{macrocode}
+%\begin{macro}{\DTMestonianordinal}
+% \begin{macrocode}
+\newcommand*{\DTMestonianordinal}[1]{%
+ \number#1.%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMestonianyear}
+% \begin{macrocode}
+\newcommand*{\DTMestonianyear}[1]{%
+ \number#1.\space a.%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%
+%\begin{macro}{\DTMestonianmonthname}
+% Estonian month names.
+% \begin{macrocode}
+\newcommand*{\DTMestonianmonthname}[1]{%
+ \ifcase#1
+ \or
+ jaanuar%
+ \or
+ veebruar%
+ \or
+ mƤarts%
+ \or
+ aprill%
+ \or
+ mai%
+ \or
+ juuni%
+ \or
+ juuli%
+ \or
+ august%
+ \or
+ september%
+ \or
+ oktoober%
+ \or
+ november%
+ \or
+ detsember%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMestonianMonthname}
+% As above but capitalize.
+% \begin{macrocode}
+\newcommand*{\DTMestonianMonthname}[1]{%
+ \ifcase#1
+ \or
+ Jaanuar%
+ \or
+ Veebruar%
+ \or
+ MƤarts%
+ \or
+ Aprill%
+ \or
+ Mai%
+ \or
+ Juuni%
+ \or
+ Juuli%
+ \or
+ August%
+ \or
+ September%
+ \or
+ Oktoober%
+ \or
+ November%
+ \or
+ Detsember%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%If abbreviated dates are supported, short month names should be
+%likewise provided.
+%
+%\iffalse
+% \begin{macrocode}
+%</datetime2-estonian-utf8.ldf>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*datetime2-estonian-ascii.ldf>
+% \end{macrocode}
+%\fi
+%\subsection{ASCII}
+%This file contains the settings that use \LaTeX\ commands for
+%non-ASCII characters. This should be input if neither XeLaTeX nor
+%LuaLaTeX are used. Even if the user has loaded \sty{inputenc} with
+%"utf8", this file should still be used not the
+%\texttt{datetime2-estonian-utf8.ldf} file as the non-ASCII
+%characters are made active in that situation and would need
+%protecting against expansion.
+%\changes{1.0}{2015-03-30}{Initial release}
+% Identify module
+% \begin{macrocode}
+\ProvidesDateTimeModule{estonian-ascii}[2018/04/13 v1.1]
+% \end{macrocode}
+%
+%If abbreviated dates are supported, short month names should be
+%likewise provided.
+%\begin{macro}{\DTMestonianordinal}
+% \begin{macrocode}
+\newcommand*{\DTMestonianordinal}[1]{%
+ \number#1.%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMestonianyear}
+% \begin{macrocode}
+\newcommand*{\DTMestonianyear}[1]{%
+ \number#1.\space a.%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMestonianmonthname}
+% Estonian month names.
+% \begin{macrocode}
+\newcommand*{\DTMestonianmonthname}[1]{%
+ \ifcase#1
+ \or
+ jaanuar%
+ \or
+ veebruar%
+ \or
+ m\protect\"arts%
+ \or
+ aprill%
+ \or
+ mai%
+ \or
+ juuni%
+ \or
+ juuli%
+ \or
+ august%
+ \or
+ september%
+ \or
+ oktoober%
+ \or
+ november%
+ \or
+ detsember%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMestonianMonthname}
+% As above but capitalize.
+% \begin{macrocode}
+\newcommand*{\DTMestonianMonthname}[1]{%
+ \ifcase#1
+ \or
+ Jaanuar%
+ \or
+ Veebruar%
+ \or
+ M\protect\"arts%
+ \or
+ Aprill%
+ \or
+ Mai%
+ \or
+ Juuni%
+ \or
+ Juuli%
+ \or
+ August%
+ \or
+ September%
+ \or
+ Oktoober%
+ \or
+ November%
+ \or
+ Detsember%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\iffalse
+% \begin{macrocode}
+%</datetime2-estonian-ascii.ldf>
+% \end{macrocode}
+%\fi
+%
+%\subsection{Main Estonian Module (\texttt{datetime2-estonian.ldf})}
+%\changes{1.0}{2015-03-30}{Initial release}
+%
+%\iffalse
+% \begin{macrocode}
+%<*datetime2-estonian.ldf>
+% \end{macrocode}
+%\fi
+%
+% Identify Module
+% \begin{macrocode}
+\ProvidesDateTimeModule{estonian}[2018/04/13 v1.1]
+% \end{macrocode}
+% Need to find out if XeTeX or LuaTeX are being used.
+% \begin{macrocode}
+\RequirePackage{ifxetex,ifluatex}
+% \end{macrocode}
+% XeTeX and LuaTeX natively support UTF-8, so load
+% \texttt{estonian-utf8} if either of those engines are used
+% otherwise load \texttt{estonian-ascii}.
+% \begin{macrocode}
+\ifxetex
+ \RequireDateTimeModule{estonian-utf8}
+\else
+ \ifluatex
+ \RequireDateTimeModule{estonian-utf8}
+ \else
+ \RequireDateTimeModule{estonian-ascii}
+ \fi
+\fi
+% \end{macrocode}
+%
+% Define the \texttt{estonian} style.
+% The time style is the same as the "default" style
+% provided by \sty{datetime2}. This may need correcting. For
+% example, if a 12 hour style similar to the "englishampm" (from the
+% "english-base" module) is required.
+%
+% Allow the user a way of configuring the "estonian" and
+% "estonian-numeric" styles. This doesn't use the package wide
+% separators such as
+% \cs{dtm@datetimesep} in case other date formats are also required.
+%\begin{macro}{\DTMestoniandaymonthsep}
+% The separator between the day and month for the text format.
+% \begin{macrocode}
+\newcommand*{\DTMestoniandaymonthsep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMestonianmonthyearsep}
+% The separator between the month and year for the text format.
+% \begin{macrocode}
+\newcommand*{\DTMestonianmonthyearsep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMestoniandatetimesep}
+% The separator between the date and time blocks in the full format
+% (either text or numeric).
+% \begin{macrocode}
+\newcommand*{\DTMestoniandatetimesep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMestoniantimezonesep}
+% The separator between the time and zone blocks in the full format
+% (either text or numeric).
+% \begin{macrocode}
+\newcommand*{\DTMestoniantimezonesep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMestoniandatesep}
+% The separator for the numeric date format.
+% \begin{macrocode}
+\newcommand*{\DTMestoniandatesep}{.}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMestoniantimesep}
+% The separator for the numeric time format.
+% \begin{macrocode}
+\newcommand*{\DTMestoniantimesep}{:}
+% \end{macrocode}
+%\end{macro}
+%
+%Provide keys that can be used in \cs{DTMlangsetup} to set these
+%separators.
+% \begin{macrocode}
+\DTMdefkey{estonian}{daymonthsep}{\renewcommand*{\DTMestoniandaymonthsep}{#1}}
+\DTMdefkey{estonian}{monthyearsep}{\renewcommand*{\DTMestonianmonthyearsep}{#1}}
+\DTMdefkey{estonian}{datetimesep}{\renewcommand*{\DTMestoniandatetimesep}{#1}}
+\DTMdefkey{estonian}{timezonesep}{\renewcommand*{\DTMestoniantimezonesep}{#1}}
+\DTMdefkey{estonian}{datesep}{\renewcommand*{\DTMestoniandatesep}{#1}}
+\DTMdefkey{estonian}{timesep}{\renewcommand*{\DTMestoniantimesep}{#1}}
+% \end{macrocode}
+%
+% TODO: provide a boolean key to switch between full and abbreviated
+% formats if appropriate. (I don't know how the date should be
+% abbreviated.)
+%
+% Define a boolean key that determines if the time zone mappings
+% should be used.
+% \begin{macrocode}
+\DTMdefboolkey{estonian}{mapzone}[true]{}
+% \end{macrocode}
+% The default is to use mappings.
+% \begin{macrocode}
+\DTMsetbool{estonian}{mapzone}{true}
+% \end{macrocode}
+%
+% Define a boolean key that determines if the day of month should be
+% displayed.
+% \begin{macrocode}
+\DTMdefboolkey{estonian}{showdayofmonth}[true]{}
+% \end{macrocode}
+% The default is to show the day of month.
+% \begin{macrocode}
+\DTMsetbool{estonian}{showdayofmonth}{true}
+% \end{macrocode}
+%
+% Define a boolean key that determines if the year should be
+% displayed.
+% \begin{macrocode}
+\DTMdefboolkey{estonian}{showyear}[true]{}
+% \end{macrocode}
+% The default is to show the year.
+% \begin{macrocode}
+\DTMsetbool{estonian}{showyear}{true}
+% \end{macrocode}
+%
+% Define the "estonian" style. (TODO: implement day of week?)
+% \begin{macrocode}
+\DTMnewstyle
+ {estonian}% label
+ {% date style
+ \renewcommand*\DTMdisplaydate[4]{%
+ \DTMifbool{estonian}{showdayofmonth}
+ {\DTMestonianordinal{##3}\DTMestoniandaymonthsep}%
+ {}%
+ \DTMestonianmonthname{##2}%
+ \DTMifbool{estonian}{showyear}%
+ {%
+ \DTMestonianmonthyearsep
+ \DTMestonianyear{\number##1}%
+ }%
+ {}%
+ }%
+ \renewcommand*\DTMDisplaydate[4]{%
+ \DTMifbool{estonian}{showdayofmonth}
+ {%
+ \DTMestonianordinal{##3}\DTMestoniandaymonthsep
+ \DTMestonianmonthname{##2}%
+ }%
+ {%
+ \DTMestonianMonthname{##2}%
+ }%
+ \DTMifbool{estonian}{showyear}%
+ {%
+ \DTMestonianmonthyearsep
+ \DTMestonianyear{\number##1}%
+ }%
+ {}%
+ }%
+ }%
+ {% time style (use default)
+ \DTMsettimestyle{default}%
+ }%
+ {% zone style
+ \DTMresetzones
+ \DTMestonianzonemaps
+ \renewcommand*{\DTMdisplayzone}[2]{%
+ \DTMifbool{estonian}{mapzone}%
+ {\DTMusezonemapordefault{##1}{##2}}%
+ {%
+ \ifnum##1<0\else+\fi\DTMtwodigits{##1}%
+ \ifDTMshowzoneminutes\DTMestoniantimesep\DTMtwodigits{##2}\fi
+ }%
+ }%
+ }%
+ {% full style
+ \renewcommand*{\DTMdisplay}[9]{%
+ \ifDTMshowdate
+ \DTMdisplaydate{##1}{##2}{##3}{##4}%
+ \DTMestoniandatetimesep
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \DTMestoniantimezonesep
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+ \renewcommand*{\DTMDisplay}[9]{%
+ \ifDTMshowdate
+ \DTMDisplaydate{##1}{##2}{##3}{##4}%
+ \DTMestoniandatetimesep
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \DTMestoniantimezonesep
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+ }%
+% \end{macrocode}
+%
+% Define numeric style.
+% \begin{macrocode}
+\DTMnewstyle
+ {estonian-numeric}% label
+ {% date style
+ \renewcommand*\DTMdisplaydate[4]{%
+ \DTMifbool{estonian}{showdayofmonth}%
+ {%
+ \number##3 % space intended
+ \DTMestoniandatesep
+ }%
+ {}%
+ \number##2 % space intended
+ \DTMifbool{estonian}{showyear}%
+ {%
+ \DTMestoniandatesep
+ \number##1 % space intended
+ }%
+ {}%
+ }%
+ \renewcommand*{\DTMDisplaydate}{\DTMdisplaydate}%
+ }%
+ {% time style
+ \renewcommand*\DTMdisplaytime[3]{%
+ \number##1
+ \DTMestoniantimesep\DTMtwodigits{##2}%
+ \ifDTMshowseconds\DTMestoniantimesep\DTMtwodigits{##3}\fi
+ }%
+ }%
+ {% zone style
+ \DTMresetzones
+ \DTMestonianzonemaps
+ \renewcommand*{\DTMdisplayzone}[2]{%
+ \DTMifbool{estonian}{mapzone}%
+ {\DTMusezonemapordefault{##1}{##2}}%
+ {%
+ \ifnum##1<0\else+\fi\DTMtwodigits{##1}%
+ \ifDTMshowzoneminutes\DTMestoniantimesep\DTMtwodigits{##2}\fi
+ }%
+ }%
+ }%
+ {% full style
+ \renewcommand*{\DTMdisplay}[9]{%
+ \ifDTMshowdate
+ \DTMdisplaydate{##1}{##2}{##3}{##4}%
+ \DTMestoniandatetimesep
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \DTMestoniantimezonesep
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+ \renewcommand*{\DTMDisplay}{\DTMdisplay}%
+ }
+% \end{macrocode}
+%
+%\begin{macro}{\DTMestonianzonemaps}
+% The time zone mappings are set through this command, which can be
+% redefined if extra mappings are required or mappings need to be
+% removed. No default mappings are provided at the moment.
+% \begin{macrocode}
+\newcommand*{\DTMestonianzonemaps}{%
+ \DTMdefzonemap{02}{00}{EET}%
+ \DTMdefzonemap{03}{00}{EEST}%
+}
+% \end{macrocode}
+%\end{macro}
+
+% Switch style according to the \opt{useregional} setting.
+% \begin{macrocode}
+\DTMifcaseregional
+{}% do nothing
+{\DTMsetstyle{estonian}}
+{\DTMsetstyle{estonian-numeric}}
+% \end{macrocode}
+%
+% Redefine \cs{dateestonian} (or \cs{date}\meta{dialect}) to prevent
+% \sty{babel} from resetting \cs{today}. (For this to work,
+% \sty{babel} must already have been loaded if it's required.)
+%\changes{1.1}{2018-04-13}{removed spurious space}
+% \begin{macrocode}
+\ifcsundef{date\CurrentTrackedDialect}
+{%
+ \ifundef\dateestonian
+ {% do nothing
+ }%
+ {%
+ \def\dateestonian{%
+ \DTMifcaseregional
+ {}% do nothing
+ {\DTMsetstyle{estonian}}%
+ {\DTMsetstyle{estonian-numeric}}%
+ }%
+ }%
+}%
+{%
+ \csdef{date\CurrentTrackedDialect}{%
+ \DTMifcaseregional
+ {}% do nothing
+ {\DTMsetstyle{estonian}}%
+ {\DTMsetstyle{estonian-numeric}}%
+ }%
+}%
+% \end{macrocode}
+%\iffalse
+% \begin{macrocode}
+%</datetime2-estonian.ldf>
+% \end{macrocode}
+%\fi
+%\Finale
+\endinput
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-estonian/datetime2-estonian.ins b/macros/latex/contrib/datetime2-contrib/datetime2-estonian/datetime2-estonian.ins
new file mode 100644
index 0000000000..b1a2203e1b
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-estonian/datetime2-estonian.ins
@@ -0,0 +1,61 @@
+\input docstrip
+
+\preamble
+
+ datetime2-estonian.dtx
+ Copyright 2018 Nicola Talbot
+
+ This work may be distributed and/or modified under the
+ conditions of the LaTeX Project Public License, either version 1.3
+ of this license of (at your option) any later version.
+ The latest version of this license is in
+ http://www.latex-project.org/lppl.txt
+ and version 1.3 or later is part of all distributions of LaTeX
+ version 2005/12/01 or later.
+
+ This work has the LPPL maintenance status `inactive'.
+
+ This work consists of the files datetime2-estonian.dtx and
+ datetime2-estonian.ins and the derived files
+ datetime2-estonian-utf8.ldf, datetime2-estonian-ascii.ldf and
+ datetime2-estonian.ldf.
+
+\endpreamble
+
+\askforoverwritefalse
+
+\generate
+{%
+ \file
+ {datetime2-estonian-utf8.ldf}%
+ {%
+ \usepreamble\defaultpreamble
+ \usepostamble\defaultpostamble
+ \from{datetime2-estonian.dtx}{datetime2-estonian-utf8.ldf,package}%
+ }%
+}
+
+\generate
+{%
+ \file
+ {datetime2-estonian-ascii.ldf}%
+ {%
+ \usepreamble\defaultpreamble
+ \usepostamble\defaultpostamble
+ \from{datetime2-estonian.dtx}{datetime2-estonian-ascii.ldf,package}%
+ }%
+}
+
+\generate
+{%
+ \file
+ {datetime2-estonian.ldf}%
+ {%
+ \usepreamble\defaultpreamble
+ \usepostamble\defaultpostamble
+ \from{datetime2-estonian.dtx}{datetime2-estonian.ldf,package}%
+ }%
+}
+
+\endbatchfile
+
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-estonian/datetime2-estonian.pdf b/macros/latex/contrib/datetime2-contrib/datetime2-estonian/datetime2-estonian.pdf
new file mode 100644
index 0000000000..abf8d3b1ea
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-estonian/datetime2-estonian.pdf
Binary files differ
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-finnish/CHANGES b/macros/latex/contrib/datetime2-contrib/datetime2-finnish/CHANGES
new file mode 100644
index 0000000000..2fc70b8acb
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-finnish/CHANGES
@@ -0,0 +1,13 @@
+v1.2 (2018-03-20):
+
+ * Fixed a bug with unwanted space
+
+v1.1 (2016-03-29):
+
+ * Separated partitive case from month names
+ * Added support for abbreviations
+ * Added support for day of week names
+
+v1.0 (2015-03-30):
+
+ * Initial release \ No newline at end of file
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-finnish/README b/macros/latex/contrib/datetime2-contrib/datetime2-finnish/README
new file mode 100644
index 0000000000..4a0b73ddb6
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-finnish/README
@@ -0,0 +1,58 @@
+Finnish Language Module for datetime2 Package
+
+Author: Nicola L. C. Talbot (inactive)
+ Tuomas VƤlimƤki
+
+Licence: LPPL
+
+Required Packages: datetime2, tracklang
+
+This module is maintained by Tuomas VƤlimƤki.
+Contact: tuomas.s.valimaki+datetime2-finnish@gmail.com
+
+Example usage:
+
+\documentclass{article}
+\usepackage[finnish]{datetime2}
+\begin{document}
+\today
+\end{document}
+
+\documentclass[finnish]{article}
+\usepackage{babel}
+\usepackage[useregional]{datetime2}
+\begin{document}
+\today
+\end{document}
+
+\documentclass{article}
+\usepackage{polyglossia}
+\setmainlanguage{finnish}
+\usepackage[finnish]{datetime2}
+\begin{document}
+\today
+\end{document}
+
+INSTALLATION
+============
+
+xelatex datetime2-finnish.ins
+
+Move all *.ldf files to
+TEXMF/tex/latex/datetime2-contrib/datetime2-finnish/
+
+Documentation:
+
+xelatex datetime2-finnish.dtx
+makeindex -s gind.ist datetime2-finnish.idx
+makeindex -s gglo.ist -o datetime2-finnish.gls datetime2-finnish.glo
+xelatex datetime2-finnish.dtx
+xelatex datetime2-finnish.dtx
+
+Move datetime2-finnish.pdf and README to
+TEXMF/doc/latex/datetime2-contrib/datetime2-finnish/
+
+This material is subject to the LaTeX Project Public License.
+See http://www.ctan.org/license/lppl1.3 for the details of that
+license.
+
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-finnish/datetime2-finnish.dtx b/macros/latex/contrib/datetime2-contrib/datetime2-finnish/datetime2-finnish.dtx
new file mode 100644
index 0000000000..4a06c43e93
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-finnish/datetime2-finnish.dtx
@@ -0,0 +1,1129 @@
+%\iffalse
+%<*package>
+%% \CharacterTable
+%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+%% Digits \0\1\2\3\4\5\6\7\8\9
+%% Exclamation \! Double quote \" Hash (number) \#
+%% Dollar \$ Percent \% Ampersand \&
+%% Acute accent \' Left paren \( Right paren \)
+%% Asterisk \* Plus \+ Comma \,
+%% Minus \- Point \. Solidus \/
+%% Colon \: Semicolon \; Less than \<
+%% Equals \= Greater than \> Question mark \?
+%% Commercial at \@ Left bracket \[ Backslash \\
+%% Right bracket \] Circumflex \^ Underscore \_
+%% Grave accent \` Left brace \{ Vertical bar \|
+%% Right brace \} Tilde \~}
+%</package>
+%\fi
+% \iffalse
+% Doc-Source file to use with LaTeX2e
+% Copyright (C) 2015 Nicola Talbot, all rights reserved.
+% Maintainer Tuomas VƤlimƤki.
+% \fi
+% \iffalse
+%<*driver>
+\documentclass{ltxdoc}
+
+\usepackage{alltt}
+\usepackage{graphicx}
+\usepackage{fontspec}
+\usepackage[colorlinks,
+ bookmarks,
+ hyperindex=false,
+ pdfauthor={Tuomas V\"alim\"aki},
+ pdftitle={datetime2.sty Finnish Module}]{hyperref}
+
+\CheckSum{464}
+
+\renewcommand*{\usage}[1]{\hyperpage{#1}}
+\renewcommand*{\main}[1]{\hyperpage{#1}}
+\IndexPrologue{\section*{\indexname}\markboth{\indexname}{\indexname}}
+\setcounter{IndexColumns}{2}
+
+\newcommand*{\sty}[1]{\textsf{#1}}
+\newcommand*{\opt}[1]{\texttt{#1}\index{#1=\texttt{#1}|main}}
+\newcommand*{\utc}[2]{\textsc{utc}\ifnum#1<0 $-$\number-#1\else $+$\number#1\fi
+ \ifnum#2>0 :\number#2 \fi\relax}
+
+\RecordChanges
+\PageIndex
+\CodelineNumbered
+
+\begin{document}
+\DocInput{datetime2-finnish.dtx}
+\end{document}
+%</driver>
+%\fi
+%
+%\MakeShortVerb{"}
+%
+%\title{Finnish Module for datetime2 Package}
+%\author{Tuomas V\"alim\"aki \and Nicola L. C. Talbot (inactive)}
+%\date{2018-03-20 (v1.2)}
+%\maketitle
+%
+%\begin{abstract}
+%This is the Finnish language module for the \sty{datetime2}
+%package. If you want to use the settings in this module you must
+%install it in addition to installing \sty{datetime2}. If you use
+%\sty{babel} or \sty{polyglossia}, you will need this module to
+%prevent them from redefining \cs{today}. The \sty{datetime2}
+% \opt{useregional} setting must be set to "text" or "numeric"
+% for the language styles to be set.
+% Alternatively, you can set the style in the document using
+% \cs{DTMsetstyle}, but this may be changed by \cs{date}\meta{language}
+% depending on the value of the \opt{useregional} setting.
+% Currently there is only a regionless style.
+%\end{abstract}
+%
+%\tableofcontents
+%\clearpage
+%
+%\section{Introduction}
+%\label{sec:intro}
+%This module defines the styles "finnish" and "finnish-numeric".
+%The "finnish" style will automatically be set if the \opt{useregional}
+%option is set to \texttt{text}, and the "finnish-numeric" style is automatically
+%set if the \opt{useregional} option is set to \texttt{numeric}.
+%
+%There are a number of settings provided that can be used in
+%\cs{DTMlangsetup} to modify the date-time style. These are:
+%
+%\begin{description}
+%\item[\opt{dowdaysep}] The separator between the day of week name and the
+%day of month number. This defaults to \cs{space}. Ignored if the
+%\opt{showdow} option is \texttt{false}.
+%
+%\item[\opt{daymonthsep}] The separator between the day and the month
+%name in the \texttt{finnish} style. This defaults to \cs{space}.
+%
+%\item[\opt{monthyearsep}] The separator between the month name and year
+% in the \texttt{finnish} style. This defaults to \cs{space}.
+%
+%\item[\opt{datesep}] The separator between the date numbers in the
+%"finnish-numeric" style. This defaults to "." (period).
+%
+%\item[\opt{timesep}] The separator between the hours and minutes in both
+%"finnish" and "finnish-numeric" styles. This defaults to "." (period).
+%
+%\item[\opt{datetimesep}] The separator between the date and time for the
+%full date-time format (as used by \cs{DTMdisplay}) for both the
+%"finnish" and "finnish-numeric" styles. This defaults
+%to \cs{space}.
+%
+%\item[\opt{timezonesep}] The separator between the time and zone for the
+%full date-time format (as used by \cs{DTMdisplay}) for both the
+%"finnish" and "finnish-numeric" styles. This defaults
+%to \cs{space}.
+%
+%\item[\opt{abbr}] This is a~boolean key. If "true", the month (and week
+%day name if shown) is abbreviated for the "finnish" style. The default is "false".
+%
+%\item[\opt{mapzone}] This is a~boolean key. If "true" the time zone
+%mappings are applied. (The default is \texttt{true}.) The "finnish"
+% and "finnish-numeric" styles set the mappings EET
+%(\utc{02}{00}) and EEST (\utc{03}{00}).
+%Other time zone mappings that have previously been set
+%(for example, by another regional style) will remain unchanged
+%unless you redefine \cs{DTMresetzones} to reset or unset them.
+%
+%\item[\opt{showdayofmonth}] A boolean key that determines whether
+%or not to show the day of the month. The default value is "true".
+%If "false" the day-month separator is also omitted.
+%
+%\item[\opt{showyear}] A boolean key that determines whether
+%or not to show the year. The default value is "true". If "false"
+%the month-year separator is also omitted.
+%\end{description}
+%
+%The above settings are specific to this module. In addition, the
+%\opt{showdow} boolean option provided by the \sty{datetime2} package is
+%checked to determine whether or not to show the day of the
+%week in the "finnish" style. The \opt{showdate}, \opt{showzone},
+%\opt{showseconds} and \opt{showzoneminutes} settings of \sty{datetime2}
+%are honoured.
+%
+%\StopEventually{%
+%\clearpage
+%\phantomsection
+%\addcontentsline{toc}{section}{Change History}%
+%\PrintChanges
+%\addcontentsline{toc}{section}{\indexname}%
+%\PrintIndex}
+%\section{The Code}
+%\iffalse
+% \begin{macrocode}
+%<*datetime2-finnish-utf8.ldf>
+% \end{macrocode}
+%\fi
+%\subsection{UTF-8 (\texttt{datetime2-finnish-utf8.ldf})}
+%This file contains the settings that use UTF-8 characters. This
+%file is loaded if XeLaTeX or LuaLaTeX are used. Please make sure
+%your text editor is set to UTF-8 if you want to view this code.
+%\changes{1.0}{2015-03-30}{Initial release}
+%\changes{1.1}{2016-03-29}{separated partitive case from month names
+% and added support for abbreviations and day of week}
+%
+% Identify module
+% \begin{macrocode}
+\ProvidesDateTimeModule{finnish-utf8}[2018/03/20 v1.2]
+% \end{macrocode}
+%\begin{macro}{\DTMfinnishordinal}
+% \begin{macrocode}
+\newcommand*{\DTMfinnishordinal}[1]{%
+ \number#1.%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMfinnishmonthname}
+% Finnish month names.
+% \begin{macrocode}
+\newcommand*{\DTMfinnishmonthname}[1]{%
+% \end{macrocode}
+% v1.1 separated partitive case from month names
+%\changes{1.1}{2016-03-29}{fixed}
+% \begin{macrocode}
+ \ifcase#1
+ \or
+ tammikuu%
+ \or
+ helmikuu%
+ \or
+ maaliskuu%
+ \or
+ huhtikuu%
+ \or
+ toukokuu%
+ \or
+ kesƤkuu%
+ \or
+ heinƤkuu%
+ \or
+ elokuu%
+ \or
+ syyskuu%
+ \or
+ lokakuu%
+ \or
+ marraskuu%
+ \or
+ joulukuu%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMfinnishMonthname}
+% As above but capitalize.
+% \begin{macrocode}
+\newcommand*{\DTMfinnishMonthname}[1]{%
+% \end{macrocode}
+% v1.1 separated partitive case from month names
+%\changes{1.1}{2016-03-29}{fixed}
+% \begin{macrocode}
+ \ifcase#1
+ \or
+ Tammikuu%
+ \or
+ Helmikuu%
+ \or
+ Maaliskuu%
+ \or
+ Huhtikuu%
+ \or
+ Toukokuu%
+ \or
+ KesƤkuu%
+ \or
+ HeinƤkuu%
+ \or
+ Elokuu%
+ \or
+ Syyskuu%
+ \or
+ Lokakuu%
+ \or
+ Marraskuu%
+ \or
+ Joulukuu%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+% Added support for abbreviations in v1.1.
+%\begin{macro}{\DTMfinnishshortmonthname}
+% Abbreviated Finnish month names.
+% \begin{macrocode}
+\newcommand*{\DTMfinnishshortmonthname}[1]{%
+% \end{macrocode}
+%\changes{1.1}{2016-03-29}{new}
+% \begin{macrocode}
+ \ifcase#1
+ \or
+ tammi%
+ \or
+ helmi%
+ \or
+ maalis%
+ \or
+ huhti%
+ \or
+ touko%
+ \or
+ kesƤ%
+ \or
+ heinƤ%
+ \or
+ elo%
+ \or
+ syys%
+ \or
+ loka%
+ \or
+ marras%
+ \or
+ joulu%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMfinnishshortMonthname}
+% As above but capitalize.
+% \begin{macrocode}
+\newcommand*{\DTMfinnishshortMonthname}[1]{%
+% \end{macrocode}
+%\changes{1.1}{2016-03-29}{new}
+% \begin{macrocode}
+ \ifcase#1
+ \or
+ Tammi%
+ \or
+ Helmi%
+ \or
+ Maalis%
+ \or
+ Huhti%
+ \or
+ Touko%
+ \or
+ KesƤ%
+ \or
+ HeinƤ%
+ \or
+ Elo%
+ \or
+ Syys%
+ \or
+ Loka%
+ \or
+ Marras%
+ \or
+ Joulu%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%Added support for day of week names in v1.1.
+%\begin{macro}{\DTMfinnishweekdayname}
+% Finnish day of week names.
+% \begin{macrocode}
+\newcommand*{\DTMfinnishweekdayname}[1]{%
+% \end{macrocode}
+%\changes{1.1}{2016-03-29}{new}
+% \begin{macrocode}
+ \ifcase#1
+ maanantai%
+ \or
+ tiistai%
+ \or
+ keskiviikko%
+ \or
+ torstai%
+ \or
+ perjantai%
+ \or
+ lauantai%
+ \or
+ sunnuntai%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMfinnishWeekdayname}
+% As above but capitalize.
+% \begin{macrocode}
+\newcommand*{\DTMfinnishWeekdayname}[1]{%
+% \end{macrocode}
+%\changes{1.1}{2016-03-29}{new}
+% \begin{macrocode}
+ \ifcase#1
+ Maanantai%
+ \or
+ Tiistai%
+ \or
+ Keskiviikko%
+ \or
+ Torstai%
+ \or
+ Perjantai%
+ \or
+ Lauantai%
+ \or
+ Sunnuntai%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMfinnishshortweekdayname}
+% Finnish abbreviated day of week names.
+% \begin{macrocode}
+\newcommand*{\DTMfinnishshortweekdayname}[1]{%
+% \end{macrocode}
+%\changes{1.1}{2016-03-29}{new}
+% \begin{macrocode}
+ \ifcase#1
+ ma%
+ \or
+ ti%
+ \or
+ ke%
+ \or
+ to%
+ \or
+ pe%
+ \or
+ la%
+ \or
+ su%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMfinnishshortWeekdayname}
+% As above but capitalize.
+% \begin{macrocode}
+\newcommand*{\DTMfinnishshortWeekdayname}[1]{%
+% \end{macrocode}
+%\changes{1.1}{2016-03-29}{new}
+% \begin{macrocode}
+ \ifcase#1
+ Ma%
+ \or
+ Ti%
+ \or
+ Ke%
+ \or
+ To%
+ \or
+ Pe%
+ \or
+ La%
+ \or
+ Su%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\iffalse
+% \begin{macrocode}
+%</datetime2-finnish-utf8.ldf>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*datetime2-finnish-ascii.ldf>
+% \end{macrocode}
+%\fi
+%\subsection{ASCII (\texttt{datetime2-finnish-ascii.ldf})}
+%This file contains the settings that use \LaTeX\ commands for
+%non-ASCII characters. This should be input if neither XeLaTeX nor
+%LuaLaTeX are used. Even if the user has loaded \sty{inputenc} with
+%"utf8", this file should still be used not the
+%\texttt{datetime2-finnish-utf8.ldf} file as the non-ASCII
+%characters are made active in that situation and would need
+%protecting against expansion.
+%\changes{1.0}{2015-03-30}{Initial release}
+%\changes{1.1}{2016-03-29}{separated partitive case from month names
+% and added support for abbreviations and day of week}
+%
+% Identify module
+% \begin{macrocode}
+\ProvidesDateTimeModule{finnish-ascii}[2018/03/20 v1.2]
+% \end{macrocode}
+%
+%\begin{macro}{\DTMfinnishordinal}
+% \begin{macrocode}
+\newcommand*{\DTMfinnishordinal}[1]{%
+ \number#1.%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMfinnishmonthname}
+% Finnish month names.
+% \begin{macrocode}
+\newcommand*{\DTMfinnishmonthname}[1]{%
+% \end{macrocode}
+% v1.1 separated partitive case from month names
+%\changes{1.1}{2016-03-29}{fixed}
+% \begin{macrocode}
+ \ifcase#1
+ \or
+ tammikuu%
+ \or
+ helmikuu%
+ \or
+ maaliskuu%
+ \or
+ huhtikuu%
+ \or
+ toukokuu%
+ \or
+ kes\protect\"akuu%
+ \or
+ hein\protect\"akuu%
+ \or
+ elokuu%
+ \or
+ syyskuu%
+ \or
+ lokakuu%
+ \or
+ marraskuu%
+ \or
+ joulukuu%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMfinnishMonthname}
+% As above but capitalize.
+% \begin{macrocode}
+\newcommand*{\DTMfinnishMonthname}[1]{%
+% \end{macrocode}
+% v1.1 separated partitive case from month names
+%\changes{1.1}{2016-03-29}{fixed}
+% \begin{macrocode}
+ \ifcase#1
+ \or
+ Tammikuu%
+ \or
+ Helmikuu%
+ \or
+ Maaliskuu%
+ \or
+ Huhtikuu%
+ \or
+ Toukokuu%
+ \or
+ Kes\protect\"akuu%
+ \or
+ Hein\protect\"akuu%
+ \or
+ Elokuu%
+ \or
+ Syyskuu%
+ \or
+ Lokakuu%
+ \or
+ Marraskuu%
+ \or
+ Joulukuu%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+% Added support for abbreviations in v1.1.
+%\begin{macro}{\DTMfinnishshortmonthname}
+% Abbreviated Finnish month names.
+% \begin{macrocode}
+\newcommand*{\DTMfinnishshortmonthname}[1]{%
+% \end{macrocode}
+%\changes{1.1}{2016-03-29}{new}
+% \begin{macrocode}
+ \ifcase#1
+ \or
+ tammi%
+ \or
+ helmi%
+ \or
+ maalis%
+ \or
+ huhti%
+ \or
+ touko%
+ \or
+ kes\protect\"a%
+ \or
+ hein\protect\"a%
+ \or
+ elo%
+ \or
+ syys%
+ \or
+ loka%
+ \or
+ marras%
+ \or
+ joulu%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMfinnishshortMonthname}
+% As above but capitalize.
+% \begin{macrocode}
+\newcommand*{\DTMfinnishshortMonthname}[1]{%
+% \end{macrocode}
+%\changes{1.1}{2016-03-29}{new}
+% \begin{macrocode}
+ \ifcase#1
+ \or
+ Tammi%
+ \or
+ Helmi%
+ \or
+ Maalis%
+ \or
+ Huhti%
+ \or
+ Touko%
+ \or
+ Kes\protect\"a%
+ \or
+ Hein\protect\"a%
+ \or
+ Elo%
+ \or
+ Syys%
+ \or
+ Loka%
+ \or
+ Marras%
+ \or
+ Joulu%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%Added support for day of week names in v1.1.
+%\begin{macro}{\DTMfinnishweekdayname}
+% Finnish day of week names.
+% \begin{macrocode}
+\newcommand*{\DTMfinnishweekdayname}[1]{%
+% \end{macrocode}
+%\changes{1.1}{2016-03-29}{new}
+% \begin{macrocode}
+ \ifcase#1
+ maanantai%
+ \or
+ tiistai%
+ \or
+ keskiviikko%
+ \or
+ torstai%
+ \or
+ perjantai%
+ \or
+ lauantai%
+ \or
+ sunnuntai%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMfinnishWeekdayname}
+% As above but capitalize.
+% \begin{macrocode}
+\newcommand*{\DTMfinnishWeekdayname}[1]{%
+% \end{macrocode}
+%\changes{1.1}{2016-03-29}{new}
+% \begin{macrocode}
+ \ifcase#1
+ Maanantai%
+ \or
+ Tiistai%
+ \or
+ Keskiviikko%
+ \or
+ Torstai%
+ \or
+ Perjantai%
+ \or
+ Lauantai%
+ \or
+ Sunnuntai%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMfinnishshortweekdayname}
+% Finnish abbreviated day of week names.
+% \begin{macrocode}
+\newcommand*{\DTMfinnishshortweekdayname}[1]{%
+% \end{macrocode}
+%\changes{1.1}{2016-03-29}{new}
+% \begin{macrocode}
+ \ifcase#1
+ ma%
+ \or
+ ti%
+ \or
+ ke%
+ \or
+ to%
+ \or
+ pe%
+ \or
+ la%
+ \or
+ su%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMfinnishshortWeekdayname}
+% As above but capitalize.
+% \begin{macrocode}
+\newcommand*{\DTMfinnishshortWeekdayname}[1]{%
+% \end{macrocode}
+%\changes{1.1}{2016-03-29}{new}
+% \begin{macrocode}
+ \ifcase#1
+ Ma%
+ \or
+ Ti%
+ \or
+ Ke%
+ \or
+ To%
+ \or
+ Pe%
+ \or
+ La%
+ \or
+ Su%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\iffalse
+% \begin{macrocode}
+%</datetime2-finnish-ascii.ldf>
+% \end{macrocode}
+%\fi
+%
+%\subsection{Main Finnish Module (\texttt{datetime2-finnish.ldf})}
+%\changes{1.0}{2015-03-30}{Initial release}
+%\changes{1.1}{2016-03-29}{separated partitive case from month names
+% and added support for abbreviations and day of week}
+%
+%\iffalse
+% \begin{macrocode}
+%<*datetime2-finnish.ldf>
+% \end{macrocode}
+%\fi
+%
+% Identify Module
+% \begin{macrocode}
+\ProvidesDateTimeModule{finnish}[2018/03/20 v1.2]
+% \end{macrocode}
+% Need to find out if XeTeX or LuaTeX are being used.
+% \begin{macrocode}
+\RequirePackage{ifxetex,ifluatex}
+% \end{macrocode}
+% XeTeX and LuaTeX natively support UTF-8, so load
+% \texttt{finnish-utf8} if either of those engines are used
+% otherwise load \texttt{finnish-ascii}.
+% \begin{macrocode}
+\ifxetex
+ \RequireDateTimeModule{finnish-utf8}
+\else
+ \ifluatex
+ \RequireDateTimeModule{finnish-utf8}
+ \else
+ \RequireDateTimeModule{finnish-ascii}
+ \fi
+\fi
+% \end{macrocode}
+%
+% Define the \texttt{finnish} style.
+% The time style is the same as the "default" style
+% provided by \sty{datetime2}.
+%
+% Allow the user a way of configuring the "finnish" and
+% "finnish-numeric" styles. This doesn't use the package wide
+% separators such as
+% \cs{dtm@datetimesep} in case other date formats are also required.
+%
+%\begin{macro}{\DTMfinnishdowdaysep}
+%\changes{1.1}{2016-03-29}{new}
+% The separator between the day of week name and the day of month
+% number for the text format (v1.1).
+% \begin{macrocode}
+\newcommand*{\DTMfinnishdowdaysep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMfinnishdaymonthsep}
+% The separator between the day and month for the text format.
+% \begin{macrocode}
+\newcommand*{\DTMfinnishdaymonthsep}{%
+ \DTMtexorpdfstring{\protect~}{\space}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMfinnishmonthyearsep}
+% The separator between the month and year for the text format.
+% \begin{macrocode}
+\newcommand*{\DTMfinnishmonthyearsep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMfinnishdatetimesep}
+% The separator between the date and time blocks in the full format
+% (either text or numeric).
+% \begin{macrocode}
+\newcommand*{\DTMfinnishdatetimesep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMfinnishtimezonesep}
+% The separator between the time and zone blocks in the full format
+% (either text or numeric).
+% \begin{macrocode}
+\newcommand*{\DTMfinnishtimezonesep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMfinnishdatesep}
+% The separator for the numeric date format.
+% \begin{macrocode}
+\newcommand*{\DTMfinnishdatesep}{.}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMfinnishtimesep}
+% The separator for the numeric time format.
+% \begin{macrocode}
+\newcommand*{\DTMfinnishtimesep}{.}
+% \end{macrocode}
+%\end{macro}
+%
+%Provide keys that can be used in \cs{DTMlangsetup} to set these
+%separators.
+% \begin{macrocode}
+\DTMdefkey{finnish}{dowdaysep}{\renewcommand*{\DTMfinnishdowdaysep}{#1}}
+\DTMdefkey{finnish}{daymonthsep}{\renewcommand*{\DTMfinnishdaymonthsep}{#1}}
+\DTMdefkey{finnish}{monthyearsep}{\renewcommand*{\DTMfinnishmonthyearsep}{#1}}
+\DTMdefkey{finnish}{datetimesep}{\renewcommand*{\DTMfinnishdatetimesep}{#1}}
+\DTMdefkey{finnish}{timezonesep}{\renewcommand*{\DTMfinnishtimezonesep}{#1}}
+\DTMdefkey{finnish}{datesep}{\renewcommand*{\DTMfinnishdatesep}{#1}}
+\DTMdefkey{finnish}{timesep}{\renewcommand*{\DTMfinnishtimesep}{#1}}
+% \end{macrocode}
+%
+% Define a boolean key that can switch between full and abbreviated
+% formats for the month and day of week names in the text format (v1.1).
+%\changes{1.1}{2016-03-29}{separated partitive case from month names
+% and added support for abbreviations and day of week}
+% \begin{macrocode}
+\DTMdefboolkey{finnish}{abbr}[true]{}
+% \end{macrocode}
+% The default is the full name.
+% \begin{macrocode}
+\DTMsetbool{finnish}{abbr}{false}
+% \end{macrocode}
+%
+% Define a boolean key that determines if the time zone mappings
+% should be used.
+% \begin{macrocode}
+\DTMdefboolkey{finnish}{mapzone}[true]{}
+% \end{macrocode}
+% The default is to use mappings.
+% \begin{macrocode}
+\DTMsetbool{finnish}{mapzone}{true}
+% \end{macrocode}
+%
+% Define a boolean key that determines if the day of month should be
+% displayed.
+% \begin{macrocode}
+\DTMdefboolkey{finnish}{showdayofmonth}[true]{}
+% \end{macrocode}
+% The default is to show the day of month.
+% \begin{macrocode}
+\DTMsetbool{finnish}{showdayofmonth}{true}
+% \end{macrocode}
+%
+% Define a boolean key that determines if the year should be
+% displayed.
+% \begin{macrocode}
+\DTMdefboolkey{finnish}{showyear}[true]{}
+% \end{macrocode}
+% The default is to show the year.
+% \begin{macrocode}
+\DTMsetbool{finnish}{showyear}{true}
+% \end{macrocode}
+%
+% Define the "finnish" style.
+% \begin{macrocode}
+\DTMnewstyle
+ {finnish}% label
+ {% date style
+ \renewcommand*\DTMdisplaydate[4]{%
+% \end{macrocode}
+% v1.1 separated partitive case from month names
+% and added support for abbreviations and day of week
+%\changes{1.1}{2016-03-29}{separated partitive case from month names
+% and added support for abbreviations and day of week}
+% \begin{macrocode}
+ \ifDTMshowdow
+ \ifnum##4>-1
+ \DTMifbool{finnish}{abbr}%
+ {\DTMfinnishshortweekdayname{##4}}%
+ {\DTMfinnishweekdayname{##4}}%
+ \DTMfinnishdowdaysep
+ \fi
+ \fi
+ \DTMifbool{finnish}{showdayofmonth}
+ {%
+ \DTMfinnishordinal{##3}\DTMfinnishdaymonthsep
+ \DTMifbool{finnish}{abbr}%
+ {\DTMfinnishshortmonthname{##2}}%
+ {\DTMfinnishmonthname{##2}ta}%
+ }%
+ {%
+ \DTMifbool{finnish}{abbr}%
+ {\DTMfinnishshortmonthname{##2}}%
+ {\DTMfinnishmonthname{##2}}%
+ }%
+ \DTMifbool{finnish}{showyear}%
+ {%
+ \DTMfinnishmonthyearsep
+ \number##1 % space intended
+ }%
+ {}%
+ }%
+ \renewcommand*\DTMDisplaydate[4]{%
+% \end{macrocode}
+% v1.1 separated partitive case from month names
+% and added support for abbreviations and day of week
+%\changes{1.1}{2016-03-29}{separated partitive case from month names
+% and added support for abbreviations and day of week}
+% \begin{macrocode}
+ \ifDTMshowdow
+ \ifnum##4>-1
+ \DTMifbool{finnish}{abbr}%
+ {\DTMfinnishshortWeekdayname{##4}}%
+ {\DTMfinnishWeekdayname{##4}}%
+ \DTMfinnishdowdaysep
+ \fi
+ \DTMifbool{finnish}{showdayofmonth}
+ {%
+ \DTMfinnishordinal{##3}\DTMfinnishdaymonthsep
+ \DTMifbool{finnish}{abbr}%
+ {\DTMfinnishshortmonthname{##2}}%
+ {\DTMfinnishmonthname{##2}ta}%
+ }%
+ {%
+ \DTMifbool{finnish}{abbr}%
+ {\DTMfinnishshortmonthname{##2}}%
+ {\DTMfinnishmonthname{##2}}%
+ }%
+ \else
+ \DTMifbool{finnish}{showdayofmonth}
+ {%
+ \DTMfinnishordinal{##3}\DTMfinnishdaymonthsep
+ \DTMifbool{finnish}{abbr}%
+ {\DTMfinnishshortmonthname{##2}}%
+ {\DTMfinnishmonthname{##2}ta}%
+ }%
+ {%
+ \DTMifbool{finnish}{abbr}%
+ {\DTMfinnishshortMonthname{##2}}%
+ {\DTMfinnishMonthname{##2}}%
+ }%
+ \fi
+ \DTMifbool{finnish}{showyear}%
+ {%
+ \DTMfinnishmonthyearsep
+ \number##1 % space intended
+ }%
+ {}%
+ }%
+ }%
+ {% time style
+ \renewcommand*\DTMdisplaytime[3]{%
+ \number##1
+ \DTMfinnishtimesep\DTMtwodigits{##2}%
+ \ifDTMshowseconds\DTMfinnishtimesep\DTMtwodigits{##3}\fi
+ }%
+ }%
+ {% zone style
+ \DTMresetzones
+ \DTMfinnishzonemaps
+ \renewcommand*{\DTMdisplayzone}[2]{%
+ \DTMifbool{finnish}{mapzone}%
+ {\DTMusezonemapordefault{##1}{##2}}%
+ {%
+ \ifnum##1<0\else+\fi\DTMtwodigits{##1}%
+ \ifDTMshowzoneminutes\DTMfinnishtimesep\DTMtwodigits{##2}\fi
+ }%
+ }%
+ }%
+ {% full style
+ \renewcommand*{\DTMdisplay}[9]{%
+ \ifDTMshowdate
+ \DTMdisplaydate{##1}{##2}{##3}{##4}%
+ \DTMfinnishdatetimesep
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \DTMfinnishtimezonesep
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+ \renewcommand*{\DTMDisplay}[9]{%
+ \ifDTMshowdate
+ \DTMDisplaydate{##1}{##2}{##3}{##4}%
+ \DTMfinnishdatetimesep
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \DTMfinnishtimezonesep
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+ }%
+% \end{macrocode}
+%
+% Define numeric style.
+% \begin{macrocode}
+\DTMnewstyle
+ {finnish-numeric}% label
+ {% date style
+ \renewcommand*\DTMdisplaydate[4]{%
+ \DTMifbool{finnish}{showdayofmonth}%
+ {%
+ \number##3 % space intended
+ \DTMfinnishdatesep
+ }%
+ {}%
+ \number##2 % space intended
+ \DTMifbool{finnish}{showyear}%
+ {%
+ \DTMfinnishdatesep
+ \number##1 % space intended
+ }%
+ {}%
+ }%
+ \renewcommand*{\DTMDisplaydate}{\DTMdisplaydate}%
+ }%
+ {% time style
+ \renewcommand*\DTMdisplaytime[3]{%
+ \number##1
+ \DTMfinnishtimesep\DTMtwodigits{##2}%
+ \ifDTMshowseconds\DTMfinnishtimesep\DTMtwodigits{##3}\fi
+ }%
+ }%
+ {% zone style
+ \DTMresetzones
+ \DTMfinnishzonemaps
+ \renewcommand*{\DTMdisplayzone}[2]{%
+ \DTMifbool{finnish}{mapzone}%
+ {\DTMusezonemapordefault{##1}{##2}}%
+ {%
+ \ifnum##1<0\else+\fi\DTMtwodigits{##1}%
+ \ifDTMshowzoneminutes\DTMfinnishtimesep\DTMtwodigits{##2}\fi
+ }%
+ }%
+ }%
+ {% full style
+ \renewcommand*{\DTMdisplay}[9]{%
+ \ifDTMshowdate
+ \DTMdisplaydate{##1}{##2}{##3}{##4}%
+ \DTMfinnishdatetimesep
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \DTMfinnishtimezonesep
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+ \renewcommand*{\DTMDisplay}{\DTMdisplay}%
+ }
+% \end{macrocode}
+%
+%\begin{macro}{\DTMfinnishzonemaps}
+% The time zone mappings are set through this command, which can be
+% redefined if extra mappings are required or mappings need to be
+% removed.
+% \begin{macrocode}
+\newcommand*{\DTMfinnishzonemaps}{%
+ \DTMdefzonemap{02}{00}{EET}%
+ \DTMdefzonemap{03}{00}{EEST}%
+}
+% \end{macrocode}
+%\end{macro}
+
+% Switch style according to the \opt{useregional} setting.
+% \begin{macrocode}
+\DTMifcaseregional
+{}% do nothing
+{\DTMsetstyle{finnish}}
+{\DTMsetstyle{finnish-numeric}}
+% \end{macrocode}
+%
+% Redefine \cs{datefinnish} (or \cs{date}\meta{dialect}) to prevent
+% \sty{babel} from resetting \cs{today}. (For this to work,
+% \sty{babel} must already have been loaded if it's required.)
+%\changes{1.2}{2018-03-20}{fixed a bug with unwanted space}
+% \begin{macrocode}
+\ifcsundef{date\CurrentTrackedDialect}
+{%
+ \ifundef\datefinnish
+ {% do nothing
+ }%
+ {%
+ \def\datefinnish{%
+ \DTMifcaseregional
+ {}% do nothing
+ {\DTMsetstyle{finnish}}%
+ {\DTMsetstyle{finnish-numeric}}%
+ }%
+ }%
+}%
+{%
+ \csdef{date\CurrentTrackedDialect}{%
+ \DTMifcaseregional
+ {}% do nothing
+ {\DTMsetstyle{finnish}}%
+ {\DTMsetstyle{finnish-numeric}}%
+ }%
+}%
+% \end{macrocode}
+%\iffalse
+% \begin{macrocode}
+%</datetime2-finnish.ldf>
+% \end{macrocode}
+%\fi
+%\Finale
+\endinput
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-finnish/datetime2-finnish.ins b/macros/latex/contrib/datetime2-contrib/datetime2-finnish/datetime2-finnish.ins
new file mode 100644
index 0000000000..ed8fd2fa7b
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-finnish/datetime2-finnish.ins
@@ -0,0 +1,63 @@
+\input docstrip
+
+\preamble
+
+ datetime2-finnish.dtx
+ Copyright 2015 Nicola Talbot
+
+ This work may be distributed and/or modified under the
+ conditions of the LaTeX Project Public License, either version 1.3
+ of this license of (at your option) any later version.
+ The latest version of this license is in
+ http://www.latex-project.org/lppl.txt
+ and version 1.3 or later is part of all distributions of LaTeX
+ version 2005/12/01 or later.
+
+ This work has the LPPL maintenance status `maintained'.
+
+ The Current Maintainer of this work is Tuomas VƤlimƤki.
+
+ This work consists of the files datetime2-finnish.dtx and
+ datetime2-finnish.ins and the derived files
+ datetime2-finnish-utf8.ldf, datetime2-finnish-ascii.ldf and
+ datetime2-finnish.ldf.
+
+\endpreamble
+
+\askforoverwritefalse
+
+\generate
+{%
+ \file
+ {datetime2-finnish-utf8.ldf}%
+ {%
+ \usepreamble\defaultpreamble
+ \usepostamble\defaultpostamble
+ \from{datetime2-finnish.dtx}{datetime2-finnish-utf8.ldf,package}%
+ }%
+}
+
+\generate
+{%
+ \file
+ {datetime2-finnish-ascii.ldf}%
+ {%
+ \usepreamble\defaultpreamble
+ \usepostamble\defaultpostamble
+ \from{datetime2-finnish.dtx}{datetime2-finnish-ascii.ldf,package}%
+ }%
+}
+
+\generate
+{%
+ \file
+ {datetime2-finnish.ldf}%
+ {%
+ \usepreamble\defaultpreamble
+ \usepostamble\defaultpostamble
+ \from{datetime2-finnish.dtx}{datetime2-finnish.ldf,package}%
+ }%
+}
+
+\endbatchfile
+
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-finnish/datetime2-finnish.pdf b/macros/latex/contrib/datetime2-contrib/datetime2-finnish/datetime2-finnish.pdf
new file mode 100644
index 0000000000..2b2ce7b905
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-finnish/datetime2-finnish.pdf
Binary files differ
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-french/README b/macros/latex/contrib/datetime2-contrib/datetime2-french/README
new file mode 100644
index 0000000000..14ddb2cc9d
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-french/README
@@ -0,0 +1,55 @@
+French Language Module for datetime2 Package
+
+Author: Nicola L. C. Talbot (inactive)
+ Paul A. Patience <pap@papatience.com>
+
+Licence: LPPL
+
+Required Packages: datetime2, tracklang
+
+Example usage:
+
+\documentclass{article}
+\usepackage[french]{datetime2}
+\begin{document}
+\today
+\end{document}
+
+\documentclass[french]{article}
+\usepackage{babel}
+\usepackage[useregional]{datetime2}
+\begin{document}
+\today
+\end{document}
+
+\documentclass{article}
+\usepackage{polyglossia}
+\setmainlanguage{french}
+\usepackage[french]{datetime2}
+\begin{document}
+\today
+\end{document}
+
+INSTALLATION
+============
+
+xelatex datetime2-french.ins
+
+Move all *.ldf files to
+TEXMF/tex/latex/datetime2-contrib/datetime2-french/
+
+Documentation:
+
+xelatex datetime2-french.dtx
+makeindex -s gind.ist datetime2-french.idx
+makeindex -s gglo.ist -o datetime2-french.gls datetime2-french.glo
+xelatex datetime2-french.dtx
+xelatex datetime2-french.dtx
+
+Move datetime2-french.pdf and README to
+TEXMF/doc/latex/datetime2-contrib/datetime2-french/
+
+This material is subject to the LaTeX Project Public License.
+See http://www.ctan.org/license/lppl1.3 for the details of that
+license.
+
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-french/datetime2-french-test-luatex.pdf b/macros/latex/contrib/datetime2-contrib/datetime2-french/datetime2-french-test-luatex.pdf
new file mode 100644
index 0000000000..2e34ee8a36
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-french/datetime2-french-test-luatex.pdf
Binary files differ
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-french/datetime2-french-test-luatex.tex b/macros/latex/contrib/datetime2-contrib/datetime2-french/datetime2-french-test-luatex.tex
new file mode 100644
index 0000000000..29b78f3a1e
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-french/datetime2-french-test-luatex.tex
@@ -0,0 +1,9 @@
+% arara: lualatex
+\documentclass{article}
+
+\usepackage{fontspec}
+\usepackage{polyglossia}
+\setdefaultlanguage{french}
+\setotherlanguage{english}
+
+\input{datetime2-french-test}
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-french/datetime2-french-test-pdftex.pdf b/macros/latex/contrib/datetime2-contrib/datetime2-french/datetime2-french-test-pdftex.pdf
new file mode 100644
index 0000000000..5f9ee14cce
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-french/datetime2-french-test-pdftex.pdf
Binary files differ
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-french/datetime2-french-test-pdftex.tex b/macros/latex/contrib/datetime2-contrib/datetime2-french/datetime2-french-test-pdftex.tex
new file mode 100644
index 0000000000..e36851b8b7
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-french/datetime2-french-test-pdftex.tex
@@ -0,0 +1,8 @@
+% arara: pdflatex
+\documentclass[english,french]{article}
+
+\usepackage[utf8]{inputenc}
+\usepackage[T1]{fontenc}
+\usepackage[english,main=french]{babel}
+
+\input{datetime2-french-test}
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-french/datetime2-french-test-xetex.pdf b/macros/latex/contrib/datetime2-contrib/datetime2-french/datetime2-french-test-xetex.pdf
new file mode 100644
index 0000000000..8b9342ccd9
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-french/datetime2-french-test-xetex.pdf
Binary files differ
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-french/datetime2-french-test-xetex.tex b/macros/latex/contrib/datetime2-contrib/datetime2-french/datetime2-french-test-xetex.tex
new file mode 100644
index 0000000000..36874a42ec
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-french/datetime2-french-test-xetex.tex
@@ -0,0 +1,9 @@
+% arara: xelatex
+\documentclass{article}
+
+\usepackage{fontspec}
+\usepackage{polyglossia}
+\setdefaultlanguage{french}
+\setotherlanguage{english}
+
+\input{datetime2-french-test}
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-french/datetime2-french-test.tex b/macros/latex/contrib/datetime2-contrib/datetime2-french/datetime2-french-test.tex
new file mode 100644
index 0000000000..3de529d56a
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-french/datetime2-french-test.tex
@@ -0,0 +1,30 @@
+\usepackage[en-GB,en-US]{datetime2}
+
+\newcommand*{\teststyle}[1]{%
+ \DTMsetstyle{#1}
+ \texttt{#1}:\par
+ \DTMnow\par
+ \DTMNow\par
+}
+
+\newcommand*{\testall}[1]{%
+ \DTMlangsetup*{#1}
+ \texttt{#1}:\par
+ \teststyle{default}
+ \teststyle{iso}
+ \teststyle{english}
+ \teststyle{en-GB}
+ \teststyle{en-GB-numeric}
+ \teststyle{en-US}
+ \teststyle{en-US-numeric}
+ \teststyle{french}
+ \teststyle{french-numeric}
+}
+
+\begin{document}
+
+\testall{showdayofmonth=true,abbr=false}
+\testall{showdayofmonth=false}
+\testall{abbr=true}
+
+\end{document}
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-french/datetime2-french.dtx b/macros/latex/contrib/datetime2-contrib/datetime2-french/datetime2-french.dtx
new file mode 100644
index 0000000000..ffcce39e15
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-french/datetime2-french.dtx
@@ -0,0 +1,1145 @@
+%\iffalse
+%<*package>
+%% \CharacterTable
+%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+%% Digits \0\1\2\3\4\5\6\7\8\9
+%% Exclamation \! Double quote \" Hash (number) \#
+%% Dollar \$ Percent \% Ampersand \&
+%% Acute accent \' Left paren \( Right paren \)
+%% Asterisk \* Plus \+ Comma \,
+%% Minus \- Point \. Solidus \/
+%% Colon \: Semicolon \; Less than \<
+%% Equals \= Greater than \> Question mark \?
+%% Commercial at \@ Left bracket \[ Backslash \\
+%% Right bracket \] Circumflex \^ Underscore \_
+%% Grave accent \` Left brace \{ Vertical bar \|
+%% Right brace \} Tilde \~}
+%</package>
+%\fi
+% \iffalse
+% Doc-Source file to use with LaTeX2e
+% Copyright (C) 2015 Nicola Talbot, all rights reserved.
+% Copyright (C) 2017 Paul A. Patience <pap@papatience.com>, all rights reserved.
+% \fi
+% \iffalse
+%<*driver>
+\documentclass{ltxdoc}
+
+\usepackage{alltt}
+\usepackage{graphicx}
+\usepackage[utf8]{inputenc}
+\usepackage[T1]{fontenc}
+\usepackage[colorlinks,
+ bookmarks,
+ hyperindex=false,
+ pdfauthor={Nicola L.C. Talbot and Paul A. Patience},
+ pdftitle={datetime2.sty French Module}]{hyperref}
+
+
+\CheckSum{580}
+
+\renewcommand*{\usage}[1]{\hyperpage{#1}}
+\renewcommand*{\main}[1]{\hyperpage{#1}}
+\IndexPrologue{\section*{\indexname}\markboth{\indexname}{\indexname}}
+\setcounter{IndexColumns}{2}
+
+\newcommand*{\sty}[1]{\textsf{#1}}
+\newcommand*{\opt}[1]{\texttt{#1}\index{#1=\texttt{#1}|main}}
+
+\RecordChanges
+\PageIndex
+\CodelineNumbered
+
+\begin{document}
+\DocInput{datetime2-french.dtx}
+\end{document}
+%</driver>
+%\fi
+%
+%\MakeShortVerb{"}
+%
+%\title{French Module for datetime2 Package}
+%\author{Nicola L. C. Talbot (inactive) \\
+% Paul A. Patience\thanks{E-mail: pap@papatience.com}}
+%\date{2017-04-08 (v1.02)}
+%\maketitle
+%
+%\begin{abstract}
+%This is the French language module for the \sty{datetime2}
+%package. If you want to use the settings in this module you must
+%install it in addition to installing \sty{datetime2}. If you use
+%\sty{babel} or \sty{polyglossia}, you will need this module to
+%prevent them from redefining \cs{today}. The \sty{datetime2}
+% \opt{useregional} setting must be set to "text" or "numeric"
+% for the language styles to be set.
+% Alternatively, you can set the style in the document using
+% \cs{DTMsetstyle}, but this may be changed by \cs{date}\meta{language}
+% depending on the value of the \opt{useregional} setting.
+%\end{abstract}
+%
+%\StopEventually{%
+%\clearpage
+%\phantomsection
+%\addcontentsline{toc}{section}{Change History}%
+%\PrintChanges
+%\addcontentsline{toc}{section}{\indexname}%
+%\PrintIndex}
+%\section{The Code}
+%\iffalse
+% \begin{macrocode}
+%<*datetime2-french-utf8.ldf>
+% \end{macrocode}
+%\fi
+%\subsection{UTF-8}
+%This file contains the settings that use UTF-8 characters. This
+%file is loaded if XeLaTeX or LuaLaTeX are used. Please make sure
+%your text editor is set to UTF-8 if you want to view this code.
+%\changes{1.0}{2015-03-27}{Initial release}
+% Identify module
+% \begin{macrocode}
+\ProvidesDateTimeModule{french-utf8}[2017/04/08 v1.02]
+% \end{macrocode}
+%\begin{macro}{\DTMfrenchordinal}
+% \begin{macrocode}
+\ifdef\ier
+{%
+ \newcommand*{\DTMfrenchordinal}[1]{%
+ \number#1
+ \ifnum#1=1\DTMtexorpdfstring{\protect\ier}{er}\fi
+ }
+}%
+{%
+ \newcommand*{\DTMfrenchordinal}[1]{%
+ \number#1
+ \ifnum#1=1\DTMtexorpdfstring{\protect\textsuperscript{er}}{er}\fi
+ }
+}%
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMfrenchmonthname}
+% French month names.
+% \begin{macrocode}
+\newcommand*{\DTMfrenchmonthname}[1]{%
+ \ifcase#1
+ \or
+ janvier%
+ \or
+ fƩvrier%
+ \or
+ mars%
+ \or
+ avril%
+ \or
+ mai%
+ \or
+ juin%
+ \or
+ juillet%
+ \or
+ aoƻt%
+ \or
+ septembre%
+ \or
+ octobre%
+ \or
+ novembre%
+ \or
+ dƩcembre%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMfrenchMonthname}
+% As above but start with a capital.
+% \begin{macrocode}
+\newcommand*{\DTMfrenchMonthname}[1]{%
+ \ifcase#1
+ \or
+ Janvier%
+ \or
+ FĆ©vrier%
+ \or
+ Mars%
+ \or
+ Avril%
+ \or
+ Mai%
+ \or
+ Juin%
+ \or
+ Juillet%
+ \or
+ Aoƻt%
+ \or
+ Septembre%
+ \or
+ Octobre%
+ \or
+ Novembre%
+ \or
+ DĆ©cembre%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMfrenchshortmonthname}
+% Abbreviated French month names.
+%\changes{1.01}{2017-04-08}{Add abbreviated month names}
+% \begin{macrocode}
+\newcommand*{\DTMfrenchshortmonthname}[1]{%
+ \ifcase#1
+ \or
+ janv.%
+ \or
+ fƩvr.%
+ \or
+ mars%
+ \or
+ avr.%
+ \or
+ mai%
+ \or
+ juin%
+ \or
+ juill.%
+ \or
+ aoƻt%
+ \or
+ sept.%
+ \or
+ oct.%
+ \or
+ nov.%
+ \or
+ dƩc.%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMfrenchshortMonthname}
+% As above but start with a capital.
+% \begin{macrocode}
+\newcommand*{\DTMfrenchshortMonthname}[1]{%
+ \ifcase#1
+ \or
+ Janv.%
+ \or
+ FĆ©vr.%
+ \or
+ Mars%
+ \or
+ Avr.%
+ \or
+ Mai%
+ \or
+ Juin%
+ \or
+ Juill.%
+ \or
+ Aoƻt%
+ \or
+ Sept.%
+ \or
+ Oct.%
+ \or
+ Nov.%
+ \or
+ DĆ©c.%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMfrenchweekdayname}
+% French day of week names.
+% \begin{macrocode}
+\newcommand*{\DTMfrenchweekdayname}[1]{%
+ \ifcase#1
+ lundi%
+ \or
+ mardi%
+ \or
+ mercredi%
+ \or
+ jeudi%
+ \or
+ vendredi%
+ \or
+ samedi%
+ \or
+ dimanche%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMfrenchWeekdayname}
+% As above but start with a capital.
+% \begin{macrocode}
+\newcommand*{\DTMfrenchWeekdayname}[1]{%
+ \ifcase#1
+ Lundi%
+ \or
+ Mardi%
+ \or
+ Mercredi%
+ \or
+ Jeudi%
+ \or
+ Vendredi%
+ \or
+ Samedi%
+ \or
+ Dimanche%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMfrenchshortweekdayname}
+% French abbreviated day of week names.
+%\changes{1.01}{2017-04-08}{Add abbreviated day of week names}
+% \begin{macrocode}
+\newcommand*{\DTMfrenchshortweekdayname}[1]{%
+ \ifcase#1
+ lun.%
+ \or
+ mar.%
+ \or
+ mer.%
+ \or
+ jeu.%
+ \or
+ ven.%
+ \or
+ sam.%
+ \or
+ dim.%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMfrenchshortWeekdayname}
+% As above but start with a capital.
+% \begin{macrocode}
+\newcommand*{\DTMfrenchshortWeekdayname}[1]{%
+ \ifcase#1
+ Lun.%
+ \or
+ Mar.%
+ \or
+ Mer.%
+ \or
+ Jeu.%
+ \or
+ Ven.%
+ \or
+ Sam.%
+ \or
+ Dim.%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMfrenchmidnight}
+% \begin{macrocode}
+\newcommand*\DTMfrenchmidnight{minuit}%
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMfrenchnoon}
+% \begin{macrocode}
+\newcommand*\DTMfrenchnoon{midi}%
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMfrenchtimesymsep}
+% \begin{macrocode}
+\newcommand*\DTMfrenchtimesymsep{\,}%
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMfrenchhoursym}
+% \begin{macrocode}
+\newcommand*\DTMfrenchhoursym{h}%
+% \end{macrocode}
+%\end{macro}
+%
+% This style ignores seconds.
+%\changes{1.01}{2017-04-08}{Add frenchalpha time style}
+% \begin{macrocode}
+\DTMnewtimestyle
+ {frenchalpha}% label
+ {%
+ \renewcommand*\DTMdisplaytime[3]{%
+ \ifnum##2=0
+ \ifnum##1=12
+ \DTMfrenchnoon
+ \else
+ \ifnum##1=0
+ \DTMfrenchmidnight
+ \else
+ \ifnum##1=24
+ \DTMfrenchmidnight
+ \else
+ \number##1
+ \DTMfrenchtimesymsep\DTMfrenchhoursym
+ \fi
+ \fi
+ \fi
+ \else
+ \ifnum##1=24
+ 0%
+ \else
+ \number##1
+ \fi
+ \DTMfrenchtimesymsep\DTMfrenchhoursym
+ \DTMfrenchtimesymsep\DTMtwodigits{##2}%
+ \fi
+ }%
+ }%
+% \end{macrocode}
+%
+%\iffalse
+% \begin{macrocode}
+%</datetime2-french-utf8.ldf>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*datetime2-french-ascii.ldf>
+% \end{macrocode}
+%\fi
+%\subsection{ASCII}
+%This file contains the settings that use \LaTeX\ commands for
+%non-ASCII characters. This should be input if neither XeLaTeX nor
+%LuaLaTeX are used. Even if the user has loaded \sty{inputenc} with
+%"utf8", this file should still be used not the
+%\texttt{datetime2-french-utf8.ldf} file as the non-ASCII
+%characters are made active in that situation and would need
+%protecting against expansion.
+%\changes{1.0}{2015-03-27}{Initial release}
+% Identify module
+% \begin{macrocode}
+\ProvidesDateTimeModule{french-ascii}[2017/04/08 v1.02]
+% \end{macrocode}
+%
+%\begin{macro}{\DTMfrenchordinal}
+% \begin{macrocode}
+\ifdef\ier
+{%
+ \newcommand*{\DTMfrenchordinal}[1]{%
+ \number#1
+ \ifnum#1=1\DTMtexorpdfstring{\protect\ier}{er}\fi
+ }
+}%
+{%
+ \newcommand*{\DTMfrenchordinal}[1]{%
+ \number#1
+ \ifnum#1=1\DTMtexorpdfstring{\protect\textsuperscript{er}}{er}\fi
+ }
+}%
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMfrenchmonthname}
+% French month names.
+% \begin{macrocode}
+\newcommand*{\DTMfrenchmonthname}[1]{%
+ \ifcase#1
+ \or
+ janvier%
+ \or
+ f\protect\'evrier%
+ \or
+ mars%
+ \or
+ avril%
+ \or
+ mai%
+ \or
+ juin%
+ \or
+ juillet%
+ \or
+ ao\protect\^ut%
+ \or
+ septembre%
+ \or
+ octobre%
+ \or
+ novembre%
+ \or
+ d\protect\'ecembre%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMfrenchMonthname}
+% As above but start with a capital.
+% \begin{macrocode}
+\newcommand*{\DTMfrenchMonthname}[1]{%
+ \ifcase#1
+ \or
+ Janvier%
+ \or
+ F\protect\'evrier%
+ \or
+ Mars%
+ \or
+ Avril%
+ \or
+ Mai%
+ \or
+ Juin%
+ \or
+ Juillet%
+ \or
+ Ao\protect\^ut%
+ \or
+ Septembre%
+ \or
+ Octobre%
+ \or
+ Novembre%
+ \or
+ D\protect\'ecembre%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMfrenchshortmonthname}
+% Abbreviated French month names.
+%\changes{1.01}{2017-04-08}{Add abbreviated month names}
+% \begin{macrocode}
+\newcommand*{\DTMfrenchshortmonthname}[1]{%
+ \ifcase#1
+ \or
+ janv.%
+ \or
+ f\protect\'evr.%
+ \or
+ mars%
+ \or
+ avr.%
+ \or
+ mai%
+ \or
+ juin%
+ \or
+ juill.%
+ \or
+ ao\protect\^ut%
+ \or
+ sept.%
+ \or
+ oct.%
+ \or
+ nov.%
+ \or
+ d\protect\'ec.%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMfrenchshortMonthname}
+% As above but start with a capital.
+% \begin{macrocode}
+\newcommand*{\DTMfrenchshortMonthname}[1]{%
+ \ifcase#1
+ \or
+ Janv.%
+ \or
+ F\protect\'evr.%
+ \or
+ Mars%
+ \or
+ Avr.%
+ \or
+ Mai%
+ \or
+ Juin%
+ \or
+ Juill.%
+ \or
+ Ao\protect\^ut%
+ \or
+ Sept.%
+ \or
+ Oct.%
+ \or
+ Nov.%
+ \or
+ D\protect\'ec.%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMfrenchweekdayname}
+% French day of week names.
+% \begin{macrocode}
+\newcommand*{\DTMfrenchweekdayname}[1]{%
+ \ifcase#1
+ lundi%
+ \or
+ mardi%
+ \or
+ mercredi%
+ \or
+ jeudi%
+ \or
+ vendredi%
+ \or
+ samedi%
+ \or
+ dimanche%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMfrenchWeekdayname}
+% As above but start with a capital.
+% \begin{macrocode}
+\newcommand*{\DTMfrenchWeekdayname}[1]{%
+ \ifcase#1
+ Lundi%
+ \or
+ Mardi%
+ \or
+ Mercredi%
+ \or
+ Jeudi%
+ \or
+ Vendredi%
+ \or
+ Samedi%
+ \or
+ Dimanche%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMfrenchshortweekdayname}
+% French abbreviated day of week names.
+%\changes{1.01}{2017-04-08}{Add abbreviated day of week names}
+% \begin{macrocode}
+\newcommand*{\DTMfrenchshortweekdayname}[1]{%
+ \ifcase#1
+ lun.%
+ \or
+ mar.%
+ \or
+ mer.%
+ \or
+ jeu.%
+ \or
+ ven.%
+ \or
+ sam.%
+ \or
+ dim.%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMfrenchshortWeekdayname}
+% As above but start with a capital.
+% \begin{macrocode}
+\newcommand*{\DTMfrenchshortWeekdayname}[1]{%
+ \ifcase#1
+ Lun.%
+ \or
+ Mar.%
+ \or
+ Mer.%
+ \or
+ Jeu.%
+ \or
+ Ven.%
+ \or
+ Sam.%
+ \or
+ Dim.%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMfrenchmidnight}
+% \begin{macrocode}
+\newcommand*\DTMfrenchmidnight{minuit}%
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMfrenchnoon}
+% \begin{macrocode}
+\newcommand*\DTMfrenchnoon{midi}%
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMfrenchtimesymsep}
+% \begin{macrocode}
+\newcommand*\DTMfrenchtimesymsep{\,}%
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMfrenchhoursym}
+% \begin{macrocode}
+\newcommand*\DTMfrenchhoursym{h}%
+% \end{macrocode}
+%\end{macro}
+%
+% This style ignores seconds.
+%\changes{1.01}{2017-04-08}{Add frenchalpha time style}
+% \begin{macrocode}
+\DTMnewtimestyle
+ {frenchalpha}% label
+ {%
+ \renewcommand*\DTMdisplaytime[3]{%
+ \ifnum##2=0
+ \ifnum##1=12
+ \DTMfrenchnoon
+ \else
+ \ifnum##1=0
+ \DTMfrenchmidnight
+ \else
+ \ifnum##1=24
+ \DTMfrenchmidnight
+ \else
+ \number##1
+ \DTMfrenchtimesymsep\DTMfrenchhoursym
+ \fi
+ \fi
+ \fi
+ \else
+ \ifnum##1=24
+ 0%
+ \else
+ \number##1
+ \fi
+ \DTMfrenchtimesymsep\DTMfrenchhoursym
+ \DTMfrenchtimesymsep\DTMtwodigits{##2}%
+ \fi
+ }%
+ }%
+% \end{macrocode}
+%
+%\iffalse
+% \begin{macrocode}
+%</datetime2-french-ascii.ldf>
+% \end{macrocode}
+%\fi
+%
+%\subsection{Main French Module (\texttt{datetime2-french.ldf})}
+%\changes{1.0}{2015-03-27}{Initial release}
+%
+%\iffalse
+% \begin{macrocode}
+%<*datetime2-french.ldf>
+% \end{macrocode}
+%\fi
+%
+% Identify Module
+% \begin{macrocode}
+\ProvidesDateTimeModule{french}[2017/04/08 v1.02]
+% \end{macrocode}
+% Need to find out if XeTeX or LuaTeX are being used.
+% \begin{macrocode}
+\RequirePackage{ifxetex,ifluatex}
+% \end{macrocode}
+% XeTeX and LuaTeX natively support UTF-8, so load
+% \texttt{french-utf8} if either of those engines are used
+% otherwise load \texttt{french-ascii}.
+% \begin{macrocode}
+\ifxetex
+ \RequireDateTimeModule{french-utf8}
+\else
+ \ifluatex
+ \RequireDateTimeModule{french-utf8}
+ \else
+ \RequireDateTimeModule{french-ascii}
+ \fi
+\fi
+% \end{macrocode}
+%
+% Define the \texttt{french} style.
+% The time style is the same as the "default" style
+% provided by \sty{datetime2}. This may need correcting.
+%
+% Allow the user a way of configuring the "french" and
+% "french-numeric" styles. This doesn't use the package wide
+% separators such as
+% \cs{dtm@datetimesep} in case other date formats are also required.
+%
+%\begin{macro}{\DTMfrenchdowdaysep}
+% The separator between the day of week name and the day of month
+% number for the text format.
+%\changes{1.01}{2017-04-08}{Add support for showdow}
+% \begin{macrocode}
+\newcommand*{\DTMfrenchdowdaysep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMfrenchdaymonthsep}
+% The separator between the day and month for the text format.
+%\changes{1.02}{2017-04-08}{Use non-breaking space}
+% \begin{macrocode}
+\newcommand*{\DTMfrenchdaymonthsep}{%
+ \DTMtexorpdfstring{\protect~}{\space}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMfrenchmonthyearsep}
+% The separator between the month and year for the text format.
+% \begin{macrocode}
+\newcommand*{\DTMfrenchmonthyearsep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMfrenchdatetimesep}
+% The separator between the date and time blocks in the full format
+% (either text or numeric).
+% \begin{macrocode}
+\newcommand*{\DTMfrenchdatetimesep}{,\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMfrenchtimezonesep}
+% The separator between the time and zone blocks in the full format
+% (either text or numeric).
+% \begin{macrocode}
+\newcommand*{\DTMfrenchtimezonesep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMfrenchdatesep}
+% The separator for the numeric date format.
+% \begin{macrocode}
+\newcommand*{\DTMfrenchdatesep}{/}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMfrenchtimesep}
+% The separator for the numeric time format.
+% \begin{macrocode}
+\newcommand*{\DTMfrenchtimesep}{:}
+% \end{macrocode}
+%\end{macro}
+%
+%Provide keys that can be used in \cs{DTMlangsetup} to set these
+%separators.
+% \begin{macrocode}
+\DTMdefkey{french}{dowdaysep}{\renewcommand*{\DTMfrenchdowdaysep}{#1}}
+\DTMdefkey{french}{daymonthsep}{\renewcommand*{\DTMfrenchdaymonthsep}{#1}}
+\DTMdefkey{french}{monthyearsep}{\renewcommand*{\DTMfrenchmonthyearsep}{#1}}
+\DTMdefkey{french}{datetimesep}{\renewcommand*{\DTMfrenchdatetimesep}{#1}}
+\DTMdefkey{french}{timezonesep}{\renewcommand*{\DTMfrenchtimezonesep}{#1}}
+\DTMdefkey{french}{datesep}{\renewcommand*{\DTMfrenchdatesep}{#1}}
+\DTMdefkey{french}{timesep}{\renewcommand*{\DTMfrenchtimesep}{#1}}
+% \end{macrocode}
+%
+% Define a boolean key that can switch between full and abbreviated
+% formats for the month and day of week names in the text format.
+%\changes{1.01}{2017-04-08}{Add support for abbr}
+% \begin{macrocode}
+\DTMdefboolkey{french}{abbr}[true]{}
+% \end{macrocode}
+% The default is the full name.
+% \begin{macrocode}
+\DTMsetbool{french}{abbr}{false}
+% \end{macrocode}
+%
+% Define a boolean key that determines if the time zone mappings
+% should be used.
+% \begin{macrocode}
+\DTMdefboolkey{french}{mapzone}[true]{}
+% \end{macrocode}
+% The default is to use mappings.
+% \begin{macrocode}
+\DTMsetbool{french}{mapzone}{true}
+% \end{macrocode}
+%
+% Define a boolean key that determines if the day of month should be
+% displayed.
+% \begin{macrocode}
+\DTMdefboolkey{french}{showdayofmonth}[true]{}
+% \end{macrocode}
+% The default is to show the day of month.
+% \begin{macrocode}
+\DTMsetbool{french}{showdayofmonth}{true}
+% \end{macrocode}
+%
+% Define a boolean key that determines if the year should be
+% displayed.
+% \begin{macrocode}
+\DTMdefboolkey{french}{showyear}[true]{}
+% \end{macrocode}
+% The default is to show the year.
+% \begin{macrocode}
+\DTMsetbool{french}{showyear}{true}
+% \end{macrocode}
+%
+% Define the "french" style.
+%\changes{1.01}{2017-04-08}{Add support for abbr and showdow}
+% \begin{macrocode}
+\DTMnewstyle
+ {french}% label
+ {% date style
+ \renewcommand*\DTMdisplaydate[4]{%
+ \ifDTMshowdow
+ \ifnum##4>-1
+ \DTMifbool{french}{abbr}%
+ {\DTMfrenchshortweekdayname{##4}}%
+ {\DTMfrenchweekdayname{##4}}%
+ \DTMfrenchdowdaysep
+ \fi
+ \fi
+ \DTMifbool{french}{showdayofmonth}%
+ {%
+ \DTMfrenchordinal{##3}%
+ \DTMfrenchdaymonthsep
+ }%
+ {}%
+ \DTMifbool{french}{abbr}%
+ {\DTMfrenchshortmonthname{##2}}%
+ {\DTMfrenchmonthname{##2}}%
+ \DTMifbool{french}{showyear}%
+ {%
+ \DTMfrenchmonthyearsep
+ \number##1 % space intended
+ }%
+ {}%
+ }%
+ \renewcommand*\DTMDisplaydate[4]{%
+ \ifDTMshowdow
+ \ifnum##4>-1
+ \DTMifbool{french}{abbr}%
+ {\DTMfrenchshortWeekdayname{##4}}%
+ {\DTMfrenchWeekdayname{##4}}%
+ \DTMfrenchdowdaysep
+ \DTMifbool{french}{showdayofmonth}%
+ {%
+ \DTMfrenchordinal{##3}%
+ \DTMfrenchdaymonthsep
+ }%
+ {}%
+ \DTMifbool{french}{abbr}%
+ {\DTMfrenchshortmonthname{##2}}%
+ {\DTMfrenchmonthname{##2}}%
+ \DTMifbool{french}{showyear}%
+ {%
+ \DTMfrenchmonthyearsep
+ \number##1 % space intended
+ }%
+ {}%
+ \else
+ \DTMifbool{french}{showdayofmonth}
+ {%
+ \DTMfrenchordinal{##3}%
+ \DTMfrenchdaymonthsep
+ \DTMifbool{french}{abbr}%
+ {\DTMfrenchshortmonthname{##2}}%
+ {\DTMfrenchmonthname{##2}}%
+ }%
+ {%
+ \DTMifbool{french}{abbr}%
+ {\DTMfrenchshortMonthname{##2}}%
+ {\DTMfrenchMonthname{##2}}%
+ }%
+ \DTMifbool{french}{showyear}%
+ {%
+ \DTMfrenchmonthyearsep
+ \number##1 % space intended
+ }%
+ {}%
+ \fi
+ \else
+ \DTMifbool{french}{showdayofmonth}
+ {%
+ \DTMfrenchordinal{##3}%
+ \DTMfrenchdaymonthsep
+ \DTMifbool{french}{abbr}%
+ {\DTMfrenchshortmonthname{##2}}%
+ {\DTMfrenchmonthname{##2}}%
+ }%
+ {%
+ \DTMifbool{french}{abbr}%
+ {\DTMfrenchshortMonthname{##2}}%
+ {\DTMfrenchMonthname{##2}}%
+ }%
+ \DTMifbool{french}{showyear}%
+ {%
+ \DTMfrenchmonthyearsep
+ \number##1 % space intended
+ }%
+ {}%
+ \fi
+ }%
+ }%
+ {% time style
+ \DTMsettimestyle{frenchalpha}%
+ }%
+ {% zone style
+ \DTMresetzones
+ \DTMfrenchzonemaps
+ \renewcommand*{\DTMdisplayzone}[2]{%
+ \DTMifbool{french}{mapzone}%
+ {\DTMusezonemapordefault{##1}{##2}}%
+ {%
+ \ifnum##1<0\else+\fi\DTMtwodigits{##1}%
+ \ifDTMshowzoneminutes\DTMfrenchtimesep\DTMtwodigits{##2}\fi
+ }%
+ }%
+ }%
+ {% full style
+ \renewcommand*{\DTMdisplay}[9]{%
+ \ifDTMshowdate
+ \DTMdisplaydate{##1}{##2}{##3}{##4}%
+ \DTMfrenchdatetimesep
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \DTMfrenchtimezonesep
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+ \renewcommand*{\DTMDisplay}[9]{%
+ \ifDTMshowdate
+ \DTMDisplaydate{##1}{##2}{##3}{##4}%
+ \DTMfrenchdatetimesep
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \DTMfrenchtimezonesep
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+ }%
+% \end{macrocode}
+%
+% Define numeric style.
+% \begin{macrocode}
+\DTMnewstyle
+ {french-numeric}% label
+ {% date style
+ \renewcommand*\DTMdisplaydate[4]{%
+ \DTMifbool{french}{showdayofmonth}%
+ {%
+ \number##3 % space intended
+ \DTMfrenchdatesep
+ }%
+ {}%
+ \number##2 % space intended
+ \DTMifbool{french}{showyear}%
+ {%
+ \DTMfrenchdatesep
+ \number##1 % space intended
+ }%
+ {}%
+ }%
+ \renewcommand*{\DTMDisplaydate}[4]{\DTMdisplaydate{##1}{##2}{##3}{##4}}%
+ }%
+ {% time style
+ \renewcommand*\DTMdisplaytime[3]{%
+ \number##1
+ \DTMfrenchtimesep\DTMtwodigits{##2}%
+ \ifDTMshowseconds\DTMfrenchtimesep\DTMtwodigits{##3}\fi
+ }%
+ }%
+ {% zone style
+ \DTMresetzones
+ \DTMfrenchzonemaps
+ \renewcommand*{\DTMdisplayzone}[2]{%
+ \DTMifbool{french}{mapzone}%
+ {\DTMusezonemapordefault{##1}{##2}}%
+ {%
+ \ifnum##1<0\else+\fi\DTMtwodigits{##1}%
+ \ifDTMshowzoneminutes\DTMfrenchtimesep\DTMtwodigits{##2}\fi
+ }%
+ }%
+ }%
+ {% full style
+ \renewcommand*{\DTMdisplay}[9]{%
+ \ifDTMshowdate
+ \DTMdisplaydate{##1}{##2}{##3}{##4}%
+ \DTMfrenchdatetimesep
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \DTMfrenchtimezonesep
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+ \renewcommand*{\DTMDisplay}{\DTMdisplay}%
+ }
+% \end{macrocode}
+%
+%\begin{macro}{\DTMfrenchzonemaps}
+% The time zone mappings are set through this command, which can be
+% redefined if extra mappings are required or mappings need to be
+% removed.
+% \begin{macrocode}
+\newcommand*{\DTMfrenchzonemaps}{%
+ \DTMdefzonemap{01}{00}{CET}%
+ \DTMdefzonemap{02}{00}{CEST}%
+}
+% \end{macrocode}
+%\end{macro}
+
+% Switch style according to the \opt{useregional} setting.
+% \begin{macrocode}
+\DTMifcaseregional
+{}% do nothing
+{\DTMsetstyle{french}}
+{\DTMsetstyle{french-numeric}}
+% \end{macrocode}
+%
+% Redefine \cs{datefrench} (or \cs{date}\meta{dialect}) to prevent
+% \sty{babel} from resetting \cs{today}. (For this to work,
+% \sty{babel} must already have been loaded if it's required.)
+% \begin{macrocode}
+\ifcsundef{date\CurrentTrackedDialect}
+{%
+ \ifundef\datefrench
+ {% do nothing
+ }%
+ {%
+ \def\datefrench{%
+ \DTMifcaseregional
+ {}% do nothing
+ {\DTMsetstyle{french}}%
+ {\DTMsetstyle{french-numeric}}%
+ }%
+ }%
+}%
+{%
+ \csdef{date\CurrentTrackedDialect}{%
+ \DTMifcaseregional
+ {}% do nothing
+ {\DTMsetstyle{french}}%
+ {\DTMsetstyle{french-numeric}}
+ }%
+}%
+% \end{macrocode}
+%\iffalse
+% \begin{macrocode}
+%</datetime2-french.ldf>
+% \end{macrocode}
+%\fi
+%\Finale
+\endinput
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-french/datetime2-french.ins b/macros/latex/contrib/datetime2-contrib/datetime2-french/datetime2-french.ins
new file mode 100644
index 0000000000..d685a6f8f2
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-french/datetime2-french.ins
@@ -0,0 +1,64 @@
+\input docstrip
+
+\preamble
+
+ datetime2-french.dtx
+ Copyright 2015 Nicola Talbot
+ Copyright 2017 Paul A. Patience <pap@papatience.com>
+
+ This work may be distributed and/or modified under the
+ conditions of the LaTeX Project Public License, either version 1.3
+ of this license or (at your option) any later version.
+ The latest version of this license is in
+ http://www.latex-project.org/lppl.txt
+ and version 1.3 or later is part of all distributions of LaTeX
+ version 2005/12/01 or later.
+
+ This work has the LPPL maintenance status `maintained'.
+
+ The Current Maintainer of this work is Paul A. Patience.
+
+ This work consists of the files datetime2-french.dtx and
+ datetime2-french.ins and the derived files
+ datetime2-french-utf8.ldf, datetime2-french-ascii.ldf and
+ datetime2-french.ldf.
+
+\endpreamble
+
+\askforoverwritefalse
+
+\generate
+{%
+ \file
+ {datetime2-french-utf8.ldf}%
+ {%
+ \usepreamble\defaultpreamble
+ \usepostamble\defaultpostamble
+ \from{datetime2-french.dtx}{datetime2-french-utf8.ldf,package}%
+ }%
+}
+
+\generate
+{%
+ \file
+ {datetime2-french-ascii.ldf}%
+ {%
+ \usepreamble\defaultpreamble
+ \usepostamble\defaultpostamble
+ \from{datetime2-french.dtx}{datetime2-french-ascii.ldf,package}%
+ }%
+}
+
+\generate
+{%
+ \file
+ {datetime2-french.ldf}%
+ {%
+ \usepreamble\defaultpreamble
+ \usepostamble\defaultpostamble
+ \from{datetime2-french.dtx}{datetime2-french.ldf,package}%
+ }%
+}
+
+\endbatchfile
+
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-french/datetime2-french.pdf b/macros/latex/contrib/datetime2-contrib/datetime2-french/datetime2-french.pdf
new file mode 100644
index 0000000000..713f7c01d7
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-french/datetime2-french.pdf
Binary files differ
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-galician/README b/macros/latex/contrib/datetime2-contrib/datetime2-galician/README
new file mode 100644
index 0000000000..e32e954771
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-galician/README
@@ -0,0 +1,57 @@
+Galician Language Module for datetime2 Package
+
+Author: Nicola L. C. Talbot (inactive)
+
+Licence: LPPL
+
+Required Packages: datetime2, tracklang
+
+This module is unmaintained. If you want to volunteer to take over
+the maintenance contact me at www.dickimaw-books.com/contact.html
+
+Example usage:
+
+\documentclass{article}
+\usepackage[galician]{datetime2}
+\begin{document}
+\today
+\end{document}
+
+\documentclass[galician]{article}
+\usepackage{babel}
+\usepackage[useregional]{datetime2}
+\begin{document}
+\today
+\end{document}
+
+\documentclass{article}
+\usepackage{polyglossia}
+\setmainlanguage{galician}
+\usepackage[galician]{datetime2}
+\begin{document}
+\today
+\end{document}
+
+INSTALLATION
+============
+
+xelatex datetime2-galician.ins
+
+Move all *.ldf files to
+TEXMF/tex/latex/datetime2-contrib/datetime2-galician/
+
+Documentation:
+
+xelatex datetime2-galician.dtx
+makeindex -s gind.ist datetime2-galician.idx
+makeindex -s gglo.ist -o datetime2-galician.gls datetime2-galician.glo
+xelatex datetime2-galician.dtx
+xelatex datetime2-galician.dtx
+
+Move datetime2-galician.pdf and README to
+TEXMF/doc/latex/datetime2-contrib/datetime2-galician/
+
+This material is subject to the LaTeX Project Public License.
+See http://www.ctan.org/license/lppl1.3 for the details of that
+license.
+
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-galician/datetime2-galician.dtx b/macros/latex/contrib/datetime2-contrib/datetime2-galician/datetime2-galician.dtx
new file mode 100644
index 0000000000..ed38ce7669
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-galician/datetime2-galician.dtx
@@ -0,0 +1,637 @@
+%\iffalse
+%<*package>
+%% \CharacterTable
+%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+%% Digits \0\1\2\3\4\5\6\7\8\9
+%% Exclamation \! Double quote \" Hash (number) \#
+%% Dollar \$ Percent \% Ampersand \&
+%% Acute accent \' Left paren \( Right paren \)
+%% Asterisk \* Plus \+ Comma \,
+%% Minus \- Point \. Solidus \/
+%% Colon \: Semicolon \; Less than \<
+%% Equals \= Greater than \> Question mark \?
+%% Commercial at \@ Left bracket \[ Backslash \\
+%% Right bracket \] Circumflex \^ Underscore \_
+%% Grave accent \` Left brace \{ Vertical bar \|
+%% Right brace \} Tilde \~}
+%</package>
+%\fi
+% \iffalse
+% Doc-Source file to use with LaTeX2e
+% Copyright (C) 2018 Nicola Talbot, all rights reserved.
+% (New maintainer add relevant lines here.)
+% \fi
+% \iffalse
+%<*driver>
+\documentclass{ltxdoc}
+
+\usepackage{alltt}
+\usepackage{graphicx}
+\usepackage{fontspec}
+\usepackage[colorlinks,
+ bookmarks,
+ hyperindex=false,
+ pdfauthor={Nicola L.C. Talbot},
+ pdftitle={datetime2.sty Galician Module}]{hyperref}
+
+\setmainfont{Liberation Serif}
+\setmonofont{Liberation Mono}
+
+\CheckSum{261}
+
+\renewcommand*{\usage}[1]{\hyperpage{#1}}
+\renewcommand*{\main}[1]{\hyperpage{#1}}
+\IndexPrologue{\section*{\indexname}\markboth{\indexname}{\indexname}}
+\setcounter{IndexColumns}{2}
+
+\newcommand*{\sty}[1]{\textsf{#1}}
+\newcommand*{\opt}[1]{\texttt{#1}\index{#1=\texttt{#1}|main}}
+
+\RecordChanges
+\PageIndex
+\CodelineNumbered
+
+\begin{document}
+\DocInput{datetime2-galician.dtx}
+\end{document}
+%</driver>
+%\fi
+%
+%\MakeShortVerb{"}
+%
+%\title{Galician Module for datetime2 Package}
+%\author{Nicola L. C. Talbot (inactive)}
+%\date{2018-04-13 (v1.1)}
+%\maketitle
+%
+%This module is currently unmaintained and may be subject to change.
+%If you want to volunteer to take over maintanance, contact me at
+%\url{http://www.dickimaw-books.com/contact.html}
+%
+%\begin{abstract}
+%This is the Galician language module for the \sty{datetime2}
+%package. If you want to use the settings in this module you must
+%install it in addition to installing \sty{datetime2}. If you use
+%\sty{babel} or \sty{polyglossia}, you will need this module to
+%prevent them from redefining \cs{today}. The \sty{datetime2}
+% \opt{useregional} setting must be set to "text" or "numeric"
+% for the language styles to be set.
+% Alternatively, you can set the style in the document using
+% \cs{DTMsetstyle}, but this may be changed by \cs{date}\meta{language}
+% depending on the value of the \opt{useregional} setting.
+%\end{abstract}
+%
+%I've copied the date style from \texttt{babel-galician}'s \cs{today}.
+%
+%I don't know if these settings are correct as I can't speak Galician.
+%In particular, I don't know if the "galician" time style is
+%correct. Currently this just uses the "default" time style. Please
+%be aware that this may change. Whoever takes over maintanance
+%of this module may can change it as appropriate.
+%
+%The new maintainer should add the line:
+%\begin{verbatim}
+% The Current Maintainer of this work is Name.
+%\end{verbatim}
+%to the preamble part in \texttt{datetime2-galician.ins} where Name
+%is the name of the maintainer(s) and replace
+%the `inactive' status to `maintained'.
+%
+%Currently there is only a regionless style.
+%
+%\StopEventually{%
+%\clearpage
+%\phantomsection
+%\addcontentsline{toc}{section}{Change History}%
+%\PrintChanges
+%\addcontentsline{toc}{section}{\indexname}%
+%\PrintIndex}
+%\section{The Code}
+%\iffalse
+% \begin{macrocode}
+%<*datetime2-galician-utf8.ldf>
+% \end{macrocode}
+%\fi
+%\subsection{UTF-8}
+%This file contains the settings that use UTF-8 characters. This
+%file is loaded if XeLaTeX or LuaLaTeX are used. Please make sure
+%your text editor is set to UTF-8 if you want to view this code.
+%\changes{1.0}{2015-03-30}{Initial release}
+% Identify module
+% \begin{macrocode}
+\ProvidesDateTimeModule{galician-utf8}[2018/04/13 v1.1]
+% \end{macrocode}
+%\begin{macro}{\DTMgalicianordinal}
+% \begin{macrocode}
+\newcommand*{\DTMgalicianordinal}[1]{%
+ \number#1
+}
+% \end{macrocode}
+%\end{macro}
+%
+%
+%\begin{macro}{\DTMgalicianmonthname}
+% Galician month names.
+% \begin{macrocode}
+\newcommand*{\DTMgalicianmonthname}[1]{%
+ \ifcase#1
+ \or
+ xaneiro%
+ \or
+ febreiro%
+ \or
+ marzo%
+ \or
+ abril%
+ \or
+ maio%
+ \or
+ xuƱo%
+ \or
+ xullo%
+ \or
+ agosto%
+ \or
+ setembro%
+ \or
+ outubro%
+ \or
+ novembro%
+ \or
+ decembro%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMgalicianMonthname}
+% As above but capitalize.
+% \begin{macrocode}
+\newcommand*{\DTMgalicianMonthname}[1]{%
+ \ifcase#1
+ \or
+ Xaneiro%
+ \or
+ Febreiro%
+ \or
+ Marzo%
+ \or
+ Abril%
+ \or
+ Maio%
+ \or
+ XuƱo%
+ \or
+ Xullo%
+ \or
+ Agosto%
+ \or
+ Setembro%
+ \or
+ Outubro%
+ \or
+ Novembro%
+ \or
+ Decembro%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%If abbreviated dates are supported, short month names should be
+%likewise provided.
+%
+%\iffalse
+% \begin{macrocode}
+%</datetime2-galician-utf8.ldf>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*datetime2-galician-ascii.ldf>
+% \end{macrocode}
+%\fi
+%\subsection{ASCII}
+%This file contains the settings that use \LaTeX\ commands for
+%non-ASCII characters. This should be input if neither XeLaTeX nor
+%LuaLaTeX are used. Even if the user has loaded \sty{inputenc} with
+%"utf8", this file should still be used not the
+%\texttt{datetime2-galician-utf8.ldf} file as the non-ASCII
+%characters are made active in that situation and would need
+%protecting against expansion.
+%\changes{1.0}{2015-03-30}{Initial release}
+% Identify module
+% \begin{macrocode}
+\ProvidesDateTimeModule{galician-ascii}[2018/04/13 v1.1]
+% \end{macrocode}
+%
+%If abbreviated dates are supported, short month names should be
+%likewise provided.
+%\begin{macro}{\DTMgalicianordinal}
+% \begin{macrocode}
+\newcommand*{\DTMgalicianordinal}[1]{%
+ \number#1
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMgalicianmonthname}
+% Galician month names.
+% \begin{macrocode}
+\newcommand*{\DTMgalicianmonthname}[1]{%
+ \ifcase#1
+ \or
+ xaneiro%
+ \or
+ febreiro%
+ \or
+ marzo%
+ \or
+ abril%
+ \or
+ maio%
+ \or
+ xu\protect\~no%
+ \or
+ xullo%
+ \or
+ agosto%
+ \or
+ setembro%
+ \or
+ outubro%
+ \or
+ novembro%
+ \or
+ decembro%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMgalicianMonthname}
+% As above but capitalize.
+% \begin{macrocode}
+\newcommand*{\DTMgalicianMonthname}[1]{%
+ \ifcase#1
+ \or
+ Xaneiro%
+ \or
+ Febreiro%
+ \or
+ Marzo%
+ \or
+ Abril%
+ \or
+ Maio%
+ \or
+ Xu\protect\~no%
+ \or
+ Xullo%
+ \or
+ Agosto%
+ \or
+ Setembro%
+ \or
+ Outubro%
+ \or
+ Novembro%
+ \or
+ Decembro%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%
+%\iffalse
+% \begin{macrocode}
+%</datetime2-galician-ascii.ldf>
+% \end{macrocode}
+%\fi
+%
+%\subsection{Main Galician Module (\texttt{datetime2-galician.ldf})}
+%\changes{1.0}{2015-03-30}{Initial release}
+%
+%\iffalse
+% \begin{macrocode}
+%<*datetime2-galician.ldf>
+% \end{macrocode}
+%\fi
+%
+% Identify Module
+% \begin{macrocode}
+\ProvidesDateTimeModule{galician}[2018/04/13 v1.1]
+% \end{macrocode}
+% Need to find out if XeTeX or LuaTeX are being used.
+% \begin{macrocode}
+\RequirePackage{ifxetex,ifluatex}
+% \end{macrocode}
+% XeTeX and LuaTeX natively support UTF-8, so load
+% \texttt{galician-utf8} if either of those engines are used
+% otherwise load \texttt{galician-ascii}.
+% \begin{macrocode}
+\ifxetex
+ \RequireDateTimeModule{galician-utf8}
+\else
+ \ifluatex
+ \RequireDateTimeModule{galician-utf8}
+ \else
+ \RequireDateTimeModule{galician-ascii}
+ \fi
+\fi
+% \end{macrocode}
+%
+% Define the \texttt{galician} style.
+% The time style is the same as the "default" style
+% provided by \sty{datetime2}. This may need correcting. For
+% example, if a 12 hour style similar to the "englishampm" (from the
+% "english-base" module) is required.
+%
+% Allow the user a way of configuring the "galician" and
+% "galician-numeric" styles. This doesn't use the package wide
+% separators such as
+% \cs{dtm@datetimesep} in case other date formats are also required.
+%\begin{macro}{\DTMgaliciandaymonthsep}
+% The separator between the day and month for the text format.
+% \begin{macrocode}
+\newcommand*{\DTMgaliciandaymonthsep}{%
+ \DTMtexorpdfstring{\protect~}{\space}%
+ de\space
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMgalicianmonthyearsep}
+% The separator between the month and year for the text format.
+% \begin{macrocode}
+\newcommand*{\DTMgalicianmonthyearsep}{%
+ \space de%
+ \DTMtexorpdfstring{\protect~}{\space}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMgaliciandatetimesep}
+% The separator between the date and time blocks in the full format
+% (either text or numeric).
+% \begin{macrocode}
+\newcommand*{\DTMgaliciandatetimesep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMgaliciantimezonesep}
+% The separator between the time and zone blocks in the full format
+% (either text or numeric).
+% \begin{macrocode}
+\newcommand*{\DTMgaliciantimezonesep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMgaliciandatesep}
+% The separator for the numeric date format.
+% \begin{macrocode}
+\newcommand*{\DTMgaliciandatesep}{/}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMgaliciantimesep}
+% The separator for the numeric time format.
+% \begin{macrocode}
+\newcommand*{\DTMgaliciantimesep}{:}
+% \end{macrocode}
+%\end{macro}
+%
+%Provide keys that can be used in \cs{DTMlangsetup} to set these
+%separators.
+% \begin{macrocode}
+\DTMdefkey{galician}{daymonthsep}{\renewcommand*{\DTMgaliciandaymonthsep}{#1}}
+\DTMdefkey{galician}{monthyearsep}{\renewcommand*{\DTMgalicianmonthyearsep}{#1}}
+\DTMdefkey{galician}{datetimesep}{\renewcommand*{\DTMgaliciandatetimesep}{#1}}
+\DTMdefkey{galician}{timezonesep}{\renewcommand*{\DTMgaliciantimezonesep}{#1}}
+\DTMdefkey{galician}{datesep}{\renewcommand*{\DTMgaliciandatesep}{#1}}
+\DTMdefkey{galician}{timesep}{\renewcommand*{\DTMgaliciantimesep}{#1}}
+% \end{macrocode}
+%
+% TODO: provide a boolean key to switch between full and abbreviated
+% formats if appropriate. (I don't know how the date should be
+% abbreviated.)
+%
+% Define a boolean key that determines if the time zone mappings
+% should be used.
+% \begin{macrocode}
+\DTMdefboolkey{galician}{mapzone}[true]{}
+% \end{macrocode}
+% The default is to use mappings.
+% \begin{macrocode}
+\DTMsetbool{galician}{mapzone}{true}
+% \end{macrocode}
+%
+% Define a boolean key that determines if the day of month should be
+% displayed.
+% \begin{macrocode}
+\DTMdefboolkey{galician}{showdayofmonth}[true]{}
+% \end{macrocode}
+% The default is to show the day of month.
+% \begin{macrocode}
+\DTMsetbool{galician}{showdayofmonth}{true}
+% \end{macrocode}
+%
+% Define a boolean key that determines if the year should be
+% displayed.
+% \begin{macrocode}
+\DTMdefboolkey{galician}{showyear}[true]{}
+% \end{macrocode}
+% The default is to show the year.
+% \begin{macrocode}
+\DTMsetbool{galician}{showyear}{true}
+% \end{macrocode}
+%
+% Define the "galician" style. (TODO: implement day of week?)
+% \begin{macrocode}
+\DTMnewstyle
+ {galician}% label
+ {% date style
+ \renewcommand*\DTMdisplaydate[4]{%
+ \DTMifbool{galician}{showdayofmonth}
+ {\DTMgalicianordinal{##3}\DTMgaliciandaymonthsep}%
+ {}%
+ \DTMgalicianmonthname{##2}%
+ \DTMifbool{galician}{showyear}%
+ {%
+ \DTMgalicianmonthyearsep
+ \number##1
+ }%
+ {}%
+ }%
+ \renewcommand*\DTMDisplaydate[4]{%
+ \DTMifbool{galician}{showdayofmonth}
+ {%
+ \DTMgalicianordinal{##3}\DTMgaliciandaymonthsep
+ \DTMgalicianmonthname{##2}%
+ }%
+ {%
+ \DTMgalicianMonthname{##2}%
+ }%
+ \DTMifbool{galician}{showyear}%
+ {%
+ \DTMgalicianmonthyearsep
+ \number##1
+ }%
+ {}%
+ }%
+ }%
+ {% time style (use default)
+ \DTMsettimestyle{default}%
+ }%
+ {% zone style
+ \DTMresetzones
+ \DTMgalicianzonemaps
+ \renewcommand*{\DTMdisplayzone}[2]{%
+ \DTMifbool{galician}{mapzone}%
+ {\DTMusezonemapordefault{##1}{##2}}%
+ {%
+ \ifnum##1<0\else+\fi\DTMtwodigits{##1}%
+ \ifDTMshowzoneminutes\DTMgaliciantimesep\DTMtwodigits{##2}\fi
+ }%
+ }%
+ }%
+ {% full style
+ \renewcommand*{\DTMdisplay}[9]{%
+ \ifDTMshowdate
+ \DTMdisplaydate{##1}{##2}{##3}{##4}%
+ \DTMgaliciandatetimesep
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \DTMgaliciantimezonesep
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+ \renewcommand*{\DTMDisplay}[9]{%
+ \ifDTMshowdate
+ \DTMDisplaydate{##1}{##2}{##3}{##4}%
+ \DTMgaliciandatetimesep
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \DTMgaliciantimezonesep
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+ }%
+% \end{macrocode}
+%
+% Define numeric style.
+% \begin{macrocode}
+\DTMnewstyle
+ {galician-numeric}% label
+ {% date style
+ \renewcommand*\DTMdisplaydate[4]{%
+ \DTMifbool{galician}{showdayofmonth}%
+ {%
+ \number##3 % space intended
+ \DTMgaliciandatesep
+ }%
+ {}%
+ \number##2 % space intended
+ \DTMifbool{galician}{showyear}%
+ {%
+ \DTMgaliciandatesep
+ \number##1 % space intended
+ }%
+ {}%
+ }%
+ \renewcommand*{\DTMDisplaydate}{\DTMdisplaydate}%
+ }%
+ {% time style
+ \renewcommand*\DTMdisplaytime[3]{%
+ \number##1
+ \DTMgaliciantimesep\DTMtwodigits{##2}%
+ \ifDTMshowseconds\DTMgaliciantimesep\DTMtwodigits{##3}\fi
+ }%
+ }%
+ {% zone style
+ \DTMresetzones
+ \DTMgalicianzonemaps
+ \renewcommand*{\DTMdisplayzone}[2]{%
+ \DTMifbool{galician}{mapzone}%
+ {\DTMusezonemapordefault{##1}{##2}}%
+ {%
+ \ifnum##1<0\else+\fi\DTMtwodigits{##1}%
+ \ifDTMshowzoneminutes\DTMgaliciantimesep\DTMtwodigits{##2}\fi
+ }%
+ }%
+ }%
+ {% full style
+ \renewcommand*{\DTMdisplay}[9]{%
+ \ifDTMshowdate
+ \DTMdisplaydate{##1}{##2}{##3}{##4}%
+ \DTMgaliciandatetimesep
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \DTMgaliciantimezonesep
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+ \renewcommand*{\DTMDisplay}{\DTMdisplay}%
+ }
+% \end{macrocode}
+%
+%\begin{macro}{\DTMgalicianzonemaps}
+% The time zone mappings are set through this command, which can be
+% redefined if extra mappings are required or mappings need to be
+% removed. No default mappings are provided at the moment.
+% \begin{macrocode}
+\newcommand*{\DTMgalicianzonemaps}{%
+ \DTMdefzonemap{01}{00}{CET}%
+ \DTMdefzonemap{02}{00}{CEST}%
+}
+% \end{macrocode}
+%\end{macro}
+
+% Switch style according to the \opt{useregional} setting.
+% \begin{macrocode}
+\DTMifcaseregional
+{}% do nothing
+{\DTMsetstyle{galician}}
+{\DTMsetstyle{galician-numeric}}
+% \end{macrocode}
+%
+% Redefine \cs{dategalician} (or \cs{date}\meta{dialect}) to prevent
+% \sty{babel} from resetting \cs{today}. (For this to work,
+% \sty{babel} must already have been loaded if it's required.)
+%\changes{1.1}{2018-04-13}{removed spurious space}
+% \begin{macrocode}
+\ifcsundef{date\CurrentTrackedDialect}
+{%
+ \ifundef\dategalician
+ {% do nothing
+ }%
+ {%
+ \def\dategalician{%
+ \DTMifcaseregional
+ {}% do nothing
+ {\DTMsetstyle{galician}}%
+ {\DTMsetstyle{galician-numeric}}%
+ }%
+ }%
+}%
+{%
+ \csdef{date\CurrentTrackedDialect}{%
+ \DTMifcaseregional
+ {}% do nothing
+ {\DTMsetstyle{galician}}%
+ {\DTMsetstyle{galician-numeric}}%
+ }%
+}%
+% \end{macrocode}
+%\iffalse
+% \begin{macrocode}
+%</datetime2-galician.ldf>
+% \end{macrocode}
+%\fi
+%\Finale
+\endinput
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-galician/datetime2-galician.ins b/macros/latex/contrib/datetime2-contrib/datetime2-galician/datetime2-galician.ins
new file mode 100644
index 0000000000..a0c5810dfd
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-galician/datetime2-galician.ins
@@ -0,0 +1,61 @@
+\input docstrip
+
+\preamble
+
+ datetime2-galician.dtx
+ Copyright 2018 Nicola Talbot
+
+ This work may be distributed and/or modified under the
+ conditions of the LaTeX Project Public License, either version 1.3
+ of this license of (at your option) any later version.
+ The latest version of this license is in
+ http://www.latex-project.org/lppl.txt
+ and version 1.3 or later is part of all distributions of LaTeX
+ version 2005/12/01 or later.
+
+ This work has the LPPL maintenance status `inactive'.
+
+ This work consists of the files datetime2-galician.dtx and
+ datetime2-galician.ins and the derived files
+ datetime2-galician-utf8.ldf, datetime2-galician-ascii.ldf and
+ datetime2-galician.ldf.
+
+\endpreamble
+
+\askforoverwritefalse
+
+\generate
+{%
+ \file
+ {datetime2-galician-utf8.ldf}%
+ {%
+ \usepreamble\defaultpreamble
+ \usepostamble\defaultpostamble
+ \from{datetime2-galician.dtx}{datetime2-galician-utf8.ldf,package}%
+ }%
+}
+
+\generate
+{%
+ \file
+ {datetime2-galician-ascii.ldf}%
+ {%
+ \usepreamble\defaultpreamble
+ \usepostamble\defaultpostamble
+ \from{datetime2-galician.dtx}{datetime2-galician-ascii.ldf,package}%
+ }%
+}
+
+\generate
+{%
+ \file
+ {datetime2-galician.ldf}%
+ {%
+ \usepreamble\defaultpreamble
+ \usepostamble\defaultpostamble
+ \from{datetime2-galician.dtx}{datetime2-galician.ldf,package}%
+ }%
+}
+
+\endbatchfile
+
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-galician/datetime2-galician.pdf b/macros/latex/contrib/datetime2-contrib/datetime2-galician/datetime2-galician.pdf
new file mode 100644
index 0000000000..8e7d68a545
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-galician/datetime2-galician.pdf
Binary files differ
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-german/README.md b/macros/latex/contrib/datetime2-contrib/datetime2-german/README.md
new file mode 100644
index 0000000000..354d3adc4b
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-german/README.md
@@ -0,0 +1,31 @@
+# datetime2-german
+German Language Module for `datetime2` Package
+
+Authors: Nicola L. C. Talbot (inactive), Sebastian Friedl
+
+Licence: LPPL 1.3c
+
+Required Packages: `datetime2`, `tracklang`
+
+This module is maintained.
+Current maintainer is Sebastian Friedl.
+
+Thanks to JĆ¼rgen SpitzmĆ¼ller for his valuable advice while developing Version 2.0 of this module.
+
+## Installation
+
+`latex datetime2-german.ins`
+
+Move all `*.ldf` files to `TEXMF/tex/latex/datetime2-contrib/datetime2-german/`
+
+Documentation:
+
+ pdflatex datetime2-german.dtx
+ makeindex -s gind.ist datetime2-german.idx
+ makeindex -s gglo.ist -o datetime2-german.gls datetime2-german.glo
+ pdflatex datetime2-german.dtx
+ pdflatex datetime2-german.dtx
+
+Move `datetime2-german.pdf` and `README` to `TEXMF/doc/latex/datetime2-contrib/datetime2-german/`
+
+This material is subject to the LaTeX Project Public License. See [http://www.latex-project.org/lppl.txt](http://www.latex-project.org/lppl.txt "Show the current version of the LPPL") for the details of that license.
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-german/datetime2-german.dtx b/macros/latex/contrib/datetime2-contrib/datetime2-german/datetime2-german.dtx
new file mode 100644
index 0000000000..f992035f59
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-german/datetime2-german.dtx
@@ -0,0 +1,2242 @@
+%\iffalse
+%<*package>
+%% \CharacterTable
+%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+%% Digits \0\1\2\3\4\5\6\7\8\9
+%% Exclamation \! Double quote \" Hash (number) \#
+%% Dollar \$ Percent \% Ampersand \&
+%% Acute accent \' Left paren \( Right paren \)
+%% Asterisk \* Plus \+ Comma \,
+%% Minus \- Point \. Solidus \/
+%% Colon \: Semicolon \; Less than \<
+%% Equals \= Greater than \> Question mark \?
+%% Commercial at \@ Left bracket \[ Backslash \\
+%% Right bracket \] Circumflex \^ Underscore \_
+%% Grave accent \` Left brace \{ Vertical bar \|
+%% Right brace \} Tilde \~}
+%</package>
+%\fi
+% \iffalse
+% Doc-Source file to use with LaTeX2e
+% Copyright (C) 2015 Nicola Talbot, all rights reserved.
+% Copyright (C) 2017 Sebastian Friedl, all rights reserved.
+% \fi
+% \iffalse
+%<*driver>
+\documentclass{ltxdoc}
+
+\usepackage[utf8]{inputenc}
+\usepackage[T1]{fontenc}
+
+\usepackage{alltt}
+\usepackage{csquotes}
+\usepackage{graphicx}
+\usepackage{hologo}
+\usepackage{multicol}
+\usepackage[bookmarks,
+ hyperindex=false,
+ pdfauthor={Nicola L.C. Talbot, Sebastian Friedl},
+ pdftitle={datetime2.sty German Module}]{hyperref}
+\usepackage{verbatim}
+
+\usepackage[p,space]{erewhon}
+\usepackage{sourcesanspro}
+\usepackage{inconsolata}
+\usepackage[utopia,vvarbb]{newtxmath}
+
+\usepackage[left=4.50cm,right=2.75cm,top=3.25cm,bottom=2.75cm,nohead]{geometry}
+
+\parindent0pt
+
+\CheckSum{1085}
+
+\renewcommand*{\usage}[1]{\hyperpage{#1}}
+\renewcommand*{\main}[1]{\hyperpage{#1}}
+\IndexPrologue{\section*{\indexname}\markboth{\indexname}{\indexname}}
+\setcounter{IndexColumns}{2}
+
+\newcommand*{\sty}[1]{\textsf{#1}}
+\newcommand*{\opt}[1]{\texttt{#1}\index{#1=\texttt{#1}|main}}
+
+\RecordChanges
+\PageIndex
+\CodelineNumbered
+
+\begin{document}
+\DocInput{datetime2-german.dtx}
+\end{document}
+%</driver>
+%\fi
+%
+%\MakeShortVerb{"}
+%
+%\title{German Module for the \sty{datetime2} Package \\ {\large\url{https://github.com/SFr682k/datetime2-german}}}
+%\author{\begin{tabular}{cp{.05\textwidth}c} Nicola L. C. Talbot && Sebastian Friedl \\ (inactive) && {\normalsize\href{mailto:sfr682k@t-online.de}{\texttt{sfr682k@t-online.de}}} \end{tabular}}
+%\date{2017-11-13 (v2.1)}
+%\maketitle
+%
+%
+%\begin{abstract}
+% This is the German language module for the \sty{datetime2}
+% package. If you want to use the settings in this module you must
+% install it in addition to installing \sty{datetime2}. If you use
+% \sty{babel} or \sty{polyglossia}, you will need this module to
+% prevent them from redefining \cs{today}. The \sty{datetime2}
+% \opt{useregional} setting must be set to "text" or "numeric"
+% for the language styles to be set.
+% Alternatively, you can set the style in the document using
+% \cs{DTMsetstyle}, but this may be changed by \cs{date}\meta{language}
+% depending on the value of the \opt{useregional} setting.
+%\end{abstract}
+%
+%
+%
+% Currently there is a regionless style as well as variant styles ("de-DE", "de-AT" and "de-CH"). \\[\smallskipamount]
+% I'm only capable of German standard German. If I messed up anything in regards to format and/or spelling, or even a variant style with differences to the existing ones is missing, please create a feature request on GitHub or send me an e--mail. \\
+% I would be very grateful, if some examples and/or a list of the weekdays' and months' spelling is/are also provided.
+%
+% \bigskip
+% Thanks to JĆ¼rgen SpitzmĆ¼ller for his valuable advice while developing Version 2.0 of this module.
+%
+%
+% \clearpage
+% \tableofcontents
+% \clearpage
+%
+%
+%
+% \section{Installation}
+% Extract the language definition files first:
+% \begin{enumerate}
+% \item
+% Run \LaTeX\ over the file \texttt{datetime2-german.ins}: \\
+% \verb|latex datetime2-german.ins|
+% %
+% \item
+% Move all \texttt{*.ldf} files to \texttt{TEXMF/tex/latex/datetime2-contrib/datetime2-german/}
+% \end{enumerate}
+% Then, you can compile the documentation yourself by executing \\[\smallskipamount]
+%\verb|pdflatex datetime2-german.dtx| \\
+%\verb|makeindex -s gind.ist datetime2-german.idx| \\
+%\verb|makeindex -s gglo.ist -o datetime2-german.gls datetime2-german.glo| \\
+%\verb|pdflatex datetime2-german.dtx| \\
+%\verb|pdflatex datetime2-german.dtx| \\[\medskipamount]
+% or just use the precompiled documentation shipped with the sorce files. \\
+% In both cases, copy the files \texttt{datetime2-german.pdf} and \texttt{README.md} to \\
+% \texttt{TEXMF/doc/latex/datetime2-contrib/datetime2-german/}
+%
+%
+%
+% \clearpage
+% \part{The Documentation}
+% \section{Setting up \sty{datetime2} with a language module}
+% \subsection{Loading a language module}
+% \textit{There are three different ways to load the required language module. See the \sty{datetime2} documentation for further details}
+%
+% \medskip
+%
+% \textbf{Variant 1:} \\
+% Request the desired language module explicitly by passing the "german", "de-DE", "de-AT" or "de-CH" option to the \sty{datetime2} package: \\[\smallskipamount]
+%\verb|\documentclass{article}| \\
+%\verb|\usepackage[german]{datetime2}| \\
+%\verb|\begin{document}| \\
+%\verb|\today| \\
+%\verb|\end{document}| \\[\medskipamount]
+%
+% \textbf{Variant 2:} \\
+% Load \sty{babel} and pass the "german", "austrian" or "swissgerman" option to the \verb|\documentclass| command (or to \sty{babel} directly). If you now pass the \opt{useregional} option to \sty{datetime2}, the language module suitable to the one specified with \sty{babel} is loaded: \\[\smallskipamount]
+%\verb|\documentclass[german]{article}| \\
+%\verb|\usepackage{babel}| \\
+%\verb|\usepackage[useregional]{datetime2}| \\
+%\verb|\begin{document}| \\
+%\verb|\today| \\
+%\verb|\end{document}| \\[\medskipamount]
+%
+% \textbf{Variant 3:} \\
+% When using \sty{polyglossia}, you should request the desired language module by passing the "german", "de-DE", "de-AT" or "de-CH" option to the \sty{datetime2} package: \\[\smallskipamount]
+%\verb|\documentclass{article}| \\
+%\verb|\usepackage{polyglossia}| \\
+%\verb|\setmainlanguage{german}| \\
+%\verb|\usepackage[german]{datetime2}| \\
+%\verb|\begin{document}| \\
+%\verb|\today| \\
+%\verb|\end{document}|
+%
+%
+% \subsection{Other features}
+% \subsubsection{Showing the weekday}
+% All language modules shipped with \sty{datetime2-german} support showing the weekday. \\
+% To enable this feature, pass the \opt{showdow} option to the \sty{datetime2} package. \\
+% Please note, that this has no effect when using the "numeric" style of the "de-AT" variant.
+%
+% \subsubsection{Using abbreviated weekday and month names}
+% To enable abbreviated weekday and month names, use \verb|\DTMlangsetup[german]{abbr}|. \\
+% To disable them, use \verb|\DTMlangsetup[german]{abbr=false}|.
+%
+% \medskip
+% In both cases, replace "german" with the used variant style ("de-DE", "de-AT" or "de-CH"). \\
+% Please note, that this has no effect when using the "numeric" style of the "de-AT" variant.
+%
+%
+% \section{Style examples}
+% \subsection{Regionless style}
+% \begin{itemize}
+% \item Non--numeric style: \\
+% 3. Oktober 2017, 12:51:04 MESZ \\
+% 3. Okt. '17, 12:51:04 MESZ \hfill \textit{abbreviated version} \\
+% Dienstag, 3. Oktober 2017, 12:51:04 MESZ \hfill \textit{with \opt{showdow} option} \\
+% Di, 3. Okt. '17, 12:51:04 MESZ \hfill \textit{abbreviated version with \opt{showdow} option}
+% %
+% \item Numeric style: \\
+% 03.10.2017, 12:51:04 MESZ \\
+% 03.10.17, 12:51:04 MESZ \hfill \textit{abbreviated version} \\
+% Dienstag, 03.10.2017, 12:51:04 MESZ \hfill \textit{with \opt{showdow} option} \\
+% Di, 03.10.17, 12:51:04 MESZ \hfill \textit{abbreviated version with \opt{showdow} option}
+% \end{itemize}
+%
+%
+% \subsection{German style (\texttt{de-DE})}
+% \begin{itemize}
+% \item Non--numeric style: \\
+% 3. Oktober 2017, 12:51:04 MESZ \\
+% 3. Okt. '17, 12:51:04 MESZ \hfill \textit{abbreviated version} \\
+% Dienstag, 3. Oktober 2017, 12:51:04 MESZ \hfill \textit{with \opt{showdow} option} \\
+% Di, 3. Okt. '17, 12:51:04 MESZ \hfill \textit{abbreviated version with \opt{showdow} option}
+% %
+% \item Numeric style: \\
+% 03.10.2017, 12:51:04 MESZ \\
+% 03.10.17, 12:51:04 MESZ \hfill \textit{abbreviated version} \\
+% Dienstag, 03.10.2017, 12:51:04 MESZ \hfill \textit{with \opt{showdow} option} \\
+% Di, 03.10.17, 12:51:04 MESZ \hfill \textit{abbreviated version with \opt{showdow} option}
+% \end{itemize}
+%
+%
+% \subsection{Austrian style (\texttt{de-AT})}
+% \begin{itemize}
+% \item Non--numeric style: \\
+% 3. Oktober 2017, 12:51:04 MESZ \\
+% 3. Okt. 2017, 12:51:04 MESZ \hfill \textit{abbreviated version} \\
+% Dienstag, 3. Oktober 2017, 12:51:04 MESZ \hfill \textit{with \opt{showdow} option} \\
+% Di, 3. Okt. 2017, 12:51:04 MESZ \hfill \textit{abbreviated version with \opt{showdow} option}
+% %
+% \item Numeric style: \\
+% 2017-10-03, 12:51:04 MESZ
+% \end{itemize}
+%
+%
+% \subsection{Swiss style (\texttt{de-CH})}
+% \begin{itemize}
+% \item Non--numeric style: \\
+% 3. Oktober 2017, 12.51.04 Uhr MESZ \\
+% 3. Okt. 2017, 12.51.04 Uhr MESZ \hfill \textit{abbreviated version} \\
+% Dienstag, 3. Oktober 2017, 12.51.04 Uhr MESZ \hfill \textit{with \opt{showdow} option} \\
+% Di, 3. Okt. 2017, 12.51.04 Uhr MESZ \hfill \textit{abbreviated version with \opt{showdow} option}
+% %
+% \item Numeric style: \\
+% 03.10.2017, 12.51.04 Uhr MESZ \\
+% 03.10.17, 12.51.04 Uhr MESZ \hfill \textit{abbreviated version} \\
+% Dienstag, 03.10.2017, 12.51.04 Uhr MESZ \hfill \textit{with \opt{showdow} option} \\
+% Di, 03.10.17, 12.51.04 Uhr MESZ \hfill \textit{abbreviated version with \opt{showdow} option}
+% \end{itemize}
+%
+%
+%
+% \section{Further customization of styles}
+% There are a number of settings provided that can be used in \verb|\DTMlangsetup| to modify the date-time style. These are:
+% \begin{description}
+% \item["dowdaysep"]%
+% The separator between the day of week name and the day of month number.
+%
+% \item["daymonthsep"]%
+% The separator between the day and the month name
+%
+% \item["monthyearsep"]%
+% The separator between the month name and year
+%
+% \item["datesep"]%
+% The separator between the date numbers in the "numeric style"s
+%
+% \item["timesep"]%
+% The separator between hours, minutes and seconds
+%
+% \item["datetimesep"]%
+% The separator between the date and time for the full date-time format
+%
+% \item["timezonesep"]%
+% The separator between the time and zone for the full date-time format
+%
+% \item["abbr"]%
+% This is a boolean key. If "true", the month (and weekday name, if shown) is abbreviated.
+%
+% \item["mapzone"]%
+% This is a boolean key. If "true", the time zone mappings are applied.
+%
+% \item["showdayofmonth"]%
+% A boolean key that determines whether or not to show the day of the month
+%
+% \item["showyear"]%
+% A boolean key that determines whether or not to show the year
+%\end{description}
+%
+%
+% Although the keys listed here are \textit{defined} for all variant styles, it depends on \sty{datetime2}'s setup and the requested styles whether they're \textit{used}. \\
+% For more information about the \verb|\DTMlangsetup| command see the documentation of the main \sty{datetime2} package.
+%
+%
+% \section{License}
+% This material is subject to the \LaTeX\ Project Public License, Version 1.3c or later. \\
+% See the copyright headers of the single files for further details.
+%
+%
+%
+%\StopEventually{%
+%\clearpage
+%\phantomsection
+%\addcontentsline{toc}{section}{Change History}%
+%\PrintChanges
+%\addcontentsline{toc}{section}{\indexname}%
+%\PrintIndex}
+%\clearpage
+%\part{The Code}
+%\iffalse
+% \begin{macrocode}
+%<*datetime2-german-utf8.ldf>
+% \end{macrocode}
+%\fi
+%\section{Basic German module}
+% This module defines the \enquote{basic} German style, which contains the necessary vocab for all German localizations. \\
+% The date and time format is based on the "de-DE" variant.
+%
+%\subsection{Weekday and month names (UTF-8)}
+%This file contains the settings that use UTF-8 characters. This
+%file is loaded if \hologo{XeLaTeX} or \hologo{LuaLaTeX} are used. Please make sure
+%your text editor is set to UTF-8 if you want to view this code.
+%\changes{1.0}{2015-03-27}{Initial release}
+%
+% Identify module
+% \begin{macrocode}
+\ProvidesDateTimeModule{german-utf8}[2017/11/13 v2.1]
+% \end{macrocode}
+%\begin{macro}{\DTMgermanordinal}
+% \begin{macrocode}
+\newcommand*{\DTMgermanordinal}[1]{%
+ \number#1
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMgermanmonthname}
+% German month names.
+% \begin{macrocode}
+\newcommand*{\DTMgermanmonthname}[1]{%
+ \ifcase#1
+ \or
+ Januar%
+ \or
+ Februar%
+ \or
+ MƤrz%
+ \or
+ April%
+ \or
+ Mai%
+ \or
+ Juni%
+ \or
+ Juli%
+ \or
+ August%
+ \or
+ September%
+ \or
+ Oktober%
+ \or
+ November%
+ \or
+ Dezember%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMdeATmonthname}
+%\changes{2.0}{2017-10-03}{Austrian month names implemented}
+% Austrian German month names. Spot the difference :D
+% \begin{macrocode}
+\newcommand*{\DTMdeATmonthname}[1]{%
+ \ifcase#1
+ \or
+ JƤnner%
+ \or
+ Februar%
+ \or
+ MƤrz%
+ \or
+ April%
+ \or
+ Mai%
+ \or
+ Juni%
+ \or
+ Juli%
+ \or
+ August%
+ \or
+ September%
+ \or
+ Oktober%
+ \or
+ November%
+ \or
+ Dezember%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMgermanshortmonthname}
+% Abbreviated German month names.
+%\changes{1.2}{2017-09-10}{Short month names implemented}
+%\changes{2.0}{2017-10-03}{Short month names fixed}
+% \begin{macrocode}
+\newcommand*{\DTMgermanshortmonthname}[1]{%
+ \ifcase#1
+ \or
+ Jan.%
+ \or
+ Feb.%
+ \or
+ MƤrz%
+ \or
+ Apr.%
+ \or
+ Mai%
+ \or
+ Juni%
+ \or
+ Juli%
+ \or
+ Aug.%
+ \or
+ Sept.%
+ \or
+ Okt.%
+ \or
+ Nov.%
+ \or
+ Dez.%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMdeATshortmonthname}
+%\changes{2.0}{2017-10-03}{Austrian short month names implemented}
+% Abbreviated Austrian German month names.
+% \begin{macrocode}
+\newcommand*{\DTMdeATshortmonthname}[1]{%
+ \ifcase#1
+ \or
+ JƤn.%
+ \or
+ Feb.%
+ \or
+ MƤrz%
+ \or
+ Apr.%
+ \or
+ Mai%
+ \or
+ Juni%
+ \or
+ Juli%
+ \or
+ Aug.%
+ \or
+ Sept.%
+ \or
+ Okt.%
+ \or
+ Nov.%
+ \or
+ Dez.%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMdeCHshortmonthname}
+% Abbreviated Swiss German month names.
+%\changes{2.0}{2017-10-03}{Swiss German short month names implemented}
+% \begin{macrocode}
+\newcommand*{\DTMdeCHshortmonthname}[1]{%
+ \ifcase#1
+ \or
+ Jan.%
+ \or
+ Febr.%
+ \or
+ MƤrz%
+ \or
+ April%
+ \or
+ Mai%
+ \or
+ Juni%
+ \or
+ Juli%
+ \or
+ Aug.%
+ \or
+ Sept.%
+ \or
+ Okt.%
+ \or
+ Nov.%
+ \or
+ Dez.%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMgermanweekdayname}
+% Provides weekday names
+% \begin{macrocode}
+\newcommand*{\DTMgermanweekdayname}[1]{%
+ \ifcase#1
+ Montag%
+ \or
+ Dienstag%
+ \or
+ Mittwoch%
+ \or
+ Donnerstag%
+ \or
+ Freitag%
+ \or
+ Samstag%
+ \or
+ Sonntag%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMgermanshortweekdayname}
+%Provides abbreviated weekday names
+%\changes{1.2}{2017-09-10}{Short weekday names implemented}
+%\changes{2.0}{2017-10-03}{Short weekday names fixed}
+% \begin{macrocode}
+\newcommand*{\DTMgermanshortweekdayname}[1]{%
+ \ifcase#1
+ Mo%
+ \or
+ Di%
+ \or
+ Mi%
+ \or
+ Do%
+ \or
+ Fr%
+ \or
+ Sa%
+ \or
+ So%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\iffalse
+% \begin{macrocode}
+%</datetime2-german-utf8.ldf>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*datetime2-german-ascii.ldf>
+% \end{macrocode}
+%\fi
+%\subsection{Weekday and month names (ASCII)}
+%This file contains the settings that use \LaTeX\ commands for
+%non-ASCII characters. This should be input if neither \hologo{XeLaTeX} nor
+%\hologo{LuaLaTeX} are used. Even if the user has loaded \sty{inputenc} with
+%"utf8", this file should still be used not the
+%\texttt{datetime2-german-utf8.ldf} file as the non-ASCII
+%characters are made active in that situation and would need
+%protecting against expansion.
+%\changes{1.0}{2015-03-27}{Initial release}
+%
+% Identify module
+% \begin{macrocode}
+\ProvidesDateTimeModule{german-ascii}[2017/11/13 v2.1]
+% \end{macrocode}
+%
+%\begin{macro}{\DTMgermanordinal}
+% \begin{macrocode}
+\newcommand*{\DTMgermanordinal}[1]{%
+ \number#1
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMgermanmonthname}
+% German month names.
+% \begin{macrocode}
+\newcommand*{\DTMgermanmonthname}[1]{%
+ \ifcase#1
+ \or
+ Januar%
+ \or
+ Februar%
+ \or
+ M\protect\"arz%
+ \or
+ April%
+ \or
+ Mai%
+ \or
+ Juni%
+ \or
+ Juli%
+ \or
+ August%
+ \or
+ September%
+ \or
+ Oktober%
+ \or
+ November%
+ \or
+ Dezember%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMdeATmonthname}
+%\changes{2.0}{2017-10-03}{Austrian month names implemented}
+% Austrian German month names.
+% \begin{macrocode}
+\newcommand*{\DTMdeATmonthname}[1]{%
+ \ifcase#1
+ \or
+ J\protect\"anner%
+ \or
+ Februar%
+ \or
+ M\protect\"arz%
+ \or
+ April%
+ \or
+ Mai%
+ \or
+ Juni%
+ \or
+ Juli%
+ \or
+ August%
+ \or
+ September%
+ \or
+ Oktober%
+ \or
+ November%
+ \or
+ Dezember%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMgermanshortmonthname}
+% Abbreviated German month names.
+%\changes{1.2}{2017-09-10}{Short month names implemented}
+%\changes{2.0}{2017-10-03}{Short month names fixed}
+% \begin{macrocode}
+\newcommand*{\DTMgermanshortmonthname}[1]{%
+ \ifcase#1
+ \or
+ Jan.%
+ \or
+ Feb.%
+ \or
+ M\protect\"arz%
+ \or
+ Apr.%
+ \or
+ Mai%
+ \or
+ Juni%
+ \or
+ Juli%
+ \or
+ Aug.%
+ \or
+ Sept.%
+ \or
+ Okt.%
+ \or
+ Nov.%
+ \or
+ Dez.%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMdeATshortmonthname}
+%\changes{2.0}{2017-10-03}{Austrian short month names implemented}
+% Abbreviated Austrian German month names.
+% \begin{macrocode}
+\newcommand*{\DTMdeATshortmonthname}[1]{%
+ \ifcase#1
+ \or
+ J\protect\"an.%
+ \or
+ Feb.%
+ \or
+ M\protect\"arz%
+ \or
+ Apr.%
+ \or
+ Mai%
+ \or
+ Juni%
+ \or
+ Juli%
+ \or
+ Aug.%
+ \or
+ Sept.%
+ \or
+ Okt.%
+ \or
+ Nov.%
+ \or
+ Dez.%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMdeCHshortmonthname}
+% Abbreviated Swiss German month names.
+%\changes{2.0}{2017-10-03}{Swiss German short month names implemented}
+% \begin{macrocode}
+\newcommand*{\DTMdeCHshortmonthname}[1]{%
+ \ifcase#1
+ \or
+ Jan.%
+ \or
+ Febr.%
+ \or
+ M\protect\"arz%
+ \or
+ April%
+ \or
+ Mai%
+ \or
+ Juni%
+ \or
+ Juli%
+ \or
+ Aug.%
+ \or
+ Sept.%
+ \or
+ Okt.%
+ \or
+ Nov.%
+ \or
+ Dez.%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMgermanweekdayname}
+%Provides weekday names
+% \begin{macrocode}
+\newcommand*{\DTMgermanweekdayname}[1]{%
+ \ifcase#1
+ Montag%
+ \or
+ Dienstag%
+ \or
+ Mittwoch%
+ \or
+ Donnerstag%
+ \or
+ Freitag%
+ \or
+ Samstag%
+ \or
+ Sonntag%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMgermanshortweekdayname}
+%Provides abbreviated weekday names
+%\changes{1.2}{2017-09-10}{Short weekday names implemented}
+%\changes{2.0}{2017-10-03}{Short weekday names fixed}
+% \begin{macrocode}
+\newcommand*{\DTMgermanshortweekdayname}[1]{%
+ \ifcase#1
+ Mo%
+ \or
+ Di%
+ \or
+ Mi%
+ \or
+ Do%
+ \or
+ Fr%
+ \or
+ Sa%
+ \or
+ So%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\iffalse
+% \begin{macrocode}
+%</datetime2-german-ascii.ldf>
+% \end{macrocode}
+%\fi
+%
+%\subsection{Basic German Module (\texttt{datetime2-german.ldf})}
+%\changes{1.0}{2015-03-27}{Initial release}
+%
+%\iffalse
+% \begin{macrocode}
+%<*datetime2-german.ldf>
+% \end{macrocode}
+%\fi
+%
+% Identify Module
+% \begin{macrocode}
+\ProvidesDateTimeModule{german}[2017/11/13 v2.1]
+% \end{macrocode}
+% Need to find out if \hologo{XeTeX} or \hologo{LuaTeX} are being used.
+% \begin{macrocode}
+\RequirePackage{ifxetex,ifluatex}
+% \end{macrocode}
+% \hologo{XeTeX} and \hologo{LuaTeX} natively support UTF-8, so load
+% \texttt{german-utf8} if either of those engines are used
+% otherwise load \texttt{german-ascii}.
+% \begin{macrocode}
+\ifxetex
+ \RequireDateTimeModule{german-utf8}
+\else
+ \ifluatex
+ \RequireDateTimeModule{german-utf8}
+ \else
+ \RequireDateTimeModule{german-ascii}
+ \fi
+\fi
+% \end{macrocode}
+%
+% Define the \texttt{german} style.
+%
+% Allow the user a way of configuring the "german" and
+% "german-numeric" styles. This doesn't use the package wide
+% separators such as
+% \cs{dtm@datetimesep} in case other date formats are also required.
+%
+%\begin{macro}{\DTMgermandowdaysep}
+% The separator between weekday and day
+% \begin{macrocode}
+\newcommand*{\DTMgermandowdaysep}{,\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMgermandaymonthsep}
+% The separator between the day and month for the text format.
+% \begin{macrocode}
+\newcommand*{\DTMgermandaymonthsep}{.\DTMtexorpdfstring{\protect~}{\space}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMgermanmonthyearsep}
+% The separator between the month and year for the text format.
+% \begin{macrocode}
+\newcommand*{\DTMgermanmonthyearsep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMgermandatetimesep}
+% The separator between the date and time blocks in the full format
+% (either text or numeric).
+% \begin{macrocode}
+\newcommand*{\DTMgermandatetimesep}{,\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMgermantimezonesep}
+% The separator between the time and zone blocks in the full format
+% (either text or numeric).
+% \begin{macrocode}
+\newcommand*{\DTMgermantimezonesep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMgermandatesep}
+% The separator for the numeric date format.
+% \begin{macrocode}
+\newcommand*{\DTMgermandatesep}{.}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMgermantimesep}
+% The separator for the numeric time format.
+% \begin{macrocode}
+\newcommand*{\DTMgermantimesep}{:}
+% \end{macrocode}
+%\end{macro}
+%
+%Provide keys that can be used in \cs{DTMlangsetup} to set these
+%separators.
+% \begin{macrocode}
+\DTMdefkey{german}{dowdaysep}{\renewcommand*{\DTMgermandowdaysep}{#1}}
+\DTMdefkey{german}{daymonthsep}{\renewcommand*{\DTMgermandaymonthsep}{#1}}
+\DTMdefkey{german}{monthyearsep}{\renewcommand*{\DTMgermanmonthyearsep}{#1}}
+\DTMdefkey{german}{datetimesep}{\renewcommand*{\DTMgermandatetimesep}{#1}}
+\DTMdefkey{german}{timezonesep}{\renewcommand*{\DTMgermantimezonesep}{#1}}
+\DTMdefkey{german}{datesep}{\renewcommand*{\DTMgermandatesep}{#1}}
+\DTMdefkey{german}{timesep}{\renewcommand*{\DTMgermantimesep}{#1}}
+% \end{macrocode}
+%
+%
+% Define a boolean key that can switch between full and abbreviated formats for
+% the month and day of week names in the text format.
+% \begin{macrocode}
+\DTMdefboolkey{german}{abbr}[true]{}
+% \end{macrocode}
+%
+% The default is full name
+% \begin{macrocode}
+\DTMsetbool{german}{abbr}{false}
+% \end{macrocode}
+%
+% Define a boolean key that determines if the time zone mappings
+% should be used.
+% \begin{macrocode}
+\DTMdefboolkey{german}{mapzone}[true]{}
+% \end{macrocode}
+% The default is to use mappings.
+% \begin{macrocode}
+\DTMsetbool{german}{mapzone}{true}
+% \end{macrocode}
+%
+% Define a boolean key that determines if the day of month should be
+% displayed.
+% \begin{macrocode}
+\DTMdefboolkey{german}{showdayofmonth}[true]{}
+% \end{macrocode}
+% The default is to show the day of month.
+% \begin{macrocode}
+\DTMsetbool{german}{showdayofmonth}{true}
+% \end{macrocode}
+%
+% Define a boolean key that determines if the year should be
+% displayed.
+% \begin{macrocode}
+\DTMdefboolkey{german}{showyear}[true]{}
+% \end{macrocode}
+% The default is to show the year.
+% \begin{macrocode}
+\DTMsetbool{german}{showyear}{true}
+% \end{macrocode}
+%
+% Define the "german" style.
+%\changes{1.1}{2017-03-09}{fixed bug in \cs{DTMDisplaydate}}
+%\changes{1.2}{2017-09-10}{Short month names implemented}
+%\changes{1.2}{2017-09-10}{Short weekday names implemented}
+%\changes{1.2}{2017-09-10}{Day of week implemented}
+%\changes{2.1}{2017-11-13}{Fixed strange spacing when switching languages}
+% \begin{macrocode}
+\DTMnewstyle
+ {german}% label
+ {% date style
+ \renewcommand*\DTMdisplaydate[4]{%
+ \ifDTMshowdow
+ \ifnum##4>-1
+ \DTMifbool{german}{abbr}%
+ {\DTMgermanshortweekdayname{##4}}%
+ {\DTMgermanweekdayname{##4}}%
+ \DTMgermandowdaysep
+ \fi
+ \fi
+ %
+ \DTMifbool{german}{showdayofmonth}%
+ {\DTMgermanordinal{##3}\DTMgermandaymonthsep}%
+ {}%
+ %
+ \DTMifbool{german}{abbr}%
+ {\DTMgermanshortmonthname{##2}}%
+ {\DTMgermanmonthname{##2}}%
+ %
+ \DTMifbool{german}{showyear}%
+ {%
+ \DTMgermanmonthyearsep%
+ \DTMifbool{german}{abbr}%
+ {'\DTMtwodigits{##1}}%
+ {\number##1 }% space intended
+ }%
+ {}%
+ }%
+ \renewcommand*\DTMDisplaydate[4]{%
+ \ifDTMshowdow
+ \ifnum##4>-1
+ \DTMifbool{german}{abbr}%
+ {\DTMgermanshortweekdayname{##4}}%
+ {\DTMgermanweekdayname{##4}}%
+ \DTMgermandowdaysep
+ \fi
+ \fi
+ %
+ \DTMifbool{german}{showdayofmonth}%
+ {\DTMgermanordinal{##3}\DTMgermandaymonthsep}%
+ {}%
+ %
+ \DTMifbool{german}{abbr}%
+ {\DTMgermanshortmonthname{##2}}%
+ {\DTMgermanmonthname{##2}}%
+ %
+ \DTMifbool{german}{showyear}%
+ {%
+ \DTMgermanmonthyearsep%
+ \DTMifbool{german}{abbr}%
+ {'\DTMtwodigits{##1}}%
+ {\number##1 }% space intended
+ }%
+ {}%
+ }%
+ }%
+ {% time style (use default)
+ \renewcommand*\DTMdisplaytime[3]{%
+ \DTMtwodigits{##1}%
+ \DTMgermantimesep\DTMtwodigits{##2}%
+ \ifDTMshowseconds\DTMgermantimesep\DTMtwodigits{##3}\fi
+ }%
+ }%
+ {% zone style
+ \DTMresetzones
+ \DTMgermanzonemaps
+ \renewcommand*{\DTMdisplayzone}[2]{%
+ \DTMifbool{german}{mapzone}%
+ {\DTMusezonemapordefault{##1}{##2}}%
+ {%
+ \ifnum##1<0\else+\fi\DTMtwodigits{##1}%
+ \ifDTMshowzoneminutes\DTMgermantimesep\DTMtwodigits{##2}\fi
+ }%
+ }%
+ }%
+ {% full style
+ \renewcommand*{\DTMdisplay}[9]{%
+ \ifDTMshowdate
+ \DTMdisplaydate{##1}{##2}{##3}{##4}%
+ \DTMgermandatetimesep
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \DTMgermantimezonesep
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+ \renewcommand*{\DTMDisplay}[9]{%
+ \ifDTMshowdate
+ \DTMDisplaydate{##1}{##2}{##3}{##4}%
+ \DTMgermandatetimesep
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \DTMgermantimezonesep
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+ }%
+% \end{macrocode}
+%
+% Define numeric style.
+%\changes{1.2}{2017-09-10}{Day of week implemented}
+%\changes{2.0}{2017-10-03}{Bugfix: month-year-separator}
+% \begin{macrocode}
+\DTMnewstyle
+ {german-numeric}% label
+ {% date style
+ \renewcommand*\DTMdisplaydate[4]{%
+ \ifDTMshowdow
+ \ifnum##4>-1
+ \DTMifbool{german}{abbr}%
+ {\DTMgermanshortweekdayname{##4}}%
+ {\DTMgermanweekdayname{##4}}%
+ \DTMgermandowdaysep
+ \fi
+ \fi
+ %
+ \DTMifbool{german}{showdayofmonth}%
+ {%
+ \DTMtwodigits{##3}%
+ \DTMgermandatesep
+ }%
+ {}%
+ \DTMtwodigits{##2}%
+ \DTMgermandatesep%
+ \DTMifbool{german}{showyear}%
+ {%
+ \DTMifbool{german}{abbr}%
+ {\DTMtwodigits{##1}}%
+ {\number##1 }% space intended
+ }%
+ {}%
+ }%
+ \renewcommand*{\DTMDisplaydate}[4]{\DTMdisplaydate{##1}{##2}{##3}{##4}}%
+ }%
+ {% time style
+ \renewcommand*\DTMdisplaytime[3]{%
+ \DTMtwodigits{##1}%
+ \DTMgermantimesep\DTMtwodigits{##2}%
+ \ifDTMshowseconds\DTMgermantimesep\DTMtwodigits{##3}\fi
+ }%
+ }%
+ {% zone style
+ \DTMresetzones
+ \DTMgermanzonemaps
+ \renewcommand*{\DTMdisplayzone}[2]{%
+ \DTMifbool{german}{mapzone}%
+ {\DTMusezonemapordefault{##1}{##2}}%
+ {%
+ \ifnum##1<0\else+\fi\DTMtwodigits{##1}%
+ \ifDTMshowzoneminutes\DTMgermantimesep\DTMtwodigits{##2}\fi
+ }%
+ }%
+ }%
+ {% full style
+ \renewcommand*{\DTMdisplay}[9]{%
+ \ifDTMshowdate
+ \DTMdisplaydate{##1}{##2}{##3}{##4}%
+ \DTMgermandatetimesep
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \DTMgermantimezonesep
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+ \renewcommand*{\DTMDisplay}{\DTMdisplay}%
+ }
+% \end{macrocode}
+%
+%\begin{macro}{\DTMgermanzonemaps}
+% The time zone mappings are set through this command, which can be
+% redefined if extra mappings are required or mappings need to be
+% removed.
+%\changes{1.2}{2017-09-10}{German time zone names (ME[S]Z)}
+% \begin{macrocode}
+\newcommand*{\DTMgermanzonemaps}{%
+ \DTMdefzonemap{01}{00}{MEZ}%
+ \DTMdefzonemap{02}{00}{MESZ}%
+}
+% \end{macrocode}
+%\end{macro}
+
+% Switch style according to the \opt{useregional} setting.
+% \begin{macrocode}
+\DTMifcaseregional
+{}% do nothing
+{\DTMsetstyle{german}}
+{\DTMsetstyle{german-numeric}}
+% \end{macrocode}
+%
+% Redefine \cs{dategerman} (or \cs{date}\meta{dialect}) to prevent
+% \sty{babel} from resetting \cs{today}. (For this to work,
+% \sty{babel} must already have been loaded if it's required.)
+% \begin{macrocode}
+\ifcsundef{date\CurrentTrackedDialect}
+{%
+ \ifundef\dategerman
+ {% do nothing
+ }%
+ {%
+ \def\dategerman{%
+ \DTMifcaseregional
+ {}% do nothing
+ {\DTMsetstyle{german}}%
+ {\DTMsetstyle{german-numeric}}%
+ }%
+ }%
+}%
+{%
+ \csdef{date\CurrentTrackedDialect}{%
+ \DTMifcaseregional
+ {}% do nothing
+ {\DTMsetstyle{german}}%
+ {\DTMsetstyle{german-numeric}}%
+ }%
+}%
+% \end{macrocode}
+%\iffalse
+% \begin{macrocode}
+%</datetime2-german.ldf>
+% \end{macrocode}
+%\fi
+%
+%
+%
+%
+%
+%
+%
+%
+%
+%
+% \section{German localization (\texttt{de-DE}, \texttt{datetime2-de-DE.ldf})}
+%\changes{2.0}{2017-10-03}{German localization added}
+%\iffalse
+% \begin{macrocode}
+%<*datetime2-de-DE.ldf>
+% \end{macrocode}
+%\fi
+% Identify Module
+% \begin{macrocode}
+\ProvidesDateTimeModule{de-DE}[2017/11/13 v2.1]
+% \end{macrocode}
+% Require the basic German module
+% \begin{macrocode}
+\RequireDateTimeModule{german}
+% \end{macrocode}
+%
+%
+% Allow the user a way of configuring the "de-DE" and
+% "de-DE-numeric" styles. This doesn't use the package wide
+% separators such as
+% \cs{dtm@datetimesep} in case other date formats are also required.
+%
+%\begin{macro}{\DTMdeDEdowdaysep}
+% The separator between weekday and day
+% \begin{macrocode}
+\newcommand*{\DTMdeDEdowdaysep}{,\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMdeDEdaymonthsep}
+% The separator between the day and month for the text format.
+% \begin{macrocode}
+\newcommand*{\DTMdeDEdaymonthsep}{.\DTMtexorpdfstring{\protect~}{\space}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMdeDEmonthyearsep}
+% The separator between the month and year for the text format.
+% \begin{macrocode}
+\newcommand*{\DTMdeDEmonthyearsep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMdeDEdatetimesep}
+% The separator between the date and time blocks in the full format
+% (either text or numeric).
+% \begin{macrocode}
+\newcommand*{\DTMdeDEdatetimesep}{,\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMdeDEtimezonesep}
+% The separator between the time and zone blocks in the full format
+% (either text or numeric).
+% \begin{macrocode}
+\newcommand*{\DTMdeDEtimezonesep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMdeDEdatesep}
+% The separator for the numeric date format.
+% \begin{macrocode}
+\newcommand*{\DTMdeDEdatesep}{.}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMdeDEtimesep}
+% The separator for the numeric time format.
+% \begin{macrocode}
+\newcommand*{\DTMdeDEtimesep}{:}
+% \end{macrocode}
+%\end{macro}
+%
+% Provide keys that can be used in \cs{DTMlangsetup} to set these
+% separators.
+% \begin{macrocode}
+\DTMdefkey{de-DE}{dowdaysep}{\renewcommand*{\DTMdeDEdowdaysep}{#1}}
+\DTMdefkey{de-DE}{daymonthsep}{\renewcommand*{\DTMdeDEdaymonthsep}{#1}}
+\DTMdefkey{de-DE}{monthyearsep}{\renewcommand*{\DTMdeDEmonthyearsep}{#1}}
+\DTMdefkey{de-DE}{datetimesep}{\renewcommand*{\DTMdeDEdatetimesep}{#1}}
+\DTMdefkey{de-DE}{timezonesep}{\renewcommand*{\DTMdeDEtimezonesep}{#1}}
+\DTMdefkey{de-DE}{datesep}{\renewcommand*{\DTMdeDEdatesep}{#1}}
+\DTMdefkey{de-DE}{timesep}{\renewcommand*{\DTMdeDEtimesep}{#1}}
+% \end{macrocode}
+%
+%
+% Define a boolean key that can switch between full and abbreviated formats for
+% the month and day of week names in the text format.
+% \begin{macrocode}
+\DTMdefboolkey{de-DE}{abbr}[true]{}
+% \end{macrocode}
+%
+% The default is full name
+% \begin{macrocode}
+\DTMsetbool{de-DE}{abbr}{false}
+% \end{macrocode}
+%
+% Define a boolean key that determines if the time zone mappings
+% should be used.
+% \begin{macrocode}
+\DTMdefboolkey{de-DE}{mapzone}[true]{}
+% \end{macrocode}
+% The default is to use mappings.
+% \begin{macrocode}
+\DTMsetbool{de-DE}{mapzone}{true}
+% \end{macrocode}
+%
+% Define a boolean key that determines if the day of month should be
+% displayed.
+% \begin{macrocode}
+\DTMdefboolkey{de-DE}{showdayofmonth}[true]{}
+% \end{macrocode}
+% The default is to show the day of month.
+% \begin{macrocode}
+\DTMsetbool{de-DE}{showdayofmonth}{true}
+% \end{macrocode}
+%
+% Define a boolean key that determines if the year should be
+% displayed.
+% \begin{macrocode}
+\DTMdefboolkey{de-DE}{showyear}[true]{}
+% \end{macrocode}
+% The default is to show the year.
+% \begin{macrocode}
+\DTMsetbool{de-DE}{showyear}{true}
+% \end{macrocode}
+%
+%
+% Define the "de-DE" style
+% \begin{macrocode}
+\DTMnewstyle
+{de-DE}% label
+{% date style
+ \renewcommand*\DTMdisplaydate[4]{%
+ \ifDTMshowdow
+ \ifnum##4>-1
+ \DTMifbool{de-DE}{abbr}%
+ {\DTMgermanshortweekdayname{##4}}%
+ {\DTMgermanweekdayname{##4}}%
+ \DTMdeDEdowdaysep
+ \fi
+ \fi
+ %
+ \DTMifbool{de-DE}{showdayofmonth}%
+ {\DTMgermanordinal{##3}\DTMdeDEdaymonthsep}%
+ {}%
+ %
+ \DTMifbool{de-DE}{abbr}%
+ {\DTMgermanshortmonthname{##2}}%
+ {\DTMgermanmonthname{##2}}%
+ %
+ \DTMifbool{de-DE}{showyear}%
+ {%
+ \DTMdeDEmonthyearsep%
+ \DTMifbool{de-DE}{abbr}%
+ {'\DTMtwodigits{##1}}%
+ {\number##1 }% space intended
+ }%
+ {}%
+ }%
+ \renewcommand*\DTMDisplaydate[4]{%
+ \ifDTMshowdow
+ \ifnum##4>-1
+ \DTMifbool{de-DE}{abbr}%
+ {\DTMgermanshortweekdayname{##4}}%
+ {\DTMgermanweekdayname{##4}}%
+ \DTMdeDEdowdaysep
+ \fi
+ \fi
+ %
+ \DTMifbool{de-DE}{showdayofmonth}%
+ {\DTMgermanordinal{##3}\DTMdeDEdaymonthsep}%
+ {}%
+ %
+ \DTMifbool{de-DE}{abbr}%
+ {\DTMgermanshortmonthname{##2}}%
+ {\DTMgermanmonthname{##2}}%
+ %
+ \DTMifbool{de-DE}{showyear}%
+ {%
+ \DTMdeDEmonthyearsep%
+ \DTMifbool{de-DE}{abbr}%
+ {'\DTMtwodigits{##1}}%
+ {\number##1 }% space intended
+ }%
+ {}%
+ }
+}%
+{% time style (use default)
+ \renewcommand*\DTMdisplaytime[3]{%
+ \DTMtwodigits{##1}%
+ \DTMdeDEtimesep\DTMtwodigits{##2}%
+ \ifDTMshowseconds\DTMdeDEtimesep\DTMtwodigits{##3}\fi
+ }%
+}%
+{% zone style
+ \DTMresetzones
+ \DTMgermanzonemaps
+ \renewcommand*{\DTMdisplayzone}[2]{%
+ \DTMifbool{de-DE}{mapzone}%
+ {\DTMusezonemapordefault{##1}{##2}}%
+ {%
+ \ifnum##1<0\else+\fi\DTMtwodigits{##1}%
+ \ifDTMshowzoneminutes\DTMdeDEtimesep\DTMtwodigits{##2}\fi
+ }%
+ }%
+}%
+{% full style
+ \renewcommand*{\DTMdisplay}[9]{%
+ \ifDTMshowdate
+ \DTMdisplaydate{##1}{##2}{##3}{##4}%
+ \DTMdeDEdatetimesep
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \DTMdeDEtimezonesep
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+ \renewcommand*{\DTMDisplay}[9]{%
+ \ifDTMshowdate
+ \DTMDisplaydate{##1}{##2}{##3}{##4}%
+ \DTMdeDEdatetimesep
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \DTMdeDEtimezonesep
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+}%
+% \end{macrocode}
+%
+% Define numeric style.
+% \begin{macrocode}
+\DTMnewstyle
+{de-DE-numeric}% label
+{% date style
+ \renewcommand*\DTMdisplaydate[4]{%
+ \ifDTMshowdow
+ \ifnum##4>-1
+ \DTMifbool{de-DE}{abbr}%
+ {\DTMgermanshortweekdayname{##4}}%
+ {\DTMgermanweekdayname{##4}}%
+ \DTMdeDEdowdaysep
+ \fi
+ \fi
+ %
+ \DTMifbool{de-DE}{showdayofmonth}%
+ {%
+ \DTMtwodigits{##3}%
+ \DTMdeDEdatesep
+ }%
+ {}%
+ \DTMtwodigits{##2}%
+ \DTMdeDEdatesep%
+ \DTMifbool{de-DE}{showyear}%
+ {%
+ \DTMifbool{de-DE}{abbr}%
+ {\DTMtwodigits{##1}}%
+ {\number##1 }% space intended
+ }%
+ {}%
+ }%
+ \renewcommand*{\DTMDisplaydate}[4]{\DTMdisplaydate{##1}{##2}{##3}{##4}}%
+}%
+{% time style
+ \renewcommand*\DTMdisplaytime[3]{%
+ \DTMtwodigits{##1}%
+ \DTMdeDEtimesep\DTMtwodigits{##2}%
+ \ifDTMshowseconds\DTMdeDEtimesep\DTMtwodigits{##3}\fi
+ }%
+}%
+{% zone style
+ \DTMresetzones
+ \DTMgermanzonemaps
+ \renewcommand*{\DTMdisplayzone}[2]{%
+ \DTMifbool{de-DE}{mapzone}%
+ {\DTMusezonemapordefault{##1}{##2}}%
+ {%
+ \ifnum##1<0\else+\fi\DTMtwodigits{##1}%
+ \ifDTMshowzoneminutes\DTMgermantimesep\DTMtwodigits{##2}\fi
+ }%
+ }%
+}%
+{% full style
+ \renewcommand*{\DTMdisplay}[9]{%
+ \ifDTMshowdate
+ \DTMdisplaydate{##1}{##2}{##3}{##4}%
+ \DTMdeDEdatetimesep
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \DTMdeDEtimezonesep
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+ \renewcommand*{\DTMDisplay}{\DTMdisplay}%
+}
+% \end{macrocode}
+%
+% Switch style according to the \opt{useregional} setting.
+% \begin{macrocode}
+\DTMifcaseregional
+ {}% do nothing
+ {\DTMsetstyle{de-DE}}
+ {\DTMsetstyle{de-DE-numeric}}
+% \end{macrocode}
+%
+% Redefine \cs{dategerman} (or \cs{date}\meta{dialect}) to prevent
+% \sty{babel} from resetting \cs{today}. (For this to work,
+% \sty{babel} must already have been loaded if it's required.)
+% \begin{macrocode}
+\ifcsundef{date\CurrentTrackedDialect}
+{%
+ \ifundef\dategerman
+ {% do nothing
+ }%
+ {%
+ \def\dategerman{%
+ \DTMifcaseregional
+ {}% do nothing
+ {\DTMsetstyle{german}}%
+ {\DTMsetstyle{german-numeric}}%
+ }%
+ }%
+}%
+{%
+ \csdef{date\CurrentTrackedDialect}{%
+ \DTMifcaseregional
+ {}% do nothing
+ {\DTMsetstyle{de-DE}}%
+ {\DTMsetstyle{de-DE-numeric}}
+ }%
+}%
+% \end{macrocode}
+%
+%\iffalse
+% \begin{macrocode}
+%</datetime2-de-DE.ldf>
+% \end{macrocode}
+%\fi
+%
+%
+%
+%
+%
+%
+%
+%
+%
+%
+% \section{Austrian German localization (\texttt{de-AT}, \texttt{datetime2-de-AT.ldf})}
+%\changes{2.0}{2017-10-03}{Austrian German localization added}
+%
+%\iffalse
+% \begin{macrocode}
+%<*datetime2-de-AT.ldf>
+% \end{macrocode}
+%\fi
+% Identify Module
+% \begin{macrocode}
+\ProvidesDateTimeModule{de-AT}[2017/11/13 v2.1]
+% \end{macrocode}
+% Require the basic German module
+% \begin{macrocode}
+\RequireDateTimeModule{german}
+% \end{macrocode}
+%
+%
+% Allow the user a way of configuring the "de-AT" and
+% "de-AT-numeric" styles. This doesn't use the package wide
+% separators such as
+% \cs{dtm@datetimesep} in case other date formats are also required.
+%
+%\begin{macro}{\DTMdeATdowdaysep}
+% The separator between weekday and day
+% \begin{macrocode}
+\newcommand*{\DTMdeATdowdaysep}{,\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMdeATdaymonthsep}
+% The separator between the day and month for the text format.
+% \begin{macrocode}
+\newcommand*{\DTMdeATdaymonthsep}{.\DTMtexorpdfstring{\protect~}{\space}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMdeATmonthyearsep}
+% The separator between the month and year for the text format.
+% \begin{macrocode}
+\newcommand*{\DTMdeATmonthyearsep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMdeATdatetimesep}
+% The separator between the date and time blocks in the full format
+% (either text or numeric).
+% \begin{macrocode}
+\newcommand*{\DTMdeATdatetimesep}{,\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMdeATtimezonesep}
+% The separator between the time and zone blocks in the full format
+% (either text or numeric).
+% \begin{macrocode}
+\newcommand*{\DTMdeATtimezonesep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMdeATdatesep}
+% The separator for the numeric date format.
+% \begin{macrocode}
+\newcommand*{\DTMdeATdatesep}{-}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMdeATtimesep}
+% The separator for the numeric time format.
+% \begin{macrocode}
+\newcommand*{\DTMdeATtimesep}{:}
+% \end{macrocode}
+%\end{macro}
+%
+% Provide keys that can be used in \cs{DTMlangsetup} to set these
+% separators.
+% \begin{macrocode}
+\DTMdefkey{de-AT}{dowdaysep}{\renewcommand*{\DTMdeATdowdaysep}{#1}}
+\DTMdefkey{de-AT}{daymonthsep}{\renewcommand*{\DTMdeATdaymonthsep}{#1}}
+\DTMdefkey{de-AT}{monthyearsep}{\renewcommand*{\DTMdeATmonthyearsep}{#1}}
+\DTMdefkey{de-AT}{datetimesep}{\renewcommand*{\DTMdeATdatetimesep}{#1}}
+\DTMdefkey{de-AT}{timezonesep}{\renewcommand*{\DTMdeATtimezonesep}{#1}}
+\DTMdefkey{de-AT}{datesep}{\renewcommand*{\DTMdeATdatesep}{#1}}
+\DTMdefkey{de-AT}{timesep}{\renewcommand*{\DTMdeATtimesep}{#1}}
+% \end{macrocode}
+%
+%
+% Define a boolean key that can switch between full and abbreviated formats for
+% the month and day of week names in the text format.
+% \begin{macrocode}
+\DTMdefboolkey{de-AT}{abbr}[true]{}
+% \end{macrocode}
+%
+% The default is full name
+% \begin{macrocode}
+\DTMsetbool{de-AT}{abbr}{false}
+% \end{macrocode}
+%
+% Define a boolean key that determines if the time zone mappings
+% should be used.
+% \begin{macrocode}
+\DTMdefboolkey{de-AT}{mapzone}[true]{}
+% \end{macrocode}
+% The default is to use mappings.
+% \begin{macrocode}
+\DTMsetbool{de-AT}{mapzone}{true}
+% \end{macrocode}
+%
+% Define a boolean key that determines if the day of month should be
+% displayed.
+% \begin{macrocode}
+\DTMdefboolkey{de-AT}{showdayofmonth}[true]{}
+% \end{macrocode}
+% The default is to show the day of month.
+% \begin{macrocode}
+\DTMsetbool{de-AT}{showdayofmonth}{true}
+% \end{macrocode}
+%
+% Define a boolean key that determines if the year should be
+% displayed.
+% \begin{macrocode}
+\DTMdefboolkey{de-AT}{showyear}[true]{}
+% \end{macrocode}
+% The default is to show the year.
+% \begin{macrocode}
+\DTMsetbool{de-AT}{showyear}{true}
+% \end{macrocode}
+%
+%
+% Define the "de-AT" style
+% \begin{macrocode}
+\DTMnewstyle
+{de-AT}% label
+{% date style
+ \renewcommand*\DTMdisplaydate[4]{%
+ \ifDTMshowdow
+ \ifnum##4>-1
+ \DTMifbool{de-AT}{abbr}%
+ {\DTMgermanshortweekdayname{##4}}%
+ {\DTMgermanweekdayname{##4}}%
+ \DTMdeATdowdaysep
+ \fi
+ \fi
+ %
+ \DTMifbool{de-AT}{showdayofmonth}%
+ {\DTMgermanordinal{##3}\DTMdeATdaymonthsep}%
+ {}%
+ %
+ \DTMifbool{de-AT}{abbr}%
+ {\DTMdeATshortmonthname{##2}}%
+ {\DTMdeATmonthname{##2}}%
+ %
+ \DTMifbool{de-AT}{showyear}%
+ {%
+ \DTMdeATmonthyearsep%
+ \number##1 % space intended
+ }%
+ {}%
+ }%
+ \renewcommand*\DTMDisplaydate[4]{%
+ \ifDTMshowdow
+ \ifnum##4>-1
+ \DTMifbool{de-AT}{abbr}%
+ {\DTMgermanshortweekdayname{##4}}%
+ {\DTMgermanweekdayname{##4}}%
+ \DTMdeATdowdaysep
+ \fi
+ \fi
+ %
+ \DTMifbool{de-AT}{showdayofmonth}%
+ {\DTMgermanordinal{##3}\DTMdeATdaymonthsep}%
+ {}%
+ %
+ \DTMifbool{de-AT}{abbr}%
+ {\DTMdeATshortmonthname{##2}}%
+ {\DTMdeATmonthname{##2}}%
+ %
+ \DTMifbool{de-AT}{showyear}%
+ {%
+ \DTMdeATmonthyearsep%
+ \number##1 % space intended
+ }%
+ {}%
+ }%
+}%
+{% time style (use default)
+ \renewcommand*\DTMdisplaytime[3]{%
+ \DTMtwodigits{##1}%
+ \DTMdeATtimesep\DTMtwodigits{##2}%
+ \ifDTMshowseconds\DTMdeATtimesep\DTMtwodigits{##3}\fi
+ }%
+}%
+{% zone style
+ \DTMresetzones
+ \DTMgermanzonemaps
+ \renewcommand*{\DTMdisplayzone}[2]{%
+ \DTMifbool{de-AT}{mapzone}%
+ {\DTMusezonemapordefault{##1}{##2}}%
+ {%
+ \ifnum##1<0\else+\fi\DTMtwodigits{##1}%
+ \ifDTMshowzoneminutes\DTMdeATtimesep\DTMtwodigits{##2}\fi
+ }%
+ }%
+}%
+{% full style
+ \renewcommand*{\DTMdisplay}[9]{%
+ \ifDTMshowdate
+ \DTMdisplaydate{##1}{##2}{##3}{##4}%
+ \DTMdeATdatetimesep
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \DTMdeATtimezonesep
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+ \renewcommand*{\DTMDisplay}[9]{%
+ \ifDTMshowdate
+ \DTMDisplaydate{##1}{##2}{##3}{##4}%
+ \DTMdeATdatetimesep
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \DTMdeATtimezonesep
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+}%
+% \end{macrocode}
+%
+% Define numeric style.
+% \begin{macrocode}
+\DTMnewstyle
+{de-AT-numeric}% label
+{% date style
+ \renewcommand*\DTMdisplaydate[4]{%
+ \DTMifbool{de-AT}{showyear}%
+ {%
+ \number##1 % space intended
+ \DTMdeATdatesep%
+ }%
+ {}%
+ %
+ \DTMtwodigits{##2}%
+ %
+ \DTMifbool{de-AT}{showdayofmonth}%
+ {%
+ \DTMdeATdatesep%
+ \DTMtwodigits{##3}%
+ }%
+ {}%
+ }%
+ \renewcommand*{\DTMDisplaydate}[4]{\DTMdisplaydate{##1}{##2}{##3}{##4}}%
+}%
+{% time style
+ \renewcommand*\DTMdisplaytime[3]{%
+ \DTMtwodigits{##1}%
+ \DTMdeATtimesep\DTMtwodigits{##2}%
+ \ifDTMshowseconds\DTMdeATtimesep\DTMtwodigits{##3}\fi
+ }%
+}%
+{% zone style
+ \DTMresetzones
+ \DTMgermanzonemaps
+ \renewcommand*{\DTMdisplayzone}[2]{%
+ \DTMifbool{de-AT}{mapzone}%
+ {\DTMusezonemapordefault{##1}{##2}}%
+ {%
+ \ifnum##1<0\else+\fi\DTMtwodigits{##1}%
+ \ifDTMshowzoneminutes\DTMgermantimesep\DTMtwodigits{##2}\fi
+ }%
+ }%
+}%
+{% full style
+ \renewcommand*{\DTMdisplay}[9]{%
+ \ifDTMshowdate
+ \DTMdisplaydate{##1}{##2}{##3}{##4}%
+ \DTMdeATdatetimesep
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \DTMdeATtimezonesep
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+ \renewcommand*{\DTMDisplay}{\DTMdisplay}%
+}
+% \end{macrocode}
+%
+% Switch style according to the \opt{useregional} setting.
+% \begin{macrocode}
+\DTMifcaseregional
+{}% do nothing
+{\DTMsetstyle{de-AT}}%
+{\DTMsetstyle{de-AT-numeric}}%
+% \end{macrocode}
+%
+% Redefine \cs{dategerman} (or \cs{date}\meta{dialect}) to prevent
+% \sty{babel} from resetting \cs{today}. (For this to work,
+% \sty{babel} must already have been loaded if it's required.)
+% \begin{macrocode}
+\ifcsundef{date\CurrentTrackedDialect}
+{%
+ \ifundef\dategerman
+ {% do nothing
+ }%
+ {%
+ \def\dategerman{%
+ \DTMifcaseregional
+ {}% do nothing
+ {\DTMsetstyle{german}}%
+ {\DTMsetstyle{german-numeric}}%
+ }%
+ }%
+}%
+{%
+ \csdef{date\CurrentTrackedDialect}{%
+ \DTMifcaseregional
+ {}% do nothing
+ {\DTMsetstyle{de-AT}}%
+ {\DTMsetstyle{de-AT-numeric}}%
+ }%
+}%
+% \end{macrocode}
+%
+%\iffalse
+% \begin{macrocode}
+%</datetime2-de-AT.ldf>
+% \end{macrocode}
+%\fi
+%
+%
+%
+%
+%
+%
+%
+%
+%
+%
+% \section{Swiss German localization (\texttt{de-CH}, \texttt{datetime2-de-CH.ldf})}
+%\changes{2.0}{2017-10-03}{Swiss German localization added}
+%\iffalse
+% \begin{macrocode}
+%<*datetime2-de-CH.ldf>
+% \end{macrocode}
+%\fi
+% Identify Module
+% \begin{macrocode}
+\ProvidesDateTimeModule{de-CH}[2017/11/13 v2.1]
+% \end{macrocode}
+% Require the basic German module
+% \begin{macrocode}
+\RequireDateTimeModule{german}
+% \end{macrocode}
+%
+%
+% Allow the user a way of configuring the "de-CH" and
+% "de-CH-numeric" styles. This doesn't use the package wide
+% separators such as
+% \cs{dtm@datetimesep} in case other date formats are also required.
+%
+%\begin{macro}{\DTMdeCHdowdaysep}
+% The separator between weekday and day
+% \begin{macrocode}
+\newcommand*{\DTMdeCHdowdaysep}{,\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMdeCHdaymonthsep}
+% The separator between the day and month for the text format.
+% \begin{macrocode}
+\newcommand*{\DTMdeCHdaymonthsep}{.\DTMtexorpdfstring{\protect~}{\space}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMdeCHmonthyearsep}
+% The separator between the month and year for the text format.
+% \begin{macrocode}
+\newcommand*{\DTMdeCHmonthyearsep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMdeCHdatetimesep}
+% The separator between the date and time blocks in the full format
+% (either text or numeric).
+% \begin{macrocode}
+\newcommand*{\DTMdeCHdatetimesep}{,\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMdeCHtimezonesep}
+% The separator between the time and zone blocks in the full format
+% (either text or numeric).
+% \begin{macrocode}
+\newcommand*{\DTMdeCHtimezonesep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMdeCHdatesep}
+% The separator for the numeric date format.
+% \begin{macrocode}
+\newcommand*{\DTMdeCHdatesep}{.}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMdeCHtimesep}
+% The separator for the numeric time format.
+% \begin{macrocode}
+\newcommand*{\DTMdeCHtimesep}{.}
+% \end{macrocode}
+%\end{macro}
+%
+% Provide keys that can be used in \cs{DTMlangsetup} to set these
+% separators.
+% \begin{macrocode}
+\DTMdefkey{de-CH}{dowdaysep}{\renewcommand*{\DTMdeCHdowdaysep}{#1}}
+\DTMdefkey{de-CH}{daymonthsep}{\renewcommand*{\DTMdeCHdaymonthsep}{#1}}
+\DTMdefkey{de-CH}{monthyearsep}{\renewcommand*{\DTMdeCHmonthyearsep}{#1}}
+\DTMdefkey{de-CH}{datetimesep}{\renewcommand*{\DTMdeCHdatetimesep}{#1}}
+\DTMdefkey{de-CH}{timezonesep}{\renewcommand*{\DTMdeCHtimezonesep}{#1}}
+\DTMdefkey{de-CH}{datesep}{\renewcommand*{\DTMdeCHdatesep}{#1}}
+\DTMdefkey{de-CH}{timesep}{\renewcommand*{\DTMdeCHtimesep}{#1}}
+% \end{macrocode}
+%
+%
+% Define a boolean key that can switch between full and abbreviated formats for
+% the month and day of week names in the text format.
+% \begin{macrocode}
+\DTMdefboolkey{de-CH}{abbr}[true]{}
+% \end{macrocode}
+%
+% The default is full name
+% \begin{macrocode}
+\DTMsetbool{de-CH}{abbr}{false}
+% \end{macrocode}
+%
+% Define a boolean key that determines if the time zone mappings
+% should be used.
+% \begin{macrocode}
+\DTMdefboolkey{de-CH}{mapzone}[true]{}
+% \end{macrocode}
+% The default is to use mappings.
+% \begin{macrocode}
+\DTMsetbool{de-CH}{mapzone}{true}
+% \end{macrocode}
+%
+% Define a boolean key that determines if the day of month should be
+% displayed.
+% \begin{macrocode}
+\DTMdefboolkey{de-CH}{showdayofmonth}[true]{}
+% \end{macrocode}
+% The default is to show the day of month.
+% \begin{macrocode}
+\DTMsetbool{de-CH}{showdayofmonth}{true}
+% \end{macrocode}
+%
+% Define a boolean key that determines if the year should be
+% displayed.
+% \begin{macrocode}
+\DTMdefboolkey{de-CH}{showyear}[true]{}
+% \end{macrocode}
+% The default is to show the year.
+% \begin{macrocode}
+\DTMsetbool{de-CH}{showyear}{true}
+% \end{macrocode}
+%
+%
+% Define the "de-CH" style
+% \begin{macrocode}
+\DTMnewstyle
+{de-CH}% label
+{% date style
+ \renewcommand*\DTMdisplaydate[4]{%
+ \ifDTMshowdow
+ \ifnum##4>-1
+ \DTMifbool{de-CH}{abbr}%
+ {\DTMgermanshortweekdayname{##4}}%
+ {\DTMgermanweekdayname{##4}}%
+ \DTMdeCHdowdaysep
+ \fi
+ \fi
+ %
+ \DTMifbool{de-CH}{showdayofmonth}%
+ {\DTMgermanordinal{##3}\DTMdeCHdaymonthsep}%
+ {}%
+ %
+ \DTMifbool{de-CH}{abbr}%
+ {\DTMdeCHshortmonthname{##2}}%
+ {\DTMgermanmonthname{##2}}%
+ %
+ \DTMifbool{de-CH}{showyear}%
+ {%
+ \DTMdeCHmonthyearsep%
+ \number##1 % space intended
+ }%
+ {}%
+ }%
+ \renewcommand*\DTMDisplaydate[4]{%
+ \ifDTMshowdow
+ \ifnum##4>-1
+ \DTMifbool{de-CH}{abbr}%
+ {\DTMgermanshortweekdayname{##4}}%
+ {\DTMgermanweekdayname{##4}}%
+ \DTMdeCHdowdaysep
+ \fi
+ \fi
+ %
+ \DTMifbool{de-CH}{showdayofmonth}%
+ {\DTMgermanordinal{##3}\DTMdeCHdaymonthsep}%
+ {}%
+ %
+ \DTMifbool{de-CH}{abbr}%
+ {\DTMdeCHshortmonthname{##2}}%
+ {\DTMgermanmonthname{##2}}%
+ %
+ \DTMifbool{de-CH}{showyear}%
+ {%
+ \DTMdeCHmonthyearsep%
+ \number##1 % space intended
+ }%
+ {}%
+ }
+}%
+{% time style (use default)
+ \renewcommand*\DTMdisplaytime[3]{%
+ \DTMtwodigits{##1}%
+ \DTMdeCHtimesep\DTMtwodigits{##2}%
+ \ifDTMshowseconds\DTMdeCHtimesep\DTMtwodigits{##3}\fi\space%
+ Uhr%
+ }%
+}%
+{% zone style
+ \DTMresetzones
+ \DTMgermanzonemaps
+ \renewcommand*{\DTMdisplayzone}[2]{%
+ \DTMifbool{de-CH}{mapzone}%
+ {\DTMusezonemapordefault{##1}{##2}}%
+ {%
+ \ifnum##1<0\else+\fi\DTMtwodigits{##1}%
+ \ifDTMshowzoneminutes\DTMdeCHtimesep\DTMtwodigits{##2}\fi
+ }%
+ }%
+}%
+{% full style
+ \renewcommand*{\DTMdisplay}[9]{%
+ \ifDTMshowdate
+ \DTMdisplaydate{##1}{##2}{##3}{##4}%
+ \DTMdeCHdatetimesep
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \DTMdeCHtimezonesep
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+ \renewcommand*{\DTMDisplay}[9]{%
+ \ifDTMshowdate
+ \DTMDisplaydate{##1}{##2}{##3}{##4}%
+ \DTMdeCHdatetimesep
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \DTMdeCHtimezonesep
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+}%
+% \end{macrocode}
+%
+% Define numeric style.
+% \begin{macrocode}
+\DTMnewstyle
+{de-CH-numeric}% label
+{% date style
+ \renewcommand*\DTMdisplaydate[4]{%
+ \ifDTMshowdow
+ \ifnum##4>-1
+ \DTMifbool{de-CH}{abbr}%
+ {\DTMgermanshortweekdayname{##4}}%
+ {\DTMgermanweekdayname{##4}}%
+ \DTMdeCHdowdaysep
+ \fi
+ \fi
+ %
+ \DTMifbool{de-CH}{showdayofmonth}%
+ {%
+ \DTMtwodigits{##3}%
+ \DTMdeCHdatesep
+ }%
+ {}%
+ \DTMtwodigits{##2}%
+ \DTMdeCHdatesep%
+ \DTMifbool{de-CH}{showyear}%
+ {%
+ \number##1 % space intended
+ }%
+ {}%
+ }%
+ \renewcommand*{\DTMDisplaydate}[4]{\DTMdisplaydate{##1}{##2}{##3}{##4}}%
+}%
+{% time style
+ \renewcommand*\DTMdisplaytime[3]{%
+ \DTMtwodigits{##1}%
+ \DTMdeCHtimesep\DTMtwodigits{##2}%
+ \ifDTMshowseconds\DTMdeCHtimesep\DTMtwodigits{##3}\fi\space%
+ Uhr%
+ }%
+}%
+{% zone style
+ \DTMresetzones
+ \DTMgermanzonemaps
+ \renewcommand*{\DTMdisplayzone}[2]{%
+ \DTMifbool{de-CH}{mapzone}%
+ {\DTMusezonemapordefault{##1}{##2}}%
+ {%
+ \ifnum##1<0\else+\fi\DTMtwodigits{##1}%
+ \ifDTMshowzoneminutes\DTMgermantimesep\DTMtwodigits{##2}\fi
+ }%
+ }%
+}%
+{% full style
+ \renewcommand*{\DTMdisplay}[9]{%
+ \ifDTMshowdate
+ \DTMdisplaydate{##1}{##2}{##3}{##4}%
+ \DTMdeCHdatetimesep
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \DTMdeCHtimezonesep
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+ \renewcommand*{\DTMDisplay}{\DTMdisplay}%
+}
+% \end{macrocode}
+%
+% Switch style according to the \opt{useregional} setting.
+% \begin{macrocode}
+\DTMifcaseregional
+{}% do nothing
+{\DTMsetstyle{de-CH}}%
+{\DTMsetstyle{de-CH-numeric}}%
+% \end{macrocode}
+%
+% Redefine \cs{dategerman} (or \cs{date}\meta{dialect}) to prevent
+% \sty{babel} from resetting \cs{today}. (For this to work,
+% \sty{babel} must already have been loaded if it's required.)
+% \begin{macrocode}
+\ifcsundef{date\CurrentTrackedDialect}
+{%
+ \ifundef\dategerman
+ {% do nothing
+ }%
+ {%
+ \def\dategerman{%
+ \DTMifcaseregional
+ {}% do nothing
+ {\DTMsetstyle{german}}%
+ {\DTMsetstyle{german-numeric}}%
+ }%
+ }%
+}%
+{%
+ \csdef{date\CurrentTrackedDialect}{%
+ \DTMifcaseregional
+ {}% do nothing
+ {\DTMsetstyle{de-CH}}%
+ {\DTMsetstyle{de-CH-numeric}}%
+ }%
+}%
+% \end{macrocode}
+%
+%\iffalse
+% \begin{macrocode}
+%</datetime2-de-CH.ldf>
+% \end{macrocode}
+%\fi
+%
+%
+%
+%
+%
+%
+%
+%
+%
+%
+%\Finale
+\endinput \ No newline at end of file
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-german/datetime2-german.ins b/macros/latex/contrib/datetime2-contrib/datetime2-german/datetime2-german.ins
new file mode 100644
index 0000000000..585dc37c7c
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-german/datetime2-german.ins
@@ -0,0 +1,109 @@
+\input docstrip
+
+\preamble
+
+ datetime2-german.dtx
+ Copyright 2015 Nicola Talbot
+ Copyright 2017 Sebastian Friedl
+
+ This work may be distributed and/or modified under the
+ conditions of the LaTeX Project Public License, either version 1.3c
+ of this license of (at your option) any later version.
+ The latest version of this license is in
+ http://www.latex-project.org/lppl.txt
+ and version 1.3c or later is part of all distributions of LaTeX
+ version 2008/05/04 or later.
+
+ This work has the LPPL maintenance status `maintained'.
+ Current maintainer of the work is Sebastian Friedl
+
+ This work consists of the files datetime2-german.dtx and
+ datetime2-german.ins and the derived files
+ datetime2-german-utf8.ldf, datetime2-german-ascii.ldf,
+ datetime2-german.ldf, datetime2-de-DE.ldf,
+ datetime2-de-AT.ldf and datetime2-de-CH.ldf
+
+\endpreamble
+
+\askforoverwritefalse
+
+
+
+
+\generate
+{%
+ \file
+ {datetime2-german-utf8.ldf}%
+ {%
+ \usepreamble\defaultpreamble
+ \usepostamble\defaultpostamble
+ \from{datetime2-german.dtx}{datetime2-german-utf8.ldf,package}%
+ }%
+}
+
+\generate
+{%
+ \file
+ {datetime2-german-ascii.ldf}%
+ {%
+ \usepreamble\defaultpreamble
+ \usepostamble\defaultpostamble
+ \from{datetime2-german.dtx}{datetime2-german-ascii.ldf,package}%
+ }%
+}
+
+\generate
+{%
+ \file
+ {datetime2-german.ldf}%
+ {%
+ \usepreamble\defaultpreamble
+ \usepostamble\defaultpostamble
+ \from{datetime2-german.dtx}{datetime2-german.ldf,package}%
+ }%
+}
+
+
+
+
+\generate
+{%
+ \file
+ {datetime2-de-DE.ldf}%
+ {%
+ \usepreamble\defaultpreamble
+ \usepostamble\defaultpostamble
+ \from{datetime2-german.dtx}{datetime2-de-DE.ldf,package}%
+ }%
+}
+
+
+
+\generate
+{%
+ \file
+ {datetime2-de-AT.ldf}%
+ {%
+ \usepreamble\defaultpreamble
+ \usepostamble\defaultpostamble
+ \from{datetime2-german.dtx}{datetime2-de-AT.ldf,package}%
+ }%
+}
+
+
+
+\generate
+{%
+ \file
+ {datetime2-de-CH.ldf}%
+ {%
+ \usepreamble\defaultpreamble
+ \usepostamble\defaultpostamble
+ \from{datetime2-german.dtx}{datetime2-de-CH.ldf,package}%
+ }%
+}
+
+
+
+\endbatchfile
+
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-german/datetime2-german.pdf b/macros/latex/contrib/datetime2-contrib/datetime2-german/datetime2-german.pdf
new file mode 100644
index 0000000000..7bb0d2b49e
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-german/datetime2-german.pdf
Binary files differ
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-greek/README b/macros/latex/contrib/datetime2-contrib/datetime2-greek/README
new file mode 100644
index 0000000000..5609cac64d
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-greek/README
@@ -0,0 +1,57 @@
+Greek Language Module for datetime2 Package
+
+Author: Nicola L. C. Talbot (inactive)
+
+Licence: LPPL
+
+Required Packages: datetime2, tracklang
+
+This module is unmaintained. If you want to volunteer to take over
+the maintenance contact me at www.dickimaw-books.com/contact.html
+
+Example usage:
+
+\documentclass{article}
+\usepackage[greek]{datetime2}
+\begin{document}
+\today
+\end{document}
+
+\documentclass[greek]{article}
+\usepackage{babel}
+\usepackage[useregional]{datetime2}
+\begin{document}
+\today
+\end{document}
+
+\documentclass{article}
+\usepackage{polyglossia}
+\setmainlanguage{greek}
+\usepackage[greek]{datetime2}
+\begin{document}
+\today
+\end{document}
+
+INSTALLATION
+============
+
+xelatex datetime2-greek.ins
+
+Move all *.ldf files to
+TEXMF/tex/latex/datetime2-contrib/datetime2-greek/
+
+Documentation:
+
+xelatex datetime2-greek.dtx
+makeindex -s gind.ist datetime2-greek.idx
+makeindex -s gglo.ist -o datetime2-greek.gls datetime2-greek.glo
+xelatex datetime2-greek.dtx
+xelatex datetime2-greek.dtx
+
+Move datetime2-greek.pdf and README to
+TEXMF/doc/latex/datetime2-contrib/datetime2-greek/
+
+This material is subject to the LaTeX Project Public License.
+See http://www.ctan.org/license/lppl1.3 for the details of that
+license.
+
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-greek/datetime2-greek.dtx b/macros/latex/contrib/datetime2-contrib/datetime2-greek/datetime2-greek.dtx
new file mode 100644
index 0000000000..d3d6dd085a
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-greek/datetime2-greek.dtx
@@ -0,0 +1,539 @@
+%\iffalse
+%<*package>
+%% \CharacterTable
+%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+%% Digits \0\1\2\3\4\5\6\7\8\9
+%% Exclamation \! Double quote \" Hash (number) \#
+%% Dollar \$ Percent \% Ampersand \&
+%% Acute accent \' Left paren \( Right paren \)
+%% Asterisk \* Plus \+ Comma \,
+%% Minus \- Point \. Solidus \/
+%% Colon \: Semicolon \; Less than \<
+%% Equals \= Greater than \> Question mark \?
+%% Commercial at \@ Left bracket \[ Backslash \\
+%% Right bracket \] Circumflex \^ Underscore \_
+%% Grave accent \` Left brace \{ Vertical bar \|
+%% Right brace \} Tilde \~}
+%</package>
+%\fi
+% \iffalse
+% Doc-Source file to use with LaTeX2e
+% Copyright (C) 2018 Nicola Talbot, all rights reserved.
+% (New maintainer add relevant lines here.)
+% \fi
+% \iffalse
+%<*driver>
+\documentclass{ltxdoc}
+
+\usepackage{alltt}
+\usepackage{graphicx}
+\usepackage{fontspec}
+\usepackage[colorlinks,
+ bookmarks,
+ hyperindex=false,
+ pdfauthor={Nicola L.C. Talbot},
+ pdftitle={datetime2.sty Greek Module}]{hyperref}
+
+\newfontfamily\greekfont{Liberation Serif}
+\setmonofont{Liberation Mono}
+
+\CheckSum{230}
+
+\renewcommand*{\usage}[1]{\hyperpage{#1}}
+\renewcommand*{\main}[1]{\hyperpage{#1}}
+\IndexPrologue{\section*{\indexname}\markboth{\indexname}{\indexname}}
+\setcounter{IndexColumns}{2}
+
+\newcommand*{\sty}[1]{\textsf{#1}}
+\newcommand*{\opt}[1]{\texttt{#1}\index{#1=\texttt{#1}|main}}
+
+\RecordChanges
+\PageIndex
+\CodelineNumbered
+
+\begin{document}
+\DocInput{datetime2-greek.dtx}
+\end{document}
+%</driver>
+%\fi
+%
+%\MakeShortVerb{"}
+%
+%\title{Greek Module for datetime2 Package}
+%\author{Nicola L. C. Talbot (inactive)}
+%\date{2018-04-18 (v1.1)}
+%\maketitle
+%
+%This module is currently unmaintained and may be subject to change.
+%If you want to volunteer to take over maintanance, contact me at
+%\url{http://www.dickimaw-books.com/contact.html}
+%
+%\begin{abstract}
+%This is the Greek language module for the \sty{datetime2}
+%package. If you want to use the settings in this module you must
+%install it in addition to installing \sty{datetime2}. If you use
+%\sty{babel} or \sty{polyglossia}, you will need this module to
+%prevent them from redefining \cs{today}. The \sty{datetime2}
+% \opt{useregional} setting must be set to "text" or "numeric"
+% for the language styles to be set.
+% Alternatively, you can set the style in the document using
+% \cs{DTMsetstyle}, but this may be changed by \cs{date}\meta{language}
+% depending on the value of the \opt{useregional} setting.
+%\end{abstract}
+%
+%I've copied the date style from \texttt{babel-greek}'s \cs{today}.
+%
+%I don't know if these settings are correct as I can't speak Greek.
+%In particular, I don't know if the "greek" time style is
+%correct. Currently this just uses the "default" time style. Please
+%be aware that this may change. Whoever takes over maintanance
+%of this module may can change it as appropriate.
+%
+%The new maintainer should add the line:
+%\begin{verbatim}
+% The Current Maintainer of this work is Name.
+%\end{verbatim}
+%to the preamble part in \texttt{datetime2-greek.ins} where Name
+%is the name of the maintainer(s) and replace
+%the `inactive' status to `maintained'.
+%
+%Currently there is only a regionless style. There is currently no
+%support for Ancient Greek.
+%
+%\StopEventually{%
+%\clearpage
+%\phantomsection
+%\addcontentsline{toc}{section}{Change History}%
+%\PrintChanges
+%\addcontentsline{toc}{section}{\indexname}%
+%\PrintIndex}
+%\section{The Code}
+%\iffalse
+% \begin{macrocode}
+%<*datetime2-greek-utf8.ldf>
+% \end{macrocode}
+%\fi
+%\subsection{UTF-8}
+%This file contains the settings that use UTF-8 characters. This
+%file is loaded if XeLaTeX or LuaLaTeX are used. Please make sure
+%your text editor is set to UTF-8 if you want to view this code.
+%\changes{1.0}{2015-03-30}{Initial release}
+% Identify module
+% \begin{macrocode}
+\ProvidesDateTimeModule{greek-utf8}[2018/04/18 v1.1]
+% \end{macrocode}
+%\begin{macro}{\DTMgreekordinal}
+% \begin{macrocode}
+\newcommand*{\DTMgreekordinal}[1]{%
+ \number#1
+}
+% \end{macrocode}
+%\end{macro}
+%
+%
+%\begin{macro}{\DTMgreekmonthname}
+% Greek month names.
+% \begin{macrocode}
+\newcommand*{\DTMgreekmonthname}[1]{%
+ \ifcase#1
+ \or
+ Ī™Ī±Ī½ĪæĻ…Ī±ĻĪÆĪæĻ…%
+ \or
+ Ī¦ĪµĪ²ĻĪæĻ…Ī±ĻĪÆĪæĻ…%
+ \or
+ ĪœĪ±ĻĻ„ĪÆĪæĻ…%
+ \or
+ Ī‘Ļ€ĻĪ¹Ī»ĪÆĪæĻ…%
+ \or
+ ĪœĪ±ĪĪæĻ…%
+ \or
+ Ī™ĪæĻ…Ī½ĪÆĪæĻ…%
+ \or
+ Ī™ĪæĻ…Ī»ĪÆĪæĻ…%
+ \or
+ Ī‘Ļ…Ī³ĪæĻĻƒĻ„ĪæĻ…%
+ \or
+ Ī£ĪµĻ€Ļ„ĪµĪ¼Ī²ĻĪÆĪæĻ…%
+ \or
+ ĪŸĪŗĻ„Ļ‰Ī²ĻĪÆĪæĻ…%
+ \or
+ ĪĪæĪµĪ¼Ī²ĻĪÆĪæĻ…%
+ \or
+ Ī”ĪµĪŗĪµĪ¼Ī²ĻĪÆĪæĻ…%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%
+%If abbreviated dates are supported, short month names should be
+%likewise provided.
+%
+%\iffalse
+% \begin{macrocode}
+%</datetime2-greek-utf8.ldf>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*datetime2-greek-ascii.ldf>
+% \end{macrocode}
+%\fi
+%\subsection{ASCII}
+%This file contains the settings that use \LaTeX\ commands for
+%non-ASCII characters. This should be input if neither XeLaTeX nor
+%LuaLaTeX are used. Even if the user has loaded \sty{inputenc} with
+%"utf8", this file should still be used not the
+%\texttt{datetime2-greek-utf8.ldf} file as the non-ASCII
+%characters are made active in that situation and would need
+%protecting against expansion.
+%\changes{1.0}{2015-03-30}{Initial release}
+% Identify module
+% \begin{macrocode}
+\ProvidesDateTimeModule{greek-ascii}[2018/04/18 v1.1]
+% \end{macrocode}
+%
+%If abbreviated dates are supported, short month names should be
+%likewise provided.
+%\begin{macro}{\DTMgreekordinal}
+% \begin{macrocode}
+\newcommand*{\DTMgreekordinal}[1]{%
+ \number#1
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMgreekmonthname}
+% Greek month names.
+% \begin{macrocode}
+\newcommand*{\DTMgreekmonthname}[1]{%
+ \ifcase#1
+ \or
+ Ianouar\protect\'iou%
+ \or
+ Febrouar\protect\'iou%
+ \or
+ Mart\protect\'iou%
+ \or
+ April\protect\'iou%
+ \or
+ Ma\protect\'{\protect\"i}ou%
+ \or
+ Ioun\protect\'iou%
+ \or
+ Ioul\protect\'iou%
+ \or
+ Augo\protect\'ustou%
+ \or
+ Septembr\protect\'iou%
+ \or
+ Oktwbr\protect\'iou%
+ \or
+ Noembr\protect\'iou%
+ \or
+ Dekembr\protect\'iou%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\iffalse
+% \begin{macrocode}
+%</datetime2-greek-ascii.ldf>
+% \end{macrocode}
+%\fi
+%
+%\subsection{Main Greek Module (\texttt{datetime2-greek.ldf})}
+%\changes{1.0}{2015-03-30}{Initial release}
+%
+%\iffalse
+% \begin{macrocode}
+%<*datetime2-greek.ldf>
+% \end{macrocode}
+%\fi
+%
+% Identify Module
+% \begin{macrocode}
+\ProvidesDateTimeModule{greek}[2018/04/18 v1.1]
+% \end{macrocode}
+% Need to find out if XeTeX or LuaTeX are being used.
+% \begin{macrocode}
+\RequirePackage{ifxetex,ifluatex}
+% \end{macrocode}
+% XeTeX and LuaTeX natively support UTF-8, so load
+% \texttt{greek-utf8} if either of those engines are used
+% otherwise load \texttt{greek-ascii}.
+% \begin{macrocode}
+\ifxetex
+ \RequireDateTimeModule{greek-utf8}
+\else
+ \ifluatex
+ \RequireDateTimeModule{greek-utf8}
+ \else
+ \RequireDateTimeModule{greek-ascii}
+ \fi
+\fi
+% \end{macrocode}
+%
+% Define the \texttt{greek} style.
+% The time style is the same as the "default" style
+% provided by \sty{datetime2}. This may need correcting. For
+% example, if a 12 hour style similar to the "englishampm" (from the
+% "english-base" module) is required.
+%
+% Allow the user a way of configuring the "greek" and
+% "greek-numeric" styles. This doesn't use the package wide
+% separators such as
+% \cs{dtm@datetimesep} in case other date formats are also required.
+%\begin{macro}{\DTMgreekdaymonthsep}
+% The separator between the day and month for the text format.
+% \begin{macrocode}
+\newcommand*{\DTMgreekdaymonthsep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMgreekmonthyearsep}
+% The separator between the month and year for the text format.
+% \begin{macrocode}
+\newcommand*{\DTMgreekmonthyearsep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMgreekdatetimesep}
+% The separator between the date and time blocks in the full format
+% (either text or numeric).
+% \begin{macrocode}
+\newcommand*{\DTMgreekdatetimesep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMgreektimezonesep}
+% The separator between the time and zone blocks in the full format
+% (either text or numeric).
+% \begin{macrocode}
+\newcommand*{\DTMgreektimezonesep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMgreekdatesep}
+% The separator for the numeric date format.
+% \begin{macrocode}
+\newcommand*{\DTMgreekdatesep}{.}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMgreektimesep}
+% The separator for the numeric time format.
+% \begin{macrocode}
+\newcommand*{\DTMgreektimesep}{:}
+% \end{macrocode}
+%\end{macro}
+%
+%Provide keys that can be used in \cs{DTMlangsetup} to set these
+%separators.
+% \begin{macrocode}
+\DTMdefkey{greek}{daymonthsep}{\renewcommand*{\DTMgreekdaymonthsep}{#1}}
+\DTMdefkey{greek}{monthyearsep}{\renewcommand*{\DTMgreekmonthyearsep}{#1}}
+\DTMdefkey{greek}{datetimesep}{\renewcommand*{\DTMgreekdatetimesep}{#1}}
+\DTMdefkey{greek}{timezonesep}{\renewcommand*{\DTMgreektimezonesep}{#1}}
+\DTMdefkey{greek}{datesep}{\renewcommand*{\DTMgreekdatesep}{#1}}
+\DTMdefkey{greek}{timesep}{\renewcommand*{\DTMgreektimesep}{#1}}
+% \end{macrocode}
+%
+% TODO: provide a boolean key to switch between full and abbreviated
+% formats if appropriate. (I don't know how the date should be
+% abbreviated.)
+%
+% Define a boolean key that determines if the time zone mappings
+% should be used.
+% \begin{macrocode}
+\DTMdefboolkey{greek}{mapzone}[true]{}
+% \end{macrocode}
+% The default is to use mappings.
+% \begin{macrocode}
+\DTMsetbool{greek}{mapzone}{true}
+% \end{macrocode}
+%
+% Define a boolean key that determines if the day of month should be
+% displayed.
+% \begin{macrocode}
+\DTMdefboolkey{greek}{showdayofmonth}[true]{}
+% \end{macrocode}
+% The default is to show the day of month.
+% \begin{macrocode}
+\DTMsetbool{greek}{showdayofmonth}{true}
+% \end{macrocode}
+%
+% Define a boolean key that determines if the year should be
+% displayed.
+% \begin{macrocode}
+\DTMdefboolkey{greek}{showyear}[true]{}
+% \end{macrocode}
+% The default is to show the year.
+% \begin{macrocode}
+\DTMsetbool{greek}{showyear}{true}
+% \end{macrocode}
+%
+% Define the "greek" style. (TODO: implement day of week?)
+% \begin{macrocode}
+\DTMnewstyle
+ {greek}% label
+ {% date style
+ \renewcommand*\DTMdisplaydate[4]{%
+ \DTMifbool{greek}{showdayofmonth}
+ {\DTMgreekordinal{##3}\DTMgreekdaymonthsep}%
+ {}%
+ \DTMgreekmonthname{##2}%
+ \DTMifbool{greek}{showyear}%
+ {%
+ \DTMgreekmonthyearsep
+ \number##1
+ }%
+ {}%
+ }%
+ \renewcommand*\DTMDisplaydate{\DTMdisplaydate}%
+ }%
+ {% time style (use default)
+ \DTMsettimestyle{default}%
+ }%
+ {% zone style
+ \DTMresetzones
+ \DTMgreekzonemaps
+ \renewcommand*{\DTMdisplayzone}[2]{%
+ \DTMifbool{greek}{mapzone}%
+ {\DTMusezonemapordefault{##1}{##2}}%
+ {%
+ \ifnum##1<0\else+\fi\DTMtwodigits{##1}%
+ \ifDTMshowzoneminutes\DTMgreektimesep\DTMtwodigits{##2}\fi
+ }%
+ }%
+ }%
+ {% full style
+ \renewcommand*{\DTMdisplay}[9]{%
+ \ifDTMshowdate
+ \DTMdisplaydate{##1}{##2}{##3}{##4}%
+ \DTMgreekdatetimesep
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \DTMgreektimezonesep
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+ \renewcommand*{\DTMDisplay}{\DTMdisplay}%
+ }%
+% \end{macrocode}
+%
+% Define numeric style.
+% \begin{macrocode}
+\DTMnewstyle
+ {greek-numeric}% label
+ {% date style
+ \renewcommand*\DTMdisplaydate[4]{%
+ \DTMifbool{greek}{showdayofmonth}%
+ {%
+ \number##3 % space intended
+ \DTMgreekdatesep
+ }%
+ {}%
+ \number##2 % space intended
+ \DTMifbool{greek}{showyear}%
+ {%
+ \DTMgreekdatesep
+ \number##1 % space intended
+ }%
+ {}%
+ }%
+ \renewcommand*{\DTMDisplaydate}[4]{\DTMdisplaydate{##1}{##2}{##3}{##4}}%
+ }%
+ {% time style
+ \renewcommand*\DTMdisplaytime[3]{%
+ \number##1
+ \DTMgreektimesep\DTMtwodigits{##2}%
+ \ifDTMshowseconds\DTMgreektimesep\DTMtwodigits{##3}\fi
+ }%
+ }%
+ {% zone style
+ \DTMresetzones
+ \DTMgreekzonemaps
+ \renewcommand*{\DTMdisplayzone}[2]{%
+ \DTMifbool{greek}{mapzone}%
+ {\DTMusezonemapordefault{##1}{##2}}%
+ {%
+ \ifnum##1<0\else+\fi\DTMtwodigits{##1}%
+ \ifDTMshowzoneminutes\DTMgreektimesep\DTMtwodigits{##2}\fi
+ }%
+ }%
+ }%
+ {% full style
+ \renewcommand*{\DTMdisplay}[9]{%
+ \ifDTMshowdate
+ \DTMdisplaydate{##1}{##2}{##3}{##4}%
+ \DTMgreekdatetimesep
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \DTMgreektimezonesep
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+ \renewcommand*{\DTMDisplay}{\DTMdisplay}%
+ }
+% \end{macrocode}
+%
+%\begin{macro}{\DTMgreekzonemaps}
+% The time zone mappings are set through this command, which can be
+% redefined if extra mappings are required or mappings need to be
+% removed.
+% \begin{macrocode}
+\newcommand*{\DTMgreekzonemaps}{%
+ \DTMdefzonemap{02}{00}{EET}%
+ \DTMdefzonemap{03}{00}{EEST}%
+}
+% \end{macrocode}
+%\end{macro}
+
+% Switch style according to the \opt{useregional} setting.
+% \begin{macrocode}
+\DTMifcaseregional
+{}% do nothing
+{\DTMsetstyle{greek}}
+{\DTMsetstyle{greek-numeric}}
+% \end{macrocode}
+%
+% Redefine \cs{dategreek} (or \cs{date}\meta{dialect}) to prevent
+% \sty{babel} from resetting \cs{today}. (For this to work,
+% \sty{babel} must already have been loaded if it's required.)
+%\changes{1.1}{2018-04-18}{removed spurious space}
+% \begin{macrocode}
+\ifcsundef{date\CurrentTrackedDialect}
+{%
+ \ifundef\dategreek
+ {% do nothing
+ }%
+ {%
+ \def\dategreek{%
+ \DTMifcaseregional
+ {}% do nothing
+ {\DTMsetstyle{greek}}%
+ {\DTMsetstyle{greek-numeric}}%
+ }%
+ }%
+}%
+{%
+ \csdef{date\CurrentTrackedDialect}{%
+ \DTMifcaseregional
+ {}% do nothing
+ {\DTMsetstyle{greek}}%
+ {\DTMsetstyle{greek-numeric}}%
+ }%
+}%
+% \end{macrocode}
+%\iffalse
+% \begin{macrocode}
+%</datetime2-greek.ldf>
+% \end{macrocode}
+%\fi
+%\Finale
+\endinput
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-greek/datetime2-greek.ins b/macros/latex/contrib/datetime2-contrib/datetime2-greek/datetime2-greek.ins
new file mode 100644
index 0000000000..18969acec2
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-greek/datetime2-greek.ins
@@ -0,0 +1,61 @@
+\input docstrip
+
+\preamble
+
+ datetime2-greek.dtx
+ Copyright 2018 Nicola Talbot
+
+ This work may be distributed and/or modified under the
+ conditions of the LaTeX Project Public License, either version 1.3
+ of this license of (at your option) any later version.
+ The latest version of this license is in
+ http://www.latex-project.org/lppl.txt
+ and version 1.3 or later is part of all distributions of LaTeX
+ version 2005/12/01 or later.
+
+ This work has the LPPL maintenance status `inactive'.
+
+ This work consists of the files datetime2-greek.dtx and
+ datetime2-greek.ins and the derived files
+ datetime2-greek-utf8.ldf, datetime2-greek-ascii.ldf and
+ datetime2-greek.ldf.
+
+\endpreamble
+
+\askforoverwritefalse
+
+\generate
+{%
+ \file
+ {datetime2-greek-utf8.ldf}%
+ {%
+ \usepreamble\defaultpreamble
+ \usepostamble\defaultpostamble
+ \from{datetime2-greek.dtx}{datetime2-greek-utf8.ldf,package}%
+ }%
+}
+
+\generate
+{%
+ \file
+ {datetime2-greek-ascii.ldf}%
+ {%
+ \usepreamble\defaultpreamble
+ \usepostamble\defaultpostamble
+ \from{datetime2-greek.dtx}{datetime2-greek-ascii.ldf,package}%
+ }%
+}
+
+\generate
+{%
+ \file
+ {datetime2-greek.ldf}%
+ {%
+ \usepreamble\defaultpreamble
+ \usepostamble\defaultpostamble
+ \from{datetime2-greek.dtx}{datetime2-greek.ldf,package}%
+ }%
+}
+
+\endbatchfile
+
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-greek/datetime2-greek.pdf b/macros/latex/contrib/datetime2-contrib/datetime2-greek/datetime2-greek.pdf
new file mode 100644
index 0000000000..648e56fe67
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-greek/datetime2-greek.pdf
Binary files differ
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-hebrew/README b/macros/latex/contrib/datetime2-contrib/datetime2-hebrew/README
new file mode 100644
index 0000000000..7537f3170b
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-hebrew/README
@@ -0,0 +1,51 @@
+Hebrew Language Module for datetime2 Package
+
+Author: Nicola L. C. Talbot (inactive)
+
+Licence: LPPL
+
+Required Packages: datetime2, tracklang
+
+This module is unmaintained. If you want to volunteer to take over
+the maintenance contact me at www.dickimaw-books.com/contact.html
+
+Example usage:
+
+\documentclass[hebrew]{article}
+\usepackage{babel}
+\usepackage[useregional]{datetime2}
+\begin{document}
+\today
+\end{document}
+
+\documentclass{article}
+\usepackage{polyglossia}
+\setmainlanguage{hebrew}
+\usepackage[hebrew]{datetime2}
+\begin{document}
+\today
+\end{document}
+
+INSTALLATION
+============
+
+latex datetime2-hebrew.ins
+
+Move all *.ldf files to
+TEXMF/tex/latex/datetime2-contrib/datetime2-hebrew/
+
+Documentation:
+
+pdflatex datetime2-hebrew.dtx
+makeindex -s gind.ist datetime2-hebrew.idx
+makeindex -s gglo.ist -o datetime2-hebrew.gls datetime2-hebrew.glo
+pdflatex datetime2-hebrew.dtx
+pdflatex datetime2-hebrew.dtx
+
+Move datetime2-hebrew.pdf and README to
+TEXMF/doc/latex/datetime2-contrib/datetime2-hebrew/
+
+This material is subject to the LaTeX Project Public License.
+See http://www.ctan.org/license/lppl1.3 for the details of that
+license.
+
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-hebrew/datetime2-hebrew.dtx b/macros/latex/contrib/datetime2-contrib/datetime2-hebrew/datetime2-hebrew.dtx
new file mode 100644
index 0000000000..08f4de2dcd
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-hebrew/datetime2-hebrew.dtx
@@ -0,0 +1,361 @@
+%\iffalse
+%<*package>
+%% \CharacterTable
+%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+%% Digits \0\1\2\3\4\5\6\7\8\9
+%% Exclamation \! Double quote \" Hash (number) \#
+%% Dollar \$ Percent \% Ampersand \&
+%% Acute accent \' Left paren \( Right paren \)
+%% Asterisk \* Plus \+ Comma \,
+%% Minus \- Point \. Solidus \/
+%% Colon \: Semicolon \; Less than \<
+%% Equals \= Greater than \> Question mark \?
+%% Commercial at \@ Left bracket \[ Backslash \\
+%% Right bracket \] Circumflex \^ Underscore \_
+%% Grave accent \` Left brace \{ Vertical bar \|
+%% Right brace \} Tilde \~}
+%</package>
+%\fi
+% \iffalse
+% Doc-Source file to use with LaTeX2e
+% Copyright (C) 2018 Nicola Talbot, all rights reserved.
+% (New maintainer add relevant lines here.)
+% \fi
+% \iffalse
+%<*driver>
+\documentclass{ltxdoc}
+
+\usepackage{alltt}
+\usepackage{graphicx}
+\usepackage[utf8]{inputenc}
+\usepackage[T1]{fontenc}
+\usepackage[colorlinks,
+ bookmarks,
+ hyperindex=false,
+ pdfauthor={Nicola L.C. Talbot},
+ pdftitle={datetime2.sty Hebrew Module}]{hyperref}
+
+\CheckSum{162}
+
+\renewcommand*{\usage}[1]{\hyperpage{#1}}
+\renewcommand*{\main}[1]{\hyperpage{#1}}
+\IndexPrologue{\section*{\indexname}\markboth{\indexname}{\indexname}}
+\setcounter{IndexColumns}{2}
+
+\newcommand*{\sty}[1]{\textsf{#1}}
+\newcommand*{\opt}[1]{\texttt{#1}\index{#1=\texttt{#1}|main}}
+
+\RecordChanges
+\PageIndex
+\CodelineNumbered
+
+\begin{document}
+\DocInput{datetime2-hebrew.dtx}
+\end{document}
+%</driver>
+%\fi
+%
+%\MakeShortVerb{"}
+%
+%\title{Hebrew Module for datetime2 Package}
+%\author{Nicola L. C. Talbot (inactive)}
+%\date{2010-04-18 (v1.1)}
+%\maketitle
+%
+%This module is currently unmaintained and may be subject to change.
+%If you want to volunteer to take over maintanance, contact me at
+%\url{http://www.dickimaw-books.com/contact.html}
+%
+%\begin{abstract}
+%This is the Hebrew language module for the \sty{datetime2}
+%package. If you want to use the settings in this module you must
+%install it in addition to installing \sty{datetime2}. If you use
+%\sty{babel} or \sty{polyglossia}, you will need this module to
+%prevent them from redefining \cs{today}. The \sty{datetime2}
+% \opt{useregional} setting must be set to "text" or "numeric"
+% for the language styles to be set.
+% Alternatively, you can set the style in the document using
+% \cs{DTMsetstyle}, but this may be changed by \cs{date}\meta{language}
+% depending on the value of the \opt{useregional} setting.
+%\end{abstract}
+%
+%The date style simply uses either \sty{babel}'s \cs{hebdate}
+%or \sty{polyglossia}'s \cs{hebrewdate} so the date style isn't
+%expandable.
+%
+%I don't know if these settings are correct as I can't speak Hebrew.
+%In particular, I don't know if the "hebrew" time style is
+%correct. Currently this just uses the "default" time style. Please
+%be aware that this may change. Whoever takes over maintanance
+%of this module may can change it as appropriate.
+%
+%The new maintainer should add the line:
+%\begin{verbatim}
+% The Current Maintainer of this work is Name.
+%\end{verbatim}
+%to the preamble part in \texttt{datetime2-hebrew.ins} where Name
+%is the name of the maintainer(s) and replace
+%the `inactive' status to `maintained'.
+%
+%
+%\StopEventually{%
+%\clearpage
+%\phantomsection
+%\addcontentsline{toc}{section}{Change History}%
+%\PrintChanges
+%\addcontentsline{toc}{section}{\indexname}%
+%\PrintIndex}
+%\section{The Code}
+% There is currently only one ".ldf" file.
+%
+%\subsection{Main Hebrew Module (\texttt{datetime2-hebrew.ldf})}
+%\changes{1.0}{2015-03-30}{Initial release}
+%
+%\iffalse
+% \begin{macrocode}
+%<*datetime2-hebrew.ldf>
+% \end{macrocode}
+%\fi
+%
+% Identify Module
+% \begin{macrocode}
+\ProvidesDateTimeModule{hebrew}[2018/04/18 v1.1]
+% \end{macrocode}
+% The date style uses \cs{hebrewdate} or \cs{hebdate}, depending on
+% which is defined. This needs to be robust, which means the date
+% can't be expanded with this style. This should be fixed if at all
+% possible. (I don't know how.)
+%\begin{macro}{\DTMhebrewdate}
+% \begin{macrocode}
+\ifdef\hebrewdate
+{%
+ \newrobustcmd*\DTMhebrewdate[3]{\hebrewdate{#3}{#2}{#1}}%
+}%
+{%
+ \ifdef\hebdate
+ {%
+ \newrobustcmd*\DTMhebrewdate[3]{\hebdate{#3}{#2}{#1}}%
+ }%
+ {%
+ \newcommand*\DTMhebrewdate[3]{#3-#2-#1}%
+ \PackageWarning{datetime2-hebrew}{Neither
+ \string\hebrewdate\space nor \string\hebdate\space defined}{}%
+ }%
+}%
+% \end{macrocode}
+%\end{macro}
+%For some reason \cs{hebrewdate} doesn't work with \cs{datetime2}'s
+%definition of \cs{today} so it needs to be changed.
+%\begin{macro}{\today}
+% \begin{macrocode}
+\renewcommand*{\today}{\DTMdisplaydate{\year}{\month}{\day}{-1}}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\Today}
+% \begin{macrocode}
+\renewcommand*{\Today}{\DTMDisplaydate{\year}{\month}{\day}{-1}}
+% \end{macrocode}
+%\end{macro}
+%
+%The full style will probably need to check for RL or LR.
+%\begin{macro}{\DTMhebrewdatetimesep}
+% The separator between the date and time blocks in the full format
+% (either text or numeric).
+% \begin{macrocode}
+\newcommand*{\DTMhebrewdatetimesep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMhebrewtimezonesep}
+% The separator between the time and zone blocks in the full format
+% (either text or numeric).
+% \begin{macrocode}
+\newcommand*{\DTMhebrewtimezonesep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMhebrewdatesep}
+% The separator for the numeric date format.
+% \begin{macrocode}
+\newcommand*{\DTMhebrewdatesep}{.}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMhebrewtimesep}
+% The separator for the numeric time format.
+% \begin{macrocode}
+\newcommand*{\DTMhebrewtimesep}{:}
+% \end{macrocode}
+%\end{macro}
+%
+%Provide keys that can be used in \cs{DTMlangsetup} to set these
+%separators.
+% \begin{macrocode}
+\DTMdefkey{hebrew}{datetimesep}{\renewcommand*{\DTMhebrewdatetimesep}{#1}}
+\DTMdefkey{hebrew}{timezonesep}{\renewcommand*{\DTMhebrewtimezonesep}{#1}}
+\DTMdefkey{hebrew}{datesep}{\renewcommand*{\DTMhebrewdatesep}{#1}}
+\DTMdefkey{hebrew}{timesep}{\renewcommand*{\DTMhebrewtimesep}{#1}}
+% \end{macrocode}
+%
+% Define a boolean key that determines if the time zone mappings
+% should be used.
+% \begin{macrocode}
+\DTMdefboolkey{hebrew}{mapzone}[true]{}
+% \end{macrocode}
+% The default is to use mappings.
+% \begin{macrocode}
+\DTMsetbool{hebrew}{mapzone}{true}
+% \end{macrocode}
+%
+% Define the "hebrew" style.
+% \begin{macrocode}
+\DTMnewstyle
+ {hebrew}% label
+ {% date style
+ \renewcommand*\DTMdisplaydate[4]{%
+ \DTMtexorpdfstring{\DTMhebrewdate{##1}{##2}{##3}}{##3-##2-##1}%
+ }%
+ \renewcommand*\DTMDisplaydate{\DTMdisplaydate}%
+ }%
+ {% time style (use default)
+ \DTMsettimestyle{default}%
+ }%
+ {% zone style
+ \DTMresetzones
+ \DTMhebrewzonemaps
+ \renewcommand*{\DTMdisplayzone}[2]{%
+ \DTMifbool{hebrew}{mapzone}%
+ {\DTMusezonemapordefault{##1}{##2}}%
+ {%
+ \ifnum##1<0\else+\fi\DTMtwodigits{##1}%
+ \ifDTMshowzoneminutes\DTMhebrewtimesep\DTMtwodigits{##2}\fi
+ }%
+ }%
+ }%
+ {% full style
+ \renewcommand*{\DTMdisplay}[9]{%
+ \ifDTMshowdate
+ \DTMdisplaydate{##1}{##2}{##3}{##4}%
+ \DTMhebrewdatetimesep
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \DTMhebrewtimezonesep
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+ \renewcommand*{\DTMDisplay}{\DTMdisplay}%
+ }%
+% \end{macrocode}
+%
+% Define numeric style.
+% \begin{macrocode}
+\DTMnewstyle
+ {hebrew-numeric}% label
+ {% date style
+ \renewcommand*\DTMdisplaydate[4]{%
+ \DTMifbool{hebrew}{showdayofmonth}%
+ {%
+ \number##3 % space intended
+ \DTMhebrewdatesep
+ }%
+ {}%
+ \number##2 % space intended
+ \DTMifbool{hebrew}{showyear}%
+ {%
+ \DTMhebrewdatesep
+ \number##1 % space intended
+ }%
+ {}%
+ }%
+ \renewcommand*\DTMDisplaydate{\DTMdisplaydate}%
+ }%
+ {% time style
+ \renewcommand*\DTMdisplaytime[3]{%
+ \number##1
+ \DTMhebrewtimesep\DTMtwodigits{##2}%
+ \ifDTMshowseconds\DTMhebrewtimesep\DTMtwodigits{##3}\fi
+ }%
+ }%
+ {% zone style
+ \DTMresetzones
+ \DTMhebrewzonemaps
+ \renewcommand*{\DTMdisplayzone}[2]{%
+ \DTMifbool{hebrew}{mapzone}%
+ {\DTMusezonemapordefault{##1}{##2}}%
+ {%
+ \ifnum##1<0\else+\fi\DTMtwodigits{##1}%
+ \ifDTMshowzoneminutes\DTMhebrewtimesep\DTMtwodigits{##2}\fi
+ }%
+ }%
+ }%
+ {% full style
+ \renewcommand*{\DTMdisplay}[9]{%
+ \ifDTMshowdate
+ \DTMdisplaydate{##1}{##2}{##3}{##4}%
+ \DTMhebrewdatetimesep
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \DTMhebrewtimezonesep
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+ \renewcommand*{\DTMDisplay}{\DTMdisplay}%
+ }
+% \end{macrocode}
+%
+%\begin{macro}{\DTMhebrewzonemaps}
+% The time zone mappings are set through this command, which can be
+% redefined if extra mappings are required or mappings need to be
+% removed. There are currently no mappings.
+% \begin{macrocode}
+\newcommand*{\DTMhebrewzonemaps}{%
+}
+% \end{macrocode}
+%\end{macro}
+
+% Switch style according to the \opt{useregional} setting.
+% \begin{macrocode}
+\DTMifcaseregional
+{}% do nothing
+{\DTMsetstyle{hebrew}}
+{\DTMsetstyle{hebrew-numeric}}
+% \end{macrocode}
+%
+% Redefine \cs{datehebrew} (or \cs{date}\meta{dialect}) to prevent
+% \sty{babel} from resetting \cs{today}. (For this to work,
+% \sty{babel} must already have been loaded if it's required.)
+%\changes{1.1}{2018-04-18}{removed spurious space}
+% \begin{macrocode}
+\ifcsundef{date\CurrentTrackedDialect}
+{%
+ \ifundef\datehebrew
+ {% do nothing
+ }%
+ {%
+ \def\datehebrew{%
+ \DTMifcaseregional
+ {}% do nothing
+ {\DTMsetstyle{hebrew}}%
+ {\DTMsetstyle{hebrew-numeric}}%
+ }%
+ }%
+}%
+{%
+ \csdef{date\CurrentTrackedDialect}{%
+ \DTMifcaseregional
+ {}% do nothing
+ {\DTMsetstyle{hebrew}}%
+ {\DTMsetstyle{hebrew-numeric}}%
+ }%
+}%
+% \end{macrocode}
+%\iffalse
+% \begin{macrocode}
+%</datetime2-hebrew.ldf>
+% \end{macrocode}
+%\fi
+%\Finale
+\endinput
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-hebrew/datetime2-hebrew.ins b/macros/latex/contrib/datetime2-contrib/datetime2-hebrew/datetime2-hebrew.ins
new file mode 100644
index 0000000000..9ab52c0f41
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-hebrew/datetime2-hebrew.ins
@@ -0,0 +1,38 @@
+\input docstrip
+
+\preamble
+
+ datetime2-hebrew.dtx
+ Copyright 2018 Nicola Talbot
+
+ This work may be distributed and/or modified under the
+ conditions of the LaTeX Project Public License, either version 1.3
+ of this license of (at your option) any later version.
+ The latest version of this license is in
+ http://www.latex-project.org/lppl.txt
+ and version 1.3 or later is part of all distributions of LaTeX
+ version 2005/12/01 or later.
+
+ This work has the LPPL maintenance status `inactive'.
+
+ This work consists of the files datetime2-hebrew.dtx and
+ datetime2-hebrew.ins and the derived file
+ datetime2-hebrew.ldf.
+
+\endpreamble
+
+\askforoverwritefalse
+
+\generate
+{%
+ \file
+ {datetime2-hebrew.ldf}%
+ {%
+ \usepreamble\defaultpreamble
+ \usepostamble\defaultpostamble
+ \from{datetime2-hebrew.dtx}{datetime2-hebrew.ldf,package}%
+ }%
+}
+
+\endbatchfile
+
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-hebrew/datetime2-hebrew.pdf b/macros/latex/contrib/datetime2-contrib/datetime2-hebrew/datetime2-hebrew.pdf
new file mode 100644
index 0000000000..bd0cdf2956
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-hebrew/datetime2-hebrew.pdf
Binary files differ
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-icelandic/README b/macros/latex/contrib/datetime2-contrib/datetime2-icelandic/README
new file mode 100644
index 0000000000..eb9433c1be
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-icelandic/README
@@ -0,0 +1,57 @@
+Icelandic Language Module for datetime2 Package
+
+Author: Nicola L. C. Talbot (inactive)
+
+Licence: LPPL
+
+Required Packages: datetime2, tracklang
+
+This module is unmaintained. If you want to volunteer to take over
+the maintenance contact me at www.dickimaw-books.com/contact.html
+
+Example usage:
+
+\documentclass{article}
+\usepackage[icelandic]{datetime2}
+\begin{document}
+\today
+\end{document}
+
+\documentclass[icelandic]{article}
+\usepackage{babel}
+\usepackage[useregional]{datetime2}
+\begin{document}
+\today
+\end{document}
+
+\documentclass{article}
+\usepackage{polyglossia}
+\setmainlanguage{icelandic}
+\usepackage[icelandic]{datetime2}
+\begin{document}
+\today
+\end{document}
+
+INSTALLATION
+============
+
+xelatex datetime2-icelandic.ins
+
+Move all *.ldf files to
+TEXMF/tex/latex/datetime2-contrib/datetime2-icelandic/
+
+Documentation:
+
+xelatex datetime2-icelandic.dtx
+makeindex -s gind.ist datetime2-icelandic.idx
+makeindex -s gglo.ist -o datetime2-icelandic.gls datetime2-icelandic.glo
+xelatex datetime2-icelandic.dtx
+xelatex datetime2-icelandic.dtx
+
+Move datetime2-icelandic.pdf and README to
+TEXMF/doc/latex/datetime2-contrib/datetime2-icelandic/
+
+This material is subject to the LaTeX Project Public License.
+See http://www.ctan.org/license/lppl1.3 for the details of that
+license.
+
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-icelandic/datetime2-icelandic.dtx b/macros/latex/contrib/datetime2-contrib/datetime2-icelandic/datetime2-icelandic.dtx
new file mode 100644
index 0000000000..560bcdb1d2
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-icelandic/datetime2-icelandic.dtx
@@ -0,0 +1,632 @@
+%\iffalse
+%<*package>
+%% \CharacterTable
+%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+%% Digits \0\1\2\3\4\5\6\7\8\9
+%% Exclamation \! Double quote \" Hash (number) \#
+%% Dollar \$ Percent \% Ampersand \&
+%% Acute accent \' Left paren \( Right paren \)
+%% Asterisk \* Plus \+ Comma \,
+%% Minus \- Point \. Solidus \/
+%% Colon \: Semicolon \; Less than \<
+%% Equals \= Greater than \> Question mark \?
+%% Commercial at \@ Left bracket \[ Backslash \\
+%% Right bracket \] Circumflex \^ Underscore \_
+%% Grave accent \` Left brace \{ Vertical bar \|
+%% Right brace \} Tilde \~}
+%</package>
+%\fi
+% \iffalse
+% Doc-Source file to use with LaTeX2e
+% Copyright (C) 2018 Nicola Talbot, all rights reserved.
+% (New maintainer add relevant lines here.)
+% \fi
+% \iffalse
+%<*driver>
+\documentclass{ltxdoc}
+
+\usepackage{alltt}
+\usepackage{graphicx}
+\usepackage{fontspec}
+\usepackage[colorlinks,
+ bookmarks,
+ hyperindex=false,
+ pdfauthor={Nicola L.C. Talbot},
+ pdftitle={datetime2.sty Icelandic Module}]{hyperref}
+
+\setmainfont{Liberation Serif}
+\setmonofont{Liberation Mono}
+
+\CheckSum{300}
+
+\renewcommand*{\usage}[1]{\hyperpage{#1}}
+\renewcommand*{\main}[1]{\hyperpage{#1}}
+\IndexPrologue{\section*{\indexname}\markboth{\indexname}{\indexname}}
+\setcounter{IndexColumns}{2}
+
+\newcommand*{\sty}[1]{\textsf{#1}}
+\newcommand*{\opt}[1]{\texttt{#1}\index{#1=\texttt{#1}|main}}
+
+\RecordChanges
+\PageIndex
+\CodelineNumbered
+
+\begin{document}
+\DocInput{datetime2-icelandic.dtx}
+\end{document}
+%</driver>
+%\fi
+%
+%\MakeShortVerb{"}
+%
+%\title{Icelandic Module for datetime2 Package}
+%\author{Nicola L. C. Talbot (inactive)}
+%\date{2018-04-24 (v1.1)}
+%\maketitle
+%
+%This module is currently unmaintained and may be subject to change.
+%If you want to volunteer to take over maintanance, contact me at
+%\url{http://www.dickimaw-books.com/contact.html}
+%
+%\begin{abstract}
+%This is the Icelandic language module for the \sty{datetime2}
+%package. If you want to use the settings in this module you must
+%install it in addition to installing \sty{datetime2}. If you use
+%\sty{babel} or \sty{polyglossia}, you will need this module to
+%prevent them from redefining \cs{today}. The \sty{datetime2}
+% \opt{useregional} setting must be set to "text" or "numeric"
+% for the language styles to be set.
+% Alternatively, you can set the style in the document using
+% \cs{DTMsetstyle}, but this may be changed by \cs{date}\meta{language}
+% depending on the value of the \opt{useregional} setting.
+%\end{abstract}
+%
+%I've copied the date style from \texttt{babel-icelandic}'s \cs{today}.
+%
+%I don't know if these settings are correct as I can't speak Icelandic.
+%In particular, I don't know if the "icelandic" time style is
+%correct. Currently this just uses the "default" time style. Please
+%be aware that this may change. Whoever takes over maintanance
+%of this module may can change it as appropriate.
+%
+%The new maintainer should add the line:
+%\begin{verbatim}
+% The Current Maintainer of this work is Name.
+%\end{verbatim}
+%to the preamble part in \texttt{datetime2-icelandic.ins} where Name
+%is the name of the maintainer(s) and replace
+%the `inactive' status to `maintained'.
+%
+%Currently there is only a regionless style.
+%
+%\StopEventually{%
+%\clearpage
+%\phantomsection
+%\addcontentsline{toc}{section}{Change History}%
+%\PrintChanges
+%\addcontentsline{toc}{section}{\indexname}%
+%\PrintIndex}
+%\section{The Code}
+%\iffalse
+% \begin{macrocode}
+%<*datetime2-icelandic-utf8.ldf>
+% \end{macrocode}
+%\fi
+%\subsection{UTF-8}
+%This file contains the settings that use UTF-8 characters. This
+%file is loaded if XeLaTeX or LuaLaTeX are used. Please make sure
+%your text editor is set to UTF-8 if you want to view this code.
+%\changes{1.0}{2015-03-30}{Initial release}
+% Identify module
+% \begin{macrocode}
+\ProvidesDateTimeModule{icelandic-utf8}[2018/04/24 v1.1]
+% \end{macrocode}
+%\begin{macro}{\DTMicelandicordinal}
+% \begin{macrocode}
+\newcommand*{\DTMicelandicordinal}[1]{%
+ \number#1.%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%
+%\begin{macro}{\DTMicelandicmonthname}
+% Icelandic month names.
+% \begin{macrocode}
+\newcommand*{\DTMicelandicmonthname}[1]{%
+ \ifcase#1
+ \or
+ janĆŗar%
+ \or
+ febrĆŗar%
+ \or
+ mars%
+ \or
+ aprĆ­l%
+ \or
+ maĆ­%
+ \or
+ jĆŗnĆ­%
+ \or
+ jĆŗlĆ­%
+ \or
+ Ć”gĆŗst%
+ \or
+ september%
+ \or
+ oktĆ³ber%
+ \or
+ nĆ³vember%
+ \or
+ desembe%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMicelandicMonthname}
+% As above but capitalize.
+% \begin{macrocode}
+\newcommand*{\DTMicelandicMonthname}[1]{%
+ \ifcase#1
+ \or
+ JanĆŗar%
+ \or
+ FebrĆŗar%
+ \or
+ Mars%
+ \or
+ AprĆ­l%
+ \or
+ MaĆ­%
+ \or
+ JĆŗnĆ­%
+ \or
+ JĆŗlĆ­%
+ \or
+ ƁgĆŗst%
+ \or
+ September%
+ \or
+ OktĆ³ber%
+ \or
+ NĆ³vember%
+ \or
+ Desembe%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%If abbreviated dates are supported, short month names should be
+%likewise provided.
+%
+%\iffalse
+% \begin{macrocode}
+%</datetime2-icelandic-utf8.ldf>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*datetime2-icelandic-ascii.ldf>
+% \end{macrocode}
+%\fi
+%\subsection{ASCII}
+%This file contains the settings that use \LaTeX\ commands for
+%non-ASCII characters. This should be input if neither XeLaTeX nor
+%LuaLaTeX are used. Even if the user has loaded \sty{inputenc} with
+%"utf8", this file should still be used not the
+%\texttt{datetime2-icelandic-utf8.ldf} file as the non-ASCII
+%characters are made active in that situation and would need
+%protecting against expansion.
+%\changes{1.0}{2015-03-30}{Initial release}
+% Identify module
+% \begin{macrocode}
+\ProvidesDateTimeModule{icelandic-ascii}[2018/04/24 v1.1]
+% \end{macrocode}
+%
+%If abbreviated dates are supported, short month names should be
+%likewise provided.
+%\begin{macro}{\DTMicelandicordinal}
+% \begin{macrocode}
+\newcommand*{\DTMicelandicordinal}[1]{%
+ \number#1.%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMicelandicmonthname}
+% Icelandic month names.
+% \begin{macrocode}
+\newcommand*{\DTMicelandicmonthname}[1]{%
+ \ifcase#1
+ \or
+ jan\protect\'uar%
+ \or
+ febr\protect\'uar%
+ \or
+ mars%
+ \or
+ apr\protect\'il%
+ \or
+ ma\protect\'i%
+ \or
+ j\protect\'un\protect\'i%
+ \or
+ j\protect\'ul\protect\'i%
+ \or
+ \protect\'ag\protect\'ust%
+ \or
+ september%
+ \or
+ okt\protect\'ober%
+ \or
+ n\protect\'ovember%
+ \or
+ desembe%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMicelandicMonthname}
+% As above but capitalize.
+% \begin{macrocode}
+\newcommand*{\DTMicelandicMonthname}[1]{%
+ \ifcase#1
+ \or
+ Jan\protect\'uar%
+ \or
+ Febr\protect\'uar%
+ \or
+ Mars%
+ \or
+ Apr\protect\'il%
+ \or
+ Ma\protect\'i%
+ \or
+ J\protect\'un\protect\'i%
+ \or
+ J\protect\'ul\protect\'i%
+ \or
+ \protect\'Ag\protect\'ust%
+ \or
+ September%
+ \or
+ Okt\protect\'ober%
+ \or
+ N\protect\'ovember%
+ \or
+ Desembe%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%
+%\iffalse
+% \begin{macrocode}
+%</datetime2-icelandic-ascii.ldf>
+% \end{macrocode}
+%\fi
+%
+%\subsection{Main Icelandic Module (\texttt{datetime2-icelandic.ldf})}
+%\changes{1.0}{2015-03-30}{Initial release}
+%
+%\iffalse
+% \begin{macrocode}
+%<*datetime2-icelandic.ldf>
+% \end{macrocode}
+%\fi
+%
+% Identify Module
+% \begin{macrocode}
+\ProvidesDateTimeModule{icelandic}[2018/04/24 v1.1]
+% \end{macrocode}
+% Need to find out if XeTeX or LuaTeX are being used.
+% \begin{macrocode}
+\RequirePackage{ifxetex,ifluatex}
+% \end{macrocode}
+% XeTeX and LuaTeX natively support UTF-8, so load
+% \texttt{icelandic-utf8} if either of those engines are used
+% otherwise load \texttt{icelandic-ascii}.
+% \begin{macrocode}
+\ifxetex
+ \RequireDateTimeModule{icelandic-utf8}
+\else
+ \ifluatex
+ \RequireDateTimeModule{icelandic-utf8}
+ \else
+ \RequireDateTimeModule{icelandic-ascii}
+ \fi
+\fi
+% \end{macrocode}
+%
+% Define the \texttt{icelandic} style.
+% The time style is the same as the "default" style
+% provided by \sty{datetime2}. This may need correcting. For
+% example, if a 12 hour style similar to the "englishampm" (from the
+% "english-base" module) is required.
+%
+% Allow the user a way of configuring the "icelandic" and
+% "icelandic-numeric" styles. This doesn't use the package wide
+% separators such as
+% \cs{dtm@datetimesep} in case other date formats are also required.
+%\begin{macro}{\DTMicelandicdaymonthsep}
+% The separator between the day and month for the text format.
+% \begin{macrocode}
+\newcommand*{\DTMicelandicdaymonthsep}{%
+ \DTMtexorpdfstring{\protect~}{\space}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMicelandicmonthyearsep}
+% The separator between the month and year for the text format.
+% \begin{macrocode}
+\newcommand*{\DTMicelandicmonthyearsep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMicelandicdatetimesep}
+% The separator between the date and time blocks in the full format
+% (either text or numeric).
+% \begin{macrocode}
+\newcommand*{\DTMicelandicdatetimesep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMicelandictimezonesep}
+% The separator between the time and zone blocks in the full format
+% (either text or numeric).
+% \begin{macrocode}
+\newcommand*{\DTMicelandictimezonesep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMicelandicdatesep}
+% The separator for the numeric date format.
+% \begin{macrocode}
+\newcommand*{\DTMicelandicdatesep}{/}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMicelandictimesep}
+% The separator for the numeric time format.
+% \begin{macrocode}
+\newcommand*{\DTMicelandictimesep}{:}
+% \end{macrocode}
+%\end{macro}
+%
+%Provide keys that can be used in \cs{DTMlangsetup} to set these
+%separators.
+% \begin{macrocode}
+\DTMdefkey{icelandic}{daymonthsep}{\renewcommand*{\DTMicelandicdaymonthsep}{#1}}
+\DTMdefkey{icelandic}{monthyearsep}{\renewcommand*{\DTMicelandicmonthyearsep}{#1}}
+\DTMdefkey{icelandic}{datetimesep}{\renewcommand*{\DTMicelandicdatetimesep}{#1}}
+\DTMdefkey{icelandic}{timezonesep}{\renewcommand*{\DTMicelandictimezonesep}{#1}}
+\DTMdefkey{icelandic}{datesep}{\renewcommand*{\DTMicelandicdatesep}{#1}}
+\DTMdefkey{icelandic}{timesep}{\renewcommand*{\DTMicelandictimesep}{#1}}
+% \end{macrocode}
+%
+% TODO: provide a boolean key to switch between full and abbreviated
+% formats if appropriate. (I don't know how the date should be
+% abbreviated.)
+%
+% Define a boolean key that determines if the time zone mappings
+% should be used.
+% \begin{macrocode}
+\DTMdefboolkey{icelandic}{mapzone}[true]{}
+% \end{macrocode}
+% The default is to use mappings.
+% \begin{macrocode}
+\DTMsetbool{icelandic}{mapzone}{true}
+% \end{macrocode}
+%
+% Define a boolean key that determines if the day of month should be
+% displayed.
+% \begin{macrocode}
+\DTMdefboolkey{icelandic}{showdayofmonth}[true]{}
+% \end{macrocode}
+% The default is to show the day of month.
+% \begin{macrocode}
+\DTMsetbool{icelandic}{showdayofmonth}{true}
+% \end{macrocode}
+%
+% Define a boolean key that determines if the year should be
+% displayed.
+% \begin{macrocode}
+\DTMdefboolkey{icelandic}{showyear}[true]{}
+% \end{macrocode}
+% The default is to show the year.
+% \begin{macrocode}
+\DTMsetbool{icelandic}{showyear}{true}
+% \end{macrocode}
+%
+% Define the "icelandic" style. (TODO: implement day of week?)
+% \begin{macrocode}
+\DTMnewstyle
+ {icelandic}% label
+ {% date style
+ \renewcommand*\DTMdisplaydate[4]{%
+ \DTMifbool{icelandic}{showdayofmonth}
+ {\DTMicelandicordinal{##3}\DTMicelandicdaymonthsep}%
+ {}%
+ \DTMicelandicmonthname{##2}%
+ \DTMifbool{icelandic}{showyear}%
+ {%
+ \DTMicelandicmonthyearsep
+ \number##1
+ }%
+ {}%
+ }%
+ \renewcommand*\DTMDisplaydate[4]{%
+ \DTMifbool{icelandic}{showdayofmonth}
+ {%
+ \DTMicelandicordinal{##3}\DTMicelandicdaymonthsep
+ \DTMicelandicmonthname{##2}%
+ }%
+ {%
+ \DTMicelandicMonthname{##2}%
+ }%
+ \DTMifbool{icelandic}{showyear}%
+ {%
+ \DTMicelandicmonthyearsep
+ \number##1
+ }%
+ {}%
+ }%
+ }%
+ {% time style (use default)
+ \DTMsettimestyle{default}%
+ }%
+ {% zone style
+ \DTMresetzones
+ \DTMicelandiczonemaps
+ \renewcommand*{\DTMdisplayzone}[2]{%
+ \DTMifbool{icelandic}{mapzone}%
+ {\DTMusezonemapordefault{##1}{##2}}%
+ {%
+ \ifnum##1<0\else+\fi\DTMtwodigits{##1}%
+ \ifDTMshowzoneminutes\DTMicelandictimesep\DTMtwodigits{##2}\fi
+ }%
+ }%
+ }%
+ {% full style
+ \renewcommand*{\DTMdisplay}[9]{%
+ \ifDTMshowdate
+ \DTMdisplaydate{##1}{##2}{##3}{##4}%
+ \DTMicelandicdatetimesep
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \DTMicelandictimezonesep
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+ \renewcommand*{\DTMDisplay}[9]{%
+ \ifDTMshowdate
+ \DTMDisplaydate{##1}{##2}{##3}{##4}%
+ \DTMicelandicdatetimesep
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \DTMicelandictimezonesep
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+ }%
+% \end{macrocode}
+%
+% Define numeric style.
+% \begin{macrocode}
+\DTMnewstyle
+ {icelandic-numeric}% label
+ {% date style
+ \renewcommand*\DTMdisplaydate[4]{%
+ \DTMifbool{icelandic}{showdayofmonth}%
+ {%
+ \number##3 % space intended
+ \DTMicelandicdatesep
+ }%
+ {}%
+ \number##2 % space intended
+ \DTMifbool{icelandic}{showyear}%
+ {%
+ \DTMicelandicdatesep
+ \number##1 % space intended
+ }%
+ {}%
+ }%
+ \renewcommand*{\DTMDisplaydate}{\DTMdisplaydate}%
+ }%
+ {% time style
+ \renewcommand*\DTMdisplaytime[3]{%
+ \number##1
+ \DTMicelandictimesep\DTMtwodigits{##2}%
+ \ifDTMshowseconds\DTMicelandictimesep\DTMtwodigits{##3}\fi
+ }%
+ }%
+ {% zone style
+ \DTMresetzones
+ \DTMicelandiczonemaps
+ \renewcommand*{\DTMdisplayzone}[2]{%
+ \DTMifbool{icelandic}{mapzone}%
+ {\DTMusezonemapordefault{##1}{##2}}%
+ {%
+ \ifnum##1<0\else+\fi\DTMtwodigits{##1}%
+ \ifDTMshowzoneminutes\DTMicelandictimesep\DTMtwodigits{##2}\fi
+ }%
+ }%
+ }%
+ {% full style
+ \renewcommand*{\DTMdisplay}[9]{%
+ \ifDTMshowdate
+ \DTMdisplaydate{##1}{##2}{##3}{##4}%
+ \DTMicelandicdatetimesep
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \DTMicelandictimezonesep
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+ \renewcommand*{\DTMDisplay}{\DTMdisplay}%
+ }
+% \end{macrocode}
+%
+%\begin{macro}{\DTMicelandiczonemaps}
+% The time zone mappings are set through this command, which can be
+% redefined if extra mappings are required or mappings need to be
+% removed.
+% \begin{macrocode}
+\newcommand*{\DTMicelandiczonemaps}{%
+ \DTMdefzonemap{00}{00}{GMT}%
+}
+% \end{macrocode}
+%\end{macro}
+
+% Switch style according to the \opt{useregional} setting.
+% \begin{macrocode}
+\DTMifcaseregional
+{}% do nothing
+{\DTMsetstyle{icelandic}}
+{\DTMsetstyle{icelandic-numeric}}
+% \end{macrocode}
+%
+% Redefine \cs{dateicelandic} (or \cs{date}\meta{dialect}) to prevent
+% \sty{babel} from resetting \cs{today}. (For this to work,
+% \sty{babel} must already have been loaded if it's required.)
+%\changes{1.1}{2018-04-25}{removed spurious space}
+% \begin{macrocode}
+\ifcsundef{date\CurrentTrackedDialect}
+{%
+ \ifundef\dateicelandic
+ {% do nothing
+ }%
+ {%
+ \def\dateicelandic{%
+ \DTMifcaseregional
+ {}% do nothing
+ {\DTMsetstyle{icelandic}}%
+ {\DTMsetstyle{icelandic-numeric}}%
+ }%
+ }%
+}%
+{%
+ \csdef{date\CurrentTrackedDialect}{%
+ \DTMifcaseregional
+ {}% do nothing
+ {\DTMsetstyle{icelandic}}%
+ {\DTMsetstyle{icelandic-numeric}}%
+ }%
+}%
+% \end{macrocode}
+%\iffalse
+% \begin{macrocode}
+%</datetime2-icelandic.ldf>
+% \end{macrocode}
+%\fi
+%\Finale
+\endinput
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-icelandic/datetime2-icelandic.ins b/macros/latex/contrib/datetime2-contrib/datetime2-icelandic/datetime2-icelandic.ins
new file mode 100644
index 0000000000..c2d0571be5
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-icelandic/datetime2-icelandic.ins
@@ -0,0 +1,61 @@
+\input docstrip
+
+\preamble
+
+ datetime2-icelandic.dtx
+ Copyright 2018 Nicola Talbot
+
+ This work may be distributed and/or modified under the
+ conditions of the LaTeX Project Public License, either version 1.3
+ of this license of (at your option) any later version.
+ The latest version of this license is in
+ http://www.latex-project.org/lppl.txt
+ and version 1.3 or later is part of all distributions of LaTeX
+ version 2005/12/01 or later.
+
+ This work has the LPPL maintenance status `inactive'.
+
+ This work consists of the files datetime2-icelandic.dtx and
+ datetime2-icelandic.ins and the derived files
+ datetime2-icelandic-utf8.ldf, datetime2-icelandic-ascii.ldf and
+ datetime2-icelandic.ldf.
+
+\endpreamble
+
+\askforoverwritefalse
+
+\generate
+{%
+ \file
+ {datetime2-icelandic-utf8.ldf}%
+ {%
+ \usepreamble\defaultpreamble
+ \usepostamble\defaultpostamble
+ \from{datetime2-icelandic.dtx}{datetime2-icelandic-utf8.ldf,package}%
+ }%
+}
+
+\generate
+{%
+ \file
+ {datetime2-icelandic-ascii.ldf}%
+ {%
+ \usepreamble\defaultpreamble
+ \usepostamble\defaultpostamble
+ \from{datetime2-icelandic.dtx}{datetime2-icelandic-ascii.ldf,package}%
+ }%
+}
+
+\generate
+{%
+ \file
+ {datetime2-icelandic.ldf}%
+ {%
+ \usepreamble\defaultpreamble
+ \usepostamble\defaultpostamble
+ \from{datetime2-icelandic.dtx}{datetime2-icelandic.ldf,package}%
+ }%
+}
+
+\endbatchfile
+
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-icelandic/datetime2-icelandic.pdf b/macros/latex/contrib/datetime2-contrib/datetime2-icelandic/datetime2-icelandic.pdf
new file mode 100644
index 0000000000..501065608f
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-icelandic/datetime2-icelandic.pdf
Binary files differ
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-irish/README b/macros/latex/contrib/datetime2-contrib/datetime2-irish/README
new file mode 100644
index 0000000000..a00fa4ca8d
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-irish/README
@@ -0,0 +1,71 @@
+Irish Gaelic Language Module for datetime2 Package
+
+Author: Nicola L. C. Talbot (inactive)
+
+Licence: LPPL
+
+Required Packages: datetime2, tracklang
+
+This module is unmaintained. If you want to volunteer to take over
+the maintenance contact me at www.dickimaw-books.com/contact.html
+
+Example usage:
+
+\documentclass{article}
+\usepackage[irish]{datetime2}
+\begin{document}
+\today
+\end{document}
+
+\documentclass[irish]{article}
+\usepackage{babel}
+\usepackage[useregional]{datetime2}
+\begin{document}
+\today
+\end{document}
+
+\documentclass{article}
+\usepackage{polyglossia}
+\setmainlanguage{irish}
+\usepackage[irish]{datetime2}
+\begin{document}
+\today
+\end{document}
+
+Options using language-region ISO codes (requires tracklang v1.2):
+
+\documentclass{article}
+\usepackage[ga-IE]{datetime2}
+\begin{document}
+\today
+\end{document}
+
+\documentclass{article}
+\usepackage[ga-GB]{datetime2}
+\begin{document}
+\today
+\end{document}
+
+INSTALLATION
+============
+
+latex datetime2-irish.ins
+
+Move all *.ldf files to
+TEXMF/tex/latex/datetime2-contrib/datetime2-irish/
+
+Documentation:
+
+pdflatex datetime2-irish.dtx
+makeindex -s gind.ist datetime2-irish.idx
+makeindex -s gglo.ist -o datetime2-irish.gls datetime2-irish.glo
+pdflatex datetime2-irish.dtx
+pdflatex datetime2-irish.dtx
+
+Move datetime2-irish.pdf to
+TEXMF/doc/latex/datetime2-contrib/datetime2-irish/
+
+This material is subject to the LaTeX Project Public License.
+See http://www.ctan.org/license/lppl1.3 for the details of that
+license.
+
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-irish/datetime2-irish.dtx b/macros/latex/contrib/datetime2-contrib/datetime2-irish/datetime2-irish.dtx
new file mode 100644
index 0000000000..f72e8e7222
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-irish/datetime2-irish.dtx
@@ -0,0 +1,1133 @@
+%\iffalse
+%<*package>
+%% \CharacterTable
+%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+%% Digits \0\1\2\3\4\5\6\7\8\9
+%% Exclamation \! Double quote \" Hash (number) \#
+%% Dollar \$ Percent \% Ampersand \&
+%% Acute accent \' Left paren \( Right paren \)
+%% Asterisk \* Plus \+ Comma \,
+%% Minus \- Point \. Solidus \/
+%% Colon \: Semicolon \; Less than \<
+%% Equals \= Greater than \> Question mark \?
+%% Commercial at \@ Left bracket \[ Backslash \\
+%% Right bracket \] Circumflex \^ Underscore \_
+%% Grave accent \` Left brace \{ Vertical bar \|
+%% Right brace \} Tilde \~}
+%</package>
+%\fi
+% \iffalse
+% Doc-Source file to use with LaTeX2e
+% Copyright (C) 2018 Nicola Talbot, all rights reserved.
+% (New maintainer add relevant lines here.)
+% \fi
+% \iffalse
+%<*driver>
+\documentclass{ltxdoc}
+
+\usepackage{alltt}
+\usepackage{graphicx}
+\usepackage[utf8]{inputenc}
+\usepackage[T1]{fontenc}
+\usepackage[colorlinks,
+ bookmarks,
+ hyperindex=false,
+ pdfauthor={Nicola L.C. Talbot},
+ pdftitle={datetime2.sty Irish Module}]{hyperref}
+
+
+\CheckSum{552}
+
+\renewcommand*{\usage}[1]{\hyperpage{#1}}
+\renewcommand*{\main}[1]{\hyperpage{#1}}
+\IndexPrologue{\section*{\indexname}\markboth{\indexname}{\indexname}}
+\setcounter{IndexColumns}{2}
+
+\newcommand*{\sty}[1]{\textsf{#1}}
+\newcommand*{\opt}[1]{\texttt{#1}\index{#1=\texttt{#1}|main}}
+
+\RecordChanges
+\PageIndex
+\CodelineNumbered
+
+\begin{document}
+\DocInput{datetime2-irish.dtx}
+\end{document}
+%</driver>
+%\fi
+%
+%\MakeShortVerb{"}
+%
+%\title{Irish Module for datetime2 Package}
+%\author{Nicola L. C. Talbot (inactive)}
+%\date{2018-04-24 (v1.1)}
+%\maketitle
+%
+%This module is currently unmaintained and may be subject to change.
+%If you want to volunteer to take over maintanance, contact me at
+%\url{http://www.dickimaw-books.com/contact.html}
+%
+%\begin{abstract}
+%This is the Irish language module for the \sty{datetime2}
+%package. If you want to use the settings in this module you must
+%install it in addition to installing \sty{datetime2}. If you use
+%\sty{babel} or \sty{polyglossia}, you will need this module to
+%prevent them from redefining \cs{today}. The \sty{datetime2}
+% \opt{useregional} setting must be set to "text" or "numeric"
+% for the language styles to be set.
+% Alternatively, you can set the style in the document using
+% \cs{DTMsetstyle}, but this may be changed by \cs{date}\meta{language}
+% depending on the value of the \opt{useregional} setting.
+%\end{abstract}
+%
+%I've copied the date style from \texttt{babel-irish}'s \cs{today}.
+%
+%I don't know if these settings are correct as I can't speak Gaelic.
+%In particular, I don't know if the "irish" time style is
+%correct. Currently this just uses the "default" time style. Please
+%be aware that this may change. Whoever takes over maintanance
+%of this module may can change it as appropriate.
+%
+%The new maintainer should add the line:
+%\begin{verbatim}
+% The Current Maintainer of this work is Name.
+%\end{verbatim}
+%to the preamble part in \texttt{datetime2-irish.ins} where Name
+%is the name of the maintainer(s) and replace
+%the `inactive' status to `maintained'.
+%
+%Regional styles are named in the form \texttt{\meta{language
+%code}-\meta{country code}} (or \texttt{\meta{language
+%code}-\meta{country code}-numeric}) where \meta{language code} is
+%the ISO 639-1 language code (\texttt{ga} in the case of Irish
+%Gaelic) and \meta{country code} is the ISO 3166-1 country code
+%(\texttt{IE} for the Republic of Ireland and \texttt{GB} for the
+%United Kingdom of Great Britain and Northern Ireland). You will
+%need \sty{tracklang} v1.2 for the "ga-IE" and "ga-GB" options.
+%The only difference between them is the Summer time zone mappings
+%with IST (Irish Summer Time) for "ga-IE" and BST (British Summer
+%Time) for "ga-GB". The regionless "irish" style uses WET (Western
+%European Time) and WEST (Western European Summer Time).
+%
+%\StopEventually{%
+%\clearpage
+%\phantomsection
+%\addcontentsline{toc}{section}{Change History}%
+%\PrintChanges
+%\addcontentsline{toc}{section}{\indexname}%
+%\PrintIndex}
+%\section{The Code}
+%\iffalse
+% \begin{macrocode}
+%<*datetime2-irish-utf8.ldf>
+% \end{macrocode}
+%\fi
+%\subsection{UTF-8}
+%This file contains the settings that use UTF-8 characters. This
+%file is loaded if XeLaTeX or LuaLaTeX are used. Please make sure
+%your text editor is set to UTF-8 if you want to view this code.
+%\changes{1.0}{2015-03-26}{Initial release}
+% Identify module
+% \begin{macrocode}
+\ProvidesDateTimeModule{irish-utf8}[2018/04/24 v1.1]
+% \end{macrocode}
+%\begin{macro}{\DTMirishordinal}
+% I don't know if this is correct, but it's provided in case
+% a suffix is required.
+% \begin{macrocode}
+\newcommand*{\DTMirishordinal}[1]{%
+ \number#1 % space intended
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMirishmonthname}
+% Irish month names.
+% \begin{macrocode}
+\newcommand*{\DTMirishmonthname}[1]{%
+ \ifcase#1
+ \or
+ EanƔir%
+ \or
+ Feabhra%
+ \or
+ MƔrta%
+ \or
+ AibreƔn%
+ \or
+ Bealtaine%
+ \or
+ Meitheamh%
+ \or
+ IĆŗil%
+ \or
+ LĆŗnasa%
+ \or
+ MeĆ”n FĆ³mhair%
+ \or
+ Deireadh FĆ³mhair%
+ \or
+ MĆ­ na Samhna%
+ \or
+ MĆ­ na Nollag%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%If abbreviated dates are supported, short month names should be
+%likewise provided.
+%
+%\iffalse
+% \begin{macrocode}
+%</datetime2-irish-utf8.ldf>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*datetime2-irish-ascii.ldf>
+% \end{macrocode}
+%\fi
+%\subsection{ASCII}
+%This file contains the settings that use \LaTeX\ commands for
+%non-ASCII characters. This should be input if neither XeLaTeX nor
+%LuaLaTeX are used. Even if the user has loaded \sty{inputenc} with
+%"utf8", this file should still be used not the
+%\texttt{datetime2-irish-utf8.ldf} file as the non-ASCII
+%characters are made active in that situation and would need
+%protecting against expansion.
+%\changes{1.0}{2015-03-26}{Initial release}
+% Identify module
+% \begin{macrocode}
+\ProvidesDateTimeModule{irish-ascii}[2018/04/24 v1.1]
+% \end{macrocode}
+%\begin{macro}{\DTMirishordinal}
+% I don't know if this is correct, but it's provided in case
+% a suffix is required.
+% \begin{macrocode}
+\newcommand*{\DTMirishordinal}[1]{%
+ \number#1 % space intended
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMirishmonthname}
+% Irish month names.
+% \begin{macrocode}
+\newcommand*{\DTMirishmonthname}[1]{%
+ \ifcase#1
+ \or
+ Ean\protect\'air%
+ \or
+ Feabhra%
+ \or
+ M\protect\'arta%
+ \or
+ Aibre\protect\'an%
+ \or
+ Bealtaine%
+ \or
+ Meitheamh%
+ \or
+ I\protect\'uil%
+ \or
+ L\protect\'unasa%
+ \or
+ Me\protect\'an F\protect\'omhair%
+ \or
+ Deireadh F\protect\'omhair%
+ \or
+ M\protect\'i na Samhna%
+ \or
+ M\protect\'i na Nollag%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%If abbreviated dates are supported, short month names should be
+%likewise provided.
+%
+%\iffalse
+% \begin{macrocode}
+%</datetime2-irish-ascii.ldf>
+% \end{macrocode}
+%\fi
+%
+%\subsection{Irish (no region) Module (\texttt{datetime2-irish.ldf})}
+%\changes{1.0}{2015-03-26}{Initial release}
+%
+%\iffalse
+% \begin{macrocode}
+%<*datetime2-irish.ldf>
+% \end{macrocode}
+%\fi
+%
+% Identify Module
+% \begin{macrocode}
+\ProvidesDateTimeModule{irish}[2018/04/24 v1.1]
+% \end{macrocode}
+% Need to find out if XeTeX or LuaTeX are being used.
+% \begin{macrocode}
+\RequirePackage{ifxetex,ifluatex}
+% \end{macrocode}
+% XeTeX and LuaTeX natively support UTF-8, so load
+% \texttt{irish-utf8} if either of those engines are used
+% otherwise load \texttt{irish-ascii}.
+% \begin{macrocode}
+\ifxetex
+ \RequireDateTimeModule{irish-utf8}
+\else
+ \ifluatex
+ \RequireDateTimeModule{irish-utf8}
+ \else
+ \RequireDateTimeModule{irish-ascii}
+ \fi
+\fi
+% \end{macrocode}
+%
+% Define the \texttt{irish} style.
+% The time style is the same as the "default" style
+% provided by \sty{datetime2}. This may need correcting. For
+% example, if a 12 hour style similar to the "englishampm" (from the
+% "english-base" module) is required.
+%
+% Allow the user a way of configuring the "irish" and
+% "irish-numeric" styles. This doesn't use the package wide
+% separators such as
+% \cs{dtm@datetimesep} in case other date formats are also required.
+%\begin{macro}{\DTMirishdaymonthsep}
+% The separator between the day and month for the text format.
+% \begin{macrocode}
+\newcommand*{\DTMirishdaymonthsep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMirishmonthyearsep}
+% The separator between the month and year for the text format.
+% \begin{macrocode}
+\newcommand*{\DTMirishmonthyearsep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMirishdatetimesep}
+% The separator between the date and time blocks in the full format
+% (either text or numeric).
+% \begin{macrocode}
+\newcommand*{\DTMirishdatetimesep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMirishtimezonesep}
+% The separator between the time and zone blocks in the full format
+% (either text or numeric).
+% \begin{macrocode}
+\newcommand*{\DTMirishtimezonesep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMirishdatesep}
+% The separator for the numeric date format.
+% \begin{macrocode}
+\newcommand*{\DTMirishdatesep}{/}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMirishtimesep}
+% The separator for the numeric time format.
+% \begin{macrocode}
+\newcommand*{\DTMirishtimesep}{:}
+% \end{macrocode}
+%\end{macro}
+%
+%Provide keys that can be used in \cs{DTMlangsetup} to set these
+%separators.
+% \begin{macrocode}
+\DTMdefkey{irish}{daymonthsep}{\renewcommand*{\DTMirishdaymonthsep}{#1}}
+\DTMdefkey{irish}{monthyearsep}{\renewcommand*{\DTMirishmonthyearsep}{#1}}
+\DTMdefkey{irish}{datetimesep}{\renewcommand*{\DTMirishdatetimesep}{#1}}
+\DTMdefkey{irish}{timezonesep}{\renewcommand*{\DTMirishtimezonesep}{#1}}
+\DTMdefkey{irish}{datesep}{\renewcommand*{\DTMirishdatesep}{#1}}
+\DTMdefkey{irish}{timesep}{\renewcommand*{\DTMirishtimesep}{#1}}
+% \end{macrocode}
+%
+% TODO: provide a boolean key to switch between full and abbreviated
+% formats if appropriate. (I don't know how the date should be
+% abbreviated.)
+%
+% Define a boolean key that determines if the time zone mappings
+% should be used.
+% \begin{macrocode}
+\DTMdefboolkey{irish}{mapzone}[true]{}
+% \end{macrocode}
+% The default is to use mappings.
+% \begin{macrocode}
+\DTMsetbool{irish}{mapzone}{true}
+% \end{macrocode}
+%
+% Define a boolean key that determines if the day of month should be
+% displayed.
+% \begin{macrocode}
+\DTMdefboolkey{irish}{showdayofmonth}[true]{}
+% \end{macrocode}
+% The default is to show the day of month.
+% \begin{macrocode}
+\DTMsetbool{irish}{showdayofmonth}{true}
+% \end{macrocode}
+%
+% Define a boolean key that determines if the year should be
+% displayed.
+% \begin{macrocode}
+\DTMdefboolkey{irish}{showyear}[true]{}
+% \end{macrocode}
+% The default is to show the year.
+% \begin{macrocode}
+\DTMsetbool{irish}{showyear}{true}
+% \end{macrocode}
+%
+% Define the "irish" style. (TODO: implement day of week?)
+% \begin{macrocode}
+\DTMnewstyle
+ {irish}% label
+ {% date style
+ \renewcommand*\DTMdisplaydate[4]{%
+ \DTMifbool{irish}{showdayofmonth}
+ {\DTMirishordinal{##3}\DTMirishdaymonthsep}%
+ {}%
+ \DTMirishmonthname{##2}%
+ \DTMifbool{irish}{showyear}%
+ {%
+ \DTMirishmonthyearsep
+ \number##1 % space intended
+ }%
+ {}%
+ }%
+ \renewcommand*{\DTMDisplaydate}{\DTMdisplaydate}%
+ }%
+ {% time style (use default)
+ \DTMsettimestyle{default}%
+ }%
+ {% zone style
+ \DTMresetzones
+ \DTMirishzonemaps
+ \renewcommand*{\DTMdisplayzone}[2]{%
+ \DTMifbool{irish}{mapzone}%
+ {\DTMusezonemapordefault{##1}{##2}}%
+ {%
+ \ifnum##1<0\else+\fi\DTMtwodigits{##1}%
+ \ifDTMshowzoneminutes\DTMirishtimesep\DTMtwodigits{##2}\fi
+ }%
+ }%
+ }%
+ {% full style
+ \renewcommand*{\DTMdisplay}[9]{%
+ \ifDTMshowdate
+ \DTMdisplaydate{##1}{##2}{##3}{##4}%
+ \DTMirishdatetimesep
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \DTMirishtimezonesep
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+ \renewcommand*{\DTMDisplay}{\DTMdisplay}%
+ }%
+% \end{macrocode}
+%
+% Define numeric style.
+% \begin{macrocode}
+\DTMnewstyle
+ {irish-numeric}% label
+ {% date style
+ \renewcommand*\DTMdisplaydate[4]{%
+ \DTMifbool{irish}{showdayofmonth}%
+ {%
+ \number##3 % space intended
+ \DTMirishdatesep
+ }%
+ {}%
+ \number##2 % space intended
+ \DTMifbool{irish}{showyear}%
+ {%
+ \DTMirishdatesep
+ \number##1 % space intended
+ }%
+ {}%
+ }%
+ \renewcommand*{\DTMDisplaydate}[4]{\DTMdisplaydate{##1}{##2}{##3}{##4}}%
+ }%
+ {% time style
+ \renewcommand*\DTMdisplaytime[3]{%
+ \number##1
+ \DTMirishtimesep\DTMtwodigits{##2}%
+ \ifDTMshowseconds\DTMirishtimesep\DTMtwodigits{##3}\fi
+ }%
+ }%
+ {% zone style
+ \DTMresetzones
+ \DTMirishzonemaps
+ \renewcommand*{\DTMdisplayzone}[2]{%
+ \DTMifbool{irish}{mapzone}%
+ {\DTMusezonemapordefault{##1}{##2}}%
+ {%
+ \ifnum##1<0\else+\fi\DTMtwodigits{##1}%
+ \ifDTMshowzoneminutes\DTMirishtimesep\DTMtwodigits{##2}\fi
+ }%
+ }%
+ }%
+ {% full style
+ \renewcommand*{\DTMdisplay}[9]{%
+ \ifDTMshowdate
+ \DTMdisplaydate{##1}{##2}{##3}{##4}%
+ \DTMirishdatetimesep
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \DTMirishtimezonesep
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+ \renewcommand*{\DTMDisplay}{\DTMdisplay}%
+ }
+% \end{macrocode}
+%
+%\begin{macro}{\DTMirishzonemaps}
+% The time zone mappings are set through this command, which can be
+% redefined if extra mappings are required or mappings need to be
+% removed. Since no region is provided, this style uses WET/WEST
+% time zone mappings.
+% \begin{macrocode}
+\newcommand*{\DTMirishzonemaps}{%
+ \DTMdefzonemap{00}{00}{WET}%
+ \DTMdefzonemap{01}{00}{WEST}%
+}
+% \end{macrocode}
+%\end{macro}
+
+% Switch style according to the \opt{useregional} setting.
+% \begin{macrocode}
+\DTMifcaseregional
+{}% do nothing
+{\DTMsetstyle{irish}}
+{\DTMsetstyle{irish-numeric}}
+% \end{macrocode}
+%
+% Redefine \cs{dateirish} (or \cs{date}\meta{dialect}) to prevent
+% \sty{babel} from resetting \cs{today}. (For this to work,
+% \sty{babel} must already have been loaded if it's required.)
+%\changes{1.1}{2018-04-24}{removed spurious space}
+% \begin{macrocode}
+\ifcsundef{date\CurrentTrackedDialect}
+{%
+ \ifundef\dateirish
+ {% do nothing
+ }%
+ {%
+ \def\dateirish{%
+ \DTMifcaseregional
+ {}% do nothing
+ {\DTMsetstyle{irish}}%
+ {\DTMsetstyle{irish-numeric}}%
+ }%
+ }%
+}%
+{%
+ \csdef{date\CurrentTrackedDialect}{%
+ \DTMifcaseregional
+ {}% do nothing
+ {\DTMsetstyle{irish}}%
+ {\DTMsetstyle{irish-numeric}}%
+ }%
+}%
+% \end{macrocode}
+%\iffalse
+% \begin{macrocode}
+%</datetime2-irish.ldf>
+% \end{macrocode}
+%\fi
+%\subsection{Irish (Republic of Ireland) Module (\texttt{datetime2-ga-IE.ldf})}
+%\changes{1.0}{2015-03-26}{Initial release}
+% As "irish" but uses different time zone mappings.
+%\iffalse
+% \begin{macrocode}
+%<*datetime2-ga-IE.ldf>
+% \end{macrocode}
+%\fi
+%
+% Identify Module
+% \begin{macrocode}
+\ProvidesDateTimeModule{ga-IE}[2018/04/24 v1.1]
+% \end{macrocode}
+% Need to find out if XeTeX or LuaTeX are being used.
+% \begin{macrocode}
+\RequirePackage{ifxetex,ifluatex}
+% \end{macrocode}
+% XeTeX and LuaTeX natively support UTF-8, so load
+% \texttt{irish-utf8} if either of those engines are used
+% otherwise load \texttt{irish-ascii}.
+% \begin{macrocode}
+\ifxetex
+ \RequireDateTimeModule{irish-utf8}
+\else
+ \ifluatex
+ \RequireDateTimeModule{irish-utf8}
+ \else
+ \RequireDateTimeModule{irish-ascii}
+ \fi
+\fi
+% \end{macrocode}
+%
+% Define the \texttt{ga-IE} style.
+% The time style is the same as the "default" style
+% provided by \sty{datetime2}. This may need correcting. For
+% example, if a 12 hour style similar to the "englishampm" (from the
+% "english-base" module) is required.
+%
+% Allow the user a way of configuring the "ga-IE" and
+% "ga-IE-numeric" styles. This doesn't use the package wide
+% separators such as
+% \cs{dtm@datetimesep} in case other date formats are also required.
+%\begin{macro}{\DTMgaIEdaymonthsep}
+% The separator between the day and month for the text format.
+% \begin{macrocode}
+\newcommand*{\DTMgaIEdaymonthsep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMgaIEmonthyearsep}
+% The separator between the month and year for the text format.
+% \begin{macrocode}
+\newcommand*{\DTMgaIEmonthyearsep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMgaIEdatetimesep}
+% The separator between the date and time blocks in the full format
+% (either text or numeric).
+% \begin{macrocode}
+\newcommand*{\DTMgaIEdatetimesep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMgaIEtimezonesep}
+% The separator between the time and zone blocks in the full format
+% (either text or numeric).
+% \begin{macrocode}
+\newcommand*{\DTMgaIEtimezonesep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMgaIEdatesep}
+% The separator for the numeric date format.
+% \begin{macrocode}
+\newcommand*{\DTMgaIEdatesep}{/}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMgaIEtimesep}
+% The separator for the numeric time format.
+% \begin{macrocode}
+\newcommand*{\DTMgaIEtimesep}{:}
+% \end{macrocode}
+%\end{macro}
+%
+%Provide keys that can be used in \cs{DTMlangsetup} to set these
+%separators.
+% \begin{macrocode}
+\DTMdefkey{ga-IE}{daymonthsep}{\renewcommand*{\DTMgaIEdaymonthsep}{#1}}
+\DTMdefkey{ga-IE}{monthyearsep}{\renewcommand*{\DTMgaIEmonthyearsep}{#1}}
+\DTMdefkey{ga-IE}{datetimesep}{\renewcommand*{\DTMgaIEdatetimesep}{#1}}
+\DTMdefkey{ga-IE}{timezonesep}{\renewcommand*{\DTMgaIEtimezonesep}{#1}}
+\DTMdefkey{ga-IE}{datesep}{\renewcommand*{\DTMgaIEdatesep}{#1}}
+\DTMdefkey{ga-IE}{timesep}{\renewcommand*{\DTMgaIEtimesep}{#1}}
+% \end{macrocode}
+%
+% TODO: provide a boolean key to switch between full and abbreviated
+% formats if appropriate. (I don't know how the date should be
+% abbreviated.)
+%
+% Define a boolean key that determines if the time zone mappings
+% should be used.
+% \begin{macrocode}
+\DTMdefboolkey{ga-IE}{mapzone}[true]{}
+% \end{macrocode}
+% The default is to use mappings.
+% \begin{macrocode}
+\DTMsetbool{ga-IE}{mapzone}{true}
+% \end{macrocode}
+%
+% Define a boolean key that determines if the day of month should be
+% displayed.
+% \begin{macrocode}
+\DTMdefboolkey{ga-IE}{showdayofmonth}[true]{}
+% \end{macrocode}
+% The default is to show the day of month.
+% \begin{macrocode}
+\DTMsetbool{ga-IE}{showdayofmonth}{true}
+% \end{macrocode}
+%
+% Define a boolean key that determines if the year should be
+% displayed.
+% \begin{macrocode}
+\DTMdefboolkey{ga-IE}{showyear}[true]{}
+% \end{macrocode}
+% The default is to show the year.
+% \begin{macrocode}
+\DTMsetbool{ga-IE}{showyear}{true}
+% \end{macrocode}
+%
+% Define the "ga-IE" style. (TODO: implement day of week?)
+% \begin{macrocode}
+\DTMnewstyle
+ {ga-IE}% label
+ {% date style
+ \renewcommand*\DTMdisplaydate[4]{%
+ \DTMifbool{ga-IE}{showdayofmonth}
+ {\DTMirishordinal{##3}\DTMgaIEdaymonthsep}%
+ {}%
+ \DTMirishmonthname{##2}%
+ \DTMifbool{ga-IE}{showyear}%
+ {%
+ \DTMgaIEmonthyearsep
+ \number##1 % space intended
+ }%
+ {}%
+ }%
+ \renewcommand*{\DTMDisplaydate}{\DTMdisplaydate}%
+ }%
+ {% time style (use default)
+ \DTMsettimestyle{default}%
+ }%
+ {% zone style
+ \DTMresetzones
+ \DTMgaIEzonemaps
+ \renewcommand*{\DTMdisplayzone}[2]{%
+ \DTMifbool{ga-IE}{mapzone}%
+ {\DTMusezonemapordefault{##1}{##2}}%
+ {%
+ \ifnum##1<0\else+\fi\DTMtwodigits{##1}%
+ \ifDTMshowzoneminutes\DTMgaIEtimesep\DTMtwodigits{##2}\fi
+ }%
+ }%
+ }%
+ {% full style
+ \renewcommand*{\DTMdisplay}[9]{%
+ \ifDTMshowdate
+ \DTMdisplaydate{##1}{##2}{##3}{##4}%
+ \DTMgaIEdatetimesep
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \DTMgaIEtimezonesep
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+ \renewcommand*{\DTMDisplay}{\DTMdisplay}%
+ }%
+% \end{macrocode}
+%
+% Define numeric style.
+% \begin{macrocode}
+\DTMnewstyle
+ {ga-IE-numeric}% label
+ {% date style
+ \renewcommand*\DTMdisplaydate[4]{%
+ \DTMifbool{ga-IE}{showdayofmonth}%
+ {%
+ \number##3 % space intended
+ \DTMgaIEdatesep
+ }%
+ {}%
+ \number##2 % space intended
+ \DTMifbool{ga-IE}{showyear}%
+ {%
+ \DTMgaIEdatesep
+ \number##1 % space intended
+ }%
+ {}%
+ }%
+ \renewcommand*{\DTMDisplaydate}[4]{\DTMdisplaydate{##1}{##2}{##3}{##4}}%
+ }%
+ {% time style
+ \renewcommand*\DTMdisplaytime[3]{%
+ \number##1
+ \DTMgaIEtimesep\DTMtwodigits{##2}%
+ \ifDTMshowseconds\DTMgaIEtimesep\DTMtwodigits{##3}\fi
+ }%
+ }%
+ {% zone style
+ \DTMresetzones
+ \DTMgaIEzonemaps
+ \renewcommand*{\DTMdisplayzone}[2]{%
+ \DTMifbool{ga-IE}{mapzone}%
+ {\DTMusezonemapordefault{##1}{##2}}%
+ {%
+ \ifnum##1<0\else+\fi\DTMtwodigits{##1}%
+ \ifDTMshowzoneminutes\DTMgaIEtimesep\DTMtwodigits{##2}\fi
+ }%
+ }%
+ }%
+ {% full style
+ \renewcommand*{\DTMdisplay}[9]{%
+ \ifDTMshowdate
+ \DTMdisplaydate{##1}{##2}{##3}{##4}%
+ \DTMgaIEdatetimesep
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \DTMgaIEtimezonesep
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+ \renewcommand*{\DTMDisplay}{\DTMdisplay}%
+ }
+% \end{macrocode}
+%
+%\begin{macro}{\DTMgaIEzonemaps}
+% The time zone mappings are set through this command, which can be
+% redefined if extra mappings are required or mappings need to be
+% removed.
+% \begin{macrocode}
+\newcommand*{\DTMgaIEzonemaps}{%
+ \DTMdefzonemap{00}{00}{GMT}%
+ \DTMdefzonemap{01}{00}{IST}%
+}
+% \end{macrocode}
+%\end{macro}
+
+% Switch style according to the \opt{useregional} setting.
+% \begin{macrocode}
+\DTMifcaseregional
+{}% do nothing
+{\DTMsetstyle{ga-IE}}
+{\DTMsetstyle{ga-IE-numeric}}
+% \end{macrocode}
+%
+% Redefine \cs{dateirish} (or \cs{date}\meta{dialect}) to prevent
+% \sty{babel} from resetting \cs{today}. (For this to work,
+% \sty{babel} must already have been loaded if it's required.)
+%\changes{1.1}{2018-04-24}{removed spurious space}
+% \begin{macrocode}
+\ifcsundef{date\CurrentTrackedDialect}
+{%
+ \ifundef\dateirish
+ {% do nothing
+ }%
+ {%
+ \def\dateirish{%
+ \DTMifcaseregional
+ {}% do nothing
+ {\DTMsetstyle{ga-IE}}%
+ {\DTMsetstyle{ga-IE-numeric}}%
+ }%
+ }%
+}%
+{%
+ \csdef{date\CurrentTrackedDialect}{%
+ \DTMifcaseregional
+ {}% do nothing
+ {\DTMsetstyle{ga-IE}}%
+ {\DTMsetstyle{ga-IE-numeric}}%
+ }%
+}%
+% \end{macrocode}
+%\iffalse
+% \begin{macrocode}
+%</datetime2-ga-IE.ldf>
+% \end{macrocode}
+%\fi
+%\subsection{Irish (Northern Ireland) Module (\texttt{datetime2-ga-GB.ldf})}
+%\changes{1.0}{2015-03-26}{Initial release}
+% As "irish" but uses different time zone mappings.
+%\iffalse
+% \begin{macrocode}
+%<*datetime2-ga-GB.ldf>
+% \end{macrocode}
+%\fi
+%
+% Identify Module
+% \begin{macrocode}
+\ProvidesDateTimeModule{ga-GB}[2018/04/24 v1.1]
+% \end{macrocode}
+% Need to find out if XeTeX or LuaTeX are being used.
+% \begin{macrocode}
+\RequirePackage{ifxetex,ifluatex}
+% \end{macrocode}
+% XeTeX and LuaTeX natively support UTF-8, so load
+% \texttt{irish-utf8} if either of those engines are used
+% otherwise load \texttt{irish-ascii}.
+% \begin{macrocode}
+\ifxetex
+ \RequireDateTimeModule{irish-utf8}
+\else
+ \ifluatex
+ \RequireDateTimeModule{irish-utf8}
+ \else
+ \RequireDateTimeModule{irish-ascii}
+ \fi
+\fi
+% \end{macrocode}
+%
+% Define the \texttt{ga-GB} style.
+% The time style is the same as the "default" style
+% provided by \sty{datetime2}. This may need correcting. For
+% example, if a 12 hour style similar to the "englishampm" (from the
+% "english-base" module) is required.
+%
+% Allow the user a way of configuring the "ga-GB" and
+% "ga-GB-numeric" styles. This doesn't use the package wide
+% separators such as
+% \cs{dtm@datetimesep} in case other date formats are also required.
+%\begin{macro}{\DTMgaGBdaymonthsep}
+% The separator between the day and month for the text format.
+% \begin{macrocode}
+\newcommand*{\DTMgaGBdaymonthsep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMgaGBmonthyearsep}
+% The separator between the month and year for the text format.
+% \begin{macrocode}
+\newcommand*{\DTMgaGBmonthyearsep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMgaGBdatetimesep}
+% The separator between the date and time blocks in the full format
+% (either text or numeric).
+% \begin{macrocode}
+\newcommand*{\DTMgaGBdatetimesep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMgaGBtimezonesep}
+% The separator between the time and zone blocks in the full format
+% (either text or numeric).
+% \begin{macrocode}
+\newcommand*{\DTMgaGBtimezonesep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMgaGBdatesep}
+% The separator for the numeric date format.
+% \begin{macrocode}
+\newcommand*{\DTMgaGBdatesep}{/}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMgaGBtimesep}
+% The separator for the numeric time format.
+% \begin{macrocode}
+\newcommand*{\DTMgaGBtimesep}{:}
+% \end{macrocode}
+%\end{macro}
+%
+%Provide keys that can be used in \cs{DTMlangsetup} to set these
+%separators.
+% \begin{macrocode}
+\DTMdefkey{ga-GB}{daymonthsep}{\renewcommand*{\DTMgaGBdaymonthsep}{#1}}
+\DTMdefkey{ga-GB}{monthyearsep}{\renewcommand*{\DTMgaGBmonthyearsep}{#1}}
+\DTMdefkey{ga-GB}{datetimesep}{\renewcommand*{\DTMgaGBdatetimesep}{#1}}
+\DTMdefkey{ga-GB}{timezonesep}{\renewcommand*{\DTMgaGBtimezonesep}{#1}}
+\DTMdefkey{ga-GB}{datesep}{\renewcommand*{\DTMgaGBdatesep}{#1}}
+\DTMdefkey{ga-GB}{timesep}{\renewcommand*{\DTMgaGBtimesep}{#1}}
+% \end{macrocode}
+%
+% TODO: provide a boolean key to switch between full and abbreviated
+% formats if appropriate. (I don't know how the date should be
+% abbreviated.)
+%
+% Define a boolean key that determines if the time zone mappings
+% should be used.
+% \begin{macrocode}
+\DTMdefboolkey{ga-GB}{mapzone}[true]{}
+% \end{macrocode}
+% The default is to use mappings.
+% \begin{macrocode}
+\DTMsetbool{ga-GB}{mapzone}{true}
+% \end{macrocode}
+%
+% Define a boolean key that determines if the day of month should be
+% displayed.
+% \begin{macrocode}
+\DTMdefboolkey{ga-GB}{showdayofmonth}[true]{}
+% \end{macrocode}
+% The default is to show the day of month.
+% \begin{macrocode}
+\DTMsetbool{ga-GB}{showdayofmonth}{true}
+% \end{macrocode}
+%
+% Define a boolean key that determines if the year should be
+% displayed.
+% \begin{macrocode}
+\DTMdefboolkey{ga-GB}{showyear}[true]{}
+% \end{macrocode}
+% The default is to show the year.
+% \begin{macrocode}
+\DTMsetbool{ga-GB}{showyear}{true}
+% \end{macrocode}
+%
+% Define the "ga-GB" style. (TODO: implement day of week?)
+% \begin{macrocode}
+\DTMnewstyle
+ {ga-GB}% label
+ {% date style
+ \renewcommand*\DTMdisplaydate[4]{%
+ \DTMifbool{ga-GB}{showdayofmonth}
+ {\DTMirishordinal{##3}\DTMgaGBdaymonthsep}%
+ {}%
+ \DTMirishmonthname{##2}%
+ \DTMifbool{ga-GB}{showyear}%
+ {%
+ \DTMgaGBmonthyearsep
+ \number##1 % space intended
+ }%
+ {}%
+ }%
+ \renewcommand*{\DTMDisplaydate}{\DTMdisplaydate}%
+ }%
+ {% time style (use default)
+ \DTMsettimestyle{default}%
+ }%
+ {% zone style
+ \DTMresetzones
+ \DTMgaGBzonemaps
+ \renewcommand*{\DTMdisplayzone}[2]{%
+ \DTMifbool{ga-GB}{mapzone}%
+ {\DTMusezonemapordefault{##1}{##2}}%
+ {%
+ \ifnum##1<0\else+\fi\DTMtwodigits{##1}%
+ \ifDTMshowzoneminutes\DTMgaGBtimesep\DTMtwodigits{##2}\fi
+ }%
+ }%
+ }%
+ {% full style
+ \renewcommand*{\DTMdisplay}[9]{%
+ \ifDTMshowdate
+ \DTMdisplaydate{##1}{##2}{##3}{##4}%
+ \DTMgaGBdatetimesep
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \DTMgaGBtimezonesep
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+ \renewcommand*{\DTMDisplay}{\DTMdisplay}%
+ }%
+% \end{macrocode}
+%
+% Define numeric style.
+% \begin{macrocode}
+\DTMnewstyle
+ {ga-GB-numeric}% label
+ {% date style
+ \renewcommand*\DTMdisplaydate[4]{%
+ \DTMifbool{ga-GB}{showdayofmonth}%
+ {%
+ \number##3 % space intended
+ \DTMgaGBdatesep
+ }%
+ {}%
+ \number##2 % space intended
+ \DTMifbool{ga-GB}{showyear}%
+ {%
+ \DTMgaGBdatesep
+ \number##1 % space intended
+ }%
+ {}%
+ }%
+ \renewcommand*{\DTMDisplaydate}[4]{\DTMdisplaydate{##1}{##2}{##3}{##4}}%
+ }%
+ {% time style
+ \renewcommand*\DTMdisplaytime[3]{%
+ \number##1
+ \DTMgaGBtimesep\DTMtwodigits{##2}%
+ \ifDTMshowseconds\DTMgaGBtimesep\DTMtwodigits{##3}\fi
+ }%
+ }%
+ {% zone style
+ \DTMresetzones
+ \DTMgaGBzonemaps
+ \renewcommand*{\DTMdisplayzone}[2]{%
+ \DTMifbool{ga-GB}{mapzone}%
+ {\DTMusezonemapordefault{##1}{##2}}%
+ {%
+ \ifnum##1<0\else+\fi\DTMtwodigits{##1}%
+ \ifDTMshowzoneminutes\DTMgaGBtimesep\DTMtwodigits{##2}\fi
+ }%
+ }%
+ }%
+ {% full style
+ \renewcommand*{\DTMdisplay}[9]{%
+ \ifDTMshowdate
+ \DTMdisplaydate{##1}{##2}{##3}{##4}%
+ \DTMgaGBdatetimesep
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \DTMgaGBtimezonesep
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+ \renewcommand*{\DTMDisplay}{\DTMdisplay}%
+ }
+% \end{macrocode}
+%
+%\begin{macro}{\DTMgaGBzonemaps}
+% The time zone mappings are set through this command, which can be
+% redefined if extra mappings are required or mappings need to be
+% removed.
+% \begin{macrocode}
+\newcommand*{\DTMgaGBzonemaps}{%
+ \DTMdefzonemap{00}{00}{GMT}%
+ \DTMdefzonemap{01}{00}{BST}%
+}
+% \end{macrocode}
+%\end{macro}
+
+% Switch style according to the \opt{useregional} setting.
+% \begin{macrocode}
+\DTMifcaseregional
+{}% do nothing
+{\DTMsetstyle{ga-GB}}
+{\DTMsetstyle{ga-GB-numeric}}
+% \end{macrocode}
+%
+% Redefine \cs{dateirish} (or \cs{date}\meta{dialect}) to prevent
+% \sty{babel} from resetting \cs{today}. (For this to work,
+% \sty{babel} must already have been loaded if it's required.)
+%\changes{1.1}{2018-04-24}{removed spurious space}
+% \begin{macrocode}
+\ifcsundef{date\CurrentTrackedDialect}
+{%
+ \ifundef\dateirish
+ {% do nothing
+ }%
+ {%
+ \def\dateirish{%
+ \DTMifcaseregional
+ {}% do nothing
+ {\DTMsetstyle{ga-GB}}%
+ {\DTMsetstyle{ga-GB-numeric}}%
+ }%
+ }%
+}%
+{%
+ \csdef{date\CurrentTrackedDialect}{%
+ \DTMifcaseregional
+ {}% do nothing
+ {\DTMsetstyle{ga-GB}}%
+ {\DTMsetstyle{ga-GB-numeric}}%
+ }%
+}%
+% \end{macrocode}
+%\iffalse
+% \begin{macrocode}
+%</datetime2-ga-GB.ldf>
+% \end{macrocode}
+%\fi
+%\Finale
+\endinput
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-irish/datetime2-irish.ins b/macros/latex/contrib/datetime2-contrib/datetime2-irish/datetime2-irish.ins
new file mode 100644
index 0000000000..49e055b2dd
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-irish/datetime2-irish.ins
@@ -0,0 +1,83 @@
+\input docstrip
+
+\preamble
+
+ datetime2-irish.dtx
+ Copyright 2018 Nicola Talbot
+
+ This work may be distributed and/or modified under the
+ conditions of the LaTeX Project Public License, either version 1.3
+ of this license of (at your option) any later version.
+ The latest version of this license is in
+ http://www.latex-project.org/lppl.txt
+ and version 1.3 or later is part of all distributions of LaTeX
+ version 2005/12/01 or later.
+
+ This work has the LPPL maintenance status `inactive'.
+
+ This work consists of the files datetime2-irish.dtx and
+ datetime2-irish.ins and the derived files
+ datetime2-irish-utf8.ldf, datetime2-irish-ascii.ldf and
+ datetime2-irish.ldf, datetime2-ga-IE.ldf, datetime2-ga-GB.ldf
+
+\endpreamble
+
+\askforoverwritefalse
+
+\generate
+{%
+ \file
+ {datetime2-irish-utf8.ldf}%
+ {%
+ \usepreamble\defaultpreamble
+ \usepostamble\defaultpostamble
+ \from{datetime2-irish.dtx}{datetime2-irish-utf8.ldf,package}%
+ }%
+}
+
+\generate
+{%
+ \file
+ {datetime2-irish-ascii.ldf}%
+ {%
+ \usepreamble\defaultpreamble
+ \usepostamble\defaultpostamble
+ \from{datetime2-irish.dtx}{datetime2-irish-ascii.ldf,package}%
+ }%
+}
+
+\generate
+{%
+ \file
+ {datetime2-irish.ldf}%
+ {%
+ \usepreamble\defaultpreamble
+ \usepostamble\defaultpostamble
+ \from{datetime2-irish.dtx}{datetime2-irish.ldf,package}%
+ }%
+}
+
+\generate
+{%
+ \file
+ {datetime2-ga-IE.ldf}%
+ {%
+ \usepreamble\defaultpreamble
+ \usepostamble\defaultpostamble
+ \from{datetime2-irish.dtx}{datetime2-ga-IE.ldf,package}%
+ }%
+}
+
+\generate
+{%
+ \file
+ {datetime2-ga-GB.ldf}%
+ {%
+ \usepreamble\defaultpreamble
+ \usepostamble\defaultpostamble
+ \from{datetime2-irish.dtx}{datetime2-ga-GB.ldf,package}%
+ }%
+}
+
+\endbatchfile
+
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-irish/datetime2-irish.pdf b/macros/latex/contrib/datetime2-contrib/datetime2-irish/datetime2-irish.pdf
new file mode 100644
index 0000000000..df7ba1b92c
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-irish/datetime2-irish.pdf
Binary files differ
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-it-fulltext/README b/macros/latex/contrib/datetime2-contrib/datetime2-it-fulltext/README
new file mode 100644
index 0000000000..177224b56b
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-it-fulltext/README
@@ -0,0 +1,34 @@
+Italian Language Module for datetime2 Package
+
+Author: Claudio Duchi
+
+Mantainer: Claudio Duchi claduc at libero dot it
+
+Licence: LPPL
+
+Required Packages: datetime2, tracklang, itnumpar
+
+This module is maintained.
+
+INSTALLATION
+============
+
+latex datetime2-it-fulltext.ins
+
+Move all *.ldf files to
+TEXMF/tex/latex/datetime2-contrib/datetime2-it-fulltext/
+Move all *.sty files to
+TEXMF/tex/latex/datetime2-contrib/datetime2-it-fulltext/
+
+Documentation:
+
+pdflatex datetime2-it-fulltext.dtx
+
+
+Move datetime2-it-fulltext.pdf and README to
+TEXMF/doc/latex/datetime2-contrib/datetime2-it-fulltext/
+
+This material is subject to the LaTeX Project Public License.
+See http://www.ctan.org/license/lppl1.3 for the details of that
+license.
+
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-it-fulltext/datetime2-it-fulltext.dtx b/macros/latex/contrib/datetime2-contrib/datetime2-it-fulltext/datetime2-it-fulltext.dtx
new file mode 100644
index 0000000000..c5b64f5cab
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-it-fulltext/datetime2-it-fulltext.dtx
@@ -0,0 +1,814 @@
+%\iffalse
+% datetime2-it-fulltext.dtx generated using makedtx version 0.94b (c) Nicola Talbot
+% Command line args:
+% -author "Claudio Duchi"
+% -date "2015"
+% -v "1"
+% -doc "manual.tex"
+% -src "datetime2-it-fulltext\.sty=>datetime2-it-fulltext.sty"
+% -src "datetime2-it-fulltext-utf8\.ldf=>datetime2-it-fulltext-utf8.ldf"
+% -src "datetime2-it-fulltext-ascii\.ldf=>datetime2-it-fulltext-ascii.ldf"
+% datetime2-it-fulltext
+% Created on 2015/8/9 13:47
+%\fi
+%\iffalse
+%<*package>
+%% \CharacterTable
+%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+%% Digits \0\1\2\3\4\5\6\7\8\9
+%% Exclamation \! Double quote \" Hash (number) \#
+%% Dollar \$ Percent \% Ampersand \&
+%% Acute accent \' Left paren \( Right paren \)
+%% Asterisk \* Plus \+ Comma \,
+%% Minus \- Point \. Solidus \/
+%% Colon \: Semicolon \; Less than \<
+%% Equals \= Greater than \> Question mark \?
+%% Commercial at \@ Left bracket \[ Backslash \\
+%% Right bracket \] Circumflex \^ Underscore \_
+%% Grave accent \` Left brace \{ Vertical bar \|
+%% Right brace \} Tilde \~}
+%</package>
+%\fi
+% \iffalse
+% Doc-Source file to use with LaTeX2e
+% Copyright (C) 2015 Claudio Duchi, all rights reserved.
+% \fi
+% \iffalse
+%<*driver>
+\documentclass{ltxdoc}
+
+\usepackage[T1]{fontenc}
+\usepackage[utf8]{inputenc}
+\CheckSum{1513}
+\begin{document}
+\DocInput{datetime2-it-fulltext.dtx}
+\end{document}
+%</driver>
+%\fi
+%\title{datetime2-it-fulltext}
+%\author{Claudio Duchi email: claduc at libero dot it}
+%\maketitle
+%This packet defines five styles for datetime2, it-fulltext, it-fulltext-twenty-four, it-fulltext-second, it-fulltext-twenty-four-second, it-fulltext-semplice. The necessary packets are datetime2, itnumpar, ifxetex and ifluatex. The packet is the translation and adaptation of datetime2-en-fulltext.
+%
+%
+%\begin{verbatim}
+%\DTMsetdatestyle{it-fulltext}
+%\DTMsavetimestamp{mydate}{2015-04-01T08:05:00+01:00}
+%\DTMuse{mydate}
+%\end{verbatim}
+%mercoledƬ primo aprile, duemilaquindici cinque minuti dopo le otto del mattino CET
+%
+%\begin{verbatim}
+% \DTMsettimestyle{it-fulltext}
+% \DTMdisplaytime{0}{1}{1}.
+% \end{verbatim}
+%0:01:01 un minuto dopo mezzanotte.
+%\begin{verbatim}
+%\DTMsetdatestyle{it-fulltext-twenty-four}
+%\DTMsavetimestamp{mydate}{2015-04-01T08:05:00+01:00}
+%\DTMuse{mydate}
+%\end{verbatim}
+%mercoledƬ primo aprile, duemilaquindici 08:05:00 CET
+%\begin{verbatim}
+%\DTMsetdatestyle{it-fulltext-twenty-four}
+%\DTMsettimestyle{it-fulltext-twenty-four}
+%\DTMsavetimestamp{mydate}{2015-04-01T08:05:00+01:00}
+%\DTMuse{mydate}
+%\end{verbatim}
+%mercoledƬ primo aprile, duemilaquindici cinque minuti dopo le otto CET
+%\begin{verbatim}
+%\DTMsetdatestyle{it-fulltext-second}
+%\DTMsettimestyle{it-fulltext-second}
+%\DTMsavetimestamp{mydate}{2015-04-01T08:05:00+01:00}
+%\DTMuse{mydate}
+%\end{verbatim}
+%mercoledƬ primo aprile, duemilaquindici cinque minuti e zero secondi dopo le
+%otto del mattino CET
+%\begin{verbatim}
+%\DTMsetdatestyle{it-fulltext-twenty-four-second}
+%\DTMsettimestyle{it-fulltext-twenty-four-second}
+%\DTMsavetimestamp{mydate}{2015-04-01T08:05:00+01:00}
+%\DTMuse{mydate}
+%\end{verbatim}
+%mercoledƬ primo aprile, duemilaquindici cinque minuti e zero secondi dopo le
+%otto CET
+%\begin{verbatim}
+%\DTMsetdatestyle{it-fulltext-semplice}
+%\DTMsettimestyle{it-fulltext-semplice}
+%\DTMsavetimestamp{mydate}{2015-04-01T08:05:00+01:00}
+%\DTMuse{mydate}
+%\end{verbatim}
+%mercoledƬ primo aprile, duemilaquindici ore otto cinque minuti e zero secondi
+%CET
+%
+%
+%\StopEventually{}
+%\section{The Code}
+%\iffalse
+% \begin{macrocode}
+%<*datetime2-it-fulltext.sty>
+% \end{macrocode}
+%\fi
+% \begin{macrocode}
+\NeedsTeXFormat{LaTeX2e}
+% \end{macrocode}
+% \begin{macrocode}
+\ProvidesPackage{datetime2-it-fulltext}[2015/08/06 v1.6]
+% \end{macrocode}
+% \begin{macrocode}
+\DeclareOption*{\PassOptionsToPackage{\CurrentOption}{datetime2}}
+\ProcessOptions
+\RequirePackage{datetime2}
+% \end{macrocode}
+% \begin{macrocode}
+\RequirePackage{itnumpar}
+% \end{macrocode}
+% \begin{macrocode}
+\RequirePackage{ifxetex,ifluatex}
+\ifxetex
+\RequireDateTimeModule{it-fulltext-utf8}
+\else
+\ifluatex
+\RequireDateTimeModule{it-fulltext-utf8}
+\else
+\RequireDateTimeModule{it-fulltext-ascii}
+\fi
+\fi
+% \end{macrocode}
+% \begin{macrocode}
+\def\CurrentTrackedDialect{italian}
+\RequireDateTimeModule{italian}
+\undef\CurrentTrackedDialect
+% \end{macrocode}
+% \begin{macrocode}
+\newcommand*\DTMitfulltextmonthyearsep{,\space}
+\newcommand{\DTMitore}[1]{%
+ \ifcase#1\DTMitalianmidnight\or\DTMoneatnightstring\else\printnumeroinparole{#1}\fi}%
+\newcommand{\DTMitminuti}[1]{%
+ \ifcase#1\DTMitzerominutsestring\or\DTMitoneminutestring%
+ \else\printnumeroinparole{#1}\space\DTMitminutesstring\fi}%
+\newcommand{\DTMitsecondi}[1]{%
+ \ifcase#1\printnumeroinparole{#1}\space\DTMitsecondsstring%
+ \or\DTMitonesecondstring\space\DTMitsecondstring%
+ \else\printnumeroinparole{#1}\space\DTMitsecondsstring%
+ \fi}%
+% \end{macrocode}
+% \begin{macrocode}
+\DTMnewdatestyle{it-fulltext}{%
+\renewcommand*\DTMdisplaydate[4]{%
+\ifDTMshowdow
+\ifnum##4>-1
+\DTMitalianweekdayname{##4}\space\fi\fi%
+\ifnum##3=1\DTMitthefirstoneofthemonth\space\DTMitalianmonthname{##2}%
+\DTMitfulltextmonthyearsep\protect\printnumeroinparole{##1}\space%
+\else\protect\printnumeroinparole{##3}\space\DTMitalianmonthname{##2}%
+\DTMitfulltextmonthyearsep\protect\printnumeroinparole{##1}\fi}}%
+\DTMsetdatestyle{it-fulltext}
+\DTMnewtimestyle{it-fulltext}{%
+\renewcommand\DTMdisplaytime[3]{%
+\ifboolexpr
+{test {\ifnumequal{##2}{0}} and
+(test {\ifnumequal{##1}{0}}
+or test {\ifnumequal{##1}{12}}
+or test {\ifnumequal{##1}{24}})}%
+{\ifnum##1=12\DTMitaliannoon\else\DTMitalianmidnight\fi}%
+{\ifnum##2=0\ifboolexpr{ test {\ifnumcomp{##1}{=}{1}} or test {\ifnumcomp{##1}{=}{13}}}
+{\DTMoneatnightstring\space\DTMitoclockstring}%
+{\ifnum##1>12\protect\printnumeroinparole{\numexpr##1-12}\space\DTMitoclockstring
+\else\protect\printnumeroinparole{##1}\space\DTMitoclockstring\fi}%
+\else
+\ifnum##2<31
+\ifnum##2=15
+\ifnum##1=1\DTMquarterpaststringTWO\else
+\ifboolexpr{ test {\ifnumcomp{##1}{=}{12}} or test {\ifnumcomp{##1}{=}{0}} or test {\ifnumcomp{##1}{=}{24}}}
+{\DTMquarterpaststringONE}%
+{\ifnum##1=13\DTMquarterpaststringTWO\else\DTMquarterpaststringTHREE\fi}%
+\fi%
+\else%
+\ifnum##2=30%
+\ifboolexpr{ test {\ifnumcomp{##1}{=}{1}} or test {\ifnumcomp{##1}{=}{13}}}
+{\DTMhalfpaststringTWO}%
+{\ifboolexpr{ test {\ifnumcomp{##1}{=}{0}} or test {\ifnumcomp{##1}{=}{24}} or test {\ifnumcomp{##1}{=}{12}}}%
+{\DTMhalfpaststringONE}%
+{\DTMhalfpaststringTHREE}}%
+\else%
+\ifnum##2=1\DTMoneminutestring\else\protect\printnumeroinparole{##2}\space%
+\fi%
+\ifnum##2=1
+\ifboolexpr{ test {\ifnumcomp{##1}{=}{12}} or test {\ifnumcomp{##1}{=}{0}} or test {\ifnumcomp{##1}{=}{24}}}
+{\DTMminutepaststringONE}%
+{\ifboolexpr{ test {\ifnumcomp{##1}{=}{13}} or test {\ifnumcomp{##1}{=}{1}}}
+{\DTMminutepaststringTWO}%
+{\DTMminutepaststringTHREE}}%
+\else
+\ifboolexpr{ test {\ifnumcomp{##1}{=}{12}} or test {\ifnumcomp{##1}{=}{0}}or test {\ifnumcomp{##1}{=}{24}}}
+{\DTMminutespaststringONE}%THREE
+{\ifboolexpr{ test {\ifnumcomp{##1}{=}{13}} or test {\ifnumcomp{##1}{=}{1}}}
+{\DTMminutespaststringTWO}%TWO
+{\DTMminutespaststringTHREE}}\fi\fi\fi%
+\ifnum##1>12
+\ifnum##1=24\DTMitalianmidnight%
+\else
+\ifnum##1=13\DTMoneatnightstring\else\protect\printnumeroinparole{\numexpr##1-12}\fi%
+\fi%
+\else
+\ifnum##1=0\DTMitalianmidnight%
+\else
+\ifnum##1=1\DTMoneatnightstring\else\ifnum##1=12\DTMitaliannoon\else\protect\printnumeroinparole{##1}\fi\fi
+\fi%
+\fi%
+\else
+\ifnum##2=45
+\ifboolexpr{ test {\ifnumcomp{##1}{=}{12}} or test {\ifnumcomp{##1}{=}{0}}or test {\ifnumcomp{##1}{=}{24}}}
+{\DTMquartertostringTWO}%
+{\ifboolexpr{ test {\ifnumcomp{##1}{=}{11}} or test {\ifnumcomp{##1}{=}{23}}}
+{\DTMquartertostringONE}%
+{\DTMquartertostringTHREE}}%
+\else
+\ifnum##2=59\DTMoneminutestring\else\protect\printnumeroinparole{\numexpr60-##2}\fi
+\ifnum##2=59
+\ifboolexpr{ test {\ifnumcomp{##1}{=}{0}} or test {\ifnumcomp{##1}{=}{12}}or test {\ifnumcomp{##1}{=}{24}}}
+{\DTMminutetostringTWO}%
+{\ifboolexpr{ test {\ifnumcomp{##1}{=}{11}} or test {\ifnumcomp{##1}{=}{23}}}
+{\DTMminutetostringONE\space}%
+{\DTMminutetostringTHREE\space}}%
+\else\space
+\ifboolexpr{ test {\ifnumcomp{##1}{=}{0}} or test {\ifnumcomp{##1}{=}{24}}or test {\ifnumcomp{##1}{=}{12}}}%
+{\DTMminutestostringTWO}%
+{\ifboolexpr{ test {\ifnumcomp{##1}{=}{11}} or test {\ifnumcomp{##1}{=}{23}}}
+{\DTMminutestostringONE\space}%
+{\DTMminutestostringTHREE\space}}\fi\fi%
+\ifnum##1>12
+\ifnum##1=24\DTMoneatnightstring%
+\else
+\ifnum##1=23\DTMitalianmidnight\else\protect\printnumeroinparole{\numexpr##1-11}\fi\fi%
+\else
+\ifnum##1=12\DTMoneatnightstring\space\DTMitafternoonstring%
+\else
+\ifnum##1=0\DTMoneatnightstring\space%
+\else%
+\ifnum##1=11\DTMitaliannoon\else\protect\printnumeroinparole{\numexpr##1+1}\fi\fi\fi\fi\fi\fi%
+\ifnum##1>11
+\ifnum##1=23
+\ifnum##2<31\space\DTMitafternoonstring\fi%
+\else
+\ifnum##1=24
+\ifnum##2>30\space\DTMitmorningstring\fi%
+\else
+\ifnum##1=12\space\else\space\DTMitafternoonstring\fi\fi\fi%
+\else
+\ifnum##1>0
+\ifnum##1=11\else\space\DTMitmorningstring\fi%
+\else
+\ifnum##2>30\space\DTMitmorningstring\fi\fi\fi}}}%
+% \end{macrocode}
+% \begin{macrocode}
+\DTMnewdatestyle{it-fulltext-twenty-four}{%
+\renewcommand*\DTMdisplaydate[4]{%
+ \ifDTMshowdow
+ \ifnum##4>-1\DTMitalianweekdayname{##4}\space\fi\fi%
+ \ifnum##3=1\DTMitthefirstoneofthemonth\space\DTMitalianmonthname{##2}%
+ \DTMitfulltextmonthyearsep\protect\printnumeroinparole{##1}\space%
+ \else\protect\printnumeroinparole{##3}\space\DTMitalianmonthname{##2}%
+ \DTMitfulltextmonthyearsep\protect\printnumeroinparole{##1}\fi}}%
+\DTMsetdatestyle{it-fulltext-twenty-four}
+\DTMnewtimestyle{it-fulltext-twenty-four}{%
+\renewcommand\DTMdisplaytime[3]{%
+\ifboolexpr
+{test {\ifnumequal{##2}{0}} and (test {\ifnumequal{##1}{0}}
+or test {\ifnumequal{##1}{12}}
+or test {\ifnumequal{##1}{24}}
+)
+}%
+{%
+\ifnum##1=12\DTMitaliannoon\else\DTMitalianmidnight
+\fi
+}%
+{%
+\ifnum##2=0\protect\printnumeroinparole{##1}\space\DTMitoclockstring%
+\else
+\ifnum##2<31
+\ifnum##2=15
+\ifnum##1=1\DTMquarterpaststringTWO\else
+\ifboolexpr{ test {\ifnumcomp{##1}{=}{12}} or test {\ifnumcomp{##1}{=}{0}} or test {\ifnumcomp{##1}{=}{24}}}
+{\DTMquarterpaststringONE}%
+{\DTMquarterpaststringTHREE}%
+\fi%
+\else
+\ifnum##2=30
+\ifnum##1=1\DTMhalfpaststringTWO%
+\else%
+\ifboolexpr{ test {\ifnumcomp{##1}{=}{0}} or test {\ifnumcomp{##1}{=}{24}} or test {\ifnumcomp{##1}{=}{12}}}
+{\DTMhalfpaststringONE}%
+{\DTMhalfpaststringTHREE}%
+\fi
+\else
+\ifnum##2=1\DTMoneminutestring\else\protect\printnumeroinparole{##2}\space
+\fi
+\ifnum##2=1
+\ifboolexpr{ test {\ifnumcomp{##1}{=}{12}} or test {\ifnumcomp{##1}{=}{0}} or test {\ifnumcomp{##1}{=}{24}}}
+{\DTMminutepaststringONE}%one
+{\ifnum##1=1\DTMminutepaststringTWO\else\DTMminutepaststringTHREE\fi}%
+\else
+\ifboolexpr{ test {\ifnumcomp{##1}{=}{12}} or test {\ifnumcomp{##1}{=}{0}}or test {\ifnumcomp{##1}{=}{24}}}
+{\DTMminutespaststringONE}%THREE
+{\ifnum##1=1\DTMminutespaststringTWO\else\DTMminutespaststringTHREE\fi}%
+\fi%
+\fi%
+\fi%
+\ifnum##1>12
+\ifnum##1=24\DTMitalianmidnight\else\protect\printnumeroinparole{##1}%
+\fi%
+\else
+\ifnum##1=0\DTMitalianmidnight\space%
+\else
+\ifnum##1=1\DTMoneatnightstring\else\ifnum##1=12\DTMitaliannoon\else\protect\printnumeroinparole{##1}\fi\fi%
+\fi
+\fi
+\else
+\ifnum##2=45%
+\ifboolexpr{test {\ifnumcomp{##1}{=}{0}}or test {\ifnumcomp{##1}{=}{24}}}
+{\DTMquartertostringTWO}%
+{\ifboolexpr{ test {\ifnumcomp{##1}{=}{11}} or test {\ifnumcomp{##1}{=}{23}}}
+{\DTMquartertostringONE}%
+{\DTMquartertostringTHREE}%
+}%
+\else
+\ifnum##2=59\DTMoneminutestring\else\protect\printnumeroinparole{\numexpr60-##2}\space\fi
+\ifnum##2=59
+\ifboolexpr{ test {\ifnumcomp{##1}{=}{0}} or test {\ifnumcomp{##1}{=}{24}}}
+{\DTMminutetostringTWO}%
+{\ifboolexpr{ test {\ifnumcomp{##1}{=}{11}} or test {\ifnumcomp{##1}{=}{23}}}
+{\DTMminutetostringONE\space}%
+{\DTMminutetostringTHREE\space}%
+}%
+\else
+\ifboolexpr{ test {\ifnumcomp{##1}{=}{0}} or test {\ifnumcomp{##1}{=}{24}}}
+{\DTMminutestostringTWO}%
+{\ifboolexpr{ test {\ifnumcomp{##1}{=}{11}} or test {\ifnumcomp{##1}{=}{23}}}
+{\DTMminutestostringONE\space}%
+{\DTMminutestostringTHREE\space}%
+}%
+\fi
+\fi
+\ifnum##1>12
+\ifnum##1=24
+\DTMoneatnightstring%
+\else
+\ifnum##1=23
+\DTMitalianmidnight
+\else
+\protect\printnumeroinparole{##1}%
+\fi
+\fi
+\else
+\ifnum##1=12\protect\printnumeroinparole{\numexpr##1+1}
+\else
+\ifnum##1=0\DTMoneatnightstring%
+\else
+\ifnum##1=11\DTMitaliannoon\else\protect\printnumeroinparole{\numexpr##1+1}\fi
+\fi%
+\fi
+\fi
+\fi
+\fi
+}}}%
+% \end{macrocode}
+% \begin{macrocode}
+\DTMnewdatestyle{it-fulltext-second}{%
+ \renewcommand*\DTMdisplaydate[4]{%
+ \ifDTMshowdow\ifnum##4>-1\DTMitalianweekdayname{##4}\space\fi\fi%
+ \ifnum##3=1\DTMitthefirstoneofthemonth\space\DTMitalianmonthname{##2}%
+ \DTMitfulltextmonthyearsep\protect\printnumeroinparole{##1}\space%
+ \else\protect\printnumeroinparole{##3}\space\DTMitalianmonthname{##2}%
+ \DTMitfulltextmonthyearsep\protect\printnumeroinparole{##1}\fi}}%
+\DTMsetdatestyle{it-fulltext-second}
+\DTMnewtimestyle{it-fulltext-second}{%
+ \renewcommand\DTMdisplaytime[3]{%
+ \ifboolexpr
+ {test {\ifnumequal{##2}{0}} and
+ (test {\ifnumequal{##1}{0}}
+ or test {\ifnumequal{##1}{12}}
+ or test {\ifnumequal{##1}{24}} )}%
+ {\ifnum##1=12\DTMitaliannoon\space\DTMitsecondsep\space\DTMitminuti{##2}\DTMitsecondi{##3}
+ \else\DTMitalianmidnight\space\DTMitminuti{##2}\DTMitsecondsep\DTMitsecondi{##3}\fi}%
+ {\ifnum##2=0
+ \ifboolexpr{ (test {\ifnumcomp{##1}{=}{1}} or test {\ifnumcomp{##1}{=}{13}}) and test {\ifnumcomp{##3}{=}{0}}}
+ {\DTMoneatnightstring\space\DTMitminuti{##2}\DTMitsecondsep\DTMitsecondi{##3}}%
+ {\ifnum##1>13\protect\printnumeroinparole{\numexpr##1-12}\space\DTMitsecondsep\DTMitminuti{##2}\DTMitsecondi{##3}\else
+ \ifboolexpr{ test {\ifnumcomp{##1}{=}{1}} or test {\ifnumcomp{##1}{=}{13}}}
+ {\DTMoneatnightstring\space\DTMitminuti{##2}\DTMitsecondsep\DTMitsecondi{##3}}
+ {\printnumeroinparole{##1}\space\DTMitminuti{##2}\DTMitsecondsep\DTMitsecondi{##3}}\fi}%
+ \else
+ \ifnum##2<31
+ \ifnum##2=15
+ \ifnum##1=1\DTMquarterpaststringZERO\DTMitsecondi{##3}\space\DTMitpoststringTWO\else
+ \ifboolexpr{ test {\ifnumcomp{##1}{=}{12}} or test {\ifnumcomp{##1}{=}{0}} or test {\ifnumcomp{##1}{=}{24}}}
+ {\DTMquarterpaststringZERO\DTMitsecondi{##3}\space\DTMitpoststringONE\space}%
+ {\ifnum##1=13\DTMquarterpaststringZERO\DTMitsecondi{##3}\space\DTMitpoststringTWO \else\DTMquarterpaststringZERO\DTMitsecondi{##3}\space\DTMitpoststringTHREE\fi}%
+ \fi\else%
+ \ifnum##2=30
+ \ifboolexpr{ test {\ifnumcomp{##1}{=}{1}} or test {\ifnumcomp{##1}{=}{13}}}
+ {\DTMhalfstringZERO\DTMitsecondi{##3}\space\DTMitpoststringTWO}%
+ {\ifboolexpr{ test {\ifnumcomp{##1}{=}{0}} or test {\ifnumcomp{##1}{=}{24}} or test {\ifnumcomp{##1}{=}{12}}}
+ {\DTMhalfstringZERO\DTMitsecondi{##3}\space\DTMitpoststringONE\space}%
+ {\DTMhalfstringZERO\DTMitsecondi{##3}\space\DTMitpoststringTHREE}}%
+ \else%
+ \ifnum##2=1\DTMoneminutestring\else\protect\printnumeroinparole{##2}\space%
+ \fi
+ \ifnum##2=1
+ \ifboolexpr{ test {\ifnumcomp{##1}{=}{12}} or test {\ifnumcomp{##1}{=}{0}} or test {\ifnumcomp{##1}{=}{24}}}%
+ {\DTMminutetostringZERO\DTMitsecondi{##3}\space\DTMitpoststringONE\space}%one
+ {\ifboolexpr{ test {\ifnumcomp{##1}{=}{13}} or test {\ifnumcomp{##1}{=}{1}}}
+ {\DTMminutetostringZERO\DTMitsecondi{##3}\space\DTMitpoststringTWO}%two
+ {\DTMminutetostringZERO\DTMitsecondi{##3}\space\DTMitpoststringTHREE}%three
+ }%
+ \else
+ \ifboolexpr{ test {\ifnumcomp{##1}{=}{12}} or test {\ifnumcomp{##1}{=}{0}}or test {\ifnumcomp{##1}{=}{24}} }
+ {\DTMminutesstringZERO\DTMitsecondi{##3}\space\DTMitpoststringONE\space}%
+ {\ifboolexpr{ test {\ifnumcomp{##1}{=}{13}} or test {\ifnumcomp{##1}{=}{1}}}
+ {\DTMminutesstringZERO\DTMitsecondi{##3}\space\DTMitpoststringTWO}%TWO
+ {\DTMminutesstringZERO\DTMitsecondi{##3}\space\DTMitpoststringTHREE}}%
+ \fi
+ \fi%
+ \fi%
+ \ifnum##1>12
+ \ifnum##1=24
+ \DTMitalianmidnight
+ \else
+ \ifnum##1=13\DTMoneatnightstring\else\protect\printnumeroinparole{\numexpr##1-12}\fi%
+ \fi%
+ \else
+ \ifnum##1=0
+ \DTMitalianmidnight
+ \else
+ \ifnum##1=1\DTMoneatnightstring\else\ifnum##1=12\DTMitaliannoon\else\protect\printnumeroinparole{##1}\fi\fi\fi\fi%
+ \else
+ \ifnum##2=45
+ \ifboolexpr{ test {\ifnumcomp{##1}{=}{12}} or test {\ifnumcomp{##1}{=}{0}}or test {\ifnumcomp{##1}{=}{24}}}
+ {\DTMquartertostringZERO\DTMitsecondi{##3}\space\DTMitsep}%
+ {\ifboolexpr{ test {\ifnumcomp{##1}{=}{11}} or test {\ifnumcomp{##1}{=}{23}}}
+ {\DTMquartertostringZERO\DTMitsecondi{##3}\space\DTMitsecondsepTWO\space}%
+ {\DTMquartertostringZERO\DTMitsecondi{##3}\space\DTMitsepTWO\space}}%
+ \else
+ \ifnum##2=59\DTMoneminutestring\else\protect\printnumeroinparole{\numexpr60-##2}\fi
+ \ifnum##2=59
+ \ifboolexpr{ test {\ifnumcomp{##1}{=}{0}} or test {\ifnumcomp{##1}{=}{12}}or test {\ifnumcomp{##1}{=}{24}}}
+ {\DTMminutetostringZERO\DTMitsecondi{##3}\space\DTMitsep}%
+ {\ifboolexpr{ test {\ifnumcomp{##1}{=}{11}} or test {\ifnumcomp{##1}{=}{23}}}
+ {\DTMminutetostringZERO\DTMitsecondi{##3}\space\DTMitsecondsepTWO\space}%
+ {\DTMminutetostringZERO\DTMitsecondi{##3}\space\DTMitsepTWO\space}%
+ }%
+ \else\space
+ \ifboolexpr{ test {\ifnumcomp{##1}{=}{0}} or test {\ifnumcomp{##1}{=}{24}}or test {\ifnumcomp{##1}{=}{12}}}%
+ {\DTMminutesstringZERO\DTMitsecondi{##3}\space\DTMitsep}%
+ {\ifboolexpr{ test {\ifnumcomp{##1}{=}{11}} or test {\ifnumcomp{##1}{=}{23}}}
+ {\DTMminutesstringZERO\DTMitsecondi{##3}\space\DTMitsecondsepTWO\space}%
+ {\DTMminutesstringZERO\DTMitsecondi{##3}\space\DTMitsepTWO\space}}%
+ \fi\fi%
+ \ifnum##1>12
+ \ifnum##1=24
+ \DTMoneatnightstring%
+ \else
+ \ifnum##1=23\DTMitalianmidnight\else\protect\printnumeroinparole{\numexpr##1-11}%
+ \fi
+ \fi
+ \else
+ \ifnum##1=12\DTMoneatnightstring%\DTMitafternoonstring%
+ \else
+ \ifnum##1=0\DTMoneatnightstring%\ifnum##2=45\DTMoneatnightstring\else\DTMoneatnightstring\fi%
+ \else%
+ \ifnum##1=11\DTMitaliannoon\else\ifnum##2=45\protect\printnumeroinparole{\numexpr##1+1}
+ \else\protect\printnumeroinparole{\numexpr##1+1}\fi\fi\fi\fi\fi\fi\fi%
+ \ifnum##1>11
+ \ifnum##1=23
+ \ifnum##2<31
+ \space\DTMitafternoonstring%
+ \fi
+ \else
+ \ifnum##1=24
+ \ifnum##2>30
+ \space\DTMitmorningstring%
+ \fi
+ \else
+ \ifnum##1=12\space\else\space\DTMitafternoonstring\fi
+ \fi
+ \fi
+ \else
+ \ifnum##1>0
+ \ifnum##1=11\else\space\DTMitmorningstring\fi
+ \else
+ \ifnum##2>30
+ \space\DTMitmorningstring
+ \fi
+ \fi
+ \fi
+ }}}%
+% \end{macrocode}
+% \begin{macrocode}
+\DTMnewdatestyle{it-fulltext-twenty-four-second}{%
+ \renewcommand*\DTMdisplaydate[4]{%
+ \ifnum##4>-1
+ \DTMitalianweekdayname{##4}\space%
+ \fi
+ \ifnum##3=1\DTMitthefirstoneofthemonth\space\DTMitalianmonthname{##2}%
+ \DTMitfulltextmonthyearsep\protect\printnumeroinparole{##1}\space%
+ \else\protect\printnumeroinparole{##3}\space\DTMitalianmonthname{##2}%
+ \DTMitfulltextmonthyearsep\protect\printnumeroinparole{##1}\fi%
+ }}%
+\DTMsetdatestyle{it-fulltext-twenty-four-second}
+\DTMnewtimestyle{it-fulltext-twenty-four-second}{%
+ \renewcommand\DTMdisplaytime[3]{%
+ \ifboolexpr
+ {test {\ifnumequal{##2}{0}} and
+ (test {\ifnumequal{##1}{0}}
+ or test {\ifnumequal{##1}{12}}
+ or test {\ifnumequal{##1}{24}}
+ )}%
+{%
+\ifnum##1=12\DTMitaliannoon\space\DTMitminuti{##2}\DTMitsecondsep\DTMitsecondi{##3}
+\else\DTMitalianmidnight\space\DTMitminuti{##2}\DTMitsecondsep\DTMitsecondi{##3}%
+ \fi}%
+ {%
+ \ifnum##2=0\ifboolexpr{ (test {\ifnumcomp{##1}{=}{1}}) and test {\ifnumcomp{##3}{=}{0}}}
+ {\DTMoneatnightstring\space\DTMitminuti{##2}\DTMitsecondsep\DTMitsecondi{##3}}%
+ {\ifnum##1>13\protect\printnumeroinparole{##1}\space\DTMitminuti{##2}\space\DTMitsecondsep \DTMitsecondi{##3}\else
+ \ifnum##1=1\protect\DTMoneatnightstring\space\DTMitminuti{##2}\DTMitsecondsep\DTMitsecondi{##3}
+ \else\printnumeroinparole{##1}\space\DTMitminuti{##2}\DTMitsecondsep\DTMitsecondi{##3}\fi\fi}%
+ \else
+ \ifnum##2<31
+ \ifnum##2=15
+ \ifnum##1=1\DTMquarterpaststringZERO\DTMitsecondi{##3}\space\DTMitpoststringTWO\else
+ \ifboolexpr{ test {\ifnumcomp{##1}{=}{12}} or test {\ifnumcomp{##1}{=}{0}} or test {\ifnumcomp{##1}{=}{24}}}
+ {\DTMquarterpaststringZERO\DTMitsecondi{##3}\space\DTMitpoststringONE\space}%
+ {\ifnum##1=13\DTMquarterpaststringZERO\DTMitsecondi{##3}\space\DTMitpoststringTHREE
+ \else\DTMquarterpaststringZERO\DTMitsecondi{##3}\space\DTMitpoststringTHREE\fi}%
+ \fi%
+ \else%
+ \ifnum##2=30
+ \ifboolexpr{ test {\ifnumcomp{##1}{=}{1}} or test {\ifnumcomp{##1}{=}{13}}}
+ {\DTMhalfstringZERO\DTMitsecondi{##3}\space\DTMitpoststringTHREE}%
+ {\ifboolexpr{ test {\ifnumcomp{##1}{=}{0}} or test {\ifnumcomp{##1}{=}{24}} or test {\ifnumcomp{##1}{=}{12}}}
+ {\DTMhalfstringZERO\DTMitsecondi{##3}\space\DTMitpoststringONE\space}%
+ {\DTMhalfstringZERO\DTMitsecondi{##3}\space\DTMitpoststringTHREE}%
+ }%
+ \else%
+ \ifnum##2=1\DTMoneminutestring\else\protect\printnumeroinparole{##2}\space%
+ \fi
+ \ifnum##2=1
+ \ifboolexpr{ test {\ifnumcomp{##1}{=}{12}} or test {\ifnumcomp{##1}{=}{0}} or test {\ifnumcomp{##1}{=}{24}}}
+ {\DTMminutetostringZERO\DTMitsecondi{##3}\space\DTMitpoststringONE\space}%one
+ {\ifboolexpr{ test {\ifnumcomp{##1}{=}{13}} or test {\ifnumcomp{##1}{=}{1}}}
+ {\DTMminutetostringZERO\DTMitsecondi{##3}\space\DTMitpoststringTHREE}%two
+ {\DTMminutetostringZERO\DTMitsecondi{##3}\space\DTMitpoststringTHREE}%three
+ }%
+ \else
+ \ifboolexpr{ test {\ifnumcomp{##1}{=}{12}} or test {\ifnumcomp{##1}{=}{0}}or test {\ifnumcomp{##1}{=}{24}} }
+ {\DTMminutesstringZERO\DTMitsecondi{##3}\space\DTMitpoststringONE\space}%
+ {\ifboolexpr{ test {\ifnumcomp{##1}{=}{13}}}
+ {\DTMminutesstringZERO\DTMitsecondi{##3}\space\DTMitpoststringTHREE}%TWO
+ {\DTMminutesstringZERO\DTMitsecondi{##3}\space\DTMitpoststringTHREE}}%
+ \fi%
+ \fi%
+ \fi%
+ \ifnum##1>12
+ \ifnum##1=24
+ \DTMitalianmidnight
+ \else
+ \protect\printnumeroinparole{##1}%\fi%
+ \fi%
+ \else
+ \ifnum##1=0
+ \DTMitalianmidnight
+ \else
+ \ifnum##1=1\DTMoneatnightstring\else\ifnum##1=12\DTMitaliannoon
+ \else\protect\printnumeroinparole{##1}\fi\fi%
+ \fi
+ \fi
+ \else
+ \ifnum##2=45
+ \ifboolexpr{ test {\ifnumcomp{##1}{=}{0}}or test {\ifnumcomp{##1}{=}{24}}}
+ {\DTMquartertostringZERO\DTMitsecondi{##3}\space\DTMitsep}%
+ {\ifboolexpr{ test {\ifnumcomp{##1}{=}{11}} or test {\ifnumcomp{##1}{=}{23}}}
+ {\DTMquartertostringZERO\DTMitsecondi{##3}\space\DTMitsecondsepTWO\space}%
+ {\DTMquartertostringZERO\DTMitsecondi{##3}\space\DTMitsepTWO\space}%
+ }%
+ \else
+ \ifnum##2=59\DTMoneminutestring\else\protect\printnumeroinparole{\numexpr60-##2}\fi
+ \ifnum##2=59
+ \ifboolexpr{ test {\ifnumcomp{##1}{=}{0}} or test {\ifnumcomp{##1}{=}{24}}}
+ {\DTMminutetostringZERO\DTMitsecondi{##3}\space\DTMitsep}%
+ {\ifboolexpr{ test {\ifnumcomp{##1}{=}{11}} or test {\ifnumcomp{##1}{=}{23}}}
+ {\DTMminutetostringZERO\DTMitsecondi{##3}\space\DTMitsecondsepTWO\space}%
+ {\DTMminutetostringZERO\DTMitsecondi{##3}\space\DTMitsepTWO\space}%
+ }%
+ \else\space
+ \ifboolexpr{ test {\ifnumcomp{##1}{=}{0}} or test {\ifnumcomp{##1}{=}{24}}}%
+ {\DTMminutesstringZERO\DTMitsecondi{##3}\space\DTMitsep}%
+ {\ifboolexpr{ test {\ifnumcomp{##1}{=}{11}} or test {\ifnumcomp{##1}{=}{23}}}
+ {\DTMminutesstringZERO\DTMitsecondi{##3}\space\DTMitsecondsepTWO\space}%
+ {\DTMminutesstringZERO\DTMitsecondi{##3}\space\DTMitsepTWO\space}%
+ }%
+ \fi
+ \fi
+ \ifnum##1>12
+ \ifnum##1=24
+ \DTMoneatnightstring%
+ \else
+ \ifnum##1=23\DTMitalianmidnight\else\protect\printnumeroinparole{##1}%
+ \fi
+ \fi
+ \else
+ \ifnum##1=0\ifnum##2=45\DTMoneatnightstring\else\DTMoneatnightstring\fi%
+ \else%
+ \ifnum##1=11\DTMitaliannoon\else
+ \ifnum##2=45\protect\printnumeroinparole{\numexpr##1+1}
+ \else\protect\printnumeroinparole{\numexpr##1+1}\fi\fi
+ \fi%
+ \fi
+ \fi
+ \fi
+ }%
+ }%
+}%
+% \end{macrocode}
+% \begin{macrocode}
+\DTMnewdatestyle{it-fulltext-semplice}{%
+ \renewcommand*\DTMdisplaydate[4]{%
+ \ifnum##4>-1\DTMitalianweekdayname{##4}\space\fi%
+ \ifnum##3=1\DTMitthefirstoneofthemonth\space\DTMitalianmonthname{##2}%
+ \DTMitfulltextmonthyearsep\protect\printnumeroinparole{##1}\space%
+ \else\protect\printnumeroinparole{##3}\space\DTMitalianmonthname{##2}%
+ \DTMitfulltextmonthyearsep\protect\printnumeroinparole{##1}\fi%
+ }%
+}%
+% \end{macrocode}
+% \begin{macrocode}
+\DTMsetdatestyle{it-fulltext-semplice}
+\DTMnewtimestyle{it-fulltext-semplice}{%
+ \renewcommand\DTMdisplaytime[3]{%
+ \ifboolexpr
+ {test {\ifnumequal{##1}{0}}
+ or test {\ifnumequal{##1}{12}}
+ or test {\ifnumequal{##1}{24}}}%
+ {\ifboolexpr
+ {test {\ifnumequal{##1}{0}}%
+ or test {\ifnumequal{##1}{24}}}%
+ {\DTMitalianmidnight\space\DTMitminuti{##2}\space\DTMitsecondsep\DTMitsecondi{##3}}%
+ {\DTMitaliannoon\space\DTMitminuti{##2}\space\DTMitsecondsep\DTMitsecondi{##3}}}%
+ {ore\space\DTMitore{##1}\space\DTMitminuti{##2}\space\DTMitsecondsep\DTMitsecondi{##3}}%
+}%
+}%
+% \end{macrocode}%\iffalse
+% \begin{macrocode}
+%</datetime2-it-fulltext.sty>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*datetime2-it-fulltext-utf8.ldf>
+% \end{macrocode}
+%\fi
+% \begin{macrocode}
+\ProvidesDateTimeModule{it-fulltext-utf8}[2015/05/10 v1.2]
+% \end{macrocode}
+% \begin{macrocode}
+\newcommand*{\DTMitsecondstring}{secondo}
+\newcommand*{\DTMitsecondsstring}{secondi}
+\newcommand*{\DTMitminutesstring}{minuti}
+\newcommand*{\DTMitsecondsep}{e\space}
+\newcommand*{\DTMitminutessep}{,\space}
+\newcommand*{\DTMitsecondsepTWO}{a}
+\newcommand*{\DTMitsep}{allā€˜}
+\newcommand*{\DTMitsepTWO}{alle}
+\newcommand*{\DTMitonesecondstring}{un}
+\newcommand*{\DTMitpoststringONE}{dopo}
+\newcommand*{\DTMitpoststringTWO}{dopo lā€˜}
+\newcommand*{\DTMitpoststringTHREE}{dopo le\space}
+\newcommand*{\DTMitoneminutestring}{un minuto\space}
+\newcommand*{\DTMitzerominutsestring}{zero minuti\space}
+
+\newcommand*{\DTMitoclockstring}{in punto}
+\newcommand*{\DTMoneminutestring}{un\space}
+\newcommand*{\DTMoneatnightstring}{una}
+
+\newcommand*{\DTMitthefirstoneofthemonth}{primo}
+
+\newcommand*{\DTMquarterpaststringZERO}{quindici minuti e\space}
+\newcommand*{\DTMquarterpaststringONE}{quindici minuti dopo\space}
+\newcommand*{\DTMquarterpaststringTWO}{quindici minuti dopo lā€˜}
+\newcommand*{\DTMquarterpaststringTHREE}{quindici minuti dopo le\space}
+
+\newcommand*{\DTMminutepaststringONE}{minuto dopo\space}
+\newcommand*{\DTMminutepaststringTWO}{minuto dopo lā€˜}
+\newcommand*{\DTMminutepaststringTHREE}{minuto dopo le\space}
+
+\newcommand*{\DTMminutespaststringONE}{minuti dopo\space}
+\newcommand*{\DTMminutespaststringTWO}{minuti dopo lā€˜}
+\newcommand*{\DTMminutespaststringTHREE}{minuti dopo le\space}
+
+\newcommand*{\DTMhalfstringZERO}{trenta minuti e\space}
+\newcommand*{\DTMhalfpaststringONE}{trenta minuti dopo\space}
+\newcommand*{\DTMhalfpaststringTWO}{trenta minuti dopo lā€˜}
+\newcommand*{\DTMhalfpaststringTHREE}{trenta minuti dopo le\space}
+
+\newcommand*{\DTMquartertostringZERO}{un quarto e\space}
+\newcommand*{\DTMquartertostringONE}{un quarto a\space}
+\newcommand*{\DTMquartertostringTWO}{un quarto allā€˜}
+\newcommand*{\DTMquartertostringTHREE}{un quarto alle\space}
+
+\newcommand*{\DTMminutetostringZERO}{minuto e\space}
+\newcommand*{\DTMminutetostringONE}{minuto a}
+\newcommand*{\DTMminutetostringTWO}{minuto allā€˜}
+\newcommand*{\DTMminutetostringTHREE}{minuto alle}
+
+\newcommand*{\DTMminutesstringZERO}{minuti e\space}
+\newcommand*{\DTMminutestostringONE}{minuti a}
+\newcommand*{\DTMminutestostringTWO}{minuti allā€˜}
+\newcommand*{\DTMminutestostringTHREE}{minuti alle}
+
+
+\newcommand*{\DTMitmorningstring}{del mattino}
+\newcommand*{\DTMitafternoonstring}{del pomeriggio}
+% \end{macrocode}
+%\iffalse
+% \begin{macrocode}
+%</datetime2-it-fulltext-utf8.ldf>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*datetime2-it-fulltext-ascii.ldf>
+% \end{macrocode}
+%\fi
+% \begin{macrocode}
+\ProvidesDateTimeModule{it-fulltext-ascii}[2015/04/10 v1.1]
+% \end{macrocode}
+% \begin{macrocode}
+\newcommand*{\DTMitsecondstring}{secondo}
+\newcommand*{\DTMitsecondsstring}{secondi}
+\newcommand*{\DTMitminutesstring}{minuti}
+\newcommand*{\DTMitsecondsep}{e\space}
+\newcommand*{\DTMitminutessep}{,\space}
+\newcommand*{\DTMitsecondsepTWO}{a}
+\newcommand*{\DTMitsep}{all\protectā€˜}
+\newcommand*{\DTMitsepTWO}{alle}
+\newcommand*{\DTMitonesecondstring}{un}
+\newcommand*{\DTMitpoststringONE}{dopo}
+\newcommand*{\DTMitpoststringTWO}{dopo l\protectā€˜}
+\newcommand*{\DTMitpoststringTHREE}{dopo le\space}
+\newcommand*{\DTMitoneminutestring}{un minuto\space}
+\newcommand*{\DTMitzerominutsestring}{zero minuti\space}
+
+\newcommand*{\DTMitoclockstring}{in punto}
+\newcommand*{\DTMoneminutestring}{un\space}
+\newcommand*{\DTMoneatnightstring}{una}
+
+\newcommand*{\DTMitthefirstoneofthemonth}{primo}
+
+\newcommand*{\DTMquarterpaststringZERO}{quindici minuti e\space}
+\newcommand*{\DTMquarterpaststringONE}{quindici minuti dopo\space}
+\newcommand*{\DTMquarterpaststringTWO}{quindici minuti dopo l\protectā€˜}
+\newcommand*{\DTMquarterpaststringTHREE}{quindici minuti dopo le\space}
+
+\newcommand*{\DTMminutepaststringONE}{minuto dopo\space}
+\newcommand*{\DTMminutepaststringTWO}{minuto dopo l\protectā€˜}
+\newcommand*{\DTMminutepaststringTHREE}{minuto dopo le\space}
+
+\newcommand*{\DTMminutespaststringONE}{minuti dopo\space}
+\newcommand*{\DTMminutespaststringTWO}{minuti dopo l\protectā€˜}
+\newcommand*{\DTMminutespaststringTHREE}{minuti dopo le\space}
+
+\newcommand*{\DTMhalfstringZERO}{trenta minuti e\space}
+\newcommand*{\DTMhalfpaststringONE}{trenta minuti dopo\space}
+\newcommand*{\DTMhalfpaststringTWO}{trenta minuti dopo l\protectā€˜}
+\newcommand*{\DTMhalfpaststringTHREE}{trenta minuti dopo le\space}
+
+\newcommand*{\DTMquartertostringZERO}{un quarto e\space}
+\newcommand*{\DTMquartertostringONE}{un quarto a\space}
+\newcommand*{\DTMquartertostringTWO}{un quarto all\protectā€˜}
+\newcommand*{\DTMquartertostringTHREE}{un quarto alle\space}
+
+\newcommand*{\DTMminutetostringZERO}{minuto e\space}
+\newcommand*{\DTMminutetostringONE}{minuto a}
+\newcommand*{\DTMminutetostringTWO}{minuto all\protectā€˜}
+\newcommand*{\DTMminutetostringTHREE}{minuto alle}
+
+\newcommand*{\DTMminutesstringZERO}{minuti e\space}
+\newcommand*{\DTMminutestostringONE}{minuti a}
+\newcommand*{\DTMminutestostringTWO}{minuti all\protectā€˜}
+\newcommand*{\DTMminutestostringTHREE}{minuti alle}
+
+
+\newcommand*{\DTMitmorningstring}{del mattino}
+\newcommand*{\DTMitafternoonstring}{del pomeriggio}
+% \end{macrocode}
+%%
+%\iffalse
+% \begin{macrocode}
+%</datetime2-it-fulltext-ascii.ldf>
+% \end{macrocode}
+%\fi
+%\Finale
+\endinput
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-it-fulltext/datetime2-it-fulltext.ins b/macros/latex/contrib/datetime2-contrib/datetime2-it-fulltext/datetime2-it-fulltext.ins
new file mode 100644
index 0000000000..e31d2aa11b
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-it-fulltext/datetime2-it-fulltext.ins
@@ -0,0 +1,35 @@
+% datetime2-it-fulltext.ins generated using makedtx version 0.94b 2015/8/9 13:47
+\input docstrip
+
+\preamble
+
+ datetime2-it-fulltext.dtx
+ Copyright 2015 Claudio Duchi
+
+ This work may be distributed and/or modified under the
+ conditions of the LaTeX Project Public License, either version 1.3
+ of this license of (at your option) any later version.
+ The latest version of this license is in
+ http://www.latex-project.org/lppl.txt
+ and version 1.3 or later is part of all distributions of LaTeX
+ version 2005/12/01 or later.
+
+ This work has the LPPL maintenance status `maintained'.
+
+ The Current Maintainer of this work is Claudio Duchi.
+
+ This work consists of the files datetime2-it-fulltext.dtx and datetime2-it-fulltext.ins and the derived files datetime2-it-fulltext.sty, datetime2-it-fulltext-utf8.ldf, datetime2-it-fulltext-ascii.ldf.
+
+\endpreamble
+
+\askforoverwritefalse
+
+\generate{\file{datetime2-it-fulltext.sty}{\usepreamble\defaultpreamble
+\usepostamble\defaultpostamble\from{datetime2-it-fulltext.dtx}{datetime2-it-fulltext.sty,package}}
+\file{datetime2-it-fulltext-utf8.ldf}{\usepreamble\defaultpreamble
+\usepostamble\defaultpostamble\from{datetime2-it-fulltext.dtx}{datetime2-it-fulltext-utf8.ldf,package}}
+\file{datetime2-it-fulltext-ascii.ldf}{\usepreamble\defaultpreamble
+\usepostamble\defaultpostamble\from{datetime2-it-fulltext.dtx}{datetime2-it-fulltext-ascii.ldf,package}}
+}
+
+\endbatchfile
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-it-fulltext/datetime2-it-fulltext.pdf b/macros/latex/contrib/datetime2-contrib/datetime2-it-fulltext/datetime2-it-fulltext.pdf
new file mode 100644
index 0000000000..f535c2c5ad
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-it-fulltext/datetime2-it-fulltext.pdf
Binary files differ
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-it-fulltext/samples/BatTest.tex b/macros/latex/contrib/datetime2-contrib/datetime2-it-fulltext/samples/BatTest.tex
new file mode 100644
index 0000000000..40827349a8
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-it-fulltext/samples/BatTest.tex
@@ -0,0 +1,797 @@
+
+Time: \DTMcurrenttime.
+
+0:00:00 \DTMdisplaytime{0}{0}{0}.
+
+0:01:00 \DTMdisplaytime{0}{1}{00}.
+
+0:10:00 \DTMdisplaytime{0}{10}{0}.
+
+0:01:01 \DTMdisplaytime{0}{1}{1}.
+
+0:29:00 \DTMdisplaytime{0}{29}{0}.
+
+0:29:08 \DTMdisplaytime{0}{29}{8}.
+
+0:29:01 \DTMdisplaytime{0}{29}{1}.
+
+0:30:00 \DTMdisplaytime{0}{30}{0}.
+
+0:30:01 \DTMdisplaytime{0}{30}{1}.
+
+0:30:09 \DTMdisplaytime{0}{30}{49}.
+
+0:31:00 \DTMdisplaytime{0}{31}{0}.
+
+0:31:01 \DTMdisplaytime{0}{31}{1}.
+
+0:31:05 \DTMdisplaytime{0}{31}{40}.
+
+0:44:00 \DTMdisplaytime{0}{44}{0}.
+
+0:44:01 \DTMdisplaytime{0}{44}{1}.
+
+0:44:59 \DTMdisplaytime{0}{44}{59}.
+
+0:45:00 \DTMdisplaytime{0}{45}{0}.
+
+0:45:01 \DTMdisplaytime{0}{45}{1}.
+
+0:45:25 \DTMdisplaytime{0}{45}{25}.
+
+0:46:00 \DTMdisplaytime{0}{46}{0}.
+
+0:46:01 \DTMdisplaytime{0}{46}{1}.
+
+0:46:25 \DTMdisplaytime{0}{46}{25}.
+
+0:59:00 \DTMdisplaytime{0}{59}{0}.
+
+0:59:01 \DTMdisplaytime{0}{59}{1}.
+
+0:59:20 \DTMdisplaytime{0}{59}{20}.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\newpage
+1:00:00 \DTMdisplaytime{1}{0}{0}.
+
+1:00:01 \DTMdisplaytime{1}{0}{1}.
+
+1:00:20 \DTMdisplaytime{1}{0}{20}.
+
+1:01:00 \DTMdisplaytime{1}{1}{0}.
+
+1:01:01 \DTMdisplaytime{1}{1}{1}.
+
+1:01:20 \DTMdisplaytime{1}{1}{20}.
+
+1:15:00 \DTMdisplaytime{1}{15}{0}.
+
+1:15:01 \DTMdisplaytime{1}{15}{1}.
+
+1:15:15 \DTMdisplaytime{1}{15}{15}.
+
+1:29:00 \DTMdisplaytime{1}{29}{0}.
+
+1:29:01 \DTMdisplaytime{1}{29}{1}.
+
+1:29:25 \DTMdisplaytime{1}{29}{25}.
+
+1:30:00 \DTMdisplaytime{1}{30}{0}.
+
+1:30:01 \DTMdisplaytime{1}{30}{1}.
+
+1:30:12 \DTMdisplaytime{1}{30}{12}.
+
+1:31:00 \DTMdisplaytime{1}{31}{0}.
+
+1:31:01 \DTMdisplaytime{1}{31}{1}.
+
+1:31:55 \DTMdisplaytime{1}{31}{55}.
+
+1:44:00 \DTMdisplaytime{1}{44}{0}.
+
+1:44:01 \DTMdisplaytime{1}{44}{1}
+
+1:44:22 \DTMdisplaytime{1}{44}{22}
+
+1:45:00 \DTMdisplaytime{1}{45}{0}.
+
+1:45:01 \DTMdisplaytime{1}{45}{1}.
+
+1:45:25 \DTMdisplaytime{1}{45}{25}.
+
+1:46:00 \DTMdisplaytime{1}{46}{0}.
+
+1:46:01 \DTMdisplaytime{1}{46}{1}.
+
+1:46:25 \DTMdisplaytime{1}{46}{25}.
+
+1:59:00 \DTMdisplaytime{1}{59}{0}
+
+1:59:01 \DTMdisplaytime{1}{59}{1}
+
+1:59:05 \DTMdisplaytime{1}{59}{5}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\newpage
+2:00:00 \DTMdisplaytime{2}{0}{0}.
+
+2:00:01 \DTMdisplaytime{2}{0}{1}.
+
+2:00:20 \DTMdisplaytime{2}{0}{20}.
+
+2:01:00 \DTMdisplaytime{2}{1}{0}.
+
+2:01:01 \DTMdisplaytime{2}{1}{1}.
+
+2:01:20 \DTMdisplaytime{2}{1}{20}.
+
+2:15:00 \DTMdisplaytime{2}{15}{0}.
+
+2:15:01 \DTMdisplaytime{2}{15}{1}.
+
+2:15:15 \DTMdisplaytime{2}{15}{15}.
+
+2:29:00 \DTMdisplaytime{2}{29}{0}.
+
+2:29:01 \DTMdisplaytime{2}{29}{1}.
+
+2:29:25 \DTMdisplaytime{2}{29}{25}.
+
+2:30:00 \DTMdisplaytime{2}{30}{0}.
+
+2:30:01 \DTMdisplaytime{2}{30}{1}.
+
+2:30:12 \DTMdisplaytime{2}{30}{12}.
+
+2:31:00 \DTMdisplaytime{2}{31}{0}.
+
+2:31:01 \DTMdisplaytime{2}{31}{1}.
+
+2:31:55 \DTMdisplaytime{2}{31}{55}.
+
+2:44:00 \DTMdisplaytime{2}{44}{0}.
+
+2:44:01 \DTMdisplaytime{2}{44}{1}
+
+2:44:22 \DTMdisplaytime{2}{44}{22}
+
+2:45:00 \DTMdisplaytime{2}{45}{0}.
+
+2:45:01 \DTMdisplaytime{2}{45}{1}.
+
+2:45:25 \DTMdisplaytime{2}{45}{25}.
+
+2:46:00 \DTMdisplaytime{2}{46}{0}.
+
+2:46:01 \DTMdisplaytime{2}{46}{1}.
+
+2:46:25 \DTMdisplaytime{2}{46}{25}.
+
+2:59:00 \DTMdisplaytime{2}{59}{0}
+
+2:59:01 \DTMdisplaytime{2}{59}{1}
+
+2:59:05 \DTMdisplaytime{2}{59}{5}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\newpage
+3:00:00 \DTMdisplaytime{3}{0}{0}.
+
+3:01:00 \DTMdisplaytime{3}{1}{0}.
+
+3:15:00 \DTMdisplaytime{3}{15}{0}.
+
+3:29:00 \DTMdisplaytime{3}{29}{0}.
+
+3:30:00 \DTMdisplaytime{3}{30}{0}.
+
+3:31:00 \DTMdisplaytime{3}{31}{0}.
+
+3:44:00 \DTMdisplaytime{3}{44}{0}.
+
+3:45:00 \DTMdisplaytime{3}{45}{0}.
+
+3:46:00 \DTMdisplaytime{3}{46}{0}.
+
+3:59:00 \DTMdisplaytime{3}{59}{0}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\newpage
+4:00:00 \DTMdisplaytime{4}{0}{0}.
+
+4:01:00 \DTMdisplaytime{4}{1}{0}.
+
+4:15:00 \DTMdisplaytime{4}{15}{0}.
+
+4:29:00 \DTMdisplaytime{4}{29}{0}.
+
+4:30:00 \DTMdisplaytime{4}{30}{0}.
+
+4:31:00 \DTMdisplaytime{4}{31}{0}.
+
+4:44:00 \DTMdisplaytime{4}{44}{0}.
+
+4:45:00 \DTMdisplaytime{4}{45}{0}.
+
+4:46:00 \DTMdisplaytime{4}{46}{0}.
+
+4:59:00 \DTMdisplaytime{4}{59}{0}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\newpage
+5:00:00 \DTMdisplaytime{5}{0}{0}.
+
+5:01:00 \DTMdisplaytime{5}{1}{0}.
+
+5:15:00 \DTMdisplaytime{5}{15}{0}.
+
+5:29:00 \DTMdisplaytime{5}{29}{0}.
+
+5:30:00 \DTMdisplaytime{5}{30}{0}.
+
+5:31:00 \DTMdisplaytime{5}{31}{0}.
+
+5:44:00 \DTMdisplaytime{5}{44}{0}.
+
+5:45:00 \DTMdisplaytime{5}{45}{0}.
+
+5:46:00 \DTMdisplaytime{5}{46}{0}.
+
+5:59:00 \DTMdisplaytime{5}{59}{0}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\newpage
+6.00:00 \DTMdisplaytime{6}{0}{0}.
+
+6.01:00 \DTMdisplaytime{6}{1}{0}.
+
+6.15:00 \DTMdisplaytime{6}{15}{0}.
+
+6.29:00 \DTMdisplaytime{6}{29}{0}.
+
+6.30:00 \DTMdisplaytime{6}{30}{0}.
+
+6.31:00 \DTMdisplaytime{6}{31}{0}.
+
+6.44:00 \DTMdisplaytime{6}{44}{0}.
+
+6.45:00 \DTMdisplaytime{6}{45}{0}.
+
+6.46:00 \DTMdisplaytime{6}{46}{0}.
+
+6.59:00 \DTMdisplaytime{6}{59}{0}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\newpage
+7.00:00 \DTMdisplaytime{7}{0}{0}.
+
+7.01:00 \DTMdisplaytime{7}{1}{0}.
+
+7.15:00 \DTMdisplaytime{7}{15}{0}.
+
+7.29:00 \DTMdisplaytime{7}{29}{0}.
+
+7.30:00 \DTMdisplaytime{7}{30}{0}.
+
+7.31:00 \DTMdisplaytime{7}{31}{0}.
+
+7.44:00 \DTMdisplaytime{7}{44}{0}.
+
+7.45:00 \DTMdisplaytime{7}{45}{0}.
+
+7.46:00 \DTMdisplaytime{7}{46}{0}.
+
+7.59:00 \DTMdisplaytime{7}{59}{0}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\newpage
+8.00:00 \DTMdisplaytime{8}{0}{0}.
+
+8.01:00 \DTMdisplaytime{8}{1}{0}.
+
+8.15:00 \DTMdisplaytime{8}{15}{0}.
+
+8.29:00 \DTMdisplaytime{8}{29}{0}.
+
+8.30:00 \DTMdisplaytime{8}{30}{0}.
+
+8.31:00 \DTMdisplaytime{8}{31}{0}.
+
+8.44:00 \DTMdisplaytime{8}{44}{0}.
+
+8.45:00 \DTMdisplaytime{8}{45}{0}.
+
+8.46:00 \DTMdisplaytime{8}{46}{0}.
+
+8.59:00 \DTMdisplaytime{8}{59}{0}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\newpage
+9.00:00 \DTMdisplaytime{9}{0}{0}.
+
+9.01:00 \DTMdisplaytime{9}{1}{0}.
+
+9.15:00 \DTMdisplaytime{9}{15}{0}.
+
+9.29:00 \DTMdisplaytime{9}{29}{0}.
+
+9.30:00 \DTMdisplaytime{9}{30}{0}.
+
+9.31:00 \DTMdisplaytime{9}{31}{0}.
+
+9.44:00 \DTMdisplaytime{9}{44}{0}.
+
+9.45:00 \DTMdisplaytime{9}{45}{0}.
+
+9.46:00 \DTMdisplaytime{9}{46}{0}.
+
+9.59:00 \DTMdisplaytime{9}{59}{0}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\newpage
+10:00:00 \DTMdisplaytime{10}{0}{0}.
+
+10:01:00 \DTMdisplaytime{10}{1}{0}.
+
+10:15:00 \DTMdisplaytime{10}{15}{0}.
+
+10:29:00 \DTMdisplaytime{10}{29}{0}.
+
+10:30:00 \DTMdisplaytime{10}{30}{0}.
+
+10:31:00 \DTMdisplaytime{10}{31}{0}.
+
+10:44:00 \DTMdisplaytime{10}{44}{0}.
+
+10:45:00 \DTMdisplaytime{10}{45}{0}.
+
+10:46:00 \DTMdisplaytime{10}{46}{0}.
+
+10:59:00 \DTMdisplaytime{10}{59}{0}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\newpage
+11:00:00 \DTMdisplaytime{11}{0}{0}.
+
+11:00:01 \DTMdisplaytime{11}{0}{1}.
+
+11:00:15 \DTMdisplaytime{11}{0}{15}.
+
+11:01:00 \DTMdisplaytime{11}{1}{0}.
+
+11:01:01 \DTMdisplaytime{11}{1}{1}.
+
+11:01:14 \DTMdisplaytime{11}{1}{14}.
+
+11:15:00 \DTMdisplaytime{11}{15}{0}.
+
+11:15:01 \DTMdisplaytime{11}{15}{1}.
+
+11:15:22 \DTMdisplaytime{11}{15}{22}.
+
+11:29:00 \DTMdisplaytime{11}{29}{0}.
+
+11:29:01 \DTMdisplaytime{11}{29}{1}.
+
+11:29:22 \DTMdisplaytime{11}{29}{22}.
+
+11:30:00 \DTMdisplaytime{11}{30}{0}.
+
+11:30:01 \DTMdisplaytime{11}{30}{1}.
+
+11:30:28 \DTMdisplaytime{11}{30}{28}.
+
+11:31:00 \DTMdisplaytime{11}{31}{0}.
+
+11:31:01 \DTMdisplaytime{11}{31}{1}.
+
+11:31:15 \DTMdisplaytime{11}{31}{15}.
+
+11:44:00 \DTMdisplaytime{11}{44}{0}.
+
+11:44:01 \DTMdisplaytime{11}{44}{1}.
+
+11:44:25 \DTMdisplaytime{11}{44}{25}.
+
+11:45:00 \DTMdisplaytime{11}{45}{0}.
+
+11:45:01 \DTMdisplaytime{11}{45}{1}.
+
+11:45:15 \DTMdisplaytime{11}{45}{15}.
+
+11:46:00 \DTMdisplaytime{11}{46}{0}.
+
+11:46:01 \DTMdisplaytime{11}{46}{1}.
+
+11:46:15 \DTMdisplaytime{11}{46}{15}.
+
+11:59:00 \DTMdisplaytime{11}{59}{0}
+
+11:59:01 \DTMdisplaytime{11}{59}{1}
+
+11:59:15 \DTMdisplaytime{11}{59}{15}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\newpage
+12:00:00 \DTMdisplaytime{12}{0}{0}.
+
+12:00:01 \DTMdisplaytime{12}{0}{1}.
+
+12:00:26 \DTMdisplaytime{12}{0}{26}.
+
+12:01:00 \DTMdisplaytime{12}{1}{0}.
+
+12:01:01 \DTMdisplaytime{12}{1}{1}.
+
+12:01:22 \DTMdisplaytime{12}{1}{22}.
+
+12:15:00 \DTMdisplaytime{12}{15}{0}.
+
+12:15:01 \DTMdisplaytime{12}{15}{1}.
+
+12:15:33 \DTMdisplaytime{12}{15}{33}.
+
+12:29:00 \DTMdisplaytime{12}{29}{0}.
+
+12:29:01 \DTMdisplaytime{12}{29}{1}.
+
+12:29:25 \DTMdisplaytime{12}{29}{25}.
+
+12:30:00 \DTMdisplaytime{12}{30}{0}.
+
+12:30:01 \DTMdisplaytime{12}{30}{1}.
+
+12:30:17 \DTMdisplaytime{12}{30}{17}.
+
+12:31:00 \DTMdisplaytime{12}{31}{0}.
+
+12:31:01 \DTMdisplaytime{12}{31}{1}.
+
+12:31:23 \DTMdisplaytime{12}{31}{23}.
+
+12:44:00 \DTMdisplaytime{12}{44}{0}.
+
+12:44:01 \DTMdisplaytime{12}{44}{1}.
+
+12:44:22 \DTMdisplaytime{12}{44}{22}.
+
+12:45:00 \DTMdisplaytime{12}{45}{0}.
+
+12:45:01 \DTMdisplaytime{12}{45}{1}.
+
+12:45:25 \DTMdisplaytime{12}{45}{25}.
+
+12:46:00 \DTMdisplaytime{12}{46}{0}.
+
+12:46:01 \DTMdisplaytime{12}{46}{1}.
+
+12:46:25 \DTMdisplaytime{12}{46}{25}.
+
+12:59:00 \DTMdisplaytime{12}{59}{0}
+
+12:59:01 \DTMdisplaytime{12}{59}{1}
+
+12:59:30 \DTMdisplaytime{12}{59}{30}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\newpage
+13:00:00 \DTMdisplaytime{13}{0}{0}.
+
+13:00:01 \DTMdisplaytime{13}{0}{1}.
+
+13:00:22 \DTMdisplaytime{13}{0}{22}.
+
+13:01:00 \DTMdisplaytime{13}{1}{0}.
+
+13:01:01 \DTMdisplaytime{13}{1}{1}.
+
+13:01:26 \DTMdisplaytime{13}{1}{26}.
+
+13:15:00 \DTMdisplaytime{13}{15}{0}.
+
+13:15:01 \DTMdisplaytime{13}{15}{1}.
+
+13:15:33 \DTMdisplaytime{13}{15}{33}.
+
+13:29:00 \DTMdisplaytime{13}{29}{0}.
+
+13:29:01 \DTMdisplaytime{13}{29}{1}.
+
+13:29:33 \DTMdisplaytime{13}{29}{33}.
+
+13:30:00 \DTMdisplaytime{13}{30}{0}.
+
+13:30:01 \DTMdisplaytime{13}{30}{1}.
+
+13:30:10 \DTMdisplaytime{13}{30}{10}.
+
+13:31:00 \DTMdisplaytime{13}{31}{0}.
+
+13:31:01 \DTMdisplaytime{13}{31}{1}.
+
+13:31:28 \DTMdisplaytime{13}{31}{28}.
+
+13:44:00 \DTMdisplaytime{13}{44}{0}.
+
+13:44:01 \DTMdisplaytime{13}{44}{1}.
+
+13:44:45 \DTMdisplaytime{13}{44}{45}.
+
+13:45:00 \DTMdisplaytime{13}{45}{0}.
+
+13:45:01 \DTMdisplaytime{13}{45}{1}.
+
+13:45:53 \DTMdisplaytime{13}{45}{53}.
+
+13:46:00 \DTMdisplaytime{13}{46}{0}.
+
+13:46:01 \DTMdisplaytime{13}{46}{1}.
+
+13:46:25 \DTMdisplaytime{13}{46}{25}.
+
+13:59:35 \DTMdisplaytime{13}{59}{35}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\newpage
+14:00:00 \DTMdisplaytime{14}{0}{0}.
+
+14:01:00 \DTMdisplaytime{14}{1}{0}.
+
+14:15:00 \DTMdisplaytime{14}{15}{0}.
+
+14:29:00 \DTMdisplaytime{14}{29}{0}.
+
+14:30:00 \DTMdisplaytime{14}{30}{0}.
+
+14:31:00 \DTMdisplaytime{14}{31}{0}.
+
+14:44:00 \DTMdisplaytime{14}{44}{0}.
+
+14:45:00 \DTMdisplaytime{14}{45}{0}.
+
+14:46:00 \DTMdisplaytime{14}{46}{0}.
+
+14:59:00 \DTMdisplaytime{14}{59}{0}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\newpage
+15:00:00 \DTMdisplaytime{15}{0}{0}.
+
+15:01:00 \DTMdisplaytime{15}{1}{0}.
+
+15:15:00 \DTMdisplaytime{15}{15}{0}.
+
+15:29:00 \DTMdisplaytime{15}{29}{0}.
+
+15:30:00 \DTMdisplaytime{15}{30}{0}.
+
+15:31:00 \DTMdisplaytime{15}{31}{0}.
+
+15:44:00 \DTMdisplaytime{15}{44}{0}.
+
+15:45:00 \DTMdisplaytime{15}{45}{0}.
+
+15:46:00 \DTMdisplaytime{15}{46}{0}.
+
+15:59:00 \DTMdisplaytime{15}{59}{0}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\newpage
+16.00:00 \DTMdisplaytime{16}{0}{0}.
+
+16.01:00 \DTMdisplaytime{16}{1}{0}.
+
+16.15:00 \DTMdisplaytime{16}{15}{0}.
+
+16.29:00 \DTMdisplaytime{16}{29}{0}.
+
+16.30:00 \DTMdisplaytime{16}{30}{0}.
+
+16.31:00 \DTMdisplaytime{16}{31}{0}.
+
+16.44:00 \DTMdisplaytime{16}{44}{0}.
+
+16.45:00 \DTMdisplaytime{16}{45}{0}.
+
+16.46:00 \DTMdisplaytime{16}{46}{0}.
+
+16.59:00 \DTMdisplaytime{16}{59}{0}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\newpage
+17.00:00 \DTMdisplaytime{17}{0}{0}.
+
+17.01:00 \DTMdisplaytime{17}{1}{0}.
+
+17.15:00 \DTMdisplaytime{17}{15}{0}.
+
+17.29:00 \DTMdisplaytime{17}{29}{0}.
+
+17.30:00 \DTMdisplaytime{17}{30}{0}.
+
+17.31:00 \DTMdisplaytime{17}{31}{0}.
+
+17.44:00 \DTMdisplaytime{17}{44}{0}.
+
+17.45:00 \DTMdisplaytime{17}{45}{0}.
+
+17.46:00 \DTMdisplaytime{17}{46}{0}.
+
+17.59:00 \DTMdisplaytime{17}{59}{0}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\newpage
+18.00:00 \DTMdisplaytime{18}{0}{0}.
+
+18.01:00 \DTMdisplaytime{18}{1}{0}.
+
+18.15:00 \DTMdisplaytime{18}{15}{0}.
+
+18.29:00 \DTMdisplaytime{18}{29}{0}.
+
+18.30:00 \DTMdisplaytime{18}{30}{0}.
+
+18.31:00 \DTMdisplaytime{18}{31}{0}.
+
+18.44:00 \DTMdisplaytime{18}{44}{0}.
+
+18.45:00 \DTMdisplaytime{18}{45}{0}.
+
+18.46:00 \DTMdisplaytime{18}{46}{0}.
+
+18.59:00 \DTMdisplaytime{18}{59}{0}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\newpage
+19.00:00 \DTMdisplaytime{19}{0}{0}.
+
+19.01:00 \DTMdisplaytime{19}{1}{0}.
+
+19.15:00 \DTMdisplaytime{19}{15}{0}.
+
+19.29:00 \DTMdisplaytime{19}{29}{0}.
+
+19.30:00 \DTMdisplaytime{19}{30}{0}.
+
+19.31:00 \DTMdisplaytime{19}{31}{0}.
+
+19.44:00 \DTMdisplaytime{19}{44}{0}.
+
+19.45:00 \DTMdisplaytime{19}{45}{0}.
+
+19.46:00 \DTMdisplaytime{19}{46}{0}.
+
+19.59:00 \DTMdisplaytime{19}{59}{0}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\newpage
+20:00:00 \DTMdisplaytime{20}{0}{0}.
+
+20:01:00 \DTMdisplaytime{20}{1}{0}.
+
+20:15:00 \DTMdisplaytime{20}{15}{0}.
+
+20:29:00 \DTMdisplaytime{20}{29}{0}.
+
+20:30:00 \DTMdisplaytime{20}{30}{0}.
+
+20:31:00 \DTMdisplaytime{20}{31}{0}.
+
+20:44:00 \DTMdisplaytime{20}{44}{0}.
+
+20:45:00 \DTMdisplaytime{20}{45}{0}.
+
+20:46:00 \DTMdisplaytime{20}{46}{0}.
+
+20:59:00 \DTMdisplaytime{20}{59}{0}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\newpage
+21:00:00 \DTMdisplaytime{21}{0}{0}.
+
+21:01:00 \DTMdisplaytime{21}{1}{0}.
+
+21:15:00 \DTMdisplaytime{21}{15}{0}.
+
+21:29:00 \DTMdisplaytime{21}{29}{0}.
+
+21:30:00 \DTMdisplaytime{21}{30}{0}.
+
+21:31:00 \DTMdisplaytime{21}{31}{0}.
+
+21:44:00 \DTMdisplaytime{21}{44}{0}.
+
+21:45:00 \DTMdisplaytime{21}{45}{0}.
+
+21:46:00 \DTMdisplaytime{21}{46}{0}.
+
+21:59:00 \DTMdisplaytime{21}{59}{0}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\newpage
+22:00:00 \DTMdisplaytime{22}{0}{0}.
+
+22:01:00 \DTMdisplaytime{22}{1}{0}.
+
+22:15:00 \DTMdisplaytime{22}{15}{0}.
+
+22:29:00 \DTMdisplaytime{22}{29}{0}.
+
+22:30:00 \DTMdisplaytime{22}{30}{0}.
+
+22:31:00 \DTMdisplaytime{22}{31}{0}.
+
+22:44:00 \DTMdisplaytime{22}{44}{0}.
+
+22:45:00 \DTMdisplaytime{22}{45}{0}.
+
+22:46:00 \DTMdisplaytime{22}{46}{0}.
+
+22:59:00 \DTMdisplaytime{22}{59}{0}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\newpage
+23:00:00 \DTMdisplaytime{23}{0}{0}.
+
+23:01:00 \DTMdisplaytime{23}{1}{0}.
+
+23:15:00 \DTMdisplaytime{23}{15}{0}.
+
+23:29:00 \DTMdisplaytime{23}{29}{0}.
+
+23:30:00 \DTMdisplaytime{23}{30}{0}.
+
+23:31:00 \DTMdisplaytime{23}{31}{0}.
+
+23:44:00 \DTMdisplaytime{23}{44}{0}.
+
+23:45:00 \DTMdisplaytime{23}{45}{0}.
+
+23:46:00 \DTMdisplaytime{23}{46}{0}.
+
+23:59:00 \DTMdisplaytime{23}{59}{0}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\newpage
+
+24:00:10 \DTMdisplaytime{24}{0}{10}.
+
+24:00:15 \DTMdisplaytime{24}{1}{15}.
+
+24:00:00 \DTMdisplaytime{24}{1}{0}.
+
+24:00:01 \DTMdisplaytime{24}{0}{1}.
+
+24:29:00 \DTMdisplaytime{24}{29}{0}.
+
+24:29:08 \DTMdisplaytime{24}{29}{8}.
+
+24:29:01 \DTMdisplaytime{24}{29}{1}.
+
+24:30:00 \DTMdisplaytime{24}{30}{0}.
+
+24:30:01 \DTMdisplaytime{24}{30}{1}.
+
+24:30:09 \DTMdisplaytime{24}{30}{49}.
+
+24:31:00 \DTMdisplaytime{24}{31}{0}.
+
+24:31:01 \DTMdisplaytime{24}{31}{1}.
+
+24:31:05 \DTMdisplaytime{24}{31}{40}.
+
+24:44:00 \DTMdisplaytime{24}{44}{0}.
+
+24:44:01 \DTMdisplaytime{24}{44}{1}.
+
+24:44:59 \DTMdisplaytime{24}{44}{59}.
+
+24:45:00 \DTMdisplaytime{24}{45}{0}.
+
+24:45:01 \DTMdisplaytime{24}{45}{1}.
+
+24:45:25 \DTMdisplaytime{24}{45}{25}.
+
+24:46:00 \DTMdisplaytime{24}{46}{0}.
+
+24:46:01 \DTMdisplaytime{24}{46}{1}.
+
+24:46:25 \DTMdisplaytime{24}{46}{25}.
+
+24:59:00 \DTMdisplaytime{24}{59}{0}.
+
+24:59:01 \DTMdisplaytime{24}{59}{1}.
+
+24:59:20 \DTMdisplaytime{24}{59}{20}.
+
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-it-fulltext/samples/BatTestDate.tex b/macros/latex/contrib/datetime2-contrib/datetime2-it-fulltext/samples/BatTestDate.tex
new file mode 100644
index 0000000000..de95719e54
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-it-fulltext/samples/BatTestDate.tex
@@ -0,0 +1,41 @@
+\DTMsavetimestamp{mydate}{2015-04-01T08:05:00+01:00}
+\DTMsavetimestamp{mydate2}{2015-05-01T08:13:45+02:00}
+\DTMsavetimestamp{mydate3}{2015-06-01T08:05:00+02:00}
+\DTMsavetimestamp{mydate4}{2015-07-01T08:13:45+02:00}
+\DTMsavetimestamp{mydate5}{2015-08-01T08:05:00+02:00}
+\DTMsavetimestamp{mydate6}{2015-09-01T08:13:45+02:00}
+\DTMsavetimestamp{mydate7}{2015-10-01T08:05:00+01:00}
+\DTMsavetimestamp{mydate8}{1962-03-17T08:13:45+01:00}
+\DTMsavetimestamp{mydate9}{1963-07-09T06:30:00+02:00}
+\DTMsavetimestamp{mydateA}{2012-04-01T08:05:00+01:00}
+\DTMsavetimestamp{mydate2A}{2011-05-01T08:13:45+02:00}
+\DTMsavetimestamp{mydate3A}{2010-06-01T08:05:00+02:00}
+\DTMsavetimestamp{mydate4A}{2018-07-01T08:13:45+02:00}
+\DTMsavetimestamp{mydate5A}{2017-08-01T08:05:00+02:00}
+\DTMsavetimestamp{mydate6A}{2016-09-01T08:13:45+02:00}
+\DTMsavetimestamp{mydate7A}{2015-10-01T08:05:00+01:00}
+\DTMsavetimestamp{mydate8A}{1962-03-17T08:13:45+01:00}
+\DTMsavetimestamp{mydate9A}{1963-07-09T06:30:00+02:00}
+
+\begin{description}
+\item oggi: \today.
+\item \DTMuse{mydate}
+\item \DTMuse{mydate2}
+\item \DTMuse{mydate3}
+\item \DTMuse{mydate4}
+\item \DTMuse{mydate5}
+\item \DTMuse{mydate6}
+\item \DTMuse{mydate7}
+\item \DTMuse{mydate8}
+\item \DTMuse{mydate9}
+\item \DTMuse{mydateA}
+\item \DTMuse{mydate2A}
+\item \DTMuse{mydate3A}
+\item \DTMuse{mydate4A}
+\item \DTMuse{mydate5A}
+\item \DTMuse{mydate6A}
+\item \DTMuse{mydate7A}
+\item \DTMuse{mydate8A}
+\item \DTMuse{mydate9A}
+\end{description}
+
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-it-fulltext/samples/it-fulltext-en-fulltext.tex b/macros/latex/contrib/datetime2-contrib/datetime2-it-fulltext/samples/it-fulltext-en-fulltext.tex
new file mode 100644
index 0000000000..02550439f8
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-it-fulltext/samples/it-fulltext-en-fulltext.tex
@@ -0,0 +1,58 @@
+\documentclass[italian,english]{article}
+\usepackage{ifpdf,ifxetex}
+\ifpdf
+\usepackage[T1]{fontenc}
+\usepackage[utf8]{inputenc}
+\usepackage{babel}
+\else
+\usepackage{fontspec}
+\usepackage{polyglossia}
+\setdefaultlanguage{italian}
+\fi
+\usepackage[showdow,useregional]{datetime2-it-fulltext}
+\usepackage[showdow]{datetime2-en-fulltext}
+\begin{document}
+\part{title}\section{Date}
+
+\begin{description}
+\item[it-fulltext:]
+\DTMsetdatestyle{it-fulltext}
+\today.
+\item[en-fulltext:]
+\DTMsetdatestyle{en-fulltext}
+\today.
+
+\end{description}
+
+\section{Time}
+\subsection{it-fulltext}
+\DTMsettimestyle{it-fulltext}
+Ora: \DTMcurrenttime.
+
+0.00: \DTMdisplaytime{0}{0}{0}.
+
+0.01: \DTMdisplaytime{0}{1}{0}.
+
+0.15: \DTMdisplaytime{0}{15}{0}.
+
+0.29: \DTMdisplaytime{0}{29}{0}.
+
+0.30: \DTMdisplaytime{0}{30}{0}.
+\DTMsettimestyle{en-fulltext}
+Time: \DTMcurrenttime.
+
+0.00: \DTMdisplaytime{0}{0}{0}.
+
+0.01: \DTMdisplaytime{0}{1}{0}.
+
+0.15: \DTMdisplaytime{0}{15}{0}.
+
+0.29: \DTMdisplaytime{0}{29}{0}.
+
+0.30: \DTMdisplaytime{0}{30}{0}.
+
+0.31: \DTMdisplaytime{0}{31}{0}.
+
+
+\end{document}
+
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-it-fulltext/samples/sample-it-fulltext-second.tex b/macros/latex/contrib/datetime2-contrib/datetime2-it-fulltext/samples/sample-it-fulltext-second.tex
new file mode 100644
index 0000000000..ec1da19b44
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-it-fulltext/samples/sample-it-fulltext-second.tex
@@ -0,0 +1,24 @@
+\documentclass[italian]{article}
+\usepackage{ifpdf,ifxetex}
+\ifpdf
+\usepackage[T1]{fontenc}
+\usepackage[utf8]{inputenc}
+\usepackage{babel}
+\else
+\usepackage{fontspec}
+\usepackage{polyglossia}
+\setdefaultlanguage{italian}
+\fi
+\usepackage[showdow,useregional]{datetime2-it-fulltext}
+\begin{document}
+\section{Date}
+\subsection{it-fulltext-second}
+\DTMsetdatestyle{it-fulltext-second}
+\input{BatTestDate}
+\section{Time}
+\subsection{it-fulltext-second}
+\DTMsettimestyle{it-fulltext-second}
+\input{BatTest}
+\end{document}
+
+
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-it-fulltext/samples/sample-it-fulltext-semplice.tex b/macros/latex/contrib/datetime2-contrib/datetime2-it-fulltext/samples/sample-it-fulltext-semplice.tex
new file mode 100644
index 0000000000..4111f7fe14
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-it-fulltext/samples/sample-it-fulltext-semplice.tex
@@ -0,0 +1,23 @@
+\documentclass[italian]{article}
+\usepackage{ifpdf,ifxetex}
+\ifpdf
+\usepackage[T1]{fontenc}
+\usepackage[utf8]{inputenc}
+\usepackage{babel}
+\else
+\usepackage{fontspec}
+\usepackage{polyglossia}
+\setdefaultlanguage{italian}
+\fi
+\usepackage[showdow,useregional]{datetime2-it-fulltext}
+\begin{document}
+ \section{Date}
+ \subsection{it-fulltext-semplice}
+ \DTMsetdatestyle{it-fulltext-semplice}
+ \input{BatTestDate}
+ \section{Time}
+ \subsection{it-fulltext-semplice}
+ \DTMsettimestyle{it-fulltext-semplice}
+ \input{BatTest}
+\end{document}
+
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-it-fulltext/samples/sample-it-fulltext-twenty-four-second.tex b/macros/latex/contrib/datetime2-contrib/datetime2-it-fulltext/samples/sample-it-fulltext-twenty-four-second.tex
new file mode 100644
index 0000000000..176b4d7e31
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-it-fulltext/samples/sample-it-fulltext-twenty-four-second.tex
@@ -0,0 +1,24 @@
+\documentclass[italian]{article}
+\usepackage{ifpdf,ifxetex}
+\ifpdf
+\usepackage[T1]{fontenc}
+\usepackage[utf8]{inputenc}
+\usepackage{babel}
+\else
+\usepackage{fontspec}
+\usepackage{polyglossia}
+\setdefaultlanguage{italian}
+\fi
+\usepackage[showdow,useregional]{datetime2-it-fulltext}
+\begin{document}
+ \section{Date}
+ \subsection{it-fulltext-twenty-four-second}
+\DTMsetdatestyle{it-fulltext-twenty-four-second}
+ \input{BatTestDate}
+ \section{Time}
+ \subsection{it-fulltext-twenty-four-second}
+\DTMsettimestyle{it-fulltext-twenty-four-second}
+ \input{BatTest}
+\end{document}
+
+
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-it-fulltext/samples/sample-it-fulltext-twenty-four.tex b/macros/latex/contrib/datetime2-contrib/datetime2-it-fulltext/samples/sample-it-fulltext-twenty-four.tex
new file mode 100644
index 0000000000..b28aa917db
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-it-fulltext/samples/sample-it-fulltext-twenty-four.tex
@@ -0,0 +1,24 @@
+\documentclass[italian]{article}
+\usepackage{ifpdf,ifxetex}
+\ifpdf
+\usepackage[T1]{fontenc}
+\usepackage[utf8]{inputenc}
+\usepackage{babel}
+\else
+\usepackage{fontspec}
+\usepackage{polyglossia}
+\setdefaultlanguage{italian}
+\fi
+\usepackage[showdow,useregional]{datetime2-it-fulltext}
+\begin{document}
+ \section{Date}
+ \subsection{it-fulltext-twenty-four}
+ \DTMsetdatestyle{it-fulltext-twenty-four}
+ \input{BatTestDate}
+ \section{Time}
+ \subsection{it-fulltext-twenty-four}
+ \DTMsettimestyle{it-fulltext-twenty-four}
+ \input{BatTest}
+\end{document}
+
+
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-it-fulltext/samples/sample-it-fulltext.tex b/macros/latex/contrib/datetime2-contrib/datetime2-it-fulltext/samples/sample-it-fulltext.tex
new file mode 100644
index 0000000000..3ac90f8035
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-it-fulltext/samples/sample-it-fulltext.tex
@@ -0,0 +1,28 @@
+\documentclass[italian]{article}
+\usepackage{ifpdf,ifxetex}
+\ifpdf
+\usepackage[T1]{fontenc}
+\usepackage[utf8]{inputenc}
+\usepackage{babel}
+\usepackage{microtype}
+\else
+\usepackage{fontspec}
+\usepackage{polyglossia}
+\setdefaultlanguage{italian}
+\fi
+\usepackage[showdow,useregional]{datetime2-it-fulltext}
+
+
+\begin{document}
+
+\thispagestyle{empty}
+ vcvc
+ \section{Date}
+ \subsection{it-fulltext}
+ \DTMsetdatestyle{it-fulltext}
+ \input{BatTestDate}
+ \section{Time}
+ \subsection{it-fulltext}
+ \DTMsettimestyle{it-fulltext}
+ \input{BatTest}
+\end{document}
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-it-fulltext/samples/sample-it-timedatestyle1.tex b/macros/latex/contrib/datetime2-contrib/datetime2-it-fulltext/samples/sample-it-timedatestyle1.tex
new file mode 100644
index 0000000000..a01af612d6
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-it-fulltext/samples/sample-it-timedatestyle1.tex
@@ -0,0 +1,62 @@
+\documentclass[italian]{article}
+\usepackage[showdow,useregional]{datetime2-it-fulltext}
+\usepackage{datetime2}
+\begin{document}
+\DTMsavetimestamp{mydate}{2015-04-01T08:05:00+01:00}
+\DTMsavetimestamp{mydate2}{2014-03-01T08:13:45+01:00}
+\DTMsavetimestamp{mydate3}{2016-12-01T18:13:45+01:00}
+\begin{description}
+\item[italian]
+\DTMsetdatestyle{italian}
+\DTMsettimestyle{italian}
+ \DTMnow.
+
+ \DTMuse{mydate}.
+
+ \DTMuse{mydate2}.
+
+ \DTMuse{mydate3}.
+\item[it-fulltext-twenty-four]
+\DTMsetdatestyle{it-fulltext-twenty-four}
+\DTMsettimestyle{it-fulltext-twenty-four}
+\DTMnow.
+
+\DTMuse{mydate}.
+
+\DTMuse{mydate2}.
+
+\DTMuse{mydate3}.
+\item[it-fulltext]
+\DTMsetdatestyle{it-fulltext}
+\DTMsettimestyle{it-fulltext}
+\DTMnow.
+
+\DTMuse{mydate}.
+
+\DTMuse{mydate2}
+
+\DTMuse{mydate3}.
+
+\item[it-fulltext-second]
+\DTMsetdatestyle{it-fulltext-second}
+\DTMsettimestyle{it-fulltext-second}
+\DTMnow.
+
+\DTMuse{mydate}.
+
+\DTMuse{mydate2}
+
+\DTMuse{mydate3}.
+
+\item[it-fulltext-semplice]
+\DTMsetdatestyle{it-fulltext-semplice}
+\DTMsettimestyle{it-fulltext-semplice}
+\DTMnow.
+
+\DTMuse{mydate}.
+
+\DTMuse{mydate2}
+
+\DTMuse{mydate3}.
+\end{description}
+\end{document}
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-it-fulltext/samples/sample-it-timedatestyle2.tex b/macros/latex/contrib/datetime2-contrib/datetime2-it-fulltext/samples/sample-it-timedatestyle2.tex
new file mode 100644
index 0000000000..b1313072ca
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-it-fulltext/samples/sample-it-timedatestyle2.tex
@@ -0,0 +1,144 @@
+\documentclass[italian,english]{article}
+\usepackage{ifpdf,ifxetex}
+\ifpdf
+\usepackage[T1]{fontenc}
+\usepackage[utf8]{inputenc}
+\usepackage{babel}
+\else
+\usepackage{fontspec}
+\usepackage{polyglossia}
+\setdefaultlanguage{italian}
+\fi
+\usepackage[showdow,useregional]{datetime2-it-fulltext}
+\usepackage[showdow]{datetime2-en-fulltext}
+\begin{document}
+\part{title}\section{Date}
+
+\begin{description}
+\item[it-fulltext:]
+\DTMsetdatestyle{it-fulltext}
+\DTMsettimestyle{it-fulltext}
+\today.\par
+\DTMnow
+\item[it-fulltext-second:]
+\DTMsetdatestyle{it-fulltext-second}
+\DTMsettimestyle{it-fulltext-second}
+\today.\par
+\DTMnow
+\item[it-fulltext-twuenty-four:]
+\DTMsetdatestyle{it-fulltext-twenty-four}
+\DTMsettimestyle{it-fulltext-twenty-four}
+\today.\par
+\DTMnow
+\item[it-fulltext-twuenty-four:]
+\DTMsetdatestyle{it-fulltext-twenty-four-second}
+\DTMsettimestyle{it-fulltext-twenty-four-second}
+\today.\par
+\DTMnow
+\item[it-fulltext-semplice:]
+\DTMsetdatestyle{it-fulltext-semplice}
+\DTMsettimestyle{it-fulltext-semplice}
+\today.\par
+\DTMnow
+\item[en-fulltext:]
+\DTMsetdatestyle{en-fulltext}
+\DTMsettimestyle{en-fulltext}
+\today.\par
+\DTMnow
+
+\end{description}
+
+\section{Time}
+\subsection{it-fulltext}
+\DTMsettimestyle{it-fulltext}
+Ora: \DTMcurrenttime.
+
+0:00:00 \DTMdisplaytime{0}{0}{0}.
+
+1:01:01 \DTMdisplaytime{0}{1}{1}.
+
+12:15:03 \DTMdisplaytime{0}{15}{3}.
+
+17:29:04 \DTMdisplaytime{0}{29}{4}.
+
+20.30:05 \DTMdisplaytime{0}{30}{5}.
+
+23.31:12 \DTMdisplaytime{0}{31}{12}.
+\subsection{it-fulltext-second}
+\DTMsettimestyle{it-fulltext-second}
+Ora: \DTMcurrenttime.
+
+0:00:00 \DTMdisplaytime{0}{0}{0}.
+
+1:01:01 \DTMdisplaytime{0}{1}{1}.
+
+12:15:03 \DTMdisplaytime{0}{15}{3}.
+
+17:29:04 \DTMdisplaytime{0}{29}{4}.
+
+20.30:05 \DTMdisplaytime{0}{30}{5}.
+
+23.31:12 \DTMdisplaytime{0}{31}{12}.
+\subsection{it-fulltext-twenty-four}
+\DTMsettimestyle{it-fulltext-twenty-four}
+Ora: \DTMcurrenttime.
+
+0:00:00 \DTMdisplaytime{0}{0}{0}.
+
+1:01:01 \DTMdisplaytime{0}{1}{1}.
+
+12:15:03 \DTMdisplaytime{0}{15}{3}.
+
+17:29:04 \DTMdisplaytime{0}{29}{4}.
+
+20.30:05 \DTMdisplaytime{0}{30}{5}.
+
+23.31:12 \DTMdisplaytime{0}{31}{12}.
+\subsection{it-fulltext-twenty-four-second}
+\DTMsettimestyle{it-fulltext-twenty-four-second}
+Ora: \DTMcurrenttime.
+
+0:00:00 \DTMdisplaytime{0}{0}{0}.
+
+1:01:01 \DTMdisplaytime{0}{1}{1}.
+
+12:15:03 \DTMdisplaytime{0}{15}{3}.
+
+17:29:04 \DTMdisplaytime{0}{29}{4}.
+
+20.30:05 \DTMdisplaytime{0}{30}{5}.
+
+23.31:12 \DTMdisplaytime{0}{31}{12}.
+
+\subsection{it-fulltext-semplice}
+\DTMsettimestyle{it-fulltext-semplice}
+Time: \DTMcurrenttime.
+0:00:00 \DTMdisplaytime{0}{0}{0}.
+
+1:01:01 \DTMdisplaytime{0}{1}{1}.
+
+12:15:03 \DTMdisplaytime{0}{15}{3}.
+
+17:29:04 \DTMdisplaytime{0}{29}{4}.
+
+20.30:05 \DTMdisplaytime{0}{30}{5}.
+
+23.31:12 \DTMdisplaytime{0}{31}{12}.
+\subsection{en-fulltext}
+\DTMsettimestyle{en-fulltext}
+Time: \DTMcurrenttime.
+
+0:00:00 \DTMdisplaytime{0}{0}{0}.
+
+1:01:01 \DTMdisplaytime{0}{1}{1}.
+
+12:15:03 \DTMdisplaytime{0}{15}{3}.
+
+17:29:04 \DTMdisplaytime{0}{29}{4}.
+
+20.30:05 \DTMdisplaytime{0}{30}{5}.
+
+23.31:12 \DTMdisplaytime{0}{31}{12}.
+
+\end{document}
+
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-italian/README b/macros/latex/contrib/datetime2-contrib/datetime2-italian/README
new file mode 100644
index 0000000000..e4ab0fef27
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-italian/README
@@ -0,0 +1,58 @@
+Italian Language Module for datetime2 Package
+
+Author: Nicola L. C. Talbot (inactive)
+
+Mantainer: Claudio Duchi claduc at libero dot it
+
+Licence: LPPL
+
+Required Packages: datetime2, tracklang
+
+This module is maintained. I
+
+Example usage:
+
+\documentclass{article}
+\usepackage[italian]{datetime2}
+\begin{document}
+\today
+\end{document}
+
+\documentclass[italian]{article}
+\usepackage{babel}
+\usepackage[useregional]{datetime2}
+\begin{document}
+\today
+\end{document}
+
+\documentclass{article}
+\usepackage{polyglossia}
+\setmainlanguage{italian}
+\usepackage[italian]{datetime2}
+\begin{document}
+\today
+\end{document}
+
+INSTALLATION
+============
+
+latex datetime2-italian.ins
+
+Move all *.ldf files to
+TEXMF/tex/latex/datetime2-contrib/datetime2-italian/
+
+Documentation:
+
+pdflatex datetime2-italian.dtx
+makeindex -s gind.ist datetime2-italian.idx
+makeindex -s gglo.ist -o datetime2-italian.gls datetime2-italian.glo
+pdflatex datetime2-italian.dtx
+pdflatex datetime2-italian.dtx
+
+Move datetime2-italian.pdf and README to
+TEXMF/doc/latex/datetime2-contrib/datetime2-italian/
+
+This material is subject to the LaTeX Project Public License.
+See http://www.ctan.org/license/lppl1.3 for the details of that
+license.
+
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-italian/datetime2-italian.dtx b/macros/latex/contrib/datetime2-contrib/datetime2-italian/datetime2-italian.dtx
new file mode 100644
index 0000000000..1c194b0453
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-italian/datetime2-italian.dtx
@@ -0,0 +1,868 @@
+%\iffalse
+%<*package>
+%% \CharacterTable
+%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+%% Digits \0\1\2\3\4\5\6\7\8\9
+%% Exclamation \! Double quote \" Hash (number) \#
+%% Dollar \$ Percent \% Ampersand \&
+%% Acute accent \' Left paren \( Right paren \)
+%% Asterisk \* Plus \+ Comma \,
+%% Minus \- Point \. Solidus \/
+%% Colon \: Semicolon \; Less than \<
+%% Equals \= Greater than \> Question mark \?
+%% Commercial at \@ Left bracket \[ Backslash \\
+%% Right bracket \] Circumflex \^ Underscore \_
+%% Grave accent \` Left brace \{ Vertical bar \|
+%% Right brace \} Tilde \~}
+%</package>
+%\fi
+% \iffalse
+% Doc-Source file to use with LaTeX2e
+% Copyright (C) 2015 Nicola Talbot, all rights reserved.
+% \fi
+% \iffalse
+%<*driver>
+\documentclass{ltxdoc}
+
+\usepackage{alltt}
+\usepackage{graphicx}
+\usepackage[utf8]{inputenc}
+\usepackage[T1]{fontenc}
+\usepackage[colorlinks,
+ bookmarks,
+ hyperindex=false,
+ pdfauthor={Nicola L.C. Talbot},
+ pdftitle={datetime2.sty Italian Module}]{hyperref}
+
+
+\CheckSum{467}
+
+\renewcommand*{\usage}[1]{\hyperpage{#1}}
+\renewcommand*{\main}[1]{\hyperpage{#1}}
+\IndexPrologue{\section*{\indexname}\markboth{\indexname}{\indexname}}
+\setcounter{IndexColumns}{2}
+
+\newcommand*{\sty}[1]{\textsf{#1}}
+\newcommand*{\opt}[1]{\texttt{#1}\index{#1=\texttt{#1}|main}}
+
+\RecordChanges
+\PageIndex
+\CodelineNumbered
+
+\begin{document}
+\DocInput{datetime2-italian.dtx}
+\end{document}
+%</driver>
+%\fi
+%
+%\MakeShortVerb{"}
+%
+%\title{Italian Module for datetime2 Package}
+%\author{Nicola L. C. Talbot (inactive)}
+%\date{2015-05-01 (v1.3)}
+%\maketitle
+%
+% This module is currently maintained and may be subject to change.
+%
+% The Current Maintainer of this work is Claudio Duchi claduc at libero dot it
+%\begin{abstract}
+%This is the Italian language module for the \sty{datetime2}
+%package. If you want to use the settings in this module you must
+%install it in addition to installing \sty{datetime2}. If you use
+%\sty{babel} or \sty{polyglossia}, you will need this module to
+%prevent them from redefining \cs{today}. The \sty{datetime2}
+% \opt{useregional} setting must be set to "text" or "numeric"
+% for the language styles to be set.
+% Alternatively, you can set the style in the document using
+% \cs{DTMsetstyle}, but this may be changed by \cs{date}\meta{language}
+% depending on the value of the \opt{useregional} setting.
+%\end{abstract}
+%\opt{showdow} setting.
+%
+%\StopEventually{%
+%\clearpage
+%\phantomsection
+%\addcontentsline{toc}{section}{Change History}%
+%\PrintChanges
+%\addcontentsline{toc}{section}{\indexname}%
+%\PrintIndex}
+%\section{The Code}
+%\iffalse
+% \begin{macrocode}
+%<*datetime2-italian-utf8.ldf>
+% \end{macrocode}
+%\fi
+%\subsection{UTF-8}
+%This file contains the settings that use UTF-8 characters. This
+%file is loaded if XeLaTeX or LuaLaTeX are used. Please make sure
+%your text editor is set to UTF-8 if you want to view this code.
+%\changes{1.0}{2015-03-10}{Initial release}
+%\changes{1.1}{2015-04-10}{Add timestyle italianampm% }
+%\changes{1.2}{2015-04-16}{Add timestyle italian-twenty-four% }
+%\changes{1.3}{2015-05-01}{bug fif% }
+% Identify module
+% \begin{macrocode}
+\ProvidesDateTimeModule{italian-utf8}[2015/05/01 v1.3]
+% \end{macrocode}
+%\begin{macro}{\DTMitalianordinal}
+% \begin{macrocode}
+\newcommand*{\DTMitalianordinal}[1]{%
+ \number#1
+}%
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMitalianmonthname}
+% Italian month names.
+% \begin{macrocode}
+\newcommand*{\DTMitalianmonthname}[1]{%
+ \ifcase#1
+ \or
+ gennaio%
+ \or
+ febbraio%
+ \or
+ marzo%
+ \or
+ aprile%
+ \or
+ maggio%
+ \or
+ giugno%
+ \or
+ luglio%
+ \or
+ agosto%
+ \or
+ settembre%
+ \or
+ ottobre%
+ \or
+ novembre%
+ \or
+ dicembre%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%
+%
+%\begin{macro}{\DTMitalianweekdayname}
+%These are provided here but not currently used in the date format.
+% \begin{macrocode}
+\newcommand*{\DTMitalianweekdayname}[1]{%
+ \ifcase#1
+ lunedƬ%
+ \or
+ martedƬ%
+ \or
+ mercoledƬ%
+ \or
+ giovedƬ%
+ \or
+ venerdƬ%
+ \or
+ sabato%
+ \or
+ domenica%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%
+%\begin{macro}{\DTMitalianshortmonthname}
+%short mont.
+% \begin{macrocode}
+\newcommand*{\DTMitalianshortmonthname}[1]{%
+ \ifcase#1
+ \or
+ gen.%
+ \or
+ feb.%
+ \or
+ mar.%
+ \or
+ apr.%
+ \or
+ mag.%
+ \or
+ giun.%
+ \or
+ lug.%
+ \or
+ aug.%
+ \or
+ set.%
+ \or
+ ott.%
+ \or
+ nov.%
+ \or
+ dic.%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\DTMitalianshortweekdayname}
+%short week day.
+% \begin{macrocode}
+\newcommand*{\DTMitalianshortweekdayname}[1]{%
+ \ifcase#1
+ lun.%
+ \or
+ mar.%
+ \or
+ mer.%
+ \or
+ gio.%
+ \or
+ ven.%
+ \or
+ sab.%
+ \or
+ dom.%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%\iffalse
+% \begin{macrocode}
+%</datetime2-italian-utf8.ldf>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*datetime2-italian-ascii.ldf>
+% \end{macrocode}
+%\fi
+%\subsection{ASCII}
+%This file contains the settings that use \LaTeX\ commands for
+%non-ASCII characters. This should be input if neither XeLaTeX nor
+%LuaLaTeX are used. Even if the user has loaded \sty{inputenc} with
+%"utf8", this file should still be used not the
+%\texttt{datetime2-italian-utf8.ldf} file as the non-ASCII
+%characters are made active in that situation and would need
+%protecting against expansion.
+%\changes{1.0}{2015-03-10}{Initial release}
+%\changes{1.1}{2015-04-10}{Add timestyle italianampm% }
+%\changes{1.2}{2015-04-16}{Add timestyle italian-twenty-four% }
+%\changes{1.3}{2015-05-01}{bug fif% }
+% Identify module
+% \begin{macrocode}
+\ProvidesDateTimeModule{italian-ascii}[2015/05/01 v1.3]
+% \end{macrocode}
+%
+%\begin{macro}{\DTMitalianordinal}
+% \begin{macrocode}
+\newcommand*{\DTMitalianordinal}[1]{%
+ \number#1
+}%
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMitalianmonthname}
+% Italian month names.
+% \begin{macrocode}
+\newcommand*{\DTMitalianmonthname}[1]{%
+ \ifcase#1
+ \or
+ gennaio%
+ \or
+ febbraio%
+ \or
+ marzo%
+ \or
+ aprile%
+ \or
+ maggio%
+ \or
+ giugno%
+ \or
+ luglio%
+ \or
+ agosto%
+ \or
+ settembre%
+ \or
+ ottobre%
+ \or
+ novembre%
+ \or
+ dicembre%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%
+%\begin{macro}{\DTMitalianweekdayname}
+%These are provided here but not currently used in the date format.
+% \begin{macrocode}
+\newcommand*{\DTMitalianweekdayname}[1]{%
+ \ifcase#1
+ luned\protect\`i%
+ \or
+ marted\protect\`i%
+ \or
+ mercoled\protect\`i%
+ \or
+ gioved\protect\`i%
+ \or
+ venerd\protect\`i%
+ \or
+ sabato%
+ \or
+ domenica%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%
+%\begin{macro}{\DTMitalianshortmonthname}
+%short mont.
+% \begin{macrocode}
+\newcommand*{\DTMitalianshortmonthname}[1]{%
+ \ifcase#1
+ \or
+ gen.%
+ \or
+ feb.%
+ \or
+ mar.%
+ \or
+ apr.%
+ \or
+ mag.%
+ \or
+ giun.%
+ \or
+ lug.%
+ \or
+ aug.%
+ \or
+ set.%
+ \or
+ ott.%
+ \or
+ nov.%
+ \or
+ dic.%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\DTMitalianshortweekdayname}
+%short week day.
+% \begin{macrocode}
+\newcommand*{\DTMitalianshortweekdayname}[1]{%
+ \ifcase#1
+ lun.%
+ \or
+ mar.%
+ \or
+ mer.%
+ \or
+ gio.%
+ \or
+ ven.%
+ \or
+ sab.%
+ \or
+ dom.%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\iffalse
+% \begin{macrocode}
+%</datetime2-italian-ascii.ldf>
+% \end{macrocode}
+%\fi
+%
+%\subsection{Main Italian Module (\texttt{datetime2-italian.ldf})}
+%\changes{1.0}{2015-03-10}{Initial release}
+%\changes{1.1}{2015-04-10}{Add timestyle italianampm% }
+%\changes{1.2}{2015-04-16}{Add timestyle italian-twenty-four% }
+%\changes{1.3}{2015-05-01}{bug fif% }
+%
+%\iffalse
+% \begin{macrocode}
+%<*datetime2-italian.ldf>
+% \end{macrocode}
+%\fi
+%
+% Identify Module
+% \begin{macrocode}
+\ProvidesDateTimeModule{italian}[2015/05/01 v1.3]
+% \end{macrocode}
+% Need to find out if XeTeX or LuaTeX are being used.
+% \begin{macrocode}
+\RequirePackage{ifxetex,ifluatex}
+% \end{macrocode}
+% XeTeX and LuaTeX natively support UTF-8, so load
+% \texttt{italian-utf8} if either of those engines are used
+% otherwise load \texttt{italian-ascii}.
+% \begin{macrocode}
+\ifxetex
+ \RequireDateTimeModule{italian-utf8}
+\else
+ \ifluatex
+ \RequireDateTimeModule{italian-utf8}
+ \else
+ \RequireDateTimeModule{italian-ascii}
+ \fi
+\fi
+% \end{macrocode}
+%
+% Define the \texttt{italian} style.
+% The time style is the same as the "default" style
+% provided by \sty{datetime2}.
+%
+% the packet defines the styles: "italian",
+% "italian-numeric", "italianampm" and "italian-twenty-four" styles.
+%
+%This doesn't use the package wide
+% separators such as
+% \cs{dtm@datetimesep} in case other date formats are also required.
+%\begin{macro}{\DTMitaliandaymonthsep}
+% The separator between the day and month for the text format.
+% \begin{macrocode}
+\newcommand*{\DTMitaliandaymonthsep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMitalianmonthyearsep}
+% The separator between the month and year for the text format.
+% \begin{macrocode}
+\newcommand*{\DTMitalianmonthyearsep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMitaliandatetimesep}
+% The separator between the date and time blocks in the full format
+% (either text or numeric).
+% \begin{macrocode}
+\newcommand*{\DTMitaliandatetimesep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMitaliantimezonesep}
+% The separator between the time and zone blocks in the full format
+% (either text or numeric).
+% \begin{macrocode}
+\newcommand*{\DTMitaliantimezonesep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMitaliandatesep}
+% The separator for the numeric date format.
+% \begin{macrocode}
+\newcommand*{\DTMitaliandatesep}{/}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMitaliantimesep}
+% The separator for the numeric time format.
+% \begin{macrocode}
+\newcommand*{\DTMitaliantimesep}{:}
+% \end{macrocode}
+%\end{macro}
+%
+% Provide keys that can be used in \cs{DTMlangsetup} to set these
+% separators.
+% \begin{macrocode}
+\DTMdefkey{italian}{daymonthsep}{\renewcommand*{\DTMitaliandaymonthsep}{#1}}
+\DTMdefkey{italian}{monthyearsep}{\renewcommand*{\DTMitalianmonthyearsep}{#1}}
+\DTMdefkey{italian}{datetimesep}{\renewcommand*{\DTMitaliandatetimesep}{#1}}
+\DTMdefkey{italian}{timezonesep}{\renewcommand*{\DTMitaliantimezonesep}{#1}}
+\DTMdefkey{italian}{datesep}{\renewcommand*{\DTMitaliandatesep}{#1}}
+\DTMdefkey{italian}{timesep}{\renewcommand*{\DTMitaliantimesep}{#1}}
+% \end{macrocode}
+
+% Define a boolean key that determines if the shortened form
+% should be used.
+% \begin{macrocode}
+\DTMdefboolkey{italian}{abbr}[true]{}
+% \end{macrocode}
+% The default is to use abbr
+% \begin{macrocode}
+\DTMsetbool{italian}{abbr}{false}
+% \end{macrocode}
+%
+% Define a boolean key that determines if the time zone mappings
+% should be used.
+% \begin{macrocode}
+\DTMdefboolkey{italian}{mapzone}[true]{}
+% \end{macrocode}
+% The default is to use mappings.
+% \begin{macrocode}
+\DTMsetbool{italian}{mapzone}{true}
+% \end{macrocode}
+%
+% Define a boolean key that determines if the day of month should be
+% displayed.
+% \begin{macrocode}
+\DTMdefboolkey{italian}{showdayofmonth}[true]{}
+% \end{macrocode}
+% The default is to show the day of month.
+% \begin{macrocode}
+\DTMsetbool{italian}{showdayofmonth}{true}
+% \end{macrocode}
+%
+% Define a boolean key that determines if the year should be
+% displayed.
+% \begin{macrocode}
+\DTMdefboolkey{italian}{showyear}[true]{}
+% \end{macrocode}
+% The default is to show the year.
+% \begin{macrocode}
+\DTMsetbool{italian}{showyear}{true}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\newcommand*\DTMitalianam{am}%
+% \end{macrocode}
+% \begin{macrocode}
+\newcommand*\DTMitalianpm{pm}%
+% \end{macrocode}
+% \begin{macrocode}
+\newcommand*\DTMitalianmidnight{mezzanotte}%
+% \end{macrocode}
+% \begin{macrocode}
+\newcommand*\DTMitaliannoon{mezzogiorno}%
+% \end{macrocode}
+% \begin{macrocode}
+\newcommand*{\DTMitalianampmfmt}[1]{#1}
+% \end{macrocode}
+% Define the "italian" style. (TODO: implement day of week?)
+% \begin{macrocode}
+\DTMnewstyle
+{italian}% label
+{% date style
+% \renewcommand*{\DTMitalianfmtordsuffix}{\DTMitalianfmtordsuffix}%
+ \renewcommand*\DTMdisplaydate[4]{%
+ \ifDTMshowdow
+ \ifnum##4>-1%
+ \DTMifbool{italian}{abbr}%
+ {\DTMitalianshortweekdayname{##4}}%
+ {\DTMitalianweekdayname{##4}}%
+ \space
+ \fi
+ \fi
+ \DTMifbool{italian}{showdayofmonth}%
+ {%
+ \DTMitalianordinal{##3}%
+ \DTMitaliandaymonthsep
+ }%
+ {}%
+ \DTMifbool{italian}{abbr}%
+ {\DTMitalianshortmonthname{##2}}%
+ {\DTMitalianmonthname{##2}}%
+ \DTMifbool{italian}{showyear}%
+ {%
+ \DTMitalianmonthyearsep\number##1 % space intended
+ }%
+ {}%
+ }%
+ \renewcommand*\DTMDisplaydate[4]{%
+ \ifDTMshowdow
+ \ifnum##4>-1%
+ \DTMifbool{italian}{abbr}%
+ {\DTMitalianshortweekdayname{##4}}%
+ {\DTMitalianweekdayname{##4}}%
+ \space
+ \fi
+ \fi
+ \DTMifbool{italian}{showdayofmonth}%
+ {%
+ \DTMitalianordinal{##3}%
+ \DTMitaliandaymonthsep
+ }%
+ {}%
+ \DTMifbool{italian}{abbr}%
+ {\DTMitalianshortmonthname{##2}}%
+ {\DTMitalianmonthname{##2}}%
+ \DTMifbool{italian}{showyear}%
+ {%
+ \DTMitalianmonthyearsep\number##1 % space intended
+ }%
+ {}%
+ }%
+}%
+{% time style
+ \renewcommand*\DTMitaliantimesep{\DTMitaliantimesep}%
+ \DTMsettimestyle{default}%
+}%
+{% zone style
+ \DTMresetzones
+ \DTMitalianzonemaps
+ \renewcommand*{\DTMdisplayzone}[2]{%
+ \DTMifbool{italian}{mapzone}%
+ {\DTMusezonemapordefault{##1}{##2}}%
+ {%
+ \ifnum##1<0\else+\fi\DTMtwodigits{##1}%
+ \ifDTMshowzoneminutes\DTMitaliantimesep\DTMtwodigits{##2}\fi
+ }%
+ }%
+}%
+{% full style
+ \renewcommand*{\DTMdisplay}[9]{%
+ \ifDTMshowdate
+ \DTMdisplaydate{##1}{##2}{##3}{##4}%
+ \DTMitaliandatetimesep
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \DTMitaliantimezonesep
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+ \renewcommand*{\DTMDisplay}[9]{%
+ \ifDTMshowdate
+ \DTMDisplaydate{##1}{##2}{##3}{##4}%
+ \DTMitaliandatetimesep
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \DTMitaliantimezonesep
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+}%
+% \end{macrocode}
+%
+% Define numeric style.
+% \begin{macrocode}
+\DTMnewstyle
+ {italian-numeric}% label
+ {% date style
+ \renewcommand*\DTMdisplaydate[4]{%
+ \DTMifbool{italian}{showdayofmonth}%
+ {%
+ \number##3 % space intended
+ \DTMitaliandatesep
+ }%
+ {}%
+ \number##2 % space intended
+ \DTMifbool{italian}{showyear}%
+ {%
+ \DTMitaliandatesep
+ \number##1 % space intended
+ }%
+ {}%
+ }%
+ \renewcommand*{\DTMDisplaydate}[4]{\DTMdisplaydate{##1}{##2}{##3}{##4}}%
+ }%
+ {% time style
+ \renewcommand*\DTMdisplaytime[3]{%
+ \number##1
+ \DTMitaliantimesep\DTMtwodigits{##2}%
+ \ifDTMshowseconds\DTMitaliantimesep\DTMtwodigits{##3}\fi
+ }%
+ }%
+ {% zone style
+ \DTMresetzones
+ \DTMitalianzonemaps
+ \renewcommand*{\DTMdisplayzone}[2]{%
+ \DTMifbool{italian}{mapzone}%
+ {\DTMusezonemapordefault{##1}{##2}}%
+ {%
+ \ifnum##1<0\else+\fi\DTMtwodigits{##1}%
+ \ifDTMshowzoneminutes\DTMitaliantimesep\DTMtwodigits{##2}\fi
+ }%
+ }%
+ }%
+ {% full style
+ \renewcommand*{\DTMdisplay}[9]{%
+ \ifDTMshowdate
+ \DTMdisplaydate{##1}{##2}{##3}{##4}%
+ \DTMitaliandatetimesep
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \DTMitaliantimezonesep
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+ \renewcommand*{\DTMDisplay}{\DTMdisplay}%
+ }
+% \end{macrocode}
+%
+% Define am pm style.
+% \begin{macrocode}
+ \DTMnewtimestyle
+ {italianampm}% label
+ {%
+ \renewcommand*\DTMdisplaytime[3]{%
+ \ifnum##2=0
+ \ifnum##1=12
+ \DTMtexorpdfstring
+ {\DTMitalianampmfmt{\DTMitaliannoon}}%
+ {\DTMitaliannoon}%
+ \else
+ \ifnum##1=0
+ \DTMtexorpdfstring
+ {\DTMitalianampmfmt{\DTMitalianmidnight}}%
+ {\DTMitalianmidnight}%
+ \else
+ \ifnum##1=24
+ \DTMtexorpdfstring
+ {\DTMitalianampmfmt{\DTMitalianmidnight}}%
+ {\DTMitalianmidnight}%
+ \else
+ \ifnum##1<12
+ \number##1
+ \DTMtexorpdfstring
+ {\DTMitalianampmfmt{\DTMitalianam}}%
+ {\DTMitalianam}%
+ \else
+ \number\numexpr##1-12\relax
+ \DTMtexorpdfstring
+ {\DTMitalianampmfmt{\DTMitalianpm}}%
+ {\DTMitalianpm}%
+ \fi
+ \fi
+ \fi
+ \fi
+ \else
+ \ifnum##1<13
+ \ifnum##1=0
+ 12%
+ \else
+ \number##1
+ \fi
+ \DTMitaliantimesep\DTMtwodigits{##2}%
+ \ifnum##1=12
+ \DTMtexorpdfstring
+ {\DTMitalianampmfmt{\DTMitalianam}}%
+ {\DTMitalianpm}%
+ \else
+ \DTMtexorpdfstring
+ {\DTMitalianampmfmt{\DTMitalianam}}%
+ {\DTMitalianam}%
+ \fi
+ \else
+ \number\numexpr##1-12\relax
+ \DTMitaliantimesep\DTMtwodigits{##2}%
+ \ifnum##1=24
+ \DTMtexorpdfstring
+ {\DTMitalianampmfmt{\DTMitalianpm}}%
+ {\DTMitalianam}%
+ \else
+ \DTMtexorpdfstring
+ {\DTMitalianampmfmt{\DTMitalianpm}}%
+ {\DTMitalianpm}%
+ \fi
+ \fi
+ \fi
+ }%
+ }%
+% \end{macrocode}
+%
+% Define italian-twenty-four style.
+%
+% \begin{macrocode}
+ \DTMnewtimestyle
+ {italian-twenty-four}% label
+ {%
+ \renewcommand*\DTMdisplaytime[3]{%
+ \ifnum##2=0
+ \ifnum##1=12
+ \DTMtexorpdfstring
+ {\DTMitalianampmfmt{\DTMitaliannoon}}%
+ {\DTMitaliannoon}%
+ \else
+ \ifnum##1=0
+ \DTMtexorpdfstring
+ {\DTMitalianampmfmt{\DTMitalianmidnight}}%
+ {\DTMitalianmidnight}%
+ \else
+ \ifnum##1=24
+ \DTMtexorpdfstring
+ {\DTMitalianampmfmt{\DTMitalianmidnight}}%
+ {\DTMitalianmidnight}%
+ \else
+ \ifnum##1<12
+ \DTMtwodigits{##1}\DTMitaliantimesep\DTMtwodigits{##2}%
+ \else
+ \DTMtwodigits{##1}\DTMitaliantimesep\DTMtwodigits{##2}%
+ \fi
+ \fi
+ \fi
+ \fi
+ \else
+ \ifnum##1<13
+ \ifnum##1=0
+ \DTMtwodigits{##1}%
+ \else
+ \DTMtwodigits{##1}\relax
+ \fi
+ \DTMitaliantimesep\DTMtwodigits{##2}%
+ \else
+ \DTMtwodigits{##1}\relax
+ \DTMitaliantimesep\DTMtwodigits{##2}%
+ \fi
+ \fi
+ }%
+ }%
+% \end{macrocode}
+%
+%
+%\begin{macro}{\DTMitalianzonemaps}
+% The time zone mappings are set through this command, which can be
+% redefined if extra mappings are required or mappings need to be
+% removed.
+% \begin{macrocode}
+\newcommand*{\DTMitalianzonemaps}{%
+ \DTMdefzonemap{01}{00}{CET}%
+ \DTMdefzonemap{02}{00}{CEST}%
+}
+% \end{macrocode}
+%\end{macro}
+% Switch style according to the \opt{useregional} setting.
+% \begin{macrocode}
+\DTMifcaseregional
+{}% do nothing
+{\DTMsetstyle{italian}}
+{\DTMsetstyle{italian-numeric}}
+% \end{macrocode}
+%
+% Redefine \cs{dateitalian} (or \cs{date}\meta{dialect}) to prevent
+% \sty{babel} from resetting \cs{today}. (For this to work,
+% \sty{babel} must already have been loaded if it's required.)
+% \begin{macrocode}
+\ifcsundef{date\CurrentTrackedDialect}
+{%
+ \ifundef\dateitalian
+ {% do nothing
+ }%
+ {%
+ \def\dateitalian{%
+ \DTMifcaseregional
+ {}% do nothing
+ {\DTMsetstyle{italian}}%
+ {\DTMsetstyle{italian-numeric}}%
+ }%
+ }%
+}%
+{%
+ \csdef{date\CurrentTrackedDialect}{%
+ \DTMifcaseregional
+ {}% do nothing
+ {\DTMsetstyle{italian}}%
+ {\DTMsetstyle{italian-numeric}}
+ }%
+}%
+% \end{macrocode}
+%\iffalse
+% \begin{macrocode}
+%</datetime2-italian.ldf>
+% \end{macrocode}
+%\fi
+%\Finale
+\endinput
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-italian/datetime2-italian.ins b/macros/latex/contrib/datetime2-contrib/datetime2-italian/datetime2-italian.ins
new file mode 100644
index 0000000000..3e9b4abb6b
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-italian/datetime2-italian.ins
@@ -0,0 +1,64 @@
+\input docstrip
+
+\preamble
+
+ datetime2-italian.dtx
+ Copyright 2015 Nicola Talbot
+
+ This work may be distributed and/or modified under the
+ conditions of the LaTeX Project Public License, either version 1.3
+ of this license of (at your option) any later version.
+ The latest version of this license is in
+ http://www.latex-project.org/lppl.txt
+ and version 1.3 or later is part of all distributions of LaTeX
+ version 2005/12/01 or later.
+
+ The Current Maintainer of this work is Claudio Duchi
+ claduc at libero dot it
+
+ This work has the LPPL maintenance status `maintained'.
+
+ This work consists of the files datetime2-italian.dtx and
+ datetime2-italian.ins and the derived files
+ datetime2-italian-utf8.ldf, datetime2-italian-ascii.ldf and
+ datetime2-italian.ldf.
+
+\endpreamble
+
+\askforoverwritefalse
+
+\generate
+{%
+ \file
+ {datetime2-italian-utf8.ldf}%
+ {%
+ \usepreamble\defaultpreamble
+ \usepostamble\defaultpostamble
+ \from{datetime2-italian.dtx}{datetime2-italian-utf8.ldf,package}%
+ }%
+}
+
+\generate
+{%
+ \file
+ {datetime2-italian-ascii.ldf}%
+ {%
+ \usepreamble\defaultpreamble
+ \usepostamble\defaultpostamble
+ \from{datetime2-italian.dtx}{datetime2-italian-ascii.ldf,package}%
+ }%
+}
+
+\generate
+{%
+ \file
+ {datetime2-italian.ldf}%
+ {%
+ \usepreamble\defaultpreamble
+ \usepostamble\defaultpostamble
+ \from{datetime2-italian.dtx}{datetime2-italian.ldf,package}%
+ }%
+}
+
+\endbatchfile
+
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-italian/datetime2-italian.pdf b/macros/latex/contrib/datetime2-contrib/datetime2-italian/datetime2-italian.pdf
new file mode 100644
index 0000000000..527f5dc1bf
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-italian/datetime2-italian.pdf
Binary files differ
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-italian/sample/datetime1.tex b/macros/latex/contrib/datetime2-contrib/datetime2-italian/sample/datetime1.tex
new file mode 100644
index 0000000000..40975b2d6d
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-italian/sample/datetime1.tex
@@ -0,0 +1,13 @@
+\documentclass[italian]{article}
+\usepackage{ifpdf,ifxetex}
+\ifpdf
+\usepackage{babel}
+\else
+\usepackage{fontspec}
+\usepackage{polyglossia}
+\setdefaultlanguage{italian}
+\fi
+\usepackage[useregional]{datetime2}
+\begin{document}
+Questo PDF ĆØ stato creato il \today
+\end{document} \ No newline at end of file
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-italian/sample/datetime2-sample-babel.tex b/macros/latex/contrib/datetime2-contrib/datetime2-italian/sample/datetime2-sample-babel.tex
new file mode 100644
index 0000000000..547fd7eff2
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-italian/sample/datetime2-sample-babel.tex
@@ -0,0 +1,56 @@
+% This file is public domain.
+
+% This document requires the datetime2-english module to be
+% installed (in addition to the datetime2 package).
+% arara: pdflatex
+\documentclass[italian]{article}
+
+\usepackage{babel}
+\usepackage[datesep=/,showzoneminutes=false,useregional]{datetime2}
+\usepackage[colorlinks]{hyperref}
+
+%\DTMlangsetup{mapzone=false}
+
+\DTMsavetimestamp{mydate}{2014-06-03T12:45:02+01:00}
+\DTMsavetimestamp{mydate2}{2015-03-20T08:05:09+00:00}
+\DTMsavetimestamp{mydate3}{2014-12-15T23:55:49-06:00}
+\DTMsavetimestamp{mydate4}{2014-01-27T12:05:00+09:00}
+\DTMsavetimestamp{mydate5}{2013-11-28T02:05:00+12:00}
+
+%\renewcommand*{\DTMresetzones}{\DTMclearmap{01}{00}}
+
+\begin{document}
+\tableofcontents
+ \section{Italiano}
+
+ Oggi: \today.
+
+ Ora: \DTMnow.
+
+ \subsection{\DTMuse{mydate}}
+ Saved Date (\texttt{mydate}): \DTMusedate{mydate}
+ Saved time (\texttt{mydate}): \DTMusetime{mydate}.
+ \typeout{Date (#1): \DTMusedate{mydate}}
+
+ \subsection{\DTMuse{mydate2}}
+ Saved Date (\texttt{mydate2}): \DTMusedate{mydate2}
+ Saved time (\texttt{mydate2}): \DTMusetime{mydate2}.
+ \typeout{Date (#1): \DTMusedate{mydate2}}
+
+ \subsection{\DTMuse{mydate3}}
+ Saved Date (\texttt{mydate3}): \DTMusedate{mydate3}
+ Saved time (\texttt{mydate3}): \DTMusetime{mydate3}.
+ \typeout{Date (#1): \DTMusedate{mydate3}}
+
+ \subsection{\DTMuse{mydate4}}
+ Saved Date (\texttt{mydate4}): \DTMusedate{mydate4}
+ Saved time (\texttt{mydate4}): \DTMusetime{mydate4}.
+ \typeout{Date (#1): \DTMusedate{mydate4}}
+
+ \subsection{\DTMuse{mydate5}}
+ Saved Date (\texttt{mydate5}): \DTMusedate{mydate5}
+ Saved time (\texttt{mydate5}): \DTMusetime{mydate5}.
+ \typeout{Date (#1): \DTMusedate{mydate5}}
+
+
+\end{document}
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-italian/sample/datetime2-sample-calc.tex b/macros/latex/contrib/datetime2-contrib/datetime2-italian/sample/datetime2-sample-calc.tex
new file mode 100644
index 0000000000..7ed62aa19c
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-italian/sample/datetime2-sample-calc.tex
@@ -0,0 +1,76 @@
+% This file is public domain.
+
+% arara: pdflatex
+\documentclass[italian]{article}
+
+\usepackage[calc,useregional]{datetime2}
+
+\begin{document}
+
+\DTMsavejulianday{mydate}{2457023}
+\DTMsavedate{mydate2}{2014-06-20}
+
+Date: \DTMusedate{mydate}.
+
+\newcount\myct
+\DTMsaveddatetojulianday{mydate}{\myct}
+
+Julian day number: \number\myct.
+
+\DTMsaveddateoffsettojulianday{mydate}{2}{\myct}
+
+Julian day number (offset+2): \number\myct.
+
+Is \texttt{mydate2} (\DTMusedate{mydate2}) before
+\texttt{mydate} (\DTMusedate{mydate})?
+\DTMifdate
+ {mydate2}
+ {at most=
+ \DTMfetchyear{mydate}-\DTMfetchmonth{mydate}-\DTMfetchday{mydate}}
+ {yes}{no}.
+
+Is \texttt{mydate2} (\DTMusedate{mydate2}) after
+\texttt{mydate} (\DTMusedate{mydate})?
+\DTMifdate
+ {mydate2}
+ {at least=
+ \DTMfetchyear{mydate}-\DTMfetchmonth{mydate}-\DTMfetchday{mydate}}
+ {yes}{no}.
+
+\DTMsaveddatediff{mydate}{mydate2}{\myct}
+
+\DTMusedate{mydate} is
+\ifnum\myct=0
+ the same day as
+\else
+ \ifnum\myct<0
+ \number-\myct\space day\ifnum\myct<-1s\fi\space before
+ \else
+ \number\myct\space day\ifnum\myct>1s\fi\space after
+ \fi
+\fi
+\DTMusedate{mydate2}.
+
+Original date: 2014-06-3 20:45:00 +06:00
+
+\DTMsaveaszulutime{mydate}{2014}{6}{3}{20}{45}{0}{6}{0}
+UTC+00:00 date: \DTMuse{mydate}.
+
+\DTMsavetimestamp{mydate}{2014-05-01T03:55:00 -06:00}
+Original date: \DTMuse{mydate}.
+
+\DTMtozulu{mydate}{mydate2}
+UTC+00:00: \DTMuse{mydate2}.
+
+Offset: \DTMdate{2015-03-30+4}.
+
+Last: \DTMdate{2015-02-last}.
+
+Last with offset: \DTMdate{2015-02-last+-2}.
+
+Saved date with offset
+\DTMsavedate{offset}{2015-02-last+-2}
+
+Use date: \DTMusedate{offset}.
+
+\end{document}
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-italian/sample/datetime2-sample-hyperref.tex b/macros/latex/contrib/datetime2-contrib/datetime2-italian/sample/datetime2-sample-hyperref.tex
new file mode 100644
index 0000000000..5ee79e91f5
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-italian/sample/datetime2-sample-hyperref.tex
@@ -0,0 +1,78 @@
+% This file is public domain.
+% This document additionally requires the datetime2-english module
+% to be installed.
+
+% arara: pdflatex
+% arara: pdflatex
+\documentclass[italian]{article}
+
+\usepackage[datesep=/,showzoneminutes=false]{datetime2}
+\usepackage[colorlinks]{hyperref}
+
+\DTMsetup{showdow}
+
+\DTMsavetimestamp{mydate}{2014-06-03T12:45:02+01:00}
+
+\begin{document}
+\tableofcontents
+
+The use of \verb|\typeout| is to test the expansion in the event
+that the date/time needs to be written to an external file.
+Use
+\texttt{\href{http://www.dickimaw-books.com/latex/novices/html/texdoc.html}{texdoc} datetime2} to read the main user manual for
+the \texttt{datetime2} package and use \texttt{texdoc
+datetime2-english} for the English module documentation.
+
+\section{Default date: \today}
+
+Today: \today. Time: \DTMcurrenttime. Zone: \DTMcurrentzone.
+
+Now: \DTMnow.
+
+TWO DIGITS: \DTMtwodigits{2014}. \DTMtwodigits{2999}.
+\DTMtwodigits{-2}.
+
+\typeout{Date Stamp (Default): \DTMnow}
+
+Saved date: \DTMusedate{mydate}.
+Saved time: \DTMusetime{mydate}.
+
+Saved date-time: \DTMuse{mydate}.
+
+\typeout{Date Stamp (Default): \DTMuse{mydate}}
+
+\section{Default time: \DTMusetime{mydate}}
+
+\DTMsetstyle{iso}
+
+ISO: \DTMnow.
+\typeout{Date Stamp (ISO): \DTMnow}
+
+Saved date: \DTMuse{mydate}.
+\typeout{Date Stamp (ISO): \DTMuse{mydate}}
+
+\DTMsetstyle{italian}
+\section{(Italiano) \DTMusedate{mydate}}
+Today: \today. Time: \DTMcurrenttime. Zone: \DTMcurrentzone.
+
+Now: \DTMnow.
+
+TWO DIGITS: \DTMtwodigits{2014}. \DTMtwodigits{2999}.
+\DTMtwodigits{-2}.
+
+\typeout{Date Stamp (Default): \DTMnow}
+
+Saved date: \DTMusedate{mydate}.
+Saved time: \DTMusetime{mydate}.
+
+Saved date-time: \DTMuse{mydate}.
+
+Italiano: \DTMnow.
+\typeout{Date Stamp (IT): \DTMnow}
+
+Saved date: \DTMuse{mydate}.
+\typeout{Date Stamp (IT): \DTMuse{mydate}}
+
+
+
+\end{document}
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-italian/sample/datetime2-sample-styles.tex b/macros/latex/contrib/datetime2-contrib/datetime2-italian/sample/datetime2-sample-styles.tex
new file mode 100644
index 0000000000..3261d80604
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-italian/sample/datetime2-sample-styles.tex
@@ -0,0 +1,148 @@
+% This file is public domain.
+% This document additionally requires the datetime2-english module
+% to be installed.
+
+% arara: pdflatex
+\documentclass[italian]{article}
+
+\usepackage{datetime2}
+
+%\DTMsetup{showseconds=false,datesep=/,timesep=.}
+
+\begin{document}
+\DTMsavetimestamp{mydate}{2015-04-01T08:05:00+01:00}
+\DTMsavetimestamp{mydate2}{2015-04-01T08:13:45+01:00}
+
+Default: \DTMnow. \DTMuse{mydate}.
+\typeout{Date-Time (default): \DTMnow. \DTMuse{mydate}.}
+
+\DTMsetstyle{iso}
+
+ISO: \DTMnow. \DTMuse{mydate}.
+\typeout{Date-Time (iso): \DTMnow. \DTMuse{mydate}.}
+
+\DTMsetstyle{pdf}
+
+PDF: \DTMnow. \DTMuse{mydate}.
+\typeout{Date-Time (pdf): \DTMnow. \DTMuse{mydate}.}
+
+\DTMsetstyle{ddmmyyyy}
+
+ddmmyyyy: \DTMnow. \DTMuse{mydate}.
+\typeout{Date-Time (ddmmyyyy): \DTMnow. \DTMuse{mydate}.}
+
+\DTMsetstyle{dmyyyy}
+
+dmyyyy: \DTMnow. \DTMuse{mydate}.
+\typeout{Date-Time (dmyyyy): \DTMnow. \DTMuse{mydate}.}
+
+\DTMsetstyle{dmyy}
+
+dmyy: \DTMnow. \DTMuse{mydate}.
+\typeout{Date-Time (dmyy): \DTMnow. \DTMuse{mydate}.}
+
+\DTMsetstyle{mmddyyyy}
+
+mmddyyyy: \DTMnow. \DTMuse{mydate}.
+\typeout{Date-Time (mmddyyyy): \DTMnow. \DTMuse{mydate}.}
+
+\DTMsetstyle{mdyyyy}
+
+mdyyyy: \DTMnow. \DTMuse{mydate}.
+\typeout{Date-Time (mdyyyy): \DTMnow. \DTMuse{mydate}.}
+
+\DTMsetstyle{mdyy}
+
+mdyy: \DTMnow. \DTMuse{mydate}.
+\typeout{Date-Time (mdyy): \DTMnow. \DTMuse{mydate}.}
+
+\DTMsetstyle{yyyymd}
+
+yyyymd: \DTMnow. \DTMuse{mydate}.
+\typeout{Date-Time (yyyymd): \DTMnow. \DTMuse{mydate}.}
+
+Testing time styles.
+
+\DTMsavetime{noon}{12:00:00}
+\DTMsavetime{midnight1}{00:00:00}
+\DTMsavetime{midnight2}{24:00:00}
+\DTMsavetime{8am}{08:00:00}
+\DTMsavetime{8pm}{20:00:00}
+\DTMsavetime{1203}{12:03:00}
+\DTMsavetime{2401}{24:01:00}
+\DTMsavetime{0001}{00:01:00}
+
+\DTMsettimestyle{hmmss}
+
+hmmss: \DTMcurrenttime. \DTMusetime{mydate}.
+\DTMusetime{mydate2}.
+
+\DTMusetime{noon}.
+
+\DTMusetime{midnight1}.
+
+\DTMusetime{midnight2}.
+
+\DTMusetime{8am}.
+
+\DTMusetime{8pm}.
+
+\DTMusetime{1203}.
+
+\DTMusetime{2401}.
+\DTMusetime{0001}.
+
+\typeout{Time (hmmss): \DTMcurrenttime.
+ \DTMusetime{mydate}.
+ \DTMusetime{mydate2}.
+ \DTMusetime{noon}.
+ \DTMusetime{midnight1}.
+ \DTMusetime{midnight2}.
+ \DTMusetime{8am}.
+ \DTMusetime{8pm}.
+ \DTMusetime{1203}.
+ \DTMusetime{2401}.
+ \DTMusetime{0001}.
+}
+
+\DTMsettimestyle{italianampm}
+ampm: \DTMcurrenttime.
+\DTMusetime{mydate}.
+\DTMusetime{mydate2}.
+\DTMusetime{noon}.
+\DTMusetime{midnight1}.
+\DTMusetime{midnight2}.
+\DTMusetime{8am}.
+\DTMusetime{8pm}.
+\DTMusetime{1203}.
+\DTMusetime{2401}.
+\DTMusetime{0001}.
+
+\typeout{Time (ampm): \DTMcurrenttime.
+\DTMusetime{mydate}.
+\DTMusetime{mydate2}.
+\DTMusetime{noon}.
+\DTMusetime{midnight1}.
+\DTMusetime{midnight2}.
+\DTMusetime{8am}.
+\DTMusetime{8pm}.
+\DTMusetime{1203}.
+\DTMusetime{2401}.
+\DTMusetime{0001}.
+}
+
+\DTMsettimestyle{italian-twenty-four}
+(italian-twenty-four) \DTMcurrenttime.
+
+\DTMusetime{mydate}.
+\DTMusetime{mydate2}.
+\DTMusetime{noon}.
+\DTMusetime{midnight1}.
+\DTMusetime{midnight2}.
+\DTMusetime{8am}.
+\DTMusetime{8pm}.
+\DTMusetime{1203}.
+\DTMusetime{2401}.
+\DTMusetime{0001}.
+
+\end{document}
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-italian/sample/esempio1.tex b/macros/latex/contrib/datetime2-contrib/datetime2-italian/sample/esempio1.tex
new file mode 100644
index 0000000000..1a8531868f
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-italian/sample/esempio1.tex
@@ -0,0 +1,5 @@
+\documentclass{article}
+\usepackage{datetime2}
+\begin{document}
+This PDF was created on \today.
+\end{document} \ No newline at end of file
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-italian/sample/esempio10.tex b/macros/latex/contrib/datetime2-contrib/datetime2-italian/sample/esempio10.tex
new file mode 100644
index 0000000000..70f2eafee4
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-italian/sample/esempio10.tex
@@ -0,0 +1,16 @@
+\documentclass[italian]{article}
+\usepackage{ifpdf,ifxetex}
+\ifpdf
+\usepackage[T1]{fontenc}
+\usepackage[utf8]{inputenc}
+\usepackage{babel}
+
+\else
+\usepackage{fontspec}
+\usepackage{polyglossia}
+\setdefaultlanguage{italian}
+\fi
+\usepackage[useregional,showzone=false]{datetime2}
+\begin{document}
+Questo PDF ĆØ stato creato il \DTMnow.
+\end{document} \ No newline at end of file
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-italian/sample/esempio11.tex b/macros/latex/contrib/datetime2-contrib/datetime2-italian/sample/esempio11.tex
new file mode 100644
index 0000000000..34c4ce6ffd
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-italian/sample/esempio11.tex
@@ -0,0 +1,16 @@
+\documentclass[italian]{article}
+\usepackage{ifpdf,ifxetex}
+\ifpdf
+\usepackage[T1]{fontenc}
+\usepackage[utf8]{inputenc}
+\usepackage{babel}
+
+\else
+\usepackage{fontspec}
+\usepackage{polyglossia}
+\setdefaultlanguage{italian}
+\fi
+\usepackage[showisoZ=true]{datetime2}
+\begin{document}
+Questo PDF ĆØ stato creato il \DTMnow.
+\end{document} \ No newline at end of file
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-italian/sample/esempio12.tex b/macros/latex/contrib/datetime2-contrib/datetime2-italian/sample/esempio12.tex
new file mode 100644
index 0000000000..00ad4eff6b
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-italian/sample/esempio12.tex
@@ -0,0 +1,15 @@
+\documentclass{article}
+\usepackage{ifpdf,ifxetex}
+\ifpdf
+\usepackage[T1]{fontenc}
+\usepackage[utf8]{inputenc}
+\usepackage[italian]{babel}
+
+\else
+\usepackage{fontspec}
+\usepackage{polyglossia}
+\setdefaultlanguage{italian}
+\fi
+\begin{document}
+\today
+\end{document} \ No newline at end of file
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-italian/sample/esempio13.tex b/macros/latex/contrib/datetime2-contrib/datetime2-italian/sample/esempio13.tex
new file mode 100644
index 0000000000..843267ea47
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-italian/sample/esempio13.tex
@@ -0,0 +1,5 @@
+\documentclass{article}
+\usepackage[italian,useregional=numeric]{datetime2}
+\begin{document}
+ \today
+\end{document} \ No newline at end of file
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-italian/sample/esempio2.tex b/macros/latex/contrib/datetime2-contrib/datetime2-italian/sample/esempio2.tex
new file mode 100644
index 0000000000..74283552dd
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-italian/sample/esempio2.tex
@@ -0,0 +1,5 @@
+\documentclass{article}
+\usepackage{datetime2}
+\begin{document}
+This PDF was created on \DTMnow.
+\end{document} \ No newline at end of file
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-italian/sample/esempio3.tex b/macros/latex/contrib/datetime2-contrib/datetime2-italian/sample/esempio3.tex
new file mode 100644
index 0000000000..5f669f9c44
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-italian/sample/esempio3.tex
@@ -0,0 +1,13 @@
+\documentclass[italian]{article}
+\usepackage{ifpdf,ifxetex}
+\ifpdf
+\usepackage{babel}
+\else
+\usepackage{fontspec}
+\usepackage{polyglossia}
+\setdefaultlanguage{italian}
+\fi
+\usepackage{datetime2}
+\begin{document}
+Questo PDF ĆØ stato creato il \DTMnow.
+\end{document} \ No newline at end of file
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-italian/sample/esempio4.tex b/macros/latex/contrib/datetime2-contrib/datetime2-italian/sample/esempio4.tex
new file mode 100644
index 0000000000..ccaa3e4bcd
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-italian/sample/esempio4.tex
@@ -0,0 +1,13 @@
+\documentclass[italian]{article}
+\usepackage{ifpdf,ifxetex}
+\ifpdf
+\usepackage{babel}
+\else
+\usepackage{fontspec}
+\usepackage{polyglossia}
+\setdefaultlanguage{italian}
+\fi
+\usepackage[useregional]{datetime2}
+\begin{document}
+Questo PDF ĆØ stato creato il \DTMnow.
+\end{document} \ No newline at end of file
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-italian/sample/esempio5.tex b/macros/latex/contrib/datetime2-contrib/datetime2-italian/sample/esempio5.tex
new file mode 100644
index 0000000000..014274bed6
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-italian/sample/esempio5.tex
@@ -0,0 +1,15 @@
+\documentclass[italian]{article}
+\usepackage{ifpdf,ifxetex}
+\ifpdf
+\usepackage{babel}
+\else
+\usepackage{fontspec}
+\usepackage{polyglossia}
+\setdefaultlanguage{italian}
+\fi
+\usepackage[useregional=numeric]{datetime2}
+\begin{document}
+Questo PDF ĆØ stato creato il \DTMnow.
+
+Questo PDF ĆØ stato creato il \today.
+\end{document} \ No newline at end of file
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-italian/sample/esempio6.tex b/macros/latex/contrib/datetime2-contrib/datetime2-italian/sample/esempio6.tex
new file mode 100644
index 0000000000..f939b24cc7
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-italian/sample/esempio6.tex
@@ -0,0 +1,14 @@
+\documentclass[italian]{article}
+\usepackage{ifpdf,ifxetex}
+\ifpdf
+\usepackage{babel}
+\else
+\usepackage{fontspec}
+\usepackage{polyglossia}
+\setdefaultlanguage{italian}
+\fi
+\usepackage[useregional,showdow]{datetime2}
+\DTMlangsetup[italian]{abbr}
+\begin{document}
+Questo PDF ĆØ stato creato il \today
+\end{document} \ No newline at end of file
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-italian/sample/esempio6a.tex b/macros/latex/contrib/datetime2-contrib/datetime2-italian/sample/esempio6a.tex
new file mode 100644
index 0000000000..c88d97e0a7
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-italian/sample/esempio6a.tex
@@ -0,0 +1,15 @@
+\documentclass[italian]{article}
+\usepackage{ifpdf,ifxetex}
+\ifpdf
+\usepackage{babel}
+\else
+\usepackage{fontspec}
+\usepackage{polyglossia}
+\setdefaultlanguage{italian}
+\fi
+\usepackage[useregional,showdow]{datetime2}
+\begin{document}
+Questo PDF ĆØ stato creato il \DTMnow.
+
+Questo PDF ĆØ stato creato il \today.
+\end{document} \ No newline at end of file
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-italian/sample/esempio7.tex b/macros/latex/contrib/datetime2-contrib/datetime2-italian/sample/esempio7.tex
new file mode 100644
index 0000000000..e934e7b5c0
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-italian/sample/esempio7.tex
@@ -0,0 +1,19 @@
+\documentclass[italian]{article}
+\usepackage{ifpdf,ifxetex}
+\ifpdf
+\usepackage[T1]{fontenc}
+\usepackage[utf8]{inputenc}
+\usepackage{babel}
+
+\else
+\usepackage{fontspec}
+\usepackage{polyglossia}
+\setdefaultlanguage{italian}
+\fi
+
+\usepackage[italian,style=iso]{datetime2}
+\begin{document}
+Questo PDF ĆØ stato creato il \DTMnow.
+
+Questo PDF ĆØ stato creato il \today.
+\end{document} \ No newline at end of file
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-italian/sample/esempio8.tex b/macros/latex/contrib/datetime2-contrib/datetime2-italian/sample/esempio8.tex
new file mode 100644
index 0000000000..b57c67eac6
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-italian/sample/esempio8.tex
@@ -0,0 +1,16 @@
+\documentclass[italian]{article}
+\usepackage{ifpdf,ifxetex}
+\ifpdf
+\usepackage[T1]{fontenc}
+\usepackage[utf8]{inputenc}
+\usepackage{babel}
+
+\else
+\usepackage{fontspec}
+\usepackage{polyglossia}
+\setdefaultlanguage{italian}
+\fi
+\usepackage[style=iso,italian]{datetime2}
+\begin{document}
+Questo PDF ĆØ stato creato il \today
+\end{document} \ No newline at end of file
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-italian/sample/esempio9.tex b/macros/latex/contrib/datetime2-contrib/datetime2-italian/sample/esempio9.tex
new file mode 100644
index 0000000000..62793cc817
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-italian/sample/esempio9.tex
@@ -0,0 +1,16 @@
+\documentclass[italian]{article}
+\usepackage{ifpdf,ifxetex}
+\ifpdf
+\usepackage[T1]{fontenc}
+\usepackage[utf8]{inputenc}
+\usepackage{babel}
+
+\else
+\usepackage{fontspec}
+\usepackage{polyglossia}
+\setdefaultlanguage{italian}
+\fi
+\usepackage[showdow]{datetime2}
+\begin{document}
+Questo PDF ĆØ stato creato il \DTMnow.
+\end{document} \ No newline at end of file
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-italian/sample/tomorrow.tex b/macros/latex/contrib/datetime2-contrib/datetime2-italian/sample/tomorrow.tex
new file mode 100644
index 0000000000..8892d71d41
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-italian/sample/tomorrow.tex
@@ -0,0 +1,39 @@
+\documentclass[italian]{article}
+\newcount\myct
+\newcount\datecount
+\newcommand{\tomorrow}{%
+ \DTMsavenow{mydate}
+ \DTMsaveddateoffsettojulianday{mydate}{365}{\myct}
+ \DTMsavejulianday{mydate}{\number\myct}
+ \DTMusedate{mydate}
+}
+
+\newcommand{\yesterday}{%
+ \DTMsavenow{mydate}
+ \DTMsaveddateoffsettojulianday{mydate}{-1}{\myct}
+ \DTMsavejulianday{mydate}{\number\myct}
+ \DTMusedate{mydate}
+}
+\newcommand{\myday}[1]{%
+ \DTMsavenow{mydate}
+ \DTMsaveddateoffsettojulianday{mydate}{#1}{\myct}
+ \DTMsavejulianday{mydate}{\number\myct}
+ \DTMusedate{mydate}
+}
+\usepackage[calc,useregional]{datetime2}
+\begin{document}
+
+\today~ is the day before tomorrow.\par
+
+\tomorrow~ is the day after today.
+
+\yesterday
+
+\myday{10}
+%\DTMuse{\tomorrow}
+%\pgfcalendardatetojulian{\year-\month-\day+1}{\pgfdatecount}
+%\DTMsavejulianday{mydate}{\the\pgfdatecount}
+%\DTMusedate{mydate}
+
+
+\end{document} \ No newline at end of file
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-latin/README b/macros/latex/contrib/datetime2-contrib/datetime2-latin/README
new file mode 100644
index 0000000000..6f709d68cc
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-latin/README
@@ -0,0 +1,57 @@
+Latin Language Module for datetime2 Package
+
+Author: Nicola L. C. Talbot (inactive)
+
+Licence: LPPL
+
+Required Packages: datetime2, tracklang
+
+This module is unmaintained. If you want to volunteer to take over
+the maintenance contact me at www.dickimaw-books.com/contact.html
+
+Example usage:
+
+\documentclass{article}
+\usepackage[latin]{datetime2}
+\begin{document}
+\today
+\end{document}
+
+\documentclass[latin]{article}
+\usepackage{babel}
+\usepackage[useregional]{datetime2}
+\begin{document}
+\today
+\end{document}
+
+\documentclass{article}
+\usepackage{polyglossia}
+\setmainlanguage{latin}
+\usepackage[latin]{datetime2}
+\begin{document}
+\today
+\end{document}
+
+INSTALLATION
+============
+
+latex datetime2-latin.ins
+
+Move all *.ldf files to
+TEXMF/tex/latex/datetime2-contrib/datetime2-latin/
+
+Documentation:
+
+pdflatex datetime2-latin.dtx
+makeindex -s gind.ist datetime2-latin.idx
+makeindex -s gglo.ist -o datetime2-latin.gls datetime2-latin.glo
+pdflatex datetime2-latin.dtx
+pdflatex datetime2-latin.dtx
+
+Move datetime2-latin.pdf and README to
+TEXMF/doc/latex/datetime2-contrib/datetime2-latin/
+
+This material is subject to the LaTeX Project Public License.
+See http://www.ctan.org/license/lppl1.3 for the details of that
+license.
+
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-latin/datetime2-latin.dtx b/macros/latex/contrib/datetime2-contrib/datetime2-latin/datetime2-latin.dtx
new file mode 100644
index 0000000000..d5b7e6de88
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-latin/datetime2-latin.dtx
@@ -0,0 +1,501 @@
+%\iffalse
+%<*package>
+%% \CharacterTable
+%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+%% Digits \0\1\2\3\4\5\6\7\8\9
+%% Exclamation \! Double quote \" Hash (number) \#
+%% Dollar \$ Percent \% Ampersand \&
+%% Acute accent \' Left paren \( Right paren \)
+%% Asterisk \* Plus \+ Comma \,
+%% Minus \- Point \. Solidus \/
+%% Colon \: Semicolon \; Less than \<
+%% Equals \= Greater than \> Question mark \?
+%% Commercial at \@ Left bracket \[ Backslash \\
+%% Right bracket \] Circumflex \^ Underscore \_
+%% Grave accent \` Left brace \{ Vertical bar \|
+%% Right brace \} Tilde \~}
+%</package>
+%\fi
+% \iffalse
+% Doc-Source file to use with LaTeX2e
+% Copyright (C) 2018 Nicola Talbot, all rights reserved.
+% (New maintainer add relevant lines here.)
+% \fi
+% \iffalse
+%<*driver>
+\documentclass{ltxdoc}
+
+\usepackage{alltt}
+\usepackage{graphicx}
+\usepackage[utf8]{inputenc}
+\usepackage[T1]{fontenc}
+\usepackage[colorlinks,
+ bookmarks,
+ hyperindex=false,
+ pdfauthor={Nicola L.C. Talbot},
+ pdftitle={datetime2.sty Latin Module}]{hyperref}
+
+
+\CheckSum{212}
+
+\renewcommand*{\usage}[1]{\hyperpage{#1}}
+\renewcommand*{\main}[1]{\hyperpage{#1}}
+\IndexPrologue{\section*{\indexname}\markboth{\indexname}{\indexname}}
+\setcounter{IndexColumns}{2}
+
+\newcommand*{\sty}[1]{\textsf{#1}}
+\newcommand*{\opt}[1]{\texttt{#1}\index{#1=\texttt{#1}|main}}
+
+\RecordChanges
+\PageIndex
+\CodelineNumbered
+
+\begin{document}
+\DocInput{datetime2-latin.dtx}
+\end{document}
+%</driver>
+%\fi
+%
+%\MakeShortVerb{"}
+%
+%\title{Latin Module for datetime2 Package}
+%\author{Nicola L. C. Talbot (inactive)}
+%\date{2018-05-18 (v1.1)}
+%\maketitle
+%
+%This module is currently unmaintained and may be subject to change.
+%If you want to volunteer to take over maintanance, contact me at
+%\url{http://www.dickimaw-books.com/contact.html}
+%
+%\begin{abstract}
+%This is the Latin language module for the \sty{datetime2}
+%package. If you want to use the settings in this module you must
+%install it in addition to installing \sty{datetime2}. If you use
+%\sty{babel} or \sty{polyglossia}, you will need this module to
+%prevent them from redefining \cs{today}. The \sty{datetime2}
+% \opt{useregional} setting must be set to "text" or "numeric"
+% for the language styles to be set.
+% Alternatively, you can set the style in the document using
+% \cs{DTMsetstyle}, but this may be changed by \cs{date}\meta{language}
+% depending on the value of the \opt{useregional} setting.
+%\end{abstract}
+%
+%I've copied the date style from \texttt{babel-latin}'s \cs{today}.
+%This is different from \sty{polyglossia}'s Latin \cs{today} so
+%there's a check to see if \sty{polyglossia} has been loaded to make
+%the styles match.
+%
+%I don't know if these settings are correct.
+%In particular, I don't know if the "latin" time style is
+%correct. Currently this just uses the "default" time style. Please
+%be aware that this may change. Whoever takes over maintanance
+%of this module may can change it as appropriate.
+%
+%The new maintainer should add the line:
+%\begin{verbatim}
+% The Current Maintainer of this work is Name.
+%\end{verbatim}
+%to the preamble part in \texttt{datetime2-latin.ins} where Name
+%is the name of the maintainer(s) and replace
+%the `inactive' status to `maintained'.
+%
+%Currently there is only a regionless style.
+%
+%\StopEventually{%
+%\clearpage
+%\phantomsection
+%\addcontentsline{toc}{section}{Change History}%
+%\PrintChanges
+%\addcontentsline{toc}{section}{\indexname}%
+%\PrintIndex}
+%\section{The Code}
+%At the moment there is only the one ".ldf" file.
+%
+%\subsection{Main Latin Module (\texttt{datetime2-latin.ldf})}
+%\changes{1.0}{2015-03-31}{Initial release}
+%
+%\iffalse
+% \begin{macrocode}
+%<*datetime2-latin.ldf>
+% \end{macrocode}
+%\fi
+%
+% Identify Module
+% \begin{macrocode}
+\ProvidesDateTimeModule{latin}[2018/05/18 v1.1]
+% \end{macrocode}
+%
+%\begin{macro}{\DTMlatindatefont}
+%\sty{polyglossia} version doesn't implement a font change.
+% \begin{macrocode}
+\@ifpackageloaded{polyglossia}
+{
+ \newcommand*{\DTMlatindayfont}[1]{#1}
+}
+{
+% \end{macrocode}
+%This will need protecting.
+% \begin{macrocode}
+ \newcommand*{\DTMlatindayfont}[1]{%
+ {\check@mathfonts\fontsize\sf@size\z@\math@fontsfalse\selectfont#1}%
+ }
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMlatinordinal}
+% \begin{macrocode}
+\newcommand*{\DTMlatinordinal}[1]{%
+ \DTMtexorpdfstring
+ {%
+ \protect\DTMlatindayfont{\uppercase\expandafter{\romannumeral#1}}%
+ }%
+ {\romannumeral#1 }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMlatinyear}
+% \begin{macrocode}
+\newcommand*{\DTMlatinyear}[1]{%
+ \DTMtexorpdfstring
+ {%
+ \uppercase\expandafter{\romannumeral#1}%
+ }%
+ {\romannumeral#1 }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMlatinmonthname}
+% Latin month names.
+% \begin{macrocode}
+\@ifpackageloaded{polyglossia}
+{
+% \end{macrocode}
+% Match \sty{polyglossia} month names:
+% \begin{macrocode}
+ \newcommand*{\DTMlatinmonthname}[1]{%
+ \ifcase#1
+ \or
+ Januarii%
+ \or
+ Februarii%
+ \or
+ Martii%
+ \or
+ Aprilis%
+ \or
+ Maji%
+ \or
+ Junii%
+ \or
+ Julii%
+ \or
+ Augusti%
+ \or
+ Septembris%
+ \or
+ Octobris%
+ \or
+ Novembris%
+ \or
+ Decembris%
+ \fi
+ }
+}
+{
+% \end{macrocode}
+% Match \sty{babel} month names:
+% \begin{macrocode}
+ \newcommand*{\DTMlatinmonthname}[1]{%
+ \ifcase#1
+ \or
+ Ianuarii%
+ \or
+ Februarii%
+ \or
+ Martii%
+ \or
+ Aprilis%
+ \or
+ Maii%
+ \or
+ Iunii%
+ \or
+ Iulii%
+ \or
+ Augusti%
+ \or
+ Septembris%
+ \or
+ Octobris%
+ \or
+ Novembris%
+ \or
+ Decembris%
+ \fi
+ }
+}
+% \end{macrocode}
+%\end{macro}
+%
+%
+% Define the \texttt{latin} style.
+% The time style is the same as the "default" style
+% provided by \sty{datetime2}. This may need correcting.
+%
+% Allow the user a way of configuring the "latin" and
+% "latin-numeric" styles. This doesn't use the package wide
+% separators such as
+% \cs{dtm@datetimesep} in case other date formats are also required.
+%\begin{macro}{\DTMlatindaymonthsep}
+% The separator between the day and month for the text format.
+% \begin{macrocode}
+\newcommand*{\DTMlatindaymonthsep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMlatinmonthyearsep}
+% The separator between the month and year for the text format.
+% \begin{macrocode}
+\newcommand*{\DTMlatinmonthyearsep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMlatindatetimesep}
+% The separator between the date and time blocks in the full format
+% (either text or numeric).
+% \begin{macrocode}
+\newcommand*{\DTMlatindatetimesep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMlatintimezonesep}
+% The separator between the time and zone blocks in the full format
+% (either text or numeric).
+% \begin{macrocode}
+\newcommand*{\DTMlatintimezonesep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMlatindatesep}
+% The separator for the numeric date format.
+% \begin{macrocode}
+\newcommand*{\DTMlatindatesep}{/}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMlatintimesep}
+% The separator for the numeric time format.
+% \begin{macrocode}
+\newcommand*{\DTMlatintimesep}{:}
+% \end{macrocode}
+%\end{macro}
+%
+%Provide keys that can be used in \cs{DTMlangsetup} to set these
+%separators.
+% \begin{macrocode}
+\DTMdefkey{latin}{daymonthsep}{\renewcommand*{\DTMlatindaymonthsep}{#1}}
+\DTMdefkey{latin}{monthyearsep}{\renewcommand*{\DTMlatinmonthyearsep}{#1}}
+\DTMdefkey{latin}{datetimesep}{\renewcommand*{\DTMlatindatetimesep}{#1}}
+\DTMdefkey{latin}{timezonesep}{\renewcommand*{\DTMlatintimezonesep}{#1}}
+\DTMdefkey{latin}{datesep}{\renewcommand*{\DTMlatindatesep}{#1}}
+\DTMdefkey{latin}{timesep}{\renewcommand*{\DTMlatintimesep}{#1}}
+% \end{macrocode}
+%
+% TODO: provide a boolean key to switch between full and abbreviated
+% formats if appropriate. (I don't know how the date should be
+% abbreviated.)
+%
+% Define a boolean key that determines if the time zone mappings
+% should be used.
+% \begin{macrocode}
+\DTMdefboolkey{latin}{mapzone}[true]{}
+% \end{macrocode}
+% The default is to use mappings.
+% \begin{macrocode}
+\DTMsetbool{latin}{mapzone}{true}
+% \end{macrocode}
+%
+% Define a boolean key that determines if the day of month should be
+% displayed.
+% \begin{macrocode}
+\DTMdefboolkey{latin}{showdayofmonth}[true]{}
+% \end{macrocode}
+% The default is to show the day of month.
+% \begin{macrocode}
+\DTMsetbool{latin}{showdayofmonth}{true}
+% \end{macrocode}
+%
+% Define a boolean key that determines if the year should be
+% displayed.
+% \begin{macrocode}
+\DTMdefboolkey{latin}{showyear}[true]{}
+% \end{macrocode}
+% The default is to show the year.
+% \begin{macrocode}
+\DTMsetbool{latin}{showyear}{true}
+% \end{macrocode}
+%
+% Define the "latin" style. (TODO: implement day of week?)
+% \begin{macrocode}
+\DTMnewstyle
+ {latin}% label
+ {% date style
+ \renewcommand*\DTMdisplaydate[4]{%
+ \DTMifbool{latin}{showdayofmonth}
+ {\DTMlatinordinal{##3}\DTMlatindaymonthsep}%
+ {}%
+ \DTMlatinmonthname{##2}%
+ \DTMifbool{latin}{showyear}%
+ {%
+ \DTMlatinmonthyearsep
+ \DTMlatinyear{##1}%
+ }%
+ {}%
+ }%
+ \renewcommand*\DTMDisplaydate{\DTMdisplaydate}%
+ }%
+ {% time style (use default)
+ \DTMsettimestyle{default}%
+ }%
+ {% zone style
+ \DTMresetzones
+ \DTMlatinzonemaps
+ \renewcommand*{\DTMdisplayzone}[2]{%
+ \DTMifbool{latin}{mapzone}%
+ {\DTMusezonemapordefault{##1}{##2}}%
+ {%
+ \ifnum##1<0\else+\fi\DTMtwodigits{##1}%
+ \ifDTMshowzoneminutes\DTMlatintimesep\DTMtwodigits{##2}\fi
+ }%
+ }%
+ }%
+ {% full style
+ \renewcommand*{\DTMdisplay}[9]{%
+ \ifDTMshowdate
+ \DTMdisplaydate{##1}{##2}{##3}{##4}%
+ \DTMlatindatetimesep
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \DTMlatintimezonesep
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+ \renewcommand*{\DTMDisplay}{\DTMdisplay}%
+ }%
+% \end{macrocode}
+%
+% Define numeric style.
+% \begin{macrocode}
+\DTMnewstyle
+ {latin-numeric}% label
+ {% date style
+ \renewcommand*\DTMdisplaydate[4]{%
+ \DTMifbool{latin}{showdayofmonth}%
+ {%
+ \number##3 % space intended
+ \DTMlatindatesep
+ }%
+ {}%
+ \number##2 % space intended
+ \DTMifbool{latin}{showyear}%
+ {%
+ \DTMlatindatesep
+ \number##1 % space intended
+ }%
+ {}%
+ }%
+ \renewcommand*{\DTMDisplaydate}{\DTMdisplaydate}%
+ }%
+ {% time style
+ \renewcommand*\DTMdisplaytime[3]{%
+ \number##1
+ \DTMlatintimesep\DTMtwodigits{##2}%
+ \ifDTMshowseconds\DTMlatintimesep\DTMtwodigits{##3}\fi
+ }%
+ }%
+ {% zone style
+ \DTMresetzones
+ \DTMlatinzonemaps
+ \renewcommand*{\DTMdisplayzone}[2]{%
+ \DTMifbool{latin}{mapzone}%
+ {\DTMusezonemapordefault{##1}{##2}}%
+ {%
+ \ifnum##1<0\else+\fi\DTMtwodigits{##1}%
+ \ifDTMshowzoneminutes\DTMlatintimesep\DTMtwodigits{##2}\fi
+ }%
+ }%
+ }%
+ {% full style
+ \renewcommand*{\DTMdisplay}[9]{%
+ \ifDTMshowdate
+ \DTMdisplaydate{##1}{##2}{##3}{##4}%
+ \DTMlatindatetimesep
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \DTMlatintimezonesep
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+ \renewcommand*{\DTMDisplay}{\DTMdisplay}%
+ }
+% \end{macrocode}
+%
+%\begin{macro}{\DTMlatinzonemaps}
+% The time zone mappings are set through this command, which can be
+% redefined if extra mappings are required or mappings need to be
+% removed. This currently has no mappings.
+% \begin{macrocode}
+\newcommand*{\DTMlatinzonemaps}{%
+}
+% \end{macrocode}
+%\end{macro}
+
+% Switch style according to the \opt{useregional} setting.
+% \begin{macrocode}
+\DTMifcaseregional
+{}% do nothing
+{\DTMsetstyle{latin}}
+{\DTMsetstyle{latin-numeric}}
+% \end{macrocode}
+%
+% Redefine \cs{datelatin} (or \cs{date}\meta{dialect}) to prevent
+% \sty{babel} from resetting \cs{today}. (For this to work,
+% \sty{babel} must already have been loaded if it's required.)
+%\changes{1.1}{2018-05-18}{removed spurious space}
+% \begin{macrocode}
+\ifcsundef{date\CurrentTrackedDialect}
+{%
+ \ifundef\datelatin
+ {% do nothing
+ }%
+ {%
+ \def\datelatin{%
+ \DTMifcaseregional
+ {}% do nothing
+ {\DTMsetstyle{latin}}%
+ {\DTMsetstyle{latin-numeric}}%
+ }%
+ }%
+}%
+{%
+ \csdef{date\CurrentTrackedDialect}{%
+ \DTMifcaseregional
+ {}% do nothing
+ {\DTMsetstyle{latin}}%
+ {\DTMsetstyle{latin-numeric}}%
+ }%
+}%
+% \end{macrocode}
+%\iffalse
+% \begin{macrocode}
+%</datetime2-latin.ldf>
+% \end{macrocode}
+%\fi
+%\Finale
+\endinput
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-latin/datetime2-latin.ins b/macros/latex/contrib/datetime2-contrib/datetime2-latin/datetime2-latin.ins
new file mode 100644
index 0000000000..1a64357a07
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-latin/datetime2-latin.ins
@@ -0,0 +1,38 @@
+\input docstrip
+
+\preamble
+
+ datetime2-latin.dtx
+ Copyright 2018 Nicola Talbot
+
+ This work may be distributed and/or modified under the
+ conditions of the LaTeX Project Public License, either version 1.3
+ of this license of (at your option) any later version.
+ The latest version of this license is in
+ http://www.latex-project.org/lppl.txt
+ and version 1.3 or later is part of all distributions of LaTeX
+ version 2005/12/01 or later.
+
+ This work has the LPPL maintenance status `inactive'.
+
+ This work consists of the files datetime2-latin.dtx and
+ datetime2-latin.ins and the derived file
+ datetime2-latin.ldf.
+
+\endpreamble
+
+\askforoverwritefalse
+
+\generate
+{%
+ \file
+ {datetime2-latin.ldf}%
+ {%
+ \usepreamble\defaultpreamble
+ \usepostamble\defaultpostamble
+ \from{datetime2-latin.dtx}{datetime2-latin.ldf,package}%
+ }%
+}
+
+\endbatchfile
+
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-latin/datetime2-latin.pdf b/macros/latex/contrib/datetime2-contrib/datetime2-latin/datetime2-latin.pdf
new file mode 100644
index 0000000000..421573fcac
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-latin/datetime2-latin.pdf
Binary files differ
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-lsorbian/README b/macros/latex/contrib/datetime2-contrib/datetime2-lsorbian/README
new file mode 100644
index 0000000000..00d1f2f334
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-lsorbian/README
@@ -0,0 +1,57 @@
+Lower Sorbian Language Module for datetime2 Package
+
+Author: Nicola L. C. Talbot (inactive)
+
+Licence: LPPL
+
+Required Packages: datetime2, tracklang
+
+This module is unmaintained. If you want to volunteer to take over
+the maintenance contact me at www.dickimaw-books.com/contact.html
+
+Example usage:
+
+\documentclass{article}
+\usepackage[lsorbian]{datetime2}
+\begin{document}
+\today
+\end{document}
+
+\documentclass[lsorbian]{article}
+\usepackage{babel}
+\usepackage[useregional]{datetime2}
+\begin{document}
+\today
+\end{document}
+
+\documentclass{article}
+\usepackage{polyglossia}
+\setmainlanguage{lsorbian}
+\usepackage[lsorbian]{datetime2}
+\begin{document}
+\today
+\end{document}
+
+INSTALLATION
+============
+
+xelatex datetime2-lsorbian.ins
+
+Move all *.ldf files to
+TEXMF/tex/latex/datetime2-contrib/datetime2-lsorbian/
+
+Documentation:
+
+xelatex datetime2-lsorbian.dtx
+makeindex -s gind.ist datetime2-lsorbian.idx
+makeindex -s gglo.ist -o datetime2-lsorbian.gls datetime2-lsorbian.glo
+xelatex datetime2-lsorbian.dtx
+xelatex datetime2-lsorbian.dtx
+
+Move datetime2-lsorbian.pdf and README to
+TEXMF/doc/latex/datetime2-contrib/datetime2-lsorbian/
+
+This material is subject to the LaTeX Project Public License.
+See http://www.ctan.org/license/lppl1.3 for the details of that
+license.
+
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-lsorbian/datetime2-lsorbian.dtx b/macros/latex/contrib/datetime2-contrib/datetime2-lsorbian/datetime2-lsorbian.dtx
new file mode 100644
index 0000000000..aea2aa81da
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-lsorbian/datetime2-lsorbian.dtx
@@ -0,0 +1,793 @@
+%\iffalse
+%<*package>
+%% \CharacterTable
+%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+%% Digits \0\1\2\3\4\5\6\7\8\9
+%% Exclamation \! Double quote \" Hash (number) \#
+%% Dollar \$ Percent \% Ampersand \&
+%% Acute accent \' Left paren \( Right paren \)
+%% Asterisk \* Plus \+ Comma \,
+%% Minus \- Point \. Solidus \/
+%% Colon \: Semicolon \; Less than \<
+%% Equals \= Greater than \> Question mark \?
+%% Commercial at \@ Left bracket \[ Backslash \\
+%% Right bracket \] Circumflex \^ Underscore \_
+%% Grave accent \` Left brace \{ Vertical bar \|
+%% Right brace \} Tilde \~}
+%</package>
+%\fi
+% \iffalse
+% Doc-Source file to use with LaTeX2e
+% Copyright (C) 2018 Nicola Talbot, all rights reserved.
+% (New maintainer add relevant lines here.)
+% \fi
+% \iffalse
+%<*driver>
+\documentclass{ltxdoc}
+
+\usepackage{alltt}
+\usepackage{graphicx}
+\usepackage{fontspec}
+\usepackage[colorlinks,
+ bookmarks,
+ hyperindex=false,
+ pdfauthor={Nicola L.C. Talbot},
+ pdftitle={datetime2.sty Lower Sorbian Module}]{hyperref}
+
+\setmainfont{Liberation Serif}
+\setmonofont{Liberation Mono}
+
+\CheckSum{395}
+
+\renewcommand*{\usage}[1]{\hyperpage{#1}}
+\renewcommand*{\main}[1]{\hyperpage{#1}}
+\IndexPrologue{\section*{\indexname}\markboth{\indexname}{\indexname}}
+\setcounter{IndexColumns}{2}
+
+\newcommand*{\sty}[1]{\textsf{#1}}
+\newcommand*{\opt}[1]{\texttt{#1}\index{#1=\texttt{#1}|main}}
+
+\RecordChanges
+\PageIndex
+\CodelineNumbered
+
+\begin{document}
+\DocInput{datetime2-lsorbian.dtx}
+\end{document}
+%</driver>
+%\fi
+%
+%\MakeShortVerb{"}
+%
+%\title{Lower Sorbian Module for datetime2 Package}
+%\author{Nicola L. C. Talbot (inactive)}
+%\date{2018-05-18 (v1.1)}
+%\maketitle
+%
+%This module is currently unmaintained and may be subject to change.
+%If you want to volunteer to take over maintanance, contact me at
+%\url{http://www.dickimaw-books.com/contact.html}
+%
+%\begin{abstract}
+%This is the Lower Sorbian language module for the \sty{datetime2}
+%package. If you want to use the settings in this module you must
+%install it in addition to installing \sty{datetime2}. If you use
+%\sty{babel} or \sty{polyglossia}, you will need this module to
+%prevent them from redefining \cs{today}. The \sty{datetime2}
+% \opt{useregional} setting must be set to "text" or "numeric"
+% for the language styles to be set.
+% Alternatively, you can set the style in the document using
+% \cs{DTMsetstyle}, but this may be changed by \cs{date}\meta{language}
+% depending on the value of the \opt{useregional} setting.
+%\end{abstract}
+%
+%I've copied the date style from \texttt{babel-lsorbian}'s \cs{today}.
+%
+%I don't know if these settings are correct as I can't speak Lower Sorbian.
+%In particular, I don't know if the "lsorbian" time style is
+%correct. Currently this just uses the "default" time style. Please
+%be aware that this may change. Whoever takes over maintanance
+%of this module may can change it as appropriate.
+%
+%The new maintainer should add the line:
+%\begin{verbatim}
+% The Current Maintainer of this work is Name.
+%\end{verbatim}
+%to the preamble part in \texttt{datetime2-lsorbian.ins} where Name
+%is the name of the maintainer(s) and replace
+%the `inactive' status to `maintained'.
+%
+%Currently there is only a regionless style.
+%
+%\StopEventually{%
+%\clearpage
+%\phantomsection
+%\addcontentsline{toc}{section}{Change History}%
+%\PrintChanges
+%\addcontentsline{toc}{section}{\indexname}%
+%\PrintIndex}
+%\section{The Code}
+%\iffalse
+% \begin{macrocode}
+%<*datetime2-lsorbian-utf8.ldf>
+% \end{macrocode}
+%\fi
+%\subsection{UTF-8}
+%This file contains the settings that use UTF-8 characters. This
+%file is loaded if XeLaTeX or LuaLaTeX are used. Please make sure
+%your text editor is set to UTF-8 if you want to view this code.
+%\changes{1.0}{2015-03-30}{Initial release}
+% Identify module
+% \begin{macrocode}
+\ProvidesDateTimeModule{lsorbian-utf8}[2018/05/18 v1.1]
+% \end{macrocode}
+%\begin{macro}{\DTMlsorbianordinal}
+% \begin{macrocode}
+\newcommand*{\DTMlsorbianordinal}[1]{%
+ \number#1.%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%
+%\begin{macro}{\DTMlsorbiannewmonthname}
+% Lower Sorbian month names.
+% \begin{macrocode}
+\newcommand*{\DTMlsorbiannewmonthname}[1]{%
+ \ifcase#1
+ \or
+ januara%
+ \or
+ februara%
+ \or
+ měrca%
+ \or
+ apryla%
+ \or
+ maja%
+ \or
+ junija%
+ \or
+ julija%
+ \or
+ awgusta%
+ \or
+ septembra%
+ \or
+ oktobra%
+ \or
+ nowembra%
+ \or
+ decembra%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMlsorbiannewMonthname}
+% As above but capitalize.
+% \begin{macrocode}
+\newcommand*{\DTMlsorbiannewMonthname}[1]{%
+ \ifcase#1
+ \or
+ Januara%
+ \or
+ Februara%
+ \or
+ Měrca%
+ \or
+ Apryla%
+ \or
+ Maja%
+ \or
+ Junija%
+ \or
+ Julija%
+ \or
+ Awgusta%
+ \or
+ Septembra%
+ \or
+ Oktobra%
+ \or
+ Nowembra%
+ \or
+ Decembra%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMlsorbianoldmonthname}
+% Lower Sorbian (old) month names.
+% \begin{macrocode}
+\newcommand*{\DTMlsorbianoldmonthname}[1]{%
+ \ifcase#1
+ \or
+ wjelikego rožka%
+ \or
+ małego rožka%
+ \or
+ nalětnika%
+ \or
+ jatŔownika%
+ \or
+ rožownika%
+ \or
+ smažnika%
+ \or
+ pražnika%
+ \or
+ žnjeńca%
+ \or
+ požnjeńca%
+ \or
+ winowca%
+ \or
+ nazymnika%
+ \or
+ godownika%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMlsorbianoldMonthname}
+% As above but capitalize.
+% \begin{macrocode}
+\newcommand*{\DTMlsorbianoldMonthname}[1]{%
+ \ifcase#1
+ \or
+ Wjelikego rožka%
+ \or
+ Małego rožka%
+ \or
+ Nalětnika%
+ \or
+ JatŔownika%
+ \or
+ Rožownika%
+ \or
+ Smažnika%
+ \or
+ Pražnika%
+ \or
+ Žnjeńca%
+ \or
+ Požnjeńca%
+ \or
+ Winowca%
+ \or
+ Nazymnika%
+ \or
+ Godownika%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%If abbreviated dates are supported, short month names should be
+%likewise provided.
+%
+%\iffalse
+% \begin{macrocode}
+%</datetime2-lsorbian-utf8.ldf>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*datetime2-lsorbian-ascii.ldf>
+% \end{macrocode}
+%\fi
+%\subsection{ASCII}
+%This file contains the settings that use \LaTeX\ commands for
+%non-ASCII characters. This should be input if neither XeLaTeX nor
+%LuaLaTeX are used. Even if the user has loaded \sty{inputenc} with
+%"utf8", this file should still be used not the
+%\texttt{datetime2-lsorbian-utf8.ldf} file as the non-ASCII
+%characters are made active in that situation and would need
+%protecting against expansion.
+%\changes{1.0}{2015-03-30}{Initial release}
+% Identify module
+% \begin{macrocode}
+\ProvidesDateTimeModule{lsorbian-ascii}[2018/05/18 v1.1]
+% \end{macrocode}
+%
+%If abbreviated dates are supported, short month names should be
+%likewise provided.
+%\begin{macro}{\DTMlsorbianordinal}
+% \begin{macrocode}
+\newcommand*{\DTMlsorbianordinal}[1]{%
+ \number#1.%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMlsorbiannewmonthname}
+% Lower Sorbian month names.
+% \begin{macrocode}
+\newcommand*{\DTMlsorbiannewmonthname}[1]{%
+ \ifcase#1
+ \or
+ januara%
+ \or
+ februara%
+ \or
+ m\protect\v erca%
+ \or
+ apryla%
+ \or
+ maja%
+ \or
+ junija%
+ \or
+ julija%
+ \or
+ awgusta%
+ \or
+ septembra%
+ \or
+ oktobra%
+ \or
+ nowembra%
+ \or
+ decembra%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMlsorbiannewMonthname}
+% As above but capitalize.
+% \begin{macrocode}
+\newcommand*{\DTMlsorbiannewMonthname}[1]{%
+ \ifcase#1
+ \or
+ Januara%
+ \or
+ Februara%
+ \or
+ M\protect\v erca%
+ \or
+ Apryla%
+ \or
+ Maja%
+ \or
+ Junija%
+ \or
+ Julija%
+ \or
+ Awgusta%
+ \or
+ Septembra%
+ \or
+ Oktobra%
+ \or
+ Nowembra%
+ \or
+ Decembra%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMlsorbianoldmonthname}
+% Lower Sorbian (old) month names.
+% \begin{macrocode}
+\newcommand*{\DTMlsorbianoldmonthname}[1]{%
+ \ifcase#1
+ \or
+ wjelikego ro\protect\v zka%
+ \or
+ ma\protect\l ego ro\protect\v zka%
+ \or
+ nal\protect\v etnika%
+ \or
+ jat\protect\v sownika%
+ \or
+ ro\protect\v zownika%
+ \or
+ sma\protect\v znika%
+ \or
+ pra\protect\v znika%
+ \or
+ \protect\v znje\protect\'nca%
+ \or
+ po\protect\v znje\protec\'nca%
+ \or
+ winowca%
+ \or
+ nazymnika%
+ \or
+ godownika%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMlsorbianoldMonthname}
+% As above but capitalize.
+% \begin{macrocode}
+\newcommand*{\DTMlsorbianoldMonthname}[1]{%
+ \ifcase#1
+ \or
+ Wjelikego ro\protect\v zka%
+ \or
+ Ma\protect\l ego ro\protect\v zka%
+ \or
+ Nal\protect\v etnika%
+ \or
+ Jat\protect\v sownika%
+ \or
+ Ro\protect\v zownika%
+ \or
+ Sma\protect\v znika%
+ \or
+ Pra\protect\v znika%
+ \or
+ \protect\v Znje\protect\'nca%
+ \or
+ Po\protect\v znje\protec\'nca%
+ \or
+ Winowca%
+ \or
+ Nazymnika%
+ \or
+ Godownika%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\iffalse
+% \begin{macrocode}
+%</datetime2-lsorbian-ascii.ldf>
+% \end{macrocode}
+%\fi
+%
+%\subsection{Main Lower Sorbian Module (\texttt{datetime2-lsorbian.ldf})}
+%\changes{1.0}{2015-03-30}{Initial release}
+%
+%\iffalse
+% \begin{macrocode}
+%<*datetime2-lsorbian.ldf>
+% \end{macrocode}
+%\fi
+%
+% Identify Module
+% \begin{macrocode}
+\ProvidesDateTimeModule{lsorbian}[2018/05/18 v1.1]
+% \end{macrocode}
+% Need to find out if XeTeX or LuaTeX are being used.
+% \begin{macrocode}
+\RequirePackage{ifxetex,ifluatex}
+% \end{macrocode}
+% XeTeX and LuaTeX natively support UTF-8, so load
+% \texttt{lsorbian-utf8} if either of those engines are used
+% otherwise load \texttt{lsorbian-ascii}.
+% \begin{macrocode}
+\ifxetex
+ \RequireDateTimeModule{lsorbian-utf8}
+\else
+ \ifluatex
+ \RequireDateTimeModule{lsorbian-utf8}
+ \else
+ \RequireDateTimeModule{lsorbian-ascii}
+ \fi
+\fi
+% \end{macrocode}
+%
+% Define the \texttt{lsorbian} style.
+% The time style is the same as the "default" style
+% provided by \sty{datetime2}. This may need correcting. For
+% example, if a 12 hour style similar to the "englishampm" (from the
+% "english-base" module) is required.
+%
+% Allow the user a way of configuring the "lsorbian" and
+% "lsorbian-numeric" styles. This doesn't use the package wide
+% separators such as
+% \cs{dtm@datetimesep} in case other date formats are also required.
+%\begin{macro}{\DTMlsorbiandaymonthsep}
+% The separator between the day and month for the text format.
+% \begin{macrocode}
+\newcommand*{\DTMlsorbiandaymonthsep}{%
+ \DTMtexorpdfstring{\protect~}{\space}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMlsorbianmonthyearsep}
+% The separator between the month and year for the text format.
+% \begin{macrocode}
+\newcommand*{\DTMlsorbianmonthyearsep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMlsorbiandatetimesep}
+% The separator between the date and time blocks in the full format
+% (either text or numeric).
+% \begin{macrocode}
+\newcommand*{\DTMlsorbiandatetimesep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMlsorbiantimezonesep}
+% The separator between the time and zone blocks in the full format
+% (either text or numeric).
+% \begin{macrocode}
+\newcommand*{\DTMlsorbiantimezonesep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMlsorbiandatesep}
+% The separator for the numeric date format.
+% \begin{macrocode}
+\newcommand*{\DTMlsorbiandatesep}{/}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMlsorbiantimesep}
+% The separator for the numeric time format.
+% \begin{macrocode}
+\newcommand*{\DTMlsorbiantimesep}{:}
+% \end{macrocode}
+%\end{macro}
+%
+%Provide keys that can be used in \cs{DTMlangsetup} to set these
+%separators.
+% \begin{macrocode}
+\DTMdefkey{lsorbian}{daymonthsep}{\renewcommand*{\DTMlsorbiandaymonthsep}{#1}}
+\DTMdefkey{lsorbian}{monthyearsep}{\renewcommand*{\DTMlsorbianmonthyearsep}{#1}}
+\DTMdefkey{lsorbian}{datetimesep}{\renewcommand*{\DTMlsorbiandatetimesep}{#1}}
+\DTMdefkey{lsorbian}{timezonesep}{\renewcommand*{\DTMlsorbiantimezonesep}{#1}}
+\DTMdefkey{lsorbian}{datesep}{\renewcommand*{\DTMlsorbiandatesep}{#1}}
+\DTMdefkey{lsorbian}{timesep}{\renewcommand*{\DTMlsorbiantimesep}{#1}}
+% \end{macrocode}
+%
+%\begin{macro}{\DTMlsorbianmonthname}
+% Provide a way to switch between old and new month names
+% \begin{macrocode}
+\newcommand*\DTMlsorbianmonthname{\DTMlsorbiannewmonthname}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\DTMlsorbianMonthname}
+% Provide a way to switch between old and new month names
+% \begin{macrocode}
+\newcommand*\DTMlsorbianMonthname{\DTMlsorbiannewMonthname}
+% \end{macrocode}
+%\end{macro}
+% Define a key to easily switch:
+% \begin{macrocode}
+\DTMdefchoicekey{lsorbian}{style}[\val\nr]{old,new}{%
+ \ifcase\nr\relax
+ \renewcommand*\DTMlsorbianmonthname{\DTMlsorbianoldmonthname}%
+ \renewcommand*\DTMlsorbianMonthname{\DTMlsorbianoldMonthname}%
+ \or
+ \renewcommand*\DTMlsorbianmonthname{\DTMlsorbiannewmonthname}%
+ \renewcommand*\DTMlsorbianMonthname{\DTMlsorbiannewMonthname}%
+ \fi
+}
+% \end{macrocode}
+%
+% TODO: provide a boolean key to switch between full and abbreviated
+% formats if appropriate. (I don't know how the date should be
+% abbreviated.)
+%
+% Define a boolean key that determines if the time zone mappings
+% should be used.
+% \begin{macrocode}
+\DTMdefboolkey{lsorbian}{mapzone}[true]{}
+% \end{macrocode}
+% The default is to use mappings.
+% \begin{macrocode}
+\DTMsetbool{lsorbian}{mapzone}{true}
+% \end{macrocode}
+%
+% Define a boolean key that determines if the day of month should be
+% displayed.
+% \begin{macrocode}
+\DTMdefboolkey{lsorbian}{showdayofmonth}[true]{}
+% \end{macrocode}
+% The default is to show the day of month.
+% \begin{macrocode}
+\DTMsetbool{lsorbian}{showdayofmonth}{true}
+% \end{macrocode}
+%
+% Define a boolean key that determines if the year should be
+% displayed.
+% \begin{macrocode}
+\DTMdefboolkey{lsorbian}{showyear}[true]{}
+% \end{macrocode}
+% The default is to show the year.
+% \begin{macrocode}
+\DTMsetbool{lsorbian}{showyear}{true}
+% \end{macrocode}
+%
+% Define the "lsorbian" style. (TODO: implement day of week?)
+% \begin{macrocode}
+\DTMnewstyle
+ {lsorbian}% label
+ {% date style
+ \renewcommand*\DTMdisplaydate[4]{%
+ \DTMifbool{lsorbian}{showdayofmonth}
+ {\DTMlsorbianordinal{##3}\DTMlsorbiandaymonthsep}%
+ {}%
+ \DTMlsorbianmonthname{##2}%
+ \DTMifbool{lsorbian}{showyear}%
+ {%
+ \DTMlsorbianmonthyearsep
+ \number##1
+ }%
+ {}%
+ }%
+ \renewcommand*\DTMDisplaydate[4]{%
+ \DTMifbool{lsorbian}{showdayofmonth}
+ {%
+ \DTMlsorbianordinal{##3}\DTMlsorbiandaymonthsep
+ \DTMlsorbianmonthname{##2}%
+ }%
+ {%
+ \DTMlsorbianMonthname{##2}%
+ }%
+ \DTMifbool{lsorbian}{showyear}%
+ {%
+ \DTMlsorbianmonthyearsep
+ \number##1
+ }%
+ {}%
+ }%
+ }%
+ {% time style (use default)
+ \DTMsettimestyle{default}%
+ }%
+ {% zone style
+ \DTMresetzones
+ \DTMlsorbianzonemaps
+ \renewcommand*{\DTMdisplayzone}[2]{%
+ \DTMifbool{lsorbian}{mapzone}%
+ {\DTMusezonemapordefault{##1}{##2}}%
+ {%
+ \ifnum##1<0\else+\fi\DTMtwodigits{##1}%
+ \ifDTMshowzoneminutes\DTMlsorbiantimesep\DTMtwodigits{##2}\fi
+ }%
+ }%
+ }%
+ {% full style
+ \renewcommand*{\DTMdisplay}[9]{%
+ \ifDTMshowdate
+ \DTMdisplaydate{##1}{##2}{##3}{##4}%
+ \DTMlsorbiandatetimesep
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \DTMlsorbiantimezonesep
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+ \renewcommand*{\DTMDisplay}[9]{%
+ \ifDTMshowdate
+ \DTMDisplaydate{##1}{##2}{##3}{##4}%
+ \DTMlsorbiandatetimesep
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \DTMlsorbiantimezonesep
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+ }%
+% \end{macrocode}
+%
+% Define numeric style.
+% \begin{macrocode}
+\DTMnewstyle
+ {lsorbian-numeric}% label
+ {% date style
+ \renewcommand*\DTMdisplaydate[4]{%
+ \DTMifbool{lsorbian}{showdayofmonth}%
+ {%
+ \number##3 % space intended
+ \DTMlsorbiandatesep
+ }%
+ {}%
+ \number##2 % space intended
+ \DTMifbool{lsorbian}{showyear}%
+ {%
+ \DTMlsorbiandatesep
+ \number##1 % space intended
+ }%
+ {}%
+ }%
+ \renewcommand*{\DTMDisplaydate}{\DTMdisplaydate}%
+ }%
+ {% time style
+ \renewcommand*\DTMdisplaytime[3]{%
+ \number##1
+ \DTMlsorbiantimesep\DTMtwodigits{##2}%
+ \ifDTMshowseconds\DTMlsorbiantimesep\DTMtwodigits{##3}\fi
+ }%
+ }%
+ {% zone style
+ \DTMresetzones
+ \DTMlsorbianzonemaps
+ \renewcommand*{\DTMdisplayzone}[2]{%
+ \DTMifbool{lsorbian}{mapzone}%
+ {\DTMusezonemapordefault{##1}{##2}}%
+ {%
+ \ifnum##1<0\else+\fi\DTMtwodigits{##1}%
+ \ifDTMshowzoneminutes\DTMlsorbiantimesep\DTMtwodigits{##2}\fi
+ }%
+ }%
+ }%
+ {% full style
+ \renewcommand*{\DTMdisplay}[9]{%
+ \ifDTMshowdate
+ \DTMdisplaydate{##1}{##2}{##3}{##4}%
+ \DTMlsorbiandatetimesep
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \DTMlsorbiantimezonesep
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+ \renewcommand*{\DTMDisplay}{\DTMdisplay}%
+ }
+% \end{macrocode}
+%
+%\begin{macro}{\DTMlsorbianzonemaps}
+% The time zone mappings are set through this command, which can be
+% redefined if extra mappings are required or mappings need to be
+% removed.
+% \begin{macrocode}
+\newcommand*{\DTMlsorbianzonemaps}{%
+ \DTMdefzonemap{01}{00}{CET}%
+ \DTMdefzonemap{02}{00}{CEST}%
+}
+% \end{macrocode}
+%\end{macro}
+
+% Switch style according to the \opt{useregional} setting.
+% \begin{macrocode}
+\DTMifcaseregional
+{}% do nothing
+{\DTMsetstyle{lsorbian}}
+{\DTMsetstyle{lsorbian-numeric}}
+% \end{macrocode}
+%
+% Redefine \cs{datelsorbian} (or \cs{date}\meta{dialect}) to prevent
+% \sty{babel} from resetting \cs{today}. (For this to work,
+% \sty{babel} must already have been loaded if it's required.)
+%\changes{1.1}{2018-05-18}{removed spurious space}
+% \begin{macrocode}
+\ifcsundef{date\CurrentTrackedDialect}
+{%
+ \ifundef\datelsorbian
+ {% do nothing
+ }%
+ {%
+ \def\datelsorbian{%
+ \DTMifcaseregional
+ {}% do nothing
+ {\DTMsetstyle{lsorbian}}%
+ {\DTMsetstyle{lsorbian-numeric}}%
+ }%
+ }%
+}%
+{%
+ \csdef{date\CurrentTrackedDialect}{%
+ \DTMifcaseregional
+ {}% do nothing
+ {\DTMsetstyle{lsorbian}}%
+ {\DTMsetstyle{lsorbian-numeric}}%
+ }%
+}%
+% \end{macrocode}
+%\iffalse
+% \begin{macrocode}
+%</datetime2-lsorbian.ldf>
+% \end{macrocode}
+%\fi
+%\Finale
+\endinput
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-lsorbian/datetime2-lsorbian.ins b/macros/latex/contrib/datetime2-contrib/datetime2-lsorbian/datetime2-lsorbian.ins
new file mode 100644
index 0000000000..ca3833e0af
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-lsorbian/datetime2-lsorbian.ins
@@ -0,0 +1,61 @@
+\input docstrip
+
+\preamble
+
+ datetime2-lsorbian.dtx
+ Copyright 2018 Nicola Talbot
+
+ This work may be distributed and/or modified under the
+ conditions of the LaTeX Project Public License, either version 1.3
+ of this license of (at your option) any later version.
+ The latest version of this license is in
+ http://www.latex-project.org/lppl.txt
+ and version 1.3 or later is part of all distributions of LaTeX
+ version 2005/12/01 or later.
+
+ This work has the LPPL maintenance status `inactive'.
+
+ This work consists of the files datetime2-lsorbian.dtx and
+ datetime2-lsorbian.ins and the derived files
+ datetime2-lsorbian-utf8.ldf, datetime2-lsorbian-ascii.ldf and
+ datetime2-lsorbian.ldf.
+
+\endpreamble
+
+\askforoverwritefalse
+
+\generate
+{%
+ \file
+ {datetime2-lsorbian-utf8.ldf}%
+ {%
+ \usepreamble\defaultpreamble
+ \usepostamble\defaultpostamble
+ \from{datetime2-lsorbian.dtx}{datetime2-lsorbian-utf8.ldf,package}%
+ }%
+}
+
+\generate
+{%
+ \file
+ {datetime2-lsorbian-ascii.ldf}%
+ {%
+ \usepreamble\defaultpreamble
+ \usepostamble\defaultpostamble
+ \from{datetime2-lsorbian.dtx}{datetime2-lsorbian-ascii.ldf,package}%
+ }%
+}
+
+\generate
+{%
+ \file
+ {datetime2-lsorbian.ldf}%
+ {%
+ \usepreamble\defaultpreamble
+ \usepostamble\defaultpostamble
+ \from{datetime2-lsorbian.dtx}{datetime2-lsorbian.ldf,package}%
+ }%
+}
+
+\endbatchfile
+
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-lsorbian/datetime2-lsorbian.pdf b/macros/latex/contrib/datetime2-contrib/datetime2-lsorbian/datetime2-lsorbian.pdf
new file mode 100644
index 0000000000..43939e245c
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-lsorbian/datetime2-lsorbian.pdf
Binary files differ
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-magyar/README b/macros/latex/contrib/datetime2-contrib/datetime2-magyar/README
new file mode 100644
index 0000000000..fda4ab5cb4
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-magyar/README
@@ -0,0 +1,57 @@
+Hungarian Language Module for datetime2 Package
+
+Author: Nicola L. C. Talbot (inactive)
+
+Licence: LPPL
+
+Required Packages: datetime2, tracklang
+
+This module is unmaintained. If you want to volunteer to take over
+the maintenance contact me at www.dickimaw-books.com/contact.html
+
+Example usage:
+
+\documentclass{article}
+\usepackage[magyar]{datetime2}
+\begin{document}
+\today
+\end{document}
+
+\documentclass[magyar]{article}
+\usepackage{babel}
+\usepackage[useregional]{datetime2}
+\begin{document}
+\today
+\end{document}
+
+\documentclass{article}
+\usepackage{polyglossia}
+\setmainlanguage{magyar}
+\usepackage[magyar]{datetime2}
+\begin{document}
+\today
+\end{document}
+
+INSTALLATION
+============
+
+xelatex datetime2-magyar.ins
+
+Move all *.ldf files to
+TEXMF/tex/latex/datetime2-contrib/datetime2-magyar/
+
+Documentation:
+
+xelatex datetime2-magyar.dtx
+makeindex -s gind.ist datetime2-magyar.idx
+makeindex -s gglo.ist -o datetime2-magyar.gls datetime2-magyar.glo
+xelatex datetime2-magyar.dtx
+xelatex datetime2-magyar.dtx
+
+Move datetime2-magyar.pdf and README to
+TEXMF/doc/latex/datetime2-contrib/datetime2-magyar/
+
+This material is subject to the LaTeX Project Public License.
+See http://www.ctan.org/license/lppl1.3 for the details of that
+license.
+
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-magyar/datetime2-magyar.dtx b/macros/latex/contrib/datetime2-contrib/datetime2-magyar/datetime2-magyar.dtx
new file mode 100644
index 0000000000..1de0857e78
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-magyar/datetime2-magyar.dtx
@@ -0,0 +1,647 @@
+%\iffalse
+%<*package>
+%% \CharacterTable
+%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+%% Digits \0\1\2\3\4\5\6\7\8\9
+%% Exclamation \! Double quote \" Hash (number) \#
+%% Dollar \$ Percent \% Ampersand \&
+%% Acute accent \' Left paren \( Right paren \)
+%% Asterisk \* Plus \+ Comma \,
+%% Minus \- Point \. Solidus \/
+%% Colon \: Semicolon \; Less than \<
+%% Equals \= Greater than \> Question mark \?
+%% Commercial at \@ Left bracket \[ Backslash \\
+%% Right bracket \] Circumflex \^ Underscore \_
+%% Grave accent \` Left brace \{ Vertical bar \|
+%% Right brace \} Tilde \~}
+%</package>
+%\fi
+% \iffalse
+% Doc-Source file to use with LaTeX2e
+% Copyright (C) 2018 Nicola Talbot, all rights reserved.
+% (New maintainer add relevant lines here.)
+% \fi
+% \iffalse
+%<*driver>
+\documentclass{ltxdoc}
+
+\usepackage{alltt}
+\usepackage{graphicx}
+\usepackage{fontspec}
+\usepackage[colorlinks,
+ bookmarks,
+ hyperindex=false,
+ pdfauthor={Nicola L.C. Talbot},
+ pdftitle={datetime2.sty Hungarian Module}]{hyperref}
+
+\setmainfont{Liberation Serif}
+\setmonofont{Liberation Mono}
+
+\CheckSum{289}
+
+\renewcommand*{\usage}[1]{\hyperpage{#1}}
+\renewcommand*{\main}[1]{\hyperpage{#1}}
+\IndexPrologue{\section*{\indexname}\markboth{\indexname}{\indexname}}
+\setcounter{IndexColumns}{2}
+
+\newcommand*{\sty}[1]{\textsf{#1}}
+\newcommand*{\opt}[1]{\texttt{#1}\index{#1=\texttt{#1}|main}}
+
+\RecordChanges
+\PageIndex
+\CodelineNumbered
+
+\begin{document}
+\DocInput{datetime2-magyar.dtx}
+\end{document}
+%</driver>
+%\fi
+%
+%\MakeShortVerb{"}
+%
+%\title{Hungarian Module for datetime2 Package}
+%\author{Nicola L. C. Talbot (inactive)}
+%\date{2018-07-24 (v1.1)}
+%\maketitle
+%
+%This module is currently unmaintained and may be subject to change.
+%If you want to volunteer to take over maintenance, contact me at
+%\url{http://www.dickimaw-books.com/contact.html}
+%
+%\begin{abstract}
+%This is the Hungarian language module for the \sty{datetime2}
+%package. If you want to use the settings in this module you must
+%install it in addition to installing \sty{datetime2}. If you use
+%\sty{babel} or \sty{polyglossia}, you will need this module to
+%prevent them from redefining \cs{today}. The \sty{datetime2}
+% \opt{useregional} setting must be set to "text" or "numeric"
+% for the language styles to be set.
+% Alternatively, you can set the style in the document using
+% \cs{DTMsetstyle}, but this may be changed by \cs{date}\meta{language}
+% depending on the value of the \opt{useregional} setting.
+%\end{abstract}
+%
+%I've copied the date style from \texttt{babel-magyar}'s \cs{today}.
+%
+%I don't know if these settings are correct as I can't speak Hungarian.
+%In particular, I don't know if the "magyar" time style is
+%correct. Currently this just uses the "default" time style. Please
+%be aware that this may change. Whoever takes over maintanance
+%of this module may can change it as appropriate.
+%
+%The new maintainer should add the line:
+%\begin{verbatim}
+% The Current Maintainer of this work is Name.
+%\end{verbatim}
+%to the preamble part in \texttt{datetime2-magyar.ins} where Name
+%is the name of the maintainer(s) and replace
+%the `inactive' status to `maintained'.
+%
+%Currently there is only a regionless style.
+%
+%\StopEventually{%
+%\clearpage
+%\phantomsection
+%\addcontentsline{toc}{section}{Change History}%
+%\PrintChanges
+%\addcontentsline{toc}{section}{\indexname}%
+%\PrintIndex}
+%\section{The Code}
+%\iffalse
+% \begin{macrocode}
+%<*datetime2-magyar-utf8.ldf>
+% \end{macrocode}
+%\fi
+%\subsection{UTF-8}
+%This file contains the settings that use UTF-8 characters. This
+%file is loaded if XeLaTeX or LuaLaTeX are used. Please make sure
+%your text editor is set to UTF-8 if you want to view this code.
+%\changes{1.0}{2015-03-31}{Initial release}
+% Identify module
+% \begin{macrocode}
+\ProvidesDateTimeModule{magyar-utf8}[2018/07/24 v1.1]
+% \end{macrocode}
+%\begin{macro}{\DTMmagyarordinal}
+% \begin{macrocode}
+\newcommand*{\DTMmagyarordinal}[1]{%
+ \number#1.%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMmagyaryear}
+% \begin{macrocode}
+\newcommand*{\DTMmagyaryear}[1]{%
+ \number#1.%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%
+%\begin{macro}{\DTMmagyarmonthname}
+% Hungarian month names.
+% \begin{macrocode}
+\newcommand*{\DTMmagyarmonthname}[1]{%
+ \ifcase#1
+ \or
+ januƔr%
+ \or
+ februƔr%
+ \or
+ mƔrcius%
+ \or
+ Ɣprilis%
+ \or
+ mƔjus%
+ \or
+ jĆŗnius%
+ \or
+ jĆŗlius%
+ \or
+ augusztus%
+ \or
+ szeptember%
+ \or
+ oktĆ³ber%
+ \or
+ november%
+ \or
+ december%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMmagyarMonthname}
+% As above but capitalize.
+% \begin{macrocode}
+\newcommand*{\DTMmagyarMonthname}[1]{%
+ \ifcase#1
+ \or
+ JanuƔr%
+ \or
+ FebruƔr%
+ \or
+ MƔrcius%
+ \or
+ Ɓprilis%
+ \or
+ MƔjus%
+ \or
+ JĆŗnius%
+ \or
+ JĆŗlius%
+ \or
+ Augusztus%
+ \or
+ Szeptember%
+ \or
+ OktĆ³ber%
+ \or
+ November%
+ \or
+ December%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%If abbreviated dates are supported, short month names should be
+%likewise provided.
+%
+%\iffalse
+% \begin{macrocode}
+%</datetime2-magyar-utf8.ldf>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*datetime2-magyar-ascii.ldf>
+% \end{macrocode}
+%\fi
+%\subsection{ASCII}
+%This file contains the settings that use \LaTeX\ commands for
+%non-ASCII characters. This should be input if neither XeLaTeX nor
+%LuaLaTeX are used. Even if the user has loaded \sty{inputenc} with
+%"utf8", this file should still be used not the
+%\texttt{datetime2-magyar-utf8.ldf} file as the non-ASCII
+%characters are made active in that situation and would need
+%protecting against expansion.
+%\changes{1.0}{2015-03-31}{Initial release}
+% Identify module
+% \begin{macrocode}
+\ProvidesDateTimeModule{magyar-ascii}[2018/07/24 v1.1]
+% \end{macrocode}
+%
+%If abbreviated dates are supported, short month names should be
+%likewise provided.
+%\begin{macro}{\DTMmagyarordinal}
+% \begin{macrocode}
+\newcommand*{\DTMmagyarordinal}[1]{%
+ \number#1.%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMmagyaryear}
+% \begin{macrocode}
+\newcommand*{\DTMmagyaryear}[1]{%
+ \number#1.%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMmagyarmonthname}
+% Hungarian month names.
+% \begin{macrocode}
+\newcommand*{\DTMmagyarmonthname}[1]{%
+ \ifcase#1
+ \or
+ janu\protect\'ar%
+ \or
+ febru\protect\'ar%
+ \or
+ m\protect\'arcius%
+ \or
+ \protect\'aprilis%
+ \or
+ m\protect\'ajus%
+ \or
+ j\protect\'unius%
+ \or
+ j\protect\'ulius%
+ \or
+ augusztus%
+ \or
+ szeptember%
+ \or
+ okt\protect\'ober%
+ \or
+ november%
+ \or
+ december%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMmagyarMonthname}
+% As above but capitalize.
+% \begin{macrocode}
+\newcommand*{\DTMmagyarMonthname}[1]{%
+ \ifcase#1
+ \or
+ Janu\protect\'ar%
+ \or
+ Febru\protect\'ar%
+ \or
+ M\protect\'arcius%
+ \or
+ \protect\'Aprilis%
+ \or
+ M\protect\'ajus%
+ \or
+ J\protect\'unius%
+ \or
+ J\protect\'ulius%
+ \or
+ Augusztus%
+ \or
+ Szeptember%
+ \or
+ Okt\protect\'ober%
+ \or
+ November%
+ \or
+ December%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%
+%\iffalse
+% \begin{macrocode}
+%</datetime2-magyar-ascii.ldf>
+% \end{macrocode}
+%\fi
+%
+%\subsection{Main Hungarian Module (\texttt{datetime2-magyar.ldf})}
+%\changes{1.0}{2015-03-31}{Initial release}
+%
+%\iffalse
+% \begin{macrocode}
+%<*datetime2-magyar.ldf>
+% \end{macrocode}
+%\fi
+%
+% Identify Module
+% \begin{macrocode}
+\ProvidesDateTimeModule{magyar}[2018/07/24 v1.1]
+% \end{macrocode}
+% Need to find out if XeTeX or LuaTeX are being used.
+% \begin{macrocode}
+\RequirePackage{ifxetex,ifluatex}
+% \end{macrocode}
+% XeTeX and LuaTeX natively support UTF-8, so load
+% \texttt{magyar-utf8} if either of those engines are used
+% otherwise load \texttt{magyar-ascii}.
+% \begin{macrocode}
+\ifxetex
+ \RequireDateTimeModule{magyar-utf8}
+\else
+ \ifluatex
+ \RequireDateTimeModule{magyar-utf8}
+ \else
+ \RequireDateTimeModule{magyar-ascii}
+ \fi
+\fi
+% \end{macrocode}
+%
+% Define the \texttt{magyar} style.
+% The time style is the same as the "default" style
+% provided by \sty{datetime2}. This may need correcting. For
+% example, if a 12 hour style similar to the "englishampm" (from the
+% "english-base" module) is required.
+%
+% Allow the user a way of configuring the "magyar" and
+% "magyar-numeric" styles. This doesn't use the package wide
+% separators such as
+% \cs{dtm@datetimesep} in case other date formats are also required.
+%\begin{macro}{\DTMmagyardaymonthsep}
+% The separator between the day and month for the text format.
+% \begin{macrocode}
+\newcommand*{\DTMmagyardaymonthsep}{%
+ \DTMtexorpdfstring{\protect~}{\space}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMmagyarmonthyearsep}
+% The separator between the month and year for the text format.
+% \begin{macrocode}
+\newcommand*{\DTMmagyarmonthyearsep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMmagyardatetimesep}
+% The separator between the date and time blocks in the full format
+% (either text or numeric).
+% \begin{macrocode}
+\newcommand*{\DTMmagyardatetimesep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMmagyartimezonesep}
+% The separator between the time and zone blocks in the full format
+% (either text or numeric).
+% \begin{macrocode}
+\newcommand*{\DTMmagyartimezonesep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMmagyardatesep}
+% The separator for the numeric date format.
+% \begin{macrocode}
+\newcommand*{\DTMmagyardatesep}{/}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMmagyartimesep}
+% The separator for the numeric time format.
+% \begin{macrocode}
+\newcommand*{\DTMmagyartimesep}{:}
+% \end{macrocode}
+%\end{macro}
+%
+%Provide keys that can be used in \cs{DTMlangsetup} to set these
+%separators.
+% \begin{macrocode}
+\DTMdefkey{magyar}{daymonthsep}{\renewcommand*{\DTMmagyardaymonthsep}{#1}}
+\DTMdefkey{magyar}{monthyearsep}{\renewcommand*{\DTMmagyarmonthyearsep}{#1}}
+\DTMdefkey{magyar}{datetimesep}{\renewcommand*{\DTMmagyardatetimesep}{#1}}
+\DTMdefkey{magyar}{timezonesep}{\renewcommand*{\DTMmagyartimezonesep}{#1}}
+\DTMdefkey{magyar}{datesep}{\renewcommand*{\DTMmagyardatesep}{#1}}
+\DTMdefkey{magyar}{timesep}{\renewcommand*{\DTMmagyartimesep}{#1}}
+% \end{macrocode}
+%
+% TODO: provide a boolean key to switch between full and abbreviated
+% formats if appropriate. (I don't know how the date should be
+% abbreviated.)
+%
+% Define a boolean key that determines if the time zone mappings
+% should be used.
+% \begin{macrocode}
+\DTMdefboolkey{magyar}{mapzone}[true]{}
+% \end{macrocode}
+% The default is to use mappings.
+% \begin{macrocode}
+\DTMsetbool{magyar}{mapzone}{true}
+% \end{macrocode}
+%
+% Define a boolean key that determines if the day of month should be
+% displayed.
+% \begin{macrocode}
+\DTMdefboolkey{magyar}{showdayofmonth}[true]{}
+% \end{macrocode}
+% The default is to show the day of month.
+% \begin{macrocode}
+\DTMsetbool{magyar}{showdayofmonth}{true}
+% \end{macrocode}
+%
+% Define a boolean key that determines if the year should be
+% displayed.
+% \begin{macrocode}
+\DTMdefboolkey{magyar}{showyear}[true]{}
+% \end{macrocode}
+% The default is to show the year.
+% \begin{macrocode}
+\DTMsetbool{magyar}{showyear}{true}
+% \end{macrocode}
+%
+% Define the "magyar" style. (TODO: implement day of week?)
+% \begin{macrocode}
+\DTMnewstyle
+ {magyar}% label
+ {% date style
+ \renewcommand*\DTMdisplaydate[4]{%
+ \DTMifbool{magyar}{showdayofmonth}
+ {\DTMmagyarordinal{##3}\DTMmagyardaymonthsep}%
+ {}%
+ \DTMmagyarmonthname{##2}%
+ \DTMifbool{magyar}{showyear}%
+ {%
+ \DTMmagyarmonthyearsep
+ \number##1
+ }%
+ {}%
+ }%
+ \renewcommand*\DTMDisplaydate[4]{%
+ \DTMifbool{magyar}{showdayofmonth}
+ {%
+ \DTMmagyarordinal{##3}\DTMmagyardaymonthsep
+ \DTMmagyarmonthname{##2}%
+ }%
+ {%
+ \DTMmagyarMonthname{##2}%
+ }%
+ \DTMifbool{magyar}{showyear}%
+ {%
+ \DTMmagyarmonthyearsep
+ \number##1
+ }%
+ {}%
+ }%
+ }%
+ {% time style (use default)
+ \DTMsettimestyle{default}%
+ }%
+ {% zone style
+ \DTMresetzones
+ \DTMmagyarzonemaps
+ \renewcommand*{\DTMdisplayzone}[2]{%
+ \DTMifbool{magyar}{mapzone}%
+ {\DTMusezonemapordefault{##1}{##2}}%
+ {%
+ \ifnum##1<0\else+\fi\DTMtwodigits{##1}%
+ \ifDTMshowzoneminutes\DTMmagyartimesep\DTMtwodigits{##2}\fi
+ }%
+ }%
+ }%
+ {% full style
+ \renewcommand*{\DTMdisplay}[9]{%
+ \ifDTMshowdate
+ \DTMdisplaydate{##1}{##2}{##3}{##4}%
+ \DTMmagyardatetimesep
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \DTMmagyartimezonesep
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+ \renewcommand*{\DTMDisplay}[9]{%
+ \ifDTMshowdate
+ \DTMDisplaydate{##1}{##2}{##3}{##4}%
+ \DTMmagyardatetimesep
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \DTMmagyartimezonesep
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+ }%
+% \end{macrocode}
+%
+% Define numeric style.
+% \begin{macrocode}
+\DTMnewstyle
+ {magyar-numeric}% label
+ {% date style
+ \renewcommand*\DTMdisplaydate[4]{%
+ \DTMifbool{magyar}{showdayofmonth}%
+ {%
+ \number##3 % space intended
+ \DTMmagyardatesep
+ }%
+ {}%
+ \number##2 % space intended
+ \DTMifbool{magyar}{showyear}%
+ {%
+ \DTMmagyardatesep
+ \number##1 % space intended
+ }%
+ {}%
+ }%
+ \renewcommand*{\DTMDisplaydate}{\DTMdisplaydate}%
+ }%
+ {% time style
+ \renewcommand*\DTMdisplaytime[3]{%
+ \number##1
+ \DTMmagyartimesep\DTMtwodigits{##2}%
+ \ifDTMshowseconds\DTMmagyartimesep\DTMtwodigits{##3}\fi
+ }%
+ }%
+ {% zone style
+ \DTMresetzones
+ \DTMmagyarzonemaps
+ \renewcommand*{\DTMdisplayzone}[2]{%
+ \DTMifbool{magyar}{mapzone}%
+ {\DTMusezonemapordefault{##1}{##2}}%
+ {%
+ \ifnum##1<0\else+\fi\DTMtwodigits{##1}%
+ \ifDTMshowzoneminutes\DTMmagyartimesep\DTMtwodigits{##2}\fi
+ }%
+ }%
+ }%
+ {% full style
+ \renewcommand*{\DTMdisplay}[9]{%
+ \ifDTMshowdate
+ \DTMdisplaydate{##1}{##2}{##3}{##4}%
+ \DTMmagyardatetimesep
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \DTMmagyartimezonesep
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+ \renewcommand*{\DTMDisplay}{\DTMdisplay}%
+ }
+% \end{macrocode}
+%
+%\begin{macro}{\DTMmagyarzonemaps}
+% The time zone mappings are set through this command, which can be
+% redefined if extra mappings are required or mappings need to be
+% removed. There are currently no mappings defined.
+% \begin{macrocode}
+\newcommand*{\DTMmagyarzonemaps}{%
+}
+% \end{macrocode}
+%\end{macro}
+
+% Switch style according to the \opt{useregional} setting.
+% \begin{macrocode}
+\DTMifcaseregional
+{}% do nothing
+{\DTMsetstyle{magyar}}
+{\DTMsetstyle{magyar-numeric}}
+% \end{macrocode}
+%
+% Redefine \cs{datemagyar} (or \cs{date}\meta{dialect}) to prevent
+% \sty{babel} from resetting \cs{today}. (For this to work,
+% \sty{babel} must already have been loaded if it's required.)
+%\changes{1.1}{2018-07-24}{removed spurious space}
+% \begin{macrocode}
+\ifcsundef{date\CurrentTrackedDialect}
+{%
+ \ifundef\datemagyar
+ {% do nothing
+ }%
+ {%
+ \def\datemagyar{%
+ \DTMifcaseregional
+ {}% do nothing
+ {\DTMsetstyle{magyar}}%
+ {\DTMsetstyle{magyar-numeric}}%
+ }%
+ }%
+}%
+{%
+ \csdef{date\CurrentTrackedDialect}{%
+ \DTMifcaseregional
+ {}% do nothing
+ {\DTMsetstyle{magyar}}%
+ {\DTMsetstyle{magyar-numeric}}%
+ }%
+}%
+% \end{macrocode}
+%\iffalse
+% \begin{macrocode}
+%</datetime2-magyar.ldf>
+% \end{macrocode}
+%\fi
+%\Finale
+\endinput
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-magyar/datetime2-magyar.ins b/macros/latex/contrib/datetime2-contrib/datetime2-magyar/datetime2-magyar.ins
new file mode 100644
index 0000000000..7d8ac56fa6
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-magyar/datetime2-magyar.ins
@@ -0,0 +1,61 @@
+\input docstrip
+
+\preamble
+
+ datetime2-magyar.dtx
+ Copyright 2018 Nicola Talbot
+
+ This work may be distributed and/or modified under the
+ conditions of the LaTeX Project Public License, either version 1.3
+ of this license of (at your option) any later version.
+ The latest version of this license is in
+ http://www.latex-project.org/lppl.txt
+ and version 1.3 or later is part of all distributions of LaTeX
+ version 2005/12/01 or later.
+
+ This work has the LPPL maintenance status `inactive'.
+
+ This work consists of the files datetime2-magyar.dtx and
+ datetime2-magyar.ins and the derived files
+ datetime2-magyar-utf8.ldf, datetime2-magyar-ascii.ldf and
+ datetime2-magyar.ldf.
+
+\endpreamble
+
+\askforoverwritefalse
+
+\generate
+{%
+ \file
+ {datetime2-magyar-utf8.ldf}%
+ {%
+ \usepreamble\defaultpreamble
+ \usepostamble\defaultpostamble
+ \from{datetime2-magyar.dtx}{datetime2-magyar-utf8.ldf,package}%
+ }%
+}
+
+\generate
+{%
+ \file
+ {datetime2-magyar-ascii.ldf}%
+ {%
+ \usepreamble\defaultpreamble
+ \usepostamble\defaultpostamble
+ \from{datetime2-magyar.dtx}{datetime2-magyar-ascii.ldf,package}%
+ }%
+}
+
+\generate
+{%
+ \file
+ {datetime2-magyar.ldf}%
+ {%
+ \usepreamble\defaultpreamble
+ \usepostamble\defaultpostamble
+ \from{datetime2-magyar.dtx}{datetime2-magyar.ldf,package}%
+ }%
+}
+
+\endbatchfile
+
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-magyar/datetime2-magyar.pdf b/macros/latex/contrib/datetime2-contrib/datetime2-magyar/datetime2-magyar.pdf
new file mode 100644
index 0000000000..764f1a175f
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-magyar/datetime2-magyar.pdf
Binary files differ
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-norsk/README b/macros/latex/contrib/datetime2-contrib/datetime2-norsk/README
new file mode 100644
index 0000000000..e7abfe168d
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-norsk/README
@@ -0,0 +1,57 @@
+Norwegian Language Module for datetime2 Package
+
+Author: Nicola L. C. Talbot (inactive)
+
+Licence: LPPL
+
+Required Packages: datetime2, tracklang
+
+This module is unmaintained. If you want to volunteer to take over
+the maintenance contact me at www.dickimaw-books.com/contact.html
+
+Example usage:
+
+\documentclass{article}
+\usepackage[norsk]{datetime2}
+\begin{document}
+\today
+\end{document}
+
+\documentclass[norsk]{article}
+\usepackage{babel}
+\usepackage[useregional]{datetime2}
+\begin{document}
+\today
+\end{document}
+
+\documentclass{article}
+\usepackage{polyglossia}
+\setmainlanguage{norsk}
+\usepackage[norsk]{datetime2}
+\begin{document}
+\today
+\end{document}
+
+INSTALLATION
+============
+
+xelatex datetime2-norsk.ins
+
+Move all *.ldf files to
+TEXMF/tex/latex/datetime2-contrib/datetime2-norsk/
+
+Documentation:
+
+xelatex datetime2-norsk.dtx
+makeindex -s gind.ist datetime2-norsk.idx
+makeindex -s gglo.ist -o datetime2-norsk.gls datetime2-norsk.glo
+xelatex datetime2-norsk.dtx
+xelatex datetime2-norsk.dtx
+
+Move datetime2-norsk.pdf and README to
+TEXMF/doc/latex/datetime2-contrib/datetime2-norsk/
+
+This material is subject to the LaTeX Project Public License.
+See http://www.ctan.org/license/lppl1.3 for the details of that
+license.
+
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-norsk/datetime2-norsk.dtx b/macros/latex/contrib/datetime2-contrib/datetime2-norsk/datetime2-norsk.dtx
new file mode 100644
index 0000000000..9a6187e636
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-norsk/datetime2-norsk.dtx
@@ -0,0 +1,724 @@
+%\iffalse
+%<*package>
+%% \CharacterTable
+%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+%% Digits \0\1\2\3\4\5\6\7\8\9
+%% Exclamation \! Double quote \" Hash (number) \#
+%% Dollar \$ Percent \% Ampersand \&
+%% Acute accent \' Left paren \( Right paren \)
+%% Asterisk \* Plus \+ Comma \,
+%% Minus \- Point \. Solidus \/
+%% Colon \: Semicolon \; Less than \<
+%% Equals \= Greater than \> Question mark \?
+%% Commercial at \@ Left bracket \[ Backslash \\
+%% Right bracket \] Circumflex \^ Underscore \_
+%% Grave accent \` Left brace \{ Vertical bar \|
+%% Right brace \} Tilde \~}
+%</package>
+%\fi
+% \iffalse
+% Doc-Source file to use with LaTeX2e
+% Copyright (C) 2018 Nicola Talbot, all rights reserved.
+% (New maintainer add relevant lines here.)
+% \fi
+% \iffalse
+%<*driver>
+\documentclass{ltxdoc}
+
+\usepackage{alltt}
+\usepackage{graphicx}
+\usepackage{fontspec}
+\usepackage[colorlinks,
+ bookmarks,
+ hyperindex=false,
+ pdfauthor={Nicola L.C. Talbot},
+ pdftitle={datetime2.sty Norwegian Module}]{hyperref}
+
+\setmainfont{Liberation Serif}
+\setmonofont{Liberation Mono}
+
+\CheckSum{297}
+
+\renewcommand*{\usage}[1]{\hyperpage{#1}}
+\renewcommand*{\main}[1]{\hyperpage{#1}}
+\IndexPrologue{\section*{\indexname}\markboth{\indexname}{\indexname}}
+\setcounter{IndexColumns}{2}
+
+\newcommand*{\sty}[1]{\textsf{#1}}
+\newcommand*{\opt}[1]{\texttt{#1}\index{#1=\texttt{#1}|main}}
+
+\RecordChanges
+\PageIndex
+\CodelineNumbered
+
+\begin{document}
+\DocInput{datetime2-norsk.dtx}
+\end{document}
+%</driver>
+%\fi
+%
+%\MakeShortVerb{"}
+%
+%\title{Norwegian Module for datetime2 Package}
+%\author{Nicola L. C. Talbot (inactive)}
+%\date{2018-07-24 (v1.1)}
+%\maketitle
+%
+%This module is currently unmaintained and may be subject to change.
+%If you want to volunteer to take over maintenance, contact me at
+%\url{http://www.dickimaw-books.com/contact.html}
+%
+%\begin{abstract}
+%This is the Norwegian language module for the \sty{datetime2}
+%package. If you want to use the settings in this module you must
+%install it in addition to installing \sty{datetime2}. If you use
+%\sty{babel} or \sty{polyglossia}, you will need this module to
+%prevent them from redefining \cs{today}. The \sty{datetime2}
+% \opt{useregional} setting must be set to "text" or "numeric"
+% for the language styles to be set.
+% Alternatively, you can set the style in the document using
+% \cs{DTMsetstyle}, but this may be changed by \cs{date}\meta{language}
+% depending on the value of the \opt{useregional} setting.
+%\end{abstract}
+%
+%I've copied the date style from \texttt{babel-norsk}'s \cs{today}.
+%
+%I don't know if these settings are correct as I can't speak Norwegian.
+%In particular, I don't know if the "norsk" time style is
+%correct. Currently this just uses the "default" time style. Please
+%be aware that this may change. Whoever takes over maintanance
+%of this module may can change it as appropriate.
+%
+%The new maintainer should add the line:
+%\begin{verbatim}
+% The Current Maintainer of this work is Name.
+%\end{verbatim}
+%to the preamble part in \texttt{datetime2-norsk.ins} where Name
+%is the name of the maintainer(s) and replace
+%the `inactive' status to `maintained'.
+%
+%Currently there is only a regionless style.
+%
+%\StopEventually{%
+%\clearpage
+%\phantomsection
+%\addcontentsline{toc}{section}{Change History}%
+%\PrintChanges
+%\addcontentsline{toc}{section}{\indexname}%
+%\PrintIndex}
+%\section{The Code}
+%\iffalse
+% \begin{macrocode}
+%<*datetime2-norsk-utf8.ldf>
+% \end{macrocode}
+%\fi
+%\subsection{UTF-8}
+%This file contains the settings that use UTF-8 characters. This
+%file is loaded if XeLaTeX or LuaLaTeX are used. Please make sure
+%your text editor is set to UTF-8 if you want to view this code.
+%\changes{1.0}{2015-03-31}{Initial release}
+% Identify module
+% \begin{macrocode}
+\ProvidesDateTimeModule{norsk-utf8}[2018/07/24 v1.1]
+% \end{macrocode}
+%\begin{macro}{\DTMnorskordinal}
+% \begin{macrocode}
+\newcommand*{\DTMnorskordinal}[1]{%
+ \number#1.%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMnorskmonthname}
+% Norwegian month names.
+% \begin{macrocode}
+\newcommand*{\DTMnorskmonthname}[1]{%
+ \ifcase#1
+ \or
+ januar%
+ \or
+ februar%
+ \or
+ mars%
+ \or
+ april%
+ \or
+ mai%
+ \or
+ juni%
+ \or
+ juli%
+ \or
+ august%
+ \or
+ september%
+ \or
+ oktober%
+ \or
+ november%
+ \or
+ desember%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMnorskMonthname}
+% As above but capitalize.
+% \begin{macrocode}
+\newcommand*{\DTMnorskMonthname}[1]{%
+ \ifcase#1
+ \or
+ Januar%
+ \or
+ Februar%
+ \or
+ Mars%
+ \or
+ April%
+ \or
+ Mai%
+ \or
+ Juni%
+ \or
+ Juli%
+ \or
+ August%
+ \or
+ September%
+ \or
+ Oktober%
+ \or
+ November%
+ \or
+ Desember%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%If abbreviated dates are supported, short month names should be
+%likewise provided.
+%
+%\begin{macro}{\DTMnorskweekdayname}
+% Day of week names.
+% \begin{macrocode}
+\newcommand*{\DTMnorskweekdayname}[1]{%
+ \ifcase#1
+ mandag%
+ \or
+ tirsdag%
+ \or
+ onsdag%
+ \or
+ torsdag%
+ \or
+ fredag%
+ \or
+ lĆørdag%
+ \or
+ sĆøndag%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMnorskWeekdayname}
+% As above but start with a capital.
+% \begin{macrocode}
+\newcommand*{\DTMnorskWeekdayname}[1]{%
+ \ifcase#1
+ Mandag%
+ \or
+ Tirsdag%
+ \or
+ Onsdag%
+ \or
+ Torsdag%
+ \or
+ Fredag%
+ \or
+ LĆørdag%
+ \or
+ SĆøndag%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\iffalse
+% \begin{macrocode}
+%</datetime2-norsk-utf8.ldf>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*datetime2-norsk-ascii.ldf>
+% \end{macrocode}
+%\fi
+%\subsection{ASCII}
+%This file contains the settings that use \LaTeX\ commands for
+%non-ASCII characters. This should be input if neither XeLaTeX nor
+%LuaLaTeX are used. Even if the user has loaded \sty{inputenc} with
+%"utf8", this file should still be used not the
+%\texttt{datetime2-norsk-utf8.ldf} file as the non-ASCII
+%characters are made active in that situation and would need
+%protecting against expansion.
+%\changes{1.0}{2015-03-31}{Initial release}
+% Identify module
+% \begin{macrocode}
+\ProvidesDateTimeModule{norsk-ascii}[2018/07/24 v1.1]
+% \end{macrocode}
+%
+%If abbreviated dates are supported, short month names should be
+%likewise provided.
+%\begin{macro}{\DTMnorskordinal}
+% \begin{macrocode}
+\newcommand*{\DTMnorskordinal}[1]{%
+ \number#1.%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMnorskmonthname}
+% Norwegian month names.
+% \begin{macrocode}
+\newcommand*{\DTMnorskmonthname}[1]{%
+ \ifcase#1
+ \or
+ januar%
+ \or
+ februar%
+ \or
+ mars%
+ \or
+ april%
+ \or
+ mai%
+ \or
+ juni%
+ \or
+ juli%
+ \or
+ august%
+ \or
+ september%
+ \or
+ oktober%
+ \or
+ november%
+ \or
+ desember%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMnorskMonthname}
+% As above but capitalize.
+% \begin{macrocode}
+\newcommand*{\DTMnorskMonthname}[1]{%
+ \ifcase#1
+ \or
+ Januar%
+ \or
+ Februar%
+ \or
+ Mars%
+ \or
+ April%
+ \or
+ Mai%
+ \or
+ Juni%
+ \or
+ Juli%
+ \or
+ August%
+ \or
+ September%
+ \or
+ Oktober%
+ \or
+ November%
+ \or
+ Desember%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMnorskweekdayname}
+% Day of week names.
+% \begin{macrocode}
+\newcommand*{\DTMnorskweekdayname}[1]{%
+ \ifcase#1
+ mandag%
+ \or
+ tirsdag%
+ \or
+ onsdag%
+ \or
+ torsdag%
+ \or
+ fredag%
+ \or
+ l\o rdag%
+ \or
+ s\o ndag%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMnorskWeekdayname}
+% As above but start with a capital.
+% \begin{macrocode}
+\newcommand*{\DTMnorskWeekdayname}[1]{%
+ \ifcase#1
+ Mandag%
+ \or
+ Tirsdag%
+ \or
+ Onsdag%
+ \or
+ Torsdag%
+ \or
+ Fredag%
+ \or
+ L\o rdag%
+ \or
+ S\o ndag%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%
+%\iffalse
+% \begin{macrocode}
+%</datetime2-norsk-ascii.ldf>
+% \end{macrocode}
+%\fi
+%
+%\subsection{Main Norwegian Module (\texttt{datetime2-norsk.ldf})}
+%\changes{1.0}{2015-03-31}{Initial release}
+%
+%\iffalse
+% \begin{macrocode}
+%<*datetime2-norsk.ldf>
+% \end{macrocode}
+%\fi
+%
+% Identify Module
+% \begin{macrocode}
+\ProvidesDateTimeModule{norsk}[2018/07/24 v1.1]
+% \end{macrocode}
+% Need to find out if XeTeX or LuaTeX are being used.
+% \begin{macrocode}
+\RequirePackage{ifxetex,ifluatex}
+% \end{macrocode}
+% XeTeX and LuaTeX natively support UTF-8, so load
+% \texttt{norsk-utf8} if either of those engines are used
+% otherwise load \texttt{norsk-ascii}.
+% \begin{macrocode}
+\ifxetex
+ \RequireDateTimeModule{norsk-utf8}
+\else
+ \ifluatex
+ \RequireDateTimeModule{norsk-utf8}
+ \else
+ \RequireDateTimeModule{norsk-ascii}
+ \fi
+\fi
+% \end{macrocode}
+%
+% Define the \texttt{norsk} style.
+% The time style is the same as the "default" style
+% provided by \sty{datetime2}. This may need correcting. For
+% example, if a 12 hour style similar to the "englishampm" (from the
+% "english-base" module) is required.
+%
+% Allow the user a way of configuring the "norsk" and
+% "norsk-numeric" styles. This doesn't use the package wide
+% separators such as
+% \cs{dtm@datetimesep} in case other date formats are also required.
+%\begin{macro}{\DTMnorskdaymonthsep}
+% The separator between the day and month for the text format.
+% \begin{macrocode}
+\newcommand*{\DTMnorskdaymonthsep}{%
+ \DTMtexorpdfstring{\protect~}{\space}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMnorskmonthyearsep}
+% The separator between the month and year for the text format.
+% \begin{macrocode}
+\newcommand*{\DTMnorskmonthyearsep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMnorskdatetimesep}
+% The separator between the date and time blocks in the full format
+% (either text or numeric).
+% \begin{macrocode}
+\newcommand*{\DTMnorskdatetimesep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMnorsktimezonesep}
+% The separator between the time and zone blocks in the full format
+% (either text or numeric).
+% \begin{macrocode}
+\newcommand*{\DTMnorsktimezonesep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMnorskdatesep}
+% The separator for the numeric date format.
+% \begin{macrocode}
+\newcommand*{\DTMnorskdatesep}{.}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMnorsktimesep}
+% The separator for the numeric time format.
+% \begin{macrocode}
+\newcommand*{\DTMnorsktimesep}{:}
+% \end{macrocode}
+%\end{macro}
+%
+%Provide keys that can be used in \cs{DTMlangsetup} to set these
+%separators.
+% \begin{macrocode}
+\DTMdefkey{norsk}{daymonthsep}{\renewcommand*{\DTMnorskdaymonthsep}{#1}}
+\DTMdefkey{norsk}{monthyearsep}{\renewcommand*{\DTMnorskmonthyearsep}{#1}}
+\DTMdefkey{norsk}{datetimesep}{\renewcommand*{\DTMnorskdatetimesep}{#1}}
+\DTMdefkey{norsk}{timezonesep}{\renewcommand*{\DTMnorsktimezonesep}{#1}}
+\DTMdefkey{norsk}{datesep}{\renewcommand*{\DTMnorskdatesep}{#1}}
+\DTMdefkey{norsk}{timesep}{\renewcommand*{\DTMnorsktimesep}{#1}}
+% \end{macrocode}
+%
+% TODO: provide a boolean key to switch between full and abbreviated
+% formats if appropriate. (I don't know how the date should be
+% abbreviated.)
+%
+% Define a boolean key that determines if the time zone mappings
+% should be used.
+% \begin{macrocode}
+\DTMdefboolkey{norsk}{mapzone}[true]{}
+% \end{macrocode}
+% The default is to use mappings.
+% \begin{macrocode}
+\DTMsetbool{norsk}{mapzone}{true}
+% \end{macrocode}
+%
+% Define a boolean key that determines if the day of month should be
+% displayed.
+% \begin{macrocode}
+\DTMdefboolkey{norsk}{showdayofmonth}[true]{}
+% \end{macrocode}
+% The default is to show the day of month.
+% \begin{macrocode}
+\DTMsetbool{norsk}{showdayofmonth}{true}
+% \end{macrocode}
+%
+% Define a boolean key that determines if the year should be
+% displayed.
+% \begin{macrocode}
+\DTMdefboolkey{norsk}{showyear}[true]{}
+% \end{macrocode}
+% The default is to show the year.
+% \begin{macrocode}
+\DTMsetbool{norsk}{showyear}{true}
+% \end{macrocode}
+%
+% Define the "norsk" style. (TODO: implement day of week?)
+% \begin{macrocode}
+\DTMnewstyle
+ {norsk}% label
+ {% date style
+ \renewcommand*\DTMdisplaydate[4]{%
+ \DTMifbool{norsk}{showdayofmonth}
+ {\DTMnorskordinal{##3}\DTMnorskdaymonthsep}%
+ {}%
+ \DTMnorskmonthname{##2}%
+ \DTMifbool{norsk}{showyear}%
+ {%
+ \DTMnorskmonthyearsep
+ \number##1
+ }%
+ {}%
+ }%
+ \renewcommand*\DTMDisplaydate[4]{%
+ \DTMifbool{norsk}{showdayofmonth}
+ {%
+ \DTMnorskordinal{##3}\DTMnorskdaymonthsep
+ \DTMnorskmonthname{##2}%
+ }%
+ {%
+ \DTMnorskMonthname{##2}%
+ }%
+ \DTMifbool{norsk}{showyear}%
+ {%
+ \DTMnorskmonthyearsep
+ \number##1
+ }%
+ {}%
+ }%
+ }%
+ {% time style (use default)
+ \DTMsettimestyle{default}%
+ }%
+ {% zone style
+ \DTMresetzones
+ \DTMnorskzonemaps
+ \renewcommand*{\DTMdisplayzone}[2]{%
+ \DTMifbool{norsk}{mapzone}%
+ {\DTMusezonemapordefault{##1}{##2}}%
+ {%
+ \ifnum##1<0\else+\fi\DTMtwodigits{##1}%
+ \ifDTMshowzoneminutes\DTMnorsktimesep\DTMtwodigits{##2}\fi
+ }%
+ }%
+ }%
+ {% full style
+ \renewcommand*{\DTMdisplay}[9]{%
+ \ifDTMshowdate
+ \DTMdisplaydate{##1}{##2}{##3}{##4}%
+ \DTMnorskdatetimesep
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \DTMnorsktimezonesep
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+ \renewcommand*{\DTMDisplay}[9]{%
+ \ifDTMshowdate
+ \DTMDisplaydate{##1}{##2}{##3}{##4}%
+ \DTMnorskdatetimesep
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \DTMnorsktimezonesep
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+ }%
+% \end{macrocode}
+%
+% Define numeric style.
+% \begin{macrocode}
+\DTMnewstyle
+ {norsk-numeric}% label
+ {% date style
+ \renewcommand*\DTMdisplaydate[4]{%
+ \DTMifbool{norsk}{showdayofmonth}%
+ {%
+ \number##3 % space intended
+ \DTMnorskdatesep
+ }%
+ {}%
+ \number##2 % space intended
+ \DTMifbool{norsk}{showyear}%
+ {%
+ \DTMnorskdatesep
+ \number##1 % space intended
+ }%
+ {}%
+ }%
+ \renewcommand*{\DTMDisplaydate}{\DTMdisplaydate}%
+ }%
+ {% time style
+ \renewcommand*\DTMdisplaytime[3]{%
+ \number##1
+ \DTMnorsktimesep\DTMtwodigits{##2}%
+ \ifDTMshowseconds\DTMnorsktimesep\DTMtwodigits{##3}\fi
+ }%
+ }%
+ {% zone style
+ \DTMresetzones
+ \DTMnorskzonemaps
+ \renewcommand*{\DTMdisplayzone}[2]{%
+ \DTMifbool{norsk}{mapzone}%
+ {\DTMusezonemapordefault{##1}{##2}}%
+ {%
+ \ifnum##1<0\else+\fi\DTMtwodigits{##1}%
+ \ifDTMshowzoneminutes\DTMnorsktimesep\DTMtwodigits{##2}\fi
+ }%
+ }%
+ }%
+ {% full style
+ \renewcommand*{\DTMdisplay}[9]{%
+ \ifDTMshowdate
+ \DTMdisplaydate{##1}{##2}{##3}{##4}%
+ \DTMnorskdatetimesep
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \DTMnorsktimezonesep
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+ \renewcommand*{\DTMDisplay}{\DTMdisplay}%
+ }
+% \end{macrocode}
+%
+%\begin{macro}{\DTMnorskzonemaps}
+% The time zone mappings are set through this command, which can be
+% redefined if extra mappings are required or mappings need to be
+% removed.
+% \begin{macrocode}
+\newcommand*{\DTMnorskzonemaps}{%
+ \DTMdefzonemap{01}{00}{CET}%
+ \DTMdefzonemap{02}{00}{CEST}%
+}
+% \end{macrocode}
+%\end{macro}
+
+% Switch style according to the \opt{useregional} setting.
+% \begin{macrocode}
+\DTMifcaseregional
+{}% do nothing
+{\DTMsetstyle{norsk}}
+{\DTMsetstyle{norsk-numeric}}
+% \end{macrocode}
+%
+% Redefine \cs{datenorsk} (or \cs{date}\meta{dialect}) to prevent
+% \sty{babel} from resetting \cs{today}. (For this to work,
+% \sty{babel} must already have been loaded if it's required.)
+%\changes{1.1}{2018-07-24}{removed spurious space}
+% \begin{macrocode}
+\ifcsundef{date\CurrentTrackedDialect}
+{%
+ \ifundef\datenorsk
+ {% do nothing
+ }%
+ {%
+ \def\datenorsk{%
+ \DTMifcaseregional
+ {}% do nothing
+ {\DTMsetstyle{norsk}}%
+ {\DTMsetstyle{norsk-numeric}}%
+ }%
+ }%
+}%
+{%
+ \csdef{date\CurrentTrackedDialect}{%
+ \DTMifcaseregional
+ {}% do nothing
+ {\DTMsetstyle{norsk}}%
+ {\DTMsetstyle{norsk-numeric}}%
+ }%
+}%
+% \end{macrocode}
+%\iffalse
+% \begin{macrocode}
+%</datetime2-norsk.ldf>
+% \end{macrocode}
+%\fi
+%\Finale
+\endinput
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-norsk/datetime2-norsk.ins b/macros/latex/contrib/datetime2-contrib/datetime2-norsk/datetime2-norsk.ins
new file mode 100644
index 0000000000..b71570873b
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-norsk/datetime2-norsk.ins
@@ -0,0 +1,61 @@
+\input docstrip
+
+\preamble
+
+ datetime2-norsk.dtx
+ Copyright 2018 Nicola Talbot
+
+ This work may be distributed and/or modified under the
+ conditions of the LaTeX Project Public License, either version 1.3
+ of this license of (at your option) any later version.
+ The latest version of this license is in
+ http://www.latex-project.org/lppl.txt
+ and version 1.3 or later is part of all distributions of LaTeX
+ version 2005/12/01 or later.
+
+ This work has the LPPL maintenance status `inactive'.
+
+ This work consists of the files datetime2-norsk.dtx and
+ datetime2-norsk.ins and the derived files
+ datetime2-norsk-utf8.ldf, datetime2-norsk-ascii.ldf and
+ datetime2-norsk.ldf.
+
+\endpreamble
+
+\askforoverwritefalse
+
+\generate
+{%
+ \file
+ {datetime2-norsk-utf8.ldf}%
+ {%
+ \usepreamble\defaultpreamble
+ \usepostamble\defaultpostamble
+ \from{datetime2-norsk.dtx}{datetime2-norsk-utf8.ldf,package}%
+ }%
+}
+
+\generate
+{%
+ \file
+ {datetime2-norsk-ascii.ldf}%
+ {%
+ \usepreamble\defaultpreamble
+ \usepostamble\defaultpostamble
+ \from{datetime2-norsk.dtx}{datetime2-norsk-ascii.ldf,package}%
+ }%
+}
+
+\generate
+{%
+ \file
+ {datetime2-norsk.ldf}%
+ {%
+ \usepreamble\defaultpreamble
+ \usepostamble\defaultpostamble
+ \from{datetime2-norsk.dtx}{datetime2-norsk.ldf,package}%
+ }%
+}
+
+\endbatchfile
+
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-norsk/datetime2-norsk.pdf b/macros/latex/contrib/datetime2-contrib/datetime2-norsk/datetime2-norsk.pdf
new file mode 100644
index 0000000000..4172b02b02
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-norsk/datetime2-norsk.pdf
Binary files differ
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-polish/README b/macros/latex/contrib/datetime2-contrib/datetime2-polish/README
new file mode 100644
index 0000000000..a8649209f2
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-polish/README
@@ -0,0 +1,57 @@
+Polish Language Module for datetime2 Package
+
+Author: Nicola L. C. Talbot (inactive)
+
+Licence: LPPL
+
+Required Packages: datetime2, tracklang
+
+This module is unmaintained. If you want to volunteer to take over
+the maintenance contact me at www.dickimaw-books.com/contact.html
+
+Example usage:
+
+\documentclass{article}
+\usepackage[polish]{datetime2}
+\begin{document}
+\today
+\end{document}
+
+\documentclass[polish]{article}
+\usepackage{babel}
+\usepackage[useregional]{datetime2}
+\begin{document}
+\today
+\end{document}
+
+\documentclass{article}
+\usepackage{polyglossia}
+\setmainlanguage{polish}
+\usepackage[polish]{datetime2}
+\begin{document}
+\today
+\end{document}
+
+INSTALLATION
+============
+
+xelatex datetime2-polish.ins
+
+Move all *.ldf files to
+TEXMF/tex/latex/datetime2-contrib/datetime2-polish/
+
+Documentation:
+
+xelatex datetime2-polish.dtx
+makeindex -s gind.ist datetime2-polish.idx
+makeindex -s gglo.ist -o datetime2-polish.gls datetime2-polish.glo
+xelatex datetime2-polish.dtx
+xelatex datetime2-polish.dtx
+
+Move datetime2-polish.pdf and README to
+TEXMF/doc/latex/datetime2-contrib/datetime2-polish/
+
+This material is subject to the LaTeX Project Public License.
+See http://www.ctan.org/license/lppl1.3 for the details of that
+license.
+
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-polish/datetime2-polish.dtx b/macros/latex/contrib/datetime2-contrib/datetime2-polish/datetime2-polish.dtx
new file mode 100644
index 0000000000..2b566ae428
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-polish/datetime2-polish.dtx
@@ -0,0 +1,724 @@
+%\iffalse
+%<*package>
+%% \CharacterTable
+%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+%% Digits \0\1\2\3\4\5\6\7\8\9
+%% Exclamation \! Double quote \" Hash (number) \#
+%% Dollar \$ Percent \% Ampersand \&
+%% Acute accent \' Left paren \( Right paren \)
+%% Asterisk \* Plus \+ Comma \,
+%% Minus \- Point \. Solidus \/
+%% Colon \: Semicolon \; Less than \<
+%% Equals \= Greater than \> Question mark \?
+%% Commercial at \@ Left bracket \[ Backslash \\
+%% Right bracket \] Circumflex \^ Underscore \_
+%% Grave accent \` Left brace \{ Vertical bar \|
+%% Right brace \} Tilde \~}
+%</package>
+%\fi
+% \iffalse
+% Doc-Source file to use with LaTeX2e
+% Copyright (C) 2015-2018 Nicola Talbot, all rights reserved.
+% (New maintainer add relevant lines here.)
+% \fi
+% \iffalse
+%<*driver>
+\documentclass{ltxdoc}
+
+\usepackage{alltt}
+\usepackage{graphicx}
+\usepackage{fontspec}
+\usepackage[colorlinks,
+ bookmarks,
+ hyperindex=false,
+ pdfauthor={Nicola L.C. Talbot},
+ pdftitle={datetime2.sty Polish Module}]{hyperref}
+
+\setmainfont{Liberation Serif}
+\setmonofont{Liberation Mono}
+
+\CheckSum{313}
+
+\renewcommand*{\usage}[1]{\hyperpage{#1}}
+\renewcommand*{\main}[1]{\hyperpage{#1}}
+\IndexPrologue{\section*{\indexname}\markboth{\indexname}{\indexname}}
+\setcounter{IndexColumns}{2}
+
+\newcommand*{\sty}[1]{\textsf{#1}}
+\newcommand*{\opt}[1]{\texttt{#1}\index{#1=\texttt{#1}|main}}
+
+\RecordChanges
+\PageIndex
+\CodelineNumbered
+
+\begin{document}
+\DocInput{datetime2-polish.dtx}
+\end{document}
+%</driver>
+%\fi
+%
+%\MakeShortVerb{"}
+%
+%\title{Polish Module for datetime2 Package}
+%\author{Nicola L. C. Talbot (inactive)}
+%\date{2018-08-21 (v1.1)}
+%\maketitle
+%
+%This module is currently unmaintained and may be subject to change.
+%If you want to volunteer to take over maintenance, contact me at
+%\url{http://www.dickimaw-books.com/contact.html}
+%
+%\begin{abstract}
+%This is the Polish language module for the \sty{datetime2}
+%package. If you want to use the settings in this module you must
+%install it in addition to installing \sty{datetime2}. If you use
+%\sty{babel} or \sty{polyglossia}, you will need this module to
+%prevent them from redefining \cs{today}. The \sty{datetime2}
+% \opt{useregional} setting must be set to "text" or "numeric"
+% for the language styles to be set.
+% Alternatively, you can set the style in the document using
+% \cs{DTMsetstyle}, but this may be changed by \cs{date}\meta{language}
+% depending on the value of the \opt{useregional} setting.
+%\end{abstract}
+%
+%I've copied the date style from \texttt{babel-polish}'s \cs{today}.
+%
+%I don't know if these settings are correct as I can't speak Polish.
+%In particular, I don't know if the "polish" time style is
+%correct. Currently this just uses the "default" time style. Please
+%be aware that this may change. Whoever takes over maintanance
+%of this module may can change it as appropriate.
+%
+%The new maintainer should add the line:
+%\begin{verbatim}
+% The Current Maintainer of this work is Name.
+%\end{verbatim}
+%to the preamble part in \texttt{datetime2-polish.ins} where Name
+%is the name of the maintainer(s) and replace
+%the `inactive' status to `maintained'.
+%
+%Currently there is only a regionless style.
+%
+%\StopEventually{%
+%\clearpage
+%\phantomsection
+%\addcontentsline{toc}{section}{Change History}%
+%\PrintChanges
+%\addcontentsline{toc}{section}{\indexname}%
+%\PrintIndex}
+%\section{The Code}
+%\iffalse
+% \begin{macrocode}
+%<*datetime2-polish-utf8.ldf>
+% \end{macrocode}
+%\fi
+%\subsection{UTF-8}
+%This file contains the settings that use UTF-8 characters. This
+%file is loaded if XeLaTeX or LuaLaTeX are used. Please make sure
+%your text editor is set to UTF-8 if you want to view this code.
+%\changes{1.0}{2015-03-31}{Initial release}
+% Identify module
+% \begin{macrocode}
+\ProvidesDateTimeModule{polish-utf8}[2018/08/21 v1.1]
+% \end{macrocode}
+%\begin{macro}{\DTMpolishordinal}
+% \begin{macrocode}
+\newcommand*{\DTMpolishordinal}[1]{%
+ \number#1
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMpolishmonthname}
+% Polish month names.
+% \begin{macrocode}
+\newcommand*{\DTMpolishmonthname}[1]{%
+ \ifcase#1
+ \or
+ stycznia%
+ \or
+ lutego%
+ \or
+ marca%
+ \or
+ kwietnia%
+ \or
+ maja%
+ \or
+ czerwca%
+ \or
+ lipca%
+ \or
+ sierpnia%
+ \or
+ września%
+ \or
+ paÅŗdziernika%
+ \or
+ listopada%
+ \or
+ grudnia%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMpolishMonthname}
+% As above but capitalize.
+% \begin{macrocode}
+\newcommand*{\DTMpolishMonthname}[1]{%
+ \ifcase#1
+ \or
+ Stycznia%
+ \or
+ Lutego%
+ \or
+ Marca%
+ \or
+ Kwietnia%
+ \or
+ Maja%
+ \or
+ Czerwca%
+ \or
+ Lipca%
+ \or
+ Sierpnia%
+ \or
+ Września%
+ \or
+ PaÅŗdziernika%
+ \or
+ Listopada%
+ \or
+ Grudnia%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%If abbreviated dates are supported, short month names should be
+%likewise provided.
+%
+%\begin{macro}{\DTMpolishweekdayname}
+% Day of week names.
+% \begin{macrocode}
+\newcommand*{\DTMpolishweekdayname}[1]{%
+ \ifcase#1
+ poniedziałek%
+ \or
+ wtorek%
+ \or
+ środa%
+ \or
+ czwartek%
+ \or
+ piątek%
+ \or
+ sobota%
+ \or
+ niedziela%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMpolishWeekdayname}
+% As above but start with a capital.
+% \begin{macrocode}
+\newcommand*{\DTMpolishWeekdayname}[1]{%
+ \ifcase#1
+ Poniedziałek%
+ \or
+ Wtorek%
+ \or
+ Środa%
+ \or
+ Czwartek%
+ \or
+ Piątek%
+ \or
+ Sobota%
+ \or
+ Niedziela%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\iffalse
+% \begin{macrocode}
+%</datetime2-polish-utf8.ldf>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*datetime2-polish-ascii.ldf>
+% \end{macrocode}
+%\fi
+%\subsection{ASCII}
+%This file contains the settings that use \LaTeX\ commands for
+%non-ASCII characters. This should be input if neither XeLaTeX nor
+%LuaLaTeX are used. Even if the user has loaded \sty{inputenc} with
+%"utf8", this file should still be used not the
+%\texttt{datetime2-polish-utf8.ldf} file as the non-ASCII
+%characters are made active in that situation and would need
+%protecting against expansion.
+%\changes{1.0}{2015-03-31}{Initial release}
+% Identify module
+% \begin{macrocode}
+\ProvidesDateTimeModule{polish-ascii}[2018/08/21 v1.1]
+% \end{macrocode}
+%
+%If abbreviated dates are supported, short month names should be
+%likewise provided.
+%\begin{macro}{\DTMpolishordinal}
+% \begin{macrocode}
+\newcommand*{\DTMpolishordinal}[1]{%
+ \number#1
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMpolishmonthname}
+% Polish month names.
+% \begin{macrocode}
+\newcommand*{\DTMpolishmonthname}[1]{%
+ \ifcase#1
+ \or
+ stycznia%
+ \or
+ lutego%
+ \or
+ marca%
+ \or
+ kwietnia%
+ \or
+ maja%
+ \or
+ czerwca%
+ \or
+ lipca%
+ \or
+ sierpnia%
+ \or
+ wrze\protect\'snia%
+ \or
+ pa\protect\'zdziernika%
+ \or
+ listopada%
+ \or
+ grudnia%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMpolishMonthname}
+% As above but capitalize.
+% \begin{macrocode}
+\newcommand*{\DTMpolishMonthname}[1]{%
+ \ifcase#1
+ \or
+ Stycznia%
+ \or
+ Lutego%
+ \or
+ Marca%
+ \or
+ Kwietnia%
+ \or
+ Maja%
+ \or
+ Czerwca%
+ \or
+ Lipca%
+ \or
+ Sierpnia%
+ \or
+ Wrze\protect\'snia%
+ \or
+ Pa\protect\'zdziernika%
+ \or
+ Listopada%
+ \or
+ Grudnia%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMpolishweekdayname}
+% Day of week names.
+% \begin{macrocode}
+\newcommand*{\DTMpolishweekdayname}[1]{%
+ \ifcase#1
+ poniedzia\protect\l ek%
+ \or
+ wtorek%
+ \or
+ \protect\'sroda%
+ \or
+ czwartek%
+ \or
+ pi\protect\k atek%
+ \or
+ sobota%
+ \or
+ niedziela%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMpolishWeekdayname}
+% As above but start with a capital.
+% \begin{macrocode}
+\newcommand*{\DTMpolishWeekdayname}[1]{%
+ \ifcase#1
+ Poniedzia\protect\l ek%
+ \or
+ Wtorek%
+ \or
+ \protect\'Sroda%
+ \or
+ Czwartek%
+ \or
+ Pi\protect\k atek%
+ \or
+ Sobota%
+ \or
+ Niedziela%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%
+%\iffalse
+% \begin{macrocode}
+%</datetime2-polish-ascii.ldf>
+% \end{macrocode}
+%\fi
+%
+%\subsection{Main Polish Module (\texttt{datetime2-polish.ldf})}
+%\changes{1.0}{2015-03-31}{Initial release}
+%
+%\iffalse
+% \begin{macrocode}
+%<*datetime2-polish.ldf>
+% \end{macrocode}
+%\fi
+%
+% Identify Module
+% \begin{macrocode}
+\ProvidesDateTimeModule{polish}[2018/08/21 v1.1]
+% \end{macrocode}
+% Need to find out if XeTeX or LuaTeX are being used.
+% \begin{macrocode}
+\RequirePackage{ifxetex,ifluatex}
+% \end{macrocode}
+% XeTeX and LuaTeX natively support UTF-8, so load
+% \texttt{polish-utf8} if either of those engines are used
+% otherwise load \texttt{polish-ascii}.
+% \begin{macrocode}
+\ifxetex
+ \RequireDateTimeModule{polish-utf8}
+\else
+ \ifluatex
+ \RequireDateTimeModule{polish-utf8}
+ \else
+ \RequireDateTimeModule{polish-ascii}
+ \fi
+\fi
+% \end{macrocode}
+%
+% Define the \texttt{polish} style.
+% The time style is the same as the "default" style
+% provided by \sty{datetime2}. This may need correcting. For
+% example, if a 12 hour style similar to the "englishampm" (from the
+% "english-base" module) is required.
+%
+% Allow the user a way of configuring the "polish" and
+% "polish-numeric" styles. This doesn't use the package wide
+% separators such as
+% \cs{dtm@datetimesep} in case other date formats are also required.
+%\begin{macro}{\DTMpolishdaymonthsep}
+% The separator between the day and month for the text format.
+% \begin{macrocode}
+\newcommand*{\DTMpolishdaymonthsep}{%
+ \DTMtexorpdfstring{\protect~}{\space}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMpolishmonthyearsep}
+% The separator between the month and year for the text format.
+% \begin{macrocode}
+\newcommand*{\DTMpolishmonthyearsep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMpolishdatetimesep}
+% The separator between the date and time blocks in the full format
+% (either text or numeric).
+% \begin{macrocode}
+\newcommand*{\DTMpolishdatetimesep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMpolishtimezonesep}
+% The separator between the time and zone blocks in the full format
+% (either text or numeric).
+% \begin{macrocode}
+\newcommand*{\DTMpolishtimezonesep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMpolishdatesep}
+% The separator for the numeric date format.
+% \begin{macrocode}
+\newcommand*{\DTMpolishdatesep}{.}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMpolishtimesep}
+% The separator for the numeric time format.
+% \begin{macrocode}
+\newcommand*{\DTMpolishtimesep}{:}
+% \end{macrocode}
+%\end{macro}
+%
+%Provide keys that can be used in \cs{DTMlangsetup} to set these
+%separators.
+% \begin{macrocode}
+\DTMdefkey{polish}{daymonthsep}{\renewcommand*{\DTMpolishdaymonthsep}{#1}}
+\DTMdefkey{polish}{monthyearsep}{\renewcommand*{\DTMpolishmonthyearsep}{#1}}
+\DTMdefkey{polish}{datetimesep}{\renewcommand*{\DTMpolishdatetimesep}{#1}}
+\DTMdefkey{polish}{timezonesep}{\renewcommand*{\DTMpolishtimezonesep}{#1}}
+\DTMdefkey{polish}{datesep}{\renewcommand*{\DTMpolishdatesep}{#1}}
+\DTMdefkey{polish}{timesep}{\renewcommand*{\DTMpolishtimesep}{#1}}
+% \end{macrocode}
+%
+% TODO: provide a boolean key to switch between full and abbreviated
+% formats if appropriate. (I don't know how the date should be
+% abbreviated.)
+%
+% Define a boolean key that determines if the time zone mappings
+% should be used.
+% \begin{macrocode}
+\DTMdefboolkey{polish}{mapzone}[true]{}
+% \end{macrocode}
+% The default is to use mappings.
+% \begin{macrocode}
+\DTMsetbool{polish}{mapzone}{true}
+% \end{macrocode}
+%
+% Define a boolean key that determines if the day of month should be
+% displayed.
+% \begin{macrocode}
+\DTMdefboolkey{polish}{showdayofmonth}[true]{}
+% \end{macrocode}
+% The default is to show the day of month.
+% \begin{macrocode}
+\DTMsetbool{polish}{showdayofmonth}{true}
+% \end{macrocode}
+%
+% Define a boolean key that determines if the year should be
+% displayed.
+% \begin{macrocode}
+\DTMdefboolkey{polish}{showyear}[true]{}
+% \end{macrocode}
+% The default is to show the year.
+% \begin{macrocode}
+\DTMsetbool{polish}{showyear}{true}
+% \end{macrocode}
+%
+% Define the "polish" style. (TODO: implement day of week?)
+% \begin{macrocode}
+\DTMnewstyle
+ {polish}% label
+ {% date style
+ \renewcommand*\DTMdisplaydate[4]{%
+ \DTMifbool{polish}{showdayofmonth}
+ {\DTMpolishordinal{##3}\DTMpolishdaymonthsep}%
+ {}%
+ \DTMpolishmonthname{##2}%
+ \DTMifbool{polish}{showyear}%
+ {%
+ \DTMpolishmonthyearsep
+ \number##1
+ }%
+ {}%
+ }%
+ \renewcommand*\DTMDisplaydate[4]{%
+ \DTMifbool{polish}{showdayofmonth}
+ {%
+ \DTMpolishordinal{##3}\DTMpolishdaymonthsep
+ \DTMpolishmonthname{##2}%
+ }%
+ {%
+ \DTMpolishMonthname{##2}%
+ }%
+ \DTMifbool{polish}{showyear}%
+ {%
+ \DTMpolishmonthyearsep
+ \number##1
+ }%
+ {}%
+ }%
+ }%
+ {% time style (use default)
+ \DTMsettimestyle{default}%
+ }%
+ {% zone style
+ \DTMresetzones
+ \DTMpolishzonemaps
+ \renewcommand*{\DTMdisplayzone}[2]{%
+ \DTMifbool{polish}{mapzone}%
+ {\DTMusezonemapordefault{##1}{##2}}%
+ {%
+ \ifnum##1<0 \else+\fi\DTMtwodigits{##1}%
+ \ifDTMshowzoneminutes\DTMpolishtimesep\DTMtwodigits{##2}\fi
+ }%
+ }%
+ }%
+ {% full style
+ \renewcommand*{\DTMdisplay}[9]{%
+ \ifDTMshowdate
+ \DTMdisplaydate{##1}{##2}{##3}{##4}%
+ \DTMpolishdatetimesep
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \DTMpolishtimezonesep
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+ \renewcommand*{\DTMDisplay}[9]{%
+ \ifDTMshowdate
+ \DTMDisplaydate{##1}{##2}{##3}{##4}%
+ \DTMpolishdatetimesep
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \DTMpolishtimezonesep
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+ }%
+% \end{macrocode}
+%
+% Define numeric style.
+% \begin{macrocode}
+\DTMnewstyle
+ {polish-numeric}% label
+ {% date style
+ \renewcommand*\DTMdisplaydate[4]{%
+ \DTMifbool{polish}{showdayofmonth}%
+ {%
+ \number##3 % space intended
+ \DTMpolishdatesep
+ }%
+ {}%
+ \number##2 % space intended
+ \DTMifbool{polish}{showyear}%
+ {%
+ \DTMpolishdatesep
+ \number##1 % space intended
+ }%
+ {}%
+ }%
+ \renewcommand*{\DTMDisplaydate}{\DTMdisplaydate}%
+ }%
+ {% time style
+ \renewcommand*\DTMdisplaytime[3]{%
+ \number##1 % space intended
+ \DTMpolishtimesep\DTMtwodigits{##2}%
+ \ifDTMshowseconds\DTMpolishtimesep\DTMtwodigits{##3}\fi
+ }%
+ }%
+ {% zone style
+ \DTMresetzones
+ \DTMpolishzonemaps
+ \renewcommand*{\DTMdisplayzone}[2]{%
+ \DTMifbool{polish}{mapzone}%
+ {\DTMusezonemapordefault{##1}{##2}}%
+ {%
+ \ifnum##1<0 \else+\fi\DTMtwodigits{##1}%
+ \ifDTMshowzoneminutes\DTMpolishtimesep\DTMtwodigits{##2}\fi
+ }%
+ }%
+ }%
+ {% full style
+ \renewcommand*{\DTMdisplay}[9]{%
+ \ifDTMshowdate
+ \DTMdisplaydate{##1}{##2}{##3}{##4}%
+ \DTMpolishdatetimesep
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \DTMpolishtimezonesep
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+ \renewcommand*{\DTMDisplay}{\DTMdisplay}%
+ }
+% \end{macrocode}
+%
+%\begin{macro}{\DTMpolishzonemaps}
+% The time zone mappings are set through this command, which can be
+% redefined if extra mappings are required or mappings need to be
+% removed.
+% \begin{macrocode}
+\newcommand*{\DTMpolishzonemaps}{%
+ \DTMdefzonemap{01}{00}{CET}%
+ \DTMdefzonemap{02}{00}{CEST}%
+}
+% \end{macrocode}
+%\end{macro}
+
+% Switch style according to the \opt{useregional} setting.
+% \begin{macrocode}
+\DTMifcaseregional
+{}% do nothing
+{\DTMsetstyle{polish}}
+{\DTMsetstyle{polish-numeric}}
+% \end{macrocode}
+%
+% Redefine \cs{datepolish} (or \cs{date}\meta{dialect}) to prevent
+% \sty{babel} from resetting \cs{today}. (For this to work,
+% \sty{babel} must already have been loaded if it's required.)
+%\changes{1.1}{2018-08-21}{removed spurious space}
+% \begin{macrocode}
+\ifcsundef{date\CurrentTrackedDialect}
+{%
+ \ifundef\datepolish
+ {% do nothing
+ }%
+ {%
+ \def\datepolish{%
+ \DTMifcaseregional
+ {}% do nothing
+ {\DTMsetstyle{polish}}%
+ {\DTMsetstyle{polish-numeric}}%
+ }%
+ }%
+}%
+{%
+ \csdef{date\CurrentTrackedDialect}{%
+ \DTMifcaseregional
+ {}% do nothing
+ {\DTMsetstyle{polish}}%
+ {\DTMsetstyle{polish-numeric}}%
+ }%
+}%
+% \end{macrocode}
+%\iffalse
+% \begin{macrocode}
+%</datetime2-polish.ldf>
+% \end{macrocode}
+%\fi
+%\Finale
+\endinput
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-polish/datetime2-polish.ins b/macros/latex/contrib/datetime2-contrib/datetime2-polish/datetime2-polish.ins
new file mode 100644
index 0000000000..fab8a364b7
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-polish/datetime2-polish.ins
@@ -0,0 +1,61 @@
+\input docstrip
+
+\preamble
+
+ datetime2-polish.dtx
+ Copyright 2018 Nicola Talbot
+
+ This work may be distributed and/or modified under the
+ conditions of the LaTeX Project Public License, either version 1.3
+ of this license of (at your option) any later version.
+ The latest version of this license is in
+ http://www.latex-project.org/lppl.txt
+ and version 1.3 or later is part of all distributions of LaTeX
+ version 2005/12/01 or later.
+
+ This work has the LPPL maintenance status `inactive'.
+
+ This work consists of the files datetime2-polish.dtx and
+ datetime2-polish.ins and the derived files
+ datetime2-polish-utf8.ldf, datetime2-polish-ascii.ldf and
+ datetime2-polish.ldf.
+
+\endpreamble
+
+\askforoverwritefalse
+
+\generate
+{%
+ \file
+ {datetime2-polish-utf8.ldf}%
+ {%
+ \usepreamble\defaultpreamble
+ \usepostamble\defaultpostamble
+ \from{datetime2-polish.dtx}{datetime2-polish-utf8.ldf,package}%
+ }%
+}
+
+\generate
+{%
+ \file
+ {datetime2-polish-ascii.ldf}%
+ {%
+ \usepreamble\defaultpreamble
+ \usepostamble\defaultpostamble
+ \from{datetime2-polish.dtx}{datetime2-polish-ascii.ldf,package}%
+ }%
+}
+
+\generate
+{%
+ \file
+ {datetime2-polish.ldf}%
+ {%
+ \usepreamble\defaultpreamble
+ \usepostamble\defaultpostamble
+ \from{datetime2-polish.dtx}{datetime2-polish.ldf,package}%
+ }%
+}
+
+\endbatchfile
+
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-polish/datetime2-polish.pdf b/macros/latex/contrib/datetime2-contrib/datetime2-polish/datetime2-polish.pdf
new file mode 100644
index 0000000000..e805d04b27
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-polish/datetime2-polish.pdf
Binary files differ
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-portuges/README b/macros/latex/contrib/datetime2-contrib/datetime2-portuges/README
new file mode 100644
index 0000000000..0685242aa5
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-portuges/README
@@ -0,0 +1,57 @@
+Portuguese Language Module for datetime2 Package
+
+Author: Nicola L. C. Talbot (inactive)
+
+Licence: LPPL
+
+Required Packages: datetime2, tracklang
+
+This module is unmaintained. If you want to volunteer to take over
+the maintenance contact me at www.dickimaw-books.com/contact.html
+
+Example usage:
+
+\documentclass{article}
+\usepackage[portuges]{datetime2}
+\begin{document}
+\today
+\end{document}
+
+\documentclass[portuges]{article}
+\usepackage{babel}
+\usepackage[useregional]{datetime2}
+\begin{document}
+\today
+\end{document}
+
+\documentclass{article}
+\usepackage{polyglossia}
+\setmainlanguage{portuges}
+\usepackage[portuges]{datetime2}
+\begin{document}
+\today
+\end{document}
+
+INSTALLATION
+============
+
+latex datetime2-portuges.ins
+
+Move all *.ldf files to
+TEXMF/tex/latex/datetime2-contrib/datetime2-portuges/
+
+Documentation:
+
+pdflatex datetime2-portuges.dtx
+makeindex -s gind.ist datetime2-portuges.idx
+makeindex -s gglo.ist -o datetime2-portuges.gls datetime2-portuges.glo
+pdflatex datetime2-portuges.dtx
+pdflatex datetime2-portuges.dtx
+
+Move datetime2-portuges.pdf and README to
+TEXMF/doc/latex/datetime2-contrib/datetime2-portuges/
+
+This material is subject to the LaTeX Project Public License.
+See http://www.ctan.org/license/lppl1.3 for the details of that
+license.
+
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-portuges/datetime2-portuges.dtx b/macros/latex/contrib/datetime2-contrib/datetime2-portuges/datetime2-portuges.dtx
new file mode 100644
index 0000000000..be213ac70f
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-portuges/datetime2-portuges.dtx
@@ -0,0 +1,652 @@
+%\iffalse
+%<*package>
+%% \CharacterTable
+%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+%% Digits \0\1\2\3\4\5\6\7\8\9
+%% Exclamation \! Double quote \" Hash (number) \#
+%% Dollar \$ Percent \% Ampersand \&
+%% Acute accent \' Left paren \( Right paren \)
+%% Asterisk \* Plus \+ Comma \,
+%% Minus \- Point \. Solidus \/
+%% Colon \: Semicolon \; Less than \<
+%% Equals \= Greater than \> Question mark \?
+%% Commercial at \@ Left bracket \[ Backslash \\
+%% Right bracket \] Circumflex \^ Underscore \_
+%% Grave accent \` Left brace \{ Vertical bar \|
+%% Right brace \} Tilde \~}
+%</package>
+%\fi
+% \iffalse
+% Doc-Source file to use with LaTeX2e
+% Copyright (C) 2015-2018 Nicola Talbot, all rights reserved.
+% (New maintainer add relevant lines here.)
+% \fi
+% \iffalse
+%<*driver>
+\documentclass{ltxdoc}
+
+\usepackage{alltt}
+\usepackage{graphicx}
+\usepackage[utf8]{inputenc}
+\usepackage[T1]{fontenc}
+\usepackage[colorlinks,
+ bookmarks,
+ hyperindex=false,
+ pdfauthor={Nicola L.C. Talbot},
+ pdftitle={datetime2.sty Portuguese Module}]{hyperref}
+
+
+\CheckSum{267}
+
+\renewcommand*{\usage}[1]{\hyperpage{#1}}
+\renewcommand*{\main}[1]{\hyperpage{#1}}
+\IndexPrologue{\section*{\indexname}\markboth{\indexname}{\indexname}}
+\setcounter{IndexColumns}{2}
+
+\newcommand*{\sty}[1]{\textsf{#1}}
+\newcommand*{\opt}[1]{\texttt{#1}\index{#1=\texttt{#1}|main}}
+
+\RecordChanges
+\PageIndex
+\CodelineNumbered
+
+\begin{document}
+\DocInput{datetime2-portuges.dtx}
+\end{document}
+%</driver>
+%\fi
+%
+%\MakeShortVerb{"}
+%
+%\title{Portuguese Module for datetime2 Package}
+%\author{Nicola L. C. Talbot (inactive)}
+%\date{2018-08-21 (v1.1)}
+%\maketitle
+%
+%This module is currently unmaintained and may be subject to change.
+%If you want to volunteer to take over maintenance, contact me at
+%\url{http://www.dickimaw-books.com/contact.html}
+%
+%\begin{abstract}
+%This is the Portuguese language module for the \sty{datetime2}
+%package. If you want to use the settings in this module you must
+%install it in addition to installing \sty{datetime2}. If you use
+%\sty{babel} or \sty{polyglossia}, you will need this module to
+%prevent them from redefining \cs{today}. The \sty{datetime2}
+% \opt{useregional} setting must be set to "text" or "numeric"
+% for the language styles to be set.
+% Alternatively, you can set the style in the document using
+% \cs{DTMsetstyle}, but this may be changed by \cs{date}\meta{language}
+% depending on the value of the \opt{useregional} setting.
+%\end{abstract}
+%
+%I've copied the date style from \texttt{babel-portuges}'s \cs{today}.
+%
+%I don't know if these settings are correct.
+%In particular, I don't know if the "portuges" time style is
+%correct. Currently this just uses the "default" time style. Please
+%be aware that this may change. Whoever takes over maintanance
+%of this module may can change it as appropriate.
+%
+%The new maintainer should add the line:
+%\begin{verbatim}
+% The Current Maintainer of this work is Name.
+%\end{verbatim}
+%to the preamble part in \texttt{datetime2-portuges.ins} where Name
+%is the name of the maintainer(s) and replace
+%the `inactive' status to `maintained'.
+%
+%Currently there is only a regionless style. New maintainers may
+%want to add regional variants such as "pt-PT"\slash"pt-PT-numeric",
+%"pt-BR"\slash"pt-BR-numeric" etc. This style currently doesn't check the
+%\opt{showdow} setting.
+%
+%\StopEventually{%
+%\clearpage
+%\phantomsection
+%\addcontentsline{toc}{section}{Change History}%
+%\PrintChanges
+%\addcontentsline{toc}{section}{\indexname}%
+%\PrintIndex}
+%\section{The Code}
+%\iffalse
+% \begin{macrocode}
+%<*datetime2-portuges-utf8.ldf>
+% \end{macrocode}
+%\fi
+%\subsection{UTF-8}
+%This file contains the settings that use UTF-8 characters. This
+%file is loaded if XeLaTeX or LuaLaTeX are used. Please make sure
+%your text editor is set to UTF-8 if you want to view this code.
+%\changes{1.0}{2015-03-28}{Initial release}
+% Identify module
+% \begin{macrocode}
+\ProvidesDateTimeModule{portuges-utf8}[2018/08/21 v1.1]
+% \end{macrocode}
+%\begin{macro}{\DTMportugesordinal}
+% \begin{macrocode}
+\newcommand*{\DTMportugesordinal}[1]{%
+ \number#1
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMportugesmonthname}
+% Portuguese month names.
+% \begin{macrocode}
+\newcommand*{\DTMportugesmonthname}[1]{%
+ \ifcase#1
+ \or
+ Janeiro%
+ \or
+ Fevereiro%
+ \or
+ MarƧo%
+ \or
+ Abril%
+ \or
+ Maio%
+ \or
+ Junho%
+ \or
+ Julho%
+ \or
+ Agosto%
+ \or
+ Setembro%
+ \or
+ Outubro%
+ \or
+ Novembro%
+ \or
+ Dezembro%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%If abbreviated dates are supported, short month names should be
+%likewise provided.
+%
+%\begin{macro}{\DTMportugesweekdayname}
+%These are provided here but not currently used in the date format.
+% \begin{macrocode}
+\newcommand*{\DTMportugesweekdayname}[1]{%
+ \ifcase#1
+ domingo%
+ \or
+ segunda-feira%
+ \or
+ terƧa-feira%
+ \or
+ quarta-feira%
+ \or
+ quinta-feira%
+ \or
+ sexta-feira%
+ \or
+ sabado%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMportugesWeekdayname}
+%As above but start with a capital.
+% \begin{macrocode}
+\newcommand*{\DTMportugesWeekdayname}[1]{%
+ \ifcase#1
+ Domingo%
+ \or
+ Segunda-feira%
+ \or
+ TerƧa-feira%
+ \or
+ Quarta-feira%
+ \or
+ Quinta-feira%
+ \or
+ Sexta-feira%
+ \or
+ Sabado%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\iffalse
+% \begin{macrocode}
+%</datetime2-portuges-utf8.ldf>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*datetime2-portuges-ascii.ldf>
+% \end{macrocode}
+%\fi
+%\subsection{ASCII}
+%This file contains the settings that use \LaTeX\ commands for
+%non-ASCII characters. This should be input if neither XeLaTeX nor
+%LuaLaTeX are used. Even if the user has loaded \sty{inputenc} with
+%"utf8", this file should still be used not the
+%\texttt{datetime2-portuges-utf8.ldf} file as the non-ASCII
+%characters are made active in that situation and would need
+%protecting against expansion.
+%\changes{1.0}{2015-03-28}{Initial release}
+% Identify module
+% \begin{macrocode}
+\ProvidesDateTimeModule{portuges-ascii}[2018/08/21 v1.1]
+% \end{macrocode}
+%
+%If abbreviated dates are supported, short month names should be
+%likewise provided.
+%\begin{macro}{\DTMportugesordinal}
+% \begin{macrocode}
+\newcommand*{\DTMportugesordinal}[1]{%
+ \number#1
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMportugesmonthname}
+% Portuguese month names.
+% \begin{macrocode}
+\newcommand*{\DTMportugesmonthname}[1]{%
+ \ifcase#1
+ \or
+ Janeiro%
+ \or
+ Fevereiro%
+ \or
+ Mar\protect\c{c}o%
+ \or
+ Abril%
+ \or
+ Maio%
+ \or
+ Junho%
+ \or
+ Julho%
+ \or
+ Agosto%
+ \or
+ Setembro%
+ \or
+ Outubro%
+ \or
+ Novembro%
+ \or
+ Dezembro%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMportugesweekdayname}
+%These are provided here but not currently used in the date format.
+% \begin{macrocode}
+\newcommand*{\DTMportugesweekdayname}[1]{%
+ \ifcase#1
+ domingo%
+ \or
+ segunda-feira%
+ \or
+ ter\protect\c{c}a-feira%
+ \or
+ quarta-feira%
+ \or
+ quinta-feira%
+ \or
+ sexta-feira%
+ \or
+ sabado%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMportugesWeekdayname}
+%As above but start with a capital.
+% \begin{macrocode}
+\newcommand*{\DTMportugesWeekdayname}[1]{%
+ \ifcase#1
+ Domingo%
+ \or
+ Segunda-feira%
+ \or
+ Ter\protect\c{c}a-feira%
+ \or
+ Quarta-feira%
+ \or
+ Quinta-feira%
+ \or
+ Sexta-feira%
+ \or
+ Sabado%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%
+%\iffalse
+% \begin{macrocode}
+%</datetime2-portuges-ascii.ldf>
+% \end{macrocode}
+%\fi
+%
+%\subsection{Main Portuguese Module (\texttt{datetime2-portuges.ldf})}
+%\changes{1.0}{2015-03-28}{Initial release}
+%
+%\iffalse
+% \begin{macrocode}
+%<*datetime2-portuges.ldf>
+% \end{macrocode}
+%\fi
+%
+% Identify Module
+% \begin{macrocode}
+\ProvidesDateTimeModule{portuges}[2018/08/21 v1.1]
+% \end{macrocode}
+% Need to find out if XeTeX or LuaTeX are being used.
+% \begin{macrocode}
+\RequirePackage{ifxetex,ifluatex}
+% \end{macrocode}
+% XeTeX and LuaTeX natively support UTF-8, so load
+% \texttt{portuges-utf8} if either of those engines are used
+% otherwise load \texttt{portuges-ascii}.
+% \begin{macrocode}
+\ifxetex
+ \RequireDateTimeModule{portuges-utf8}
+\else
+ \ifluatex
+ \RequireDateTimeModule{portuges-utf8}
+ \else
+ \RequireDateTimeModule{portuges-ascii}
+ \fi
+\fi
+% \end{macrocode}
+%
+% Define the \texttt{portuges} style.
+% The time style is the same as the "default" style
+% provided by \sty{datetime2}. This may need correcting.
+%
+% Allow the user a way of configuring the "portuges" and
+% "portuges-numeric" styles. This doesn't use the package wide
+% separators such as
+% \cs{dtm@datetimesep} in case other date formats are also required.
+%\begin{macro}{\DTMportugesdaymonthsep}
+% The separator between the day and month for the text format.
+% \begin{macrocode}
+\newcommand*{\DTMportugesdaymonthsep}{\space de\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMportugesmonthyearsep}
+% The separator between the month and year for the text format.
+% \begin{macrocode}
+\newcommand*{\DTMportugesmonthyearsep}{\space de\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMportugesdatetimesep}
+% The separator between the date and time blocks in the full format
+% (either text or numeric).
+% \begin{macrocode}
+\newcommand*{\DTMportugesdatetimesep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMportugestimezonesep}
+% The separator between the time and zone blocks in the full format
+% (either text or numeric).
+% \begin{macrocode}
+\newcommand*{\DTMportugestimezonesep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMportugesdatesep}
+% The separator for the numeric date format.
+% \begin{macrocode}
+\newcommand*{\DTMportugesdatesep}{/}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMportugestimesep}
+% The separator for the numeric time format.
+% \begin{macrocode}
+\newcommand*{\DTMportugestimesep}{:}
+% \end{macrocode}
+%\end{macro}
+%
+%Provide keys that can be used in \cs{DTMlangsetup} to set these
+%separators.
+% \begin{macrocode}
+\DTMdefkey{portuges}{daymonthsep}{\renewcommand*{\DTMportugesdaymonthsep}{#1}}
+\DTMdefkey{portuges}{monthyearsep}{\renewcommand*{\DTMportugesmonthyearsep}{#1}}
+\DTMdefkey{portuges}{datetimesep}{\renewcommand*{\DTMportugesdatetimesep}{#1}}
+\DTMdefkey{portuges}{timezonesep}{\renewcommand*{\DTMportugestimezonesep}{#1}}
+\DTMdefkey{portuges}{datesep}{\renewcommand*{\DTMportugesdatesep}{#1}}
+\DTMdefkey{portuges}{timesep}{\renewcommand*{\DTMportugestimesep}{#1}}
+% \end{macrocode}
+%
+% TODO: provide a boolean key to switch between full and abbreviated
+% formats if appropriate. (I don't know how the date should be
+% abbreviated.)
+%
+% Define a boolean key that determines if the time zone mappings
+% should be used.
+% \begin{macrocode}
+\DTMdefboolkey{portuges}{mapzone}[true]{}
+% \end{macrocode}
+% The default is to use mappings.
+% \begin{macrocode}
+\DTMsetbool{portuges}{mapzone}{true}
+% \end{macrocode}
+%
+% Define a boolean key that determines if the day of month should be
+% displayed.
+% \begin{macrocode}
+\DTMdefboolkey{portuges}{showdayofmonth}[true]{}
+% \end{macrocode}
+% The default is to show the day of month.
+% \begin{macrocode}
+\DTMsetbool{portuges}{showdayofmonth}{true}
+% \end{macrocode}
+%
+% Define a boolean key that determines if the year should be
+% displayed.
+% \begin{macrocode}
+\DTMdefboolkey{portuges}{showyear}[true]{}
+% \end{macrocode}
+% The default is to show the year.
+% \begin{macrocode}
+\DTMsetbool{portuges}{showyear}{true}
+% \end{macrocode}
+%
+% Define the "portuges" style. (TODO: implement day of week?)
+% \begin{macrocode}
+\DTMnewstyle
+ {portuges}% label
+ {% date style
+ \renewcommand*\DTMdisplaydate[4]{%
+ \DTMifbool{portuges}{showdayofmonth}
+ {\DTMportugesordinal{##3}\DTMportugesdaymonthsep}%
+ {}%
+ \DTMportugesmonthname{##2}%
+ \DTMifbool{portuges}{showyear}%
+ {%
+ \DTMportugesmonthyearsep
+ \number##1 % space intended
+ }%
+ {}%
+ }%
+ \renewcommand*\DTMDisplaydate[4]{%
+ \DTMifbool{portuges}{showdayofmonth}
+ {%
+ \DTMportugesordinal{##3}\DTMportugesdaymonthsep
+ \DTMportugesmonthname{##2}%
+ }%
+ {\DTMportugesmonthname{##2}}%
+ \DTMifbool{portuges}{showyear}%
+ {%
+ \DTMportugesmonthyearsep
+ \number##1 % space intended
+ }%
+ {}%
+ }%
+ }%
+ {% time style (use default)
+ \DTMsettimestyle{default}%
+ }%
+ {% zone style
+ \DTMresetzones
+ \DTMportugeszonemaps
+ \renewcommand*{\DTMdisplayzone}[2]{%
+ \DTMifbool{portuges}{mapzone}%
+ {\DTMusezonemapordefault{##1}{##2}}%
+ {%
+ \ifnum##1<0 \else+\fi\DTMtwodigits{##1}%
+ \ifDTMshowzoneminutes\DTMportugestimesep\DTMtwodigits{##2}\fi
+ }%
+ }%
+ }%
+ {% full style
+ \renewcommand*{\DTMdisplay}[9]{%
+ \ifDTMshowdate
+ \DTMdisplaydate{##1}{##2}{##3}{##4}%
+ \DTMportugesdatetimesep
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \DTMportugestimezonesep
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+ \renewcommand*{\DTMDisplay}[9]{%
+ \ifDTMshowdate
+ \DTMDisplaydate{##1}{##2}{##3}{##4}%
+ \DTMportugesdatetimesep
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \DTMportugestimezonesep
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+ }%
+% \end{macrocode}
+%
+% Define numeric style.
+% \begin{macrocode}
+\DTMnewstyle
+ {portuges-numeric}% label
+ {% date style
+ \renewcommand*\DTMdisplaydate[4]{%
+ \DTMifbool{portuges}{showdayofmonth}%
+ {%
+ \number##3 % space intended
+ \DTMportugesdatesep
+ }%
+ {}%
+ \number##2 % space intended
+ \DTMifbool{portuges}{showyear}%
+ {%
+ \DTMportugesdatesep
+ \number##1 % space intended
+ }%
+ {}%
+ }%
+ \renewcommand*{\DTMDisplaydate}[4]{\DTMdisplaydate{##1}{##2}{##3}{##4}}%
+ }%
+ {% time style
+ \renewcommand*\DTMdisplaytime[3]{%
+ \number##1 % space intended
+ \DTMportugestimesep\DTMtwodigits{##2}%
+ \ifDTMshowseconds\DTMportugestimesep\DTMtwodigits{##3}\fi
+ }%
+ }%
+ {% zone style
+ \DTMresetzones
+ \DTMportugeszonemaps
+ \renewcommand*{\DTMdisplayzone}[2]{%
+ \DTMifbool{portuges}{mapzone}%
+ {\DTMusezonemapordefault{##1}{##2}}%
+ {%
+ \ifnum##1<0 \else+\fi\DTMtwodigits{##1}%
+ \ifDTMshowzoneminutes\DTMportugestimesep\DTMtwodigits{##2}\fi
+ }%
+ }%
+ }%
+ {% full style
+ \renewcommand*{\DTMdisplay}[9]{%
+ \ifDTMshowdate
+ \DTMdisplaydate{##1}{##2}{##3}{##4}%
+ \DTMportugesdatetimesep
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \DTMportugestimezonesep
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+ \renewcommand*{\DTMDisplay}{\DTMdisplay}%
+ }
+% \end{macrocode}
+%
+%\begin{macro}{\DTMportugeszonemaps}
+% The time zone mappings are set through this command, which can be
+% redefined if extra mappings are required or mappings need to be
+% removed.
+% \begin{macrocode}
+\newcommand*{\DTMportugeszonemaps}{%
+ \DTMdefzonemap{01}{00}{CET}%
+ \DTMdefzonemap{02}{00}{CEST}%
+}
+% \end{macrocode}
+%\end{macro}
+
+% Switch style according to the \opt{useregional} setting.
+% \begin{macrocode}
+\DTMifcaseregional
+{}% do nothing
+{\DTMsetstyle{portuges}}
+{\DTMsetstyle{portuges-numeric}}
+% \end{macrocode}
+%
+% Redefine \cs{dateportuges} (or \cs{date}\meta{dialect}) to prevent
+% \sty{babel} from resetting \cs{today}. (For this to work,
+% \sty{babel} must already have been loaded if it's required.)
+%\changes{1.1}{2018-08-21}{removed spurious space}
+% \begin{macrocode}
+\ifcsundef{date\CurrentTrackedDialect}
+{%
+ \ifundef\dateportuges
+ {% do nothing
+ }%
+ {%
+ \def\dateportuges{%
+ \DTMifcaseregional
+ {}% do nothing
+ {\DTMsetstyle{portuges}}%
+ {\DTMsetstyle{portuges-numeric}}%
+ }%
+ }%
+}%
+{%
+ \csdef{date\CurrentTrackedDialect}{%
+ \DTMifcaseregional
+ {}% do nothing
+ {\DTMsetstyle{portuges}}%
+ {\DTMsetstyle{portuges-numeric}}%
+ }%
+}%
+% \end{macrocode}
+%\iffalse
+% \begin{macrocode}
+%</datetime2-portuges.ldf>
+% \end{macrocode}
+%\fi
+%\Finale
+\endinput
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-portuges/datetime2-portuges.ins b/macros/latex/contrib/datetime2-contrib/datetime2-portuges/datetime2-portuges.ins
new file mode 100644
index 0000000000..51f163bbf5
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-portuges/datetime2-portuges.ins
@@ -0,0 +1,61 @@
+\input docstrip
+
+\preamble
+
+ datetime2-portuges.dtx
+ Copyright 2018 Nicola Talbot
+
+ This work may be distributed and/or modified under the
+ conditions of the LaTeX Project Public License, either version 1.3
+ of this license of (at your option) any later version.
+ The latest version of this license is in
+ http://www.latex-project.org/lppl.txt
+ and version 1.3 or later is part of all distributions of LaTeX
+ version 2005/12/01 or later.
+
+ This work has the LPPL maintenance status `inactive'.
+
+ This work consists of the files datetime2-portuges.dtx and
+ datetime2-portuges.ins and the derived files
+ datetime2-portuges-utf8.ldf, datetime2-portuges-ascii.ldf and
+ datetime2-portuges.ldf.
+
+\endpreamble
+
+\askforoverwritefalse
+
+\generate
+{%
+ \file
+ {datetime2-portuges-utf8.ldf}%
+ {%
+ \usepreamble\defaultpreamble
+ \usepostamble\defaultpostamble
+ \from{datetime2-portuges.dtx}{datetime2-portuges-utf8.ldf,package}%
+ }%
+}
+
+\generate
+{%
+ \file
+ {datetime2-portuges-ascii.ldf}%
+ {%
+ \usepreamble\defaultpreamble
+ \usepostamble\defaultpostamble
+ \from{datetime2-portuges.dtx}{datetime2-portuges-ascii.ldf,package}%
+ }%
+}
+
+\generate
+{%
+ \file
+ {datetime2-portuges.ldf}%
+ {%
+ \usepreamble\defaultpreamble
+ \usepostamble\defaultpostamble
+ \from{datetime2-portuges.dtx}{datetime2-portuges.ldf,package}%
+ }%
+}
+
+\endbatchfile
+
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-portuges/datetime2-portuges.pdf b/macros/latex/contrib/datetime2-contrib/datetime2-portuges/datetime2-portuges.pdf
new file mode 100644
index 0000000000..e4d10b8016
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-portuges/datetime2-portuges.pdf
Binary files differ
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-romanian/README b/macros/latex/contrib/datetime2-contrib/datetime2-romanian/README
new file mode 100644
index 0000000000..770025f5f1
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-romanian/README
@@ -0,0 +1,55 @@
+Romanian Language Module for datetime2 Package
+
+Author: Nicola L. C. Talbot (inactive)
+ Paul A. Patience <pap@papatience.com>
+
+Licence: LPPL
+
+Required Packages: datetime2, tracklang
+
+Example usage:
+
+\documentclass{article}
+\usepackage[romanian]{datetime2}
+\begin{document}
+\today
+\end{document}
+
+\documentclass[romanian]{article}
+\usepackage{babel}
+\usepackage[useregional]{datetime2}
+\begin{document}
+\today
+\end{document}
+
+\documentclass{article}
+\usepackage{polyglossia}
+\setmainlanguage{romanian}
+\usepackage[romanian]{datetime2}
+\begin{document}
+\today
+\end{document}
+
+INSTALLATION
+============
+
+xelatex datetime2-romanian.ins
+
+Move all *.ldf files to
+TEXMF/tex/latex/datetime2-contrib/datetime2-romanian/
+
+Documentation:
+
+xelatex datetime2-romanian.dtx
+makeindex -s gind.ist datetime2-romanian.idx
+makeindex -s gglo.ist -o datetime2-romanian.gls datetime2-romanian.glo
+xelatex datetime2-romanian.dtx
+xelatex datetime2-romanian.dtx
+
+Move datetime2-romanian.pdf and README to
+TEXMF/doc/latex/datetime2-contrib/datetime2-romanian/
+
+This material is subject to the LaTeX Project Public License.
+See http://www.ctan.org/license/lppl1.3 for the details of that
+license.
+
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-romanian/datetime2-romanian-test-luatex.pdf b/macros/latex/contrib/datetime2-contrib/datetime2-romanian/datetime2-romanian-test-luatex.pdf
new file mode 100644
index 0000000000..30d6a8a874
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-romanian/datetime2-romanian-test-luatex.pdf
Binary files differ
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-romanian/datetime2-romanian-test-luatex.tex b/macros/latex/contrib/datetime2-contrib/datetime2-romanian/datetime2-romanian-test-luatex.tex
new file mode 100644
index 0000000000..44b814279e
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-romanian/datetime2-romanian-test-luatex.tex
@@ -0,0 +1,9 @@
+% arara: lualatex
+\documentclass{article}
+
+\usepackage{fontspec}
+\usepackage{polyglossia}
+\setdefaultlanguage{romanian}
+\setotherlanguage{english}
+
+\input{datetime2-romanian-test}
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-romanian/datetime2-romanian-test-pdftex.pdf b/macros/latex/contrib/datetime2-contrib/datetime2-romanian/datetime2-romanian-test-pdftex.pdf
new file mode 100644
index 0000000000..c064957ed4
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-romanian/datetime2-romanian-test-pdftex.pdf
Binary files differ
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-romanian/datetime2-romanian-test-pdftex.tex b/macros/latex/contrib/datetime2-contrib/datetime2-romanian/datetime2-romanian-test-pdftex.tex
new file mode 100644
index 0000000000..1022b3396f
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-romanian/datetime2-romanian-test-pdftex.tex
@@ -0,0 +1,8 @@
+% arara: pdflatex
+\documentclass[english,romanian]{article}
+
+\usepackage[utf8]{inputenc}
+\usepackage[T1]{fontenc}
+\usepackage[english,main=romanian]{babel}
+
+\input{datetime2-romanian-test}
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-romanian/datetime2-romanian-test-xetex.pdf b/macros/latex/contrib/datetime2-contrib/datetime2-romanian/datetime2-romanian-test-xetex.pdf
new file mode 100644
index 0000000000..57f7fb8867
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-romanian/datetime2-romanian-test-xetex.pdf
Binary files differ
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-romanian/datetime2-romanian-test-xetex.tex b/macros/latex/contrib/datetime2-contrib/datetime2-romanian/datetime2-romanian-test-xetex.tex
new file mode 100644
index 0000000000..aaa2945091
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-romanian/datetime2-romanian-test-xetex.tex
@@ -0,0 +1,9 @@
+% arara: xelatex
+\documentclass{article}
+
+\usepackage{fontspec}
+\usepackage{polyglossia}
+\setdefaultlanguage{romanian}
+\setotherlanguage{english}
+
+\input{datetime2-romanian-test}
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-romanian/datetime2-romanian-test.tex b/macros/latex/contrib/datetime2-contrib/datetime2-romanian/datetime2-romanian-test.tex
new file mode 100644
index 0000000000..a6ab118e86
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-romanian/datetime2-romanian-test.tex
@@ -0,0 +1,30 @@
+\usepackage[en-GB,en-US]{datetime2}
+
+\newcommand*{\teststyle}[1]{%
+ \DTMsetstyle{#1}
+ \texttt{#1}:\par
+ \DTMnow\par
+ \DTMNow\par
+}
+
+\newcommand*{\testall}[1]{%
+ \DTMlangsetup*{#1}
+ \texttt{#1}:\par
+ \teststyle{default}
+ \teststyle{iso}
+ \teststyle{english}
+ \teststyle{en-GB}
+ \teststyle{en-GB-numeric}
+ \teststyle{en-US}
+ \teststyle{en-US-numeric}
+ \teststyle{romanian}
+ \teststyle{romanian-numeric}
+}
+
+\begin{document}
+
+\testall{showdayofmonth=true,abbr=false}
+\testall{showdayofmonth=false}
+\testall{abbr=true}
+
+\end{document}
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-romanian/datetime2-romanian.dtx b/macros/latex/contrib/datetime2-contrib/datetime2-romanian/datetime2-romanian.dtx
new file mode 100644
index 0000000000..a923e58338
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-romanian/datetime2-romanian.dtx
@@ -0,0 +1,1013 @@
+%\iffalse
+%<*package>
+%% \CharacterTable
+%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+%% Digits \0\1\2\3\4\5\6\7\8\9
+%% Exclamation \! Double quote \" Hash (number) \#
+%% Dollar \$ Percent \% Ampersand \&
+%% Acute accent \' Left paren \( Right paren \)
+%% Asterisk \* Plus \+ Comma \,
+%% Minus \- Point \. Solidus \/
+%% Colon \: Semicolon \; Less than \<
+%% Equals \= Greater than \> Question mark \?
+%% Commercial at \@ Left bracket \[ Backslash \\
+%% Right bracket \] Circumflex \^ Underscore \_
+%% Grave accent \` Left brace \{ Vertical bar \|
+%% Right brace \} Tilde \~}
+%</package>
+%\fi
+% \iffalse
+% Doc-Source file to use with LaTeX2e
+% Copyright (C) 2015 Nicola Talbot, all rights reserved.
+% Copyright (C) 2017 Paul A. Patience <pap@papatience.com>, all rights reserved.
+% \fi
+% \iffalse
+%<*driver>
+\documentclass{ltxdoc}
+
+\usepackage{alltt}
+\usepackage{graphicx}
+\usepackage{fontspec}
+\usepackage[colorlinks,
+ bookmarks,
+ hyperindex=false,
+ pdfauthor={Nicola L.C. Talbot and Paul A. Patience},
+ pdftitle={datetime2.sty Romanian Module}]{hyperref}
+
+\setmainfont{Liberation Serif}
+\setmonofont{Liberation Mono}
+
+\CheckSum{478}
+
+\renewcommand*{\usage}[1]{\hyperpage{#1}}
+\renewcommand*{\main}[1]{\hyperpage{#1}}
+\IndexPrologue{\section*{\indexname}\markboth{\indexname}{\indexname}}
+\setcounter{IndexColumns}{2}
+
+\newcommand*{\sty}[1]{\textsf{#1}}
+\newcommand*{\opt}[1]{\texttt{#1}\index{#1=\texttt{#1}|main}}
+
+\RecordChanges
+\PageIndex
+\CodelineNumbered
+
+\begin{document}
+\DocInput{datetime2-romanian.dtx}
+\end{document}
+%</driver>
+%\fi
+%
+%\MakeShortVerb{"}
+%
+%\title{Romanian Module for datetime2 Package}
+%\author{Nicola L. C. Talbot (inactive) \\
+% Paul A. Patience\thanks{E-mail: pap@papatience.com}}
+%\date{2017-04-08 (v1.01)}
+%\maketitle
+%
+%\begin{abstract}
+%This is the Romanian language module for the \sty{datetime2}
+%package. If you want to use the settings in this module you must
+%install it in addition to installing \sty{datetime2}. If you use
+%\sty{babel} or \sty{polyglossia}, you will need this module to
+%prevent them from redefining \cs{today}. The \sty{datetime2}
+% \opt{useregional} setting must be set to "text" or "numeric"
+% for the language styles to be set.
+% Alternatively, you can set the style in the document using
+% \cs{DTMsetstyle}, but this may be changed by \cs{date}\meta{language}
+% depending on the value of the \opt{useregional} setting.
+%\end{abstract}
+%
+%\StopEventually{%
+%\clearpage
+%\phantomsection
+%\addcontentsline{toc}{section}{Change History}%
+%\PrintChanges
+%\addcontentsline{toc}{section}{\indexname}%
+%\PrintIndex}
+%\section{The Code}
+%\iffalse
+% \begin{macrocode}
+%<*datetime2-romanian-utf8.ldf>
+% \end{macrocode}
+%\fi
+%\subsection{UTF-8}
+%This file contains the settings that use UTF-8 characters. This
+%file is loaded if XeLaTeX or LuaLaTeX are used. Please make sure
+%your text editor is set to UTF-8 if you want to view this code.
+%\changes{1.0}{2015-03-31}{Initial release}
+% Identify module
+% \begin{macrocode}
+\ProvidesDateTimeModule{romanian-utf8}[2017/04/08 v1.01]
+% \end{macrocode}
+%\begin{macro}{\DTMromanianordinal}
+% \begin{macrocode}
+\newcommand*{\DTMromanianordinal}[1]{%
+ \number#1
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMromanianmonthname}
+% Romanian month names.
+% \begin{macrocode}
+\newcommand*{\DTMromanianmonthname}[1]{%
+ \ifcase#1
+ \or
+ ianuarie%
+ \or
+ februarie%
+ \or
+ martie%
+ \or
+ aprilie%
+ \or
+ mai%
+ \or
+ iunie%
+ \or
+ iulie%
+ \or
+ august%
+ \or
+ septembrie%
+ \or
+ octombrie%
+ \or
+ noiembrie%
+ \or
+ decembrie%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMromanianMonthname}
+% As above but start with a capital.
+% \begin{macrocode}
+\newcommand*{\DTMromanianMonthname}[1]{%
+ \ifcase#1
+ \or
+ Ianuarie%
+ \or
+ Februarie%
+ \or
+ Martie%
+ \or
+ Aprilie%
+ \or
+ Mai%
+ \or
+ Iunie%
+ \or
+ Iulie%
+ \or
+ August%
+ \or
+ Septembrie%
+ \or
+ Octombrie%
+ \or
+ Noiembrie%
+ \or
+ Decembrie%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMromanianshortmonthname}
+% Abbreviated Romanian month names.
+%\changes{1.01}{2017-04-08}{Add abbreviated month names}
+% \begin{macrocode}
+\newcommand*{\DTMromanianshortmonthname}[1]{%
+ \ifcase#1
+ \or
+ ian.%
+ \or
+ feb.%
+ \or
+ mart.%
+ \or
+ apr.%
+ \or
+ mai%
+ \or
+ iun.%
+ \or
+ iul.%
+ \or
+ aug.%
+ \or
+ sept.%
+ \or
+ oct.%
+ \or
+ nov.%
+ \or
+ dec.%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMromanianshortMonthname}
+% As above but start with a capital.
+% \begin{macrocode}
+\newcommand*{\DTMromanianshortMonthname}[1]{%
+ \ifcase#1
+ \or
+ Ian.%
+ \or
+ Feb.%
+ \or
+ Mart.%
+ \or
+ Apr.%
+ \or
+ Mai%
+ \or
+ Iun.%
+ \or
+ Iul.%
+ \or
+ Aug.%
+ \or
+ Sept.%
+ \or
+ Oct.%
+ \or
+ Nov.%
+ \or
+ Dec.%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMromanianweekdayname}
+% Romanian day of week names.
+%\changes{1.01}{2017-04-08}{Use T-comma}
+% \begin{macrocode}
+\newcommand*{\DTMromanianweekdayname}[1]{%
+ \ifcase#1
+ luni%
+ \or
+ marți%
+ \or
+ miercuri%
+ \or
+ joi%
+ \or
+ vineri%
+ \or
+ sĆ¢mbătă%
+ \or
+ duminică%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMromanianWeekdayname}
+% As above but start with a capital.
+% \begin{macrocode}
+\newcommand*{\DTMromanianWeekdayname}[1]{%
+ \ifcase#1
+ Luni%
+ \or
+ Marți%
+ \or
+ Miercuri%
+ \or
+ Joi%
+ \or
+ Vineri%
+ \or
+ SĆ¢mbătă%
+ \or
+ Duminică%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMromanianshortweekdayname}
+% Abbreviated Romanian day of week names.
+%\changes{1.01}{2017-04-08}{Add abbreviated day of week names}
+% \begin{macrocode}
+\newcommand*{\DTMromanianshortweekdayname}[1]{%
+ \ifcase#1
+ lun.%
+ \or
+ mar.%
+ \or
+ mie.%
+ \or
+ joi%
+ \or
+ vin.%
+ \or
+ sĆ¢m.%
+ \or
+ dum.%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMromanianshortWeekdayname}
+% As above but start with a capital.
+% \begin{macrocode}
+\newcommand*{\DTMromanianshortWeekdayname}[1]{%
+ \ifcase#1
+ Lun.%
+ \or
+ Mar.%
+ \or
+ Mie.%
+ \or
+ Joi%
+ \or
+ Vin.%
+ \or
+ SĆ¢m.%
+ \or
+ Dum.%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\iffalse
+% \begin{macrocode}
+%</datetime2-romanian-utf8.ldf>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*datetime2-romanian-ascii.ldf>
+% \end{macrocode}
+%\fi
+%\subsection{ASCII}
+%This file contains the settings that use \LaTeX\ commands for
+%non-ASCII characters. This should be input if neither XeLaTeX nor
+%LuaLaTeX are used. Even if the user has loaded \sty{inputenc} with
+%"utf8", this file should still be used not the
+%\texttt{datetime2-romanian-utf8.ldf} file as the non-ASCII
+%characters are made active in that situation and would need
+%protecting against expansion.
+%\changes{1.0}{2015-03-31}{Initial release}
+% Identify module
+% \begin{macrocode}
+\ProvidesDateTimeModule{romanian-ascii}[2017/04/08 v1.01]
+% \end{macrocode}
+%
+%\begin{macro}{\DTMromanianordinal}
+% \begin{macrocode}
+\newcommand*{\DTMromanianordinal}[1]{%
+ \number#1
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMromanianmonthname}
+% Romanian month names.
+% \begin{macrocode}
+\newcommand*{\DTMromanianmonthname}[1]{%
+ \ifcase#1
+ \or
+ ianuarie%
+ \or
+ februarie%
+ \or
+ martie%
+ \or
+ aprilie%
+ \or
+ mai%
+ \or
+ iunie%
+ \or
+ iulie%
+ \or
+ august%
+ \or
+ septembrie%
+ \or
+ octombrie%
+ \or
+ noiembrie%
+ \or
+ decembrie%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMromanianMonthname}
+% As above but start with a capital.
+% \begin{macrocode}
+\newcommand*{\DTMromanianMonthname}[1]{%
+ \ifcase#1
+ \or
+ Ianuarie%
+ \or
+ Februarie%
+ \or
+ Martie%
+ \or
+ Aprilie%
+ \or
+ Mai%
+ \or
+ Iunie%
+ \or
+ Iulie%
+ \or
+ August%
+ \or
+ Septembrie%
+ \or
+ Octombrie%
+ \or
+ Noiembrie%
+ \or
+ Decembrie%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMromanianshortmonthname}
+% Abbreviated Romanian month names.
+%\changes{1.01}{2017-04-08}{Add abbreviated month names}
+% \begin{macrocode}
+\newcommand*{\DTMromanianshortmonthname}[1]{%
+ \ifcase#1
+ \or
+ ian.%
+ \or
+ feb.%
+ \or
+ mart.%
+ \or
+ apr.%
+ \or
+ mai%
+ \or
+ iun.%
+ \or
+ iul.%
+ \or
+ aug.%
+ \or
+ sept.%
+ \or
+ oct.%
+ \or
+ nov.%
+ \or
+ dec.%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMromanianshortMonthname}
+% As above but start with a capital.
+% \begin{macrocode}
+\newcommand*{\DTMromanianshortMonthname}[1]{%
+ \ifcase#1
+ \or
+ Ian.%
+ \or
+ Feb.%
+ \or
+ Mart.%
+ \or
+ Apr.%
+ \or
+ Mai%
+ \or
+ Iun.%
+ \or
+ Iul.%
+ \or
+ Aug.%
+ \or
+ Sept.%
+ \or
+ Oct.%
+ \or
+ Nov.%
+ \or
+ Dec.%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMromanianweekdayname}
+% Romanian day of week names.
+% \begin{macrocode}
+\newcommand*{\DTMromanianweekdayname}[1]{%
+ \ifcase#1
+ luni%
+ \or
+ mar\protect\c ti%
+ \or
+ miercuri%
+ \or
+ joi%
+ \or
+ vineri%
+ \or
+ s\protect\^amb\protect\u at\protect\u a%
+ \or
+ duminic\protect\u a%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMromanianWeekdayname}
+% As above but start with a capital.
+% \begin{macrocode}
+\newcommand*{\DTMromanianWeekdayname}[1]{%
+ \ifcase#1
+ Luni%
+ \or
+ Mar\protect\c ti%
+ \or
+ Miercuri%
+ \or
+ Joi%
+ \or
+ Vineri%
+ \or
+ S\protect\^amb\protect\u at\protect\u a%
+ \or
+ Duminic\protect\u a%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMromanianshortweekdayname}
+% Abbreviated Romanian day of week names.
+%\changes{1.01}{2017-04-08}{Add abbreviated day of week names}
+% \begin{macrocode}
+\newcommand*{\DTMromanianshortweekdayname}[1]{%
+ \ifcase#1
+ lun.%
+ \or
+ mar.%
+ \or
+ mie.%
+ \or
+ joi%
+ \or
+ vin.%
+ \or
+ s\protect\^am.%
+ \or
+ dum.%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMromanianshortWeekdayname}
+% As above but start with a capital.
+% \begin{macrocode}
+\newcommand*{\DTMromanianshortWeekdayname}[1]{%
+ \ifcase#1
+ Lun.%
+ \or
+ Mar.%
+ \or
+ Mie.%
+ \or
+ Joi%
+ \or
+ Vin.%
+ \or
+ S\protect\^am.%
+ \or
+ Dum.%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\iffalse
+% \begin{macrocode}
+%</datetime2-romanian-ascii.ldf>
+% \end{macrocode}
+%\fi
+%
+%\subsection{Main Romanian Module (\texttt{datetime2-romanian.ldf})}
+%\changes{1.0}{2015-03-31}{Initial release}
+%
+%\iffalse
+% \begin{macrocode}
+%<*datetime2-romanian.ldf>
+% \end{macrocode}
+%\fi
+%
+% Identify Module
+% \begin{macrocode}
+\ProvidesDateTimeModule{romanian}[2017/04/08 v1.01]
+% \end{macrocode}
+% Need to find out if XeTeX or LuaTeX are being used.
+% \begin{macrocode}
+\RequirePackage{ifxetex,ifluatex}
+% \end{macrocode}
+% XeTeX and LuaTeX natively support UTF-8, so load
+% \texttt{romanian-utf8} if either of those engines are used
+% otherwise load \texttt{romanian-ascii}.
+% \begin{macrocode}
+\ifxetex
+ \RequireDateTimeModule{romanian-utf8}
+\else
+ \ifluatex
+ \RequireDateTimeModule{romanian-utf8}
+ \else
+ \RequireDateTimeModule{romanian-ascii}
+ \fi
+\fi
+% \end{macrocode}
+%
+% Define the \texttt{romanian} style.
+% The time style is the same as the "default" style
+% provided by \sty{datetime2}. This may need correcting. For
+% example, if a 12 hour style similar to the "englishampm" (from the
+% "english-base" module) is required.
+%
+% Allow the user a way of configuring the "romanian" and
+% "romanian-numeric" styles. This doesn't use the package wide
+% separators such as
+% \cs{dtm@datetimesep} in case other date formats are also required.
+%
+%\begin{macro}{\DTMromaniandowdaysep}
+% The separator between the day of week name and the day of month
+% number for the text format.
+%\changes{1.01}{2017-04-08}{Add support for showdow}
+% \begin{macrocode}
+\newcommand*{\DTMromaniandowdaysep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMromaniandaymonthsep}
+% The separator between the day and month for the text format.
+% \begin{macrocode}
+\newcommand*{\DTMromaniandaymonthsep}{%
+ \DTMtexorpdfstring{\protect~}{\space}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMromanianmonthyearsep}
+% The separator between the month and year for the text format.
+% \begin{macrocode}
+\newcommand*{\DTMromanianmonthyearsep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMromaniandatetimesep}
+% The separator between the date and time blocks in the full format
+% (either text or numeric).
+% \begin{macrocode}
+\newcommand*{\DTMromaniandatetimesep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMromaniantimezonesep}
+% The separator between the time and zone blocks in the full format
+% (either text or numeric).
+% \begin{macrocode}
+\newcommand*{\DTMromaniantimezonesep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMromaniandatesep}
+% The separator for the numeric date format.
+% \begin{macrocode}
+\newcommand*{\DTMromaniandatesep}{.}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMromaniantimesep}
+% The separator for the numeric time format.
+% \begin{macrocode}
+\newcommand*{\DTMromaniantimesep}{:}
+% \end{macrocode}
+%\end{macro}
+%
+%Provide keys that can be used in \cs{DTMlangsetup} to set these
+%separators.
+% \begin{macrocode}
+\DTMdefkey{romanian}{dowdaysep}{\renewcommand*{\DTMromaniandowdaysep}{#1}}
+\DTMdefkey{romanian}{daymonthsep}{\renewcommand*{\DTMromaniandaymonthsep}{#1}}
+\DTMdefkey{romanian}{monthyearsep}{\renewcommand*{\DTMromanianmonthyearsep}{#1}}
+\DTMdefkey{romanian}{datetimesep}{\renewcommand*{\DTMromaniandatetimesep}{#1}}
+\DTMdefkey{romanian}{timezonesep}{\renewcommand*{\DTMromaniantimezonesep}{#1}}
+\DTMdefkey{romanian}{datesep}{\renewcommand*{\DTMromaniandatesep}{#1}}
+\DTMdefkey{romanian}{timesep}{\renewcommand*{\DTMromaniantimesep}{#1}}
+% \end{macrocode}
+%
+% Define a boolean key that can switch between full and abbreviated
+% formats for the month and day of week names in the text format.
+%\changes{1.01}{2017-04-08}{Add support for abbr}
+% \begin{macrocode}
+\DTMdefboolkey{romanian}{abbr}[true]{}
+% \end{macrocode}
+% The default is the full name.
+% \begin{macrocode}
+\DTMsetbool{romanian}{abbr}{false}
+% \end{macrocode}
+%
+% Define a boolean key that determines if the time zone mappings
+% should be used.
+% \begin{macrocode}
+\DTMdefboolkey{romanian}{mapzone}[true]{}
+% \end{macrocode}
+% The default is to use mappings.
+% \begin{macrocode}
+\DTMsetbool{romanian}{mapzone}{true}
+% \end{macrocode}
+%
+% Define a boolean key that determines if the day of month should be
+% displayed.
+% \begin{macrocode}
+\DTMdefboolkey{romanian}{showdayofmonth}[true]{}
+% \end{macrocode}
+% The default is to show the day of month.
+% \begin{macrocode}
+\DTMsetbool{romanian}{showdayofmonth}{true}
+% \end{macrocode}
+%
+% Define a boolean key that determines if the year should be
+% displayed.
+% \begin{macrocode}
+\DTMdefboolkey{romanian}{showyear}[true]{}
+% \end{macrocode}
+% The default is to show the year.
+% \begin{macrocode}
+\DTMsetbool{romanian}{showyear}{true}
+% \end{macrocode}
+%
+% Define the "romanian" style.
+%\changes{1.01}{2017-04-08}{Add support for abbr and showdow}
+% \begin{macrocode}
+\DTMnewstyle
+ {romanian}% label
+ {% date style
+ \renewcommand*\DTMdisplaydate[4]{%
+ \ifDTMshowdow
+ \ifnum##4>-1
+ \DTMifbool{romanian}{abbr}%
+ {\DTMromanianshortweekdayname{##4}}%
+ {\DTMromanianweekdayname{##4}}%
+ \DTMromaniandowdaysep
+ \fi
+ \fi
+ \DTMifbool{romanian}{showdayofmonth}%
+ {%
+ \DTMromanianordinal{##3}%
+ \DTMromaniandaymonthsep
+ }%
+ {}%
+ \DTMifbool{romanian}{abbr}%
+ {\DTMromanianshortmonthname{##2}}%
+ {\DTMromanianmonthname{##2}}%
+ \DTMifbool{romanian}{showyear}%
+ {%
+ \DTMromanianmonthyearsep
+ \number##1 % space intended
+ }%
+ {}%
+ }%
+ \renewcommand*\DTMDisplaydate[4]{%
+ \ifDTMshowdow
+ \ifnum##4>-1
+ \DTMifbool{romanian}{abbr}%
+ {\DTMromanianshortWeekdayname{##4}}%
+ {\DTMromanianWeekdayname{##4}}%
+ \DTMromaniandowdaysep
+ \DTMifbool{romanian}{showdayofmonth}%
+ {%
+ \DTMromanianordinal{##3}%
+ \DTMromaniandaymonthsep
+ }%
+ {}%
+ \DTMifbool{romanian}{abbr}%
+ {\DTMromanianshortmonthname{##2}}%
+ {\DTMromanianmonthname{##2}}%
+ \DTMifbool{romanian}{showyear}%
+ {%
+ \DTMromanianmonthyearsep
+ \number##1 % space intended
+ }%
+ {}%
+ \else
+ \DTMifbool{romanian}{showdayofmonth}
+ {%
+ \DTMromanianordinal{##3}%
+ \DTMromaniandaymonthsep
+ \DTMifbool{romanian}{abbr}%
+ {\DTMromanianshortmonthname{##2}}%
+ {\DTMromanianmonthname{##2}}%
+ }%
+ {%
+ \DTMifbool{romanian}{abbr}%
+ {\DTMromanianshortMonthname{##2}}%
+ {\DTMromanianMonthname{##2}}%
+ }%
+ \DTMifbool{romanian}{showyear}%
+ {%
+ \DTMromanianmonthyearsep
+ \number##1 % space intended
+ }%
+ {}%
+ \fi
+ \else
+ \DTMifbool{romanian}{showdayofmonth}
+ {%
+ \DTMromanianordinal{##3}%
+ \DTMromaniandaymonthsep
+ \DTMifbool{romanian}{abbr}%
+ {\DTMromanianshortmonthname{##2}}%
+ {\DTMromanianmonthname{##2}}%
+ }%
+ {%
+ \DTMifbool{romanian}{abbr}%
+ {\DTMromanianshortMonthname{##2}}%
+ {\DTMromanianMonthname{##2}}%
+ }%
+ \DTMifbool{romanian}{showyear}%
+ {%
+ \DTMromanianmonthyearsep
+ \number##1 % space intended
+ }%
+ {}%
+ \fi
+ }%
+ }%
+ {% time style (ignores seconds)
+ \renewcommand*\DTMdisplaytime[3]{%
+ \number##1
+ \DTMromaniantimesep\DTMtwodigits{##2}%
+ }%
+ }%
+ {% zone style
+ \DTMresetzones
+ \DTMromanianzonemaps
+ \renewcommand*{\DTMdisplayzone}[2]{%
+ \DTMifbool{romanian}{mapzone}%
+ {\DTMusezonemapordefault{##1}{##2}}%
+ {%
+ \ifnum##1<0\else+\fi\DTMtwodigits{##1}%
+ \ifDTMshowzoneminutes\DTMromaniantimesep\DTMtwodigits{##2}\fi
+ }%
+ }%
+ }%
+ {% full style
+ \renewcommand*{\DTMdisplay}[9]{%
+ \ifDTMshowdate
+ \DTMdisplaydate{##1}{##2}{##3}{##4}%
+ \DTMromaniandatetimesep
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \DTMromaniantimezonesep
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+ \renewcommand*{\DTMDisplay}[9]{%
+ \ifDTMshowdate
+ \DTMDisplaydate{##1}{##2}{##3}{##4}%
+ \DTMromaniandatetimesep
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \DTMromaniantimezonesep
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+ }%
+% \end{macrocode}
+%
+% Define numeric style.
+% \begin{macrocode}
+\DTMnewstyle
+ {romanian-numeric}% label
+ {% date style
+ \renewcommand*\DTMdisplaydate[4]{%
+ \DTMifbool{romanian}{showdayofmonth}%
+ {%
+ \number##3 % space intended
+ \DTMromaniandatesep
+ }%
+ {}%
+ \number##2 % space intended
+ \DTMifbool{romanian}{showyear}%
+ {%
+ \DTMromaniandatesep
+ \number##1 % space intended
+ }%
+ {}%
+ }%
+ \renewcommand*{\DTMDisplaydate}{\DTMdisplaydate}%
+ }%
+ {% time style
+ \renewcommand*\DTMdisplaytime[3]{%
+ \number##1
+ \DTMromaniantimesep\DTMtwodigits{##2}%
+ \ifDTMshowseconds\DTMromaniantimesep\DTMtwodigits{##3}\fi
+ }%
+ }%
+ {% zone style
+ \DTMresetzones
+ \DTMromanianzonemaps
+ \renewcommand*{\DTMdisplayzone}[2]{%
+ \DTMifbool{romanian}{mapzone}%
+ {\DTMusezonemapordefault{##1}{##2}}%
+ {%
+ \ifnum##1<0\else+\fi\DTMtwodigits{##1}%
+ \ifDTMshowzoneminutes\DTMromaniantimesep\DTMtwodigits{##2}\fi
+ }%
+ }%
+ }%
+ {% full style
+ \renewcommand*{\DTMdisplay}[9]{%
+ \ifDTMshowdate
+ \DTMdisplaydate{##1}{##2}{##3}{##4}%
+ \DTMromaniandatetimesep
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \DTMromaniantimezonesep
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+ \renewcommand*{\DTMDisplay}{\DTMdisplay}%
+ }
+% \end{macrocode}
+%
+%\begin{macro}{\DTMromanianzonemaps}
+% The time zone mappings are set through this command, which can be
+% redefined if extra mappings are required or mappings need to be
+% removed.
+% \begin{macrocode}
+\newcommand*{\DTMromanianzonemaps}{%
+ \DTMdefzonemap{02}{00}{EET}%
+ \DTMdefzonemap{03}{00}{EEST}%
+}
+% \end{macrocode}
+%\end{macro}
+
+% Switch style according to the \opt{useregional} setting.
+% \begin{macrocode}
+\DTMifcaseregional
+{}% do nothing
+{\DTMsetstyle{romanian}}
+{\DTMsetstyle{romanian-numeric}}
+% \end{macrocode}
+%
+% Redefine \cs{dateromanian} (or \cs{date}\meta{dialect}) to prevent
+% \sty{babel} from resetting \cs{today}. (For this to work,
+% \sty{babel} must already have been loaded if it's required.)
+% \begin{macrocode}
+\ifcsundef{date\CurrentTrackedDialect}
+{%
+ \ifundef\dateromanian
+ {% do nothing
+ }%
+ {%
+ \def\dateromanian{%
+ \DTMifcaseregional
+ {}% do nothing
+ {\DTMsetstyle{romanian}}%
+ {\DTMsetstyle{romanian-numeric}}%
+ }%
+ }%
+}%
+{%
+ \csdef{date\CurrentTrackedDialect}{%
+ \DTMifcaseregional
+ {}% do nothing
+ {\DTMsetstyle{romanian}}%
+ {\DTMsetstyle{romanian-numeric}}
+ }%
+}%
+% \end{macrocode}
+%\iffalse
+% \begin{macrocode}
+%</datetime2-romanian.ldf>
+% \end{macrocode}
+%\fi
+%\Finale
+\endinput
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-romanian/datetime2-romanian.ins b/macros/latex/contrib/datetime2-contrib/datetime2-romanian/datetime2-romanian.ins
new file mode 100644
index 0000000000..38bf1d54a7
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-romanian/datetime2-romanian.ins
@@ -0,0 +1,64 @@
+\input docstrip
+
+\preamble
+
+ datetime2-romanian.dtx
+ Copyright 2015 Nicola Talbot
+ Copyright 2017 Paul A. Patience <pap@papatience.com>
+
+ This work may be distributed and/or modified under the
+ conditions of the LaTeX Project Public License, either version 1.3
+ of this license or (at your option) any later version.
+ The latest version of this license is in
+ http://www.latex-project.org/lppl.txt
+ and version 1.3 or later is part of all distributions of LaTeX
+ version 2005/12/01 or later.
+
+ This work has the LPPL maintenance status `maintained'.
+
+ The Current Maintainer of this work is Paul A. Patience.
+
+ This work consists of the files datetime2-romanian.dtx and
+ datetime2-romanian.ins and the derived files
+ datetime2-romanian-utf8.ldf, datetime2-romanian-ascii.ldf and
+ datetime2-romanian.ldf.
+
+\endpreamble
+
+\askforoverwritefalse
+
+\generate
+{%
+ \file
+ {datetime2-romanian-utf8.ldf}%
+ {%
+ \usepreamble\defaultpreamble
+ \usepostamble\defaultpostamble
+ \from{datetime2-romanian.dtx}{datetime2-romanian-utf8.ldf,package}%
+ }%
+}
+
+\generate
+{%
+ \file
+ {datetime2-romanian-ascii.ldf}%
+ {%
+ \usepreamble\defaultpreamble
+ \usepostamble\defaultpostamble
+ \from{datetime2-romanian.dtx}{datetime2-romanian-ascii.ldf,package}%
+ }%
+}
+
+\generate
+{%
+ \file
+ {datetime2-romanian.ldf}%
+ {%
+ \usepreamble\defaultpreamble
+ \usepostamble\defaultpostamble
+ \from{datetime2-romanian.dtx}{datetime2-romanian.ldf,package}%
+ }%
+}
+
+\endbatchfile
+
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-romanian/datetime2-romanian.pdf b/macros/latex/contrib/datetime2-contrib/datetime2-romanian/datetime2-romanian.pdf
new file mode 100644
index 0000000000..f332484c1d
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-romanian/datetime2-romanian.pdf
Binary files differ
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-russian/README b/macros/latex/contrib/datetime2-contrib/datetime2-russian/README
new file mode 100644
index 0000000000..b8c0aa6dd1
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-russian/README
@@ -0,0 +1,57 @@
+Russian Language Module for datetime2 Package
+
+Author: Nicola L. C. Talbot (inactive)
+
+Licence: LPPL
+
+Required Packages: datetime2, tracklang
+
+This module is unmaintained. If you want to volunteer to take over
+the maintenance contact me at www.dickimaw-books.com/contact.html
+
+Example usage:
+
+\documentclass{article}
+\usepackage[russian]{datetime2}
+\begin{document}
+\today
+\end{document}
+
+\documentclass[russian]{article}
+\usepackage{babel}
+\usepackage[useregional]{datetime2}
+\begin{document}
+\today
+\end{document}
+
+\documentclass{article}
+\usepackage{polyglossia}
+\setmainlanguage{russian}
+\usepackage[russian]{datetime2}
+\begin{document}
+\today
+\end{document}
+
+INSTALLATION
+============
+
+xelatex datetime2-russian.ins
+
+Move all *.ldf files to
+TEXMF/tex/latex/datetime2-contrib/datetime2-russian/
+
+Documentation:
+
+xelatex datetime2-russian.dtx
+makeindex -s gind.ist datetime2-russian.idx
+makeindex -s gglo.ist -o datetime2-russian.gls datetime2-russian.glo
+xelatex datetime2-russian.dtx
+xelatex datetime2-russian.dtx
+
+Move datetime2-russian.pdf and README to
+TEXMF/doc/latex/datetime2-contrib/datetime2-russian/
+
+This material is subject to the LaTeX Project Public License.
+See http://www.ctan.org/license/lppl1.3 for the details of that
+license.
+
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-russian/datetime2-russian.dtx b/macros/latex/contrib/datetime2-contrib/datetime2-russian/datetime2-russian.dtx
new file mode 100644
index 0000000000..207b99b4a7
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-russian/datetime2-russian.dtx
@@ -0,0 +1,641 @@
+%\iffalse
+%<*package>
+%% \CharacterTable
+%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+%% Digits \0\1\2\3\4\5\6\7\8\9
+%% Exclamation \! Double quote \" Hash (number) \#
+%% Dollar \$ Percent \% Ampersand \&
+%% Acute accent \' Left paren \( Right paren \)
+%% Asterisk \* Plus \+ Comma \,
+%% Minus \- Point \. Solidus \/
+%% Colon \: Semicolon \; Less than \<
+%% Equals \= Greater than \> Question mark \?
+%% Commercial at \@ Left bracket \[ Backslash \\
+%% Right bracket \] Circumflex \^ Underscore \_
+%% Grave accent \` Left brace \{ Vertical bar \|
+%% Right brace \} Tilde \~}
+%</package>
+%\fi
+% \iffalse
+% Doc-Source file to use with LaTeX2e
+% Copyright (C) 2015-2018 Nicola Talbot, all rights reserved.
+% (New maintainer add relevant lines here.)
+% \fi
+% \iffalse
+%<*driver>
+\documentclass{ltxdoc}
+
+\usepackage{alltt}
+\usepackage{graphicx}
+\usepackage{fontspec}
+\usepackage[colorlinks,
+ bookmarks,
+ hyperindex=false,
+ pdfauthor={Nicola L.C. Talbot},
+ pdftitle={datetime2.sty Russian Module}]{hyperref}
+
+\newfontfamily\cyrillicfont{Liberation Serif}
+\setmonofont{Liberation Mono}
+
+\CheckSum{401}
+
+\renewcommand*{\usage}[1]{\hyperpage{#1}}
+\renewcommand*{\main}[1]{\hyperpage{#1}}
+\IndexPrologue{\section*{\indexname}\markboth{\indexname}{\indexname}}
+\setcounter{IndexColumns}{2}
+
+\newcommand*{\sty}[1]{\textsf{#1}}
+\newcommand*{\opt}[1]{\texttt{#1}\index{#1=\texttt{#1}|main}}
+
+\RecordChanges
+\PageIndex
+\CodelineNumbered
+
+\begin{document}
+\DocInput{datetime2-russian.dtx}
+\end{document}
+%</driver>
+%\fi
+%
+%\MakeShortVerb{"}
+%
+%\title{Russian Module for datetime2 Package}
+%\author{Nicola L. C. Talbot (inactive)}
+%\date{2018-12-07 (v1.1)}
+%\maketitle
+%
+%This module is currently unmaintained and may be subject to change.
+%If you want to volunteer to take over maintanance, contact me at
+%\url{http://www.dickimaw-books.com/contact.html}
+%
+%\begin{abstract}
+%This is the Russian language module for the \sty{datetime2}
+%package. If you want to use the settings in this module you must
+%install it in addition to installing \sty{datetime2}. If you use
+%\sty{babel} or \sty{polyglossia}, you will need this module to
+%prevent them from redefining \cs{today}. The \sty{datetime2}
+% \opt{useregional} setting must be set to "text" or "numeric"
+% for the language styles to be set.
+% Alternatively, you can set the style in the document using
+% \cs{DTMsetstyle}, but this may be changed by \cs{date}\meta{language}
+% depending on the value of the \opt{useregional} setting.
+%\end{abstract}
+%
+%I've copied the date style from \texttt{babel-russian}'s \cs{today}.
+%
+%I don't know if these settings are correct as I can't speak Russian.
+%In particular, I don't know if the "russian" time style is
+%correct. Currently this just uses the "default" time style. Please
+%be aware that this may change. Whoever takes over maintanance
+%of this module may can change it as appropriate.
+%
+%The new maintainer should add the line:
+%\begin{verbatim}
+% The Current Maintainer of this work is Name.
+%\end{verbatim}
+%to the preamble part in \texttt{datetime2-russian.ins} where Name
+%is the name of the maintainer(s) and replace
+%the `inactive' status to `maintained'.
+%
+%Currently there is only a regionless style.
+%
+%\StopEventually{%
+%\clearpage
+%\phantomsection
+%\addcontentsline{toc}{section}{Change History}%
+%\PrintChanges
+%\addcontentsline{toc}{section}{\indexname}%
+%\PrintIndex}
+%\section{The Code}
+%\iffalse
+% \begin{macrocode}
+%<*datetime2-russian-utf8.ldf>
+% \end{macrocode}
+%\fi
+%\subsection{UTF-8}
+%This file contains the settings that use UTF-8 characters. This
+%file is loaded if XeLaTeX or LuaLaTeX are used. Please make sure
+%your text editor is set to UTF-8 if you want to view this code.
+%\changes{1.0}{2015-03-31}{Initial release}
+% Identify module
+% \begin{macrocode}
+\ProvidesDateTimeModule{russian-utf8}[2018/12/07 v1.1]
+% \end{macrocode}
+%\begin{macro}{\DTMrussianordinal}
+% \begin{macrocode}
+\newcommand*{\DTMrussianordinal}[1]{%
+ \number#1
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMrussianyear}
+% \begin{macrocode}
+\newcommand*{\DTMrussianyear}[1]{%
+ \number#1
+ \DTMtexorpdfstring{\protect~}{\space}Š³.%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%
+%\begin{macro}{\DTMrussianmonthname}
+% Russian month names.
+% \begin{macrocode}
+\newcommand*{\DTMrussianmonthname}[1]{%
+ \ifcase#1
+ \or
+ яŠ½Š²Š°Ń€Ń%
+ \or
+ фŠµŠ²Ń€Š°Š»Ń%
+ \or
+ Š¼Š°Ń€Ń‚Š°%
+ \or
+ Š°ŠæрŠµŠ»Ń%
+ \or
+ Š¼Š°Ń%
+ \or
+ ŠøюŠ½Ń%
+ \or
+ ŠøюŠ»Ń%
+ \or
+ Š°Š²Š³ŃƒŃŃ‚Š°%
+ \or
+ сŠµŠ½Ń‚яŠ±Ń€Ń%
+ \or
+ Š¾ŠŗтяŠ±Ń€Ń%
+ \or
+ Š½Š¾ŃŠ±Ń€Ń%
+ \or
+ Š“ŠµŠŗŠ°Š±Ń€Ń%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMrussianMonthname}
+% As above but capitalize.
+% \begin{macrocode}
+\newcommand*{\DTMrussianMonthname}[1]{%
+ \ifcase#1
+ \or
+ ŠÆŠ½Š²Š°Ń€Ń%
+ \or
+ Š¤ŠµŠ²Ń€Š°Š»Ń%
+ \or
+ ŠœŠ°Ń€Ń‚Š°%
+ \or
+ ŠŠæрŠµŠ»Ń%
+ \or
+ ŠœŠ°Ń%
+ \or
+ Š˜ŃŽŠ½Ń%
+ \or
+ Š˜ŃŽŠ»Ń%
+ \or
+ ŠŠ²Š³ŃƒŃŃ‚Š°%
+ \or
+ Š”ŠµŠ½Ń‚яŠ±Ń€Ń%
+ \or
+ ŠžŠŗтяŠ±Ń€Ń%
+ \or
+ ŠŠ¾ŃŠ±Ń€Ń%
+ \or
+ Š”ŠµŠŗŠ°Š±Ń€Ń%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%If abbreviated dates are supported, short month names should be
+%likewise provided.
+%
+%\iffalse
+% \begin{macrocode}
+%</datetime2-russian-utf8.ldf>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*datetime2-russian-ascii.ldf>
+% \end{macrocode}
+%\fi
+%\subsection{ASCII}
+%This file contains the settings that use \LaTeX\ commands for
+%non-ASCII characters. This should be input if neither XeLaTeX nor
+%LuaLaTeX are used. Even if the user has loaded \sty{inputenc} with
+%"utf8", this file should still be used not the
+%\texttt{datetime2-russian-utf8.ldf} file as the non-ASCII
+%characters are made active in that situation and would need
+%protecting against expansion.
+%\changes{1.0}{2015-03-31}{Initial release}
+% Identify module
+% \begin{macrocode}
+\ProvidesDateTimeModule{russian-ascii}[2018/12/07 v1.1]
+% \end{macrocode}
+%
+%If abbreviated dates are supported, short month names should be
+%likewise provided.
+%\begin{macro}{\DTMrussianordinal}
+% \begin{macrocode}
+\newcommand*{\DTMrussianordinal}[1]{%
+ \number#1
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMrussianyear}
+% \begin{macrocode}
+\newcommand*{\DTMrussianyear}[1]{%
+ \number#1
+ \DTMtexorpdfstring{\protect~}{\space}\protect\cyrg.%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMrussianmonthname}
+% Russian month names.
+% \begin{macrocode}
+\newcommand*{\DTMrussianmonthname}[1]{%
+ \ifcase#1
+ \or
+ \protect\cyrya\protect\cyrn\protect\cyrv\protect\cyra\protect\cyrr
+ \protect\cyrya
+ \or
+ \protect\cyrf\protect\cyre\protect\cyrv\protect\cyrr\protect\cyra
+ \protect\cyrl\protect\cyrya
+ \or
+ \protect\cyrm\protect\cyra\protect\cyrr\protect\cyrt\protect\cyra
+ \or
+ \protect\cyra\protect\cyrp\protect\cyrr\protect\cyre\protect\cyrl
+ \protect\cyrya
+ \or
+ \protect\cyrm\protect\cyra\protect\cyrya
+ \or
+ \protect\cyri\protect\cyryu\protect\cyrn\protect\cyrya
+ \or
+ \protect\cyri\protect\cyryu\protect\cyrl\protect\cyrya
+ \or
+ \protect\cyra\protect\cyrv\protect\cyrg\protect\cyru\protect\cyrs
+ \protect\cyrt\protect\cyra
+ \or
+ \protect\cyrs\protect\cyre\protect\cyrn\protect\cyrt\protect\cyrya
+ \protect\cyrb\protect\cyrr\protect\cyrya
+ \or
+ \protect\cyro\protect\cyrk\protect\cyrt\protect\cyrya\protect\cyrb
+ \protect\cyrr\protect\cyrya
+ \or
+ \protect\cyrn\protect\cyro\protect\cyrya\protect\cyrb\protect\cyrr
+ \protect\cyrya
+ \or
+ \protect\cyrd\protect\cyre\protect\cyrk\protect\cyra\protect\cyrb
+ \protect\cyrr\protect\cyrya
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMrussianMonthname}
+% As above but start with a capital.
+% \begin{macrocode}
+\newcommand*{\DTMrussianMonthname}[1]{%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\iffalse
+% \begin{macrocode}
+%</datetime2-russian-ascii.ldf>
+% \end{macrocode}
+%\fi
+%
+%\subsection{Main Russian Module (\texttt{datetime2-russian.ldf})}
+%\changes{1.0}{2015-03-31}{Initial release}
+%
+%\iffalse
+% \begin{macrocode}
+%<*datetime2-russian.ldf>
+% \end{macrocode}
+%\fi
+%
+% Identify Module
+% \begin{macrocode}
+\ProvidesDateTimeModule{russian}[2018/12/07 v1.1]
+% \end{macrocode}
+% Need to find out if XeTeX or LuaTeX are being used.
+% \begin{macrocode}
+\RequirePackage{ifxetex,ifluatex}
+% \end{macrocode}
+% XeTeX and LuaTeX natively support UTF-8, so load
+% \texttt{russian-utf8} if either of those engines are used
+% otherwise load \texttt{russian-ascii}.
+% \begin{macrocode}
+\ifxetex
+ \RequireDateTimeModule{russian-utf8}
+\else
+ \ifluatex
+ \RequireDateTimeModule{russian-utf8}
+ \else
+ \RequireDateTimeModule{russian-ascii}
+ \fi
+\fi
+% \end{macrocode}
+%
+% Define the \texttt{russian} style.
+% The time style is the same as the "default" style
+% provided by \sty{datetime2}. This may need correcting. For
+% example, if a 12 hour style similar to the "englishampm" (from the
+% "english-base" module) is required.
+%
+% Allow the user a way of configuring the "russian" and
+% "russian-numeric" styles. This doesn't use the package wide
+% separators such as
+% \cs{dtm@datetimesep} in case other date formats are also required.
+%\begin{macro}{\DTMrussiandaymonthsep}
+% The separator between the day and month for the text format.
+% \begin{macrocode}
+\newcommand*{\DTMrussiandaymonthsep}{%
+ \DTMtexorpdfstring{\protect~}{\space}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMrussianmonthyearsep}
+% The separator between the month and year for the text format.
+% \begin{macrocode}
+\newcommand*{\DTMrussianmonthyearsep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMrussiandatetimesep}
+% The separator between the date and time blocks in the full format
+% (either text or numeric).
+% \begin{macrocode}
+\newcommand*{\DTMrussiandatetimesep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMrussiantimezonesep}
+% The separator between the time and zone blocks in the full format
+% (either text or numeric).
+% \begin{macrocode}
+\newcommand*{\DTMrussiantimezonesep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMrussiandatesep}
+% The separator for the numeric date format.
+% \begin{macrocode}
+\newcommand*{\DTMrussiandatesep}{.}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMrussiantimesep}
+% The separator for the numeric time format.
+% \begin{macrocode}
+\newcommand*{\DTMrussiantimesep}{:}
+% \end{macrocode}
+%\end{macro}
+%
+%Provide keys that can be used in \cs{DTMlangsetup} to set these
+%separators.
+% \begin{macrocode}
+\DTMdefkey{russian}{daymonthsep}{\renewcommand*{\DTMrussiandaymonthsep}{#1}}
+\DTMdefkey{russian}{monthyearsep}{\renewcommand*{\DTMrussianmonthyearsep}{#1}}
+\DTMdefkey{russian}{datetimesep}{\renewcommand*{\DTMrussiandatetimesep}{#1}}
+\DTMdefkey{russian}{timezonesep}{\renewcommand*{\DTMrussiantimezonesep}{#1}}
+\DTMdefkey{russian}{datesep}{\renewcommand*{\DTMrussiandatesep}{#1}}
+\DTMdefkey{russian}{timesep}{\renewcommand*{\DTMrussiantimesep}{#1}}
+% \end{macrocode}
+%
+% TODO: provide a boolean key to switch between full and abbreviated
+% formats if appropriate. (I don't know how the date should be
+% abbreviated.)
+%
+% Define a boolean key that determines if the time zone mappings
+% should be used.
+% \begin{macrocode}
+\DTMdefboolkey{russian}{mapzone}[true]{}
+% \end{macrocode}
+% The default is to use mappings.
+% \begin{macrocode}
+\DTMsetbool{russian}{mapzone}{true}
+% \end{macrocode}
+%
+% Define a boolean key that determines if the day of month should be
+% displayed.
+% \begin{macrocode}
+\DTMdefboolkey{russian}{showdayofmonth}[true]{}
+% \end{macrocode}
+% The default is to show the day of month.
+% \begin{macrocode}
+\DTMsetbool{russian}{showdayofmonth}{true}
+% \end{macrocode}
+%
+% Define a boolean key that determines if the year should be
+% displayed.
+% \begin{macrocode}
+\DTMdefboolkey{russian}{showyear}[true]{}
+% \end{macrocode}
+% The default is to show the year.
+% \begin{macrocode}
+\DTMsetbool{russian}{showyear}{true}
+% \end{macrocode}
+%
+% Define the "russian" style. (TODO: implement day of week?)
+% \begin{macrocode}
+\DTMnewstyle
+ {russian}% label
+ {% date style
+ \renewcommand*\DTMdisplaydate[4]{%
+ \DTMifbool{russian}{showdayofmonth}
+ {\DTMrussianordinal{##3}\DTMrussiandaymonthsep}%
+ {}%
+ \DTMrussianmonthname{##2}%
+ \DTMifbool{russian}{showyear}%
+ {%
+ \DTMrussianmonthyearsep
+ \DTMrussianyear{##1}%
+ }%
+ {}%
+ }%
+ \renewcommand*\DTMDisplaydate[4]{%
+ \DTMifbool{russian}{showdayofmonth}
+ {%
+ \DTMrussianordinal{##3}\DTMrussiandaymonthsep
+ \DTMrussianmonthname{##2}%
+ }%
+ {%
+ \DTMrussianMonthname{##2}%
+ }%
+ \DTMifbool{russian}{showyear}%
+ {%
+ \DTMrussianmonthyearsep
+ \DTMrussianyear{##1}%
+ }%
+ {}%
+ }%
+ }%
+ {% time style (use default)
+ \DTMsettimestyle{default}%
+ }%
+ {% zone style
+ \DTMresetzones
+ \DTMrussianzonemaps
+ \renewcommand*{\DTMdisplayzone}[2]{%
+ \DTMifbool{russian}{mapzone}%
+ {\DTMusezonemapordefault{##1}{##2}}%
+ {%
+ \ifnum##1<0\else+\fi\DTMtwodigits{##1}%
+ \ifDTMshowzoneminutes\DTMrussiantimesep\DTMtwodigits{##2}\fi
+ }%
+ }%
+ }%
+ {% full style
+ \renewcommand*{\DTMdisplay}[9]{%
+ \ifDTMshowdate
+ \DTMdisplaydate{##1}{##2}{##3}{##4}%
+ \DTMrussiandatetimesep
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \DTMrussiantimezonesep
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+ \renewcommand*{\DTMDisplay}[9]{%
+ \ifDTMshowdate
+ \DTMDisplaydate{##1}{##2}{##3}{##4}%
+ \DTMrussiandatetimesep
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \DTMrussiantimezonesep
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+ }%
+% \end{macrocode}
+%
+% Define numeric style.
+% \begin{macrocode}
+\DTMnewstyle
+ {russian-numeric}% label
+ {% date style
+ \renewcommand*\DTMdisplaydate[4]{%
+ \DTMifbool{russian}{showdayofmonth}%
+ {%
+ \number##3 % space intended
+ \DTMrussiandatesep
+ }%
+ {}%
+ \number##2 % space intended
+ \DTMifbool{russian}{showyear}%
+ {%
+ \DTMrussiandatesep
+ \number##1 % space intended
+ }%
+ {}%
+ }%
+ \renewcommand*{\DTMDisplaydate}[4]{\DTMdisplaydate{##1}{##2}{##3}{##4}}%
+ }%
+ {% time style
+ \renewcommand*\DTMdisplaytime[3]{%
+ \number##1
+ \DTMrussiantimesep\DTMtwodigits{##2}%
+ \ifDTMshowseconds\DTMrussiantimesep\DTMtwodigits{##3}\fi
+ }%
+ }%
+ {% zone style
+ \DTMresetzones
+ \DTMrussianzonemaps
+ \renewcommand*{\DTMdisplayzone}[2]{%
+ \DTMifbool{russian}{mapzone}%
+ {\DTMusezonemapordefault{##1}{##2}}%
+ {%
+ \ifnum##1<0\else+\fi\DTMtwodigits{##1}%
+ \ifDTMshowzoneminutes\DTMrussiantimesep\DTMtwodigits{##2}\fi
+ }%
+ }%
+ }%
+ {% full style
+ \renewcommand*{\DTMdisplay}[9]{%
+ \ifDTMshowdate
+ \DTMdisplaydate{##1}{##2}{##3}{##4}%
+ \DTMrussiandatetimesep
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \DTMrussiantimezonesep
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+ \renewcommand*{\DTMDisplay}{\DTMdisplay}%
+ }
+% \end{macrocode}
+%
+%\begin{macro}{\DTMrussianzonemaps}
+% The time zone mappings are set through this command, which can be
+% redefined if extra mappings are required or mappings need to be
+% removed. These may need translating (in which case the definitions
+% might need to be moved to the \texttt{utf8} and \texttt{ascii} ldf
+% files). Daylight saving is not taken into account.
+% \begin{macrocode}
+\newcommand*{\DTMrussianzonemaps}{%
+ \DTMdefzonemap{03}{00}{MKT}%
+ \DTMdefzonemap{04}{00}{SAMT}%
+ \DTMdefzonemap{05}{00}{YEKT}%
+ \DTMdefzonemap{06}{00}{OMST}%
+ \DTMdefzonemap{07}{00}{KRAT}%
+ \DTMdefzonemap{08}{00}{IRKST}%
+ \DTMdefzonemap{09}{00}{YAKST}%
+ \DTMdefzonemap{10}{00}{VLAT}%
+ \DTMdefzonemap{11}{00}{SRET}%
+ \DTMdefzonemap{12}{00}{PETT}%
+}
+% \end{macrocode}
+%\end{macro}
+
+% Switch style according to the \opt{useregional} setting.
+% \begin{macrocode}
+\DTMifcaseregional
+{}% do nothing
+{\DTMsetstyle{russian}}
+{\DTMsetstyle{russian-numeric}}
+% \end{macrocode}
+%
+% Redefine \cs{daterussian} (or \cs{date}\meta{dialect}) to prevent
+% \sty{babel} from resetting \cs{today}. (For this to work,
+% \sty{babel} must already have been loaded if it's required.)
+%\changes{1.1}{2018-12-07}{removed spurious space}
+% \begin{macrocode}
+\ifcsundef{date\CurrentTrackedDialect}
+{%
+ \ifundef\daterussian
+ {% do nothing
+ }%
+ {%
+ \def\daterussian{%
+ \DTMifcaseregional
+ {}% do nothing
+ {\DTMsetstyle{russian}}%
+ {\DTMsetstyle{russian-numeric}}%
+ }%
+ }%
+}%
+{%
+ \csdef{date\CurrentTrackedDialect}{%
+ \DTMifcaseregional
+ {}% do nothing
+ {\DTMsetstyle{russian}}%
+ {\DTMsetstyle{russian-numeric}}%
+ }%
+}%
+% \end{macrocode}
+%\iffalse
+% \begin{macrocode}
+%</datetime2-russian.ldf>
+% \end{macrocode}
+%\fi
+%\Finale
+\endinput
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-russian/datetime2-russian.ins b/macros/latex/contrib/datetime2-contrib/datetime2-russian/datetime2-russian.ins
new file mode 100644
index 0000000000..25e333ce3b
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-russian/datetime2-russian.ins
@@ -0,0 +1,61 @@
+\input docstrip
+
+\preamble
+
+ datetime2-russian.dtx
+ Copyright 2015-2018 Nicola Talbot
+
+ This work may be distributed and/or modified under the
+ conditions of the LaTeX Project Public License, either version 1.3
+ of this license of (at your option) any later version.
+ The latest version of this license is in
+ http://www.latex-project.org/lppl.txt
+ and version 1.3 or later is part of all distributions of LaTeX
+ version 2005/12/01 or later.
+
+ This work has the LPPL maintenance status `inactive'.
+
+ This work consists of the files datetime2-russian.dtx and
+ datetime2-russian.ins and the derived files
+ datetime2-russian-utf8.ldf, datetime2-russian-ascii.ldf and
+ datetime2-russian.ldf.
+
+\endpreamble
+
+\askforoverwritefalse
+
+\generate
+{%
+ \file
+ {datetime2-russian-utf8.ldf}%
+ {%
+ \usepreamble\defaultpreamble
+ \usepostamble\defaultpostamble
+ \from{datetime2-russian.dtx}{datetime2-russian-utf8.ldf,package}%
+ }%
+}
+
+\generate
+{%
+ \file
+ {datetime2-russian-ascii.ldf}%
+ {%
+ \usepreamble\defaultpreamble
+ \usepostamble\defaultpostamble
+ \from{datetime2-russian.dtx}{datetime2-russian-ascii.ldf,package}%
+ }%
+}
+
+\generate
+{%
+ \file
+ {datetime2-russian.ldf}%
+ {%
+ \usepreamble\defaultpreamble
+ \usepostamble\defaultpostamble
+ \from{datetime2-russian.dtx}{datetime2-russian.ldf,package}%
+ }%
+}
+
+\endbatchfile
+
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-russian/datetime2-russian.pdf b/macros/latex/contrib/datetime2-contrib/datetime2-russian/datetime2-russian.pdf
new file mode 100644
index 0000000000..02970674a5
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-russian/datetime2-russian.pdf
Binary files differ
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-samin/README b/macros/latex/contrib/datetime2-contrib/datetime2-samin/README
new file mode 100644
index 0000000000..2682996e83
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-samin/README
@@ -0,0 +1,57 @@
+Northern Sami Language Module for datetime2 Package
+
+Author: Nicola L. C. Talbot (inactive)
+
+Licence: LPPL
+
+Required Packages: datetime2, tracklang
+
+This module is unmaintained. If you want to volunteer to take over
+the maintenance contact me at www.dickimaw-books.com/contact.html
+
+Example usage:
+
+\documentclass{article}
+\usepackage[samin]{datetime2}
+\begin{document}
+\today
+\end{document}
+
+\documentclass[samin]{article}
+\usepackage{babel}
+\usepackage[useregional]{datetime2}
+\begin{document}
+\today
+\end{document}
+
+\documentclass{article}
+\usepackage{polyglossia}
+\setmainlanguage{samin}
+\usepackage[samin]{datetime2}
+\begin{document}
+\today
+\end{document}
+
+INSTALLATION
+============
+
+xelatex datetime2-samin.ins
+
+Move all *.ldf files to
+TEXMF/tex/latex/datetime2-contrib/datetime2-samin/
+
+Documentation:
+
+xelatex datetime2-samin.dtx
+makeindex -s gind.ist datetime2-samin.idx
+makeindex -s gglo.ist -o datetime2-samin.gls datetime2-samin.glo
+xelatex datetime2-samin.dtx
+xelatex datetime2-samin.dtx
+
+Move datetime2-samin.pdf and README to
+TEXMF/doc/latex/datetime2-contrib/datetime2-samin/
+
+This material is subject to the LaTeX Project Public License.
+See http://www.ctan.org/license/lppl1.3 for the details of that
+license.
+
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-samin/datetime2-samin.dtx b/macros/latex/contrib/datetime2-contrib/datetime2-samin/datetime2-samin.dtx
new file mode 100644
index 0000000000..8a1909764e
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-samin/datetime2-samin.dtx
@@ -0,0 +1,638 @@
+%\iffalse
+%<*package>
+%% \CharacterTable
+%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+%% Digits \0\1\2\3\4\5\6\7\8\9
+%% Exclamation \! Double quote \" Hash (number) \#
+%% Dollar \$ Percent \% Ampersand \&
+%% Acute accent \' Left paren \( Right paren \)
+%% Asterisk \* Plus \+ Comma \,
+%% Minus \- Point \. Solidus \/
+%% Colon \: Semicolon \; Less than \<
+%% Equals \= Greater than \> Question mark \?
+%% Commercial at \@ Left bracket \[ Backslash \\
+%% Right bracket \] Circumflex \^ Underscore \_
+%% Grave accent \` Left brace \{ Vertical bar \|
+%% Right brace \} Tilde \~}
+%</package>
+%\fi
+% \iffalse
+% Doc-Source file to use with LaTeX2e
+% Copyright (C) 2015-2018 Nicola Talbot, all rights reserved.
+% (New maintainer add relevant lines here.)
+% \fi
+% \iffalse
+%<*driver>
+\documentclass{ltxdoc}
+
+\usepackage{alltt}
+\usepackage{graphicx}
+\usepackage{fontspec}
+\usepackage[colorlinks,
+ bookmarks,
+ hyperindex=false,
+ pdfauthor={Nicola L.C. Talbot},
+ pdftitle={datetime2.sty Northern Sami Module}]{hyperref}
+
+\setmainfont{Liberation Serif}
+\setmonofont{Liberation Mono}
+
+\CheckSum{332}
+
+\renewcommand*{\usage}[1]{\hyperpage{#1}}
+\renewcommand*{\main}[1]{\hyperpage{#1}}
+\IndexPrologue{\section*{\indexname}\markboth{\indexname}{\indexname}}
+\setcounter{IndexColumns}{2}
+
+\newcommand*{\sty}[1]{\textsf{#1}}
+\newcommand*{\opt}[1]{\texttt{#1}\index{#1=\texttt{#1}|main}}
+
+\RecordChanges
+\PageIndex
+\CodelineNumbered
+
+\begin{document}
+\DocInput{datetime2-samin.dtx}
+\end{document}
+%</driver>
+%\fi
+%
+%\MakeShortVerb{"}
+%
+%\title{Northern Sami Module for datetime2 Package}
+%\author{Nicola L. C. Talbot (inactive)}
+%\date{2018-12-07 (v1.1)}
+%\maketitle
+%
+%This module is currently unmaintained and may be subject to change.
+%If you want to volunteer to take over maintanance, contact me at
+%\url{http://www.dickimaw-books.com/contact.html}
+%
+%\begin{abstract}
+%This is the Northern Sami language module for the \sty{datetime2}
+%package. If you want to use the settings in this module you must
+%install it in addition to installing \sty{datetime2}. If you use
+%\sty{babel} or \sty{polyglossia}, you will need this module to
+%prevent them from redefining \cs{today}. The \sty{datetime2}
+% \opt{useregional} setting must be set to "text" or "numeric"
+% for the language styles to be set.
+% Alternatively, you can set the style in the document using
+% \cs{DTMsetstyle}, but this may be changed by \cs{date}\meta{language}
+% depending on the value of the \opt{useregional} setting.
+%\end{abstract}
+%
+%I've copied the date style from \texttt{babel-samin}'s \cs{today}.
+%
+%I don't know if these settings are correct as I can't speak Northern Sami.
+%In particular, I don't know if the "samin" time style is
+%correct. Currently this just uses the "default" time style. Please
+%be aware that this may change. Whoever takes over maintanance
+%of this module may can change it as appropriate.
+%
+%The new maintainer should add the line:
+%\begin{verbatim}
+% The Current Maintainer of this work is Name.
+%\end{verbatim}
+%to the preamble part in \texttt{datetime2-samin.ins} where Name
+%is the name of the maintainer(s) and replace
+%the `inactive' status to `maintained'.
+%
+%Currently there is only a regionless style.
+%
+%\StopEventually{%
+%\clearpage
+%\phantomsection
+%\addcontentsline{toc}{section}{Change History}%
+%\PrintChanges
+%\addcontentsline{toc}{section}{\indexname}%
+%\PrintIndex}
+%\section{The Code}
+%\iffalse
+% \begin{macrocode}
+%<*datetime2-samin-utf8.ldf>
+% \end{macrocode}
+%\fi
+%\subsection{UTF-8}
+%This file contains the settings that use UTF-8 characters. This
+%file is loaded if XeLaTeX or LuaLaTeX are used. Please make sure
+%your text editor is set to UTF-8 if you want to view this code.
+%\changes{1.0}{2015-03-31}{Initial release}
+% Identify module
+% \begin{macrocode}
+\ProvidesDateTimeModule{samin-utf8}[2018/12/07 v1.1]
+% \end{macrocode}
+%\begin{macro}{\DTMsaminordinal}
+% \begin{macrocode}
+\newcommand*{\DTMsaminordinal}[1]{%
+ \number#1.\DTMtexorpdfstring{\protect~}{\space}b.%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMsaminmonthname}
+% Northern Sami month names.
+% \begin{macrocode}
+\newcommand*{\DTMsaminmonthname}[1]{%
+ \ifcase#1
+ \or
+ ođđajagemĆ”nu%
+ \or
+ guovvamƔnu%
+ \or
+ njukčamĆ”nu%
+ \or
+ cuoŋomĆ”nu%
+ \or
+ miessemƔnu%
+ \or
+ geassemƔnu%
+ \or
+ suoidnemƔnu%
+ \or
+ borgemƔnu%
+ \or
+ čakčamĆ”nu%
+ \or
+ golggotmƔnu%
+ \or
+ skƔbmamƔnu%
+ \or
+ juovlamƔnu%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMsaminMonthname}
+% As above but capitalize.
+% \begin{macrocode}
+\newcommand*{\DTMsaminMonthname}[1]{%
+ \ifcase#1
+ \or
+ OđđajagemĆ”nu%
+ \or
+ GuovvamƔnu%
+ \or
+ NjukčamĆ”nu%
+ \or
+ CuoŋomĆ”nu%
+ \or
+ MiessemƔnu%
+ \or
+ GeassemƔnu%
+ \or
+ SuoidnemƔnu%
+ \or
+ BorgemƔnu%
+ \or
+ ČakčamĆ”nu%
+ \or
+ GolggotmƔnu%
+ \or
+ SkƔbmamƔnu%
+ \or
+ JuovlamƔnu%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%If abbreviated dates are supported, short month names should be
+%likewise provided.
+%
+%\iffalse
+% \begin{macrocode}
+%</datetime2-samin-utf8.ldf>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*datetime2-samin-ascii.ldf>
+% \end{macrocode}
+%\fi
+%\subsection{ASCII}
+%This file contains the settings that use \LaTeX\ commands for
+%non-ASCII characters. This should be input if neither XeLaTeX nor
+%LuaLaTeX are used. Even if the user has loaded \sty{inputenc} with
+%"utf8", this file should still be used not the
+%\texttt{datetime2-samin-utf8.ldf} file as the non-ASCII
+%characters are made active in that situation and would need
+%protecting against expansion.
+%\changes{1.0}{2015-03-31}{Initial release}
+% Identify module
+% \begin{macrocode}
+\ProvidesDateTimeModule{samin-ascii}[2018/12/07 v1.1]
+% \end{macrocode}
+%
+%If abbreviated dates are supported, short month names should be
+%likewise provided.
+%\begin{macro}{\DTMsaminordinal}
+% \begin{macrocode}
+\newcommand*{\DTMsaminordinal}[1]{%
+ \number#1.\DTMtexorpdfstring{\protect~}{\space}b.%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMsaminmonthname}
+% Northern Sami month names.
+% \begin{macrocode}
+\newcommand*{\DTMsaminmonthname}[1]{%
+ \ifcase#1
+ \or
+ o\protect\dj\protect\dj ajagem\protect\'anu%
+ \or
+ guovvam\protect\'anu%
+ \or
+ njuk\protect\v cam\protect\'anu%
+ \or
+ cuo\protect\ng om\protect\'anu%
+ \or
+ miessem\protect\'anu%
+ \or
+ geassem\protect\'anu%
+ \or
+ suoidnem\protect\'anu%
+ \or
+ borgem\protect\'anu%
+ \or
+ \protect\v cak\protect\v cam\protect\'anu%
+ \or
+ golggotm\protect\'anu%
+ \or
+ sk\protect\'abmam\protect\'anu%
+ \or
+ juovlam\protect\'anu%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMsaminMonthname}
+% As above but capitalize.
+% \begin{macrocode}
+\newcommand*{\DTMsaminMonthname}[1]{%
+ \ifcase#1
+ \or
+ O\protect\dj\protect\dj ajagem\protect\'anu%
+ \or
+ Guovvam\protect\'anu%
+ \or
+ Njuk\protect\v cam\protect\'anu%
+ \or
+ Cuo\protect\ng om\protect\'anu%
+ \or
+ Miessem\protect\'anu%
+ \or
+ Geassem\protect\'anu%
+ \or
+ Suoidnem\protect\'anu%
+ \or
+ Borgem\protect\'anu%
+ \or
+ \protect\v Cak\protect\v cam\protect\'anu%
+ \or
+ Golggotm\protect\'anu%
+ \or
+ Sk\protect\'abmam\protect\'anu%
+ \or
+ Juovlam\protect\'anu%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%
+%\iffalse
+% \begin{macrocode}
+%</datetime2-samin-ascii.ldf>
+% \end{macrocode}
+%\fi
+%
+%\subsection{Main Northern Sami Module (\texttt{datetime2-samin.ldf})}
+%\changes{1.0}{2015-03-31}{Initial release}
+%
+%\iffalse
+% \begin{macrocode}
+%<*datetime2-samin.ldf>
+% \end{macrocode}
+%\fi
+%
+% Identify Module
+% \begin{macrocode}
+\ProvidesDateTimeModule{samin}[2018/12/07 v1.1]
+% \end{macrocode}
+% Need to find out if XeTeX or LuaTeX are being used.
+% \begin{macrocode}
+\RequirePackage{ifxetex,ifluatex}
+% \end{macrocode}
+% XeTeX and LuaTeX natively support UTF-8, so load
+% \texttt{samin-utf8} if either of those engines are used
+% otherwise load \texttt{samin-ascii}.
+% \begin{macrocode}
+\ifxetex
+ \RequireDateTimeModule{samin-utf8}
+\else
+ \ifluatex
+ \RequireDateTimeModule{samin-utf8}
+ \else
+ \RequireDateTimeModule{samin-ascii}
+ \fi
+\fi
+% \end{macrocode}
+%
+% Define the \texttt{samin} style.
+% The time style is the same as the "default" style
+% provided by \sty{datetime2}. This may need correcting. For
+% example, if a 12 hour style similar to the "englishampm" (from the
+% "english-base" module) is required.
+%
+% Allow the user a way of configuring the "samin" and
+% "samin-numeric" styles. This doesn't use the package wide
+% separators such as
+% \cs{dtm@datetimesep} in case other date formats are also required.
+%\begin{macro}{\DTMsaminmonthdaysep}
+% The separator between the month and day for the text format.
+% \begin{macrocode}
+\newcommand*{\DTMsaminmonthdaysep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMsamindayyearsep}
+% The separator between the day and year for the text format.
+% \begin{macrocode}
+\newcommand*{\DTMsamindayyearsep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMsamindatetimesep}
+% The separator between the date and time blocks in the full format
+% (either text or numeric).
+% \begin{macrocode}
+\newcommand*{\DTMsamindatetimesep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMsamintimezonesep}
+% The separator between the time and zone blocks in the full format
+% (either text or numeric).
+% \begin{macrocode}
+\newcommand*{\DTMsamintimezonesep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMsamindatesep}
+% The separator for the numeric date format.
+% \begin{macrocode}
+\newcommand*{\DTMsamindatesep}{.}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMsamintimesep}
+% The separator for the numeric time format.
+% \begin{macrocode}
+\newcommand*{\DTMsamintimesep}{:}
+% \end{macrocode}
+%\end{macro}
+%
+%Provide keys that can be used in \cs{DTMlangsetup} to set these
+%separators.
+% \begin{macrocode}
+\DTMdefkey{samin}{monthdaysep}{\renewcommand*{\DTMsaminmonthdaysep}{#1}}
+\DTMdefkey{samin}{dayyearsep}{\renewcommand*{\DTMsamindayyearsep}{#1}}
+\DTMdefkey{samin}{datetimesep}{\renewcommand*{\DTMsamindatetimesep}{#1}}
+\DTMdefkey{samin}{timezonesep}{\renewcommand*{\DTMsamintimezonesep}{#1}}
+\DTMdefkey{samin}{datesep}{\renewcommand*{\DTMsamindatesep}{#1}}
+\DTMdefkey{samin}{timesep}{\renewcommand*{\DTMsamintimesep}{#1}}
+% \end{macrocode}
+%
+% TODO: provide a boolean key to switch between full and abbreviated
+% formats if appropriate. (I don't know how the date should be
+% abbreviated.)
+%
+% Define a boolean key that determines if the time zone mappings
+% should be used.
+% \begin{macrocode}
+\DTMdefboolkey{samin}{mapzone}[true]{}
+% \end{macrocode}
+% The default is to use mappings.
+% \begin{macrocode}
+\DTMsetbool{samin}{mapzone}{true}
+% \end{macrocode}
+%
+% Define a boolean key that determines if the day of month should be
+% displayed.
+% \begin{macrocode}
+\DTMdefboolkey{samin}{showdayofmonth}[true]{}
+% \end{macrocode}
+% The default is to show the day of month.
+% \begin{macrocode}
+\DTMsetbool{samin}{showdayofmonth}{true}
+% \end{macrocode}
+%
+% Define a boolean key that determines if the year should be
+% displayed.
+% \begin{macrocode}
+\DTMdefboolkey{samin}{showyear}[true]{}
+% \end{macrocode}
+% The default is to show the year.
+% \begin{macrocode}
+\DTMsetbool{samin}{showyear}{true}
+% \end{macrocode}
+%
+% Define the "samin" style. (TODO: implement day of week?)
+% \begin{macrocode}
+\DTMnewstyle
+ {samin}% label
+ {% date style
+ \renewcommand*\DTMdisplaydate[4]{%
+ \DTMsaminmonthname{##2}%
+ \DTMifbool{samin}{showdayofmonth}
+ {%
+ \DTMsaminmonthdaysep
+ \DTMsaminordinal{##3}%
+ }%
+ {}%
+ \DTMifbool{samin}{showyear}%
+ {%
+ \DTMsamindayyearsep
+ \number##1
+ }%
+ {}%
+ }%
+ \renewcommand*\DTMDisplaydate[4]{%
+ \DTMsaminMonthname{##2}%
+ \DTMifbool{samin}{showdayofmonth}
+ {%
+ \DTMsaminmonthdaysep
+ \DTMsaminordinal{##3}%
+ }%
+ {}%
+ \DTMifbool{samin}{showyear}%
+ {%
+ \DTMsamindayyearsep
+ \number##1
+ }%
+ {}%
+ }%
+ }%
+ {% time style (use default)
+ \DTMsettimestyle{default}%
+ }%
+ {% zone style
+ \DTMresetzones
+ \DTMsaminzonemaps
+ \renewcommand*{\DTMdisplayzone}[2]{%
+ \DTMifbool{samin}{mapzone}%
+ {\DTMusezonemapordefault{##1}{##2}}%
+ {%
+% \end{macrocode}
+%\changes{1.1}{2018-12-07}{added space before \cs{else}}
+% \begin{macrocode}
+ \ifnum##1<0 \else+\fi\DTMtwodigits{##1}%
+ \ifDTMshowzoneminutes\DTMsamintimesep\DTMtwodigits{##2}\fi
+ }%
+ }%
+ }%
+ {% full style
+ \renewcommand*{\DTMdisplay}[9]{%
+ \ifDTMshowdate
+ \DTMdisplaydate{##1}{##2}{##3}{##4}%
+ \DTMsamindatetimesep
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \DTMsamintimezonesep
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+ \renewcommand*{\DTMDisplay}[9]{%
+ \ifDTMshowdate
+ \DTMDisplaydate{##1}{##2}{##3}{##4}%
+ \DTMsamindatetimesep
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \DTMsamintimezonesep
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+ }%
+% \end{macrocode}
+%
+% Define numeric style.
+% \begin{macrocode}
+\DTMnewstyle
+ {samin-numeric}% label
+ {% date style
+ \renewcommand*\DTMdisplaydate[4]{%
+ \DTMifbool{samin}{showdayofmonth}%
+ {%
+ \number##3 % space intended
+ \DTMsamindatesep
+ }%
+ {}%
+ \number##2 % space intended
+ \DTMifbool{samin}{showyear}%
+ {%
+ \DTMsamindatesep
+ \number##1 % space intended
+ }%
+ {}%
+ }%
+ \renewcommand*{\DTMDisplaydate}{\DTMdisplaydate}%
+ }%
+ {% time style
+ \renewcommand*\DTMdisplaytime[3]{%
+ \number##1
+ \DTMsamintimesep\DTMtwodigits{##2}%
+ \ifDTMshowseconds\DTMsamintimesep\DTMtwodigits{##3}\fi
+ }%
+ }%
+ {% zone style
+ \DTMresetzones
+ \DTMsaminzonemaps
+ \renewcommand*{\DTMdisplayzone}[2]{%
+ \DTMifbool{samin}{mapzone}%
+ {\DTMusezonemapordefault{##1}{##2}}%
+ {%
+% \end{macrocode}
+%\changes{1.1}{2018-12-07}{added space before \cs{else}}
+% \begin{macrocode}
+ \ifnum##1<0 \else+\fi\DTMtwodigits{##1}%
+ \ifDTMshowzoneminutes\DTMsamintimesep\DTMtwodigits{##2}\fi
+ }%
+ }%
+ }%
+ {% full style
+ \renewcommand*{\DTMdisplay}[9]{%
+ \ifDTMshowdate
+ \DTMdisplaydate{##1}{##2}{##3}{##4}%
+ \DTMsamindatetimesep
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \DTMsamintimezonesep
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+ \renewcommand*{\DTMDisplay}{\DTMdisplay}%
+ }
+% \end{macrocode}
+%
+%\begin{macro}{\DTMsaminzonemaps}
+% The time zone mappings are set through this command, which can be
+% redefined if extra mappings are required or mappings need to be
+% removed. Daylight saving isn't taken into account.
+% \begin{macrocode}
+\newcommand*{\DTMsaminzonemaps}{%
+ \DTMdefzonemap{01}{00}{CET}%
+ \DTMdefzonemap{02}{00}{EET}%
+}
+% \end{macrocode}
+%\end{macro}
+
+% Switch style according to the \opt{useregional} setting.
+% \begin{macrocode}
+\DTMifcaseregional
+{}% do nothing
+{\DTMsetstyle{samin}}
+{\DTMsetstyle{samin-numeric}}
+% \end{macrocode}
+%
+% Redefine \cs{datesamin} (or \cs{date}\meta{dialect}) to prevent
+% \sty{babel} from resetting \cs{today}. (For this to work,
+% \sty{babel} must already have been loaded if it's required.)
+%\changes{1.1}{2018-12-07}{removed spurious space}
+% \begin{macrocode}
+\ifcsundef{date\CurrentTrackedDialect}
+{%
+ \ifundef\datesamin
+ {% do nothing
+ }%
+ {%
+ \def\datesamin{%
+ \DTMifcaseregional
+ {}% do nothing
+ {\DTMsetstyle{samin}}%
+ {\DTMsetstyle{samin-numeric}}%
+ }%
+ }%
+}%
+{%
+ \csdef{date\CurrentTrackedDialect}{%
+ \DTMifcaseregional
+ {}% do nothing
+ {\DTMsetstyle{samin}}%
+ {\DTMsetstyle{samin-numeric}}%
+ }%
+}%
+% \end{macrocode}
+%\iffalse
+% \begin{macrocode}
+%</datetime2-samin.ldf>
+% \end{macrocode}
+%\fi
+%\Finale
+\endinput
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-samin/datetime2-samin.ins b/macros/latex/contrib/datetime2-contrib/datetime2-samin/datetime2-samin.ins
new file mode 100644
index 0000000000..d7f8176ee3
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-samin/datetime2-samin.ins
@@ -0,0 +1,61 @@
+\input docstrip
+
+\preamble
+
+ datetime2-samin.dtx
+ Copyright 2015-2018 Nicola Talbot
+
+ This work may be distributed and/or modified under the
+ conditions of the LaTeX Project Public License, either version 1.3
+ of this license of (at your option) any later version.
+ The latest version of this license is in
+ http://www.latex-project.org/lppl.txt
+ and version 1.3 or later is part of all distributions of LaTeX
+ version 2005/12/01 or later.
+
+ This work has the LPPL maintenance status `inactive'.
+
+ This work consists of the files datetime2-samin.dtx and
+ datetime2-samin.ins and the derived files
+ datetime2-samin-utf8.ldf, datetime2-samin-ascii.ldf and
+ datetime2-samin.ldf.
+
+\endpreamble
+
+\askforoverwritefalse
+
+\generate
+{%
+ \file
+ {datetime2-samin-utf8.ldf}%
+ {%
+ \usepreamble\defaultpreamble
+ \usepostamble\defaultpostamble
+ \from{datetime2-samin.dtx}{datetime2-samin-utf8.ldf,package}%
+ }%
+}
+
+\generate
+{%
+ \file
+ {datetime2-samin-ascii.ldf}%
+ {%
+ \usepreamble\defaultpreamble
+ \usepostamble\defaultpostamble
+ \from{datetime2-samin.dtx}{datetime2-samin-ascii.ldf,package}%
+ }%
+}
+
+\generate
+{%
+ \file
+ {datetime2-samin.ldf}%
+ {%
+ \usepreamble\defaultpreamble
+ \usepostamble\defaultpostamble
+ \from{datetime2-samin.dtx}{datetime2-samin.ldf,package}%
+ }%
+}
+
+\endbatchfile
+
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-samin/datetime2-samin.pdf b/macros/latex/contrib/datetime2-contrib/datetime2-samin/datetime2-samin.pdf
new file mode 100644
index 0000000000..9f2a34ceab
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-samin/datetime2-samin.pdf
Binary files differ
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-scottish/README b/macros/latex/contrib/datetime2-contrib/datetime2-scottish/README
new file mode 100644
index 0000000000..9ee2c16681
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-scottish/README
@@ -0,0 +1,57 @@
+Scottish Gaelic Language Module for datetime2 Package
+
+Author: Nicola L. C. Talbot (inactive)
+
+Licence: LPPL
+
+Required Packages: datetime2, tracklang
+
+This module is unmaintained. If you want to volunteer to take over
+the maintenance contact me at www.dickimaw-books.com/contact.html
+
+Example usage:
+
+\documentclass{article}
+\usepackage[scottish]{datetime2}
+\begin{document}
+\today
+\end{document}
+
+\documentclass[scottish]{article}
+\usepackage{babel}
+\usepackage[useregional]{datetime2}
+\begin{document}
+\today
+\end{document}
+
+\documentclass{article}
+\usepackage{polyglossia}
+\setmainlanguage{scottish}
+\usepackage[scottish]{datetime2}
+\begin{document}
+\today
+\end{document}
+
+INSTALLATION
+============
+
+latex datetime2-scottish.ins
+
+Move all *.ldf files to
+TEXMF/tex/latex/datetime2-contrib/datetime2-scottish/
+
+Documentation:
+
+pdflatex datetime2-scottish.dtx
+makeindex -s gind.ist datetime2-scottish.idx
+makeindex -s gglo.ist -o datetime2-scottish.gls datetime2-scottish.glo
+pdflatex datetime2-scottish.dtx
+pdflatex datetime2-scottish.dtx
+
+Move datetime2-scottish.pdf and README to
+TEXMF/doc/latex/datetime2-contrib/datetime2-scottish/
+
+This material is subject to the LaTeX Project Public License.
+See http://www.ctan.org/license/lppl1.3 for the details of that
+license.
+
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-scottish/datetime2-scottish.dtx b/macros/latex/contrib/datetime2-contrib/datetime2-scottish/datetime2-scottish.dtx
new file mode 100644
index 0000000000..6846b4937d
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-scottish/datetime2-scottish.dtx
@@ -0,0 +1,634 @@
+%\iffalse
+%<*package>
+%% \CharacterTable
+%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+%% Digits \0\1\2\3\4\5\6\7\8\9
+%% Exclamation \! Double quote \" Hash (number) \#
+%% Dollar \$ Percent \% Ampersand \&
+%% Acute accent \' Left paren \( Right paren \)
+%% Asterisk \* Plus \+ Comma \,
+%% Minus \- Point \. Solidus \/
+%% Colon \: Semicolon \; Less than \<
+%% Equals \= Greater than \> Question mark \?
+%% Commercial at \@ Left bracket \[ Backslash \\
+%% Right bracket \] Circumflex \^ Underscore \_
+%% Grave accent \` Left brace \{ Vertical bar \|
+%% Right brace \} Tilde \~}
+%</package>
+%\fi
+% \iffalse
+% Doc-Source file to use with LaTeX2e
+% Copyright (C) 2015 Nicola Talbot, all rights reserved.
+% (New maintainer add relevant lines here.)
+% \fi
+% \iffalse
+%<*driver>
+\documentclass{ltxdoc}
+
+\usepackage{alltt}
+\usepackage{graphicx}
+\usepackage[utf8]{inputenc}
+\usepackage[T1]{fontenc}
+\usepackage[colorlinks,
+ bookmarks,
+ hyperindex=false,
+ pdfauthor={Nicola L.C. Talbot},
+ pdftitle={datetime2.sty Scottish Module}]{hyperref}
+
+
+\CheckSum{271}
+
+\renewcommand*{\usage}[1]{\hyperpage{#1}}
+\renewcommand*{\main}[1]{\hyperpage{#1}}
+\IndexPrologue{\section*{\indexname}\markboth{\indexname}{\indexname}}
+\setcounter{IndexColumns}{2}
+
+\newcommand*{\sty}[1]{\textsf{#1}}
+\newcommand*{\opt}[1]{\texttt{#1}\index{#1=\texttt{#1}|main}}
+
+\RecordChanges
+\PageIndex
+\CodelineNumbered
+
+\begin{document}
+\DocInput{datetime2-scottish.dtx}
+\end{document}
+%</driver>
+%\fi
+%
+%\MakeShortVerb{"}
+%
+%\title{Scottish Module for datetime2 Package}
+%\author{Nicola L. C. Talbot (inactive)}
+%\date{2015-03-25 (v1.0)}
+%\maketitle
+%
+%This module is currently unmaintained and may be subject to change.
+%If you want to volunteer to take over maintanance, contact me at
+%\url{http://www.dickimaw-books.com/contact.html}
+%
+%\begin{abstract}
+%This is the Scottish language module for the \sty{datetime2}
+%package. If you want to use the settings in this module you must
+%install it in addition to installing \sty{datetime2}. If you use
+%\sty{babel} or \sty{polyglossia}, you will need this module to
+%prevent them from redefining \cs{today}. The \sty{datetime2}
+% \opt{useregional} setting must be set to "text" or "numeric"
+% for the language styles to be set.
+% Alternatively, you can set the style in the document using
+% \cs{DTMsetstyle}, but this may be changed by \cs{date}\meta{language}
+% depending on the value of the \opt{useregional} setting.
+%\end{abstract}
+%
+%I've copied the date style from \texttt{babel-scottish}'s \cs{today}.
+%
+%I don't know if these settings are correct as I can't speak Gaelic.
+%In particular, I don't know if the "scottish" time style is
+%correct. Currently this just uses the "default" time style. Please
+%be aware that this may change. Whoever takes over maintanance
+%of this module may can change it as appropriate.
+%
+%The new maintainer should add the line:
+%\begin{verbatim}
+% The Current Maintainer of this work is Name.
+%\end{verbatim}
+%to the preamble part in \texttt{datetime2-scottish.ins} where Name
+%is the name of the maintainer(s) and replace
+%the `inactive' status to `maintained'.
+%
+%Currently there is only a regionless style. New maintainers may
+%want to add regional variants "gd-GB"\slash"gd-GB-numeric" and
+%"gd-CA"\slash"gd-CA-numeric" once "gd-GB" and "gd-CA" have been added
+%to \sty{tracklang} (pending for \sty{tracklang} v1.3).
+%
+%\StopEventually{%
+%\clearpage
+%\phantomsection
+%\addcontentsline{toc}{section}{Change History}%
+%\PrintChanges
+%\addcontentsline{toc}{section}{\indexname}%
+%\PrintIndex}
+%\section{The Code}
+%\iffalse
+% \begin{macrocode}
+%<*datetime2-scottish-utf8.ldf>
+% \end{macrocode}
+%\fi
+%\subsection{UTF-8}
+%This file contains the settings that use UTF-8 characters. This
+%file is loaded if XeLaTeX or LuaLaTeX are used. Please make sure
+%your text editor is set to UTF-8 if you want to view this code.
+%\changes{1.0}{2015-03-25}{Initial release}
+% Identify module
+% \begin{macrocode}
+\ProvidesDateTimeModule{scottish-utf8}[2015/03/25 v1.0]
+% \end{macrocode}
+%\begin{macro}{\DTMscottishordinal}
+% I don't know if this is correct, but it's provided in case
+% a suffix is required.
+% \begin{macrocode}
+\newcommand*{\DTMscottishordinal}[1]{%
+ \number#1 % space intended
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMscottishmonthname}
+% Scottish month names.
+% \begin{macrocode}
+\newcommand*{\DTMscottishmonthname}[1]{%
+ \ifcase#1
+ \or
+ am Faoilteach%
+ \or
+ an Gearran%
+ \or
+ am MĆ rt%
+ \or
+ an Giblean%
+ \or
+ an CĆØitean%
+ \or
+ an t-ƒg mhios%
+ \or
+ an t-Iuchar%
+ \or
+ LĆ¹nasdal%
+ \or
+ an Sultuine%
+ \or
+ an DĆ mhar%
+ \or
+ an t-Samhainn%
+ \or
+ an Dubhlachd%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMscottishMonthname}
+% Scottish month names (when occuring at the start of sentence). Is
+% this correct?
+% \begin{macrocode}
+\newcommand*{\DTMscottishMonthname}[1]{%
+ \ifcase#1
+ \or
+ Am Faoilteach%
+ \or
+ An Gearran%
+ \or
+ Am MĆ rt%
+ \or
+ An Giblean%
+ \or
+ An CĆØitean%
+ \or
+ An t-ƒg mhios%
+ \or
+ An t-Iuchar%
+ \or
+ LĆ¹nasdal%
+ \or
+ An Sultuine%
+ \or
+ An DĆ mhar%
+ \or
+ An t-Samhainn%
+ \or
+ An Dubhlachd%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%If abbreviated dates are supported, short month names should be
+%likewise provided.
+%
+%\iffalse
+% \begin{macrocode}
+%</datetime2-scottish-utf8.ldf>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*datetime2-scottish-ascii.ldf>
+% \end{macrocode}
+%\fi
+%\subsection{ASCII}
+%This file contains the settings that use \LaTeX\ commands for
+%non-ASCII characters. This should be input if neither XeLaTeX nor
+%LuaLaTeX are used. Even if the user has loaded \sty{inputenc} with
+%"utf8", this file should still be used not the
+%\texttt{datetime2-scottish-utf8.ldf} file as the non-ASCII
+%characters are made active in that situation and would need
+%protecting against expansion.
+%\changes{1.0}{2015-03-25}{Initial release}
+% Identify module
+% \begin{macrocode}
+\ProvidesDateTimeModule{scottish-ascii}[2015/03/25 v1.0]
+% \end{macrocode}
+%\begin{macro}{\DTMscottishordinal}
+% I don't know if this is correct, but it's provided in case
+% a suffix is required.
+% \begin{macrocode}
+\newcommand*{\DTMscottishordinal}[1]{%
+ \number#1 % space intended
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMscottishmonthname}
+% Scottish month names.
+% \begin{macrocode}
+\newcommand*{\DTMscottishmonthname}[1]{%
+ \ifcase#1
+ \or
+ am Faoilteach%
+ \or
+ an Gearran%
+ \or
+ am M\protect\`art%
+ \or
+ an Giblean%
+ \or
+ an C\protect\`eitean%
+ \or
+ an t-\protect\`Og mhios%
+ \or
+ an t-Iuchar%
+ \or
+ L\protect\`unasdal%
+ \or
+ an Sultuine%
+ \or
+ an D\protect\`amhar%
+ \or
+ an t-Samhainn%
+ \or
+ an Dubhlachd%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMscottishMonthname}
+% Scottish month names (when occurring at the start of sentence). Is
+% this correct?
+% \begin{macrocode}
+\newcommand*{\DTMscottishMonthname}[1]{%
+ \ifcase#1
+ \or
+ Am Faoilteach%
+ \or
+ An Gearran%
+ \or
+ Am M\protect\`art%
+ \or
+ An Giblean%
+ \or
+ An C\protect\`eitean%
+ \or
+ An t-\protect\`Og mhios%
+ \or
+ An t-Iuchar%
+ \or
+ L\protect\`unasdal%
+ \or
+ An Sultuine%
+ \or
+ An D\protect\`amhar%
+ \or
+ An t-Samhainn%
+ \or
+ An Dubhlachd%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%If abbreviated dates are supported, short month names should be
+%likewise provided.
+%
+%\iffalse
+% \begin{macrocode}
+%</datetime2-scottish-ascii.ldf>
+% \end{macrocode}
+%\fi
+%
+%\subsection{Main Scottish Module (\texttt{datetime2-scottish.ldf})}
+%\changes{1.0}{2015-03-25}{Initial release}
+%
+%\iffalse
+% \begin{macrocode}
+%<*datetime2-scottish.ldf>
+% \end{macrocode}
+%\fi
+%
+% Identify Module
+% \begin{macrocode}
+\ProvidesDateTimeModule{scottish}[2015/03/25 v1.0]
+% \end{macrocode}
+% Need to find out if XeTeX or LuaTeX are being used.
+% \begin{macrocode}
+\RequirePackage{ifxetex,ifluatex}
+% \end{macrocode}
+% XeTeX and LuaTeX natively support UTF-8, so load
+% \texttt{scottish-utf8} if either of those engines are used
+% otherwise load \texttt{scottish-ascii}.
+% \begin{macrocode}
+\ifxetex
+ \RequireDateTimeModule{scottish-utf8}
+\else
+ \ifluatex
+ \RequireDateTimeModule{scottish-utf8}
+ \else
+ \RequireDateTimeModule{scottish-ascii}
+ \fi
+\fi
+% \end{macrocode}
+%
+% Define the \texttt{scottish} style.
+% The time style is the same as the "default" style
+% provided by \sty{datetime2}. This may need correcting. For
+% example, if a 12 hour style similar to the "englishampm" (from the
+% "english-base" module) is required.
+%
+% Allow the user a way of configuring the "scottish" and
+% "scottish-numeric" styles. This doesn't use the package wide
+% separators such as
+% \cs{dtm@datetimesep} in case other date formats are also required.
+%\begin{macro}{\DTMscottishdaymonthsep}
+% The separator between the day and month for the text format.
+% \begin{macrocode}
+\newcommand*{\DTMscottishdaymonthsep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMscottishmonthyearsep}
+% The separator between the month and year for the text format.
+% \begin{macrocode}
+\newcommand*{\DTMscottishmonthyearsep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMscottishdatetimesep}
+% The separator between the date and time blocks in the full format
+% (either text or numeric).
+% \begin{macrocode}
+\newcommand*{\DTMscottishdatetimesep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMscottishtimezonesep}
+% The separator between the time and zone blocks in the full format
+% (either text or numeric).
+% \begin{macrocode}
+\newcommand*{\DTMscottishtimezonesep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMscottishdatesep}
+% The separator for the numeric date format.
+% \begin{macrocode}
+\newcommand*{\DTMscottishdatesep}{/}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMscottishtimesep}
+% The separator for the numeric time format.
+% \begin{macrocode}
+\newcommand*{\DTMscottishtimesep}{:}
+% \end{macrocode}
+%\end{macro}
+%
+%Provide keys that can be used in \cs{DTMlangsetup} to set these
+%separators.
+% \begin{macrocode}
+\DTMdefkey{scottish}{daymonthsep}{\renewcommand*{\DTMscottishdaymonthsep}{#1}}
+\DTMdefkey{scottish}{monthyearsep}{\renewcommand*{\DTMscottishmonthyearsep}{#1}}
+\DTMdefkey{scottish}{datetimesep}{\renewcommand*{\DTMscottishdatetimesep}{#1}}
+\DTMdefkey{scottish}{timezonesep}{\renewcommand*{\DTMscottishtimezonesep}{#1}}
+\DTMdefkey{scottish}{datesep}{\renewcommand*{\DTMscottishdatesep}{#1}}
+\DTMdefkey{scottish}{timesep}{\renewcommand*{\DTMscottishtimesep}{#1}}
+% \end{macrocode}
+%
+% TODO: provide a boolean key to switch between full and abbreviated
+% formats if appropriate. (I don't know how the date should be
+% abbreviated.)
+%
+% Define a boolean key that determines if the time zone mappings
+% should be used.
+% \begin{macrocode}
+\DTMdefboolkey{scottish}{mapzone}[true]{}
+% \end{macrocode}
+% The default is to use mappings.
+% \begin{macrocode}
+\DTMsetbool{scottish}{mapzone}{true}
+% \end{macrocode}
+%
+% Define a boolean key that determines if the day of month should be
+% displayed.
+% \begin{macrocode}
+\DTMdefboolkey{scottish}{showdayofmonth}[true]{}
+% \end{macrocode}
+% The default is to show the day of month.
+% \begin{macrocode}
+\DTMsetbool{scottish}{showdayofmonth}{true}
+% \end{macrocode}
+%
+% Define a boolean key that determines if the year should be
+% displayed.
+% \begin{macrocode}
+\DTMdefboolkey{scottish}{showyear}[true]{}
+% \end{macrocode}
+% The default is to show the year.
+% \begin{macrocode}
+\DTMsetbool{scottish}{showyear}{true}
+% \end{macrocode}
+%
+% Define the "scottish" style. (TODO: implement day of week?)
+% \begin{macrocode}
+\DTMnewstyle
+ {scottish}% label
+ {% date style
+ \renewcommand*\DTMdisplaydate[4]{%
+ \DTMifbool{scottish}{showdayofmonth}
+ {\DTMscottishordinal{##3}\DTMscottishdaymonthsep}%
+ {}%
+ \DTMscottishmonthname{##2}%
+ \DTMifbool{scottish}{showyear}%
+ {%
+ \DTMscottishmonthyearsep
+ \number##1 % space intended
+ }%
+ {}%
+ }%
+ \renewcommand*\DTMDisplaydate[4]{%
+ \DTMifbool{scottish}{showdayofmonth}
+ {%
+ \DTMscottishordinal{##3}\DTMscottishdaymonthsep
+ \DTMscottishMonthname{##2}%
+ }%
+ {\DTMscottishMonthname{##2}}%
+ \DTMifbool{scottish}{showyear}%
+ {%
+ \DTMscottishmonthyearsep
+ \number##1 % space intended
+ }%
+ {}%
+ }%
+ }%
+ {% time style (use default)
+ \DTMsettimestyle{default}%
+ }%
+ {% zone style
+ \DTMresetzones
+ \DTMscottishzonemaps
+ \renewcommand*{\DTMdisplayzone}[2]{%
+ \DTMifbool{scottish}{mapzone}%
+ {\DTMusezonemapordefault{##1}{##2}}%
+ {%
+ \ifnum##1<0\else+\fi\DTMtwodigits{##1}%
+ \ifDTMshowzoneminutes\DTMscottishtimesep\DTMtwodigits{##2}\fi
+ }%
+ }%
+ }%
+ {% full style
+ \renewcommand*{\DTMdisplay}[9]{%
+ \ifDTMshowdate
+ \DTMdisplaydate{##1}{##2}{##3}{##4}%
+ \DTMscottishdatetimesep
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \DTMscottishtimezonesep
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+ \renewcommand*{\DTMDisplay}[9]{%
+ \ifDTMshowdate
+ \DTMDisplaydate{##1}{##2}{##3}{##4}%
+ \DTMscottishdatetimesep
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \DTMscottishtimezonesep
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+ }%
+% \end{macrocode}
+%
+% Define numeric style.
+% \begin{macrocode}
+\DTMnewstyle
+ {scottish-numeric}% label
+ {% date style
+ \renewcommand*\DTMdisplaydate[4]{%
+ \DTMifbool{scottish}{showdayofmonth}%
+ {%
+ \number##3 % space intended
+ \DTMscottishdatesep
+ }%
+ {}%
+ \number##2 % space intended
+ \DTMifbool{scottish}{showyear}%
+ {%
+ \DTMscottishdatesep
+ \number##1 % space intended
+ }%
+ {}%
+ }%
+ \renewcommand*{\DTMDisplaydate}[4]{\DTMdisplaydate{##1}{##2}{##3}{##4}}%
+ }%
+ {% time style
+ \renewcommand*\DTMdisplaytime[3]{%
+ \number##1
+ \DTMscottishtimesep\DTMtwodigits{##2}%
+ \ifDTMshowseconds\DTMscottishtimesep\DTMtwodigits{##3}\fi
+ }%
+ }%
+ {% zone style
+ \DTMresetzones
+ \DTMscottishzonemaps
+ \renewcommand*{\DTMdisplayzone}[2]{%
+ \DTMifbool{scottish}{mapzone}%
+ {\DTMusezonemapordefault{##1}{##2}}%
+ {%
+ \ifnum##1<0\else+\fi\DTMtwodigits{##1}%
+ \ifDTMshowzoneminutes\DTMscottishtimesep\DTMtwodigits{##2}\fi
+ }%
+ }%
+ }%
+ {% full style
+ \renewcommand*{\DTMdisplay}[9]{%
+ \ifDTMshowdate
+ \DTMdisplaydate{##1}{##2}{##3}{##4}%
+ \DTMscottishdatetimesep
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \DTMscottishtimezonesep
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+ \renewcommand*{\DTMDisplay}{\DTMdisplay}%
+ }
+% \end{macrocode}
+%
+%\begin{macro}{\DTMscottishzonemaps}
+% The time zone mappings are set through this command, which can be
+% redefined if extra mappings are required or mappings need to be
+% removed.
+% \begin{macrocode}
+\newcommand*{\DTMscottishzonemaps}{%
+ \DTMdefzonemap{00}{00}{GMT}%
+ \DTMdefzonemap{01}{00}{BST}%
+}
+% \end{macrocode}
+%\end{macro}
+
+% Switch style according to the \opt{useregional} setting.
+% \begin{macrocode}
+\DTMifcaseregional
+{}% do nothing
+{\DTMsetstyle{scottish}}
+{\DTMsetstyle{scottish-numeric}}
+% \end{macrocode}
+%
+% Redefine \cs{datescottish} (or \cs{date}\meta{dialect}) to prevent
+% \sty{babel} from resetting \cs{today}. (For this to work,
+% \sty{babel} must already have been loaded if it's required.)
+% \begin{macrocode}
+\ifcsundef{date\CurrentTrackedDialect}
+{%
+ \ifundef\datescottish
+ {% do nothing
+ }%
+ {%
+ \def\datescottish{%
+ \DTMifcaseregional
+ {}% do nothing
+ {\DTMsetstyle{scottish}}%
+ {\DTMsetstyle{scottish-numeric}}%
+ }%
+ }%
+}%
+{%
+ \csdef{date\CurrentTrackedDialect}{%
+ \DTMifcaseregional
+ {}% do nothing
+ {\DTMsetstyle{scottish}}%
+ {\DTMsetstyle{scottish-numeric}}
+ }%
+}%
+% \end{macrocode}
+%\iffalse
+% \begin{macrocode}
+%</datetime2-scottish.ldf>
+% \end{macrocode}
+%\fi
+%\Finale
+\endinput
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-scottish/datetime2-scottish.ins b/macros/latex/contrib/datetime2-contrib/datetime2-scottish/datetime2-scottish.ins
new file mode 100644
index 0000000000..4247cb57f8
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-scottish/datetime2-scottish.ins
@@ -0,0 +1,61 @@
+\input docstrip
+
+\preamble
+
+ datetime2-scottish.dtx
+ Copyright 2015 Nicola Talbot
+
+ This work may be distributed and/or modified under the
+ conditions of the LaTeX Project Public License, either version 1.3
+ of this license of (at your option) any later version.
+ The latest version of this license is in
+ http://www.latex-project.org/lppl.txt
+ and version 1.3 or later is part of all distributions of LaTeX
+ version 2005/12/01 or later.
+
+ This work has the LPPL maintenance status `inactive'.
+
+ This work consists of the files datetime2-scottish.dtx and
+ datetime2-scottish.ins and the derived files
+ datetime2-scottish-utf8.ldf, datetime2-scottish-ascii.ldf and
+ datetime2-scottish.ldf.
+
+\endpreamble
+
+\askforoverwritefalse
+
+\generate
+{%
+ \file
+ {datetime2-scottish-utf8.ldf}%
+ {%
+ \usepreamble\defaultpreamble
+ \usepostamble\defaultpostamble
+ \from{datetime2-scottish.dtx}{datetime2-scottish-utf8.ldf,package}%
+ }%
+}
+
+\generate
+{%
+ \file
+ {datetime2-scottish-ascii.ldf}%
+ {%
+ \usepreamble\defaultpreamble
+ \usepostamble\defaultpostamble
+ \from{datetime2-scottish.dtx}{datetime2-scottish-ascii.ldf,package}%
+ }%
+}
+
+\generate
+{%
+ \file
+ {datetime2-scottish.ldf}%
+ {%
+ \usepreamble\defaultpreamble
+ \usepostamble\defaultpostamble
+ \from{datetime2-scottish.dtx}{datetime2-scottish.ldf,package}%
+ }%
+}
+
+\endbatchfile
+
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-scottish/datetime2-scottish.pdf b/macros/latex/contrib/datetime2-contrib/datetime2-scottish/datetime2-scottish.pdf
new file mode 100644
index 0000000000..3821191279
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-scottish/datetime2-scottish.pdf
Binary files differ
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-serbian/README b/macros/latex/contrib/datetime2-contrib/datetime2-serbian/README
new file mode 100644
index 0000000000..7f39f59f56
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-serbian/README
@@ -0,0 +1,57 @@
+Serbian Language Module for datetime2 Package
+
+Author: Nicola L. C. Talbot (inactive)
+
+Licence: LPPL
+
+Required Packages: datetime2, tracklang
+
+This module is unmaintained. If you want to volunteer to take over
+the maintenance contact me at www.dickimaw-books.com/contact.html
+
+Example usage:
+
+\documentclass{article}
+\usepackage[serbian]{datetime2}
+\begin{document}
+\today
+\end{document}
+
+\documentclass[serbian]{article}
+\usepackage{babel}
+\usepackage[useregional]{datetime2}
+\begin{document}
+\today
+\end{document}
+
+\documentclass{article}
+\usepackage{polyglossia}
+\setmainlanguage{serbian}
+\usepackage[serbian]{datetime2}
+\begin{document}
+\today
+\end{document}
+
+INSTALLATION
+============
+
+xelatex datetime2-serbian.ins
+
+Move all *.ldf files to
+TEXMF/tex/latex/datetime2-contrib/datetime2-serbian/
+
+Documentation:
+
+xelatex datetime2-serbian.dtx
+makeindex -s gind.ist datetime2-serbian.idx
+makeindex -s gglo.ist -o datetime2-serbian.gls datetime2-serbian.glo
+xelatex datetime2-serbian.dtx
+xelatex datetime2-serbian.dtx
+
+Move datetime2-serbian.pdf and README to
+TEXMF/doc/latex/datetime2-contrib/datetime2-serbian/
+
+This material is subject to the LaTeX Project Public License.
+See http://www.ctan.org/license/lppl1.3 for the details of that
+license.
+
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-serbian/datetime2-serbian.dtx b/macros/latex/contrib/datetime2-contrib/datetime2-serbian/datetime2-serbian.dtx
new file mode 100644
index 0000000000..2252459aa8
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-serbian/datetime2-serbian.dtx
@@ -0,0 +1,806 @@
+%\iffalse
+%<*package>
+%% \CharacterTable
+%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+%% Digits \0\1\2\3\4\5\6\7\8\9
+%% Exclamation \! Double quote \" Hash (number) \#
+%% Dollar \$ Percent \% Ampersand \&
+%% Acute accent \' Left paren \( Right paren \)
+%% Asterisk \* Plus \+ Comma \,
+%% Minus \- Point \. Solidus \/
+%% Colon \: Semicolon \; Less than \<
+%% Equals \= Greater than \> Question mark \?
+%% Commercial at \@ Left bracket \[ Backslash \\
+%% Right bracket \] Circumflex \^ Underscore \_
+%% Grave accent \` Left brace \{ Vertical bar \|
+%% Right brace \} Tilde \~}
+%</package>
+%\fi
+% \iffalse
+% Doc-Source file to use with LaTeX2e
+% Copyright (C) 2015 Nicola Talbot, all rights reserved.
+% (New maintainer add relevant lines here.)
+% \fi
+% \iffalse
+%<*driver>
+\documentclass{ltxdoc}
+
+\usepackage{alltt}
+\usepackage{graphicx}
+\usepackage{fontspec}
+\usepackage[colorlinks,
+ bookmarks,
+ hyperindex=false,
+ pdfauthor={Nicola L.C. Talbot},
+ pdftitle={datetime2.sty Serbian Module}]{hyperref}
+
+\setmainfont{Liberation Serif}
+\setmonofont{Liberation Mono}
+\newfontfamily\cyrillicfont{Liberation Serif}
+
+\CheckSum{615}
+
+\renewcommand*{\usage}[1]{\hyperpage{#1}}
+\renewcommand*{\main}[1]{\hyperpage{#1}}
+\IndexPrologue{\section*{\indexname}\markboth{\indexname}{\indexname}}
+\setcounter{IndexColumns}{2}
+
+\newcommand*{\sty}[1]{\textsf{#1}}
+\newcommand*{\opt}[1]{\texttt{#1}\index{#1=\texttt{#1}|main}}
+
+\RecordChanges
+\PageIndex
+\CodelineNumbered
+
+\begin{document}
+\DocInput{datetime2-serbian.dtx}
+\end{document}
+%</driver>
+%\fi
+%
+%\MakeShortVerb{"}
+%
+%\title{Serbian Module for datetime2 Package}
+%\author{Nicola L. C. Talbot (inactive)}
+%\date{2015-03-31 (v1.0)}
+%\maketitle
+%
+%This module is currently unmaintained and may be subject to change.
+%If you want to volunteer to take over maintanance, contact me at
+%\url{http://www.dickimaw-books.com/contact.html}
+%
+%\begin{abstract}
+%This is the Serbian language module for the \sty{datetime2}
+%package. If you want to use the settings in this module you must
+%install it in addition to installing \sty{datetime2}. If you use
+%\sty{babel} or \sty{polyglossia}, you will need this module to
+%prevent them from redefining \cs{today}. The \sty{datetime2}
+% \opt{useregional} setting must be set to "text" or "numeric"
+% for the language styles to be set.
+% Alternatively, you can set the style in the document using
+% \cs{DTMsetstyle}, but this may be changed by \cs{date}\meta{language}
+% depending on the value of the \opt{useregional} setting.
+%\end{abstract}
+%
+%I've copied the date style from \texttt{babel-serbian}'s \cs{today}.
+%
+%I don't know if these settings are correct as I can't speak Serbian.
+%In particular, I don't know if the "serbian" time style is
+%correct. Currently this just uses the "default" time style. Please
+%be aware that this may change. Whoever takes over maintanance
+%of this module may can change it as appropriate.
+%
+%The new maintainer should add the line:
+%\begin{verbatim}
+% The Current Maintainer of this work is Name.
+%\end{verbatim}
+%to the preamble part in \texttt{datetime2-serbian.ins} where Name
+%is the name of the maintainer(s) and replace
+%the `inactive' status to `maintained'.
+%
+%Currently there is only a regionless style.
+%
+%\StopEventually{%
+%\clearpage
+%\phantomsection
+%\addcontentsline{toc}{section}{Change History}%
+%\PrintChanges
+%\addcontentsline{toc}{section}{\indexname}%
+%\PrintIndex}
+%\section{The Code}
+%\iffalse
+% \begin{macrocode}
+%<*datetime2-serbian-utf8.ldf>
+% \end{macrocode}
+%\fi
+%\subsection{UTF-8}
+%This file contains the settings that use UTF-8 characters. This
+%file is loaded if XeLaTeX or LuaLaTeX are used. Please make sure
+%your text editor is set to UTF-8 if you want to view this code.
+%\changes{1.0}{2015-03-31}{Initial release}
+% Identify module
+% \begin{macrocode}
+\ProvidesDateTimeModule{serbian-utf8}[2015/03/31 v1.0]
+% \end{macrocode}
+%\begin{macro}{\DTMserbianordinal}
+% \begin{macrocode}
+\newcommand*{\DTMserbianordinal}[1]{%
+ \number#1.%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMserbiancyrmonthname}
+% Serbian month names. (Cyrillic alphabet.)
+% \begin{macrocode}
+\newcommand*{\DTMserbiancyrmonthname}[1]{%
+ \ifcase#1
+ \or
+ јŠ°Š½ŃƒŠ°Ń€%
+ \or
+ фŠµŠ±Ń€ŃƒŠ°Ń€%
+ \or
+ Š¼Š°Ń€Ń‚%
+ \or
+ Š°ŠæрŠøŠ»%
+ \or
+ Š¼Š°Ń˜%
+ \or
+ јуŠ½%
+ \or
+ јуŠ»%
+ \or
+ Š°Š²Š³ŃƒŃŃ‚%
+ \or
+ сŠµŠæтŠµŠ¼Š±Š°Ń€%
+ \or
+ Š¾ŠŗтŠ¾Š±Š°Ń€%
+ \or
+ Š½Š¾Š²ŠµŠ¼Š±Š°Ń€%
+ \or
+ Š“ŠµŃ†ŠµŠ¼Š±Š°Ń€%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMserbiancyrMonthname}
+% As above but capitalize.
+% \begin{macrocode}
+\newcommand*{\DTMserbiancyrMonthname}[1]{%
+ \ifcase#1
+ \or
+ ŠˆŠ°Š½ŃƒŠ°Ń€%
+ \or
+ Š¤ŠµŠ±Ń€ŃƒŠ°Ń€%
+ \or
+ ŠœŠ°Ń€Ń‚%
+ \or
+ ŠŠæрŠøŠ»%
+ \or
+ ŠœŠ°Ń˜%
+ \or
+ ŠˆŃƒŠ½%
+ \or
+ ŠˆŃƒŠ»%
+ \or
+ ŠŠ²Š³ŃƒŃŃ‚%
+ \or
+ Š”ŠµŠæтŠµŠ¼Š±Š°Ń€%
+ \or
+ ŠžŠŗтŠ¾Š±Š°Ń€%
+ \or
+ ŠŠ¾Š²ŠµŠ¼Š±Š°Ń€%
+ \or
+ Š”ŠµŃ†ŠµŠ¼Š±Š°Ń€%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMserbianlatinmonthname}
+% Serbian month names. (Latin alphabet.)
+% \begin{macrocode}
+\newcommand*{\DTMserbianlatinmonthname}[1]{%
+ \ifcase#1
+ \or
+ januar%
+ \or
+ februar%
+ \or
+ mart%
+ \or
+ april%
+ \or
+ maj%
+ \or
+ juni%
+ \or
+ juli%
+ \or
+ avgust%
+ \or
+ septembar%
+ \or
+ oktobar%
+ \or
+ novembar%
+ \or
+ decembar%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMserbianlatinMonthname}
+% As above but capitalize.
+% \begin{macrocode}
+\newcommand*{\DTMserbianlatinMonthname}[1]{%
+ \ifcase#1
+ \or
+ Januar%
+ \or
+ Februar%
+ \or
+ Mart%
+ \or
+ April%
+ \or
+ Maj%
+ \or
+ Juni%
+ \or
+ Juli%
+ \or
+ Avgust%
+ \or
+ Septembar%
+ \or
+ Oktobar%
+ \or
+ Novembar%
+ \or
+ Decembar%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%If abbreviated dates are supported, short month names should be
+%likewise provided.
+%
+%\iffalse
+% \begin{macrocode}
+%</datetime2-serbian-utf8.ldf>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*datetime2-serbian-ascii.ldf>
+% \end{macrocode}
+%\fi
+%\subsection{ASCII}
+%This file contains the settings that use \LaTeX\ commands for
+%non-ASCII characters. This should be input if neither XeLaTeX nor
+%LuaLaTeX are used. Even if the user has loaded \sty{inputenc} with
+%"utf8", this file should still be used not the
+%\texttt{datetime2-serbian-utf8.ldf} file as the non-ASCII
+%characters are made active in that situation and would need
+%protecting against expansion.
+%\changes{1.0}{2015-03-31}{Initial release}
+% Identify module
+% \begin{macrocode}
+\ProvidesDateTimeModule{serbian-ascii}[2015/03/31 v1.0]
+% \end{macrocode}
+%
+%If abbreviated dates are supported, short month names should be
+%likewise provided.
+%\begin{macro}{\DTMserbianordinal}
+% \begin{macrocode}
+\newcommand*{\DTMserbianordinal}[1]{%
+ \number#1.%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMserbiancyrmonthname}
+% Serbian month names. (Cyrillic alphabet.) I'm not sure if these
+% are correct.
+% \begin{macrocode}
+\newcommand*{\DTMserbiancyrmonthname}[1]{%
+ \ifcase#1
+ \or
+ \protect\cyrje\protect\cyra\protect\cyrn\protect\cyru\protect\cyra
+ \protect\cyrr
+ \or
+ \protect\cyrf\protect\cyrie\protect\cyrb\protect\cyrr\protect\cyru
+ \protect\cyrr
+ \or
+ \protect\cyrm\protect\cyra\protect\cyrr\protect\cyrt
+ \or
+ \protect\cyra\protect\cyrp\protect\cyrr\protect\cyri\protect\cyrl
+ \or
+ \protect\cyrm\protect\cyra\protect\cyrje
+ \or
+ \protect\cyrje\protect\cyru\protect\cyrn
+ \or
+ \protect\cyrje\protect\cyru\protect\cyrl
+ \or
+ \protect\cyra\protect\cyrv\protect\cyrg\protect\cyru\protect\cyrs
+ \protect\cyrt
+ \or
+ \protect\cyrs\protect\cyre\protect\cyrp\protect\cyrt\protect\cyre
+ \protect\cyrm\protect\cyrb\protect\cyra\protect\cyrr
+ \or
+ \protect\cyro\protect\cyrk\protect\cyrt\protect\cyro\protect\cyrb
+ \protect\cyra\protect\cyrr
+ \or
+ \protect\cyrn\protect\cyro\protect\cyrv\protect\cyre\protect\cyrm
+ \protect\cyrb\protect\cyra\protect\cyrr
+ \or
+ \protect\cyrd\protect\cyre\protect\cyrc\protect\cyre\protect\cyrm
+ \protect\cyrb\protect\cyra\protect\cyrr
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMserbiancyrMonthname}
+% As above but capitalize.
+% \begin{macrocode}
+\newcommand*{\DTMserbiancyrMonthname}[1]{%
+ \ifcase#1
+ \or
+ \protect\CYRJE\protect\cyra\protect\cyrn\protect\cyru\protect\cyra
+ \protect\cyrr
+ \or
+ \protect\CYRF\protect\cyrie\protect\cyrb\protect\cyrr\protect\cyru
+ \protect\cyrr
+ \or
+ \protect\CYRM\protect\cyra\protect\cyrr\protect\cyrt
+ \or
+ \protect\CYRA\protect\cyrp\protect\cyrr\protect\cyri\protect\cyrl
+ \or
+ \protect\CYRM\protect\cyra\protect\cyrje
+ \or
+ \protect\CYRJE\protect\cyru\protect\cyrn
+ \or
+ \protect\CYRJE\protect\cyru\protect\cyrl
+ \or
+ \protect\CYRA\protect\cyrv\protect\cyrg\protect\cyru\protect\cyrs
+ \protect\cyrt
+ \or
+ \protect\CYRS\protect\cyre\protect\cyrp\protect\cyrt\protect\cyre
+ \protect\cyrm\protect\cyrb\protect\cyra\protect\cyrr
+ \or
+ \protect\CYRO\protect\cyrk\protect\cyrt\protect\cyro\protect\cyrb
+ \protect\cyra\protect\cyrr
+ \or
+ \protect\CYRN\protect\cyro\protect\cyrv\protect\cyre\protect\cyrm
+ \protect\cyrb\protect\cyra\protect\cyrr
+ \or
+ \protect\CYRD\protect\cyre\protect\cyrc\protect\cyre\protect\cyrm
+ \protect\cyrb\protect\cyra\protect\cyrr
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMserbianlatinmonthname}
+% Serbian month names. (Latin alphabet.)
+% \begin{macrocode}
+\newcommand*{\DTMserbianlatinmonthname}[1]{%
+ \ifcase#1
+ \or
+ januar%
+ \or
+ februar%
+ \or
+ mart%
+ \or
+ april%
+ \or
+ maj%
+ \or
+ juni%
+ \or
+ juli%
+ \or
+ avgust%
+ \or
+ septembar%
+ \or
+ oktobar%
+ \or
+ novembar%
+ \or
+ decembar%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMserbianlatinMonthname}
+% As above but capitalize.
+% \begin{macrocode}
+\newcommand*{\DTMserbianlatinMonthname}[1]{%
+ \ifcase#1
+ \or
+ Januar%
+ \or
+ Februar%
+ \or
+ Mart%
+ \or
+ April%
+ \or
+ Maj%
+ \or
+ Juni%
+ \or
+ Juli%
+ \or
+ Avgust%
+ \or
+ Septembar%
+ \or
+ Oktobar%
+ \or
+ Novembar%
+ \or
+ Decembar%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\iffalse
+% \begin{macrocode}
+%</datetime2-serbian-ascii.ldf>
+% \end{macrocode}
+%\fi
+%
+%\subsection{Main Serbian Module (\texttt{datetime2-serbian.ldf})}
+%\changes{1.0}{2015-03-31}{Initial release}
+%
+%\iffalse
+% \begin{macrocode}
+%<*datetime2-serbian.ldf>
+% \end{macrocode}
+%\fi
+%
+% Identify Module
+% \begin{macrocode}
+\ProvidesDateTimeModule{serbian}[2015/03/31 v1.0]
+% \end{macrocode}
+% Need to find out if XeTeX or LuaTeX are being used.
+% \begin{macrocode}
+\RequirePackage{ifxetex,ifluatex}
+% \end{macrocode}
+% XeTeX and LuaTeX natively support UTF-8, so load
+% \texttt{serbian-utf8} if either of those engines are used
+% otherwise load \texttt{serbian-ascii}.
+% \begin{macrocode}
+\ifxetex
+ \RequireDateTimeModule{serbian-utf8}
+\else
+ \ifluatex
+ \RequireDateTimeModule{serbian-utf8}
+ \else
+ \RequireDateTimeModule{serbian-ascii}
+ \fi
+\fi
+% \end{macrocode}
+%
+% Define the \texttt{serbian} style.
+% The time style is the same as the "default" style
+% provided by \sty{datetime2}. This may need correcting. For
+% example, if a 12 hour style similar to the "englishampm" (from the
+% "english-base" module) is required.
+%
+% Allow the user a way of configuring the "serbian" and
+% "serbian-numeric" styles. This doesn't use the package wide
+% separators such as
+% \cs{dtm@datetimesep} in case other date formats are also required.
+%\begin{macro}{\DTMserbiandaymonthsep}
+% The separator between the day and month for the text format.
+% \begin{macrocode}
+\newcommand*{\DTMserbiandaymonthsep}{%
+ \DTMtexorpdfstring{\protect~}{\space}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMserbianmonthyearsep}
+% The separator between the month and year for the text format.
+% \begin{macrocode}
+\newcommand*{\DTMserbianmonthyearsep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMserbiandatetimesep}
+% The separator between the date and time blocks in the full format
+% (either text or numeric).
+% \begin{macrocode}
+\newcommand*{\DTMserbiandatetimesep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMserbiantimezonesep}
+% The separator between the time and zone blocks in the full format
+% (either text or numeric).
+% \begin{macrocode}
+\newcommand*{\DTMserbiantimezonesep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMserbiandatesep}
+% The separator for the numeric date format.
+% \begin{macrocode}
+\newcommand*{\DTMserbiandatesep}{.}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMserbiantimesep}
+% The separator for the numeric time format.
+% \begin{macrocode}
+\newcommand*{\DTMserbiantimesep}{.}
+% \end{macrocode}
+%\end{macro}
+%
+%Provide keys that can be used in \cs{DTMlangsetup} to set these
+%separators.
+% \begin{macrocode}
+\DTMdefkey{serbian}{daymonthsep}{\renewcommand*{\DTMserbiandaymonthsep}{#1}}
+\DTMdefkey{serbian}{monthyearsep}{\renewcommand*{\DTMserbianmonthyearsep}{#1}}
+\DTMdefkey{serbian}{datetimesep}{\renewcommand*{\DTMserbiandatetimesep}{#1}}
+\DTMdefkey{serbian}{timezonesep}{\renewcommand*{\DTMserbiantimezonesep}{#1}}
+\DTMdefkey{serbian}{datesep}{\renewcommand*{\DTMserbiandatesep}{#1}}
+\DTMdefkey{serbian}{timesep}{\renewcommand*{\DTMserbiantimesep}{#1}}
+% \end{macrocode}
+%
+%\begin{macro}{\DTMserbianmonthname}
+% Provide a way to switch between Latin and Cyrillic month names.
+% \begin{macrocode}
+\newcommand*{\DTMserbianmonthname}{\DTMserbiancyrmonthname}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\DTMserbianMonthname}
+% \begin{macrocode}
+\newcommand*{\DTMserbianMonthname}{\DTMserbiancyrMonthname}
+% \end{macrocode}
+%\end{macro}
+%
+% \begin{macrocode}
+\DTMdefchoicekey{serbian}{alphabet}[\val\nr]{cyrillic,latin}{%
+ \ifcase\nr\relax
+ \renewcommand*{\DTMserbianmonthname}{\DTMserbiancyrmonthname}%
+ \renewcommand*{\DTMserbianMonthname}{\DTMserbiancyrMonthname}%
+ \or
+ \renewcommand*{\DTMserbianmonthname}{\DTMserbianlatinmonthname}%
+ \renewcommand*{\DTMserbianMonthname}{\DTMserbianlatinMonthname}%
+ \fi
+}
+% \end{macrocode}
+%
+% TODO: provide a boolean key to switch between full and abbreviated
+% formats if appropriate. (I don't know how the date should be
+% abbreviated.)
+%
+% Define a boolean key that determines if the time zone mappings
+% should be used.
+% \begin{macrocode}
+\DTMdefboolkey{serbian}{mapzone}[true]{}
+% \end{macrocode}
+% The default is to use mappings.
+% \begin{macrocode}
+\DTMsetbool{serbian}{mapzone}{true}
+% \end{macrocode}
+%
+% Define a boolean key that determines if the day of month should be
+% displayed.
+% \begin{macrocode}
+\DTMdefboolkey{serbian}{showdayofmonth}[true]{}
+% \end{macrocode}
+% The default is to show the day of month.
+% \begin{macrocode}
+\DTMsetbool{serbian}{showdayofmonth}{true}
+% \end{macrocode}
+%
+% Define a boolean key that determines if the year should be
+% displayed.
+% \begin{macrocode}
+\DTMdefboolkey{serbian}{showyear}[true]{}
+% \end{macrocode}
+% The default is to show the year.
+% \begin{macrocode}
+\DTMsetbool{serbian}{showyear}{true}
+% \end{macrocode}
+%
+% Define the "serbian" style. (TODO: implement day of week?)
+% \begin{macrocode}
+\DTMnewstyle
+ {serbian}% label
+ {% date style
+ \renewcommand*\DTMdisplaydate[4]{%
+ \DTMifbool{serbian}{showdayofmonth}
+ {\DTMserbianordinal{##3}\DTMserbiandaymonthsep}%
+ {}%
+ \DTMserbianmonthname{##2}%
+ \DTMifbool{serbian}{showyear}%
+ {%
+ \DTMserbianmonthyearsep
+ \number##1
+ }%
+ {}%
+ }%
+ \renewcommand*\DTMDisplaydate[4]{%
+ \DTMifbool{serbian}{showdayofmonth}
+ {%
+ \DTMserbianordinal{##3}\DTMserbiandaymonthsep
+ \DTMserbianmonthname{##2}%
+ }%
+ {%
+ \DTMserbianMonthname{##2}%
+ }%
+ \DTMifbool{serbian}{showyear}%
+ {%
+ \DTMserbianmonthyearsep
+ \number##1
+ }%
+ {}%
+ }%
+ }%
+ {% time style (use default)
+ \DTMsettimestyle{default}%
+ }%
+ {% zone style
+ \DTMresetzones
+ \DTMserbianzonemaps
+ \renewcommand*{\DTMdisplayzone}[2]{%
+ \DTMifbool{serbian}{mapzone}%
+ {\DTMusezonemapordefault{##1}{##2}}%
+ {%
+ \ifnum##1<0\else+\fi\DTMtwodigits{##1}%
+ \ifDTMshowzoneminutes\DTMserbiantimesep\DTMtwodigits{##2}\fi
+ }%
+ }%
+ }%
+ {% full style
+ \renewcommand*{\DTMdisplay}[9]{%
+ \ifDTMshowdate
+ \DTMdisplaydate{##1}{##2}{##3}{##4}%
+ \DTMserbiandatetimesep
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \DTMserbiantimezonesep
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+ \renewcommand*{\DTMDisplay}[9]{%
+ \ifDTMshowdate
+ \DTMDisplaydate{##1}{##2}{##3}{##4}%
+ \DTMserbiandatetimesep
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \DTMserbiantimezonesep
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+ }%
+% \end{macrocode}
+%
+% Define numeric style.
+% \begin{macrocode}
+\DTMnewstyle
+ {serbian-numeric}% label
+ {% date style
+ \renewcommand*\DTMdisplaydate[4]{%
+ \DTMifbool{serbian}{showdayofmonth}%
+ {%
+ \number##3 % space intended
+ \DTMserbiandatesep
+ }%
+ {}%
+ \number##2 % space intended
+ \DTMifbool{serbian}{showyear}%
+ {%
+ \DTMserbiandatesep
+ \number##1 % space intended
+ }%
+ {}%
+ }%
+ \renewcommand*{\DTMDisplaydate}{\DTMdisplaydate}%
+ }%
+ {% time style
+ \renewcommand*\DTMdisplaytime[3]{%
+ \number##1
+ \DTMserbiantimesep\DTMtwodigits{##2}%
+ \ifDTMshowseconds\DTMserbiantimesep\DTMtwodigits{##3}\fi
+ }%
+ }%
+ {% zone style
+ \DTMresetzones
+ \DTMserbianzonemaps
+ \renewcommand*{\DTMdisplayzone}[2]{%
+ \DTMifbool{serbian}{mapzone}%
+ {\DTMusezonemapordefault{##1}{##2}}%
+ {%
+ \ifnum##1<0\else+\fi\DTMtwodigits{##1}%
+ \ifDTMshowzoneminutes\DTMserbiantimesep\DTMtwodigits{##2}\fi
+ }%
+ }%
+ }%
+ {% full style
+ \renewcommand*{\DTMdisplay}[9]{%
+ \ifDTMshowdate
+ \DTMdisplaydate{##1}{##2}{##3}{##4}%
+ \DTMserbiandatetimesep
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \DTMserbiantimezonesep
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+ \renewcommand*{\DTMDisplay}{\DTMdisplay}%
+ }
+% \end{macrocode}
+%
+%\begin{macro}{\DTMserbianzonemaps}
+% The time zone mappings are set through this command, which can be
+% redefined if extra mappings are required or mappings need to be
+% removed.
+% \begin{macrocode}
+\newcommand*{\DTMserbianzonemaps}{%
+ \DTMdefzonemap{01}{00}{CET}%
+ \DTMdefzonemap{02}{00}{CEST}%
+}
+% \end{macrocode}
+%\end{macro}
+
+% Switch style according to the \opt{useregional} setting.
+% \begin{macrocode}
+\DTMifcaseregional
+{}% do nothing
+{\DTMsetstyle{serbian}}
+{\DTMsetstyle{serbian-numeric}}
+% \end{macrocode}
+%
+% Redefine \cs{dateserbian} (or \cs{date}\meta{dialect}) to prevent
+% \sty{babel} from resetting \cs{today}. (For this to work,
+% \sty{babel} must already have been loaded if it's required.)
+% \begin{macrocode}
+\ifcsundef{date\CurrentTrackedDialect}
+{%
+ \ifundef\dateserbian
+ {% do nothing
+ }%
+ {%
+ \def\dateserbian{%
+ \DTMifcaseregional
+ {}% do nothing
+ {\DTMsetstyle{serbian}}%
+ {\DTMsetstyle{serbian-numeric}}%
+ }%
+ }%
+}%
+{%
+ \csdef{date\CurrentTrackedDialect}{%
+ \DTMifcaseregional
+ {}% do nothing
+ {\DTMsetstyle{serbian}}%
+ {\DTMsetstyle{serbian-numeric}}
+ }%
+}%
+% \end{macrocode}
+%\iffalse
+% \begin{macrocode}
+%</datetime2-serbian.ldf>
+% \end{macrocode}
+%\fi
+%\Finale
+\endinput
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-serbian/datetime2-serbian.ins b/macros/latex/contrib/datetime2-contrib/datetime2-serbian/datetime2-serbian.ins
new file mode 100644
index 0000000000..fc13ef145a
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-serbian/datetime2-serbian.ins
@@ -0,0 +1,61 @@
+\input docstrip
+
+\preamble
+
+ datetime2-serbian.dtx
+ Copyright 2015 Nicola Talbot
+
+ This work may be distributed and/or modified under the
+ conditions of the LaTeX Project Public License, either version 1.3
+ of this license of (at your option) any later version.
+ The latest version of this license is in
+ http://www.latex-project.org/lppl.txt
+ and version 1.3 or later is part of all distributions of LaTeX
+ version 2005/12/01 or later.
+
+ This work has the LPPL maintenance status `inactive'.
+
+ This work consists of the files datetime2-serbian.dtx and
+ datetime2-serbian.ins and the derived files
+ datetime2-serbian-utf8.ldf, datetime2-serbian-ascii.ldf and
+ datetime2-serbian.ldf.
+
+\endpreamble
+
+\askforoverwritefalse
+
+\generate
+{%
+ \file
+ {datetime2-serbian-utf8.ldf}%
+ {%
+ \usepreamble\defaultpreamble
+ \usepostamble\defaultpostamble
+ \from{datetime2-serbian.dtx}{datetime2-serbian-utf8.ldf,package}%
+ }%
+}
+
+\generate
+{%
+ \file
+ {datetime2-serbian-ascii.ldf}%
+ {%
+ \usepreamble\defaultpreamble
+ \usepostamble\defaultpostamble
+ \from{datetime2-serbian.dtx}{datetime2-serbian-ascii.ldf,package}%
+ }%
+}
+
+\generate
+{%
+ \file
+ {datetime2-serbian.ldf}%
+ {%
+ \usepreamble\defaultpreamble
+ \usepostamble\defaultpostamble
+ \from{datetime2-serbian.dtx}{datetime2-serbian.ldf,package}%
+ }%
+}
+
+\endbatchfile
+
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-serbian/datetime2-serbian.pdf b/macros/latex/contrib/datetime2-contrib/datetime2-serbian/datetime2-serbian.pdf
new file mode 100644
index 0000000000..a7812cf8f0
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-serbian/datetime2-serbian.pdf
Binary files differ
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-slovak/README b/macros/latex/contrib/datetime2-contrib/datetime2-slovak/README
new file mode 100644
index 0000000000..e40a960551
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-slovak/README
@@ -0,0 +1,57 @@
+Slovak Language Module for datetime2 Package
+
+Author: Nicola L. C. Talbot (inactive)
+
+Licence: LPPL
+
+Required Packages: datetime2, tracklang
+
+This module is unmaintained. If you want to volunteer to take over
+the maintenance contact me at www.dickimaw-books.com/contact.html
+
+Example usage:
+
+\documentclass{article}
+\usepackage[slovak]{datetime2}
+\begin{document}
+\today
+\end{document}
+
+\documentclass[slovak]{article}
+\usepackage{babel}
+\usepackage[useregional]{datetime2}
+\begin{document}
+\today
+\end{document}
+
+\documentclass{article}
+\usepackage{polyglossia}
+\setmainlanguage{slovak}
+\usepackage[slovak]{datetime2}
+\begin{document}
+\today
+\end{document}
+
+INSTALLATION
+============
+
+xelatex datetime2-slovak.ins
+
+Move all *.ldf files to
+TEXMF/tex/latex/datetime2-contrib/datetime2-slovak/
+
+Documentation:
+
+xelatex datetime2-slovak.dtx
+makeindex -s gind.ist datetime2-slovak.idx
+makeindex -s gglo.ist -o datetime2-slovak.gls datetime2-slovak.glo
+xelatex datetime2-slovak.dtx
+xelatex datetime2-slovak.dtx
+
+Move datetime2-slovak.pdf and README to
+TEXMF/doc/latex/datetime2-contrib/datetime2-slovak/
+
+This material is subject to the LaTeX Project Public License.
+See http://www.ctan.org/license/lppl1.3 for the details of that
+license.
+
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-slovak/datetime2-slovak.dtx b/macros/latex/contrib/datetime2-contrib/datetime2-slovak/datetime2-slovak.dtx
new file mode 100644
index 0000000000..cc947d22bd
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-slovak/datetime2-slovak.dtx
@@ -0,0 +1,634 @@
+%\iffalse
+%<*package>
+%% \CharacterTable
+%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+%% Digits \0\1\2\3\4\5\6\7\8\9
+%% Exclamation \! Double quote \" Hash (number) \#
+%% Dollar \$ Percent \% Ampersand \&
+%% Acute accent \' Left paren \( Right paren \)
+%% Asterisk \* Plus \+ Comma \,
+%% Minus \- Point \. Solidus \/
+%% Colon \: Semicolon \; Less than \<
+%% Equals \= Greater than \> Question mark \?
+%% Commercial at \@ Left bracket \[ Backslash \\
+%% Right bracket \] Circumflex \^ Underscore \_
+%% Grave accent \` Left brace \{ Vertical bar \|
+%% Right brace \} Tilde \~}
+%</package>
+%\fi
+% \iffalse
+% Doc-Source file to use with LaTeX2e
+% Copyright (C) 2015 Nicola Talbot, all rights reserved.
+% (New maintainer add relevant lines here.)
+% \fi
+% \iffalse
+%<*driver>
+\documentclass{ltxdoc}
+
+\usepackage{alltt}
+\usepackage{graphicx}
+\usepackage{fontspec}
+\usepackage[colorlinks,
+ bookmarks,
+ hyperindex=false,
+ pdfauthor={Nicola L.C. Talbot},
+ pdftitle={datetime2.sty Slovak Module}]{hyperref}
+
+\setmainfont{Liberation Serif}
+\setmonofont{Liberation Mono}
+
+\CheckSum{285}
+
+\renewcommand*{\usage}[1]{\hyperpage{#1}}
+\renewcommand*{\main}[1]{\hyperpage{#1}}
+\IndexPrologue{\section*{\indexname}\markboth{\indexname}{\indexname}}
+\setcounter{IndexColumns}{2}
+
+\newcommand*{\sty}[1]{\textsf{#1}}
+\newcommand*{\opt}[1]{\texttt{#1}\index{#1=\texttt{#1}|main}}
+
+\RecordChanges
+\PageIndex
+\CodelineNumbered
+
+\begin{document}
+\DocInput{datetime2-slovak.dtx}
+\end{document}
+%</driver>
+%\fi
+%
+%\MakeShortVerb{"}
+%
+%\title{Slovak Module for datetime2 Package}
+%\author{Nicola L. C. Talbot (inactive)}
+%\date{2015-04-01 (v1.0)}
+%\maketitle
+%
+%This module is currently unmaintained and may be subject to change.
+%If you want to volunteer to take over maintanance, contact me at
+%\url{http://www.dickimaw-books.com/contact.html}
+%
+%\begin{abstract}
+%This is the Slovak language module for the \sty{datetime2}
+%package. If you want to use the settings in this module you must
+%install it in addition to installing \sty{datetime2}. If you use
+%\sty{babel} or \sty{polyglossia}, you will need this module to
+%prevent them from redefining \cs{today}. The \sty{datetime2}
+% \opt{useregional} setting must be set to "text" or "numeric"
+% for the language styles to be set.
+% Alternatively, you can set the style in the document using
+% \cs{DTMsetstyle}, but this may be changed by \cs{date}\meta{language}
+% depending on the value of the \opt{useregional} setting.
+%\end{abstract}
+%
+%I've copied the date style from \texttt{babel-slovak}'s \cs{today}.
+%
+%I don't know if these settings are correct as I can't speak Slovak.
+%In particular, I don't know if the "slovak" time style is
+%correct. Currently this just uses the "default" time style. Please
+%be aware that this may change. Whoever takes over maintanance
+%of this module may can change it as appropriate.
+%
+%The new maintainer should add the line:
+%\begin{verbatim}
+% The Current Maintainer of this work is Name.
+%\end{verbatim}
+%to the preamble part in \texttt{datetime2-slovak.ins} where Name
+%is the name of the maintainer(s) and replace
+%the `inactive' status to `maintained'.
+%
+%Currently there is only a regionless style.
+%
+%\StopEventually{%
+%\clearpage
+%\phantomsection
+%\addcontentsline{toc}{section}{Change History}%
+%\PrintChanges
+%\addcontentsline{toc}{section}{\indexname}%
+%\PrintIndex}
+%\section{The Code}
+%\iffalse
+% \begin{macrocode}
+%<*datetime2-slovak-utf8.ldf>
+% \end{macrocode}
+%\fi
+%\subsection{UTF-8}
+%This file contains the settings that use UTF-8 characters. This
+%file is loaded if XeLaTeX or LuaLaTeX are used. Please make sure
+%your text editor is set to UTF-8 if you want to view this code.
+%\changes{1.0}{2015-04-01}{Initial release}
+% Identify module
+% \begin{macrocode}
+\ProvidesDateTimeModule{slovak-utf8}[2015/04/01 v1.0]
+% \end{macrocode}
+%\begin{macro}{\DTMslovakordinal}
+% \begin{macrocode}
+\newcommand*{\DTMslovakordinal}[1]{%
+ \number#1.%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMslovakmonthname}
+% Slovak month names.
+% \begin{macrocode}
+\newcommand*{\DTMslovakmonthname}[1]{%
+ \ifcase#1
+ \or
+ januƔra%
+ \or
+ februƔra%
+ \or
+ marca%
+ \or
+ aprĆ­la%
+ \or
+ mƔja%
+ \or
+ jĆŗna%
+ \or
+ jĆŗla%
+ \or
+ augusta%
+ \or
+ septembra%
+ \or
+ oktĆ³bra%
+ \or
+ novembra%
+ \or
+ decembra%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMslovakMonthname}
+% As above but capitalize.
+% \begin{macrocode}
+\newcommand*{\DTMslovakMonthname}[1]{%
+ \ifcase#1
+ \or
+ JanuƔra%
+ \or
+ FebruƔra%
+ \or
+ Marca%
+ \or
+ AprĆ­la%
+ \or
+ MƔja%
+ \or
+ JĆŗna%
+ \or
+ JĆŗla%
+ \or
+ Augusta%
+ \or
+ Septembra%
+ \or
+ OktĆ³bra%
+ \or
+ Novembra%
+ \or
+ Decembra%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%If abbreviated dates are supported, short month names should be
+%likewise provided.
+%
+%\iffalse
+% \begin{macrocode}
+%</datetime2-slovak-utf8.ldf>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*datetime2-slovak-ascii.ldf>
+% \end{macrocode}
+%\fi
+%\subsection{ASCII}
+%This file contains the settings that use \LaTeX\ commands for
+%non-ASCII characters. This should be input if neither XeLaTeX nor
+%LuaLaTeX are used. Even if the user has loaded \sty{inputenc} with
+%"utf8", this file should still be used not the
+%\texttt{datetime2-slovak-utf8.ldf} file as the non-ASCII
+%characters are made active in that situation and would need
+%protecting against expansion.
+%\changes{1.0}{2015-04-01}{Initial release}
+% Identify module
+% \begin{macrocode}
+\ProvidesDateTimeModule{slovak-ascii}[2015/04/01 v1.0]
+% \end{macrocode}
+%
+%If abbreviated dates are supported, short month names should be
+%likewise provided.
+%\begin{macro}{\DTMslovakordinal}
+% \begin{macrocode}
+\newcommand*{\DTMslovakordinal}[1]{%
+ \number#1.%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMslovakmonthname}
+% Slovak month names.
+% \begin{macrocode}
+\newcommand*{\DTMslovakmonthname}[1]{%
+ \ifcase#1
+ \or
+ janu\protect\'ara%
+ \or
+ febru\protect\'ara%
+ \or
+ marca%
+ \or
+ apr\protect\'{\protect\i}la%
+ \or
+ m\protect\'aja%
+ \or
+ j\protect\'una%
+ \or
+ j\protect\'ula%
+ \or
+ augusta%
+ \or
+ septembra%
+ \or
+ okt\protect\'obra%
+ \or
+ novembra%
+ \or
+ decembra%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMslovakMonthname}
+% As above but capitalize.
+% \begin{macrocode}
+\newcommand*{\DTMslovakMonthname}[1]{%
+ \ifcase#1
+ \or
+ Janu\protect\'ara%
+ \or
+ Febru\protect\'ara%
+ \or
+ Marca%
+ \or
+ Apr\protect\'{\protect\i}la%
+ \or
+ M\protect\'aja%
+ \or
+ J\protect\'una%
+ \or
+ J\protect\'ula%
+ \or
+ Augusta%
+ \or
+ Septembra%
+ \or
+ Okt\protect\'obra%
+ \or
+ Novembra%
+ \or
+ Decembra%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%
+%\iffalse
+% \begin{macrocode}
+%</datetime2-slovak-ascii.ldf>
+% \end{macrocode}
+%\fi
+%
+%\subsection{Main Slovak Module (\texttt{datetime2-slovak.ldf})}
+%\changes{1.0}{2015-04-01}{Initial release}
+%
+%\iffalse
+% \begin{macrocode}
+%<*datetime2-slovak.ldf>
+% \end{macrocode}
+%\fi
+%
+% Identify Module
+% \begin{macrocode}
+\ProvidesDateTimeModule{slovak}[2015/04/01 v1.0]
+% \end{macrocode}
+% Need to find out if XeTeX or LuaTeX are being used.
+% \begin{macrocode}
+\RequirePackage{ifxetex,ifluatex}
+% \end{macrocode}
+% XeTeX and LuaTeX natively support UTF-8, so load
+% \texttt{slovak-utf8} if either of those engines are used
+% otherwise load \texttt{slovak-ascii}.
+% \begin{macrocode}
+\ifxetex
+ \RequireDateTimeModule{slovak-utf8}
+\else
+ \ifluatex
+ \RequireDateTimeModule{slovak-utf8}
+ \else
+ \RequireDateTimeModule{slovak-ascii}
+ \fi
+\fi
+% \end{macrocode}
+%
+% Define the \texttt{slovak} style.
+% The time style is the same as the "default" style
+% provided by \sty{datetime2}. This may need correcting. For
+% example, if a 12 hour style similar to the "englishampm" (from the
+% "english-base" module) is required.
+%
+% Allow the user a way of configuring the "slovak" and
+% "slovak-numeric" styles. This doesn't use the package wide
+% separators such as
+% \cs{dtm@datetimesep} in case other date formats are also required.
+%\begin{macro}{\DTMslovakdaymonthsep}
+% The separator between the day and month for the text format.
+% \begin{macrocode}
+\newcommand*{\DTMslovakdaymonthsep}{%
+ \DTMtexorpdfstring{\protect~}{\space}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMslovakmonthyearsep}
+% The separator between the month and year for the text format.
+% \begin{macrocode}
+\newcommand*{\DTMslovakmonthyearsep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMslovakdatetimesep}
+% The separator between the date and time blocks in the full format
+% (either text or numeric).
+% \begin{macrocode}
+\newcommand*{\DTMslovakdatetimesep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMslovaktimezonesep}
+% The separator between the time and zone blocks in the full format
+% (either text or numeric).
+% \begin{macrocode}
+\newcommand*{\DTMslovaktimezonesep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMslovakdatesep}
+% The separator for the numeric date format.
+% \begin{macrocode}
+\newcommand*{\DTMslovakdatesep}{.}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMslovaktimesep}
+% The separator for the numeric time format.
+% \begin{macrocode}
+\newcommand*{\DTMslovaktimesep}{:}
+% \end{macrocode}
+%\end{macro}
+%
+%Provide keys that can be used in \cs{DTMlangsetup} to set these
+%separators.
+% \begin{macrocode}
+\DTMdefkey{slovak}{daymonthsep}{\renewcommand*{\DTMslovakdaymonthsep}{#1}}
+\DTMdefkey{slovak}{monthyearsep}{\renewcommand*{\DTMslovakmonthyearsep}{#1}}
+\DTMdefkey{slovak}{datetimesep}{\renewcommand*{\DTMslovakdatetimesep}{#1}}
+\DTMdefkey{slovak}{timezonesep}{\renewcommand*{\DTMslovaktimezonesep}{#1}}
+\DTMdefkey{slovak}{datesep}{\renewcommand*{\DTMslovakdatesep}{#1}}
+\DTMdefkey{slovak}{timesep}{\renewcommand*{\DTMslovaktimesep}{#1}}
+% \end{macrocode}
+%
+% TODO: provide a boolean key to switch between full and abbreviated
+% formats if appropriate. (I don't know how the date should be
+% abbreviated.)
+%
+% Define a boolean key that determines if the time zone mappings
+% should be used.
+% \begin{macrocode}
+\DTMdefboolkey{slovak}{mapzone}[true]{}
+% \end{macrocode}
+% The default is to use mappings.
+% \begin{macrocode}
+\DTMsetbool{slovak}{mapzone}{true}
+% \end{macrocode}
+%
+% Define a boolean key that determines if the day of month should be
+% displayed.
+% \begin{macrocode}
+\DTMdefboolkey{slovak}{showdayofmonth}[true]{}
+% \end{macrocode}
+% The default is to show the day of month.
+% \begin{macrocode}
+\DTMsetbool{slovak}{showdayofmonth}{true}
+% \end{macrocode}
+%
+% Define a boolean key that determines if the year should be
+% displayed.
+% \begin{macrocode}
+\DTMdefboolkey{slovak}{showyear}[true]{}
+% \end{macrocode}
+% The default is to show the year.
+% \begin{macrocode}
+\DTMsetbool{slovak}{showyear}{true}
+% \end{macrocode}
+%
+% Define the "slovak" style. (TODO: implement day of week?)
+% \begin{macrocode}
+\DTMnewstyle
+ {slovak}% label
+ {% date style
+ \renewcommand*\DTMdisplaydate[4]{%
+ \DTMifbool{slovak}{showdayofmonth}
+ {%
+ \DTMslovakordinal{##3}%
+ \DTMslovakdaymonthsep
+ }%
+ {}%
+ \DTMslovakmonthname{##2}%
+ \DTMifbool{slovak}{showyear}%
+ {%
+ \DTMslovakmonthyearsep
+ \number##1
+ }%
+ {}%
+ }%
+ \renewcommand*\DTMDisplaydate[4]{%
+ \DTMifbool{slovak}{showdayofmonth}
+ {%
+ \DTMslovakordinal{##3}%
+ \DTMslovakdaymonthsep
+ \DTMslovakmonthname{##2}%
+ }%
+ {%
+ \DTMslovakMonthname{##2}%
+ }%
+ \DTMifbool{slovak}{showyear}%
+ {%
+ \DTMslovakmonthyearsep
+ \number##1
+ }%
+ {}%
+ }%
+ }%
+ {% time style (use default)
+ \DTMsettimestyle{default}%
+ }%
+ {% zone style
+ \DTMresetzones
+ \DTMslovakzonemaps
+ \renewcommand*{\DTMdisplayzone}[2]{%
+ \DTMifbool{slovak}{mapzone}%
+ {\DTMusezonemapordefault{##1}{##2}}%
+ {%
+ \ifnum##1<0\else+\fi\DTMtwodigits{##1}%
+ \ifDTMshowzoneminutes\DTMslovaktimesep\DTMtwodigits{##2}\fi
+ }%
+ }%
+ }%
+ {% full style
+ \renewcommand*{\DTMdisplay}[9]{%
+ \ifDTMshowdate
+ \DTMdisplaydate{##1}{##2}{##3}{##4}%
+ \DTMslovakdatetimesep
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \DTMslovaktimezonesep
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+ \renewcommand*{\DTMDisplay}[9]{%
+ \ifDTMshowdate
+ \DTMDisplaydate{##1}{##2}{##3}{##4}%
+ \DTMslovakdatetimesep
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \DTMslovaktimezonesep
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+ }%
+% \end{macrocode}
+%
+% Define numeric style.
+% \begin{macrocode}
+\DTMnewstyle
+ {slovak-numeric}% label
+ {% date style
+ \renewcommand*\DTMdisplaydate[4]{%
+ \DTMifbool{slovak}{showdayofmonth}%
+ {%
+ \number##3 % space intended
+ \DTMslovakdatesep
+ }%
+ {}%
+ \number##2 % space intended
+ \DTMifbool{slovak}{showyear}%
+ {%
+ \DTMslovakdatesep
+ \number##1 % space intended
+ }%
+ {}%
+ }%
+ \renewcommand*{\DTMDisplaydate}{\DTMdisplaydate}%
+ }%
+ {% time style
+ \renewcommand*\DTMdisplaytime[3]{%
+ \number##1
+ \DTMslovaktimesep\DTMtwodigits{##2}%
+ \ifDTMshowseconds\DTMslovaktimesep\DTMtwodigits{##3}\fi
+ }%
+ }%
+ {% zone style
+ \DTMresetzones
+ \DTMslovakzonemaps
+ \renewcommand*{\DTMdisplayzone}[2]{%
+ \DTMifbool{slovak}{mapzone}%
+ {\DTMusezonemapordefault{##1}{##2}}%
+ {%
+ \ifnum##1<0\else+\fi\DTMtwodigits{##1}%
+ \ifDTMshowzoneminutes\DTMslovaktimesep\DTMtwodigits{##2}\fi
+ }%
+ }%
+ }%
+ {% full style
+ \renewcommand*{\DTMdisplay}[9]{%
+ \ifDTMshowdate
+ \DTMdisplaydate{##1}{##2}{##3}{##4}%
+ \DTMslovakdatetimesep
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \DTMslovaktimezonesep
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+ \renewcommand*{\DTMDisplay}{\DTMdisplay}%
+ }
+% \end{macrocode}
+%
+%\begin{macro}{\DTMslovakzonemaps}
+% The time zone mappings are set through this command, which can be
+% redefined if extra mappings are required or mappings need to be
+% removed.
+% \begin{macrocode}
+\newcommand*{\DTMslovakzonemaps}{%
+ \DTMdefzonemap{01}{00}{CET}%
+ \DTMdefzonemap{02}{00}{CEST}%
+}
+% \end{macrocode}
+%\end{macro}
+
+% Switch style according to the \opt{useregional} setting.
+% \begin{macrocode}
+\DTMifcaseregional
+{}% do nothing
+{\DTMsetstyle{slovak}}
+{\DTMsetstyle{slovak-numeric}}
+% \end{macrocode}
+%
+% Redefine \cs{dateslovak} (or \cs{date}\meta{dialect}) to prevent
+% \sty{babel} from resetting \cs{today}. (For this to work,
+% \sty{babel} must already have been loaded if it's required.)
+% \begin{macrocode}
+\ifcsundef{date\CurrentTrackedDialect}
+{%
+ \ifundef\dateslovak
+ {% do nothing
+ }%
+ {%
+ \def\dateslovak{%
+ \DTMifcaseregional
+ {}% do nothing
+ {\DTMsetstyle{slovak}}%
+ {\DTMsetstyle{slovak-numeric}}%
+ }%
+ }%
+}%
+{%
+ \csdef{date\CurrentTrackedDialect}{%
+ \DTMifcaseregional
+ {}% do nothing
+ {\DTMsetstyle{slovak}}%
+ {\DTMsetstyle{slovak-numeric}}
+ }%
+}%
+% \end{macrocode}
+%\iffalse
+% \begin{macrocode}
+%</datetime2-slovak.ldf>
+% \end{macrocode}
+%\fi
+%\Finale
+\endinput
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-slovak/datetime2-slovak.ins b/macros/latex/contrib/datetime2-contrib/datetime2-slovak/datetime2-slovak.ins
new file mode 100644
index 0000000000..7edaaaf51c
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-slovak/datetime2-slovak.ins
@@ -0,0 +1,61 @@
+\input docstrip
+
+\preamble
+
+ datetime2-slovak.dtx
+ Copyright 2015 Nicola Talbot
+
+ This work may be distributed and/or modified under the
+ conditions of the LaTeX Project Public License, either version 1.3
+ of this license of (at your option) any later version.
+ The latest version of this license is in
+ http://www.latex-project.org/lppl.txt
+ and version 1.3 or later is part of all distributions of LaTeX
+ version 2005/12/01 or later.
+
+ This work has the LPPL maintenance status `inactive'.
+
+ This work consists of the files datetime2-slovak.dtx and
+ datetime2-slovak.ins and the derived files
+ datetime2-slovak-utf8.ldf, datetime2-slovak-ascii.ldf and
+ datetime2-slovak.ldf.
+
+\endpreamble
+
+\askforoverwritefalse
+
+\generate
+{%
+ \file
+ {datetime2-slovak-utf8.ldf}%
+ {%
+ \usepreamble\defaultpreamble
+ \usepostamble\defaultpostamble
+ \from{datetime2-slovak.dtx}{datetime2-slovak-utf8.ldf,package}%
+ }%
+}
+
+\generate
+{%
+ \file
+ {datetime2-slovak-ascii.ldf}%
+ {%
+ \usepreamble\defaultpreamble
+ \usepostamble\defaultpostamble
+ \from{datetime2-slovak.dtx}{datetime2-slovak-ascii.ldf,package}%
+ }%
+}
+
+\generate
+{%
+ \file
+ {datetime2-slovak.ldf}%
+ {%
+ \usepreamble\defaultpreamble
+ \usepostamble\defaultpostamble
+ \from{datetime2-slovak.dtx}{datetime2-slovak.ldf,package}%
+ }%
+}
+
+\endbatchfile
+
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-slovak/datetime2-slovak.pdf b/macros/latex/contrib/datetime2-contrib/datetime2-slovak/datetime2-slovak.pdf
new file mode 100644
index 0000000000..0eea10ca15
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-slovak/datetime2-slovak.pdf
Binary files differ
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-slovene/README b/macros/latex/contrib/datetime2-contrib/datetime2-slovene/README
new file mode 100644
index 0000000000..57c028dc8b
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-slovene/README
@@ -0,0 +1,57 @@
+Slovene Language Module for datetime2 Package
+
+Author: Nicola L. C. Talbot (inactive)
+
+Licence: LPPL
+
+Required Packages: datetime2, tracklang
+
+This module is unmaintained. If you want to volunteer to take over
+the maintenance contact me at www.dickimaw-books.com/contact.html
+
+Example usage:
+
+\documentclass{article}
+\usepackage[slovene]{datetime2}
+\begin{document}
+\today
+\end{document}
+
+\documentclass[slovene]{article}
+\usepackage{babel}
+\usepackage[useregional]{datetime2}
+\begin{document}
+\today
+\end{document}
+
+\documentclass{article}
+\usepackage{polyglossia}
+\setmainlanguage{slovene}
+\usepackage[slovene]{datetime2}
+\begin{document}
+\today
+\end{document}
+
+INSTALLATION
+============
+
+xelatex datetime2-slovene.ins
+
+Move all *.ldf files to
+TEXMF/tex/latex/datetime2-contrib/datetime2-slovene/
+
+Documentation:
+
+xelatex datetime2-slovene.dtx
+makeindex -s gind.ist datetime2-slovene.idx
+makeindex -s gglo.ist -o datetime2-slovene.gls datetime2-slovene.glo
+xelatex datetime2-slovene.dtx
+xelatex datetime2-slovene.dtx
+
+Move datetime2-slovene.pdf and README to
+TEXMF/doc/latex/datetime2-contrib/datetime2-slovene/
+
+This material is subject to the LaTeX Project Public License.
+See http://www.ctan.org/license/lppl1.3 for the details of that
+license.
+
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-slovene/datetime2-slovene.dtx b/macros/latex/contrib/datetime2-contrib/datetime2-slovene/datetime2-slovene.dtx
new file mode 100644
index 0000000000..5729b907b8
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-slovene/datetime2-slovene.dtx
@@ -0,0 +1,639 @@
+%\iffalse
+%<*package>
+%% \CharacterTable
+%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+%% Digits \0\1\2\3\4\5\6\7\8\9
+%% Exclamation \! Double quote \" Hash (number) \#
+%% Dollar \$ Percent \% Ampersand \&
+%% Acute accent \' Left paren \( Right paren \)
+%% Asterisk \* Plus \+ Comma \,
+%% Minus \- Point \. Solidus \/
+%% Colon \: Semicolon \; Less than \<
+%% Equals \= Greater than \> Question mark \?
+%% Commercial at \@ Left bracket \[ Backslash \\
+%% Right bracket \] Circumflex \^ Underscore \_
+%% Grave accent \` Left brace \{ Vertical bar \|
+%% Right brace \} Tilde \~}
+%</package>
+%\fi
+% \iffalse
+% Doc-Source file to use with LaTeX2e
+% Copyright (C) 2015 Nicola Talbot, all rights reserved.
+% (New maintainer add relevant lines here.)
+% \fi
+% \iffalse
+%<*driver>
+\documentclass{ltxdoc}
+
+\usepackage{alltt}
+\usepackage{graphicx}
+\usepackage{fontspec}
+\usepackage[colorlinks,
+ bookmarks,
+ hyperindex=false,
+ pdfauthor={Nicola L.C. Talbot},
+ pdftitle={datetime2.sty Slovene Module}]{hyperref}
+
+\setmainfont{Liberation Serif}
+\setmonofont{Liberation Mono}
+
+\CheckSum{253}
+
+\renewcommand*{\usage}[1]{\hyperpage{#1}}
+\renewcommand*{\main}[1]{\hyperpage{#1}}
+\IndexPrologue{\section*{\indexname}\markboth{\indexname}{\indexname}}
+\setcounter{IndexColumns}{2}
+
+\newcommand*{\sty}[1]{\textsf{#1}}
+\newcommand*{\opt}[1]{\texttt{#1}\index{#1=\texttt{#1}|main}}
+
+\RecordChanges
+\PageIndex
+\CodelineNumbered
+
+\begin{document}
+\DocInput{datetime2-slovene.dtx}
+\end{document}
+%</driver>
+%\fi
+%
+%\MakeShortVerb{"}
+%
+%\title{Slovene Module for datetime2 Package}
+%\author{Nicola L. C. Talbot (inactive)}
+%\date{2015-04-01 (v1.0)}
+%\maketitle
+%
+%This module is currently unmaintained and may be subject to change.
+%If you want to volunteer to take over maintanance, contact me at
+%\url{http://www.dickimaw-books.com/contact.html}
+%
+%\begin{abstract}
+%This is the Slovene language module for the \sty{datetime2}
+%package. If you want to use the settings in this module you must
+%install it in addition to installing \sty{datetime2}. If you use
+%\sty{babel} or \sty{polyglossia}, you will need this module to
+%prevent them from redefining \cs{today}. The \sty{datetime2}
+% \opt{useregional} setting must be set to "text" or "numeric"
+% for the language styles to be set.
+% Alternatively, you can set the style in the document using
+% \cs{DTMsetstyle}, but this may be changed by \cs{date}\meta{language}
+% depending on the value of the \opt{useregional} setting.
+%\end{abstract}
+%
+%I've copied the date style from \texttt{babel-slovene}'s \cs{today}.
+%
+%I don't know if these settings are correct as I can't speak Slovene.
+%In particular, I don't know if the "slovene" time style is
+%correct. Currently this just uses the "default" time style. Please
+%be aware that this may change. Whoever takes over maintanance
+%of this module may can change it as appropriate.
+%
+%The new maintainer should add the line:
+%\begin{verbatim}
+% The Current Maintainer of this work is Name.
+%\end{verbatim}
+%to the preamble part in \texttt{datetime2-slovene.ins} where Name
+%is the name of the maintainer(s) and replace
+%the `inactive' status to `maintained'.
+%
+%Currently there is only a regionless style.
+%
+%\StopEventually{%
+%\clearpage
+%\phantomsection
+%\addcontentsline{toc}{section}{Change History}%
+%\PrintChanges
+%\addcontentsline{toc}{section}{\indexname}%
+%\PrintIndex}
+%\section{The Code}
+%\iffalse
+% \begin{macrocode}
+%<*datetime2-slovene-utf8.ldf>
+% \end{macrocode}
+%\fi
+%\subsection{UTF-8}
+%This file contains the settings that use UTF-8 characters. This
+%file is loaded if XeLaTeX or LuaLaTeX are used. Please make sure
+%your text editor is set to UTF-8 if you want to view this code.
+%
+%(This file doesn't actually contain non-ASCII characters at
+%present, but is provided in case week day names or archaic month
+%names are added, which
+%may contain non-ASCII characters.)
+%\changes{1.0}{2015-04-01}{Initial release}
+% Identify module
+% \begin{macrocode}
+\ProvidesDateTimeModule{slovene-utf8}[2015/04/01 v1.0]
+% \end{macrocode}
+%\begin{macro}{\DTMsloveneordinal}
+% \begin{macrocode}
+\newcommand*{\DTMsloveneordinal}[1]{%
+ \number#1.%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMslovenemonthname}
+% Slovene month names.
+% \begin{macrocode}
+\newcommand*{\DTMslovenemonthname}[1]{%
+ \ifcase#1
+ \or
+ januar%
+ \or
+ februar%
+ \or
+ marec%
+ \or
+ april%
+ \or
+ maj%
+ \or
+ junij%
+ \or
+ julij%
+ \or
+ avgust%
+ \or
+ september%
+ \or
+ oktober%
+ \or
+ november%
+ \or
+ december%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMsloveneMonthname}
+% As above but capitalize.
+% \begin{macrocode}
+\newcommand*{\DTMsloveneMonthname}[1]{%
+ \ifcase#1
+ \or
+ Januar%
+ \or
+ Februar%
+ \or
+ Marec%
+ \or
+ April%
+ \or
+ Maj%
+ \or
+ Junij%
+ \or
+ Julij%
+ \or
+ Avgust%
+ \or
+ September%
+ \or
+ Oktober%
+ \or
+ November%
+ \or
+ December%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%If abbreviated dates are supported, short month names should be
+%likewise provided.
+%
+%\iffalse
+% \begin{macrocode}
+%</datetime2-slovene-utf8.ldf>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*datetime2-slovene-ascii.ldf>
+% \end{macrocode}
+%\fi
+%\subsection{ASCII}
+%This file contains the settings that use \LaTeX\ commands for
+%non-ASCII characters. This should be input if neither XeLaTeX nor
+%LuaLaTeX are used. Even if the user has loaded \sty{inputenc} with
+%"utf8", this file should still be used not the
+%\texttt{datetime2-slovene-utf8.ldf} file as the non-ASCII
+%characters are made active in that situation and would need
+%protecting against expansion.
+%\changes{1.0}{2015-04-01}{Initial release}
+% Identify module
+% \begin{macrocode}
+\ProvidesDateTimeModule{slovene-ascii}[2015/04/01 v1.0]
+% \end{macrocode}
+%
+%If abbreviated dates are supported, short month names should be
+%likewise provided.
+%\begin{macro}{\DTMsloveneordinal}
+% \begin{macrocode}
+\newcommand*{\DTMsloveneordinal}[1]{%
+ \number#1.%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMslovenemonthname}
+% Slovene month names.
+% \begin{macrocode}
+\newcommand*{\DTMslovenemonthname}[1]{%
+ \ifcase#1
+ \or
+ januar%
+ \or
+ februar%
+ \or
+ marec%
+ \or
+ april%
+ \or
+ maj%
+ \or
+ junij%
+ \or
+ julij%
+ \or
+ avgust%
+ \or
+ september%
+ \or
+ oktober%
+ \or
+ november%
+ \or
+ december%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMsloveneMonthname}
+% As above but capitalize.
+% \begin{macrocode}
+\newcommand*{\DTMsloveneMonthname}[1]{%
+ \ifcase#1
+ \or
+ Januar%
+ \or
+ Februar%
+ \or
+ Marec%
+ \or
+ April%
+ \or
+ Maj%
+ \or
+ Junij%
+ \or
+ Julij%
+ \or
+ Avgust%
+ \or
+ September%
+ \or
+ Oktober%
+ \or
+ November%
+ \or
+ December%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%
+%\iffalse
+% \begin{macrocode}
+%</datetime2-slovene-ascii.ldf>
+% \end{macrocode}
+%\fi
+%
+%\subsection{Main Slovene Module (\texttt{datetime2-slovene.ldf})}
+%\changes{1.0}{2015-04-01}{Initial release}
+%
+%\iffalse
+% \begin{macrocode}
+%<*datetime2-slovene.ldf>
+% \end{macrocode}
+%\fi
+%
+% Identify Module
+% \begin{macrocode}
+\ProvidesDateTimeModule{slovene}[2015/04/01 v1.0]
+% \end{macrocode}
+% Need to find out if XeTeX or LuaTeX are being used.
+% \begin{macrocode}
+\RequirePackage{ifxetex,ifluatex}
+% \end{macrocode}
+% XeTeX and LuaTeX natively support UTF-8, so load
+% \texttt{slovene-utf8} if either of those engines are used
+% otherwise load \texttt{slovene-ascii}.
+% \begin{macrocode}
+\ifxetex
+ \RequireDateTimeModule{slovene-utf8}
+\else
+ \ifluatex
+ \RequireDateTimeModule{slovene-utf8}
+ \else
+ \RequireDateTimeModule{slovene-ascii}
+ \fi
+\fi
+% \end{macrocode}
+%
+% Define the \texttt{slovene} style.
+% The time style is the same as the "default" style
+% provided by \sty{datetime2}. This may need correcting. For
+% example, if a 12 hour style similar to the "englishampm" (from the
+% "english-base" module) is required.
+%
+% Allow the user a way of configuring the "slovene" and
+% "slovene-numeric" styles. This doesn't use the package wide
+% separators such as
+% \cs{dtm@datetimesep} in case other date formats are also required.
+%\begin{macro}{\DTMslovenedaymonthsep}
+% The separator between the day and month for the text format.
+% \begin{macrocode}
+\newcommand*{\DTMslovenedaymonthsep}{%
+ \DTMtexorpdfstring{\protect~}{\space}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMslovenemonthyearsep}
+% The separator between the month and year for the text format.
+% \begin{macrocode}
+\newcommand*{\DTMslovenemonthyearsep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMslovenedatetimesep}
+% The separator between the date and time blocks in the full format
+% (either text or numeric).
+% \begin{macrocode}
+\newcommand*{\DTMslovenedatetimesep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMslovenetimezonesep}
+% The separator between the time and zone blocks in the full format
+% (either text or numeric).
+% \begin{macrocode}
+\newcommand*{\DTMslovenetimezonesep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMslovenedatesep}
+% The separator for the numeric date format.
+% \begin{macrocode}
+\newcommand*{\DTMslovenedatesep}{.}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMslovenetimesep}
+% The separator for the numeric time format.
+% \begin{macrocode}
+\newcommand*{\DTMslovenetimesep}{:}
+% \end{macrocode}
+%\end{macro}
+%
+%Provide keys that can be used in \cs{DTMlangsetup} to set these
+%separators.
+% \begin{macrocode}
+\DTMdefkey{slovene}{daymonthsep}{\renewcommand*{\DTMslovenedaymonthsep}{#1}}
+\DTMdefkey{slovene}{monthyearsep}{\renewcommand*{\DTMslovenemonthyearsep}{#1}}
+\DTMdefkey{slovene}{datetimesep}{\renewcommand*{\DTMslovenedatetimesep}{#1}}
+\DTMdefkey{slovene}{timezonesep}{\renewcommand*{\DTMslovenetimezonesep}{#1}}
+\DTMdefkey{slovene}{datesep}{\renewcommand*{\DTMslovenedatesep}{#1}}
+\DTMdefkey{slovene}{timesep}{\renewcommand*{\DTMslovenetimesep}{#1}}
+% \end{macrocode}
+%
+% TODO: provide a boolean key to switch between full and abbreviated
+% formats if appropriate. (I don't know how the date should be
+% abbreviated.)
+%
+% Define a boolean key that determines if the time zone mappings
+% should be used.
+% \begin{macrocode}
+\DTMdefboolkey{slovene}{mapzone}[true]{}
+% \end{macrocode}
+% The default is to use mappings.
+% \begin{macrocode}
+\DTMsetbool{slovene}{mapzone}{true}
+% \end{macrocode}
+%
+% Define a boolean key that determines if the day of month should be
+% displayed.
+% \begin{macrocode}
+\DTMdefboolkey{slovene}{showdayofmonth}[true]{}
+% \end{macrocode}
+% The default is to show the day of month.
+% \begin{macrocode}
+\DTMsetbool{slovene}{showdayofmonth}{true}
+% \end{macrocode}
+%
+% Define a boolean key that determines if the year should be
+% displayed.
+% \begin{macrocode}
+\DTMdefboolkey{slovene}{showyear}[true]{}
+% \end{macrocode}
+% The default is to show the year.
+% \begin{macrocode}
+\DTMsetbool{slovene}{showyear}{true}
+% \end{macrocode}
+%
+% Define the "slovene" style. (TODO: implement day of week?)
+% \begin{macrocode}
+\DTMnewstyle
+ {slovene}% label
+ {% date style
+ \renewcommand*\DTMdisplaydate[4]{%
+ \DTMifbool{slovene}{showdayofmonth}
+ {%
+ \DTMsloveneordinal{##3}%
+ \DTMslovenedaymonthsep
+ }%
+ {}%
+ \DTMslovenemonthname{##2}%
+ \DTMifbool{slovene}{showyear}%
+ {%
+ \DTMslovenemonthyearsep
+ \number##1
+ }%
+ {}%
+ }%
+ \renewcommand*\DTMDisplaydate[4]{%
+ \DTMifbool{slovene}{showdayofmonth}
+ {%
+ \DTMsloveneordinal{##3}%
+ \DTMslovenedaymonthsep
+ \DTMslovenemonthname{##2}%
+ }%
+ {%
+ \DTMsloveneMonthname{##2}%
+ }%
+ \DTMifbool{slovene}{showyear}%
+ {%
+ \DTMslovenemonthyearsep
+ \number##1
+ }%
+ {}%
+ }%
+ }%
+ {% time style (use default)
+ \DTMsettimestyle{default}%
+ }%
+ {% zone style
+ \DTMresetzones
+ \DTMslovenezonemaps
+ \renewcommand*{\DTMdisplayzone}[2]{%
+ \DTMifbool{slovene}{mapzone}%
+ {\DTMusezonemapordefault{##1}{##2}}%
+ {%
+ \ifnum##1<0\else+\fi\DTMtwodigits{##1}%
+ \ifDTMshowzoneminutes\DTMslovenetimesep\DTMtwodigits{##2}\fi
+ }%
+ }%
+ }%
+ {% full style
+ \renewcommand*{\DTMdisplay}[9]{%
+ \ifDTMshowdate
+ \DTMdisplaydate{##1}{##2}{##3}{##4}%
+ \DTMslovenedatetimesep
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \DTMslovenetimezonesep
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+ \renewcommand*{\DTMDisplay}[9]{%
+ \ifDTMshowdate
+ \DTMDisplaydate{##1}{##2}{##3}{##4}%
+ \DTMslovenedatetimesep
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \DTMslovenetimezonesep
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+ }%
+% \end{macrocode}
+%
+% Define numeric style.
+% \begin{macrocode}
+\DTMnewstyle
+ {slovene-numeric}% label
+ {% date style
+ \renewcommand*\DTMdisplaydate[4]{%
+ \DTMifbool{slovene}{showdayofmonth}%
+ {%
+ \number##3 % space intended
+ \DTMslovenedatesep
+ }%
+ {}%
+ \number##2 % space intended
+ \DTMifbool{slovene}{showyear}%
+ {%
+ \DTMslovenedatesep
+ \number##1 % space intended
+ }%
+ {}%
+ }%
+ \renewcommand*{\DTMDisplaydate}{\DTMdisplaydate}%
+ }%
+ {% time style
+ \renewcommand*\DTMdisplaytime[3]{%
+ \number##1
+ \DTMslovenetimesep\DTMtwodigits{##2}%
+ \ifDTMshowseconds\DTMslovenetimesep\DTMtwodigits{##3}\fi
+ }%
+ }%
+ {% zone style
+ \DTMresetzones
+ \DTMslovenezonemaps
+ \renewcommand*{\DTMdisplayzone}[2]{%
+ \DTMifbool{slovene}{mapzone}%
+ {\DTMusezonemapordefault{##1}{##2}}%
+ {%
+ \ifnum##1<0\else+\fi\DTMtwodigits{##1}%
+ \ifDTMshowzoneminutes\DTMslovenetimesep\DTMtwodigits{##2}\fi
+ }%
+ }%
+ }%
+ {% full style
+ \renewcommand*{\DTMdisplay}[9]{%
+ \ifDTMshowdate
+ \DTMdisplaydate{##1}{##2}{##3}{##4}%
+ \DTMslovenedatetimesep
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \DTMslovenetimezonesep
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+ \renewcommand*{\DTMDisplay}{\DTMdisplay}%
+ }
+% \end{macrocode}
+%
+%\begin{macro}{\DTMslovenezonemaps}
+% The time zone mappings are set through this command, which can be
+% redefined if extra mappings are required or mappings need to be
+% removed.
+% \begin{macrocode}
+\newcommand*{\DTMslovenezonemaps}{%
+ \DTMdefzonemap{01}{00}{CET}%
+ \DTMdefzonemap{02}{00}{CEST}%
+}
+% \end{macrocode}
+%\end{macro}
+
+% Switch style according to the \opt{useregional} setting.
+% \begin{macrocode}
+\DTMifcaseregional
+{}% do nothing
+{\DTMsetstyle{slovene}}
+{\DTMsetstyle{slovene-numeric}}
+% \end{macrocode}
+%
+% Redefine \cs{dateslovene} (or \cs{date}\meta{dialect}) to prevent
+% \sty{babel} from resetting \cs{today}. (For this to work,
+% \sty{babel} must already have been loaded if it's required.)
+% \begin{macrocode}
+\ifcsundef{date\CurrentTrackedDialect}
+{%
+ \ifundef\dateslovene
+ {% do nothing
+ }%
+ {%
+ \def\dateslovene{%
+ \DTMifcaseregional
+ {}% do nothing
+ {\DTMsetstyle{slovene}}%
+ {\DTMsetstyle{slovene-numeric}}%
+ }%
+ }%
+}%
+{%
+ \csdef{date\CurrentTrackedDialect}{%
+ \DTMifcaseregional
+ {}% do nothing
+ {\DTMsetstyle{slovene}}%
+ {\DTMsetstyle{slovene-numeric}}
+ }%
+}%
+% \end{macrocode}
+%\iffalse
+% \begin{macrocode}
+%</datetime2-slovene.ldf>
+% \end{macrocode}
+%\fi
+%\Finale
+\endinput
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-slovene/datetime2-slovene.ins b/macros/latex/contrib/datetime2-contrib/datetime2-slovene/datetime2-slovene.ins
new file mode 100644
index 0000000000..464e54e2ed
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-slovene/datetime2-slovene.ins
@@ -0,0 +1,61 @@
+\input docstrip
+
+\preamble
+
+ datetime2-slovene.dtx
+ Copyright 2015 Nicola Talbot
+
+ This work may be distributed and/or modified under the
+ conditions of the LaTeX Project Public License, either version 1.3
+ of this license of (at your option) any later version.
+ The latest version of this license is in
+ http://www.latex-project.org/lppl.txt
+ and version 1.3 or later is part of all distributions of LaTeX
+ version 2005/12/01 or later.
+
+ This work has the LPPL maintenance status `inactive'.
+
+ This work consists of the files datetime2-slovene.dtx and
+ datetime2-slovene.ins and the derived files
+ datetime2-slovene-utf8.ldf, datetime2-slovene-ascii.ldf and
+ datetime2-slovene.ldf.
+
+\endpreamble
+
+\askforoverwritefalse
+
+\generate
+{%
+ \file
+ {datetime2-slovene-utf8.ldf}%
+ {%
+ \usepreamble\defaultpreamble
+ \usepostamble\defaultpostamble
+ \from{datetime2-slovene.dtx}{datetime2-slovene-utf8.ldf,package}%
+ }%
+}
+
+\generate
+{%
+ \file
+ {datetime2-slovene-ascii.ldf}%
+ {%
+ \usepreamble\defaultpreamble
+ \usepostamble\defaultpostamble
+ \from{datetime2-slovene.dtx}{datetime2-slovene-ascii.ldf,package}%
+ }%
+}
+
+\generate
+{%
+ \file
+ {datetime2-slovene.ldf}%
+ {%
+ \usepreamble\defaultpreamble
+ \usepostamble\defaultpostamble
+ \from{datetime2-slovene.dtx}{datetime2-slovene.ldf,package}%
+ }%
+}
+
+\endbatchfile
+
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-slovene/datetime2-slovene.pdf b/macros/latex/contrib/datetime2-contrib/datetime2-slovene/datetime2-slovene.pdf
new file mode 100644
index 0000000000..6766a382ba
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-slovene/datetime2-slovene.pdf
Binary files differ
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-spanish/README b/macros/latex/contrib/datetime2-contrib/datetime2-spanish/README
new file mode 100644
index 0000000000..4ddffb41c2
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-spanish/README
@@ -0,0 +1,57 @@
+Spanish Language Module for datetime2 Package
+
+Author: Nicola L. C. Talbot (inactive)
+
+Licence: LPPL
+
+Required Packages: datetime2, tracklang
+
+This module is unmaintained. If you want to volunteer to take over
+the maintenance contact me at www.dickimaw-books.com/contact.html
+
+Example usage:
+
+\documentclass{article}
+\usepackage[spanish]{datetime2}
+\begin{document}
+\today
+\end{document}
+
+\documentclass[spanish]{article}
+\usepackage{babel}
+\usepackage[useregional]{datetime2}
+\begin{document}
+\today
+\end{document}
+
+\documentclass{article}
+\usepackage{polyglossia}
+\setmainlanguage{spanish}
+\usepackage[spanish]{datetime2}
+\begin{document}
+\today
+\end{document}
+
+INSTALLATION
+============
+
+latex datetime2-spanish.ins
+
+Move all *.ldf files to
+TEXMF/tex/latex/datetime2-contrib/datetime2-spanish/
+
+Documentation:
+
+pdflatex datetime2-spanish.dtx
+makeindex -s gind.ist datetime2-spanish.idx
+makeindex -s gglo.ist -o datetime2-spanish.gls datetime2-spanish.glo
+pdflatex datetime2-spanish.dtx
+pdflatex datetime2-spanish.dtx
+
+Move datetime2-spanish.pdf and README to
+TEXMF/doc/latex/datetime2-contrib/datetime2-spanish/
+
+This material is subject to the LaTeX Project Public License.
+See http://www.ctan.org/license/lppl1.3 for the details of that
+license.
+
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-spanish/datetime2-spanish.dtx b/macros/latex/contrib/datetime2-contrib/datetime2-spanish/datetime2-spanish.dtx
new file mode 100644
index 0000000000..cbd0363834
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-spanish/datetime2-spanish.dtx
@@ -0,0 +1,722 @@
+%\iffalse
+%<*package>
+%% \CharacterTable
+%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+%% Digits \0\1\2\3\4\5\6\7\8\9
+%% Exclamation \! Double quote \" Hash (number) \#
+%% Dollar \$ Percent \% Ampersand \&
+%% Acute accent \' Left paren \( Right paren \)
+%% Asterisk \* Plus \+ Comma \,
+%% Minus \- Point \. Solidus \/
+%% Colon \: Semicolon \; Less than \<
+%% Equals \= Greater than \> Question mark \?
+%% Commercial at \@ Left bracket \[ Backslash \\
+%% Right bracket \] Circumflex \^ Underscore \_
+%% Grave accent \` Left brace \{ Vertical bar \|
+%% Right brace \} Tilde \~}
+%</package>
+%\fi
+% \iffalse
+% Doc-Source file to use with LaTeX2e
+% Copyright (C) 2017 Nicola Talbot, all rights reserved.
+% (New maintainer add relevant lines here.)
+% \fi
+% \iffalse
+%<*driver>
+\documentclass{ltxdoc}
+
+\usepackage{alltt}
+\usepackage{graphicx}
+\usepackage[utf8]{inputenc}
+\usepackage[T1]{fontenc}
+\usepackage[colorlinks,
+ bookmarks,
+ hyperindex=false,
+ pdfauthor={Nicola L.C. Talbot},
+ pdftitle={datetime2.sty Spanish Module}]{hyperref}
+
+
+\CheckSum{305}
+
+\renewcommand*{\usage}[1]{\hyperpage{#1}}
+\renewcommand*{\main}[1]{\hyperpage{#1}}
+\IndexPrologue{\section*{\indexname}\markboth{\indexname}{\indexname}}
+\setcounter{IndexColumns}{2}
+
+\newcommand*{\sty}[1]{\textsf{#1}}
+\newcommand*{\opt}[1]{\texttt{#1}\index{#1=\texttt{#1}|main}}
+
+\RecordChanges
+\PageIndex
+\CodelineNumbered
+
+\begin{document}
+\DocInput{datetime2-spanish.dtx}
+\end{document}
+%</driver>
+%\fi
+%
+%\MakeShortVerb{"}
+%
+%\title{Spanish Module for datetime2 Package}
+%\author{Nicola L. C. Talbot (inactive)}
+%\date{2017-11-13 (v1.1)}
+%\maketitle
+%
+%This module is currently unmaintained and may be subject to change.
+%If you want to volunteer to take over maintanance, contact me at
+%\url{http://www.dickimaw-books.com/contact.html}
+%
+%\begin{abstract}
+%This is the Spanish language module for the \sty{datetime2}
+%package. If you want to use the settings in this module you must
+%install it in addition to installing \sty{datetime2}. If you use
+%\sty{babel} or \sty{polyglossia}, you will need this module to
+%prevent them from redefining \cs{today}. The \sty{datetime2}
+% \opt{useregional} setting must be set to "text" or "numeric"
+% for the language styles to be set.
+% Alternatively, you can set the style in the document using
+% \cs{DTMsetstyle}, but this may be changed by \cs{date}\meta{language}
+% depending on the value of the \opt{useregional} setting.
+%\end{abstract}
+%
+%I've copied the date style from \texttt{babel-spanish}'s \cs{today}.
+%
+%I don't know if these settings are correct.
+%In particular, I don't know if the "spanish" time style is
+%correct. Currently this just uses the "default" time style. Please
+%be aware that this may change. Whoever takes over maintanance
+%of this module may can change it as appropriate.
+%
+%The new maintainer should add the line:
+%\begin{verbatim}
+% The Current Maintainer of this work is Name.
+%\end{verbatim}
+%to the preamble part in \texttt{datetime2-spanish.ins} where Name
+%is the name of the maintainer(s) and replace
+%the `inactive' status to `maintained'.
+%
+%Currently there is only a regionless style. New maintainers may
+%want to add regional variants such as "es-ES"\slash"es-ES-numeric",
+%"es-AR"\slash"es-AR-numeric" etc. This style currently doesn't check the
+%\opt{showdow} setting.
+%
+%\StopEventually{%
+%\clearpage
+%\phantomsection
+%\addcontentsline{toc}{section}{Change History}%
+%\PrintChanges
+%\addcontentsline{toc}{section}{\indexname}%
+%\PrintIndex}
+%\section{The Code}
+%\iffalse
+% \begin{macrocode}
+%<*datetime2-spanish-utf8.ldf>
+% \end{macrocode}
+%\fi
+%\subsection{UTF-8}
+%This file contains the settings that use UTF-8 characters. This
+%file is loaded if XeLaTeX or LuaLaTeX are used. Please make sure
+%your text editor is set to UTF-8 if you want to view this code.
+%\changes{1.0}{2015-03-28}{Initial release}
+% Identify module
+% \begin{macrocode}
+\ProvidesDateTimeModule{spanish-utf8}[2017/11/13 v1.1]
+% \end{macrocode}
+%\begin{macro}{\DTMspanishordinal}
+% \begin{macrocode}
+\newcommand*{\DTMspanishordinal}[1]{%
+ \number#1
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMspanishmonthname}
+% Spanish month names.
+% \begin{macrocode}
+\newcommand*{\DTMspanishmonthname}[1]{%
+ \ifcase#1
+ \or
+ enero%
+ \or
+ febrero%
+ \or
+ marzo%
+ \or
+ abril%
+ \or
+ mayo%
+ \or
+ junio%
+ \or
+ julio%
+ \or
+ agosto%
+ \or
+ septiembre%
+ \or
+ octubre%
+ \or
+ noviembre%
+ \or
+ diciembre%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMspanishMonthname}
+% As above but start with a capital.
+% \begin{macrocode}
+\newcommand*{\DTMspanishMonthname}[1]{%
+ \ifcase#1
+ \or
+ Enero%
+ \or
+ Febrero%
+ \or
+ Marzo%
+ \or
+ Abril%
+ \or
+ Mayo%
+ \or
+ Junio%
+ \or
+ Julio%
+ \or
+ Agosto%
+ \or
+ Septiembre%
+ \or
+ Octubre%
+ \or
+ Noviembre%
+ \or
+ Diciembre%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%If abbreviated dates are supported, short month names should be
+%likewise provided.
+%
+%\begin{macro}{\DTMspanishweekdayname}
+%These are provided here but not currently used in the date format.
+% \begin{macrocode}
+\newcommand*{\DTMspanishweekdayname}[1]{%
+ \ifcase#1
+ domingo%
+ \or
+ lunes%
+ \or
+ martes%
+ \or
+ miƩrcoles%
+ \or
+ jueves%
+ \or
+ viernes%
+ \or
+ sƔbado%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMspanishWeekdayname}
+%As above but start with a capital.
+% \begin{macrocode}
+\newcommand*{\DTMspanishWeekdayname}[1]{%
+ \ifcase#1
+ Domingo%
+ \or
+ Lunes%
+ \or
+ Martes%
+ \or
+ MiƩrcoles%
+ \or
+ Jueves%
+ \or
+ Viernes%
+ \or
+ SƔbado%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\iffalse
+% \begin{macrocode}
+%</datetime2-spanish-utf8.ldf>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*datetime2-spanish-ascii.ldf>
+% \end{macrocode}
+%\fi
+%\subsection{ASCII}
+%This file contains the settings that use \LaTeX\ commands for
+%non-ASCII characters. This should be input if neither XeLaTeX nor
+%LuaLaTeX are used. Even if the user has loaded \sty{inputenc} with
+%"utf8", this file should still be used not the
+%\texttt{datetime2-spanish-utf8.ldf} file as the non-ASCII
+%characters are made active in that situation and would need
+%protecting against expansion.
+%\changes{1.0}{2015-03-28}{Initial release}
+% Identify module
+% \begin{macrocode}
+\ProvidesDateTimeModule{spanish-ascii}[2017/11/13 v1.1]
+% \end{macrocode}
+%
+%If abbreviated dates are supported, short month names should be
+%likewise provided.
+%\begin{macro}{\DTMspanishordinal}
+% \begin{macrocode}
+\newcommand*{\DTMspanishordinal}[1]{%
+ \number#1
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMspanishmonthname}
+% Spanish month names.
+% \begin{macrocode}
+\newcommand*{\DTMspanishmonthname}[1]{%
+ \ifcase#1
+ \or
+ enero%
+ \or
+ febrero%
+ \or
+ marzo%
+ \or
+ abril%
+ \or
+ mayo%
+ \or
+ junio%
+ \or
+ julio%
+ \or
+ agosto%
+ \or
+ septiembre%
+ \or
+ octubre%
+ \or
+ noviembre%
+ \or
+ diciembre%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMspanishMonthname}
+% As above but start with a capital.
+% \begin{macrocode}
+\newcommand*{\DTMspanishMonthname}[1]{%
+ \ifcase#1
+ \or
+ Enero%
+ \or
+ Febrero%
+ \or
+ Marzo%
+ \or
+ Abril%
+ \or
+ Mayo%
+ \or
+ Junio%
+ \or
+ Julio%
+ \or
+ Agosto%
+ \or
+ Septiembre%
+ \or
+ Octubre%
+ \or
+ Noviembre%
+ \or
+ Diciembre%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMspanishweekdayname}
+%These are provided here but not currently used in the date format.
+% \begin{macrocode}
+\newcommand*{\DTMspanishweekdayname}[1]{%
+ \ifcase#1
+ domingo%
+ \or
+ lunes%
+ \or
+ martes%
+ \or
+ mi\protect\'ercoles%
+ \or
+ jueves%
+ \or
+ viernes%
+ \or
+ s\protect\'abado%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMspanishWeekdayname}
+%As above but start with a capital.
+% \begin{macrocode}
+\newcommand*{\DTMspanishWeekdayname}[1]{%
+ \ifcase#1
+ Domingo%
+ \or
+ Lunes%
+ \or
+ Martes%
+ \or
+ Mi\protect\'ercoles%
+ \or
+ Jueves%
+ \or
+ Viernes%
+ \or
+ S\protect\'abado%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%
+%\iffalse
+% \begin{macrocode}
+%</datetime2-spanish-ascii.ldf>
+% \end{macrocode}
+%\fi
+%
+%\subsection{Main Spanish Module (\texttt{datetime2-spanish.ldf})}
+%\changes{1.0}{2015-03-28}{Initial release}
+%
+%\iffalse
+% \begin{macrocode}
+%<*datetime2-spanish.ldf>
+% \end{macrocode}
+%\fi
+%
+% Identify Module
+% \begin{macrocode}
+\ProvidesDateTimeModule{spanish}[2017/11/13 v1.1]
+% \end{macrocode}
+% Need to find out if XeTeX or LuaTeX are being used.
+% \begin{macrocode}
+\RequirePackage{ifxetex,ifluatex}
+% \end{macrocode}
+% XeTeX and LuaTeX natively support UTF-8, so load
+% \texttt{spanish-utf8} if either of those engines are used
+% otherwise load \texttt{spanish-ascii}.
+% \begin{macrocode}
+\ifxetex
+ \RequireDateTimeModule{spanish-utf8}
+\else
+ \ifluatex
+ \RequireDateTimeModule{spanish-utf8}
+ \else
+ \RequireDateTimeModule{spanish-ascii}
+ \fi
+\fi
+% \end{macrocode}
+%
+% Define the \texttt{spanish} style.
+% The time style is the same as the "default" style
+% provided by \sty{datetime2}. This may need correcting.
+%
+% Allow the user a way of configuring the "spanish" and
+% "spanish-numeric" styles. This doesn't use the package wide
+% separators such as
+% \cs{dtm@datetimesep} in case other date formats are also required.
+%\begin{macro}{\DTMspanishdaymonthsep}
+% The separator between the day and month for the text format.
+% \begin{macrocode}
+\newcommand*{\DTMspanishdaymonthsep}{%
+ \DTMtexorpdfstring{\protect~}{\space}de\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMspanishmonthyearsep}
+% The separator between the month and year for the text format.
+% \begin{macrocode}
+\newcommand*{\DTMspanishmonthyearsep}{%
+ \space de\DTMtexorpdfstring{\protect~}{\space}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMspanishdatetimesep}
+% The separator between the date and time blocks in the full format
+% (either text or numeric).
+% \begin{macrocode}
+\newcommand*{\DTMspanishdatetimesep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMspanishtimezonesep}
+% The separator between the time and zone blocks in the full format
+% (either text or numeric).
+% \begin{macrocode}
+\newcommand*{\DTMspanishtimezonesep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMspanishdatesep}
+% The separator for the numeric date format.
+% \begin{macrocode}
+\newcommand*{\DTMspanishdatesep}{/}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMspanishtimesep}
+% The separator for the numeric time format.
+% \begin{macrocode}
+\newcommand*{\DTMspanishtimesep}{:}
+% \end{macrocode}
+%\end{macro}
+%
+%Provide keys that can be used in \cs{DTMlangsetup} to set these
+%separators.
+% \begin{macrocode}
+\DTMdefkey{spanish}{daymonthsep}{\renewcommand*{\DTMspanishdaymonthsep}{#1}}
+\DTMdefkey{spanish}{monthyearsep}{\renewcommand*{\DTMspanishmonthyearsep}{#1}}
+\DTMdefkey{spanish}{datetimesep}{\renewcommand*{\DTMspanishdatetimesep}{#1}}
+\DTMdefkey{spanish}{timezonesep}{\renewcommand*{\DTMspanishtimezonesep}{#1}}
+\DTMdefkey{spanish}{datesep}{\renewcommand*{\DTMspanishdatesep}{#1}}
+\DTMdefkey{spanish}{timesep}{\renewcommand*{\DTMspanishtimesep}{#1}}
+% \end{macrocode}
+%
+% TODO: provide a boolean key to switch between full and abbreviated
+% formats if appropriate. (I don't know how the date should be
+% abbreviated.)
+%
+% Define a boolean key that determines if the time zone mappings
+% should be used.
+% \begin{macrocode}
+\DTMdefboolkey{spanish}{mapzone}[true]{}
+% \end{macrocode}
+% The default is to use mappings.
+% \begin{macrocode}
+\DTMsetbool{spanish}{mapzone}{true}
+% \end{macrocode}
+%
+% Define a boolean key that determines if the day of month should be
+% displayed.
+% \begin{macrocode}
+\DTMdefboolkey{spanish}{showdayofmonth}[true]{}
+% \end{macrocode}
+% The default is to show the day of month.
+% \begin{macrocode}
+\DTMsetbool{spanish}{showdayofmonth}{true}
+% \end{macrocode}
+%
+% Define a boolean key that determines if the year should be
+% displayed.
+% \begin{macrocode}
+\DTMdefboolkey{spanish}{showyear}[true]{}
+% \end{macrocode}
+% The default is to show the year.
+% \begin{macrocode}
+\DTMsetbool{spanish}{showyear}{true}
+% \end{macrocode}
+%
+% Define the "spanish" style. (TODO: implement day of week?)
+% \begin{macrocode}
+\DTMnewstyle
+ {spanish}% label
+ {% date style
+ \renewcommand*\DTMdisplaydate[4]{%
+ \DTMifbool{spanish}{showdayofmonth}
+ {\DTMspanishordinal{##3}\DTMspanishdaymonthsep}%
+ {}%
+ \DTMspanishmonthname{##2}%
+ \DTMifbool{spanish}{showyear}%
+ {%
+ \DTMspanishmonthyearsep
+ \number##1 % space intended
+ }%
+ {}%
+ }%
+ \renewcommand*\DTMDisplaydate[4]{%
+ \DTMifbool{spanish}{showdayofmonth}
+ {%
+ \DTMspanishordinal{##3}\DTMspanishdaymonthsep
+ \DTMspanishmonthname{##2}%
+ }%
+ {\DTMspanishMonthname{##2}}%
+ \DTMifbool{spanish}{showyear}%
+ {%
+ \DTMspanishmonthyearsep
+ \number##1 % space intended
+ }%
+ {}%
+ }%
+ }%
+ {% time style (use default)
+ \DTMsettimestyle{default}%
+ }%
+ {% zone style
+ \DTMresetzones
+ \DTMspanishzonemaps
+ \renewcommand*{\DTMdisplayzone}[2]{%
+ \DTMifbool{spanish}{mapzone}%
+ {\DTMusezonemapordefault{##1}{##2}}%
+ {%
+ \ifnum##1<0\else+\fi\DTMtwodigits{##1}%
+ \ifDTMshowzoneminutes\DTMspanishtimesep\DTMtwodigits{##2}\fi
+ }%
+ }%
+ }%
+ {% full style
+ \renewcommand*{\DTMdisplay}[9]{%
+ \ifDTMshowdate
+ \DTMdisplaydate{##1}{##2}{##3}{##4}%
+ \DTMspanishdatetimesep
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \DTMspanishtimezonesep
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+ \renewcommand*{\DTMDisplay}[9]{%
+ \ifDTMshowdate
+ \DTMDisplaydate{##1}{##2}{##3}{##4}%
+ \DTMspanishdatetimesep
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \DTMspanishtimezonesep
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+ }%
+% \end{macrocode}
+%
+% Define numeric style.
+% \begin{macrocode}
+\DTMnewstyle
+ {spanish-numeric}% label
+ {% date style
+ \renewcommand*\DTMdisplaydate[4]{%
+ \DTMifbool{spanish}{showdayofmonth}%
+ {%
+ \number##3 % space intended
+ \DTMspanishdatesep
+ }%
+ {}%
+ \number##2 % space intended
+ \DTMifbool{spanish}{showyear}%
+ {%
+ \DTMspanishdatesep
+ \number##1 % space intended
+ }%
+ {}%
+ }%
+ \renewcommand*{\DTMDisplaydate}[4]{\DTMdisplaydate{##1}{##2}{##3}{##4}}%
+ }%
+ {% time style
+ \renewcommand*\DTMdisplaytime[3]{%
+ \number##1
+ \DTMspanishtimesep\DTMtwodigits{##2}%
+ \ifDTMshowseconds\DTMspanishtimesep\DTMtwodigits{##3}\fi
+ }%
+ }%
+ {% zone style
+ \DTMresetzones
+ \DTMspanishzonemaps
+ \renewcommand*{\DTMdisplayzone}[2]{%
+ \DTMifbool{spanish}{mapzone}%
+ {\DTMusezonemapordefault{##1}{##2}}%
+ {%
+ \ifnum##1<0\else+\fi\DTMtwodigits{##1}%
+ \ifDTMshowzoneminutes\DTMspanishtimesep\DTMtwodigits{##2}\fi
+ }%
+ }%
+ }%
+ {% full style
+ \renewcommand*{\DTMdisplay}[9]{%
+ \ifDTMshowdate
+ \DTMdisplaydate{##1}{##2}{##3}{##4}%
+ \DTMspanishdatetimesep
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \DTMspanishtimezonesep
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+ \renewcommand*{\DTMDisplay}{\DTMdisplay}%
+ }
+% \end{macrocode}
+%
+%\begin{macro}{\DTMspanishzonemaps}
+% The time zone mappings are set through this command, which can be
+% redefined if extra mappings are required or mappings need to be
+% removed.
+% \begin{macrocode}
+\newcommand*{\DTMspanishzonemaps}{%
+ \DTMdefzonemap{01}{00}{CET}%
+ \DTMdefzonemap{02}{00}{CEST}%
+}
+% \end{macrocode}
+%\end{macro}
+
+% Switch style according to the \opt{useregional} setting.
+% \begin{macrocode}
+\DTMifcaseregional
+{}% do nothing
+{\DTMsetstyle{spanish}}
+{\DTMsetstyle{spanish-numeric}}
+% \end{macrocode}
+%
+% Redefine \cs{datespanish} (or \cs{date}\meta{dialect}) to prevent
+% \sty{babel} from resetting \cs{today}. (For this to work,
+% \sty{babel} must already have been loaded if it's required.)
+%\changes{1.1}{2017-11-13}{removed spurious space caused by eol}
+% \begin{macrocode}
+\ifcsundef{date\CurrentTrackedDialect}
+{%
+ \ifundef\datespanish
+ {% do nothing
+ }%
+ {%
+ \def\datespanish{%
+ \DTMifcaseregional
+ {}% do nothing
+ {\DTMsetstyle{spanish}}%
+ {\DTMsetstyle{spanish-numeric}}%
+ }%
+ }%
+}%
+{%
+ \csdef{date\CurrentTrackedDialect}{%
+ \DTMifcaseregional
+ {}% do nothing
+ {\DTMsetstyle{spanish}}%
+ {\DTMsetstyle{spanish-numeric}}%
+ }%
+}%
+% \end{macrocode}
+%\iffalse
+% \begin{macrocode}
+%</datetime2-spanish.ldf>
+% \end{macrocode}
+%\fi
+%\Finale
+\endinput
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-spanish/datetime2-spanish.ins b/macros/latex/contrib/datetime2-contrib/datetime2-spanish/datetime2-spanish.ins
new file mode 100644
index 0000000000..8e4ade8779
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-spanish/datetime2-spanish.ins
@@ -0,0 +1,61 @@
+\input docstrip
+
+\preamble
+
+ datetime2-spanish.dtx
+ Copyright 2017 Nicola Talbot
+
+ This work may be distributed and/or modified under the
+ conditions of the LaTeX Project Public License, either version 1.3
+ of this license of (at your option) any later version.
+ The latest version of this license is in
+ http://www.latex-project.org/lppl.txt
+ and version 1.3 or later is part of all distributions of LaTeX
+ version 2005/12/01 or later.
+
+ This work has the LPPL maintenance status `inactive'.
+
+ This work consists of the files datetime2-spanish.dtx and
+ datetime2-spanish.ins and the derived files
+ datetime2-spanish-utf8.ldf, datetime2-spanish-ascii.ldf and
+ datetime2-spanish.ldf.
+
+\endpreamble
+
+\askforoverwritefalse
+
+\generate
+{%
+ \file
+ {datetime2-spanish-utf8.ldf}%
+ {%
+ \usepreamble\defaultpreamble
+ \usepostamble\defaultpostamble
+ \from{datetime2-spanish.dtx}{datetime2-spanish-utf8.ldf,package}%
+ }%
+}
+
+\generate
+{%
+ \file
+ {datetime2-spanish-ascii.ldf}%
+ {%
+ \usepreamble\defaultpreamble
+ \usepostamble\defaultpostamble
+ \from{datetime2-spanish.dtx}{datetime2-spanish-ascii.ldf,package}%
+ }%
+}
+
+\generate
+{%
+ \file
+ {datetime2-spanish.ldf}%
+ {%
+ \usepreamble\defaultpreamble
+ \usepostamble\defaultpostamble
+ \from{datetime2-spanish.dtx}{datetime2-spanish.ldf,package}%
+ }%
+}
+
+\endbatchfile
+
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-spanish/datetime2-spanish.pdf b/macros/latex/contrib/datetime2-contrib/datetime2-spanish/datetime2-spanish.pdf
new file mode 100644
index 0000000000..09c10d438d
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-spanish/datetime2-spanish.pdf
Binary files differ
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-swedish/README b/macros/latex/contrib/datetime2-contrib/datetime2-swedish/README
new file mode 100644
index 0000000000..788baab68f
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-swedish/README
@@ -0,0 +1,57 @@
+Swedish Language Module for datetime2 Package
+
+Author: Nicola L. C. Talbot (inactive)
+
+Licence: LPPL
+
+Required Packages: datetime2, tracklang
+
+This module is unmaintained. If you want to volunteer to take over
+the maintenance contact me at www.dickimaw-books.com/contact.html
+
+Example usage:
+
+\documentclass{article}
+\usepackage[swedish]{datetime2}
+\begin{document}
+\today
+\end{document}
+
+\documentclass[swedish]{article}
+\usepackage{babel}
+\usepackage[useregional]{datetime2}
+\begin{document}
+\today
+\end{document}
+
+\documentclass{article}
+\usepackage{polyglossia}
+\setmainlanguage{swedish}
+\usepackage[swedish]{datetime2}
+\begin{document}
+\today
+\end{document}
+
+INSTALLATION
+============
+
+xelatex datetime2-swedish.ins
+
+Move all *.ldf files to
+TEXMF/tex/latex/datetime2-contrib/datetime2-swedish/
+
+Documentation:
+
+xelatex datetime2-swedish.dtx
+makeindex -s gind.ist datetime2-swedish.idx
+makeindex -s gglo.ist -o datetime2-swedish.gls datetime2-swedish.glo
+xelatex datetime2-swedish.dtx
+xelatex datetime2-swedish.dtx
+
+Move datetime2-swedish.pdf and README to
+TEXMF/doc/latex/datetime2-contrib/datetime2-swedish/
+
+This material is subject to the LaTeX Project Public License.
+See http://www.ctan.org/license/lppl1.3 for the details of that
+license.
+
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-swedish/datetime2-swedish.dtx b/macros/latex/contrib/datetime2-contrib/datetime2-swedish/datetime2-swedish.dtx
new file mode 100644
index 0000000000..6113e3715e
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-swedish/datetime2-swedish.dtx
@@ -0,0 +1,730 @@
+%\iffalse
+%<*package>
+%% \CharacterTable
+%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+%% Digits \0\1\2\3\4\5\6\7\8\9
+%% Exclamation \! Double quote \" Hash (number) \#
+%% Dollar \$ Percent \% Ampersand \&
+%% Acute accent \' Left paren \( Right paren \)
+%% Asterisk \* Plus \+ Comma \,
+%% Minus \- Point \. Solidus \/
+%% Colon \: Semicolon \; Less than \<
+%% Equals \= Greater than \> Question mark \?
+%% Commercial at \@ Left bracket \[ Backslash \\
+%% Right bracket \] Circumflex \^ Underscore \_
+%% Grave accent \` Left brace \{ Vertical bar \|
+%% Right brace \} Tilde \~}
+%</package>
+%\fi
+% \iffalse
+% Doc-Source file to use with LaTeX2e
+% Copyright (C) 2015 Nicola Talbot, all rights reserved.
+% (New maintainer add relevant lines here.)
+% \fi
+% \iffalse
+%<*driver>
+\documentclass{ltxdoc}
+
+\usepackage{alltt}
+\usepackage{graphicx}
+\usepackage{fontspec}
+\usepackage[colorlinks,
+ bookmarks,
+ hyperindex=false,
+ pdfauthor={Nicola L.C. Talbot},
+ pdftitle={datetime2.sty Swedish Module}]{hyperref}
+
+\setmainfont{Liberation Serif}
+\setmonofont{Liberation Mono}
+
+\CheckSum{305}
+
+\renewcommand*{\usage}[1]{\hyperpage{#1}}
+\renewcommand*{\main}[1]{\hyperpage{#1}}
+\IndexPrologue{\section*{\indexname}\markboth{\indexname}{\indexname}}
+\setcounter{IndexColumns}{2}
+
+\newcommand*{\sty}[1]{\textsf{#1}}
+\newcommand*{\opt}[1]{\texttt{#1}\index{#1=\texttt{#1}|main}}
+
+\RecordChanges
+\PageIndex
+\CodelineNumbered
+
+\begin{document}
+\DocInput{datetime2-swedish.dtx}
+\end{document}
+%</driver>
+%\fi
+%
+%\MakeShortVerb{"}
+%
+%\title{Swedish Module for datetime2 Package}
+%\author{Nicola L. C. Talbot (inactive)}
+%\date{2015-04-01 (v1.0)}
+%\maketitle
+%
+%This module is currently unmaintained and may be subject to change.
+%If you want to volunteer to take over maintanance, contact me at
+%\url{http://www.dickimaw-books.com/contact.html}
+%
+%\begin{abstract}
+%This is the Swedish language module for the \sty{datetime2}
+%package. If you want to use the settings in this module you must
+%install it in addition to installing \sty{datetime2}. If you use
+%\sty{babel} or \sty{polyglossia}, you will need this module to
+%prevent them from redefining \cs{today}. The \sty{datetime2}
+% \opt{useregional} setting must be set to "text" or "numeric"
+% for the language styles to be set.
+% Alternatively, you can set the style in the document using
+% \cs{DTMsetstyle}, but this may be changed by \cs{date}\meta{language}
+% depending on the value of the \opt{useregional} setting.
+%\end{abstract}
+%
+%I've copied the date style from \texttt{babel-swedish}'s \cs{today}.
+%
+%I don't know if these settings are correct as I can't speak Swedish.
+%In particular, I don't know if the "swedish" time style is
+%correct. Currently this just uses the "default" time style. Please
+%be aware that this may change. Whoever takes over maintanance
+%of this module may can change it as appropriate.
+%
+%The new maintainer should add the line:
+%\begin{verbatim}
+% The Current Maintainer of this work is Name.
+%\end{verbatim}
+%to the preamble part in \texttt{datetime2-swedish.ins} where Name
+%is the name of the maintainer(s) and replace
+%the `inactive' status to `maintained'.
+%
+%Currently there is only a regionless style.
+%
+%\StopEventually{%
+%\clearpage
+%\phantomsection
+%\addcontentsline{toc}{section}{Change History}%
+%\PrintChanges
+%\addcontentsline{toc}{section}{\indexname}%
+%\PrintIndex}
+%\section{The Code}
+%\iffalse
+% \begin{macrocode}
+%<*datetime2-swedish-utf8.ldf>
+% \end{macrocode}
+%\fi
+%\subsection{UTF-8}
+%This file contains the settings that use UTF-8 characters. This
+%file is loaded if XeLaTeX or LuaLaTeX are used. Please make sure
+%your text editor is set to UTF-8 if you want to view this code.
+%\changes{1.0}{2015-04-01}{Initial release}
+% Identify module
+% \begin{macrocode}
+\ProvidesDateTimeModule{swedish-utf8}[2015/04/01 v1.0]
+% \end{macrocode}
+%\begin{macro}{\DTMswedishordinal}
+% \begin{macrocode}
+\newcommand*{\DTMswedishordinal}[1]{%
+ \number#1
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMswedishmonthname}
+% Swedish month names.
+% \begin{macrocode}
+\newcommand*{\DTMswedishmonthname}[1]{%
+ \ifcase#1
+ \or
+ januari%
+ \or
+ februari%
+ \or
+ mars%
+ \or
+ april%
+ \or
+ maj%
+ \or
+ juni%
+ \or
+ juli%
+ \or
+ augusti%
+ \or
+ september%
+ \or
+ oktober%
+ \or
+ november%
+ \or
+ december%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMswedishMonthname}
+% As above but capitalize.
+% \begin{macrocode}
+\newcommand*{\DTMswedishMonthname}[1]{%
+ \ifcase#1
+ \or
+ Januari%
+ \or
+ Februari%
+ \or
+ Mars%
+ \or
+ April%
+ \or
+ Maj%
+ \or
+ Juni%
+ \or
+ Juli%
+ \or
+ Augusti%
+ \or
+ September%
+ \or
+ Oktober%
+ \or
+ November%
+ \or
+ December%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%If abbreviated dates are supported, short month names should be
+%likewise provided.
+%
+% Week day names are provided but currently not used in the date style.
+%
+%\begin{macro}{\DTMswedishweekdayname}
+% Swedish day of week names.
+% \begin{macrocode}
+\newcommand*{\DTMswedishweekdayname}[1]{%
+ \ifcase#1
+ mƄndag%
+ \or
+ tisdag%
+ \or
+ onsdag%
+ \or
+ torsdag%
+ \or
+ fredag%
+ \or
+ lƶrdag%
+ \or
+ sƶndag%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMswedishWeekdayname}
+% As above but start with a capital.
+% \begin{macrocode}
+\newcommand*{\DTMswedishWeekdayname}[1]{%
+ \ifcase#1
+ MĆ„ndag%
+ \or
+ Tisdag%
+ \or
+ Onsdag%
+ \or
+ Torsdag%
+ \or
+ Fredag%
+ \or
+ Lƶrdag%
+ \or
+ Sƶndag%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\iffalse
+% \begin{macrocode}
+%</datetime2-swedish-utf8.ldf>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*datetime2-swedish-ascii.ldf>
+% \end{macrocode}
+%\fi
+%\subsection{ASCII}
+%This file contains the settings that use \LaTeX\ commands for
+%non-ASCII characters. This should be input if neither XeLaTeX nor
+%LuaLaTeX are used. Even if the user has loaded \sty{inputenc} with
+%"utf8", this file should still be used not the
+%\texttt{datetime2-swedish-utf8.ldf} file as the non-ASCII
+%characters are made active in that situation and would need
+%protecting against expansion.
+%\changes{1.0}{2015-04-01}{Initial release}
+% Identify module
+% \begin{macrocode}
+\ProvidesDateTimeModule{swedish-ascii}[2015/04/01 v1.0]
+% \end{macrocode}
+%
+%If abbreviated dates are supported, short month names should be
+%likewise provided.
+%\begin{macro}{\DTMswedishordinal}
+% \begin{macrocode}
+\newcommand*{\DTMswedishordinal}[1]{%
+ \number#1
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMswedishmonthname}
+% Swedish month names.
+% \begin{macrocode}
+\newcommand*{\DTMswedishmonthname}[1]{%
+ \ifcase#1
+ \or
+ januari%
+ \or
+ februari%
+ \or
+ mars%
+ \or
+ april%
+ \or
+ maj%
+ \or
+ juni%
+ \or
+ juli%
+ \or
+ augusti%
+ \or
+ september%
+ \or
+ oktober%
+ \or
+ november%
+ \or
+ december%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMswedishMonthname}
+% As above but capitalize.
+% \begin{macrocode}
+\newcommand*{\DTMswedishMonthname}[1]{%
+ \ifcase#1
+ \or
+ Januari%
+ \or
+ Februari%
+ \or
+ Mars%
+ \or
+ April%
+ \or
+ Maj%
+ \or
+ Juni%
+ \or
+ Juli%
+ \or
+ Augusti%
+ \or
+ September%
+ \or
+ Oktober%
+ \or
+ November%
+ \or
+ December%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+% Week day names are provided but currently not used in the date style.
+%
+%\begin{macro}{\DTMswedishweekdayname}
+% Swedish day of week names.
+% \begin{macrocode}
+\newcommand*{\DTMswedishweekdayname}[1]{%
+ \ifcase#1
+ m\protect\aa ndag%
+ \or
+ tisdag%
+ \or
+ onsdag%
+ \or
+ torsdag%
+ \or
+ fredag%
+ \or
+ l\protect\"ordag%
+ \or
+ s\protect\"ondag%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMswedishWeekdayname}
+% As above but start with a capital.
+% \begin{macrocode}
+\newcommand*{\DTMswedishWeekdayname}[1]{%
+ \ifcase#1
+ M\protect\aa ndag%
+ \or
+ Tisdag%
+ \or
+ Onsdag%
+ \or
+ Torsdag%
+ \or
+ Fredag%
+ \or
+ L\protect\"ordag%
+ \or
+ S\protect\"ondag%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%
+%\iffalse
+% \begin{macrocode}
+%</datetime2-swedish-ascii.ldf>
+% \end{macrocode}
+%\fi
+%
+%\subsection{Main Swedish Module (\texttt{datetime2-swedish.ldf})}
+%\changes{1.0}{2015-04-01}{Initial release}
+%
+%\iffalse
+% \begin{macrocode}
+%<*datetime2-swedish.ldf>
+% \end{macrocode}
+%\fi
+%
+% Identify Module
+% \begin{macrocode}
+\ProvidesDateTimeModule{swedish}[2015/04/01 v1.0]
+% \end{macrocode}
+% Need to find out if XeTeX or LuaTeX are being used.
+% \begin{macrocode}
+\RequirePackage{ifxetex,ifluatex}
+% \end{macrocode}
+% XeTeX and LuaTeX natively support UTF-8, so load
+% \texttt{swedish-utf8} if either of those engines are used
+% otherwise load \texttt{swedish-ascii}.
+% \begin{macrocode}
+\ifxetex
+ \RequireDateTimeModule{swedish-utf8}
+\else
+ \ifluatex
+ \RequireDateTimeModule{swedish-utf8}
+ \else
+ \RequireDateTimeModule{swedish-ascii}
+ \fi
+\fi
+% \end{macrocode}
+%
+% Define the \texttt{swedish} style.
+% The time style is the same as the "default" style
+% provided by \sty{datetime2}. This may need correcting. For
+% example, if a 12 hour style similar to the "englishampm" (from the
+% "english-base" module) is required.
+%
+% Allow the user a way of configuring the "swedish" and
+% "swedish-numeric" styles. This doesn't use the package wide
+% separators such as
+% \cs{dtm@datetimesep} in case other date formats are also required.
+%\begin{macro}{\DTMswedishdaymonthsep}
+% The separator between the day and month for the text format.
+% \begin{macrocode}
+\newcommand*{\DTMswedishdaymonthsep}{%
+ \DTMtexorpdfstring{\protect~}{\space}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMswedishmonthyearsep}
+% The separator between the month and year for the text format.
+% \begin{macrocode}
+\newcommand*{\DTMswedishmonthyearsep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMswedishdatetimesep}
+% The separator between the date and time blocks in the full format
+% (either text or numeric).
+% \begin{macrocode}
+\newcommand*{\DTMswedishdatetimesep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMswedishtimezonesep}
+% The separator between the time and zone blocks in the full format
+% (either text or numeric).
+% \begin{macrocode}
+\newcommand*{\DTMswedishtimezonesep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMswedishdatesep}
+% The separator for the numeric date format.
+% \begin{macrocode}
+\newcommand*{\DTMswedishdatesep}{.}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMswedishtimesep}
+% The separator for the numeric time format.
+% \begin{macrocode}
+\newcommand*{\DTMswedishtimesep}{:}
+% \end{macrocode}
+%\end{macro}
+%
+%Provide keys that can be used in \cs{DTMlangsetup} to set these
+%separators.
+% \begin{macrocode}
+\DTMdefkey{swedish}{daymonthsep}{\renewcommand*{\DTMswedishdaymonthsep}{#1}}
+\DTMdefkey{swedish}{monthyearsep}{\renewcommand*{\DTMswedishmonthyearsep}{#1}}
+\DTMdefkey{swedish}{datetimesep}{\renewcommand*{\DTMswedishdatetimesep}{#1}}
+\DTMdefkey{swedish}{timezonesep}{\renewcommand*{\DTMswedishtimezonesep}{#1}}
+\DTMdefkey{swedish}{datesep}{\renewcommand*{\DTMswedishdatesep}{#1}}
+\DTMdefkey{swedish}{timesep}{\renewcommand*{\DTMswedishtimesep}{#1}}
+% \end{macrocode}
+%
+% TODO: provide a boolean key to switch between full and abbreviated
+% formats if appropriate. (I don't know how the date should be
+% abbreviated.)
+%
+% Define a boolean key that determines if the time zone mappings
+% should be used.
+% \begin{macrocode}
+\DTMdefboolkey{swedish}{mapzone}[true]{}
+% \end{macrocode}
+% The default is to use mappings.
+% \begin{macrocode}
+\DTMsetbool{swedish}{mapzone}{true}
+% \end{macrocode}
+%
+% Define a boolean key that determines if the day of month should be
+% displayed.
+% \begin{macrocode}
+\DTMdefboolkey{swedish}{showdayofmonth}[true]{}
+% \end{macrocode}
+% The default is to show the day of month.
+% \begin{macrocode}
+\DTMsetbool{swedish}{showdayofmonth}{true}
+% \end{macrocode}
+%
+% Define a boolean key that determines if the year should be
+% displayed.
+% \begin{macrocode}
+\DTMdefboolkey{swedish}{showyear}[true]{}
+% \end{macrocode}
+% The default is to show the year.
+% \begin{macrocode}
+\DTMsetbool{swedish}{showyear}{true}
+% \end{macrocode}
+%
+% Define the "swedish" style. (TODO: implement day of week?)
+% \begin{macrocode}
+\DTMnewstyle
+ {swedish}% label
+ {% date style
+ \renewcommand*\DTMdisplaydate[4]{%
+ \DTMifbool{swedish}{showdayofmonth}
+ {%
+ \DTMswedishordinal{##3}%
+ \DTMswedishdaymonthsep
+ }%
+ {}%
+ \DTMswedishmonthname{##2}%
+ \DTMifbool{swedish}{showyear}%
+ {%
+ \DTMswedishmonthyearsep
+ \number##1
+ }%
+ {}%
+ }%
+ \renewcommand*\DTMDisplaydate[4]{%
+ \DTMifbool{swedish}{showdayofmonth}
+ {%
+ \DTMswedishordinal{##3}%
+ \DTMswedishdaymonthsep
+ \DTMswedishmonthname{##2}%
+ }%
+ {%
+ \DTMswedishMonthname{##2}%
+ }%
+ \DTMifbool{swedish}{showyear}%
+ {%
+ \DTMswedishmonthyearsep
+ \number##1
+ }%
+ {}%
+ }%
+ }%
+ {% time style (use default)
+ \DTMsettimestyle{default}%
+ }%
+ {% zone style
+ \DTMresetzones
+ \DTMswedishzonemaps
+ \renewcommand*{\DTMdisplayzone}[2]{%
+ \DTMifbool{swedish}{mapzone}%
+ {\DTMusezonemapordefault{##1}{##2}}%
+ {%
+ \ifnum##1<0\else+\fi\DTMtwodigits{##1}%
+ \ifDTMshowzoneminutes\DTMswedishtimesep\DTMtwodigits{##2}\fi
+ }%
+ }%
+ }%
+ {% full style
+ \renewcommand*{\DTMdisplay}[9]{%
+ \ifDTMshowdate
+ \DTMdisplaydate{##1}{##2}{##3}{##4}%
+ \DTMswedishdatetimesep
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \DTMswedishtimezonesep
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+ \renewcommand*{\DTMDisplay}[9]{%
+ \ifDTMshowdate
+ \DTMDisplaydate{##1}{##2}{##3}{##4}%
+ \DTMswedishdatetimesep
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \DTMswedishtimezonesep
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+ }%
+% \end{macrocode}
+%
+% Define numeric style.
+% \begin{macrocode}
+\DTMnewstyle
+ {swedish-numeric}% label
+ {% date style
+ \renewcommand*\DTMdisplaydate[4]{%
+ \DTMifbool{swedish}{showdayofmonth}%
+ {%
+ \number##3 % space intended
+ \DTMswedishdatesep
+ }%
+ {}%
+ \number##2 % space intended
+ \DTMifbool{swedish}{showyear}%
+ {%
+ \DTMswedishdatesep
+ \number##1 % space intended
+ }%
+ {}%
+ }%
+ \renewcommand*{\DTMDisplaydate}{\DTMdisplaydate}%
+ }%
+ {% time style
+ \renewcommand*\DTMdisplaytime[3]{%
+ \number##1
+ \DTMswedishtimesep\DTMtwodigits{##2}%
+ \ifDTMshowseconds\DTMswedishtimesep\DTMtwodigits{##3}\fi
+ }%
+ }%
+ {% zone style
+ \DTMresetzones
+ \DTMswedishzonemaps
+ \renewcommand*{\DTMdisplayzone}[2]{%
+ \DTMifbool{swedish}{mapzone}%
+ {\DTMusezonemapordefault{##1}{##2}}%
+ {%
+ \ifnum##1<0\else+\fi\DTMtwodigits{##1}%
+ \ifDTMshowzoneminutes\DTMswedishtimesep\DTMtwodigits{##2}\fi
+ }%
+ }%
+ }%
+ {% full style
+ \renewcommand*{\DTMdisplay}[9]{%
+ \ifDTMshowdate
+ \DTMdisplaydate{##1}{##2}{##3}{##4}%
+ \DTMswedishdatetimesep
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \DTMswedishtimezonesep
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+ \renewcommand*{\DTMDisplay}{\DTMdisplay}%
+ }
+% \end{macrocode}
+%
+%\begin{macro}{\DTMswedishzonemaps}
+% The time zone mappings are set through this command, which can be
+% redefined if extra mappings are required or mappings need to be
+% removed.
+% \begin{macrocode}
+\newcommand*{\DTMswedishzonemaps}{%
+ \DTMdefzonemap{01}{00}{CET}%
+ \DTMdefzonemap{02}{00}{CEST}%
+}
+% \end{macrocode}
+%\end{macro}
+
+% Switch style according to the \opt{useregional} setting.
+% \begin{macrocode}
+\DTMifcaseregional
+{}% do nothing
+{\DTMsetstyle{swedish}}
+{\DTMsetstyle{swedish-numeric}}
+% \end{macrocode}
+%
+% Redefine \cs{dateswedish} (or \cs{date}\meta{dialect}) to prevent
+% \sty{babel} from resetting \cs{today}. (For this to work,
+% \sty{babel} must already have been loaded if it's required.)
+% \begin{macrocode}
+\ifcsundef{date\CurrentTrackedDialect}
+{%
+ \ifundef\dateswedish
+ {% do nothing
+ }%
+ {%
+ \def\dateswedish{%
+ \DTMifcaseregional
+ {}% do nothing
+ {\DTMsetstyle{swedish}}%
+ {\DTMsetstyle{swedish-numeric}}%
+ }%
+ }%
+}%
+{%
+ \csdef{date\CurrentTrackedDialect}{%
+ \DTMifcaseregional
+ {}% do nothing
+ {\DTMsetstyle{swedish}}%
+ {\DTMsetstyle{swedish-numeric}}
+ }%
+}%
+% \end{macrocode}
+%\iffalse
+% \begin{macrocode}
+%</datetime2-swedish.ldf>
+% \end{macrocode}
+%\fi
+%\Finale
+\endinput
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-swedish/datetime2-swedish.ins b/macros/latex/contrib/datetime2-contrib/datetime2-swedish/datetime2-swedish.ins
new file mode 100644
index 0000000000..a2efb9c4aa
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-swedish/datetime2-swedish.ins
@@ -0,0 +1,61 @@
+\input docstrip
+
+\preamble
+
+ datetime2-swedish.dtx
+ Copyright 2015 Nicola Talbot
+
+ This work may be distributed and/or modified under the
+ conditions of the LaTeX Project Public License, either version 1.3
+ of this license of (at your option) any later version.
+ The latest version of this license is in
+ http://www.latex-project.org/lppl.txt
+ and version 1.3 or later is part of all distributions of LaTeX
+ version 2005/12/01 or later.
+
+ This work has the LPPL maintenance status `inactive'.
+
+ This work consists of the files datetime2-swedish.dtx and
+ datetime2-swedish.ins and the derived files
+ datetime2-swedish-utf8.ldf, datetime2-swedish-ascii.ldf and
+ datetime2-swedish.ldf.
+
+\endpreamble
+
+\askforoverwritefalse
+
+\generate
+{%
+ \file
+ {datetime2-swedish-utf8.ldf}%
+ {%
+ \usepreamble\defaultpreamble
+ \usepostamble\defaultpostamble
+ \from{datetime2-swedish.dtx}{datetime2-swedish-utf8.ldf,package}%
+ }%
+}
+
+\generate
+{%
+ \file
+ {datetime2-swedish-ascii.ldf}%
+ {%
+ \usepreamble\defaultpreamble
+ \usepostamble\defaultpostamble
+ \from{datetime2-swedish.dtx}{datetime2-swedish-ascii.ldf,package}%
+ }%
+}
+
+\generate
+{%
+ \file
+ {datetime2-swedish.ldf}%
+ {%
+ \usepreamble\defaultpreamble
+ \usepostamble\defaultpostamble
+ \from{datetime2-swedish.dtx}{datetime2-swedish.ldf,package}%
+ }%
+}
+
+\endbatchfile
+
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-swedish/datetime2-swedish.pdf b/macros/latex/contrib/datetime2-contrib/datetime2-swedish/datetime2-swedish.pdf
new file mode 100644
index 0000000000..b801ea7906
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-swedish/datetime2-swedish.pdf
Binary files differ
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-turkish/README b/macros/latex/contrib/datetime2-contrib/datetime2-turkish/README
new file mode 100644
index 0000000000..96ce71122e
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-turkish/README
@@ -0,0 +1,57 @@
+Turkish Language Module for datetime2 Package
+
+Author: Nicola L. C. Talbot (inactive)
+
+Licence: LPPL
+
+Required Packages: datetime2, tracklang
+
+This module is unmaintained. If you want to volunteer to take over
+the maintenance contact me at www.dickimaw-books.com/contact.html
+
+Example usage:
+
+\documentclass{article}
+\usepackage[turkish]{datetime2}
+\begin{document}
+\today
+\end{document}
+
+\documentclass[turkish]{article}
+\usepackage{babel}
+\usepackage[useregional]{datetime2}
+\begin{document}
+\today
+\end{document}
+
+\documentclass{article}
+\usepackage{polyglossia}
+\setmainlanguage{turkish}
+\usepackage[turkish]{datetime2}
+\begin{document}
+\today
+\end{document}
+
+INSTALLATION
+============
+
+xelatex datetime2-turkish.ins
+
+Move all *.ldf files to
+TEXMF/tex/latex/datetime2-contrib/datetime2-turkish/
+
+Documentation:
+
+xelatex datetime2-turkish.dtx
+makeindex -s gind.ist datetime2-turkish.idx
+makeindex -s gglo.ist -o datetime2-turkish.gls datetime2-turkish.glo
+xelatex datetime2-turkish.dtx
+xelatex datetime2-turkish.dtx
+
+Move datetime2-turkish.pdf and README to
+TEXMF/doc/latex/datetime2-contrib/datetime2-turkish/
+
+This material is subject to the LaTeX Project Public License.
+See http://www.ctan.org/license/lppl1.3 for the details of that
+license.
+
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-turkish/datetime2-turkish.dtx b/macros/latex/contrib/datetime2-contrib/datetime2-turkish/datetime2-turkish.dtx
new file mode 100644
index 0000000000..07c9746078
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-turkish/datetime2-turkish.dtx
@@ -0,0 +1,540 @@
+%\iffalse
+%<*package>
+%% \CharacterTable
+%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+%% Digits \0\1\2\3\4\5\6\7\8\9
+%% Exclamation \! Double quote \" Hash (number) \#
+%% Dollar \$ Percent \% Ampersand \&
+%% Acute accent \' Left paren \( Right paren \)
+%% Asterisk \* Plus \+ Comma \,
+%% Minus \- Point \. Solidus \/
+%% Colon \: Semicolon \; Less than \<
+%% Equals \= Greater than \> Question mark \?
+%% Commercial at \@ Left bracket \[ Backslash \\
+%% Right bracket \] Circumflex \^ Underscore \_
+%% Grave accent \` Left brace \{ Vertical bar \|
+%% Right brace \} Tilde \~}
+%</package>
+%\fi
+% \iffalse
+% Doc-Source file to use with LaTeX2e
+% Copyright (C) 2015 Nicola Talbot, all rights reserved.
+% (New maintainer add relevant lines here.)
+% \fi
+% \iffalse
+%<*driver>
+\documentclass{ltxdoc}
+
+\usepackage{alltt}
+\usepackage{graphicx}
+\usepackage{fontspec}
+\usepackage[colorlinks,
+ bookmarks,
+ hyperindex=false,
+ pdfauthor={Nicola L.C. Talbot},
+ pdftitle={datetime2.sty Turkish Module}]{hyperref}
+
+\setmainfont{Liberation Serif}
+\setmonofont{Liberation Mono}
+
+\CheckSum{218}
+
+\renewcommand*{\usage}[1]{\hyperpage{#1}}
+\renewcommand*{\main}[1]{\hyperpage{#1}}
+\IndexPrologue{\section*{\indexname}\markboth{\indexname}{\indexname}}
+\setcounter{IndexColumns}{2}
+
+\newcommand*{\sty}[1]{\textsf{#1}}
+\newcommand*{\opt}[1]{\texttt{#1}\index{#1=\texttt{#1}|main}}
+
+\RecordChanges
+\PageIndex
+\CodelineNumbered
+
+\begin{document}
+\DocInput{datetime2-turkish.dtx}
+\end{document}
+%</driver>
+%\fi
+%
+%\MakeShortVerb{"}
+%
+%\title{Turkish Module for datetime2 Package}
+%\author{Nicola L. C. Talbot (inactive)}
+%\date{2015-04-01 (v1.0)}
+%\maketitle
+%
+%This module is currently unmaintained and may be subject to change.
+%If you want to volunteer to take over maintanance, contact me at
+%\url{http://www.dickimaw-books.com/contact.html}
+%
+%\begin{abstract}
+%This is the Turkish language module for the \sty{datetime2}
+%package. If you want to use the settings in this module you must
+%install it in addition to installing \sty{datetime2}. If you use
+%\sty{babel} or \sty{polyglossia}, you will need this module to
+%prevent them from redefining \cs{today}. The \sty{datetime2}
+% \opt{useregional} setting must be set to "text" or "numeric"
+% for the language styles to be set.
+% Alternatively, you can set the style in the document using
+% \cs{DTMsetstyle}, but this may be changed by \cs{date}\meta{language}
+% depending on the value of the \opt{useregional} setting.
+%\end{abstract}
+%
+%I've copied the date style from \texttt{babel-turkish}'s \cs{today}.
+%
+%I don't know if these settings are correct as I can't speak Turkish.
+%In particular, I don't know if the "turkish" time style is
+%correct. Currently this just uses the "default" time style. Please
+%be aware that this may change. Whoever takes over maintanance
+%of this module may can change it as appropriate.
+%
+%The new maintainer should add the line:
+%\begin{verbatim}
+% The Current Maintainer of this work is Name.
+%\end{verbatim}
+%to the preamble part in \texttt{datetime2-turkish.ins} where Name
+%is the name of the maintainer(s) and replace
+%the `inactive' status to `maintained'.
+%
+%Currently there is only a regionless style.
+%
+%\StopEventually{%
+%\clearpage
+%\phantomsection
+%\addcontentsline{toc}{section}{Change History}%
+%\PrintChanges
+%\addcontentsline{toc}{section}{\indexname}%
+%\PrintIndex}
+%\section{The Code}
+%\iffalse
+% \begin{macrocode}
+%<*datetime2-turkish-utf8.ldf>
+% \end{macrocode}
+%\fi
+%\subsection{UTF-8}
+%This file contains the settings that use UTF-8 characters. This
+%file is loaded if XeLaTeX or LuaLaTeX are used. Please make sure
+%your text editor is set to UTF-8 if you want to view this code.
+%\changes{1.0}{2015-04-01}{Initial release}
+% Identify module
+% \begin{macrocode}
+\ProvidesDateTimeModule{turkish-utf8}[2015/04/01 v1.0]
+% \end{macrocode}
+%\begin{macro}{\DTMturkishordinal}
+% \begin{macrocode}
+\newcommand*{\DTMturkishordinal}[1]{%
+ \number#1
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMturkishmonthname}
+% Turkish month names.
+% \begin{macrocode}
+\newcommand*{\DTMturkishmonthname}[1]{%
+ \ifcase#1
+ \or
+ Ocak%
+ \or
+ Şubat%
+ \or
+ Mart%
+ \or
+ Nisan%
+ \or
+ Mayıs%
+ \or
+ Haziran%
+ \or
+ Temmuz%
+ \or
+ Ağustos%
+ \or
+ EylĆ¼l%
+ \or
+ Ekim%
+ \or
+ Kasım%
+ \or
+ Aralık%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%If abbreviated dates are supported, short month names should be
+%likewise provided.
+%
+%\iffalse
+% \begin{macrocode}
+%</datetime2-turkish-utf8.ldf>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*datetime2-turkish-ascii.ldf>
+% \end{macrocode}
+%\fi
+%\subsection{ASCII}
+%This file contains the settings that use \LaTeX\ commands for
+%non-ASCII characters. This should be input if neither XeLaTeX nor
+%LuaLaTeX are used. Even if the user has loaded \sty{inputenc} with
+%"utf8", this file should still be used not the
+%\texttt{datetime2-turkish-utf8.ldf} file as the non-ASCII
+%characters are made active in that situation and would need
+%protecting against expansion.
+%\changes{1.0}{2015-04-01}{Initial release}
+% Identify module
+% \begin{macrocode}
+\ProvidesDateTimeModule{turkish-ascii}[2015/04/01 v1.0]
+% \end{macrocode}
+%
+%If abbreviated dates are supported, short month names should be
+%likewise provided.
+%\begin{macro}{\DTMturkishordinal}
+% \begin{macrocode}
+\newcommand*{\DTMturkishordinal}[1]{%
+ \number#1
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMturkishmonthname}
+% Turkish month names.
+% \begin{macrocode}
+\newcommand*{\DTMturkishmonthname}[1]{%
+ \ifcase#1
+ \or
+ Ocak%
+ \or
+ \protect\c Subat%
+ \or
+ Mart%
+ \or
+ Nisan%
+ \or
+ May\protect\i s%
+ \or
+ Haziran%
+ \or
+ Temmuz%
+ \or
+ A\protect\u gustos%
+ \or
+ Eyl\protect\"ul%
+ \or
+ Ekim%
+ \or
+ Kas\protect\i m%
+ \or
+ Aral\protect\i k%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%
+%\iffalse
+% \begin{macrocode}
+%</datetime2-turkish-ascii.ldf>
+% \end{macrocode}
+%\fi
+%
+%\subsection{Main Turkish Module (\texttt{datetime2-turkish.ldf})}
+%\changes{1.0}{2015-04-01}{Initial release}
+%
+%\iffalse
+% \begin{macrocode}
+%<*datetime2-turkish.ldf>
+% \end{macrocode}
+%\fi
+%
+% Identify Module
+% \begin{macrocode}
+\ProvidesDateTimeModule{turkish}[2015/04/01 v1.0]
+% \end{macrocode}
+% Need to find out if XeTeX or LuaTeX are being used.
+% \begin{macrocode}
+\RequirePackage{ifxetex,ifluatex}
+% \end{macrocode}
+% XeTeX and LuaTeX natively support UTF-8, so load
+% \texttt{turkish-utf8} if either of those engines are used
+% otherwise load \texttt{turkish-ascii}.
+% \begin{macrocode}
+\ifxetex
+ \RequireDateTimeModule{turkish-utf8}
+\else
+ \ifluatex
+ \RequireDateTimeModule{turkish-utf8}
+ \else
+ \RequireDateTimeModule{turkish-ascii}
+ \fi
+\fi
+% \end{macrocode}
+%
+% Define the \texttt{turkish} style.
+% The time style is the same as the "default" style
+% provided by \sty{datetime2}. This may need correcting. For
+% example, if a 12 hour style similar to the "englishampm" (from the
+% "english-base" module) is required.
+%
+% Allow the user a way of configuring the "turkish" and
+% "turkish-numeric" styles. This doesn't use the package wide
+% separators such as
+% \cs{dtm@datetimesep} in case other date formats are also required.
+%\begin{macro}{\DTMturkishdaymonthsep}
+% The separator between the day and month for the text format.
+% \begin{macrocode}
+\newcommand*{\DTMturkishdaymonthsep}{%
+ \DTMtexorpdfstring{\protect~}{\space}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMturkishmonthyearsep}
+% The separator between the month and year for the text format.
+% \begin{macrocode}
+\newcommand*{\DTMturkishmonthyearsep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMturkishdatetimesep}
+% The separator between the date and time blocks in the full format
+% (either text or numeric).
+% \begin{macrocode}
+\newcommand*{\DTMturkishdatetimesep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMturkishtimezonesep}
+% The separator between the time and zone blocks in the full format
+% (either text or numeric).
+% \begin{macrocode}
+\newcommand*{\DTMturkishtimezonesep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMturkishdatesep}
+% The separator for the numeric date format.
+% \begin{macrocode}
+\newcommand*{\DTMturkishdatesep}{.}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMturkishtimesep}
+% The separator for the numeric time format.
+% \begin{macrocode}
+\newcommand*{\DTMturkishtimesep}{:}
+% \end{macrocode}
+%\end{macro}
+%
+%Provide keys that can be used in \cs{DTMlangsetup} to set these
+%separators.
+% \begin{macrocode}
+\DTMdefkey{turkish}{daymonthsep}{\renewcommand*{\DTMturkishdaymonthsep}{#1}}
+\DTMdefkey{turkish}{monthyearsep}{\renewcommand*{\DTMturkishmonthyearsep}{#1}}
+\DTMdefkey{turkish}{datetimesep}{\renewcommand*{\DTMturkishdatetimesep}{#1}}
+\DTMdefkey{turkish}{timezonesep}{\renewcommand*{\DTMturkishtimezonesep}{#1}}
+\DTMdefkey{turkish}{datesep}{\renewcommand*{\DTMturkishdatesep}{#1}}
+\DTMdefkey{turkish}{timesep}{\renewcommand*{\DTMturkishtimesep}{#1}}
+% \end{macrocode}
+%
+% TODO: provide a boolean key to switch between full and abbreviated
+% formats if appropriate. (I don't know how the date should be
+% abbreviated.)
+%
+% Define a boolean key that determines if the time zone mappings
+% should be used.
+% \begin{macrocode}
+\DTMdefboolkey{turkish}{mapzone}[true]{}
+% \end{macrocode}
+% The default is to use mappings.
+% \begin{macrocode}
+\DTMsetbool{turkish}{mapzone}{true}
+% \end{macrocode}
+%
+% Define a boolean key that determines if the day of month should be
+% displayed.
+% \begin{macrocode}
+\DTMdefboolkey{turkish}{showdayofmonth}[true]{}
+% \end{macrocode}
+% The default is to show the day of month.
+% \begin{macrocode}
+\DTMsetbool{turkish}{showdayofmonth}{true}
+% \end{macrocode}
+%
+% Define a boolean key that determines if the year should be
+% displayed.
+% \begin{macrocode}
+\DTMdefboolkey{turkish}{showyear}[true]{}
+% \end{macrocode}
+% The default is to show the year.
+% \begin{macrocode}
+\DTMsetbool{turkish}{showyear}{true}
+% \end{macrocode}
+%
+% Define the "turkish" style. (TODO: implement day of week?)
+% \begin{macrocode}
+\DTMnewstyle
+ {turkish}% label
+ {% date style
+ \renewcommand*\DTMdisplaydate[4]{%
+ \DTMifbool{turkish}{showdayofmonth}
+ {%
+ \DTMturkishordinal{##3}%
+ \DTMturkishdaymonthsep
+ }%
+ {}%
+ \DTMturkishmonthname{##2}%
+ \DTMifbool{turkish}{showyear}%
+ {%
+ \DTMturkishmonthyearsep
+ \number##1
+ }%
+ {}%
+ }%
+ \renewcommand*\DTMDisplaydate{\DTMdisplaydate}%
+ }%
+ {% time style (use default)
+ \DTMsettimestyle{default}%
+ }%
+ {% zone style
+ \DTMresetzones
+ \DTMturkishzonemaps
+ \renewcommand*{\DTMdisplayzone}[2]{%
+ \DTMifbool{turkish}{mapzone}%
+ {\DTMusezonemapordefault{##1}{##2}}%
+ {%
+ \ifnum##1<0\else+\fi\DTMtwodigits{##1}%
+ \ifDTMshowzoneminutes\DTMturkishtimesep\DTMtwodigits{##2}\fi
+ }%
+ }%
+ }%
+ {% full style
+ \renewcommand*{\DTMdisplay}[9]{%
+ \ifDTMshowdate
+ \DTMdisplaydate{##1}{##2}{##3}{##4}%
+ \DTMturkishdatetimesep
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \DTMturkishtimezonesep
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+ \renewcommand*{\DTMDisplay}{\DTMdisplay}%
+ }%
+% \end{macrocode}
+%
+% Define numeric style.
+% \begin{macrocode}
+\DTMnewstyle
+ {turkish-numeric}% label
+ {% date style
+ \renewcommand*\DTMdisplaydate[4]{%
+ \DTMifbool{turkish}{showdayofmonth}%
+ {%
+ \number##3 % space intended
+ \DTMturkishdatesep
+ }%
+ {}%
+ \number##2 % space intended
+ \DTMifbool{turkish}{showyear}%
+ {%
+ \DTMturkishdatesep
+ \number##1 % space intended
+ }%
+ {}%
+ }%
+ \renewcommand*{\DTMDisplaydate}{\DTMdisplaydate}%
+ }%
+ {% time style
+ \renewcommand*\DTMdisplaytime[3]{%
+ \number##1
+ \DTMturkishtimesep\DTMtwodigits{##2}%
+ \ifDTMshowseconds\DTMturkishtimesep\DTMtwodigits{##3}\fi
+ }%
+ }%
+ {% zone style
+ \DTMresetzones
+ \DTMturkishzonemaps
+ \renewcommand*{\DTMdisplayzone}[2]{%
+ \DTMifbool{turkish}{mapzone}%
+ {\DTMusezonemapordefault{##1}{##2}}%
+ {%
+ \ifnum##1<0\else+\fi\DTMtwodigits{##1}%
+ \ifDTMshowzoneminutes\DTMturkishtimesep\DTMtwodigits{##2}\fi
+ }%
+ }%
+ }%
+ {% full style
+ \renewcommand*{\DTMdisplay}[9]{%
+ \ifDTMshowdate
+ \DTMdisplaydate{##1}{##2}{##3}{##4}%
+ \DTMturkishdatetimesep
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \DTMturkishtimezonesep
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+ \renewcommand*{\DTMDisplay}{\DTMdisplay}%
+ }
+% \end{macrocode}
+%
+%\begin{macro}{\DTMturkishzonemaps}
+% The time zone mappings are set through this command, which can be
+% redefined if extra mappings are required or mappings need to be
+% removed.
+% \begin{macrocode}
+\newcommand*{\DTMturkishzonemaps}{%
+ \DTMdefzonemap{02}{00}{EET}%
+ \DTMdefzonemap{03}{00}{EEST}%
+}
+% \end{macrocode}
+%\end{macro}
+
+% Switch style according to the \opt{useregional} setting.
+% \begin{macrocode}
+\DTMifcaseregional
+{}% do nothing
+{\DTMsetstyle{turkish}}
+{\DTMsetstyle{turkish-numeric}}
+% \end{macrocode}
+%
+% Redefine \cs{dateturkish} (or \cs{date}\meta{dialect}) to prevent
+% \sty{babel} from resetting \cs{today}. (For this to work,
+% \sty{babel} must already have been loaded if it's required.)
+% \begin{macrocode}
+\ifcsundef{date\CurrentTrackedDialect}
+{%
+ \ifundef\dateturkish
+ {% do nothing
+ }%
+ {%
+ \def\dateturkish{%
+ \DTMifcaseregional
+ {}% do nothing
+ {\DTMsetstyle{turkish}}%
+ {\DTMsetstyle{turkish-numeric}}%
+ }%
+ }%
+}%
+{%
+ \csdef{date\CurrentTrackedDialect}{%
+ \DTMifcaseregional
+ {}% do nothing
+ {\DTMsetstyle{turkish}}%
+ {\DTMsetstyle{turkish-numeric}}
+ }%
+}%
+% \end{macrocode}
+%\iffalse
+% \begin{macrocode}
+%</datetime2-turkish.ldf>
+% \end{macrocode}
+%\fi
+%\Finale
+\endinput
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-turkish/datetime2-turkish.ins b/macros/latex/contrib/datetime2-contrib/datetime2-turkish/datetime2-turkish.ins
new file mode 100644
index 0000000000..1d20960c0c
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-turkish/datetime2-turkish.ins
@@ -0,0 +1,61 @@
+\input docstrip
+
+\preamble
+
+ datetime2-turkish.dtx
+ Copyright 2015 Nicola Talbot
+
+ This work may be distributed and/or modified under the
+ conditions of the LaTeX Project Public License, either version 1.3
+ of this license of (at your option) any later version.
+ The latest version of this license is in
+ http://www.latex-project.org/lppl.txt
+ and version 1.3 or later is part of all distributions of LaTeX
+ version 2005/12/01 or later.
+
+ This work has the LPPL maintenance status `inactive'.
+
+ This work consists of the files datetime2-turkish.dtx and
+ datetime2-turkish.ins and the derived files
+ datetime2-turkish-utf8.ldf, datetime2-turkish-ascii.ldf and
+ datetime2-turkish.ldf.
+
+\endpreamble
+
+\askforoverwritefalse
+
+\generate
+{%
+ \file
+ {datetime2-turkish-utf8.ldf}%
+ {%
+ \usepreamble\defaultpreamble
+ \usepostamble\defaultpostamble
+ \from{datetime2-turkish.dtx}{datetime2-turkish-utf8.ldf,package}%
+ }%
+}
+
+\generate
+{%
+ \file
+ {datetime2-turkish-ascii.ldf}%
+ {%
+ \usepreamble\defaultpreamble
+ \usepostamble\defaultpostamble
+ \from{datetime2-turkish.dtx}{datetime2-turkish-ascii.ldf,package}%
+ }%
+}
+
+\generate
+{%
+ \file
+ {datetime2-turkish.ldf}%
+ {%
+ \usepreamble\defaultpreamble
+ \usepostamble\defaultpostamble
+ \from{datetime2-turkish.dtx}{datetime2-turkish.ldf,package}%
+ }%
+}
+
+\endbatchfile
+
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-turkish/datetime2-turkish.pdf b/macros/latex/contrib/datetime2-contrib/datetime2-turkish/datetime2-turkish.pdf
new file mode 100644
index 0000000000..e3a72ece4f
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-turkish/datetime2-turkish.pdf
Binary files differ
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-ukrainian/README.md b/macros/latex/contrib/datetime2-contrib/datetime2-ukrainian/README.md
new file mode 100644
index 0000000000..d7db1ffbc4
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-ukrainian/README.md
@@ -0,0 +1,54 @@
+----------------------------------------------------------------
+
+Ukrainian Language Module for datetime2 Package
+
+Author: Nicola L. C. Talbot (inactive)
+Current maintainer: Sergiy M. Ponomarenko <sergiy.ponomarenko@gmail.com>.
+
+Licence: LPPL
+
+Required Packages: tracklang
+
+1. INSTALLATION
+
+xelatex datetime2-ukrainian.ins
+
+Move all *.ldf files to
+TEXMF/tex/latex/datetime2-ukrainian/
+
+2. USAGE
+
+2.1.1 PDFLATeX, LaTeX
+
+ \documentclass{article}
+ \usepackage[ukrainian]{datetime2}
+ \begin{document}
+ \today
+ \end{document}
+
+ \documentclass[ukrainian]{article}
+ \usepackage{babel}
+ \usepackage[useregional]{datetime2}
+ \begin{document}
+ \today
+ \end{document}
+
+2.1.2 Lua(Xe)LaTeX
+
+ \documentclass{article}
+ \usepackage{polyglossia}
+ \setmainlanguage{ukrainian}
+ \usepackage[ukrainian]{datetime2}
+ \begin{document}
+ \today
+ \end{document}
+
+3. DOCUMENTATION
+
+See datetime2-ukrainian.pdf for more information.
+
+This material is subject to the LaTeX Project Public License.
+See http://www.ctan.org/license/lppl1.3 for the details of that license.
+
+----------------------------------------------------------------
+
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-ukrainian/datetime2-ukrainian.dtx b/macros/latex/contrib/datetime2-contrib/datetime2-ukrainian/datetime2-ukrainian.dtx
new file mode 100644
index 0000000000..fb3b4dd870
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-ukrainian/datetime2-ukrainian.dtx
@@ -0,0 +1,1593 @@
+% \iffalse meta-comment
+% !TeX program = xelatex
+%<*internal>
+\iffalse
+%</internal>
+%<*readme>
+----------------------------------------------------------------
+
+Ukrainian Language Module for datetime2 Package
+
+Author: Nicola L. C. Talbot (inactive)
+Current maintainer: Sergiy M. Ponomarenko <sergiy.ponomarenko@gmail.com>.
+
+Licence: LPPL
+
+Required Packages: tracklang
+
+
+1. INSTALLATION
+
+xelatex datetime2-ukrainian.ins
+
+Move all *.ldf files to
+TEXMF/tex/latex/datetime2-ukrainian/
+
+2. USAGE
+
+2.1.1 PDFLATeX, LaTeX
+
+ \documentclass{article}
+ \usepackage[ukrainian]{datetime2}
+ \begin{document}
+ \today
+ \end{document}
+
+ \documentclass[ukrainian]{article}
+ \usepackage{babel}
+ \usepackage[useregional]{datetime2}
+ \begin{document}
+ \today
+ \end{document}
+
+2.1.2 Lua(Xe)LaTeX
+
+ \documentclass{article}
+ \usepackage{polyglossia}
+ \setmainlanguage{ukrainian}
+ \usepackage[ukrainian]{datetime2}
+ \begin{document}
+ \today
+ \end{document}
+
+3. DOCUMENTATION
+
+See datetime2-ukrainian.pdf for more information.
+
+This material is subject to the LaTeX Project Public License.
+See http://www.ctan.org/license/lppl1.3 for the details of that license.
+
+----------------------------------------------------------------
+%</readme>
+%<*internal>
+\fi
+\def\nameofplainTeX{plain}
+\ifx\fmtname\nameofplainTeX\else
+ \expandafter\begingroup
+\fi
+%</internal>
+%<*install>
+\input docstrip.tex
+\keepsilent
+\askforoverwritefalse
+\preamble
+----------------------------------------------------------------
+
+This material is subject to the LaTeX Project Public License.
+See http://www.ctan.org/license/lppl1.3 for the details of that
+license.
+
+----------------------------------------------------------------
+
+\endpreamble
+\postamble
+
+----------------------------------------------------------------
+ datetime2-ukrainian.dtx
+ Copyright 2015 Nicola Talbot
+ 2017 Sergiy M. Ponomarenko
+
+ This work may be distributed and/or modified under the
+ conditions of the LaTeX Project Public License, either version 1.3
+ of this license of (at your option) any later version.
+ The latest version of this license is in
+ http://www.latex-project.org/lppl.txt
+ and version 1.3 or later is part of all distributions of LaTeX
+ version 2005/12/01 or later.
+
+ This work has the LPPL maintenance status `inactive'.
+
+
+ This work consists of the files datetime2-ukrainian.dtx
+ datetime2-ukrainian.ins
+ datetime2-ukrainian-utf8.ldf,
+ datetime2-ukrainian-ascii.ldf
+ datetime2-ukrainian.ldf.
+----------------------------------------------------------------
+
+\endpostamble
+
+\usedir{tex/latex/datetime2-ukrainian}
+\askforoverwritefalse
+
+\generate
+{%
+ \file
+ {datetime2-ukrainian-utf8.ldf}%
+ {%
+ \usepreamble\defaultpreamble
+ \usepostamble\defaultpostamble
+ \from{datetime2-ukrainian.dtx}{datetime2-ukrainian-utf8.ldf,package}%
+ }%
+}
+
+\generate
+{%
+ \file
+ {datetime2-ukrainian-ascii.ldf}%
+ {%
+ \usepreamble\defaultpreamble
+ \usepostamble\defaultpostamble
+ \from{datetime2-ukrainian.dtx}{datetime2-ukrainian-ascii.ldf,package}%
+ }%
+}
+
+\generate
+{%
+ \file
+ {datetime2-ukrainian.ldf}%
+ {%
+ \usepreamble\defaultpreamble
+ \usepostamble\defaultpostamble
+ \from{datetime2-ukrainian.dtx}{datetime2-ukrainian.ldf,package}%
+ }%
+}
+%</install>
+%<install>\endbatchfile
+%<*internal>
+\usedir{source/latex/democls}
+\generate{
+ \file{\jobname.ins}{\from{\jobname.dtx}{install}}
+}
+\nopreamble\nopostamble
+\usedir{doc/latex/democls}
+\generate{
+ \file{README.md}{\from{\jobname.dtx}{readme}}
+}
+\ifx\fmtname\nameofplainTeX
+ \expandafter\endbatchfile
+\else
+ \expandafter\endgroup
+\fi
+%</internal>
+
+%<*driver>
+\documentclass{ltxdoc}
+%%
+%% This document should be compiled by
+%% XeLaTeX or LuaLaTex
+%%
+\usepackage[%
+ a4paper,%
+ footskip=1cm,%
+ headsep=0.3cm,%
+ top=2cm,
+ bottom=2cm,
+ left=6cm,
+ right=2cm,
+ ]{geometry}
+
+\usepackage{fontspec}
+\defaultfontfeatures{Ligatures={TeX}}
+\setmainfont{CMU Serif}
+\setsansfont{CMU Sans Serif}
+\setmonofont{CMU Typewriter Text}
+
+\usepackage[dvipsnames,usenames]{xcolor}
+
+\definecolor{thered} {rgb}{0.65,0.04,0.07}
+\definecolor{thegreen}{rgb}{0.06,0.44,0.08}
+\definecolor{thegrey} {gray}{0.8}
+\definecolor{theshade}{rgb}{1,1,0.97}
+\definecolor{theframe}{gray}{0.6}
+\definecolor{theblue}{cmyk}{1.00, 0.50, 0.00, 0.40}
+% ====================================
+
+% --------------------------------------------------
+\IfFileExists{listings.sty}{
+ \usepackage{listings}
+ \lstset{
+ gobble=1,
+ columns=flexible,
+ keepspaces,
+ basicstyle=\MacroFont,
+ keywords=[0]{\selectlanguage,\foreignlanguage
+ ,\babelhyphen,\babelhyphenation
+ ,\lefthyphenmin,\righthyphenmin
+ ,\StartBabelCommands,\SetString,\EndBabelCommands,\shorthandoff,\shorthandon
+ ,\languageshorthands,\useshorthands,\defineshorthand
+ ,\AddBabelHook,\SetStringLoop,\SetCase,\AfterBabelLanguage
+ ,\defaultfontfeatures,\setmainfont,\setsansfont,\setmonofont
+ ,\Ukrainian,\cyrdash,\cdash
+ ,\cyr,\cyrillictext,\textcyrillic,\cyrillicencoding
+ ,\addto,\captionsukrainian,\dateukrainian,\noextrasukrainian,\extrasukrainian
+ ,\languageattribute
+ ,\ch,\sh,\tg,\ctg,\arctg,\arcctg\,\th,\cth,\cosec
+ ,\dq
+ ,\XeTeXinputencoding
+ ,\setmainlanguage
+ ,\setotherlanguage
+ }
+ ,keywordstyle=[0]\color{thered}
+ ,keywords=[1]{main,ukrainian,english,german,frenchb
+ ,shorthands,extrasenglish
+ ,stringprocess,afterextras
+ ,soft,empty,nobreak,hard
+ ,Renderer,Ligatures
+ ,T1,T2A,lutf8,utf8
+ ,fontspec,babel,inputenc,fontenc,useregional
+ },
+ keywordstyle=[1]\color{thegreen},
+ comment=[l]\%,
+ commentstyle=\color{thegrey}\itshape,
+ alsoother={0123456789_},
+ frame=single,
+ backgroundcolor=\color{theshade},
+ rulecolor=\color{theframe},
+ framerule=\fboxrule,
+ }
+ \let\verbatim\relax
+ \lstnewenvironment{verbatim}[1][]{\lstset{##1}}{}
+ \AtBeginDocument{%
+ \DeleteShortVerb{\|}%
+ \lstMakeShortInline|%
+ }
+}{}
+\def\PrintDescribeMacro#1{%
+ \strut\MacroFont\color{thered}\normalsize\string#1}
+\def\Describe#1{%
+ \par\penalty-500\vskip3ex\noindent
+ \DescribeMacro{#1}\args}
+\def\DescribeOther{\vskip-5.8ex\Describe}
+\makeatletter
+\def\args#1{%
+ \def\bbl@tempa{#1}%
+ \ifx\bbl@tempa\@empty\else#1\vskip1ex\fi\ignorespaces}
+\makeatother
+% ====================================
+\EnableCrossrefs
+%\DisableCrossrefs % Say \DisableCrossrefs if index is ready
+\CodelineIndex % Index code by line number
+\RecordChanges % Gather update information
+%\PageIndex % Index code by page number
+% ====================================
+\usepackage{alltt}
+
+
+\usepackage[colorlinks,
+ bookmarks,
+ hyperindex=false,
+ pdfauthor={Sergiy M. Ponomarenko},
+ pdftitle={datetime2.sty Ukrainian Module}]{hyperref}
+
+
+\renewcommand*{\usage}[1]{\hyperpage{#1}}
+\renewcommand*{\main}[1]{\hyperpage{#1}}
+\IndexPrologue{\section*{\indexname}\markboth{\indexname}{\indexname}}
+\setcounter{IndexColumns}{2}
+
+\newcommand*{\sty}[1]{\textsf{#1}}
+\newcommand*{\opt}[1]{\texttt{#1}\index{#1=\texttt{#1}|main}}
+
+\RecordChanges
+\PageIndex
+\CodelineNumbered
+
+\begin{document}
+\DocInput{datetime2-ukrainian.dtx}
+\end{document}
+%</driver>
+% \fi
+%
+%
+% \GetFileInfo{\jobname.dtx}
+%
+% \def\fileversion{1.2a}
+% \def\filedate{2018/04/15}
+%
+%
+%\MakeShortVerb{"}
+%
+%\title{\bfseries Ukrainian Module for datetime2 Package}
+%\author{Nicola L. C. Talbot \and Sergiy M. Ponomarenko}
+%\date{2018/04/15 (1.2a)}
+%\maketitle
+%\tableofcontents
+%
+%\begin{abstract}
+% This is the Ukrainian language module for the \sty{datetime2}
+% package. If you want to use the settings in this module you must
+% install it in addition to installing \sty{datetime2}. If you use
+% \sty{babel} or \sty{polyglossia}, you will need this module to
+% prevent them from redefining \cs{today}. The \sty{datetime2}
+% \opt{useregional} setting must be set to "text" or "numeric"
+% for the language styles to be set.
+% Alternatively, you can set the style in the document using
+% \cs{DTMsetstyle}, but this may be changed by \cs{dateukrainian}
+% depending on the value of the \opt{useregional} setting.
+%\end{abstract}
+%
+%\StopEventually{%
+%\clearpage
+%\phantomsection
+%\addcontentsline{toc}{section}{Change History}%
+%\PrintChanges
+%\addcontentsline{toc}{section}{\indexname}%
+%\PrintIndex}
+% \section{Usage}
+%
+% \subsection{\LaTeX}
+%
+% When user's document is compiled with \texttt{latex.exe} or \texttt{pdflatex.exe},
+% recommended set of packages includes the \texttt{inputenc} and \texttt{fontenc}
+% packages.
+%
+%
+% \begin{verbatim}
+% \usepackage[T1,T2A]{fontenc}
+% \usepackage[utf8]{inputenc}
+% \usepackage[english,ukrainian]{babel}
+% \usepackage[useregional]{datetime2}
+% \end{verbatim}
+%
+%
+%
+% \subsection{Lua(Xe)\LaTeX}
+%
+% \subsubsection{Usage with \texttt{babel}}
+%
+% To invoke Unicode mode, one needs to load the \texttt{fontspec} package instead
+% of \texttt{inputenc} and \texttt{fontspec} and explicitly indicate which True Type
+% or Open Type fonts should be used for romanic, sans-serif and monospaced types.
+% The following example shows how to load Computer Modern Unicode (CMU) fonts,
+% which is a part of all modern \LaTeX\ distributions with \texttt{babel} package:
+% \begin{verbatim}
+% \usepackage{fontspec}
+% \defaultfontfeatures{Renderer=Basic,Ligatures={TeX}}
+% \setmainfont{CMU Serif}
+% \setsansfont{CMU Sans Serif}
+% \setmonofont{CMU Typewriter Text}
+% \usepackage[english,ukrainian]{babel}
+% \usepackage[useregional]{datetime2}
+% \end{verbatim}
+%
+% Here |Renderer=Basic,Ligatures={TeX}| activates ligatures which are existed
+% in \LaTeX.
+%
+% \subsubsection{Usage with \texttt{polyglossia}}
+%
+% \begin{verbatim}
+% \usepackage{polyglossia}
+% \defaultfontfeatures{Renderer=Basic,Ligatures={TeX}}
+% \setmainlanguage{ukrainian}
+% \setotherlanguage{english}
+% \setmainfont{CMU Serif}
+% \setsansfont{CMU Sans Serif}
+% \setmonofont{CMU Typewriter Text}
+% \usepackage[english,ukrainian]{babel}
+% \usepackage[useregional]{datetime2}
+% \end{verbatim}
+%
+% If ohe need use month name in nominative form, it sould be able to switch between
+% the different cases using \cs{DTMlangsetup}. For example:
+% \begin{verbatim}
+% % Default is genitive
+% \today
+% \DTMlangsetup[ukrainian]{month=nominative}
+% % Now \today in nominative
+% \today
+% \end{verbatim}
+%
+% For more information see documentation on \href{https://www.ctan.org/pkg/datetime2}{\texttt{datetime2}}.
+%\section{Implementetion}
+%\iffalse
+% \begin{macrocode}
+%<*datetime2-ukrainian-utf8.ldf>
+% \end{macrocode}
+%\fi
+%\subsection{UTF-8}
+% This file contains the settings that use UTF-8 characters. This
+% file is loaded if XeLaTeX or LuaLaTeX are used. Please make sure
+% your text editor is set to UTF-8 if you want to view this code.
+% \changes{1.0}{2015-04-01}{Initial release}
+% Identify module
+% \begin{macrocode}
+\ProvidesDateTimeModule{ukrainian-utf8}[2017/06/13 1.2]
+% \end{macrocode}
+%\begin{macro}{\DTMukrainianordinal}
+% \begin{macrocode}
+\newcommand*{\DTMukrainianordinal}[1]{%
+ \number#1
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMukrainianyear}
+% \begin{macrocode}
+\newcommand*{\DTMukrainianyear}[1]{%
+ \number#1
+ \DTMtexorpdfstring{\protect~}{\space}р.%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\changes{1.2}{2017/06/13}{Add nominative month names (capitalize and common)}
+%
+%\begin{macro}{\DTMukrainiannominativemonthname}
+%
+% ======= Ukrainian month names in nominative =======
+%
+% \begin{macrocode}
+\newcommand*{\DTMukrainiannominativemonthname}[1]{%
+ \ifcase#1
+ \or
+ січŠµŠ½ŃŒ%
+ \or
+ Š»ŃŽŃ‚ŠøŠ¹%
+ \or
+ Š±ŠµŃ€ŠµŠ·ŠµŠ½ŃŒ%
+ \or
+ ŠŗŠ²Ń–Ń‚ŠµŠ½ŃŒ%
+ \or
+ трŠ°Š²ŠµŠ½ŃŒ%
+ \or
+ чŠµŃ€Š²ŠµŠ½ŃŒ%
+ \or
+ Š»ŠøŠæŠµŠ½ŃŒ%
+ \or
+ сŠµŃ€ŠæŠµŠ½ŃŒ%
+ \or
+ Š²ŠµŃ€ŠµŃŠµŠ½ŃŒ%
+ \or
+ Š¶Š¾Š²Ń‚ŠµŠ½ŃŒ%
+ \or
+ Š»ŠøстŠ¾ŠæŠ°Š“%
+ \or
+ Š³Ń€ŃƒŠ“ŠµŠ½ŃŒ%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMukrainiannominativeMonthname}
+%
+% ======= Ukrainian Capitalized month names in nominative =======
+%
+% \begin{macrocode}
+\newcommand*{\DTMukrainiannominativeMonthname}[1]{%
+ \ifcase#1
+ \or
+ Š”ічŠµŠ½ŃŒ%
+ \or
+ Š›ŃŽŃ‚ŠøŠ¹%
+ \or
+ Š‘ŠµŃ€ŠµŠ·ŠµŠ½ŃŒ%
+ \or
+ ŠšŠ²Ń–Ń‚ŠµŠ½ŃŒ%
+ \or
+ Š¢Ń€Š°Š²ŠµŠ½ŃŒ%
+ \or
+ Š§ŠµŃ€Š²ŠµŠ½ŃŒ%
+ \or
+ Š›ŠøŠæŠµŠ½ŃŒ%
+ \or
+ Š”ŠµŃ€ŠæŠµŠ½ŃŒ%
+ \or
+ Š’ŠµŃ€ŠµŃŠµŠ½ŃŒ%
+ \or
+ Š–Š¾Š²Ń‚ŠµŠ½ŃŒ%
+ \or
+ Š›ŠøстŠ¾ŠæŠ°Š“%
+ \or
+ Š“Ń€ŃƒŠ“ŠµŠ½ŃŒ%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMukrainiangenitivemonthname}
+%
+% ======= Ukrainian month names in genitive =======
+%
+% \begin{macrocode}
+\newcommand*{\DTMukrainiangenitivemonthname}[1]{%
+ \ifcase#1
+ \or
+ січŠ½Ń%
+ \or
+ Š»ŃŽŃ‚Š¾Š³Š¾%
+ \or
+ Š±ŠµŃ€ŠµŠ·Š½Ń%
+ \or
+ ŠŗŠ²Ń–Ń‚Š½Ń%
+ \or
+ трŠ°Š²Š½Ń%
+ \or
+ чŠµŃ€Š²Š½Ń%
+ \or
+ Š»ŠøŠæŠ½Ń%
+ \or
+ сŠµŃ€ŠæŠ½Ń%
+ \or
+ Š²ŠµŃ€ŠµŃŠ½Ń%
+ \or
+ Š¶Š¾Š²Ń‚Š½Ń%
+ \or
+ Š»ŠøстŠ¾ŠæŠ°Š“Š°%
+ \or
+ Š³Ń€ŃƒŠ“Š½Ń%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMukrainiangenitiveMonthname}
+%
+% ======= Ukrainian Capitalized month names in genitive =======
+%
+% \begin{macrocode}
+\newcommand*{\DTMukrainiangenitiveMonthname}[1]{%
+ \ifcase#1
+ \or
+ Š”ічŠ½Ń%
+ \or
+ Š›ŃŽŃ‚Š¾Š³Š¾%
+ \or
+ Š‘ŠµŃ€ŠµŠ·Š½Ń%
+ \or
+ ŠšŠ²Ń–Ń‚Š½Ń%
+ \or
+ Š¢Ń€Š°Š²Š½Ń%
+ \or
+ Š§ŠµŃ€Š²Š½Ń%
+ \or
+ Š›ŠøŠæŠ½Ń%
+ \or
+ Š”ŠµŃ€ŠæŠ½Ń%
+ \or
+ Š’ŠµŃ€ŠµŃŠ½Ń%
+ \or
+ Š–Š¾Š²Ń‚Š½Ń%
+ \or
+ Š›ŠøстŠ¾ŠæŠ°Š“Š°%
+ \or
+ Š“Ń€ŃƒŠ“Š½Ń%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+% \changes{1.2}{2017/06/13}{Set as default genitive form of month name}
+% Now we set \cs{DTMukrainiangenitiveMonthname} and \cs{DTMukrainiangenitivemonthname} as default setting.
+% \begin{macrocode}
+\newcommand*{\DTMukrainianmonthname}{\DTMukrainiangenitivemonthname}% default
+\newcommand*{\DTMukrainianMonthname}{\DTMukrainiangenitiveMonthname}% default
+% \end{macrocode}
+%
+%\begin{macro}{\DTMukrainianshortmonthname}%
+%
+% ======= Abbreviated Ukrainian short month names =======
+%
+%\changes{v1.1}{2017/06/11}{Add abbreviated month names}
+% \begin{macrocode}
+\newcommand*{\DTMukrainianshortmonthname}[1]{%
+ \ifcase#1
+ \or
+ січ.%
+ \or
+ Š»ŃŽŃ‚.%
+ \or
+ Š±ŠµŃ€.%
+ \or
+ ŠŗŠ²Ń–Ń‚.%
+ \or
+ трŠ°Š²%
+ \or
+ чŠµŃ€Š².%
+ \or
+ Š»ŠøŠæ.%
+ \or
+ сŠµŃ€Šæ.%
+ \or
+ Š²ŠµŃ€.%
+ \or
+ Š¶Š¾Š²Ń‚.%
+ \or
+ Š»ŠøстŠ¾Šæ.%
+ \or
+ Š³Ń€ŃƒŠ“.%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMukrainianshortMonthname}
+%
+% ======= Abbreviated Ukrainian Capitalized short month names =======
+%
+% \begin{macrocode}
+\newcommand*{\DTMukrainianshortMonthname}[1]{%
+ \ifcase#1
+ \or
+ Š”іч.%
+ \or
+ Š›ŃŽŃ‚.%
+ \or
+ Š‘ŠµŃ€.%
+ \or
+ ŠšŠ²Ń–Ń‚.%
+ \or
+ Š¢Ń€Š°Š²%
+ \or
+ Š§ŠµŃ€Š².%
+ \or
+ Š›ŠøŠæ.%
+ \or
+ Š”ŠµŃ€Šæ.%
+ \or
+ Š’ŠµŃ€.%
+ \or
+ Š–Š¾Š²Ń‚.%
+ \or
+ Š›ŠøстŠ¾Šæ.%
+ \or
+ Š“Ń€ŃƒŠ“.%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+% \changes{v1.1}{2017/06/11}{Adding Ukrainian week days}
+%\begin{macro}{\DTMukrainianweekdayname}
+%
+% ======= Ukrainian day of week names =======
+%
+% \begin{macrocode}
+\newcommand*{\DTMukrainianweekdayname}[1]{%
+ \ifcase#1
+ ŠæŠ¾Š½ŠµŠ“іŠ»Š¾Šŗ%
+ \or
+ Š²Ń–Š²Ń‚Š¾Ń€Š¾Šŗ%
+ \or
+ сŠµŃ€ŠµŠ“Š°%
+ \or
+ чŠµŃ‚Š²ŠµŃ€%
+ \or
+ Šæ'ятŠ½Šøця%
+ \or
+ суŠ±Š¾Ń‚Š°%
+ \or
+ Š½ŠµŠ“іŠ»Ń%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMukrainianWeekdayname}
+%
+% ======= Ukrainian Capitalized day of week names =======
+%
+% \begin{macrocode}
+\newcommand*{\DTMukrainianWeekdayname}[1]{%
+ \ifcase#1
+ ŠŸŠ¾Š½ŠµŠ“іŠ»Š¾Šŗ%
+ \or
+ Š’Ń–Š²Ń‚Š¾Ń€Š¾Šŗ%
+ \or
+ Š”ŠµŃ€ŠµŠ“Š°%
+ \or
+ Š§ŠµŃ‚Š²ŠµŃ€%
+ \or
+ ŠŸ'ятŠ½Šøця%
+ \or
+ Š”уŠ±Š¾Ń‚Š°%
+ \or
+ ŠŠµŠ“іŠ»Ń%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMukrainianshortweekdayname}
+%
+%
+% ======= Abbreviated Ukrainian day of week names =======
+%
+%\changes{v1.1}{2017/06/11}{Add abbreviated day of week names}
+% \begin{macrocode}
+\newcommand*{\DTMukrainianshortweekdayname}[1]{%
+ \ifcase#1
+ ŠæŠ½.%
+ \or
+ Š²Ń‚.%
+ \or
+ ср.%
+ \or
+ чт%
+ \or
+ Šæт.%
+ \or
+ сŠ±.%
+ \or
+ Š½Š“.%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMukrainianshortWeekdayname}
+%
+% ======= Abbreviated Ukrainian Capitalized day of week names =======
+%
+% \begin{macrocode}
+\newcommand*{\DTMukrainianshortWeekdayname}[1]{%
+ \ifcase#1
+ ŠŸŠ½.%
+ \or
+ Š’Ń‚.%
+ \or
+ Š”р.%
+ \or
+ Š§Ń‚%
+ \or
+ ŠŸŃ‚.%
+ \or
+ Š”Š±.%
+ \or
+ ŠŠ“.%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%
+%\iffalse
+% \begin{macrocode}
+%</datetime2-ukrainian-utf8.ldf>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*datetime2-ukrainian-ascii.ldf>
+% \end{macrocode}
+%\fi
+%\subsection{ASCII}
+%This file contains the settings that use \LaTeX\ commands for
+%non-ASCII characters. This should be input if neither XeLaTeX nor
+%LuaLaTeX are used. Even if the user has loaded \sty{inputenc} with
+%"utf8", this file should still be used not the
+%\texttt{datetime2-ukrainian-utf8.ldf} file as the non-ASCII
+%characters are made active in that situation and would need
+%protecting against expansion.
+%\changes{1.0}{2015-04-01}{Initial release}
+% Identify module
+% \begin{macrocode}
+\ProvidesDateTimeModule{ukrainian-ascii}[2017/06/13 1.2]
+% \end{macrocode}
+%
+%I f abbreviated dates are supported, short month names should be
+% likewise provided.
+%\begin{macro}{\DTMukrainianordinal}
+% \begin{macrocode}
+\newcommand*{\DTMukrainianordinal}[1]{%
+ \number#1
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMukrainianyear}
+% \begin{macrocode}
+\newcommand*{\DTMukrainianyear}[1]{%
+ \number#1
+ \DTMtexorpdfstring{\protect~}{\space}\protect\cyrr.%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMukrainiannominativemonthname}
+%
+%
+% ======= Ukrainian month names in nominative =======
+%
+%
+% \begin{macrocode}
+\newcommand*{\DTMukrainiannominativemonthname}[1]{%
+ \ifcase#1
+ \or
+ \protect\cyrs\protect\cyrii\protect\cyrch\protect\cyre\protect\cyrn\protect\cyrsftsn
+ \or
+ \protect\cyrl\protect\cyryu\protect\cyrt\protect\cyri\protect\cyrishrt
+ \or
+ \protect\cyrb\protect\cyre\protect\cyrr\protect\cyre\protect\cyrz
+ \protect\cyre\protect\cyrn\protect\cyrsftsn
+ \or
+ \protect\cyrk\protect\cyrv\protect\cyrii\protect\cyrt\protect\cyre\protect\cyrn\protect\cyrsftsn
+ \or
+ \protect\cyrt\protect\cyrr\protect\cyra\protect\cyrv\protect\cyre\protect\cyrn\protect\cyrsftsn
+ \or
+ \protect\cyrch\protect\cyre\protect\cyrr\protect\cyrv\protect\cyre\protect\cyrn\protect\cyrsftsn
+ \or
+ \protect\cyrl\protect\cyri\protect\cyrp\protect\cyre\protect\cyrn\protect\cyrsftsn
+ \or
+ \protect\cyrs\protect\cyre\protect\cyrr\protect\cyrp\protect\cyre\protect\cyrn\protect\cyrsftsn
+ \or
+ \protect\cyrv\protect\cyre\protect\cyrr\protect\cyre\protect\cyrs
+ \protect\cyre\protect\cyrn\protect\cyrsftsn
+ \or
+ \protect\cyrzh\protect\cyro\protect\cyrv\protect\cyrt\protect\cyre\protect\cyrn\protect\cyrsftsn
+ \or
+ \protect\cyrl\protect\cyri\protect\cyrs\protect\cyrt\protect\cyro
+ \protect\cyrp\protect\cyra\protect\cyrd
+ \or
+ \protect\cyrg\protect\cyrr\protect\cyru\protect\cyrd\protect\protect\cyre\protect\cyrn\protect\cyrsftsn
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMukrainiannominativeMonthname}
+%
+%
+% ======= Ukrainian Capitalized month names in nominative =======
+%
+%
+% \begin{macrocode}
+\newcommand*{\DTMukrainiannominativeMonthname}[1]{%
+ \ifcase#1
+ \or
+ \protect\CYRS\protect\cyrii\protect\cyrch\protect\cyre\protect\cyrn\protect\cyrsftsn
+ \or
+ \protect\CYRL\protect\cyryu\protect\cyrt\protect\cyri\protect\cyrishrt
+ \or
+ \protect\CYRB\protect\cyre\protect\cyrr\protect\cyre\protect\cyrz
+ \protect\cyre\protect\cyrn\protect\cyrsftsn
+ \or
+ \protect\CYRK\protect\cyrv\protect\cyrii\protect\cyrt\protect\cyre\protect\cyrn\protect\cyrsftsn
+ \or
+ \protect\CYRT\protect\cyrr\protect\cyra\protect\cyrv\protect\cyre\protect\cyrn\protect\cyrsftsn
+ \or
+ \protect\CYRCH\protect\cyre\protect\cyrr\protect\cyrv\protect\cyre\protect\cyrn\protect\cyrsftsn
+ \or
+ \protect\CYRL\protect\cyri\protect\cyrp\protect\cyre\protect\cyrn\protect\cyrsftsn
+ \or
+ \protect\CYRS\protect\cyre\protect\cyrr\protect\cyrp\protect\cyre\protect\cyrn\protect\cyrsftsn
+ \or
+ \protect\CYRV\protect\cyre\protect\cyrr\protect\cyre\protect\cyrs
+ \protect\CYRE\protect\cyrn\protect\cyrsftsn
+ \or
+ \protect\CYRZH\protect\cyro\protect\cyrv\protect\cyrt\protect\cyre\protect\cyrn\protect\cyrsftsn
+ \or
+ \protect\CYRL\protect\cyri\protect\cyrs\protect\cyrt\protect\cyro
+ \protect\cyrp\protect\cyra\protect\cyrd
+ \or
+ \protect\CYRG\protect\cyrr\protect\cyru\protect\cyrd\protect\protect\cyre\protect\cyrn\protect\cyrsftsn
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMukrainiangenitivemonthname}
+%
+% ======= Ukrainian month names in genitive =======
+%
+% \begin{macrocode}
+\newcommand*{\DTMukrainiangenitivemonthname}[1]{%
+ \ifcase#1
+ \or
+ \protect\cyrs\protect\cyrii\protect\cyrch\protect\cyrn\protect\cyrya
+ \or
+ \protect\cyrl\protect\cyryu\protect\cyrt\protect\cyro\protect\cyrg
+ \protect\cyro
+ \or
+ \protect\cyrb\protect\cyre\protect\cyrr\protect\cyre\protect\cyrz
+ \protect\cyrn\protect\cyrya
+ \or
+ \protect\cyrk\protect\cyrv\protect\cyrii\protect\cyrt\protect\cyrn
+ \protect\cyrya
+ \or
+ \protect\cyrt\protect\cyrr\protect\cyra\protect\cyrv\protect\cyrn
+ \protect\cyrya
+ \or
+ \protect\cyrch\protect\cyre\protect\cyrr\protect\cyrv\protect\cyrn
+ \protect\cyrya
+ \or
+ \protect\cyrl\protect\cyri\protect\cyrp\protect\cyrn\protect\cyrya
+ \or
+ \protect\cyrs\protect\cyre\protect\cyrr\protect\cyrp\protect\cyrn
+ \protect\cyrya
+ \or
+ \protect\cyrv\protect\cyre\protect\cyrr\protect\cyre\protect\cyrs
+ \protect\cyrn\protect\cyrya
+ \or
+ \protect\cyrzh\protect\cyro\protect\cyrv\protect\cyrt\protect\cyrn
+ \protect\cyrya
+ \or
+ \protect\cyrl\protect\cyri\protect\cyrs\protect\cyrt\protect\cyro
+ \protect\cyrp\protect\cyra\protect\cyrd\protect\cyra
+ \or
+ \protect\cyrg\protect\cyrr\protect\cyru\protect\cyrd\protect\cyrn
+ \protect\cyrya
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMukrainiangenitiveMonthname}
+%
+% ======= Ukrainian Capitalized month names in genitive =======
+%
+% \begin{macrocode}
+\newcommand*{\DTMukrainiangenitiveMonthname}[1]{%
+ \ifcase#1
+ \or
+ \protect\CYRS\protect\cyrii\protect\cyrch\protect\cyrn\protect\cyrya
+ \or
+ \protect\CYRL\protect\cyryu\protect\cyrt\protect\cyro\protect\cyrg
+ \protect\cyro
+ \or
+ \protect\CYRB\protect\cyre\protect\cyrr\protect\cyre\protect\cyrz
+ \protect\cyrn\protect\cyrya
+ \or
+ \protect\CYRK\protect\cyrv\protect\cyrii\protect\cyrt\protect\cyrn
+ \protect\cyrya
+ \or
+ \protect\CYRT\protect\cyrr\protect\cyra\protect\cyrv\protect\cyrn
+ \protect\cyrya
+ \or
+ \protect\CYRCH\protect\cyre\protect\cyrr\protect\cyrv\protect\cyrn
+ \protect\cyrya
+ \or
+ \protect\CYRL\protect\cyri\protect\cyrp\protect\cyrn\protect\cyrya
+ \or
+ \protect\CYRS\protect\cyre\protect\cyrr\protect\cyrp\protect\cyrn
+ \protect\cyrya
+ \or
+ \protect\CYRV\protect\cyre\protect\cyrr\protect\cyre\protect\cyrs
+ \protect\cyrn\protect\cyrya
+ \or
+ \protect\CYRZH\protect\cyro\protect\cyrv\protect\cyrt\protect\cyrn
+ \protect\cyrya
+ \or
+ \protect\CYRL\protect\cyri\protect\cyrs\protect\cyrt\protect\cyro
+ \protect\cyrp\protect\cyra\protect\cyrd\protect\cyra
+ \or
+ \protect\CYRG\protect\cyrr\protect\cyru\protect\cyrd\protect\cyrn
+ \protect\cyrya
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\changes{1.2}{2017/06/13}{Set as default genitive form of month name}
+% Now we set \cs{DTMukrainiangenitiveMonthname} and \cs{DTMukrainiangenitivemonthname} as default setting.
+% \begin{macrocode}
+\newcommand*{\DTMukrainianmonthname}{\DTMukrainiangenitivemonthname}% default
+\newcommand*{\DTMukrainianMonthname}{\DTMukrainiangenitiveMonthname}% default
+% \end{macrocode}
+%
+%
+%\begin{macro}{\DTMukrainianshortmonthname}
+%
+% ======= Abbreviated Ukrainian month names =======
+%
+%\changes{v1.1}{2017/06/11}{Add abbreviated month names}
+% \begin{macrocode}
+\newcommand*{\DTMukrainianshortmonthname}[1]{%
+ \ifcase#1
+ \or
+ \protect\cyrs\protect\cyrii\protect\cyrch.
+ \or
+ \protect\cyrl\protect\cyryu\protect\cyrt.
+ \or
+ \protect\cyrb\protect\cyre\protect\cyrr.
+ \or
+ \protect\cyrk\protect\cyrv\protect\cyrii\protect\cyrt.
+ \or
+ \protect\cyrt\protect\cyrr\protect\cyra\protect\cyrv.
+ \or
+ \protect\cyrch\protect\cyre\protect\cyrr\protect\cyrv.
+ \or
+ \protect\cyrl\protect\cyri\protect\cyrp.
+ \or
+ \protect\cyrs\protect\cyre\protect\cyrr\protect\cyrp.
+ \or
+ \protect\cyrv\protect\cyre\protect\cyrr.
+ \or
+ \protect\cyrzh\protect\cyro\protect\cyrv\protect\cyrt.
+ \or
+ \protect\cyrl\protect\cyri\protect\cyrs\protect\cyrt\protect\cyro
+ \protect\cyrp.
+ \or
+ \protect\cyrg\protect\cyrr\protect\cyru\protect\cyrd.
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMukrainianshortMonthname}
+%
+% ======= Abbreviated Capitalized Ukrainian month names =======
+%
+% \begin{macrocode}
+\newcommand*{\DTMukrainianshortMonthname}[1]{%
+ \ifcase#1
+ \or
+ \protect\CYRS\protect\cyrii\protect\cyrch.
+ \or
+ \protect\CYRL\protect\cyryu\protect\cyrt.
+ \or
+ \protect\CYRB\protect\cyre\protect\cyrr.
+ \or
+ \protect\CYRK\protect\cyrv\protect\cyrii\protect\cyrt.
+ \or
+ \protect\CYRT\protect\cyrr\protect\cyra\protect\cyrv.
+ \or
+ \protect\CYRCH\protect\cyre\protect\cyrr\protect\cyrv.
+ \or
+ \protect\CYRL\protect\cyri\protect\cyrp.
+ \or
+ \protect\CYRS\protect\cyre\protect\cyrr\protect\cyrp.
+ \or
+ \protect\CYRV\protect\cyre\protect\cyrr.
+ \or
+ \protect\CYRZH\protect\cyro\protect\cyrv\protect\cyrt.
+ \or
+ \protect\CYRL\protect\cyri\protect\cyrs\protect\cyrt\protect\cyro
+ \protect\cyrp.
+ \or
+ \protect\CYRG\protect\cyrr\protect\cyru\protect\cyrd.
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMukrainianweekdayname}
+%
+% ======= Ukrainian day of week names =======
+%
+% \begin{macrocode}
+\newcommand*{\DTMukrainianweekdayname}[1]{%
+ \ifcase#1
+ \protect\cyrp\protect\cyro\protect\cyrn\protect\cyre\protect\cyrd\protect\cyrii\protect\cyrl\protect\cyro\protect\cyrk%
+ \or
+ \protect\cyrv\protect\cyrii\protect\cyrv\protect\cyrt\protect\cyro\protect\cyrr\protect\cyro\protect\cyrk%
+ \or
+ \protect\cyrs\protect\cyre\protect\cyrr\protect\cyre\protect\cyrd\protect\cyra%
+ \or
+ \protect\cyrch\protect\cyre\protect\cyrt\protect\cyrv\protect\cyre\protect\cyrr%
+ \or
+ \protect\cyrp'\protect\cyrya\protect\cyrt\protect\cyrn\protect\cyri\protect\cyrc\protect\cyrya%
+ \or
+ \protect\cyrs\protect\cyru\protect\cyrb\protect\cyro\protect\cyrt\protect\cyra%
+ \or
+ \protect\cyrn\protect\cyre\protect\cyrd\protect\cyrii\protect\cyrl\protect\cyrya%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMukrainianWeekdayname}
+%
+% ======= Ukrainian Capitalized day of week names =======
+%
+% \begin{macrocode}
+\newcommand*{\DTMukrainianWeekdayname}[1]{%
+ \ifcase#1
+ \protect\CYRP\protect\cyro\protect\cyrn\protect\cyre\protect\cyrd\protect\cyrii\protect\cyrl\protect\cyro\protect\cyrk%
+ \or
+ \protect\CYRV\protect\cyrii\protect\cyrv\protect\cyrt\protect\cyro\protect\cyrr\protect\cyro\protect\cyrk%
+ \or
+ \protect\CYRS\protect\cyre\protect\cyrr\protect\cyre\protect\cyrd\protect\cyra%
+ \or
+ \protect\CYRCH\protect\cyre\protect\cyrt\protect\cyrv\protect\cyre\protect\cyrr%
+ \or
+ \protect\CYRP'\protect\cyrya\protect\cyrt\protect\cyrn\protect\cyri\protect\cyrc\protect\cyrya%
+ \or
+ \protect\CYRS\protect\cyru\protect\cyrb\protect\cyro\protect\cyrt\protect\cyra%
+ \or
+ \protect\CYRN\protect\cyre\protect\cyrd\protect\cyrii\protect\cyrl\protect\cyrya%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMukrainianshortweekdayname}
+%
+% ======= Abbreviated Ukrainian day of week names =======
+%
+%\changes{v1.1}{2017/06/11}{Add abbreviated day of week names}
+% \begin{macrocode}
+\newcommand*{\DTMukrainianshortweekdayname}[1]{%
+ \ifcase#1
+ \protect\cyrp\protect\cyrn.%
+ \or
+ \protect\cyrv\protect\cyrt.%
+ \or
+ \protect\cyrs\protect\cyrr.%
+ \or
+ \protect\cyrch\protect\cyrt%
+ \or
+ \protect\cyrp\protect\cyrt.%
+ \or
+ \protect\cyrs\protect\cyrb.%
+ \or
+ \protect\cyrn\protect\cyrd.%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMukrainianshortWeekdayname}
+% ======= Abbreviated Ukrainian Capitalized day of week names =======
+% \begin{macrocode}
+\newcommand*{\DTMukrainianshortWeekdayname}[1]{%
+ \ifcase#1
+ \protect\CYRP\protect\cyrn.%
+ \or
+ \protect\CYRV\protect\cyrt.%
+ \or
+ \protect\CYRS\protect\cyrr.%
+ \or
+ \protect\CYRCH\protect\cyrt.%
+ \or
+ \protect\CYRP\protect\cyrt.%
+ \or
+ \protect\CYRS\protect\cyrb.%
+ \or
+ \protect\CYRN\protect\cyrd.%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\iffalse
+% \begin{macrocode}
+%</datetime2-ukrainian-ascii.ldf>
+% \end{macrocode}
+%\fi
+%
+%\subsection{Main Ukrainian Module (\texttt{datetime2-ukrainian.ldf})}
+%\changes{1.0}{2015-04-01}{Initial release}
+%
+%\iffalse
+% \begin{macrocode}
+%<*datetime2-ukrainian.ldf>
+% \end{macrocode}
+%\fi
+%
+% Identify Module
+% \begin{macrocode}
+\ProvidesDateTimeModule{ukrainian}[2017/06/13 1.2]
+% \end{macrocode}
+% Need to find out if XeTeX or LuaTeX are being used.
+% \begin{macrocode}
+\RequirePackage{ifxetex,ifluatex}
+% \end{macrocode}
+% XeTeX and LuaTeX natively support UTF-8, so load
+% \texttt{ukrainian-utf8} if either of those engines are used
+% otherwise load \texttt{ukrainian-ascii}.
+% \begin{macrocode}
+\ifxetex
+ \RequireDateTimeModule{ukrainian-utf8}
+\else
+ \ifluatex
+ \RequireDateTimeModule{ukrainian-utf8}
+ \else
+ \RequireDateTimeModule{ukrainian-ascii}
+ \fi
+\fi
+% \end{macrocode}
+%
+% Define the \texttt{ukrainian} style.
+% The time style is the same as the "default" style
+% provided by \sty{datetime2}. This may need correcting. For
+% example, if a 12 hour style similar to the "englishampm" (from the
+% "english-base" module) is required.
+%
+% Allow the user a way of configuring the "ukrainian" and
+% "ukrainian-numeric" styles. This doesn't use the package wide
+% separators such as
+% \cs{dtm@datetimesep} in case other date formats are also required.
+%
+%\begin{macro}{\DTMukrainiandowdaysep}
+% The separator between the day of week name and the day of month
+% number for the text format.
+%\changes{1.2}{2017/06/13}{Add support for showdow}
+% \begin{macrocode}
+\newcommand*{\DTMukrainiandowdaysep}{%
+ \DTMtexorpdfstring{\protect~}{\space}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMukrainiandaymonthsep}
+% The separator between the day and month for the text format.
+% \begin{macrocode}
+\newcommand*{\DTMukrainiandaymonthsep}{%
+ \DTMtexorpdfstring{\protect~}{\space}}
+% \end{macrocode}
+%\end{macro}
+%
+% \changes{1.2}{2017/06/13}{Added \cs{DTMukrainiannommonthyearsep}}
+%
+%\begin{macro}{\DTMukrainiannommonthyearsep}
+% The separator between the month and year for the text format.
+% \begin{macrocode}
+\newcommand*{\DTMukrainiannommonthyearsep}{%
+ \DTMtexorpdfstring{\protect~}{\space}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMukrainianmonthyearsep}
+% The separator between the month and year for the text format.
+% \changes{1.2}{2017/06/13}{Fixed: spacebar in tableofcontents was}
+% \begin{macrocode}
+\newcommand*{\DTMukrainianmonthyearsep}{%
+ \DTMtexorpdfstring{\protect~}{\space}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMukrainiandatetimesep}
+% The separator between the date and time blocks in the full format
+% (either text or numeric).
+% \begin{macrocode}
+\newcommand*{\DTMukrainiandatetimesep}{%
+ \DTMtexorpdfstring{\protect~}{\space}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMukrainiantimezonesep}
+% The separator between the time and zone blocks in the full format
+% (either text or numeric).
+% \begin{macrocode}
+\newcommand*{\DTMukrainiantimezonesep}{%
+ \DTMtexorpdfstring{\protect~}{\space}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMukrainiandatesep}
+% The separator for the numeric date format.
+% \begin{macrocode}
+\newcommand*{\DTMukrainiandatesep}{.}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMukrainiantimesep}
+% The separator for the numeric time format.
+% \begin{macrocode}
+\newcommand*{\DTMukrainiantimesep}{:}
+% \end{macrocode}
+%\end{macro}
+%
+% Provide keys that can be used in \cs{DTMlangsetup} to set these
+% separators.
+% \changes{1.2}{2017/06/13}{Added key dowdaysep}
+% \begin{macrocode}
+\DTMdefkey{ukrainian}{dowdaysep}{\renewcommand*{\DTMukrainiandowdaysep}{#1}}
+\DTMdefkey{ukrainian}{daymonthsep}{\renewcommand*{\DTMukrainiandaymonthsep}{#1}}
+\DTMdefkey{ukrainian}{monthyearsep}{\renewcommand*{\DTMukrainianmonthyearsep}{#1}}
+\DTMdefkey{ukrainian}{nommonthyearsep}{\renewcommand*{\DTMukrainiannommonthyearsep}{#1}}
+\DTMdefkey{ukrainian}{datetimesep}{\renewcommand*{\DTMukrainiandatetimesep}{#1}}
+\DTMdefkey{ukrainian}{timezonesep}{\renewcommand*{\DTMukrainiantimezonesep}{#1}}
+\DTMdefkey{ukrainian}{datesep}{\renewcommand*{\DTMukrainiandatesep}{#1}}
+\DTMdefkey{ukrainian}{timesep}{\renewcommand*{\DTMukrainiantimesep}{#1}}
+% \end{macrocode}
+% \changes{1.2}{2017/06/13}{Added genitive and nominative keys}
+% The block that defines the module options for using genitive or nominative case of month name:
+%
+% \begin{macrocode}
+\DTMdefchoicekey{ukrainian}{month}[\val\nr]{genitive,nominative}{%
+ \ifcase\nr\relax
+ \renewcommand*\DTMukrainianmonthname{\DTMukrainiangenitivemonthname}%
+ \renewcommand*\DTMukrainianMonthname{\DTMukrainiangenitiveMonthname}%
+ \or
+ \renewcommand*\DTMukrainianmonthname{\DTMukrainiannominativemonthname}%
+ \renewcommand*\DTMukrainianMonthname{\DTMukrainiannominativeMonthname}%
+ \fi
+}
+% \end{macrocode}
+%
+% \changes{1.2}{2017/06/13}{Define a boolean key that can switch between full and abbreviated
+% formats for the month and day of week names in the text format}
+% Define a boolean key that can switch between full and abbreviated
+% formats for the month and day of week names in the text format.
+% \begin{macrocode}
+\DTMdefboolkey{ukrainian}{abbr}[true]{}
+% \end{macrocode}
+% The default is the full name.
+% \begin{macrocode}
+\DTMsetbool{ukrainian}{abbr}{false}
+% \end{macrocode}
+%
+%
+% Define a boolean key that determines if the time zone mappings
+% should be used.
+% \begin{macrocode}
+\DTMdefboolkey{ukrainian}{mapzone}[true]{}
+% \end{macrocode}
+% The default is to use mappings.
+% \begin{macrocode}
+\DTMsetbool{ukrainian}{mapzone}{true}
+% \end{macrocode}
+%
+% Define a boolean key that determines if the day of month should be
+% displayed.
+% \begin{macrocode}
+\DTMdefboolkey{ukrainian}{showdayofmonth}[true]{}
+% \end{macrocode}
+% The default is to show the day of month.
+% \begin{macrocode}
+\DTMsetbool{ukrainian}{showdayofmonth}{true}
+% \end{macrocode}
+%
+% Define a boolean key that determines if the year should be
+% displayed.
+% \begin{macrocode}
+\DTMdefboolkey{ukrainian}{showyear}[true]{}
+% \end{macrocode}
+% The default is to show the year.
+% \begin{macrocode}
+\DTMsetbool{ukrainian}{showyear}{true}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\DTMnewstyle
+ {ukrainian}% label
+ {% date style
+ \renewcommand*\DTMdisplaydate[4]{%
+ \ifDTMshowdow
+ \ifnum##4>-1
+ \DTMifbool{ukrainian}{abbr}%
+ {\DTMukrainianshortweekdayname{##4}}%
+ {\DTMukrainianweekdayname{##4}}%
+ \DTMukrainiandowdaysep
+ \fi
+ \fi
+ \DTMifbool{ukrainian}{showdayofmonth}%
+ {%
+ \DTMukrainianordinal{##3}%
+ \DTMukrainiandaymonthsep
+ }%
+ {}%
+ \DTMifbool{ukrainian}{abbr}%
+ {\DTMukrainianshortmonthname{##2}}%
+ {\DTMukrainianmonthname{##2}}%
+ \DTMifbool{ukrainian}{showyear}%
+ {%
+ \DTMukrainianmonthyearsep
+ \DTMukrainianyear{##1}%
+ }%
+ {}%
+ }%
+ \renewcommand*\DTMDisplaydate[4]{%
+ \ifDTMshowdow
+ \ifnum##4>-1
+ \DTMifbool{ukrainian}{abbr}%
+ {\DTMukrainianshortWeekdayname{##4}}%
+ {\DTMukrainianWeekdayname{##4}}%
+ \DTMukrainiandowdaysep
+ \DTMifbool{ukrainian}{showdayofmonth}%
+ {%
+ \DTMukrainianordinal{##3}%
+ \DTMukrainiandaymonthsep
+ }%
+ {}%
+ \DTMifbool{ukrainian}{abbr}%
+ {\DTMukrainianshortmonthname{##2}}%
+ {\DTMukrainianmonthname{##2}}%
+ \DTMifbool{ukrainian}{showyear}%
+ {%
+ \DTMukrainianmonthyearsep
+ \DTMukrainianyear{##1}%
+ }%
+ {}%
+ \else
+ \DTMifbool{ukrainian}{showdayofmonth}
+ {%
+ \DTMukrainianordinal{##3}%
+ \DTMukrainiandaymonthsep
+ \DTMifbool{ukrainian}{abbr}%
+ {\DTMukrainianshortMonthname{##2}}%
+ {\DTMukrainianMonthname{##2}}%
+ }%
+ {%
+ \DTMifbool{ukrainian}{abbr}%
+ {\DTMukrainianshortMonthname{##2}}%
+ {\DTMukrainianMonthname{##2}}%
+ }%
+ \DTMifbool{ukrainian}{showyear}%
+ {%
+ \DTMukrainianmonthyearsep
+ \DTMukrainianyear{##1}%
+ }%
+ {}%
+ \fi
+ \else
+ \DTMifbool{ukrainian}{showdayofmonth}
+ {%
+ \DTMukrainianordinal{##3}%
+ \DTMukrainiandaymonthsep
+ \DTMifbool{ukrainian}{abbr}%
+ {\DTMukrainianshortMonthname{##2}}%
+ {\DTMukrainianMonthname{##2}}%
+ }%
+ {%
+ \DTMifbool{ukrainian}{abbr}%
+ {\DTMukrainianshortMonthname{##2}}%
+ {\DTMukrainianMonthname{##2}}%
+ }%
+ \DTMifbool{ukrainian}{showyear}%
+ {%
+ \DTMukrainianmonthyearsep
+ \DTMukrainianyear{##1}%
+ }%
+ {}%
+ \fi
+ }%
+ }%
+ {% time style (ignores seconds)
+ \renewcommand*\DTMdisplaytime[3]{%
+ \number##1
+ \DTMukrainiantimesep\DTMtwodigits{##2}%
+ }%
+ }%
+ {% zone style
+ \DTMresetzones
+ \DTMukrainianzonemaps
+ \renewcommand*{\DTMdisplayzone}[2]{%
+ \DTMifbool{ukrainian}{mapzone}%
+ {\DTMusezonemapordefault{##1}{##2}}%
+ {%
+ \ifnum##1<0\else+\fi\DTMtwodigits{##1}%
+ \ifDTMshowzoneminutes\DTMukrainiantimesep\DTMtwodigits{##2}\fi
+ }%
+ }%
+ }%
+ {% full style
+ \renewcommand*{\DTMdisplay}[9]{%
+ \ifDTMshowdate
+ \DTMdisplaydate{##1}{##2}{##3}{##4}%
+ \DTMukrainiandatetimesep
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \DTMukrainiantimezonesep
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+ \renewcommand*{\DTMDisplay}[9]{%
+ \ifDTMshowdate
+ \DTMDisplaydate{##1}{##2}{##3}{##4}%
+ \DTMukrainiandatetimesep
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \DTMukrainiantimezonesep
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+ }%
+% \end{macrocode}
+%
+% Define numeric style.
+% \begin{macrocode}
+\DTMnewstyle
+ {ukrainian-numeric}% label
+ {% date style
+ \renewcommand*\DTMdisplaydate[4]{%
+ \DTMifbool{ukrainian}{showdayofmonth}%
+ {%
+ \number##3 % space intended
+ \DTMukrainiandatesep
+ }%
+ {}%
+ \number##2 % space intended
+ \DTMifbool{ukrainian}{showyear}%
+ {%
+ \DTMukrainiandatesep
+ \number##1 % space intended
+ }%
+ {}%
+ }%
+ \renewcommand*{\DTMDisplaydate}[4]{\DTMdisplaydate{##1}{##2}{##3}{##4}}%
+ }%
+ {% time style
+ \renewcommand*\DTMdisplaytime[3]{%
+ \number##1
+ \DTMukrainiantimesep\DTMtwodigits{##2}%
+ \ifDTMshowseconds\DTMukrainiantimesep\DTMtwodigits{##3}\fi
+ }%
+ }%
+ {% zone style
+ \DTMresetzones
+ \DTMukrainianzonemaps
+ \renewcommand*{\DTMdisplayzone}[2]{%
+ \DTMifbool{ukrainian}{mapzone}%
+ {\DTMusezonemapordefault{##1}{##2}}%
+ {%
+ \ifnum##1<0\else+\fi\DTMtwodigits{##1}%
+ \ifDTMshowzoneminutes\DTMukrainiantimesep\DTMtwodigits{##2}\fi
+ }%
+ }%
+ }%
+ {% full style
+ \renewcommand*{\DTMdisplay}[9]{%
+ \ifDTMshowdate
+ \DTMdisplaydate{##1}{##2}{##3}{##4}%
+ \DTMukrainiandatetimesep
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \DTMukrainiantimezonesep
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+ \renewcommand*{\DTMDisplay}{\DTMdisplay}%
+ }
+% \end{macrocode}
+%
+%\begin{macro}{\DTMukrainianzonemaps}
+% The time zone mappings are set through this command, which can be
+% redefined if extra mappings are required or mappings need to be
+% removed. These may need translating (in which case the definitions
+% might need to be moved to the \texttt{utf8} and \texttt{ascii} ldf
+% files).
+% \begin{macrocode}
+\newcommand*{\DTMukrainianzonemaps}{%
+ \DTMdefzonemap{02}{00}{EET}% Š”хіŠ“Š½Š¾Ń”Š²Ń€Š¾ŠæŠµŠ¹ŃŃŒŠŗŠøŠ¹ чŠ°Ń
+ \DTMdefzonemap{03}{00}{EEST}% Š”хіŠ“Š½Š¾Ń”Š²Ń€Š¾ŠæŠµŠ¹ŃŃŒŠŗŠøŠ¹ Š»Ń–Ń‚Š½Ń–Š¹ чŠ°Ń
+}
+% \end{macrocode}
+%\end{macro}
+
+% Switch style according to the \opt{useregional} setting.
+% \begin{macrocode}
+\DTMifcaseregional
+{}% do nothing
+{\DTMsetstyle{ukrainian}}%
+{\DTMsetstyle{ukrainian-numeric}}%
+% \end{macrocode}
+%
+% Redefine \cs{dateukrainian} (or \cs{date}\meta{dialect}) to prevent
+% \sty{babel} from resetting \cs{today}. (For this to work,
+% \sty{babel} must already have been loaded if it's required.)
+% \begin{macrocode}
+\ifcsundef{date\CurrentTrackedDialect}
+{%
+ \ifundef\dateukrainian
+ {% do nothing
+ }%
+ {%
+ \def\dateukrainian{%
+ \DTMifcaseregional
+ {}% do nothing
+ {\DTMsetstyle{ukrainian}}%
+ {\DTMsetstyle{ukrainian-numeric}}%
+ }%
+ }%
+}%
+{%
+ \csdef{date\CurrentTrackedDialect}{%
+ \DTMifcaseregional
+ {}% do nothing
+ {\DTMsetstyle{ukrainian}}%
+ {\DTMsetstyle{ukrainian-numeric}}%
+ }%
+}%
+% \end{macrocode}
+%\iffalse
+% \begin{macrocode}
+%</datetime2-ukrainian.ldf>
+% \end{macrocode}
+%\fi
+%
+% \CheckSum{1642}
+%\Finale
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-ukrainian/datetime2-ukrainian.ins b/macros/latex/contrib/datetime2-contrib/datetime2-ukrainian/datetime2-ukrainian.ins
new file mode 100644
index 0000000000..762dcbc48c
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-ukrainian/datetime2-ukrainian.ins
@@ -0,0 +1,117 @@
+%%
+%% This is file `datetime2-ukrainian.ins',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% datetime2-ukrainian.dtx (with options: `install')
+%% ----------------------------------------------------------------
+%%
+%% This material is subject to the LaTeX Project Public License.
+%% See http://www.ctan.org/license/lppl1.3 for the details of that
+%% license.
+%%
+%% ----------------------------------------------------------------
+%%
+\input docstrip.tex
+\keepsilent
+\askforoverwritefalse
+\preamble
+----------------------------------------------------------------
+
+This material is subject to the LaTeX Project Public License.
+See http://www.ctan.org/license/lppl1.3 for the details of that
+license.
+
+----------------------------------------------------------------
+
+\endpreamble
+\postamble
+
+----------------------------------------------------------------
+ datetime2-ukrainian.dtx
+ Copyright 2015 Nicola Talbot
+ 2017 Sergiy M. Ponomarenko
+
+ This work may be distributed and/or modified under the
+ conditions of the LaTeX Project Public License, either version 1.3
+ of this license of (at your option) any later version.
+ The latest version of this license is in
+ http://www.latex-project.org/lppl.txt
+ and version 1.3 or later is part of all distributions of LaTeX
+ version 2005/12/01 or later.
+
+ This work has the LPPL maintenance status `inactive'.
+
+ This work consists of the files datetime2-ukrainian.dtx
+ datetime2-ukrainian.ins
+ datetime2-ukrainian-utf8.ldf,
+ datetime2-ukrainian-ascii.ldf
+ datetime2-ukrainian.ldf.
+----------------------------------------------------------------
+
+\endpostamble
+
+\usedir{tex/latex/datetime2-ukrainian}
+\askforoverwritefalse
+
+\generate
+{%
+ \file
+ {datetime2-ukrainian-utf8.ldf}%
+ {%
+ \usepreamble\defaultpreamble
+ \usepostamble\defaultpostamble
+ \from{datetime2-ukrainian.dtx}{datetime2-ukrainian-utf8.ldf,package}%
+ }%
+}
+
+\generate
+{%
+ \file
+ {datetime2-ukrainian-ascii.ldf}%
+ {%
+ \usepreamble\defaultpreamble
+ \usepostamble\defaultpostamble
+ \from{datetime2-ukrainian.dtx}{datetime2-ukrainian-ascii.ldf,package}%
+ }%
+}
+
+\generate
+{%
+ \file
+ {datetime2-ukrainian.ldf}%
+ {%
+ \usepreamble\defaultpreamble
+ \usepostamble\defaultpostamble
+ \from{datetime2-ukrainian.dtx}{datetime2-ukrainian.ldf,package}%
+ }%
+}
+\endbatchfile
+
+%%
+%% ----------------------------------------------------------------
+%% datetime2-ukrainian.dtx
+%% Copyright 2015 Nicola Talbot
+%% 2017 Sergiy M. Ponomarenko
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3
+%% of this license of (at your option) any later version.
+%% The latest version of this license is in
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of LaTeX
+%% version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status `inactive'.
+%%
+%%
+%% This work consists of the files datetime2-ukrainian.dtx
+%% datetime2-ukrainian.ins
+%% datetime2-ukrainian-utf8.ldf,
+%% datetime2-ukrainian-ascii.ldf
+%% datetime2-ukrainian.ldf.
+%% ----------------------------------------------------------------
+%%
+%%
+%% End of file `datetime2-ukrainian.ins'.
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-ukrainian/datetime2-ukrainian.pdf b/macros/latex/contrib/datetime2-contrib/datetime2-ukrainian/datetime2-ukrainian.pdf
new file mode 100644
index 0000000000..5638c90e83
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-ukrainian/datetime2-ukrainian.pdf
Binary files differ
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-usorbian/README b/macros/latex/contrib/datetime2-contrib/datetime2-usorbian/README
new file mode 100644
index 0000000000..a85cf8b7ab
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-usorbian/README
@@ -0,0 +1,57 @@
+Upper Sorbian Language Module for datetime2 Package
+
+Author: Nicola L. C. Talbot (inactive)
+
+Licence: LPPL
+
+Required Packages: datetime2, tracklang
+
+This module is unmaintained. If you want to volunteer to take over
+the maintenance contact me at www.dickimaw-books.com/contact.html
+
+Example usage:
+
+\documentclass{article}
+\usepackage[usorbian]{datetime2}
+\begin{document}
+\today
+\end{document}
+
+\documentclass[usorbian]{article}
+\usepackage{babel}
+\usepackage[useregional]{datetime2}
+\begin{document}
+\today
+\end{document}
+
+\documentclass{article}
+\usepackage{polyglossia}
+\setmainlanguage{usorbian}
+\usepackage[usorbian]{datetime2}
+\begin{document}
+\today
+\end{document}
+
+INSTALLATION
+============
+
+xelatex datetime2-usorbian.ins
+
+Move all *.ldf files to
+TEXMF/tex/latex/datetime2-contrib/datetime2-usorbian/
+
+Documentation:
+
+xelatex datetime2-usorbian.dtx
+makeindex -s gind.ist datetime2-usorbian.idx
+makeindex -s gglo.ist -o datetime2-usorbian.gls datetime2-usorbian.glo
+xelatex datetime2-usorbian.dtx
+xelatex datetime2-usorbian.dtx
+
+Move datetime2-usorbian.pdf and README to
+TEXMF/doc/latex/datetime2-contrib/datetime2-usorbian/
+
+This material is subject to the LaTeX Project Public License.
+See http://www.ctan.org/license/lppl1.3 for the details of that
+license.
+
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-usorbian/datetime2-usorbian.dtx b/macros/latex/contrib/datetime2-contrib/datetime2-usorbian/datetime2-usorbian.dtx
new file mode 100644
index 0000000000..8f31498f59
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-usorbian/datetime2-usorbian.dtx
@@ -0,0 +1,792 @@
+%\iffalse
+%<*package>
+%% \CharacterTable
+%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+%% Digits \0\1\2\3\4\5\6\7\8\9
+%% Exclamation \! Double quote \" Hash (number) \#
+%% Dollar \$ Percent \% Ampersand \&
+%% Acute accent \' Left paren \( Right paren \)
+%% Asterisk \* Plus \+ Comma \,
+%% Minus \- Point \. Solidus \/
+%% Colon \: Semicolon \; Less than \<
+%% Equals \= Greater than \> Question mark \?
+%% Commercial at \@ Left bracket \[ Backslash \\
+%% Right bracket \] Circumflex \^ Underscore \_
+%% Grave accent \` Left brace \{ Vertical bar \|
+%% Right brace \} Tilde \~}
+%</package>
+%\fi
+% \iffalse
+% Doc-Source file to use with LaTeX2e
+% Copyright (C) 2015 Nicola Talbot, all rights reserved.
+% (New maintainer add relevant lines here.)
+% \fi
+% \iffalse
+%<*driver>
+\documentclass{ltxdoc}
+
+\usepackage{alltt}
+\usepackage{graphicx}
+\usepackage{fontspec}
+\usepackage[colorlinks,
+ bookmarks,
+ hyperindex=false,
+ pdfauthor={Nicola L.C. Talbot},
+ pdftitle={datetime2.sty Upper Sorbian Module}]{hyperref}
+
+\setmainfont{Liberation Serif}
+\setmonofont{Liberation Mono}
+
+\CheckSum{395}
+
+\renewcommand*{\usage}[1]{\hyperpage{#1}}
+\renewcommand*{\main}[1]{\hyperpage{#1}}
+\IndexPrologue{\section*{\indexname}\markboth{\indexname}{\indexname}}
+\setcounter{IndexColumns}{2}
+
+\newcommand*{\sty}[1]{\textsf{#1}}
+\newcommand*{\opt}[1]{\texttt{#1}\index{#1=\texttt{#1}|main}}
+
+\RecordChanges
+\PageIndex
+\CodelineNumbered
+
+\begin{document}
+\DocInput{datetime2-usorbian.dtx}
+\end{document}
+%</driver>
+%\fi
+%
+%\MakeShortVerb{"}
+%
+%\title{Upper Sorbian Module for datetime2 Package}
+%\author{Nicola L. C. Talbot (inactive)}
+%\date{2015-04-01 (v1.0)}
+%\maketitle
+%
+%This module is currently unmaintained and may be subject to change.
+%If you want to volunteer to take over maintanance, contact me at
+%\url{http://www.dickimaw-books.com/contact.html}
+%
+%\begin{abstract}
+%This is the Upper Sorbian language module for the \sty{datetime2}
+%package. If you want to use the settings in this module you must
+%install it in addition to installing \sty{datetime2}. If you use
+%\sty{babel} or \sty{polyglossia}, you will need this module to
+%prevent them from redefining \cs{today}. The \sty{datetime2}
+% \opt{useregional} setting must be set to "text" or "numeric"
+% for the language styles to be set.
+% Alternatively, you can set the style in the document using
+% \cs{DTMsetstyle}, but this may be changed by \cs{date}\meta{language}
+% depending on the value of the \opt{useregional} setting.
+%\end{abstract}
+%
+%I've copied the date style from \texttt{babel-usorbian}'s \cs{today}.
+%
+%I don't know if these settings are correct as I can't speak Upper Sorbian.
+%In particular, I don't know if the "usorbian" time style is
+%correct. Currently this just uses the "default" time style. Please
+%be aware that this may change. Whoever takes over maintanance
+%of this module may can change it as appropriate.
+%
+%The new maintainer should add the line:
+%\begin{verbatim}
+% The Current Maintainer of this work is Name.
+%\end{verbatim}
+%to the preamble part in \texttt{datetime2-usorbian.ins} where Name
+%is the name of the maintainer(s) and replace
+%the `inactive' status to `maintained'.
+%
+%Currently there is only a regionless style.
+%
+%\StopEventually{%
+%\clearpage
+%\phantomsection
+%\addcontentsline{toc}{section}{Change History}%
+%\PrintChanges
+%\addcontentsline{toc}{section}{\indexname}%
+%\PrintIndex}
+%\section{The Code}
+%\iffalse
+% \begin{macrocode}
+%<*datetime2-usorbian-utf8.ldf>
+% \end{macrocode}
+%\fi
+%\subsection{UTF-8}
+%This file contains the settings that use UTF-8 characters. This
+%file is loaded if XeLaTeX or LuaLaTeX are used. Please make sure
+%your text editor is set to UTF-8 if you want to view this code.
+%\changes{1.0}{2015-04-01}{Initial release}
+% Identify module
+% \begin{macrocode}
+\ProvidesDateTimeModule{usorbian-utf8}[2015/04/01 v1.0]
+% \end{macrocode}
+%\begin{macro}{\DTMusorbianordinal}
+% \begin{macrocode}
+\newcommand*{\DTMusorbianordinal}[1]{%
+ \number#1.%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%
+%\begin{macro}{\DTMusorbiannewmonthname}
+% Upper Sorbian month names.
+% \begin{macrocode}
+\newcommand*{\DTMusorbiannewmonthname}[1]{%
+ \ifcase#1
+ \or
+ januara%
+ \or
+ februara%
+ \or
+ měrca%
+ \or
+ apryla%
+ \or
+ meje%
+ \or
+ junija%
+ \or
+ julija%
+ \or
+ awgusta%
+ \or
+ septembra%
+ \or
+ oktobra%
+ \or
+ nowembra%
+ \or
+ decembra%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMusorbiannewMonthname}
+% As above but capitalize.
+% \begin{macrocode}
+\newcommand*{\DTMusorbiannewMonthname}[1]{%
+ \ifcase#1
+ \or
+ Januara%
+ \or
+ Februara%
+ \or
+ Měrca%
+ \or
+ Apryla%
+ \or
+ Meje%
+ \or
+ Junija%
+ \or
+ Julija%
+ \or
+ Awgusta%
+ \or
+ Septembra%
+ \or
+ Oktobra%
+ \or
+ Nowembra%
+ \or
+ Decembra%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMusorbianoldmonthname}
+% Upper Sorbian (old) month names.
+% \begin{macrocode}
+\newcommand*{\DTMusorbianoldmonthname}[1]{%
+ \ifcase#1
+ \or
+ wulkeho rĆ³Å¾ka%
+ \or
+ małeho rĆ³Å¾ka%
+ \or
+ nalětnika%
+ \or
+ jutrownika%
+ \or
+ rĆ³Å¾ownika%
+ \or
+ smažnika%
+ \or
+ pražnika%
+ \or
+ žnjenca%
+ \or
+ požnjenca%
+ \or
+ winowca%
+ \or
+ nazymnika%
+ \or
+ hodownika%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMusorbianoldMonthname}
+% As above but capitalize.
+% \begin{macrocode}
+\newcommand*{\DTMusorbianoldMonthname}[1]{%
+ \ifcase#1
+ \or
+ Wulkeho rĆ³Å¾ka%
+ \or
+ Małeho rĆ³Å¾ka%
+ \or
+ Nalětnika%
+ \or
+ Jutrownika%
+ \or
+ RĆ³Å¾ownika%
+ \or
+ Smažnika%
+ \or
+ Pražnika%
+ \or
+ Žnjenca%
+ \or
+ Požnjenca%
+ \or
+ Winowca%
+ \or
+ Nazymnika%
+ \or
+ Hodownika%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%If abbreviated dates are supported, short month names should be
+%likewise provided.
+%
+%\iffalse
+% \begin{macrocode}
+%</datetime2-usorbian-utf8.ldf>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*datetime2-usorbian-ascii.ldf>
+% \end{macrocode}
+%\fi
+%\subsection{ASCII}
+%This file contains the settings that use \LaTeX\ commands for
+%non-ASCII characters. This should be input if neither XeLaTeX nor
+%LuaLaTeX are used. Even if the user has loaded \sty{inputenc} with
+%"utf8", this file should still be used not the
+%\texttt{datetime2-usorbian-utf8.ldf} file as the non-ASCII
+%characters are made active in that situation and would need
+%protecting against expansion.
+%\changes{1.0}{2015-04-01}{Initial release}
+% Identify module
+% \begin{macrocode}
+\ProvidesDateTimeModule{usorbian-ascii}[2015/04/01 v1.0]
+% \end{macrocode}
+%
+%If abbreviated dates are supported, short month names should be
+%likewise provided.
+%\begin{macro}{\DTMusorbianordinal}
+% \begin{macrocode}
+\newcommand*{\DTMusorbianordinal}[1]{%
+ \number#1.%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMusorbiannewmonthname}
+% Upper Sorbian month names.
+% \begin{macrocode}
+\newcommand*{\DTMusorbiannewmonthname}[1]{%
+ \ifcase#1
+ \or
+ januara%
+ \or
+ februara%
+ \or
+ m\protect\v erca%
+ \or
+ apryla%
+ \or
+ meje%
+ \or
+ junija%
+ \or
+ julija%
+ \or
+ awgusta%
+ \or
+ septembra%
+ \or
+ oktobra%
+ \or
+ nowembra%
+ \or
+ decembra%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMusorbiannewMonthname}
+% As above but capitalize.
+% \begin{macrocode}
+\newcommand*{\DTMusorbiannewMonthname}[1]{%
+ \ifcase#1
+ \or
+ Januara%
+ \or
+ Februara%
+ \or
+ M\protect\v erca%
+ \or
+ Apryla%
+ \or
+ Meje%
+ \or
+ Junija%
+ \or
+ Julija%
+ \or
+ Awgusta%
+ \or
+ Septembra%
+ \or
+ Oktobra%
+ \or
+ Nowembra%
+ \or
+ Decembra%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMusorbianoldmonthname}
+% Upper Sorbian (old) month names.
+% \begin{macrocode}
+\newcommand*{\DTMusorbianoldmonthname}[1]{%
+ \ifcase#1
+ \or
+ wulkeho r\protect\'o\protect\v zka%
+ \or
+ ma\protect\l eho r\protect\'o\protect\v zka%
+ \or
+ nal\protect\v etnika%
+ \or
+ jutrownika%
+ \or
+ r\protect\'o\protect\v zownika%
+ \or
+ sma\protect\v znika%
+ \or
+ pra\protect\v znika%
+ \or
+ \protect\v znjenca%
+ \or
+ po\protect\v znjenca%
+ \or
+ winowca%
+ \or
+ nazymnika%
+ \or
+ hodownika%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMusorbianoldMonthname}
+% As above but capitalize.
+% \begin{macrocode}
+\newcommand*{\DTMusorbianoldMonthname}[1]{%
+ \ifcase#1
+ \or
+ Wulkeho r\protect\'o\protect\v zka%
+ \or
+ Ma\protect\l eho r\protect\'o\protect\v zka%
+ \or
+ Nal\protect\v etnika%
+ \or
+ Jutrownika%
+ \or
+ R\protect\'o\protect\v zownika%
+ \or
+ Sma\protect\v znika%
+ \or
+ Pra\protect\v znika%
+ \or
+ \protect\v Znjenca%
+ \or
+ Po\protect\v znjenca%
+ \or
+ Winowca%
+ \or
+ Nazymnika%
+ \or
+ Hodownika%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\iffalse
+% \begin{macrocode}
+%</datetime2-usorbian-ascii.ldf>
+% \end{macrocode}
+%\fi
+%
+%\subsection{Main Upper Sorbian Module (\texttt{datetime2-usorbian.ldf})}
+%\changes{1.0}{2015-04-01}{Initial release}
+%
+%\iffalse
+% \begin{macrocode}
+%<*datetime2-usorbian.ldf>
+% \end{macrocode}
+%\fi
+%
+% Identify Module
+% \begin{macrocode}
+\ProvidesDateTimeModule{usorbian}[2015/04/01 v1.0]
+% \end{macrocode}
+% Need to find out if XeTeX or LuaTeX are being used.
+% \begin{macrocode}
+\RequirePackage{ifxetex,ifluatex}
+% \end{macrocode}
+% XeTeX and LuaTeX natively support UTF-8, so load
+% \texttt{usorbian-utf8} if either of those engines are used
+% otherwise load \texttt{usorbian-ascii}.
+% \begin{macrocode}
+\ifxetex
+ \RequireDateTimeModule{usorbian-utf8}
+\else
+ \ifluatex
+ \RequireDateTimeModule{usorbian-utf8}
+ \else
+ \RequireDateTimeModule{usorbian-ascii}
+ \fi
+\fi
+% \end{macrocode}
+%
+% Define the \texttt{usorbian} style.
+% The time style is the same as the "default" style
+% provided by \sty{datetime2}. This may need correcting. For
+% example, if a 12 hour style similar to the "englishampm" (from the
+% "english-base" module) is required.
+%
+% Allow the user a way of configuring the "usorbian" and
+% "usorbian-numeric" styles. This doesn't use the package wide
+% separators such as
+% \cs{dtm@datetimesep} in case other date formats are also required.
+%\begin{macro}{\DTMusorbiandaymonthsep}
+% The separator between the day and month for the text format.
+% \begin{macrocode}
+\newcommand*{\DTMusorbiandaymonthsep}{%
+ \DTMtexorpdfstring{\protect~}{\space}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMusorbianmonthyearsep}
+% The separator between the month and year for the text format.
+% \begin{macrocode}
+\newcommand*{\DTMusorbianmonthyearsep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMusorbiandatetimesep}
+% The separator between the date and time blocks in the full format
+% (either text or numeric).
+% \begin{macrocode}
+\newcommand*{\DTMusorbiandatetimesep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMusorbiantimezonesep}
+% The separator between the time and zone blocks in the full format
+% (either text or numeric).
+% \begin{macrocode}
+\newcommand*{\DTMusorbiantimezonesep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMusorbiandatesep}
+% The separator for the numeric date format.
+% \begin{macrocode}
+\newcommand*{\DTMusorbiandatesep}{/}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMusorbiantimesep}
+% The separator for the numeric time format.
+% \begin{macrocode}
+\newcommand*{\DTMusorbiantimesep}{:}
+% \end{macrocode}
+%\end{macro}
+%
+%Provide keys that can be used in \cs{DTMlangsetup} to set these
+%separators.
+% \begin{macrocode}
+\DTMdefkey{usorbian}{daymonthsep}{\renewcommand*{\DTMusorbiandaymonthsep}{#1}}
+\DTMdefkey{usorbian}{monthyearsep}{\renewcommand*{\DTMusorbianmonthyearsep}{#1}}
+\DTMdefkey{usorbian}{datetimesep}{\renewcommand*{\DTMusorbiandatetimesep}{#1}}
+\DTMdefkey{usorbian}{timezonesep}{\renewcommand*{\DTMusorbiantimezonesep}{#1}}
+\DTMdefkey{usorbian}{datesep}{\renewcommand*{\DTMusorbiandatesep}{#1}}
+\DTMdefkey{usorbian}{timesep}{\renewcommand*{\DTMusorbiantimesep}{#1}}
+% \end{macrocode}
+%
+%\begin{macro}{\DTMusorbianmonthname}
+% Provide a way to switch between old and new month names
+% \begin{macrocode}
+\newcommand*\DTMusorbianmonthname{\DTMusorbiannewmonthname}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\DTMusorbianMonthname}
+% Provide a way to switch between old and new month names
+% \begin{macrocode}
+\newcommand*\DTMusorbianMonthname{\DTMusorbiannewMonthname}
+% \end{macrocode}
+%\end{macro}
+% Define a key to easily switch:
+% \begin{macrocode}
+\DTMdefchoicekey{usorbian}{style}[\val\nr]{old,new}{%
+ \ifcase\nr\relax
+ \renewcommand*\DTMusorbianmonthname{\DTMusorbianoldmonthname}%
+ \renewcommand*\DTMusorbianMonthname{\DTMusorbianoldMonthname}%
+ \or
+ \renewcommand*\DTMusorbianmonthname{\DTMusorbiannewmonthname}%
+ \renewcommand*\DTMusorbianMonthname{\DTMusorbiannewMonthname}%
+ \fi
+}
+% \end{macrocode}
+%
+% TODO: provide a boolean key to switch between full and abbreviated
+% formats if appropriate. (I don't know how the date should be
+% abbreviated.)
+%
+% Define a boolean key that determines if the time zone mappings
+% should be used.
+% \begin{macrocode}
+\DTMdefboolkey{usorbian}{mapzone}[true]{}
+% \end{macrocode}
+% The default is to use mappings.
+% \begin{macrocode}
+\DTMsetbool{usorbian}{mapzone}{true}
+% \end{macrocode}
+%
+% Define a boolean key that determines if the day of month should be
+% displayed.
+% \begin{macrocode}
+\DTMdefboolkey{usorbian}{showdayofmonth}[true]{}
+% \end{macrocode}
+% The default is to show the day of month.
+% \begin{macrocode}
+\DTMsetbool{usorbian}{showdayofmonth}{true}
+% \end{macrocode}
+%
+% Define a boolean key that determines if the year should be
+% displayed.
+% \begin{macrocode}
+\DTMdefboolkey{usorbian}{showyear}[true]{}
+% \end{macrocode}
+% The default is to show the year.
+% \begin{macrocode}
+\DTMsetbool{usorbian}{showyear}{true}
+% \end{macrocode}
+%
+% Define the "usorbian" style. (TODO: implement day of week?)
+% \begin{macrocode}
+\DTMnewstyle
+ {usorbian}% label
+ {% date style
+ \renewcommand*\DTMdisplaydate[4]{%
+ \DTMifbool{usorbian}{showdayofmonth}
+ {\DTMusorbianordinal{##3}\DTMusorbiandaymonthsep}%
+ {}%
+ \DTMusorbianmonthname{##2}%
+ \DTMifbool{usorbian}{showyear}%
+ {%
+ \DTMusorbianmonthyearsep
+ \number##1
+ }%
+ {}%
+ }%
+ \renewcommand*\DTMDisplaydate[4]{%
+ \DTMifbool{usorbian}{showdayofmonth}
+ {%
+ \DTMusorbianordinal{##3}\DTMusorbiandaymonthsep
+ \DTMusorbianmonthname{##2}%
+ }%
+ {%
+ \DTMusorbianMonthname{##2}%
+ }%
+ \DTMifbool{usorbian}{showyear}%
+ {%
+ \DTMusorbianmonthyearsep
+ \number##1
+ }%
+ {}%
+ }%
+ }%
+ {% time style (use default)
+ \DTMsettimestyle{default}%
+ }%
+ {% zone style
+ \DTMresetzones
+ \DTMusorbianzonemaps
+ \renewcommand*{\DTMdisplayzone}[2]{%
+ \DTMifbool{usorbian}{mapzone}%
+ {\DTMusezonemapordefault{##1}{##2}}%
+ {%
+ \ifnum##1<0\else+\fi\DTMtwodigits{##1}%
+ \ifDTMshowzoneminutes\DTMusorbiantimesep\DTMtwodigits{##2}\fi
+ }%
+ }%
+ }%
+ {% full style
+ \renewcommand*{\DTMdisplay}[9]{%
+ \ifDTMshowdate
+ \DTMdisplaydate{##1}{##2}{##3}{##4}%
+ \DTMusorbiandatetimesep
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \DTMusorbiantimezonesep
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+ \renewcommand*{\DTMDisplay}[9]{%
+ \ifDTMshowdate
+ \DTMDisplaydate{##1}{##2}{##3}{##4}%
+ \DTMusorbiandatetimesep
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \DTMusorbiantimezonesep
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+ }%
+% \end{macrocode}
+%
+% Define numeric style.
+% \begin{macrocode}
+\DTMnewstyle
+ {usorbian-numeric}% label
+ {% date style
+ \renewcommand*\DTMdisplaydate[4]{%
+ \DTMifbool{usorbian}{showdayofmonth}%
+ {%
+ \number##3 % space intended
+ \DTMusorbiandatesep
+ }%
+ {}%
+ \number##2 % space intended
+ \DTMifbool{usorbian}{showyear}%
+ {%
+ \DTMusorbiandatesep
+ \number##1 % space intended
+ }%
+ {}%
+ }%
+ \renewcommand*{\DTMDisplaydate}{\DTMdisplaydate}%
+ }%
+ {% time style
+ \renewcommand*\DTMdisplaytime[3]{%
+ \number##1
+ \DTMusorbiantimesep\DTMtwodigits{##2}%
+ \ifDTMshowseconds\DTMusorbiantimesep\DTMtwodigits{##3}\fi
+ }%
+ }%
+ {% zone style
+ \DTMresetzones
+ \DTMusorbianzonemaps
+ \renewcommand*{\DTMdisplayzone}[2]{%
+ \DTMifbool{usorbian}{mapzone}%
+ {\DTMusezonemapordefault{##1}{##2}}%
+ {%
+ \ifnum##1<0\else+\fi\DTMtwodigits{##1}%
+ \ifDTMshowzoneminutes\DTMusorbiantimesep\DTMtwodigits{##2}\fi
+ }%
+ }%
+ }%
+ {% full style
+ \renewcommand*{\DTMdisplay}[9]{%
+ \ifDTMshowdate
+ \DTMdisplaydate{##1}{##2}{##3}{##4}%
+ \DTMusorbiandatetimesep
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \DTMusorbiantimezonesep
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+ \renewcommand*{\DTMDisplay}{\DTMdisplay}%
+ }
+% \end{macrocode}
+%
+%\begin{macro}{\DTMusorbianzonemaps}
+% The time zone mappings are set through this command, which can be
+% redefined if extra mappings are required or mappings need to be
+% removed.
+% \begin{macrocode}
+\newcommand*{\DTMusorbianzonemaps}{%
+ \DTMdefzonemap{01}{00}{CET}%
+ \DTMdefzonemap{02}{00}{CEST}%
+}
+% \end{macrocode}
+%\end{macro}
+
+% Switch style according to the \opt{useregional} setting.
+% \begin{macrocode}
+\DTMifcaseregional
+{}% do nothing
+{\DTMsetstyle{usorbian}}
+{\DTMsetstyle{usorbian-numeric}}
+% \end{macrocode}
+%
+% Redefine \cs{dateusorbian} (or \cs{date}\meta{dialect}) to prevent
+% \sty{babel} from resetting \cs{today}. (For this to work,
+% \sty{babel} must already have been loaded if it's required.)
+% \begin{macrocode}
+\ifcsundef{date\CurrentTrackedDialect}
+{%
+ \ifundef\dateusorbian
+ {% do nothing
+ }%
+ {%
+ \def\dateusorbian{%
+ \DTMifcaseregional
+ {}% do nothing
+ {\DTMsetstyle{usorbian}}%
+ {\DTMsetstyle{usorbian-numeric}}%
+ }%
+ }%
+}%
+{%
+ \csdef{date\CurrentTrackedDialect}{%
+ \DTMifcaseregional
+ {}% do nothing
+ {\DTMsetstyle{usorbian}}%
+ {\DTMsetstyle{usorbian-numeric}}
+ }%
+}%
+% \end{macrocode}
+%\iffalse
+% \begin{macrocode}
+%</datetime2-usorbian.ldf>
+% \end{macrocode}
+%\fi
+%\Finale
+\endinput
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-usorbian/datetime2-usorbian.ins b/macros/latex/contrib/datetime2-contrib/datetime2-usorbian/datetime2-usorbian.ins
new file mode 100644
index 0000000000..1f34681fd9
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-usorbian/datetime2-usorbian.ins
@@ -0,0 +1,61 @@
+\input docstrip
+
+\preamble
+
+ datetime2-usorbian.dtx
+ Copyright 2015 Nicola Talbot
+
+ This work may be distributed and/or modified under the
+ conditions of the LaTeX Project Public License, either version 1.3
+ of this license of (at your option) any later version.
+ The latest version of this license is in
+ http://www.latex-project.org/lppl.txt
+ and version 1.3 or later is part of all distributions of LaTeX
+ version 2005/12/01 or later.
+
+ This work has the LPPL maintenance status `inactive'.
+
+ This work consists of the files datetime2-usorbian.dtx and
+ datetime2-usorbian.ins and the derived files
+ datetime2-usorbian-utf8.ldf, datetime2-usorbian-ascii.ldf and
+ datetime2-usorbian.ldf.
+
+\endpreamble
+
+\askforoverwritefalse
+
+\generate
+{%
+ \file
+ {datetime2-usorbian-utf8.ldf}%
+ {%
+ \usepreamble\defaultpreamble
+ \usepostamble\defaultpostamble
+ \from{datetime2-usorbian.dtx}{datetime2-usorbian-utf8.ldf,package}%
+ }%
+}
+
+\generate
+{%
+ \file
+ {datetime2-usorbian-ascii.ldf}%
+ {%
+ \usepreamble\defaultpreamble
+ \usepostamble\defaultpostamble
+ \from{datetime2-usorbian.dtx}{datetime2-usorbian-ascii.ldf,package}%
+ }%
+}
+
+\generate
+{%
+ \file
+ {datetime2-usorbian.ldf}%
+ {%
+ \usepreamble\defaultpreamble
+ \usepostamble\defaultpostamble
+ \from{datetime2-usorbian.dtx}{datetime2-usorbian.ldf,package}%
+ }%
+}
+
+\endbatchfile
+
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-usorbian/datetime2-usorbian.pdf b/macros/latex/contrib/datetime2-contrib/datetime2-usorbian/datetime2-usorbian.pdf
new file mode 100644
index 0000000000..01f4c3ce00
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-usorbian/datetime2-usorbian.pdf
Binary files differ
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-welsh/README b/macros/latex/contrib/datetime2-contrib/datetime2-welsh/README
new file mode 100644
index 0000000000..cc67e70f23
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-welsh/README
@@ -0,0 +1,57 @@
+Welsh Language Module for datetime2 Package
+
+Author: Nicola L. C. Talbot (inactive)
+
+Licence: LPPL
+
+Required Packages: datetime2, tracklang
+
+This module is unmaintained. If you want to volunteer to take over
+the maintenance contact me at www.dickimaw-books.com/contact.html
+
+Example usage:
+
+\documentclass{article}
+\usepackage[welsh]{datetime2}
+\begin{document}
+\today
+\end{document}
+
+\documentclass[welsh]{article}
+\usepackage{babel}
+\usepackage[useregional]{datetime2}
+\begin{document}
+\today
+\end{document}
+
+\documentclass{article}
+\usepackage{polyglossia}
+\setmainlanguage{welsh}
+\usepackage[welsh]{datetime2}
+\begin{document}
+\today
+\end{document}
+
+INSTALLATION
+============
+
+latex datetime2-welsh.ins
+
+Move all *.ldf files to
+TEXMF/tex/latex/datetime2-contrib/datetime2-welsh/
+
+Documentation:
+
+pdflatex datetime2-welsh.dtx
+makeindex -s gind.ist datetime2-welsh.idx
+makeindex -s gglo.ist -o datetime2-welsh.gls datetime2-welsh.glo
+pdflatex datetime2-welsh.dtx
+pdflatex datetime2-welsh.dtx
+
+Move datetime2-welsh.pdf and README to
+TEXMF/doc/latex/datetime2-contrib/datetime2-welsh/
+
+This material is subject to the LaTeX Project Public License.
+See http://www.ctan.org/license/lppl1.3 for the details of that
+license.
+
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-welsh/datetime2-welsh.dtx b/macros/latex/contrib/datetime2-contrib/datetime2-welsh/datetime2-welsh.dtx
new file mode 100644
index 0000000000..3ee74c95af
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-welsh/datetime2-welsh.dtx
@@ -0,0 +1,600 @@
+%\iffalse
+%<*package>
+%% \CharacterTable
+%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+%% Digits \0\1\2\3\4\5\6\7\8\9
+%% Exclamation \! Double quote \" Hash (number) \#
+%% Dollar \$ Percent \% Ampersand \&
+%% Acute accent \' Left paren \( Right paren \)
+%% Asterisk \* Plus \+ Comma \,
+%% Minus \- Point \. Solidus \/
+%% Colon \: Semicolon \; Less than \<
+%% Equals \= Greater than \> Question mark \?
+%% Commercial at \@ Left bracket \[ Backslash \\
+%% Right bracket \] Circumflex \^ Underscore \_
+%% Grave accent \` Left brace \{ Vertical bar \|
+%% Right brace \} Tilde \~}
+%</package>
+%\fi
+% \iffalse
+% Doc-Source file to use with LaTeX2e
+% Copyright (C) 2015 Nicola Talbot, all rights reserved.
+% (New maintainer add relevant lines here.)
+% \fi
+% \iffalse
+%<*driver>
+\documentclass{ltxdoc}
+
+\usepackage{alltt}
+\usepackage{graphicx}
+\usepackage[utf8]{inputenc}
+\usepackage[T1]{fontenc}
+\usepackage[colorlinks,
+ bookmarks,
+ hyperindex=false,
+ pdfauthor={Nicola L.C. Talbot},
+ pdftitle={datetime2.sty Welsh Module}]{hyperref}
+
+
+\CheckSum{261}
+
+\renewcommand*{\usage}[1]{\hyperpage{#1}}
+\renewcommand*{\main}[1]{\hyperpage{#1}}
+\IndexPrologue{\section*{\indexname}\markboth{\indexname}{\indexname}}
+\setcounter{IndexColumns}{2}
+
+\newcommand*{\sty}[1]{\textsf{#1}}
+\newcommand*{\opt}[1]{\texttt{#1}\index{#1=\texttt{#1}|main}}
+
+\RecordChanges
+\PageIndex
+\CodelineNumbered
+
+\begin{document}
+\DocInput{datetime2-welsh.dtx}
+\end{document}
+%</driver>
+%\fi
+%
+%\MakeShortVerb{"}
+%
+%\title{Welsh Module for datetime2 Package}
+%\author{Nicola L. C. Talbot (inactive)}
+%\date{2015-03-26 (v1.0)}
+%\maketitle
+%
+%This module is currently unmaintained and may be subject to change.
+%If you want to volunteer to take over maintanance, contact me at
+%\url{http://www.dickimaw-books.com/contact.html}
+%
+%\begin{abstract}
+%This is the Welsh language module for the \sty{datetime2}
+%package. If you want to use the settings in this module you must
+%install it in addition to installing \sty{datetime2}. If you use
+%\sty{babel} or \sty{polyglossia}, you will need this module to
+%prevent them from redefining \cs{today}. The \sty{datetime2}
+% \opt{useregional} setting must be set to "text" or "numeric"
+% for the language styles to be set.
+% Alternatively, you can set the style in the document using
+% \cs{DTMsetstyle}, but this may be changed by \cs{date}\meta{language}
+% depending on the value of the \opt{useregional} setting.
+%\end{abstract}
+%
+%I've copied the date style from \texttt{babel-welsh}'s \cs{today}.
+%
+%I don't know if these settings are correct as I can't speak Welsh.
+%In particular, I don't know if the "welsh" time style is
+%correct. Currently this just uses the "default" time style. Please
+%be aware that this may change. Whoever takes over maintanance
+%of this module may can change it as appropriate.
+%
+%The new maintainer should add the line:
+%\begin{verbatim}
+% The Current Maintainer of this work is Name.
+%\end{verbatim}
+%to the preamble part in \texttt{datetime2-welsh.ins} where Name
+%is the name of the maintainer(s) and replace
+%the `inactive' status to `maintained'.
+%
+%Currently there is only a regionless style. New maintainers may
+%want to add regional variants "cy-GB"\slash"cy-GB-numeric" and
+%"cy-AR"\slash"cy-AR-numeric" once "cy-GB" and "cy-AR" have been added
+%to \sty{tracklang}. This style currently doesn't check the
+%\opt{showdow} setting.
+%
+%\StopEventually{%
+%\clearpage
+%\phantomsection
+%\addcontentsline{toc}{section}{Change History}%
+%\PrintChanges
+%\addcontentsline{toc}{section}{\indexname}%
+%\PrintIndex}
+%\section{The Code}
+%\iffalse
+% \begin{macrocode}
+%<*datetime2-welsh-utf8.ldf>
+% \end{macrocode}
+%\fi
+%\subsection{UTF-8}
+%This file contains the settings that use UTF-8 characters. This
+%file is loaded if XeLaTeX or LuaLaTeX are used. Please make sure
+%your text editor is set to UTF-8 if you want to view this code.
+%\changes{1.0}{2015-03-26}{Initial release}
+% Identify module
+% \begin{macrocode}
+\ProvidesDateTimeModule{welsh-utf8}[2015/03/26 v1.0]
+% \end{macrocode}
+%\begin{macro}{\DTMwelshordinal}
+% \begin{macrocode}
+\newcommand*{\DTMwelshordinal}[1]{%
+ \number#1
+ \ifnum#1=1
+ \DTMwelshfmtordinal{aƱ}%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMwelshfmtordinal}
+% \begin{macrocode}
+\newcommand*{\DTMwelshfmtordinal}[1]{%
+ \DTMtexorpdfstring{\protect\textsuperscript{#1}}{#1}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMwelshmonthname}
+% Welsh month names.
+% \begin{macrocode}
+\newcommand*{\DTMwelshmonthname}[1]{%
+ \ifcase#1
+ \or
+ Ionawr%
+ \or
+ Chwefror%
+ \or
+ Mawrth%
+ \or
+ Ebrill%
+ \or
+ Mai%
+ \or
+ Mehefin%
+ \or
+ Gorffennaf%
+ \or
+ Awst%
+ \or
+ Medi%
+ \or
+ Hydref%
+ \or
+ Tachwedd%
+ \or
+ Rhagfyr%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%If abbreviated dates are supported, short month names should be
+%likewise provided.
+%
+%\iffalse
+% \begin{macrocode}
+%</datetime2-welsh-utf8.ldf>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*datetime2-welsh-ascii.ldf>
+% \end{macrocode}
+%\fi
+%\subsection{ASCII}
+%This file contains the settings that use \LaTeX\ commands for
+%non-ASCII characters. This should be input if neither XeLaTeX nor
+%LuaLaTeX are used. Even if the user has loaded \sty{inputenc} with
+%"utf8", this file should still be used not the
+%\texttt{datetime2-welsh-utf8.ldf} file as the non-ASCII
+%characters are made active in that situation and would need
+%protecting against expansion.
+%\changes{1.0}{2015-03-26}{Initial release}
+% Identify module
+% \begin{macrocode}
+\ProvidesDateTimeModule{welsh-ascii}[2015/03/26 v1.0]
+% \end{macrocode}
+%
+%If abbreviated dates are supported, short month names should be
+%likewise provided.
+%\begin{macro}{\DTMwelshordinal}
+% \begin{macrocode}
+\newcommand*{\DTMwelshordinal}[1]{%
+ \number#1
+ \ifnum#1=1
+ \DTMwelshfmtordsuffix{a\protect\~{n}}%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMwelshfmtordsuffix}
+% \begin{macrocode}
+\newcommand*{\DTMwelshfmtordsuffix}[1]{%
+ \DTMtexorpdfstring{\protect\textsuperscript{#1}}{#1}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMwelshmonthname}
+% Welsh month names.
+% \begin{macrocode}
+\newcommand*{\DTMwelshmonthname}[1]{%
+ \ifcase#1
+ \or
+ Ionawr%
+ \or
+ Chwefror%
+ \or
+ Mawrth%
+ \or
+ Ebrill%
+ \or
+ Mai%
+ \or
+ Mehefin%
+ \or
+ Gorffennaf%
+ \or
+ Awst%
+ \or
+ Medi%
+ \or
+ Hydref%
+ \or
+ Tachwedd%
+ \or
+ Rhagfyr%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\iffalse
+% \begin{macrocode}
+%</datetime2-welsh-ascii.ldf>
+% \end{macrocode}
+%\fi
+%
+%\subsection{Main Welsh Module (\texttt{datetime2-welsh.ldf})}
+%\changes{1.0}{2015-03-26}{Initial release}
+%
+%\iffalse
+% \begin{macrocode}
+%<*datetime2-welsh.ldf>
+% \end{macrocode}
+%\fi
+%
+% Identify Module
+% \begin{macrocode}
+\ProvidesDateTimeModule{welsh}[2015/03/26 v1.0]
+% \end{macrocode}
+% Need to find out if XeTeX or LuaTeX are being used.
+% \begin{macrocode}
+\RequirePackage{ifxetex,ifluatex}
+% \end{macrocode}
+% XeTeX and LuaTeX natively support UTF-8, so load
+% \texttt{welsh-utf8} if either of those engines are used
+% otherwise load \texttt{welsh-ascii}.
+% \begin{macrocode}
+\ifxetex
+ \RequireDateTimeModule{welsh-utf8}
+\else
+ \ifluatex
+ \RequireDateTimeModule{welsh-utf8}
+ \else
+ \RequireDateTimeModule{welsh-ascii}
+ \fi
+\fi
+% \end{macrocode}
+%
+% Define the \texttt{welsh} style.
+% The time style is the same as the "default" style
+% provided by \sty{datetime2}. This may need correcting. For
+% example, if a 12 hour style similar to the "englishampm" (from the
+% "english-base" module) is required.
+%
+% Allow the user a way of configuring the "welsh" and
+% "welsh-numeric" styles. This doesn't use the package wide
+% separators such as
+% \cs{dtm@datetimesep} in case other date formats are also required.
+%\begin{macro}{\DTMwelshdaymonthsep}
+% The separator between the day and month for the text format.
+% \begin{macrocode}
+\newcommand*{\DTMwelshdaymonthsep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMwelshmonthyearsep}
+% The separator between the month and year for the text format.
+% \begin{macrocode}
+\newcommand*{\DTMwelshmonthyearsep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMwelshdatetimesep}
+% The separator between the date and time blocks in the full format
+% (either text or numeric).
+% \begin{macrocode}
+\newcommand*{\DTMwelshdatetimesep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMwelshtimezonesep}
+% The separator between the time and zone blocks in the full format
+% (either text or numeric).
+% \begin{macrocode}
+\newcommand*{\DTMwelshtimezonesep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMwelshdatesep}
+% The separator for the numeric date format.
+% \begin{macrocode}
+\newcommand*{\DTMwelshdatesep}{/}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMwelshtimesep}
+% The separator for the numeric time format.
+% \begin{macrocode}
+\newcommand*{\DTMwelshtimesep}{:}
+% \end{macrocode}
+%\end{macro}
+%
+%Provide keys that can be used in \cs{DTMlangsetup} to set these
+%separators.
+% \begin{macrocode}
+\DTMdefkey{welsh}{daymonthsep}{\renewcommand*{\DTMwelshdaymonthsep}{#1}}
+\DTMdefkey{welsh}{monthyearsep}{\renewcommand*{\DTMwelshmonthyearsep}{#1}}
+\DTMdefkey{welsh}{datetimesep}{\renewcommand*{\DTMwelshdatetimesep}{#1}}
+\DTMdefkey{welsh}{timezonesep}{\renewcommand*{\DTMwelshtimezonesep}{#1}}
+\DTMdefkey{welsh}{datesep}{\renewcommand*{\DTMwelshdatesep}{#1}}
+\DTMdefkey{welsh}{timesep}{\renewcommand*{\DTMwelshtimesep}{#1}}
+% \end{macrocode}
+%
+% Define a setting to change the ordinal suffix style.
+% \begin{macrocode}
+\DTMdefchoicekey{welsh}{ord}[\val\nr]{level,raise,omit,sc}{%
+ \ifcase\nr\relax
+ \renewcommand*{\DTMwelshfmtordsuffix}[1]{##1}%
+ \or
+ \renewcommand*{\DTMwelshfmtordsuffix}[1]{%
+ \DTMtexorpdfstring{\protect\textsuperscript{##1}}{##1}}%
+ \or
+ \renewcommand*{\DTMwelshfmtordsuffix}[1]{}%
+ \or
+ \renewcommand*{\DTMwelshfmtordsuffix}[1]{%
+ \DTMtexorpdfstring{\protect\textsc{##1}}{##1}}%
+ \fi
+}
+% \end{macrocode}
+%
+% TODO: provide a boolean key to switch between full and abbreviated
+% formats if appropriate. (I don't know how the date should be
+% abbreviated.)
+%
+% Define a boolean key that determines if the time zone mappings
+% should be used.
+% \begin{macrocode}
+\DTMdefboolkey{welsh}{mapzone}[true]{}
+% \end{macrocode}
+% The default is to use mappings.
+% \begin{macrocode}
+\DTMsetbool{welsh}{mapzone}{true}
+% \end{macrocode}
+%
+% Define a boolean key that determines if the day of month should be
+% displayed.
+% \begin{macrocode}
+\DTMdefboolkey{welsh}{showdayofmonth}[true]{}
+% \end{macrocode}
+% The default is to show the day of month.
+% \begin{macrocode}
+\DTMsetbool{welsh}{showdayofmonth}{true}
+% \end{macrocode}
+%
+% Define a boolean key that determines if the year should be
+% displayed.
+% \begin{macrocode}
+\DTMdefboolkey{welsh}{showyear}[true]{}
+% \end{macrocode}
+% The default is to show the year.
+% \begin{macrocode}
+\DTMsetbool{welsh}{showyear}{true}
+% \end{macrocode}
+%
+% Define the "welsh" style. (TODO: implement day of week?)
+% \begin{macrocode}
+\DTMnewstyle
+ {welsh}% label
+ {% date style
+ \renewcommand*\DTMdisplaydate[4]{%
+ \DTMifbool{welsh}{showdayofmonth}
+ {\DTMwelshordinal{##3}\DTMwelshdaymonthsep}%
+ {}%
+ \DTMwelshmonthname{##2}%
+ \DTMifbool{welsh}{showyear}%
+ {%
+ \DTMwelshmonthyearsep
+ \number##1 % space intended
+ }%
+ {}%
+ }%
+ \renewcommand*\DTMDisplaydate[4]{%
+ \DTMifbool{welsh}{showdayofmonth}
+ {%
+ \DTMwelshordinal{##3}\DTMwelshdaymonthsep
+ \DTMwelshMonthname{##2}%
+ }%
+ {\DTMwelshMonthname{##2}}%
+ \DTMifbool{welsh}{showyear}%
+ {%
+ \DTMwelshmonthyearsep
+ \number##1 % space intended
+ }%
+ {}%
+ }%
+ }%
+ {% time style (use default)
+ \DTMsettimestyle{default}%
+ }%
+ {% zone style
+ \DTMresetzones
+ \DTMwelshzonemaps
+ \renewcommand*{\DTMdisplayzone}[2]{%
+ \DTMifbool{welsh}{mapzone}%
+ {\DTMusezonemapordefault{##1}{##2}}%
+ {%
+ \ifnum##1<0\else+\fi\DTMtwodigits{##1}%
+ \ifDTMshowzoneminutes\DTMwelshtimesep\DTMtwodigits{##2}\fi
+ }%
+ }%
+ }%
+ {% full style
+ \renewcommand*{\DTMdisplay}[9]{%
+ \ifDTMshowdate
+ \DTMdisplaydate{##1}{##2}{##3}{##4}%
+ \DTMwelshdatetimesep
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \DTMwelshtimezonesep
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+ \renewcommand*{\DTMDisplay}[9]{%
+ \ifDTMshowdate
+ \DTMDisplaydate{##1}{##2}{##3}{##4}%
+ \DTMwelshdatetimesep
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \DTMwelshtimezonesep
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+ }%
+% \end{macrocode}
+%
+% Define numeric style.
+% \begin{macrocode}
+\DTMnewstyle
+ {welsh-numeric}% label
+ {% date style
+ \renewcommand*\DTMdisplaydate[4]{%
+ \DTMifbool{welsh}{showdayofmonth}%
+ {%
+ \number##3 % space intended
+ \DTMwelshdatesep
+ }%
+ {}%
+ \number##2 % space intended
+ \DTMifbool{welsh}{showyear}%
+ {%
+ \DTMwelshdatesep
+ \number##1 % space intended
+ }%
+ {}%
+ }%
+ \renewcommand*{\DTMDisplaydate}[4]{\DTMdisplaydate{##1}{##2}{##3}{##4}}%
+ }%
+ {% time style
+ \renewcommand*\DTMdisplaytime[3]{%
+ \number##1
+ \DTMwelshtimesep\DTMtwodigits{##2}%
+ \ifDTMshowseconds\DTMwelshtimesep\DTMtwodigits{##3}\fi
+ }%
+ }%
+ {% zone style
+ \DTMresetzones
+ \DTMwelshzonemaps
+ \renewcommand*{\DTMdisplayzone}[2]{%
+ \DTMifbool{welsh}{mapzone}%
+ {\DTMusezonemapordefault{##1}{##2}}%
+ {%
+ \ifnum##1<0\else+\fi\DTMtwodigits{##1}%
+ \ifDTMshowzoneminutes\DTMwelshtimesep\DTMtwodigits{##2}\fi
+ }%
+ }%
+ }%
+ {% full style
+ \renewcommand*{\DTMdisplay}[9]{%
+ \ifDTMshowdate
+ \DTMdisplaydate{##1}{##2}{##3}{##4}%
+ \DTMwelshdatetimesep
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \DTMwelshtimezonesep
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+ \renewcommand*{\DTMDisplay}{\DTMdisplay}%
+ }
+% \end{macrocode}
+%
+%\begin{macro}{\DTMwelshzonemaps}
+% The time zone mappings are set through this command, which can be
+% redefined if extra mappings are required or mappings need to be
+% removed.
+% \begin{macrocode}
+\newcommand*{\DTMwelshzonemaps}{%
+ \DTMdefzonemap{00}{00}{GMT}%
+ \DTMdefzonemap{01}{00}{BST}%
+}
+% \end{macrocode}
+%\end{macro}
+
+% Switch style according to the \opt{useregional} setting.
+% \begin{macrocode}
+\DTMifcaseregional
+{}% do nothing
+{\DTMsetstyle{welsh}}
+{\DTMsetstyle{welsh-numeric}}
+% \end{macrocode}
+%
+% Redefine \cs{datewelsh} (or \cs{date}\meta{dialect}) to prevent
+% \sty{babel} from resetting \cs{today}. (For this to work,
+% \sty{babel} must already have been loaded if it's required.)
+% \begin{macrocode}
+\ifcsundef{date\CurrentTrackedDialect}
+{%
+ \ifundef\datewelsh
+ {% do nothing
+ }%
+ {%
+ \def\datewelsh{%
+ \DTMifcaseregional
+ {}% do nothing
+ {\DTMsetstyle{welsh}}%
+ {\DTMsetstyle{welsh-numeric}}%
+ }%
+ }%
+}%
+{%
+ \csdef{date\CurrentTrackedDialect}{%
+ \DTMifcaseregional
+ {}% do nothing
+ {\DTMsetstyle{welsh}}%
+ {\DTMsetstyle{welsh-numeric}}
+ }%
+}%
+% \end{macrocode}
+%\iffalse
+% \begin{macrocode}
+%</datetime2-welsh.ldf>
+% \end{macrocode}
+%\fi
+%\Finale
+\endinput
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-welsh/datetime2-welsh.ins b/macros/latex/contrib/datetime2-contrib/datetime2-welsh/datetime2-welsh.ins
new file mode 100644
index 0000000000..c014c97b9f
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-welsh/datetime2-welsh.ins
@@ -0,0 +1,61 @@
+\input docstrip
+
+\preamble
+
+ datetime2-welsh.dtx
+ Copyright 2015 Nicola Talbot
+
+ This work may be distributed and/or modified under the
+ conditions of the LaTeX Project Public License, either version 1.3
+ of this license of (at your option) any later version.
+ The latest version of this license is in
+ http://www.latex-project.org/lppl.txt
+ and version 1.3 or later is part of all distributions of LaTeX
+ version 2005/12/01 or later.
+
+ This work has the LPPL maintenance status `inactive'.
+
+ This work consists of the files datetime2-welsh.dtx and
+ datetime2-welsh.ins and the derived files
+ datetime2-welsh-utf8.ldf, datetime2-welsh-ascii.ldf and
+ datetime2-welsh.ldf.
+
+\endpreamble
+
+\askforoverwritefalse
+
+\generate
+{%
+ \file
+ {datetime2-welsh-utf8.ldf}%
+ {%
+ \usepreamble\defaultpreamble
+ \usepostamble\defaultpostamble
+ \from{datetime2-welsh.dtx}{datetime2-welsh-utf8.ldf,package}%
+ }%
+}
+
+\generate
+{%
+ \file
+ {datetime2-welsh-ascii.ldf}%
+ {%
+ \usepreamble\defaultpreamble
+ \usepostamble\defaultpostamble
+ \from{datetime2-welsh.dtx}{datetime2-welsh-ascii.ldf,package}%
+ }%
+}
+
+\generate
+{%
+ \file
+ {datetime2-welsh.ldf}%
+ {%
+ \usepreamble\defaultpreamble
+ \usepostamble\defaultpostamble
+ \from{datetime2-welsh.dtx}{datetime2-welsh.ldf,package}%
+ }%
+}
+
+\endbatchfile
+
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-welsh/datetime2-welsh.pdf b/macros/latex/contrib/datetime2-contrib/datetime2-welsh/datetime2-welsh.pdf
new file mode 100644
index 0000000000..9fd3f409f0
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-welsh/datetime2-welsh.pdf
Binary files differ