如何才能独立于文档中的环境位置,abstract
立即打印该页面之后或之前的部分?TOC
abstract
\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}