![文件在 Texlive 中编译成功,但在 MikTex 中出错。使用 animate 包。为什么?](https://linux22.com/image/374668/%E6%96%87%E4%BB%B6%E5%9C%A8%20Texlive%20%E4%B8%AD%E7%BC%96%E8%AF%91%E6%88%90%E5%8A%9F%EF%BC%8C%E4%BD%86%E5%9C%A8%20MikTex%20%E4%B8%AD%E5%87%BA%E9%94%99%E3%80%82%E4%BD%BF%E7%94%A8%20animate%20%E5%8C%85%E3%80%82%E4%B8%BA%E4%BB%80%E4%B9%88%EF%BC%9F.png)
使用 TL 2017,此 MWE 编译成功,没有错误
This is LuaTeX, Version 1.0.4 (TeX Live 2017)
下面是 MWE。我有一些 .png 文件,我正尝试使用 animate 包制作动画。它在 TL 2017 上运行良好,但无法在 Windows 7 上的 MiKtex 下编译。
\documentclass{article}
\usepackage{animate}
\usepackage{graphicx}
\begin{document}
\begin{center}
\animategraphics[controls,width=\textwidth]{1}{r}{1}{41}
\end{center}
\end{document}
但在Miktex的领导下
This is LuaTeX, Version 1.07.0 (MiKTeX 2.9.6600 64-bit)
它给出了这个错误
(C:/Users/me/AppData/Roaming/MiKTeX/2.9/tex/latex/l3packages/l3keys2e/l3keys2e.
sty)) ("C:/Program Files/MiKTeX 2.9/tex/latex/ocgx2/ocgbase.sty")
(C:/Users/me/AppData/Roaming/MiKTeX/2.9/tex/context/base/supp-pdf.mkii
[Loading MPS to PDF converter (version 2006.09.02).]
)) ("C:/Program Files/MiKTeX 2.9/tex/latex/graphics/graphicx.sty") (./foo.aux)
("C:/Program Files/MiKTeX 2.9/tex/latex/oberdiek/epstopdf-base.sty"
("C:/Program Files/MiKTeX 2.9/tex/latex/oberdiek/grfext.sty")
("C:/Program Files/MiKTeX 2.9/tex/latex/oberdiek/kvoptions.sty"))
! Undefined control sequence.
\@anim@xform #1#2#3->\pbs_pdfxform:nnn
{#1}{#2}{#3}\xdef \@anim@lastxform {\...
l.7 ...phics[controls,width=\textwidth]{1}{r}{1}{41}
?
查看 foo.log 文件,我看到了这一点
("C:/Program Files/MiKTeX 2.9/tex/latex/oberdiek/grfext.sty"
Package: grfext 2016/05/16 v1.2 Manage graphics extensions (HO)
)
("C:/Program Files/MiKTeX 2.9/tex/latex/oberdiek/kvoptions.sty"
Package: kvoptions 2016/05/16 v3.12 Key value format for package options (HO)
)
Package epstopdf-base Info: Redefining graphics rule for `.eps' on input line 43
8.
Package grfext Info: Graphics extension search list:
(grfext) [.pdf,.png,.jpg,.mps,.jpeg,.jbig2,.jb2,.PDF,.PNG,.JPG,.JPEG
,.JBIG2,.JB2,.eps]
(grfext) \AppendGraphicsExtensions on input line 456.
)
! Undefined control sequence.
\@anim@xform #1#2#3->\pbs_pdfxform:nnn
{#1}{#2}{#3}\xdef \@anim@lastxform {\...
l.9 ...phics[controls,width=\textwidth]{1}{r}{1}{41}
? X
我将上述文件和所有需要在我的网站上运行该文件的图像放在了 zip 文件中。 框架.zip
解压文件将创建一个名为的文件夹frames/
,其中包含 latex 文件和 41 张 png 图像。我尝试了lualatex foo.tex
,pdflatex foo.tex
两者都可以在 TL 2017 上运行良好,但在 Miktex 上失败。需要其他信息吗?我尝试\listfiles
从 miktex 获取,但由于它给出编译错误,我没有看到生成这样的列表。我想找出 miktex 正在使用的动画包的版本并将其与 TL 进行比较。
答案1
我想我会将我之前的评论扩展为答案。OP 已经诊断出问题,但不知道原因。考虑到这里出现大量相关问题,这也许是 MikTeX 用户经常遇到的问题。那么,让我们谈谈 Windows(7 或更高版本):
当您安装程序(不仅仅是 MikTeX)时,通常会收到系统警报,询问您是否要更改系统。这或多或少就是 Windows 在 Linux 中执行“sudo”的方式,只不过您通常不需要密码。
如果您同意,则程序将安装到 或C:\Program Files
,具体C:\Program Files (x86)
取决于其体系结构。
已安装的程序有自己的默认系统范围设置。它们通常会与程序一起安装在同一文件夹中。或者(不确定这是否始于 Windows 7 或更高版本)系统范围设置可能安装在 中C:\ProgramData
。
上述所有位置都需要超级用户 (admin) 权限才能进行更改。例如,如果您进入其中一个文件夹并尝试在文本编辑器中更改某些纯文本设置,您将收到系统警报。同样,这就像 Linux 的“sudo”。如果您以默认用户身份登录(始终是管理员),则无关紧要。Linux 上的行为类似。
对于用户特定的程序数据(通常包括在程序安装时创建的一组基本数据),将在您的User\Yourself
主文件夹中的某个位置创建一个新文件夹。在该位置,不需要管理员权限。您可以在那里更改内容,而不会收到系统警报。同样,Linux 的工作方式与用户主文件夹相同。
用户程序数据的规范位置位于用户AppData\Roaming
文件夹中。此文件夹通常是隐藏的,但可以显示。Linux 等效于~/.local
。与 Linux 一样,用户的数据可能位于规范位置,也可能位于用户主文件夹中的某个非规范位置。真正需要的是程序知道在哪里找到自己的数据。
在 TeX 中,用户可以将数据放置在通常名为 的位置texmf-local
。那里的任何内容都将覆盖系统设置(通常在texmf
或texmf-dist
文件夹中找到)。
似乎在 MikTeX 中,用户自己的设置都放在 中AppData\Roaming\MikTeX
,这对他们来说是个非常好的地方。这就是texmf-local
。但这只是非管理员设置。任何管理员设置都放在程序本身旁边。
因此,如果您进行非管理员安装或更新,一些资料将会进入AppData\Roaming
并覆盖程序文件夹中保存的管理员数据。如果漫游数据较旧,则管理员更新将无效。
如果您以前使用过 MikTeX,然后卸载它,留下其AppData\Roaming\MikTeX
文件夹,则可能会出现问题。残留数据可能会覆盖新安装。解决方案:如果您卸载,请确保删除漫游数据。我还会使用 CCleaner 等程序来删除杂散的注册表项。
当我使用 MikTeX 时,我会使用便携式安装。所有设置都集中在一个地方,因此不会相互矛盾。无需管理员安装。最重要的是,我偶尔可以压缩整个文件,并保留 ZIP 文件以将 MikTeX 恢复到较早的时间。