날짜가 포함된 매개변수에서 연도 추출

날짜가 포함된 매개변수에서 연도 추출

가능한 중복:
데이트는 어떻게 나누나요?

자신의 매크로 매개변수에서 날짜로부터 연도를 추출하는 방법을 아는 사람이 있습니까?

즉,

\themacro#1{...}

여기에 #1이미 형식이 지정된 날짜 yyyy나 형식이 포함되어 있으면 일반 형식으로 변환 dd.mm.yyyy됩니다 .\themacroyyyy

간단하게 말하면 날짜에서 연도만 추출하면 됩니다(추출이 필요한 경우).

답변1

user1189687은 이미 내가 생각하기에 더 나은 솔루션을 제안했지만 이미 이 글을 쓰기 시작했기 때문에 일반 tex 솔루션을 원하는 경우 다음과 같습니다.

여기서 중요한 점은 당신이 전자의 경우인지 아니면 후자의 경우인지를 인식하는 것입니다. 입력 형식을 알고 있으면 수행하기가 쉽습니다. 하지만 여기서는 그렇지 않은 것 같습니다.

그래서 내가 할 일은 다음과 같습니다.

\makeatletter

\def\@themacro #1.#2\end@themacro{%
  \def\@tempyr{#1}%
  \def\@temprem{#2}%
}%
%
\def\themacro #1 {%
  \let\day\relax%
  \let\month\relax%
  \let\year\relax%
  \let\@tempyr\relax%
  \let\@temprem\relax%
  \@themacro#1.\relax\end@themacro% get day or year
  \if\relax\@temprem\relax%
    \if\relax\@tempyr\relax%
      \GenericError{}{Wrong date format}{}{}% Manage the error
    \else%
      \edef\year{\expandafter\noexpand\@tempyr}%
    \fi%
  \else%
    \edef\day{\expandafter\noexpand\@tempyr}%
    \expandafter\@themacro\@temprem\end@themacro% get month
    \if\relax\@temprem\relax%
      \GenericError{}{Wrong date format}{}{}% Manage the Error
    \else%
      \edef\month{\expandafter\noexpand\@tempyr}%
      \expandafter\@themacro\@temprem\end@themacro% get year
      \if\relax\@temprem\relax%
        \edef\year{\expandafter\noexpand\@tempyr}%
      \else%
        \GenericError{}{Wrong date format}{}{}% Manage the Error
      \fi%
    \fi%
  \fi%
}%
\makeatother%

이 솔루션의 장점은 잘못된 구문을 감지하여 원하는 대로 대체하거나 오류를 발생시킬 수 있다는 것입니다.

아, 잊어버릴 뻔했어요... 물론 의 대체 텍스트로 연도를 얻습니다 \year.

존재하는 경우 \day및 을 얻을 수도 있습니다 \month.

답변2

\StrRight패키지 를 사용해 보십시오 xstring.

\documentclass{article}

\usepackage{xstring}
\def\getYear#1{\StrRight{#1}{4}}

\begin{document}

\noindent\getYear{12.12.2012}\\
\getYear{2012}

\end{document}

결과는 다음과 같습니다.

여기에 이미지 설명을 입력하세요

관련 정보