嵌套枚举项列表中边注的水平对齐

嵌套枚举项列表中边注的水平对齐

我希望能够用enumitem左边距的标记来“标记”列表中的某些列表项。我希望左边距中的标记相对于彼此水平对齐,并且相对于标记的列表项垂直对齐。我试过 Werner 的答案这里但它似乎不适用于enumitem

在此处输入图片描述

在上图中(框架仅用于可视化),我希望子项的标签与主列表项的标签水平对齐,并且对齐方式不应根据子项标签的宽度而改变(即(w)比(c)宽,但标签应保持对齐)。

我不认为我的代码或方法很好,所以用完全不同的方法也可以。如果能解释一下就更好了,因为我自己花了相当多的时间试图弄清楚,但这超出了我的能力范围。

\documentclass{article}
\usepackage{enumitem}
\usepackage{xparse}
\usepackage{showframe}

\newlist{mylist}{enumerate}{1}

\setlist[mylist]{
    %align=left,
 align=parleft,
    label = {\protect\mytag\arabic*.},
}

\newlist{mysublist}{enumerate}{1}
\setlist[mysublist]{
 %align=left,
    align=parleft,
    label={\protect\mytag{(\alph*)}},
}

\NewDocumentCommand{\myitem}{ o }{
    \IfNoValueTF{#1}
        {\let\mytag\relax\item}
        {\tagit{#1}\item}
}

\makeatletter
\NewDocumentCommand{\tagit}{ m }{
    \def\mytag{\leavevmode\llap{\fbox{\makebox[\marginparwidth][c]{#1}}}\hspace{\@totalleftmargin}}
}
\makeatother

\begin{document}

\begin{mylist}
    \myitem First Item.
    \myitem[x] Second Item.
        \begin{mysublist}
            \myitem[x] First Sub-Item.
            \myitem Second Sub-Item.
        \end{mysublist}
    \myitem[x] Third Item.
    \myitem Fourth Item.
\end{mylist}

\end{document}

答案1

我不确定这是否是您想要的(使用条件测试添加了一些适当的空间\enit@depth):

\documentclass{article}
\usepackage{enumitem}
\usepackage{xparse}
\usepackage{showframe}

\newlist{mylist}{enumerate}{2}

\setlist[mylist,1]{
    %align=left,
 align=parleft,
    label = {\protect\mytag\arabic*.},
}

%\newlist{mysublist}{enumerate}{1}
\setlist[mylist,2]{
 %align=left,
    align=parleft,
    label={\protect\mytag{(\alph*)}},
}

\NewDocumentCommand{\myitem}{ o }{
    \IfNoValueTF{#1}
        {\let\mytag\relax\item}
        {\tagit{#1}\item}
}
\newlength\mylen
\makeatletter
\NewDocumentCommand{\tagit}{ m }{
\ifnum\enit@depth=1\relax
  \setlength\mylen{0pt}%
\else
  \ifnum\enit@depth=2\relax
\setlength\mylen{\leftmargini}%
\fi\fi%
    \def\mytag{\leavevmode\llap{\fbox{\makebox[\marginparwidth][c]{#1}}\hspace{\mylen}}}}
\makeatother

\begin{document}

\begin{mylist}
    \myitem First Item.
    \myitem[x] Second Item.
        \begin{mylist}
            \myitem[x] First Sub-Item.
            \myitem Second Sub-Item.
        \end{mylist}
    \myitem[x] Third Item.
    \myitem Fourth Item.
\end{mylist}

\end{document}

在此处输入图片描述

相关内容