arraysort MWE,包 arraysort 错误:无法按未定义的比较器 arraysortcompare str 排序

arraysort MWE,包 arraysort 错误:无法按未定义的比较器 arraysortcompare str 排序

您好,您能帮我为 arraysort 制作一个 MWE 吗?

我把 Arraysort 包文档中的代码放在了一个最小文档中:

\documentclass{article}
\usepackage[utf8]{inputenc}

\usepackage{arrayjobx}
\usepackage{arraysort}

\begin{document}

\newarray{A}
\readarray{A}{78&4&85&1&28&6}
\sortArray{6}{A}
\A(1) \A(2) \A(3) \A(4) \A(5) \A(6)

\end{document}

它给出:

  Package arraysort Error: Cannot sort by undefined comparator arraysortcomparestr.

谢谢

答案1

首先,不使用任何包进行冒泡排序。然后使用 读取数组listofitems

\documentclass{article}
%
% THIS CODE CAN \bubblesort A NUMBERED LIST
%
\def\listterminator{9999}% SET TO *ANY* VALUE KNOWN NOT TO BE IN LIST (POSITIVE OR NEGATIVE)
\newcommand\bubblesort[1]{\def\sortedlist{}\sortlist#1,\listterminator,\relax}
\def\sortlist#1,#2,#3\relax{%
  \ifnum#2=\listterminator\relax%
    \edef\sortedlist{\sortedlist#1}%
  \else
    \ifnum#1<#2\relax%
      \edef\sortedlist{\sortedlist#1,}%
      \sortlist#2,#3\relax%
    \else%
      \let\tmp\sortedlist%
      \def\sortedlist{}%
      \expandafter\sortlist\tmp#2,#1,#3\relax%
    \fi%
  \fi%
}
\usepackage{listofitems}
\begin{document}
Bubble Sort Demonstration: 
\bubblesort{78,4,85,1,28,6}\sortedlist\par
\readlist*\A{\sortedlist}
Array spans \A[1] to \A[6]:
\foreachitem\z\in\A[]{\ifnum\zcnt=1 \else, \fi\z}
\end{document}

在此处输入图片描述

如果你的初始列表在 a 中\def,那么你可以将其作为

\def\mylist{78,4,85,1,28,6}
\expandafter\bubblesort\expandafter{\mylist}

答案2

感谢 Ulrike Fischer 对文档的帮助。

我只需要补充

 \usepackage[comparestr,comparenum,randompart]{arraysort}

在一开始的时候

阅读文档时我觉得还需要更多内容,但事实并非如此。

相关内容