![算法和 hyperref 的对齐问题](https://linux22.com/image/267936/%E7%AE%97%E6%B3%95%E5%92%8C%20hyperref%20%E7%9A%84%E5%AF%B9%E9%BD%90%E9%97%AE%E9%A2%98.png)
algorithmic
我在使用该软件包时 遇到了一些对齐问题hyperref
。我喜欢将注释左对齐,这是通过\renewcommand{\algorithmiccomment}[1]{\hfill(#1)}
在序言中实现的。
事实证明,行前\ENDFOR
或行间断处的注释(我用它来识别不同的代码块)有点错位。
以下是 MWE:
\documentclass{article}
\usepackage{algorithmic}
\renewcommand{\algorithmiccomment}[1]{\hfill(#1)}
\usepackage{hyperref}
\begin{document}
\begin{algorithmic}
\STATE foo
\COMMENT{bar}
\FOR{foo}
\STATE foo
\COMMENT{bar}
\STATE foo
\COMMENT{bar}
\ENDFOR
\STATE foo
\COMMENT{bar}
\STATE foo
\COMMENT{bar} \\[0.5em]
\STATE foo
\COMMENT{bar}
\RETURN foo
\COMMENT{bar}
\end{algorithmic}
\end{document}
请评论\usepackage{hyperref}
以获得所需的输出:
我猜是\end{list}
which
algorithmic
和之间有一些奇怪的交互hyperref
,但我现在有点困惑。你有什么建议吗?
答案1
对于您的评论,请使用
\renewcommand{\algorithmiccomment}[1]{\hfill(#1)\ignorespaces}
这会吞掉 之后的所有空格\COMMENT
,实际上相当于%
在每个空格后插入空格。请参见行末百分号(%)有什么用?
答案2
解决方法是在命令后注释掉行尾字符\COMMENT
:
\documentclass{article}
\usepackage{algorithmic}
\renewcommand{\algorithmiccomment}[1]{\hfill(#1)}
\usepackage{hyperref}
\begin{document}
\begin{algorithmic}
\STATE foo
\COMMENT{bar}%
\FOR{foo}
\STATE foo
\COMMENT{bar}%
\STATE foo
\COMMENT{bar}%
\ENDFOR
\STATE foo
\COMMENT{bar}%
\STATE foo
\COMMENT{bar}\\[0.5em]
\STATE foo
\COMMENT{bar}%
\RETURN foo
\COMMENT{bar}
\end{algorithmic}
\end{document}
我不清楚到底是什么hyperref
导致了这里多了一个额外的框。 在自定义列表环境中algothrimc
对命令进行了一些相当大的修改\item
,这可能是导致交互不佳的原因。