我怎样才能将标签移动到枚举中的 \item 文本上方?

我怎样才能将标签移动到枚举中的 \item 文本上方?

我正在将 enumerate 与 enumitem 包一起使用。我已按照下面的 MWE 设置了我的代码。这会将标签和数字放在文本的左侧。我想知道是否有办法调整它,以便标签和数字出现在文本上方(带有换行符)而不是左侧。

例如我希望它看起来像这样;

                                       Article 1

Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus
elit, vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur dic-
tum gravida mauris. Nam arcu libero, ...

这是我的 MWE;

\documentclass[12pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage{lipsum} % just for dummy text
\usepackage{enumitem} 

\begin{document}

\begin{enumerate}[label=Article \arabic*:]
\item \lipsum[1].

\item \lipsum[1]

\item \lipsum[1]
\end{enumerate}
\end{document}

答案1

这是一个简单的方法,使用stackengine包。你可以使用以下命令设置标签和主体之间的距离before=\setstackgap[S]{…}

\documentclass[12pt,a4paper]{article}

\usepackage[utf8]{inputenc}
\usepackage{lipsum} % just for dummy text
\usepackage{enumitem}
\usepackage{stackengine}

\begin{document}


\begin{enumerate}[label=\hfill\stackon{}{Article \arabic*}\hfill, wide=0pt, labelwidth=\textwidth, itemsep=1.25\baselineskip, before=\setstackgap{S}{2.5ex}]
\item \lipsum[1]

\item \lipsum[1]

\item \lipsum[1]
\end{enumerate}

\end{document} 

在此处输入图片描述

答案2

定义一个新的列表和一个新的对齐:

\documentclass{article}
\usepackage{lipsum,showframe}   %% showframe for demo
\usepackage{enumitem}
\SetLabelAlign{mycenter}{\strut\smash{\parbox[t]{\textwidth}
                            {\centering#1}}%
                        }
\newlist{mylist}{enumerate}{1}
\setlist[mylist]{label=\bfseries Article~\arabic*,align=mycenter,
                    leftmargin=0cm,itemindent=\labelwidth}

\begin{document}
\begin{mylist}
\item \lipsum[1]
\item \lipsum[1]
\end{mylist}
\end{document}

在此处输入图片描述

答案3

这样怎么样(你显然可以在定义中调整垂直空间):

\documentclass{article}
\usepackage{lipsum}
\usepackage[inline]{enumitem}
\newenvironment{mylist}{%
  \begin{enumerate*}[%
    before={\\[12pt]},%
    label=\centerline{Article \arabic*:},%
    afterlabel={\\[12pt]},%
    itemjoin={\\[12pt]},%
    itemjoin*={\\[12pt]},%
    ]%
    }{\end{enumerate*}}
\begin{document}
\begin{mylist}
\item \lipsum[1]
\item \lipsum[1]
\end{mylist}
\end{document}

答案4

我没有看到一种简单的方法可以enumitem实现enumerate这种方式(但卢卡斯更聪明!),所以我认为你只有两个选择:

  • \section使用现有的格式。例如,使用或命令来做你想做的事情并不难\subsection,要么选择一个以这些为中心的类,要么使用标题安全以获得您想要的格式。

  • 构建您自己的自定义环境。

您可以通过以下方式构建自己的环境以便可以生成以下内容:

在此处输入图片描述

代码如下:

\documentclass[12pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage{lipsum} % just for dummy text
\usepackage{enumitem}

\begin{document}

\newcounter{centereditem}%  a counter for the article numbers
\renewcommand\thecentereditem{Article~\arabic{centereditem}}
\newcommand\centereditem{% this will become the \item command in the environment
  \refstepcounter{centereditem}
  \centerline{\thecentereditem}
}
% Usage:
%   - \begin{centeredlist}...\end{centeredlist}
%   - \begin{centeredlist}[num]...\end{centeredlist}, to make numbering start a num+1
\newenvironment{centeredlist}[1][0]
  {\let\item=\centereditem%
   \setcounter{centereditem}{#1}
  }{}

\begin{centeredlist}
\item \lipsum[1].

\item \lipsum[1]

\item \lipsum[1]
\end{centeredlist}

\end{document}

相关内容