重新定义空白时回忆录中第一页标题位置错误

重新定义空白时回忆录中第一页标题位置错误

对于我的文档草稿,我试图为每一页添加日期和时间,并决定为此使用页眉/页脚。我希望时间戳位于通常有的页面上\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}

这导致第一页上出现明显错误的标题:

损坏的 MWE 的输出显示错误的标题位置

同样使用该样式的“版权页”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}{}{}(没问题): memomir 空样式,左标题

使用\makeoddhead{empty}{}{\draftdate}{}(没问题): memomir 空样式,中心标题

使用\makeoddhead{empty}{}{}{\draftdate}(什么??): memomir 空样式,右标题

使用\makeoddhead{empty}{\draftdate}{test}{}(没问题): memomir 空样式,左侧和中间标题

使用\makeoddhead{empty}{\draftdate}{}{test}(什么??): memomir 空样式,左右标题

使用\makeoddhead{empty}{}{\draftdate}{test}(没问题): memomir 空样式,中间和右侧标题

因此,正如您所看到的,有两个标题在empty页面样式中的右标题中以不同的方式运行memoir

  • 右侧标题
  • 左、右标题

因此,如果您只想使用右标题或右标题与左标题一起使用,您可以欺骗它。通过在中心标题槽中放置一个空格来绕过该问题!

相关内容