我之前问过一个问题,已经得到答案这里,它完全按照我提出的问题回答了我的问题。
\chead{\ifnum\day < 15
Mid-%
\else
End-%
\fi%
\monthname[\the\month]%
}
但是,这并不是真正需要的。我需要它做的是,如果是该月的前 15 天(即今天仍是 8 月底),则给出上个月的名称;如果大于 15,则给出当前月份。
已尝试创建一个新命令\prevmonth
但无法使其工作。
\newcommand{\prevmonth}{\if\month=September%
August%
\fi%
}
任何帮助,将不胜感激!
答案1
不确定“Mid-”等词语的修改,但对于所提问题,Christian 的回答的这种变体可能有效:
\documentclass{article}
\usepackage{fancyhdr}
\usepackage[english]{babel}
\usepackage{datetime}
\usepackage{blindtext}
\pagestyle{fancy}
\fancyhf{}
\chead{\ifnum\day < 15
End-%
\prevmonthname[\the\month]%
\else
End-%
\monthname[\the\month]%
\fi%
}
\def\prevmonthname[#1]{\ifcase#1%
\or December\or January\or February\or March\or April\or May%
\or June \or July \or August\or September\or October\or November\fi}
\begin{document}
\blindtext[5]
\clearpage
\day=10
\month=5
\blindtext[5]
\end{document}
这是采纳了 Manuel 建议的版本,但纠正了“January”的问题。通过这种方式,人们不会被困在英语中。
\documentclass{article}
\usepackage{fancyhdr}
\usepackage[english]{babel}
\usepackage{datetime}
\usepackage{blindtext}
\pagestyle{fancy}
\fancyhf{}
\chead{\ifnum\day < 15
End-%
\prevmonthname[\the\month]%
\else
End-%
\monthname[\the\month]%
\fi%
}
\def\prevmonthname[#1]{%
\ifnum#1=1\relax\prevmonthnamehelp[13]\else\prevmonthnamehelp[#1]\fi}
\def\prevmonthnamehelp[#1]{\monthname[\the\numexpr#1-1\relax]}
\begin{document}
\blindtext[5]
\clearpage
\day=10
\month=5
\blindtext[5]
\end{document}
答案2
假设,这End -
应该始终是前缀 ... 并且如果月份是 1 月且天数 < 15,则环绕。
\documentclass{article}
\usepackage{fancyhdr}
\usepackage[english]{babel}
\usepackage{datetime}
\usepackage{blindtext}
\newcounter{auxmonth}
\pagestyle{fancy}
\fancyhf{}
\chead{%
\setcounter{auxmonth}{\month}%
End - %
\ifnum\day < 15\relax
\ifnum\month = 1\relax
\setcounter{auxmonth}{12}% Wrap around
\else
\addtocounter{auxmonth}{-1}% Really decrease the help-counter
\fi
\fi
\monthname[\theauxmonth]%
}
\begin{document}
\blindtext[5]
\clearpage
\day=10
\month=1
\blindtext[5]
\clearpage
\day=20
\month=1
\blindtext[5]
\end{document}
答案3
如果您愿意切换到datetime2
,则可以计算日期。 可能有点过头了,但它不会对 January/Desember 产生任何问题,并且它可以与该包支持的任何语言一起使用。
该解决方案基于alwaysask 的答案已给出将(n)天添加到变量 date 中
输出
代码
\documentclass{article}
\usepackage{fancyhdr}
\usepackage[english]{babel}
\usepackage[calc]{datetime2}
\usepackage{lipsum}
\pagestyle{fancy}
\fancyhf{}
\chead{End of\monthEnd{ourDate}
}
\newcount\daycount
\newcommand{\monthEnd}[1]{%
\DTMsaveddateoffsettojulianday{#1}{-15}\daycount
\DTMsavejulianday{newDate}{\number\daycount}
\DTMmonthname{\DTMfetchmonth{newDate}}
}
\DTMsavedate{ourDate}{2016-07-14}
\begin{document}
\lipsum[1-5]
\clearpage
\DTMsavedate{ourDate}{2016-07-16}
\lipsum[1-5]
\end{document}
答案4
将此视为社区 wiki,因为这里的想法大多来自其他解决方案。Steven 创建了一个\premonthname
宏,Christian 使用特殊计数器auxmonth
。在我看来,这两者都没有必要:
\documentclass{article}
\newcommand\MonthName[1]{%
\ifcase#1\or January\or February\or March\or April\or May\or June
\or July\or August\or September\or October\or November\or December%
\fi%
}
\newcommand\MyMonth{%
\the\day\space\MonthName\month $\longrightarrow$ % if illistration nly
\ifnum\day<15%
\ifnum\month=1 December
\else\MonthName{\numexpr\the\month-1}
\fi%
\else\MonthName\month\fi\newline%
}
\begin{document}\noindent
\day=3 \month=1 \MyMonth
\day=15 \month=1 \MyMonth
\day=3 \month=8 \MyMonth
\day=15 \month=8 \MyMonth
\day=3 \month=12 \MyMonth
\day=15 \month=12 \MyMonth
\end{document}