![奇怪的错误:缺少 \begin{document}](https://linux22.com/image/299340/%E5%A5%87%E6%80%AA%E7%9A%84%E9%94%99%E8%AF%AF%EF%BC%9A%E7%BC%BA%E5%B0%91%20%5Cbegin%7Bdocument%7D.png)
为什么会这样:
\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,因此引发该错误。