Gostaria de escrever algo como uma "citação mais atribuição", por exemplo, no início de um capítulo de livro. Deveria ficar assim:
CHAPTER TITLE
This is an introductory quote.
It's stylistically questionable,
but it's a fun LaTeX exercise.
-- said by me
Now starts the main body text, which is not rele-
vant to this question. It just goes on and on and
on and on.
It just looks like ordinary text. You do not
have to keep reading.
Para isso, possuo um ambiente e um comando, utilizado assim:
\section{Chapter Title}
\begin{fooquote}
This is an introductory quote % etc. etc.
\quoteattribution{-- said by me}
\end{fooquote}
Pergunta:Como posso garantir que não há quebra de página entre a atribuição e o corpo da citação? Não me importo se houver uma quebra de páginadentro dea citação, mas não deve haver nenhuma entre a citação e a atribuição.
Fico feliz em alterar toda a minha configuração, se for necessário. No meu caso é assim:
\newenvironment{fooquote}%
{ \bgroup
\let\oldend=\end
\def\end##1{\oldend{##1}\csname @afterindentfalse\endcsname
\csname @afterheading\endcsname}
\begin{quote}%
\itshape%
}{%
\end{quote}
\egroup
}
\newcommand{\quoteattrib}[1]{\normalfont\flushright#1}
Responder1
Na verdade, seria muito mais fácil responder se houvesse um documento de exemplo fornecido, os fragmentos são muito mais difíceis de comentar, mas
\newenvironment{fooquote}%
{ \bgroup
\let\oldend=\end
\def\end##1{\oldend{##1}\csname @afterindentfalse\endcsname
\csname @afterheading\endcsname}
\begin{quote}%
\itshape%
}{%
\end{quote}
\egroup
}
\newcommand{\quoteattrib}[1]{\normalfont\flushright#1}
os \bgroup
\egroup
não são necessários porque o fooquote
ambiente já é um grupo, também { \bgroup
introduz um caráter espacial.
A \end
redefinição (que na verdade é bastante perigosa) parece ser muito cedo e afetará a qualidade \end
de qualquer ambiente aninhado e, em particular, do quote
ambiente. Você só deseja ativá-lo depois fooquote
(presumo), então deve estar logo no final do código final da definição.
flushright
pretende ser um formulário de ambiente, sendo o formulário de declaração, \raggedleft
mas se for uma linha, eu provavelmente usaria apenas \hspace{\fill}
.
\nopagebreak
deve ser suficiente para evitar quebras de página nesse ponto, desde que haja flexibilidade em outras partes da página.
\documentclass{book}
\makeatletter
\newenvironment{fooquote}{%
\begin{quote}%
\itshape
}{%
\end{quote}%
\par
\aftergroup\@afterindentfalse
\aftergroup\@afterheading
\ignorespacesafterend
}
\newcommand{\quoteattrib}[1]{\par\nopagebreak\normalfont\hspace*{\fill}#1\par}
\makeatother
\begin{document}
\chapter{CCC}
\begin{fooquote}
red yellow blue
\quoteattrib{me}
\end{fooquote}
One two three. One two three. One two three. One two three.
One two three. One two three. One two three. One two three.
One two three. One two three. One two three. One two three.
One two three. One two three. One two three. One two three.
One two three. One two three. One two three. One two three.
One two three. One two three. One two three. One two three.
\end{document}