Quiero definir un entorno abstracto para \documentclass{book}
. Por lo tanto, copié las definiciones relevantes dereport.cls
deaquíen mi preámbulo. Pero no funciona. ¿Dónde está el problema?
\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}
Sé que hay muchas soluciones en la web sobre cómo escribir resúmenes en la clase de libros. Lo que más me interesa es la pregunta de por qué mi solución de definir el entorno técnicamente no funciona.
Respuesta1
Lo estás utilizando \abstractname
en el entorno, pero el látex no lo sabe. Este es el error que obtuviste. Por lo tanto, definirlo resuelve el problema. Tienes que definir \abstractname
por
\newcommand\abstractname{Abstract}
Su MWE se convierte en:
\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}