神秘的“两个 \documentclass 或 \documentstyle 命令。”

神秘的“两个 \documentclass 或 \documentstyle 命令。”

LaTeX 代码

\documentclass[12pt,a4paper]{article}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{pstricks}
\begin{document}
zzz
\end{document}

导致 latex 和 pdflatex 中出现神秘错误“两个 \documentclass 或 \documentstyle 命令。”为什么???不是实际上\documentclass 类似于(原始)问题\documentclass{tikz-qtree} 错误 两个 \documentclass 或 \documentstyle 命令

可能不相关,但我在 Debian 系统中使用 texlive(2018 版)。

moewe 询问的 .log:https://pastebin.com/BGcHs3Rz

回答其他评论:文件名是 psttest.tex。

答案1

理解此错误的关键信息是.log实际错误消息开始之前的行。它显示

(./pstricks.tex

! LaTeX Error: Two \documentclass or \documentstyle commands.

See the LaTeX manual or LaTeX Companion for explanation.
Type  H <return>  for immediate help.
 ...                                              

l.1 \documentclass[12pt]{
                         article}
?
! Emergency stop.
 ...                                              

l.1 \documentclass[12pt]{
                         article}
The document may only declare one class.

(./pstricks.tex意味着 TeX 打开了一个名为 的文件./pstricks.tex(即与主 TeX 文件位于同一目录中的文件pstricks.tex)。一旦加载该文件,就会在\documentclass第 1 行发生错误。

该包的一部分代码pstricks位于一个名为的文件中pstricks.tex,该文件由该包加载。(pstricks.sty有一行\input{pstricks}%,内容为pstricks.tex。)

TeX 加载文件的方式意味着当前工作目录中的文件优先于 TeX 发行版安装的文件。一般来说,这是一个非常有用的功能,因为您可以轻松地在本地覆盖某些内容,而无需更改系统文件。

pstricks.tex但在这种情况下,这意味着加载文档目录中调用的完全不相关的文件,而不是中的包代码pstricks.tex

避免这种情况的最简单方法是将本地文件重命名为 以外的名称pstricks.tex。通常,您应避免将文件命名为与类或包相同的名称,但您永远无法完全确定哪些名称有问题,因为包可能会加载.tex具有不同名称的其他文件。唯一可以确定的方法是.log彻底检查是否发生类似问题。

pstricks.tex请注意,如果您的文件不包含 ,错误可能更加隐秘,并且可能发生在不同阶段\documentclass,例如,如果它只是您使用\input或加载到更大的文档中的论文的一章\include


这是什么约翰内斯·B暗示在他的评论中

不要将你的文档命名为 article.tex

不过,顺便说一句,这acrticle.tex可能没什么问题,因为article.cls不会尝试加载article.tex

几天前,德国 goLaTeX 论坛讨论了类似的问题https://golatex.de/markdown-in-latex-einbinden-t21651.html当用户调用其文档时(在不区分大小写的 Windows 系统上),问题出现在markdown加载的包中。markdown.texMarkdown.tex

相关内容