多个段落打破自定义命令

多个段落打破自定义命令

首先,如果问题看起来重复,我很抱歉:我试图在以前提出的问题中找到解决方案,但提供的所有提示似乎都对我不起作用。

我的情况如下。我正在编写一个新类来排版我的论文(希望能够帮助其他想使用 LaTeX 而不是 Hangul 的学生),方法是自定义 memoir 包。

一切都进行得很顺利,直到我陷入困境:我有许多自定义命令,这些命令定义变量,然后由命令输出\prelims(参见下面的代码)。

\newcommand*{\supervisor}[1]{\gdef\KNUsupervisor{#1}}
\newcommand*{\department}[1]{\gdef\KNUdepartment{#1}}
\newcommand*{\major}[1]{\gdef\KNUmajor{#1}}
\newcommand*{\degree}[1]{\gdef\KNUdegree{#1}}

%%% \asbtractEN
\newcommand*{\abstractEN}[1]
{
  \gdef\KNUabstractEN
  {
    {
      \begin{center}
      \@title
      \vspace{1em}

      \@author
      \vspace{1em}

      School of \KNUdepartment \\
      Major in \KNUmajor \\
      The Graduate School \\
      (Supervised by Professor \KNUsupervisor)
      \end{center}
      \vspace{2em}

      (Abstract)
      \vspace{1em}

     \mbox{#1}
    }
  }
}

\newcommand{\prelims}{
\frontmatter
\tableofcontents \newpage
\listoffigures \newpage
\listoftables \newpage
\cleardoublepage
\phantomsection
\addcontentsline{toc}{chapter}{Abstract}
\KNUabstractEN

\mainmatter
\setcounter{secnumdepth}{2}
}

我的问题是,当指定由多个段落组成的摘要时,例如

\abstractEN{
Par1

Par2
}

编译器向我吐出了“通常”Paragraph ended before \abstractEN was complete.

我尝试将参数放在单独的块中、框中、甚至小页面中,但错误仍然存​​在。

周围有热心人吗?

PS 摘要命令中的任何英文错误均严格按照我们大学的模板要求-.-

答案1

用 TeX 术语来说,这是因为您的命令未定义为,\long因此不允许在其参数中出现段落分隔符,因为您已用\newcommand*而不是 来定义它们\newcommand

如果使用\def和变体来定义带有参数的命令(并且希望它们也接受段落分隔符),则需要使用前缀\long。Andrew Swann 指出,您使用\gdef所以应该注意这一点,但\gdef您的示例中定义的命令似乎都没有带参数,因此不需要这样做。

解决方案:*从 中删除\newcommand*{\abstractEN}

\newcommand和有什么区别\newcommand* 这个问题的答案解释了为什么非形式\long是有用的。

相关内容