Liste ausrichten und dabei das negative Vorzeichen der ersten Zahl in Elementen ignorieren

Liste ausrichten und dabei das negative Vorzeichen der ersten Zahl in Elementen ignorieren

Ich verwende derzeit enumitem und habe in einem Dokument eine Umgebung für meine Listen erstellt. Diese sieht wie folgt aus:

\newenvironment{alternativas}[1][0]
{
    \begin{enumerate}[label={\Alph*)}, itemsep=#1cm, topsep = 0.5cm, wide=0pt,labelwidth=.5cm,leftmargin=!]
}
{
    \end{enumerate}
}

Ich habe versucht, die Elemente auszurichten und dabei das Minuszeichen zu ignorieren, wenn das Element mit einem beginnt. Bilder erklären es viel besser als ich:

Bildbeschreibung hier eingeben

Bildbeschreibung hier eingeben

Ich habe nach ähnlichen Fragen gesucht und nur Leute mit diesem Problem in einer Tabelle gefunden und Lösungen, die Align-Umgebungen und ähnliches verwenden. Ich habe sogar in TeX-Büchern nach einer Lösung dafür gesucht (und dabei zufällig eine Menge gelernt, haha), aber ich war nicht erfolgreich.

Viele Lösungen für diese ähnlichen Probleme verwenden auch einige manuelle Anpassungen, wie z. B. die Verwendung eines \phantom in den Elementen ohne Minuszeichen, damit der Abstand gleich aussieht (ich habe das gewünschte Ergebnis mit \hspace mit einer negativen Zahl erzielt). Aber ich habe nach einer Lösung gesucht, die dies für mich automatisiert, weil ich die Dokumente mit weniger erfahrenen Leuten teile und möchte, dass sie sie einfach verwenden können. Vielen Dank!

Antwort1

Ich definiere \itemin der Umgebung neu, um das erste Token von \item(nach einem optionalen Argument) zu untersuchen. Wenn es ein -Token ist, prüfe ich \mathllapes und fahre dann fort, andernfalls setze ich es einfach direkt.

\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}

Bildbeschreibung hier eingeben

NACHTRAG

OP hat in Kommentaren klargestellt, dass alle Zahlen im mathematischen Modus eingegeben werden (über führende $). Allerdings beginnen nicht alle Elemente mit math. Daher waren einige Überarbeitungen erforderlich:

\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}

Bildbeschreibung hier eingeben

Antwort2

Sie können laden ( in diesem Fall mathtoolsist das Laden unnötig ), um den Befehl zu verwenden und Folgendes leicht zu erhöhen :amsmath\mathllap\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} 

Bildbeschreibung hier eingeben

verwandte Informationen