我想定义一个 quote 环境,使得右侧的引用之后出现带有页码的作者。我的解决方案是重新定义 quote 环境
\usepackage{amsthm} % pushQED, popQED
\newenvironment{aquote}[1]{%
\pushQED{#1}%
\begin{quote}
}{%
\par\nointerlineskip\noindent\hfill(\popQED)%
\end{quote}%
}
结果如下:
缺点是parskip
作者前面的,这在第一个引文中浪费了一些空间,但在第二个引文中却恰到好处。如果我将命令更改为:
\newenvironment{aquote}[1]{%
\pushQED{#1}%
\begin{quote}
}{%
\noindent\hfill(\popQED)%
\end{quote}%
}
我得到以下结果:
现在,第一个引文中作者名字的位置是完美的,但在第二个引文中,我想要一个parskip
在前面,就像我的第一个例子一样。
我怎样才能知道该行是否有足够的空间来放置没有后面的作者parskip
,或者是否没有足够的空间来引入parskip
将作者放在下一行?
答案1
\signed
TeXbook 第 106 页上有一个很好的宏可以实现这个目的;这里有一个小变化,用于构建aquote
按预期运行的环境;
\documentclass{book}
\def\signed #1{{\leavevmode\unskip\nobreak\hfil\penalty50\hskip2em
\hbox{}\nobreak\hfil(#1)%
\parfillskip=0pt \finalhyphendemerits=0 \endgraf}}
\newsavebox\mybox
\newenvironment{aquote}[1]
{\savebox\mybox{#1}\begin{quote}}
{\signed{\usebox\mybox}\end{quote}}
\begin{document}
\begin{aquote}{Bourbaki}
This is a case where the name fits in nicely with the quote so the name will appear in the same line.
\end{aquote}
\begin{aquote}{Nicolas Bourbaki}
This is a case where the name won't fit in nicely with the quote, and in this case the name will be moved to the next line.
\end{aquote}
\end{document}
结果如下:
答案2
另外,为了完整性,请参考软件包attrib
。你可以使用以下命令来近似你想要的效果:
\begin{quote}
We call a disposition the arrangement of that which has parts, in respect
either of place or of capacity or of kind; for there must be a certain
position, as the word ‘disposition’ shows.
\attrib{{\em Metaphysics} {\greektext D}.19, 1022b1--3}
\end{quote}
答案3
为了完整起见,我只想补充一下,回忆录包提供了
\sourceatright[⟨length⟩]{⟨text⟩}
quote
命令,它可以在或环境之后立即使用quotation
,并执行问题所要求的操作。