抑制 XeLaTeX 中的连字

抑制 XeLaTeX 中的连字

我正在尝试用 XeLaTeX 复制一本旧书,它有ct 结扎但不是st 连字。该Ligatures=Rare选项似乎可以同时打开或关闭两者。有没有办法选择在 XeLaTeX 中使用哪些连字符?我正在使用 Adob​​e Caslon Pro OTF 字体。我知道 microtype 包可能能够做到这一点,但 XeLaTeX 不支持它。任何帮助都值得感激。

我还有一个问题,是否可以在文档中途更改连字选项?或者也许可以暂时更改连字?

答案1

这可以使用米科selnolig包裹。它在 CTAN 上,并已添加到 TeX Live 和 MikTeX。selnolig要求使用 编译文档lualatex,但这不会阻止您使用字体;事实上,它的xelatex用法与 非常相似。

(顺便说一句,microtypeLuaTeX 可以使用它的大部分功能,但它无法有选择地停用连字。这就是它selnolig被创建的原因。)

在这个 MWE 中,我加载时selnolig不使用任何语言选项(它可以处理德语和英语),因此它只会在我用\nolig规则告诉它的地方删除连字符。由于我没有 Adob​​e Caslon Pro OTF 字体,我使用了 Linux Libertine,它的 ⟨st⟩ 和 ⟨ct⟩ 连字符历史放。

\documentclass{article}
\usepackage{fontspec}
    \defaultfontfeatures{Ligatures={Historical}}
    \setmainfont{Linux Libertine O}
\usepackage{selnolig}
    \nolig{st}{s|t}
\begin{document}
best pact 
\end{document}

用 selnolig 输出

为了进行比较,以下是没有的输出selnolig

无 selnolig 输出

selnolig的主要目的是自动抑制德语和英语文本中跨词素边界的连字。其文档解释了如何使用它(以及如何使用lualatex,如果您需要一些指示的话)。

也可以看看新的软件包 selnolig,可以自动抑制印刷连字在 Meta 上。

答案2

@doncherry 已经回答了你的主要问题。我将尝试回答你的第二组问题:

我还有一个问题,是否可以在文档中途更改连字选项?或者也许可以暂时更改连字?

您没有明确说明要更改哪些与连字相关的选项,因此我的回答必须非常宽泛。我认为最好的办法是使用软件包\newfontfamily的命令fontspec来设置“新”字体(可能与\setmainfont... 设置的字体相同)和一些与字体相关的选项。例如,您可以在文档的序言中进行以下设置:

\usepackage{fontspec}
    \setmainfont[Ligatures={Common,Rare}]{Adobe Caslon Pro}
\newfontfamily\acptemp[Ligatures={NoCommon}]{Adobe Caslon Pro}

然后你可以发出命令

\bgroup
\acptemp
...
\egroup

在文档主体内切换到在范围内禁用所有连字符的设置\bgroup ... \egroup--同时保持相同的基本字体。

相关内容