[Tex/LaTex] Two column? list with arrows between items

arrowslists

How would one achieve a list of two columns like this one:

enter image description here

I only want list bullets on the left side, so in fact if each entry is a single item that's fine. Items never span multiple lines. I've tried using an align block and two-column lists, but I'm not getting anywhere.

Best Answer

TeX provides a \rightarrowfill command that does just this. It's a standard part of plain TeX and LaTeX.

\documentclass{article}
\newcommand{\abox}[2]{\makebox[#1][l]{#2 \rightarrowfill}}    
\begin{document}
\begin{itemize}
    \item \abox{1in}{Item 1} Explanation 1
    \item \abox{1in}{Item 2} Explanation 2
    \item \abox{1in}{Item 3} Explanation 3
    \item \abox{1in}{Last item} Last explanation
\end{itemize}
\end{document}

enter image description here

If you want "nicer" arrows, just add \usepackage{mathabx} or otherwise redefine \rightarrow to your favourite arrow symbol. This works because \rightarrrowfill uses the current definition of \rightarrow.

There's also a corresponding \leftarrowfill command.

You can define the command using plain TeX facilities as well, if you wanted to use it without LaTeX:

\def\abox#1#2{\leavevmode\hbox to #1{#2\ \rightarrowfill}}

An alternative approach, that might work better if you have long explanations, would be to make a new list environment that used \rightarrowfill. For example

\documentclass{article}
\usepackage{mathabx}
\usepackage{calc} % needed to use + in \setlength
\newenvironment{arrowlist}[1][1in]%
 {\begin{list}{}{%
   \renewcommand{\makelabel}[1]{\indent\textbullet\ \textit{##1}\ \rightarrowfill}%
   \setlength{\labelwidth}{#1}%
   \setlength{\leftmargin}{\labelwidth+\labelsep}%
   }}
{\end{list}}
\begin{document}

\begin{arrowlist}
  \item[First thing] Explanation 1 
  \item[Second one] Lorem ipsum dolor sit amet, consectetuer adipiscing elit. 
    Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae, felis. 
    Curabitur dictum gravida mauris.
\end{arrowlist}

Or to make the labels longer than 1in...

\begin{arrowlist}[1.4in]
  \item[First thing] Explanation 1 
  \item[Second one] Lorem ipsum dolor sit amet, consectetuer adipiscing elit. 
     Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae, felis.
\end{arrowlist}

\end{document}

enter image description here