![具有不寻常标签位置的自定义列表](https://linux22.com/image/378738/%E5%85%B7%E6%9C%89%E4%B8%8D%E5%AF%BB%E5%B8%B8%E6%A0%87%E7%AD%BE%E4%BD%8D%E7%BD%AE%E7%9A%84%E8%87%AA%E5%AE%9A%E4%B9%89%E5%88%97%E8%A1%A8.png)
我想创建一个列表环境(非常类似于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}