我经常在我的文档中引用引用,例如:
\begin{quote}
Now I am become Death, the destroyer of worlds.
Also, I like bananas!
I like bananas so much that my quotes about them run to \emph{multiple paragraphs}!
\end{quote}
\begin{flushright}Ronald MacDonald\end{flushright}
我希望我的flushright
环境与我的环境的最后一行保持在同一页面上quote
。
我的想法是编写一个新的环境,如果需要的话,该环境会强制分页符出现在我引用的最后一行或之前。
我可以从其他问题中看到(特别是这个)我应该使用widowpenalties
,但我不知道如何应用惩罚仅有的到最后一行。
另一个问题上的例子似乎表明将对行 -1 和所有其他行\windowpenalties 3 x y 0
应用惩罚。x
y
具体来说,它表明
{\widowpenalties 4 10000 10000 -10000 0 \brokenpenalty 0 \par}
用于在段落倒数第三行之前断行。
然而,我不知道该如何写newenvironment
程序来应用惩罚,使得 LaTeX 在段落的最后一行之前中断,但是只适用于我引文的最后一段。
答案1
您不应该将这两个部分分成两个环境:
\documentclass{article}
\usepackage{xparse}
\NewDocumentEnvironment{mquote}{m}
{\begin{quote}}
{{\interlinepenalty 10000 \brokenpenalty 0 \par}% <--- change to \par, if you like
\nopagebreak\makebox[\linewidth][r]{#1}\end{quote}}
\setlength\textheight{2cm}
\begin{document}
\noindent X\hrulefill X
\begin{mquote}{Ronald MacDonald}
Now I am become Death, the destroyer of worlds.
Also, I like bananas!
I like bananas so much that my quotes about them run to \emph{multiple paragraphs}!
\end{mquote}
\end{document}
使用此代码,整个最后一段将与归属一起出现在下一页;如果您更改
{\interlinepenalty 10000 \brokenpenalty 0 \par}
进入\par
,只有最后一行会移动到下一页。
和
{\widowpenalties 3 10000 10000 0 \brokenpenalty 0 \par}
你要确保最后二最后一段的每一行都将伴随下一页的归属。
答案2
对于这样的引用,我通常会将引用内容包含在引用环境中,并将其与\hfill
\begin{quote}
Now I am become Death, the destroyer of worlds.
Also, I like bananas!
I like bananas so much that my quotes about them run to \emph{multiple paragraphs}!\hfill Ronald MacDonald
\end{quote}
MWE 会有所帮助。答案可能取决于我们的“引用”格式。