如何在多行上放置逐项标签?

如何在多行上放置逐项标签?

我想知道在使用 itemize 环境时是否可以很好地显示长标签?例如:

\begin{itemize}
  \item[long ugly displaying label] Stuff
    \subitem more stuff
    ...
\end{itemize}

标签总是在图片的左边。我想把标签分成多行?或者限制标签在页面左边的显示距离,并将“Stuff”移到下一行。

任何好主意(或处理长标签的好方法)都很好。

答案1

你可以通过重新定义逐项列举列表。标签在一系列命令中定义\labelitemi...\labelitemiv,您可以重新定义它们。

\documentclass{article}
\begin{document}
\renewcommand\labelitemi{\textbullet\textbullet \bfseries and other ugly stuff}
\renewcommand\labelitemii{\normalfont\bfseries \textendash more ugly stuff}
\renewcommand\labelitemiii{\textasteriskcentered}
\renewcommand\labelitemiv{\textperiodcentered}
\begin{itemize}
\item First
\item second
      \begin{itemize}
        \item Ugly stuff.
      \end{itemize}
\end{itemize}
\end{document}

这将产生:

在此处输入图片描述

通过重新定义 makelabel 命令和合适的列表环境,可以实现更多奇特的样式,如下面的 MWE 所示。

\documentclass{article}
\usepackage{lipsum}
\begin{document}
\renewcommand\labelitemi{\textbullet\textbullet \bfseries and other ugly stuff}
\renewcommand\labelitemii{\normalfont\bfseries \textendash more ugly stuff}
\renewcommand\labelitemiii{\textasteriskcentered}
\renewcommand\labelitemiv{\textperiodcentered}
\lipsum[1]
\makeatletter
\def\newitemizedenvironment#1#2{
\expandafter\def\csname#1\endcsname{%
 \ifnum \@itemdepth >\thr@@\@toodeep\else
 \advance\@itemdepth\@ne
 \edef\@itemitem{labelitem\romannumeral\the\@itemdepth}%
 \expandafter
 \list
 \csname\@itemitem\endcsname
 {\def\makelabel####1{\hspace*{150pt}\hss\llap{####1}}}%
 \fi}
 \expandafter\let\csname end#1\endcsname=\endlist
}
\makeatother

\newitemizedenvironment{ugly}{}

\begin{ugly}
\item First
\item second
\end{ugly}

\end{document}

在此处输入图片描述

相关内容