我想在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
答案 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}