我希望能够拆分列表,以便可以有多条路径到达多个端点,如下例所示。有没有一种简洁的方法可以做到这一点或类似的东西?
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
会抱怨。
如果需要,您可以使用枚举项软件包。详情请参阅手册。