algorithmicx
我正在使用类中的包(双列)编写伪代码IEEEtran
。我的问题是,代码中的某些语句很长,我本以为会换到下一行。但是,这些行超出了边距,如下所示:
\documentclass[10pt,conference,letterpaper]{IEEEtran}
\usepackage{algorithm}
\usepackage{algorithmicx}
\usepackage{algpseudocode}
\begin{document}
\begin{algorithm}
\caption{Network similarity}
\begin{algorithmic}[2]
\Require{$G\_ref, G\_tar,ref\_community, tar\_community$}
\ForAll{$ref\_node \in G\_ref $}
\ForAll{$tar\_node \in G\_tar$}
\State{ $pair\_sim\_table[ref\_node,tar\_node] \gets Calculate\_similarity(ref\_feature\_vec[ref\_node],tar\_feature\_vec[tar\_node])$}
\EndFor
\EndFor \\
\Return pair\_sim\_table, cluster\_sim
\end{algorithmic}
\end{algorithm}
\end{document}
由于与命令相关的代码\State
很长,它会溢出边距,而不是回绕。如果这是一个微不足道的问题,请原谅。任何帮助都将不胜感激!
答案1
我认为您的代码中的一个主要问题是使用$
数学模式分隔符将文本设置为斜体。通过这样做,您会得到非常糟糕的(无字距)单词字母(最明显的是“e”和“f”之间的字母,如“ref”)。更糟糕的是,至少在一种情况下,TeX 将整个表达式视为一个大的内联数学公式,无法弄清楚(根据其自身的语法规则)在哪里放置一个换行符;因此溢出。
我建议您尝试以下方法,该方法仅用于$
明确的数学项目,例如\in
和\gets
:
\documentclass[10pt,conference,letterpaper]{IEEEtran}
\usepackage{algorithm}
\usepackage{algorithmicx}
\usepackage{algpseudocode}
\begin{document}
\begin{algorithm}
\caption{Network similarity}
\begin{algorithmic}[2]
\Require{\emph{G\_ref}, \emph{G\_tar}, \emph{ref\_community}, \emph{tar\_community}}
\ForAll{\emph{ref\_node $\in$ G\_ref}}
\ForAll{\emph{tar\_node $\in$ G\_tar}}
\State{\emph{pair\_sim\_table}[\emph{ref\_node},\emph{tar\_node}] $\gets$
\emph{Calculate\_similarity}(\emph{ref\_feature\_vec}[\emph{ref\_node}],
\emph{tar\_feature\_vec}[\emph{tar\_node}])}
\EndFor
\EndFor \\
\Return \emph{pair\_sim\_table}, \emph{cluster\_sim}
\end{algorithmic}
\end{algorithm}
\end{document}