datetime으로 인해 babel이 먼저 로드된 경우에도 잘못된 날짜 형식이 발생합니다.

datetime으로 인해 babel이 먼저 로드된 경우에도 잘못된 날짜 형식이 발생합니다.

패키지 매뉴얼에 따르면, 먼저 로드되는 datetime언어별 날짜 형식을 지원합니다 . babel2페이지의 예는 다음과 같습니다.

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

그러나 다음 코드는 잘못된 결과를 생성합니다.

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

\begin{document}

  \today

\end{document}

완전히 웨일스 날짜는 아님

제거하면 datetime실제로 정확하지는 않지만 적어도 덜 부정확한 결과가 생성됩니다.

불완전한 웨일스 날짜

나는 이것이 버그라고 생각합니다. 그러나 그것은 Welsh에 대한 버그 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" 부분은 Breton에서 나온 것 같습니다(참조 dt-breton.def).

답변2

편집하다:허위 공백과 관련된 이전 문제를 해결하려면 파일 이름을 \ProvidesFile다음으로 변경하십시오.dt-welsh.def 변경 하고 파일 자체 이름도 변경합니다(이에 대한 내 질문에 대한 egreg의 답변):

이것은 고정 버전입니다.dt-welsh.def이것은 다음을 기반으로에그레그의 답변,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 트리에 있는 이 파일.

내가 알 수 있는 한, 이것은 긴 형식과 짧은 형식뿐만 아니라 표준 날짜 형식도 올바르게 가져옵니다.

웨일스의 고정 날짜

관련 정보