为什么能mycommandA
工作但不能呢mycommandB
?
\documentclass{article}
\newcommand{\mycommandA}{
\begin{document}
A
\end{document}
}
\newcommand{\mycommandB}[1][]{
\begin{document}
B
\end{document}
}
% \mycommandA % works
% \mycommandB % doesn't work
答案1
如果\mycommandB
是文件中的最后一个标记,TeX 将停止输入,因为它正在寻找某些内容以决定是否跟随可选参数。
确实,
\documentclass{article}
\newcommand{\mycommandA}{
\begin{document}
A
\end{document}
}
\newcommand{\mycommandB}[1][]{
\begin{document}
B
\end{document}
}
% \mycommandA % works
\mycommandB % doesn't work
终端显示*
并等待用户输入。按回车键结束运行。但是,如果你pdflatex
使用该-interaction=nonstopmode
标志运行,则会出现
! Emergency stop.
<*> mjc
! ==> Fatal error occurred, no output PDF file produced!
因为在这种模式下,无法获取用户输入。
另一方面,如果我在后面添加任何内容\mycommandB
(例如,一个空白行),则运行也会成功nonstopmode
。