\part
有没有办法在书籍类中每个章节的开头添加一个小段落(一种摘要) ?我知道有很多方法可以做到这scrreprt
一点,但我需要保留我的书籍类...如果可能的话,我希望将此段落与部分标题放在同一页上。
提前感谢您的回答
布赖斯
答案1
您可以定义一个partwithabstract
环境:
\documentclass[oneside]{book}
\usepackage{xpatch}
\makeatletter
\xpatchcmd{\part}{\null\vfil}{\vspace*{.1\textheight}}{}{}
\providecommand{\abstractname}{Abstract}
\newenvironment{partwithabstract}
{\begingroup\let\@endpart\relax\part@withabstract}
{\endquotation\endgroup\@endpart}
\newcommand{\part@withabstract}{\@dblarg\part@@withabstract}
\def\part@@withabstract[#1]#2{%
\part[#1]{#2}%
\vfil
\begin{center}\bfseries\abstractname\vspace{-.5em}\vspace{\z@}\end{center}
\quotation
}
\makeatother
\usepackage{lipsum}
\begin{document}
\tableofcontents
\begin{partwithabstract}{First Part}
\lipsum[1-2]
\end{partwithabstract}
\begin{partwithabstract}[Second for the TOC]{Second Part}
\lipsum[2]
\end{partwithabstract}
\end{document}
主要的变化是标题设置在从顶部开始的固定高度;摘要在剩余空间中垂直居中(您有责任使其适合)。
\vfil
如果在\vfill
的定义中改为\part@@withabstract
,即
\def\part@@withabstract[#1]#2{%
\part[#1]{#2}%
\vfill
\begin{center}\bfseries\abstractname\vspace{-.5em}\vspace{\z@}\end{center}
\quotation
}
摘要将与底部边距齐平。
\abstractname
如果愿意,您可以删除相关位:要删除的代码是
\begin{center}\bfseries\abstractname\vspace{-.5em}\vspace{\z@}\end{center}
技术文档我oneside
只是为了并排显示两个部分页面。
答案2
我abstract
从课堂上复制了定义article
并做了一些修改,也定义了\abstractname
。
此外,还有一个命令\injectabstract
在之前生效\@endpart
,即在部分标题排版之后。
\injectabstract
检查是否\@localabstract
已定义,并相应地排版摘要,如果未定义,则不执行任何操作。
\localabstract
是一个包装命令,用于存储下一个摘要的内容。
对于每个部分都应该有这样的摘要\localabstract
和其使用的相关内容。
\documentclass[notitlepage]{book}
\usepackage{xpatch}
\makeatletter
\newcommand{\abstractname}{Abstract}
\if@titlepage
\newenvironment{abstract}{%
\null\vfil
\@beginparpenalty\@lowpenalty
\begin{center}%
\bfseries \abstractname
\@endparpenalty\@M
\end{center}}%
{\par\vfil\null\endtitlepage}
\else
\newenvironment{abstract}{%
\if@twocolumn
\section*{\abstractname}%
\else
\small
\begin{center}%
{\bfseries \abstractname\vspace{-.5em}\vspace{\z@}}%
\end{center}%
\quotation
\fi}
{\if@twocolumn\else\endquotation\fi}
\fi
\newcommand{\localabstract}[1]{%
\def\@localabstract{#1}%
}
\newcommand{\injectabstract}{%
\@ifundefined{@localabstract}{%
}{%
\begin{abstract}
\@localabstract%
\end{abstract}%
}
\let\@localabstract\relax%
}
\xpretocmd{\@endpart}{%
\injectabstract\par%
}{}{}
\makeatother
\usepackage{blindtext}
\begin{document}
\localabstract{\blindtext}
\part{Foo}
\part{Foobar}
\end{document}
答案3
很简单的:
\documentclass{book}
\usepackage{xpatch}
\makeatletter
\xpretocmd{\@endpart}{%
\ifx\@abstract\@empty\else
\bigskip
\begin{quote}\@abstract\end{quote}
\global\let\@abstract\@empty
\fi
}{}{}
\newcommand{\partabstract}[1]{%
\renewcommand{\@abstract}{#1}%
}
\newcommand{\@abstract}{}
\makeatother
\usepackage{lipsum}
\begin{document}
\partabstract{\lipsum[1-2]}
\part{First Part}
\chapter{First Chapter}
\lipsum
\partabstract{\lipsum[3]}
\part{Second Part}
\chapter{Second Chapter}
\lipsum
\part{Third Part}
\chapter{Third Chapter}
\lipsum
\end{document}