我试图将下面的公式分解成多行,因为它超出了我的 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}