
Actualmente estoy usando enumitem y creé un entorno para mis listas en un documento. Es el siguiente:
\newenvironment{alternativas}[1][0]
{
\begin{enumerate}[label={\Alph*)}, itemsep=#1cm, topsep = 0.5cm, wide=0pt,labelwidth=.5cm,leftmargin=!]
}
{
\end{enumerate}
}
He estado intentando alinear los elementos ignorando el signo negativo, si el elemento comienza con uno. Las imágenes lo explicarán mucho mejor que yo:
Busqué preguntas similares y solo encontré personas con este problema en una mesa, y soluciones usando entornos alineados y cosas así. Incluso busqué algo para resolver esto en libros de TeX (y accidentalmente aprendí mucho mientras lo hacía jaja) pero no tuve éxito.
Muchas soluciones para estos problemas similares también utilizan algunos ajustes manuales, como usar un \phantom en los elementos sin un signo menos para que el espaciado parezca igual (produje el resultado deseado usando \hspace con un número negativo). Pero he estado buscando una solución que automatice esto para mí, porque comparto los documentos con personas menos experimentadas y quiero que les resulte fácil de usar. ¡Muchas gracias!
Respuesta1
Lo que hago es redefinir \item
dentro del entorno para examinar el primer token de \item
(siguiendo un argumento opcional). Si es un -
token, \mathllap
lo escribo y luego continúo; de lo contrario, lo compongo directamente.
\documentclass{article}
\usepackage{enumitem,mathtools}
\let\svitem\item
\newenvironment{alternativas}[1][0]
{
\renewcommand\item[2][\relax]{%
\ifx\relax##1\def\next{}\else\def\next{[##1]}\fi
\ifx-##2\def\nnext{$\mathllap{##2}$}\else\def\nnext{##2}\fi
\expandafter\svitem\next\nnext}
\begin{enumerate}[label={\Alph*)}, itemsep=#1cm, topsep = 0.5cm,
wide=0pt, labelwidth=.5cm,leftmargin=!,labelsep=10pt]
}
{
\end{enumerate}
}
\begin{document}
\begin{alternativas}
\item -1
\item 4
\item -5
\item 6
\end{alternativas}
\end{document}
APÉNDICE
OP aclaró en los comentarios que todos los números se ingresan en modo matemático (a través del inicio $
). Sin embargo, no todos los elementos comienzan con matemáticas. Entonces, se requirieron algunas revisiones:
\documentclass{article}
\usepackage{enumitem,mathtools}
\let\svitem\item
\newenvironment{alternativas}[1][0]
{
\renewcommand\item[3][\relax]{%
\ifx\relax##1\def\next{}\else\def\next{[##1]}\fi
\ifx$##2\ifx-##3\def\nnext{##2\mathllap{##3}}\else\def\nnext{##2##3}\fi
\else\def\nnext{##2##3}\fi
\expandafter\svitem\next\nnext}
\begin{enumerate}[label={\Alph*)}, itemsep=#1cm, topsep = 0.5cm,
wide=0pt, labelwidth=.5cm,leftmargin=!,labelsep=10pt]
}
{
\end{enumerate}
}
\begin{document}
\begin{alternativas}
\item $-1$
\item $4$
\item $-\frac{5}{7}$
\item $\frac{6}{11}$
\item text
\end{alternativas}
\end{document}
Respuesta2
Puede cargar mathtools
(no es necesario cargar amsmath
en este caso) para usar su \mathllap
comando y aumentar ligeramente \labelsep
:
\documentclass{article}
\usepackage{enumitem}
\usepackage{mathtools}
\newenvironment{alternativas}[1][0]
{
\begin{enumerate}[label={\Alph*)}, itemsep=#1cm, topsep = 0.5cm, labelsep=6pt, wide=0pt,labelwidth=.5cm,leftmargin=!]
}
{
\end{enumerate}
}
\begin{document}
\begin{alternativas}
\item $\mathllap{-}1 $
\item $ 4 $
\item $ \mathllap{-}5 $
\item $ 6 $
\end{alternativas}
\end{document}