datetime verursacht ein falsches Datumsformat, selbst wenn Babel zuerst geladen wird

datetime verursacht ein falsches Datumsformat, selbst wenn Babel zuerst geladen wird

Laut Pakethandbuch datetimewerden sprachabhängige Datumsformate unterstützt, vorausgesetzt, dass babelzuerst 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}

Kein rein walisisches Date

Das Entfernen datetimeführt zu einem Ergebnis, das zwar nicht wirklich richtig, aber zumindest weniger falsch ist:

Unvollständiges walisisches Datum

Ich gehe davon aus, dass es sich um einen Fehler handelt. Aber ist es ein Fehler in der Unterstützung von datetimeoder babelfü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 babeldie Übersetzung nicht perfekt ist, ist einfach eine Frage unvollständiger Lokalisierung. Ich frage, warum a vizhinzugefügt wird, wenn datetimegeladen 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 babelwerden offenbar walisische Ordinalzahlen nicht definiert. Zweitens datetimewerden Fälle unzureichender Sprachunterstützung nicht angemessen behandelt. (Oder es gibt einfach keine Möglichkeit, datetimedies zu tun. Aber ich hoffe, das ist nicht der Fall.)

Antwort1

Die Datei dt-welsh.defscheint 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 \datewelshim 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

Bildbeschreibung hier eingeben

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 \ProvidesFileund dt-welsh.defbenennen Sie die Datei selbst um (egregs Antwort auf meine Frage dazu):

Dies ist eine korrigierte Version von dt-welsh.defbasierend aufegregs Antwort,egregs Kommentarund die Aktualisierung gloss-welsh.ldfvon der neuen Version von polyglossia.

Die Lizenz erlaubt mir nicht, eine geänderte Version von zu veröffentlichen, dt-welsh.defund ich kann keinen sauberen Weg finden, eine anders benannte Datei zu laden. Dies ist daher benannt, dt-cymraeg.defaberfunktioniert 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 datetimewird 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 babelund 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.defund 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 datetimedem 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:

feste Termine für Walisisch

verwandte Informationen