为什么以下会产生错误,
\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}