避免在行尾使用单个字母

避免在行尾使用单个字母

我正在用波兰语写论文,我们的排版规则之一是行末不能有一个字母,比如():

Tomek poszedl do sklepu w % <-- not allowed
mieście, żeby kupić jabłka i % <-- not allowed
bułki

我正在使用 LaTeX 和@topskip 在这篇文章中提出的解决方案:

行末的一个字母的单词

编译时产生多个错误。另外,此内容是几年前发布的。所以我想知道是否有任何新技巧可以解决我的问题?

答案1

您使用的是LaTeX(我猜pdflatex)而不是LuaTeX所引用的解决方案中使用的。我说得对吗?


在你开始你的论文/文档之前

遵循 LaTeX wikibook(关联)关于波兰语的国际化:

波兰语有许多单字母连接词 [...] 为了确保 LaTeX 不会将它们设置为行中的最后一个字母,您必须使用不可破坏空间[...]

i~słodka
a~także
i~ciała
i~Basi

因此,解决方法是简单地用 ~ (波浪号,也称为不可破坏空间)。

不可破坏空间波浪符号的功能是 LaTeX 的核心功能(感谢@DavidCarlisle)。


顺便说一下,我谷歌搜索了抛光单字母乳胶而这个解决方案就是我列表中的第三个条目。


当你已经完成文档时

也许你可以使用文本编辑器喜欢记事本++https://notepad-plus-plus.org/) 和搜索和替换 _z__w_等等与_z~_w~等等(_我想用表示空格)。

记事本++还可以同时在多个文件中进行搜索和替换。请务必在备份副本您的实际文件!

在此处输入图片描述

常用表达也许你还能找到更复杂的方法。但我对此了解不多。

答案2

这是我为此使用的命令(我有几个 .tex 文件需要修改):

find -name "*.tex" -exec sed -i 's/\( [^0-9\| ]\) \([^\|]\)/\1~\2/g' {} \;

它在非数字、竖线或空格本身的空格之间的单个字符后添加不可中断的空格。

答案3

在最新版本babel(3.58)中luatex,有预定义的“转换”用于此目的(也有捷克语和斯洛伐克语版本):

\documentclass{article}

\usepackage[polish]{babel}

\babelprovide[transforms = oneletter.nobreak]{polish}

\begin{document}

\hsize=1pt

Tomek poszedl do sklepu w % <-- not allowed
mieście, żeby kupić jabłka i % <-- not allowed
bułki

\end{document}

不间断地抛光一个字母

相关内容