![是否可以使用不带嵌套列表的 \itemize 为 \subitems 创建项目符号?](https://linux22.com/image/258975/%E6%98%AF%E5%90%A6%E5%8F%AF%E4%BB%A5%E4%BD%BF%E7%94%A8%E4%B8%8D%E5%B8%A6%E5%B5%8C%E5%A5%97%E5%88%97%E8%A1%A8%E7%9A%84%20%5Citemize%20%E4%B8%BA%20%5Csubitems%20%E5%88%9B%E5%BB%BA%E9%A1%B9%E7%9B%AE%E7%AC%A6%E5%8F%B7%EF%BC%9F.png)
我使用嵌套命令列出了问题和子问题\itemize
,如下所示:
\documentclass[11pt]{report}
\usepackage[british]{babel}
\usepackage{enumitem}
\begin{document}
\begin{itemize}
\item{First item}
\begin{itemize}
\item{First subitem}
\item{Second subitem}
\item{Third subitem}
\end{itemize}
\item{Second item}
\item{Third item}
\end{itemize}
\end{document}
现在这对我来说很好,但我只是想知道,当使用\subitem
嵌套列表时,您是否也可以创建项目符号,如下所示?我的子问题确实有缩进,但没有项目符号。
\begin{itemize}
\item{First item}
\subitem{First subitem}
\subitem{Second subitem}
\subitem{Third subitem}
\item{Second item}
\item{Third item}
\end{itemize}
答案1
这种方法的替代方法是使用 outlines 包,它有助于生成嵌套列表。要生成具有三个级别的项目符号列表,只需
\documentclass{article}
\usepackage{outlines}
\begin{document}
\begin{outline}
\1 Top level item
\2 Sub item
\3 sub sub item
\end{outline}
\end{document}
要制作编号列表(而不是项目符号列表),只需将枚举选项传递给此包即可
\documentclass{article}
\usepackage{outlines}
\begin{document}
\begin{outline}[enumerate]
\1 Top level item
\2 Sub item
\3 sub sub item
\end{outline}
\end{document}
答案2
虽然你应该不是使用\subitem
,您可以使用不同的名称,例如\SubItem
通过一些小技巧来实现所需的结果。为了进行比较,我将两个列表(右侧的一个使用\SubItem
)放在 中minipage
:
警告:
在这个答案对
mdframed
和项目之间的奇怪互动,egreg 提到重新定义
\item
可能很危险,而且会产生不可预测的结果我没有看到这里有任何问题,但我并不是这方面的专家。
代码:
\documentclass[11pt]{report}
\usepackage[british]{babel}
\usepackage{enumitem}
\newlist{SubItemList}{itemize}{1}
\setlist[SubItemList]{label={$-$}}
\let\OldItem\item
\newcommand{\SubItemStart}[1]{%
\let\item\SubItemEnd
\begin{SubItemList}[resume]%
\OldItem #1%
}
\newcommand{\SubItemMiddle}[1]{%
\OldItem #1%
}
\newcommand{\SubItemEnd}[1]{%
\end{SubItemList}%
\let\item\OldItem
\item #1%
}
\newcommand*{\SubItem}[1]{%
\let\SubItem\SubItemMiddle%
\SubItemStart{#1}%
}%
\begin{document}
\begin{minipage}[t]{0.4\linewidth}
\begin{itemize}
\item{First item}
\begin{itemize}
\item{First subitem}
\item{Second subitem}
\item{Third subitem}
\end{itemize}
\item{Second item}
\item{Third item}
\end{itemize}
\end{minipage}
%
\begin{minipage}[t]{0.4\linewidth}
\begin{itemize}
\item{First item}
\SubItem{First subitem}
\SubItem{Second subitem}
\SubItem{Third subitem}
\item{Second item}
\item{Third item}
\end{itemize}
\end{minipage}
\end{document}
答案3
做这样的事怎么样?
无需使用额外的包,只需将其定义为新命令即可。它需要放在额外的括号中,否则新的缩进将应用于之后的所有项目。
\documentclass[11pt]{report}
\usepackage[british]{babel}
%\usepackage{enumitem}
\begin{document}
\newcommand{\SubItem}[1]{
{\setlength\itemindent{15pt} \item[-] #1}
}
\begin{itemize}
\item{First item}
\SubItem{First subitem}
\SubItem{Second subitem}
\SubItem{Third subitem}
\item{Second item}
\item{Third item}
\end{itemize}
\end{document}
答案4
我很感激fuzzybear3965 的回答,我认为也可以修改成这样:
\documentclass{article}
\usepackage{outlines}
\begin{document}
\begin{description}
\item[An_Item_Which_Should_Be_Displayed_As_Usual]
\begin{outline}
\begin{description}
\item[An_Item_Which_Sould_Be_Indented_Below_The_First_One]
\end{description}
\end{outline}
\end{description}
\end{document}