在运行/构建 PDF 之前更改 XeTeX 查看字符串的方式

在运行/构建 PDF 之前更改 XeTeX 查看字符串的方式

由于某种原因,我真的很难表达我的问题,所以请允许我提前道歉。我可能没有从正确的角度来解决这个问题。

我在 XeTeX 中工作(现在改用 LuaTeX 已经太晚了)。我选择的字体存在连字显示不正确的问题,但从生成的 PDF 中复制粘贴时会出现乱码。这也使得 PDF 的搜索难度大大降低,因为例如,由于连字“fl”,无法找到“flow”。

经过大量的谷歌搜索,我发现目前还没有合适的解决方案来解决这个问题。一个不太理想的选择是使用包accsupp,并为 XeTeX 和 PDF 提供不同的字符串。例如,这有效:

\documentclass{article}
\usepackage{fontspec}
\setmainfont{Minion Pro}

\usepackage{accsupp}

\newcommand\ligfl{\BeginAccSupp{method=escape,ActualText=fl}fl\EndAccSupp{}}

\begin{document}
flow vs. {\ligfl}ow
\end{document}

(在有人建议之前,我实际上并没有使用 Minion Pro,所以这\usepackage{MinionPro}对我来说不是最佳选择。)

一个选项是对“fi”、“ffi”、“fl”和“ffl”进行查找和替换,将它们更改为上述命令\ligfl。这是可行的,我可能不得不求助于它,但在我这样做之前,有没有比上述硬编码更灵活、更优雅的方法来实现它?

我理想情况下想做的是:

  1. 激活“可连字符”对或三元组,并让每个字符fl自动解释为{\ligfl}。我可能搜索错误,但似乎没有办法做到这一点;或者

  2. 使用某种预处理器或类似程序,在文档构建之前将所有fls 更改为s。(但实际上,我认为我会很难接受这个选项,因为我正在使用 LyX。){\ligfl}

或者,当然还有我还没有想到的第三种选择。

任何帮助将不胜感激。

答案1

您可以禁用连字符并尝试。不过对我来说,这种方法很有效,现在似乎没有任何问题。

\DisableLigatures[f]{encoding = *, family = *} – 将其纳入序言中。

希望对你有帮助。

相关内容