使列表 (itemize) 的唯一第一个标签为空(在序言中)

使列表 (itemize) 的唯一第一个标签为空(在序言中)

我目前正在使用

\begin{itemize}
  \item[]
  \item
  \item
\end{itemize}

每次我创建列表时都要确保第一个项目的标签为空。这很麻烦,如果我决定更改样式,可能会有问题。有没有办法在序言中将其设置为默认值?

答案1

enumerate如果您使用奇怪的计数器输出定义自己的风格,您就会得到这种行为。

\@firstempty定义一个计数器格式,如果计数器为 0,则不打印任何内容,\labelitem<listdepth>否则不打印任何内容。因此,如果计数器为零,则其输出将被抑制,否则它与您从其他方式获得的标签相同itemize。然后,​​我们让该计数器格式为人所知,并根据该计数器格式enumitem定义我们的新环境。feitemize

\documentclass[british]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{babel}
\usepackage{csquotes}

\usepackage{enumitem}

\makeatletter
\def\firstempty#1{\expandafter\@firstempty\csname c@#1\endcsname}
\def\@firstempty#1{\ifcase#1\else\csname labelitem\romannumeral\the\@listdepth\endcsname\fi}
\makeatother
\AddEnumerateCounter*{\firstempty}{\@firstempty}{1}
\newlist{feitemize}{enumerate}{5}
\setlist[feitemize]{label=\firstempty*,start=0}

\begin{document}
\texttt{feitemize}:
\begin{feitemize}
  \item Hallo
  \item Hello
  \item Hoi
\end{feitemize}

For comparison \texttt{itemize} with empty first label:
\begin{itemize}
  \item[] Hallo
  \item Hello
  \item Hoi
\end{itemize}
\end{document}

在此处输入图片描述

答案2

一个简单的解决方案是使用etoolboxenumitem

\documentclass[x11names]{article}
\usepackage[utf8]{inputenc}
\usepackage{ xcolor}
\usepackage{enumitem}
\usepackage{etoolbox}
\newbool{firstitem}

\setlist[itemize,1]{label=\ifbool{firstitem}{\global\boolfalse{firstitem}}{\color{Red3}\textbullet}, before=\booltrue{firstitem}}%\

\begin{document}

Some text some text some text some text some text some text some text some text some text some text some text some text some text.
\begin{itemize}
  \item First 
  \item Second
\item Third
\end{itemize}
\end{document} 

在此处输入图片描述

相关内容