记录包含 n 个以上连字符的段落

记录包含 n 个以上连字符的段落

我写的(大量)文本中有几个段落包含大量带连字符的单词。我的目标是检查这些段落,以便重新措辞。有没有办法让 TeX 在使用超过n段落中需要使用连字符吗?

我正在使用带有 microtype 和 Swiss 721 字体的 XeLaTeX。

这是一个例子(我知道紧密的引导使它看起来更糟)

在此处输入图片描述

梅威瑟:

% XeLaTeX
\documentclass{article}
\usepackage{microtype}

\usepackage{fontspec}
\setmainfont{Swiss}[Path = D:/fonts/, UprightFont = Swiss721Light.ttf, BoldFont = Swiss721MdBT.ttf, ItalicFont= Swiss721Italic.ttf, BoldItalicFont = Swiss721BoldItalicX.ttf, FontFace={k}{n}{Swiss721black.ttf},  SmallCapsFeatures={Letters=SmallCaps}]
\setsansfont{Swiss}[Path = D:/fonts/, UprightFont = Swiss721Light.ttf, BoldFont = Swiss721MdBT.ttf, ItalicFont= Swiss721Italic.ttf, BoldItalicFont = Swiss721-BoldItalic-BT-WGL4.ttf, SmallCapsFeatures={Letters=SmallCaps}]

\usepackage{lipsum}


\begin{document}
\lipsum


\end{document}

第一段有三个连字符:

在此处输入图片描述

我赞赏明智的选择\hyphenpenalty\exhyphenpenalty \brokenpenalty \linepenalty \doublehyphendemerits

可能合适,但我希望有一些衡量标准,可以据此判断这些惩罚的选择。而且它可能无法解决所有连字问题(最终必须通过重新措辞来解决)。作为最后的手段,我想检查余项。

答案1

您可以从日志中获取此信息,我没有字体,因此我使用了拉丁现代字体,但鼓励它使用一些连字符

 % XeLaTeX
\documentclass{article}
\usepackage{microtype}

\usepackage{fontspec}

\doublehyphendemerits=-10000000 \finalhyphendemerits=-10000000
\usepackage{lipsum}


\begin{document}
\tracingparagraphs1
\lipsum


\end{document}

启用断行记录

\tracingparagraphs1

因此,在日志中,可以通过搜索找到以自由连字符结尾的每一行,line [0-9]+\.[[0-9]+- 其中, 之前的数字.是行号, 之后的数字.是空白拉伸程度的度量, 尾随的数字-表示连字符点。

所以第一段是

在此处输入图片描述

对应于第一行之后的跟踪块@secondpass和以下行

@@4: line 4.1- t=12931 -> @@3
tus 

-

@@10: line 6.1- t=-9980588 -> @@8
lus 

-

@@27: line 9.2- t=20249 -> @@22
tor 

-

@@35: line 10.2- t=-9977082 -> @@27
san 

你必须小心,因为 tex 会记录所有可行的断点不仅仅是被采取的断点,所以你必须->从末尾开始追溯,这里 tex 结束了选择断点的段落@@45,记录为

@@45: line 11.2- t=-19976982 -> @@35

这告诉您 breakpint@@35已采用 accum-sam 连字符。

那么...日志告诉你这个,但可能更简单,只需-在输出中搜索即可,例如

pdftotext -layout qq213.pdf

$ grep -o --  '.......-$' qq213.txt 
 eu tel-
tur auc-
, accum-
m. Prae-
lam cur-
Vestibu-
a a fau-
Vestibu-
s eu la-
sto lec-
 sed la-
as. Cur-
st. Cur-
 fermen-
 sed ul-
nec luc-
s, eges-

加上一些 perl 或其他东西来在空白行上进行分割。

相关内容