重複の可能性あり:
日付を分割するにはどうすればいいですか?
独自のマクロのパラメータ内の日付から年を抽出する方法を知っている人はいますか?
つまり、
\themacro#1{...}
#1
すでに形式に含まれている日付かyyyy
、形式に含まれている日付のいずれかが含まれておりdd.mm.yyyy
、\themacro
プレーン 形式に変換されますyyyy
...
私が言いたいことは明確だと思います。簡単に言えば、日付から年を抽出する必要があるだけです (抽出が必要な場合)。
答え1
user1189687 はすでに、より良い解決策を提案していますが、私はすでにこれを書き始めているので、プレーン テキスト ソリューションが必要な場合は、次のようになります。
ここでのポイントは、自分が前者のケースに該当するのか、それとも後者のケースに該当するのかを認識することです。入力の形式がわかっていれば、これは簡単にできます。しかし、ここでは、どうやらわかっていないようです。
だから私がやることは次のようになります:
\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}
結果: