datetime は、babel が最初にロードされている場合でも、日付形式が正しくない原因になります。

datetime は、babel が最初にロードされている場合でも、日付形式が正しくない原因になります。

パッケージのマニュアルによると、最初にロードされてdatetimeいれば、言語に依存する日付形式をサポートしますbabel。2 ページの例は次のとおりです。

\usepackage[francais]{babel}
\usepackage{datetime}

ただし、次のコードは間違った結果を生成します。

\documentclass{article}
\usepackage[welsh]{babel}
\usepackage{datetime}

\begin{document}

  \today

\end{document}

完全にウェールズ産ではない

削除するとdatetime、実際には正しくないが、少なくとも誤りが少なくなる結果が生成されます。

ウェールズの日付が不完全

これはバグだと思います。しかし、これはdatetimeまたはbabelのウェールズ語サポートのバグでしょうか、それともその両方でしょうか? (あるいは他の何かですが、これらが最も可能性の高いようです。)

説明: ここでの問題は、なぜ 2 つのケースで異なる出力が得られるかということです。babelの翻訳が完璧でないという事実は、単純にローカリゼーションが不完全であるという問題です。 私が尋ねているのは、が読み込まれるa vizときに が追加される理由datetimeです。 アルファベットには 'v' も 'z' も含まれていないので、これは明らかにウェールズ語ではありません。また、 'a' はウェールズ語ですが、ここには属していません。

私の現在の仮説は、このバグは共同作業によるものだということです。まず、babelウェールズ語の序数の定義が抜けているようです。次に、datetime貧弱な言語サポートのケースを適切に処理していません。(あるいは、これを実行する方法がないのかもしれませんdatetime。でも、そうではないことを願っています。)

答え1

ファイルdt-welsh.defに問題があるようです。

\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}}%

\datewelsh次の例のように文書内で再定義すると

\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}

私は

ここに画像の説明を入力してください

ウェールズのデーツがどのように表示されるか分からないので、これが私にできる最善のことです。

「a viz」の部分はブルトン語から来ているようです(を参照dt-breton.def)。

答え2

編集:先ほどのスペースの問題を修正するには、ファイル名を\ProvidesFileに変更しdt-welsh.def、ファイル自体の名前も変更します(これについての私の質問に対するegregの答え):

これはdt-welsh.defegregの回答egreg のコメントgloss-welsh.ldfおよびの新しいバージョンから更新されましたpolyglossia

ライセンスでは、修正版を投稿することは許可されておらず、dt-welsh.def別の名前のファイルをロードするクリーンな方法がわかりません。そのため、このファイルはdt-cymraeg.defに名前を変更した場合にのみ機能しますdt-welsh.defこの形式では配布できませんが、独自のシステム上でこの形式で使用することは可能です。

datetime最終的には、これを必要とせずに正しい出力を生成することに少し近づくように修正されることを期待しています。確かに、パッケージは を含まないように更新されましたa viz。これは何かです。現在のバグは からコピーされておりbabel、作者はそれを認識していると思います。おそらく、ウェールズ語の正しいパターンを提供することで役立つでしょう。

%% 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.

このバージョンを使用する場合は、その内容をシステム上のファイルにコピーします。ファイルを として保存しdt-welsh.def、個人の TEXMF ツリーまたは作業ディレクトリに配置します。ファイル名を変更せずに再配布しないように注意してください。そうすれば、問題なく動作するはずです。また、変更されたバージョンを使用しているため、パッケージの更新やバグ修正によるメリットが得られないことにも注意してください。

特に、datetimeバグを生成できるかどうか確認せずに の作者にバグを報告しないでください それなし このファイルをTEXMFツリーに

私の知る限り、これは標準の日付形式と長い形式および短い形式を正しく取得します。

ウェールズ語の固定日付

関連情報