引用环境并在末尾引用

引用环境并在末尾引用

我想定义一个 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

\signedTeXbook 第 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,并执行问题所要求的操作。

答案4

我认为,我发现实现此目的的最简单的变体

\begin{quote}
  The only way to make the deadline—the only way to go fast—is to keep the code as clean as possible at all times.
  \begin{flushright}
    \tiny{---Robert C. Martin, Clean Code}
  \end{flushright}
\end{quote}

在此处输入图片描述

相关内容