需要帮助将枚举列表拆分到各列以表示不同的执行路径。

需要帮助将枚举列表拆分到各列以表示不同的执行路径。

我希望能够拆分列表,以便可以有多条路径到达多个端点,如下例所示。有没有一种简洁的方法可以做到这一点或类似的东西?

    1. i have a tail
    2. i have feet
       (a) this is a place holder
       (b) so is this
    3. i have a nose
    4. i have fur                  4. i have scales
       (a) xyz                         (a) element yo
       (b) qrs
    5. i am a cat                  5. i can change color
                                   6. i am a lizard
    7. i am an animal

答案1

以下是使用多色包。下面的代码定义了一个branch环境,用于处理您的项目在分成两个(或更多)分支时的情况。在这个环境中,您可以使用它来完成一个叶子并开始下一个叶子。这将自动为您\newleaf处理数字。\item

代码生成的结果如下:

在此处输入图片描述

...这是实际的代码:

\documentclass{article}
\usepackage{multicol}
\raggedcolumns
\makeatletter
\newcount\branch@start% as \setcounter isn't global
\newcount\branch@end
\newenvironment{branch}[1][2]{\begin{multicols}{#1}%
  \branch@start\c@enumi% save value of enumi for subsequent leaves
  \branch@end\c@enumi%   need to keep track of largest enumi in all leaves
  }{%set enumi to largest value in the leaves and close multicols
  \ifnum\c@enumi<\branch@end%
    \global\c@enumi\branch@end% we NEED this to take effect globally
  \fi%
\end{multicols}}
\newcommand\newleaf{%
  \columnbreak%
  \ifnum\c@enumi>\branch@end%
    \global\branch@end\c@enumi%
  \fi%
  \setcounter{enumi}{\branch@start}%
}
\makeatother

\begin{enumerate}
  \item i have a tail
  \item i have feet
  \begin{enumerate}
    \item  this is a place holder
    \item  so is this
  \end{enumerate}
  \item i have a nose
  \begin{branch}
    \item i have fur
    \begin{enumerate}
      \item xyz
      \item qrs
    \end{enumerate}
   \newleaf
     \item i have scales
     \begin{enumerate}
       \item element yo
     \end{enumerate}
  \end{branch}
  \begin{branch}
      \item i am a cat
    \newleaf
      \item i can change color
      \item i am a lizard
  \end{branch}
  \begin{branch}
      \item i am a frog
      \item i can fly
    \newleaf
      \item i am a gizzard
  \end{branch}
    \item i am an animal
\end{enumerate}

\end{document}

它比我预期的稍微有点 OTT,主要是因为它没有全局设置计数器,而我们需要在最后\setcounter设置计数器的值。enumi

环境branch接受一个可选参数,用于指定列/叶子的数量(因此使用\begin{branch}{3}三列)。不用说,叶子的数量不应该多于列的数量——我没有为此添加检查,但multicols会抱怨。

如果需要,您可以使用枚举项软件包。详情请参阅手册。

相关内容