具有不寻常标签位置的自定义列表

具有不寻常标签位置的自定义列表

我想创建一个列表环境(非常类似于enumerate),以便标签定位多于而不是向左移动。例如:

- i First item ii Second item

等等。我查看过允许您自定义列表的软件包,但似乎没有一个提供类似的东西。我愿意为此目的从头开始创建一个新环境,但我不知道列表环境在基本级别是如何定义的。

答案1

您可以更改label并本地重新定义\item以添加换行符。

\documentclass{article}
\usepackage{enumitem}

\usepackage{showframe} % just for the example

\newenvironment{bizarrelist}
 {\enumerate[
    align=left,
    leftmargin=0pt,
    labelwidth=0pt,
    label={\makebox[3em][r]{\roman*}},
    ref=\roman*,
    before=\changeitem,
 ]}
 {\endenumerate}
\newcommand{\changeitem}{\let\saveditem\item\def\item{\saveditem\mbox{}\\*}}

\begin{document}

\begin{bizarrelist}
\item First item
\item Second item
\end{bizarrelist}

\end{document}

在此处输入图片描述

答案2

为了完成我开始的事情......

通过设置,可以简化代码\parksip=0pt,但由于可能有多个段落\item,因此我每次都将其减去。

\documentclass{article}
\newcounter{mycounter}
\renewcommand{\themycounter}{\roman{mycounter}}

\newenvironment{mylist}{\setcounter{mycounter}{0}%
  \par\vskip-\parskip\smallskip% or whatever distance you want
  \vskip-\itemsep% remove gap for first \item
  \def\item{\par\vskip-\parskip\vskip\itemsep\noindent
  \refstepcounter{mycounter}\makebox[1cm][r]{\themycounter}\newline}}%
{\par\vskip-\parskip\smallskip}

\begin{document}
Text before.
\begin{mylist}
\item First item
\item Second item
\end{mylist}
Text after.

\end{document}

答案3

这就是你想要的吗?

\documentclass{article}
\usepackage{enumitem}
\usepackage[showframe]{geometry} 

\begin{document}

\begin{enumerate}[label=\textendash\qquad \roman*, wide=0.5em, ref=\roman*, labelwidth=\linewidth]%
\item A first item
\item A second item
\end{enumerate}

\end{document} 

在此处输入图片描述

对于项目主体上方的居中标签,您可以使用以下代码:

\begin{enumerate}[label={\makebox[\textwidth]{-- \roman* --}}, wide=0pt, ref=\roman*]%
\item A first item
\item A second item
\end{enumerate}

在此处输入图片描述

相关内容