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

fox*_*cub 5 algorithm formatting latex

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

在HTML的前期"再现"PDF输出,我希望:

if condition then
   something         # comment 1
else
   something else    # comment 2
Run Code Online (Sandbox Code Playgroud)

而不是

if condition then
   something  # comment 1
else
   something else  # comment 2
Run Code Online (Sandbox Code Playgroud)

Wil*_*son 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}