我刚刚开始使用 LaTeX,所以这个问题可能有点愚蠢,但我收到了一条警告“检测到过满的 \hbox(---pt 太宽)”,并且编译后的 pdf 在一行中显示此文本“如果面片 (x', y') 中的边缘密度总和大于阈值”(代码中的第 3 行),并且此行超出范围。理想情况下,该行应该打印成两行。我尝试过换行,但在这里不起作用。如何纠正这个问题?
\begin{equation}
I^p(x',y') = \left\{\begin{array}{rl}
1 & \text{if the sum of edge densities in the patch (x', y') is greater than threshold}\\
0 & \text{otherwise}\\
\end{array}\right.
\end{equation}
答案1
您不能在 中换行\text
,但可以使用\parbox
;调整宽度以适合。
\documentclass{article}
\usepackage{amsmath}
\usepackage{lipsum}% for mock text
\begin{document}
\lipsum*[3]
\begin{equation}
I^p(x',y') =
\begin{cases}
1 & \parbox[t]{.5\textwidth}{\raggedright
if the sum of edge densities in the patch
$(x', y')$ is greater than threshold
}\\[4ex]
0 & \text{otherwise}
\end{cases}
\end{equation}
\lipsum[4]
\end{document}
答案2
使用mathtools
和stackengine
,您的代码非常简单。 负责cases*
处理左括号,并且环境的第二列会自动退出数学模式:
\documentclass{article}
\usepackage{mathtools, stackengine}
\begin{document}
\begin{equation}\def\stackalignment{l}
I^p(x',y') =\begin{cases*}
1 & \stackunder{if the sum of edge densities in the patch}{$(x', y')$ is greater than threshold} \\
0 & otherwise\\
\end{cases*}
\end{equation}
\end{document}