因为我显然对一些事情一无所知善意的建议,在两三个月后更新我的 MiKTeX 发行版后,我遇到了一个编译错误。我能够将错误追溯到以下 MNWE:
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{auto-pst-pdf}
\usepackage{pdfpages}
\begin{document}
\includepdf{example-image-a.pdf}
\begin{figure}
\includegraphics{example-image-b.eps}
\end{figure}
\end{document}
使用编译pdflatex --shell-escape mwe.tex
将在阶段期间显示编译错误auto-pst-pdf
。mwe-autopp.log
读起来有点像:
[...]
File: example-image-b.eps Graphic file (type eps)
<example-image-b.eps>
Preview: Tightpage -39321600 -39321600 39321600 39321600
! You can't use `\prevdepth' in horizontal mode.
\nointerlineskip ->\prevdepth
-\@m \p@
l.13 \includegraphics{example-image-b.eps}
Sorry, but I'm not programmed to handle this case;
I'll just pretend that you didn't ask for it.
If you're in the wrong mode, you might be able to
return to the right one by typing `I}' or `I$' or `I\par'.
! Missing $ inserted.
<inserted text>
$
l.13 \includegraphics{example-image-b.eps}
[...]
\includepdf
当注释掉行或环境时,编译将正常运行figure
。您能建议我如何修复这个问题吗?非常感谢!
/编辑回应@Marijn 和@Ulrike Fischer 的评论:
你说得对,我选择的 MNWE 并不太聪明!事实上,我还需要chemnum
我实际示例中的包来替换 eps 文件中的字符串。据我所知,这种方法确实需要包auto-pst-pdf
和--shell-escape
pdflatex 选项。让我稍微扩展一下上面的例子:
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{lmodern}
\usepackage{auto-pst-pdf}
\usepackage{pdfpages}
\usepackage{chemnum}
\begin{document}
\includepdf{example-image-a.pdf}
\begin{figure}
\replacecmpd[tag=benzene]{benzene}
\includegraphics{benzene.eps}
\end{figure}
\end{document}
我已将内容放入benzene.eps
Pastebin:点击。
答案1
miktex 还没有最新的 eso-pic,它仍然使用 eso-pic 2020/09/27 v2.0i eso-pic。
此版本的问题在于,它\nointerlineskip
在 shipout/before 钩子中加入了以 开头的材料,并且由于 LaTeX 中 shipout 例程的变化,这会进入水平模式下的预览代码并造成损害。
\__hook shipout/before ->\nointerlineskip \AtBeginShipoutUpperLeft {\put (0,\Le
nToUnit {\ESO@yoffsetI }){\ESO@HookIIIBG \ESO@HookIBG \ESO@HookIIBG \global \le
t \ESO@HookIIBG \@empty }}\AtBeginShipoutUpperLeftForeground {\put (0,\LenToUni
t {\ESO@yoffsetI }){\ESO@HookIFG \ESO@HookIIFG \ESO@HookIIIFG \global \let \ESO
@HookIIFG \@empty }}\PLS@AtBeginShipout \__hook_next shipout/before
\nointerlineskip ->\prevdepth -\@m \p@
! You can't use `\prevdepth' in horizontal mode.
使用较新的 eso-pic,文档可以帮我编译。
我在 miktex 问题跟踪器上打开了一个问题:https://github.com/MiKTeX/miktex-packaging/issues/211。
但请注意,如果preview
您pst-pdf
进行一些低级的 shipout 操作,LaTeX 中的更改会影响它们。例如,预览目前与 hyperref 不兼容:https://lists.gnu.org/archive/html/bug-auctex/2020-11/msg00000.html。