如何在目录之后或之前立即打印摘要页?

如何在目录之后或之前立即打印摘要页?

如何才能独立于文档中的环境位置,abstract立即打印该页面之后或之前的部分?TOCabstract

\documentclass[14pt,a4paper]{extbook}
\def\keywords{A, B, C, ...}
\newenvironment{abstract}{\pagenumbering{alph}%
        \chapter*{Abstract%
            \vspace*{-20pt}%
            \markboth{%
                \MakeUppercase Abstract}{\MakeUppercase Abstract}}%
}{\section*{keywords:}\keywords\newpage}%

\author{AAAA}
\title{my booooook}
\begin{document}
\maketitle
\tableofcontents
%abstract here
\chapter{chap 1}
\section{sec 1}

\begin{abstract}
this is the book abstract
\end{abstract}
\end{document}

答案1

您将摘要设置为\chapter*,这会在设置章节标题之前发出\cleardoublepage(因为openright默认情况下为 true)。此“双页清除”必然会强制章节从正面(右侧)页面开始,如果需要,则留下空白(反面)页面。

您可以通过暂时设置\newpage为来避免这种情况\relax(无操作)来避免这种情况。以下是将摘要内容存储在文件中.aux(作为\abstractbody)的一种尝试,然后在之后立即检索和使用\tableofcontents

在此处输入图片描述

\documentclass{extbook}

\usepackage{lipsum}% Just for this example
\usepackage{environ}

\def\keywords{A, B, C, \ldots}
\newenvironment{abstract@toc}{%
  \clearpage
  \pagenumbering{alph}% Reset page numbering
  \begingroup
  \let\newpage\relax
  \vspace*{-20pt}% Move chapter title up
  \chapter*{Abstract}% Set abstract chapter
  \markboth{\MakeUppercase{Abstract}}{\MakeUppercase{Abstract}}%
  \endgroup
}{\section*{keywords:}\keywords\newpage}%

\makeatletter
\NewEnviron{abstract}{\immediate\write\@mainaux{\string\gdef\string\abstractbody{\BODY}}}
\makeatother

\let\oldtableofcontents\tableofcontents
\renewcommand{\tableofcontents}{%
  \oldtableofcontents
  \begin{abstract@toc}
    \csname abstractbody\endcsname
  \end{abstract@toc}
}

\author{An author}
\title{A title}

\begin{document}

\maketitle

\tableofcontents

\cleardoublepage
\pagenumbering{arabic}
\chapter{First chapter}
\section{First section}

\begin{abstract}
\lipsum[1-3]
\end{abstract}

\end{document}

相关内容