无法在输出 PDF 中搜索包含罗马尼亚字符的单词

无法在输出 PDF 中搜索包含罗马尼亚字符的单词

我在 Ubuntu 11.11 下使用 Tex Live 和 Texmaker 创建 LaTeX 源文件。有时我会使用 Krusader 的 Krviewer 编辑这些文件,但我注意使用输入编码 latin10(或 ISO 8859-16)。我的键盘布局是罗马尼亚标准,可以正确显示下面带有逗号的罗马尼亚变音符号(如 latin10)。

在文档序言中我使用

\usepackage[romanian]{babel}
\usepackage[latin10]{inputenc}
\usepackage[T1]{fontenc}         

输出的 pdf 文件正确呈现了字符,下面有逗号,但搜索引擎找不到它们,也没有正确地复制到键盘上。例如:如果我复制单词細胞它会粘贴s, tiint, ă,这就是为什么它不能被pdf阅读器的搜索引擎找到的原因。

请问有什么建议吗?

答案1

不幸的是,T1 编码没有带有下方逗号的罗马尼亚字符 s 和 t,因此通过在普通 s 或 t 下方放置逗号来伪造它们。

其结果是“ș”和“ț”这两个字符实际上并不存在。

一种可能的解决方法(但有很多限制)是切换到 UTF-8 并使用包accsupp

\documentclass[a4paper]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[romanian]{babel}
\usepackage[unicode]{hyperref}
\usepackage{newunicodechar}
\usepackage{accsupp}

% Define code for the Romanian characters
\newunicodechar{Ș}{%
  \BeginAccSupp{method=hex,unicode,ActualText=0218}%
    \textcommabelow S%
  \EndAccSupp{}%
}
\newunicodechar{ș}{%
  \BeginAccSupp{method=hex,unicode,ActualText=0219}%
    \textcommabelow s%
  \EndAccSupp{}%
}
\newunicodechar{Ț}{%
  \BeginAccSupp{method=hex,unicode,ActualText=021A}%
    \textcommabelow T%
  \EndAccSupp{}%
}
\newunicodechar{ț}{%
  \BeginAccSupp{method=hex,unicode,ActualText=021B}%
    \textcommabelow t%
  \EndAccSupp{}%
}
\makeatletter
\ProvideTextCommandDefault\textcommabelow[1]
  {\hmode@bgroup\ooalign{\null#1\crcr\hidewidth
     \raise-.31ex\hbox{\check@mathfonts
                       \fontsize\ssf@size\z@
                       \math@fontsfalse\selectfont,}\hidewidth}\egroup}
\makeatother

\begin{document}

știință

\end{document}

如果您编译此(以 UTF-8 保存)编码,那么一些 PDF 查看器(我尝试了 Adob​​e Reader 9)将识别这些字符。

相关内容