# Align comments in algorithm with package algorithm2e

I am using the package algorithm2e. When using comments like this

\documentclass[11pt,a4paper,twoside,openright]{book}
\usepackage[algochapter,linesnumbered,ruled,lined,boxed]{algorithm2e}
\begin{document}
\begin{algorithm}
\tcp{not aligned comment}
\If(\tcp*[h]{comment next to if}){constraint}{
c  \tcp*[l]{bla}
$d = \min \{c,e\}$ \tcp*[l]{minimum}
}

\end{algorithm}
\end{document}

the result is

// not aligned comment
if constraint then // comment next to if
c; // bla
d = min{c,e}; // minimum
end

I would like to have the comments aligned, that is

// not aligned comment
if constraint then       // comment next to if
c;                    // bla
d = min{c,e};         // minimum
end

I only found an answer for the package algorithmicx: Algpseudocode (algorithmicx) package comments.

-

This flushes them right padded to the longest comment so the \\ line up. It takes a couple of runs to get the measuring. I added some $to avoid errors that were generated when I tried your MWE. \documentclass{article} \usepackage{algorithm2e} \makeatletter \newdimen\commentwd \let\oldtcp\tcp \def\tcp*[#1]#2{% only support one style for simplicity \setbox0\hbox{#2}% \ifdim\wd\z@>\commentwd\global\commentwd\wd\z@\fi \oldtcp*[r]{\leavevmode\hbox to \commentwd{\box0\hfill}}} \let\oldalgorithm\algorithm \def\algorithm{\oldalgorithm \global\commentwd\z@ \expandafter\ifx\csname commentwd@\romannumeral\csname c@\algocf@float\endcsname\endcsname\relax\else \global\commentwd\csname commentwd@\romannumeral\csname c@\algocf@float\endcsname\endcsname \fi } \let\oldendalgorithm\endalgorithm \def\endalgorithm{\oldendalgorithm \immediate\write\@auxout{\gdef\expandafter\string\csname commentwd@\romannumeral\csname c@\algocf@float\endcsname\endcsname{% \the\commentwd}}} \begin{document} \begin{algorithm} c \tcp*[l]{bla}$d = \min \{c,e\}\tcp*[l]{minimum} \end{algorithm} \end{document} - Unfortunately, now a normal command like \tcp{comment} throws an error. Is it possible to also use regular comments? Edited my question. – Jana Nov 20 '12 at 18:05 easiest is to change \def\tcp*[#1]#2 to \def\mytcp*[#1]#2 or some such then use \mytcp. – David Carlisle Nov 20 '12 at 18:43 This does not work with if-statements, and the font is not the same. – Jana Nov 20 '12 at 19:30 Ive never used the package just based on your mwe, so don't know about if statement markup, The code I posted does nothing with fonts, oh you might prefer to replace \box0 by #2 if the tcp command changes font. – David Carlisle Nov 20 '12 at 20:33 Here's a solution I'm using with algorithm2e. The idea is to use right-aligned comments (\tcp*[r]), and put them in a box of fixed length \commentWidth. The important stuff is wrapped in an "aligned comment" marco \atcp for ease of use. \documentclass[11pt,a4paper,twoside,openright]{book} \usepackage[algochapter,linesnumbered,ruled,lined,boxed]{algorithm2e} \begin{document} \newlength{\commentWidth} \setlength{\commentWidth}{7cm} \newcommand{\atcp}[1]{\tcp*[r]{\makebox[\commentWidth]{#1\hfill}}} \begin{algorithm} \tcp{not aligned comment} \If(\tcp*[h]{comment next to if}){constraint}{ c \atcp{bla}d = \min \{c,e\}\$ \atcp{minimum}