枚举内的子部分

枚举内的子部分

为什么以下会产生错误,

\documentclass{article}
\begin{document}
\section{Test}
\begin{enumerate}
\item \subsection{Error}
\end{enumerate}
\end{document}

但下面的代码编译没问题:

\documentclass{article}
\begin{document}
\begin{enumerate}
\item \subsection{Fine}
\end{enumerate}
\end{document}

\documentclass{article}
\begin{document}
\section{Test}
\begin{enumerate}
\item
\item \subsection{Fine}
\end{enumerate}
\end{document}

答案1

与其他语言不同,(La)TeX 中的大多数宏都不是上下文相关的(这实际上适用于绝大多数宏——尽管也有例外)。它\subsection实际上“只是”一个简单的分段命令,用于创建标题。您只应将其用于此目的。标准类中的定义如下所示

\newcommand\subsection{\@startsection{subsection}{2}{\z@}%
                                     {-3.25ex\@plus -1ex \@minus -.2ex}%
                                     {1.5ex \@plus .2ex}%
                                     {\normalfont\large\bfseries}}

如您所见,有一个辅助宏\@startsection(我不会在这里粘贴它的定义,您可以在中看到它latex.ltx),因为可以抽象分段的过程。它基本上的作用是设置一些维度,注意标题不会是页面上的最后一行并打印实际标题。这就是它的(固定)含义。

在你的例子中你显然不是标记该列表内新子节的开始 - 除非您有一个非常古怪的设计想法。最有可能的是,您想将条目拆分为几个部分或子项(或称为“子节”)。在这种情况下,您可以简单地在另一个列表内开始一个新列表。LaTeX 支持列表环境的嵌套:

\begin{enumerate}
  \item item
  \begin{enumerate}
    \item subitem 1
    \item subitem 2
    \item ...
  \end{enumerate}
  \item another item
  \item ...
\end{enumerate}

如果您希望嵌套enumerate标签看起来更像子部分计数器,您可以执行以下操作。

\documentclass{article}
\usepackage{enumitem}

\begin{document}
\section{section}
\begin{enumerate}
  \item item
  \begin{enumerate}[label=\theenumi.\arabic*.]
    \item part 1
    \item part 2
    \item ...
  \end{enumerate}
  \item another item
  \item ...
\end{enumerate}
\end{document}

示例_渲染

相关内容