根据每个条目的长度对列表进行排序

根据每个条目的长度对列表进行排序

有没有办法根据每项的长度对列表进行排序?比如

\begin{Itemize}
\item a
\item aaaaaa
\item aaaa
\item aaa
\item aaaaa
\item aa
\end{Itemize}

结果是

啊啊
啊啊
啊啊
啊啊
啊啊啊啊
啊啊

答案1

在此处输入图片描述

这假设你指的是排版长度(并且所有项目都是单行)

\documentclass{article}


\def\Itemize{\vbox\bgroup
  \let\item\ItemizeItem
  \let\endItemizeItem\relax}

\def\ItemizeItem{%
  \endItemizeItem
  \let\endItemizeItem\xendItemizeItem
  \setbox0\hbox\bgroup\strut\ignorespaces}

\def\endItemize{\endItemizeItem\egroup}

\def\xendItemizeItem{%
  \unskip\egroup
  \setbox4\vbox{}%
  \loop
    \unskip
    \setbox2\lastbox
  \ifdim\wd2>\wd0
    \setbox4\vbox{\box2\unvbox4}%
  \repeat
  \nointerlineskip
  \box2
  \nointerlineskip
  \box0
  \unvbox4}



\begin{document}

\begin{Itemize}
\item a
\item aaaaaa
\item aaaa
\item aaa
\item aaaaa
\item aa
\end{Itemize}

\end{document}

相关内容