如何对外文字符进行编码,以便可以在生成的 PDF 文件中搜索它们?

如何对外文字符进行编码,以便可以在生成的 PDF 文件中搜索它们?

这可能是 PDF 问题而不是 LaTeX 问题,但由于它涉及 pdfLaTeX 输出,我希望我不会受到太大的打击。

我正在创建参考书目,不可避免地有些作者的名字带有重音符号或其他外来字符。我希望能够在 PDF 文件中搜索这些作者,但有些字符无法识别。例如,我创建了一个简单的 .tex 文件,如下所示:

\documentclass{article}
\usepackage[utf8]{inputenc}
\begin{document}
Some foreign characters: öøäéüæåñ
\end{document}

我可以在生成的 PDF 文件中成功搜索 ö、ä、é、ü、å 和 ñ,无论是使用这些特定字符还是不带重音符号的 o、a、e、u 或 n。但是,无论我从其他程序复制并粘贴 ø 或 æ 字符到搜索框中,还是使用Alt+155Alt+ ,PDF 文件都找不到145它们。问题在于,有些期刊使用简单的“o”表示 ø 或“ae”表示 æ,因此我希望使用 ø 或 o 搜索 ø 时获得“匹配结果”,同样,使用 æ 或 ae 搜索 æ 时获得匹配结果。这一切是否可能实现,还是我太聪明了?

答案1

你能试一下吗:

\usepackage[T1]{fontenc}

完整测试文档:

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\begin{document}
Some foreign characters: öøäéüæåñ
\end{document}

答案2

尽管我无法给出可行的解决方案,但我想解释问题根源所在。

就像 Crissov 在他的评论中推测的那样,这与您使用的阅读器应用程序有很大关系。就我而言奥克拉尔甚至找不到öaéuåñ 里面单词。例如,我使用了:

\documentclass{article}
\usepackage{fontspec}
\setmainfont[Ligatures=TeX]{STIXGeneral}
\XeTeXinputnormalization=1 %or 2
\begin{document}
Töst Tøst Täst Tést Tüst Tæst Tåst Testeñ
\end{document}

使用时\XeTeXinputnormalization=1,我根本找不到特殊字符,而使用 时,我搜索的是常规字符。如果我设置\XeTeXinputnormalization=2,至少我会To在 中找到。但我仍然在 中Töst找不到 和。TostToTøst

这种行为的原因是奥克拉尔正在进行相当精确的比较,更重要的是,字符之间存在很大差异öø这导致了您的问题):

ö(U+00F6) 分解为一个基本字符o(U+006F) 和一个与之关联的重音符号̈(U+0308)。虽然您可以编写(U+006F U+0337),并且它通常会显示为ø,但它与 (U+00F8) 无关ø,并且在 unicode 范式之间转换时不会转换它。æ它与 相同ø。您提到的所有其他字符都有关联的分解。(请参阅unicode字符分解映射以供参考。)

因此,您的阅读器应用程序似乎做了明智的事情,不仅考虑实际字符,还考虑其分解的基本字符。对于其他的等等øæ对它的期望实在是太高了。

您可能可以将所有内容转换ø为图像,并在其后面放置一个不可见的文字o,就像使用 OCR 对扫描的 PDF 所做的那样。但是,除了这是一个丑陋的解决方案之外,如果您输入实际的文字,您将无法找到该词ø...

相关内容