
Atualmente estou usando enumitem e criei um ambiente para minhas listas em um documento. É o seguinte:
\newenvironment{alternativas}[1][0]
{
\begin{enumerate}[label={\Alph*)}, itemsep=#1cm, topsep = 0.5cm, wide=0pt,labelwidth=.5cm,leftmargin=!]
}
{
\end{enumerate}
}
Tenho tentado alinhar os itens ignorando o sinal negativo, caso o item comece com um. As imagens explicarão muito melhor do que eu:
Procurei perguntas semelhantes e só encontrei pessoas com esse problema em uma mesa, e soluções usam ambientes alinhados e coisas assim. Até procurei algo para resolver isso em livros de TeX (e acidentalmente aprendi muito fazendo isso haha) mas não tive sucesso.
Muitas soluções para esses problemas semelhantes também fazem uso de alguns ajustes manuais, como usar um \phantom nos itens sem sinal de menos para que o espaçamento pareça igual (produzi o resultado desejado usando \hspace com um número negativo). Mas tenho procurado uma solução que automatize isso para mim, porque compartilho os documentos com pessoas menos experientes e quero que seja fácil de usar. Muito obrigado!
Responder1
O que faço é redefinir \item
dentro do ambiente para examinar o primeiro token \item
(seguindo um argumento opcional). Se for um -
token, eu \mathllap
o digito e continuo, caso contrário, apenas o digito diretamente.
\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}
TERMO ADITIVO
OP esclareceu nos comentários que todos os números são inseridos no modo matemático (via lead $
). No entanto, nem todos os itens começam com matemática. Então, algumas revisões foram necessárias:
\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}
Responder2
Você pode carregar mathtools
(desnecessário carregar amsmath
neste caso) para usar seu \mathllap
comando e aumentar ligeiramente \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}