按数值对数字进行排序

按数值对数字进行排序

考虑数字

2^4、4^2、3^2 和 5^2

是否可以让 LaTeX 计算这些数字的值,然后根据它们的值自动排列?

也就是说,在这个特定情况下,我希望获得输出

3^2、2^4、4^2 和 5^2

PS 它不一定是 LaTeX 3 解决方案。

答案1

轻松xparseexpl3

\documentclass{article}

\usepackage{xparse,expl3}

\ExplSyntaxOn
\NewDocumentCommand{\sortnumberlist}{m}
 {
  \clist_set:Nn \l_svend_numberlist_clist { #1 }
  \clist_sort:Nn \l_svend_numberlist_clist
   {
    \fp_compare:nTF { ##1 > ##2 }
     {
      \sort_return_swapped:
     }
     {
      \sort_return_same:
     }
   }
  \clist_clear:N \l_svend_printnumberlist_clist
  \clist_map_inline:Nn \l_svend_numberlist_clist
   {
    \clist_put_right:Nn \l_svend_printnumberlist_clist { $##1$ }
   }
  \clist_use:Nnnn \l_svend_printnumberlist_clist { ~and~ }{ ,~ }{ ,~and~ }
 }
\clist_new:N \l_svend_printnumberlist_clist
\clist_new:N \l_svend_numberlist_clist
\ExplSyntaxOff

\begin{document}

\sortnumberlist{2^4, 4^2, 3^2, 5^2, 13, 25-1}

\end{document}

在此处输入图片描述

相关内容