auto-pst-pdf 和 pdfpages 变得不兼容?

auto-pst-pdf 和 pdfpages 变得不兼容?

因为我显然对一些事情一无所知善意的建议,在两三个月后更新我的 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-pdfmwe-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-escapepdflatex 选项。让我稍微扩展一下上面的例子:

\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.epsPastebin:点击

答案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

但请注意,如果previewpst-pdf进行一些低级的 shipout 操作,LaTeX 中的更改会影响它们。例如,预览目前与 hyperref 不兼容:https://lists.gnu.org/archive/html/bug-auctex/2020-11/msg00000.html

相关内容