enumitem 包如何放置标签?

enumitem 包如何放置标签?

在下面的屏幕截图中,我希望内联模式中的第一个项目 A) 与第一个列表中的标签 A) 到 D) 的缩进级别相同。

为此,我想知道enumitem包裹上是如何贴标签的。

在此处输入图片描述

这是我使用过的代码。

\documentclass{article}
    \usepackage[utf8]{inputenc}
    \usepackage{amsmath}
    \usepackage{enumitem}

    \newlist{choices}{enumerate}{1}
    \setlist[choices]{label*=\Alph*)}
    \newcommand{\choice}{\item}

    \newcounter{choice}
    \renewcommand\thechoice{\Alph{choice}}
    \newcommand\choicelabel{\thechoice)}
    \newcommand\choicestarlabel{{\large $\square$}}

    \newenvironment{inlineChoices}{%
        \setcounter{choice}{0}%
            \def\choice{%
            \refstepcounter{choice}%
            \ifnum\value{choice}>1\relax
                \penalty -50\hskip 1em plus 1em\relax
            \else
                \hspace{\labelindent}% WRONG SPACING !!!
            \fi
            \choicelabel
            \nobreak\enskip
        }%
        \ifvmode\else\enskip\fi
        \ignorespaces
    }{}

\begin{document}

\noindent Bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla

\begin{choices}
    \choice $\dfrac{4}{7}$
    \choice $\dfrac{8}{24}$
    \choice $\dfrac{44}{121}$
    \choice $\dfrac{9}{11}$
\end{choices}

\noindent Bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla

\begin{inlineChoices}
    \choice $\dfrac{4}{7}$
    \choice $\dfrac{8}{24}$
    \choice $\dfrac{44}{121}$
    \choice $\dfrac{9}{11}$
\end{inlineChoices}

\end{document}

答案1

您的内联列表会获得您指定的间距和正常的段落缩进,下面的代码确保它以\noindent段落开头的 if 开始,然后获得我认为正确的缩进,具体取决于您想要的项目之间的间距。

    \newenvironment{inlineChoices}{%
\ifvmode\noindent\fi
\hspace*{\leftmargini}%
\hspace*{-\labelwidth}%
        \setcounter{choice}{0}%
            \def\choice{%
            \refstepcounter{choice}%
            \ifnum\value{choice}>1\relax
                \penalty -50\hskip 1em plus 1em\relax
            \else
\hspace*{\itemindent}%
            \fi
            \choicelabel
            \nobreak\enskip
        }%
        \ifvmode\else\enskip\fi
        \ignorespaces
    }{}

答案2

使用[inline]选项enumitem可使此类列表的制作更简单。由于这些列表旨在用于运行文本,因此您需要将它们包装在某种环境中以处理间距问题;但是,我在我的示例中忽略了这一点。我已将项目之间的分隔设为 ( itemjoin) \qquad。您可以根据需要更改它。根据您的评论,我还使用了 包parskip来设置零parindent。然后,我使用leftmargin=*align=left来使常规choices列表的标签正确对齐。

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{amsmath}
\usepackage[inline]{enumitem}
\usepackage{parskip} % for zero par indent the right way

\newlist{choices}{enumerate}{1}
\newlist{inlinechoices}{enumerate*}{1}
\setlist[inlinechoices]{label*={\Alph*)},itemjoin={\qquad}}
\setlist[choices]{label*={\Alph*)},leftmargin=*,align=left}
\newcommand{\choice}{\item}


\newcounter{choice}
\renewcommand\thechoice{\Alph{choice}}
\newcommand\choicelabel{\thechoice)}
\newcommand\choicestarlabel{{\large $\square$}}


\begin{document}

 Bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla

\begin{choices}
    \choice $\dfrac{4}{7}$
    \choice $\dfrac{8}{24}$\label{824}
    \choice $\dfrac{44}{121}$
    \choice $\dfrac{9}{11}$
\end{choices}

 Bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla As in \ref{824}
\bigskip

\begin{inlinechoices}
    \choice $\dfrac{4}{7}$
    \choice $\dfrac{8}{24}$
    \choice $\dfrac{44}{121}$\label{44}
    \choice $\dfrac{9}{11}$
\end{inlinechoices}
\bigskip

\noindent Bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla As in \ref{44}

\end{document}

代码输出

相关内容