Re: 任意の日付の西暦和暦変換

名前: ut
日時: 2008-01-30 12:59:21
IPアドレス: 157.118.27.*

>>50732 # 連続で恥ずかしいのですけどお昼にちょっと時間があったので: >> 平成元年と昭和64年の区別をどうしようかと考 >> えていましたが、 > > そういう難しい処理は、私のような初級ユーザーにはちょっとすぐ > には出来そうにないです。 と書いたときには、\jdate{20080101} みたいな入力を考えていて、 こんなの私には無理だよなぁ、と思ったのですけど、\jdate{2008}{1}{1} という入力で構わないのであれば >>50728 に書き込んだのとまっ たく同じ処理で可能ですよね: % ---------------------------------------------------------- \documentclass{jarticle} \usepackage{plext} \newcount\jpyear \newcount\jpmonth \newcount\jpday \newcount\showa \newcount\xheisei % 既存の \heisei との衝突避けるため x つけました. \newcommand\jdate[3]{\jpyear#1 \jpmonth#2 \jpday#3 \iftdir \if西暦 \kansuji\number\jpyear{}年\kansuji\number\jpmonth{}月\kansuji\number\jpday{}日 \else \ifnum \jpyear<1989 \showa\jpyear \advance\showa-1925 昭和\kansuji\number\showa{}年\kansuji\number\jpmonth{}月\kansuji\number\jpday{}日\fi \ifnum \jpyear>1989 \xheisei\jpyear \advance\xheisei-1988 平成\kansuji\number\xheisei{}年\kansuji\number\jpmonth{}月\kansuji\number\jpday{}日\fi \ifnum \jpyear=1989 \ifnum \jpday<8 \showa\jpyear \advance\showa-1925 昭和\kansuji\number\showa{}年\kansuji\number\jpmonth{}月\kansuji\number\jpday{}日 \else \xheisei\jpyear \advance\xheisei-1988 平成元年\kansuji\number\jpmonth{}月\kansuji\number\jpday{}日\fi \fi \fi \else \if西暦 \number\jpyear{}年\number\jpmonth{}月\number\jpday{}日 \else \ifnum \jpyear<1989 \showa\jpyear \advance\showa-1925 昭和\number\showa{}年\number\jpmonth{}月\number\jpday{}日\fi \ifnum \jpyear>1989 \xheisei\jpyear \advance\xheisei-1988 平成\number\xheisei{}年\number\jpmonth{}月\number\jpday{}日\fi \ifnum \jpyear=1989 \ifnum \jpday<8 \showa\jpyear \advance\showa-1925 昭和\number\showa{}年\number\jpmonth{}月\number\jpday{}日 \else \xheisei\jpyear \advance\xheisei-1988 平成元年\number\jpmonth{}月\number\jpday{}日\fi \fi \fi \fi} \begin{document} \西暦 \jdate{2008}{1}{1}\par \jdate{1989}{1}{1}\par \jdate{1989}{1}{10} \bigskip \begin{minipage}<t>{13zw} \parbox<t>{12zw}{\jdate{1989}{1}{1}}\par \parbox<z>{12zw}{\jdate{1989}{1}{1}}\par \parbox<t>{12zw}{\jdate{1989}{1}{10}}\par \parbox<z>{12zw}{\jdate{1989}{1}{10}} \end{minipage} \bigskip \和暦 \jdate{2008}{1}{1}\par \jdate{1989}{1}{1}\par \jdate{1989}{1}{10} \bigskip \begin{minipage}<t>{13zw} \parbox<t>{12zw}{\jdate{1989}{1}{1}}\par \parbox<z>{12zw}{\jdate{1989}{1}{1}}\par \parbox<t>{12zw}{\jdate{1989}{1}{10}}\par \parbox<z>{12zw}{\jdate{1989}{1}{10}} \end{minipage} \end{document} % ---------------------------------------------------------- より \today の定義に近づけてみたのですけど、縦組みにしたら頭 が揃わないのはどうしてでしょう??? (こういうところが、初級が 初級たる所以なのですよね…)。 以下は副産物です(これまたいかにも初級ユーザー的練習問題の結 果を貼ってしまって、すいません…): % ---------------------------------------------------------- \documentclass{tarticle} %\usepackage{plext} % 横組みのクラスで \Kanji を使うにはこれが必要. \newcounter{jpyear} \newcounter{jpmonth} \newcounter{jpday} \makeatletter \def\jmonth#1{\expandafter\@jmonth\csname c@#1\endcsname} \def\@jmonth#1{% \ifcase#1\or 睦月\or 如月\or 弥生\or 卯月\or 皐月\or 水無月\or 文月\or 葉月\or 長月\or 神無月\or 霜月\or 師走 \else\@ctrerr\fi} \makeatother \newcommand\Jmonth[3]{\setcounter{jpyear}{#1} \setcounter{jpmonth}{#2} \setcounter{jpday}{#3} \Kanji{jpyear}年\jmonth{jpmonth}\Kanji{jpday}日 } \begin{document} \Jmonth{2008}{1}{1}\par \Jmonth{2008}{2}{2}\par \Jmonth{2008}{3}{3}\par \Jmonth{2008}{4}{4}\par \Jmonth{2008}{5}{5}\par \Jmonth{2008}{6}{6}\par \Jmonth{2008}{7}{7}\par \Jmonth{2008}{8}{8}\par \Jmonth{2008}{9}{9}\par \Jmonth{2008}{10}{10}\par \Jmonth{2008}{11}{11}\par \Jmonth{2008}{12}{12} \end{document} % ----------------------------------------------------------

この書き込みへの返事:

お名前
題名 
メッセージ(タグは <a href="...">...</a> だけ使えます。適宜改行を入れてください)