确保最后一行的长度最短

确保最后一行的长度最短

这个问题引出了包中的一个新功能:
impnattypo

法语字体排版中有一条规则,即段落的最后一行不应短于下一段落缩进的两倍。

是否可以指定这一点,或者至少考虑到所有段落都缩进相同的值,以确保最后一行的长度超过该值的两倍?

也欢迎特定于 LuaTeX 的解决方案。

答案1

您要求一个 LuaTeX 解决方案,并且您得到了一个:

\documentclass{article}
\usepackage{luatexbase,luacode}

\begin{luacode}
local PENALTY=node.id("penalty")
last_line_twice_parindent = function (head)
  while head do
    local _w,_h,_d = node.dimensions(head)
    if head.id == PENALTY and head.subtype ~= 15 and (_w < 2 * tex.parindent) then

        -- we are at a glue and have less than 2*\parindent to go
        local p = node.new("penalty")
        p.penalty = 10000
        p.next = head
        head.prev.next = p
        p.prev = head.prev
        head.prev = p
    end

    head = head.next
  end
  return true
end

luatexbase.add_to_callback("pre_linebreak_filter",last_line_twice_parindent,"Raphink")
\end{luacode}


\begin{document}
\parindent = 2cm
\emergencystretch = \hsize

A wonderful serenity has taken possession of my entire soul, like these sweet mornings of spring which I enjoy with my whole heart. I am alone, and feel.

The charm of existence in this spot, which was created for the bliss of souls like mine.

I am so happy, my dear friend, so absorbed in the exquisite sense of mere tranquil existence, that I neglect my talents. I should be
incapable of drawing a single stroke at the present moment; and yet I feel that I never was a greater artist than now.

\end{document}

它的作用是~,当到段落末尾的距离小于 2* 时,它会在段落末尾的单词之间添加连接线 ( ) \parindent。如果\parindent足够大,段落会变得难看。

丑陋的段落


注意:这不会阻止连字符。因此,hbox 等不会强制执行最小量。这是留给有抱负的读者的练习。

编辑:不要对字形 ID 进行硬编码......

答案2

在每个段落的末尾,TeX 通常会添加无限可拉伸的粘连,因为的通常设置\parfillskip相当于

\setlength{\parfillskip}{0pt plus 1fill}

一种方法可能是设置

\setlength{\parfillskip}{0pt plus\dimexpr\textwidth-2\parindent}

但这只适用于普通段落。在列表中,应该用而不是 来\parfillskip重置:其值如前所述为\linewidth\textwidth不是动态计算,但它是固定的。如果\parfillskip是宏,而不是 skip 参数(或者 Knuth 提供了\everyendofpartoken 参数),情况就会有所不同。\par当然,人们可能会重新定义,但 LaTeX 在某些情况下已经这样做了。

注意胶水总是可以拉伸的更多的比规定值要高,但在这种情况下,线路的劣化程度会增加,通常会产生一条Underfull \hbox消息。一般来说,我不太相信这样的自动调整:没有一个自动化系统能够像你一样做到这一点,Knuth 写了关于分页的内容,但是段落划分非常相似,特别是对于最后一行。

相关内容