在LaTeX的算法环境中格式化注释

时间:2009-11-16 19:10:06

标签: algorithm latex formatting

我想在LaTeX中排版算法。我正在使用算法包和环境来做到这一点。一切都很好,除非我添加注释(使用\ COMMENT),它们会在语句后立即输出。我希望所有的评论都要一致(并且与陈述相抵消)。有没有简单的方法呢?

“再现”HTML前面的PDF输出,我想:

if condition then
   something         # comment 1
else
   something else    # comment 2

而不是

if condition then
   something  # comment 1
else
   something else  # comment 2

3 个答案:

答案 0 :(得分:11)

我会这样做:

\usepackage{eqparbox}
\renewcommand{\algorithmiccomment}[1]{\hfill\eqparbox{COMMENT}{\# #1}}

注1:确定评论的最大宽度需要两个文档编辑。

注2:显然,这仅适用于不太长的单行注释。


继续这个想法之后,这里有一个完整的例子,同样的方式,但也提供了一个命令,让命令突破线:

\documentclass{amsbook}
\usepackage{algorithmic,eqparbox,array}
\renewcommand\algorithmiccomment[1]{%
  \hfill\#\ \eqparbox{COMMENT}{#1}%
}
\newcommand\LONGCOMMENT[1]{%
  \hfill\#\ \begin{minipage}[t]{\eqboxwidth{COMMENT}}#1\strut\end{minipage}%
}
\begin{document}
\begin{algorithmic} 
\STATE do nothing \COMMENT{huh?} 
\end{algorithmic}
\begin{algorithmic} 
\STATE do something \LONGCOMMENT{this is a comment broken over lines} 
\end{algorithmic}
\begin{algorithmic} 
\STATE do something else \COMMENT{this is another comment} 
\end{algorithmic}
\end{document}

答案 1 :(得分:0)

if condition then
   something        \hspace{2in} # comment 1
else
   something else   \hfill # comment 2

我不确定hspace和hfill是否可以在环境中运行。我认为他们会的。 \ hfill会将注释设置为正确,而\ hspace {space}会在文本之间留出足够的空间。祝你好运。

答案 2 :(得分:0)

如果您想要针对不同的算法使用自己的缩进,可以通过将计数器包含在注释命令的重新定义中来实现。这是一个例子:

\documentclass{amsbook}
\usepackage{algorithmicx,algorithm,eqparbox,array}

\algrenewcommand{\algorithmiccomment}[1]{\hfill// \eqparbox{COMMENT\thealgorithm}{#1}}
\algnewcommand{\LongComment}[1]{\hfill// \begin{minipage}[t]{\eqboxwidth{COMMENT\thealgorithm}}#1\strut\end{minipage}}

\begin{document}
\begin{algorithm}
\begin{algorithmic}
\State{do nothing}\Comment{huh?}
\end{algorithmic}
\caption{Test Alg}
\end{algorithm}

\begin{algorithm}
\begin{algorithmic}
\State{do something} \LongComment{this is a comment broken over lines}
\State{do something else} \Comment{this is another comment}
\end{algorithmic}
\caption{Other Alg}
\end{algorithm}
\end{document}