Согласно руководству по пакету, datetime
поддерживает форматы даты, зависящие от языка, при условии, что babel
он загружен первым. Пример на странице 2:
\usepackage[francais]{babel}
\usepackage{datetime}
Однако следующий код дает неверные результаты:
\documentclass{article}
\usepackage[welsh]{babel}
\usepackage{datetime}
\begin{document}
\today
\end{document}
Удаление datetime
дает результат, который, хотя и не совсем правильный, по крайней мере менее неверный:
Я предполагаю, что это ошибка. Но это ошибка в datetime
поддержке babel
валлийского языка или в обоих? (Или что-то еще, но это кажется наиболее вероятными возможностями.)
Уточнение: проблема здесь в том, почему я получаю разный вывод в двух случаях. Тот факт, что 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
основанная наответ egreg,комментарий 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.
Насколько я могу судить, здесь правильно отображаются стандартные форматы дат, а также длинные и короткие формы: