
datetime2
에서 이전 달을 계산하는 데 사용할 수 있습니까 \today
? (또는 다른 패키지).
마이너스 공제를 사용하는 몇 가지 솔루션을 찾았지만 월말에 문제가 발생할 수 있습니다.
예: \today
= 2017년 7월 12일
원하는 출력: "오늘은 2017년 7월 12일입니다. 지난 달은 6월이었습니다."
답변1
을 사용하여 현재 날짜를 저장 \DTMsavenow
한 다음 \DTMfetchmonth
및 DTMmonthname
또는 해당 항목을 사용하여 이전(또는 다음) 달을 계산할 수 있습니다. a \lastmonth
와 버전을 모두 추가했습니다 \nextmonth
.
\documentclass{article}
\usepackage[calc]{datetime2}
\usepackage{ifthen}
\newcommand\lastmonth[1]{\ifthenelse{\DTMfetchmonth{#1}=1}
{\DTMmonthname{12}}{\DTMmonthname{\numexpr\DTMfetchmonth{#1}-1\relax}}}
\newcommand\nextmonth[1]{\ifthenelse{\DTMfetchmonth{#1}=12
{\DTMmonthname{1}}{\DTMmonthname{\numexpr\DTMfetchmonth{#1}+1\relax}}}
\begin{document}
\DTMsavenow{today}
\DTMsavedate{jan20}{2017-01-20}
Today is \today.
Last month was \lastmonth{today}.
Today is \DTMusedate{jan20}.
Last month was \lastmonth{jan20}.
Next month is \nextmonth{jan20}.
\end{document}
답변2
패키지 없이도 이 작업을 수행할 수 있습니다. 자신만의 \lastmonth
매크로를 정의할 수 있습니다.
\documentclass{article}
% \setdate{<day>}{<month>}{<year>}
\newcommand{\setdate}[3]{\day=#1\month=#2\year=#3\relax}%
\newcommand{\lastmonth}{%
\ifcase\month\or% 0
December\or % 1
January\or % 2
February\or % 3
March\or % 4
April\or % 5
May\or % 6
June\or % 7
July\or % 8
August\or % 9
September\or % 10
October\or % 11
November\fi % 12
}
\begin{document}
Today is \today.
Last month was \lastmonth.
\setdate{20}{1}{2017}%
Today is \today.
Last month was \lastmonth.
\end{document}