对齐列表,忽略项目中第一个数字的负号

对齐列表,忽略项目中第一个数字的负号

我目前正在使用 enumitem,并在文档中为我的列表创建了一个环境。它如下:

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

如果项目以负号开头,我会尝试忽略负号来对齐项目。图片比我解释得更好:

在此处输入图片描述

在此处输入图片描述

我搜索过类似的问题,但只找到在 table 上遇到这个问题的人,解决方案是使用 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} 

在此处输入图片描述

相关内容