# Left aligning text inside multicols environment

I am using the multicol package. I was wondering if anyone knew how to correct the ugly looking spacing of words. It tries to align them so that each line takes up a column but that means some text will be spaced very widely apart and looks dumb. Is there a way to make it so that the text is not justified, and rather aligned to the left of the column?

As you can see some of the items in here are terribly spaced. Please help. Here is my code for reference.

\section{APPLICABLE \\ SKILLS}{\sl Educational and Practical Experience}
\begin{multicols}{3}
\begin{itemize} \itemsep -2pt
\item SDS-PAGE
\item Western Blot
\item Antibody affinity chromatography
\item Differential and Density gradient centrifugation
\item Immunoprecipitation
\item Genome sequencing
\item Genomic analysis (copy number, SNP-detection, IGV, samtools, picard, etc.)
\item Mass spec
\item Bioinformatics
\item Numerical analysis
\item Software design
\item High, medium, and low level programming design
\item Linear algebra
\item Graph theory
\item Regression analysis
\end{itemize}
\end{multicols}

-
Use \raggedright –  Ulrike Fischer Mar 16 '12 at 17:19

You may use the \raggedright command (or the \RaggedRight variant of the ragged2e package which allows hyphenation) at the begin of a single multicols environment. You may also "patch" the multicols environment using \AtBeginEnvironment which is provided by the etoolbox package.

\documentclass{article}

\usepackage{multicol}

\usepackage{ragged2e}

\usepackage{etoolbox}
\AtBeginEnvironment{multicols}{\RaggedRight}

\begin{document}

\section{APPLICABLE \\ SKILLS}

{\slshape Educational and Practical Experience}

\begin{multicols}{3}
\begin{itemize} \itemsep -2pt
\item SDS-PAGE
\item Western Blot
\item Antibody affinity chromatography
\item Differential and Density gradient centrifugation
\item Immunoprecipi\-tation
\item Genome sequencing
\item Genomic analysis (copy number, SNP-detection, IGV, samtools, picard, etc.)
\item Mass spec
\item Bioinformatics
\item Numerical analysis
\item Software design
\item High, medium, and low level programming design
\item Linear algebra
\item Graph theory
\item Regression analysis
\end{itemize}
\end{multicols}

\end{document}


EDIT: As pointed out by egreg, another possibility is to define a new raggedmulticols environment (use it like multicols in the document body):

\newenvironment{raggedmulticols}[1]{%
\RaggedRight
\begin{multicols}{#1}%
}{%
\end{multicols}%
}

-
I would define a raggedmulticols environment, rather than acting globally on multicols. –  egreg Mar 16 '12 at 17:11
How would you do that? –  Dan Mar 16 '12 at 17:14
Cool the raggedright thing works! The solution with etoolbox is beautiful. Although I am not quite sure how it works, thank you! –  Dan Mar 16 '12 at 17:18
@egreg Thanks -- answer updated. –  lockstep Mar 16 '12 at 17:19

If this is specifically for lists, you could also use enumitem with multicol to have the list in columns. The example below is taken from the manual of enumitem (Chapter 9, Generic keys and values).

\documentclass{article}
\usepackage{enumitem}
\usepackage{multicol}
\usepackage{ragged2e}

\SetEnumitemKey{threecol}{
itemsep=1\itemsep,
parsep=1\parsep,
before=\raggedcolumns\begin{multicols}{3}\RaggedRight,
after=\end{multicols}}

\begin{document}
\section{APPLICABLE \\ SKILLS}{\sl Educational and Practical Experience}
\begin{itemize}[threecol] \itemsep -2pt
\item SDS-PAGE
\item Western Blot
\item Antibody affinity chromatography
\item Differential and Density gradient centrifugation
\item Immunoprecipi\-tation
\item Genome sequencing
\item Genomic analysis (copy number, SNP-detection, IGV, samtools, picard, etc.)
\item Mass spec
\item Bioinformatics
\item Numerical analysis
\item Software design
\item High, medium, and low level programming design
\item Linear algebra
\item Graph theory
\item Regression analysis
\end{itemize}
\end{document}

-