如何更改 termcal 中的日期格式?

如何更改 termcal 中的日期格式?

我想删除序数和月份名称,termcal但到目前为止还没有成功。根据软件包文档,原始代码是:

\newcommand{\calprintdate}{%
\ifnewmonth\framebox{\monthname\ \ordinaldate}%
\else \ordinaldate\fi
}

这样就会得到像“10 月 1 日”或“8 月 26 日”这样的日期。我的目标是分别将它们更改为“10/1”和“8/26”。由于我是 LaTeX 新手,所以我的尝试有点尴尬:

\renewcommand{\calprintdate}{%
    \ifnewmonth\framebox{\c@month\ \c@date}%
    \else \ordinaldate\fi
}

这会输出“@month @date”之类的乱码,这让我很困惑,因为文档确实指出这\c@month是月份计数器(Jan = 1)。我也没有更改\ordinaldate\else行,我不知道这是什么\fi意思。

这是一个没有的最小工作示例\renewcommand

\documentclass[12pt]{article}
\usepackage{termcal}

\begin{document}

\begin{calendar}{8/31/2014}{5}
\setlength{\calboxdepth}{.3in}

% Description of the Week.
\calday[Sun]{\noclassday} % Sunday
\skipday\skipday % Monday, Tuesday
\calday[Wed]{\noclassday} % Wednesday
\skipday\skipday % Thursday, Friday
\calday[Sat]{\noclassday}

\caltext{8/31/2014}{Exam 1}
\caltext{9/7/2014}{Exam 2}

\end{calendar}

\end{document}

MWE 的输出

我也不明白为什么要打印“9 月 3 日”,如果根据\calprintdate,只应打印新月份的日期。

答案1

事实证明这很容易:在内部术语表使用计数器monthdate(用于月份中的日期)和year。因此,要执行所需的操作,您只需要执行以下操作:

\renewcommand{\calprintdate}{%
     \ifnewmonth\framebox{\arabic{month}/\arabic{date}}%
     \else\arabic{date}%
     \fi}

现在你的日历变成:

在此处输入图片描述

我认为这就是你想要的。如果你想始终打印月份数字,那么请使用:

\renewcommand{\calprintdate}{%
     \ifnewmonth\framebox{\arabic{month}/\arabic{date}}%
     \else\arabic{month}/\arabic{date}%
     \fi}

最后,如果你不想在每个月的第一个日期周围出现方框,你可以将其简化为

\renewcommand{\calprintdate}{\arabic{month}/\arabic{date}}

[编辑在旁边:“@month @date 乱码”的解释

在 LaTeX 中,你可以使用以下方法创建计数器

\newcounter{countername}

在内部,这被存储为 TeX 计数器\c@countername(此处countername可以是任意的)。在幕后代码中,使用\c@countername形式有时很有用,但对于普通人来说,这很少是必要的。如果您确实要使用,\c@countername那么您应该用 @ 字符包围您的代码,\makeatletter...\makeatother因为 @ 字符是“受保护的”,因此不能在普通命令中使用 - 这就是为什么@month在您尝试这样做时会打印 etc。(有关 @ 的更多信息,请在 TeX 中搜索“类别代码”。)最后,如上所述,要打印计数器,您可以使用\arabic{countername}将其打印为普通数字(123...),\alph{countername}按顺序打印abc, `...,等等。]

相关内容