我正在用 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
可以进行交叉引用。