我知道abstract
通常没有为书籍类别定义,但是您可以自行定义它作为一种解决方法。但是,它似乎总是强制自己进入新页面,即强制摘要占用一页。如果我想为不同的语言添加多个摘要(例如,一个摘要用于撰写论文的语言,另一个摘要用于英语),这就不好了。
以下是简化的代码:
% !TeX program = lualatex
% !BIB TS-program = biber
% !TeX encoding = UTF-8
% !TeX spellcheck = de_DE
\documentclass[12pt,a4paper,notitlepage,numbers=noenddot,oneside]{scrbook}
% deutsch
\usepackage[english, ngerman]{babel}
\usepackage[english, ngerman]{isodate}
\usepackage{lmodern} % font
\usepackage[autostyle, german=quotes]{csquotes} % deutsche Anführungszeichen mit \enquote
% abstract in book, https://tex.stackexchange.com/a/539606/98645
\newenvironment{abstract}{}{}
\usepackage{abstract}
\begin{document}
\begingroup
\setstretch{1.0}
\hypersetup{hidelinks}
\tableofcontents
\endgroup
\pagebreak
% \vfill
\begin{abstract}
Dies ist ein schöner Beispieltext für einen Abstract für ein Paper darüber, wie Abstracts ohne allzu viel Abstraktion abstrahiert werden können.
\end{abstract}
\selectlanguage{english}
\begin{abstract}
This is a nice example text for an abstract for a paper about how abstracts can be abstracted without too much abstraction.
\end{abstract}
\selectlanguage{ngerman}
% […]
\end{document]
这样一来,它就迫使新页面为了每个摘要。我曾尝试过重新定义抽象的开始和结束,但通过使用那里的代码并添加一些\vfill
,我可以将其放在一页上,但之后它就不再垂直居中了。我也测试过onecolabstract
而不是使用abstract
env,但没有什么区别。抽象包根据它的文档,这里似乎也没有提供任何有用的选项。
是的我见过这个问题,但它是关于具有样式的文档report
,其中摘要显然从未放在单个页面上,相应地abstract
包不会强制分页。因此,那里的答案只是围绕如何将标题放在同一页面上等。
顺便说一句,不,切换到另一种 LaTeX 风格不是解决方案——显然,我想要这种书的风格是出于其他原因。
基本上我的目标可以总结如下:我想两篇摘要,每页并让它们居中,就像一页中只有一个摘要一样。
答案1
abstract
您可以使用from的精简版本scrartcl
:
% !TeX program = lualatex
% !BIB TS-program = biber
% !TeX encoding = UTF-8
% !TeX spellcheck = de_DE
\documentclass[12pt,a4paper,notitlepage,numbers=noenddot,oneside]{scrbook}
% deutsch
\usepackage[english, ngerman]{babel}
\usepackage[english, ngerman]{isodate}
\usepackage{lmodern} % font
\usepackage[autostyle, german=quotes]{csquotes} % deutsche Anführungszeichen mit \enquote
\makeatletter
\newif\if@abstractlanguage
\newenvironment{abstract}[1][]
{%
\par\addvspace{3\baselineskip} % adjust to suit
\if\relax\detokenize{#1}\relax
\else\@abstractlanguagetrue
\begin{otherlanguage}{#1}%
\fi
\begin{center}
\normalfont\sectfont
\nobreak\abstractname\@endparpenalty\@M\end{center}
\begin{quotation}
}
{%
\end{quotation}%
\if@abstractlanguage\end{otherlanguage}\fi
}
\makeatother
\begin{document}
\begin{abstract}
Dies ist ein schöner Beispieltext für einen Abstract für ein Paper darüber,
wie Abstracts ohne allzu viel Abstraktion abstrahiert werden können.
\end{abstract}
\begin{abstract}[english]
This is a nice example text for an abstract for a paper about how abstracts
can be abstracted without too much abstraction.
\end{abstract}
\end{document}
如果您想将它们置于页面中央,您可以定义一个包装器环境:
% !TeX program = lualatex
% !BIB TS-program = biber
% !TeX encoding = UTF-8
% !TeX spellcheck = de_DE
\documentclass[12pt,a4paper,notitlepage,numbers=noenddot,oneside]{scrbook}
% deutsch
\usepackage[english, ngerman]{babel}
\usepackage[english, ngerman]{isodate}
\usepackage{lmodern} % font
\usepackage[autostyle, german=quotes]{csquotes} % deutsche Anführungszeichen mit \enquote
\makeatletter
\newif\if@abstractlanguage
\newenvironment{abstracts}{\cleardoublepage\vspace*{\fill}}{\vspace*{\fill}}
\newenvironment{abstract}[1][]
{%
\par\addvspace{3\baselineskip} % adjust to suit
\if\relax\detokenize{#1}\relax
\else\@abstractlanguagetrue
\begin{otherlanguage}{#1}%
\fi
\begin{center}
\normalfont\sectfont
\nobreak\abstractname\@endparpenalty\@M\end{center}
\begin{quotation}
}
{%
\end{quotation}%
\if@abstractlanguage\end{otherlanguage}\fi
}
\makeatother
\begin{document}
\begin{abstracts}
\begin{abstract}
Dies ist ein schöner Beispieltext für einen Abstract für ein Paper darüber,
wie Abstracts ohne allzu viel Abstraktion abstrahiert werden können.
\end{abstract}
\begin{abstract}[english]
This is a nice example text for an abstract for a paper about how abstracts
can be abstracted without too much abstraction.
\end{abstract}
\end{abstracts}
\end{document}