我写的(大量)文本中有几个段落包含大量带连字符的单词。我的目标是检查这些段落,以便重新措辞。有没有办法让 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 或其他东西来在空白行上进行分割。