![chemnum、hyperref 和 .eps 文件兼容性](https://linux22.com/image/474416/chemnum%E3%80%81hyperref%20%E5%92%8C%20.eps%20%E6%96%87%E4%BB%B6%E5%85%BC%E5%AE%B9%E6%80%A7.png)
我意识到,在过去的几年里,在preview
与hyperref
(见这里和Ulrike Fisher 的问题引用一对)。当使用chemnum
.eps 文件(即来自 ChemDraw)中的自动编号 TMP 标签时,建议使用以下代码:
\makeatletter
\ifpdf
\def\@tempa{off}
\ifnum\pdf@shellescape=\@ne\relax
\ifnum\pdf@strcmp
{\pdf@filemoddate{\jobname.tex}}
{\pdf@filemoddate{\jobname-pics.pdf}}
>0 \relax
\def\@tempa{on}
\fi
\fi
\PassOptionsToPackage{\@tempa}{auto-pst-pdf}
\else
\disable@package@load{hyperref}{}
\disable@package@load{bookmark}{}
\fi
\makeatother
这适用于 MWE,也适用于我使用的所有其他软件包(与化学相关和不相关)。但是,由于研究生院论文的要求,此修复不适用于自定义文件.sty
。由于此自定义文件.sty
包含hyperref
,因此编译总是导致GPL Ghostscript 10.02.1: Unrecoverable error, exit code 1
在许多情况下发现的错误。无论上述代码是否放在此文件中,hyperref
都会不断导致错误。
我唯一的解决方法是将所有hyperref
选项移至主程序的前言部分.tex
,而不是将其埋入包中。这是不好的做法吗?
使用该chemnum
包自动编号已保存为.eps
文件(打开文本嵌入)的 ChemDraw 文件的一个 MWE 如下:
\documentclass[]{book}% I'm writing a dissertation after all
\usepackage{auto-pst-pdf}
\makeatletter
\ifpdf
\def\@tempa{off}
\ifnum\pdf@shellescape=\@ne\relax
\ifnum\pdf@strcmp
{\pdf@filemoddate{\jobname.tex}}
{\pdf@filemoddate{\jobname-pics.pdf}}
>0 \relax
\def\@tempa{on}
\fi
\fi
\PassOptionsToPackage{\@tempa}{auto-pst-pdf}
\else
\disable@package@load{hyperref}{}
%\disable@package@load{bookmark}{}
\fi
\makeatother
\usepackage{chemnum}
\usepackage{hyperref}
\begin{document}
\begin{figure}
\replacecmpd[]{1}%tag defaults to TMP and should include a number at the end
\includegraphics{examplefigure.eps}
\end{figure}
\end{document}
我不完全确定如果没有附加文件它是否算作 MWE examplefigure.eps
,但你可以使用你最喜欢的一个。
只是为了完整性,我pdflatex.exe -synctex=1 -interaction=nonstopmode -shell-escape %.tex
在 TeXStudio 上使用 TeXLive2023。
将hyperref
自定义包之类的包放入序言本身是不是不好的做法?有没有更好的选择?