几年来,我一直断断续续地LaTeX
使用该类编写一本书长度的文档memoir
。由于它们出色的字体处理能力,我将我的工作保存在几乎相同的XeLaTeX
和LuaLaTeX
版本中,倾向于后者,因为它更全面地实现了该microtype
软件包,但为了以防万一,我还是会使用前者。现在看来我遇到了这样一个以防万一的时刻,但如果可以的话,我不想放弃 Lua。
结束了该项目的长期中断,在此期间,我从 Windows 7 升级到 Windows 10,然后当 Win 10 变得不稳定时,不得不重新加载它。因此,需要重新安装所有软件,包括TeX
,我TeXLive
本月早些时候(2016 年 10 月)安装的,以代替MikTeX
我一直在使用的;然后我重命名了我的两个 .tex 文件的副本(将原始文件与其输出一起保存以供基准测试),并进行了编译。在XeLaTeX
TeXworks PDF 查看器中检查时,该版本在所有方面都与其早期版本相同,而该LuaLaTeX
版本有两页,都在前言中,有扩大垂直间距的情况,令人讨厌但很容易修复;我可能会在单独的问题中处理这些问题。
但当我LuaLaTeX
在 Adobe Acrobat Reader DC(版本 2015.020.20039)中打开该版本时,我发现,当我开始向下滚动时,许多页面都无法显示。每当我到达其中一个页面的顶部边缘时,就会弹出一条错误消息,内容如下:
“处理页面时出错。读取此文档 (135) 时出现问题。”
(网络搜索未找到有关 Acrobat Reader 错误 135 的信息。)向下滚动到该页面,有问题的页面将完全空白,但下一个非错误页面将与前几页相同。不过,2015 年 1 月的旧 PDF 仍能完美显示每一页,原始和新编译的 XeLaTeX PDF 也是如此。
因此,问题在于 LuaLaTeX 代码有时(根据 .log 文件)在 LuaTeX 版本 beta-0.76.0-2013062820 (rev 4627) (format=lualatex 2013.10.22) 和 LuaTeX 版本 0.95.0 (TeX Live 2016/W32TeX) (format=lualatex 2016.10.18) 之间进行的特定更改;或者,如果对文档中使用的某个软件包进行更改,则这些更改会对 LuaLaTeX 产生不利影响,但不会对 XeLaTeX 产生不利影响。LuaLaTeX 确实完成了编译,似乎并未意识到存在问题。并且,在 TeXworks 查看器中,除了前面提到的两页垂直间距问题外,没有出现任何问题。
经过详细检查,很明显问题页面是包含我使用的两种字体的页面:免费软件 Chrysanthi Unicode 版本 3.1(我在 Unicode Dingbats 块中只使用了五个字符)和 Latin Modern Mono Light 10 Bold,我已使用 fontspac 命令将其设置为文档的等宽字体,\setmonofont
并且主要使用{alltt}
同名包中的 verbatim 类环境调用,但偶尔也使用该\ttfamily
命令。(奇怪的是,我也使用的 Latin Modern Mono Prop 10 Regular 没有这样的问题。)
这是我尝试过的 MWE,首先检查使用 Unicode Dingbat 块字符是否存在问题,然后显示两种有问题的字体,即包含普通文本和 dingbat 示例的 Chrysanthi 和 LM mono 字体,使用两种调用方法,将所有内容放在不同的页面上,以查看哪些会显示,哪些不会显示。
\documentclass{memoir}
\usepackage{luatextra}
\usepackage{alltt}
\setmainfont{DejaVu Sans}
\setmonofont[Path=./Fonts/]{lmmonolt10-bold.otf}
\newfontface\flourishfont[Path=./Fonts/]{chrysuni.ttf}
\begin{document}
Normal ASCII range characters in DejaVu Sans.
\newpage
Unicode characters 2756, and 276A through 276D, in DejaVu Sans:
❖ ❪ ❫ ❬ ❭
\newpage
{\flourishfont
Normal ASCII range characters in Chrysanthi Unicode.}
\newpage
{\flourishfont
Unicode characters 2756, and 276A through 276D, in Chrysanthi Unicode:
❖ ❪ ❫ ❬ ❭}
\newpage
{\ttfamily
Latin Modern Mono Light 10 Bold using \textbackslash ttfamily.}
\newpage
{\begin{alltt}
Latin Modern Mono \newline Light 10 Bold \newline using \{alltt\} environment.
\end{alltt}}
\end{document}
不幸的是,作为 MWE,它不能工作。或者也许它以自己的方式工作。Acrobat Reader 根本无法打开 PDF,但会弹出:“打开此文档时出错。此文件已损坏,无法修复。” TeXworks 查看器按预期正确显示所有内容。 Firefox 浏览器中的本机 PDF 查看器也可以毫无障碍地显示文档和 MWE。
检查 Windows 10 中的其他选项,上下文菜单中文件的“打开方式...”建议使用 MicroSoft Edge 作为选项。我尝试后得到了有趣的结果。文档和 MWE 中的所有页面都打开了,在这两种情况下,LM Mono Light 10 Bold 都没有问题,而 Chrysanthi Unicode 字符 u2756、u276A 和 u276B 仅在文档的致谢页中使用,根本没有显示,而其他两个字符 u276C 和 u276D 仅在偶数(左侧)页眉中使用,在文档显示中表示为重音小写字母“a”(à)和一个空的矩形轮廓。(同样,XeLaTeX 和较旧的 LuaLaTeX PDF 都显示正确。)在 MWE 中,在 Edge 中,第 3 页呈现为无意义的字符串:
mj A lec aarc gl Alrg Slgamc,
第 4 页显示为:
Slgamc aarc 534 l 54 rmse 54 gl Alrg Slgamc
除了一些空格看起来比粘贴在这里的要长,更像是制表符,甚至这里的许多“单词”在 Edge 中被类似的长“空格”分开。
抱歉,这篇文章太长了,但我认为越详细越好。如果您在 MWE 中发现我的 TeX 语法等错误,导致它根本无法在 Acrobat Reader 中打开,请告诉我,我会修复它。