奇怪的错误:缺少 \begin{document}

奇怪的错误:缺少 \begin{document}

为什么会这样:

\documentclass[a4paper]{report}
\usepackage{mathptmx}
\DeclareMathSymbol{\coprod@}{\mathop}{largesymbols}{"60}
\gdef\coprod{\DOTSB\coprod@\slimits@}
\let\DOTSB\relax
\let\slimits@\relax

\begin{document}
$\coprod$
\end{document}

产生:

This is pdfTeX, Version 3.1415926-2.5-1.40.14 (TeX Live 2013)
 restricted \write18 enabled.
entering extended mode
(./[email protected]
LaTeX2e <2011/06/27>
Babel <3.9f> and hyphenation patterns for 78 languages loaded.
(/usr/local/texlive/2013/texmf-dist/tex/latex/base/report.cls
Document Class: report 2007/10/19 v1.4h Standard LaTeX document class
(/usr/local/texlive/2013/texmf-dist/tex/latex/base/size10.clo))
(/usr/local/texlive/2013/texmf-dist/tex/latex/psnfss/mathptmx.sty)

./[email protected]:3: LaTeX Error: Missing \begin{document}.

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

l.3 ...ymbol{\coprod@}{\mathop}{largesymbols}{"60}

我该怎么做才能解决这个问题?

更新: 正如答案所暗示的,我缺少\makeatletter\makeatother。将它们添加编译为: 在此处输入图片描述 我想要: 在此处输入图片描述 我如何获得它?

答案1

\makeatletter如果没有/括号\makeatother,@ 就不能成为命令名称的一部分。

\makeatletter
\DeclareMathSymbol …
\let\slimits@\relax
\makeatother

对我来说似乎效果更好(虽然我不知道你想要的结果是什么——至少它是编译过的)。

答案2

我认为您遗漏了\makeatletter第 3 行之前和\makeatother之前的\begin{document}内容。LaTeX 会尝试扩展@-commands,因此引发该错误。

相关内容