考虑以下代码:
\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
我该如何防止这种情况发生?我使用 Texmaker 和 Miktex 2.9 以及 pdfLatex。
答案1
基于字体编码的 Unicode 映射
根据使用的 TeX 编码将字形转换为 Unicode 的信息打包cmap
或mmap
添加到 PDF 文件中。这些钩子嵌入到 LaTeX 的字体加载机制中,应尽早使用,例如:
\RequirePackage{mmap}% (\usepackage does not work before \documentclass)
\documentclass{article}
mmap
这里使用包,因为据我所知它具有更好的数学支持。
基于字形名称的 Unicode 映射
另一种方法是使用 pdfTeX 的功能,该功能根据字体中的字形名称添加 Unicode 映射。因此,它不适用于 PK 字体,因为它们不包含字形名称。
\pdfgentounicode=1 %
\input{glyphtounicode}
注意:包cmap
或mmap
不能与一起使用\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}
可能有帮助。