打破算法框内的长方程

打破算法框内的长方程

我试图将下面的公式分解成多行,因为它超出了我的 LaTex 文档中的算法框,

\begin{algorithm}
\SetKwInOut{Input}{Input}
\SetKwInOut{Output}{Output}

Thread Data$(\zeta, \epsilon)$\\
\Input{Packets}
\Output{Dataset}

\For{k iterations} {

\For {d steps} {

$$
\nabla_{\theta} \frac{1}{m} \sum_{i=1}^{m} \left[ \log{D_{\theta}(x^{(i)})} +\log({1 - D_{\theta}(G_{\phi}(z^{(i)}))}) \right]
$$\\

}

}
\caption{Algorithm 1.}
\end{algorithm}

这些是我使用的软件包,

\usepackage{cite} 
\usepackage{mathtools,amssymb}  
\usepackage{graphicx} 
\usepackage{textcomp} 
\usepackage[table]{xcolor} 
\usepackage{lipsum} 
\usepackage{tabularx}
\usepackage{algorithmic} 
\usepackage[noend]{algpseudocode} 
\usepackage[linesnumbered,ruled]{algorithm2e}

输出

在此处输入图片描述

编辑

这是一份双栏文档。

答案1

一些建议:使用与 Times 兼容的数学字体,而不是默认的字体(即 Computer Modern Math);不要使用$$ ... $$,而是使用$\displaystyle ... $;写\nabla_{\!\theta}D_{\!\theta}G_{\!\phi},即减少主符号和它们各自下标之间的间距;不要使用\left\right,而是使用\bigl\bigr

另外:如果你使用内联数学而不是显示数学,并且不使用\left\right,如果公式仍然太长而无法容纳,LaTeX 可能会自己找到合适的换行符。为了验证这一点,请将文档类选项添加12pt到以下代码并重新编译。

在此处输入图片描述

\documentclass{IEEEtran}
%% (pared the preamble down to the bare minimum)
\usepackage{mathtools,amssymb}
\usepackage{newtxmath}   % <-- use a Times-type math font
\usepackage[noend]{algpseudocode} 
\usepackage[linesnumbered,ruled]{algorithm2e}

\begin{document}
\begin{algorithm}
\SetKwInOut{Input}{Input}
\SetKwInOut{Output}{Output}

Thread Data$(\zeta, \epsilon)$\\
\Input{Packets}
\Output{Dataset}

\For{$k$ iterations} {

\For {$d$ steps} {
$\displaystyle
\nabla_{\!\theta}\, \frac{1}{m} \sum_{i=1}^{m} 
   \bigl[ \log D_{\!\theta}(x^{(i)}) +
   \log\bigl({1 - D_{\!\theta}(G_{\!\phi}(z^{(i)}))}\bigr) \bigr]
$\\
}
}
\caption{Algorithm 1.}
\end{algorithm}
\end{document}

相关内容