如果我从 PDF 复制文本,并且单词带连字符且跨越两行,则复制的文本包含“-”。例如:
Examp-
le
应复制为
Example
不是
Examp-le
问题在于必须保留源文本中的连字符
bug-
proof
必须是
bug-proof
以复印件形式。
我怎样才能实现这个目标?
我认为这个问题与使 Linux Libertine 中的连字符可复制(和可搜索)
编辑:抱歉,我最初的问题表述得不太好。我用 LaTeX 排版文档,然后用 PDFlatex(Miktex)将它们编译为 PDF。PDFLaTeX 是否可以区分“换行符”和“单词间”连字符?PDF 的定义是否允许存在如此不同的连字符,以便尊重差异的 PDF 阅读器复制包含“单词间”连字符的文本,但不复制包含“换行符”连字符和所属换行符的文本?
答案1
最糟糕的情况是,PDF 中行尾的连字符与单词之间的连字符相同,我们暂时将它们称为“换行符”和“单词间”连字符。
这意味着它们会自动无法区分(单词之间的连字符可能与换行符重合;无法检测)。在这种情况下,搜索并替换(不做任何操作)以删除所有单词,然后搜索并替换现在已知缺少连字符的单词。抱歉。
更好的情况是,PDF 中的实际字符虽然看起来相同,但实际上却不同。复制和粘贴(取决于您的 PDF 阅读器)往往会丢失这种区别(如果一开始就存在的话)。同样的问题会导致 PDF 中每行可见字符都出现“行尾”(EOL)字符,而不是段落末尾的字符。LaTeX 不介意(它会查找空行),但您的其他文本编辑需求或工具可能会介意。
假设您一直在复制和粘贴,那么通过自动从 PDF 中提取文本,您可能能够获得更多结果。在 Google 上搜索“PDF 转文本”;有许多可用的选项,从 Windows GUI 工具到 OS X 内置 PDF 处理(查看 Automator)再到 UNIX/Linux/Cygwin 环境的命令行工具。
输出将是纯文本。某些工具会执行或允许对提取的文本进行某些操作,仅保留实际的行尾,而不仅仅是显示的行尾,等等。
就文本操作本身而言,UNIX 环境中的典型命令行工具能够解决大部分问题。这对您来说可能是有用的建议,也可能不是,但我会使用 Vim、sed 和一些包装在 Bash 中的正则表达式。