Alignement horizontal dans un élément dans itemize
Je voudrais faire deux colonnes dans un itemin itemize. Voici un exemple que j'ai fait avec - halètement! - un traitement de texte:
Je voudrais pouvoir ajuster les largeurs de "colonne" / "onglets". Comment puis-je accomplir cela?
Voici un MWE:
\documentclass{article}
\begin{document}
List:
\begin{itemize}
\item{apple fruit}
\item{cucumber vegetable}
\item{steak meat}
\end{itemize}
\end{document}
Réponses
Vous pouvez utiliser tabto:
\documentclass{article}
\usepackage{tabto}
\begin{document}
List:
\begin{itemize}
\item apple \tabto{10em} fruit
\item cucumber \tabto{10em} vegetable
\item steak \tabto{10em} meat
\end{itemize}
List:
\begin{itemize}
\item apple\tabto{10em}fruit
\item cucumber\tabto{10em}vegetable
\item steak\tabto{10em}meat
\end{itemize}
\end{document}
La deuxième liste est juste pour montrer que les espaces autour \tabto{10em}sont ignorés, donc l'entrée peut être organisée pour voir l'alignement.
Vous pouvez obtenir le résultat souhaité en utilisant un tabularxenvironnement dans le cadre de votre \item.
\documentclass{article}
\usepackage{tabularx}
\begin{document}
List:
\begin{itemize}
\item
\begin{tabularx}{\linewidth}{XX}
apple & fruit
\end{tabularx}
\item
\begin{tabularx}{\linewidth}{XX}
cucumber & vegetable
\end{tabularx}
\item
\begin{tabularx}{\linewidth}{XX}
steak & meat
\end{tabularx}
\end{itemize}
\end{document}
Si vous ne souhaitez pas que les deux colonnes soient espacées jusqu'à présent, vous pouvez également utiliser un tabularenvironnement et utiliser trois colonnes, dont l'une est l'espacement entre les deux chaînes. Le problème avec cette méthode est que vous devez définir une largeur fixe pour au moins la première et la deuxième colonne.
\documentclass{article}
\begin{document}
List:
\begin{itemize}
\item
\begin{tabular}[t]{p{10em}p{1em}l}
apple && fruit
\end{tabular}
\item
\begin{tabular}[t]{p{10em}p{1em}l}
cucumber && vegetable
\end{tabular}
\item
\begin{tabular}[t]{p{10em}p{1em}l}
steak && meat
\end{tabular}
\item
\begin{tabular}[t]{p{10em}p{1em}l}
a very long entry to sow why the central column is important to have && meat
\end{tabular}
\end{itemize}
\end{document}
Utilisez simplement une table. Vous pouvez faire correspondre l'espacement et le style des listes à l'aide des paramètres appropriés.
\documentclass{article}
\usepackage{array}
\newenvironment*{tabularitemize}[1]{%
\par\noindent
\begin{tabular}{ @{\hskip\leftmargin\llap{\labelitemi\hskip\labelsep}} #1 }%
}{%
\end{tabular}\par
}
\begin{document}
\begin{tabularitemize}{ l l }
apple & fruit \\
cucumber & vegetable \\
steak & meat \\
\end{tabularitemize}
\begin{itemize}
\item This is a real list.
\end{itemize}
\end{document}
L'espacement entre les lignes et les colonnes du tableau peut être ajusté comme d'habitude.
Cette version utilise \textbulletautomatiquement dans chaque ligne.
\documentclass{article}
\begin{document}
List:
\begin{trivlist}% for vertical spacing
\item\begin{tabular}{@{\hbox to \leftmargini{\hfill\textbullet\hspace{\labelsep}}}ll}
apple&fruit\\
cucumber&vegetable\\
steak&meat
\end{tabular}
\end{trivlist}
\begin{itemize}
\item normal itemize
\end{itemize}
\end{document}
Vous pouvez également le faire avec le listliketabpackage ou avec un article standard et le eqparboxpackage:
\documentclass{article}
\usepackage{listliketab}
\usepackage{eqparbox}
\begin{document}
List:
\storestyleof{itemize}
\begin{listliketab}
\begin{tabular}[t]{Ll@{\qquad}l }
\textbullet & apple & fruit \\
\textbullet & cucumber & vegetable \\
\textbullet & steak & meat
\end{tabular}
\end{listliketab}
\begin{itemize}
\item\eqmakebox[L][l]{apple} fruit
\item\eqmakebox[L][l]{cucumber\hspace{2em}\null} vegetable
\item\eqmakebox[L][l]{steak} meat
\end{itemize}
\end{document}