函数仅在部分中第一次调用时抛出错误

函数仅在部分中第一次调用时抛出错误

我正在用 LaTeX 为本学期的作业设置一个模板,但出现错误,第一次调用函数时会失败,但之后每次在文档中调用时都会成功。以下是该函数:

\newcommand{\problem}[1]
{
   {
        \vspace{2\baselineskip}\\
        \noindent\large \bfseries Problem~#1
    }\\
}

下面是一个用法(第一次失败,第二次有效):

\section*{Book Problems}
\problem{1.1.2b}
\problem{1.1.2c}

以下是 pdflatex 的全部内容:

 ...                                              

l.48 \problem{1.1.2b}

?

Underfull \hbox (badness 10000) in paragraph at lines 48--60

我认为这与有关\vspace。您知道有什么方法可以避免它失败吗?

答案1

你没有提供足够的代码来确定,但是

 \vspace{2\baselineskip}\\

如果前面有一个空白行,我是否会期望出现“此处没有行可以结束”的错误,如果没有,则会发出 10000 个未满框的警告。

\\在垂直模式或段落末尾使用它总是错误的,所以只需删除它。(可能被替换为\par \vspace

\\请注意,如果源代码中的标题后面有一个空行,第二个也会发出警告

\problem{1.1.2b}

xxx

即使用作

\problem{1.1.2b}
xxx

它不是一个真正的标题,因此例如不会阻止标题后的分页符。

通常最好使用来定义这样的环境,\newtheorem以便标题使用通常的乳胶标题(或列表项)机制,并且编号将是自动的,并且\ref可以进行交叉引用。

相关内容