我想在 LaTeX 中排版一个算法。我正在使用算法包和环境来这样做。一切都很好,除了当我添加注释(使用\COMMENT)时,它们会在语句之后立即输出。我希望所有评论都保持一致(并从声明中偏移)。有没有简单的方法来做到这一点?
在 HTML 的 pre 中“复制”PDF 输出,我想要:
if condition then
something # comment 1
else
something else # comment 2
而不是
if condition then
something # comment 1
else
something else # comment 2
最佳答案
我会这样做:
\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}
关于algorithm - 在 LaTeX 算法环境中格式化注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1744197/