我想要做的是让我的枚举看起来像这样
a)
i) answer
ii) answer
b) answer
目前,我正在使用
\begin{enumerate}
\item \hfill \\
\begin{enumerate}[a)]
\item
\item
\end{enumerate}
\end{enumerate}
但是当我这样做时,看起来有 2 个空行,而不是 1 个。
a)
i)
我尝试了很多间距命令,但无法让它们起作用(LaTeX 的新功能)。
那么,有办法吗?还是我应该把它们都放在同一行?我知道这更容易,但我觉得看起来很奇怪。
答案1
任何创建空白框或添加一些空白的方法都可以解决问题。例如\mbox{}
或 甚至\hfill
。 的问题\hfill\\
是它会填满行,然后创建新行,然后为列表创建新段落;因此垂直空白太多。
\begin{enumerate}
\item \mbox{}
\begin{enumerate}
\item
\item
\end{enumerate}
\end{enumerate}
答案2
如果您希望所有操作都{enumerate}
像这样,您可以修补命令\item
以添加\leavevmode
(与 Caramdir 建议的效果相同\mbox{}
)以自动化所有操作。修补可以通过\apptocmd
以下命令完成:电子工具箱在命令末尾附加代码的包。如果您希望能够使用可选参数(您需要为此修补和),则不能直接附加到enumerate
和。在下面的代码中,我还使用了item
\\enumerate
\@item
枚举项包来定制列表(它允许自动拥有第二级的a)
、b)
等等{enumerate}
)。
\documentclass{article}
\usepackage{enumitem}
\setenumerate[2]{label=\alph*)}
\usepackage{etoolbox}
\makeatletter
\expandafter\apptocmd\expandafter{\csname\string\enumerate\endcsname}{\apptocmd{\@item}{\leavevmode}{}{}}{}{}
\makeatother
\begin{document}
\begin{enumerate}
\item \begin{enumerate}
\item answer
\item answer
\end{enumerate}
\item answer
\begin{enumerate}
\item answer
\item answer
\end{enumerate}
\end{enumerate}
\end{document}
代码\apptocmd{\@item}{\leavevmode}{}{}
附加到 ,\item
它总是在内部\leavevmode
之后开始新行。为了将其仅限于环境,此代码本身附加到 ,这要归功于另一个。\item
{enumerate}
{enumerate}
\enumerate
\apptocmd
关于此代码的最后一点说明:如果将 嵌套{itemize}
在 内{enumerate}
,也将被重新定义(如果这是一个问题,那么修补以保留 的原始定义\item
并不困难)。{itemize}
\item