我想知道在使用 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}