描述列表自动调整不同层级的样式

描述列表自动调整不同层级的样式

是否有可能有一个描述列表,根据列表的级别改变项目标签的样式,即环境说description*哪个会使

\documentclass{article}

\begin{document}

\begin{description*}
    \item[Point 1:] bla bla
    \begin{description*}
        \item[Subpoint 1.1 :] bla bla
        \item[Subpoint 1.2 :] bla bla
    \end{description*}
    \item[Point 2:] bla bla
    \begin{description*}
        \item[Subpoint 2.1 :] bla bla
        \item[Subpoint 2.2 :] bla bla
    \end{description*}
\end{description*}

\end{document}

看起来像

\documentclass{article}

\begin{document}

    \begin{description}
\item[Point 1:] bla bla
\begin{description}
    \item[\emph{Subpoint 1.1 :}] bla bla
    \item[\emph{Subpoint 1.2 :}] bla bla
\end{description}
\item[Point 2:] bla bla
\begin{description}
    \item[\emph{Subpoint 2.1 :}] bla bla
    \item[\emph{Subpoint 2.2 :}] bla bla
\end{description}
    \end{description}

\end{document}

在此处输入图片描述

或者

\documentclass{article}

\begin{document}

\begin{description}
    \item[Point 1:] bla bla
    \begin{description}
        \item[\normalfont{Subpoint 1.1 :}] bla bla
        \item[\normalfont{Subpoint 1.2 :}] bla bla
    \end{description}
    \item[Point 2:] bla bla
    \begin{description}
        \item[\normalfont{Subpoint 2.1 :}] bla bla
        \item[\normalfont{Subpoint 2.2 :}] bla bla
    \end{description}
\end{description}

\end{document}

在此处输入图片描述

答案1

以下是该enumitem包的两个解决方案,一个基于环境description,另一个基于enumerate,如果描述文本在给定级别始终相同。我为此定义了一个descrenum环境,它添加要枚举的文本并对其进行格式化:

\documentclass{article}
\usepackage[x11names]{xcolor} 
\usepackage{enumitem}
\setlist[description, 2]{font= \mdseries\itshape}
\setlist[description, 3]{, font =\color{red}\mdseries\scshape, align = left}
\newlist{descrenum}{enumerate}{2}
\setlist[descrenum, 1]{label = Point \arabic*:, font = \bfseries, align = left,}
\setlist[descrenum, 2]{label = Subpoint \arabic{descrenumi}.\arabic*:, font = \scshape, align = left}

\begin{document}

\begin{description}
  \item[Point 1:] bla bla Test test test test test test test test test test test test test test test test test test test test test test test test test
  \begin{description}
    \item[Subpoint 1.1 :] bla bla Test test test test test test test test test test test test test test test test test test test test test test test test test
    \item[Subpoint 1.2 :] bla bla
  \end{description}
  \item[Point 2:] bla bla
  \begin{description}
    \item[Subpoint 2.1 :] bla bla
    \begin{description}
         \item[Subsubpoint 2.1 a:] bla bla
         \item[Subsubpoint 2.1 b:] bla bla
     \end{description}
    \item[Subpoint 2.2 :] bla bla
  \end{description}
\end{description}
\vskip1cm
\begin{descrenum}%
  \item bla bla Test test test test test test test test test test test test test test test test test test test test test test test test test
  \begin{descrenum}%
    \item bla bla Test test test test test test test test test test test test test test test test test test test test test test test test test
    \item bla bla
  \end{descrenum}
  \item bla bla
  \begin{descrenum}
    \item bla bla
    \item bla bla
  \end{descrenum}
\end{descrenum}

\end{document} 

在此处输入图片描述

答案2

自动列表作为其克隆enumerate(因为我不想改变enumerate其自身的行为。

用于\newlist{pointdescription}{enumerate}{2}提供列表的克隆enumerate,嵌套级别为两。

这将分别生成计数器pointdescriptionipointdescriptionii

然后为这个新列表设置一个“任意”样式:

\setlist[pointdescription]{label={\textbf{Point \arabic*:}}对于第一级,请参见第二级的示例。

此列表样式稍后可以随时更改。

笔记:引用样式也必须改变,否则看起来会很别扭。我参考了手册enumitem

\documentclass{article}

\usepackage{enumitem}
\begin{document}

\newlist{pointdescription}{enumerate}{2}

\setlist[pointdescription,1]{label={\textbf{Point \arabic*:}}}
\setlist[pointdescription,2]{itemindent=\leftmarginii,label={\emph{Subpoint \arabic{pointdescriptioni}.\arabic*:}}}

\begin{pointdescription}
\item bla bla
  \begin{pointdescription}
    \item bla bla
    \item bla bla
    \end{pointdescription}
\item bla bla
  \begin{pointdescription}
    \item bla bla
    \item bla bla
    \end{pointdescription}
\end{pointdescription}

\setlist[pointdescription,1]{label={\texttt{Point \arabic*:}}}
\setlist[pointdescription,2]{itemindent=\leftmarginii,label={\textsc{Subpoint \arabic{pointdescriptioni}.\arabic*:}}}


\begin{pointdescription}
\item bla bla
  \begin{pointdescription}
    \item bla bla
    \item bla bla
    \end{pointdescription}
\item bla bla
  \begin{pointdescription}
    \item bla bla
    \item bla bla
    \end{pointdescription}
\end{pointdescription}


\end{document}

在此处输入图片描述

相关内容