我搜索了错误,但似乎没有找到真正通缉间距。另外,这是我在 Tex Stack Exchange 上的第一个问题,所以如果我的格式不正确、没有遵循任何惯例等,请告诉我。
我的简化示例代码是:
\documentclass[12pt]{amsart}
\begin{document}
\[Some stuff\]
~
\[Some more stuff\]
\end{document}
这将产生以下错误:
! You can't use `\unskip' in vertical mode.
\nonbreakingspace ->\unskip
\nobreak \ \ignorespaces
l.8 ~
答案1
该类amsart
重新定义~
为\protect\nonbreakingspace
确实具有\unskip
和\ignorespaces
,因为它想要捕获用户输入的情况
some ~ word
并使它们像 一样正常化some~word
。
“留空一行”的正确做法是
text above
\bigskip
text below
根据中的定义amsart
,这使得~
段落开头的文本非法。
就你的情况而言,你似乎使用了连续数学显示,但由于其他原因,这是错误的:你应该使用gather*
。请注意$$...$$
应该绝不用于 LaTeX。
\begin{gather*}
eq1 \\
eq2 \\[3ex]% some vertical space
eq3
\end{gather*}
还有几种其他对齐环境可用。检查texdoc amsmath
。
答案2
标准定义~
不会产生此错误
\documentclass{article}
\usepackage{amsthm}
\begin{document}
\begin{proof}
...
$$some stuff$$
$$some more stuff$$
~ % want space here to set apart from above
$$yet more stuff$$
...
\end{proof}
\end{document}
生产
您似乎对~
以 开头的进行了局部重新定义\unskip
,这显然是不正确的,但对我的本地 tex 树进行快速搜索并没有发现您可以使用的可以做出此类定义的包。
尽管上述内容没有错误,但垂直“间隙”并不是垂直空间,而是一个“白色段落”的水平线,因此~
它不会正常运行,既不会拉伸也不会收缩,也不会在分页符处被丢弃。
$$
不支持 latex 语法,但显示数学环境永远不应一个接一个地使用,无论是$$
支持的环境,例如\begin{equation}
。如果您使用多行环境,您可以根据需要增加间距,例如
\documentclass{article}
\usepackage{amsthm,amsmath}
\begin{document}
\begin{proof}
...
\begin{gather*}
some stuff\\
some more stuff\\[1cm]
yet more stuff
\end{gather*}
...
\end{proof}
\end{document}
答案3
我在这里基本上是猜测,但既然你正在使用amsart
,......
从您的描述来看,您似乎希望两个数学显示之间有一个较大的间隙。这通常被认为是不合适的(请参阅数学类型),但想必你有一个理由。
有一个标准功能可以在多行显示的两行之间添加空格。即在\\
分隔这种显示的两行之后,将尺寸的值指定为选项。记住,不要不是在反斜杠和选项之间留一个空格。 amsmath
会不遗余力地识别这个位置上的空格,以便“下一行”上以括号开头的表达式不会被默认的 latex 假设所困扰,因为默认的 latex 假设认为括号中该位置的任何内容必须是一种选择。
例子:
\begin{gather*}
x + y = z \\[12pt]
abc = def
\end{gather*}