You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在IEEEtran文档中实现表格与algorithm2e算法纵向排列?

解决IEEEtran下表格(含表注)与algorithm2e算法纵向排列的问题

问题原因

你遇到的报错是因为algorithm2e的algorithm是独立浮动环境,LaTeX不允许浮动环境嵌套(比如把algorithm放进figure/subfigure里),直接嵌套会触发错误。下面提供两种可行的实现方式:


方法一:非浮动表格+固定位置算法(推荐,无需额外宏包)

将表格用minipage包裹成非浮动形式,再用algorithm2e的[H]选项固定算法位置,手动调整间距实现上下对齐:

\documentclass{IEEEtran}
\usepackage{threeparttable,booktabs,multirow}
\usepackage[ruled,vlined]{algorithm2e}

\begin{document}

% 非浮动表格(带threeparttable表注)
\begin{center}
\begin{minipage}{\linewidth}
\begin{threeparttable}
\caption{算法符号定义}
\label{tab:alg_symbols}
\begin{tabular}{@{}ll@{}}
\toprule
符号 & 含义 \\
\midrule
$X$ & 输入特征数据集 \\
$\theta$ & 模型参数集合 \\
$\mathcal{L}$ & 损失函数 \\
\bottomrule
\end{tabular}
\begin{tablenotes}[flushleft]
\item[1] 所有符号均为实数域内的矩阵/向量
\end{tablenotes}
\end{threeparttable}
\end{minipage}
\end{center}

% 调整表格与算法的间距(按需修改数值)
\vspace{-0.3em}

% 固定位置的算法
\begin{algorithm}[H]
\SetAlgoLined
\KwData{输入数据集 $X$,真实标签 $Y$}
\KwResult{训练完成的模型参数 $\theta$}
初始化 $\theta$ 为随机值\;
\For{每个训练轮次}{
    前向传播计算预测值 $\hat{Y}$\;
    计算损失 $\mathcal{L}(\hat{Y}, Y)$\;
    反向传播更新 $\theta$\;
}
\caption{基于梯度下降的模型训练算法}
\label{alg:train}
\end{algorithm}

\end{document}
  • 核心逻辑:用minipage让表格脱离浮动环境,[H]强制算法固定在当前位置,两者自然纵向排列。
  • 优势:无需额外宏包,完美适配IEEEtran的排版规范,间距可灵活调整。

方法二:用floatrow包组合浮动体

如果需要将表格和算法作为一个整体浮动,可以使用floatrow包定义组合浮动环境:

\documentclass{IEEEtran}
\usepackage{threeparttable,booktabs,multirow}
\usepackage[ruled,vlined]{algorithm2e}
\usepackage{floatrow}

% 定义表格+算法的组合浮动环境
\DeclareFloatCombination{algtable}{algorithm}[tb]

\begin{document}

\begin{algtable}
% 表格部分
\floatbox[\capbeside]{table}[\width]{\caption{算法符号定义}\label{tab:alg_symbols}}{%
\begin{threeparttable}
\begin{tabular}{@{}ll@{}}
\toprule
符号 & 含义 \\
\midrule
$X$ & 输入特征数据集 \\
$\theta$ & 模型参数集合 \\
$\mathcal{L}$ & 损失函数 \\
\bottomrule
\end{tabular}
\begin{tablenotes}[flushleft]
\item[1] 所有符号均为实数域内的矩阵/向量
\end{tablenotes}
\end{threeparttable}
}

% 算法部分
\vspace{1em}
\begin{algorithm}[H]
\SetAlgoLined
\KwData{输入数据集 $X$,真实标签 $Y$}
\KwResult{训练完成的模型参数 $\theta$}
初始化 $\theta$ 为随机值\;
\For{每个训练轮次}{
    前向传播计算预测值 $\hat{Y}$\;
    计算损失 $\mathcal{L}(\hat{Y}, Y)$\;
    反向传播更新 $\theta$\;
}
\caption{基于梯度下降的模型训练算法}
\label{alg:train}
\end{algorithm}
\end{algtable}

\end{document}
  • 注意事项:floatrow与IEEEtran的兼容性需要微调,若出现排版异常,可调整浮动位置选项(比如将[tb]改为[t])。

内容的提问来源于stack exchange,提问作者Abarajithan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 01:23:37