当我使用该newtxmath
包并使用 pdflatex 进行编译时,输出的 PDF 看起来正确,但是当我选择 PDF 中的文本时,底层文本不正确。
以下是 MWE:
\documentclass{article}
\usepackage{newtxmath}
\begin{document}
Test \(a + b\)
\end{document}
输出的 PDF 看起来正确,但选择 PDF 中的文本(并将其复制到其他文本区域)会出现Test 푎 + 푏
。我期望得到的结果是Test a + b
或类似的结果。
我尝试过(但失败了)的事情:
- 使用
$ $
而不是\( \)
- 在 Overleaf 和我朋友的电脑上进行编译
- 使用不同的 PDF 查看器(zathura、Firefox、Chromium)
我不知道这种行为是故意的还是错误。理想情况下,我想了解如何更改此行为,以便发生我期望发生的事情。
更新
我还就这个问题打扰了几个朋友,以下是我观察到的几件事:
- 当使用 TeX Live(在 Linux 上测试)或 MiKTeX(在 Windows 上测试)编译 PDF 时会出现这种情况和使用 zathura、Firefox 或 Chromium/Chrome 查看时。最初的错误发生在 TeX Live 和 zathura 上。
使用 MacTeX 编译时似乎不会发生这种情况。更正:在 Mac 上使用 TeX Live 编译时不会发生这种情况。- 这在 Gmail 文件预览中不会发生。
- 在 MacOS 的预览程序中查看 PDF 时不会出现这种情况。
答案1
字体NewTXMI.pfb
使用非标准字符串作为字形名称,反映字符的预期 Unicode 含义。查看者无法识别此类字符串,因此不知道如何处理它。您可以使用它将它们映射到查看者知道的内容:
\documentclass{article}
\usepackage{newtxmath}
\pdfgentounicode=1
\input{glyphtounicode}
\pdfglyphtounicode{u1D44E}{0061} % 0061= a
%\pdfglyphtounicode{u1D44F}{0062} % b
%\pdfglyphtounicode{u1D44F}{1D44F} % 1D44F= MATHEMATICAL ITALIC SMALL B, does probably nothing
\begin{document}
Test \(a + b\)
\end{document}
复制为 Test a +