无法从最简单的 PDF 文件中复制文本?

无法从最简单的 PDF 文件中复制文本?

考虑以下代码:

\documentclass{article}
\begin{document}
   We define multiplication by
   $$v_1x = 0,\quad v_2x = v_1,\quad v_1y = -v_1,\quad v_2y = v_1$$
\end{document}

看起来像这样

在此处输入图片描述

它非常简单,但是当我复制 PDF 的内容时,我得到了:

We de??ne multiplication by
v1x = 0; v2x = v1; v1y = ??v1; v2y = v1
1

因此有4个错误:

  1. 定义消失
  2. ,变成;
  3. 减号复制不正确
  4. 复制的文本末尾又出现了一个 1

我该如何防止这种情况发生?我使用 Texmaker 和 Miktex 2.9 以及 pdfLatex。

答案1

基于字体编码的 Unicode 映射

根据使用的 TeX 编码将字形转换为 Unicode 的信息打包cmapmmap添加到 PDF 文件中。这些钩子嵌入到 LaTeX 的字体加载机制中,应尽早使用,例如:

\RequirePackage{mmap}% (\usepackage does not work before \documentclass)
\documentclass{article}

mmap这里使用包,因为据我所知它具有更好的数学支持。

基于字形名称的 Unicode 映射

另一种方法是使用 pdfTeX 的功能,该功能根据字体中的字形名称添加 Unicode 映射。因此,它不适用于 PK 字体,因为它们不包含字形名称。

\pdfgentounicode=1 %    
\input{glyphtounicode}

注意:包cmapmmap不能与一起使用\pdfgentounicode。结果将是字体数据字典中的重复条目。这在PDF 规范

注意:同一本词典中的两个条目不应具有相同的键。如果某个键出现多次,则其值未定义。

复制和粘贴是否产生随机结果取决于 PDF 查看器。

字体编码

尤其是如果您有重音字符或更多特殊符号,您应该考虑使用T1字体编码。LaTeX 的默认编码OT1仅支持 7 位(最多 128 个字形)。重音字符是构造的,这不利于复制和粘贴:

\usepackage[T1]{fontenc}

您应该已经安装了cm-super包含 Type 1 版 EC 字体的字体包。或者使用现代 Latin Modern 字体。它们源自 CM/EC 字体。

\usepackage[T1]{fontenc}
\usepackage{lmodern}

答案2

我建议您在序言中添加以下内容:

\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}

它对我来说非常完美。我使用的是 mac OS(也是 Texmaker),无法在 Windows 上尝试。

编辑:

根据@egreg的建议,添加

\usepackage{lmodern}

可能有帮助。

相关内容