Ich möchte eine abstrakte Umgebung für definieren \documentclass{book}
. Daher habe ich die relevanten Definitionen von kopiert report.cls
.Hierin meine Präambel. Aber es funktioniert nicht. Wo ist das Problem?
\documentclass[11pt, a4paper]{book}
\usepackage{lipsum}
\makeatletter
\if@titlepage
\newenvironment{abstract}{%
\titlepage
\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
\makeatother
\begin{document}
\begin{titlepage}
\begin{abstract}
\lipsum[1]
\end{abstract}
\end{titlepage}
\chapter{This and That}
\lipsum[2]
\end{document}
Ich weiß, dass es im Internet viele Lösungen zum Schreiben von Abstracts im Buchkurs gibt. Mich interessiert vor allem die Frage, warum meine Lösung zum Definieren der Umgebung technisch nicht funktioniert.
Antwort1
Sie verwenden es \abstractname
in der Umgebung, aber Latex kennt es nicht. Dies ist der Fehler, den Sie erhalten haben. Daher löst die Definition das Problem. Sie müssen definieren \abstractname
durch
\newcommand\abstractname{Abstract}
Ihr MWE wird:
\documentclass[11pt, a4paper]{book}
\usepackage{lipsum}
\newcommand\abstractname{Abstract} %%% here
\makeatletter
\if@titlepage
\newenvironment{abstract}{%
\titlepage
\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
\makeatother
\begin{document}
\begin{titlepage}
\begin{abstract}
\lipsum[1]
\end{abstract}
\end{titlepage}
\chapter{This and That}
\lipsum[2]
\end{document}