这是我之前提出的问题的后续问题:多列横向枚举。
我之前使用的是paralist
,现在我觉得最好切换到enumitem
(因为我可以使用选项)。使用的resume
环境完全满足了我的需求,但将其转移到基于的环境不再有效。tabbedenum
paralist
Tabbedenum
enumitem
这可能是因为星号 (即,如果\enumerate
是 的缩写,\begin{enumerate}
那么 的工作原理是什么\begin{enumerate}*
)? 这就是我尝试通过定义环境 的原因Inparaenum
。
问题是否基于可选选项?事实上,Tabbedenum
也可以用可选选项来定义,这样语法就是:\begin{Tabbedenum}[label=\emph{\alph*})]{3}
?
下面是 MWE。
\documentclass{article}
\usepackage{tabto}
\usepackage{paralist}
\newenvironment{tabbedenum}[1]
{\NumTabs{#1}\inparaenum\let\latexitem\item
\def\item{\def\item{\tab\latexitem}\latexitem}}
{\endinparaenum}
\usepackage[inline]{enumitem}
\newenvironment{Inparaenum}{\begin{enumerate*}[label=\emph{\alph*})]}{\end{enumerate*}}
\newenvironment{Tabbedenum}[1]
{\NumTabs{#1}\Inparaenum\let\latexitem\item
\def\item{\def\item{\tab\latexitem}\latexitem}}
{\endInparaenum}
\begin{document}
\begin{tabbedenum}{3}
\item hello world
\item hello world
\item hello world
\item hello world
\item hello world
\item hello world
\end{tabbedenum}
\begin{Tabbedenum}{3}
\item hello world
\item hello world
\item hello world
\item hello world
\item hello world
\item hello world
\end{Tabbedenum}
\end{document}
答案1
使用 的话,这实际上要简单得多enumitem
。本质上,您只需使用itemjoin
选项即可生成制表符:
\documentclass{article}
\usepackage{tabto}
\usepackage[inline]{enumitem}
\newenvironment{Tabbedenum}[1]
{\NumTabs{#1}\begin{enumerate*}[label=\emph{\alph*}),itemjoin={\tab}]}{\end{enumerate*}}
\begin{document}
\begin{Tabbedenum}{3}
\item hello world
\item hello world
\item hello world
\item hello world
\item hello world
\item hello world
\end{Tabbedenum}
\end{document}
如果您还希望将第一个项目放在制表位,那么您可以添加before={\tab}
:
\documentclass{article}
\usepackage{tabto}
\usepackage[inline]{enumitem}
\newenvironment{Tabbedenum}[1]
{\NumTabs{#1}\begin{enumerate*}[label=\emph{\alph*}),
before={\tab},itemjoin={\tab}]}{\end{enumerate*}}
\begin{document}
\noindent
My items:
\begin{Tabbedenum}{3}
\item hello world
\item hello world
\item hello world
\item hello world
\item hello world
\item hello world
\end{Tabbedenum}
\end{document}
如果列表前没有文本,则必须后退才能到达第一个制表位,例如通过发出
\noindent\hspace{-10pt}
在列表或设置之前
before={\unskip\hspace{\dimexpr-\parindent-1pt}\tab}
您可以将可选参数传递给此类构造,如以下代码所示。请注意,由于分组,resume
需要与 结合才能series
起作用。
\documentclass{article}
\usepackage{tabto}
\usepackage[inline]{enumitem}
\newenvironment{Tabbedenum}[2][]
{\NumTabs{#2}\begin{enumerate*}[label=\emph{\alph*}),
before={\unskip\hspace{\dimexpr-\parindent-1pt}\tab},itemjoin={\tab},#1]}%
{\end{enumerate*}}
\begin{document}
\begin{Tabbedenum}[series=test]{3}
\item hello world
\item hello world
\item hello world
\item hello world
\item hello world
\item hello world
\end{Tabbedenum}
\begin{Tabbedenum}[resume=test]{4}
\item hello world
\item hello world
\item hello world
\item hello world
\item hello world
\item hello world
\end{Tabbedenum}
\end{document}