对于我的文档草稿,我试图为每一页添加日期和时间,并决定为此使用页眉/页脚。我希望时间戳位于通常有的页面上\pagestyle{empty}
,因此我添加了如下页眉:
\documentclass[]{memoir}
\setbinding{0in}
\setlrmarginsandblock{1in}{1in}{*}
\setulmarginsandblock{1in}{1in}{*}
\checkandfixthelayout
\usepackage[en-US]{datetime2}
\usepackage{xcolor}
\usepackage{lipsum}
\newcommand{\draftdate}{\color{gray}\sffamily\small\DTMsetstyle{default}\DTMNow}
\makeevenhead{empty}{\draftdate}{}{}
\makeoddhead{empty}{}{}{\draftdate}
\makeevenhead{plain}{\draftdate}{}{}
\makeoddhead{plain}{}{}{\draftdate}
\begin{document}
\pagestyle{empty}
\noindent Title Page Stuff
\clearpage
\noindent Copyright Page Stuff
\clearpage
\pagestyle{plain}
\lipsum
\end{document}
这导致第一页上出现明显错误的标题:
同样使用该样式的“版权页”empty
是正确的,以下使用该样式的页面也是如此plain
。
empty
用新的页面样式替换foo
可以解决问题:
\documentclass[]{memoir}
\setbinding{0in}
\setlrmarginsandblock{1in}{1in}{*}
\setulmarginsandblock{1in}{1in}{*}
\checkandfixthelayout
\usepackage[en-US]{datetime2}
\usepackage{xcolor}
\usepackage{lipsum}
\newcommand{\draftdate}{\color{gray}\sffamily\small\DTMsetstyle{default}\DTMNow}
\makepagestyle{foo}
\makeevenhead{foo}{\draftdate}{}{}
\makeoddhead{foo}{}{}{\draftdate}
\makeevenhead{plain}{\draftdate}{}{}
\makeoddhead{plain}{}{}{\draftdate}
\begin{document}
\pagestyle{foo}
\noindent Title Page Stuff
\clearpage
\noindent Copyright Page Stuff
\clearpage
\pagestyle{plain}
\lipsum
\end{document}
然而,这不是一个完整的解决方案,因为我希望以后\cleardoublepage
在章节之间创建或插入的空白页也具有时间戳。
有趣的是,使用类似的标题可以\makeoddhead{empty}{}{any text}{\draftdate}
正常工作。
这里发生了什么事?
答案1
在memoir
样式上empty
有稍微特殊的设置。所有页面样式,除了 empty
添加了一些支柱以保持一致性。但empty
样式没有,否则您无法创建文本块大小几乎与纸张大小相同的文档(至少在没有memoir
警告的情况下)。
empty
正如您所见,样式中缺少的支柱可能会导致不可预测的行为。
很少有用户会弄乱empty
样式,但是如果您愿意,这是正确的方法:(a)首先创建一个新的空白页面样式,并命名不同的从empty
:
\makepagestyle{myempty}
这是空白页样式和支柱。
接下来覆盖现有的empty
样式:
\copypagestyle{empty}{myempty}
然后将您的更改添加为空。
就我个人而言,我不会使用页眉/页脚来添加草稿信息。我会使用一个可以在所有页面的绝对位置放置内容的包。尽管它是一个旧包,但我经常使用它eso-pic
。
或者您可以结合页面样式和eso-pic
(或类似的包)以便仅在章节开始时包含此信息(将其添加到样式中chapter
。我在一本书中使用它来从我的 subversion 档案中向每个章节(单独的文件)添加最后更改的信息。
答案2
这是一个解决办法。(虽然这个答案提供了一种解决方法和对什么有效/无效的观察,但@daleif 表示你真的应该创建一种新的风格,比如myempty
,而不是使用empty
)。
代替:
\makeoddhead{empty}{}{}{\draftdate}
和:
\makeoddhead{empty}{}{~}{\draftdate}
就是这样!
现在,让我们看看这种行为。它似乎源于标题的右侧部分。此行为似乎影响\makeevenhead{empty}{}{}{}
和\makeoddhead{empty}{}{}{}
。
使用\makeoddhead{empty}{\draftdate}{}{}
(没问题):
使用\makeoddhead{empty}{}{\draftdate}{}
(没问题):
使用\makeoddhead{empty}{}{}{\draftdate}
(什么??):
使用\makeoddhead{empty}{\draftdate}{test}{}
(没问题):
使用\makeoddhead{empty}{\draftdate}{}{test}
(什么??):
使用\makeoddhead{empty}{}{\draftdate}{test}
(没问题):
因此,正如您所看到的,有两个标题在empty
页面样式中的右标题中以不同的方式运行memoir
:
- 右侧标题
- 左、右标题
因此,如果您只想使用右标题或右标题与左标题一起使用,您可以欺骗它。通过在中心标题槽中放置一个空格来绕过该问题!