最近,我将 LaTeX 生成的 PDF 上传到使用内部 PDF 查看器 (crocodoc) 的教育网站。然而,在显示时,许多字母缺失。据我所知,缺失的主要是字母“f”。
我在序言中写了以下代码:
\documentclass[11pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage{fullpage}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage[linktoc=none]{hyperref}
\usepackage{caption}
\usepackage{subcaption}
\usepackage{amsmath,amssymb,bm, accents}
\usepackage{pgfplots}
\usepackage{parskip}
知道什么可能导致此显示错误吗?
答案1
试试这个:在你的序言中,放置这段代码
\begingroup
\catcode`\_=12
\pdfglyphtounicode{f_f}{0066 0066}
\pdfglyphtounicode{f_i}{0066 0069}
\pdfglyphtounicode{f_l}{0066 006C}
\pdfglyphtounicode{f_f_i}{0066 0066 0069}
\pdfglyphtounicode{f_f_l}{0066 0066 006C}
\endgroup
它不会造成伤害,而且可能会有所帮助。如果它不起作用……这就是生活。如果它有效,它会告诉 PDF 阅读器软件如何查找某些连字符。
从历史上看,ff 连字符是一个特定字符 ff,具有自己的 unicode 点。fi 也一样。但在现代 Open Type 方法中,连字符名称可能是 f_f 和 f_i,并且没有特定的代码点。软件应该能够理解。
答案2
小写字母“f”是许多连字符的一部分,即特殊字符组合,如“fi”或“ffi”。也许这就是导致问题的原因。您可以通过手动抑制连字符进行测试:
affinity % should give a ligature
af{}f{}inity % should not give a ligature
如果第二个版本中的字母出现,您可以使用该microtype
包全局抑制连字:
\usepackage{microtype}
\DisableLigatures{encoding = *, family = * }
更新:我阅读了您的回答/评论,并在此评论,因为我遇到了完全相同的帐户合并问题;)也许对于后人来说,如果您在进行测试后(无论何时)报告结果可能会很有用。