如何在枚举项中引用枚举子项?

如何在枚举项中引用枚举子项?

我怎样才能在列表中的列表中仅排版b(子项的标签)而不排版2(封闭项的标签)?inparaenumenumerate

在此处输入图片描述

\documentclass {article}
\usepackage {paralist}
\begin {document}

\noindent
Here is my list:

\begin {enumerate}

  \item First item.

  \item Second item:
      \begin {inparaenum}[(a)]
      \item \label {first}  first subitem,
      \item \label {second} second subitem.
      \end {inparaenum}

\end {enumerate}

\noindent
I want to typeset `b' not `\ref {second}'.

\end {document}

答案1

根据以下内容定义您自己的环境inparaenum

\documentclass{article}
\usepackage{paralist}

\makeatletter
\def\zinparaenum{%
  \ifnum\@enumdepth>\thr@@
    \@toodeep
  \else
    \advance\@enumdepth\@ne
    \edef\@enumctr{enum\romannumeral\the\@enumdepth}%
  \fi
  \@ifnextchar[{\@enumlabel@{\@zinparaenum@}[}{\@zinparaenum@}}
\def\@zinparaenum@{%
  \usecounter{\@enumctr}%
  \@namedef{p@\@enumctr}{}%
  \def\@itemlabel{\csname label\@enumctr\endcsname}%
  \let\@item\pl@item
  \def\makelabel##1{##1}%
  \ignorespaces}
\let\endzinparaenum\ignorespacesafterend
\makeatother

\begin{document}

Here is my list:
\begin{enumerate}

\item First item.

\item Second item:
  \begin{zinparaenum}[(a)]
  \item \label{first}  first subitem,
  \item \label{second} second subitem.
  \end{zinparaenum}

\end{enumerate}
I want to typeset `b' not `\ref{second}'.

\end{document}

引用仅针对本地数字,没有任何前缀,与嵌套级别无关。

在此处输入图片描述

如果你仔细研究一下paralist.sty,就会发现上面的代码只是 的定义,除了主要的更改(即局部重新定义 )之外,inparaenumz还在 的每次出现后添加了。inparaenum\p@<counter>

答案2

交叉引用格式存储在名为\p@enumietc 的宏中。

paralistinparaenum扩展enumerate(最多 6 个级别)并使用计数器enumi,...,enumvi然后。

对于第二级(已经嵌套了enumerate\p@enumii格式采用\theenumi,即当前第一级的值,即2当前示例中的 )。

解决办法是定义\p@enumii为空。

\documentclass {article}



\usepackage {paralist}

\makeatletter
\renewcommand{\p@enumii}{}
\makeatother

\begin {document}
\noindent
Here is my list:

\begin {enumerate}
  \item First item.
  \item Second item:
    \begin {inparaenum}[(a)]
    \item \label {first}  first subitem,
    \item \label {second} second subitem.
    \end {inparaenum}
\end {enumerate}



\noindent
I want to typeset `b' not `\ref {second}'.

\end {document}

在此处输入图片描述

显然,paralist不允许更改交叉引用格式,否则,可以enumitem使用其inline列表和ref选项来替代。

相关内容