从 paralist 到 enumitem,也使用 tabto

从 paralist 到 enumitem,也使用 tabto

这是我之前提出的问题的后续问题:多列横向枚举

我之前使用的是paralist,现在我觉得最好切换到enumitem(因为我可以使用选项)。使用的resume环境完全满足了我的需求,但将其转移到基于的环境不再有效。tabbedenumparalistTabbedenumenumitem

这可能是因为星号 (即,如果\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}

简历样本

相关内容