0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

upLaTeX: 本日の曜日を日本語で自動的に出力する

Posted at

やりたいこと

  • YYYY/MM/DD(曜日)が欲しい
    • YYYYは西暦の年
    • MMは西暦の月
    • DDは西暦の日
    • 曜日は日本語版の西暦の曜日(Day Of Week,略してDOW)つまり月火水木金土日
  • BXwarekiは曜日に対応していないらしい
  • jsarticleでとりあえず確認済

実装

プリアンブルにこれを入れる

\usepackage{datetime2}
\usepackage{datetime2-calc}
\makeatletter
\newcommand{\DOWjpn}{%
	\DTMcomputedayofweekindex{\@dtm@currentyear-\@dtm@currentmonth-\@dtm@currentday}{\DOWindex}%
	\ifcase\DOWindex\or\or\or\or\or\or\fi%
}
\newcommand{\DTMjpn}{%
	\@dtm@currentyear/\@dtm@currentmonth/\@dtm@currentday(\DOWjpn)%
}
\makeatother

例えばタイトルに入れる場合は

\date{\DTMjpn}

コツ

  • datetime2datetime2-calcを流用する
  • 内部変数の\@dtm@current系から年月日を取得できる,しかし肝心の@dtm@currentdowはなにもしないままだと-1のままらしい**
    • Current day of week defaults to -1 (that is, ignore it). from p.121
  • 上記を\DTMcomputedayofweekindexに入れて曜日の値を取得して(1~7につき月~日)\DOWindexに保存する
  • これを実行するとなぜか@dtm@currentdowが曜日の値を取得する(0~6につき月~日)
    • p.170 あたりに\dtmMondayIndexから\dtmSundayIndexが定義されており,こっちも0~6につき月~日となっている…しかしLaTeXの\ifcase1スタートの方が好都合であり,\DTMcomputedayofweekindexはこの使用方法を想定していたのかも?
    • \pgfcalendardatetojulian\pgfcalendarjuliantoweekdayが裏で動いた結果…ユリウス暦だと思うけど,ドキュメントには実装が未記載だった
  • それを\ifcaseで分岐させて対応する曜日を表示させたい形式で代入する
    • \makeatletter\makeatother間でなので,改行手前に%を入れないと改行記号が空白扱いされてレイアウトが崩れる
    • 英語3文字版とかにも応用できそう
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?