
次のように、現在の月を基準にして次の月を挿入するコマンドを作成したいと思います。
\command
-> 11月
と同様に\today
。
- ドキュメントは言語を切り替えるため ( の場合と同じように
\today
)、コマンドをハードコードすることはできません。 - このコマンドをプリアンブル内で使用したいと思います。
- 出力はローカライズされる必要があります。つまり、他の場所では
\today
通常どおり動作するはずです。
これを行う最善の方法は何ですか?
答え1
次のようなものが動作します:
\usepackage{datetime}
\usepackage{advdate}
\newdateformat{mydate}{\monthname[\THEMONTH]}
(...)
{\AdvMonth{1} \mydate \today}
答え2
datetime2
ここでは、少しのモジュラー演算を使用した解決策を示します。
\documentclass{article}
\usepackage[french,english]{babel}
\usepackage[T1]{fontenc}
\usepackage[calc]{datetime2}
\ExplSyntaxOn
\NewDocumentCommand{\nextmonth} {} {
\int_eval:n {12 - \int_mod:nn {\month}{12}}{=}{0}}
\DTMmonthname{\nxtmnth:n}}
\ExplSyntaxOff
\begin{document}
Today is: \today
Next month is \nextmonth
\selectlanguage{french}
En français: \nextmonth
\end{document}
答え3
\int_mod:nn
12 を法とする代数演算を実行するには、結果の絶対値がモジュールの絶対値よりも小さく、結果の符号が整数剰余を計算する式と同じであるexpl3 を使用できます。
おそらく計算結果を提供する
12 - (
(
% With \int_mod:nn for doing the mod-12-calculation this
% expression yields a non-negative number...
12 - (
% ... because this is in range -11..+11 :
( ⟨number of current month⟩
+ ⟨amount of months to add or subtract⟩
) mod 12
)
) mod 12
% With \int_mod:nn the result of mod-12-calculation of a
% non-negative number is in range 0..11.
)
に日付時刻2's が\DTMmonthname
役立ちます:
\documentclass{article}
\usepackage[french,english]{babel}
\usepackage[T1]{fontenc}
\usepackage[calc]{datetime2}
\ExplSyntaxOn
\NewDocumentCommand{\MonthInRelationToCurrentMonth} {m} {
\exp_args:Nf \DTMmonthname
{\int_eval:n {12-\int_mod:nn {12-(\int_mod:nn{\month+(#1)}{12})}{12}}}
}
\ExplSyntaxOff
\newcommand\NextMonth{\MonthInRelationToCurrentMonth{1}}%
\newcommand\PreviousMonth{\MonthInRelationToCurrentMonth{-1}}%
\newcommand\ThisMonth{\MonthInRelationToCurrentMonth{0}}%
\begin{document}
\bigskip\hrule\bigskip
\noindent In English
\bigskip\hrule\bigskip
\noindent
Today is \today.\\
Previous month was \PreviousMonth.\\
This month is \ThisMonth.\\
Next month will be \NextMonth.
\bigskip\hrule\bigskip
\noindent
This month is \MonthInRelationToCurrentMonth{0}.\\
This month is \MonthInRelationToCurrentMonth{+0}.\\
One month later will be \MonthInRelationToCurrentMonth{+1}.\\
Two months later will be \MonthInRelationToCurrentMonth{2}.\\
Three months later will be \MonthInRelationToCurrentMonth{3}.\\
Four months later will be \MonthInRelationToCurrentMonth{4}.\\
Five months later will be \MonthInRelationToCurrentMonth{+5}.\\
Six months later will be \MonthInRelationToCurrentMonth{+6}.\\
Seven months later will be \MonthInRelationToCurrentMonth{7}.\\
Eight months later will be \MonthInRelationToCurrentMonth{8}.\\
Nine months later will be \MonthInRelationToCurrentMonth{9}.\\
Ten months later will be \MonthInRelationToCurrentMonth{10}.\\
Eleven months later will be \MonthInRelationToCurrentMonth{11}.\\
Twelve months later will be \MonthInRelationToCurrentMonth{12}.\\
Thirteen months later will be \MonthInRelationToCurrentMonth{13}.\\
Twenty months later will be \MonthInRelationToCurrentMonth{+20}.
\bigskip\hrule\bigskip
\noindent
This month is \MonthInRelationToCurrentMonth{0}.\\
This month is \MonthInRelationToCurrentMonth{-0}.\\
One month earlier was \MonthInRelationToCurrentMonth{-1}.\\
Two months earlier was \MonthInRelationToCurrentMonth{-2}.\\
Three months earlier was \MonthInRelationToCurrentMonth{-3}.\\
Four months earlier was \MonthInRelationToCurrentMonth{-4}.\\
Five months earlier was \MonthInRelationToCurrentMonth{-5}.\\
Six months earlier was \MonthInRelationToCurrentMonth{-6}.\\
Seven months earlier was \MonthInRelationToCurrentMonth{-7}.\\
Eight months earlier was \MonthInRelationToCurrentMonth{-8}.\\
Nine months earlier was \MonthInRelationToCurrentMonth{-9}.\\
Ten months earlier was \MonthInRelationToCurrentMonth{-10}.\\
Eleven months earlier was \MonthInRelationToCurrentMonth{-11}.\\
Twelve months earlier was \MonthInRelationToCurrentMonth{-12}.\\
Thirteen months earlier was \MonthInRelationToCurrentMonth{-13}.\\
Twenty months earlier was \MonthInRelationToCurrentMonth{-20}.
\newpage
\selectlanguage{french}
\bigskip\hrule\bigskip
\noindent En français:
\bigskip\hrule\bigskip
\noindent
Aujourd'hui, c'est \today.\\
Le mois précédent était \PreviousMonth.\\
Ce mois-ci est \ThisMonth.\\
Le mois prochain sera \NextMonth.
\bigskip\hrule\bigskip
\noindent
Ce mois-ci, c'est \MonthInRelationToCurrentMonth{0}.\\
Ce mois-ci, c'est \MonthInRelationToCurrentMonth{+0}.\\
Un mois plus tard sera \MonthInRelationToCurrentMonth{+1}.\\
Deux mois plus tard sera \MonthInRelationToCurrentMonth{2}.\\
Trois mois plus tard sera \MonthInRelationToCurrentMonth{3}.\\
Quatre mois plus tard sera \MonthInRelationToCurrentMonth{4}.\\
Cinq mois plus tard sera \MonthInRelationToCurrentMonth{+5}.\\
Six mois plus tard sera \MonthInRelationToCurrentMonth{+6}.\\
Sept mois plus tard sera \MonthInRelationToCurrentMonth{7}.\\
Huit mois plus tard sera \MonthInRelationToCurrentMonth{8}.\\
Neuf mois plus tard sera \MonthInRelationToCurrentMonth{9}.\\
Dix mois plus tard plus tard sera \MonthInRelationToCurrentMonth{10}.\\
Onze mois plus tard plus tard sera \MonthInRelationToCurrentMonth{11}.\\
Douze mois plus tard plus tard sera \MonthInRelationToCurrentMonth{12}.\\
Treize mois plus tard plus tard sera \MonthInRelationToCurrentMonth{13}.\\
Vingte mois plus tard plus tard sera \MonthInRelationToCurrentMonth{+20}.
\bigskip\hrule\bigskip
\noindent
Ce mois-ci, c'est \MonthInRelationToCurrentMonth{0}.\\
Ce mois-ci, c'est \MonthInRelationToCurrentMonth{+0}.\\
Un mois plus tôt, c'était \MonthInRelationToCurrentMonth{-1}.\\
Deux mois plus tôt, c'était \MonthInRelationToCurrentMonth{-2}.\\
Trois mois plus tôt, c'était \MonthInRelationToCurrentMonth{-3}.\\
Quatre mois plus tôt, c'était \MonthInRelationToCurrentMonth{-4}.\\
Cinq mois plus tôt, c'était \MonthInRelationToCurrentMonth{-5}.\\
Six mois plus tôt, c'était \MonthInRelationToCurrentMonth{-6}.\\
Sept mois plus tôt, c'était \MonthInRelationToCurrentMonth{-7}.\\
Huit mois plus tôt, c'était \MonthInRelationToCurrentMonth{-8}.\\
Neuf mois plus tôt, c'était \MonthInRelationToCurrentMonth{-9}.\\
Dix mois plus tôt, c'était \MonthInRelationToCurrentMonth{-10}.\\
Onze mois plus tôt, c'était \MonthInRelationToCurrentMonth{-11}.\\
Douze mois plus tôt, c'était \MonthInRelationToCurrentMonth{-12}.\\
Teize mois plus tôt, c'était \MonthInRelationToCurrentMonth{-13}.\\
Vingte mois plus tôt, c'était \MonthInRelationToCurrentMonth{-20}.
\end{document}