How can I sort a list numerically?

This approach automatically orders the items by year or any other number, by using an external list on an .csv file.

\usepackage{filecontents} % To create an external .csv file
Order, Text
1912, Something good happened.
1923, Something bad happened.
1901, Something terrible happened.



\DTLforeach{externalcsv}{\myorder=Order, \mytext=Text}{\item[\myorder.]\mytext}



enter image description here

You could make use of the glossaries package as shown in the following example:

enter image description here

\usepackage[automake, nonumberlist]{glossaries}

\newglossaryentry{1912}{name={1912}, description={Something good happened}}
\newglossaryentry{1923}{name={1923}, description={Something bad happened}}
\newglossaryentry{1901}{name={1901}, description={Something terrible happened}}
\glsaddall % adds every defined term into the list
\gls{1912} % just adds the entry with the key 1912 t the list
\printglossary[title={List of Historic Events}]

If you prefer the solution to be as close to your syntax as possible:

enter image description here




\seq_new:N \l_item_seq

    \IfValueTF{#1} {\int_set:Nn \l_tmpa_int {#1}} {\int_set:Nn \l_tmpa_int {0}}
    \seq_put_right:Nx \l_item_seq {{\int_use:N \l_tmpa_int}{#2}}

    \seq_clear:N \l_item_seq
    \seq_sort:Nn \l_item_seq {
        \int_compare:nNnTF { \tl_item:nn {##1} {1} } > { \tl_item:nn {##2} {1} }
        { \sort_return_swapped: }
        { \sort_return_same: }
    \seq_map_variable:NNn \l_item_seq \l_tmpa_tl {
        \item[\tl_item:Nn \l_tmpa_tl {1}] \tl_item:Nn \l_tmpa_tl {2}


\begin{description}[left=0mm, font=\bfseries]
  \oitem[1912]{Something good happened}
  \oitem[1923]{Something bad happened}
  \oitem[1901]{Something terrible happened}

\begin{description}[left=0mm, font=\color{blue}\bfseries]
  \oitem[1945]{Something good happened}
  \oitem[1967]{Something bad happened}
  \oitem[1932]{Something terrible happened}