当 filecontents* 包含 \begin{document}..\end{document} 时,如何避免混淆?

当 filecontents* 包含 \begin{document}..\end{document} 时,如何避免混淆?

我用 TeX 处理以下代码,pdflatex --shell-escape但由于生成的代码prepare.tex不包含,编译出现错误而暂停\end{document}

\documentclass{article}
\begin{filecontents*}{prepare.tex}
\documentclass{beamer}
\usepackage{graphicx}
\usepackage[active,tightpage,graphics]{preview}
\PreviewBorder=0pt

\begin{document}
\begin{frame}
    \only<1>{\includegraphics{example-image-a}}
    \only<2>{\includegraphics{example-image-b}}
\end{frame}
\end{document}
\end{filecontents*}


\usepackage{animate}
\begin{document}
    \immediate\write18{pdflatex.exe prepare.tex}
    \animategraphics{10}{prepare.pdf}{}{}
\end{document}

当它封闭时如何避免filecontents*混淆\begin{document}..\end{document}

奖励问题(而不是我为其创建新问题):filecontents如果指定文件已存在,我该如何强制覆盖它?

编辑:实际上没有问题filecontents。问题的根源是.pdf中的扩展\animategraphics。现在不幸的是,标题具有误导性。

答案1

下面的示例有效。

我的更改

  1. 的参数\animategraphics不能有文件扩展名。
  2. 我加载包裹filecontents来回答您的奖励问题。

这里是 mwe:

\documentclass{article}
\usepackage{filecontents}
\usepackage{graphicx}
\begin{filecontents*}{prepare.tex}
\documentclass{beamer}
\usepackage{graphicx}
\usepackage[active,tightpage,graphics]{preview}
\PreviewBorder=0pt

\begin{document}
\begin{frame}
    \only<1>{\includegraphics{example-image-a}}
    \only<2>{\includegraphics{example-image-b}}
\end{frame}
\end{document}
\end{filecontents*}


\usepackage{animate}
\begin{document}
    \immediate\write18{pdflatex.exe prepare.tex}
    \animategraphics{10}{prepare}{}{}% <======= MUST NOT HAVE EXTENSION!
\end{document}

使用 Ubuntu+TeXLive 测试

相关内容