无法从我的 PDF 中复制粘贴。知道原因吗?

无法从我的 PDF 中复制粘贴。知道原因吗?

当从我的 Latex 文档生成的 PDF 中复制粘贴文本时,文本会显示乱码。这可能是什么原因造成的?

这是原文的一个例子:

最后,冒着过于抽象的风险,我应该指出,进化算法的灵感来自大自然的进化过程。这是一个很好的机会来了解这个比喻的深度。特别是因为生命本身并不是优化功能的现象,而更多的是利用你已经拥有的东西获得良好的结果,同时不对内部和外部的变化过于敏感。最后一个方面一定不能妨碍获得具有生物学意义的表型,但无论如何都是相关的。

以下是乱码的复制粘贴:

❆t ❧❛st✱ ❛♥❞ t❛❦✐♥❣ t❤❡ r✐s❦ ❛ ❜❡✐♥❣ t♦♦ ❛❜str❛❝t✱ ■ s❤♦✉❧❞ ♣♦✐♥t ♦✉t t❤❛t ❡✈♦❧✉t✐♦♥❛r2 ❛❧❣♦r✐t❤♠s ❛r❡ ✐♥s♣✐r❡❞ ❜2 ♥❛t✉r❡✬s ❡✈♦❧✉t✐♦♥❛r2 ♣r♦❝❡ss✳ ❚❤✐s ✐s ❛ ❣♦♦❞ ♦♣♣♦rt✉♥✐t2 t♦ ❣❛✐♥ s♦♠❡ ✐♥s✐❣❤t ❤♦✇ ❞❡❡♣❧2 ❝❛♥ t❤❛t ♠❡t❛♣❤♦r ❤♦❧❞✳ ❙♣❡❝✐❛❧❧2 s✐♥❝❡ ❧✐❢❡ ✐ts❡❧❢ ✐s ❧❡ss ❛ ♣❤❡♥♦♠❡♥❛ ♦❢ ♦♣t✐♠✐s✐♥❣ ❢✉♥❝t✐♦♥❛❧✐t2 ❜✉t ♠♦r❡ ♦❢ ❣❡tt✐♥❣ ❣♦♦❞ r❡s✉❧ts ✇✐t❤ ✇❤❛t 2♦✉ ❛❧r❡❛❞2 ❤❛✈❡ ✇❤✐❧❡ ♥♦t ❜❡❝♦♠✐♥❣ t♦♦ s❡♥s✐t✐✈❡ t♦ ✐♥t❡r♥❛❧ ❛♥❞ ❡1t❡r♥❛❧ ✈❛r✐❛t✐♦♥✳ ❚❤✐s ❧❛st ❛s♣❡❝t ♠✉st ♥♦t st❛♥❞ ✐♥ t❤❡ ✇❛2 ♦❢ ♦❜t❛✐♥✐♥❣ ♣❤❡♥♦t2♣❡s ✇✐t❤ ❜✐♦❧♦❣✐❝❛❧ ✐♥t❡r❡st ❜✉t ✐s r❡❧❡✈❛♥t ♥♦♥❡t❤❡❧❡ss✳

我运行的生成 pdf 的命令是:

    pdflatex thesis.tex
    bibtex thesis
    pdflatex thesis.tex
    pdflatex thesis.tex

我正在使用来自 debian wheezy 的 debian 软件包。

这是有问题的最小例子。

\documentclass{article}

% The Unicode character encoding UTF8 includes several special characters and characters with accents.
% The following code specifies that the encoding of the LaTeX document source file is UTF8.
% Font encoding is specified as T1, because it supports the encoding of extended character sets in fonts.
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{textcomp}

\title{A optimisation tool for the functional improvement\\ of Biological Models}
\begin{document}

Some garbled text with an accented à.

Some garbled text.

\end{document}

答案1

这取决于您使用的字体:

pdffonts test.pdf

Type 3 字体

尽量避免使用它们,因为它们是位图字体,缩放效果不佳。此外,这些字符没有字形名称,因此文本提取工具无法轻松提取它们。

如果您使用的\usepackage[T1]{fontenc}是标准字体,那么您将获得 EC 字体。安装cm-super以获取 Type 1 版本。或者使用后续字体 Latin Modern ( \usepackage{lmodern})。

包裹cmap

它基于 LaTeX 的字体编码,并将映射条目从插槽位置添加到 Unicode 插槽。

该包应该在一开始就加载:

\RequirePackage{cmap}
\documentclass{...}

该包不依赖于字体或字体类型中的正确字形名称。另一方面,未定义的编码(对于符号字体等)得不到很好的支持。

\pdfgentounicode

pdfTeX 的这一原语根据字体字形名称添加 Unicode 映射。它不适用于 Type 3 字体。如果字体包含正确的字形名称并提供映射,则支持效果会更好。

用法:

\pdfgentounicode=1 %
\input glyphtounicode.tex %

该文件glyphtounicode.tex包含许多 glyhp 名称到 Unicode 的预定义映射。

包裹accsupp

该软件包使用/ActualTextPDF 的功能,允许指定应使用哪些文本来显示字形。例如,这允许对符号进行支持和更精细的控制。

PDF 查看器/文本提取器

此外,这取决于 PDF 查看器或提取文本的工具,它们支持哪些功能来检测字符。有些可能只适用于字形名称和插槽位置,其他则支持 Unicode 映射(它们应该支持),更高级的则支持该/ActualText功能。

添加:包cmap和方法\pdfgentounicode不应一起使用,因为它们将相同的数据结构添加到 PDF 文件中的字体。如果它们完全相同,则不会有太大问题,但可能会有差异,这会违反 PDF 结构,导致 PDF 阅读器应用程序的行为不可预测,这些应用程序可以自由选择对同一键使用哪个值。

答案2

  1. 删除此包\usepackage[T1]{fontenc}并查看。它对我有用。
  2. 或者保留此包\usepackage[T1]{fontenc}并添加\usepackage{lmodern}。对我来说,它也有效。

相关内容