在我写的文本中,我大量使用了区块引用,因为稍后我需要引用它们(实际上有点像编号定理)。我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
仅在水平模式下有效。