为什么无法识别其自身之外的memoir
特定语言日期(带有) ?\today
\maketitle
当我在之后添加这样的元数据时,它工作正常\begin{document}
,但我以前从未这样做过(我应该这样做吗?如果是,为什么?)
请参阅以下 MWE
\documentclass{memoir}
\usepackage[brazil]{babel}
\title{A title}
\author{A. Uthor}
\date{\today}
\begin{document}
\maketitle
thedate: \thedate
\end{document}
与(之前article
需要在这里打印因为之后会被删除)相反:@date
\maketitle
\documentclass{article}
\usepackage[brazil]{babel}
\makeatletter
\newcommand\thedate{\@date}
\makeatother
\title{A title}
\author{A. Uthor}
\date{\today}
\begin{document}
thedate: \thedate
\maketitle
\end{document}
答案1
memoir
\thedate
通过“冻结”论证来定义\date
在发布声明的此刻。
当\date
出现在序言中时,尚未选择任何语言(因此\today
扩展为美式英语格式的当前日期)。 仅在处理 时才会将语言切换为巴西葡萄牙语\begin{document}
。
解决方案:
\documentclass{memoir}
\usepackage[brazil]{babel}
\begin{document}
\title{A title}
\author{A. Uthor}
\date{\today}
\maketitle
thedate: \thedate
\end{document}
或者(但我不建议这样做)
\documentclass{memoir}
\usepackage[brazil]{babel}
\title{A title}
\author{A. Uthor}
\selectlanguage{brazil}
\date{\today}
\begin{document}
\maketitle
thedate: \thedate
\end{document}
更激烈的措施是修补该\date
命令以延迟定义\thedate
:
\documentclass{memoir}
\usepackage[brazil]{babel}
\usepackage{etoolbox}
\makeatletter
\patchcmd\date
{\protected@xdef\thedate{#1}}
{\AtBeginDocument{\protected@xdef\thedate{#1}}}
{}{}
\makeatother
\title{A title}
\author{A. Uthor}
\date{\today}
\begin{document}
\maketitle
thedate: \thedate
\end{document}