对于允许禁用(预)选定单词的连字的新软件包的功能,有什么建议/要求吗?

对于允许禁用(预)选定单词的连字的新软件包的功能,有什么建议/要求吗?

我开始整理一个 LaTeX 软件包,希望能够广泛传播,

  • 提供 lualatex 代码来禁用选定单词的字符对和三元组的连接(全球在文档中针对所有选定的单词进行搜索,但并非针对所有可能的连字符实例进行搜索);
  • 提供一个预先组装的英语单词列表,其中应抑制 TeX 的 f 连字符——ff、fi、fl、ff-i 和 ff-l(请注意,连字符抑制有七种方式:ff、fi、fl、ff-i、ff-l、f-fi 和 f-fl);
  • 为七种不同的禁用连字符的方法以及下列每种字体系列分别提供适当的字距调整量,这些量可能与零有很大差异

    • 拉丁现代,
    • tex-gyre 字体组中选定的字体系列,以及
    • (可能)还选择了其他 opentype 字体系列

    适用于常规(直立)、粗体、斜体和粗斜体字体形状;

  • 为用户提供了相当简单的机制,以便向默认列表添加其他单词,以及为不在 TeX 的“标准五” f 连字符中的连字符对和三元组定义自己的连字符例外列表。

在创建这个软件包的过程中,在发布计划软件包的第一个版本并得到用户反馈后,冒着或多或少从头开始的风险,我认为可能值得停下来并征求建议和请求(也包括劝阻!)来自这个小组中感兴趣的成员,关于他们希望在这样的软件包中看到的功能。

背景

我理所当然地认为,该组的用户知道 TeX (i) 提供了自动连接“ff”、“fi”、“fl”、“ffi”和“ffl”字符组合的机制,以及 (ii) 提供了不止一种,而是四种 [4!] 机制,用于临时(即逐个实例)抑制连接功能;例如,请参阅 Eijkhout 的书第 56 页TeX 按主题分类。有趣的是,这四种方法中的一种——{}在相关字符之间插入一个空括号组——在 xe(la)tex 和 lua(la)tex 中不起作用,也就是说,如果采用这种方法,连接就不会被抑制。

在 TeXBook 中,Knuth 引用了“shelfful”作为应抑制“ff”连字的单词。建议/要求抑制连字的一般原则可以表达为:连字不应/不得跨越词素边界。词素粗略地说,是包含不同含义的最小语言单位(无论是单词还是词类小品词),如上例中的“shelf”和“ful[l]”。其他候选单词(在此期间,我已经收集了超过一百个这样的单词)是“selfish”、“halflife”和“pdflatex”(哎哟!)、“stuffiness”、“scofflaw”和“cufflink”、“wolffish”(是的,有这样的野兽)和“safflower”,这些只是其他六种应该抑制连字的情况的几个例子。

据我所知,目前还没有一种通用方法允许 TeX/LaTeX 用户创建一个连字符例外列表,该列表可以加载到文档的序言中,并为与连字符抑制相关的各种问题提供“交钥匙解决方案”。(例如,如果要抑制某些单词组中“fl”的连字符,则获得“f”和“l”字符之间适当间隔所需的字距量可能会有很大差异,具体取决于 (i) 使用的字体系列和 (ii) 文本是设置为直立、粗体、斜体还是粗斜体。)因此,作者只能靠自己的设备,而且往往无法在需要时抑制连字符。顺便说一句,虽然这个问题在英语文档中通常不太严重,但在其他语言(如德语)中似乎要严重得多,因为德语中复合词的使用频率要高得多。

当然,无法针对某些单词选择性地抑制连字符并不是 TeX 和 LaTeX 独有的问题。许多通用文字处理软件包(包括 Word)要么根本不提供连字符功能,要么要求通过大多数用户甚至都不知道的一些菜单选项来启用连字符功能。(而且,一旦启用,大多数用户似乎不知道如何针对某些单词选择性地禁用连字符功能……)尽管某些“专业”软件包(例如 Adob​​e 的 InDesign)确实提供了全局启用字符连字符功能的选项,但它们似乎没有提供提前指定应抑制字符连字符的单词列表的方法。

未决问题

我想就以下问题征求您的意见、建议和评论:

  • 我必须指示 TeX 抑制指定单词列表的连接的代码基于lua(la)tex。因此,该包需要引擎luatex;它将不是pdf(la)tex在或下运行xe(la)tex。[查看问题的答案可以(或多或少自动地)抑制某些单词的连字符吗?将 luatex/ConTeXt 模块“translate”移植到 lualatex了解涉及的 lualatex 代码的详细信息。] 鉴于许多(大多数?!)LaTeX 用户似乎还不知道lualatex(而且许多人仍然使用 .tex -> .dvi -> .ps -> .pdf 路径,也就是说,似乎不熟悉或不习惯pdf(la)tex),是否lualatex实际上会扼杀该软件包对所有 TeX 用户(除了极少数 TeX 用户)的可用性?或者,是否可以安全且/或合理地假设,即使 lualatex 目前可能并未得到广泛使用,但它将要 两三年后会更加普遍地使用吗?

  • 无论是在英语还是其他语言中,是否已经有了应避免使用 f 连字的单词列表?我不知道有这样的列表,因此我在此期间整理了超过一百个这样的单词列表。但是,如果有人知道这样的单词列表——尤其是如果它们可供公众使用——我会非常感激。

  • 让该软件包可供 Latin Modern 以外的字体用户使用有多重要?显然,由于存在数百(数千?数万?)种 opentype 字体,其中许多至少具有五组 f 连字符,因此我(或任何其他人!)不可能维护修复所有这些字体的连字符异常所需的字距调整量列表。当然,我将在软件包中包含 Latin Modern 以及 TeX Gyre 发行版中的某些字体以供处理。我应该考虑哪些其他字体系列?

  • 对于哪些字体系列不需要费心创建连字符例外调整,您有什么建议吗?例如,有些字体系列的小写字母 f 有非常明显的右悬垂;在这些情况下,要抑制“fi”和“fl”连字符,就需要将“i”和“l”字符向右移动很远,以避免与“f”发生冲突,这样会导致单词内部出现难看的视觉空洞或间隙 —— 从而造成更严重的印刷问题。

  • 有没有建议为这个包起一个简洁且/或朗朗上口的名字?!

当然,我们也欢迎对其他主题的评论和建议——只要它们与当前问题相关!

附录:我遵循了 Mark Everitt 的建议,发现doncherry 的问题在 English.SE 上,关于应避免使用连词的单词。我已发布我当前的此类单词列表,作为对 doncherry 问题的回答。


第二附录:有人建议我提供以下信息,供任何看到这篇文章并可能想知道所宣布的努力是否有任何成果的人参考。事实上,我收到的评论和回答对创建塞尔诺利格包。此包对德语(f 连字,又称通用连字)和英语(通用罕见连字符语言文档。此软件包现在相当稳定,但仍有各种潜在的改进空间。欢迎提出意见和建议!

答案1

有 perl 程序林格斯它为德语完成了这项工作(德语是一种经常需要这样做的语言)。不幸的是,单词表本身似乎不可用。我也不知道这个列表有多好;它可能遵循改革前的正字法规则。也许你可以联系它的作者。有一个改进的项目德语连字里面有相当详尽的单词表。也许它们也能帮到你。

至于是否应该依赖它,LuaLaTeX我的答案是:继续吧。TeX 世界的一个问题就是人们适应新工具的速度太慢了。但如果没有人开始,就没有人会行动。现代引擎存在的吸引人的工具越多,人们就会开始使用它们。

编辑:由于我是 Stempel Garamond 和 Frutiger 的忠实粉丝,所以这些字体绝对值得考虑。;) 不过说真的:这个软件包难道不能只删除所有字体的错误连字,而只关心少数几个字体的正确字距调整吗?

答案2

由于你正在编写 luatex 模块,将您的数据存储为 lua 表以便其他格式或程序可以重用它。对于 TeX 模块,数据通常存储为 TeX 宏,例如

\suppressligature{selfish}{self{}ish}

等等。这使得在其他格式/程序中使用相同的数据变得困难,并导致大量重复工作。更好的解决方案是将数据存储在单独的 lua 文件中,如下所示

thirddata = thirdata or {}
thirddata.ligatures = thirddata.ligatures or {}

local suppress = {
   ["selfish"] = {"self", "ish"},
   ....
}

thirddata.ligatures.suppress = suppress

等等。读取 lua 表并生成适当的 TeX 宏相对容易,而解析 TeX 宏始终很麻烦。

答案3

路特克斯:由于没有 luatex 似乎无法解决这个问题,您不妨希望您的软件包能够吸引新的 luatex 用户。luatexmicrotype的情况如何,当前版本是否适用于它?如果不行,我会坚持使用 pdflatex。

字体:你可以字体投票作为灵感,因此 Palatino 和 Linux Libertine 将是其他值得考虑的字体。

名称: 怎么样智能联赛/智能或者聪明联赛/聪明的

答案4

这是一个好主意!我认为使用 没有任何问题LuaTeX。不过,如果代码也能轻松地与 配合使用ConTeXt,那就太好了。请不要将包限制为一组固定的连字符 - 连字符是字体的一个特性,字体可以有多种连字符,而不仅仅是“ff”等。

首先,我想要一个可以生成文档中使用连字的所有单词列表的包,以及一个可以读取应抑制连字的单词列表的包。这样,就可以轻松检查当前使用的连字列表并根据需要抑制连字。

相关内容