本の中で抽象的な環境を定義する

本の中で抽象的な環境を定義する

の抽象環境を定義したい\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}

書籍クラスで要約を書く方法については、Web 上に多くのソリューションがあることは知っています。私が主に興味を持っているのは、環境を技術的に定義する私のソリューションがなぜ機能しないのかという疑問です。

答え1

環境で使用しています\abstractnameが、LaTeXはそれを認識していません。これがエラーです。したがって、これを定義することで問題は解決します。次の\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{}

出力例のスクリーンショット

関連情報