對齊清單忽略項目中第一個數字的負號

對齊清單忽略項目中第一個數字的負號

我目前正在使用 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} 

在此輸入影像描述

相關內容