項目の最初の数字の負の符号を無視してリストを整列します

項目の最初の数字の負の符号を無視してリストを整列します

現在、enumitem を使用して、ドキュメント内のリスト用の環境を作成しました。次のとおりです。

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

項目がマイナス記号で始まる場合は、マイナス記号を無視して項目を揃えるようにしています。画像を見れば、私よりもずっとわかりやすく説明できます。

ここに画像の説明を入力してください

ここに画像の説明を入力してください

同様の質問を検索しましたが、この問題を抱えている人が表で見つかり、解決策は align 環境などを使用したものでした。TeX の本でこの問題を解決するための何かを検索したこともありました (そうしているうちに偶然多くのことを学びました、笑) が、うまくいきませんでした。

これらの類似の問題に対する多くの解決策では、項目にマイナス記号のない \phantom を使用して間隔が均等に見えるようにするなど、手動調整も利用しています (負の数の \hspace を使用して目的の結果を得ました)。しかし、私は経験の浅い人々とドキュメントを共有し、彼らが簡単に使用できるようにしたいため、これを自動化するソリューションを探していました。どうもありがとうございます!

答え1

私がやっていることは、\item環境内で再定義して、 \item(オプションの引数に続く) 最初のトークンを調べることです。-トークンの場合は、\mathllapそれを実行してから続行し、そうでない場合は直接タイプセットします。

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

ここに画像の説明を入力してください

付録

OP はコメントで、すべての数値は数式モードで入力される (先頭の を使用$) ことを明確にしました。ただし、すべての項目が数式で始まるわけではありません。そのため、いくつかの修正が必要でした。

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

ここに画像の説明を入力してください

答え2

ロードして(この場合はmathtoolsロードする必要はありません)、そのコマンドを使用してわずかに増やすことができます: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} 

ここに画像の説明を入力してください

関連情報