根據軟體包手冊,如果首先加載,datetime
則支援語言敏感的日期格式。babel
第 2 頁的範例是:
\usepackage[francais]{babel}
\usepackage{datetime}
但是,以下程式碼會產生錯誤的結果:
\documentclass{article}
\usepackage[welsh]{babel}
\usepackage{datetime}
\begin{document}
\today
\end{document}
刪除datetime
會產生一個結果,雖然實際上並不正確,但至少不太不正確:
我認為這是一個錯誤。但這是datetime
orbabel
對威爾斯語的支持中的錯誤還是兩者兼而有之? (或其他的東西,但這些似乎是最有可能的可能性。)
澄清:這裡的問題是為什麼我在兩種情況下得到不同的輸出。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.def
這是基於的固定版本艾格格的回答,艾格格的評論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 樹中。
據我所知,這得到了正確的標準日期格式以及長格式和短格式: