我尝试为书中的题词定制一个新的环境。此页面不应有花哨的标题或类似内容。它应该只包含一个或多个题词的列表。为此,我使用了 epigraph 包,并在 .cls 文件中定义了以下内容:
\RequirePackage{epigraph}
\setlength{\epigraphwidth}{0.56\textwidth}
\let\oldqitem\qitem
\renewcommand{\qitem}[3]{\oldqitem{\textit{#1}}{\textit{#2}\\\textsc{#3}}}
\newenvironment{epigpage}[1][10]{%begin
\thispagestyle{empty}
\phantomsection
\vspace*{#1\@line} %default 10
\begin{epigraphs}\begin{flushright}
}{%end
\end{flushright}\end{epigraphs}
\vspace{\fill}
\blankpage
}
执行更新命令是\qitem
为了区分书名和作者姓名。然后我只需开始一个新的空白页并开始通常的题词环境。
最后,在 .tex 文件中我执行以下操作:
\begin{epigpage}
\qitem{``My favourite quote.''}{My favourite book}{My favourite authors}
\end{epigpage}
问题是,编译时出现以下错误:
LaTeX Error: Something's wrong--perhaps a missing \item.
l.8 \qitem
{``My favourite quote.''}{My favourite book}{My favourite authors}
有人能帮忙吗?
答案1
定义一个新环境,其中的flushright
环境嵌套在另一个epigraphs
环境中,如下所示
\newenvironment{epigpage}
{
\begin{epigraphs}
\begin{flushright}
}{
\end{flushright}
\end{epigraphs}
}
确实会产生您报告的错误。
我没有找到问题的根源,但在你的定义\begingroup\raggedleft
中用\begin{flushright}
和\endgroup
代替似乎可以解决问题。\end{flushright}
epigpage
但是,您甚至不需要那个flushright
环境,因为您的题词已经被刷新到右侧:
\documentclass{scrbook}
\usepackage[showframe]{geometry} % top show that the epigraphs
% are already flushed to the right
\usepackage{hyperref}
\usepackage{epigraph}
\setlength{\epigraphwidth}{0.56\textwidth}
\let\oldqitem\qitem
\renewcommand{\qitem}[3]{\oldqitem{\textit{#1}}{\textit{#2}\\\textsc{#3}}}
\newenvironment{epigpage}[1][10]{%begin
\thispagestyle{empty}
\phantomsection
\vspace*{#1\baselineskip} % I changed that because \@line was undefined
\begin{epigraphs}
}{%end
\end{epigraphs}
\vspace{\fill}
\cleardoublepage % I change that because \blankpage was undefined
}
\begin{document}
\begin{epigpage}
\qitem{``My favourite quote.''}{My favourite book}{My favourite authors}
\end{epigpage}
\end{document}