Определите абстрактную среду в книге

Определите абстрактную среду в книге

Я хочу определить абстрактную среду для \documentclass{book}. Поэтому я скопировал соответствующие определения из report.clsизздесьв мою преамбулу. Но это не работает. В чем проблема?

\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}

Я знаю, что в сети есть много решений по написанию рефератов в классе книг. Меня в основном интересует вопрос, почему мое решение определения среды технически не работает.

решение1

Вы используете \abstractnameв среде, но латекс не знает об этом. Это ошибка, которую вы получили. Следовательно, определение решает проблему. Вы должны определить \abstractnameпо

\newcommand\abstractname{Abstract}

Ваш MWE становится:

\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}

решение2

\newenvironment{abstract}[1]{%
\begin{center}\normalfont\textbf{Abstract}\end{center}
\begin{quotation} #1 \end{quotation}
}{%
\vspace{1cm}
}

У меня работает достаточно хорошо. Просто позвоните с \abstract{}.

снимок экрана примера вывода

Связанный контент