De acordo com o manual do pacote, datetime
suporta formatos de data sensíveis ao idioma, desde que babel
seja carregado primeiro. O exemplo na página 2 é:
\usepackage[francais]{babel}
\usepackage{datetime}
No entanto, o código a seguir produz resultados incorretos:
\documentclass{article}
\usepackage[welsh]{babel}
\usepackage{datetime}
\begin{document}
\today
\end{document}
A remoção datetime
produz um resultado que, embora não seja realmente correto, é pelo menos menos incorreto:
Presumo que isso seja um bug. Mas é um bug no datetime
suporte babel
do Welsh ou ambos? (Ou qualquer outra coisa, mas essas parecem ser as possibilidades mais prováveis.)
Esclarecimento: a questão aqui é por que obtenho resultados diferentes nos dois casos. O fato de babel
a tradução de não ser perfeita é uma questão simples de localização incompleta. O que estou perguntando é por que a viz
é adicionado quando datetime
é carregado. Certamente não é galês, pois o alfabeto não contém nem 'v' nem 'z' e, embora 'a' seja uma palavra galesa, não pertence aqui.
Minha hipótese atual é que o bug é um esforço conjunto. Primeiro, babel
aparentemente omite a definição dos ordinais galeses. Em segundo lugar, datetime
não trata adequadamente os casos de suporte linguístico deficiente. (Ou simplesmente não há como datetime
fazer isso. Mas espero que não seja assim.)
Responder1
O arquivo dt-welsh.def
parece ser o culpado, pois isso acontece
\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}}%
Se eu redefinir \datewelsh
no documento como no exemplo a seguir
\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}
eu recebo
Não sabendo como as datas galesas deveriam aparecer, isso é o melhor que posso fazer.
A parte “a viz” parece vir do bretão (ver dt-breton.def
).
Responder2
EDITAR:Para corrigir o problema anterior com espaçamento falso, altere o nome do arquivo \ProvidesFile
para dt-welsh.def
e também renomeie o próprio arquivo (a resposta do egreg à minha pergunta sobre isso):
Esta é uma versão fixa dt-welsh.def
baseada emresposta da egrégia,comentário de egrege o atualizado gloss-welsh.ldf
da nova versão do polyglossia
.
A licença não me permite publicar uma versão modificada dt-welsh.def
e não consigo descobrir uma maneira limpa de carregar um arquivo com nome diferente. Este é, portanto, nomeado dt-cymraeg.def
, masfuncionará apenas se renomeado para dt-welsh.def
.Ele não pode ser distribuído dessa forma, mas pode ser usado dessa forma em seu próprio sistema.
Esperançosamente, datetime
eventualmente será corrigido para fazer algo um pouco mais próximo de produzir a saída correta sem a necessidade disso. Certamente, o pacote foi atualizado para não incluir o a viz
, o que é alguma coisa. Os bugs atuais foram copiados babel
e o autor, acredito, está ciente deles. Talvez isso ajude, fornecendo padrões corretos para o galês.
%% 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.
Se quiser usar esta versão, copie o conteúdo para um arquivo em seu sistema. Salve o arquivo como dt-welsh.def
e coloque-o em sua árvore TEXMF pessoal ou em seu diretório de trabalho.Anote para não redistribuir sem renomear o arquivo.Então as coisas devem funcionar bem.Faça outra observação para lembrar que você está usando uma versão modificada que, portanto, não se beneficiará de nenhuma atualização ou correção de bugs no pacote.
Em particular,NÃO relate bugs ao datetime
autor do sem verificar se você pode produzi-los SEM este arquivo na sua árvore TEXMF.
Até onde eu sei, isso acerta os formatos de data padrão, bem como os formatos longo e curto: