我正在编写一个包含大量包含简短枚举项的列表的文档,并且我希望能够 [手动] 将多个项放在一行上。因此,例如,我想说
\begin{enumerate}
\item Goes on first line.
\samelineitem Also goes on first line.
\item Goes on second line.
\end{enumerate}
我很高兴自己做出一行/两行的决定(事实上,我更喜欢这样),所以我所寻找的只是一个宏,它可以确定当前的枚举计数器,对水平间距做正确的处理,并打印该项目。如果它可以与枚举、描述和逐项列表(或一般列表)一起使用,那就太好了。(对于描述列表,我猜是这样的\samelineitem[newlabel] Text of item
)。
有没有具有此功能的软件包,或者有人愿意告诉我怎么做?谢谢。
答案1
这是使用该包的通用解决方案enumitem
。您想要的会产生一些看起来奇怪的列表,所以我不确定我是否建议使用它。它适用于所有三种类型的列表。该enumitem
包还为所有三种列表类型实现了内联列表。我在这里添加了一个示例来展示这一点。
对于 enumerate
和itemize
列表,任何标签参数都会被忽略,因此您不应该对这些类型的列表使用任意指定的标签。
\documentclass{article}
\usepackage[inline]{enumitem}
\makeatletter
% This command ignores the optional argument for itemize and enumerate lists
\newcommand{\inlineitem}[1][]{%
\ifnum\enit@type=\tw@
{\descriptionlabel{#1}}
\hspace{\labelsep}%
\else
\ifnum\enit@type=\z@
\refstepcounter{\@listctr}\fi
\quad\@itemlabel\hspace{\labelsep}%
\fi}
\makeatother
\parindent=0pt
\begin{document}
% Pure inline list
This is an inline list.
\bigskip
\begin{enumerate*}
\item First item.
\item Second item.
\item Third item.
\item Fourth item.
\end{enumerate*}
\bigskip
% Combined inline list
This is a combined inline enumerated list.
\begin{enumerate}
\item First item \inlineitem Second item\inlineitem Third item.
\item Fourth item
\item Fifth item
\end{enumerate}
\bigskip
% Works with itemize
This is a combined inline itemized list.
\begin{itemize}
\item First item \inlineitem Second item \inlineitem Third item.
\item Fourth item
\item Fifth item
\end{itemize}
\bigskip
% Works with description lists
This is a combined inline description list.
\begin{description}
\item[Foo] First item \inlineitem[Bar]Second item\inlineitem[FooBar] Third item.
\item[Bar] Fourth item
\item[Foo] Fifth item
\end{description}
\bigskip
% Showing that it can be embedded and works with modified labels
The new command works with arbitrary labels and embedding.
\begin{enumerate}
\item
\begin{enumerate}[label=\Alph*.]
\item First item\inlineitem Second item \inlineitem Third item.
\item Fourth item
\item Fifth item
\end{enumerate}
\end{enumerate}
\end{document}
答案2
您还可以使用行列表来列出要内联的部分,然后使用resume
以下功能开始一个新列表:包裹enumitem
:
笔记:
- 如果您的文档中有多个这样的内容,您还应该
start=1
在开始新列表时添加选项以重置标签计数器。
进一步增强:
- 内联版本适用于段落中前面有文本的情况,列表开头会添加一个额外的空格。因此,它与后面的非内联列表无法正确对齐。我添加了
before=\hspace{-0.6ex}
似乎可以进行必要调整的 。但是,可能有更好的方法可以做到这一点,而不是硬编码一个特定的值。否则,在某些情况下可能需要进行调整。
代码:
\documentclass{article}
\usepackage[inline]{enumitem}
\begin{document}
\begin{enumerate*}[series=MyList, before=\hspace{-0.6ex}]
\item Goes on first line.
\item Also goes on first line.
\end{enumerate*}
\begin{enumerate}[resume=MyList]
\item Goes on second line.
\end{enumerate}
\end{document}
答案3
我找到多色包通过封装 itemize、description 或 enumerate 环境提供了一个简单的解决方案。例如:
\usepackage{multicol}
\begin{multicols}{2}
\begin{enumerate}
\item \( \varphi(x,t)= A \mathrm{e}^{- \alpha (x- c t) } \)
\item \( \varphi(x,t)= A \mathrm{e}^{- 2 \alpha (x- c t) } \)
\item \( \varphi(x,t)= A \ln \left( k (x- c t) \right) \)
\item \( \varphi(x,t)= A \left( x- c t \right) \)
\item \( \varphi(x,t)= A \left( x- c t \right)^n \)
\item \( \varphi(x,t)= A \sin \left( k (x- c t) \right) \)
\item \( \varphi(x,t)= A \sin \left( \alpha (x^2- c^2 t^2) \right) \)
\item \( \varphi(x,t)= A \left( x+ c t \right)^{1/2} \)
\end{enumerate}
\end{multicols}
请注意多色在定义环境时使用。
答案4
使用$\bullet$
作品作为内联项目符号。示例:
\begin{itemize}
\item MacOS $\bullet$ Windows $\bullet$ Linux
\end{itemize}
上述语法打印
• MacOS • Windows • Linux