请考虑以下 MWE:
\documentclass[a4paper]{memoir}
\newleadpage*{frontmatterpage}{Front Matter}
\begin{document}
\frontmatter
\frontmatterpage
\chapter{A}
\end{document}
如果您尝试编译此代码,将会引发以下错误:
! LaTeX Error: Missing \begin{document}.
See the LaTeX manual or LaTeX Companion for explanation.
Type H <return> for immediate help.
...
l.2 \newleadpage*{frontmatterpage}{F
ront Matter}
但是,删除文档*
中的时\newleadpage
,编译时没有任何错误。由于回忆录文档指出,*
可以与此命令一起使用,以避免将页面添加到目录中。这个错误可以解决吗?
答案1
在memoir
文档\newleadpage
是不正确的。当你查看(和\renewleadpage
)的定义时,这一点就变得很明显了:
\newcommand*{\newleadpage}[3][empty]{%
\@namedef{#2}{\@ifstar{\dlfm@msapppage{#1}{#2}{#3}}%
{\dlfm@mapppage{#1}{#2}{#3}}}}
\newcommand*{\renewleadpage}[3][empty]{%
\@namedef{#2}{\@ifstar{\dlfm@msapppage{#1}{#2}{#3}}%
{\dlfm@mapppage{#1}{#2}{#3}}}}
应该清楚的是,没有任何条件*
,因为两个宏都采用一个可选参数和两个强制参数。
您需要以下定义/用法:
\documentclass{memoir}
\newleadpage{frontmatterpage}{Front Matter}
\begin{document}
\frontmatter
\tableofcontents
\frontmatterpage*
\frontmatterpage
\chapter{A}
\end{document}
事实上,.dtx
(注释代码)包含对宏更合适的描述:
\newleadpage[<page-style>]{<cmdname>}{<title>}
创建名为 的新宏\cmdname
,当调用时,会排版一个页面,如附录页面,并使用页面样式(默认)\cmdname*
设置标题。普通版本会向目录添加条目,但加星号的版本 不会。更改定义。<title>
<page-style>
empty
\cmdname*
\renewleadpage