防止在 displayquote 环境中出现换行

防止在 displayquote 环境中出现换行

在我写的文本中,我大量使用了区块引用,因为稍后我需要引用它们(实际上有点像编号定理)。我displayquote为此目的使用了它,它的效果与预期的差不多。(引用部分也得到了处理,使用\label

\documentclass[fontsize=11pt,BCOR=8mm]{scrartcl}
\usepackage[main=ngerman]{babel}

\usepackage[silent]{fontspec}                   \setmainfont{Minion Pro}
\usepackage{setspace}                           
\usepackage[german=quotes]{csquotes}            

\usepackage{etoolbox}                           \newcounter{quote}

    \AtBeginEnvironment{displayquote}{\refstepcounter{quote}\singlespace\vspace{-.5em}\small\itshape}
    \AtEndEnvironment{displayquote}    {\hfill\rlap{\scriptsize\normalfont[\thequote]}\vspace{-.5em}\endsinglespace}

\begin{document}

A bit of dummy text here to get us started, followed by the first quote:

\begin{displayquote}
Bei [Gastmann] ist das Böse nicht der Ausdruck einer Philosophie oder eines Triebes, sondern seiner Freiheit: der Freiheit des Nichts. (S.~109) \end{displayquote}

Not an issue; the quote is formatted as desired, and the counter is displayed.

\begin{displayquote}Als jahrelanger Gesandter Argentiniens in China genieße er das Vertrauen der fremden Macht und als ehemaliger Verwaltungspräsident des Blechtrusts jenes der Industriellen.~(S.~73f.)
\end{displayquote}

In this case, however, [2] is shown in the next line. This must be prevented, even at the cost of bleeding into the right margin.

\end{document}

但是,如果我的引文较长,填满了最后一行,我的引文计数器就会单独显示在下一行。我想防止这种情况发生。

在此处输入图片描述 顺便说一句,我正在使用 LuaTeX。不使用fontspec似乎可以解决这个问题,但出于显而易见的原因,这不是一个选择。

答案1

由于无法亲自测试(没有所有必需的软件包和字体),我建议“退回”到基本的 TeX 方法。这是不是一般推荐。只有一个定义需要修改:

\AtEndEnvironment{displayquote}    {\hfill\rlap{\scriptsize\normalfont[\thequote]}\vspace{-.5em}\endsinglespace}

为了抑制换行,必须克服\end{displayquote}在新行中输入时可能插入的空格。 \unskip将实现此目的,并\nobreak阻止 (La)TeX 进入新行。 插入一个小的固定空格可能会有所帮助(这样数字将与引文末尾明显分开)。 因此建议用以下内容替换定义的第一部分:

\AtEndEnvironment{displayquote}    {\unskip\nobreak\,\hfill ...

绝不在 之前留一个空行\end{displayquote}。这将始终强制数字进入新行 -\unskip仅在水平模式下有效。

相关内容