항목의 첫 번째 숫자의 음수 부호를 무시하고 목록 정렬

항목의 첫 번째 숫자의 음수 부호를 무시하고 목록 정렬

현재 enumitem을 사용하고 있으며 문서의 목록에 대한 환경을 만들었습니다. 그것은 다음과 같습니다:

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

항목이 1로 시작하는 경우 음수 기호를 무시하고 항목을 정렬하려고 했습니다. 이미지는 나보다 훨씬 더 잘 설명할 것입니다.

여기에 이미지 설명을 입력하세요

여기에 이미지 설명을 입력하세요

비슷한 질문을 검색했는데 테이블 위에 이 문제가 있는 사람들과 정렬 환경 등을 사용하는 솔루션만 찾았습니다. 나는 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} 

여기에 이미지 설명을 입력하세요

관련 정보