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