我最近从 LyX 转到 TeXstudio,并使用 XeLaTeX 生成 PDF。由于软件包的原因,我无法使用 PdfLaTeX fontspec
。我重写了简历,并去申请一些职位。令我惊讶的是,简历解析器没有识别连字符(“-”)。因此,我开始调查...
这是一个最小的可重现示例:
\documentclass[letterpaper]{article}
\usepackage[left=0.4in,top=0.4in,right=0.4in,bottom=0.4in]{geometry}
\usepackage{enumitem}
\usepackage{fontspec}
\usepackage{ulem}
\usepackage{xstring}
\usepackage{ifthen}
\usepackage[none]{hyphenat}
\pagenumbering{gobble}
\setmainfont{Times New Roman}
\setlength\parindent{0pt}
\begin{document}
-
\end{document}
在 Adobe Acrobat DC、Chrome 和 Xournal++ 中,PDF 看起来不错。
我尝试在生成的 PDF 中复制/粘贴连字符,但似乎没有任何东西被复制到剪贴板。自然而然,我很快使用 Apache PDFBox 编写了一个应用程序来列出所有 Unicode 字符。令我惊讶的是,XeLaTeX 不使用 Unicode Hyphen-Minus (U+002D),而是使用 Soft Hyphen (U+00AD)。
另外,如果我复制 PDF 中的一段文本,有时会将空格粘贴为换行符。
注意:我正在粘贴到纯文本区域。
所以,我的问题是:
- 为什么 XeLaTeX 使用软连字符?
- 如何配置 XeLaTeX 以使用 Hyphen-Minus?
- 为什么有些空格在复制/粘贴到纯文本中时会像换行符一样起作用?
谢谢大家。
答案1
这解决了我的问题。它应该也能解决你的问题。只需将其放入\XeTeXgenerateactualtext=1
你的序言中即可。
\documentclass{article}
\usepackage{fontspec}
\defaultfontfeatures{Ligatures=TeX,Numbers=OldStyle}
\setmainfont{Palatino Linotype}
\XeTeXgenerateactualtext=1
\begin{document}
The three-steps interdependent interdependent interdependent
interdependent interdependent interdependent interdependent
interdependent interdependent interdependent interdependent
interdependent interdependent interdependent independent independent
independent independent independent independent independent
independent independent
\end{document}
但是,这个解决方案并不完美。实际文本(/ActualText
)是另一种 PDF 技术。最好的解决方案是将连字符映射到旧 ASCII,U+002D
而不是不太常见但规范的U+2010
。我仍在尝试找出如何做到这一点。
更新:
经过进一步调查,这实际上是由字体文件引起的。对于Times New Roman
,它被映射到 none。对于Palatino Linotype
和大多数其他字体,它被映射到U+2010
,这是规范的,但不太常见,并且在大多数 PDF 查看器中无法搜索。对于其他一些字体,它确实被映射到U+002D
。试着自己试验一下,看看你是否能找到这样的字体。我做到了。
如果这是在 LuaTeX 中,我总是可以使用 即时修补字体\directlua
。对于这种连字符的特定情况,在 LuaTeX 中不会发生这种情况。我发现 LuaTeX 的唯一缺点是与 XeTeX 相比,它非常慢。