Laut Pakethandbuch datetime
werden sprachabhängige Datumsformate unterstützt, vorausgesetzt, dass babel
zuerst geladen wird. Das Beispiel auf Seite 2 lautet:
\usepackage[francais]{babel}
\usepackage{datetime}
Der folgende Code führt jedoch zu falschen Ergebnissen:
\documentclass{article}
\usepackage[welsh]{babel}
\usepackage{datetime}
\begin{document}
\today
\end{document}
Das Entfernen datetime
führt zu einem Ergebnis, das zwar nicht wirklich richtig, aber zumindest weniger falsch ist:
Ich gehe davon aus, dass es sich um einen Fehler handelt. Aber ist es ein Fehler in der Unterstützung von datetime
oder babel
für Walisisch oder beides? (Oder etwas anderes, aber das scheinen die wahrscheinlichsten Möglichkeiten zu sein.)
Klarstellung: Das Problem hier ist, warum ich in beiden Fällen unterschiedliche Ergebnisse erhalte. Die Tatsache, dass babel
die Übersetzung nicht perfekt ist, ist einfach eine Frage unvollständiger Lokalisierung. Ich frage, warum a viz
hinzugefügt wird, wenn datetime
geladen wird. Dies ist sicherlich kein Walisisch, da das Alphabet weder „v“ noch „z“ enthält und „a“ zwar ein walisisches Wort ist, aber hier nicht hingehört.
Meine aktuelle Hypothese ist, dass der Fehler auf eine Gemeinschaftsanstrengung zurückzuführen ist. Erstens babel
werden offenbar walisische Ordinalzahlen nicht definiert. Zweitens datetime
werden Fälle unzureichender Sprachunterstützung nicht angemessen behandelt. (Oder es gibt einfach keine Möglichkeit, datetime
dies zu tun. Aber ich hoffe, das ist nicht der Fall.)
Antwort1
Die Datei dt-welsh.def
scheint fehlerhaft zu sein, denn sie
\DeclareRobustCommand*\datewelsh{%
\renewcommand{\formatdate}[3]{%
\@day=##1\relax\@month=##2\relax\@year=##3\relax
\ifnum\@day=1\relax 1\/$^{\mathrm{a\tilde{n}}}$\else
\number\@day\fi \space a\space viz\space
\monthnamewelsh[\@month]\space\number\@year}}%
Wenn ich \datewelsh
im Dokument wie im folgenden Beispiel neu definiere
\documentclass{article}
\usepackage[welsh]{babel}
\usepackage{datetime}
\makeatletter
\DeclareRobustCommand*\datewelsh{%
\renewcommand{\formatdate}[3]{%
\@day=##1\relax\@month=##2\relax\@year=##3\relax
\ifnum\@day=1\relax 1\/$^{\mathrm{a\tilde{n}}}$\else
\number\@day\fi \space %a\space viz\space
\monthnamewelsh[\@month]\space\number\@year}}%
\makeatother
\begin{document}
\day=0
\loop\ifnum\day<10
\advance\day by 1
\today\endgraf
\repeat
\end{document}
Ich bekomme
Da ich nicht weiß, wie walisische Daten aussehen sollten, ist dies das Beste, was ich tun kann.
Der Teil „a viz“ scheint aus dem Bretonischen zu stammen (siehe dt-breton.def
).
Antwort2
BEARBEITEN:Um das frühere Problem mit unpassenden Leerzeichen zu beheben, ändern Sie den Namen der Datei in \ProvidesFile
und dt-welsh.def
benennen Sie die Datei selbst um (egregs Antwort auf meine Frage dazu):
Dies ist eine korrigierte Version von dt-welsh.def
basierend aufegregs Antwort,egregs Kommentarund die Aktualisierung gloss-welsh.ldf
von der neuen Version von polyglossia
.
Die Lizenz erlaubt mir nicht, eine geänderte Version von zu veröffentlichen, dt-welsh.def
und ich kann keinen sauberen Weg finden, eine anders benannte Datei zu laden. Dies ist daher benannt, dt-cymraeg.def
aberfunktioniert nur, wenn es in umbenannt wird dt-welsh.def
.Eine Weitergabe in dieser Form ist nicht möglich, die Nutzung auf dem eigenen System ist jedoch in dieser Form möglich.
Hoffentlich datetime
wird es irgendwann behoben, um etwas zu tun, das der korrekten Ausgabe näher kommt, ohne dass dies erforderlich ist. Das Paket wurde auf jeden Fall aktualisiert, sodass es das nicht mehr enthält a viz
, was schon mal was ist. Die aktuellen Fehler wurden von kopiert babel
und der Autor ist sich, glaube ich, ihrer bewusst. Vielleicht hilft dies, indem korrekte Muster für Walisisch bereitgestellt werden.
%% dt-cymraeg.def
%% Additions and changes are copyright 2015 Clea F. Rees
%% Code from dt-welsh.def copyright 2015 Nicola Talbot (see below)
%% Code from gloss-welsh.ldf copyright 2008-2010 François Charette,
%% 2013 Élie Roux, 2011-2015 Arthur Reutenauer
%
% 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 Clea F. Rees.
%
% This work consists of the file dt-cymraeg.def
%
% The file dt-cymraeg.def is a derived work under the terms of the
% LPPL. It is based on dt-welsh.def which is part of the datetime
% package by Nicola Talbot. A copy of datetime, including the
% unmodified version of dt-welsh.def is available from
% http://tug.ctan.org/cgi-bin/ctanPackageInformation.py?id=datetime.
%
% The modifications are also derivative under the terms of the LPPL. They
% are based on code modified from gloss-welsh.ldf which is part of
% polyglossia 2015/08/06 v1.42.0 by François Charette, Élie Roux
% and Arthur Reutenauer. A copy of polyglossia, including gloss-welsh.ldf
% is available
% from http://tug.ctan.org/cgi-bin/ctanPackageInformation.py?id=polyglossia.
%%
\ProvidesFile{dt-cymraeg.def}[$Id: dt-cymraeg.def 3789 2015-08-31 02:01:23Z cfrees $]
\providecommand*\dt@cymraeg@neges{%
\PackageWarning{dt-cymraeg.def}{This is a MODIFIED version of dt-welsh.def. Breakage should under no circumstances be blamed on the author of the original file.}}
\dt@cymraeg@neges
\renewcommand*\dt@cymraeg@neges{\relax}
\providecommand*\ordinaldatewelsh[1]{%
#1\ifcase#1\relax%
\or\textsuperscript{af}%
\or\textsuperscript{ail}%
\or\textsuperscript{ydd}%
\or\textsuperscript{ydd}%
\or\textsuperscript{ed}%
\or\textsuperscript{ed}%
\or\textsuperscript{fed}%
\or\textsuperscript{fed}%
\or\textsuperscript{fed}%
\or\textsuperscript{fed}%
\or\textsuperscript{eg}%
\or\textsuperscript{fed}%
\or\textsuperscript{eg}%
\or\textsuperscript{eg}%
\or\textsuperscript{fed}%
\or\textsuperscript{eg}%
\or\textsuperscript{eg}%
\or\textsuperscript{fed}%
\or\textsuperscript{eg}%
\or\textsuperscript{fed}%
\else\textsuperscript{ain}\fi}%
\global\let\ordinaldatewelsh\ordinaldatewelsh
\providecommand\dayofweeknameidwelsh[1]{%
dydd\space%
\ifcase#1\relax
\or Sul%
\or Llun%
\or Mawrth%
\or Mercher%
\or Iau%
\or Gwener%
\or Sadwrn%
\fi}%
\global\let\dayofweeknameidwelsh\dayofweeknameidwelsh
\providecommand{\shortdayofweeknameidwelsh}[1]{%
\ifcase#1\relax%
\or Sul%
\or Llun%
\or Maw.%
\or Mer.%
\or Iau%
\or Gwen.%
\or Sad.%
\fi}%
\global\let\shortdayofweeknameidwelsh\shortdayofweeknameidwelsh
\providecommand{\monthnamewelsh}[1][\month]{%
\@orgargctr=#1\relax%
\ifcase\@orgargctr%
\PackageError{datetime}{Invalid Month number \the\@orgargctr}{%
Month numbers should go from 1 to 12}%
\or Ionawr%
\or Chwefror%
\or Mawrth%
\or Ebrill%
\or Mai%
\or Mehefin%
\or Gorffennaf%
\or Awst%
\or Medi%
\or Hydref%
\or Tachwedd%
\or Rhagfyr%
\else%
\PackageError{datetime}{Invalid Month number \the\@orgargctr}{%
Month numbers should go from 1 to 12}%
\fi}%
\global\let\monthnamewelsh\monthnamewelsh
\DeclareRobustCommand*\datewelsh{%
\renewcommand{\formatdate}[3]{%
\@day=##1\relax\@month=##2\relax\@year=##3\relax
\number\@day%
\ifcase\@day\relax%
\or\textsuperscript{af}%
\or\textsuperscript{ail}%
\or\textsuperscript{ydd}%
\or\textsuperscript{ydd}%
\or\textsuperscript{ed}%
\or\textsuperscript{ed}%
\or\textsuperscript{fed}%
\or\textsuperscript{fed}%
\or\textsuperscript{fed}%
\or\textsuperscript{fed}%
\or\textsuperscript{eg}%
\or\textsuperscript{fed}%
\or\textsuperscript{eg}%
\or\textsuperscript{eg}%
\or\textsuperscript{fed}%
\or\textsuperscript{eg}%
\or\textsuperscript{eg}%
\or\textsuperscript{fed}%
\or\textsuperscript{eg}%
\or\textsuperscript{fed}%
\else\textsuperscript{ain}%
\fi%
\space%
\monthnamewelsh[\@month]\space\number\@year}%
}%
\global\let\datewelsh\datewelsh
\providecommand{\shortmonthnamewelsh}[1][\month]{%
\@orgargctr=#1\relax%
\ifcase\@orgargctr%
\PackageError{datetime}{Invalid Month number \the\@orgargctr}{%
Month numbers should go from 1 (jan.) to 12 (dec.)}% rhai o Yale ond 'dw i ddim yn cytuno â'i rhai Saesneg chwaith! (efaillai bod nhw'n safonol a ffurfiol?)
\or Ion.%
\or Chwe.% Chwef. yn ôl Yale??!!
\or Maw.%
\or Ebr.%
\or Mai%
\or Meh.%
\or Gorff.%
\or Awst.%
\or Medi%
\or Hyd.%
\or Tach.%
\or Rhag.%
\else%
\PackageError{datetime}{Invalid Month number \the\@orgargctr}{%
Month numbers should go from 1 (jan.) to 12 (dec.)}%
\fi}
\endinput
%%
%% End of file dt-cymraeg.def.
Wenn Sie diese Version verwenden möchten, kopieren Sie den Inhalt in eine Datei auf Ihrem System. Speichern Sie die Datei unter dt-welsh.def
und platzieren Sie sie in Ihrem persönlichen TEXMF-Baum oder in Ihrem Arbeitsverzeichnis.Merken Sie sich, die Datei nicht weiterzugeben, ohne sie umzubenennen.Dann sollte alles einwandfrei funktionieren.Denken Sie außerdem daran, dass Sie eine geänderte Version verwenden, die daher nicht von den Updates oder Fehlerbehebungen des Pakets profitiert.
Insbesondere,Melden Sie datetime
dem Autor KEINE Fehler, ohne zu prüfen, ob Sie sie produzieren können. OHNE diese Datei in Ihrem TEXMF-Baum.
Soweit ich das beurteilen kann, werden hiermit sowohl die Standarddatumsformate als auch die Lang- und Kurzformen korrekt wiedergegeben: