Alinhar a lista ignorando o sinal negativo do primeiro número nos itens

Alinhar a lista ignorando o sinal negativo do primeiro número nos itens

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:

insira a descrição da imagem aqui

insira a descrição da imagem aqui

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 \itemdentro do ambiente para examinar o primeiro token \item(seguindo um argumento opcional). Se for um -token, eu \mathllapo 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}

insira a descrição da imagem aqui

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}

insira a descrição da imagem aqui

Responder2

Você pode carregar mathtools(desnecessário carregar amsmathneste caso) para usar seu \mathllapcomando 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} 

insira a descrição da imagem aqui

informação relacionada