From e8825f013e999a146ec53c7646086ac24d4adc8e Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Sat, 30 Jul 2016 23:10:06 +0000 Subject: datatool (28jul16) git-svn-id: svn://tug.org/texlive/trunk@41772 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/doc/latex/datatool/CHANGES | 17 +++ Master/texmf-dist/doc/latex/datatool/README | 4 +- .../doc/latex/datatool/datatool-code.pdf | Bin 1170895 -> 1175201 bytes .../doc/latex/datatool/datatool-user.pdf | Bin 613586 -> 631018 bytes .../doc/latex/datatool/datatool-user.tex | 128 +++++++++++++++- .../doc/latex/datatool/samples/sample-autokeys.pdf | Bin 24923 -> 24923 bytes .../doc/latex/datatool/samples/sample-barchart.pdf | Bin 35068 -> 35068 bytes .../latex/datatool/samples/sample-datatooltk.pdf | Bin 22860 -> 22860 bytes .../doc/latex/datatool/samples/sample-dict.pdf | Bin 122588 -> 122588 bytes .../latex/datatool/samples/sample-europecv-bib.pdf | Bin 89557 -> 89557 bytes .../doc/latex/datatool/samples/sample-gidx.pdf | Bin 179545 -> 179722 bytes .../doc/latex/datatool/samples/sample-glossary.pdf | Bin 104200 -> 104379 bytes .../doc/latex/datatool/samples/sample-index.pdf | Bin 128779 -> 128779 bytes .../latex/datatool/samples/sample-mail-merge.pdf | Bin 21618 -> 21631 bytes .../doc/latex/datatool/samples/sample-piechart.pdf | Bin 33957 -> 33957 bytes .../doc/latex/datatool/samples/sample-sort.pdf | Bin 89724 -> 89724 bytes .../datatool/samples/sample-student-scores.pdf | Bin 34614 -> 34614 bytes .../latex/datatool/samples/sample-two-per-row.pdf | Bin 31751 -> 31751 bytes .../texmf-dist/source/latex/datatool/datatool.dtx | 166 +++++++++++++++++---- .../texmf-dist/source/latex/datatool/datatool.ins | 2 +- Master/texmf-dist/tex/latex/datatool/databar.sty | 2 +- Master/texmf-dist/tex/latex/datatool/databib.sty | 2 +- Master/texmf-dist/tex/latex/datatool/datagidx.sty | 2 +- Master/texmf-dist/tex/latex/datatool/datapie.sty | 2 +- Master/texmf-dist/tex/latex/datatool/dataplot.sty | 2 +- .../tex/latex/datatool/datatool-base.sty | 64 +++++++- .../texmf-dist/tex/latex/datatool/datatool-fp.sty | 2 +- .../tex/latex/datatool/datatool-pgfmath.sty | 2 +- Master/texmf-dist/tex/latex/datatool/datatool.sty | 2 +- Master/texmf-dist/tex/latex/datatool/person.sty | 2 +- 30 files changed, 351 insertions(+), 48 deletions(-) diff --git a/Master/texmf-dist/doc/latex/datatool/CHANGES b/Master/texmf-dist/doc/latex/datatool/CHANGES index 04a54a35c0e..32497e242ed 100644 --- a/Master/texmf-dist/doc/latex/datatool/CHANGES +++ b/Master/texmf-dist/doc/latex/datatool/CHANGES @@ -1,3 +1,20 @@ +v2.27: + + * datatool-base: + + - reverted \dtl@insertinto to pre v2.26. (The bug fixes + in v2.26 caused backward-compatibility issues, which + break glossaries.sty's "noidx" code.) + + - new commands \dtlsortlist and \dtlinsertinto (which + are how \dtl@sortlist and \dtl@insertinto ought to + behave but don't). The internal commands are left for + backward compatibility. The user commands should be + used for the correct function. (Added new section in + the user manual documenting these new commands.) + + - new command \edtlinsertinto + v2.26: * datatool-base: diff --git a/Master/texmf-dist/doc/latex/datatool/README b/Master/texmf-dist/doc/latex/datatool/README index 6bacaf67ec8..cbae48e774e 100644 --- a/Master/texmf-dist/doc/latex/datatool/README +++ b/Master/texmf-dist/doc/latex/datatool/README @@ -1,6 +1,6 @@ -LaTeX Bundle : datatool v2.26 +LaTeX Bundle : datatool v2.27 -Last Modified : 2016-07-20 +Last Modified : 2016-07-28 Author : Nicola Talbot diff --git a/Master/texmf-dist/doc/latex/datatool/datatool-code.pdf b/Master/texmf-dist/doc/latex/datatool/datatool-code.pdf index 23dcc06d45e..b2a076679c4 100644 Binary files a/Master/texmf-dist/doc/latex/datatool/datatool-code.pdf and b/Master/texmf-dist/doc/latex/datatool/datatool-code.pdf differ diff --git a/Master/texmf-dist/doc/latex/datatool/datatool-user.pdf b/Master/texmf-dist/doc/latex/datatool/datatool-user.pdf index 333429d92cd..53f1d9cedf4 100644 Binary files a/Master/texmf-dist/doc/latex/datatool/datatool-user.pdf and b/Master/texmf-dist/doc/latex/datatool/datatool-user.pdf differ diff --git a/Master/texmf-dist/doc/latex/datatool/datatool-user.tex b/Master/texmf-dist/doc/latex/datatool/datatool-user.tex index 140fe1f1282..b5e65957904 100644 --- a/Master/texmf-dist/doc/latex/datatool/datatool-user.tex +++ b/Master/texmf-dist/doc/latex/datatool/datatool-user.tex @@ -102,11 +102,11 @@ \MakeShortVerb{"} - \title{User Manual for datatool bundle version~2.26} + \title{User Manual for datatool bundle version~2.27} \author{Nicola L.C. Talbot\\ \url{http://www.dickimaw-books.com/}} - \date{2016-07-20} + \date{2016-07-28} \maketitle \pagenumbering{roman} @@ -121,7 +121,7 @@ The \styfmt{datatool} bundle comes with the following documentation: \item[\url{datatool-code.pdf}] Advanced users wishing to know more about the inner workings of all the packages provided in the \styfmt{datatool} bundle should - read \qt{Documented Code for datatool v2.26} + read \qt{Documented Code for datatool v2.27} \item[INSTALL] Installation instructions. @@ -2043,6 +2043,122 @@ produces: \renewcommand*{\DTLinitialhyphen}{}\relax \DTLinitials{Marie-{\'E}lise del~Rosario}} +\chapter{Comma-Separated Lists} +\label{sec:csvlists} + +The \styfmt{datatool-base} package automatically loads the +\sty{etoolbox} package, so you can use any of the list +commands provided by that package, or you can use +the internal command \cs{@for} provided by the \LaTeX\ kernel +(and modified by the \sty{xfor} package, which is also loaded +by \styfmt{datatool-base}). + +In addition to those commands, \styfmt{datatool-base} +provides some commands that deal with comma-separated lists. +Note that this just refers to a control sequence that stores +a list of elements separated by commands, for example: +\begin{verbatim} +\newcommand{\mylist}{elephant,ant,zebra,duck} +\end{verbatim} +This isn't the same as comma-separated files, which is dealt +with in \sectionref{sec:databases}. + +\begin{definition}[\DescribeMacro\dtlsortlist] +\cs{dtlsortlist}\marg{list cs}\marg{criteria cs} +\end{definition} +This sorts the comma-separated list stored in the command +\meta{list cs} according to the criteria command +\meta{criteria cs}. The criteria command must take three arguments: +a count register in which to store the result, element \meta{A} and +element \meta{B}. If \meta{A} is considered less that \meta{B}, the +count register should be set to $-1$, if \meta{A} and \meta{B} are +considered the same then the count register should be set to 0, +and if \meta{A} is considered greater than \meta{B}, then the count +register should be set to 1. + +The \styfmt{datatool-base} package provides some predefined +criteria commands: +\begin{definition}[\DescribeMacro\dtlcompare] +\cs{dtlcompare}\marg{register}\marg{A}\marg{B} +\end{definition} +A case-sensitive comparison. +\begin{definition}[\DescribeMacro\dtlicompare] +\cs{dtlicompare}\marg{register}\marg{A}\marg{B} +\end{definition} +A case-insensitive comparison. +\begin{definition}[\DescribeMacro\dtlwordindexcompare] +\cs{dtlwordindexcompare}\marg{register}\marg{A}\marg{B} +\end{definition} +English word-ordering comparison for indexes, as described by +the Oxford Style Manual. +\begin{definition}[\DescribeMacro\dtlletterindexcompare] +\cs{dtlletterindexcompare}\marg{register}\marg{A}\marg{B} +\end{definition} +English letter-ordering comparison for indexes. +Those last two commands are described in more detail in +\sectionref{sec:sort}. + +For example: +\begin{verbatim} +\newcommand{\mylist}{elephant,ant,zebra,duck} +\dtlsortlist{\mylist}{\dtlcompare} + +\mylist. +\end{verbatim} +produces: +\begin{display} +\newcommand{\mylist}{elephant,ant,zebra,duck} +\dtlsortlist{\mylist}{\dtlcompare} + +\mylist. +\end{display} + +If you are building up a list, you may prefer to use: +\begin{definition}[\DescribeMacro\dtlinsertinto] +\cs{dtlinsertinto}\marg{element}\marg{list cs}\marg{criteria cs} +\end{definition} +which inserts \meta{element} into the list stored in the +command \meta{list cs} according to the criteria command +\meta{criteria cs}. This is more efficient than first building the +list and then sorting it. + +For example: +\begin{verbatim} +\newcommand{\mylist}{} +\dtlinsertinto{elephant}{\mylist}{\dtlcompare} +\dtlinsertinto{ant}{\mylist}{\dtlcompare} +\dtlinsertinto{zebra}{\mylist}{\dtlcompare} +\dtlinsertinto{duck}{\mylist}{\dtlcompare} + +\mylist. +\end{verbatim} +produces: +\begin{display} +\newcommand{\mylist}{} +\dtlinsertinto{elephant}{\mylist}{\dtlcompare} +\dtlinsertinto{ant}{\mylist}{\dtlcompare} +\dtlinsertinto{zebra}{\mylist}{\dtlcompare} +\dtlinsertinto{duck}{\mylist}{\dtlcompare} + +\mylist. +\end{display} + +Note that \cs{dtlinsertinto} doesn't expand \meta{element}. +If the element is stored in a command, you need to +expand it first. For example: +\begin{verbatim} +\newcommand*{\element}{ant} +\expandafter\dtlinsertinto\expandafter{\element}{\mylist}{\dtlcompare} +\end{verbatim} + +To ensure that the element is first fully expanded, you can +use: +\begin{definition}[\DescribeMacro\edtlinsertinto] +\cs{edtlinsertinto}\marg{element}\marg{list cs}\marg{criteria cs} +\end{definition} +This will fully expand \meta{element} using \cs{protected@edef} +and then use \cs{dtlinsertinto}. + \chapter{Databases} \label{sec:databases} @@ -4522,9 +4638,9 @@ the data type for a given key, and uses this to determine whether an alphabetical or numerical sort is required. The final argument \meta{handler} is the command used for the -comparisons. These handlers are described in more detail on -page~\pageref*{src:dtlcompare} of the documented code (datatool-code.pdf). The following -handlers are provided: +comparisons and is the same as the \meta{criteria cs} command +used by \cs{dtlsortlist} and \cs{dtlinsertinto}, described +in \sectionref{sec:csvlists}. The predefined handlers are: \begin{description} \item[\ics{dtlcompare}] A case-sensitive comparison. \item[\ics{dtlicompare}] A case-insensitive comparison. diff --git a/Master/texmf-dist/doc/latex/datatool/samples/sample-autokeys.pdf b/Master/texmf-dist/doc/latex/datatool/samples/sample-autokeys.pdf index d9f777bafbd..066a7dacb8d 100644 Binary files a/Master/texmf-dist/doc/latex/datatool/samples/sample-autokeys.pdf and b/Master/texmf-dist/doc/latex/datatool/samples/sample-autokeys.pdf differ diff --git a/Master/texmf-dist/doc/latex/datatool/samples/sample-barchart.pdf b/Master/texmf-dist/doc/latex/datatool/samples/sample-barchart.pdf index 85179d1124e..8cfeed51c1f 100644 Binary files a/Master/texmf-dist/doc/latex/datatool/samples/sample-barchart.pdf and b/Master/texmf-dist/doc/latex/datatool/samples/sample-barchart.pdf differ diff --git a/Master/texmf-dist/doc/latex/datatool/samples/sample-datatooltk.pdf b/Master/texmf-dist/doc/latex/datatool/samples/sample-datatooltk.pdf index adff6e25539..3edcf8f6282 100644 Binary files a/Master/texmf-dist/doc/latex/datatool/samples/sample-datatooltk.pdf and b/Master/texmf-dist/doc/latex/datatool/samples/sample-datatooltk.pdf differ diff --git a/Master/texmf-dist/doc/latex/datatool/samples/sample-dict.pdf b/Master/texmf-dist/doc/latex/datatool/samples/sample-dict.pdf index 538a773ff66..0b3c08d8ea7 100644 Binary files a/Master/texmf-dist/doc/latex/datatool/samples/sample-dict.pdf and b/Master/texmf-dist/doc/latex/datatool/samples/sample-dict.pdf differ diff --git a/Master/texmf-dist/doc/latex/datatool/samples/sample-europecv-bib.pdf b/Master/texmf-dist/doc/latex/datatool/samples/sample-europecv-bib.pdf index 87b21abc0f0..354505fe7c0 100644 Binary files a/Master/texmf-dist/doc/latex/datatool/samples/sample-europecv-bib.pdf and b/Master/texmf-dist/doc/latex/datatool/samples/sample-europecv-bib.pdf differ diff --git a/Master/texmf-dist/doc/latex/datatool/samples/sample-gidx.pdf b/Master/texmf-dist/doc/latex/datatool/samples/sample-gidx.pdf index 0e6b95463da..3f45901c694 100644 Binary files a/Master/texmf-dist/doc/latex/datatool/samples/sample-gidx.pdf and b/Master/texmf-dist/doc/latex/datatool/samples/sample-gidx.pdf differ diff --git a/Master/texmf-dist/doc/latex/datatool/samples/sample-glossary.pdf b/Master/texmf-dist/doc/latex/datatool/samples/sample-glossary.pdf index 06296653448..d2969ec2cb5 100644 Binary files a/Master/texmf-dist/doc/latex/datatool/samples/sample-glossary.pdf and b/Master/texmf-dist/doc/latex/datatool/samples/sample-glossary.pdf differ diff --git a/Master/texmf-dist/doc/latex/datatool/samples/sample-index.pdf b/Master/texmf-dist/doc/latex/datatool/samples/sample-index.pdf index 2d5038a0451..35e8bdd2a68 100644 Binary files a/Master/texmf-dist/doc/latex/datatool/samples/sample-index.pdf and b/Master/texmf-dist/doc/latex/datatool/samples/sample-index.pdf differ diff --git a/Master/texmf-dist/doc/latex/datatool/samples/sample-mail-merge.pdf b/Master/texmf-dist/doc/latex/datatool/samples/sample-mail-merge.pdf index 7a68eae9c54..b6966f6ef30 100644 Binary files a/Master/texmf-dist/doc/latex/datatool/samples/sample-mail-merge.pdf and b/Master/texmf-dist/doc/latex/datatool/samples/sample-mail-merge.pdf differ diff --git a/Master/texmf-dist/doc/latex/datatool/samples/sample-piechart.pdf b/Master/texmf-dist/doc/latex/datatool/samples/sample-piechart.pdf index 50ffa2b949b..6bd3622cb87 100644 Binary files a/Master/texmf-dist/doc/latex/datatool/samples/sample-piechart.pdf and b/Master/texmf-dist/doc/latex/datatool/samples/sample-piechart.pdf differ diff --git a/Master/texmf-dist/doc/latex/datatool/samples/sample-sort.pdf b/Master/texmf-dist/doc/latex/datatool/samples/sample-sort.pdf index 6fbc9418403..5a2b5fc0220 100644 Binary files a/Master/texmf-dist/doc/latex/datatool/samples/sample-sort.pdf and b/Master/texmf-dist/doc/latex/datatool/samples/sample-sort.pdf differ diff --git a/Master/texmf-dist/doc/latex/datatool/samples/sample-student-scores.pdf b/Master/texmf-dist/doc/latex/datatool/samples/sample-student-scores.pdf index 773f0373444..7e6084b0e8d 100644 Binary files a/Master/texmf-dist/doc/latex/datatool/samples/sample-student-scores.pdf and b/Master/texmf-dist/doc/latex/datatool/samples/sample-student-scores.pdf differ diff --git a/Master/texmf-dist/doc/latex/datatool/samples/sample-two-per-row.pdf b/Master/texmf-dist/doc/latex/datatool/samples/sample-two-per-row.pdf index 2490cf7f781..8d2778b94c4 100644 Binary files a/Master/texmf-dist/doc/latex/datatool/samples/sample-two-per-row.pdf and b/Master/texmf-dist/doc/latex/datatool/samples/sample-two-per-row.pdf differ diff --git a/Master/texmf-dist/source/latex/datatool/datatool.dtx b/Master/texmf-dist/source/latex/datatool/datatool.dtx index 54027354f9f..d84c46f7ee0 100644 --- a/Master/texmf-dist/source/latex/datatool/datatool.dtx +++ b/Master/texmf-dist/source/latex/datatool/datatool.dtx @@ -2,11 +2,8 @@ % datatool.dtx generated using makedtx version 1.1 (c) Nicola Talbot % Command line args: % -macrocode "databib\.bst" -% -codetitle "" % -comment "databib\.bst" -% -author "Nicola Talbot" % -setambles "databib\.bst=>\nopreamble\nopostamble" -% -doc "datatool-manual.tex" % -src "datatool-base.sty\Z=>datatool-base.sty" % -src "datatool-fp.sty\Z=>datatool-fp.sty" % -src "datatool-pgfmath.sty\Z=>datatool-pgfmath.sty" @@ -18,8 +15,11 @@ % -src "dataplot.sty\Z=>dataplot.sty" % -src "person.sty\Z=>person.sty" % -src "databib.bst\Z=>databib.bst" +% -doc "datatool-manual.tex" +% -author "Nicola Talbot" +% -codetitle "" % datatool -% Created on 2016/7/20 19:31 +% Created on 2016/7/28 15:09 %\fi %\iffalse %<*package> @@ -53,6 +53,8 @@ datatool-manual.tex is a stub file used by makedtx to create datatool.dtx \fi +\DeleteShortVerb{|} + \usepackage{datatool} \usepackage[utf8]{inputenc} \usepackage[T1]{fontenc} @@ -66,7 +68,7 @@ datatool.dtx \doxitem{Counter}{counter}{counters} \doxitem{Option}{option}{package options} -\CheckSum{23620} +\CheckSum{23739} \RecordChanges \PageIndex @@ -79,11 +81,11 @@ datatool.dtx %\fi %\MakeShortVerb{"} % -%\title{Documented Code for datatool v2.26} +%\title{Documented Code for datatool v2.27} %\author{Nicola L. C. Talbot\\ %\url{http://www.dickimaw-books.com/}} % -%\date{2016-07-20} +%\date{2016-07-28} %\maketitle % %\pagenumbering{roman} @@ -119,7 +121,7 @@ datatool.dtx % % \begin{macrocode} \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{datatool-base}[2016/07/20 v2.26 (NLCT)] +\ProvidesPackage{datatool-base}[2016/07/28 v2.27 (NLCT)] % \end{macrocode} % Required packages: % \begin{macrocode} @@ -533,6 +535,19 @@ datatool.dtx % \end{macrocode} %\end{macro} % +%I made a bit of a blunder here. \cs{dtl@sortlist} was supposed to +%work with commands like \cs{dtlcompare}, but those commands require +%three arguments, the first being the register in which to store the +%result. This contradicts the requirements of \cs{dtl@sortlist}. The +%\qt{bug fix} in v2.26 fixed it to work with commands like +%\cs{dtlcompare}, but that broke the documented design (which breaks +%the \sty{glossaries} package). The other problem is that +%\cs{dtl@insertinto} actually sorts in the reverse order. +%So v2.27 undoes the change from v2.26 to ensure backward +%compatibility and provides an alternative user-level command +%\cs{dltsortlist}, that's designed to work with the three-argument +%handler commands like \cs{dtlcompare}. +% %\begin{macro}{\dtl@sortlist} %\begin{definition} % \cs{dtl@sortlist}\marg{list}\marg{criteria cmd} @@ -540,8 +555,8 @@ datatool.dtx % Performs an insertion sort on \meta{list}, where \meta{criteria cmd} % is a macro which takes two arguments \meta{a} and \meta{b}. % \meta{criteria cmd} must set the count register \cs{dtl@sortresult} -% to either $-1$ (\meta{a} less than \meta{b}), 0 (\meta{a} is -% equal to \meta{b}) or 1 (\meta{a} is greater than \meta{b}.) +% to either $-1$ (\meta{b} less than \meta{a}), 0 (\meta{a} is +% equal to \meta{b}) or 1 (\meta{b} is greater than \meta{a}.) % \begin{macrocode} \newcommand{\dtl@sortlist}[2]{% \def\@dtl@sortedlist{}% @@ -562,6 +577,94 @@ datatool.dtx % according to the criteria given by \meta{criteria cmd} (see above.) % \begin{macrocode} \newcommand{\dtl@insertinto}[3]{% + \def\@dtl@newsortedlist{}% + \@dtl@insertdonefalse + \@for\dtl@srtelement:=#2\do{% + \if@dtl@insertdone + \expandafter\toks@\expandafter{\dtl@srtelement}% + \edef\@dtl@newstuff{{\the\toks@}}% + \else +% \end{macrocode} +%\changes{2.26}{2016-07-20}{fixed bug (missing \cs{dtl@sortresult})} +%\changes{2.27}{2016-07-28}{undone the incorrect change in v2.26} +% \begin{macrocode} + \expandafter#3\expandafter{\dtl@srtelement}{#1}% +% \end{macrocode} +%\changes{2.26}{2016-07-20}{fixed bug (incorrect inequality sign)} +%\changes{2.27}{2016-07-28}{undone the incorrect change in v2.26} +% \begin{macrocode} + \ifnum\dtl@sortresult<0\relax + \expandafter\toks@\expandafter{\dtl@srtelement}% + \@dtl@toks{#1}% + \edef\@dtl@newstuff{{\the\@dtl@toks},{\the\toks@}}% + \@dtl@insertdonetrue + \else + \expandafter\toks@\expandafter{\dtl@srtelement}% + \edef\@dtl@newstuff{{\the\toks@}}% + \fi + \fi + \ifdefempty{\@dtl@newsortedlist}% + {% + \expandafter\toks@\expandafter{\@dtl@newstuff}% + \edef\@dtl@newsortedlist{\the\toks@}% + }% + {% + \expandafter\toks@\expandafter{\@dtl@newsortedlist}% + \expandafter\@dtl@toks\expandafter{\@dtl@newstuff}% + \edef\@dtl@newsortedlist{\the\toks@,\the\@dtl@toks}% + }% + \@endforfalse + }% + \ifdefempty{\@dtl@newsortedlist}% + {% + \@dtl@toks{#1}% + \edef\@dtl@newsortedlist{{\the\@dtl@toks}}% + }% + {% + \if@dtl@insertdone + \else + \expandafter\toks@\expandafter{\@dtl@newsortedlist}% + \@dtl@toks{#1}% + \edef\@dtl@newsortedlist{\the\toks@,{\the\@dtl@toks}}% + \fi + }% + \global\let#2=\@dtl@newsortedlist +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\dtlsortlist} +%\changes{2.27}{2016/07/28}{new} +%\begin{definition} +% \cs{dtlsortlist}\marg{list}\marg{criteria cmd} +%\end{definition} +% As \cs{dtl@sortlist} but the \meta{criteria} command must take +% three arguments. +% \begin{macrocode} +\newcommand{\dtlsortlist}[2]{% +\def\@dtl@sortedlist{}% +\@for\@dtl@currentrow:=#1\do{% +\expandafter\dtlinsertinto\expandafter + {\@dtl@currentrow}{\@dtl@sortedlist}{#2}% +\@endforfalse}% +\let#1=\@dtl@sortedlist +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\dtlinsertinto} +%\changes{2.27}{2016/07/28}{new} +%\begin{definition} +% \cs{dtlinsertinto}\marg{element}\marg{sorted-list}\marg{criteria cmd} +%\end{definition} +% Inserts \meta{element} into the sorted list \meta{sorted-list} +% according to the criteria given by \meta{criteria cmd}, which +% should be a command that takes three arguments +% \marg{reg}\marg{A}\marg{B}, where \meta{reg} is a count register +% in which to store the result, \meta{A} is the first element and +% \meta{B} is the second element to compare. +% \begin{macrocode} +\newcommand{\dtlinsertinto}[3]{% \def\@dtl@newsortedlist{}% \@dtl@insertdonefalse \@for\dtl@srtelement:=#2\do{% @@ -575,14 +678,8 @@ datatool.dtx \if@dtl@insertdone \let\@dtl@newstuff\dtl@srtelement \else -% \end{macrocode} -%\changes{2.26}{2016-07-20}{fixed bug (missing \cs{dtl@sortresult})} -% \begin{macrocode} - \expandafter#3\expandafter\dtl@sortresult\expandafter - {\dtl@srtelement}{#1}% -% \end{macrocode} -%\changes{2.26}{2016-07-20}{fixed bug (incorrect inequality sign)} -% \begin{macrocode} + \expandafter#3\expandafter\dtl@sortresult + \expandafter{\dtl@srtelement}{#1}% \ifnum\dtl@sortresult>0\relax \DTLifSubString{#1}{,}% {% @@ -641,6 +738,21 @@ datatool.dtx } % \end{macrocode} %\end{macro} +% +%\begin{macro}{\edtlinsertinto} +%\changes{2.27}{2016/07/28}{new} +%\begin{definition} +% \cs{edtlinsertinto}\marg{element}\marg{sorted-list}\marg{criteria cmd} +%\end{definition} +%First expands \meta{element} before inserting into the list. +% \begin{macrocode} +\newcommand*{\edtlinsertinto}[3]{% + \protected@edef\dtl@srtelement{#1}% + \expandafter\dtlinsertinto\expandafter{\dtl@srtelement}{#2}{#3}% +} +% \end{macrocode} +%\end{macro} +% %\begin{macro}{\if@dtl@insertdone} % Define conditional to indicate whether the new entry has % been inserted into the sorted list. @@ -5795,7 +5907,7 @@ datatool.dtx % Definitions of fixed-point commands that use the \sty{fp} package. % \begin{macrocode} \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{datatool-fp}[2016/07/20 v2.26 (NLCT)] +\ProvidesPackage{datatool-fp}[2016/07/28 v2.27 (NLCT)] % \end{macrocode} % Required packages: % \begin{macrocode} @@ -6084,7 +6196,7 @@ datatool.dtx % Definitions of fixed-point commands that use the \sty{pgfmath} package. % \begin{macrocode} \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{datatool-pgfmath}[2016/07/20 v2.26 (NLCT)] +\ProvidesPackage{datatool-pgfmath}[2016/07/28 v2.27 (NLCT)] % \end{macrocode} % Required packages: % \begin{macrocode} @@ -6425,7 +6537,7 @@ datatool.dtx %\section{Package Declaration} % \begin{macrocode} \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{datatool}[2016/07/20 v2.26 (NLCT)] +\ProvidesPackage{datatool}[2016/07/28 v2.27 (NLCT)] % \end{macrocode} % Load required packages: % \begin{macrocode} @@ -14018,7 +14130,7 @@ datatool.dtx % Declare package: % \begin{macrocode} \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{datagidx}[2016/07/20 v2.26 (NLCT)] +\ProvidesPackage{datagidx}[2016/07/28 v2.27 (NLCT)] % \end{macrocode} % Required packages: % \begin{macrocode} @@ -19927,7 +20039,7 @@ datatool.dtx %\section{Package Declaration} % \begin{macrocode} \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{databib}[2016/07/20 v2.26 (NLCT)] +\ProvidesPackage{databib}[2016/07/28 v2.27 (NLCT)] % \end{macrocode} % Load required packages: % \begin{macrocode} @@ -22850,7 +22962,7 @@ already exists}{}}}} % Declare package: % \begin{macrocode} \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{databar}[2016/07/20 v2.26 (NLCT)] +\ProvidesPackage{databar}[2016/07/28 v2.27 (NLCT)] % \end{macrocode} % Require \sty{xkeyval} package % \begin{macrocode} @@ -24157,7 +24269,7 @@ already exists}{}}}} % Declare package: % \begin{macrocode} \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{datapie}[2016/07/20 v2.26 (NLCT)] +\ProvidesPackage{datapie}[2016/07/28 v2.27 (NLCT)] % \end{macrocode} % Require \sty{xkeyval} package % \begin{macrocode} @@ -24959,7 +25071,7 @@ already exists}{}}}} % Declare package: % \begin{macrocode} \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{dataplot}[2016/07/20 v2.26 (NLCT)] +\ProvidesPackage{dataplot}[2016/07/28 v2.27 (NLCT)] % \end{macrocode} % Required packages % \begin{macrocode} @@ -26581,7 +26693,7 @@ east,southeast,south,southwest,west,northwest}[northeast]{% % Package identification: % \begin{macrocode} \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{person}[2016/07/20 v2.26 (NLCT)] +\ProvidesPackage{person}[2016/07/28 v2.27 (NLCT)] % \end{macrocode} % Requires the \sty{ifthen} package. % \begin{macrocode} diff --git a/Master/texmf-dist/source/latex/datatool/datatool.ins b/Master/texmf-dist/source/latex/datatool/datatool.ins index 97634e61b8d..e8f57a2928b 100644 --- a/Master/texmf-dist/source/latex/datatool/datatool.ins +++ b/Master/texmf-dist/source/latex/datatool/datatool.ins @@ -1,4 +1,4 @@ -% datatool.ins generated using makedtx version 1.1 2016/7/20 19:31 +% datatool.ins generated using makedtx version 1.1 2016/7/28 15:09 \input docstrip \preamble diff --git a/Master/texmf-dist/tex/latex/datatool/databar.sty b/Master/texmf-dist/tex/latex/datatool/databar.sty index d0ef470fe52..4ac4e031e06 100644 --- a/Master/texmf-dist/tex/latex/datatool/databar.sty +++ b/Master/texmf-dist/tex/latex/datatool/databar.sty @@ -39,7 +39,7 @@ %% Grave accent \` Left brace \{ Vertical bar \| %% Right brace \} Tilde \~} \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{databar}[2016/07/20 v2.26 (NLCT)] +\ProvidesPackage{databar}[2016/07/28 v2.27 (NLCT)] \RequirePackage{xkeyval} \RequirePackage{dataplot} \newif\ifDTLcolorbarchart diff --git a/Master/texmf-dist/tex/latex/datatool/databib.sty b/Master/texmf-dist/tex/latex/datatool/databib.sty index 925c7c0fa84..528f05adbdd 100644 --- a/Master/texmf-dist/tex/latex/datatool/databib.sty +++ b/Master/texmf-dist/tex/latex/datatool/databib.sty @@ -39,7 +39,7 @@ %% Grave accent \` Left brace \{ Vertical bar \| %% Right brace \} Tilde \~} \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{databib}[2016/07/20 v2.26 (NLCT)] +\ProvidesPackage{databib}[2016/07/28 v2.27 (NLCT)] \RequirePackage{datatool} \newcommand*{\dtlbib@style}{plain} \define@choicekey{databib.sty}{style}{plain,abbrv,alpha}{% diff --git a/Master/texmf-dist/tex/latex/datatool/datagidx.sty b/Master/texmf-dist/tex/latex/datatool/datagidx.sty index eb7ba8b128e..8818f59428e 100644 --- a/Master/texmf-dist/tex/latex/datatool/datagidx.sty +++ b/Master/texmf-dist/tex/latex/datatool/datagidx.sty @@ -39,7 +39,7 @@ %% Grave accent \` Left brace \{ Vertical bar \| %% Right brace \} Tilde \~} \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{datagidx}[2016/07/20 v2.26 (NLCT)] +\ProvidesPackage{datagidx}[2016/07/28 v2.27 (NLCT)] \RequirePackage{datatool} \RequirePackage{etoolbox} \RequirePackage{xkeyval} diff --git a/Master/texmf-dist/tex/latex/datatool/datapie.sty b/Master/texmf-dist/tex/latex/datatool/datapie.sty index 169941de50c..59bd0ac835f 100644 --- a/Master/texmf-dist/tex/latex/datatool/datapie.sty +++ b/Master/texmf-dist/tex/latex/datatool/datapie.sty @@ -39,7 +39,7 @@ %% Grave accent \` Left brace \{ Vertical bar \| %% Right brace \} Tilde \~} \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{datapie}[2016/07/20 v2.26 (NLCT)] +\ProvidesPackage{datapie}[2016/07/28 v2.27 (NLCT)] \RequirePackage{xkeyval} \newif\ifDTLcolorpiechart \DTLcolorpiecharttrue diff --git a/Master/texmf-dist/tex/latex/datatool/dataplot.sty b/Master/texmf-dist/tex/latex/datatool/dataplot.sty index d1ed4d28549..eaa2d1b8ab8 100644 --- a/Master/texmf-dist/tex/latex/datatool/dataplot.sty +++ b/Master/texmf-dist/tex/latex/datatool/dataplot.sty @@ -39,7 +39,7 @@ %% Grave accent \` Left brace \{ Vertical bar \| %% Right brace \} Tilde \~} \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{dataplot}[2016/07/20 v2.26 (NLCT)] +\ProvidesPackage{dataplot}[2016/07/28 v2.27 (NLCT)] \RequirePackage{xkeyval} \RequirePackage{tikz} \RequirePackage{datatool} diff --git a/Master/texmf-dist/tex/latex/datatool/datatool-base.sty b/Master/texmf-dist/tex/latex/datatool/datatool-base.sty index 753f02324a0..8ab7d44a1a4 100644 --- a/Master/texmf-dist/tex/latex/datatool/datatool-base.sty +++ b/Master/texmf-dist/tex/latex/datatool/datatool-base.sty @@ -39,7 +39,7 @@ %% Grave accent \` Left brace \{ Vertical bar \| %% Right brace \} Tilde \~} \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{datatool-base}[2016/07/20 v2.26 (NLCT)] +\ProvidesPackage{datatool-base}[2016/07/28 v2.27 (NLCT)] \RequirePackage{etoolbox} \RequirePackage{amsmath} \RequirePackage{xkeyval} @@ -232,6 +232,60 @@ \let#1=\@dtl@sortedlist } \newcommand{\dtl@insertinto}[3]{% + \def\@dtl@newsortedlist{}% + \@dtl@insertdonefalse + \@for\dtl@srtelement:=#2\do{% + \if@dtl@insertdone + \expandafter\toks@\expandafter{\dtl@srtelement}% + \edef\@dtl@newstuff{{\the\toks@}}% + \else + \expandafter#3\expandafter{\dtl@srtelement}{#1}% + \ifnum\dtl@sortresult<0\relax + \expandafter\toks@\expandafter{\dtl@srtelement}% + \@dtl@toks{#1}% + \edef\@dtl@newstuff{{\the\@dtl@toks},{\the\toks@}}% + \@dtl@insertdonetrue + \else + \expandafter\toks@\expandafter{\dtl@srtelement}% + \edef\@dtl@newstuff{{\the\toks@}}% + \fi + \fi + \ifdefempty{\@dtl@newsortedlist}% + {% + \expandafter\toks@\expandafter{\@dtl@newstuff}% + \edef\@dtl@newsortedlist{\the\toks@}% + }% + {% + \expandafter\toks@\expandafter{\@dtl@newsortedlist}% + \expandafter\@dtl@toks\expandafter{\@dtl@newstuff}% + \edef\@dtl@newsortedlist{\the\toks@,\the\@dtl@toks}% + }% + \@endforfalse + }% + \ifdefempty{\@dtl@newsortedlist}% + {% + \@dtl@toks{#1}% + \edef\@dtl@newsortedlist{{\the\@dtl@toks}}% + }% + {% + \if@dtl@insertdone + \else + \expandafter\toks@\expandafter{\@dtl@newsortedlist}% + \@dtl@toks{#1}% + \edef\@dtl@newsortedlist{\the\toks@,{\the\@dtl@toks}}% + \fi + }% + \global\let#2=\@dtl@newsortedlist +} +\newcommand{\dtlsortlist}[2]{% +\def\@dtl@sortedlist{}% +\@for\@dtl@currentrow:=#1\do{% +\expandafter\dtlinsertinto\expandafter + {\@dtl@currentrow}{\@dtl@sortedlist}{#2}% +\@endforfalse}% +\let#1=\@dtl@sortedlist +} +\newcommand{\dtlinsertinto}[3]{% \def\@dtl@newsortedlist{}% \@dtl@insertdonefalse \@for\dtl@srtelement:=#2\do{% @@ -245,8 +299,8 @@ \if@dtl@insertdone \let\@dtl@newstuff\dtl@srtelement \else - \expandafter#3\expandafter\dtl@sortresult\expandafter - {\dtl@srtelement}{#1}% + \expandafter#3\expandafter\dtl@sortresult + \expandafter{\dtl@srtelement}{#1}% \ifnum\dtl@sortresult>0\relax \DTLifSubString{#1}{,}% {% @@ -303,6 +357,10 @@ }% \global\let#2=\@dtl@newsortedlist } +\newcommand*{\edtlinsertinto}[3]{% + \protected@edef\dtl@srtelement{#1}% + \expandafter\dtlinsertinto\expandafter{\dtl@srtelement}{#2}{#3}% +} \newif\if@dtl@insertdone \newcount\dtl@sortresult \newcommand{\toks@gput@right@cx}[2]{% diff --git a/Master/texmf-dist/tex/latex/datatool/datatool-fp.sty b/Master/texmf-dist/tex/latex/datatool/datatool-fp.sty index 4280f6bf182..665b0cb2f90 100644 --- a/Master/texmf-dist/tex/latex/datatool/datatool-fp.sty +++ b/Master/texmf-dist/tex/latex/datatool/datatool-fp.sty @@ -39,7 +39,7 @@ %% Grave accent \` Left brace \{ Vertical bar \| %% Right brace \} Tilde \~} \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{datatool-fp}[2016/07/20 v2.26 (NLCT)] +\ProvidesPackage{datatool-fp}[2016/07/28 v2.27 (NLCT)] \RequirePackage{xkeyval} \RequirePackage{fp} \RequirePackage{datatool-base} diff --git a/Master/texmf-dist/tex/latex/datatool/datatool-pgfmath.sty b/Master/texmf-dist/tex/latex/datatool/datatool-pgfmath.sty index f588ec69d68..2c46893738e 100644 --- a/Master/texmf-dist/tex/latex/datatool/datatool-pgfmath.sty +++ b/Master/texmf-dist/tex/latex/datatool/datatool-pgfmath.sty @@ -39,7 +39,7 @@ %% Grave accent \` Left brace \{ Vertical bar \| %% Right brace \} Tilde \~} \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{datatool-pgfmath}[2016/07/20 v2.26 (NLCT)] +\ProvidesPackage{datatool-pgfmath}[2016/07/28 v2.27 (NLCT)] \RequirePackage{xkeyval} \RequirePackage{pgfrcs,pgfkeys,pgfmath} \ProcessOptionsX diff --git a/Master/texmf-dist/tex/latex/datatool/datatool.sty b/Master/texmf-dist/tex/latex/datatool/datatool.sty index 19c0d34e553..688f37a7312 100644 --- a/Master/texmf-dist/tex/latex/datatool/datatool.sty +++ b/Master/texmf-dist/tex/latex/datatool/datatool.sty @@ -39,7 +39,7 @@ %% Grave accent \` Left brace \{ Vertical bar \| %% Right brace \} Tilde \~} \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{datatool}[2016/07/20 v2.26 (NLCT)] +\ProvidesPackage{datatool}[2016/07/28 v2.27 (NLCT)] \RequirePackage{xkeyval} \RequirePackage{ifthen} \RequirePackage{xfor} diff --git a/Master/texmf-dist/tex/latex/datatool/person.sty b/Master/texmf-dist/tex/latex/datatool/person.sty index 95605050413..ec001c01820 100644 --- a/Master/texmf-dist/tex/latex/datatool/person.sty +++ b/Master/texmf-dist/tex/latex/datatool/person.sty @@ -39,7 +39,7 @@ %% Grave accent \` Left brace \{ Vertical bar \| %% Right brace \} Tilde \~} \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{person}[2016/07/20 v2.26 (NLCT)] +\ProvidesPackage{person}[2016/07/28 v2.27 (NLCT)] \RequirePackage{ifthen} \RequirePackage{datatool} \newcounter{people} -- cgit v1.2.3