按字母顺序显示 itemize 中的项目

按字母顺序显示 itemize 中的项目

我想知道是否可以按字母顺序显示项目,而不管我们在后端输入的顺序如何?例如,我使用 itemize 如下:

\begin{itemize}
    \item ISDYNSTP:  Is dynamic time step used?
    \item ISCDCA:
    \item MVAR
    \item IS2TL_
\end{itemize}

但我想按字母顺序显示项目。我不知道这是否可行。我有数百个逐项项目。实际上,我正在尝试为不同的参数创建一个词汇表。

答案1

从中获取一些代码如何对字母数字列表进行排序,对界面进行轻微的更改,以便通过datatool包裹

在此处输入图片描述

\documentclass{article}
\usepackage{datatool}% http://ctan.org/pkg/datatool
\newcommand{\sortitem}[1]{%
  \DTLnewrow{list}% Create a new entry
  \DTLnewdbentry{list}{description}{#1}% Add entry as description
}
\newenvironment{sortedlist}{%
  \DTLifdbexists{list}{\DTLcleardb{list}}{\DTLnewdb{list}}% Create new/discard old list
}{%
  \DTLsort{description}{list}% Sort list
  \begin{itemize}%
    \DTLforeach*{list}{\theDesc=description}{%
      \item \theDesc}% Print each item
  \end{itemize}%
}
\begin{document}

Default:
\begin{itemize}
  \item ISDYNSTP:  Is dynamic time step used ?
  \item ISCDCA:
  \item MVAR
  \item IS2TL
\end{itemize}

Sorted:
\begin{sortedlist}
  \sortitem{ISDYNSTP:  Is dynamic time step used ?}
  \sortitem{ISCDCA:}
  \sortitem{MVAR}
  \sortitem{IS2TL}
\end{sortedlist}

\end{document}

为了允许格式化已排序的元素,最好修改语法。为此,以下 MWE 提供了一个更新版本,\sortitem[<sort label>]{<label/description>}它采用可选的<sort label>(用作排序标签):

在此处输入图片描述

\documentclass{article}
\usepackage{datatool}% http://ctan.org/pkg/datatool
\newcommand{\sortitem}[2][\relax]{%
  \DTLnewrow{list}% Create a new entry
  \ifx#1\relax
    \DTLnewdbentry{list}{sortlabel}{#2}% Add entry sortlabel (no optional argument)
  \else
    \DTLnewdbentry{list}{sortlabel}{#1}% Add entry sortlabel (optional argument)
  \fi%
  \DTLnewdbentry{list}{description}{#2}% Add entry description
}
\newenvironment{sortedlist}{%
  \DTLifdbexists{list}{\DTLcleardb{list}}{\DTLnewdb{list}}% Create new/discard old list
}{%
  \DTLsort{sortlabel}{list}% Sort list
  \begin{itemize}%
    \DTLforeach*{list}{\theDesc=description}{%
      \item \theDesc}% Print each item
  \end{itemize}%
}
\begin{document}

Default:
\begin{itemize}
  \item ISDYNSTP:  Is dynamic time step used ?
  \item ISCDCA:
  \item MVAR
  \item IS2TL
\end{itemize}

Sorted:
\begin{sortedlist}
  \sortitem{ISDYNSTP:  Is dynamic time step used ?}
  \sortitem[ISCDCA]{\textit{ISCDCA:}}
  \sortitem[MVAR]{\textbf{MVAR}}
  \sortitem{IS2TL}
\end{sortedlist}

\end{document}

如果你想要不区分大小写比较,只需将\DTLsort命令替换为\DTLsort*

相关内容