如何自动换行内联数学公式?

如何自动换行内联数学公式?

下面是一个 parbox 示例,它会产生欠满和过满警告:

\parbox{100pt}{A set of comparison triplets \(T = \{ (i,j,l) | z_i \;is\; more\; similar\; to\; z_j\; than\; z_l\}\) is given.}

当渲染为 pdf 时,它看起来像这样:

渲染公式

显然,公式的某些部分不能分成多行。我想让 Latex 断行大括号内的文本,并将其定位为 parbox 中的其他文本。这可能吗?

我搜索过类似的问题:

\allowbreak 对我来说也很好用。我可以定义方程式可能被分解的特定点。但是我如何才能避免在我的数学排版中到处散布 allowbreak?以下代码有效(它仍然会产生未满警告,但这是我的文本内容,与内联公式无关)但阅读和编辑起来很糟糕:

\parbox{100pt}{A set of comparison triplets \(T = \{ (i,j,l) | \allowbreak z_i \; \allowbreak is\;  \allowbreak more\;  \allowbreak similar\;  \allowbreak to\;  \allowbreak z_j\; \allowbreak than\; \allowbreak z_l\}\) is given.}

答案1

我给出的一般建议是避免使用长文本集构建器符号:读者在查看文本时会非常疲倦,并且很难分离出右括号。

A set $T$ consisting of comparison triplets $(i,j,l)$ such that $z_i$ 
is more similar to $z_j$ than $z_l$ is given.

但是,如果你使用集合构建器符号,则不是一套, 但集合

The set $T$ consisting of all comparison triplets $(i,j,l)$ such that $z_i$ 
is more similar to $z_j$ than $z_l$ is given.

如果您坚持使用集合构建器符号,请来回进入和退出数学模式:

The set of comparison triplets $T=\{(i,j,l)\mid z_i$ 
is more similar to $z_j$ than $z_l\}$ is given.

在此处输入图片描述

我用来twocolumn模拟你的问题。请注意\mid,不是简单的|周围有错误间距。

替代方法:定义一个符号。

\documentclass[twocolumn]{article}

\newcommand{\MST}{\mathrm{MST}}

\begin{document}

Define the ternary relation ``is more similar to than'' on the positive integers
by stipulating that $\MST(i,j,l)$ holds if and only if $z_i$ is more similar
to $z_j$ than $z_l$ and set
\[
T=\{(i,j,l)\mid \MST(i,j,l)\}
\]

\end{document}

在此处输入图片描述

答案2

您只需在文本模式下输入文本即可。

\documentclass[12pt,a4paper]{article}
\usepackage{amsmath}
\begin{document}

\parbox{100pt}{A set of comparison triplets $T=\{(i,j,l) | z_i$ is more similar to $z_j$ than $z_l\}$ is given.}

\end{document}

在此处输入图片描述

答案3

我个人认为集合构建器符号是合适的,但从风格上讲,我会说这个(或者实际上这么长的任何东西)应该是一个显示的方程式,因为这样比内联方程式更容易阅读。

在此处输入图片描述

\parbox{100pt}{
    A set of comparison triplets 
    \[
        T = \{ (i,j,l) \mid \text{$z_i$ is more similar to $z_j$  than $z_l$}\}
    \]
    is given.
}

(请注意,我还将其更改为用于\text等式的文本部分,这需要包含包amsmath。此外,使用\mid而不是|在垂直线周围放置正确的间距。)

这本身并不能解决 hbox 过满/不足的问题,但是通过使用multline提供的环境amsmath,您可以自己添加换行符:

在此处输入图片描述

\documentclass{article}
\usepackage{amsmath}

\begin{document}

\parbox{100pt}{
    A set of comparison triplets 
    \begin{multline*}
        T = \{ (i,j,l) \mid \text{$z_i$ is} \\
        \text{more similar to $z_j$} \\
        \text{than $z_l$}\}
    \end{multline*}
    is given.
}

\end{document}

不可否认,这看起来仍然有点傻,但我希望 100pt 列只是为了举例子,而你实际上至少有比这多一点点的空间。

您可以使用\\在环境中插入换行符multline,但它们必须位于任何命令之外,这就是为什么我必须放置几个单独的\text命令。

您可以删除*frommultline*以赋予其方程编号。(我建议始终对显示的方程进行编号。)另请注意,出于某种原因,它是带有一个“i”的“多行”,而不是您可能期望的“多行”。

相关内容