(以前:Auto-pst-pdf、LuaLaTeX 和 chemnum 在 TexLive 2016 中损坏)

(以前:Auto-pst-pdf、LuaLaTeX 和 chemnum 在 TexLive 2016 中损坏)

(以前:Auto-pst-pdf、LuaLaTeX 和 chemnum 在 TexLive 2016 中损坏)

我正在测试一些 chemnum 的东西,现在我已经更新到 TexLive (TL) 2016。我得到了一个错误,其中输出auto-pst-pdfPDF<basename>-pics.pdf 生产,但主要产出<basename>.pdf却不是。

我正在从这里编译示例:无法使用 chemnum 包中的 LuaLaTeX 更改字体(使用普通图形而不是环绕图形)。在 TL 2015 下编译时没有错误,但只要使用 TL 2016 就会发生错误。

我在日志文件中收到的唯一错误消息是:

warning  (pdf backend): no pages of output.

我已经调用了该shellesc包来处理 LuaTeX 0.90\write18问题(参见TeX Live 2016:minted 无法与 LuaLaTeX 配合使用(错误已于 2016 年 6 月修复)),但这似乎仍然没有解决问题。


平均能量损失

\RequirePackage{shellesc}
\documentclass[12pt]{report}
\usepackage[a4paper,width=150mm,top=25mm,bottom=25mm]{geometry}
\usepackage{fancyhdr} 
\usepackage{achemso} 
\usepackage{chemnum}
\usepackage{ifluatex}
\ifluatex
   \usepackage{fontspec}
      \newfontface\chemnumface[Scale=MatchUppercase]{Tex Gyre Heros}
      \setchemnum{format=\chemnumface}
\else
   \usepackage{psfrag} 
\fi
\usepackage[crop=off]{auto-pst-pdf}
\usepackage{graphicx} 

\linespread{1.3}%1.5 line spacing

\begin{document}

\begin{figure}
\centering
\replacecmpd{benzene} % replaces TMP1
\includegraphics{benzene.eps}
\end{figure}

Add any text here and use \refcmpd{benzene} to refer to the
compound. This way if you add a new figure in front of this one the
numbering will automatically be changed. Here is another compound
\cmpd{xx.one}

\end{document}

答案1

TL;DR,它坏了……

这是 Chemdraw 在导出 EPS 时处理字体的方法。列出的软件包没有任何问题。

Mac OSX 版 ChemDraw 16 不保存可与psfragchemschemechemnum的界面一起使用的 EPS 图形psfrag/pstools)或任何其他 PostScript 文本替换包一起使用的 EPS 图形。这是由于 ChemDraw EPS 导出当前处理字体的方式造成的。联系客户支持如果您需要此功能,请请求降级到以前的版本(15)!

对于上面的具体问题,无法进行标签替换意味着无法生成最终的 PDF。


其余的部分

我在这里遇到的问题与被问到的问题相同这里. 错误在于不是使用上面列出的任何软件包,但使用适用于 Mac OSX 的 ChemDraw 版本 16.xx(于 2017-09-14)。

ChemDraw 16 版似乎可以加载并保存您在 EPS 中使用的字体子集。然后,它会重新编号或重新分配字符表。我不能 100% 确定该怎么称呼它。因此,PostScript 代码中的字符串与图像中呈现的字符串不匹配。

举个例子,在我的一个 EPS 中,图像中的“TMP3”是!"#$在 ChemDraw 重新编号后出现在 postscript 代码中的。(你可以在任何文本编辑器中打开 EPS 来查看这个乱码字符串。)这就是 ChemDraw 破坏整个文本/标签替换系统的地方。

psfrag查找字符串(TMP<number>)(或用括号括起来的另一个用户定义字符串),当 EPS 图像包含在文档中时,将其替换为所需的文本。如果您替换重新排序/乱码的代码((!"#$)EPS 中的 PostScript 代码中的重新排序/混乱的代码(在我上面的示例中)替换为预期的字符串,(TMP<number>) psfrag将要可以工作,并将替换编译文档中 EPS 图像中的文本。但是,独立的 EPS 图像在渲染时将不再显示文本,因为重新映射后,字符 T、M、P 和 \ 不会映射到任何内容。

最新的在职的我能够测试的版本是适用于 Mac OSX 的 ChemDraw v 15.1.0.144。有趣的是,适用于 Windows 的最新版本 (16) 没有这个问题。这似乎是针对 Chemdraw 版本 16 的 Mac 用户本地化的。

正如上面对答案的评论所指出的那样,这篇文章已经发布在Perkin Elmer 支持论坛,虽然还没有收到任何答复。我目前正在与他们的支持团队沟通,我会在(和)如果)我从他们的支持团队得到了回复或解决方案。

同时,对于那些需要解决方案的人来说,如果你的机构有站点许可证,那么你有权使用 ChemDraw 的两个先前主要版本,你只需要联系客户支持获取所需的下载链接、序列号和注册码。

相关内容