我目前正在使用
\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
一个简单的解决方案是使用etoolbox
和enumitem
:
\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}