datatool 排序问题-数据类型错误?

datatool 排序问题-数据类型错误?

我创建了一个非常小的数据库,用于datatool在表格的每一行存储两个值。首先是运行 ID,其次是生成的尺寸(转换为毫米),这是我计算出的要在此列表中注册/保存的每个输入图像的宽度。

注册完所有图片后,我想先对列表进行排序,然后再进行进一步处理。不幸的是,DTLsortseams 将该数字解释为其他内容,而不是数字,因此生成的排序列表不符合预期。

我需要将图像尺寸的值作为哪种数据类型插入数据库,以便DTLsort可以正确排序?或者我需要设置任何开关/标志,以便DTLsort知道如何解释列的值?以下是我目前得到的结果:

\documentclass{article}
\usepackage{datatool}
\usepackage{graphicx}

\def\dimtomm#1{\the\numexpr\dimexpr#1\relax*635/118407168\relax}

\newsavebox\imagebox
\newcommand{\regimg}[2]{%
  \sbox{\imagebox}{\includegraphics[height=5cm]{#1}}%
  \DTLnewrow{list}%
  \dtlexpandnewvalue%
  \DTLnewdbentry{list}{label}{#2}%
  \DTLnewdbentry{list}{width}{\dimtomm{\wd\imagebox}}%
}

\newenvironment{sortedlist}{%
  \DTLifdbexists{list}{\DTLcleardb{list}}{\DTLnewdb{list}}%
  \DTLifdbexists{lists}{\DTLcleardb{lists}}{\DTLnewdb{lists}}%
}{%  
\DTLsort{width=descending}{list}
\DTLdisplaydb{list}
}

\begin{document}
\begin{sortedlist}
\regimg{img01.jpg}{1}
\regimg{img02.jpg}{2}
\regimg{img03.jpg}{3}
\regimg{img04.jpg}{4}
%...
\end{sortedlist}
\end{document}

相关内容