summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/datatool/datatool.sty
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/latex/datatool/datatool.sty')
-rw-r--r--Master/texmf-dist/tex/latex/datatool/datatool.sty34
1 files changed, 29 insertions, 5 deletions
diff --git a/Master/texmf-dist/tex/latex/datatool/datatool.sty b/Master/texmf-dist/tex/latex/datatool/datatool.sty
index 7b65fd06807..9281a51c9cf 100644
--- a/Master/texmf-dist/tex/latex/datatool/datatool.sty
+++ b/Master/texmf-dist/tex/latex/datatool/datatool.sty
@@ -39,11 +39,12 @@
%% Grave accent \` Left brace \{ Vertical bar \|
%% Right brace \} Tilde \~}
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{datatool}[2013/08/29 v2.17 (NLCT)]
+\ProvidesPackage{datatool}[2013/09/06 v2.18 (NLCT)]
\RequirePackage{xkeyval}
\RequirePackage{ifthen}
\RequirePackage{xfor}
\RequirePackage{substr}
+\RequirePackage{etoolbox}
\RequirePackage{etex}
\newcommand*{\@dtl@separator}{,}
\newcommand*{\DTLsetseparator}[1]{%
@@ -116,7 +117,7 @@
\ProcessOptionsX
\@dtl@construct@lopoffs
\RequirePackage{datatool-base}
-\let\DTLpar\@@par
+\DeclareRobustCommand{\DTLpar}{\par}
\newcommand*{\DTLnewdb}[1]{%
\DTLifdbexists{#1}%
{%
@@ -2459,9 +2460,32 @@
\typeout{Sorting `#3' - this may take a while.}%
\fi
\edef\@dtl@replacementkeys{#1}%
- \edef\@dtl@sortorder{#2}%
- \let\@dtl@comparecs=#4%
- \dtl@sortdata{#3}%
+ \def\@dtl@sortorder{}%
+ \@for\@dtl@level:=#2\do
+ {%
+ \expandafter\@dtl@getsortdirection\@dtl@level=\relax
+ \DTLifhaskey{#3}{\@dtl@key}%
+ {%
+ \ifdefempty\@dtl@sortorder
+ {\let\@dtl@sortorder=\@dtl@level}%
+ {\eappto\@dtl@sortorder{,\@dtl@level}}%
+ }%
+ {%
+ \PackageError{datatool}%
+ {%
+ Can't sort on `\@dtl@level'.
+ No such key `\@dtl@key' in database `#3'%
+ }{}%
+ }%
+ }%
+ \ifdefempty\@dtl@sortorder
+ {%
+ \PackageWarning{datatool}{No keys provided to sort database `#3'}%
+ }%
+ {%
+ \let\@dtl@comparecs=#4%
+ \dtl@sortdata{#3}%
+ }%
}%
{%
\PackageError{datatool}{Database `#3' doesn't exist}{}%