texlive[74461] Master/texmf-dist: datatool (5mar25)
commits+karl at tug.org
commits+karl at tug.org
Wed Mar 5 22:33:51 CET 2025
Revision: 74461
https://tug.org/svn/texlive?view=revision&revision=74461
Author: karl
Date: 2025-03-05 22:33:51 +0100 (Wed, 05 Mar 2025)
Log Message:
-----------
datatool (5mar25)
Modified Paths:
--------------
trunk/Master/texmf-dist/doc/latex/datatool/CHANGES
trunk/Master/texmf-dist/doc/latex/datatool/README.md
trunk/Master/texmf-dist/doc/latex/datatool/datatool-code.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example001.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example001.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example001.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example002.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example002.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example002.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example003.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example003.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example003.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example004.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example004.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example004.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example005.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example005.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example005.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example006.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example006.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example006.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example007.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example007.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example007.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example008.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example008.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example008.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example009.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example009.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example009.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example010.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example010.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example010.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example011.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example011.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example011.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example012.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example012.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example012.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example013.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example013.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example013.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example014.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example014.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example014.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example015.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example015.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example015.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example016.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example016.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example016.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example017.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example017.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example017.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example018.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example018.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example018.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example019.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example019.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example019.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example020.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example020.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example020.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example021.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example021.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example021.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example022.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example022.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example022.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example023.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example023.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example023.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example024.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example024.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example024.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example025.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example025.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example025.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example026.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example026.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example026.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example027.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example027.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example027.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example028.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example028.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example028.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example029.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example029.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example029.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example030.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example030.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example030.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example031.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example031.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example031.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example032.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example032.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example032.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example033.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example033.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example033.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example034.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example034.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example034.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example035.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example035.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example035.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example036.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example036.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example036.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example037.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example037.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example037.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example038.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example038.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example038.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example039.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example039.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example039.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example040.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example040.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example040.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example041.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example041.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example041.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example042.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example042.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example042.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example043.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example043.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example043.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example044.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example044.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example044.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example045.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example045.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example045.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example046.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example046.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example046.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example047.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example047.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example047.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example048.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example048.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example048.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example049.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example049.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example049.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example050.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example050.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example050.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example051.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example051.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example051.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example052.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example052.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example052.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example053.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example053.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example053.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example054.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example054.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example054.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example055.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example055.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example055.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example056.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example056.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example056.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example057.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example057.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example057.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example058.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example058.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example058.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example059.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example059.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example059.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example060.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example060.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example060.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example061.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example061.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example061.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example062.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example062.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example062.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example063.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example063.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example063.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example064.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example064.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example064.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example065.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example065.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example065.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example066.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example066.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example066.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example067.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example067.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example067.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example068.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example068.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example068.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example069.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example069.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example069.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example070.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example070.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example070.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example071.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example071.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example071.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example072.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example072.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example072.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example073.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example073.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example073.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example074.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example074.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example074.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example075.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example075.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example075.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example076.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example076.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example076.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example077.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example077.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example077.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example078.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example078.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example078.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example079.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example079.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example079.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example080.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example080.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example080.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example081.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example081.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example081.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example082.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example082.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example082.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example083.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example083.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example083.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example084.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example084.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example084.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example085.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example085.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example085.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example086.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example086.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example086.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example087.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example087.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example087.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example088.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example088.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example088.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example089.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example089.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example089.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example090.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example090.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example090.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example091.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example091.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example091.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example092.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example092.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example092.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example093.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example093.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example093.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example094.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example094.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example094.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example095.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example095.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example095.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example096.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example096.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example096.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example097.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example097.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example097.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example098.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example098.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example098.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example099.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example099.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example099.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example100.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example100.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example100.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example101.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example101.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example101.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example102.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example102.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example102.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example103.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example103.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example103.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example104.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example104.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example104.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example105.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example105.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example105.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example106.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example106.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example106.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example107.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example107.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example107.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example108.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example108.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example108.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example109.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example109.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example109.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example110.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example110.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example110.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example111.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example111.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example111.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example112.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example112.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example112.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example113.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example113.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example113.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example114.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example114.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example114.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example115.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example115.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example115.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example116.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example116.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example116.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example117.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example117.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example117.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example118.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example118.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example118.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example119.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example119.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example119.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example120.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example120.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example120.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example121.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example121.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example121.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example122.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example122.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example122.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example123.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example123.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example123.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example124.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example124.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example124.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example125.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example125.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example125.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example126.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example126.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example126.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example127.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example127.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example127.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example128.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example128.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example128.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example129.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example129.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example129.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example130.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example130.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example130.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example131.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example131.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example131.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example132.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example132.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example132.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example133.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example133.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example133.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example134.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example134.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example134.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example135.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example135.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example135.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example136.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example136.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example136.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example137.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example137.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example137.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example138.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example138.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example138.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example139.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example139.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example139.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example140.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example140.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example140.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example141.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example141.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example141.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example142.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example142.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example142.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example143.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example143.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example143.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example144.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example144.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example144.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example145.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example145.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example145.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example146.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example146.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example146.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example147.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example147.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example147.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example148.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example148.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example148.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example149.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example149.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example149.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example150.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example150.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example150.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example151.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example151.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example151.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example152.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example152.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example152.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example153.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example153.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example153.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example154.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example154.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example154.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example155.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example155.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example155.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example156.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example156.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example156.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example157.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example157.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example157.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example158.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example158.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example158.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example159.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example159.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example159.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example160.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example160.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example160.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example161.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example161.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example161.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example162.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example162.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example162.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example163.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example163.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example163.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example164.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example164.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example164.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example165.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example165.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example165.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example166.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example166.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example166.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example167.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example167.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example167.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example168.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example168.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example168.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example169.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example169.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example169.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example170.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example170.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example170.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example171.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example171.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example171.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example172.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example172.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example172.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example173.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example173.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example173.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example174.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example174.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example174.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example175.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example175.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example175.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example176.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example176.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example176.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example177.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example177.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example177.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example178.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example178.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example178.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example179.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example179.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example179.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example180.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example180.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example180.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example181.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example181.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example181.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example182.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example182.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example182.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example183-page1.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example183.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example183.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example184.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example184.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example184.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example185.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example185.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example185.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example186-page1.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example186-page2.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example186.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example186.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example187.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example187.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example187.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example188.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example188.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example188.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example189-page1.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example189-page2.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example189-page3.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example189-page4.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example189.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example189.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example190.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example190.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example190.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example191.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example191.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example191.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example192.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example192.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example192.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example193.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example193.png
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example193.tex
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user.html
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user.pdf
trunk/Master/texmf-dist/doc/latex/datatool/datatool-user.tex
trunk/Master/texmf-dist/doc/latex/datatool/samples/sample-autokeys.pdf
trunk/Master/texmf-dist/doc/latex/datatool/samples/sample-barchart.pdf
trunk/Master/texmf-dist/doc/latex/datatool/samples/sample-datatooltk.pdf
trunk/Master/texmf-dist/doc/latex/datatool/samples/sample-dict.pdf
trunk/Master/texmf-dist/doc/latex/datatool/samples/sample-gidx.pdf
trunk/Master/texmf-dist/doc/latex/datatool/samples/sample-glossary.pdf
trunk/Master/texmf-dist/doc/latex/datatool/samples/sample-index.pdf
trunk/Master/texmf-dist/doc/latex/datatool/samples/sample-mail-merge.pdf
trunk/Master/texmf-dist/doc/latex/datatool/samples/sample-piechart.pdf
trunk/Master/texmf-dist/doc/latex/datatool/samples/sample-sort.pdf
trunk/Master/texmf-dist/doc/latex/datatool/samples/sample-student-scores.pdf
trunk/Master/texmf-dist/doc/latex/datatool/samples/sample-two-per-row.pdf
trunk/Master/texmf-dist/source/latex/datatool/datatool.dtx
trunk/Master/texmf-dist/source/latex/datatool/datatool.ins
trunk/Master/texmf-dist/tex/latex/datatool/databar.sty
trunk/Master/texmf-dist/tex/latex/datatool/databib.sty
trunk/Master/texmf-dist/tex/latex/datatool/datagidx.sty
trunk/Master/texmf-dist/tex/latex/datatool/datapie.sty
trunk/Master/texmf-dist/tex/latex/datatool/dataplot.sty
trunk/Master/texmf-dist/tex/latex/datatool/datatool-base.sty
trunk/Master/texmf-dist/tex/latex/datatool/datatool-fp.sty
trunk/Master/texmf-dist/tex/latex/datatool/datatool-pgfmath.sty
trunk/Master/texmf-dist/tex/latex/datatool/datatool.sty
trunk/Master/texmf-dist/tex/latex/datatool/person.sty
Added Paths:
-----------
trunk/Master/texmf-dist/tex/latex/datatool/databar-2019-09-27.sty
trunk/Master/texmf-dist/tex/latex/datatool/databib-2019-09-27.sty
trunk/Master/texmf-dist/tex/latex/datatool/datagidx-2019-09-27.sty
trunk/Master/texmf-dist/tex/latex/datatool/datapie-2019-09-27.sty
trunk/Master/texmf-dist/tex/latex/datatool/dataplot-2019-09-27.sty
trunk/Master/texmf-dist/tex/latex/datatool/datatool-2019-09-27.sty
trunk/Master/texmf-dist/tex/latex/datatool/datatool-base-2019-09-27.sty
trunk/Master/texmf-dist/tex/latex/datatool/datatool-fp-2019-09-27.sty
trunk/Master/texmf-dist/tex/latex/datatool/datatool-fp.def
trunk/Master/texmf-dist/tex/latex/datatool/datatool-l3fp.def
trunk/Master/texmf-dist/tex/latex/datatool/datatool-latin1.ldf
trunk/Master/texmf-dist/tex/latex/datatool/datatool-lua.def
trunk/Master/texmf-dist/tex/latex/datatool/datatool-pgfmath-2019-09-27.sty
trunk/Master/texmf-dist/tex/latex/datatool/datatool-pgfmath.def
trunk/Master/texmf-dist/tex/latex/datatool/datatool-undetermined.ldf
trunk/Master/texmf-dist/tex/latex/datatool/datatool-utf8.ldf
trunk/Master/texmf-dist/tex/latex/datatool/person-2019-09-27.sty
Modified: trunk/Master/texmf-dist/doc/latex/datatool/CHANGES
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/CHANGES 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/CHANGES 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,3 +1,7 @@
+v3.0.1 (2025-03-05):
+
+Adding missing ldf, def and rollback files to datatool.tds.zip
+
v3.0 (2025-03-03):
Major new released. Rollback to v2.32 provided.
Modified: trunk/Master/texmf-dist/doc/latex/datatool/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/README.md 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/README.md 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,6 +1,6 @@
# datatool — Tools to load and manipulate data
-Version 3.0 (2025-03-03)
+Version 3.0.1 (2025-03-05)
Author: Nicola L. C. Talbot ([dickimaw-books.com](https://www.dickimaw-books.com/))
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-code.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example001.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example001.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example001.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example001.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example001.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 1 Regular Expressions with LaTeX3
% Label: "ex:l3regex"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example002.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example002.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example002.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example002.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example002.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 2 Comma-Separated Lists with LaTeX3
% Label: "ex:l3clist"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example003.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example003.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example003.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example003.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example003.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 3 Performing Calculations with LaTeX3
% Label: "ex:l3fptodec"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example004.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example004.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example004.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example004.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example004.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 4 Performing Calculations with LuaLaTeX
% Label: "ex:directlua"
% arara: lualatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example005.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example005.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example005.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example005.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example005.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 5 Datum Control Sequences
% Label: "ex:datumcs"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example006.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example006.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example006.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example006.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example006.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 6 Datum Tests for Equality
% Label: "ex:datumifeq"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example007.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example007.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example007.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example007.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example007.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 7 Datum Control Sequences to Floating Point Variables
% Label: "ex:datumfp"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example008.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example008.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example008.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example008.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example008.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 8 Localisation Support (en-CA)
% Label: "ex:enCA"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example009.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example009.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example009.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example009.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example009.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 9 Localisation Support (fr-CA)
% Label: "ex:frCA"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example010.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example010.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example010.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example010.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example010.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 10 Icelandic Alphabetic
% Label: "ex:icelandic"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example011.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example011.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example011.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example011.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example011.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 11 IJ-Initial Support
% Label: "ex:ijinitial"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example012.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example012.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example012.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example012.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example012.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 12 Icelandic Sorting and Letter Groups
% Label: "ex:icelandiclettergroup"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example013.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example013.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example013.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example013.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example013.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 13 Test for Integer Value
% Label: "ex:ifint"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example014.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example014.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example014.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example014.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example014.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 14 Test for Real Value
% Label: "ex:ifreal"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example015.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example015.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example015.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example015.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example015.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 15 Test for Currency
% Label: "ex:ifcurr"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example016.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example016.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example016.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example016.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example016.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 16 Test for Numerical
% Label: "ex:ifnum"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example017.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example017.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example017.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example017.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example017.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 17 Test for Strings
% Label: "ex:ifstr"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example018.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example018.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example018.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example018.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example018.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 18 Test for Data Type
% Label: "ex:ifcasedata"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example019.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example019.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example019.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example019.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example019.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 19 Testing if an Element is in a Comma-Separated List
% Label: "ex:DTLifinlist"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example020.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example020.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example020.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example020.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example020.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 20 String Equality Tests
% Label: "ex:streq"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example021.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example021.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example021.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example021.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example021.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 21 String Less Than
% Label: "ex:strlt"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example022.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example022.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example022.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example022.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example022.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 22 String Greater Than
% Label: "ex:strgt"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example023.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example023.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example023.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example023.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example023.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 23 String Between Tests
% Label: "ex:strcmp"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example024.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example024.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example024.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example024.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example024.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 24 Substring Tests
% Label: "ex:substrif"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example025.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example025.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example025.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example025.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example025.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 25 Prefix Tests
% Label: "ex:prefixif"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example026.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example026.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example026.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example026.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example026.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 26 Suffix Tests
% Label: "ex:suffixif"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example027.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example027.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example027.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example027.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example027.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 27 All Upper/Lower Case Tests
% Label: "ex:ifallcase"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example028.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example028.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example028.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example028.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example028.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 28 Numerical Comparisons (Parsed)
% Label: "ex:DTLifnum"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example029.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example029.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example029.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example029.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example029.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 29 Conditionals (l3fp)
% Label: "ex:l3fpif"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example030.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example030.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example030.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example030.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example030.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 30 Conditionals (lua)
% Label: "ex:luaif"
% arara: lualatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example031.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example031.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example031.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example031.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example031.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 31 Conditionals (fp)
% Label: "ex:fpif"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example032.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example032.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example032.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example032.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example032.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 32 Conditionals (pgfmath)
% Label: "ex:pgfmathif"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example033.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example033.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example033.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example033.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example033.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 33 Numerical/String Comparisons
% Label: "ex:DTLif"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example034.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example034.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example034.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example034.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example034.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 34 Data Type Conditionals for use with ifthen
% Label: "ex:DTListype"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example035.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example035.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example035.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example035.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example035.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 35 Order Conditionals for use with ifthen
% Label: "ex:DTLiscmp"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example036.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example036.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example036.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example036.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example036.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 36 Substring Conditionals for use with ifthen
% Label: "ex:DTLissubstr"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example037.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example037.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example037.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example037.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example037.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 37 Decimal Functions (l3fp)
% Label: "ex:l3fpcalc"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example038.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example038.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example038.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example038.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example038.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 38 Decimal Functions (lua)
% Label: "ex:luacalc"
% arara: lualatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example039.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example039.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example039.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example039.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example039.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 39 Decimal Functions (fp)
% Label: "ex:fpcalc"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example040.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example040.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example040.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example040.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example040.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 40 Decimal Functions (pgfmath)
% Label: "ex:pgfmathcalc"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example041.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example041.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example041.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example041.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example041.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 41 Formatting and Parsing Currency (No Region)
% Label: "ex:noregioncurrency"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example042.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example042.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example042.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example042.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example042.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 42 Currency Formats (GB Region)
% Label: "ex:regionGBcurrency"
% arara: xelatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example043.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example043.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example043.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example043.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example043.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 43 Currency Formats (GB and IE Regions)
% Label: "ex:multiregioncurrency"
% arara: xelatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example044.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example044.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example044.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example044.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example044.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 44 Defining a Currency
% Label: "ex:defcurr"
% arara: xelatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example045.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example045.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example045.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example045.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example045.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 45 Parsing Dates and Times
% Label: "ex:parsetemporal"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example046.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example046.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example046.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example046.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example046.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 46 Parsing Dates and Times and Reformatting
% Label: "ex:parsetemporalreformat"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example047.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example047.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example047.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example047.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example047.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 47 String Substitution and Splitting
% Label: "ex:subsplitstr"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example048.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example048.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example048.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example048.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example048.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 48 Name or Phrase Initials
% Label: "ex:initials"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example049.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example049.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example049.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example049.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example049.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 49 Word Initial Letter with UTF-8
% Label: "ex:initialsutf8"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example050.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example050.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example050.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example050.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example050.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 50 Word Initial Commands
% Label: "ex:initialscs"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example051.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example051.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example051.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example051.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example051.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 51 CSV List Argument Expansion
% Label: "ex:incsvlist"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example052.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example052.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example052.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example052.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example052.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 52 Formatting CSV Lists
% Label: "ex:formatlist"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example053.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example053.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example053.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example053.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example053.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 53 Elements of a CSV List
% Label: "ex:listelements"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example054.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example054.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example054.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example054.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example054.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 54 Appending, Prepending and Inserting List Elements
% Label: "ex:listinsert"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example055.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example055.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example055.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example055.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example055.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 55 Sorting Lists with \dtlsortlist (Case vs No Case)
% Label: "ex:sortlistcharcase"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example056.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example056.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example056.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example056.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example056.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 56 Sorting Lists with \dtlsortlist (Letter vs Word)
% Label: "ex:sortlistwordletter"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example057.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example057.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example057.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example057.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example057.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 57 Sorting Lists with \dtlsortlist (comma and parenthetical markers)
% Label: "ex:sortlistcommas"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example058.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example058.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example058.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example058.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example058.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 58 Sorting Lists with \DTLsortwordlist (comma and parenthetical markers)
% Label: "ex:wordsortlistcommas"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example059.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example059.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example059.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example059.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example059.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 59 Sorting Lists with \dtlsortlist and UTF-8
% Label: "ex:sortlistutf8"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example060.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example060.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example060.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example060.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example060.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 60 Sorting Lists with \DTLsortwordlist and UTF-8 and No Localisation Support
% Label: "ex:sortwordlistutf8"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example061.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example061.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example061.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example061.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example061.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 61 Sorting Lists with \DTLsortwordlist and UTF-8 and Localisation Support
% Label: "ex:sortlistutf8locale"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example062.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example062.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example062.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example062.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example062.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 62 Sort Word Hook (Roman Numerals)
% Label: "ex:sortwordhook"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example063.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example063.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example063.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example063.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example063.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 63 New Value Expansion
% Label: "ex:newvalueexpand"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example064.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example064.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example064.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example064.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example064.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 64 Trimming New Values
% Label: "ex:newvaluetrim"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example065.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example065.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example065.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example065.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example065.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 65 Creating and Displaying a Database with \\DTLaction
% Label: "ex:actions"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example066.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example066.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example066.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example066.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example066.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 66 Adding New Columns Using Actions
% Label: "ex:addcolaction"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example067.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example067.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example067.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example067.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example067.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 67 Select row action
% Label: "ex:selectrow"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example068.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example068.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example068.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example068.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example068.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 68 Row aggregate actions
% Label: "ex:rowaggregates"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example069.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example069.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example069.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example069.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example069.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 69 Automatically Formatting Values Calculated by Actions
% Label: "ex:actiondatum"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example070.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example070.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example070.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example070.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example070.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 70 Creating a New Database with a Label
% Label: "ex:newdb"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example071.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example071.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example071.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example071.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example071.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 71 Column with No Values
% Label: "ex:nullcol"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example072.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example072.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example072.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example072.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example072.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 72 Display Data with Custom Alignment
% Label: "ex:displaydbalignspecs"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example073.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example073.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example073.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example073.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example073.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 73 Display Data in a Table Omitting Columns
% Label: "ex:displaydbomit"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example074.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example074.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example074.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example074.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example074.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 74 Display Data in a Table with Named Columns
% Label: "ex:displaydbonly"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example075.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example075.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example075.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example075.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example075.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 75 Display Data in a Table with Filtered Rows
% Label: "ex:displaydbcond"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example076.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example076.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example076.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example076.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example076.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 76 Referencing Rows from Displayed Data
% Label: "ex:displayrowref"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example077.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example077.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example077.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example077.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example077.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 77 Inserting a Column at the Start of Displayed Data
% Label: "ex:displayinsertcol"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example078.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example078.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example078.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example078.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example078.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 78 Display Data in a Table with an Extra Column
% Label: "ex:displaydbpostrow"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example079.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example079.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example079.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example079.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example079.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 79 Adjusting the Item Hook to Calculate Totals and Show Negative Numbers in Red
% Label: "ex:balancesheet"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example080.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example080.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example080.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example080.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example080.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 80 Display Two Database Rows Per Tabular Row
% Label: "ex:displaydbrepeatcols"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example081.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example081.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example081.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example081.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example081.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 81 Display Two Database Rows Per Tabular Row (Top to Bottom)
% Label: "ex:displaydbttb"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example082.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example082.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example082.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example082.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example082.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 82 Display Data in a Stripy Table
% Label: "ex:displaydbstripytable"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example083.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example083.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example083.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example083.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example083.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 83 Display Stripy Two Database Rows Per Tabular Row
% Label: "ex:displaydbstripyrepeatcols"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example084.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example084.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example084.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example084.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example084.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 84 Display Two Fields in One Column
% Label: "ex:displaydbmergefields"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example085.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example085.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example085.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example085.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example085.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 85 Displaying Data with Calculations, Filtering and Row Highlighting
% Label: "ex:displaydbaverages"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example086.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example086.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example086.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example086.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example086.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 86 Iterating Over Rows with \DTLmapdata and DTLenvmapdata
% Label: "ex:mapdata"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example087.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example087.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example087.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example087.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example087.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 87 Iterating Over Rows with \DTLmapdata to Append a Column
% Label: "ex:mapdataedit"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example088.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example088.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example088.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example088.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example088.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 88 Display Data in a Table with \DTLforeach
% Label: "ex:foreachdisplay"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example089.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example089.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example089.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example089.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example089.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 89 Using \DTLforeach to Display a Stripy Table
% Label: "ex:foreachstripy"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example090.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example090.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example090.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example090.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example090.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 90 Displaying Data with Row Numbers Using \DTLforeach
% Label: "ex:foreachinsertcol"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example091.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example091.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example091.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example091.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example091.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 91 Using \DTLforeach to Display Data in a Table with a Running Total Column
% Label: "ex:foreachextracol"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example092.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example092.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example092.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example092.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example092.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 92 Editing a Database with \DTLforeach
% Label: "ex:foreachedit"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example093.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example093.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example093.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example093.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example093.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 93 Loops and Alignment
% Label: "ex:constructtab"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example094.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example094.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example094.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example094.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example094.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 94 CSV Data Containing Empty Cells and Missing Final Cells
% Label: "ex:nullcsv"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example095.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example095.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example095.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example095.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example095.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 95 Constructed Data With Missing (Null) Values
% Label: "ex:nulldb"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example096.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example096.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example096.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example096.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example096.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 96 Display Data With Missing (Null) Values Shown as a Dash
% Label: "ex:displaydbnullmissing"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example097.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example097.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example097.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example097.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example097.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 97 Iterating Through Data with Empty or Missing Values
% Label: "ex:mapnullemptymissing"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example098.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example098.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example098.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example098.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example098.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 98 Editing a Row of Data
% Label: "ex:selectandeditrow"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example099.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example099.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example099.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example099.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example099.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 99 Sorting CSV Data Using \DTLsortdata by Organisation, Surname and Forename With No Replacements
% Label: "ex:sortcsvnorepl"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example100.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example100.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example100.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example100.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example100.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 100 Sorting CSV Data Using \DTLsortdata by Organisation, Surname and Forename With Replacements
% Label: "ex:sortcsvrepl"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example101.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example101.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example101.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example101.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example101.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 101 Sorting Data Using \DTLsortdata With Replacements (Null vs Empty)
% Label: "ex:sortdbrepl"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example102.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example102.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example102.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example102.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example102.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 102 Sorting CSV Data Using \DTLsortdata With Language Support
% Label: "ex:sortlocale"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example103.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example103.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example103.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example103.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example103.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 103 Sorting Data Using \DTLsortdata on Age then Surname (Empty or Null Values)
% Label: "ex:sortcsvage"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example104.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example104.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example104.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example104.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example104.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 104 Sorting Data Using \DTLsortdata on Age then Surname (No Empty Sort Values)
% Label: "ex:sortdbage"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example105.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example105.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example105.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example105.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example105.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 105 Sorting Data Using \DTLsortdata by Descending Numeric and Ascending String Values
% Label: "ex:sortmarksdes"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example106.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example106.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example106.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example106.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example106.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 106 Sorting CSV Data Using \dtlsort by Organisation, Surname and Forename With Replacements
% Label: "ex:dtlsortcsvrepl"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example107.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example107.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example107.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example107.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example107.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 107 Loading and Saving Data (Be Careful of Category Codes)
% Label: "ex:loadcustomers"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example108.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example108.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example108.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example108.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example108.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 108 Loading a TSV File
% Label: "ex:loadtsv"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example109.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example109.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example109.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example109.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example109.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 109 Automatically Reformatting Data While Loading a CSV file
% Label: "ex:auto-reformat-csv"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example110.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example110.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example110.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example110.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example110.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 110 Pie Chart
% Label: "ex:piechart"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example111.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example111.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example111.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example111.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example111.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 111 Pie Chart (Action `pie chart')
% Label: "ex:piechartaction"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example112.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example112.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example112.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example112.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example112.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 112 Pie Chart (Filtering)
% Label: "ex:piechartcondition"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example113.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example113.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example113.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example113.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example113.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 113 Separating Segments from a Pie Chart
% Label: "ex:piechartcutaway"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example114.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example114.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example114.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example114.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example114.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 114 Separating a Range of Segments from a Pie Chart
% Label: "ex:piechartcutaway2"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example115.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example115.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example115.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example115.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example115.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 115 Separating Individual Consecutive Segments from a Pie Chart
% Label: "ex:piechartcutaway3"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example116.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example116.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example116.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example116.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example116.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 116 Pie Chart (Inner and Outer Labels)
% Label: "ex:piechartlabels"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example117.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example117.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example117.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example117.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example117.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 117 Pie Chart (Labels Rotated)
% Label: "ex:piechartrotatelabels"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example118.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example118.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example118.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example118.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example118.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 118 Pie Chart (Percentage Rounding)
% Label: "ex:piechartpercentlabels"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example119.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example119.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example119.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example119.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example119.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 119 Pie Chart (Changing the Label Format)
% Label: "ex:piechartlabelfmt"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example120.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example120.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example120.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example120.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example120.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 120 Pie Chart (Changing and Referencing the Segment Colours)
% Label: "ex:piechartcolors"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example121.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example121.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example121.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example121.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example121.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 121 Vertical Bar Chart
% Label: "ex:barchartfruit"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example122.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example122.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example122.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example122.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example122.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 122 Vertical Bar Chart (Action `bar chart')
% Label: "ex:barchartfruitaction"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example123.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example123.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example123.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example123.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example123.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 123 Horizontal Bar Chart
% Label: "ex:barchartprofits"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example124.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example124.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example124.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example124.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example124.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 124 Multi Bar Chart
% Label: "ex:barchartmarks"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example125.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example125.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example125.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example125.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example125.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 125 Multi Bar Chart (Action `multibar chart')
% Label: "ex:barchartmarksaction"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example126.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example126.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example126.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example126.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example126.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 126 Bar Chart With Labels
% Label: "ex:barchartfruitlabels"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example127.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example127.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example127.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example127.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example127.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 127 Bar Chart With Labels (Action `bar chart')
% Label: "ex:barchartfruitactionlabels"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example128.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example128.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example128.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example128.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example128.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 128 Bar Chart (Filtering)
% Label: "ex:barchartcondition"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example129.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example129.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example129.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example129.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example129.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 129 Horizontal Bar Chart with Labels (Default Alignment)
% Label: "ex:barchartlabelsdefalign"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example130.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example130.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example130.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example130.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example130.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 130 Horizontal Bar Chart with Labels (lower-label-style=same)
% Label: "ex:barchartlabelsalignsame"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example131.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example131.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example131.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example131.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example131.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 131 Horizontal Bar Chart with Labels (lower-label-style=below)
% Label: "ex:barchartlabelsalignbelow"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example132.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example132.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example132.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example132.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example132.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 132 Horizontal Bar Chart with Labels (lower-label-style=above)
% Label: "ex:barchartlabelsalignabove"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example133.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example133.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example133.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example133.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example133.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 133 Horizontal Bar Chart with Upper Labels Over the Bars (negative upper-label-offset)
% Label: "ex:barchartupperlabelsalign"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example134.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example134.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example134.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example134.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example134.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 134 Multi Bar Chart With Group Labels
% Label: "ex:barchartgrouplabel"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example135.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example135.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example135.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example135.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example135.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 135 Bar Chart With Axes
% Label: "ex:barchartaxes"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example136.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example136.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example136.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example136.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example136.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 136 Bar Chart With Rotated Tick Labels
% Label: "ex:barchartrotateyticlabels"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example137.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example137.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example137.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example137.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example137.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 137 Bar Chart With a Limited Set of Custom Colours
% Label: "ex:barchartclearcols"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example138.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example138.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example138.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example138.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example138.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 138 Bar Chart Cycling through the Colour Set
% Label: "ex:barchartcyclecols"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example139.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example139.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example139.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example139.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example139.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 139 Single Colours for Positive and Negative Bars
% Label: "ex:barchartnegcol"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example140.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example140.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example140.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example140.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example140.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 140 Shaded Bar
% Label: "ex:barcharteverybarshading"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example141.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example141.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example141.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example141.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example141.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 141 Hook at Every Bar
% Label: "ex:barcharteverybarpts"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example142.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example142.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example142.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example142.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example142.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 142 Every Bar Hook (Filtering)
% Label: "ex:barcharteverybar"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example143.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example143.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example143.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example143.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example143.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 143 Bar Chart With a Legend
% Label: "ex:barchartlegend"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example144.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example144.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example144.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example144.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example144.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 144 Multi Bar Chart With a Legend
% Label: "ex:barchartgrouplegend"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example145.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example145.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example145.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example145.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example145.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 145 Scatter Plot (One Database)
% Label: "ex:growthscatter1"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example146.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example146.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example146.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example146.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example146.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 146 Scatter Plot (Two Databases)
% Label: "ex:growthscatter2"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example147.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example147.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example147.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example147.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example147.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 147 Scatter Plot (Action)
% Label: "ex:growthscatteraction"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example148.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example148.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example148.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example148.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example148.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 148 Scatter Plot (One Database, Two Sets of Data)
% Label: "ex:growthscatter4col"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example149.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example149.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example149.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example149.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example149.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 149 Scatter Plot (Two Databases, Two Sets of Data)
% Label: "ex:growthscatter4col2db"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example150.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example150.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example150.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example150.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example150.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 150 Scatter Plot (Two Databases, Multiple Sets of Data)
% Label: "ex:growthscatter6col2db"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example151.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example151.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example151.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example151.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example151.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 151 Scatter Plot With Mismatched X and Y Columns
% Label: "ex:growthscatter6col2db2x3y"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example152.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example152.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example152.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example152.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example152.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 152 Scatter Plot with Custom Legend Labels (One Database, Two Sets of Data)
% Label: "ex:growthscatter4col-legend"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example153.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example153.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example153.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example153.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example153.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 153 Scatter Plot with Custom and Default Legend Labels (One Database, Two Sets of Data)
% Label: "ex:growthscatter4col-legend2"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example154.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example154.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example154.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example154.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example154.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 154 Scatter Plot with an Omitted Legend Label (One Database, Two Sets of Data)
% Label: "ex:growthscatter4col-legend3"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example155.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example155.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example155.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example155.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example155.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 155 Scatter Plot (Two Databases with Name Map)
% Label: "ex:growthscatter2namemap"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example156.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example156.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example156.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example156.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example156.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 156 Scatter Plot with Legend Label Mappings (Two Databases, Multiple Sets of Data)
% Label: "ex:growthscatter6col2dbmap"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example157.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example157.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example157.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example157.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example157.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 157 Scatter Plot with Legend Label Mappings and Custom formatting (Two Databases, Multiple Sets of Data)
% Label: "ex:growthscatter6col2dbmapxy"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example158.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example158.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example158.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example158.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example158.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 158 Scatter Plot with Custom Legend Labels (Two Databases, Multiple Sets of Data)
% Label: "ex:growthscatter6col2dbmap2"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example159.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example159.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example159.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example159.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example159.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 159 Scatter Plot with Shifted Legend (Two Databases, Multiple Sets of Data)
% Label: "ex:growthscatter6col2dbmap2shiftlegend"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example160.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example160.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example160.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example160.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example160.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 160 Scatter Plot with Custom Legend (Two Databases, Multiple Sets of Data)
% Label: "ex:growthscatter6col2dbmap2customlegend"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example161.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example161.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example161.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example161.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example161.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 161 Line and Scatter Plot (Two Databases)
% Label: "ex:growthscatterboth"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example162.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example162.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example162.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example162.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example162.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 162 Scatter Plot with Custom Colours and Styles (Two Databases, Multiple Sets of Data)
% Label: "ex:growthscatter6col2dbstyles"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example163.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example163.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example163.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example163.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example163.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 163 Scatter Plot with the Same Line Colour for Each Stream in a Given Database (Two Databases, Multiple Sets of Data)
% Label: "ex:growthscatter6col2dbgroupstyles"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example164.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example164.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example164.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example164.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example164.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 164 Scatter Plot with Plot Marks Reset (Two Databases, Multiple Sets of Data)
% Label: "ex:growthscatter6col2dbresetstyles"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example165.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example165.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example165.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example165.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example165.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 165 Setting the Plot Bounds
% Label: "ex:plotbounds"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example166.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example166.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example166.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example166.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example166.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 166 Rounding the Tick Labels
% Label: "ex:plotround"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example167.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example167.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example167.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example167.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example167.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 167 Changing the Axis Style
% Label: "ex:plotaxisstyle"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example168.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example168.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example168.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example168.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example168.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 168 Grid
% Label: "ex:plotgrid"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example169.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example169.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example169.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example169.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example169.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 169 Custom Grid Lines
% Label: "ex:plotcustomgrid"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example170.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example170.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example170.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example170.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example170.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 170 Plot Encapsulated in a Box
% Label: "ex:plotbox"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example171.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example171.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example171.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example171.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example171.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 171 Plot Encapsulated in a Box Without Ticks
% Label: "ex:plotboxticksnone"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example172.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example172.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example172.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example172.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example172.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 172 Positive and Negative Axes
% Label: "ex:plotxy"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example173.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example173.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example173.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example173.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example173.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 173 Extending the Axes
% Label: "ex:plotxyextend"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example174.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example174.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example174.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example174.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example174.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 174 Changing the Tick Label Node Style
% Label: "ex:plotxynodestyle"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example175.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example175.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example175.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example175.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example175.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 175 Side Axes
% Label: "ex:plotxysideaxes"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example176.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example176.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example176.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example176.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example176.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 176 Side-Axes, Extended Axes and Boxed
% Label: "ex:plotboxextendedsideaxes"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example177.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example177.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example177.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example177.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example177.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 177 No Side-Axes, Extended Axes and Boxed
% Label: "ex:plotboxextendednosideaxes"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example178.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example178.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example178.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example178.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example178.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 178 Redefining the Start and End Hooks
% Label: "ex:plotxyhooks"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example179.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example179.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example179.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example179.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example179.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 179 Bibliography Sorted by Author
% Label: "ex:sortauthor"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example180.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example180.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example180.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example180.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example180.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 180 Tabulate Bib Data
% Label: "ex:bibtable"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example181.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example181.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example181.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example181.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example181.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 181 List of Publications Since a Given Year
% Label: "ex:bibsince"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example182.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example182.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example182.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example182.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example182.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 182 Five Most Recent Publications
% Label: "ex:topnbib"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example183-page1.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example183.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example183.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example183.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example183.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 183 Compact Bibliography
% Label: "ex:compactbib"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example184.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example184.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example184.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example184.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example184.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 184 Highlighting a given author
% Label: "ex:highlightauthor"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example185.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example185.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example185.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example185.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example185.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 185 Separate List of Journals and Conference Papers
% Label: "ex:jcbib"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example186-page1.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example186-page2.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example186.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example186.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example186.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example186.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 186 Multiple Bibliographies
% Label: "ex:multibib"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example187.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example187.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example187.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example187.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example187.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 187 Creating an Index
% Label: "ex:index"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example188.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example188.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example188.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example188.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example188.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 188 Creating a List of Abbreviations
% Label: "ex:abbrev"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example189-page1.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example189-page2.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example189-page3.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example189-page4.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example189.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example189.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example189.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example189.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 189 Mail Merging
% Label: "ex:mailmerge"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example190.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example190.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example190.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example190.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example190.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 190 Memorial Order of Service
% Label: "ex:memorial"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example191.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example191.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example191.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example191.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example191.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 191 Memorial Order of Service (Shortcuts)
% Label: "ex:memorial2"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example192.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example192.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example192.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example192.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example192.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 192 Baptism Order of Service
% Label: "ex:baptism"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example193.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example193.png
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example193.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example193.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user-examples/datatool-user-example193.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% This file is embedded in datatool-user.pdf version 3.0 2025-03-03
+% This file is embedded in datatool-user.pdf version 3.0.1 2025-03-05
% Example 193 Baptism Order of Service (Shortcuts and Localisation)
% Label: "ex:baptism2"
% arara: pdflatex
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user.html
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user.html 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user.html 2025-03-05 21:33:51 UTC (rev 74461)
@@ -5639,7 +5639,7 @@
Dickimaw Books<br>
-<a href="https://www.dickimaw-books.com/">dickimaw-books.com</a></div><!-- end of author --><div class="date">version 3.0 2025-03-03</div><!-- end of date --></header>
+<a href="https://www.dickimaw-books.com/">dickimaw-books.com</a></div><!-- end of author --><div class="date">version 3.0.1 2025-03-05</div><!-- end of date --></header>
<p>
<div class="information"><div class="informationtitle"><a href="#glo:sym.information"><span title="Information" class="icon">🛈</span></a></div><!-- end of informationtitle -->
</div><!-- end of information -->
@@ -5666,7 +5666,7 @@
<dd>
Advanced users wishing to know more about the inner workings of all the
packages provided in the <span class="styfmt">datatool</span> bundle should read
-<span class="qt">“Documented Code for datatool v3.0”</span>.
+<span class="qt">“Documented Code for datatool v3.0.1”</span>.
</dd>
<p>
@@ -9455,7 +9455,7 @@
<div class="resultbox"><div class="resultboxtitle"><a href="#glo:sym.result"><span title="Result" class="icon">🖺</span></a></div><!-- end of resultboxtitle -->
<a href="#ex:ijinitial-backref"><span title="Up" class="icon">⭱</span></a><a id="ex:ijinitial"></a>Example 11: IJ-Initial Support <a href="datatool-user-examples/datatool-user-example011.tex" class="icon"><span title="Download TeX File" class="icon">📥<sup>🖹</sup></span></a> <a href="datatool-user-examples/datatool-user-example011.pdf" class="icon"><span title="Download PDF" class="icon">📥<sup>🖺</sup></span></a>
<p>
-<object data="datatool-user-examples/datatool-user-example011.png" type="image/png" width="325" height="10">Example document demonstrating how IJ support can be
+<object data="datatool-user-examples/datatool-user-example011.png" type="image/png" width="312" height="10">Example document demonstrating how IJ support can be
added to commands that fetch an initial letter. Typically the
preamble code would be placed in a localisation file.</object>
</div><!-- end of resultbox -->
@@ -10674,7 +10674,7 @@
<div class="resultbox"><div class="resultboxtitle"><a href="#glo:sym.result"><span title="Result" class="icon">🖺</span></a></div><!-- end of resultboxtitle -->
<a href="#sec:strbetweenex"><span title="Up" class="icon">⭱</span></a><a id="ex:strcmp"></a>Example 23: String Between Tests <a href="datatool-user-examples/datatool-user-example023.tex" class="icon"><span title="Download TeX File" class="icon">📥<sup>🖹</sup></span></a> <a href="datatool-user-examples/datatool-user-example023.pdf" class="icon"><span title="Download PDF" class="icon">📥<sup>🖺</sup></span></a>
<p>
-<object data="datatool-user-examples/datatool-user-example023.png" type="image/png" width="347" height="57">Example document demonstrating string between comparison
+<object data="datatool-user-examples/datatool-user-example023.png" type="image/png" width="349" height="57">Example document demonstrating string between comparison
commands.</object>
</div><!-- end of resultbox -->
@@ -10863,7 +10863,7 @@
<div class="resultbox"><div class="resultboxtitle"><a href="#glo:sym.result"><span title="Result" class="icon">🖺</span></a></div><!-- end of resultboxtitle -->
<a href="#sec:ifallcaseex"><span title="Up" class="icon">⭱</span></a><a id="ex:ifallcase"></a>Example 27: All Upper/Lower Case Tests <a href="datatool-user-examples/datatool-user-example027.tex" class="icon"><span title="Download TeX File" class="icon">📥<sup>🖹</sup></span></a> <a href="datatool-user-examples/datatool-user-example027.pdf" class="icon"><span title="Download PDF" class="icon">📥<sup>🖺</sup></span></a>
<p>
-<object data="datatool-user-examples/datatool-user-example027.png" type="image/png" width="145" height="113">Example document demonstrating tests for all upper or
+<object data="datatool-user-examples/datatool-user-example027.png" type="image/png" width="166" height="113">Example document demonstrating tests for all upper or
lowercase.</object>
</div><!-- end of resultbox -->
@@ -11521,7 +11521,7 @@
<div class="resultbox"><div class="resultboxtitle"><a href="#glo:sym.result"><span title="Result" class="icon">🖺</span></a></div><!-- end of resultboxtitle -->
<a href="#sec:DTListypeex"><span title="Up" class="icon">⭱</span></a><a id="ex:DTListype"></a>Example 34: Data Type Conditionals for use with <span class="styfmt">ifthen</span> <a href="datatool-user-examples/datatool-user-example034.tex" class="icon"><span title="Download TeX File" class="icon">📥<sup>🖹</sup></span></a> <a href="datatool-user-examples/datatool-user-example034.pdf" class="icon"><span title="Download PDF" class="icon">📥<sup>🖺</sup></span></a>
<p>
-<object data="datatool-user-examples/datatool-user-example034.png" type="image/png" width="290" height="127">Example document demonstrating data type conditionals
+<object data="datatool-user-examples/datatool-user-example034.png" type="image/png" width="269" height="127">Example document demonstrating data type conditionals
for use in commands like <code class="cmd">\ifthenelse</code>.</object>
</div><!-- end of resultbox -->
@@ -15009,7 +15009,7 @@
<div class="resultbox"><div class="resultboxtitle"><a href="#glo:sym.result"><span title="Result" class="icon">🖺</span></a></div><!-- end of resultboxtitle -->
<a href="#ex:sortlistcharcase-backref"><span title="Up" class="icon">⭱</span></a><a id="ex:sortlistcharcase"></a>Example 55: Sorting Lists with <code class="cmd">\dtlsortlist</code> (Case vs No Case) <a href="datatool-user-examples/datatool-user-example055.tex" class="icon"><span title="Download TeX File" class="icon">📥<sup>🖹</sup></span></a> <a href="datatool-user-examples/datatool-user-example055.pdf" class="icon"><span title="Download PDF" class="icon">📥<sup>🖺</sup></span></a>
<p>
-<object data="datatool-user-examples/datatool-user-example055.png" type="image/png" width="353" height="26">Example document that sorts a comma-separated list
+<object data="datatool-user-examples/datatool-user-example055.png" type="image/png" width="370" height="26">Example document that sorts a comma-separated list
using <code class="cmd">\dtlsortlist</code> with the predefined case-sensitive and
case-insensitive character comparison macros.</object>
</div><!-- end of resultbox -->
@@ -15027,7 +15027,7 @@
<div class="resultbox"><div class="resultboxtitle"><a href="#glo:sym.result"><span title="Result" class="icon">🖺</span></a></div><!-- end of resultboxtitle -->
<a href="#ex:sortlistwordletter-backref"><span title="Up" class="icon">⭱</span></a><a id="ex:sortlistwordletter"></a>Example 56: Sorting Lists with <code class="cmd">\dtlsortlist</code> (Letter vs Word) <a href="datatool-user-examples/datatool-user-example056.tex" class="icon"><span title="Download TeX File" class="icon">📥<sup>🖹</sup></span></a> <a href="datatool-user-examples/datatool-user-example056.pdf" class="icon"><span title="Download PDF" class="icon">📥<sup>🖺</sup></span></a>
<p>
-<object data="datatool-user-examples/datatool-user-example056.png" type="image/png" width="305" height="26">Example document that sorts a comma-separated list
+<object data="datatool-user-examples/datatool-user-example056.png" type="image/png" width="324" height="26">Example document that sorts a comma-separated list
using <code class="cmd">\dtlsortlist</code> with the predefined word and letter comparison macros.</object>
</div><!-- end of resultbox -->
@@ -19864,7 +19864,7 @@
<div class="resultbox"><div class="resultboxtitle"><a href="#glo:sym.result"><span title="Result" class="icon">🖺</span></a></div><!-- end of resultboxtitle -->
<a href="#sec:displayrowref"><span title="Up" class="icon">⭱</span></a><a id="ex:displayrowref"></a>Example 76: Referencing Rows from Displayed Data <a href="datatool-user-examples/datatool-user-example076.tex" class="icon"><span title="Download TeX File" class="icon">📥<sup>🖹</sup></span></a> <a href="datatool-user-examples/datatool-user-example076.pdf" class="icon"><span title="Download PDF" class="icon">📥<sup>🖺</sup></span></a>
<p>
-<object data="datatool-user-examples/datatool-user-example076.png" type="image/png">An example document that loads data from a CSV file
+<object data="datatool-user-examples/datatool-user-example076.png" type="image/png" width="375" height="127">An example document that loads data from a CSV file
and references a row.</object>
</div><!-- end of resultbox -->
@@ -37056,7 +37056,7 @@
<div class="resultbox"><div class="resultboxtitle"><a href="#glo:sym.result"><span title="Result" class="icon">🖺</span></a></div><!-- end of resultboxtitle -->
<a href="#ex:abbrev-backref"><span title="Up" class="icon">⭱</span></a><a id="ex:abbrev"></a>Example 188: Creating a List of Abbreviations <a href="datatool-user-examples/datatool-user-example188.tex" class="icon"><span title="Download TeX File" class="icon">📥<sup>🖹</sup></span></a> <a href="datatool-user-examples/datatool-user-example188.pdf" class="icon"><span title="Download PDF" class="icon">📥<sup>🖺</sup></span></a>
<p>
-<object data="datatool-user-examples/datatool-user-example188.png" type="image/png" width="388" height="154">Example document demonstrating creating a list of
+<object data="datatool-user-examples/datatool-user-example188.png" type="image/png" width="388" height="151">Example document demonstrating creating a list of
abbreviations.</object>
</div><!-- end of resultbox -->
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/datatool-user.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/datatool/datatool-user.tex 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/doc/latex/datatool/datatool-user.tex 2025-03-05 21:33:51 UTC (rev 74461)
@@ -15507,10 +15507,10 @@
\versiondate
{
-3.0
+3.0.1
}
{
-2025-03-03
+2025-03-05
}
\title{The datatool Bundle: Databases and Data Manipulation}
@@ -15539,7 +15539,7 @@
\begin{itemdesc}
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 v3.0}.
+\qt{Documented Code for datatool v3.0.1}.
\end{itemdesc}
\itemtitle{\url{CHANGES}}
Modified: trunk/Master/texmf-dist/doc/latex/datatool/samples/sample-autokeys.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/samples/sample-barchart.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/samples/sample-datatooltk.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/samples/sample-dict.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/samples/sample-gidx.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/samples/sample-glossary.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/samples/sample-index.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/samples/sample-mail-merge.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/samples/sample-piechart.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/samples/sample-sort.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/samples/sample-student-scores.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/datatool/samples/sample-two-per-row.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/source/latex/datatool/datatool.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/datatool/datatool.dtx 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/source/latex/datatool/datatool.dtx 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,12 +1,7 @@
%\iffalse
% datatool.dtx generated using makedtx version 1.2 (c) Nicola Talbot
% Command line args:
-% -doc "datatool-manual.tex"
% -macrocode "databib\.bst"
-% -author "Nicola Talbot"
-% -codetitle ""
-% -comment "databib\.bst"
-% -setambles "databib\.bst=>\nopreamble\nopostamble"
% -src "datatool-base.sty\Z=>datatool-base.sty"
% -src "datatool-undetermined.ldf\Z=>datatool-undetermined.ldf"
% -src "datatool-(utf8|latin1).ldf\Z=>datatool-\1.ldf"
@@ -24,9 +19,14 @@
% -src "dataplot.sty\Z=>dataplot.sty"
% -src "person.sty\Z=>person.sty"
% -src "databib.bst\Z=>databib.bst"
-% -src "(*-2019-09-27\.sty)\Z=>\1"
+% -src "(.*-2019-09-27.sty\Z)=>\1"
+% -setambles "databib\.bst=>\nopreamble\nopostamble"
+% -doc "datatool-manual.tex"
+% -author "Nicola Talbot"
+% -codetitle ""
+% -comment "databib\.bst"
% datatool
-% Created on 2025/3/3 16:09
+% Created on 2025/3/5 16:10
%\fi
%\iffalse
%<*package>
@@ -61,7 +61,7 @@
\documentclass{article}
\usepackage{doc}
-\CheckSum{37542}
+\CheckSum{61756}
\RecordChanges
\PageIndex
@@ -129,11 +129,11 @@
%\DeleteShortVerb{|}
%\MakeShortVerb{"}
%
-%\title{Documented Code for datatool v3.0}
+%\title{Documented Code for datatool v3.0.1}
%\author{Nicola L. C. Talbot\\
%\url{http://www.dickimaw-books.com/}}
%
-%\date{2025-03-03}
+%\date{2025-03-05}
%\maketitle
%
%\section{Introduction}
@@ -171,11 +171,11 @@
% Rollback releases:
% \begin{macrocode}
\DeclareRelease{v2.32}{2019-09-27}{datatool-base-2019-09-27.sty}
-\DeclareCurrentRelease{v3.0}{2025-03-03}
+\DeclareCurrentRelease{v3.0.1}{2025-03-05}
% \end{macrocode}
% Declare package:
% \begin{macrocode}
-\ProvidesPackage{datatool-base}[2025/03/03 v3.0 (NLCT)]
+\ProvidesPackage{datatool-base}[2025/03/05 v3.0.1 (NLCT)]
% \end{macrocode}
% Required packages:
% \begin{macrocode}
@@ -17288,7 +17288,7 @@
% Minimal support for undetermined language.
%\changes{3.0}{2025-03-03}{new}
% \begin{macrocode}
-\TrackLangProvidesResource{undetermined}[2025/03/03 v3.0]
+\TrackLangProvidesResource{undetermined}[2025/03/05 v3.0.1]
% \end{macrocode}
% Provide hook to customized:
% \begin{macrocode}
@@ -17318,7 +17318,7 @@
% ISO-8859-1 (Latin-1) strings.
% \begin{macrocode}
\NeedsTeXFormat{LaTeX2e}
-\ProvidesFile{datatool-latin1.ldf}[2025/03/03 v3.0 (NLCT)]
+\ProvidesFile{datatool-latin1.ldf}[2025/03/05 v3.0.1 (NLCT)]
\ExplSyntaxOn
\datatool_set_currencysign_from_charcode:ne
{ cent } { "A2 }
@@ -17348,7 +17348,7 @@
%\changes{3.0}{2025-03-03}{new}
% \begin{macrocode}
\NeedsTeXFormat{LaTeX2e}
-\ProvidesFile{datatool-utf8.ldf}[2025/03/03 v3.0 (NLCT)]
+\ProvidesFile{datatool-utf8.ldf}[2025/03/05 v3.0.1 (NLCT)]
\ExplSyntaxOn
% \end{macrocode}
%Common numeric and currency formatting symbols.
@@ -17414,7 +17414,7 @@
%\changes{3.0}{2025-03-03}{new}
% \begin{macrocode}
\NeedsTeXFormat{LaTeX2e}
-\ProvidesFile{datatool-l3fp.def}[2025/03/03 v3.0 (NLCT)]
+\ProvidesFile{datatool-l3fp.def}[2025/03/05 v3.0.1 (NLCT)]
% \end{macrocode}
%
%This file provides commands that use l3fp interfaces.
@@ -17872,7 +17872,7 @@
%\changes{3.0}{2025-03-03}{new}
% \begin{macrocode}
\NeedsTeXFormat{LaTeX2e}
-\ProvidesFile{datatool-lua.def}[2025/03/03 v3.0 (NLCT)]
+\ProvidesFile{datatool-lua.def}[2025/03/05 v3.0.1 (NLCT)]
% \end{macrocode}
%
%This file provides commands that use \cs{directlua}.
@@ -18308,7 +18308,7 @@
% Provided for backward-compatibility.
% \begin{macrocode}
\NeedsTeXFormat{LaTeX2e}
-\ProvidesFile{datatool-fp.def}[2025/03/03 v3.0 (NLCT)]
+\ProvidesFile{datatool-fp.def}[2025/03/05 v3.0.1 (NLCT)]
% \end{macrocode}
% Required package:
% \begin{macrocode}
@@ -18758,11 +18758,11 @@
% Rollback releases:
% \begin{macrocode}
\DeclareRelease{v2.32}{2019-09-27}{datatool-fp-2019-09-27.sty}
-\DeclareCurrentRelease{v3.0}{2025-03-03}
+\DeclareCurrentRelease{v3.0.1}{2025-03-05}
% \end{macrocode}
% Declare package:
% \begin{macrocode}
-\ProvidesPackage{datatool-fp}[2025/03/03 v3.0 (NLCT)]
+\ProvidesPackage{datatool-fp}[2025/03/05 v3.0.1 (NLCT)]
% \end{macrocode}
% This package is deprecated.
% \begin{macrocode}
@@ -18789,7 +18789,7 @@
% \texttt{datatool-lua.def} are preferable.
% \begin{macrocode}
\NeedsTeXFormat{LaTeX2e}
-\ProvidesFile{datatool-pgfmath.def}[2025/03/03 v3.0 (NLCT)]
+\ProvidesFile{datatool-pgfmath.def}[2025/03/05 v3.0.1 (NLCT)]
% \end{macrocode}
% Required packages:
% \begin{macrocode}
@@ -19352,11 +19352,11 @@
% Rollback releases:
% \begin{macrocode}
\DeclareRelease{v2.32}{2019-09-27}{datatool-pgfmath-2019-09-27.sty}
-\DeclareCurrentRelease{v3.0}{2025-03-03}
+\DeclareCurrentRelease{v3.0.1}{2025-03-05}
% \end{macrocode}
% Declare package:
% \begin{macrocode}
-\ProvidesPackage{datatool-pgfmath}[2025/03/03 v3.0 (NLCT)]
+\ProvidesPackage{datatool-pgfmath}[2025/03/05 v3.0.1 (NLCT)]
% \end{macrocode}
% This package is deprecated.
% \begin{macrocode}
@@ -19386,11 +19386,11 @@
% Rollback releases:
% \begin{macrocode}
\DeclareRelease{v2.32}{2019-09-27}{datatool-2019-09-27.sty}
-\DeclareCurrentRelease{v3.0}{2025-03-03}
+\DeclareCurrentRelease{v3.0.1}{2025-03-05}
% \end{macrocode}
% Declare package:
% \begin{macrocode}
-\ProvidesPackage{datatool}[2025/03/03 v3.0 (NLCT)]
+\ProvidesPackage{datatool}[2025/03/05 v3.0.1 (NLCT)]
% \end{macrocode}
%\changes{3.0}{2025-03-03}{dropped \sty{xkeyval}}
% Version 3.0: no longer using \sty{xkeyval}.
@@ -39072,11 +39072,11 @@
% Rollback releases:
% \begin{macrocode}
\DeclareRelease{v2.32}{2019-09-27}{datagidx-2019-09-27.sty}
-\DeclareCurrentRelease{v3.0}{2025-03-03}
+\DeclareCurrentRelease{v3.0.1}{2025-03-05}
% \end{macrocode}
% Declare package:
% \begin{macrocode}
-\ProvidesPackage{datagidx}[2025/03/03 v3.0 (NLCT)]
+\ProvidesPackage{datagidx}[2025/03/05 v3.0.1 (NLCT)]
% \end{macrocode}
%
% \begin{macrocode}
@@ -47342,11 +47342,11 @@
% Rollback releases:
% \begin{macrocode}
\DeclareRelease{v2.32}{2019-09-27}{databib-2019-09-27.sty}
-\DeclareCurrentRelease{v3.0}{2025-03-03}
+\DeclareCurrentRelease{v3.0.1}{2025-03-05}
% \end{macrocode}
% Declare package:
% \begin{macrocode}
-\ProvidesPackage{databib}[2025/03/03 v3.0 (NLCT)]
+\ProvidesPackage{databib}[2025/03/05 v3.0.1 (NLCT)]
% \end{macrocode}
%\changes{3.0}{2025-03-03}{dropped \sty{xkeyval}}
% Version 3.0: no longer using \sty{xkeyval}.
@@ -51760,11 +51760,11 @@
% Rollback releases:
% \begin{macrocode}
\DeclareRelease{v2.32}{2019-09-27}{databar-2019-09-27.sty}
-\DeclareCurrentRelease{v3.0}{2025-03-03}
+\DeclareCurrentRelease{v3.0.1}{2025-03-05}
% \end{macrocode}
% Declare package:
% \begin{macrocode}
-\ProvidesPackage{databar}[2025/03/03 v3.0 (NLCT)]
+\ProvidesPackage{databar}[2025/03/05 v3.0.1 (NLCT)]
% \end{macrocode}
%\changes{3.0}{2025-03-03}{dropped \sty{xkeyval}}
% Version 3.0: no longer using \sty{xkeyval}.
@@ -55184,11 +55184,11 @@
% Rollback releases:
% \begin{macrocode}
\DeclareRelease{v2.32}{2019-09-27}{datapie-2019-09-27.sty}
-\DeclareCurrentRelease{v3.0}{2025-03-03}
+\DeclareCurrentRelease{v3.0.1}{2025-03-05}
% \end{macrocode}
% Declare package:
% \begin{macrocode}
-\ProvidesPackage{datapie}[2025/03/03 v3.0 (NLCT)]
+\ProvidesPackage{datapie}[2025/03/05 v3.0.1 (NLCT)]
% \end{macrocode}
%\changes{3.0}{2025-03-03}{dropped \sty{xkeyval}}
% Version 3.0: no longer using \sty{xkeyval}.
@@ -56628,11 +56628,11 @@
% Rollback releases:
% \begin{macrocode}
\DeclareRelease{v2.32}{2019-09-27}{dataplot-2019-09-27.sty}
-\DeclareCurrentRelease{v3.0}{2025-03-03}
+\DeclareCurrentRelease{v3.0.1}{2025-03-05}
% \end{macrocode}
% Declare package:
% \begin{macrocode}
-\ProvidesPackage{dataplot}[2025/03/03 v3.0 (NLCT)]
+\ProvidesPackage{dataplot}[2025/03/05 v3.0.1 (NLCT)]
% \end{macrocode}
%\changes{3.0}{2025-03-03}{dropped \sty{xkeyval}}
% Version 3.0: no longer using \sty{xkeyval}.
@@ -63020,11 +63020,11 @@
% Rollback releases:
% \begin{macrocode}
\DeclareRelease{v2.32}{2019-09-27}{person-2019-09-27.sty}
-\DeclareCurrentRelease{v3.0}{2025-03-03}
+\DeclareCurrentRelease{v3.0.1}{2025-03-05}
% \end{macrocode}
% Declare package:
% \begin{macrocode}
-\ProvidesPackage{person}[2025/03/03 v3.0 (NLCT)]
+\ProvidesPackage{person}[2025/03/05 v3.0.1 (NLCT)]
% \end{macrocode}
%No longer requires the \sty{ifthen} package. However, \sty{ifthen}
%is automatically loaded by \sty{datatool-base}, so this will have
@@ -67405,5 +67405,14761 @@
%</databib.bst>
% \end{macrocode}
%\fi
+%\iffalse
+% \begin{macrocode}
+%<*databar-2019-09-27.sty>
+% \end{macrocode}
+%\fi
+%\subsection{Rollback v2.32 (databar-2019-09-27.sty)}
+% \begin{macrocode}
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{databar}[2019/09/27 v2.32 (NLCT)]
+\RequirePackage{xkeyval}
+\RequirePackage{dataplot}[=v2.32]
+\newif\ifDTLcolorbarchart
+\DTLcolorbarcharttrue
+\DeclareOption{color}{\DTLcolorbarcharttrue}
+\DeclareOption{gray}{\DTLcolorbarchartfalse}
+\newcommand*{\DTLbarXlabelalign}{left,rotate=-90}
+\newcommand*{\DTLbarYticklabelalign}{right}
+\define at boolkey{databar}[DTL]{verticalbars}[true]{%
+\ifDTLverticalbars
+ \def\DTLbarXlabelalign{left,rotate=-90}%
+ \def\DTLbarYticklabelalign{right}
+\else
+ \def\DTLbarXlabelalign{right}%
+ \def\DTLbarYticklabelalign{center}
+\fi}
+\DTLverticalbarstrue
+\DeclareOption{vertical}{\DTLverticalbarstrue
+ \def\DTLbarXlabelalign{left,rotate=-90}%
+ \def\DTLbarYticklabelalign{right}
+}
+\DeclareOption{horizontal}{\DTLverticalbarsfalse
+ \def\DTLbarXlabelalign{right}%
+ \def\DTLbarYticklabelalign{center}
+}
+\ProcessOptions
+\RequirePackage{datatool}[=v2.32]
+\RequirePackage{tikz}
+\newlength\DTLbarchartlength
+\DTLbarchartlength=3in
+\newlength\DTLbarwidth
+\DTLbarwidth=1cm
+\newlength\DTLbarlabeloffset
+\setlength\DTLbarlabeloffset{10pt}
+\newcommand*{\DTLBarXAxisStyle}{-}
+\newcommand*{\DTLBarYAxisStyle}{-}
+\newcounter{DTLbarroundvar}
+\setcounter{DTLbarroundvar}{1}
+\newcommand*{\DTLbardisplayYticklabel}[1]{#1}
+\newcommand*{\DTLdisplaylowerbarlabel}[1]{#1}
+\newcommand*{\DTLdisplaylowermultibarlabel}[1]{#1}
+\newcommand*{\DTLdisplayupperbarlabel}[1]{#1}
+\newcommand*{\DTLdisplayuppermultibarlabel}[1]{#1}
+\newcommand*{\DTLbaratbegintikz}{}
+\newcommand*{\DTLbaratendtikz}{}
+\newif\ifDTLbarxaxis
+\newif\ifDTLbaryaxis
+\newif\ifDTLbarytics
+\newcount\@dtl at barcount
+\newcommand*{\DTLsetbarcolor}[2]{%
+\expandafter\def\csname dtlbar at segcol\romannumeral#1\endcsname{#2}%
+}
+\newcommand*{\DTLgetbarcolor}[1]{%
+\csname dtlbar at segcol\romannumeral#1\endcsname}
+\newcommand*{\DTLdobarcolor}[1]{%
+\expandafter\color\expandafter
+{\csname dtlbar at segcol\romannumeral#1\endcsname}}
+\newcommand*{\DTLdocurrentbarcolor}{%
+\ifnum\dtlforeachlevel=0\relax
+ \PackageError{databar}{Can't use
+ \string\DTLdocurrentbarcolor\space outside
+ \string\DTLbarchart}{}%
+\else
+ \expandafter\DTLdobarcolor\expandafter{%
+ \csname c at DTLrow\romannumeral\dtlforeachlevel\endcsname}%
+\fi}
+\newcommand*{\DTLbaroutlinecolor}{black}
+\newlength\DTLbaroutlinewidth
+\DTLbaroutlinewidth=0pt
+\ifDTLcolorbarchart
+ \DTLsetbarcolor{1}{red}
+ \DTLsetbarcolor{2}{green}
+ \DTLsetbarcolor{3}{blue}
+ \DTLsetbarcolor{4}{yellow}
+ \DTLsetbarcolor{5}{magenta}
+ \DTLsetbarcolor{6}{cyan}
+ \DTLsetbarcolor{7}{orange}
+ \DTLsetbarcolor{8}{white}
+\else
+ \DTLsetbarcolor{1}{black!15}
+ \DTLsetbarcolor{2}{black!25}
+ \DTLsetbarcolor{3}{black!35}
+ \DTLsetbarcolor{4}{black!45}
+ \DTLsetbarcolor{5}{black!55}
+ \DTLsetbarcolor{6}{black!65}
+ \DTLsetbarcolor{7}{black!75}
+ \DTLsetbarcolor{8}{black!85}
+\fi
+\newcommand*{\DTLeverybarhook}{}
+\define at key{databar}{max}{\def\DTLbarmax{#1}}
+\define at key{databar}{length}{\DTLbarchartlength=#1\relax
+}
+\define at key{databar}{maxdepth}{%
+\ifnum#1>0\relax
+ \PackageError{databar}{depth must be zero or negative}{}%
+\else
+ \def\DTLnegextent{#1}%
+\fi}
+\define at choicekey{databar}{axes}[\var\nr]{both,x,y,none}{%
+\ifcase\nr\relax
+ % both
+ \DTLbarxaxistrue
+ \DTLbaryaxistrue
+ \DTLbaryticstrue
+\or
+ % x only
+ \DTLbarxaxistrue
+ \DTLbaryaxisfalse
+ \DTLbaryticsfalse
+\or
+ % y only
+ \DTLbarxaxisfalse
+ \DTLbaryaxistrue
+ \DTLbaryticstrue
+\or
+ % neither
+ \DTLbarxaxisfalse
+ \DTLbaryaxisfalse
+ \DTLbaryticsfalse
+\fi
+}
+\define at key{databar}{variable}{%
+ \def\DTLbarvariable{#1}%
+}
+\define at key{databar}{variables}{%
+ \def\dtlbar at variables{#1}%
+}
+\define at key{databar}{barwidth}{\setlength{\DTLbarwidth}{#1}}
+\define at key{databar}{barlabel}{%
+\def\dtl at barlabel{#1}}
+\def\dtl at barlabel{}
+\define at key{databar}{multibarlabels}{%
+\def\dtl at multibarlabels{#1}}
+\def\dtl at multibarlabels{}
+\define at key{databar}{groupgap}{\def\dtlbar at groupgap{#1}}
+\def\dtlbar at groupgap{1}
+\define at key{databar}{upperbarlabel}{%
+\def\dtl at upperbarlabel{#1}}
+\def\dtl at upperbarlabel{}
+\define at key{databar}{uppermultibarlabels}{%
+\def\dtl at uppermultibarlabels{#1}}
+\def\dtl at uppermultibarlabels{}
+\define at key{databar}{yticpoints}{%
+\def\dtlbar at yticlist{#1}\DTLbaryticstrue\DTLbaryaxistrue}
+\let\dtlbar at yticlist=\relax
+\define at key{databar}{yticgap}{%
+\def\dtlbar at yticgap{#1}\DTLbaryticstrue\DTLbaryaxistrue}
+\let\dtlbar at yticgap=\relax
+\define at key{databar}{yticlabels}{%
+\def\dtlbar at yticlabels{#1}\DTLbaryticstrue\DTLbaryaxistrue}
+\let\dtlbar at yticlabels=\relax
+\define at key{databar}{ylabel}{%
+\def\dtlbar at ylabel{#1}}
+\let\dtlbar at ylabel=\relax
+\newcommand*{\DTLbarchart}[4][\boolean{true}]{%
+{%
+ \undef\DTLbarvariable
+ \undef\DTLbarmax
+ \undef\DTLnegextent
+ \disable at keys{databar}{variables,multibarlabels,%
+ uppermultibarlabels,groupgap}%
+ \setkeys{databar}{#2}%
+ \ifundef{\DTLbarvariable}%
+ {%
+ \PackageError{databar}%
+ {\string\DTLbarchart\space missing variable}%
+ {You haven't use the "variable" key}%
+ }%
+ {%
+ \ifundef{\DTLbarmax}%
+ {%
+ \@sDTLforeach[#1]{#3}{#4}{%
+ \expandafter\DTLconverttodecimal\expandafter
+ {\DTLbarvariable}{\dtl at barvar}%
+ \ifundef{\DTLbarmax}%
+ {%
+ \let\DTLbarmax=\dtl at barvar
+ }%
+ {%
+ \let\dtl at old=\DTLbarmax
+ \dtlmax{\DTLbarmax}{\dtl at old}{\dtl at barvar}%
+ }%
+ }%
+ \ifx\dtlbar at yticgap\relax
+ \else
+ \let\dtl at thistick=\dtlbar at yticgap
+ \whiledo{\DTLisFPopenbetween{\dtl at thistick}{0}{\DTLbarmax}}%
+ {%
+ \dtladd{\dtl at thistick}{\dtl at thistick}{\dtlbar at yticgap}%
+ }%
+ \let\DTLbarmax=\dtl at thistick
+ \fi
+ }%
+ {}%
+ \ifundef{\DTLnegextent}%
+ {%
+ \def\DTLnegextent{0}%
+ \@sDTLforeach[#1]{#3}{#4}{%
+ \expandafter\DTLconverttodecimal\expandafter
+ {\DTLbarvariable}{\dtl at barvar}%
+ \let\dtl at old=\DTLnegextent
+ \DTLmin{\DTLnegextent}{\dtl at old}{\dtl at barvar}%
+ }%
+ \ifx\dtlbar at yticgap\relax
+ \else
+ \ifthenelse{\DTLisFPlt{\DTLnegextent}{0}}%
+ {%
+ \edef\dtl at thistick{0}%
+ \whiledo{\DTLisFPclosedbetween{\dtl at thistick}{\DTLnegextent}{0}}{%
+ \dtlsub{\dtl at thistick}{\dtl at thistick}{\dtlbar at yticgap}%
+ }%
+ \let\DTLnegextent=\dtl at thistick
+ }{}%
+ \fi
+ }%
+ {}%
+ \@dtl at tmpcount=\DTLbarchartlength
+ \dtlsub{\dtl at extent}{\DTLbarmax}{\DTLnegextent}%
+ \dtldiv{\dtl at unit}{\number\@dtl at tmpcount}{\dtl at extent}%
+ \setlength{\dtl at yticlabelwidth}{0pt}%
+ \ifDTLbarytics
+ \ifx\dtlbar at yticlist\relax
+ \ifx\dtlbar at yticgap\relax
+ \@dtl at tmpcount=\DTLmintickgap
+ \divide\@dtl at tmpcount by 65536\relax
+ \dtldiv{\dtl at mingap}{\number\@dtl at tmpcount}{\dtl at unit}%
+ \dtl at constructticklist\DTLnegextent\DTLbarmax
+ \dtl at mingap\dtlbar at yticlist
+ \else
+ \dtl at constructticklistwithgapz
+ \DTLnegextent\DTLbarmax\dtlbar at yticlist\dtlbar at yticgap
+ \fi
+ \fi
+ \ifx\dtlbar at ylabel\relax
+ \else
+ \ifx\dtlbar at yticlabels\relax
+ \@for\dtl at thislabel:=\dtlbar at yticlist\do{%
+ \dtlround{\dtl at thislabel}{\dtl at thislabel}
+ {\c at DTLbarroundvar}%
+ \ifDTLverticalbars
+ \settowidth{\dtl at tmplength}{%
+ \DTLbardisplayYticklabel{\dtl at thislabel}}%
+ \else
+ \settoheight{\dtl at tmplength}{%
+ \DTLbardisplayYticklabel{\dtl at thislabel}}%
+ \edef\@dtl at h{\the\dtl at tmplength}%
+ \settodepth{\dtl at tmplength}{%
+ \DTLbardisplayYticklabel{\dtl at thislabel}}%
+ \addtolength{\dtl at tmplength}{\@dtl at h}%
+ \addtolength{\dtl at tmplength}{\baselineskip}%
+ \fi
+ \ifdim\dtl at tmplength>\dtl at yticlabelwidth
+ \setlength{\dtl at yticlabelwidth}{\dtl at tmplength}%
+ \fi
+ }%
+ \else
+ \@for\dtl at thislabel:=\dtlbar at yticlabels\do{%
+ \ifDTLverticalbars
+ \settowidth{\dtl at tmplength}{%
+ \DTLbardisplayYticklabel{\dtl at thislabel}}%
+ \else
+ \settoheight{\dtl at tmplength}{%
+ \DTLbardisplayYticklabel{\dtl at thislabel}}%
+ \edef\@dtl at h{\the\dtl at tmplength}%
+ \settodepth{\dtl at tmplength}{%
+ \DTLbardisplayYticklabel{\dtl at thislabel}}%
+ \addtolength{\dtl at tmplength}{\@dtl at h}%
+ \addtolength{\dtl at tmplength}{\baselineskip}%
+ \fi
+ \ifdim\dtl at tmplength>\dtl at yticlabelwidth
+ \setlength{\dtl at yticlabelwidth}{\dtl at tmplength}%
+ \fi
+ }%
+ \fi
+ \fi
+ \fi
+ \edef\DTLbarchartwidth{\expandafter\number\csname dtlrows@#3\endcsname}
+ \begin{tikzpicture}
+ \ifDTLverticalbars
+ \pgfsetyvec{\pgfpoint{0pt}{\dtl at unit sp}}%
+ \pgfsetxvec{\pgfpoint{\DTLbarwidth}{0pt}}%
+ \else
+ \pgfsetxvec{\pgfpoint{\dtl at unit sp}{0pt}}%
+ \pgfsetyvec{\pgfpoint{0pt}{\DTLbarwidth}}%
+ \fi
+ \DTLbaratbegintikz
+ \def\@dtl at start{0}%
+ \@sDTLforeach[#1]{#3}{#4}{%
+ \expandafter\let\expandafter\@dtl at bar
+ \csname c at DTLrow\romannumeral\dtlforeachlevel\endcsname%
+ \expandafter\DTLconverttodecimal\expandafter
+ {\DTLbarvariable}{\dtl at variable}%
+ \begin{scope}
+ \DTLdocurrentbarcolor
+ \ifDTLverticalbars
+ \fill (\@dtl at start,0) -- (\@dtl at start,\dtl at variable)
+ -- (\@dtl at bar,\dtl at variable) -- (\@dtl at bar,0) -- cycle;
+ \else
+ \fill (0,\@dtl at start) -- (\dtl at variable,\@dtl at start)
+ -- (\dtl at variable,\@dtl at bar) -- (0,\@dtl at bar) -- cycle;
+ \fi
+ \end{scope}
+ \begin{scope}
+ \ifdim\DTLbaroutlinewidth>0pt
+ \expandafter\color\expandafter{\DTLbaroutlinecolor}
+ \ifDTLverticalbars
+ \draw (\@dtl at start,0) -- (\@dtl at start,\dtl at variable)
+ -- (\@dtl at bar,\dtl at variable) -- (\@dtl at bar,0) -- cycle;
+ \else
+ \draw (0,\@dtl at start) -- (\dtl at variable,\@dtl at start)
+ -- (\dtl at variable,\@dtl at bar) -- (0,\@dtl at bar) -- cycle;
+ \fi
+ \fi
+ \end{scope}
+ \ifDTLverticalbars
+ \edef\dtl at textopt{%
+ at={\noexpand\pgfpointadd
+ {\noexpand\pgfpointxy{\@dtl at start.5}{0}}
+ {\noexpand\pgfpoint{0pt}{-\noexpand\DTLbarlabeloffset}}},
+ \DTLbarXlabelalign
+ }%
+ \edef\DTLstartpt{\noexpand\pgfpointxy{\@dtl at start.5}{0}}%
+ \else
+ \edef\dtl at textopt{%
+ at={\noexpand\pgfpointadd
+ {\noexpand\pgfpointxy{0}{\@dtl at start.5}}
+ {\noexpand\pgfpoint{-\noexpand\DTLbarlabeloffset}{0pt}}},
+ \DTLbarXlabelalign
+ }%
+ \edef\DTLstartpt{\noexpand\pgfpointxy{0}{\@dtl at start.5}}%
+ \fi
+ \expandafter\pgftext\expandafter[\dtl at textopt]{%
+ \DTLdisplaylowerbarlabel{\dtl at barlabel}}
+ \ifDTLverticalbars
+ \expandafter\DTLifnumlt\expandafter{\DTLbarvariable}{0}%
+ {
+ \edef\dtl at textopt{%
+ at={\noexpand\pgfpointadd
+ {\noexpand\pgfpointxy{\@dtl at start.5}{\dtl at variable}}
+ {\noexpand\pgfpoint{0pt}{-\noexpand\DTLbarlabeloffset}}}
+ }%
+ }{%
+ \edef\dtl at textopt{%
+ at={\noexpand\pgfpointadd
+ {\noexpand\pgfpointxy{\@dtl at start.5}{\dtl at variable}}
+ {\noexpand\pgfpoint{0pt}{\noexpand\DTLbarlabeloffset}}}
+ }%
+ }
+ \edef\DTLendpt{\noexpand\pgfpointxy{\@dtl at start.5}{\dtl at variable}}%
+ \else
+ \expandafter\DTLifnumlt\expandafter{\DTLbarvariable}{0}%
+ {
+ \edef\dtl at textopt{right,
+ at={\noexpand\pgfpointadd
+ {\noexpand\pgfpointxy{\dtl at variable}{\@dtl at start.5}}
+ {\noexpand\pgfpoint{-\noexpand\DTLbarlabeloffset}{0pt}}}
+ }%
+ }{%
+ \edef\dtl at textopt{left,
+ at={\noexpand\pgfpointadd
+ {\noexpand\pgfpointxy{\dtl at variable}{\@dtl at start.5}}
+ {\noexpand\pgfpoint{\noexpand\DTLbarlabeloffset}{0pt}}}
+ }%
+ }
+ \edef\DTLendpt{\noexpand\pgfpointxy{\dtl at variable}{\@dtl at start.5}}%
+ \fi
+ \expandafter\pgftext\expandafter[\dtl at textopt]{%
+ \DTLdisplayupperbarlabel{\dtl at upperbarlabel}}
+ \def\DTLmidpt{\pgfpointlineattime{0.5}{\DTLstartpt}{\DTLendpt}}%
+ \DTLeverybarhook
+ \edef\@dtl at start{\number\@dtl at bar}%
+ }%
+ \ifDTLbarxaxis
+ \ifDTLverticalbars
+ \expandafter\draw\expandafter[\DTLBarXAxisStyle]
+ (0,0) -- (\DTLbarchartwidth,0);
+ \else
+ \expandafter\draw\expandafter[\DTLBarXAxisStyle]
+ (0,0) -- (0,\DTLbarchartwidth);
+ \fi
+ \fi
+ \ifDTLbaryaxis
+ \ifDTLverticalbars
+ \expandafter\draw\expandafter[\DTLBarYAxisStyle]
+ (0,\DTLnegextent) -- (0,\DTLbarmax);
+ \else
+ \expandafter\draw\expandafter[\DTLBarYAxisStyle]
+ (\DTLnegextent,0) -- (\DTLbarmax,0);
+ \fi
+ \fi
+ \ifx\dtlbar at yticlist\relax
+ \else
+ \@for\dtl at thistick:=\dtlbar at yticlist\do{%
+ \ifDTLverticalbars
+ \pgfpathmoveto{\pgfpointxy{0}{\dtl at thistick}}
+ \pgfpathlineto{
+ \pgfpointadd{\pgfpointxy{0}{\dtl at thistick}}
+ {\pgfpoint{-\DTLticklength}{0pt}}}
+ \else
+ \pgfpathmoveto{\pgfpointxy{\dtl at thistick}{0}}
+ \pgfpathlineto{
+ \pgfpointadd{\pgfpointxy{\dtl at thistick}{0}}
+ {\pgfpoint{0pt}{-\DTLticklength}}}
+ \fi
+ \pgfusepath{stroke}
+ \ifx\dtlbar at yticlabels\relax
+ \dtlround{\dtl at thislabel}{\dtl at thistick}
+ {\c at DTLbarroundvar}%
+ \else
+ \dtl at chopfirst\dtlbar at yticlabels\dtl at thislabel\dtl at rest
+ \let\dtlbar at yticlabels=\dtl at rest
+ \fi
+ \ifDTLverticalbars
+ \edef\dtl at textopt{\DTLbarYticklabelalign,%
+ at={\noexpand\pgfpointadd
+ {\noexpand\pgfpointxy{0}{\dtl at thistick}}
+ {\noexpand\pgfpoint{-\noexpand\DTLticklabeloffset}{0pt}},
+ }}%
+ \else
+ \edef\dtl at textopt{\DTLbarYticklabelalign,
+ at={\noexpand\pgfpointadd
+ {\noexpand\pgfpointxy{\dtl at thistick}{0}}
+ {\noexpand\pgfpoint{0pt}{-\noexpand\DTLticklabeloffset}}
+ }}%
+ \fi
+ \expandafter\pgftext\expandafter[\dtl at textopt]{%
+ \DTLbardisplayYticklabel{\dtl at thislabel}}
+ }%
+ \fi
+ \ifx\dtlbar at ylabel\relax
+ \else
+ \addtolength{\dtl at yticlabelwidth}{\baselineskip}%
+ \setlength{\dtl at tmplength}{0.5\DTLbarchartlength}
+ \ifDTLverticalbars
+ \pgftext[bottom,center,at={\pgfpointadd
+ {\pgfpointxy{0}{\DTLnegextent}}%
+ {\pgfpoint{-\dtl at yticlabelwidth}{\dtl at tmplength}}},
+ rotate=90]{%
+ \dtlbar at ylabel}
+ \else
+ \pgftext[bottom,center,at={\pgfpointadd
+ {\pgfpointxy{\DTLnegextent}{0}}%
+ {\pgfpoint{\dtl at tmplength}{-\dtl at yticlabelwidth}}}]{%
+ \dtlbar at ylabel}
+ \fi
+ \fi
+ \DTLbaratendtikz
+ \end{tikzpicture}
+ }%
+}%
+}
+\newcommand*{\DTLmultibarchart}[4][\boolean{true}]{%
+{\let\dtlbar at variables=\relax
+\let\DTLbarmax=\relax
+\let\DTLnegextent=\relax
+\disable at keys{databar}{variable,upperbarlabel}%
+\setkeys{databar}{#2}%
+\ifx\dtlbar at variables\relax
+ \PackageError{databar}{\string\DTLmultibarchart\space missing variables setting}{}%
+\else
+ \ifx\DTLbarmax\relax
+ \@sDTLforeach[#1]{#3}{#4}{%
+ \@for\DTLbarvariable:=\dtlbar at variables\do{%
+ \expandafter\DTLconverttodecimal\expandafter
+ {\DTLbarvariable}{\dtl at barvar}%
+ \ifx\DTLbarmax\relax
+ \let\DTLbarmax=\dtl at barvar
+ \else
+ \let\dtl at old=\DTLbarmax
+ \dtlmax{\DTLbarmax}{\dtl at old}{\dtl at barvar}%
+ \fi
+ }%
+ }%
+ \ifx\dtlbar at yticgap\relax
+ \else
+ \let\dtl at thistick=\dtlbar at yticgap%
+ \whiledo{\DTLisFPopenbetween{\dtl at thistick}{0}{\DTLbarmax}}{%
+ \dtladd{\dtl at thistick}{\dtl at thistick}{\dtlbar at yticgap}%
+ }%
+ \let\DTLbarmax=\dtl at thistick
+ \fi
+ \fi
+ \ifx\DTLnegextent\relax
+ \def\DTLnegextent{0}%
+ \@sDTLforeach[#1]{#3}{#4}{%
+ \@for\DTLbarvariable:=\dtlbar at variables\do{%
+ \expandafter\DTLconverttodecimal\expandafter
+ {\DTLbarvariable}{\dtl at barvar}%
+ \let\dtl at old=\DTLnegextent
+ \DTLmin{\DTLnegextent}{\dtl at old}{\dtl at barvar}%
+ }%
+ }%
+ \ifx\dtlbar at yticgap\relax
+ \else
+ \ifthenelse{\DTLisFPlt{\DTLnegextent}{0}}{%
+ \edef\dtl at thistick{0}%
+ \whiledo{\DTLisFPclosedbetween{\dtl at thistick}{\DTLnegextent}{0}}{%
+ \dtlsub{\dtl at thistick}{\dtl at thistick}{\dtlbar at yticgap}%
+ }%
+ \let\DTLnegextent=\dtl at thistick
+ }{}%
+ \fi
+ \fi
+ \@dtl at tmpcount=\DTLbarchartlength
+ \dtlsub{\dtl at extent}{\DTLbarmax}{\DTLnegextent}%
+ \dtldiv{\dtl at unit}{\number\@dtl at tmpcount}{\dtl at extent}%
+ \setlength{\dtl at yticlabelwidth}{0pt}%
+ \ifDTLbarytics
+ \ifx\dtlbar at yticlist\relax
+ \ifx\dtlbar at yticgap\relax
+ \@dtl at tmpcount=\DTLmintickgap
+ \divide\@dtl at tmpcount by 65536\relax
+ \dtldiv{\dtl at mingap}{\number\@dtl at tmpcount}{\dtl at unit}%
+ \dtl at constructticklist\DTLnegextent\DTLbarmax
+ \dtl at mingap\dtlbar at yticlist
+ \else
+ \dtl at constructticklistwithgapz
+ \DTLnegextent\DTLbarmax\dtlbar at yticlist\dtlbar at yticgap
+ \fi
+ \fi
+ \ifx\dtlbar at ylabel\relax
+ \else
+ \ifx\dtlbar at yticlabels\relax
+ \@for\dtl at thislabel:=\dtlbar at yticlist\do{%
+ \dtlround{\dtl at thislabel}{\dtl at thislabel}
+ {\c at DTLbarroundvar}%
+ \ifDTLverticalbars
+ \settowidth{\dtl at tmplength}{%
+ \DTLbardisplayYticklabel{\dtl at thislabel}}%
+ \else
+ \settoheight{\dtl at tmplength}{%
+ \DTLbardisplayYticklabel{\dtl at thislabel}}%
+ \edef\@dtl at h{\the\dtl at tmplength}%
+ \settodepth{\dtl at tmplength}{%
+ \DTLbardisplayYticklabel{\dtl at thislabel}}%
+ \addtolength{\dtl at tmplength}{\@dtl at h}%
+ \addtolength{\dtl at tmplength}{\baselineskip}%
+ \fi
+ \ifdim\dtl at tmplength>\dtl at yticlabelwidth
+ \setlength{\dtl at yticlabelwidth}{\dtl at tmplength}%
+ \fi
+ }%
+ \else
+ \@for\dtl at thislabel:=\dtlbar at yticlabels\do{%
+ \ifDTLverticalbars
+ \settowidth{\dtl at tmplength}{%
+ \DTLbardisplayYticklabel{\dtl at thislabel}}%
+ \else
+ \settoheight{\dtl at tmplength}{%
+ \DTLbardisplayYticklabel{\dtl at thislabel}}%
+ \edef\@dtl at h{\the\dtl at tmplength}%
+ \settodepth{\dtl at tmplength}{%
+ \DTLbardisplayYticklabel{\dtl at thislabel}}%
+ \addtolength{\dtl at tmplength}{\@dtl at h}%
+ \addtolength{\dtl at tmplength}{\baselineskip}%
+ \fi
+ \ifdim\dtl at tmplength>\dtl at yticlabelwidth
+ \setlength{\dtl at yticlabelwidth}{\dtl at tmplength}%
+ \fi
+ }%
+ \fi
+ \fi
+ \fi
+\dtl at xticlabelheight=0pt\relax
+\@dtl at tmpcount=0\relax
+\@for\dtl at thislabel:=\dtl at multibarlabels\do{%
+ \advance\@dtl at tmpcount by 1\relax
+ \settoheight{\dtl at tmplength}{\tikz\expandafter\pgftext\expandafter
+ [\DTLbarXlabelalign]{\DTLdisplaylowerbarlabel{\dtl at thislabel}};}%
+ \edef\@dtl at h{\the\dtl at tmplength}%
+ \settodepth{\dtl at tmplength}{\tikz\expandafter\pgftext\expandafter
+ [\DTLbarXlabelalign]{\DTLdisplaylowerbarlabel{\dtl at thislabel}};}%
+ \addtolength{\dtl at tmplength}{\@dtl at h}%
+ \addtolength{\dtl at tmplength}{\baselineskip}%
+ \ifdim\dtl at tmplength>\dtl at xticlabelheight
+ \setlength{\dtl at xticlabelheight}{\dtl at tmplength}%
+ \fi
+}
+\@dtl at tmpcount=0\relax
+\@for\dtl at this:=\dtlbar at variables\do{%
+ \advance\@dtl at tmpcount by 1\relax
+}%
+\edef\DTLbargroupwidth{\number\@dtl at tmpcount}%
+\edef\dtl at n{\expandafter\number\csname dtlrows@#3\endcsname}
+\dtlmul{\dtl at tmpi}{\dtl at n}{\DTLbargroupwidth}
+\dtlsub{\dtl at tmpii}{\dtl at n}{1}%
+\dtlmul{\dtl at tmpii}{\dtl at tmpii}{\dtlbar at groupgap}%
+\dtladd{\DTLbarchartwidth}{\dtl at tmpi}{\dtl at tmpii}
+\begin{tikzpicture}
+\ifDTLverticalbars
+ \pgfsetyvec{\pgfpoint{0pt}{\dtl at unit sp}}%
+ \pgfsetxvec{\pgfpoint{\DTLbarwidth}{0pt}}%
+\else
+ \pgfsetxvec{\pgfpoint{\dtl at unit sp}{0pt}}%
+ \pgfsetyvec{\pgfpoint{0pt}{\DTLbarwidth}}%
+\fi
+\DTLbaratbegintikz
+\def\@dtl at start{0}%
+\@sDTLforeach[#1]{#3}{#4}{%
+\@dtl at barcount = 1\relax
+\let\dtl at multibar@labels=\dtl at multibarlabels
+\let\dtl at uppermultibar@labels=\dtl at uppermultibarlabels
+\dtlmul{\dtl at multimidpt}{\DTLbargroupwidth}{0.5}%
+\dtladd{\dtl at multimidpt}{\dtl at multimidpt}{\@dtl at start}%
+\@for\DTLbarvariable:=\dtlbar at variables\do{%
+\dtladd{\@dtl at endpt}{\@dtl at start}{1}%
+\expandafter\DTLconverttodecimal\expandafter
+ {\DTLbarvariable}{\dtl at variable}%
+\dtl at chopfirst\dtl at multibar@labels\dtl at thisbarlabel\dtl at rest
+\let\dtl at multibar@labels=\dtl at rest
+\dtl at chopfirst\dtl at uppermultibar@labels\dtl at thisupperbarlabel\dtl at rest
+\let\dtl at uppermultibar@labels=\dtl at rest
+\begin{scope}
+ \expandafter\color\expandafter{\DTLgetbarcolor{\@dtl at barcount}}%
+ \ifDTLverticalbars
+ \fill (\@dtl at start,0) -- (\@dtl at start,\dtl at variable)
+ -- (\@dtl at endpt,\dtl at variable) -- (\@dtl at endpt,0) -- cycle;
+ \else
+ \fill (0,\@dtl at start) -- (\dtl at variable,\@dtl at start)
+ -- (\dtl at variable,\@dtl at endpt) -- (0,\@dtl at endpt) -- cycle;
+ \fi
+\end{scope}
+\begin{scope}
+\ifdim\DTLbaroutlinewidth>0pt
+ \expandafter\color\expandafter{\DTLbaroutlinecolor}
+ \ifDTLverticalbars
+ \draw (\@dtl at start,0) -- (\@dtl at start,\dtl at variable)
+ -- (\@dtl at endpt,\dtl at variable) -- (\@dtl at endpt,0) -- cycle;
+ \else
+ \draw (0,\@dtl at start) -- (\dtl at variable,\@dtl at start)
+ -- (\dtl at variable,\@dtl at endpt) -- (0,\@dtl at endpt) -- cycle;
+ \fi
+\fi
+\end{scope}
+\dtladd{\@dtl at midpt}{\@dtl at start}{0.5}%
+\ifDTLverticalbars
+ \edef\dtl at textopt{%
+ at={\noexpand\pgfpointadd
+ {\noexpand\pgfpointxy{\@dtl at midpt}{0}}
+ {\noexpand\pgfpoint{0pt}{-\noexpand\DTLbarlabeloffset}}},
+ \DTLbarXlabelalign
+ }%
+ \edef\DTLstartpt{\noexpand\pgfpointxy{\@dtl at midpt}{0}}%
+\else
+ \edef\dtl at textopt{%
+ at={\noexpand\pgfpointadd
+ {\noexpand\pgfpointxy{0}{\@dtl at midpt}}
+ {\noexpand\pgfpoint{-\noexpand\DTLbarlabeloffset}{0pt}}},
+ \DTLbarXlabelalign
+ }%
+ \edef\DTLstartpt{\noexpand\pgfpointxy{0}{\@dtl at midpt}}%
+\fi
+ \expandafter\pgftext\expandafter[\dtl at textopt]{%
+ \DTLdisplaylowermultibarlabel{\dtl at thisbarlabel}}
+\ifDTLverticalbars
+ \expandafter\DTLifnumlt\expandafter{\DTLbarvariable}{0}
+ {
+ \edef\dtl at textopt{%
+ at={\noexpand\pgfpointadd
+ {\noexpand\pgfpointxy{\@dtl at midpt}{\dtl at variable}}
+ {\noexpand\pgfpoint{0pt}{-\noexpand\DTLbarlabeloffset}}}
+ }%
+ }{%
+ \edef\dtl at textopt{%
+ at={\noexpand\pgfpointadd
+ {\noexpand\pgfpointxy{\@dtl at midpt}{\dtl at variable}}
+ {\noexpand\pgfpoint{0pt}{\noexpand\DTLbarlabeloffset}}}
+ }%
+ }
+ \edef\DTLendpt{\noexpand\pgfpointxy{\@dtl at midpt}{\dtl at variable}}%
+\else
+ \expandafter\DTLifnumlt\expandafter{\DTLbarvariable}{0}
+ {
+ \edef\dtl at textopt{right,
+ at={\noexpand\pgfpointadd
+ {\noexpand\pgfpointxy{\dtl at variable}{\@dtl at midpt}}
+ {\noexpand\pgfpoint{-\noexpand\DTLbarlabeloffset}{0pt}}}
+ }%
+ }{%
+ \edef\dtl at textopt{left,
+ at={\noexpand\pgfpointadd
+ {\noexpand\pgfpointxy{\dtl at variable}{\@dtl at midpt}}
+ {\noexpand\pgfpoint{\noexpand\DTLbarlabeloffset}{0pt}}}
+ }%
+ }
+ \edef\DTLendpt{\noexpand\pgfpointxy{\dtl at variable}{\@dtl at midpt}}%
+\fi
+ \expandafter\pgftext\expandafter[\dtl at textopt]{%
+ \DTLdisplayuppermultibarlabel{\dtl at thisupperbarlabel}}
+\def\DTLmidpt{\pgfpointlineattime{0.5}{\DTLstartpt}{\DTLendpt}}%
+\DTLeverybarhook
+ \dtladd{\@dtl at start}{\@dtl at start}{1}%
+ \advance\@dtl at barcount by 1\relax
+}%
+\setlength{\dtl at tmplength}{\DTLbarlabeloffset}%
+\addtolength{\dtl at tmplength}{\dtl at xticlabelheight}%
+\ifDTLverticalbars
+ \edef\dtl at textopt{%
+ at={\noexpand\pgfpointadd
+ {\noexpand\pgfpointxy{\dtl at multimidpt}{0}}
+ {\noexpand\pgfpoint{0pt}{-\noexpand\dtl at tmplength}}},
+ \DTLbarXlabelalign
+ }%
+\else
+ \edef\dtl at textopt{%
+ at={\noexpand\pgfpointadd
+ {\noexpand\pgfpointxy{0}{\dtl at multimidpt}}
+ {\noexpand\pgfpoint{-\noexpand\dtl at tmplength}{0pt}}},
+ \DTLbarXlabelalign
+ }%
+\fi
+ \expandafter\pgftext\expandafter[\dtl at textopt]{%
+ \DTLdisplaylowerbarlabel{\dtl at barlabel}}
+ \dtladd{\@dtl at start}{\@dtl at start}{\dtlbar at groupgap}%
+}
+\ifDTLbarxaxis
+ \ifDTLverticalbars
+ \expandafter\draw\expandafter[\DTLBarXAxisStyle]
+ (0,0) -- (\DTLbarchartwidth,0);
+ \else
+ \expandafter\draw\expandafter[\DTLBarXAxisStyle]
+ (0,0) -- (0,\DTLbarchartwidth);
+ \fi
+\fi
+\ifDTLbaryaxis
+ \ifDTLverticalbars
+ \expandafter\draw\expandafter[\DTLBarYAxisStyle]
+ (0,\DTLnegextent) -- (0,\DTLbarmax);
+ \else
+ \expandafter\draw\expandafter[\DTLBarYAxisStyle]
+ (\DTLnegextent,0) -- (\DTLbarmax,0);
+ \fi
+\fi
+\ifx\dtlbar at yticlist\relax
+\else
+ \@for\dtl at thistick:=\dtlbar at yticlist\do{%
+ \ifDTLverticalbars
+ \pgfpathmoveto{\pgfpointxy{0}{\dtl at thistick}}
+ \pgfpathlineto{
+ \pgfpointadd{\pgfpointxy{0}{\dtl at thistick}}
+ {\pgfpoint{-\DTLticklength}{0pt}}}
+ \else
+ \pgfpathmoveto{\pgfpointxy{\dtl at thistick}{0}}
+ \pgfpathlineto{
+ \pgfpointadd{\pgfpointxy{\dtl at thistick}{0}}
+ {\pgfpoint{0pt}{-\DTLticklength}}}
+ \fi
+ \pgfusepath{stroke}
+ \ifx\dtlbar at yticlabels\relax
+ \dtlround{\dtl at thislabel}{\dtl at thistick}
+ {\c at DTLbarroundvar}%
+ \else
+ \dtl at chopfirst\dtlbar at yticlabels\dtl at thislabel\dtl at rest
+ \let\dtlbar at yticlabels=\dtl at rest
+ \fi
+ \ifDTLverticalbars
+ \edef\dtl at textopt{\DTLbarYticklabelalign,%
+ at={\noexpand\pgfpointadd
+ {\noexpand\pgfpointxy{0}{\dtl at thistick}}
+ {\noexpand\pgfpoint{-\noexpand\DTLticklabeloffset}{0pt}},
+ }}%
+ \else
+ \edef\dtl at textopt{\DTLbarYticklabelalign,
+ at={\noexpand\pgfpointadd
+ {\noexpand\pgfpointxy{\dtl at thistick}{0}}
+ {\noexpand\pgfpoint{0pt}{-\noexpand\DTLticklabeloffset}}
+ }}%
+ \fi
+ \expandafter\pgftext\expandafter[\dtl at textopt]{%
+ \DTLbardisplayYticklabel{\dtl at thislabel}}
+ }%
+\fi
+\ifx\dtlbar at ylabel\relax
+\else
+ \addtolength{\dtl at yticlabelwidth}{\baselineskip}%
+ \setlength{\dtl at tmplength}{0.5\DTLbarchartlength}
+ \ifDTLverticalbars
+ \pgftext[bottom,center,at={\pgfpointadd
+ {\pgfpointxy{0}{\DTLnegextent}}%
+ {\pgfpoint{-\dtl at yticlabelwidth}{\dtl at tmplength}}},
+ rotate=90]{%
+ \dtlbar at ylabel}
+ \else
+ \pgftext[bottom,center,at={\pgfpointadd
+ {\pgfpointxy{\DTLnegextent}{0}}%
+ {\pgfpoint{\dtl at tmplength}{-\dtl at yticlabelwidth}}}]{%
+ \dtlbar at ylabel}
+ \fi
+\fi
+\DTLbaratendtikz
+\end{tikzpicture}
+\fi
+}}
+% \end{macrocode}
+%\iffalse
+% \begin{macrocode}
+%</databar-2019-09-27.sty>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*databib-2019-09-27.sty>
+% \end{macrocode}
+%\fi
+%\subsection{Rollback v2.32 (databib-2019-09-27.sty)}
+% \begin{macrocode}
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{databib}[2019/09/27 v2.32 (NLCT)]
+\RequirePackage{datatool}[=v2.32]
+\newcommand*{\dtlbib at style}{plain}
+\define at choicekey{databib.sty}{style}{plain,abbrv,alpha}{%
+\def\dtlbib at style{#1}}
+\ProcessOptionsX
+\newcommand*{\DTLloadbbl}[3][\jobname.bbl]{%
+\bibliographystyle{databib}%
+\if at filesw
+ \immediate\write\@auxout{\string\bibdata{#3}}%
+\fi
+\DTLnewdb{#2}%
+\edef\DTLBIBdbname{#2}%
+\@input@{#1}}
+\newcommand*{\DTLnewbibrow}{\@DTLnewrow{\DTLBIBdbname}}
+\newcommand*{\DTLnewbibitem}[2]{%
+ \@DTLnewdbentry{\DTLBIBdbname}{#1}{#2}}
+\providecommand*{\andname}{and}
+\providecommand*{\ofname}{of}
+\providecommand*{\inname}{in}
+\providecommand*{\etalname}{et al.}
+\providecommand*{\editorname}{editor}
+\providecommand*{\editorsname}{editors}
+\providecommand*{\volumename}{volume}
+\providecommand*{\numbername}{number}
+\providecommand*{\pagesname}{pages}
+\providecommand*{\pagename}{page}
+\providecommand*{\editionname}{edition}
+\providecommand*{\techreportname}{Technical report}
+\providecommand*{\mscthesisname}{Master's thesis}
+\providecommand*{\phdthesisname}{PhD thesis}
+\newcommand*{\DTLbibliography}[2][\boolean{true}]{%
+ \begin{DTLthebibliography}[#1]{#2}%
+ \DTLforeachbibentry[#1]{#2}{%
+ \DTLbibitem \DTLformatbibentry \DTLendbibitem
+ }%
+ \end{DTLthebibliography}%
+}
+\newcommand*{\DTLformatbibentry}{%
+ \@ifundefined{DTLformat\DBIBentrytype}%
+ {%
+ \PackageError{databib}{Don't know how to format bibliography
+ entries of type `\DBIBentrytype'}{}%
+ }%
+ {%
+ \dtl at message{[\DBIBcitekey]}%
+ \DTLstartsentencefalse\DTLmidsentencefalse\DTLperiodfalse
+ \csname DTLformat\DBIBentrytype\endcsname
+ }%
+}
+\newcommand*{\gDTLformatbibentry}{%
+ \@ifundefined{DTLformat\DBIBentrytype}%
+ {%
+ \PackageError{databib}{Don't know how to format bibliography
+ entries of type `\DBIBentrytype'}{}%
+ }%
+ {%
+ \dtl at message{[\DBIBcitekey]}%
+ \global\DTLstartsentencefalse
+ \global\DTLmidsentencefalse
+ \global\DTLperiodfalse
+ \csname DTLformat\DBIBentrytype\endcsname
+ }%
+}
+\newcommand*{\DTLformatthisbibentry}[2]{%
+ \edef\DBIBname{#1}%
+ \edef\DBIBcitekey{#2}%
+ \edtlgetrowforvalue{#1}{\dtlcolumnindex{#1}{CiteKey}}{\DBIBcitekey}%
+ \dtl at gathervalues{#1}{\dtlcurrentrow}%
+ \letcs{\DBIBentrytype}{@dtl at key@EntryType}%
+ \DTLformatbibentry
+}
+\newcommand*{\DTLendbibitem}{}
+\newlength\dtl at widest
+\newcommand*{\DTLcomputewidestbibentry}[4]{%
+\dtl at widest=0pt\relax
+\let#4=\@empty
+\DTLforeachbibentry[#1]{#2}{%
+\settowidth{\dtl at tmplength}{#3}%
+\ifdim\dtl at tmplength>\dtl at widest\relax
+ \dtl at widest=\dtl at tmplength
+ \protected at edef#4{#3}%
+\fi
+}%
+}
+\newcommand*{\DTLforeachbibentry}{%
+\@ifstar\@sDTLforeachbibentry\@DTLforeachbibentry}
+\newcommand*{\@DTLforeachbibentry}[3][\boolean{true}]{%
+ \edef\DBIBname{#2}%
+ \setcounter{DTLbibrow}{0}%
+ \@DTLforeach{#2}{\DBIBcitekey=CiteKey,\DBIBentrytype=EntryType}%
+ {%
+ \dtl at gathervalues{#2}{\dtlcurrentrow}%
+ \ifthenelse{#1}{\refstepcounter{DTLbibrow}#3}{}%
+ }%
+}
+\newcommand*{\@sDTLforeachbibentry}[3][\boolean{true}]{%
+ \edef\DBIBname{#2}%
+ \setcounter{DTLbibrow}{0}%
+ \@sDTLforeach{#2}{\DBIBcitekey=CiteKey,\DBIBentrytype=EntryType}%
+ {%
+ \dtl at gathervalues{#2}{\dtlcurrentrow}%
+ \ifthenelse{#1}{\refstepcounter{DTLbibrow}#3}{}%
+ }%
+}
+\newcommand{\gDTLforeachbibentry}{%
+\@ifstar\@sgDTLforeachbibentry\@gDTLforeachbibentry}
+\newcommand*{\@gDTLforeachbibentry}[3][\boolean{true}]{%
+ \xdef\DBIBname{#2}%
+ \global\c at DTLbibrow = 0\relax
+ \@DTLforeach{#2}{\DBIBcitekey=CiteKey,\DBIBentrytype=EntryType}%
+ {%
+ \dtl at g@gathervalues{#2}{\dtlcurrentrow}%
+ \ifthenelse{#1}%
+ {%
+ \refstepcounter{DTLbibrow}%
+ \global\c at DTLbibrow=\c at DTLbibrow
+ #3%
+ }%
+ {}%
+ }%
+}
+\newcommand*{\@sgDTLforeachbibentry}[3][\boolean{true}]{%
+ \xdef\DBIBname{#2}%
+ \global\c at DTLbibrow = 0\relax
+ \@sDTLforeach{#2}{\DBIBcitekey=CiteKey,\DBIBentrytype=EntryType}%
+ {%
+ \dtl at g@gathervalues{#2}{\dtlcurrentrow}%
+ \ifthenelse{#1}%
+ {%
+ \refstepcounter{DTLbibrow}%
+ \global\c at DTLbibrow=\c at DTLbibrow
+ #3%
+ }%
+ {}%
+ }%
+}
+\newcounter{DTLbibrow}
+\def\theHDTLbibrow{\theHDTLrow.bib.\arabic{DTLbibrow}}%
+\newcommand*{\DTLbibfield}[1]{\csname @dtl at key@#1\endcsname}
+\newcommand*{\DTLbibfieldlet}[2]{%
+ \letcs{#1}{@dtl at key@#2}%
+}
+\newcommand*{\DTLifbibfieldexists}[3]{%
+\@ifundefined{@dtl at key@#1}{#3}{%
+\expandafter\DTLifnull\csname @dtl at key@#1\endcsname
+{#3}{#2}}}
+\newcommand*{\DTLifanybibfieldexists}[3]{%
+\@for\dtl at thisfield:=#1\do{%
+\@ifundefined{@dtl at key@\dtl at thisfield}{}{%
+\expandafter\DTLifnull\csname @dtl at key@\dtl at thisfield\endcsname
+{}{%
+\@endfortrue}}}%
+\if at endfor
+ #2%
+\else
+ #3%
+\fi
+\@endforfalse
+}
+\newif\ifDTLperiod
+\newcommand*{\DTLcheckendsperiod}[1]{%
+\dtl at checkendsperiod#1\@nil\relax}
+\def\dtl at checkendsperiod#1#2{%
+\def\@dtl at argi{#1}\def\@dtl at argii{#2}%
+\def\@dtl at period{.}%
+\ifx\@dtl at argi\@nnil
+ \global\DTLperiodfalse
+ \let\@dtl at donext=\relax
+\else
+ \ifx\@dtl at argii\@nnil
+ \ifx\@dtl at argi\@dtl at period
+ \global\DTLperiodtrue
+ \else
+ \global\DTLperiodfalse
+ \fi
+ \let\@dtl at donext=\@gobble
+ \else
+ \let\@dtl at donext=\dtl at checkendsperiod
+ \fi
+\fi
+\@dtl at donext{#2}%
+}
+\newcommand*{\DTLcheckbibfieldendsperiod}[1]{%
+\protected at edef\@dtl at tmp{\DTLbibfield{#1}}%
+\expandafter\DTLcheckendsperiod\expandafter{\@dtl at tmp}}
+\newif\ifDTLmidsentence
+\newif\ifDTLstartsentence
+\newcommand*{\DTLaddperiod}{\DTLmidsentencefalse\DTLperiodfalse
+\DTLstartsentencetrue
+\ifDTLperiod\else.\fi}
+\newcommand*{\DTLaddcomma}{, \DTLmidsentencetrue
+\DTLperiodfalse\DTLstartsentencefalse}
+\newcommand*{\DTLstartsentencespace}{%
+\ifDTLstartsentence\spacefactor=\sfcode`\.\relax\space
+\fi\DTLstartsentencefalse}
+\newcommand*{\DTLtwoand}{\ \andname\ }
+\newcommand*{\DTLandlast}{, \andname\ }
+\newcommand*{\DTLandnotlast}{, }
+\newcount\@dtl at authorcount
+\newcounter{DTLmaxauthors}
+\setcounter{DTLmaxauthors}{10}
+\newcommand*{\DTLformatauthorlist}{%
+\DTLifbibfieldexists{Author}{%
+\DTLstartsentencespace
+\@dtl at authorcount=0\relax
+\@for\@dtl at author:=\@dtl at key@Author\do{%
+\advance\@dtl at authorcount by 1\relax}%
+\@dtl at tmpcount=0\relax
+\ifnum\@dtl at authorcount>\c at DTLmaxauthors
+{%
+ \@for\@dtl at author:=\@dtl at key@Author\do{%
+ \advance\@dtl at tmpcount by 1\relax
+ \ifnum\@dtl at tmpcount=1\relax
+ \expandafter\DTLformatauthor\@dtl at author
+ \else
+ \ifnum\@dtl at tmpcount>\c at DTLmaxauthors
+ \DTLandnotlast \etalname
+ \expandafter\DTLcheckendsperiod\expandafter{\etalname}%
+ \@endfortrue
+ \else
+ \DTLandnotlast \expandafter\DTLformatauthor\@dtl at author
+ \fi
+ \fi
+ }%
+}%
+\else
+ \@for\@dtl at author:=\@dtl at key@Author\do{%
+ \advance\@dtl at tmpcount by 1\relax
+ \ifnum\@dtl at tmpcount=1\relax
+ \expandafter\DTLformatauthor\@dtl at author
+ \else
+ \ifnum\@dtl at tmpcount=\@dtl at authorcount
+ \ifnum\@dtl at authorcount=2\relax
+ \DTLtwoand
+ \else
+ \DTLandlast
+ \fi
+ \expandafter\DTLformatauthor\@dtl at author
+ \else
+ \DTLandnotlast \expandafter\DTLformatauthor\@dtl at author
+ \fi
+ \fi
+ }%
+\fi
+}{}%
+}
+\newcounter{DTLmaxeditors}
+\setcounter{DTLmaxeditors}{10}
+\newcommand*{\DTLformateditorlist}{%
+\DTLifbibfieldexists{Editor}{%
+\DTLstartsentencespace
+\@dtl at authorcount=0\relax
+\@for\@dtl at author:=\@dtl at key@Editor\do{%
+\advance\@dtl at authorcount by 1\relax}%
+\@dtl at tmpcount=0\relax
+\ifnum\@dtl at authorcount>\c at DTLmaxeditors
+{%
+ \@for\@dtl at author:=\@dtl at key@Editor\do{%
+ \advance\@dtl at tmpcount by 1\relax
+ \ifnum\@dtl at tmpcount=1\relax
+ \expandafter\DTLformateditor\@dtl at author
+ \else
+ \ifnum\@dtl at tmpcount>\c at DTLmaxeditors
+ \DTLandnotlast \etalname
+ \expandafter\DTLcheckendsperiod\expandafter{\etalname}%
+ \@endfortrue
+ \else
+ \DTLandnotlast \expandafter\DTLformateditor\@dtl at author
+ \fi
+ \fi
+ }%
+}%
+\else
+\@for\@dtl at author:=\@dtl at key@Editor\do{%
+ \advance\@dtl at tmpcount by 1\relax
+ \ifnum\@dtl at tmpcount=1\relax
+ \expandafter\DTLformateditor\@dtl at author
+ \else
+ \ifnum\@dtl at tmpcount=\@dtl at authorcount
+ \ifnum\@dtl at authorcount=2\relax
+ \DTLtwoand
+ \else
+ \DTLandlast
+ \fi
+ \expandafter\DTLformateditor\@dtl at author
+ \else
+ \DTLandnotlast \expandafter\DTLformateditor\@dtl at author
+ \fi
+ \fi
+ }%
+\fi
+,
+\ifnum\@dtl at authorcount=1\relax
+ \editorname
+ \expandafter\DTLcheckendsperiod\expandafter{\editorname}%
+\else
+ \editorsname
+ \expandafter\DTLcheckendsperiod\expandafter{\editorsname}%
+\fi
+}{}%
+}
+\newcommand*{\DTLformatsurnameonly}[4]{%
+\DTLstartsentencespace
+\def\@dtl at tmp{#1}%
+\ifx\@dtl at tmp\@empty\else#1~\fi
+#2%
+\def\@dtl at tmp{#3}%
+\ifx\@dtl at tmp\@empty
+ \DTLcheckendsperiod{#2}%
+\else
+ , #3%
+ \DTLcheckendsperiod{#3}%
+\fi
+}
+\newcommand*{\DTLformatforenames}[1]{%
+\DTLstartsentencespace
+#1%
+\DTLcheckendsperiod{#1}}
+\newcommand*{\DTLformatabbrvforenames}[1]{%
+\DTLstartsentencespace
+\DTLstoreinitials{#1}{\@dtl at tmp}\@dtl at tmp
+\expandafter\DTLcheckendsperiod\expandafter{\@dtl at tmp}}
+\newcommand*{\DTLformatvon}[1]{%
+\DTLstartsentencespace
+\def\@dtl at tmp{#1}%
+\ifx\@dtl at tmp\@empty
+\else
+ #1~%
+\fi
+}
+\newcommand*{\DTLformatsurname}[1]{%
+\DTLstartsentencespace
+#1\DTLcheckendsperiod{#1}}
+\newcommand*{\DTLformatjr}[1]{%
+\DTLstartsentencespace
+\def\@dtl at tmp{#1}%
+\ifx\@dtl at tmp\@empty
+\else
+ , #1\DTLcheckendsperiod{#1}%
+\fi
+}
+\newcommand*{\DTLformatcrossrefeditor}{%
+\DTLifbibfieldexists{Editor}{%
+\DTLstartsentencespace
+\@dtl at authorcount=0\relax
+\@for\@dtl at author:=\@dtl at key@Editor\do{%
+\advance\@dtl at authorcount by 1\relax}%
+{\@dtl at tmpcount=0\relax
+\@for\@dtl at author:=\@dtl at key@Editor\do{%
+\ifnum\@dtl at authorcount=1\relax
+ \expandafter\DTLformatsurnameonly\@dtl at author
+\else
+ \advance\@dtl at tmpcount by 1\relax
+ \ifnum\@dtl at tmpcount=1\relax
+ \expandafter\DTLformatsurnameonly\@dtl at author
+ \else
+ \ifnum\@dtl at authorcount=2\relax
+ \ \andname\ \expandafter\DTLformatsurnameonly\@dtl at author
+ \else
+ \ \etalname
+ \expandafter\DTLcheckendsperiod\expandafter{\etalname}
+ \fi
+ \@endfortrue
+ \fi
+\fi
+}}%
+}{}%
+}
+\newcommand*{\DTLformatvolnumpages}{%
+\DTLifbibfieldexists{Volume}{%
+\DTLstartsentencespace
+\DTLbibfield{Volume}\DTLperiodfalse}{}%
+\DTLifbibfieldexists{Number}{%
+\DTLstartsentencespace
+(\DTLbibfield{Number})\DTLperiodfalse}{}%
+\DTLifbibfieldexists{Pages}{%
+\DTLifanybibfieldexists{Volume,Number}{:}{%
+\DTLstartsentencespace
+\protected at edef\@dtl at pages{0\DTLbibfield{Pages}}%
+\DTLifnumerical{\@dtl at pages}{\pagename}{\pagesname}~}%
+\DTLbibfield{Pages}\DTLperiodfalse}{}%
+}
+\newcommand*{\DTLformatbvolume}{%
+\DTLifbibfieldexists{Volume}{%
+\ifDTLmidsentence
+ \volumename
+\else
+ \DTLstartsentencespace
+ \expandafter\MakeUppercase\volumename
+\fi
+~\DTLbibfield{Volume}%
+\DTLifbibfieldexists{Series}{\ \ofname\
+{\em\DTLbibfield{Series}}\DTLcheckbibfieldendsperiod{Series}}{%
+\DTLcheckbibfieldendsperiod{Volume}}%
+}{}}
+\newcommand*{\DTLformatchapterpages}{%
+\DTLifbibfieldexists{Chapter}{%
+\DTLifbibfieldexists{Type}{%
+\DTLstartsentencespace
+\DTLbibfield{Type}}{%
+\DTLstartsentencespace
+\chaptername}~\DTLbibfield{Chapter}%
+\DTLifbibfieldexists{Pages}{\DTLaddcomma}{%
+\DTLcheckbibfieldendsperiod{Chapter}}}{}%
+\DTLstartsentencespace
+\DTLformatpages}
+\newcommand*{\DTLformatpages}{%
+\DTLifbibfieldexists{Pages}{%
+\DTLstartsentencespace
+\protected at edef\@dtl at pages{0\DTLbibfield{Pages}}%
+\DTLifnumerical{\@dtl at pages}{\pagename}{\pagesname}~%
+\DTLbibfield{Pages}\DTLcheckbibfieldendsperiod{Pages}}{}%
+}
+\newcommand*{\DTLformatnumberseries}{%
+\DTLifbibfieldexists{Volume}{}{%
+\DTLifbibfieldexists{Number}{%
+\ifDTLmidsentence
+ \numbername
+\else
+ \DTLstartsentencespace
+ \expandafter\MakeUppercase\numbername
+\fi~\DTLbibfield{Number}%
+\DTLifbibfieldexists{Series}{\ \inname\ \DTLbibfield{Series}%
+\DTLcheckbibfieldendsperiod{Series}}{%
+\DTLcheckbibfieldendsperiod{Number}}%
+}{%
+\DTLifbibfieldexists{Series}{%
+\DTLstartsentencespace
+\DTLbibfield{Series}%
+\DTLcheckbibfieldendsperiod{Series}}{}}%
+}%
+}
+\newcommand*{\DTLformatbookcrossref}{%
+\DTLifbibfieldexists{Volume}{%
+\ifDTLmidsentence
+ \volumename
+\else
+ \DTLstartsentencespace
+ \expandafter\MakeUppercase\volumename
+\fi
+~\DTLbibfield{Volume}\ \ofname\
+}{%
+\ifDTLmidsentence
+ \inname
+\else
+ \DTLstartsentencespace
+ \expandafter\MakeUppercase\inname
+\fi\ }%
+\DTLifbibfieldexists{Editor}{\DTLformatcrossrefeditor}{%
+\DTLifbibfieldexists{Key}{%
+\DTLbibfield{Key}}{%
+\DTLifbibfieldexists{Series}{%
+{\em\DTLbibfield{Series}}}{}%
+}%
+}%
+~\DTLpcite{\DTLbibfield{CrossRef}}%
+}
+\newcommand*{\DTLformatincollproccrossref}{%
+\DTLifbibfieldexists{Editor}{%
+\ifDTLmidsentence
+ \inname
+\else
+ \DTLstartsentencespace
+ \expandafter\MakeUppercase\inname
+\fi\
+\DTLformatcrossrefeditor
+}{%
+\DTLifbibfieldexists{Key}{%
+\ifDTLmidsentence
+ \inname
+\else
+ \DTLstartsentencespace
+ \expandafter\MakeUppercase\inname
+\fi\ \DTLbibfield{Key}%
+}{%
+\DTLifbibfieldexists{BookTitle}{%
+\ifDTLmidsentence
+ \inname
+\else
+ \DTLstartsentencespace
+ \expandafter\MakeUppercase\inname
+\fi\ \DTLformatbooktitle{\DTLbibfield{BookTitle}}}{}%
+}}%
+~\DTLpcite{\DTLbibfield{CrossRef}}%
+}
+\newcommand*{\DTLformatinedbooktitle}{%
+\DTLifbibfieldexists{BookTitle}{%
+\ifDTLmidsentence
+ \inname
+\else
+ \DTLstartsentencespace
+ \expandafter\MakeUppercase\inname
+\fi\
+\DTLifbibfieldexists{Editor}{%
+\DTLformateditorlist\DTLaddcomma \DTLformatbooktitle{\DTLbibfield{BookTitle}}%
+\DTLcheckbibfieldendsperiod{BookTitle}%
+}{\DTLformatbooktitle{\DTLbibfield{BookTitle}}%
+\DTLcheckbibfieldendsperiod{BookTitle}%
+}}{}}
+\newcommand*{\DTLformatdate}{%
+\DTLifbibfieldexists{Year}{%
+\DTLifbibfieldexists{Month}{%
+\protected at edef\@dtl at tmp{\DTLbibfield{Month}}%
+\ifDTLmidsentence
+ \@dtl at tmp
+\else
+ \DTLstartsentencespace
+ \expandafter\MakeUppercase\@dtl at tmp
+\fi\
+\DTLmidsentencefalse}{}%
+\DTLstartsentencespace
+\DTLbibfield{Year}}{%
+\DTLifbibfieldexists{Month}{%
+\protected at edef\@dtl at tmp{\DTLbibfield{Month}}%
+\ifDTLmidsentence
+ \@dtl at tmp
+\else
+ \DTLstartsentencespace
+ \expandafter\MakeUppercase\@dtl at tmp
+\fi
+\DTLcheckbibfieldendsperiod{Month}%
+}{}}}
+\newcommand*{\DTLformatarticlecrossref}{%
+\DTLifbibfieldexists{Key}{%
+\ifDTLmidsentence
+ \inname
+\else
+ \DTLstartsentencespace
+ \expandafter\MakeUppercase\inname
+\fi
+\ {\em\DTLbibfield{Key}}}{%
+\DTLifbibfieldexists{Journal}{%
+\ifDTLmidsentence
+ \inname
+\else
+ \DTLstartsentencespace
+ \expandafter\MakeUppercase\inname
+\fi
+\ {\em\DTLbibfield{Journal}}}{}}%
+~\DTLpcite{\DTLbibfield{CrossRef}}%
+}
+\newrobustcmd*{\DTLpcite}[1]{%
+ \protected at edef\@dtl at tmp{#1}%
+ \cite{\@dtl at tmp}%
+}
+\newcommand*{\DTLbibfieldexists}[1]{%
+\TE at throw\noexpand\dtl at testbibfieldexists{#1}%
+\noexpand\if at dtl@condition}
+\newcommand*{\dtl at testbibfieldexists}[1]{%
+\DTLifbibfieldexists{#1}{\@dtl at conditiontrue}{\@dtl at conditionfalse}}
+\newcommand*{\DTLbibfieldiseq}[2]{%
+\TE at throw\noexpand\dtl at testbibfieldiseq{#1}{#2}%
+\noexpand\if at dtl@condition}
+\newcommand*{\dtl at testbibfieldiseq}[2]{%
+\DTLifbibfieldexists{#1}{%
+\expandafter\let\expandafter\@dtl at tmp\expandafter
+ =\csname @dtl at key@#1\endcsname
+\expandafter\toks@\expandafter{\@dtl at tmp}%
+\@dtl at toks{#2}%
+\edef\@dtl at docompare{\noexpand\dtlcompare{\noexpand\@dtl at tmpcount}%
+{\the\toks@}{\the\@dtl at toks}}%
+\@dtl at docompare
+\ifnum\@dtl at tmpcount=0\relax
+ \@dtl at conditiontrue
+\else
+ \@dtl at conditionfalse
+\fi
+}{%
+\@dtl at conditionfalse}%
+}
+\newcommand*{\DTLbibfieldislt}[2]{%
+\TE at throw\noexpand\dtl at testbibfieldislt{#1}{#2}%
+\noexpand\if at dtl@condition}
+\newcommand*{\dtl at testbibfieldislt}[2]{%
+\DTLifbibfieldexists{#1}{%
+\expandafter\let\expandafter\@dtl at tmp\expandafter
+ =\csname @dtl at key@#1\endcsname
+\expandafter\toks@\expandafter{\@dtl at tmp}%
+\@dtl at toks{#2}%
+\edef\@dtl at docompare{\noexpand\dtlcompare{\noexpand\@dtl at tmpcount}%
+{\the\toks@}{\the\@dtl at toks}}%
+\@dtl at docompare
+\ifnum\@dtl at tmpcount=-1\relax
+ \@dtl at conditiontrue
+\else
+ \@dtl at conditionfalse
+\fi
+}{%
+\@dtl at conditionfalse}%
+}
+\newcommand*{\DTLbibfieldisle}[2]{%
+\TE at throw\noexpand\dtl at testbibfieldisle{#1}{#2}%
+\noexpand\if at dtl@condition}
+\newcommand*{\dtl at testbibfieldisle}[2]{%
+\DTLifbibfieldexists{#1}{%
+\expandafter\let\expandafter\@dtl at tmp\expandafter
+ =\csname @dtl at key@#1\endcsname
+\expandafter\toks@\expandafter{\@dtl at tmp}%
+\@dtl at toks{#2}%
+\edef\@dtl at docompare{\noexpand\dtlcompare{\noexpand\@dtl at tmpcount}%
+{\the\toks@}{\the\@dtl at toks}}%
+\@dtl at docompare
+\ifnum\@dtl at tmpcount<1\relax
+ \@dtl at conditiontrue
+\else
+ \@dtl at conditionfalse
+\fi
+}{%
+\@dtl at conditionfalse}%
+}
+\newcommand*{\DTLbibfieldisgt}[2]{%
+\TE at throw\noexpand\dtl at testbibfieldisgt{#1}{#2}%
+\noexpand\if at dtl@condition}
+\newcommand*{\dtl at testbibfieldisgt}[2]{%
+\DTLifbibfieldexists{#1}{%
+\expandafter\let\expandafter\@dtl at tmp\expandafter
+ =\csname @dtl at key@#1\endcsname
+\expandafter\toks@\expandafter{\@dtl at tmp}%
+\@dtl at toks{#2}%
+\edef\@dtl at docompare{\noexpand\dtlcompare{\noexpand\@dtl at tmpcount}%
+{\the\toks@}{\the\@dtl at toks}}%
+\@dtl at docompare
+\ifnum\@dtl at tmpcount=1\relax
+ \@dtl at conditiontrue
+\else
+ \@dtl at conditionfalse
+\fi
+}{%
+\@dtl at conditionfalse}%
+}
+\newcommand*{\DTLbibfieldisge}[2]{%
+\TE at throw\noexpand\dtl at testbibfieldisge{#1}{#2}%
+\noexpand\if at dtl@condition}
+\newcommand*{\dtl at testbibfieldisge}[2]{%
+\DTLifbibfieldexists{#1}{%
+\expandafter\let\expandafter\@dtl at tmp\expandafter
+ =\csname @dtl at key@#1\endcsname
+\expandafter\toks@\expandafter{\@dtl at tmp}%
+\@dtl at toks{#2}%
+\edef\@dtl at docompare{\noexpand\dtlcompare{\noexpand\@dtl at tmpcount}%
+{\the\toks@}{\the\@dtl at toks}}%
+\@dtl at docompare
+\ifnum\@dtl at tmpcount>-1\relax
+ \@dtl at conditiontrue
+\else
+ \@dtl at conditionfalse
+\fi
+}{%
+\@dtl at conditionfalse}%
+}
+\newcommand*{\DTLbibfieldcontains}[2]{%
+\TE at throw\noexpand\dtl at testbibfieldcontains{#1}{#2}%
+\noexpand\if at dtl@condition}
+\newcommand*{\dtl at testbibfieldcontains}[2]{%
+\DTLifbibfieldexists{#1}{%
+\expandafter\let\expandafter\@dtl at tmp\expandafter
+ =\csname @dtl at key@#1\endcsname
+\expandafter\dtl at testifsubstring\expandafter{\@dtl at tmp}{#2}%
+}{\@dtl at conditionfalse}}
+\newenvironment{DTLthebibliography}[2][\boolean{true}]{%
+\@dtl at tmpcount=0\relax
+\@sDTLforeach[#1]{#2}{}{\advance\@dtl at tmpcount by 1\relax}%
+\begin{thebibliography}{\number\@dtl at tmpcount}
+}{\end{thebibliography}}
+\newcommand*{\DTLmonthname}[1]{%
+\dtl at monthname{#1}}
+\newcommand*{\dtl at monthname}[1]{%
+\ifcase#1%
+\or January%
+\or February%
+\or March%
+\or April%
+\or May%
+\or June%
+\or July%
+\or August%
+\or September%
+\or October%
+\or November%
+\or December%
+\fi}
+\newcommand*{\dtl at abbrvmonthname}[1]{%
+\ifcase#1%
+\or Jan.%
+\or Feb.%
+\or Mar.%
+\or Apr.%
+\or May%
+\or June%
+\or July%
+\or Aug.%
+\or Sept.%
+\or Oct.%
+\or Nov.%
+\or Dec.%
+\fi}
+\newcommand*{\DTLbibitem}{\bibitem{\DBIBcitekey}}
+\newcommand*{\DTLmbibitem}[1]{\bibitem{#1@\DBIBcitekey}}
+\newcommand*{\DTLcustombibitem}[3]{%
+ #1%
+ \if at filesw
+ \immediate\write\@auxout{\string\bibcite{#3}{#2}}%
+ \fi
+ \ignorespaces
+}
+\newcommand*{\DTLformatauthor}[4]{%
+\DTLformatforenames{#4}
+\DTLformatvon{#1}%
+\DTLformatsurname{#2}%
+\DTLformatjr{#3}}
+\newcommand*{\DTLformateditor}[4]{%
+\DTLformatforenames{#4}
+\DTLformatvon{#1}%
+\DTLformatsurname{#2}%
+\DTLformatjr{#3}}
+\newcommand*{\DTLformatedition}[1]{#1 \editionname}
+\newcommand{\DTLformatarticle}{}
+\newcommand{\DTLformatbook}{}
+\newcommand{\DTLformatbooklet}{}
+\newcommand{\DTLformatinbook}{}
+\newcommand{\DTLformatincollection}{}
+\newcommand{\DTLformatinproceedings}{}
+\newcommand{\DTLformatmanual}{}
+\newcommand{\DTLformatmastersthesis}{}
+\newcommand{\DTLformatmisc}{}
+\newcommand{\DTLformatphdthesis}{}
+\newcommand{\DTLformatproceedings}{}
+\newcommand{\DTLformattechreport}{}
+\newcommand{\DTLformatunpublished}{}
+\newcommand*{\DTLacmcs}{ACM Computing Surveys}
+\newcommand*{\DTLacta}{Acta Informatica}
+\newcommand*{\DTLcacm}{Communications of the ACM}
+\newcommand*{\DTLibmjrd}{IBM Journal of Research and Development}
+\newcommand*{\DTLibmsj}{IBM Systems Journal}
+\newcommand*{\DTLieeese}{IEEE Transactions on Software Engineering}
+\newcommand*{\DTLieeetc}{IEEE Transactions on Computers}
+\newcommand*{\DTLieeetcad}{IEEE Transactions on Computer-Aided Design
+of Integrated Circuits}
+\newcommand*{\DTLipl}{Information Processing Letters}
+\newcommand*{\DTLjacm}{Journal of the ACM}
+\newcommand*{\DTLjcss}{Journal of Computer and System Sciences}
+\newcommand*{\DTLscp}{Science of Computer Programming}
+\newcommand*{\DTLsicomp}{SIAM Journal on Computing}
+\newcommand*{\DTLtocs}{ACM Transactions on Computer Systems}
+\newcommand*{\DTLtods}{ACM Transactions on Database Systems}
+\newcommand*{\DTLtog}{ACM Transactions on Graphics}
+\newcommand*{\DTLtoms}{ACM Transactions on Mathematical Software}
+\newcommand*{\DTLtoois}{ACM Transactions on Office Information
+Systems}
+\newcommand*{\DTLtoplas}{ACM Transactions on Programming Languages
+and Systems}
+\newcommand*{\DTLtcs}{Theoretical Computer Science}
+\newcommand{\dtlbst at plain}{%
+ \renewenvironment{DTLthebibliography}[2][\boolean{true}]{%
+ \@dtl at tmpcount=0\relax
+ \@sDTLforeach[##1]{##2}{}{\advance\@dtl at tmpcount by 1\relax}%
+ \begin{thebibliography}{\number\@dtl at tmpcount}%
+ }{\end{thebibliography}}%
+ \renewcommand*{\DTLbibitem}{\bibitem{\DBIBcitekey}}%
+ \renewcommand*{\DTLmbibitem}[1]{\bibitem{##1@\DBIBcitekey}}%
+ \renewcommand*{\DTLformatauthor}[4]{%
+ \DTLformatforenames{##4}
+ \DTLformatvon{##1}%
+ \DTLformatsurname{##2}%
+ \DTLformatjr{##3}}
+ \renewcommand*{\DTLformateditor}[4]{%
+ \DTLformatforenames{##4}
+ \DTLformatvon{##1}%
+ \DTLformatsurname{##2}%
+ \DTLformatjr{##3}}
+ \renewcommand*{\DTLformatedition}[1]{##1 \editionname}%
+ \let\DTLmonthname\dtl at monthname
+ \renewcommand*{\DTLacmcs}{ACM Computing Surveys}
+ \renewcommand*{\DTLacta}{Acta Informatica}
+ \renewcommand*{\DTLcacm}{Communications of the ACM}
+ \renewcommand*{\DTLibmjrd}{IBM Journal of Research and Development}
+ \renewcommand*{\DTLibmsj}{IBM Systems Journal}
+ \renewcommand*{\DTLieeese}{IEEE Transactions on Software Engineering}
+ \renewcommand*{\DTLieeetc}{IEEE Transactions on Computers}
+ \renewcommand*{\DTLieeetcad}{IEEE Transactions on Computer-Aided Design
+of Integrated Circuits}
+ \renewcommand*{\DTLipl}{Information Processing Letters}
+ \renewcommand*{\DTLjacm}{Journal of the ACM}
+ \renewcommand*{\DTLjcss}{Journal of Computer and System Sciences}
+ \renewcommand*{\DTLscp}{Science of Computer Programming}
+ \renewcommand*{\DTLsicomp}{SIAM Journal on Computing}
+ \renewcommand*{\DTLtocs}{ACM Transactions on Computer Systems}
+ \renewcommand*{\DTLtods}{ACM Transactions on Database Systems}
+ \renewcommand*{\DTLtog}{ACM Transactions on Graphics}
+ \renewcommand*{\DTLtoms}{ACM Transactions on Mathematical Software}
+ \renewcommand*{\DTLtoois}{ACM Transactions on Office Information
+Systems}
+ \renewcommand*{\DTLtoplas}{ACM Transactions on Programming Languages
+and Systems}
+ \renewcommand*{\DTLtcs}{Theoretical Computer Science}
+ \renewcommand*{\DTLformatarticle}{%
+ \DTLformatauthorlist
+ \DTLifbibfieldexists{Author}{\DTLaddperiod}{}%
+ \DTLifbibfieldexists{Title}{%
+ \DTLstartsentencespace\DTLbibfield{Title}%
+ \DTLcheckbibfieldendsperiod{Title}%
+ \DTLaddperiod}{}%
+ \DTLifbibfieldexists{CrossRef}{%
+ \DTLformatarticlecrossref
+ \DTLifbibfieldexists{Pages}{\DTLaddcomma}{}%
+ \DTLformatpages
+ \DTLaddperiod
+ }{% no cross ref field
+ \DTLifbibfieldexists{Journal}{\DTLstartsentencespace
+ {\em\DTLbibfield{Journal}}%
+ \DTLcheckbibfieldendsperiod{Journal}%
+ \DTLifanybibfieldexists{Number,Volume,Pages,Month,Year}{%
+ \DTLaddcomma}{\DTLaddperiod}}{}%
+ \DTLformatvolnumpages
+ \DTLifanybibfieldexists{Volume,Number,Pages}{%
+ \DTLifanybibfieldexists{Year,Month}{\DTLaddcomma}{%
+ \DTLaddperiod}%
+ \DTLmidsentencefalse}{}%
+ \DTLformatdate
+ \DTLifanybibfieldexists{Year,Month}{\DTLaddperiod}{}%
+ }%
+ \DTLifbibfieldexists{Note}{\DTLstartsentencespace\DTLbibfield{Note}%
+ \DTLcheckbibfieldendsperiod{Note}%
+ \DTLaddperiod}{}%
+ }
+\renewcommand*{\DTLformatbook}{%
+ \DTLifbibfieldexists{Author}%
+ {%
+ \DTLformatauthorlist\DTLaddperiod
+ }%
+ {%
+ \DTLformateditorlist
+ \DTLifbibfieldexists{Editor}%
+ {%
+ \DTLaddperiod
+ }%
+ {}%
+ }%
+ \DTLifbibfieldexists{Title}%
+ {%
+ \DTLstartsentencespace
+ \DTLformatbooktitle{\DTLbibfield{Title}}%
+ \DTLcheckbibfieldendsperiod{Title}%
+ }%
+ {}%
+ \DTLifbibfieldexists{CrossRef}%
+ {%
+ \DTLifbibfieldexists{Title}{\DTLaddperiod}{}%
+ \DTLformatbookcrossref
+ \DTLifanybibfieldexists{Edition,Month,Year}%
+ {\DTLaddcomma}%
+ {\DTLaddperiod}%
+ }%
+ {%
+ \DTLifbibfieldexists{Title}%
+ {%
+ \DTLifbibfieldexists{Volume}{\DTLaddcomma}{\DTLaddperiod}%
+ }%
+ {}%
+ \DTLformatbvolume
+ \DTLformatnumberseries
+ \DTLifanybibfieldexists{Number,Series,Volume}{\DTLaddperiod}{}%
+ \DTLifbibfieldexists{Publisher}%
+ {%
+ \DTLstartsentencespace
+ \DTLbibfield{Publisher}%
+ \DTLcheckbibfieldendsperiod{Publisher}%
+ \DTLifbibfieldexists{Address}%
+ {\DTLaddcomma}%
+ {%
+ \DTLifanybibfieldexists{Month,Year}%
+ {\DTLaddcomma}%
+ {\DTLaddperiod}%
+ }%
+ }%
+ {}%
+ \DTLifbibfieldexists{Address}%
+ {%
+ \DTLstartsentencespace
+ \DTLbibfield{Address}%
+ \DTLcheckbibfieldendsperiod{Address}%
+ \DTLifanybibfieldexists{Month,Year}{\DTLaddcomma}{\DTLaddperiod}%
+ }%
+ {}%
+ }%
+ \DTLifbibfieldexists{Edition}%
+ {%
+ \protected at edef\@dtl at tmp{\DTLformatedition{\DTLbibfield{Edition}}}%
+ \ifDTLmidsentence
+ \@dtl at tmp
+ \else
+ \DTLstartsentencespace\expandafter\MakeUppercase\@dtl at tmp
+ \fi
+ \expandafter\DTLcheckendsperiod\expandafter{\@dtl at tmp}%
+ \DTLifanybibfieldexists{Month,Year}{\DTLaddcomma}{\DTLaddperiod}%
+ }%
+ {}%
+ \DTLformatdate
+ \DTLifanybibfieldexists{Year,Month}{\DTLaddperiod}{}%
+ \DTLifbibfieldexists{Note}%
+ {%
+ \DTLstartsentencespace
+ \DTLbibfield{Note}%
+ \DTLcheckbibfieldendsperiod{Note}%
+ \DTLaddperiod
+ }%
+ {}%
+}%
+\renewcommand*{\DTLformatbooklet}{%
+\DTLifbibfieldexists{Author}{%
+\DTLformatauthorlist\DTLaddperiod}{}%
+\DTLifbibfieldexists{Title}{\DTLstartsentencespace
+\DTLbibfield{Title}%
+\DTLcheckbibfieldendsperiod{Title}%
+\DTLaddperiod}{}%
+\DTLifbibfieldexists{HowPublished}{%
+\DTLstartsentencespace\DTLbibfield{HowPublished}%
+\DTLcheckbibfieldendsperiod{HowPublished}%
+\DTLifanybibfieldexists{Address,Month,Year}{\DTLaddcomma
+}{\DTLaddperiod}}{}%
+\DTLifbibfieldexists{Address}{\DTLstartsentencespace
+\DTLbibfield{Address}%
+\DTLcheckbibfieldendsperiod{Address}%
+\DTLifanybibfieldexists{Month,Year}{\DTLaddcomma}{\DTLaddperiod}}{}%
+\DTLformatdate
+\DTLifanybibfieldexists{Year,Month}{\DTLaddperiod}{}%
+\DTLifbibfieldexists{Note}{\DTLstartsentencespace\DTLbibfield{Note}%
+\DTLcheckbibfieldendsperiod{Note}%
+\DTLaddperiod}{}%
+}%
+\renewcommand*{\DTLformatinbook}{%
+\DTLifbibfieldexists{Author}{%
+\DTLformatauthorlist\DTLaddperiod}{%
+\DTLifbibfieldexists{Editor}{\DTLformateditorlist\DTLaddperiod}{}}%
+\DTLifbibfieldexists{Title}{%
+\DTLstartsentencespace
+{\em\DTLbibfield{Title}}%
+\DTLcheckbibfieldendsperiod{Title}%
+}{}%
+\DTLifbibfieldexists{CrossRef}{%
+\DTLifbibfieldexists{Title}{%
+\DTLifbibfieldexists{Chapter}{\DTLaddcomma}{\DTLaddperiod}}{}%
+\DTLformatchapterpages
+\DTLifanybibfieldexists{Chapter,Pages}{\DTLaddperiod}{}%
+\DTLformatbookcrossref
+}{% no cross ref
+\DTLifbibfieldexists{Title}{%
+\DTLifanybibfieldexists{Chapter,Volume}{\DTLaddcomma
+}{\DTLaddperiod}}{}%
+\DTLformatbvolume
+\DTLifanybibfieldexists{Volume,Series}{%
+\DTLifanybibfieldexists{Chapter,Pages}{%
+\DTLaddcomma}{\DTLaddperiod}}{}%
+\DTLformatchapterpages
+\DTLifanybibfieldexists{Chapter,Pages}{\DTLaddperiod}{}%
+\DTLifbibfieldexists{Publisher}{%
+\DTLstartsentencespace
+\DTLbibfield{Publisher}%
+\DTLcheckbibfieldendsperiod{Publisher}%
+\DTLifbibfieldexists{Address}{\DTLaddcomma}{}}{}%
+\DTLifbibfieldexists{Address}{%
+\DTLstartsentencespace
+\DTLbibfield{Address}%
+\DTLcheckbibfieldendsperiod{Address}}{}%
+}%
+\DTLifanybibfieldexists{Edition,Month,Year}{\DTLaddcomma
+}{\DTLaddperiod}%
+\DTLifbibfieldexists{Edition}{%
+\protected at edef\@dtl at tmp{\DTLformatedition{\DTLbibfield{Edition}}}%
+\ifDTLmidsentence
+ \@dtl at tmp
+\else
+ \DTLstartsentencespace
+ \expandafter\MakeUppercase\@dtl at tmp
+\fi
+\expandafter\DTLcheckendsperiod\expandafter{\@dtl at tmp}%
+\DTLifanybibfieldexists{Month,Year}{\DTLaddcomma
+}{\DTLaddperiod}%
+}{}%
+\DTLformatdate
+\DTLifanybibfieldexists{Month,Year}{\DTLaddperiod}{}%
+\DTLifbibfieldexists{Note}{%
+\DTLstartsentencespace
+\DTLbibfield{Note}%
+\DTLcheckbibfieldendsperiod{Note}%
+\DTLaddperiod}{}%
+}%
+\renewcommand*{\DTLformatincollection}{%
+\DTLifbibfieldexists{Author}{\DTLformatauthorlist\DTLaddperiod}{}%
+\DTLifbibfieldexists{Title}{%
+\DTLstartsentencespace
+\DTLbibfield{Title}%
+\DTLcheckbibfieldendsperiod{Title}%
+\DTLaddperiod}{}%
+\DTLifbibfieldexists{CrossRef}{%
+\DTLformatincollproccrossref
+\DTLifanybibfieldexists{Chapter,Pages}{\DTLaddcomma}{}%
+\DTLformatchapterpages\DTLaddperiod
+}{% no cross ref entry
+\DTLformatinedbooktitle
+\DTLifbibfieldexists{BookTitle}{%
+\DTLifanybibfieldexists{Volume,Series,Chapter,Pages,Number}{%
+\DTLaddcomma}{\DTLaddperiod}}{}%
+\DTLformatbvolume
+\DTLifbibfieldexists{Volume}{%
+\DTLifanybibfieldexists{Number,Series,Chapter,Pages}{%
+\DTLaddcomma}{\DTLaddperiod}}{}%
+\DTLformatnumberseries
+\DTLifanybibfieldexists{Number,Series}{%
+\DTLifanybibfieldexists{Chapter,Pages}{\DTLaddcomma
+}{\DTLaddperiod}}{}%
+\DTLformatchapterpages
+\DTLifanybibfieldexists{Chapter,Pages}{\DTLaddperiod}{}%
+\DTLifbibfieldexists{Publisher}{%
+\DTLstartsentencespace
+\DTLbibfield{Publisher}%
+\DTLcheckbibfieldendsperiod{Publisher}%
+\DTLifanybibfieldexists{Address,Edition,Month,Year}{%
+\DTLaddcomma}{\DTLaddperiod}}{}%
+\DTLifbibfieldexists{Address}{%
+\DTLstartsentencespace
+\DTLbibfield{Address}%
+\DTLcheckbibfieldendsperiod{Address}%
+\DTLifanybibfieldexists{Edition,Month,Year}{%
+\DTLaddcomma}{\DTLaddperiod}}{}%
+\DTLifbibfieldexists{Edition}{%
+\protected at edef\@dtl at tmp{\DTLformatedition{\DTLbibfield{Edition}}}%
+\ifDTLmidsentence
+ \@dtl at tmp
+\else
+ \DTLstartsentencespace
+ \expandafter\MakeUppercase\@dtl at tmp
+\fi
+\expandafter\DTLcheckendsperiod\expandafter{\@dtl at tmp}%
+\DTLifanybibfieldexists{Month,Year}{\DTLaddcomma
+}{\DTLaddperiod}%
+}{}%
+\DTLformatdate
+\DTLifanybibfieldexists{Month,Year}{\DTLaddperiod}{}%
+}%
+\DTLifbibfieldexists{Note}{%
+\DTLstartsentencespace
+\DTLbibfield{Note}%
+\DTLcheckbibfieldendsperiod{Note}%
+\DTLaddperiod}{}%
+}%
+\renewcommand*{\DTLformatinproceedings}{%
+\DTLifbibfieldexists{Author}{\DTLformatauthorlist
+\DTLaddperiod}{}%
+\DTLifbibfieldexists{Title}{%
+\DTLstartsentencespace
+\DTLbibfield{Title}%
+\DTLcheckbibfieldendsperiod{Title}%
+\DTLaddperiod}{}%
+\DTLifbibfieldexists{CrossRef}{%
+\DTLformatincollproccrossref
+\DTLifbibfieldexists{Pages}{\DTLaddcomma}{%
+\DTLaddperiod}%
+\DTLformatpages
+\DTLifbibfieldexists{Pages}{\DTLaddperiod}{}%
+}{% no cross ref
+\DTLformatinedbooktitle
+\DTLifbibfieldexists{BookTitle}{%
+\DTLifanybibfieldexists{Volume,Series,Pages,Number,Address,%
+Month,Year}{%
+\DTLaddcomma}{\DTLaddperiod}}{}%
+\DTLformatbvolume
+\DTLifbibfieldexists{Volume}{%
+\DTLifanybibfieldexists{Number,Series,Pages,Address,Month,Year}{%
+\DTLaddcomma}{\DTLaddperiod}}{}%
+\DTLformatnumberseries
+\DTLifanybibfieldexists{Number,Series}{%
+\DTLifanybibfieldexists{Pages,Address,Month,Year}{%
+\DTLaddcomma}{\DTLaddperiod}}{}%
+\DTLformatpages
+\DTLifbibfieldexists{Pages}{%
+\DTLifanybibfieldexists{Address,Month,Year}{%
+\DTLaddcomma}{\DTLaddperiod}}{}%
+\DTLifbibfieldexists{Address}{%
+\DTLstartsentencespace
+\DTLbibfield{Address}%
+\DTLcheckbibfieldendsperiod{Address}%
+\DTLifanybibfieldexists{Month,Year}{\DTLaddcomma}{%
+\DTLaddperiod}%
+\DTLformatdate
+\DTLifanybibfieldexists{Month,Year}{\DTLaddperiod}{}%
+\DTLifbibfieldexists{Organization}{%
+\DTLstartsentencespace
+\DTLbibfield{Organization}%
+\DTLcheckbibfieldendsperiod{Organization}%
+\DTLifbibfieldexists{Publisher}{\DTLaddcomma}{%
+\DTLaddperiod}}{}%
+\DTLifbibfieldexists{Publisher}{%
+\DTLstartsentencespace
+\DTLbibfield{Publisher}%
+\DTLcheckbibfieldendsperiod{Publisher}%
+\DTLaddperiod}{}%
+}{%
+\DTLifanybibfieldexists{Publisher,Organization}{%
+\DTLaddperiod}{}%
+\DTLifbibfieldexists{Organization}{%
+\DTLstartsentencespace
+\DTLbibfield{Organization}%
+\DTLcheckbibfieldendsperiod{Organization}%
+\DTLifanybibfieldexists{Publisher,Month,Year}{%
+\DTLaddcomma}{}}{}%
+\DTLifbibfieldexists{Publisher}{%
+\DTLstartsentencespace
+\DTLbibfield{Publisher}%
+\DTLcheckbibfieldendsperiod{Publisher}%
+\DTLifanybibfieldexists{Month,Year}{\DTLaddcomma}{%
+\DTLaddperiod}}{}%
+\DTLformatdate
+\DTLifanybibfieldexists{Month,Year}{\DTLaddperiod}{}%
+}%
+}%
+\DTLifbibfieldexists{Note}{%
+\DTLstartsentencespace
+\DTLbibfield{Note}%
+\DTLcheckbibfieldendsperiod{Note}%
+\DTLaddperiod}{}%
+}%
+\renewcommand*{\DTLformatmanual}{%
+\DTLifbibfieldexists{Author}{\DTLformatauthorlist
+\DTLaddperiod}{%
+\DTLifbibfieldexists{Organization}{%
+\DTLstartsentencespace
+\DTLbibfield{Organization}%
+\DTLcheckbibfieldendsperiod{Organization}%
+\DTLifbibfieldexists{Address}{\DTLaddcomma \DTLbibfield{Address}%
+\DTLcheckbibfieldendsperiod{Address}%
+}{}%
+\DTLaddperiod}{}%
+}%
+\DTLifbibfieldexists{Title}{%
+\DTLstartsentencespace
+{\em\DTLbibfield{Title}}%
+\DTLcheckbibfieldendsperiod{Title}%
+\DTLifbibfieldexists{Author}{%
+\DTLifanybibfieldexists{Organization,Address}{%
+\DTLaddperiod}{\DTLaddcomma}}{%
+\DTLifanybibfieldexists{Organization,Address,Edition,Month,Year}{%
+\DTLaddcomma}{\DTLaddperiod}}}{}%
+\DTLifbibfieldexists{Author}{%
+\DTLifbibfieldexists{Organization}{%
+\DTLstartsentencespace
+\DTLbibfield{Organization}%
+\DTLcheckbibfieldendsperiod{Organization}%
+\DTLifanybibfieldexists{Address,Edition,Month,Year}{%
+\DTLaddcomma}{\DTLaddperiod}}{}%
+\DTLifbibfieldexists{Address}{%
+\DTLstartsentencespace
+\DTLbibfield{Address}%
+\DTLcheckbibfieldendsperiod{Address}%
+\DTLifanybibfieldexists{Edition,Month,Year}{%
+\DTLaddcomma}{\DTLaddperiod}}{}%
+}{%
+\DTLifbibfieldexists{Organization}{}{%
+\DTLifbibfieldexists{Address}{%
+\DTLstartsentencespace
+\DTLbibfield{Address}%
+\DTLcheckbibfieldendsperiod{Address}%
+\DTLifanybibfieldexists{Edition,Month,Year}{\DTLaddcomma}{%
+\DTLaddperiod}}{}}%
+}%
+\DTLifbibfieldexists{Edition}{%
+\protected at edef\@dtl at tmp{\DTLformatedition{\DTLbibfield{Edition}}}%
+\ifDTLmidsentence
+ \@dtl at tmp
+\else
+ \DTLstartsentencespace
+ \expandafter\MakeUppercase\@dtl at tmp
+\fi
+\expandafter\DTLcheckendsperiod\expandafter{\@dtl at tmp}%
+\DTLifanybibfieldexists{Month,Year}{\DTLaddcomma}{%
+\DTLaddperiod}}{}%
+\DTLformatdate
+\DTLifanybibfieldexists{Month,Year}{\DTLaddperiod}{}%
+\DTLifbibfieldexists{Note}{%
+\DTLstartsentencespace
+\DTLbibfield{Note}%
+\DTLcheckbibfieldendsperiod{Note}%
+\DTLaddperiod}{}%
+}%
+\renewcommand*{\DTLformatmastersthesis}{%
+\DTLifbibfieldexists{Author}{\DTLformatauthorlist\DTLaddperiod}{}%
+\DTLifbibfieldexists{Title}{%
+\DTLstartsentencespace
+\DTLbibfield{Title}%
+\DTLcheckbibfieldendsperiod{Title}%
+\DTLaddperiod}{}%
+\DTLifbibfieldexists{Type}{%
+\DTLstartsentencespace
+\DTLbibfield{Type}%
+\DTLcheckbibfieldendsperiod{Type}%
+\DTLifanybibfieldexists{School,Address,Month,Year}{%
+\DTLaddcomma}{\DTLaddperiod}}{}%
+\DTLifbibfieldexists{School}{%
+\DTLstartsentencespace
+\DTLbibfield{School}%
+\DTLcheckbibfieldendsperiod{School}%
+\DTLifanybibfieldexists{Address,Month,Year}{%
+\DTLaddcomma}{\DTLaddperiod}}{}%
+\DTLifbibfieldexists{Address}{%
+\DTLstartsentencespace
+\DTLbibfield{Address}%
+\DTLcheckbibfieldendsperiod{Address}%
+\DTLifanybibfieldexists{Month,Year}{%
+\DTLaddcomma}{\DTLaddperiod}}{}%
+\DTLformatdate
+\DTLifanybibfieldexists{Month,Year}{\DTLaddperiod}{}%
+\DTLifbibfieldexists{Note}{%
+\DTLstartsentencespace
+\DTLbibfield{Note}%
+\DTLcheckbibfieldendsperiod{Note}%
+\DTLaddperiod}{}%
+}%
+\renewcommand*{\DTLformatmisc}{%
+\DTLifbibfieldexists{Author}{\DTLformatauthorlist\DTLaddperiod}{}%
+\DTLifbibfieldexists{Title}{%
+\DTLstartsentencespace
+\DTLbibfield{Title}%
+\DTLcheckbibfieldendsperiod{Title}%
+\DTLifbibfieldexists{HowPublished}{\DTLaddperiod}{%
+\DTLifanybibfieldexists{Month,Year}{\DTLaddcomma}{%
+\DTLaddperiod}%
+}%
+\DTLmidsentencefalse}{}%
+\DTLifbibfieldexists{HowPublished}{%
+\DTLstartsentencespace
+\DTLbibfield{HowPublished}%
+\DTLcheckbibfieldendsperiod{HowPublished}%
+\DTLifanybibfieldexists{Month,Year}{\DTLaddcomma}{%
+\DTLaddperiod}}{}%
+\DTLformatdate
+\DTLifanybibfieldexists{Month,Year}{\DTLaddperiod}{}%
+\DTLifbibfieldexists{Note}{%
+\DTLstartsentencespace
+\DTLbibfield{Note}%
+\DTLcheckbibfieldendsperiod{Note}%
+\DTLaddperiod}{}%
+}%
+\renewcommand*{\DTLformatphdthesis}{%
+\DTLifbibfieldexists{Author}{\DTLformatauthorlist\DTLaddperiod}{}%
+\DTLifbibfieldexists{Title}{%
+\DTLstartsentencespace
+{\em\DTLbibfield{Title}}%
+\DTLcheckbibfieldendsperiod{Title}%
+\DTLaddperiod}{}%
+\DTLifbibfieldexists{Type}{%
+\DTLstartsentencespace
+\DTLbibfield{Type}%
+\DTLcheckbibfieldendsperiod{Type}%
+\DTLifanybibfieldexists{School,Address,Month,Year}{%
+\DTLaddcomma}{\DTLaddperiod}}{}%
+\DTLifbibfieldexists{School}{%
+\DTLstartsentencespace
+\DTLbibfield{School}%
+\DTLcheckbibfieldendsperiod{School}%
+\DTLifanybibfieldexists{Address,Month,Year}{%
+\DTLaddcomma}{\DTLaddperiod}}{}%
+\DTLifbibfieldexists{Address}{%
+\DTLstartsentencespace
+\DTLbibfield{Address}%
+\DTLcheckbibfieldendsperiod{Address}%
+\DTLifanybibfieldexists{Month,Year}{%
+\DTLaddcomma}{\DTLaddperiod}}{}%
+\DTLformatdate
+\DTLifanybibfieldexists{Month,Year}{\DTLaddperiod}{}%
+\DTLifbibfieldexists{Note}{%
+\DTLstartsentencespace
+\DTLbibfield{Note}%
+\DTLcheckbibfieldendsperiod{Note}%
+\DTLaddperiod}{}%
+}%
+\renewcommand*{\DTLformatproceedings}{%
+\DTLifbibfieldexists{Editor}{%
+\DTLformateditorlist\DTLaddperiod}{%
+\DTLifbibfieldexists{Organization}{%
+\DTLstartsentencespace
+\DTLbibfield{Organization}%
+\DTLcheckbibfieldendsperiod{Organization}%
+\DTLaddperiod}{}}%
+\DTLifbibfieldexists{Title}{%
+\DTLstartsentencespace
+{\em\DTLbibfield{Title}}%
+\DTLcheckbibfieldendsperiod{Title}%
+\DTLifanybibfieldexists{Volume,Number,Address,Editor,Publisher,%
+Month,Year}{\DTLaddcomma}{\DTLaddperiod}%
+}{}%
+\DTLformatbvolume
+\DTLifbibfieldexists{Volume}{%
+\DTLifanybibfieldexists{Number,Address,Editor,Publisher,%
+Month,Year}{\DTLaddcomma}{\DTLaddperiod}}{}%
+\DTLformatnumberseries
+\DTLifbibfieldexists{Number}{%
+\DTLifanybibfieldexists{Address,Editor,Publisher,%
+Month,Year}{\DTLaddcomma}{\DTLaddperiod}}{}%
+\DTLifbibfieldexists{Address}{%
+\DTLstartsentencespace
+\DTLbibfield{Address}%
+\DTLcheckbibfieldendsperiod{Address}%
+\DTLifanybibfieldexists{Month,Year}{\DTLaddcomma}{\DTLaddperiod}%
+\DTLformatdate
+\DTLifanybibfieldexists{Month,Year}{\DTLaddperiod}{}%
+\DTLifbibfieldexists{Editor}{\DTLifbibfieldexists{Organization}{%
+\DTLstartsentencespace
+\DTLbibfield{Organization}%
+\DTLcheckbibfieldendsperiod{Organization}%
+\DTLifbibfieldexists{Publisher}{%
+\DTLaddcomma}{\DTLaddperiod}}{}}{}%
+\DTLifbibfieldexists{Publisher}{%
+\DTLstartsentencespace
+\DTLbibfield{Publisher}%
+\DTLcheckbibfieldendsperiod{Publisher}%
+\DTLaddperiod
+}{}%
+}{% no address
+\DTLifbibfieldexists{Editor}{%
+\DTLifbibfieldexists{Organization}{%
+\DTLstartsentencespace
+\DTLbibfield{Organization}%
+\DTLcheckbibfieldendsperiod{Organization}%
+\DTLifanybibfieldexists{Publisher,Month,Year}{%
+\DTLaddcomma}{\DTLaddperiod}}{}%
+}{}%
+\DTLifbibfieldexists{Publisher}{%
+\DTLstartsentencespace
+\DTLbibfield{Publisher}%
+\DTLcheckbibfieldendsperiod{Publisher}%
+\DTLifanybibfieldexists{Month,Year}{\DTLaddcomma}{\DTLaddperiod}}{}%
+\DTLformatdate
+\DTLifanybibfieldexists{Month,Year}{\DTLaddperiod}{}%
+}%
+\DTLifbibfieldexists{Note}{%
+\DTLstartsentencespace
+\DTLbibfield{Note}%
+\DTLcheckbibfieldendsperiod{Note}%
+\DTLaddperiod}{}%
+}%
+\renewcommand*{\DTLformattechreport}{%
+\DTLifbibfieldexists{Author}{\DTLformatauthorlist\DTLaddperiod}{}%
+\DTLifbibfieldexists{Title}{%
+\DTLstartsentencespace
+\DTLbibfield{Title}%
+\DTLcheckbibfieldendsperiod{Title}%
+\DTLaddperiod}{}%
+\DTLifbibfieldexists{Type}{%
+\DTLstartsentencespace
+\DTLbibfield{Type}%
+\DTLcheckbibfieldendsperiod{Type}%
+\DTLifbibfieldexists{Number}{~}{}}{}%
+\DTLifbibfieldexists{Number}{%
+\DTLstartsentencespace
+\DTLbibfield{Number}%
+\DTLcheckbibfieldendsperiod{Number}%
+}{}%
+\DTLifanybibfieldexists{Type,Number}{%
+\DTLifanybibfieldexists{Institution,Address,Month,Year}{\DTLaddcomma
+}{\DTLaddperiod}}{}%
+\DTLifbibfieldexists{Institution}{%
+\DTLstartsentencespace
+\DTLbibfield{Institution}%
+\DTLcheckbibfieldendsperiod{Institution}%
+\DTLifanybibfieldexists{Address,Month,Year}{\DTLaddcomma
+}{\DTLaddperiod}}{}%
+\DTLifbibfieldexists{Address}{%
+\DTLstartsentencespace
+\DTLbibfield{Address}%
+\DTLcheckbibfieldendsperiod{Address}%
+\DTLifanybibfieldexists{Month,Year}{\DTLaddcomma
+}{\DTLaddperiod}}{}%
+\DTLformatdate
+\DTLifanybibfieldexists{Month,Year}{\DTLaddperiod}{}%
+\DTLifbibfieldexists{Note}{%
+\DTLstartsentencespace
+\DTLbibfield{Note}%
+\DTLcheckbibfieldendsperiod{Note}%
+\DTLaddperiod}{}%
+}%
+\renewcommand*{\DTLformatunpublished}{%
+\DTLifbibfieldexists{Author}{\DTLformatauthorlist\DTLaddperiod}{}%
+\DTLifbibfieldexists{Title}{%
+\DTLstartsentencespace
+\DTLbibfield{Title}%
+\DTLcheckbibfieldendsperiod{Title}%
+\DTLaddperiod}{}%
+\DTLifbibfieldexists{Note}{%
+\DTLstartsentencespace
+\DTLbibfield{Note}%
+\DTLcheckbibfieldendsperiod{Note}%
+\DTLifanybibfieldexists{Month,Year}{\DTLaddcomma}{\DTLaddperiod}}{}%
+\DTLformatdate
+\DTLifanybibfieldexists{Month,Year}{\DTLaddperiod}{}%
+}%
+}
+\newcommand*{\DTLformatbooktitle}[1]{\emph{#1}}
+\newcommand{\dtlbst at abbrv}{%
+\dtlbst at plain
+\renewcommand*{\DTLformatauthor}[4]{%
+\DTLformatabbrvforenames{##4}
+\DTLformatvon{##1}%
+\DTLformatsurname{##2}%
+\DTLformatjr{##3}}
+\renewcommand*{\DTLformateditor}[4]{%
+\DTLformatabbrvforenames{##4}
+\DTLformatvon{##1}%
+\DTLformatsurname{##2}%
+\DTLformatjr{##3}}
+\let\DTLmonthname\dtl at abbrvmonthname
+\renewcommand*{\DTLacmcs}{ACM Comput.\ Surv.}
+\renewcommand*{\DTLacta}{Acta Inf.}
+\renewcommand*{\DTLcacm}{Commun.\ ACM}
+\renewcommand*{\DTLibmjrd}{IBM J.\ Res.\ Dev.}
+\renewcommand*{\DTLibmsj}{IBM Syst.~J.}
+\renewcommand*{\DTLieeese}{IEEE Trans. Softw.\ Eng.}
+\renewcommand*{\DTLieeetc}{IEEE Trans.\ Comput.}
+\renewcommand*{\DTLieeetcad}{IEEE Trans.\ Comput.-Aided Design
+Integrated Circuits}
+\renewcommand*{\DTLipl}{Inf.\ Process.\ Lett.}
+\renewcommand*{\DTLjacm}{J.~ACM}
+\renewcommand*{\DTLjcss}{J.~Comput.\ Syst.\ Sci.}
+\renewcommand*{\DTLscp}{Sci.\ Comput.\ Programming}
+\renewcommand*{\DTLsicomp}{SIAM J.~Comput.}
+\renewcommand*{\DTLtocs}{ACM Trans.\ Comput.\ Syst.}
+\renewcommand*{\DTLtods}{ACM Trans.\ Database Syst.}
+\renewcommand*{\DTLtog}{ACM Trans.\ Gr.}
+\renewcommand*{\DTLtoms}{ACM Trans.\ Math. Softw.}
+\renewcommand*{\DTLtoois}{ACM Trans. Office Inf.\ Syst.}
+\renewcommand*{\DTLtoplas}{ACM Trans.\ Prog. Lang.\ Syst.}
+\renewcommand*{\DTLtcs}{Theoretical Comput.\ Sci.}
+}
+\newcommand{\dtlbst at alpha}{%
+\dtlbst at plain
+\renewenvironment{DTLthebibliography}[2][\boolean{true}]{%
+\dtl at createalphabiblabels{##1}{##2}%
+\begin{thebibliography}{\@dtl at widestlabel}%
+}{\end{thebibliography}}%
+\renewcommand*{\DTLbibitem}{%
+\expandafter\bibitem\expandafter
+ [\csname dtl at biblabel@\DBIBcitekey\endcsname]{\DBIBcitekey}}%
+\renewcommand*{\DTLmbibitem}[1]{%
+\expandafter\bibitem\expandafter
+ [\csname dtl at biblabel@\DBIBcitekey\endcsname]{##1@\DBIBcitekey}}%
+}
+\newcommand*{\dtl at createalphabiblabels}[2]{%
+\dtl at message{Creating bib labels}%
+\begingroup
+\gdef\@dtl at widestlabel{}%
+\dtl at widest=0pt\relax
+\DTLforeachbibentry[#1]{#2}{%
+\dtl at message{\DBIBcitekey}%
+\DTLifbibfieldexists{Author}{%
+ \dtl at listgetalphalabel{\@dtl at thislabel}{\@dtl at key@Author}%
+}{%
+\DTLifbibfieldexists{Editor}{%
+ \dtl at listgetalphalabel{\@dtl at thislabel}{\@dtl at key@Editor}%
+ }{%
+ \DTLifbibfieldexists{Key}{%
+ \expandafter\dtl at get@firstthree\expandafter
+ {\@dtl at key@Key}{\@dtl at thislabel}%
+ }{%
+ \DTLifbibfieldexists{Organization}{%
+ \expandafter\dtl at get@firstthree\expandafter
+ {\@dtl at key@Organization}{\@dtl at thislabel}%
+ }{%
+ \expandafter\dtl at get@firstthree\expandafter
+ {\DBIBentrytype}{\@dtl at thislabel}%
+ }%
+ }}}%
+\DTLifbibfieldexists{Year}{}{\DTLifbibfieldexists{CrossRef}{%
+\DTLgetvalueforkey{\@dtl at key@Year}{Year}{#2}{CiteKey}{%
+\@dtl at key@CrossRef}}{}}%
+\DTLifbibfieldexists{Year}{%
+\expandafter\dtl at get@yearsuffix\expandafter{\@dtl at key@Year}%
+\expandafter\toks@\expandafter{\@dtl at thislabel}%
+\expandafter\@dtl at toks\expandafter{\@dtl at year}%
+\edef\@dtl at thislabel{\the\toks@\the\@dtl at toks}%
+}{}%
+\let\@dtl at s@thislabel=\@dtl at thislabel
+\@onelevel at sanitize\@dtl at s@thislabel
+\@ifundefined{c at biblabel@\@dtl at s@thislabel}{%
+\newcounter{biblabel@\@dtl at s@thislabel}%
+\setcounter{biblabel@\@dtl at s@thislabel}{1}%
+\expandafter\edef\csname @dtl at bibfirst@\@dtl at s@thislabel\endcsname{%
+\DBIBcitekey}%
+\expandafter\global
+\expandafter\let\csname dtl at biblabel@\DBIBcitekey\endcsname=
+ \@dtl at thislabel
+}{%
+\expandafter\ifnum\csname c at biblabel@\@dtl at s@thislabel\endcsname=1\relax
+ \expandafter\let\expandafter\@dtl at tmp
+ \csname @dtl at bibfirst@\@dtl at s@thislabel\endcsname
+ \expandafter\protected at xdef\csname dtl at biblabel@\@dtl at tmp\endcsname{%
+ \@dtl at thislabel a}%
+\fi
+\stepcounter{biblabel@\@dtl at s@thislabel}%
+\expandafter\protected at xdef\csname dtl at biblabel@\DBIBcitekey\endcsname{%
+ \@dtl at thislabel\alph{biblabel@\@dtl at s@thislabel}}%
+}%
+\settowidth{\dtl at tmplength}{%
+ \csname dtl at biblabel@\DBIBcitekey\endcsname}%
+\ifdim\dtl at tmplength>\dtl at widest
+ \dtl at widest=\dtl at tmplength
+ \expandafter\global\expandafter\let\expandafter\@dtl at widestlabel
+ \expandafter=\csname dtl at biblabel@\DBIBcitekey\endcsname
+\fi
+}%
+\endgroup
+}
+\newcommand*{\dtl at listgetalphalabel}[2]{%
+\@dtl at authorcount=0\relax
+\@for\@dtl at author:=#2\do{%
+\advance\@dtl at authorcount by 1\relax}%
+\ifnum\@dtl at authorcount=1\relax
+ \expandafter\dtl at getsinglealphalabel#2{#1}\relax
+\else
+ {%
+ \xdef#1{}%
+ \@dtl at tmpcount=0\relax
+ \def\DTLafterinitials{}\def\DTLbetweeninitials{}%
+ \def\DTLafterinitialbeforehyphen{}\def\DTLinitialhyphen{}%
+ \@for\@dtl at author:=#2\do{%
+ \expandafter\dtl at getauthorinitial\@dtl at author
+ \expandafter\toks@\expandafter{\@dtl at tmp}%
+ \expandafter\@dtl at toks\expandafter{#1}%
+ \xdef#1{\the\@dtl at toks\the\toks@}%
+ \advance\@dtl at tmpcount by 1\relax
+ \ifnum\@dtl at tmpcount>2\relax\@endfortrue\fi
+ }}%
+\fi
+}
+\newcommand*{\dtl at getauthorinitial}[4]{%
+\def\@dtl at vonpart{#1}%
+\ifx\@dtl at vonpart\@empty
+ \DTLstoreinitials{#2}{\@dtl at tmp}%
+\else
+ \DTLstoreinitials{#1 #2}{\@dtl at tmp}%
+\fi}
+\newcommand*{\dtl at getsinglealphalabel}[5]{%
+\def\@dtl at vonpart{#1}%
+\ifx\@dtl at vonpart\@empty
+ \DTLifSubString{#2}{-}{%
+ {\def\DTLafterinitials{}\def\DTLbetweeninitials{}%
+ \def\DTLafterinitialbeforehyphen{}%
+ \def\DTLinitialhyphen{}%
+ \DTLstoreinitials{#2}{\@dtl at tmp}\global\let#5=\@dtl at tmp}%
+ }{%
+ \dtl at getfirstthree{#5}#2{}{}{}{}\@nil
+ }
+\else
+ {\def\DTLafterinitials{}\def\DTLbetweeninitials{}%
+ \def\DTLafterinitialbeforehyphen{}%
+ \def\DTLinitialhyphen{}%
+ \DTLstoreinitials{#1 #2}{\@dtl at tmp}\global\let#5=\@dtl at tmp}%
+\fi
+}
+\def\dtl at getfirstthree#1#2#3#4#5\@nil{%
+ \def#1{#2#3#4}%
+}
+\newcommand*{\dtl at get@firstthree}[2]{%
+\dtl at getfirstthree#2#1{}{}{}{}{}\@nil}
+\newcommand*{\dtl at get@yearsuffix}[1]{%
+\dtl at getyearsuffix#1\@nil\relax\relax}
+
+\def\dtl at getyearsuffix#1#2#3{%
+\def\@dtl at argi{#1}\def\@dtl at argii{#2}%
+\def\@dtl at argiii{#3}%
+\ifx\@dtl at argi\@nnil
+ \def\@dtl at year{}%
+ \let\@dtl at donext=\relax
+\else
+ \ifx\@dtl at argii\@nnil
+ \dtl at ifsingle{#1}{%
+ \def\@dtl at year{#1}%
+ \let\@dtl at donext=\relax
+ }{%
+ \def\@dtl at donext{\dtl at getyearsuffix#1#2#3}%
+ }%
+ \else
+ \ifx\@dtl at argiii\@nnil
+ \dtl at ifsingle{#1}{%
+ \dtl at ifsingle{#2}{%
+ \def\@dtl at year{#1#2}%
+ \let\@dtl at donext=\relax
+ }{%
+ \def\@dtl at donext{\dtl at getyearsuffix#2#3}%
+ }%
+ }{%
+ \def\@dtl at donext{\dtl at getyearsuffix#2#3}%
+ }%
+ \else
+ \def\@dtl at donext{\dtl at getyearsuffix{#2}{#3}}%
+ \fi
+ \fi
+\fi
+\@dtl at donext
+}
+\newcommand*{\DTLbibliographystyle}[1]{%
+\@ifundefined{dtlbst@#1}{\PackageError{databib}{Unknown
+bibliography style `#1'}{}}{\csname dtlbst@#1\endcsname}}
+\DTLbibliographystyle{\dtlbib at style}
+\newcommand*{\DTLmultibibs}[1]{%
+\@for\@dtl at af:=#1\do{%
+\@ifundefined{dtl at aux@\@dtl at af}{%
+\expandafter\newwrite\csname dtl at aux@\@dtl at af\endcsname
+\expandafter\immediate
+\expandafter\openout\csname dtl at aux@\@dtl at af\endcsname=\@dtl at af.aux
+\expandafter\def\csname b@\@dtl at af @*\endcsname{}%
+}{%
+\PackageError{databib}{Can't create auxiliary file `\@dtl at af.aux',
+\expandafter\string\csname dtl at aux@\@dtl at af\endcsname\space
+already exists}{}}}}
+\@onlypreamble{\DTLmultibibs}
+\newcommand*{\DTLcite}{\@ifnextchar[{\@tempswatrue \dtl at citex
+}{\@tempswafalse \dtl at citex[]}}
+\def\dtl at citex[#1]#2#3{%
+\leavevmode\let\@citea\@empty
+\@cite{\@for\@citeb:=#3\do{\@citea
+ \def\@citea{,\penalty \@m \ }%
+ \edef\@citeb{\expandafter\@firstofone\@citeb\@empty}%
+ \if at filesw
+ \@ifundefined{dtl at aux@#2}{%
+ \PackageError{databib}{multibib `#2' not defined}{%
+ You need to define `#2' in \string\DTLmutlibibs}%
+ }{%
+ \expandafter\immediate
+ \expandafter\write\csname dtl at aux@#2\endcsname{%
+ \string\citation{\@citeb}}%
+ }%
+ \fi
+ \@ifundefined{b@#2@\@citeb}{%
+ \hbox{\reset at font\bfseries ?}%
+ \G at refundefinedtrue
+ \@latex at warning{Citation `\@citeb ' on page \thepage \space
+ undefined}%
+ }{%
+ \@cite at ofmt{\csname b@#2@\@citeb \endcsname }%
+ }%
+}}{#1}%
+}
+\newcommand*{\DTLnocite}[2]{%
+\@ifundefined{dtl at aux@#1}{%
+ \PackageError{databib}{multibib `#1' not defined}{%
+ You need to define `#1' in \string\DTLmutlibibs}%
+}{%
+ \@bsphack
+ \ifx\@onlypreamble\document
+ \@for\@citeb:=#2\do{%
+ \edef\@citeb{\expandafter\@firstofone\@citeb}%
+ \if at filesw
+ \expandafter\immediate
+ \expandafter\write\csname dtl at aux@#1\endcsname{%
+ \string\citation{\@citeb}}%
+ \fi
+ \@ifundefined{b@#1@\@citeb}{%
+ \G at refundefinedtrue
+ \@latex at warning{Citation `\@citeb ' undefined}}{}%
+ }%
+ \else
+ \@latex at error{Cannot be used in preamble}\@eha
+ \fi
+ \@esphack
+}%
+}
+\newcommand*{\DTLloadmbbl}[3]{%
+\@ifundefined{dtl at aux@#1}{%
+ \PackageError{databib}{multibib `#1' not defined}{%
+ You need to define `#1' in \string\DTLmutlibibs}%
+}{%
+ \if at filesw
+ \expandafter\immediate\expandafter
+ \write\csname dtl at aux@#1\endcsname{\string\bibstyle{databib}}%
+ \expandafter\immediate\expandafter
+ \write\csname dtl at aux@#1\endcsname{\string\bibdata{#3}}%
+ \fi
+ \DTLnewdb{#2}%
+ \edef\DTLBIBdbname{#2}%
+ \@input@{#1.bbl}%
+}%
+}
+\newcommand*{\DTLmbibliography}[3][\boolean{true}]{%
+\begin{DTLthebibliography}[#1]{#3}%
+\DTLforeachbibentry[#1]{#3}{%
+\DTLmbibitem{#2} \DTLformatbibentry \DTLendbibitem
+}%
+\end{DTLthebibliography}%
+}
+% \end{macrocode}
+%\iffalse
+% \begin{macrocode}
+%</databib-2019-09-27.sty>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*datagidx-2019-09-27.sty>
+% \end{macrocode}
+%\fi
+%\subsection{Rollback v2.32 (datagidx-2019-09-27.sty)}
+% \begin{macrocode}
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{datagidx}[2019/09/27 v2.32 (NLCT)]
+\RequirePackage{datatool}[=v2.32]
+\RequirePackage{etoolbox}
+\RequirePackage{xkeyval}
+\RequirePackage{mfirstuc}
+\RequirePackage{xfor}
+\RequirePackage{multicol}
+\RequirePackage{textcase}
+\RequirePackage{afterpage}
+\newcommand*{\datagidx at columns}{2}
+\newcommand*{\DTLgidxSetColumns}[1]{%
+ \DTLifint{#1}%
+ {%
+ \def\datagidx at columns{#1}%
+ }%
+ {%
+ \PackageError{datagidx}%
+ {Number of columns must be an integer}%
+ {%
+ You have requested `#1' columns, which can't be parsed as a
+ number%
+ }%
+ }%
+}
+\newcounter{DTLgidxChildCount}
+\def\theHDTLgidxChildCount{\Label.\arabic{DTLgidxChildCount}}
+\newcommand*{\DTLgidxChildCountLabel}{\theDTLgidxChildCount) }
+\newcommand*{\DTLgidxChildStyle}[1]{#1}
+\newcommand*{\datagidx at setchildstyle}[1]{%
+ \ifcase#1\relax
+ \renewcommand*{\DTLgidxChildStyle}[1]{##1}%
+ \or
+ \renewcommand*{\DTLgidxChildStyle}[1]{%
+ \DTLgidxChildCountLabel
+ }%
+ \fi
+}
+\newcommand{\datagidx at foreachchild}{%
+ \datagidx at sort@foreachchild
+}
+\newcommand*{\datagidx at setchildsort}[1]{%
+ \ifcase#1\relax
+ \renewcommand*{\datagidx at foreachchild}{%
+ \datagidx at sort@foreachchild
+ }%
+ \or
+ \renewcommand*{\datagidx at foreachchild}{%
+ \datagidx at unsort@foreachchild
+ }%
+ \fi
+}
+\newcommand*{\DTLgidxPostName}{ }
+\newcommand*{\DTLgidxPostChildName}{\DTLgidxPostName}
+\newcommand*{\DTLgidxNameCase}[1]{#1}
+\newcommand*{\datagidx at setnamecase}[1]{%
+ \ifcase#1\relax
+ \renewcommand*{\DTLgidxNameCase}[1]{##1}%
+ \or
+ \let\DTLgidxNameCase\MakeTextUppercase
+ \or
+ \let\DTLgidxNameCase\MakeTextLowercase
+ \or
+ \let\DTLgidxNameCase\xmakefirstuc
+ \or
+ \let\DTLgidxNameCase\xcapitalisewords
+ \fi
+}
+\newcommand*{\DTLgidxNameFont}[1]{\textnormal{#1}}
+\newcommand*{\DTLgidxPostDescription}{}
+\newcommand*{\datagidx at setpostdesc}[1]{%
+ \ifcase#1\relax
+ \renewcommand*{\DTLgidxPostDescription}{}%
+ \or
+ \renewcommand*{\DTLgidxPostDescription}{.}%
+ \fi
+ }
+\newcommand*{\DTLgidxPreLocation}{\enspace}
+\newcommand*{\datagidx at setprelocation}[1]{%
+ \ifcase#1\relax
+ \renewcommand*{\DTLgidxPreLocation}{}%
+ \or
+ \renewcommand*{\DTLgidxPreLocation}{\enspace}%
+ \or
+ \renewcommand*{\DTLgidxPreLocation}{ }%
+ \or
+ \renewcommand*{\DTLgidxPreLocation}{\dotfill}%
+ \or
+ \renewcommand*{\DTLgidxPreLocation}{\hfill}%
+ \fi
+ }
+\newcommand*{\DTLgidxLocation}{\dtldolocationlist}
+\newcommand*{\datagidx at setlocation}[1]{%
+ \ifcase#1\relax
+ \renewcommand*{\DTLgidxLocation}{}%
+ \or
+ \renewcommand*{\DTLgidxLocation}{\dtldolocationlist}%
+ \or
+ \renewcommand*{\DTLgidxLocation}{\dtldofirstlocation}%
+ \fi
+}
+\newcommand*{\DTLgidxSee}{%
+ \DTLifnull{\See}%
+ {}%
+ {%
+ \DTLgidxPreLocation
+ \DTLgidxFormatSee{\seename}{\See}%
+ }%
+}
+\newcommand*{\DTLgidxSeeAlso}{%
+ \DTLifnull{\SeeAlso}%
+ {}%
+ {%
+ \DTLgidxFormatSeeAlso{\seealsoname}{\SeeAlso}%
+ }%
+}
+\newcommand*{\DTLgidxChildrenSeeAlso}{%
+ \DTLgidxChildren
+ \DTLgidxSeeAlso
+}
+\newcommand*{\datagidx at setsee}[1]{%
+ \ifcase#1\relax
+ \renewcommand*{\DTLgidxSee}{%
+ \DTLifnull{\See}{}%
+ {%
+ , \DTLgidxFormatSee{\seename}{\See}%
+ }%
+ }%
+ \or
+ \renewcommand*{\DTLgidxSee}{%
+ \DTLifnull{\See}{}
+ {%
+ \space(\DTLgidxFormatSee{\seename}{\See})%
+ }%
+ }%
+ \or
+ \renewcommand*{\DTLgidxSee}{%
+ \DTLifnull{\See}{}%
+ {%
+ . \DTLgidxFormatSee{\xmakefirstuc{\seename}}{\See}%
+ }%
+ }%
+ \or
+ \renewcommand*{\DTLgidxSee}{%
+ \DTLifnull{\See}{}
+ {%
+ \space\DTLgidxFormatSee{\seename}{\See}%
+ }%
+ }%
+ \or
+ \renewcommand*{\DTLgidxSee}{%
+ \DTLifnull{\See}{}
+ {%
+ \DTLgidxFormatSee{\seename}{\See}%
+ }%
+ }%
+ \or
+ \renewcommand*{\DTLgidxSee}{%
+ \DTLifnull{\See}{}
+ {%
+ ; \DTLgidxFormatSee{\seename}{\See}%
+ }%
+ }%
+ \or
+ \renewcommand*{\DTLgidxSee}{%
+ \DTLifnull{\See}{}
+ {%
+ \DTLgidxPreLocation\DTLgidxFormatSee{\seename}{\See}%
+ }%
+ }%
+ \fi
+}
+\newcommand*{\DTLgidxSymDescSep}{\space}
+\newlength\datagidxsymbolwidth
+\newlength\datagidxlocationwidth
+\newcommand{\DTLgidxFormatDesc}[1]{#1}
+\newcommand*{\DTLgidxSymbolDescription}{%
+ \DTLgidxSymbolDescLeft
+ \DTLgidxSymbolDescRight
+}
+\newcommand*{\DTLgidxSymbolDescLeft}{%
+ \ifdefempty{\Symbol}{}{(\Symbol)\DTLgidxSymDescSep}%
+}
+\newcommand*{\DTLgidxSymbolDescRight}{%
+ \ifdefempty{\Description}{}%
+ {%
+ \DTLgidxFormatDesc{\Description}\DTLgidxPostDescription
+ }%
+}
+\newif\if at datagidxsymbolleft
+\@datagidxsymbollefttrue
+\newcommand*{\datagidx at formatsymdesc}[1]{%
+ \ifcase#1\relax
+ \renewcommand*{\DTLgidxSymbolDescLeft}{%
+ \ifdefempty{\Symbol}{}{\Symbol}%
+ }%
+ \renewcommand*{\DTLgidxSymbolDescRight}{}%
+ \@datagidxsymbollefttrue
+ \or
+ \renewcommand*{\DTLgidxSymbolDescLeft}{%
+ \ifdefempty{\Description}{}%
+ {%
+ \DTLgidxFormatDesc{\Description}\DTLgidxPostDescription
+ }%
+ }%
+ \renewcommand*{\DTLgidxSymbolDescRight}{}%
+ \@datagidxsymbolleftfalse
+ \or
+ \renewcommand*{\DTLgidxSymbolDescLeft}{%
+ \ifdefempty{\Symbol}{}{(\Symbol)\DTLgidxSymDescSep}%
+ }%
+ \renewcommand*{\DTLgidxSymbolDescRight}{%
+ \ifdefempty{\Description}{}%
+ {%
+ \DTLgidxFormatDesc{\Description}\DTLgidxPostDescription
+ }%
+ }%
+ \@datagidxsymbollefttrue
+ \or
+ \renewcommand*{\DTLgidxSymbolDescLeft}{%
+ \ifdefempty{\Description}{}%
+ {%
+ \DTLgidxFormatDesc{\Description}%
+ \DTLgidxPostDescription\DTLgidxSymDescSep
+ }%
+ }%
+ \renewcommand*{\DTLgidxSymbolDescRight}{%
+ \ifdefempty{\Symbol}{}{(\Symbol)}%
+ }%
+ \@datagidxsymbolleftfalse
+ \or
+ \renewcommand*{\DTLgidxSymbolDescLeft}{%
+ \ifdefempty{\Symbol}{}{\Symbol\DTLgidxSymDescSep}%
+ }%
+ \renewcommand*{\DTLgidxSymbolDescRight}{%
+ \ifdefempty{\Description}{}%
+ {%
+ \DTLgidxFormatDesc{\Description}%
+ \DTLgidxPostDescription
+ }%
+ }%
+ \@datagidxsymbollefttrue
+ \or
+ \renewcommand*{\DTLgidxSymbolDescLeft}{%
+ \ifdefempty{\Description}{}%
+ {%
+ \DTLgidxFormatDesc{\Description}%
+ \DTLgidxPostDescription\DTLgidxSymDescSep
+ }%
+ }%
+ \renewcommand*{\DTLgidxSymbolDescRight}{%
+ \ifdefempty{\Symbol}{}{\Symbol}%
+ }%
+ \@datagidxsymbolleftfalse
+ \fi
+ }
+\newcommand*{\DTLgidxSetCompositor}[1]{%
+ \undef\datagidx at docomplist
+ \DeclareListParser{\datagidx at docomplist}{#1}%
+ \def\datagidx at compositor{#1}%
+}
+\DTLgidxSetCompositor{.}
+\newcommand*{\datagidx at do@sort}{\datagidx at sort}
+\newcommand*{\datagidx at optimize@sort}{%
+ \ifdef\datagidx at do@optimize at sort
+ {%
+ \datagidx at sort
+ }%
+ {%
+ \protected at write\@auxout{}{%
+ \string\gdef\string\datagidx at do@optimize at sort{}%
+ }%
+ \global\let\@datagidx at dorerun@warn at sort\@data at rerun@warn at sort
+ }%
+}
+\newif\if at datagidx@warn
+\@datagidx at warntrue
+\newcommand*\@datagidx at dorerun@warn{}
+\AtEndDocument{\if at datagidx@warn\@datagidx at dorerun@warn\fi}
+\newcommand*\@datagidx at dorerun@warn at sort{}
+\AtEndDocument{\if at datagidx@warn\@datagidx at dorerun@warn at sort\fi}
+\newcommand*\@data at rerun@warn at sort{%
+ \PackageWarningNoLine{datagidx}{Rerun required to sort the
+ index/glossary databases}%
+}
+\newcommand*\@data at rerun@warn{%
+ \PackageWarningNoLine{datagidx}{Rerun required to ensure the
+ index/glossary location lists are up-to-date}%
+}
+\newcommand*{\datagidx at do@highopt at optimize}{%
+ \renewcommand*{\datagidx at do@sort}{%
+ \ifcsdef{datagidx at do@highopt at sort@\DTLgidxCurrentdb}%
+ {%
+ \csuse{datagidx at do@highopt at sort@\DTLgidxCurrentdb}%
+ }%
+ {%
+ }%
+ \bgroup
+ \def\dtl at saverawdbhook{%
+ \let\db at col@id at w\@datagidx at db@col at id@w
+ \def\DTLgidxName{\string\DTLgidxName\space}%
+ \def\DTLgidxMac{\string\DTLgidxMac\space}%
+ \def\DTLgidxRank{\string\DTLgidxRank\space}%
+ \def\DTLgidxParen{\string\DTLgidxParen\space}%
+ \def\DTLgidxParticle{\string\DTLgidxParticle\space}%
+ \def\DTLgidxOffice{\string\DTLgidxOffice\space}%
+ \def\DTLgidxSaint{\string\DTLgidxSaint\space}%
+ \def\DTLgidxPlace{\string\DTLgidxPlace\space}%
+ \def\DTLgidxIgnore{\string\DTLgidxIgnore\space}%
+ \def\DTLgidxNameNum{\string\DTLgidxNameNum\space}%
+ \def\DTLgidxSubject{\string\DTLgidxSubject\space}%
+ }%
+ \DTLsaverawdb{\DTLgidxCurrentdb}{\datagidxhighoptfilename\DTLgidxCurrentdb}%
+ \egroup
+ }%
+ \def\newgidx{\datagidx at highopt@newgidx}%
+ \def\newterm{\datagidx at highopt@newterm}%
+}
+\def\@datagidx at db@col at id@w#1\db at col@id at end@\db at col@elt at w#2\db at col@elt at end@\db at col@id at w#3\db at col@id at end@{%
+ \expandafter\@gobble\string\%^^J
+ \string\db at col@id at w\space #1%
+ \expandafter\@gobble\string\%^^J
+ \string\db at col@id at end@\space
+ \expandafter\@gobble\string\%^^J
+ \string\db at col@elt at w\space
+ \expandafter\ifnum\csname dtl at ci@\DTLgidxCurrentdb @Used\endcsname=#1\space
+ 0%
+ \else
+ \expandafter\ifnum\csname dtl at ci@\DTLgidxCurrentdb @Location\endcsname=#1\space
+ \else
+ \expandafter\ifnum\csname dtl at ci@\DTLgidxCurrentdb @CurrentLocation\endcsname=#1\space
+ \else
+ \expandafter\ifnum\csname dtl at ci@\DTLgidxCurrentdb @Sort\endcsname=#1\space
+ \protect#2%
+ \else
+ #2%
+ \fi
+ \fi
+ \fi
+ \fi
+ \expandafter\@gobble\string\%^^J
+ \string\db at col@elt at end@\space
+ \expandafter\@gobble\string\%^^J
+ \string\db at col@id at w\space #3%
+ \expandafter\@gobble\string\%^^J
+ \string\db at col@id at end@\space
+}
+\newcommand*{\datagidx at do@highopt at update}[1]{}
+\newcommand*{\datagidxhighoptfilename}[1]{\jobname-#1.gidx}
+\define at choicekey{datagidx.sty}{optimize}[\val\nr]%
+ {off,low,high}[high]%
+ {%
+ \ifcase\nr\relax
+ \renewcommand*{\datagidx at do@sort}{\datagidx at sort}
+ \or
+ \renewcommand*{\datagidx at do@sort}{\datagidx at optimize@sort}
+ \or
+ \datagidx at do@highopt at optimize
+ \fi
+ }
+\define at choicekey{datagidx.sty}{nowarn}[\val\nr]{true,false}[true]%
+{%
+ \ifcase\nr\relax
+ \@datagidx at warnfalse
+ \or
+ \@datagidx at warntrue
+ \fi
+}
+\define at choicekey{datatool.sty}{utf8}{true,false}[true]{%
+ \setbool{@dtl at utf8}{#1}%
+}
+\define at key{datagidx.sty}{columns}%
+{%
+ \DTLgidxSetColumns{#1}%
+}
+\define at choicekey{datagidx.sty}{child}[\val\nr]%
+ {named,noname}%
+ {%
+ \datagidx at setchildstyle\nr
+ }
+\define at choicekey{datagidx.sty}{namecase}[\val\nr]%
+ {nochange,uc,lc,firstuc,capitalise}%
+ {%
+ \datagidx at setnamecase\nr
+ }
+\define at key{datagidx.sty}{namefont}%
+{%
+ \renewcommand*{\DTLgidxNameFont}[1]{{#1{##1}}}%
+}
+\define at key{datagidx.sty}{postname}
+{%
+ \renewcommand*{\DTLgidxPostName}{#1}%
+}
+\define at choicekey{datagidx.sty}{postdesc}[\val\nr]%
+ {none,dot}%
+ {%
+ \datagidx at setpostdesc\nr
+ }
+\define at choicekey{datagidx.sty}{prelocation}[\val\nr]%
+ {none,enspace,space,dotfill,hfill}%
+ {%
+ \datagidx at setprelocation\nr
+ }
+\define at choicekey{datagidx.sty}{location}[\val\nr]%
+ {hide,list,first}%
+ {\datagidx at setlocation\nr}
+\define at choicekey{datagidx.sty}{see}[\val\nr]%
+ {comma,brackets,dot,space,nosep,semicolon,location}%
+ {\datagidx at setsee\nr}
+\define at choicekey{datagidx.sty}{symboldesc}[\val\nr]%
+ {symbol,desc,(symbol) desc,desc (symbol),symbol desc,desc symbol}%
+ {\datagidx at formatsymdesc\nr}
+\define at key{datagidx.sty}{compositor}%
+{%
+ \DTLgidxSetCompositor{#1}%
+}%
+\DeclareOptionX{final}{%
+ \let\datagidxshowifdraft\@gobble
+}
+\let\datagidxshowifdraft\@gobble
+\DeclareOptionX{draft}{%
+ \let\datagidxshowifdraft\@firstofone
+}
+\define at choicekey{datagidx.sty}{verbose}[\val\nr]%
+ {true,false}[true]%
+ {%
+ \csuse{dtlverbose\val}%
+ }
+\ProcessOptionsX
+\DTLnewdb{datagidx}
+\providecommand*{\seename}{see}
+\providecommand*{\seealsoname}{see also}
+\newcommand*{\DTLgidxSeeTagFont}[1]{\emph{#1}}
+\newcommand*{\DTLgidxFormatSee}[2]{%
+ \DTLgidxSeeTagFont{#1} \DTLgidxSeeList{#2}%
+}
+\newcommand*{\DTLgidxFormatSeeAlso}[2]{%
+ \datagidxdoseealso
+ {%
+ \DTLgidxSeeTagFont{#1} \DTLgidxSeeList{#2}%
+ }%
+}
+\newcommand*{\datagidxdoseealso}[1]{%
+ \datagidxseealsostart
+ #1%
+ \datagidxseealsoend
+}
+\newcommand*{\DTLgidxSeeList}[1]{%
+ \def\datagidx at sep{}%
+ \@for\dtl at thislabel:=#1\do
+ {%
+ \ifx\@xfor at nextelement\@nnil
+ \ifdefempty{\datagidx at sep}%
+ {%
+ }%
+ {%
+ \DTLidxSeeLastSep
+ }%
+ \else
+ \datagidx at sep
+ \let\datagidx at sep\DTLidxSeeSep
+ \fi
+ \DTLidxFormatSeeItem{\dtl at thislabel}%
+ }%
+}
+\newcommand*{\DTLidxFormatSeeItem}[1]{%
+ \DTLgidxFetchEntry{\datagidx at value}{#1}{Name}%
+ \datagidxlink{#1}%
+ {%
+ \datagidx at value
+ }%
+}
+\newcommand*{\DTLidxSeeSep}{, }
+\newcommand*{\DTLidxSeeLastSep}{ \& }
+\newcommand*{\DTLgidxDoSeeOrLocation}{%
+ \DTLifnull\See
+ {%
+ \ifdefempty\Location
+ {%
+ }%
+ {%
+ \DTLgidxPreLocation
+ \DTLgidxLocation
+ }%
+ }%
+ {%
+ \DTLgidxSee
+ }%
+}
+\newcommand*{\datagidx at sortchildren}{%
+ \def\datagidx at sortedlist{}%
+ \@for\Label:=\Children\do
+ {%
+ \edef\do at getrow{%
+ \noexpand\dtlgetrowforvalue
+ {\DTLgidxCurrentdb}%
+ {\dtlcolumnindex{\DTLgidxCurrentdb}{Label}}%
+ {\Label}%
+ }%
+ \do at getrow
+ \ifdefempty\datagidx at sortedlist
+ {%
+ \edef\datagidx at newsortedlist{{\number\dtlrownum}{\Label}}%
+ }%
+ {%
+ \def\datagidx at newsortedlist{}%
+ \@for\@datagidx at thisval:=\datagidx at sortedlist\do
+ {%
+ \edef\datagidx at thisidx{\expandafter\@firstoftwo\@datagidx at thisval}%
+ \ifnum\datagidx at thisidx>\dtlrownum\relax
+ \ifdefempty\datagidx at newsortedlist
+ {%
+ \eappto\datagidx at newsortedlist
+ {%
+ {\number\dtlrownum}{\Label},\@datagidx at thisval
+ }%
+ }%
+ {%
+ \eappto\datagidx at newsortedlist
+ {%
+ ,{\number\dtlrownum}{\Label},\@datagidx at thisval
+ }%
+ }%
+ \@endfortrue
+ \else
+ \ifdefempty\datagidx at newsortedlist
+ {%
+ \edef\datagidx at newsortedlist{%
+ \@datagidx at thisval
+ }%
+ }%
+ {%
+ \eappto\datagidx at newsortedlist
+ {%
+ ,\@datagidx at thisval
+ }%
+ }%
+ \fi
+ }%
+ \if at endfor
+ \ifdefempty\@forremainder
+ {%
+ }%
+ {%
+ \eappto\datagidx at newsortedlist{,\@forremainder}%
+ }%
+ \else
+ \ifdefempty\datagidx at newsortedlist
+ {%
+ \edef\datagidx at newsortedlist{{\number\dtlrownum}{\Label}}%
+ }%
+ {%
+ \eappto\datagidx at newsortedlist{,{\number\dtlrownum}{\Label}}%
+ }%
+ \fi
+ }%
+ \let\datagidx at sortedlist\datagidx at newsortedlist
+ \@endforfalse
+ }%
+}
+\newcommand{\datagidx at sort@foreachchild}[1]{%
+ \datagidx at sortchildren
+ \@for\@datagidx at thisval:=\datagidx at sortedlist\do
+ {%
+ \edef\Label{\expandafter\@secondoftwo\@datagidx at thisval}%
+ #1%
+ }%
+}
+\newcommand{\datagidx at unsort@foreachchild}[1]{%
+ \@for\Label:=\Children\do
+ {%
+ #1%
+ }%
+}
+\newcommand*{\DTLgidxChildren}{%
+ \bgroup
+ \DTLifnull\Children
+ {}%
+ {%
+ \advance\datagidx at level by 1\relax
+ \datagidxchildstart
+ \let\Parent\Label
+ \datagidx at foreachchild
+ {%
+ \edef\do at getrow{%
+ \noexpand\dtlgetrowforvalue
+ {\DTLgidxCurrentdb}%
+ {\dtlcolumnindex{\DTLgidxCurrentdb}{Label}}%
+ {\Label}%
+ }%
+ \do at getrow
+ \dtlgetentryfromcurrentrow
+ {\Location}%
+ {\dtlcolumnindex{\DTLgidxCurrentdb}{Location}}%
+ \dtlgetentryfromcurrentrow
+ {\See}%
+ {\dtlcolumnindex{\DTLgidxCurrentdb}{See}}%
+ \dtlgetentryfromcurrentrow
+ {\SeeAlso}%
+ {\dtlcolumnindex{\DTLgidxCurrentdb}{SeeAlso}}%
+ \DTLifnull\Location
+ {%
+ \DTLifnull\See
+ {%
+ \DTLifnull\SeeAlso
+ {}%
+ {%
+ \datagidx at displaychild
+ }%
+ }%
+ {%
+ \datagidx at displaychild
+ }%
+ }%
+ {%
+ \datagidx at displaychild
+ }%
+ }%
+ \datagidxchildend
+ }%
+ \egroup
+}
+\newcommand*{\datagidxgetchildfields}{%
+ \dtlgetentryfromcurrentrow
+ {\Name}%
+ {\dtlcolumnindex{\DTLgidxCurrentdb}{Name}}%
+ \dtlgetentryfromcurrentrow
+ {\Description}%
+ {\dtlcolumnindex{\DTLgidxCurrentdb}{Description}}%
+ \dtlgetentryfromcurrentrow
+ {\Symbol}%
+ {\dtlcolumnindex{\DTLgidxCurrentdb}{Symbol}}%
+ \dtlgetentryfromcurrentrow
+ {\Long}%
+ {\dtlcolumnindex{\DTLgidxCurrentdb}{Long}}%
+ \dtlgetentryfromcurrentrow
+ {\Short}%
+ {\dtlcolumnindex{\DTLgidxCurrentdb}{Short}}%
+ \dtlgetentryfromcurrentrow
+ {\Text}%
+ {\dtlcolumnindex{\DTLgidxCurrentdb}{Text}}%
+ \dtlgetentryfromcurrentrow
+ {\Plural}%
+ {\dtlcolumnindex{\DTLgidxCurrentdb}{Plural}}%
+ \dtlgetentryfromcurrentrow
+ {\Short}%
+ {\dtlcolumnindex{\DTLgidxCurrentdb}{Used}}%
+ \dtlgetentryfromcurrentrow
+ {\Children}%
+ {\dtlcolumnindex{\DTLgidxCurrentdb}{Child}}%
+}
+\newcommand*{\datagidx at displaychild}{%
+ \datagidxgetchildfields
+ \datagidxchilditem
+}
+\ifdef{\chapter}
+{%
+ \newcommand*{\datagidx at heading}{\chapter*}
+}%
+{%
+ \newcommand*{\datagidx at heading}{\section*}
+}
+\let\DTLgidxNoHeading\@gobble
+\newcommand*{\datagidx at postheading}{}
+\newcommand*{\datagidx at multicols}{multicols}
+\newcommand*{\datagidx at sort}{%
+ \dtlsort{Sort,FirstId}{\DTLgidxCurrentdb}{\dtlwordindexcompare}%
+}
+\providecommand{\@idxitem}{\par\hangindent 40\p@}
+\newcommand*{\datagidxstart}%
+{%
+ \bgroup
+ \setlength{\parindent}{0pt}%
+ \setlength{\parskip}{0pt plus 0.3pt}%
+ \let\item\@idxitem
+}
+\newcommand*{\datagidxend}{\egroup}
+\newcommand*{\@datagidxtarget}[2]{%
+ \ifdef\hypertarget
+ {%
+ \bgroup
+ \let\glsadd\@gobble
+ \settoheight\dimen@{#2}%
+ \raisebox{\dimen@}{\hypertarget{#1}{}}%
+ \egroup
+ }%
+ {%
+ }%
+ #2%
+}
+\newcommand*{\datagidxtarget}{\@datagidxtarget}
+\newcommand*{\@datagidxlink}[2]{%
+ \ifdef\hyperlink
+ {%
+ \hyperlink{#1}{#2}%
+ }%
+ {%
+ #2%
+ }%
+}
+\newcommand*{\datagidxlink}{\@datagidxlink}
+\newcommand*{\DTLgidxEnableHyper}{%
+ \let\datagidxtarget\@datagidxtarget
+ \let\datagidxlink\@datagidxlink
+}
+\newcommand*{\DTLgidxDisableHyper}{%
+ \let\datagidxtarget\@secondoftwo
+ \let\datagidxlink\@secondoftwo
+}
+\newcommand*{\datagidxgroupsep}{}
+\newcommand*{\datagidxgroupheader}{}
+\newcommand*{\datagidxitem}{}%
+\newcommand*{\datagidxchildstart}{}
+\newcommand*{\datagidxchildend}{}
+\newcommand*{\datagidxchilditem}{}%
+\newcommand*{\datagidxseealsostart}{}
+\newcommand*{\datagidxseealsoend}{}
+\newcommand*{\datagidx at doifsymlocwidth}[3]{%
+ \setlength{\dtl at tmplength}{\linewidth}%
+ \addtolength{\dtl at tmplength}{-#1}%
+ \settowidth{\dimen@}{#2}%
+ \addtolength{\dtl at tmplength}{-\dimen@}%
+ \addtolength{\dtl at tmplength}{-\datagidxsymbolwidth}%
+ \addtolength{\dtl at tmplength}{-\datagidxlocationwidth}%
+ \settowidth{\dimen@}{\DTLgidxPreLocation}%
+ \addtolength{\dtl at tmplength}{-\dimen@}%
+ \settowidth{\dimen@}{\DTLgidxSymDescSep}%
+ \addtolength{\dtl at tmplength}{-\dimen@}%
+ \if at datagidxsymbolleft
+ \begin{minipage}[t]{\datagidxsymbolwidth}%
+ \datagidxsymalign
+ \let\DTLgidxSymDescSep\@empty
+ \DTLgidxSymbolDescLeft
+ \end{minipage}%
+ \DTLgidxSymDescSep
+ \begin{minipage}[t]{\dtl at tmplength}%
+ \let\DTLgidxSymDescSep\@empty
+ \DTLgidxSymbolDescRight
+ \end{minipage}%
+ \else
+ \begin{minipage}[t]{\dtl at tmplength}%
+ \let\DTLgidxSymDescSep\@empty
+ \DTLgidxSymbolDescRight
+ \end{minipage}%
+ \DTLgidxSymDescSep
+ \begin{minipage}[t]{\datagidxsymbolwidth}%
+ \datagidxsymalign
+ \let\DTLgidxSymDescSep\@empty
+ \DTLgidxSymbolDescLeft
+ \end{minipage}%
+ \fi
+ \DTLgidxPreLocation
+ \begin{minipage}[t]{\datagidxlocationwidth}%
+ \datagidxlocalign
+ \let\DTLgidxPreLocation\@empty
+ #3%
+ \end{minipage}%
+}
+\newcommand*{\datagidx at doiflocwidth}[3]{%
+ \setlength{\dtl at tmplength}{\linewidth}%
+ \addtolength{\dtl at tmplength}{-#1}%
+ \settowidth{\dimen@}{#2}%
+ \addtolength{\dtl at tmplength}{-\dimen@}%
+ \addtolength{\dtl at tmplength}{-\datagidxlocationwidth}%
+ \settowidth{\dimen@}{\DTLgidxPreLocation}%
+ \addtolength{\dtl at tmplength}{-\dimen@}%
+ \begin{minipage}[t]{\dtl at tmplength}%
+ \DTLgidxSymbolDescription
+ \end{minipage}%
+ \DTLgidxPreLocation
+ \begin{minipage}[t]{\datagidxlocationwidth}%
+ \datagidxlocalign
+ \let\DTLgidxPreLocation\@empty
+ #3%
+ \end{minipage}%
+}
+\newcommand*{\datagidx at doifsymwidth}[3]{%
+ \setlength{\dtl at tmplength}{\linewidth}%
+ \addtolength{\dtl at tmplength}{-#1}%
+ \settowidth{\dimen@}{#2}%
+ \addtolength{\dtl at tmplength}{-\dimen@}%
+ \addtolength{\dtl at tmplength}{-\datagidxsymbolwidth}%
+ \settowidth{\dimen@}{\DTLgidxSymDescSep}%
+ \addtolength{\dtl at tmplength}{-\dimen@}%
+ \if at datagidxsymbolleft
+ \begin{minipage}[t]{\datagidxsymbolwidth}%
+ \datagidxsymalign
+ \let\DTLgidxSymDescSep\@empty
+ \DTLgidxSymbolDescLeft
+ \end{minipage}%
+ \DTLgidxSymDescSep
+ \begin{minipage}[t]{\dtl at tmplength}%
+ \let\DTLgidxSymDescSep\@empty
+ \DTLgidxSymbolDescRight
+ #3%
+ \end{minipage}%
+ \else
+ \begin{minipage}[t]{\dtl at tmplength}%
+ \let\DTLgidxSymDescSep\@empty
+ \DTLgidxSymbolDescRight
+ \end{minipage}%
+ \DTLgidxSymDescSep
+ \begin{minipage}[t]{\datagidxsymbolwidth}%
+ \datagidxsymalign
+ \let\DTLgidxSymDescSep\@empty
+ \DTLgidxSymbolDescLeft
+ #3%
+ \end{minipage}%
+ \fi
+}
+\newcommand*{\datagidxlocalign}{\raggedleft}
+\newcommand*{\datagidxsymalign}{\centering}
+\newcommand*{\datagidxsetstyle}[1]{%
+ \ifcsdef{datagidx at style@#1}%
+ {%
+ \csuse{datagidx at style@#1}%
+ }%
+ {%
+ \PackageError{datagidx}{Unknown style `#1'}{}%
+ }%
+}
+\newcommand*{\datagidx at style@index}{%
+ \renewcommand*{\datagidxstart}%
+ {%
+ \bgroup
+ \setlength{\parindent}{0pt}%
+ \setlength{\parskip}{0pt plus 0.3pt}%
+ \raggedright
+ \let\item\@idxitem
+ \ifdim\datagidxsymbolwidth>0pt\relax
+ \ifdim\datagidxlocationwidth>0pt\relax
+ \def\datagidx at item@body{%
+ \datagidx at doifsymlocwidth{0pt}%
+ {\DTLgidxNameFont{\DTLgidxNameCase{\Name}}}%
+ {%
+ \DTLgidxDoSeeOrLocation
+ }%
+ }%
+ \else
+ \def\datagidx at item@body{%
+ \datagidx at doiflocwidth{0pt}%
+ {\DTLgidxNameFont{\DTLgidxNameCase{\Name}}}%
+ {%
+ \DTLgidxDoSeeOrLocation
+ }%
+ }%
+ \fi
+ \else
+ \ifdim\datagidxlocationwidth>0pt\relax
+ \def\datagidx at item@body{%
+ \datagidx at doiflocwidth{0pt}%
+ {\DTLgidxNameFont{\DTLgidxNameCase{\Name}}}%
+ {%
+ \DTLgidxDoSeeOrLocation
+ }%
+ }%
+ \else
+ \def\datagidx at item@body{%
+ \DTLgidxSymbolDescription
+ \DTLgidxDoSeeOrLocation
+ }%
+ \fi
+ \fi
+ }%
+ \renewcommand*{\datagidxend}{\egroup}%
+ \renewcommand*{\datagidxgroupsep}{\ifdatagidxshowgroups\indexspace\fi}%
+ \renewcommand{\datagidxgroupheader}{%
+ \ifdatagidxshowgroups
+ \item
+ \makebox[\linewidth]%
+ {%
+ \textbf{\DTLgidxGroupHeaderTitle{\datagidxcurrentgroup}}%
+ }%
+ \DTLpar\nobreak\@afterheading
+ \fi
+ }%
+ \renewcommand*{\datagidxitem}{%
+ \ifdefempty\datagidxprevgroup
+ {%
+ \datagidxgroupheader
+ }%
+ {%
+ \ifdefequal\datagidxcurrentgroup\datagidxprevgroup
+ {%
+ }%
+ {%
+ \datagidxgroupsep
+ \datagidxgroupheader
+ }%
+ }%
+ \item
+ \datagidxtarget{\Label}%
+ {%
+ \DTLgidxNameFont{\DTLgidxNameCase{\Name}}%
+ }%
+ \DTLgidxPostName
+ \datagidx at item@body
+ \DTLgidxChildrenSeeAlso
+ }%
+ \renewcommand*{\datagidxchildstart}%
+ {%
+ \bgroup
+ \setlength{\parindent}{0pt}%
+ \setlength{\parskip}{0pt plus 0.3pt}%
+ \let\item\@idxitem
+ }%
+ \renewcommand*{\datagidxchildend}{\egroup}%
+ \renewcommand*{\datagidxchilditem}{%
+ \setlength{\dimen@}{\datagidxindent}%
+ \multiply\dimen@ by \datagidx at level\relax
+ \@idxitem\hspace*{\dimen@}%
+ \refstepcounter{DTLgidxChildCount}%
+ \datagidxtarget{\Label}%
+ {%
+ \DTLgidxChildStyle
+ {%
+ \DTLgidxNameFont{\DTLgidxNameCase{\Name}}%
+ \DTLgidxPostChildName
+ }%
+ }%
+ \DTLgidxSymbolDescription
+ \DTLgidxDoSeeOrLocation
+ \DTLgidxChildrenSeeAlso
+ }%
+ \renewcommand*{\datagidxseealsostart}%
+ {%
+ \bgroup
+ \setlength{\parindent}{0pt}%
+ \setlength{\parskip}{0pt plus 0.3pt}%
+ \setlength{\dimen@}{\datagidxindent}%
+ \advance\datagidx at level by 1\relax
+ \multiply\dimen@ by \datagidx at level\relax
+ \@idxitem\hspace*{\dimen@}%
+ }%
+ \renewcommand{\datagidxseealsoend}{\egroup}%
+}
+\datagidx at style@index
+\newcommand*{\datagidx at style@indexalign}{%
+ \renewcommand*{\datagidxstart}%
+ {%
+ \bgroup
+ \setlength{\parindent}{0pt}%
+ \setlength{\parskip}{0pt plus 0.3pt}%
+ \setlength{\datagidxnamewidth}{0pt}%
+ \DTLforeach*{\DTLgidxCurrentdb}%
+ {\Name=Name,\Location=Location,\See=See,\SeeAlso=SeeAlso,%
+ \Parent=Parent}%
+ {%
+ \DTLifnull{\Parent}%
+ {%
+ \datagidx at doifdisplayed
+ {%
+ \settowidth{\dimen@}{\DTLgidxNameFont{\DTLgidxNameCase{\Name}}}%
+ \ifdim\dimen@>\datagidxnamewidth\relax
+ \datagidxnamewidth=\dimen@\relax
+ \fi
+ }%
+ }%
+ {}%
+ }%
+ \settowidth{\dimen@}{\DTLgidxPostName}%
+ \addtolength{\datagidxnamewidth}{\dimen@}%
+ \setlength{\datagidxdescwidth}{\linewidth}%
+ \addtolength{\datagidxdescwidth}{-\datagidxnamewidth}%
+ \ifdim\datagidxsymbolwidth>0pt\relax
+ \addtolength{\datagidxdescwidth}{-\datagidxsymbolwidth}%
+ \settowidth{\dimen@}{\DTLgidxSymDescSep}%
+ \addtolength{\datagidxdescwidth}{-\dimen@}%
+ \fi
+ \ifdim\datagidxlocationwidth>0pt\relax
+ \addtolength{\datagidxdescwidth}{-\datagidxlocationwidth}%
+ \settowidth{\dimen@}{\DTLgidxPreLocation}%
+ \addtolength{\datagidxdescwidth}{-\dimen@}%
+ \fi
+ \ifdim\datagidxsymbolwidth>0pt\relax
+ \ifdim\datagidxlocationwidth>0pt\relax
+ \if at datagidxsymbolleft
+ \def\datagidx at item@body{%
+ \begin{minipage}[t]{\datagidxsymbolwidth}%
+ \datagidxsymalign
+ \let\DTLgidxSymDescSep\@empty
+ \DTLgidxSymbolDescLeft
+ \end{minipage}%
+ \DTLgidxSymDescSep
+ \begin{minipage}[t]{\datagidxdescwidth}%
+ \let\DTLgidxSymDescSep\@empty
+ \setlength{\parskip}{0pt plus 0.3pt}%
+ \DTLgidxSymbolDescRight
+ \end{minipage}%
+ \DTLgidxPreLocation
+ \begin{minipage}[t]{\datagidxlocationwidth}%
+ \datagidxlocalign
+ \let\DTLgidxPreLocation\@empty
+ \DTLgidxDoSeeOrLocation
+ \end{minipage}%
+ }%
+ \else
+ \def\datagidx at item@body{%
+ \begin{minipage}[t]{\datagidxdescwidth}%
+ \let\DTLgidxSymDescSep\@empty
+ \DTLgidxSymbolDescLeft
+ \end{minipage}%
+ \DTLgidxSymDescSep
+ \begin{minipage}[t]{\datagidxsymbolwidth}%
+ \datagidxsymalign
+ \let\DTLgidxSymDescSep\@empty
+ \setlength{\parskip}{0pt plus 0.3pt}%
+ \DTLgidxSymbolDescRight
+ \end{minipage}%
+ \DTLgidxPreLocation
+ \begin{minipage}[t]{\datagidxlocationwidth}%
+ \datagidxlocalign
+ \let\DTLgidxPreLocation\@empty
+ \DTLgidxDoSeeOrLocation
+ \end{minipage}%
+ }%
+ \fi
+ \else
+ \if at datagidxsymbolleft
+ \def\datagidx at item@body{%
+ \begin{minipage}[t]{\datagidxsymbolwidth}%
+ \datagidxsymalign
+ \let\DTLgidxSymDescSep\@empty
+ \DTLgidxSymbolDescLeft
+ \end{minipage}%
+ \DTLgidxSymDescSep
+ \begin{minipage}[t]{\datagidxdescwidth}%
+ \let\DTLgidxSymDescSep\@empty
+ \setlength{\parskip}{0pt plus 0.3pt}%
+ \DTLgidxSymbolDescRight
+ \DTLgidxDoSeeOrLocation
+ \end{minipage}%
+ }%
+ \else
+ \def\datagidx at item@body{%
+ \begin{minipage}[t]{\datagidxdescwidth}%
+ \let\DTLgidxSymDescSep\@empty
+ \DTLgidxSymbolDescLeft
+ \end{minipage}%
+ \DTLgidxSymDescSep
+ \begin{minipage}[t]{\datagidxsymbolwidth}%
+ \datagidxsymalign
+ \let\DTLgidxSymDescSep\@empty
+ \setlength{\parskip}{0pt plus 0.3pt}%
+ \DTLgidxSymbolDescRight
+ \DTLgidxDoSeeOrLocation
+ \end{minipage}%
+ }%
+ \fi
+ \fi
+ \else
+ \ifdim\datagidxlocationwidth>0pt\relax
+ \def\datagidx at item@body{%
+ \begin{minipage}[t]{\datagidxdescwidth}%
+ \setlength{\parskip}{0pt plus 0.3pt}%
+ \DTLgidxSymbolDescription
+ \end{minipage}%
+ \DTLgidxPreLocation
+ \begin{minipage}[t]{\datagidxlocationwidth}%
+ \datagidxlocalign
+ \let\DTLgidxPreLocation\@empty
+ \DTLgidxDoSeeOrLocation
+ }%
+ \else
+ \def\datagidx at item@body{%
+ \begin{minipage}[t]{\datagidxdescwidth}%
+ \setlength{\parskip}{0pt plus 0.3pt}%
+ \DTLgidxSymbolDescription
+ \DTLgidxDoSeeOrLocation
+ \end{minipage}%
+ }%
+ \fi
+ \fi
+ }%
+ \renewcommand*{\datagidxend}{\egroup}%
+ \renewcommand*{\datagidxgroupsep}{}%
+ \renewcommand*{\datagidxgroupheader}{}%
+ \renewcommand*{\datagidxitem}{%
+ \ifdefempty\datagidxprevgroup
+ {%
+ \datagidxgroupheader
+ }%
+ {%
+ \ifdefequal\datagidxcurrentgroup\datagidxprevgroup
+ {%
+ }%
+ {%
+ \datagidxgroupsep
+ \datagidxgroupheader
+ }%
+ }%
+ \hangindent0pt\relax
+ \parindent0pt\relax
+ \makebox[\datagidxnamewidth][l]%
+ {%
+ \datagidxtarget{\Label}%
+ {%
+ \DTLgidxNameFont{\DTLgidxNameCase{\Name}}%
+ \DTLgidxPostName
+ }%
+ }%
+ \datagidx at item@body
+ \par
+ \DTLgidxChildrenSeeAlso
+ \par
+ }%
+ \renewcommand*{\datagidxchildstart}%
+ {%
+ \bgroup
+ \setlength{\dimen@}{\datagidxindent}%
+ \multiply\dimen@ by \datagidx at level\relax
+ \setlength{\dtl at tmplength}{\linewidth}%
+ \addtolength{\dtl at tmplength}{-\dimen@}%
+ \setlength{\parindent}{0pt}%
+ \setlength{\parskip}{0pt plus 0.3pt}%
+ \edef\item{\noexpand\parshape=1 \the\dimen@ \the\dtl at tmplength}%
+ \setlength{\datagidxnamewidth}{0pt}%
+ \DTLforeach*{\DTLgidxCurrentdb}%
+ {\Name=Name,\Location=Location,\See=See,\SeeAlso=SeeAlso,%
+ \Parent=Parent}%
+ {%
+ \DTLifnull{\Parent}%
+ {%
+ \datagidx at doifdisplayed
+ {%
+ \settowidth{\dimen@}%
+ {%
+ \DTLgidxChildStyle
+ {%
+ \DTLgidxNameFont{\DTLgidxNameCase{\Name}}%
+ }%
+ }%
+ \ifdim\dimen@>\datagidxnamewidth\relax
+ \datagidxnamewidth=\dimen@\relax
+ \fi
+ }%
+ }%
+ {}%
+ }%
+ \settowidth{\dimen@}{\DTLgidxChildStyle\DTLgidxPostChildName}%
+ \addtolength{\datagidxnamewidth}{\dimen@}%
+ \setlength{\datagidxdescwidth}{\dtl at tmplength}%
+ \addtolength{\datagidxdescwidth}{-\datagidxnamewidth}%
+ }%
+ \renewcommand{\datagidxchildend}{\egroup}%
+ \renewcommand*{\datagidxchilditem}{%
+ \item
+ \refstepcounter{DTLgidxChildCount}%
+ \makebox[\datagidxnamewidth][l]%
+ {%
+ \datagidxtarget{\Label}%
+ {%
+ \DTLgidxChildStyle
+ {%
+ \DTLgidxNameFont{\DTLgidxNameCase{\Name}}%
+ \DTLgidxPostChildName
+ }%
+ }%
+ }%
+ \begin{minipage}[t]{\datagidxdescwidth}%
+ \setlength{\parskip}{0pt plus 0.3pt}%
+ \DTLgidxSymbolDescription
+ \DTLgidxDoSeeOrLocation
+ \DTLgidxChildrenSeeAlso
+ \end{minipage}%
+ \par
+ }%
+}
+\newlength\datagidxindent
+\setlength\datagidxindent{10\p@}
+\newlength\datagidxnamewidth
+\newlength\datagidxdescwidth
+\newcommand*{\datagidx at style@align}{%
+ \renewcommand*{\datagidxstart}%
+ {%
+ \bgroup
+ \setlength{\parindent}{0pt}%
+ \setlength{\parskip}{0pt plus 0.3pt}%
+ \setlength{\datagidxnamewidth}{0pt}%
+ \DTLforeach*{\DTLgidxCurrentdb}%
+ {\Name=Name,\Location=Location,\See=See,\SeeAlso=SeeAlso,%
+ \Parent=Parent}%
+ {%
+ \DTLifnull{\Parent}%
+ {%
+ \datagidx at doifdisplayed
+ {%
+ \settowidth{\dimen@}{\DTLgidxNameFont{\DTLgidxNameCase{\Name}}}%
+ \ifdim\dimen@>\datagidxnamewidth\relax
+ \datagidxnamewidth=\dimen@\relax
+ \fi
+ }%
+ }%
+ {}%
+ }%
+ \settowidth{\dimen@}{\DTLgidxPostName}%
+ \addtolength{\datagidxnamewidth}{\dimen@}%
+ \setlength{\datagidxdescwidth}{\linewidth}%
+ \addtolength{\datagidxdescwidth}{-\datagidxnamewidth}%
+ \ifdim\datagidxsymbolwidth>0pt\relax
+ \addtolength{\datagidxdescwidth}{-\datagidxsymbolwidth}%
+ \settowidth{\dimen@}{\DTLgidxSymDescSep}%
+ \addtolength{\datagidxdescwidth}{-\dimen@}%
+ \fi
+ \ifdim\datagidxlocationwidth>0pt\relax
+ \addtolength{\datagidxdescwidth}{-\datagidxlocationwidth}%
+ \settowidth{\dimen@}{\DTLgidxPreLocation}%
+ \addtolength{\datagidxdescwidth}{-\dimen@}%
+ \fi
+ \ifdim\datagidxsymbolwidth>0pt\relax
+ \ifdim\datagidxlocationwidth>0pt\relax
+ \if at datagidxsymbolleft
+ \def\datagidx at item@body{%
+ \begin{minipage}[t]{\datagidxsymbolwidth}%
+ \datagidxsymalign
+ \let\DTLgidxSymDescSep\@empty
+ \DTLgidxSymbolDescLeft
+ \end{minipage}%
+ \DTLgidxSymDescSep
+ \begin{minipage}[t]{\datagidxdescwidth}%
+ \let\DTLgidxSymDescSep\@empty
+ \setlength{\parskip}{0pt plus 0.3pt}%
+ \DTLgidxSymbolDescRight
+ \end{minipage}%
+ \DTLgidxPreLocation
+ \begin{minipage}[t]{\datagidxlocationwidth}%
+ \datagidxlocalign
+ \let\DTLgidxPreLocation\@empty
+ \DTLgidxDoSeeOrLocation
+ \DTLgidxChildrenSeeAlso
+ \end{minipage}%
+ }%
+ \else
+ \def\datagidx at item@body{%
+ \begin{minipage}[t]{\datagidxdescwidth}%
+ \let\DTLgidxSymDescSep\@empty
+ \DTLgidxSymbolDescLeft
+ \end{minipage}%
+ \DTLgidxSymDescSep
+ \begin{minipage}[t]{\datagidxsymbolwidth}%
+ \datagidxsymalign
+ \let\DTLgidxSymDescSep\@empty
+ \setlength{\parskip}{0pt plus 0.3pt}%
+ \DTLgidxSymbolDescRight
+ \end{minipage}%
+ \DTLgidxPreLocation
+ \begin{minipage}[t]{\datagidxlocationwidth}%
+ \datagidxlocalign
+ \let\DTLgidxPreLocation\@empty
+ \DTLgidxDoSeeOrLocation
+ \DTLgidxChildrenSeeAlso
+ \end{minipage}%
+ }%
+ \fi
+ \else
+ \if at datagidxsymbolleft
+ \def\datagidx at item@body{%
+ \begin{minipage}[t]{\datagidxsymbolwidth}%
+ \datagidxsymalign
+ \let\DTLgidxSymDescSep\@empty
+ \DTLgidxSymbolDescLeft
+ \end{minipage}%
+ \DTLgidxSymDescSep
+ \begin{minipage}[t]{\datagidxdescwidth}%
+ \let\DTLgidxSymDescSep\@empty
+ \setlength{\parskip}{0pt plus 0.3pt}%
+ \DTLgidxSymbolDescRight
+ \DTLgidxDoSeeOrLocation
+ \DTLgidxChildrenSeeAlso
+ \end{minipage}%
+ }%
+ \else
+ \def\datagidx at item@body{%
+ \begin{minipage}[t]{\datagidxdescwidth}%
+ \let\DTLgidxSymDescSep\@empty
+ \DTLgidxSymbolDescLeft
+ \end{minipage}%
+ \DTLgidxSymDescSep
+ \begin{minipage}[t]{\datagidxsymbolwidth}%
+ \datagidxsymalign
+ \let\DTLgidxSymDescSep\@empty
+ \setlength{\parskip}{0pt plus 0.3pt}%
+ \DTLgidxSymbolDescRight
+ \DTLgidxDoSeeOrLocation
+ \DTLgidxChildrenSeeAlso
+ \end{minipage}%
+ }%
+ \fi
+ \fi
+ \else
+ \ifdim\datagidxlocationwidth>0pt\relax
+ \def\datagidx at item@body{%
+ \begin{minipage}[t]{\datagidxdescwidth}%
+ \setlength{\parskip}{0pt plus 0.3pt}%
+ \DTLgidxSymbolDescription
+ \end{minipage}%
+ \DTLgidxPreLocation
+ \begin{minipage}[t]{\datagidxlocationwidth}%
+ \datagidxlocalign
+ \let\DTLgidxPreLocation\@empty
+ \DTLgidxDoSeeOrLocation
+ \DTLgidxChildrenSeeAlso
+ \end{minipage}%
+ }%
+ \else
+ \def\datagidx at item@body{%
+ \begin{minipage}[t]{\datagidxdescwidth}%
+ \setlength{\parskip}{0pt plus 0.3pt}%
+ \DTLgidxSymbolDescription
+ \DTLgidxDoSeeOrLocation
+ \DTLgidxChildrenSeeAlso
+ \end{minipage}%
+ }%
+ \fi
+ \fi
+ }%
+ \renewcommand*{\datagidxend}{\egroup}%
+ \renewcommand*{\datagidxgroupsep}{\ifdatagidxshowgroups\indexspace\fi}%
+ \renewcommand{\datagidxgroupheader}{%
+ \ifdatagidxshowgroups
+ \item
+ \makebox[\linewidth]%
+ {%
+ \textbf{\DTLgidxGroupHeaderTitle{\datagidxcurrentgroup}}%
+ }%
+ \DTLpar\nobreak\@afterheading
+ \fi
+ }%
+ \renewcommand*{\datagidxitem}{%
+ \ifdefempty\datagidxprevgroup
+ {%
+ \datagidxgroupheader
+ }%
+ {%
+ \ifdefequal\datagidxcurrentgroup\datagidxprevgroup
+ {%
+ }%
+ {%
+ \datagidxgroupsep
+ \datagidxgroupheader
+ }%
+ }%
+ \hangindent0pt\relax
+ \parindent0pt\relax
+ \makebox[\datagidxnamewidth][l]%
+ {%
+ \datagidxtarget{\Label}%
+ {%
+ \DTLgidxNameFont{\DTLgidxNameCase{\Name}}%
+ \DTLgidxPostName
+ }%
+ }%
+ \datagidx at item@body
+ \par
+ }%
+ \renewcommand*{\datagidxchildstart}%
+ {%
+ \bgroup
+ \setlength{\parindent}{0pt}%
+ \setlength{\parskip}{0pt plus 0.3pt}%
+ \setlength{\datagidxnamewidth}{0pt}%
+ \DTLforeach*{\DTLgidxCurrentdb}%
+ {\Name=Name,\Location=Location,\See=See,\SeeAlso=SeeAlso,%
+ \Parent=Parent}%
+ {%
+ \DTLifnull{\Parent}%
+ {%
+ \datagidx at doifdisplayed
+ {%
+ \settowidth{\dimen@}%
+ {%
+ \DTLgidxChildStyle
+ {%
+ \DTLgidxNameFont{\DTLgidxNameCase{\Name}}%
+ }%
+ }%
+ \ifdim\dimen@>\datagidxnamewidth\relax
+ \datagidxnamewidth=\dimen@\relax
+ \fi
+ }%
+ }%
+ {}%
+ }%
+ \settowidth{\dimen@}{\DTLgidxChildStyle\DTLgidxPostChildName}%
+ \addtolength{\datagidxnamewidth}{\dimen@}%
+ \setlength{\datagidxdescwidth}{\linewidth}%
+ \addtolength{\datagidxdescwidth}{-\datagidxnamewidth}%
+ }%
+ \renewcommand{\datagidxchildend}{\egroup}%
+ \renewcommand*{\datagidxchilditem}{%
+ \hangindent0pt\relax
+ \parindent0pt\relax
+ \refstepcounter{DTLgidxChildCount}%
+ \makebox[\datagidxnamewidth][l]%
+ {%
+ \datagidxtarget{\Label}%
+ {%
+ \DTLgidxChildStyle
+ {%
+ \DTLgidxNameFont{\DTLgidxNameCase{\Name}}%
+ \DTLgidxPostChildName
+ }%
+ }%
+ }%
+ \begin{minipage}[t]{\datagidxdescwidth}%
+ \setlength{\parskip}{0pt plus 0.3pt}%
+ \DTLgidxSymbolDescription
+ \DTLgidxDoSeeOrLocation
+ \DTLgidxChildrenSeeAlso
+ \end{minipage}%
+ \par
+ }%
+}
+\newcommand*{\datagidx at style@gloss}{%
+ \renewcommand*{\datagidxstart}%
+ {%
+ \bgroup
+ \setlength{\parindent}{0pt}%
+ \setlength{\parskip}{0pt plus 0.3pt}%
+ \setlength{\datagidxnamewidth}{0pt}%
+ \DTLforeach*{\DTLgidxCurrentdb}%
+ {\Name=Name,\Location=Location,\See=See,\SeeAlso=SeeAlso,%
+ \Parent=Parent}%
+ {%
+ \DTLifnull{\Parent}%
+ {%
+ \datagidx at doifdisplayed
+ {%
+ \settowidth{\dimen@}{\DTLgidxNameFont{\DTLgidxNameCase{\Name}}}%
+ \ifdim\dimen@>\datagidxnamewidth\relax
+ \datagidxnamewidth=\dimen@\relax
+ \fi
+ }%
+ }%
+ {}%
+ }%
+ \settowidth{\dimen@}{\DTLgidxPostName}%
+ \addtolength{\datagidxnamewidth}{\dimen@}%
+ \setlength{\datagidxdescwidth}{\linewidth}%
+ \addtolength{\datagidxdescwidth}{-\datagidxnamewidth}%
+ }%
+ \renewcommand*{\datagidxend}{\egroup}%
+ \renewcommand*{\datagidxgroupsep}{\ifdatagidxshowgroups\indexspace\fi}%
+ \renewcommand{\datagidxgroupheader}{%
+ \ifdatagidxshowgroups
+ \item
+ \makebox[\linewidth]%
+ {%
+ \textbf{\DTLgidxGroupHeaderTitle{\datagidxcurrentgroup}}%
+ }%
+ \DTLpar\nobreak\@afterheading
+ \fi
+ }%
+ \renewcommand*{\datagidxitem}{%
+ \ifdefempty\datagidxprevgroup
+ {%
+ \datagidxgroupheader
+ }%
+ {%
+ \ifdefequal\datagidxcurrentgroup\datagidxprevgroup
+ {%
+ }%
+ {%
+ \datagidxgroupsep
+ \datagidxgroupheader
+ }%
+ }%
+ \hangindent0pt\relax
+ \parindent0pt\relax
+ \makebox[\datagidxnamewidth][l]%
+ {%
+ \datagidxtarget{\Label}%
+ {%
+ \DTLgidxNameFont{\DTLgidxNameCase{\Name}}%
+ \DTLgidxPostName
+ }%
+ }%
+ \begin{minipage}[t]{\datagidxdescwidth}%
+ \setlength{\parskip}{0pt plus 0.3pt}%
+ \@tempswatrue
+ \ifdefempty{\Description}%
+ {%
+ \ifdefempty{\Symbol}%
+ {%
+ \ifdefempty{\Location}{\@tempswafalse}{}%
+ }%
+ {}%
+ }%
+ {}%
+ \if at tempswa
+ \DTLgidxSymbolDescription
+ \DTLgidxDoSeeOrLocation
+ \else
+ \mbox{}%
+ \fi
+ \DTLgidxChildrenSeeAlso
+ \end{minipage}%
+ \par
+ }%
+ \renewcommand*{\datagidxchildstart}%
+ {%
+ \bgroup
+ \def\datagidx at childsep{}%
+ \setcounter{DTLgidxChildCount}{0}%
+ }%
+ \renewcommand{\datagidxchildend}{\DTLgidxPostChild\egroup}%
+ \renewcommand*{\datagidxchilditem}{%
+ \datagidx at childsep
+ \refstepcounter{DTLgidxChildCount}%
+ \datagidxtarget{\Label}%
+ {%
+ \DTLgidxChildStyle
+ {%
+ \DTLgidxNameFont{\DTLgidxNameCase{\Name}}%
+ \DTLgidxPostChildName
+ }%
+ }%
+ \DTLgidxSymbolDescription
+ \DTLgidxDoSeeOrLocation
+ \DTLgidxChildrenSeeAlso
+ \let\datagidx at childsep\DTLgidxChildSep
+ }%
+}
+\newcommand*{\DTLgidxChildSep}{ }
+\newcommand*{\DTLgidxPostChild}{}
+\ifdef\chapter
+{%
+ \newcommand\DTLgidxDictHead{%
+ \chapter{\DTLgidxGroupHeaderTitle{\datagidxcurrentgroup}}%
+ }%
+}%
+{%
+ \newcommand\DTLgidxDictHead{%
+ \section{\DTLgidxGroupHeaderTitle{\datagidxcurrentgroup}}%
+ }%
+}
+\newcommand*{\DTLgidxCategoryNameFont}[1]{#1}
+\newcommand*{\DTLgidxCategorySep}{\space}
+\newcommand*{\DTLgidxSubCategorySep}{\space}
+\newcommand*{\datagidxdictindent}{1em}
+\newcommand{\DTLgidxDictPostItem}{\par}
+\newcommand*{\datagidx at style@dict}{%
+ \renewcommand*{\datagidxstart}%
+ {%
+ \bgroup
+ \setlength{\parindent}{0pt}%
+ \setlength{\parskip}{0pt plus 0.3pt}%
+ \dimen@=\linewidth
+ \advance\dimen@ by -\datagidxdictindent\relax
+ \dtl at tmplength=\datagidxdictindent\relax
+ \xdef\datagidxdictparshape{%
+ \noexpand\parshape=2 0pt \the\linewidth\space
+ \the\dtl at tmplength\space \the\dimen@\relax
+ }%
+ \datagidx at level=1\relax
+ \raggedright
+ }%
+ \renewcommand*{\datagidxend}{\egroup}%
+ \renewcommand*{\datagidxgroupsep}{}%
+ \renewcommand{\datagidxgroupheader}{%
+ \ifdatagidxshowgroups
+ \datagidxend
+ \datagidx at postend
+ \DTLgidxDictHead
+ \datagidx at prestart
+ \datagidxstart
+ \fi
+ }%
+ \renewcommand*{\datagidxitem}{%
+ \ifdefempty\datagidxprevgroup
+ {%
+ \datagidxgroupheader
+ }%
+ {%
+ \ifdefequal\datagidxcurrentgroup\datagidxprevgroup
+ {%
+ }%
+ {%
+ \datagidxgroupsep
+ \datagidxgroupheader
+ }%
+ }%
+ \datagidxdictparshape
+ \datagidxtarget{\Label}%
+ {%
+ \DTLgidxNameFont{\DTLgidxNameCase{\Name}}%
+ }%
+ \DTLgidxPostName
+ \let\datagidx at catsep\@empty
+ \let\datagidx at subcatsep\@empty
+ \DTLgidxSymbolDescription
+ \DTLgidxChildrenSeeAlso
+ \DTLgidxDictPostItem
+ }%
+ \renewcommand*{\datagidxchildstart}%
+ {%
+ \bgroup
+ }%
+ \renewcommand*{\datagidxchildend}{\egroup}%
+ \renewcommand*{\datagidxchilditem}{%
+ \ifnum\datagidx at level=2\relax
+ \datagidx at catsep
+ \let\datagidx at catsep\DTLgidxCategorySep
+ \let\datagidx at subcapsep\@empty
+ \datagidxtarget{\Label}%
+ {%
+ \DTLgidxChildStyle
+ {%
+ \DTLgidxCategoryNameFont{\DTLgidxNameCase{\Name}}%
+ \DTLgidxPostChildName
+ }%
+ }%
+ \setcounter{DTLgidxChildCount}{0}%
+ \else
+ \datagidx at subcatsep
+ \let\datagidx at subcatsep\DTLgidxSubCategorySep
+ \refstepcounter{DTLgidxChildCount}%
+ \DTLgidxChildCountLabel
+ \DTLgidxPostChildName
+ \fi
+ \DTLgidxSymbolDescription
+ \DTLgidxDoSeeOrLocation
+ \DTLgidxChildrenSeeAlso
+ }%
+ \renewcommand*{\datagidxseealsostart}%
+ {%
+ \bgroup
+ \setlength{\parindent}{0pt}%
+ \setlength{\parskip}{0pt plus 0.3pt}%
+ \setlength{\dimen@}{\datagidxindent}%
+ \advance\datagidx at level by 1\relax
+ \multiply\dimen@ by \datagidx at level\relax
+ \@idxitem\hspace*{\dimen@}%
+ }%
+ \renewcommand{\datagidxseealsoend}{\egroup}%
+}
+\newcommand*{\dtldofirstlocation}{%
+ \@for\dtl at thisloc:=\Location\do{%
+ \ifdefempty\dtl at thisloc
+ {}%
+ {%
+ \expandafter\datagidx at getlocation\dtl at thisloc
+ \datagidxlink{\datagidx at current@target}%
+ {%
+ \datagidx at formatlocation
+ \datagidx at current@format\datagidx at current@locationstring
+ }%
+ \@endfortrue
+ }%
+ }%
+}
+\newcommand*{\datagidx at formatlocation}[2]{%
+ \ifdefempty{#1}%
+ {#2}%
+ {%
+ \ifcsdef{#1}%
+ {%
+ \csuse{#1}{#2}%
+ }%
+ {%
+ \PackageWarning{datagidx}{Unknown format `#1'}%
+ #2%
+ }%
+ }%
+}
+\newcommand*{\dtldolocationlist}{%
+ \DTLifnull{\Location}%
+ {}%
+ {%
+ \def\datagidx at prev@location{-1}%
+ \def\datagidx at prev@locationstring{}%
+ \def\datagidx at prev@format{}%
+ \def\datagidx at prev@locationformat{}%
+ \def\datagidx at prev@prefix{}%
+ \def\datagidx at prev@target{}%
+ \def\datagidx at location@sep{}%
+ \def\datagidx at location@start{-1}%
+ \expandafter\forcsvlist\expandafter\datagidx at parse@location
+ \expandafter{\Location}%
+ \do at prevlocation % tidy up loose ends
+ }%
+}
+\newif\if at dtl@sequential
+\newcommand*\datagidx at getlocdo[1]{%
+ \ifdefempty\datagidx at current@location
+ {}%
+ {%
+ \eappto\datagidx at current@prefix{%
+ \datagidx at current@location\datagidx at compositor
+ }%
+ }%
+ \def\datagidx at current@location{#1}%
+}
+\def\datagidx at getlocation[#1]#2#3{%
+ \def\datagidx at current@locationstring{#2}%
+ \bgroup
+ \datagidx at escapelocationformat
+ \xdef\datagidx at current@locationformat{#2}%
+ \datagidx at clearlocationformat
+ \xdef\datagidx at current@location{#2}%
+ \egroup
+ \let\datagidx at list\datagidx at current@location
+ \def\datagidx at current@prefix{}%
+ \def\datagidx at current@location{}%
+ \let\do\datagidx at getlocdo
+ \expandafter\datagidx at docomplist
+ \expandafter{\datagidx at list}%
+ \def\datagidx at current@format{#1}%
+ \def\datagidx at current@target{#3}%
+}
+\newcommand*{\datagidx at parse@location}[1]{%
+ \datagidx at getlocation#1\relax
+ \ifdefequal{\datagidx at prev@locationstring}{\datagidx at current@locationstring}%
+ {%
+ \ifdefequal{\datagidx at prev@format}{\datagidx at current@format}%
+ {%
+ }%
+ {%
+ \ifdefempty{\datagidx at current@format}%
+ {%
+ }%
+ {%
+ \ifdefempty{\datagidx at prev@format}%
+ {%
+ \let\datagidx at prev@format\datagidx at current@format
+ }%
+ {%
+ \PackageWarning{datagidx}%
+ {%
+ Conflicting location formats `\datagidx at prev@format' and
+ `\datagidx at current@format' for location `\datagidx at current@location'%
+ }%
+ }%
+ }%
+ }%
+ }%
+ {%
+ \@datagidx at parse@location
+ }%
+}
+\newcommand*{\@datagidx at parse@location}{%
+ \@dtl at sequentialtrue
+ \ifdefequal{\datagidx at prev@format}{\datagidx at current@format}%
+ {%
+ \ifdefequal{\datagidx at prev@locationformat}{\datagidx at current@locationformat}%
+ {%
+ \ifdefequal{\datagidx at prev@prefix}{\datagidx at current@prefix}%
+ {%
+ }%
+ {%
+ \@dtl at sequentialfalse
+ }%
+ }%
+ {%
+ \@dtl at sequentialfalse
+ }%
+ }%
+ {%
+ \@dtl at sequentialfalse
+ }%
+ \if at dtl@sequential
+ \ifnumequal{\datagidx at prev@location+1}{\datagidx at current@location}%
+ {%
+ \ifdefequal
+ \datagidx at current@locationformat
+ \datagidx at prev@locationformat
+ {%
+ \@dtl at sequentialtrue
+ }%
+ {%
+ \@dtl at sequentialfalse
+ }%
+ }%
+ {%
+ \@dtl at sequentialfalse
+ }%
+ \fi
+ \if at dtl@sequential
+ \ifnumequal{\datagidx at location@start}{-1}%
+ {%
+ \let\datagidx at location@start\datagidx at prev@location
+ \let\datagidx at location@startval\datagidx at prev@locationstring
+ \let\datagidx at location@format\datagidx at prev@format
+ \let\datagidx at location@target\datagidx at prev@target
+ }%
+ {%
+ }%
+ \else
+ \do at prevlocation
+ \fi
+ \let\datagidx at prev@location\datagidx at current@location
+ \let\datagidx at prev@format\datagidx at current@format
+ \let\datagidx at prev@prefix\datagidx at current@prefix
+ \let\datagidx at prev@locationformat\datagidx at current@locationformat
+ \let\datagidx at prev@locationstring\datagidx at current@locationstring
+ \let\datagidx at prev@target\datagidx at current@target
+}
+\newcommand*{\DTLgidxLocationSep}{, }
+\newcommand*{\DTLgidxLocationF}[2]{%
+ #1\DTLgidxLocationSep#2%
+}
+\newcommand*{\DTLgidxLocationFF}[2]{%
+ #1--#2%
+}
+\newcommand*{\do at prevlocation}{%
+ \ifnumequal{\datagidx at location@start}{-1}%
+ {%
+ \ifdefempty{\datagidx at prev@locationstring}%
+ {}%
+ {%
+ \datagidx at location@sep
+ \datagidxlink{\datagidx at prev@target}%
+ {%
+ \datagidx at formatlocation
+ \datagidx at prev@format\datagidx at prev@locationstring
+ }%
+ \def\datagidx at location@sep{\DTLgidxLocationSep}%
+ }%
+ }%
+ {%
+ \datagidx at location@sep
+ \do at locrange
+ \def\datagidx at location@sep{\DTLgidxLocationSep}%
+ \def\datagidx at location@start{-1}%
+ }%
+}
+\newcommand*{\do at locrange}{%
+ \ifnumgreater{\datagidx at prev@location}{\datagidx at location@start+1}%
+ {%
+ \DTLgidxLocationFF
+ {%
+ \datagidxlink{\datagidx at location@target}%
+ {%
+ \datagidx at formatlocation
+ \datagidx at location@format\datagidx at location@startval
+ }%
+ }%
+ {%
+ \datagidxlink{\datagidx at prev@target}%
+ {%
+ \datagidx at formatlocation
+ \datagidx at prev@format\datagidx at prev@locationstring
+ }%
+ }%
+ }%
+ {%
+ \DTLgidxLocationF
+ {%
+ \datagidxlink{\datagidx at location@target}%
+ {%
+ \datagidx at formatlocation
+ \datagidx at location@format\datagidx at location@startval
+ }%
+ }%
+ {%
+ \datagidxlink{\datagidx at prev@target}%
+ {%
+ \datagidx at formatlocation
+ \datagidx at prev@format\datagidx at prev@locationstring
+ }%
+ }%
+ }%
+}
+\newcommand*{\datagidx at defaultdatabase}{}
+\newcommand*{\DTLgidxSetDefaultDB}[1]{%
+ \renewcommand*{\datagidx at defaultdatabase}{#1}%
+}
+\define at key{newgloss}{heading}{\renewcommand*{\datagidx at heading}{#1}}
+\define at key{newgloss}{postheading}{%
+ \renewcommand*{\datagidx at postheading}{#1}%
+}
+\newif\ifdatagidxbalance
+\datagidxbalancetrue
+\define at choicekey{newgloss}{balance}[\val\nr]{true,false}[true]{%
+ \ifcase\nr\relax
+ \renewcommand*{\datagidx at multicols}{multicols}%
+ \datagidxbalancetrue
+ \or
+ \renewcommand*{\datagidx at multicols}{multicols*}%
+ \datagidxbalancefalse
+ \fi
+}
+\define at key{newgloss}{sort}{\renewcommand*{\datagidx at sort}{#1}}
+\newcommand*{\datagidx at style}{index}
+\define at key{newgloss}{style}{\renewcommand*{\datagidx at style}{#1}}
+\newif\ifdatagidxshowgroups
+\newcommand*{\datagidx at showgroups}{false}
+\define at choicekey{newgloss}{showgroups}{true,false}[true]%
+{%
+ \renewcommand{\datagidx at showgroups}{#1}%
+}%
+\ifundef\newgidx
+{%
+ \newcommand*{\newgidx}{\datagidx at newgidx}
+}%
+{}
+\@onlypreamble\newgidx
+\newcommand*{\datagidx at highopt@newgidx}[3][]{%
+ \edef\datagidx at indexfilename{\datagidxhighoptfilename{#2}}%
+ \IfFileExists{\datagidx at indexfilename}%
+ {%
+ \input{\datagidx at indexfilename}%
+ \bgroup
+ \setkeys{newgloss}{#1}%
+ \datagidx at newgidx@update{#2}{#3}%
+ \egroup
+ }%
+ {%
+ \datagidx at newgidx[#1]{#2}{#3}%
+ }%
+}
+\newcommand*{\loadgidx}[3][]{%
+ \input{#2}%
+ \bgroup
+ \setkeys{newgloss}{sort={},#1}%
+ \expandafter\datagidx at newgidx@update\expandafter
+ {\dtllastloadeddb}{#3}%
+ \egroup
+ \edef\datagidx at defaultdatabase{\dtllastloadeddb}%
+ \dtlforcolumn{\Label}{\dtllastloadeddb}{Label}%
+ {%
+ \csxdef{datagidxentry@\Label}{\dtllastloadeddb}%
+ }%
+}
+\@onlypreamble\loadgidx
+\newcommand*{\datagidx at newgidx}[3][]{%
+\bgroup
+ \setkeys{newgloss}{#1}%
+ \ifdefempty{\datagidx at defaultdatabase}%
+ {\xdef\datagidx at defaultdatabase{#2}}%
+ {}%
+ \DTLgnewdb{#2}%
+ \DTLaddcolumn{#2}{Label}%
+ \DTLaddcolumn{#2}{Location}%
+ \DTLaddcolumn{#2}{CurrentLocation}%
+ \DTLaddcolumn{#2}{FirstId}%
+ \DTLaddcolumn{#2}{Name}%
+ \DTLaddcolumn{#2}{Text}%
+ \DTLaddcolumn{#2}{Parent}%
+ \DTLaddcolumn{#2}{Child}%
+ \DTLaddcolumn{#2}{Description}%
+ \DTLaddcolumn{#2}{Used}%
+ \DTLaddcolumn{#2}{Symbol}%
+ \DTLaddcolumn{#2}{Long}%
+ \DTLaddcolumn{#2}{Short}%
+ \DTLaddcolumn{#2}{See}%
+ \DTLaddcolumn{#2}{SeeAlso}%
+ \datagidx at newgidx@update{#2}{#3}%
+\egroup
+}
+\newcommand*{\datagidx at newgidx@update}[2]{%
+ \DTLnewrow{datagidx}%
+ \DTLnewdbentry{datagidx}{Glossary}{#1}%
+ \DTLnewdbentry{datagidx}{Title}{#2}%
+ {%
+ \dtlexpandnewvalue
+ \DTLnewdbentry{datagidx}{Heading}{\expandonce\datagidx at heading}%
+ \DTLnewdbentry{datagidx}{PostHeading}{\expandonce\datagidx at postheading}%
+ \DTLnewdbentry{datagidx}{MultiCols}{\expandonce\datagidx at multicols}%
+ \DTLnewdbentry{datagidx}{Sort}{\expandonce\datagidx at sort}%
+ \DTLnewdbentry{datagidx}{Style}{\expandonce\datagidx at style}%
+ \DTLnewdbentry{datagidx}{ShowGroups}{\expandonce\datagidx at showgroups}%
+ }%
+}
+\newcommand*{\newterm at label}{}
+\define at key{newterm}{label}{\renewcommand*{\newterm at label}{#1}}
+\newcommand*{\newterm at parent}{}
+\define at key{newterm}{parent}{\renewcommand*{\newterm at parent}{#1}}
+\newcommand*{\newterm at text}{}
+\define at key{newterm}{text}{\renewcommand*{\newterm at text}{#1}}
+\newcommand*{\newterm at description}{}
+\define at key{newterm}{description}{%
+ \renewcommand*{\newterm at description}{#1}%
+}
+\define at key{newterm}{plural}{\def\newterm at plural{#1}}
+\newcommand*{\newterm at sort}{}
+\define at key{newterm}{sort}{\renewcommand*{\newterm at sort}{#1}}
+\newcommand*{\newterm at symbol}{}
+\define at key{newterm}{symbol}{\renewcommand*{\newterm at symbol}{#1}}
+\newcommand*{\newterm at database}{}
+\define at key{newterm}{database}{\renewcommand*{\newterm at database}{#1}}
+\newcommand*{\newterm at long}{}
+\define at key{newterm}{long}{%
+ \renewcommand*{\newterm at long}{#1}%
+ \def\newterm at longplural{#1s}%
+}
+\newcommand*{\newterm at short}{}
+\define at key{newterm}{short}{%
+ \renewcommand*{\newterm at short}{#1}%
+ \def\newterm at shortplural{#1s}%
+}
+\define at key{newterm}{longplural}{%
+ \def\newterm at longplural{#1}%
+}
+\define at key{newterm}{shortplural}{%
+ \def\newterm at shortplural{#1}%
+}
+\newcommand*{\newterm at see}{}
+\define at key{newterm}{see}{%
+ \renewcommand*{\newterm at see}{#1}%
+}
+\newcommand*{\newterm at seealso}{}
+\define at key{newterm}{seealso}{%
+ \renewcommand*{\newterm at seealso}{#1}%
+}
+\newcommand*{\newterm at defaultshook}{}
+\newcommand*{\newterm at extrafields}{}
+\newcommand*{\DTLgidxAssignList}{%
+ \Name=Name,\Description=Description,\Used=Used,\Symbol=Symbol,%
+ \Long=Long,\Short=Short,\LongPlural=LongPlural,\ShortPlural=ShortPlural,%
+ \Location=Location,\See=See,\SeeAlso=SeeAlso,%
+ \Text=Text,\Plural=Plural,\CurrentLocation=CurrentLocation,%
+ \Label=Label,\Parent=Parent,\Children=Child,\FirstId=FirstId,\Sort=Sort%
+}
+\newcommand*{\datagidxtermkeys}{%
+ name,description,symbol,long,short,see,seealso,text,plural,%
+ label,parent,sort%
+}
+\newcommand*\@datagidx at fieldkey@Name{name}%
+\newcommand*\@datagidx at fieldkey@Description{description}%
+\newcommand*\@datagidx at fieldkey@Symbol{symbol}%
+\newcommand*\@datagidx at fieldkey@Long{long}%
+\newcommand*\@datagidx at fieldkey@Short{short}%
+\newcommand*\@datagidx at fieldkey@See{see}%
+\newcommand*\@datagidx at fieldkey@SeeAlso{seealso}%
+\newcommand*\@datagidx at fieldkey@Text{text}%
+\newcommand*\@datagidx at fieldkey@Plural{plural}%
+\newcommand*\@datagidx at fieldkey@Label{label}%
+\newcommand*\@datagidx at fieldkey@Parent{parent}%
+\newcommand*\@datagidx at fieldkey@Sort{sort}%
+\newcommand*{\newtermaddfield}[4][]{%
+ \ifstrempty{#1}%
+ {%
+ \dtlforcolumn{\datagidx at thisidx}{datagidx}{Glossary}%
+ {%
+ \DTLaddcolumn{\datagidx at thisidx}{#2}%
+ }%
+ }%
+ {%
+ \@for\datagidx at thisidx:=#1\do
+ {%
+ \DTLaddcolumn{\datagidx at thisidx}{#2}%
+ }%
+ }%
+ \expandafter\gdef\csname newterm@#3\endcsname{}%
+ \define at key{newterm}{#3}%
+ {%
+ \expandafter\def\csname newterm@#3\endcsname{##1}%
+ }%
+ \gappto\newterm at defaultshook
+ {%
+ \expandafter\protected at edef\csname newterm@#3\endcsname{#4}%
+ }%
+ \gappto\newterm at extrafields
+ {%
+ \protected at edef\datagidx at value{\csname newterm@#3\endcsname}%
+ \DTLnewdbentry{\newterm at database}{#2}{\expandonce\datagidx at value}%
+ }%
+ \xappto\DTLgidxAssignList
+ {%
+ ,\expandafter\noexpand\csname#2\endcsname=#2%
+ }%
+ \xappto\datagidxtermkeys{,#3}%
+ \expandafter\xdef\csname @datagidx at fieldkey@#2\endcsname{#3}%
+ \xappto\datagidxgetchildfields
+ {%
+ \noexpand\dtlgetentryfromcurrentrow
+ {\expandafter\noexpand\csname#2\endcsname}%
+ {\noexpand\dtlcolumnindex{\noexpand\DTLgidxCurrentdb}{#2}}%
+ }%
+}
+\newcommand*{\newtermlabelhook}{}
+\newcommand*{\DTLgidxNoFormat}[1]{#1}
+\newcommand*{\DTLgidxGobble}[1]{}
+\newcommand*{\DTLgidxStripBackslash}[1]{%
+ \expandafter\@gobble\string#1%
+}
+\newcommand*{\DTLgidxName}[2]{%
+ #1\space #2%
+}
+\newcommand*{\DTLgidxNameNum}[1]{\@Roman{#1}}
+\newcommand*{\datagidx at namenum}[1]{\two at digits{#1}}
+\newcommand*{\DTLgidxPlace}[2]{%
+ #2%
+}
+\newcommand*{\DTLgidxSubject}[2]{%
+ #2%
+}
+\newcommand*{\DTLgidxOffice}[2]{%
+ #2 (#1)%
+}
+\newcommand*{\DTLgidxIgnore}[1]{#1}
+\newcommand*{\DTLgidxMac}[1]{#1}
+\newcommand*{\datagidx at mac}[1]{Mac}
+\newcommand*{\DTLgidxSaint}[1]{#1}
+\newcommand*{\datagidx at saint}[1]{Saint}
+\newcommand*{\DTLgidxRank}[2]{#1~#2}
+\newcommand*{\datagidx at rank}[2]{#2.}
+\newcommand*{\DTLgidxParticle}[2]{#1~#2}
+\newcommand*{\datagidx at particle}[2]{#2.}
+\newcommand*{\datagidx at bothoftwo}[2]{#1#2}
+\newcommand*{\datagidx at person}[2]{#2\noexpand\datatoolpersoncomma #1}
+\newcommand*{\datagidx at place}[2]{#2\noexpand\datatoolplacecomma #1}
+\newcommand*{\datagidx at subject}[2]{#2\noexpand\datatoolsubjectcomma #1}
+\newcommand*{\datagidx at paren}[1]{\noexpand\datatoolparenstart #1}
+\newcommand*{\datagidx at invert}[2]{#2, #1}
+\newcommand*{\DTLgidxParen}[1]{\space(#1)}
+\newcommand*{\datagidxwordifygreek}{%
+ \def\alpha{alpha}%
+ \def\beta{beta}%
+ \def\gamma{gamma}%
+ \def\delta{delta}%
+ \def\epsilon{epsilon}%
+ \def\varepsilon{epsilon}%
+ \def\zeta{zeta}%
+ \def\eta{eta}%
+ \def\theta{theta}%
+ \def\vartheta{theta}%
+ \def\iota{iota}%
+ \def\kappa{kappa}%
+ \def\lambda{lambda}%
+ \def\mu{mu}%
+ \def\nu{nu}%
+ \def\xi{xi}%
+ \def\pi{pi}%
+ \def\varpi{pi}%
+ \def\rho{rho}%
+ \def\varrho{rho}%
+ \def\sigma{sigma}%
+ \def\varsigma{sigma}%
+ \def\tau{tau}%
+ \def\upsilon{upsilon}%
+ \def\phi{phi}%
+ \def\varphi{phi}%
+ \def\chi{chi}%
+ \def\psi{psi}%
+ \def\omega{omega}%
+ \def\Gamma{Gamma}%
+ \def\Delta{Delta}%
+ \def\Theta{Theta}%
+ \def\Lambda{Lambda}%
+ \def\Xi{Xi}%
+ \def\Pi{Pi}%
+ \def\Sigma{Sigma}%
+ \def\Upsilon{Upsilon}%
+ \def\Phi{Phi}%
+ \def\Psi{Psi}%
+ \def\Omega{Omega}%
+}
+\newcommand{\datagidxextendedtoascii}{%
+ \def\AE{AE}%
+ \def\ae{ae}%
+ \def\OE{OE}%
+ \def\oe{oe}%
+ \def\AA{AA}%
+ \def\aa{aa}%
+ \def\L{L}%
+ \def\l{l}%
+ \def\O{O}%
+ \def\o{o}%
+ \def\SS{SS}%
+ \def\ss{ss}%
+ \def\th{th}%
+ \def\TH{TH}%
+ \def\dh{dh}%
+ \def\DH{DH}%
+}
+\newcommand*{\datagidxconvertchars}{%
+ \let~\space
+ \ifdef\andname
+ {%
+ \let\&\andname
+ }%
+ {%
+ \def\&{\expandafter\@gobble\string\&}%
+ }%
+ \def\_{\string_}%
+ \def\${\string$}%
+ \def\#{\expandafter\@gobble\string\#}%
+ \def\%{\expandafter\@gobble\string\%}%
+ \def\{{\expandafter\@gobble\string\{}%
+ \def\}{\expandafter\@gobble\string\}}%
+}
+\@ifl at t@r\fmtversion{2019/10/01}
+{%
+ \newcommand*{\datagidxstripaccents}{%
+ \let\add at accent@\@secondoftwo
+ \let\@text at composite@x\@secondoftwo
+ \let\@tabacckludge\@secondoftwo
+ \expandafter\def\csname \encodingdefault-cmd\endcsname##1##2##3{##3}%
+ \expandafter\def\csname OT1-cmd\endcsname##1##2##3{##3}%
+ \expandafter\def\csname T1-cmd\endcsname##1##2##3{##3}%
+ \expandafter\def\csname PD1-cmd\endcsname##1##2##3{##3}%
+ \def\IeC##1{\@gobbletwo##1}%
+ \let\UTFviii at two@octets\UTFviii at two@octets at combine
+ }%
+}
+{%
+ \newcommand*{\datagidxstripaccents}{%
+ \let\add at accent@\@secondoftwo
+ \let\@text at composite@x\@secondoftwo
+ \let\@tabacckludge\@secondoftwo
+ \expandafter\def\csname \encodingdefault-cmd\endcsname##1##2##3{##3}%
+ \expandafter\def\csname OT1-cmd\endcsname##1##2##3{##3}%
+ \expandafter\def\csname T1-cmd\endcsname##1##2##3{##3}%
+ \expandafter\def\csname PD1-cmd\endcsname##1##2##3{##3}%
+ \def\IeC##1{\@gobbletwo##1}%
+ }%
+}
+\providecommand{\newterm}{\datagidx at newterm}
+\@onlypreamble\newterm
+\newcommand{\datagidx at setfieldvalues}[2]{%
+ \def\newterm at name{#2}%
+ \renewcommand*\newterm at label{#2}%
+ \renewcommand*\newterm at text{#2}%
+ \undef\newterm at plural
+ \renewcommand*{\newterm at description}{}%
+ \renewcommand*{\newterm at sort}{#2}%
+ \renewcommand*{\newterm at symbol}{}%
+ \let\newterm at database\datagidx at defaultdatabase
+ \renewcommand*{\newterm at short}{#2}%
+ \undef\newterm at shortplural
+ \renewcommand*{\newterm at long}{#2}%
+ \undef\newterm at longplural
+ \renewcommand*{\newterm at see}{}%
+ \renewcommand*{\newterm at seealso}{}%
+ \renewcommand*{\newterm at parent}{}%
+ \let\datagidx at orgfield\field
+ \def\field##1{\expandafter\noexpand\csname newterm@##1\endcsname}%
+ \newterm at defaultshook
+ \let\field\datagidx at orgfield
+ \setkeys{newterm}{#1}%
+ \bgroup
+ \let\glsadd\@gobble
+ \let\MakeUppercase\DTLgidxNoFormat
+ \let\MakeTextUppercase\DTLgidxNoFormat
+ \let\MakeLowercase\DTLgidxNoFormat
+ \let\MakeTextLowercase\DTLgidxNoFormat
+ \let\acronymfont\DTLgidxNoFormat
+ \let\textrm\DTLgidxNoFormat
+ \let\texttt\DTLgidxNoFormat
+ \let\textsf\DTLgidxNoFormat
+ \let\textsc\DTLgidxNoFormat
+ \let\textbf\DTLgidxNoFormat
+ \let\textmd\DTLgidxNoFormat
+ \let\textit\DTLgidxNoFormat
+ \let\textsl\DTLgidxNoFormat
+ \let\emph\DTLgidxNoFormat
+ \let\textsuperscript\DTLgidxNoFormat
+ \datagidxconvertchars
+ \let\ensuremath\DTLgidxNoFormat
+ \let\DTLgidxParen\@gobble
+ \let\DTLgidxName\@secondoftwo
+ \let\DTLgidxPlace\datagidx at invert
+ \let\DTLgidxSubject\datagidx at invert
+ \let\DTLgidxOffice\@secondoftwo
+ \let\DTLgidxParticle\datagidx at bothoftwo
+ \datagidxwordifygreek
+ \datagidxstripaccents
+ \datagidxextendedtoascii
+ \newtermlabelhook
+ \protected at xdef\newterm at label{\newterm at label}%
+ \let\DTLgidxName\datagidx at person
+ \let\DTLgidxPlace\datagidx at place
+ \let\DTLgidxSubject\datagidx at subject
+ \let\DTLgidxOffice\datagidx at person
+ \let\DTLgidxParen\datagidx at paren
+ \let\DTLgidxMac\datagidx at mac
+ \let\DTLgidxSaint\datagidx at saint
+ \let\DTLgidxIgnore\@gobble
+ \let\DTLgidxRank\datagidx at rank
+ \let\DTLgidxParticle\datagidx at particle
+ \let\DTLgidxNameNum\datagidx at namenum
+ \protected at xdef\newterm at sort{\newterm at sort}%
+ \egroup
+}
+\newcommand*{\datagidx at add@term}[1]{%
+ \global\cslet{datagidxentry@\newterm at label}{\newterm at database}%
+ \DTLnewrow{\newterm at database}%
+ \DTLnewdbentry{\newterm at database}{Name}{#1}%
+ \DTLnewdbentry{\newterm at database}{Used}{0}%
+ {%
+ \dtlexpandnewvalue
+ \DTLnewdbentry{\newterm at database}{Text}{\expandonce\newterm at text}%
+ \DTLnewdbentry{\newterm at database}{Description}{\expandonce\newterm at description}%
+ \DTLnewdbentry{\newterm at database}{Label}{\expandonce\newterm at label}%
+ \DTLnewdbentry{\newterm at database}{Sort}{\expandonce\newterm at sort}%
+ \DTLnewdbentry{\newterm at database}{Symbol}{\expandonce\newterm at symbol}%
+ \DTLnewdbentry{\newterm at database}{Short}{\expandonce\newterm at short}%
+ \DTLnewdbentry{\newterm at database}{Long}{\expandonce\newterm at long}%
+ \ifundef\newterm at plural
+ {%
+ \DTLnewdbentry{\newterm at database}{Plural}{\expandonce\newterm at text s}%
+ }%
+ {%
+ \DTLnewdbentry{\newterm at database}{Plural}{\expandonce\newterm at plural}%
+ }%
+ \ifundef\newterm at shortplural
+ {%
+ \DTLnewdbentry{\newterm at database}{ShortPlural}{\expandonce\newterm at short s}%
+ }%
+ {%
+ \DTLnewdbentry{\newterm at database}{ShortPlural}{\expandonce\newterm at shortplural}%
+ }%
+ \ifundef\newterm at longplural
+ {%
+ \DTLnewdbentry{\newterm at database}{LongPlural}{\expandonce\newterm at long s}%
+ }%
+ {%
+ \DTLnewdbentry{\newterm at database}{LongPlural}{\expandonce\newterm at longplural}%
+ }%
+ \ifdefempty{\newterm at see}%
+ {}%
+ {\DTLnewdbentry{\newterm at database}{See}{\newterm at see}}%
+ \ifdefempty{\newterm at seealso}%
+ {}%
+ {\DTLnewdbentry{\newterm at database}{SeeAlso}{\newterm at seealso}}%
+ \newterm at extrafields
+ \ifdefempty{\newterm at parent}%
+ {}%
+ {%
+ \iftermexists{\newterm at parent}%
+ {%
+ \edef\newterm at parentdatabase{\csuse{datagidxentry@\newterm at parent}}%
+ \ifthenelse{\equal{\newterm at parentdatabase}{\newterm at database}}
+ {%
+ \DTLnewdbentry{\newterm at database}{Parent}{\newterm at parent}%
+ \datagidx at addchild{\newterm at database}{\newterm at parent}{\newterm at label}%
+ }%
+ {%
+ \PackageError{datagidx}%
+ {%
+ Parent entry `\newterm at parent' must belong to the
+ same database as child entry `\newterm at label'%
+ }%
+ {%
+ Parent entry is in database
+ `\newterm at parentdatabase' and child entry is in
+ database `\newterm at database'%
+ }%
+ }%
+ }%
+ {%
+ \PackageError{datagidx}%
+ {%
+ Can't assign parent to `\newterm at label':
+ `\newterm at parent' doesn't exist%
+ }%
+ {}%
+ }%
+ }%
+ }%
+ \global\let\datagidxlastlabel\newterm at label
+ \postnewtermhook
+}%
+\newcommand*{\postnewtermhook}{}
+\newcommand*{\newtermfield}[1]{\csuse{newterm@#1}}
+\newcommand{\ifnewtermfield}[3]{%
+ \ifcsdef{newterm@#1}
+ {%
+ \ifcsempty{newterm@#1}{#3}{#2}%
+ }%
+ {%
+ #3%
+ }%
+}
+\newcommand{\datagidx at newterm}[2][]{%
+ \datagidx at setfieldvalues{#1}{#2}%
+ \DTLifdbexists{\newterm at database}%
+ {%
+ \iftermexists{\newterm at label}%
+ {%
+ \PackageError{datagidx}{Term `\newterm at label' already
+ exists in database `\newterm at database'}{}%
+ }%
+ {%
+ \datagidx at add@term{#2}%
+ }%
+ }%
+ {%
+ \PackageError{datagidx}%
+ {Glossary/index data base `\newterm at database' doesn't exist}%
+ {%
+ You must define the glossary/index data base before you can
+ add any terms to it.%
+ }%
+ }%
+}
+\newcommand{\datagidx at highopt@newterm}[2][]{%
+ \datagidx at setfieldvalues{#1}{#2}%
+ \DTLifdbexists{\newterm at database}%
+ {%
+ \edef\dtl at dogetrow{%
+ \noexpand\dtlgetrowindex
+ {\noexpand\dtl at rowidx}%
+ {\newterm at database}%
+ {%
+ \dtlcolumnindex{\newterm at database}{Label}%
+ }%
+ {\newterm at label}}%
+ \dtl at dogetrow
+ \ifx\dtl at rowidx\dtlnovalue
+ \datagidx at add@term{#2}%
+ \csdef{datagidx at do@highopt at sort@\newterm at database}{\datagidx at sort}%
+ \else
+ \global\cslet{datagidxentry@\newterm at label}{\newterm at database}%
+ \global\let\datagidxlastlabel\newterm at label
+ \fi
+ }%
+ {%
+ \PackageError{datagidx}%
+ {Glossary/index data base `\newterm at database' doesn't exist}%
+ {%
+ You must define the glossary/index data base before you can
+ add any terms to it.%
+ }%
+ }%
+}
+\newcommand*{\datagidx at addchild}[3]{%
+ \edef\dtl at dogetrow{%
+ \noexpand\dtlgetrowforvalue
+ {#1}%
+ {%
+ \dtlcolumnindex{\newterm at database}{Label}%
+ }%
+ {#2}}%
+ \dtl at dogetrow
+ \dtlgetentryfromcurrentrow
+ {\datagidx at child}%
+ {\dtlcolumnindex{#1}{Child}}%
+ \ifx\datagidx at child\dtlnovalue
+ \edef\datagidx at child{#3}%
+ \else
+ \edef\datagidx at child{\datagidx at child,#3}%
+ \fi
+ \edef\do at update{\noexpand\dtlupdateentryincurrentrow
+ {Child}{\datagidx at child}}%
+ \do at update
+ \dtlrecombine
+}
+\newcommand{\newacro}[3][]{%
+ \newterm
+ [%
+ description={\capitalisewords{#3}},%
+ short={\acronymfont{#2}},%
+ long={#3},%
+ text={\DTLgidxAcrStyle{#3}{\acronymfont{#2}}},%
+ plural={\DTLgidxAcrStyle{#3s}{\acronymfont{#2s}}},%
+ sort={#2},%
+ #1%
+ ]%
+ {\MakeTextUppercase{#2}}%
+}
+\newcommand*{\acronymfont}[1]{#1}
+\newcommand*{\DTLgidxAcrStyle}[2]{#1 (#2)}
+\newcommand{\iftermexists}[3]{%
+ \ifcsdef{datagidxentry@#1}{#2}{#3}%
+}
+\newcommand*{\datagidxdb}[1]{%
+ \csuse{datagidxentry@#1}%
+}
+\newcommand*{\ifentryused}[3]{%
+ \letcs{\newterm at database}{datagidxentry@#1}%
+ \edef\dtl at dogetrow{%
+ \noexpand\dtlgetrowforvalue
+ {\newterm at database}%
+ {%
+ \dtlcolumnindex{\newterm at database}{Label}%
+ }%
+ {#1}}%
+ \dtl at dogetrow
+ \dtlgetentryfromcurrentrow
+ {\datagidx at value}%
+ {\dtlcolumnindex{\newterm at database}{Used}}%
+ \ifnum\datagidx at value=1\relax
+ #2%
+ \else
+ #3%
+ \fi
+}
+\newcommand*{\glsreset}[1]{%
+ \letcs{\newterm at database}{datagidxentry@#1}%
+ \edef\do at getrow{%
+ \noexpand\dtlgetrowforvalue
+ {\newterm at database}%
+ {\dtlcolumnindex{\newterm at database}{Label}}%
+ {#1}%
+ }%
+ \do at getrow
+ \dtlreplaceentryincurrentrow
+ {0}{\dtlcolumnindex{\newterm at database}{Used}}%
+ \dtlrecombine
+}
+\newcommand*{\glsunset}[1]{%
+ \letcs{\newterm at database}{datagidxentry@#1}%
+ \edef\do at getrow{%
+ \noexpand\dtlgetrowforvalue
+ {\newterm at database}%
+ {\dtlcolumnindex{\newterm at database}{Label}}%
+ {#1}%
+ }%
+ \do at getrow
+ \dtlreplaceentryincurrentrow
+ {1}{\dtlcolumnindex{\newterm at database}{Used}}%
+ \dtlrecombine
+}
+\newcommand*{\glsresetall}[1]{%
+ \def\datagidx at list{}%
+ \dtlforcolumn{\datagidx at label}{#1}{Label}%
+ {%
+ \ifdefempty\datagidx at list
+ {%
+ \let\datagidx at list\datagidx at label
+ }%
+ {%
+ \eappto\datagidx at list{,\datagidx at label}%
+ }%
+ }%
+ \@for\datagidx at thislabel:=\datagidx at list\do
+ {%
+ \glsreset{\datagidx at thislabel}%
+ }%
+}
+\newcommand*{\glsunsetall}[1]{%
+ \def\datagidx at list{}%
+ \dtlforcolumn{\datagidx at label}{#1}{Label}%
+ {%
+ \ifdefempty\datagidx at list
+ {%
+ \let\datagidx at list\datagidx at label
+ }%
+ {%
+ \eappto\datagidx at list{,\datagidx at label}%
+ }%
+ }%
+ \@for\datagidx at thislabel:=\datagidx at list\do
+ {%
+ \glsunset{\datagidx at thislabel}%
+ }%
+}
+\newcount\datagidx at anchorcount
+\newcommand*{\datagidx at formatanchor}[1]{%
+ \ifnum#1<10000
+ 0%
+ \ifnum#1<1000
+ 0%
+ \ifnum#1<100
+ 0%
+ \ifnum#1<10
+ 0%
+ \fi
+ \fi
+ \fi
+ \fi
+ \number#1%
+}
+\newcommand*{\@datagidx at escloc}[2]{%
+ \expandafter\string\csname#1\endcsname{\noexpand\number#2}%
+}
+\newcommand*{\datagidx at escapelocation}{%
+ \def\@arabic{\@datagidx at escloc{@arabic}}%
+ \def\@roman{\@datagidx at escloc{@roman}}%
+ \def\@Roman{\@datagidx at escloc{@Roman}}%
+ \def\@alph{\@datagidx at escloc{@alph}}%
+ \def\@Alph{\@datagidx at escloc{@Alph}}%
+}
+\newcommand*{\datagidx at escapelocationformat}{%
+ \def\@arabic##1{arabic}%
+ \def\@roman##1{roman}%
+ \def\@Roman##1{Roman}%
+ \def\@alph##1{alph}%
+ \def\@Alph##1{Alph}%
+}
+\newcommand*{\datagidx at clearlocationformat}{%
+ \let\@arabic\@firstofone
+ \let\@roman\@firstofone
+ \let\@Roman\@firstofone
+ \let\@alph\@firstofone
+ \let\@Alph\@firstofone
+}
+\newcommand*{\DTLgidxAddLocationType}[1]{%
+ \gappto\datagidx at escapelocation{%
+ \expandafter\def\csname#1\endcsname{\@datagidx at escloc{#1}}%
+ }%
+ \gappto\datagidx at escapelocationformat{%
+ \expandafter\def\csname#1\endcsname##1{#1}%
+ }%
+ \gappto\datagidx at clearlocationformat{%
+ \expandafter\let\csname#1\endcsname\@firstofone
+ }%
+}
+\@onlypreamble\DTLgidxAddLocationType
+\newcommand*{\datagidx at target}[4]{%
+ \global\advance\datagidx at anchorcount by 1\relax
+ \edef\@datagidx at target{datagidx.\datagidx at formatanchor\datagidx at anchorcount}%
+ \ifstrempty{#3}
+ {%
+ \datagidx at write@usedentry{#1}{}%
+ }%
+ {%
+ \bgroup
+ \datagidx at escapelocation
+ \def\@arabic{\noexpand\@arabic}%
+ \def\@roman{\noexpand\@roman}%
+ \def\@Roman{\noexpand\@Roman}%
+ \def\@alph{\noexpand\@alph}%
+ \def\@Alph{\noexpand\@Alph}%
+ \protected at edef\@datagidx at dowriteaux{%
+ \noexpand\datagidx at write@usedentry{#1}%
+ {[#2]{#3}{\@datagidx at target}}%
+ }%
+ \@datagidx at dowriteaux
+ \egroup
+ }%
+ \ifdef\hypertarget
+ {%
+ \datagidxshowifdraft
+ {%
+ [\@datagidx at target]%
+ \discretionary{}{}{}%
+ }%
+ \bgroup
+ \let\glsadd\@gobble
+ \settoheight\dimen@{#4}%
+ \raisebox{\dimen@}%
+ {%
+ \datagidxtarget{\@datagidx at target}{}%
+ }%
+ \egroup
+ }%
+ {%
+ }%
+ \datagidxshowifdraft{[#1]\discretionary{}{}{}}%
+ #4%
+}
+\DeclareRobustCommand*{\glsdispentry}[2]{%
+ \DTLgidxFetchEntry{\datagidx at dispentryval}{#1}{#2}%
+ \datagidx at dispentryval
+}
+\DeclareRobustCommand*{\Glsdispentry}[2]{%
+ \DTLgidxFetchEntry{\datagidx at dispentryval}{#1}{#2}%
+ \xmakefirstuc\datagidx at dispentryval
+}
+\newcommand*{\DTLgidxFetchEntry}[3]{%
+ \ifcsdef{datagidxentry@#2}%
+ {%
+ \letcs{\newterm at database}{datagidxentry@#2}%
+ \edef\do at getrow{%
+ \noexpand\dtlgetrowforvalue
+ {\newterm at database}%
+ {\dtlcolumnindex{\newterm at database}{Label}}%
+ {#2}%
+ }%
+ \do at getrow
+ \dtlgetentryfromcurrentrow
+ {#1}%
+ {\dtlcolumnindex{\newterm at database}{#3}}%
+ }%
+ {%
+ \PackageError{datagidx}{No term `#2' defined}{}%
+ }%
+}
+\newcommand*{\datagidx at parse@formatlabel}[1]{%
+ \datagidx at parse@format at label@#1\@endparse at formatlabel@
+}
+\newcommand*\datagidx at parse@format at label@{%
+ \@ifnextchar[{\datagidx at parse@formatlabel@}{\datagidx at parse@formatlabel@[]}%
+}
+\def\datagidx at parse@formatlabel@[#1]#2\@endparse at formatlabel@{%
+ \def\datagidx at format{#1}%
+ \def\datagidx at label{#2}%
+}
+\newcommand*{\@datagidx at use@entry}[1]{%
+ \ifcsundef{datagidxentry@\datagidx at label}
+ {%
+ \PackageError{datagidx}{Entry `\datagidx at label' doesn't exist}{}%
+ }%
+ {%
+ \letcs{\newterm at database}{datagidxentry@\datagidx at label}%
+ \edef\do at getrow{%
+ \noexpand\dtlgetrowforvalue
+ {\newterm at database}%
+ {\dtlcolumnindex{\newterm at database}{Label}}%
+ {\datagidx at label}%
+ }%
+ \do at getrow
+ \dtlgetentryfromcurrentrow
+ {\datagidx at id}%
+ {\dtlcolumnindex{\newterm at database}{FirstId}}%
+ \DTLifnull\datagidx at id
+ {%
+ \count@=\datagidx at anchorcount\relax
+ \advance\count@ by 1\relax
+ \dtlappendentrytocurrentrow{FirstId}{\datagidx at formatanchor\count@}%
+ }%
+ {}%
+ \dtlreplaceentryincurrentrow
+ {1}{\dtlcolumnindex{\newterm at database}{Used}}%
+ \dtlgetentryfromcurrentrow
+ {\datagidx at parent}%
+ {\dtlcolumnindex{\newterm at database}{Parent}}%
+ \dtlrecombine
+ \datagidx at markparent{\newterm at database}{\datagidx at parent}%
+ \datagidx at target{\datagidx at label}{\datagidx at format}%
+ {\csuse{the\DTLgidxCounter}}{#1}%
+ }%
+}
+\newcommand*{\DTLgidxCounter}{page}
+\newcommand*{\datagidx at markparent}[2]{%
+ \ifx#2\dtlnovalue
+ \else
+ \datagidx at target{#2}{}{}{}%
+ \edef\do at getrow{%
+ \noexpand\dtlgetrowforvalue
+ {#1}%
+ {\dtlcolumnindex{#1}{Label}}%
+ {#2}}%
+ \do at getrow
+ \dtlgetentryfromcurrentrow
+ {\datagidx at id}%
+ {\dtlcolumnindex{\newterm at database}{FirstId}}%
+ \DTLifnull\datagidx at id
+ {%
+ \dtlappendentrytocurrentrow{FirstId}{\datagidx at formatanchor\datagidx at anchorcount}%
+ }%
+ {}%
+ \dtlgetentryfromcurrentrow
+ {\datagidx at parent}%
+ {\dtlcolumnindex{#1}{Parent}}%
+ \dtlrecombine
+ \datagidx at markparent{#1}{\datagidx at parent}%
+ \fi
+}
+\newcommand*{\datagidx at write@usedentry}[2]{%
+ \datagidx at do@highopt at update{#1}%
+ \protected at write{\@auxout}{}%
+ {%
+ \string\datagidx at usedentry{#1}{#2}%
+ }%
+ \protected at edef\datagidx at do@usedentry{%
+ \noexpand\datagidx at xusedentry{CurrentLocation}{#1}{#2}%
+ }%
+ \expandafter\ifstrequal\expandafter{\DTLgidxCounter}{page}%
+ {%
+ \expandafter\afterpage\expandafter{\datagidx at do@usedentry}%
+ }%
+ {
+ \datagidx at do@usedentry
+ }%
+}
+\newcommand*{\datagidx at xusedentry}[3]{%
+ \protected at edef\@datagidx at do@xusedentry{%
+ \noexpand\datagidx at usedentry[#1]{#2}{#3}%
+ }%
+ \@datagidx at do@xusedentry
+}
+\newcommand*{\datagidx at usedentry}[3][Location]{%
+ \ifcsundef{datagidxentry@#2}%
+ {%
+ \PackageWarning{datagidx}{No term `#2' defined. Ignoring}%
+ }%
+ {%
+ \letcs{\newterm at database}{datagidxentry@#2}%
+ \edef\do at getrow{%
+ \noexpand\dtlgetrowforvalue
+ {\newterm at database}%
+ {\dtlcolumnindex{\newterm at database}{Label}}%
+ {#2}%
+ }%
+ \do at getrow
+ \dtlgetentryfromcurrentrow
+ {\datagidx at loc}%
+ {\dtlcolumnindex{\newterm at database}{#1}}%
+ \ifx\datagidx at loc\dtlnovalue
+ \def\datagidx at loc{#3}%
+ \dtlappendentrytocurrentrow{#1}{\expandonce\datagidx at loc}%
+ \else
+ \ifdefempty{\datagidx at loc}%
+ {%
+ \def\datagidx at loc{#3}%
+ }%
+ {%
+ \ifstrempty{#3}%
+ {}%
+ {%
+ \appto\datagidx at loc{,#3}%
+ }%
+ }%
+ \expandafter\dtlreplaceentryincurrentrow\expandafter
+ {\datagidx at loc}%
+ {\dtlcolumnindex{\newterm at database}{#1}}%
+ \fi
+ \dtlrecombine
+ }%
+}
+\newcommand*{\datagidx at save@loc}[2]{%
+ \bgroup
+ \datagidx at escapelocation
+ \xdef\datagidx at tmp{#2}%
+ \egroup
+ \expandafter\xdef\csname datagidx at prev@loc@#1\endcsname{\datagidx at tmp}%
+}
+\newcommand*{\glsadd}[1]{%
+ \NoCaseChange{\@glsadd{#1}}%
+}
+\DeclareRobustCommand*{\@glsadd}[1]{%
+ \ifcsundef{datagidxentry@\datagidx at label}%
+ {%
+ \PackageError{datagidx}{Term `\datagidx at label' doesn't exist}{}%
+ }%
+ {%
+ \datagidx at parse@formatlabel{#1}%
+ \datagidx at target{\datagidx at label}{\datagidx at format}%
+ {\csuse{the\DTLgidxCounter}}{}%
+ \letcs{\newterm at database}{datagidxentry@\datagidx at label}%
+ \edef\do at getrow{%
+ \noexpand\dtlgetrowforvalue
+ {\newterm at database}%
+ {\dtlcolumnindex{\newterm at database}{Label}}%
+ {\datagidx at label}%
+ }%
+ \do at getrow
+ \dtlreplaceentryincurrentrow
+ {1}{\dtlcolumnindex{\newterm at database}{Used}}%
+ \dtlgetentryfromcurrentrow
+ {\datagidx at id}%
+ {\dtlcolumnindex{\newterm at database}{FirstId}}%
+ \DTLifnull\datagidx at id
+ {%
+ \dtlappendentrytocurrentrow{FirstId}{\datagidx at formatanchor\datagidx at anchorcount}%
+ }%
+ {}%
+ \dtlrecombine
+ }%
+}
+\newcount\datagidx at count
+\newcommand*{\glsaddall}[1]{%
+ \DTLifdbexists{#1}%
+ {%
+ \edef\datagidx at rowcount{\number\DTLrowcount{#1}}%
+ \datagidx at count=0\relax
+ \loop
+ \advance\datagidx at count by 1\relax
+ \dtlgetrow{#1}{\datagidx at count}%
+ \dtlgetentryfromcurrentrow
+ {\datagidx at label}%
+ {\dtlcolumnindex{#1}{Label}}%
+ \bgroup
+ \undef\hypertarget
+ \datagidx at target{\datagidx at label}{}{}{}%
+ \egroup
+ \dtlreplaceentryincurrentrow
+ {1}{\dtlcolumnindex{#1}{Used}}%
+ \dtlgetentryfromcurrentrow
+ {\datagidx at id}%
+ {\dtlcolumnindex{#1}{FirstId}}%
+ \DTLifnull\datagidx at id
+ {%
+ \dtlappendentrytocurrentrow{FirstId}{\datagidx at formatanchor\datagidx at anchorcount}%
+ }%
+ {}%
+ \dtlrecombine
+ \ifnum\datagidx at count<\datagidx at rowcount
+ \repeat
+ }%
+ {%
+ \PackageError{datagidx}{Database `#1' doesn't exist}{}%
+ }%
+}
+\DeclareRobustCommand*{\glslink}[2]{%
+ \datagidx at parse@formatlabel{#1}%
+ \datagidxlink{\datagidx at label}%
+ {%
+ \@datagidx at use@entry{#2}%
+ }%
+}
+\DeclareRobustCommand*{\useentry}[2]{%
+ \datagidx at parse@formatlabel{#1}%
+ \DTLgidxFetchEntry{\datagidx at value}{\datagidx at label}{#2}%
+ \datagidxlink{\datagidx at label}%
+ {%
+ \@datagidx at use@entry{\datagidx at value}%
+ }%
+}
+\DeclareRobustCommand*{\Useentry}[2]{%
+ \datagidx at parse@formatlabel{#1}%
+ \DTLgidxFetchEntry{\datagidx at value}{\datagidx at label}{#2}%
+ \datagidxlink{\datagidx at label}%
+ {%
+ \@datagidx at use@entry{\xmakefirstuc{\datagidx at value}}%
+ }%
+}
+\DeclareRobustCommand*{\USEentry}[2]{%
+ \datagidx at parse@formatlabel{#1}%
+ \DTLgidxFetchEntry{\datagidx at value}{\datagidx at label}{#2}%
+ \datagidxlink{\datagidx at label}%
+ {%
+ \@datagidx at use@entry{\MakeTextUppercase{\datagidx at value}}%
+ }%
+}
+\DeclareRobustCommand*{\useentrynl}[2]{%
+ \datagidx at parse@formatlabel{#1}%
+ \DTLgidxFetchEntry{\datagidx at value}{\datagidx at label}{#2}%
+ \@datagidx at use@entry{\datagidx at value}%
+}
+\DeclareRobustCommand*{\Useentrynl}[2]{%
+ \datagidx at parse@formatlabel{#1}%
+ \DTLgidxFetchEntry{\datagidx at value}{\datagidx at label}{#2}%
+ \@datagidx at use@entry{\xmakefirstuc{\datagidx at value}}%
+}
+\DeclareRobustCommand*{\USEentrynl}[2]{%
+ \datagidx at parse@formatlabel{#1}%
+ \DTLgidxFetchEntry{\datagidx at value}{\datagidx at label}{#2}%
+ \@datagidx at use@entry{\MakeTextUppercase{\datagidx at value}}%
+}
+\DeclareRobustCommand*{\gls}[1]{\useentry{#1}{Text}}
+\DeclareRobustCommand*{\glspl}[1]{\useentry{#1}{Plural}}
+\DeclareRobustCommand*{\Gls}[1]{\Useentry{#1}{Text}}
+\DeclareRobustCommand*{\Glspl}[1]{\Useentry{#1}{Plural}}
+\DeclareRobustCommand*{\glsnl}[1]{\useentrynl{#1}{Text}}
+\DeclareRobustCommand*{\glsplnl}[1]{\useentrynl{#1}{Plural}}
+\DeclareRobustCommand*{\Glsnl}[1]{\Useentrynl{#1}{Text}}
+\DeclareRobustCommand*{\Glsplnl}[1]{\Useentrynl{#1}{Plural}}
+\DeclareRobustCommand*{\glssym}[1]{\useentry{#1}{Symbol}}
+\DeclareRobustCommand*{\Glssym}[1]{\Useentry{#1}{Symbol}}
+\newcommand*{\DTLgidxFormatAcr}[3]{%
+ \DTLgidxAcrStyle{\glsdispentry{#1}{#2}}{\useentry{#1}{#3}}%
+}
+\newcommand*{\DTLgidxFormatAcrUC}[3]{%
+ \DTLgidxAcrStyle{\Glsdispentry{#1}{#2}}{\useentry{#1}{#3}}%
+}
+\DeclareRobustCommand*{\acr}[1]{%
+ \ifentryused{#1}%
+ {\useentry{#1}{Short}}%
+ {\DTLgidxFormatAcr{#1}{Long}{Short}}%
+}
+\DeclareRobustCommand*{\acrpl}[1]{%
+ \ifentryused{#1}%
+ {\useentry{#1}{ShortPlural}}%
+ {\DTLgidxFormatAcr{#1}{LongPlural}{ShortPlural}}%
+}
+\DeclareRobustCommand*{\Acr}[1]{%
+ \ifentryused{#1}%
+ {\Useentry{#1}{Short}}%
+ {\DTLgidxFormatAcrUC{#1}{Long}{Short}}%
+}
+\DeclareRobustCommand*{\Acrpl}[1]{%
+ \ifentryused{#1}%
+ {\Useentry{#1}{ShortPlural}}%
+ {\DTLgidxFormatAcrUC{#1}{LongPlural}{ShortPlural}}%
+}
+\define at key{printterms}{database}{\renewcommand*{\newterm at database}{#1}}
+\define at choicekey{printterms}{postdesc}[\val\nr]%
+ {none,dot}%
+ {%
+ \datagidx at setpostdesc\nr
+ }
+\define at choicekey{printterms}{prelocation}[\val\nr]%
+ {none,enspace,space,dotfill,hfill}%
+ {%
+ \datagidx at setprelocation\nr
+ }
+\define at choicekey{printterms}{location}[\val\nr]%
+ {hide,list,first}%
+ {\datagidx at setlocation\nr}
+\define at choicekey{printterms}{symboldesc}[\val\nr]%
+ {symbol,desc,(symbol) desc,desc (symbol),symbol desc,desc symbol}%
+ {\datagidx at formatsymdesc\nr}
+\define at key{printterms}{columns}%
+{%
+ \DTLgidxSetColumns{#1}%
+}
+\define at choicekey{printterms}{namecase}[\val\nr]%
+ {nochange,uc,lc,firstuc,capitalise}%
+ {%
+ \datagidx at setnamecase\nr
+ }
+\define at key{printterms}{namefont}%
+{%
+ \renewcommand*{\DTLgidxNameFont}[1]{{#1{##1}}}%
+}
+\define at key{printterms}{postname}
+{%
+ \renewcommand*{\DTLgidxPostName}{#1}%
+}
+\define at choicekey{printterms}{see}[\val\nr]%
+ {comma,brackets,dot,space,nosep,semicolon,location}%
+ {\datagidx at setsee\nr}
+\define at choicekey{printterms}{child}[\val\nr]%
+ {named,noname}%
+ {%
+ \datagidx at setchildstyle\nr
+ }
+\define at key{printterms}{symbolwidth}%
+{%
+ \setlength{\datagidxsymbolwidth}{#1}%
+}
+\define at key{printterms}{locationwidth}%
+{%
+ \setlength{\datagidxlocationwidth}{#1}%
+}
+\define at choicekey{printterms}{childsort}[\val\nr]%
+ {true,false}[true]%
+ {%
+ \datagidx at setchildsort\nr
+ }
+\define at choicekey{printterms}{showgroups}{true,false}[true]{%
+ \appto\newterm at styles{showgroups={#1},}%
+}
+\define at key{printterms}{style}{\appto\newterm at styles{style={#1},}}
+\define at key{printterms}{heading}{\appto\newterm at styles{heading={#1},}}
+\define at key{printterms}{postheading}{%
+ \appto\newterm at styles{postheading={#1},}%
+}
+\define at key{printterms}{sort}{\appto\newterm at styles{sort={#1},}}
+\define at choicekey{printterms}{balance}[\val\nr]{true,false}[true]{%
+ \ifcase\nr\relax
+ \appto\newterm at styles{balance=true,}%
+ \or
+ \appto\newterm at styles{balance=false,}%
+ \fi
+}
+\newcommand*{\printterms at condition}{\boolean{true}}
+\define at key{printterms}{condition}{\renewcommand*{\printterms at condition}{#1}}
+\newcommand{\printtermsstartpar}{\par}
+\newcommand*{\printterms at setupmulticol}{%
+ \ifdefempty\datagidx at postheading
+ {%
+ \edef\datagidx at prestart{%
+ \noexpand\datagidx at heading{\noexpand\datagidx at title}%
+ \noexpand\begin{\datagidx at multicols}{\datagidx at columns}%
+ }%
+ }%
+ {%
+ \edef\datagidx at prestart{%
+ \noexpand\datagidx at heading{\noexpand\datagidx at title}%
+ \noexpand\begin{\datagidx at multicols}{\datagidx at columns}%
+ [\noexpand\datagidx at postheading]%
+ }%
+ }%
+ \edef\datagidx at postend{%
+ \noexpand\end{\datagidx at multicols}%
+ }%
+}
+\newcommand*{\printterms at setuptwocol}{%
+ \def\datagidx at prestart{%
+ \twocolumn[\datagidx at heading{\datagidx at title}%
+ \datagidx at postheading]}%
+ \if at twocolumn
+ \def\datagidx at postend{}%
+ \else
+ \def\datagidx at postend{\printtermsrestoreonecolumn}%
+ \fi
+}
+\newcommand{\printtermsrestoreonecolumn}{\onecolumn}
+\newcommand{\printterms}[1][]{%
+\bgroup
+ \let\newterm at database\datagidx at defaultdatabase
+ \let\newterm at styles\@empty
+ \setkeys{printterms}{#1}%
+ \DTLifdbexists{\newterm at database}%
+ {%
+ \edef\DTLgidxCurrentdb{\newterm at database}%
+ \edef\do at getrow{\noexpand\dtlgetrowforvalue
+ {datagidx}%
+ {\dtlcolumnindex{datagidx}{Glossary}}%
+ {\newterm at database}%
+ }%
+ \do at getrow
+ \dtlgetentryfromcurrentrow
+ {\datagidx at title}%
+ {\dtlcolumnindex{datagidx}{Title}}%
+ \dtlgetentryfromcurrentrow
+ {\datagidx at heading}%
+ {\dtlcolumnindex{datagidx}{Heading}}%
+ \dtlgetentryfromcurrentrow
+ {\datagidx at postheading}%
+ {\dtlcolumnindex{datagidx}{PostHeading}}%
+ \dtlgetentryfromcurrentrow
+ {\datagidx at multicols}%
+ {\dtlcolumnindex{datagidx}{MultiCols}}%
+ \dtlgetentryfromcurrentrow
+ {\datagidx at sort}%
+ {\dtlcolumnindex{datagidx}{Sort}}%
+ \dtlgetentryfromcurrentrow
+ {\datagidx at style}%
+ {\dtlcolumnindex{datagidx}{Style}}%
+ \dtlgetentryfromcurrentrow
+ {\datagidx at showgroups}%
+ {\dtlcolumnindex{datagidx}{ShowGroups}}%
+ \edef\dtl at do@setkeys{\noexpand\setkeys{newgloss}{\expandonce\newterm at styles}}%
+ \dtl at do@setkeys
+ \ifnum\datagidx at columns>1\relax
+ \ifnum\datagidx at columns=2\relax
+ \ifdatagidxbalance
+ \printterms at setupmulticol
+ \else
+ \printterms at setuptwocol
+ \fi
+ \else
+ \printterms at setupmulticol
+ \fi
+ \else
+ \def\datagidx at prestart{}%
+ \def\datagidx at postend{}%
+ \fi
+ \let\@dtl at dbname\DTLgidxCurrentdb
+ \csuse{datagidxshowgroups\datagidx at showgroups}%
+ \datagidxsetstyle{\datagidx at style}%
+ \def\datagidx at labellist{}%
+ \ifnum\datagidx at columns=1\relax
+ \datagidx at heading{\datagidx at title}%
+ \datagidx at postheading
+ \fi
+ \datagidx at do@sort
+ \datagidx at prestart
+ \printtermsstartpar
+ \datagidxstart
+ \let\DTLgidxName\datagidx at invert
+ \let\DTLgidxPlace\datagidx at invert
+ \let\DTLgidxSubject\datagidx at invert
+ \let\DTLgidxOffice\datagidx at invert
+ \DTLgidxForeachEntry
+ {%
+ \datagidxitem
+ }%
+ \datagidxend
+ \datagidx at postend
+ }%
+ {%
+ \PackageError{datagidx}%
+ {Glossary/index data base `\newterm at database' doesn't exist}%
+ {%
+ You must define the glossary/index data base before you can
+ use it.%
+ }%
+ }%
+\egroup
+}
+\def\datagidx at getgroup#1#2\datagidx at endgetgroup{%
+ \dtl at setcharcode{#1}{\count@}%
+ \dtlifintclosedbetween{\count@}{48}{57}%
+ {%
+ \gdef\datagidxcurrentgroup{Numbers}%
+ }%
+ {%
+ \dtlifintclosedbetween{\count@}{97}{122}%
+ {%
+ \advance\count@ by -96\relax
+ \xdef\datagidxcurrentgroup{\@Alph\count@}%
+ }%
+ {%
+ \dtlifintclosedbetween{\count@}{65}{90}%
+ {%
+ \gdef\datagidxcurrentgroup{#1}%
+ }%
+ {%
+ \gdef\datagidxcurrentgroup{Symbols}%
+ }%
+ }%
+ }%
+}
+\newcommand*{\DTLgidxGroupHeaderTitle}[1]{%
+ \ifcsdef{datagidx#1name}
+ {%
+ \csuse{datagidx#1name}%
+ }%
+ {%
+ #1%
+ }%
+}
+\newcommand{\DTLgidxForeachEntry}[1]{%
+ \def\datagidxprevgroup{}%
+ \edef\datagidx at doforeachentry{%
+ \noexpand\DTLforeach*[\expandonce\printterms at condition]{\DTLgidxCurrentdb}%
+ {\expandonce\DTLgidxAssignList}
+ }%
+ \datagidx at doforeachentry
+ {%
+ \DTLifnull{\Parent}%
+ {%
+ \DTLifnull\Location
+ {%
+ \DTLifnull\CurrentLocation
+ {%
+ }%
+ {%
+ \global\let\@datagidx at dorerun@warn\@data at rerun@warn
+ }%
+ }%
+ {%
+ \ifcsdef{datagidx at prev@loc@\Label}%
+ {%
+ \dtlgidx at checklocationchange
+ }%
+ {%
+ \global\let\@datagidx at dorerun@warn\@data at rerun@warn
+ }%
+ }%
+ \datagidx at doifdisplayed
+ {%
+ \edef\datagidx at dowrite{%
+ \noexpand\protected at write\noexpand\@auxout{}%
+ {%
+ \string\datagidx at save@loc{\Label}{\CurrentLocation}%
+ }%
+ }%
+ \datagidx at dowrite
+ \datagidx at level=1\relax
+ \expandafter\datagidx at getgroup\Sort{}\datagidx at endgetgroup
+ #1%
+ \global\let\datagidxprevgroup\datagidxcurrentgroup
+ }%
+ }%
+ {}%
+ }%
+}
+\newcommand*{\dtlgidx at checklocationchange}{%
+ \protected at edef\@prev at location{%
+ \csname datagidx at prev@loc@\Label\endcsname}%
+ \@onelevel at sanitize\@prev at location
+ \protected at edef\@cur at location{\CurrentLocation}%
+ \@onelevel at sanitize\@cur at location
+ \ifdefequal{\@prev at location}{\@cur at location}%
+ {}%
+ {%
+ \global\let\@datagidx at dorerun@warn\@data at rerun@warn
+ }%
+}
+\newcommand{\datagidx at doifdisplayed}[1]{%
+ \DTLifnull{\Location}%
+ {%
+ \DTLifnull{\See}
+ {%
+ \DTLifnull{\SeeAlso}{}%
+ {%
+ #1%
+ }%
+ }%
+ {%
+ \@for\dtl at thislabel:=\See\do
+ {%
+ \iftermexists{\dtl at thislabel}%
+ {%
+ \ifentryused{\dtl at thislabel}%
+ {%
+ #1%
+ \@endfortrue
+ }%
+ {}%
+ }%
+ {%
+ }%
+ }%
+ }%
+ }%
+ {%
+ #1%
+ }%
+}%
+\newcount\datagidx at level
+% \end{macrocode}
+%\iffalse
+% \begin{macrocode}
+%</datagidx-2019-09-27.sty>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*datapie-2019-09-27.sty>
+% \end{macrocode}
+%\fi
+%\subsection{Rollback v2.32 (datapie-2019-09-27.sty)}
+% \begin{macrocode}
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{datapie}[2019/09/27 v2.32 (NLCT)]
+\RequirePackage{xkeyval}
+\newif\ifDTLcolorpiechart
+\DTLcolorpiecharttrue
+\DeclareOption{color}{\DTLcolorpiecharttrue}
+\DeclareOption{gray}{\DTLcolorpiechartfalse}
+\define at boolkey{datapie}[DTL]{rotateinner}[true]{}
+\define at boolkey{datapie}[DTL]{rotateouter}[true]{}
+\DTLrotateinnerfalse
+\DTLrotateouterfalse
+\DeclareOption{rotateinner}{\DTLrotateinnertrue}
+\DeclareOption{norotateinner}{\DTLrotateinnerfalse}
+\DeclareOption{rotateouter}{\DTLrotateoutertrue}
+\DeclareOption{norotateouter}{\DTLrotateouterfalse}
+\ProcessOptions
+\RequirePackage{datatool}[=v2.32]
+\RequirePackage{tikz}
+\newlength\DTLradius
+\DTLradius=2cm
+\newcommand*{\DTLinnerratio}{0.5}
+\newcommand*{\DTLouterratio}{1.25}
+\newcommand*\DTLcutawayratio{0.2}
+\newcommand*{\DTLstartangle}{0}
+\newlength\dtl at inneroffset
+\dtl at inneroffset=\DTLinnerratio\DTLradius
+\newlength\dtl at outeroffset
+\dtl at outeroffset=\DTLouterratio\DTLradius
+\newlength\dtl at cutawayoffset
+\dtl at cutawayoffset=\DTLcutawayratio\DTLradius
+\newcommand*{\dtl at piecutaways}{}
+\def\dtl at innerlabel{\DTLpievariable}%
+\def\dtl at outerlabel{}%
+\newcounter{DTLpieroundvar}
+\setcounter{DTLpieroundvar}{1}
+\newcommand*{\DTLdisplayinnerlabel}[1]{#1}
+\newcommand*{\DTLdisplayouterlabel}[1]{#1}
+\newcommand*{\DTLpiepercent}{%
+\ifnum\dtlforeachlevel=0\relax
+ \PackageError{datapie}{Can't use
+ \string\DTLpiepercent\space outside
+ \string\DTLpiechart}{}%
+\else
+ \csname dtl at piepercent@\romannumeral\@dtl at seg\endcsname
+\fi}
+\newcommand*{\DTLpieatbegintikz}{}
+\newcommand*{\DTLpieatendtikz}{}
+\newcommand*{\DTLsetpiesegmentcolor}[2]{%
+\expandafter\def\csname dtlpie at segcol\romannumeral#1\endcsname{#2}%
+}
+\newcommand*{\DTLgetpiesegmentcolor}[1]{%
+\csname dtlpie at segcol\romannumeral#1\endcsname}
+\newcommand*{\DTLdopiesegmentcolor}[1]{%
+\expandafter\color\expandafter
+{\csname dtlpie at segcol\romannumeral#1\endcsname}}
+\newcommand*{\DTLdocurrentpiesegmentcolor}{%
+\ifnum\dtlforeachlevel=0\relax
+ \PackageError{datapie}{Can't use
+ \string\DTLdocurrentpiesegmentcolor\space outside
+ \string\DTLpiechart}{}%
+\else
+ \expandafter\DTLdopiesegmentcolor\expandafter{%
+ \csname c at DTLrow\romannumeral\dtlforeachlevel\endcsname}%
+\fi}
+\newcommand*{\DTLpieoutlinecolor}{black}
+\newlength\DTLpieoutlinewidth
+\DTLpieoutlinewidth=0pt
+\ifDTLcolorpiechart
+ \DTLsetpiesegmentcolor{1}{red}
+ \DTLsetpiesegmentcolor{2}{green}
+ \DTLsetpiesegmentcolor{3}{blue}
+ \DTLsetpiesegmentcolor{4}{yellow}
+ \DTLsetpiesegmentcolor{5}{magenta}
+ \DTLsetpiesegmentcolor{6}{cyan}
+ \DTLsetpiesegmentcolor{7}{orange}
+ \DTLsetpiesegmentcolor{8}{white}
+\else
+ \DTLsetpiesegmentcolor{1}{black!15}
+ \DTLsetpiesegmentcolor{2}{black!25}
+ \DTLsetpiesegmentcolor{3}{black!35}
+ \DTLsetpiesegmentcolor{4}{black!45}
+ \DTLsetpiesegmentcolor{5}{black!55}
+ \DTLsetpiesegmentcolor{6}{black!65}
+ \DTLsetpiesegmentcolor{7}{black!75}
+ \DTLsetpiesegmentcolor{8}{black!85}
+\fi
+\define at key{datapie}{start}{\def\DTLstartangle{#1}}
+\define at key{datapie}{radius}{\DTLradius=#1\relax
+\dtl at inneroffset=\DTLinnerratio\DTLradius
+\dtl at outeroffset=\DTLouterratio\DTLradius
+\dtl at cutawayoffset=\DTLcutawayratio\DTLradius}
+\define at key{datapie}{innerratio}{%
+\def\DTLinnerratio{#1}%
+\dtl at inneroffset=\DTLinnerratio\DTLradius}
+\define at key{datapie}{outerratio}{%
+\def\DTLouterratio{#1}%
+\dtl at outeroffset=\DTLouterratio\DTLradius}
+\define at key{datapie}{cutawayratio}{%
+\def\DTLcutawayratio{#1}%
+\dtl at cutawayoffset=\DTLcutawayratio\DTLradius}
+\define at key{datapie}{inneroffset}{%
+\dtl at inneroffset=#1}
+\define at key{datapie}{outeroffset}{%
+\dtl at outeroffset=#1}
+\define at key{datapie}{cutawayoffset}{%
+\dtl at cutawayoffset=#1}
+\define at key{datapie}{cutaway}{%
+\renewcommand*{\dtl at piecutaways}{#1}}
+\define at key{datapie}{variable}{%
+\def\DTLpievariable{#1}}
+\define at key{datapie}{innerlabel}{%
+\def\dtl at innerlabel{#1}}
+\define at key{datapie}{outerlabel}{%
+\def\dtl at outerlabel{#1}}
+\newcommand*{\DTLpiechart}[4][\boolean{true}]{%
+\bgroup
+ \let\DTLpievariable=\relax
+ \setkeys{datapie}{#2}%
+ \ifx\DTLpievariable\relax
+ \PackageError{datapie}%
+ {\string\DTLpiechart\space missing variable}{}%
+ \else
+ \def\dtl at total{0}%
+ \@sDTLforeach[#1]{#3}{#4}{%
+ \let\dtl at oldtotal=\dtl at total
+ \expandafter\DTLconverttodecimal\expandafter
+ {\DTLpievariable}{\dtl at variable}%
+ \dtladd{\dtl at total}{\dtl at variable}{\dtl at total}%
+ }%
+ \expandafter\DTLconverttodecimal\expandafter
+ {\DTLstartangle}{\@dtl at start}%
+ \@sDTLforeach[#1]{#3}{#4}{%
+ \expandafter\DTLconverttodecimal\expandafter
+ {\DTLpievariable}{\dtl at variable}%
+ \dtl at computeangles
+ {\csname c at DTLrow\romannumeral\dtlforeachlevel\endcsname}%
+ {\dtl at variable}%
+ \expandafter\@dtl at seg\expandafter=
+ \csname c at DTLrow\romannumeral\dtlforeachlevel\endcsname%
+ \dtlmul{\dtl at tmp}{\dtl at variable}{100}%
+ \let\dtl at old=\dtl at tmp
+ \dtldiv{\dtl at tmp}{\dtl at old}{\dtl at total}%
+ \expandafter\dtlround
+ \csname dtl at piepercent@\romannumeral\@dtl at seg\endcsname\dtl at tmp
+ \c at DTLpieroundvar
+ }%
+ \@for\dtl at row:=\dtl at piecutaways\do{%
+ \expandafter\@dtl at set@off\dtl at row-\relax
+ }%
+ \let\dtl at start=\DTLstartangle
+ \begin{tikzpicture}
+ \DTLpieatbegintikz
+ \@sDTLforeach[#1]{#3}{#4}%
+ {%
+ \expandafter\@dtl at seg\expandafter=
+ \csname c at DTLrow\romannumeral\dtlforeachlevel\endcsname%
+ \edef\dtl at start{%
+ \csname dtl at sang@\romannumeral\@dtl at seg\endcsname}%
+ \edef\dtl at extent{%
+ \csname dtl at angle@\romannumeral\@dtl at seg\endcsname}%
+ \dtladd{\dtl at endangle}{\dtl at start}{\dtl at extent}%
+ \edef\dtl at angle{%
+ \csname dtl at cut@angle@\romannumeral\@dtl at seg\endcsname}%
+ \let\dtl at old=\dtl at angle
+ \dtl at truncatedecimal\dtl at angle
+ \ifnum\dtl at angle>180\relax
+ \dtlsub{\dtl at angle}{\dtl at old}{360}%
+ \dtl at truncatedecimal\dtl at angle
+ \fi
+ \edef\dtl at cutlen{%
+ \csname dtl at cut@len@\romannumeral\@dtl at seg\endcsname
+ }%
+ \edef\@dtl at shift{(\dtl at angle:\dtl at cutlen)}%
+ \dtlmul{\dtl at angle}{\dtl at extent}{0.5}%
+ \dtladd{\dtl at midangle}{\dtl at angle}{\dtl at start}%
+ \begin{scope}[shift={\@dtl at shift}]%
+ \fill[color=\DTLgetpiesegmentcolor\@dtl at seg] (0,0) --
+ (\dtl at start:\DTLradius)
+ arc (\dtl at start:\dtl at endangle:\DTLradius) -- cycle;
+ \ifdim\DTLpieoutlinewidth>0pt\relax
+ \draw[color=\DTLpieoutlinecolor,%
+ line width=\DTLpieoutlinewidth]
+ (0,0) -- (\dtl at start:\DTLradius)
+ arc (\dtl at start:\dtl at endangle:\DTLradius) -- cycle;
+ \fi
+ \dtl at truncatedecimal\dtl at midangle
+ \ifDTLrotateinner
+ \dtlifnumopenbetween{\dtl at midangle}{90}{270}%
+ {%
+ \let\@dtl at next\@firstoftwo
+ }%
+ {%
+ \dtlifnumlt{\dtl at midangle}{-90}%
+ {\let\@dtl at next\@firstoftwo}%
+ {\let\@dtl at next\@secondoftwo}%
+ }%
+ \@dtl at next
+ {%
+ \dtlsub{\dtl at labelangle}{\dtl at midangle}{180}%
+ \dtl at truncatedecimal\dtl at labelangle
+ \edef\dtl at innernodeopt{anchor=east,rotate=\dtl at labelangle}%
+ }%
+ {%
+ \edef\dtl at innernodeopt{anchor=west,rotate=\dtl at midangle}%
+ }%
+ \else
+ \edef\dtl at innernodeopt{anchor=center}%
+ \fi
+ \ifDTLrotateouter
+ \dtlifnumopenbetween{\dtl at midangle}{90}{270}%
+ {%
+ \let\@dtl at next\@firstoftwo
+ }%
+ {%
+ \dtlifnumlt{\dtl at midangle}{-90}%
+ {\let\@dtl at next\@firstoftwo}%
+ {\let\@dtl at next\@secondoftwo}%
+ }%
+ \@dtl at next
+ {%
+ \dtlsub{\dtl at labelangle}{\dtl at midangle}{180}%
+ \dtl at truncatedecimal\dtl at labelangle
+ \edef\dtl at outernodeopt{anchor=east,rotate=\dtl at labelangle}%
+ }%
+ {%
+ \edef\dtl at outernodeopt{anchor=west,rotate=\dtl at midangle}%
+ }%
+ \else
+ \dtlifnumeq{\dtl at midangle}{45}
+ {%
+ \let\@dtl at next\@firstoftwo
+ }%
+ {%
+ \dtlifnumgt{\dtl at midangle}{315}
+ {%
+ \let\@dtl at next\@firstoftwo
+ }%
+ {%
+ \dtlifnumopenbetween{\dtl at midangle}{-45}{45}%
+ {%
+ \let\@dtl at next\@firstoftwo
+ }%
+ {%
+ \let\@dtl at next\@secondoftwo
+ }%
+ }%
+ }%
+ \@dtl at next
+ {%
+ \edef\dtl at outernodeopt{anchor=west}%
+ }%
+ {%
+ \dtlifnumopenbetween{\dtl at midangle}{45}{135}%
+ {%
+ \let\@dtl at next\@firstoftwo
+ }%
+ {%
+ \dtlifnumeq{\dtl at midangle}{135}%
+ {%
+ \let\@dtl at next\@firstoftwo
+ }%
+ {%
+ \let\@dtl at next\@secondoftwo
+ }%
+ }%
+ \@dtl at next
+ {%
+ \edef\dtl at outernodeopt{anchor=south}%
+ }%
+ {%
+ \dtlifnumopenbetween{\dtl at midangle}{135}{225}%
+ {%
+ \let\@dtl at next\@firstoftwo
+ }%
+ {%
+ \dtlifnumeq{\dtl at midangle}{225}%
+ {%
+ \let\@dtl at next\@firstoftwo
+ }%
+ {%
+ \dtlifnumeq{\dtl at midangle}{-135}%
+ {%
+ \let\@dtl at next\@firstoftwo
+ }%
+ {%
+ \dtlifnumlt{\dtl at midangle}{-135}%
+ {%
+ \let\@dtl at next\@firstoftwo
+ }%
+ {%
+ \let\@dtl at next\@secondoftwo
+ }%
+ }%
+ }%
+ }%
+ \@dtl at next
+ {%
+ \edef\dtl at outernodeopt{anchor=east}%
+ }%
+ {%
+ \edef\dtl at outernodeopt{anchor=north}%
+ }%
+ }%
+ }%
+ \fi
+ \edef\@dtl at dolabel{%
+ \noexpand\draw (\dtl at midangle:\the\dtl at inneroffset)
+ node[\dtl at innernodeopt]{%
+ \noexpand\DTLdisplayinnerlabel{\noexpand\dtl at innerlabel}};
+ }%
+ \@dtl at dolabel
+ \edef\@dtl at dolabel{%
+ \noexpand\draw (\dtl at midangle:\the\dtl at outeroffset)
+ node[\dtl at outernodeopt]{%
+ \noexpand\DTLdisplayouterlabel{\noexpand\dtl at outerlabel}};
+ }%
+ \@dtl at dolabel
+ \end{scope}%
+ }%
+ \DTLpieatendtikz
+ \end{tikzpicture}%
+ \fi
+\egroup
+}
+\newcommand*{\dtl at computeangles}[2]{%
+ \dtlifnumgt{\@dtl at start}{180}%
+ {%
+ \let\dtl at old=\@dtl at start
+ \dtlsub{\@dtl at start}{\dtl at old}{360}%
+ }%
+ {}%
+ \dtlifnumlt{\@dtl at start}{-180}%
+ {%
+ \let\dtl at old=\@dtl at start
+ \dtladd{\@dtl at start}{\dtl at old}{360}%
+ }%
+ {}%
+ \expandafter\edef\csname dtl at sang@\romannumeral#1\endcsname{%
+ \@dtl at start}%
+ \dtlmul{\dtl at angle}{360}{#2}%
+ \let\dtl at old=\dtl at angle
+ \dtldiv{\dtl at angle}{\dtl at old}{\dtl at total}%
+ \expandafter\let\csname dtl at angle@\romannumeral#1\endcsname=\dtl at angle
+ \let\dtl at old=\@dtl at start
+ \dtladd{\@dtl at start}{\dtl at old}{\dtl at angle}%
+ \expandafter\def\csname dtl at cut@angle@\romannumeral#1\endcsname{0}%
+ \expandafter\def\csname dtl at cut@len@\romannumeral#1\endcsname{0cm}%
+}
+\def\@dtl at set@off#1-#2\relax{%
+ \ifstrempty{#2}%
+ {%
+ \@@dtl at set@off{#1}%
+ }%
+ {%
+ \@@dtl at set@offr#1-#2\relax
+ }%
+}
+\newcommand*{\@@dtl at set@off}[1]{%
+ \edef\dtl at old{\csname dtl at angle@\romannumeral#1\endcsname}%
+ \dtlmul{\dtl at angle}{\dtl at old}{0.5}%
+ \let\dtl at old=\dtl at angle
+ \edef\dtl at sang{\csname dtl at sang@\romannumeral#1\endcsname}%
+ \dtladd{\dtl at angle}{\dtl at old}{\dtl at sang}%
+ \expandafter\edef\csname dtl at cut@angle@\romannumeral#1\endcsname{%
+ \dtl at angle}%
+ \expandafter\edef\csname dtl at cut@len@\romannumeral#1\endcsname{%
+ \the\dtl at cutawayoffset}%
+}
+\newcount\@dtl at seg
+\def\@@dtl at set@offr#1-#2-\relax{%
+ \ifnum#1>#2\relax
+ \PackageError{datapie}{Segment ranges must go in ascending order}{%
+ Try #2-#1 instead of #1-#2}%
+ \else
+ \def\dtl at angle{0}%
+ \@dtl at seg=#1\relax
+ \whiledo{\not\(\@dtl at seg > #2\)}{%
+ \let\dtl at old=\dtl at angle
+ \edef\dtl at segang{\csname dtl at angle@\romannumeral\@dtl at seg\endcsname}%
+ \dtladd{\dtl at angle}{\dtl at old}{\dtl at segang}%
+ \advance\@dtl at seg by 1\relax
+ }%
+ \let\dtl at old=\dtl at angle
+ \dtlmul{\dtl at angle}{\dtl at old}{0.5}%
+ \edef\dtl at sang{\csname dtl at sang@\romannumeral#1\endcsname}%
+ \let\dtl at old=\dtl at angle
+ \dtladd{\dtl at angle}{\dtl at old}{\dtl at sang}%
+ \@dtl at seg=#1\relax
+ \whiledo{\not\(\@dtl at seg > #2\)}{%
+ \expandafter
+ \let\csname dtl at cut@angle@\romannumeral\@dtl at seg\endcsname
+ =\dtl at angle
+ \expandafter
+ \edef\csname dtl at cut@len@\romannumeral\@dtl at seg\endcsname{%
+ \the\dtl at cutawayoffset}
+ \advance\@dtl at seg by 1\relax
+ }%
+ \fi
+}
+% \end{macrocode}
+%\iffalse
+% \begin{macrocode}
+%</datapie-2019-09-27.sty>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*dataplot-2019-09-27.sty>
+% \end{macrocode}
+%\fi
+%\subsection{Rollback v2.32 (dataplot-2019-09-27.sty)}
+% \begin{macrocode}
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{dataplot}[2019/09/27 v2.32 (NLCT)]
+\RequirePackage{xkeyval}
+\RequirePackage{tikz}
+\RequirePackage{datatool}[=v2.32]
+\usetikzlibrary{plotmarks}
+\usetikzlibrary{plothandlers}
+\usetikzlibrary{calc}
+\newcommand*{\DTLplotstream}[4][\boolean{true}]{%
+ \@sDTLforeach[#1]{#2}{\dtl at x=#3,\dtl at y=#4}{%
+ \DTLconverttodecimal{\dtl at x}{\dtl at decx}%
+ \DTLconverttodecimal{\dtl at y}{\dtl at decy}%
+ \pgfplotstreampoint{\pgfpointxy{\dtl at decx}{\dtl at decy}}%
+ }%
+}
+\newcommand*{\DTLplotmarks}{%
+ \pgfuseplotmark{o},%
+ \pgfuseplotmark{x},%
+ \pgfuseplotmark{+},%
+ \pgfuseplotmark{square},%
+ \pgfuseplotmark{triangle},%
+ \pgfuseplotmark{diamond},%
+ \pgfuseplotmark{pentagon},%
+ \pgfuseplotmark{asterisk},%
+ \pgfuseplotmark{star}%
+}
+\newcommand*{\DTLplotmarkcolors}{%
+ red,%
+ green,%
+ blue,%
+ yellow,%
+ magenta,%
+ cyan,%
+ orange,%
+ black,%
+ gray}
+\newcommand*{\DTLplotlines}{%
+ \pgfsetdash{}{0pt},% solid line
+ \pgfsetdash{{10pt}{5pt}}{0pt},%
+ \pgfsetdash{{5pt}{5pt}}{0pt},%
+ \pgfsetdash{{1pt}{5pt}}{0pt},%
+ \pgfsetdash{{5pt}{5pt}{1pt}{5pt}}{0pt},%
+ \pgfsetdash{{1pt}{3pt}}{0pt},%
+}
+\newcommand*{\DTLplotlinecolors}{%
+ red,%
+ green,%
+ blue,%
+ yellow,%
+ magenta,%
+ cyan,%
+ orange,%
+ black,%
+ gray}
+\newlength\DTLplotwidth
+\setlength\DTLplotwidth{4in}
+\newlength\DTLplotheight
+\setlength\DTLplotheight{4in}
+\newlength\DTLticklength
+\setlength\DTLticklength{5pt}
+\newlength\DTLminorticklength
+\setlength\DTLminorticklength{2pt}
+\newlength\DTLticklabeloffset
+\setlength\DTLticklabeloffset{8pt}
+\newlength\dtl at xticlabelheight
+\newlength\dtl at yticlabelwidth
+\newlength\DTLmintickgap
+\setlength\DTLmintickgap{20pt}
+\newlength\DTLminminortickgap
+\setlength\DTLminminortickgap{5pt}
+\newcounter{DTLplotroundXvar}
+\setcounter{DTLplotroundXvar}{2}
+\newcounter{DTLplotroundYvar}
+\setcounter{DTLplotroundYvar}{2}
+\newif\ifDTLxaxis
+\DTLxaxistrue
+\newcommand*{\DTLXAxisStyle}{-}
+\newif\ifDTLyaxis
+\DTLyaxistrue
+\newcommand*{\DTLYAxisStyle}{-}
+\newcommand*{\DTLmajorgridstyle}{color=gray,-}
+\newcommand*{\DTLminorgridstyle}{color=gray,loosely dotted}
+\newif\ifDTLxticsin
+\DTLxticsintrue
+\newif\ifDTLyticsin
+\DTLyticsintrue
+\newcount\dtl at legendsetting
+\newlength\DTLlegendxoffset
+\setlength\DTLlegendxoffset{10pt}
+\newlength\DTLlegendyoffset
+\setlength\DTLlegendyoffset{10pt}
+\newcommand*{\DTLformatlegend}[1]{%
+\setlength{\fboxrule}{1.1pt}%
+\fcolorbox{black}{white}{#1}}
+\newif\ifDTLshowmarkers
+\DTLshowmarkerstrue
+\newif\ifDTLshowlines
+\DTLshowlinesfalse
+\newcommand*{\DTLplotatbegintikz}{}
+\newcommand*{\@dtlplothandlermark}[1]{%
+ \pgfplothandlermark
+ {%
+ \pgfmathparse{1/\dtl at scale@x}%
+ \pgftransformxscale{\pgfmathresult}%
+ \pgfmathparse{1/\dtl at scale@y}%
+ \pgftransformyscale{\pgfmathresult}%
+ #1%
+ }%
+}
+\newcommand*{\dtlplothandlermark}[1]{%
+ \PackageWarning{dataplot}{\string\dtlplothandlermark\space
+ found outside \string\DTLplot}%
+ \pgfplothandlermark{#1}%
+}
+\newcommand*{\DTLplotatendtikz}{}
+\define at key{dataplot}{x}{%
+\def\dtl at xkey{#1}}
+\define at key{dataplot}{y}{%
+\def\dtl at ykey{#1}}
+\define at key{dataplot}{markcolors}{%
+\def\DTLplotmarkcolors{#1}}
+\define at key{dataplot}{linecolors}{%
+\def\DTLplotlinecolors{#1}}
+\define at key{dataplot}{colors}{%
+\def\DTLplotmarkcolors{#1}%
+\def\DTLplotlinecolors{#1}}
+\define at key{dataplot}{marks}{%
+\def\DTLplotmarks{#1}}
+\define at key{dataplot}{lines}{%
+\def\DTLplotlines{#1}}
+\define at key{dataplot}{width}{%
+\setlength\DTLplotwidth{#1}}
+\define at key{dataplot}{height}{%
+\setlength\DTLplotheight{#1}}
+\define at choicekey{dataplot}{style}[\val\nr]{both,lines,markers}{%
+\ifcase\nr\relax
+ \DTLshowlinestrue
+ \DTLshowmarkerstrue
+\or
+ \DTLshowlinestrue
+ \DTLshowmarkersfalse
+\or
+ \DTLshowmarkerstrue
+ \DTLshowlinesfalse
+\fi}
+\define at choicekey{dataplot}{axes}[\val\nr]{both,x,y,none}[both]{%
+\ifcase\nr\relax
+ % both
+ \DTLxaxistrue
+ \DTLxticstrue
+ \DTLyaxistrue
+ \DTLyticstrue
+\or % x
+ \DTLxaxistrue
+ \DTLxticstrue
+ \DTLyaxisfalse
+ \DTLyticsfalse
+\or % y
+ \DTLxaxisfalse
+ \DTLxticsfalse
+ \DTLyaxistrue
+ \DTLyticstrue
+\or % none
+ \DTLxaxisfalse
+ \DTLxticsfalse
+ \DTLyaxisfalse
+ \DTLyticsfalse
+\fi
+}
+\define at boolkey{dataplot}[DTL]{box}[true]{}
+\DTLboxfalse
+\define at boolkey{dataplot}[DTL]{xtics}[true]{}
+\DTLxticstrue
+\define at boolkey{dataplot}[DTL]{ytics}[true]{}
+\DTLyticstrue
+\define at boolkey{dataplot}[DTL]{xminortics}[true]{%
+\ifDTLxminortics \DTLxticstrue\fi}
+\DTLxminorticsfalse
+\define at boolkey{dataplot}[DTL]{yminortics}[true]{%
+\ifDTLyminortics \DTLyticstrue\fi}
+\DTLyminorticsfalse
+\define at boolkey{dataplot}[DTL]{grid}[true]{}
+\define at choicekey{dataplot}{xticdir}[\val\nr]{in,out}{%
+\ifcase\nr\relax
+ \DTLxticsintrue
+\or
+ \DTLxticsinfalse
+\fi
+}
+\define at choicekey{dataplot}{yticdir}[\val\nr]{in,out}{%
+\ifcase\nr\relax
+ \DTLyticsintrue
+\or
+ \DTLyticsinfalse
+\fi
+}
+\define at choicekey{dataplot}{ticdir}[\val\nr]{in,out}{%
+\ifcase\nr\relax
+ \DTLxticsintrue
+ \DTLyticsintrue
+\or
+ \DTLxticsinfalse
+ \DTLyticsinfalse
+\fi
+}
+\define at key{dataplot}{bounds}{%
+\def\dtl at bounds{#1}}
+\let\dtl at bounds=\relax
+\define at key{dataplot}{minx}{%
+\def\dtl at minx{#1}}
+\let\dtl at minx=\relax
+\define at key{dataplot}{maxx}{%
+\def\dtl at maxx{#1}}
+\let\dtl at maxx=\relax
+\define at key{dataplot}{miny}{%
+\def\dtl at miny{#1}}
+\let\dtl at miny=\relax
+\define at key{dataplot}{maxy}{%
+\def\dtl at maxy{#1}}
+\let\dtl at maxy=\relax
+\define at key{dataplot}{xticpoints}{%
+\def\dtl at xticlist{#1}\DTLxticstrue\DTLxaxistrue}
+\let\dtl at xticlist=\relax
+\define at key{dataplot}{yticpoints}{%
+\def\dtl at yticlist{#1}\DTLyticstrue\DTLyaxistrue}
+\let\dtl at yticlist=\relax
+\define at key{dataplot}{xticgap}{\def\dtl at xticgap{#1}%
+\DTLxticstrue\DTLxaxistrue}
+\let\dtl at xticgap=\relax
+\define at key{dataplot}{yticgap}{\def\dtl at yticgap{#1}%
+\DTLyticstrue\DTLyaxistrue}
+\let\dtl at yticgap=\relax
+\define at key{dataplot}{xticlabels}{%
+\def\dtl at xticlabels{#1}\DTLxticstrue\DTLxaxistrue}
+\let\dtl at xticlabels=\relax
+\define at key{dataplot}{yticlabels}{%
+\def\dtl at yticlabels{#1}\DTLyticstrue\DTLyaxistrue}
+\let\dtl at yticlabels=\relax
+\define at key{dataplot}{xlabel}{%
+\def\dtl at xlabel{#1}}
+\let\dtl at xlabel=\relax
+\define at key{dataplot}{ylabel}{%
+\def\dtl at ylabel{#1}}
+\let\dtl at ylabel=\relax
+\define at choicekey{dataplot}{legend}[\val\nr]{none,north,northeast,%
+east,southeast,south,southwest,west,northwest}[northeast]{%
+\dtl at legendsetting=\nr\relax
+}
+\define at key{dataplot}{legendlabels}{\def\dtl at legendlabels{#1}}
+\newcommand*{\DTLplot}[3][\boolean{true}]{%
+\bgroup
+ \let\dtl at xkey=\relax
+ \let\dtl at ykey=\relax
+ \let\dtl at legendlabels=\relax
+ \setkeys{dataplot}{#3}%
+ \let\dtl at plotmarklist=\DTLplotmarks
+ \let\dtl at plotlinelist=\DTLplotlines
+ \let\dtl at plotmarkcolorlist=\DTLplotmarkcolors
+ \let\dtl at plotlinecolorlist=\DTLplotlinecolors
+ \def\dtl at legend{}%
+ \ifx\dtl at legendlabels\relax
+ \edef\dtl at legendlabels{#2}%
+ \fi
+ \ifx\dtl at xkey\relax
+ \PackageError{dataplot}{Missing x setting for
+ \string\DTLplot}{}%
+ \else
+ \ifx\dtl at ykey\relax
+ \PackageError{dataplot}{Missing y setting for
+ \string\DTLplot}{}%
+ \else
+ \ifx\dtl at bounds\relax
+ \DTLcomputebounds[#1]{#2}{\dtl at xkey}{\dtl at ykey}
+ {\DTLminX}{\DTLminY}{\DTLmaxX}{\DTLmaxY}%
+ \ifx\dtl at minx\relax
+ \else
+ \let\DTLminX=\dtl at minx
+ \fi
+ \ifx\dtl at maxx\relax
+ \else
+ \let\DTLmaxX=\dtl at maxx
+ \fi
+ \ifx\dtl at miny\relax
+ \else
+ \let\DTLminY=\dtl at miny
+ \fi
+ \ifx\dtl at maxy\relax
+ \else
+ \let\DTLmaxY=\dtl at maxy
+ \fi
+ \else
+ \expandafter\dtl at getbounds\dtl at bounds\@nil
+ \fi
+ \@dtl at tmpcount=\DTLplotwidth
+ \divide\@dtl at tmpcount by 65536\relax
+ \dtlsub{\dtl at dx}{\DTLmaxX}{\DTLminX}%
+ \dtldiv{\dtl at scale@x}{\number\@dtl at tmpcount}{\dtl at dx}%
+ \dtlmul{\dtl at offset@x}{-\dtl at scale@x}{\DTLminX}%
+ \@dtl at tmpcount=\DTLplotheight
+ \divide\@dtl at tmpcount by 65536\relax
+ \dtlsub{\dtl at dy}{\DTLmaxY}{\DTLminY}%
+ \dtldiv{\dtl at scale@y}{\number\@dtl at tmpcount}{\dtl at dy}%
+ \dtlmul{\dtl at offset@y}{-\dtl at scale@y}{\DTLminY}%
+ \ifDTLxtics
+ \ifx\dtl at xticlist\relax
+ \ifx\dtl at xticgap\relax
+ \dtlsub{\dtl at mingap}{\number\DTLmintickgap}{\dtl at offset@x}%
+ \dtldiv{\dtl at mingap}{\dtl at mingap}{\dtl at scale@x}%
+ \dtldiv{\dtl at mingap}{\dtl at mingap}{65536}%
+ \dtl at constructticklist\DTLminX\DTLmaxX
+ \dtl at mingap\dtl at xticlist
+ \else
+ \DTLifFPopenbetween{0}{\DTLminX}{\DTLmaxX}{%
+ \dtl at constructticklistwithgapz
+ \DTLminX\DTLmaxX\dtl at xticlist\dtl at xticgap}{%
+ \dtl at constructticklistwithgap
+ \DTLminX\DTLmaxX\dtl at xticlist\dtl at xticgap}%
+ \fi
+ \fi
+ \let\dtl at xminorticlist\@empty
+ \ifDTLxminortics
+ \let\dtl at prevtick=\relax
+ \@for\dtl at nexttick:=\dtl at xticlist\do{%
+ \ifx\dtl at prevtick\relax
+ \else
+ \dtl at constructminorticklist
+ \dtl at prevtick\dtl at nexttick\dtl at scale@x\dtl at xminorticlist
+ \fi
+ \let\dtl at prevtick=\dtl at nexttick
+ }%
+ \fi
+ \ifx\dtl at xticlabels\relax
+ \settoheight{\dtl at xticlabelheight}{\dtl at xticlist}%
+ \else
+ \settoheight{\dtl at xticlabelheight}{\dtl at xticlabels}%
+ \fi
+ \else
+ \setlength{\dtl at xticlabelheight}{0pt}%
+ \fi
+ \setlength{\dtl at yticlabelwidth}{0pt}%
+ \ifDTLytics
+ \ifx\dtl at yticlist\relax
+ \ifx\dtl at yticgap\relax
+ \dtlsub{\dtl at mingap}{\number\DTLmintickgap}{\dtl at offset@y}%
+ \dtldiv{\dtl at mingap}{\dtl at mingap}{\dtl at scale@y}%
+ \dtldiv{\dtl at mingap}{\dtl at mingap}{65536}%
+ \dtl at constructticklist\DTLminY\DTLmaxY
+ \dtl at mingap\dtl at yticlist
+ \else
+ \DTLifFPopenbetween{0}{\DTLminY}{\DTLmaxY}{%
+ \dtl at constructticklistwithgapz
+ \DTLminY\DTLmaxY\dtl at yticlist\dtl at yticgap}{%
+ \dtl at constructticklistwithgap
+ \DTLminY\DTLmaxY\dtl at yticlist\dtl at yticgap}%
+ \fi
+ \fi
+ \let\dtl at yminorticlist\@empty
+ \ifDTLyminortics
+ \let\dtl at prevtick=\relax
+ \@for\dtl at nexttick:=\dtl at yticlist\do{%
+ \ifx\dtl at prevtick\relax
+ \else
+ \dtl at constructminorticklist
+ \dtl at prevtick\dtl at nexttick\dtl at scale@y\dtl at yminorticlist
+ \fi
+ \let\dtl at prevtick=\dtl at nexttick
+ }%
+ \fi
+ \ifx\dtl at ylabel\relax
+ \else
+ \ifx\dtl at yticlabels\relax
+ \@for\dtl at thislabel:=\dtl at yticlist\do{%
+ \dtlround{\dtl at thislabel}{\dtl at thislabel}
+ {\c at DTLplotroundYvar}%
+ \settowidth{\dtl at tmplength}{\dtl at thislabel}%
+ \ifdim\dtl at tmplength>\dtl at yticlabelwidth
+ \setlength{\dtl at yticlabelwidth}{\dtl at tmplength}%
+ \fi
+ }%
+ \else
+ \@for\dtl at thislabel:=\dtl at yticlabels\do{%
+ \settowidth{\dtl at tmplength}{\dtl at thislabel}%
+ \ifdim\dtl at tmplength>\dtl at yticlabelwidth
+ \setlength{\dtl at yticlabelwidth}{\dtl at tmplength}%
+ \fi
+ }%
+ \fi
+ \fi
+ \fi
+ \begin{tikzpicture}
+ \pgfsetxvec{\pgfpoint{1pt}{0pt}}%
+ \pgfsetyvec{\pgfpoint{0pt}{1pt}}%
+ \begin{scope}
+ \pgftransformcm{\dtl at scale@x}{0}{0}{\dtl at scale@y}%
+ {\pgfpoint{\dtl at offset@x pt}{\dtl at offset@y pt}}%
+ \let\dtlplothandlermark\@dtlplothandlermark
+ \DTLplotatbegintikz
+ \ifDTLbox
+ \draw (\DTLminX,\DTLminY) -- (\DTLmaxX,\DTLminY) --
+ (\DTLmaxX,\DTLmaxY) -- (\DTLminX,\DTLmaxY) --
+ cycle;
+ \else
+ \ifDTLxaxis
+ \expandafter\draw\expandafter[\DTLXAxisStyle]
+ (\DTLminX,\DTLminY) -- (\DTLmaxX,\DTLminY);
+ \fi
+ \ifDTLyaxis
+ \expandafter\draw\expandafter[\DTLYAxisStyle]
+ (\DTLminX,\DTLminY) -- (\DTLminX,\DTLmaxY);
+ \fi
+ \fi
+ \ifDTLgrid
+ \ifDTLxminortics
+ \@for\dtl at thistick:=\dtl at xminorticlist\do{%
+ \expandafter\draw\expandafter[\DTLminorgridstyle]
+ (\dtl at thistick,\DTLminY) -- (\dtl at thistick,\DTLmaxY);
+ }%
+ \fi
+ \ifDTLyminortics
+ \@for\dtl at thistick:=\dtl at yminorticlist\do{%
+ \expandafter\draw\expandafter[\DTLminorgridstyle]
+ (\DTLminX,\dtl at thistick) -- (\DTLmaxX,\dtl at thistick);
+ }%
+ \fi
+ \@for\dtl at thistick:=\dtl at xticlist\do{%
+ \expandafter\draw\expandafter[\DTLmajorgridstyle]
+ (\dtl at thistick,\DTLminY) -- (\dtl at thistick,\DTLmaxY);
+ }%
+ \@for\dtl at thistick:=\dtl at yticlist\do{%
+ \expandafter\draw\expandafter[\DTLmajorgridstyle]
+ (\DTLminX,\dtl at thistick) -- (\DTLmaxX,\dtl at thistick);
+ }%
+ \fi
+ \ifDTLxtics
+ \dtlsub{\dtl at ticklength}{\number\DTLticklength}{-\dtl at offset@y}%
+ \dtldiv{\dtl at ticklength}{\dtl at ticklength}{\dtl at scale@y}%
+ \dtldiv{\dtl at ticklength}{\dtl at ticklength}{65536}%
+ \addtolength\dtl at xticlabelheight{\DTLticklabeloffset}%
+ \dtlsub{\dtl at ticlabeloffset}{\number\dtl at xticlabelheight}{-\dtl at offset@y}%
+ \dtldiv{\dtl at ticlabeloffset}{\dtl at ticlabeloffset}{\dtl at scale@y}%
+ \dtldiv{\dtl at ticlabeloffset}{\dtl at ticlabeloffset}{65536}%
+ \@for\dtl at thistick:=\dtl at xticlist\do{%
+ \let\dtl at thisticklabel\dtl at thistick
+ \ifx\dtl at xticlabels\relax
+ \dtlround{\dtl at thislabel}{\dtl at thistick}
+ {\c at DTLplotroundXvar}%
+ \else
+ \dtl at chopfirst\dtl at xticlabels\dtl at thislabel\dtl at rest
+ \let\dtl at xticlabels=\dtl at rest
+ \fi
+ \ifDTLxticsin
+ \draw (\dtl at thistick,\DTLminY) -- ++(0,\dtl at ticklength);
+ \draw (\dtl at thistick,\DTLminY)
+ ++ (0,-\dtl at ticlabeloffset) node {\dtl at thislabel};
+ \else
+ \draw (\dtl at thistick,\DTLminY) -- ++(0,-\dtl at ticklength)
+ ++ (0,-\dtl at ticlabeloffset) node {\dtl at thislabel};
+ \fi
+ \ifDTLbox
+ \ifDTLxticsin
+ \draw (\dtl at thistick,\DTLmaxY) -- ++(0,-\dtl at ticklength);
+ \else
+ \draw (\dtl at thistick,\DTLmaxY) -- ++(0,\dtl at ticklength);
+ \fi
+ \fi
+ }%
+ \fi
+ \ifx\dtl at xlabel\relax
+ \else
+ \dtladd{\dtl at x}{\number\baselineskip}{\dtl at offset@y}%
+ \dtldiv{\dtl at x}{\dtl at x}{\dtl at scale@y}%
+ \dtldiv{\dtl at x}{\dtl at x}{65536}%
+ \dtladd{\dtl at ticlabeloffset}{\dtl at ticlabeloffset}{\dtl at x}%
+ \dtlmul{\dtl at x}{\dtl at dx}{0.5}%
+ \draw (\DTLminX,\DTLminY) ++(\dtl at x,-\dtl at ticlabeloffset)
+ node[anchor=north] {\dtl at xlabel};
+ \fi
+ \ifDTLxminortics
+ \dtlsub{\dtl at ticklength}{\number\DTLminorticklength}{-\dtl at offset@y}%
+ \dtldiv{\dtl at ticklength}{\dtl at ticklength}{\dtl at scale@y}%
+ \dtldiv{\dtl at ticklength}{\dtl at ticklength}{65536}%
+ \@for\dtl at thistick:=\dtl at xminorticlist\do{%
+ \ifDTLxticsin
+ \draw (\dtl at thistick,\DTLminY) -- ++(0,\dtl at ticklength);
+ \draw (\dtl at thistick,\DTLminY)
+ ++ (0,-\dtl at ticlabeloffset) node[anchor=north] {\dtl at thislabel};
+ \else
+ \draw (\dtl at thistick,\DTLminY) -- ++(0,-\dtl at ticklength)
+ ++ (0,-\dtl at ticlabeloffset) node[anchor=north] {\dtl at thislabel};
+ \fi
+ \ifDTLbox
+ \ifDTLxticsin
+ \draw (\dtl at thistick,\DTLmaxY) -- ++(0,-\dtl at ticklength);
+ \else
+ \draw (\dtl at thistick,\DTLmaxY) -- ++(0,\dtl at ticklength);
+ \fi
+ \fi
+ }%
+ \fi
+ \ifDTLytics
+ \dtlsub{\dtl at ticklength}{\number\DTLticklength}{-\dtl at offset@x}%
+ \dtldiv{\dtl at ticklength}{\dtl at ticklength}{\dtl at scale@x}%
+ \dtldiv{\dtl at ticklength}{\dtl at ticklength}{65536}%
+ \dtladd{\dtl at ticlabeloffset}{\number\DTLticklabeloffset}{0}%
+ \dtlsub{\dtl at ticlabeloffset}{\number\DTLticklabeloffset}{-\dtl at offset@x}%
+ \dtldiv{\dtl at ticlabeloffset}{\dtl at ticlabeloffset}{\dtl at scale@x}%
+ \dtldiv{\dtl at ticlabeloffset}{\dtl at ticlabeloffset}{65536}%
+ \@for\dtl at thistick:=\dtl at yticlist\do{%
+ \let\dtl at thisticklabel\dtl at thistick
+ \ifx\dtl at yticlabels\relax
+ \dtlround{\dtl at thislabel}{\dtl at thistick}
+ {\c at DTLplotroundXvar}%
+ \else
+ \dtl at chopfirst\dtl at yticlabels\dtl at thislabel\dtl at rest
+ \let\dtl at yticlabels=\dtl at rest
+ \fi
+ \ifDTLyticsin
+ \draw (\DTLminX,\dtl at thistick) -- ++(\dtl at ticklength,0);
+ \draw (\DTLminX,\dtl at thistick)
+ ++ (-\dtl at ticlabeloffset,0) node[anchor=east] {\dtl at thislabel};
+ \else
+ \draw (\DTLminX,\dtl at thistick) -- ++(-\dtl at ticklength,0)
+ ++ (-\dtl at ticlabeloffset,0) node[anchor=east] {\dtl at thislabel};
+ \fi
+ \ifDTLbox
+ \ifDTLyticsin
+ \draw (\DTLmaxX,\dtl at thistick) -- ++(-\dtl at ticklength,0);
+ \else
+ \draw (\DTLmaxX,\dtl at thistick) -- ++(\dtl at ticklength,0);
+ \fi
+ \fi
+ }%
+ \fi
+ \ifx\dtl at ylabel\relax
+ \else
+ \setlength{\dtl at tmplength}{\baselineskip}%
+ \addtolength{\dtl at tmplength}{\dtl at yticlabelwidth}%
+ \addtolength{\dtl at tmplength}{\DTLticklabeloffset}%
+ \dtlsub{\dtl at ticlabeloffset}{\number\dtl at tmplength}{-\dtl at offset@x}%
+ \dtldiv{\dtl at ticlabeloffset}{\dtl at ticlabeloffset}{\dtl at scale@x}%
+ \dtldiv{\dtl at ticlabeloffset}{\dtl at ticlabeloffset}{65536}%
+ \dtlmul{\dtl at y}{\dtl at dy}{0.5}%
+ \draw (\DTLminX,\DTLminY) ++(-\dtl at ticlabeloffset,\dtl at y)
+ node[rotate=90,anchor=south] {\dtl at ylabel};
+ \fi
+ \ifDTLyminortics
+ \dtlsub{\dtl at ticklength}{\number\DTLminorticklength}{-\dtl at offset@x}%
+ \dtldiv{\dtl at ticklength}{\dtl at ticklength}{\dtl at scale@x}%
+ \dtldiv{\dtl at ticklength}{\dtl at ticklength}{65536}%
+ \@for\dtl at thistick:=\dtl at yminorticlist\do{%
+ \ifDTLyticsin
+ \draw (\DTLminX,\dtl at thistick) -- ++(\dtl at ticklength,0);
+ \else
+ \draw (\DTLminX,\dtl at thistick) -- ++(-\dtl at ticklength,0);
+ \fi
+ \ifDTLbox
+ \ifDTLyticsin
+ \draw (\DTLmaxX,\dtl at thistick) -- ++(-\dtl at ticklength,0);
+ \else
+ \draw (\DTLmaxX,\dtl at thistick) -- ++(\dtl at ticklength,0);
+ \fi
+ \fi
+ }%
+ \fi
+ \end{scope}
+ \@for\dtl at thisdb:=#2\do{%
+ \ifx\dtl at plotmarkcolorlist\@empty
+ \let\dtl at plotmarkcolorlist=\DTLplotmarkcolors
+ \fi
+ \dtl at chopfirst\dtl at plotmarkcolorlist\dtl at thisplotmarkcolor
+ \dtl at remainder
+ \let\dtl at plotmarkcolorlist=\dtl at remainder
+ \ifDTLshowmarkers
+ \ifx\dtl at plotmarklist\@empty
+ \let\dtl at plotmarklist=\DTLplotmarks
+ \fi
+ \dtl at chopfirst\dtl at plotmarklist\dtl at thisplotmark
+ \dtl at remainder
+ \let\dtl at plotmarklist=\dtl at remainder
+ \ifx\dtl at thisplotmark\relax
+ \let\dtl at mark=\relax
+ \else
+ \expandafter\toks@\expandafter{\dtl at thisplotmark}%
+ \ifx\dtl at thisplotmarkcolor\@empty
+ \edef\dtl at mark{\the\toks@}%
+ \else
+ \edef\dtl at mark{%
+ \noexpand\color{\dtl at thisplotmarkcolor}%
+ \the\toks@}%
+ \fi
+ \fi
+ \else
+ \let\dtl at mark=\relax
+ \fi
+ \ifx\dtl at plotlinecolorlist\@empty
+ \let\dtl at plotlinecolorlist=\DTLplotlinecolors
+ \fi
+ \dtl at chopfirst\dtl at plotlinecolorlist\dtl at thisplotlinecolor
+ \dtl at remainder
+ \let\dtl at plotlinecolorlist=\dtl at remainder
+ \ifDTLshowlines
+ \ifx\dtl at plotlinelist\@empty
+ \let\dtl at plotlinelist=\DTLplotlines
+ \fi
+ \dtl at chopfirst\dtl at plotlinelist\dtl at thisplotline
+ \dtl at remainder
+ \let\dtl at plotlinelist=\dtl at remainder
+ \expandafter\ifx\dtl at thisplotline\relax
+ \let\dtl at linestyle=\relax
+ \else
+ \expandafter\toks@\expandafter{\dtl at thisplotline}%
+ \ifx\dtl at thisplotlinecolor\@empty
+ \edef\dtl at linestyle{\the\toks@}%
+ \else
+ \edef\dtl at linestyle{%
+ \noexpand\color{\dtl at thisplotlinecolor}%
+ \the\toks@}%
+ \fi
+ \fi
+ \else
+ \let\dtl at linestyle=\relax
+ \fi
+ \ifnum\dtl at legendsetting>0\relax
+ \dtl at chopfirst\dtl at legendlabels\dtl at thislabel\dtl at rest
+ \let\dtl at legendlabels=\dtl at rest
+ \expandafter\toks@\expandafter{\dtl at mark}%
+ \expandafter\@dtl at toks\expandafter{\dtl at linestyle}%
+ \edef\dtl at addtolegend{\noexpand\DTLaddtoplotlegend
+ {\the\toks@}{\the\@dtl at toks}{\dtl at thislabel}}%
+ \dtl at addtolegend
+ \fi
+ \def\dtl at stream{\pgfplotstreamstart}%
+ \@sDTLforeach[#1]{\dtl at thisdb}{\dtl at x=\dtl at xkey,%
+ \dtl at y=\dtl at ykey}{%
+ \DTLconverttodecimal{\dtl at x}{\dtl at decx}%
+ \DTLconverttodecimal{\dtl at y}{\dtl at decy}%
+ \ifthenelse{%
+ \DTLisclosedbetween{\dtl at x}{\DTLminX}{\DTLmaxX}%
+ \and
+ \DTLisclosedbetween{\dtl at y}{\DTLminY}{\DTLmaxY}%
+ }%
+ {%
+ \expandafter\toks@\expandafter{\dtl at stream}%
+ \dtlmul{\dtl at decx}{\dtl at decx}{\dtl at scale@x}%
+ \dtladd{\dtl at decx}{\dtl at decx}{\dtl at offset@x}%
+ \dtlround{\dtl at decx}{\dtl at decx}{1}%
+ \dtlmul{\dtl at decy}{\dtl at decy}{\dtl at scale@y}%
+ \dtladd{\dtl at decy}{\dtl at decy}{\dtl at offset@y}%
+ \dtlround{\dtl at decy}{\dtl at decy}{1}%
+ \edef\dtl at stream{\the\toks@
+ \noexpand\pgfplotstreampoint
+ {\noexpand\pgfpointxy{\dtl at decx}{\dtl at decy}}}%
+ }{}%
+ }%
+ \expandafter\toks@\expandafter{\dtl at stream}%
+ \edef\dtl at stream{\the\toks@\noexpand\pgfplotstreamend}%
+ \ifx\dtl at linestyle\relax
+ \else
+ \begin{scope}
+ \dtl at linestyle
+ \pgfplothandlerlineto
+ \dtl at stream
+ \pgfusepath{stroke}
+ \end{scope}
+ \fi
+ \ifx\dtl at mark\relax
+ \else
+ \begin{scope}
+ \pgfplothandlermark{\dtl at mark}%
+ \dtl at stream
+ \pgfusepath{stroke}
+ \end{scope}
+ \fi
+ }%
+ \ifcase\dtl at legendsetting
+ % none
+ \or % north
+ \dtlmul{\dtl at decx}{\dtl at dx}{0.5}%
+ \dtladd{\dtl at decx}{\DTLminX}{\dtl at decx}%
+ \dtlmul{\dtl at decx}{\dtl at decx}{\dtl at scale@x}%
+ \dtladd{\dtl at decx}{\dtl at decx}{\dtl at offset@x}%
+ \dtlmul{\dtl at decy}{\DTLmaxY}{\dtl at scale@y}%
+ \dtladd{\dtl at decy}{\dtl at decy}{\dtl at offset@y}%
+ \draw (\dtl at decx,\dtl at decy) ++(0,-\DTLlegendyoffset)
+ node[anchor=north]
+ {\DTLformatlegend
+ {\begin{tabular}{cl}\dtl at legend\end{tabular}}%
+ };
+ \or % north east
+ \dtlmul{\dtl at decx}{\DTLmaxX}{\dtl at scale@x}%
+ \dtladd{\dtl at decx}{\dtl at decx}{\dtl at offset@x}%
+ \dtlmul{\dtl at decy}{\DTLmaxY}{\dtl at scale@y}%
+ \dtladd{\dtl at decy}{\dtl at decy}{\dtl at offset@y}%
+ \draw (\dtl at decx,\dtl at decy) ++(-\DTLlegendxoffset,-\DTLlegendyoffset)
+ node[anchor=north east]
+ {\DTLformatlegend
+ {\begin{tabular}{cl}\dtl at legend\end{tabular}}%
+ };
+ \or % east
+ \dtlmul{\dtl at decy}{\dtl at dy}{0.5}%
+ \dtladd{\dtl at decy}{\DTLminY}{\dtl at decy}%
+ \dtlmul{\dtl at decy}{\dtl at decy}{\dtl at scale@y}%
+ \dtladd{\dtl at decy}{\dtl at decy}{\dtl at offset@y}%
+ \dtlmul{\dtl at decx}{\DTLmaxX}{\dtl at scale@x}%
+ \dtladd{\dtl at decx}{\dtl at decx}{\dtl at offset@x}%
+ \draw (\dtl at decx,\dtl at decy) ++(-\DTLlegendxoffset,0)
+ node[anchor=east]
+ {\DTLformatlegend
+ {\begin{tabular}{cl}\dtl at legend\end{tabular}}%
+ };
+ \or % south east
+ \dtlmul{\dtl at decx}{\DTLmaxX}{\dtl at scale@x}%
+ \dtladd{\dtl at decx}{\dtl at decx}{\dtl at offset@x}%
+ \dtlmul{\dtl at decy}{\DTLminY}{\dtl at scale@y}%
+ \dtladd{\dtl at decy}{\dtl at decy}{\dtl at offset@y}%
+ \draw (\dtl at decx,\dtl at decy) ++(-\DTLlegendxoffset,\DTLlegendyoffset)
+ node[anchor=south east]
+ {\DTLformatlegend
+ {\begin{tabular}{cl}\dtl at legend\end{tabular}}%
+ };
+ \or % south
+ \dtlmul{\dtl at decx}{\dtl at dx}{0.5}%
+ \dtladd{\dtl at decx}{\DTLminX}{\dtl at decx}%
+ \dtlmul{\dtl at decx}{\dtl at decx}{\dtl at scale@x}%
+ \dtladd{\dtl at decx}{\dtl at decx}{\dtl at offset@x}%
+ \dtlmul{\dtl at decy}{\DTLminY}{\dtl at scale@y}%
+ \dtladd{\dtl at decy}{\dtl at decy}{\dtl at offset@y}%
+ \draw (\dtl at decx,\dtl at decy) ++(0,\DTLlegendyoffset)
+ node[anchor=south]
+ {\DTLformatlegend
+ {\begin{tabular}{cl}\dtl at legend\end{tabular}}%
+ };
+ \or % south west
+ \dtlmul{\dtl at decx}{\DTLminX}{\dtl at scale@x}%
+ \dtladd{\dtl at decx}{\dtl at decx}{\dtl at offset@x}%
+ \dtlmul{\dtl at decy}{\DTLminY}{\dtl at scale@y}%
+ \dtladd{\dtl at decy}{\dtl at decy}{\dtl at offset@y}%
+ \draw (\dtl at decx,\dtl at decy) ++(\DTLlegendxoffset,\DTLlegendyoffset)
+ node[anchor=south west]
+ {\DTLformatlegend
+ {\begin{tabular}{cl}\dtl at legend\end{tabular}}%
+ };
+ \or % west
+ \dtlmul{\dtl at decy}{\dtl at dy}{0.5}%
+ \dtladd{\dtl at decy}{\DTLminY}{\dtl at decy}%
+ \dtlmul{\dtl at decy}{\dtl at decy}{\dtl at scale@y}%
+ \dtladd{\dtl at decy}{\dtl at decy}{\dtl at offset@y}%
+ \dtlmul{\dtl at decx}{\DTLminX}{\dtl at scale@x}%
+ \dtladd{\dtl at decx}{\dtl at decx}{\dtl at offset@x}%
+ \draw (\dtl at decx,\dtl at decy) ++(\DTLlegendxoffset,0)
+ node[anchor=west]
+ {\DTLformatlegend
+ {\begin{tabular}{cl}\dtl at legend\end{tabular}}%
+ };
+ \or % north west
+ \dtlmul{\dtl at decx}{\DTLminX}{\dtl at scale@x}%
+ \dtladd{\dtl at decx}{\dtl at decx}{\dtl at offset@x}%
+ \dtlmul{\dtl at decy}{\DTLmaxY}{\dtl at scale@y}%
+ \dtladd{\dtl at decy}{\dtl at decy}{\dtl at offset@y}%
+ \draw (\dtl at decx,\dtl at decy) ++(\DTLlegendxoffset,-\DTLlegendyoffset)
+ node[anchor=north west]
+ {\DTLformatlegend
+ {\begin{tabular}{cl}\dtl at legend\end{tabular}}%
+ };
+ \fi
+ \pgftransformcm{\dtl at scale@x}{0}{0}{\dtl at scale@y}%
+ {\pgfpoint{\dtl at offset@x pt}{\dtl at offset@y pt}}%
+ \let\dtlplothandlermark\@dtlplothandlermark
+ \DTLplotatendtikz
+ \end{tikzpicture}
+ \fi
+ \fi
+\egroup
+}
+\def\dtl at getbounds#1,#2,#3,#4\@nil{%
+\def\DTLminX{#1}%
+\def\DTLminY{#2}%
+\def\DTLmaxX{#3}%
+\def\DTLmaxY{#4}%
+\dtlifnumgt{\DTLminX}{\DTLmaxX}
+{%
+ \PackageError{dataplot}{Min X > Max X in bounds #1,#2,#3,#4}{%
+ The bounds must be specified as minX,minY,maxX,maxY}%
+}{}%
+\dtlifnumgt{\DTLminY}{\DTLmaxY}
+{%
+ \PackageError{dataplot}{Min Y > Max Y in bounds #1,#2,#3,#4}{%
+ The bounds must be specified as minX,minY,maxX,maxY}%
+}{}%
+}
+\newcommand*{\dtl at constructticklist}[4]{%
+ \DTLifFPopenbetween{0}{#1}{#2}%
+ {%
+ \dtlsub{\@dtl at width}{0}{#1}%
+ \dtldiv{\@dtl at neggap}{\@dtl at width}{10}%
+ \dtlifnumlt{\@dtl at neggap}{#3}%
+ {%
+ \edef\@dtl at neggap{#3}%
+ }%
+ {}%
+ \dtldiv{\@dtl at posgap}{#2}{10}%
+ \dtlifnumlt{\@dtl at posgap}{#3}%
+ {%
+ \edef\@dtl at posgap{#3}%
+ }%
+ {}%
+ \dtlmax{\@dtl at gap}{\@dtl at neggap}{\@dtl at posgap}%
+ \dtlifnumgt{\@dtl at gap}{\@dtl at width}%
+ {}%
+ {%
+ \dtl at constructticklistwithgapz{#1}{#2}{#4}{\@dtl at gap}%
+ }%
+ }%
+ {%
+ \dtlsub{\@dtl at width}{#2}{#1}%
+ \dtldiv{\@dtl at gap}{\@dtl at width}{10}%
+ \dtlifnumlt{\@dtl at gap}{#3}%
+ {%
+ \dtlifnumgt{#3}{\@dtl at width}%
+ {%
+ \def#4{#1,#2}%
+ }%
+ {%
+ \dtl at constructticklistwithgap{#1}{#2}{#4}{#3}%
+ }
+ }%
+ {%
+ \dtl at constructticklistwithgap{#1}{#2}{#4}{\@dtl at gap}%
+ }%
+ }%
+}
+\newcommand*{\dtl at constructticklistwithgap}[4]{%
+\edef\@dtl at thistick{#1}%
+\edef#3{#1}%
+\dtladd{\@dtl at thistick}{\@dtl at thistick}{#4}%
+\whiledo{\DTLisFPopenbetween{\@dtl at thistick}{#1}{#2}}{%
+ \expandafter\toks@\expandafter{\@dtl at thistick}%
+ \edef#3{#3,\the\toks@}%
+ \dtladd{\@dtl at thistick}{\@dtl at thistick}{#4}%
+}%
+\expandafter\toks@\expandafter{#2}%
+\edef#3{#3,\the\toks@}%
+}
+\newcommand*{\dtl at constructticklistwithgapz}[4]{%
+ \edef\@dtl at thistick{0}%
+ \edef#3{0}%
+ \dtladd{\@dtl at thistick}{\@dtl at thistick}{#4}%
+ \whiledo{\DTLisFPopenbetween{\@dtl at thistick}{0}{#2}}%
+ {%
+ \expandafter\toks@\expandafter{\@dtl at thistick}%
+ \edef#3{#3,\the\toks@}%
+ \dtladd{\@dtl at thistick}{\@dtl at thistick}{#4}%
+ }%
+ \expandafter\toks@\expandafter{#2}%
+ \edef#3{#3,\the\toks@}%
+ \dtlifnumeq{#1}{0}%
+ {}%
+ {%
+ \edef\@dtl at thistick{0}%
+ \dtlsub{\@dtl at thistick}{\@dtl at thistick}{#4}%
+ \whiledo{\DTLisFPopenbetween{\@dtl at thistick}{#1}{0}}%
+ {%
+ \expandafter\toks@\expandafter{\@dtl at thistick}%
+ \edef#3{\the\toks@,#3}%
+ \dtlsub{\@dtl at thistick}{\@dtl at thistick}{#4}%
+ }%
+ \expandafter\toks@\expandafter{#1}%
+ \edef#3{\the\toks@,#3}%
+ }%
+}
+\newcommand*{\dtl at constructminorticklist}[4]{%
+ \dtlsub{\@dtl at width}{#2}{#1}%
+ \dtlmul{\@dtl at width}{\@dtl at width}{#3}%
+ \dtldiv{\@dtl at gap}{\@dtl at width}{10}%
+ \setlength\dtl at tmplength{\@dtl at gap sp}%
+ \ifdim\dtl at tmplength<\DTLminminortickgap
+ \dtldiv{\@dtl at gap}{\@dtl at width}{4}%
+ \setlength\dtl at tmplength{\@dtl at gap sp}%
+ \ifdim\dtl at tmplength<\DTLminminortickgap
+ \dtldiv{\@dtl at gap}{\@dtl at width}{2}%
+ \setlength\dtl at tmplength{\@dtl at gap sp}%
+ \ifdim\dtl at tmplength<\DTLminminortickgap
+ \let\@dtl at gap=\@dtl at width
+ \fi
+ \fi
+ \fi
+ \dtldiv{\@dtl at gap}{\@dtl at gap}{#3}%
+ \dtl at constructticklistwithgapex{#1}{#2}{\dtl at tmp}{\@dtl at gap}%
+ \ifx#4\@empty
+ \let#4=\dtl at tmp
+ \else
+ \expandafter\toks@\expandafter{#4}%
+ \edef#4{#4,\dtl at tmp}%
+ \fi
+}
+\newcommand*{\dtl at constructticklistwithgapex}[4]{%
+\edef\@dtl at thistick{#1}%
+\let#3=\@empty
+\dtladd{\@dtl at thistick}{\@dtl at thistick}{#4}%
+\whiledo{\DTLisFPopenbetween{\@dtl at thistick}{#1}{#2}}{%
+ \expandafter\toks@\expandafter{\@dtl at thistick}%
+ \ifx#3\@empty
+ \edef#3{\the\toks@}%
+ \else
+ \edef#3{#3,\the\toks@}%
+ \fi
+ \dtladd{\@dtl at thistick}{\@dtl at thistick}{#4}%
+}%
+}
+\newcommand*{\DTLaddtoplotlegend}[3]{%
+\def\dtl at legendline{}%
+\ifx\relax#2\relax
+\else
+ \toks@{#2%
+ \pgfpathmoveto{\pgfpoint{-10pt}{0pt}}%
+ \pgfpathlineto{\pgfpoint{10pt}{0pt}}%
+ \pgfusepath{stroke}}%
+ \edef\dtl at legendline{\the\toks@}%
+\fi
+\ifx\relax#1\relax
+\else
+ \toks@{#1}%
+ \expandafter\@dtl at toks\expandafter{\dtl at legendline}%
+ \edef\dtl at legendline{\the\@dtl at toks\the\toks@}%
+\fi
+\expandafter\toks@\expandafter{\dtl at legendline}%
+\ifx\dtl at legend\@empty
+ \xdef\dtl at legend{\noexpand\tikz\the\toks@; \noexpand& #3}%
+\else
+ \expandafter\@dtl at toks\expandafter{\dtl at legend}%
+ \xdef\dtl at legend{\the\@dtl at toks\noexpand\\%
+ \noexpand\tikz\the\toks@; \noexpand& #3}%
+\fi
+}
+% \end{macrocode}
+%\iffalse
+% \begin{macrocode}
+%</dataplot-2019-09-27.sty>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*datatool-2019-09-27.sty>
+% \end{macrocode}
+%\fi
+%\subsection{Rollback v2.32 (datatool-2019-09-27.sty)}
+% \begin{macrocode}
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{datatool}[2019/09/27 v2.32 (NLCT)]
+\RequirePackage{xkeyval}
+\RequirePackage{ifthen}
+\RequirePackage{xfor}
+\RequirePackage{substr}
+\RequirePackage{etoolbox}
+\newcommand*{\@dtl at separator}{,}
+\newcommand*{\DTLsetseparator}[1]{%
+ \renewcommand*{\@dtl at separator}{#1}%
+ \@dtl at construct@lopoffs
+}
+\begingroup
+\catcode`\^^I12
+\gdef\DTLsettabseparator{%
+ \catcode`\^^I12
+ \DTLsetseparator{^^I}%
+}
+\gdef\DTLmaketabspace{%
+ \catcode`\^^I10\relax
+}
+\endgroup
+\begingroup
+\catcode`\"12\relax
+\gdef\@dtl at delimiter{"}
+\endgroup
+\newcommand*\DTLsetdelimiter[1]{%
+ \renewcommand*{\@dtl at delimiter}{#1}%
+ \@dtl at construct@lopoffs
+}
+\edef\@dtl at construct@lopoff#1#2{%
+ \noexpand\long
+ \noexpand\def\noexpand\@dtl at lopoff#1##1##2\noexpand\to##3##4{%
+ \noexpand\ifx#2##1\noexpand\relax
+ \noexpand\ifstrempty{##1}%
+ {\noexpand\@dtl at qlopoff#1{}##2\noexpand\to##3##4\relax}%
+ {%
+ \noexpand\dtl at ifsingle{##1}%
+ {\noexpand\@dtl at qlopoff#1##1##2\noexpand\to##3##4\relax}%
+ {\noexpand\@dtl at qlopoff#1{##1}##2\noexpand\to##3##4\relax}%
+ }%
+ \noexpand\else
+ \noexpand\ifstrempty{##1}%
+ {\noexpand\@dtl at lop@ff#1{}##2\noexpand\to##3##4\relax}%
+ {%
+ \noexpand\dtl at ifsingle{##1}%
+ {\noexpand\@dtl at lop@ff#1##1##2\noexpand\to##3##4\relax}%
+ {\noexpand\@dtl at lop@ff#1{##1}##2\noexpand\to##3##4\relax}%
+ }%
+ \noexpand\fi
+ }%
+}
+\edef\@dtl at construct@qlopoff#1#2{%
+ \noexpand\long
+ \noexpand\def\noexpand\@dtl at qlopoff#1#2##1#2#1##2\noexpand\to##3##4{%
+ \noexpand\def##4{##1}%
+ \noexpand\DTLsubstituteall{##4}{#2#2}{#2}%
+ \noexpand\edef\noexpand\@dtl at dosubs{%
+ \noexpand\noexpand\noexpand\DTLsubstituteall{\noexpand\noexpand##4}%
+ {\noexpand\expandafter\noexpand\noexpand\noexpand\csname#2\noexpand\endcsname#2}%
+ {\noexpand\expandafter\noexpand\noexpand\noexpand\csname#2\noexpand\endcsname}%
+ }%
+ \noexpand\@dtl at dosubs
+ \noexpand\def##3{#1##2}%
+ }%
+}
+\edef\@dtl at construct@lop at ff#1{%
+ \noexpand\long
+ \noexpand\def\noexpand\@dtl at lop@ff#1##1#1##2\noexpand\to##3##4{%
+ \noexpand\def##4{##1}%
+ \noexpand\def##3{#1##2}%
+ }%
+}
+\newcommand{\@dtl at construct@lopoffs}{%
+ \edef\@dtl at chars{{\@dtl at separator}{\@dtl at delimiter}}%
+ \expandafter\@dtl at construct@lopoff\@dtl at chars
+ \expandafter\@dtl at construct@qlopoff\@dtl at chars
+ \expandafter\@dtl at construct@lop at ff\expandafter{\@dtl at separator}%
+}
+\define at key{datatool.sty}{separator}{%
+ \DTLsetseparator{#1}%
+}
+\define at key{datatool.sty}{delimiter}{%
+ \DTLsetdelimiter{#1}%
+}
+\define at boolkey{datatool.sty}[dtl]{verbose}[true]{}
+\define at choicekey{datatool.sty}{math}[\val\nr]{fp,pgfmath}{%
+ \renewcommand*\@dtl at mathprocessor{#1}%
+}
+\providecommand*{\@dtl at mathprocessor}{fp}
+\newcommand*{\@dtl at set@options}{}
+\define at choicekey{datatool.sty}{utf8}{true,false}[true]{%
+ \renewcommand*{\@dtl at set@options}{\setbool{@dtl at utf8}{#1}}%
+}
+\ProcessOptionsX
+\@dtl at construct@lopoffs
+\RequirePackage{datatool-base}[=v2.32]
+\@dtl at set@options
+\DeclareRobustCommand{\DTLpar}{\par}
+\newcommand*{\DTLnewdb}[1]{%
+ \DTLifdbexists{#1}%
+ {%
+ \PackageError{datatool}{Database `#1' already exists}{}%
+ }%
+ {%
+ \dtl at message{Creating database `#1'}%
+ \expandafter\newtoks\csname dtldb@#1\endcsname
+ \expandafter\newtoks\csname dtlkeys@#1\endcsname{}%
+ \expandafter\newcount\csname dtlrows@#1\endcsname
+ \expandafter\newcount\csname dtlcols@#1\endcsname
+ }%
+}
+\newcommand*{\DTLcleardb}[1]{%
+ \DTLifdbexists{#1}%
+ {%
+ \dtlforeachkey(\@dtl at key,\@dtl at col,\@dtl at type,\@dtl at head)\in{#1}\do
+ {%
+ \expandafter\let\csname dtl at ci@#1@\@dtl at key\endcsname\undefined
+ }%
+ \csname dtldb@#1\endcsname{}%
+ \csname dtlkeys@#1\endcsname{}%
+ \csname dtlrows@#1\endcsname=0\relax
+ \csname dtlcols@#1\endcsname=0\relax
+ }%
+ {%
+ \PackageError{Can't clear database `#1':
+ database doesn't exist}{}{}%
+ }%
+}
+\newcommand*{\DTLdeletedb}[1]{%
+ \DTLifdbexists{#1}%
+ {%
+ \dtlforeachkey(\@dtl at key,\@dtl at col,\@dtl at type,\@dtl at head)\in{#1}\do
+ {%
+ \expandafter\let\csname dtl at ci@#1@\@dtl at key\endcsname\undefined
+ }%
+ \expandafter\let\csname dtldb@#1\endcsname\undefined
+ \expandafter\let\csname dtlkeys@#1\endcsname\undefined
+ \expandafter\let\csname dtlrows@#1\endcsname\undefined
+ \expandafter\let\csname dtlcols@#1\endcsname\undefined
+ }%
+ {%
+ \PackageError{Can't delete database `#1':
+ database doesn't exist}{}{}%
+ }%
+}
+\newcommand*{\DTLgnewdb}[1]{%
+ \DTLifdbexists{#1}%
+ {%
+ \PackageError{datatool}{Database `#1' already exists}{}%
+ }%
+ {%
+ \dtl at message{Creating database `#1'}%
+ \expandafter\global\expandafter\newtoks\csname dtldb@#1\endcsname
+ \expandafter\global\expandafter\newtoks\csname dtlkeys@#1\endcsname{}%
+ \expandafter\global\expandafter\newcount\csname dtlrows@#1\endcsname
+ \expandafter\global\expandafter\newcount\csname dtlcols@#1\endcsname
+ }%
+}
+\newcommand*{\DTLgdeletedb}[1]{%
+ \DTLifdbexists{#1}%
+ {%
+ \dtlforeachkey(\@dtl at key,\@dtl at col,\@dtl at type,\@dtl at head)\in{#1}\do
+ {%
+ \expandafter\global\expandafter\let\csname dtl at ci@#1@\@dtl at key\endcsname\undefined
+ }%
+ \expandafter\global\expandafter\let\csname dtldb@#1\endcsname\undefined
+ \expandafter\global\expandafter\let\csname dtlkeys@#1\endcsname\undefined
+ \expandafter\global\expandafter\let\csname dtlrows@#1\endcsname\undefined
+ \expandafter\global\expandafter\let\csname dtlcols@#1\endcsname\undefined
+ }%
+ {%
+ \PackageError{Can't delete database `#1':
+ database doesn't exist}{}{}%
+ }%
+}
+\newcommand*{\DTLgcleardb}[1]{%
+ \DTLifdbexists{#1}%
+ {%
+ \dtlforeachkey(\@dtl at key,\@dtl at col,\@dtl at type,\@dtl at head)\in{#1}\do
+ {%
+ \expandafter\global\expandafter\let\csname dtl at ci@#1@\@dtl at key\endcsname\undefined
+ }%
+ \expandafter\global\csname dtldb@#1\endcsname{}%
+ \expandafter\global\csname dtlkeys@#1\endcsname{}%
+ \expandafter\global\csname dtlrows@#1\endcsname=0\relax
+ \expandafter\global\csname dtlcols@#1\endcsname=0\relax
+ }%
+ {%
+ \PackageError{Can't clear database `#1':
+ database doesn't exist}{}{}%
+ }%
+}
+\newcommand*{\DTLrowcount}[1]{%
+ \expandafter\number\csname dtlrows@#1\endcsname
+}
+\newcommand*{\DTLcolumncount}[1]{%
+ \expandafter\number\csname dtlcols@#1\endcsname
+}
+\newcommand{\DTLifdbempty}[3]{%
+ \DTLifdbexists{#1}%
+ {\@DTLifdbempty{#1}{#2}{#3}}%
+ {\PackageError{Can't check if database `#1' is empty:
+ database doesn't exist}{}{}}%
+}
+\newcommand{\@DTLifdbempty}[3]{%
+ \expandafter\ifnum\csname dtlrows@#1\endcsname=0\relax
+ #2%
+ \else
+ #3%
+ \fi
+}
+\newcommand*{\DTLnewrow}{%
+ \@ifstar\@sDTLnewrow\@DTLnewrow
+}
+\newcommand*{\@DTLnewrow}[1]{%
+\DTLifdbexists{#1}%
+ {\@sDTLnewrow{#1}}%
+ {\PackageError{datatool}{Can't add new row to database `#1':
+ database doesn't exist}{}}%
+}
+\newcommand*{\@sDTLnewrow}[1]{%
+ \global\advance\csname dtlrows@#1\endcsname by 1\relax
+ \@dtl at toks@gput at right@cx{dtldb@#1}{%
+ \noexpand\db at row@elt at w%
+ \noexpand\db at row@id at w \number\csname dtlrows@#1\endcsname
+ \noexpand\db at row@id at end@%
+ \noexpand\db at row@id at w \number\csname dtlrows@#1\endcsname
+ \noexpand\db at row@id at end@%
+ \noexpand\db at row@elt at end@%
+ }%
+ \dtl at message{New row added to database `#1'}%
+}
+\newcount\dtlcolumnnum
+\newcount\dtlrownum
+\newcommand*{\DTLifhaskey}{\@ifstar\@sDTLifhaskey\@DTLifhaskey}
+\newcommand{\@DTLifhaskey}[4]{%
+ \DTLifdbexists{#1}%
+ {%
+ \@sDTLifhaskey{#1}{#2}{#3}{#4}%
+ }%
+ {%
+ \PackageError{datatool}{Database `#1' doesn't exist}{}%
+ }%
+}
+\newcommand{\@sDTLifhaskey}[4]{%
+ \@ifundefined{dtl at ci@#1@#2}%
+ {%
+ #4%
+ }%
+ {%
+ #3%
+ }%
+}
+\newcommand*{\DTLgetcolumnindex}{%
+ \@ifstar\@sdtl at getcolumnindex\@dtl at getcolumnindex
+}
+\newcommand*{\@dtl at getcolumnindex}[3]{%
+ \DTLifdbexists{#2}%
+ {%
+ \@sDTLifhaskey{#2}{#3}%
+ {%
+ \@sdtl at getcolumnindex{#1}{#2}{#3}%
+ }%
+ {%
+ \PackageError{datatool}{Database `#2' doesn't contain
+ key `#3'}{}%
+ }%
+ }%
+ {%
+ \PackageError{datatool}{Database `#2' doesn't exist}{}%
+ }%
+}
+\newcommand*{\@sdtl at getcolumnindex}[3]{%
+ \expandafter\let\expandafter#1\csname dtl at ci@#2@#3\endcsname
+}
+\newcommand*{\dtlcolumnindex}[2]{%
+ \csname dtl at ci@#1@#2\endcsname
+}
+\newcommand*{\DTLgetkeyforcolumn}{%
+ \@ifstar\@sdtlgetkeyforcolumn\@dtlgetkeyforcolumn}
+\newcommand*{\@dtlgetkeyforcolumn}[3]{%
+ \DTLifdbexists{#2}%
+ {%
+ \ifnum#3<1\relax
+ \PackageError{datatool}{Invalid column index \number#3}{%
+ Column indices start at 1}%
+ \else
+ \expandafter\ifnum\csname dtlcols@#2\endcsname<#3\relax
+ \PackageError{datatool}{Index \number#3\space out of
+ range for database `#2'}{Database `#2' only has
+ \expandafter\number\csname dtlcols@#2\endcsname\space
+ columns}%
+ \else
+ \@sdtlgetkeyforcolumn{#1}{#2}{#3}%
+ \fi
+ \fi
+ }%
+ {%
+ \PackageError{datatool}{Database `#2' doesn't exists}{}%
+ }%
+}
+\newcommand*{\@sdtlgetkeyforcolumn}[3]{%
+ \edef\@dtl at dogetkeyforcolumn{\noexpand\@dtl at getkeyforcolumn
+ {\noexpand#1}{#2}{\number#3}}%
+ \@dtl at dogetkeyforcolumn
+}
+\newcommand*{\@dtl at getkeyforcolumn}[3]{%
+ \def\@dtl at get@keyforcolumn##1% before stuff
+ \db at plist@elt at w% start of block
+ \db at col@id at w #3\db at col@id at end@% index
+ \db at key@id at w ##2\db at key@id at end@% key
+ \db at type@id at w ##3\db at type@id at end@% data type
+ \db at header@id at w ##4\db at header@id at end@% header
+ \db at col@id at w #3\db at col@id at end@% index
+ \db at plist@elt at end@% end of block
+ ##5\q at nil{\def#1{##2}}%
+ \edef\@dtl at tmp{\expandafter\the\csname dtlkeys@#2\endcsname}%
+ \expandafter\@dtl at get@keyforcolumn\@dtl at tmp
+ \db at plist@elt at w% start of block
+ \db at col@id at w #3\db at col@id at end@ %index
+ \db at key@id at w \@nil\db at key@id at end@% key
+ \db at type@id at w \db at type@id at end@% data type
+ \db at header@id at w \db at header@id at end@% header
+ \db at col@id at w #3\db at col@id at end@% index
+ \db at plist@elt at end@% end of block
+ \q at nil
+}
+\def\DTLunsettype{}
+\def\DTLstringtype{0}
+\def\DTLinttype{1}
+\def\DTLrealtype{2}
+\def\DTLcurrencytype{3}
+\newcommand*{\DTLgetdatatype}{%
+ \@ifstar\@sdtlgetdatatype\@dtlgetdatatype
+}
+\newcommand*{\@dtlgetdatatype}[3]{%
+ \DTLifdbexists{#2}%
+ {%
+ \@sDTLifhaskey{#2}{#3}%
+ {%
+ \@sdtlgetdatatype{#1}{#2}{#3}%
+ }%
+ {%
+ \PackageError{datatool}{Key `#3' undefined in database `#2'}{}%
+ }%
+ }%
+ {%
+ \PackageError{datatool}{Database `#2' doesn't exist}{}%
+ }%
+}
+\newcommand*{\@sdtlgetdatatype}[3]{%
+ \edef\@dtl at dogetdata{\noexpand\@dtl at getdatatype{\noexpand#1}%
+ {\expandafter\the\csname dtlkeys@#2\endcsname}%
+ {\dtlcolumnindex{#2}{#3}}}%
+ \@dtl at dogetdata
+}
+\newcommand*{\@dtl at getdatatype}[3]{%
+ \def\@dtl at get@keydata##1% stuff before
+ \db at plist@elt at w% start of key block
+ \db at col@id at w #3\db at col@id at end@% column index
+ \db at key@id at w ##2\db at key@id at end@% key id
+ \db at type@id at w ##3\db at type@id at end@% data type
+ \db at header@id at w ##4\db at header@id at end@% header
+ \db at col@id at w #3\db at col@id at end@% column index
+ \db at plist@elt at end@% end of key block
+ ##5% stuff afterwards
+ \q at nil{\def#1{##3}}%
+ \@dtl at get@keydata#2\q at nil
+}
+\newcommand*{\@dtl at getprops}[7]{%
+ \def\@dtl at get@keydata##1% stuff before
+ \db at plist@elt at w% start of key block
+ \db at col@id at w #7\db at col@id at end@% column index
+ \db at key@id at w ##2\db at key@id at end@% key id
+ \db at type@id at w ##3\db at type@id at end@% data type
+ \db at header@id at w ##4\db at header@id at end@% header
+ \db at col@id at w #7\db at col@id at end@% column index
+ \db at plist@elt at end@% end of key block
+ ##5% stuff afterwards
+ \q at nil{%
+ \def#1{##2}% key
+ \def#2{##3}% data type
+ #3={##4}% header
+ #4={##1}% before stuff
+ #5={##5}% after stuff
+ }%
+ \@dtl at get@keydata#6\q at nil
+}
+\newtoks\@dtl at before
+\newtoks\@dtl at after
+\newtoks\@dtl at colhead
+\newcommand*{\DTLaddcolumn}{%
+ \@ifstar\@sDTLaddcolumn\@DTLaddcolumn
+}
+\newcommand{\@DTLaddcolumn}[2]{%
+ \DTLifdbexists{#1}%
+ {\@dtl at updatekeys{#1}{#2}{}}%
+ {\PackageError{datatool}{Can't add new column to database `#1':
+ database doesn't exist}{}}%
+}
+\newcommand{\s at DTLaddcolumn}[2]{%
+ \@dtl at updatekeys{#1}{#2}{}%
+}
+\newcommand*{\@dtl at updatekeys}[3]{%
+ \@sDTLifhaskey{#1}{#2}%
+ {%
+ \expandafter\dtlcolumnnum\expandafter
+ =\dtlcolumnindex{#1}{#2}\relax
+ \edef\@dtl at dogetprops{\noexpand\@dtl at getprops
+ {\noexpand\@dtl at key}{\noexpand\@dtl at type}%
+ {\noexpand\@dtl at colhead}{\noexpand\@dtl at before}%
+ {\noexpand\@dtl at after}{\the\csname dtlkeys@#1\endcsname}%
+ {\number\dtlcolumnnum}}%
+ \@dtl at dogetprops
+ \ifstrempty{#3}%
+ {%
+ }%
+ {%
+ \let\@dtl at oldtype\@dtl at type
+ \@dtl at checknumerical{#3}%
+ \ifdefempty{\@dtl at type}%
+ {%
+ \edef\@dtl at type{\number\@dtl at datatype}%
+ }%
+ {%
+ \ifcase\@dtl at datatype % string
+ \def\@dtl at type{0}%
+ \or % int
+ \or % real
+ \ifnum\@dtl at type=1\relax
+ \def\@dtl at type{2}%
+ \fi
+ \or % currency
+ \ifnum\@dtl at type>0\relax
+ \def\@dtl at type{3}%
+ \fi
+ \fi
+ }%
+ \ifx\@dtl at oldtype\@dtl at type
+ \else
+ \@dtl at toks@gconcat at middle@cx{dtlkeys@#1}%
+ {\@dtl at before}%
+ {%
+ \noexpand\db at plist@elt at w% start of key block
+ \noexpand\db at col@id at w \the\dtlcolumnnum
+ \noexpand\db at col@id at end@% column index
+ \noexpand\db at key@id at w #2\noexpand\db at key@id at end@% key id
+ \noexpand\db at type@id at w \@dtl at type
+ \noexpand\db at type@id at end@% data type
+ \noexpand\db at header@id at w \the\@dtl at colhead
+ \noexpand\db at header@id at end@% header
+ \noexpand\db at col@id at w \the\dtlcolumnnum
+ \noexpand\db at col@id at end@% column index
+ \noexpand\db at plist@elt at end@% end of key block
+ }%
+ {\@dtl at after}%
+ \fi
+ }%
+ }%
+ {%
+ \expandafter\global\expandafter\advance
+ \csname dtlcols@#1\endcsname by 1\relax
+ \dtlcolumnnum=\csname dtlcols@#1\endcsname\relax
+ \expandafter\xdef\csname dtl at ci@#1@#2\endcsname{%
+ \number\dtlcolumnnum}%
+ \ifstrempty{#2}%
+ {%
+ \edef\@dtl at type{}% don't know data type yet
+ }%
+ {%
+ \@dtl at checknumerical{#3}%
+ \edef\@dtl at type{\number\@dtl at datatype}%
+ }%
+ \@dtl at toks@gput at right@cx{dtlkeys@#1}%
+ {%
+ \noexpand\db at plist@elt at w
+ \noexpand\db at col@id at w \the\dtlcolumnnum
+ \noexpand\db at col@id at end@
+ \noexpand\db at key@id at w #2\noexpand\db at key@id at end@
+ \noexpand\db at type@id at w \@dtl at type
+ \noexpand\db at type@id at end@
+ \noexpand\db at header@id at w #2\noexpand\db at header@id at end@
+ \noexpand\db at col@id at w \the\dtlcolumnnum
+ \noexpand\db at col@id at end@
+ \noexpand\db at plist@elt at end@
+ }%
+ }%
+}
+\newcommand*{\DTLsetheader}{\@ifstar\@sDTLsetheader\@DTLsetheader}
+\newcommand*{\@DTLsetheader}[3]{%
+ \DTLifdbexists{#1}%
+ {%
+ \@sDTLifhaskey{#1}{#2}%
+ {%
+ \@sDTLsetheader{#1}{#2}{#3}%
+ }%
+ {%
+ \PackageError{datatool}{Database `#1' doesn't contain key
+ `#2'}{}%
+ }%
+ }%
+ {%
+ \PackageError{datatool}{Database `#1' doesn't exist}{}%
+ }%
+}
+\newcommand*{\@sDTLsetheader}[3]{%
+ \expandafter\dtlcolumnnum\expandafter
+ =\dtlcolumnindex{#1}{#2}\relax
+ \@dtl at setheaderforindex{#1}{\dtlcolumnnum}{#3}%
+}
+\newcommand*{\@dtl at setheaderforindex}[3]{%
+ \edef\@dtl at dogetprops{\noexpand\@dtl at getprops
+ {\noexpand\@dtl at key}{\noexpand\@dtl at type}%
+ {\noexpand\@dtl at colhead}{\noexpand\@dtl at before}%
+ {\noexpand\@dtl at after}{\the\csname dtlkeys@#1\endcsname}%
+ {\number#2}}%
+ \@dtl at dogetprops
+ \@dtl at colhead={#3}%
+ \edef\@dtl at colnum{\number#2}\relax
+ \@dtl at toks@gconcat at middle@cx{dtlkeys@#1}%
+ {\@dtl at before}%
+ {%
+ \noexpand\db at plist@elt at w% start of block
+ \noexpand\db at col@id at w \@dtl at colnum
+ \noexpand\db at col@id at end@% index
+ \noexpand\db at key@id at w \@dtl at key\noexpand\db at key@id at end@% key
+ \noexpand\db at type@id at w \@dtl at type
+ \noexpand\db at type@id at end@% data type
+ \noexpand\db at header@id at w \the\@dtl at colhead
+ \noexpand\db at header@id at end@% header
+ \noexpand\db at col@id at w \@dtl at colnum
+ \noexpand\db at col@id at end@% index
+ \noexpand\db at plist@elt at end@% end of block
+ }%
+ {\@dtl at after}%
+}
+\newcommand*{\dtlexpandnewvalue}{%
+ \def\@dtl at setnewvalue##1{\protected at edef\@dtl at tmp{##1}%
+ \expandafter\@dtl at toks\expandafter{\@dtl at tmp}}%
+}
+\newcommand*{\dtlnoexpandnewvalue}{%
+ \def\@dtl at setnewvalue##1{\@dtl at toks{##1}}%
+}
+\dtlnoexpandnewvalue
+\newcommand{\DTLnewdbentry}{%
+ \@ifstar\@sDTLnewdbentry\@DTLnewdbentry
+}
+\newcommand{\@DTLnewdbentry}[3]{%
+ \DTLifdbexists{#1}%
+ {\@sDTLnewdbentry{#1}{#2}{#3}}%
+ {\PackageError{datatool}{Can't add new entry to database `#1':
+ database doesn't exist}{}}%
+}
+\newcommand*{\@sDTLnewdbentry}[3]{%
+ \@dtl at updatekeys{#1}{#2}{#3}%
+ \expandafter\dtlcolumnnum\expandafter
+ =\dtlcolumnindex{#1}{#2}\relax
+ \edef\dtl at dogetrow{\noexpand\dtlgetrow{#1}%
+ {\number\csname dtlrows@#1\endcsname}}%
+ \dtl at dogetrow
+ \edef\dtl at dogetentry{\noexpand\dtlgetentryfromcurrentrow
+ {\noexpand\dtl at entry}{\number\dtlcolumnnum}%
+ }%
+ \dtl at dogetentry
+ \ifx\dtl at entry\dtlnovalue
+ \@dtl at setnewvalue{#3}%
+ \@dtl at toks@gconcat at middle@cx{dtldb@#1}%
+ {\dtlbeforerow}%
+ {%
+ \noexpand\db at row@elt at w%
+ \noexpand\db at row@id at w \number\csname dtlrows@#1\endcsname
+ \noexpand\db at row@id at end@%
+ \the\dtlcurrentrow
+ \noexpand\db at col@id at w \number\dtlcolumnnum
+ \noexpand\db at col@id at end@%
+ \noexpand\db at col@elt at w \the\@dtl at toks
+ \noexpand\db at col@elt at end@%
+ \noexpand\db at col@id at w \number\dtlcolumnnum
+ \noexpand\db at col@id at end@%
+ \noexpand\db at row@id at w \number\csname dtlrows@#1\endcsname
+ \noexpand\db at row@id at end@%
+ \noexpand\db at row@elt at end@%
+ }%
+ {\dtlafterrow}%
+ \dtl at message{Added #2\space -> #3\space to database `#1'}%
+ \else
+ \PackageError{datatool}{Can't add entry with ID `#2' to
+ current row of database `#1'}{There is already an entry with
+ this ID in the current row}%
+ \fi
+}
+\newcommand{\DTLifdbexists}[3]{%
+ \@ifundefined{dtldb@#1}{#3}{#2}}
+\newcommand*{\DTLassign}[3]{%
+ \DTLifdbexists{#1}
+ {%
+ {%
+ \dtlgetrow{#1}{#2}%
+ \@dtl at assign{#3}{#1}%
+ }%
+ }%
+ {%
+ \PackageError{datatool}{Database `#1' doesn't exist}{}%
+ }%
+}
+\newcommand*{\DTLassignfirstmatch}[4]{%
+ \dtl at assignfirstmatch{#3}{#1}{#2}{#4}%
+}
+\newcommand*{\xDTLassignfirstmatch}[4]{%
+ \protected at edef\@dtl at asg@value{\expandonce{#3}}%
+ \expandafter\dtl at assignfirstmatch\expandafter
+ {\@dtl at asg@value}{#1}{#2}{#4}%
+}
+\newcommand*{\dtl at assignfirstmatch}[4]{%
+ \DTLifdbexists{#2}%
+ {%
+ {%
+ \dtlgetrowindex{\dtl at asg@rowidx}{#2}{\dtlcolumnindex{#2}{#3}}{#1}%
+ \ifx\dtl at asg@rowidx\dtlnovalue
+ \PackageError{datatool}{No match found for
+ \string\DTLassignfirstmatch{#2}{#3}{#1}{#4}}{}%
+ \else
+ \dtlgetrow{#2}{\dtl at asg@rowidx}%
+ \@dtl at assign{#4}{#2}%
+ \fi
+ }%
+ }%
+ {%
+ \PackageError{datatool}{Data base `#2' doesn't exist}{}%
+ }%
+}
+\newcommand*{\@dtl at assign}[2]{%
+ \ifstrempty{#1}{}%
+ {%
+ \@dtl at assigncmd#1,\@nil\@@{#2}%
+ }%
+}
+\def\@dtl at assigncmd#1#2=#3,#4\@@#5{%
+ \edef\@dtl at dbname{#5}%
+ \@sDTLifhaskey{#5}{#3}%
+ {%
+ \edef\@dtl at dogetentry{%
+ \noexpand\dtlgetentryfromcurrentrow
+ {\noexpand#1}{\dtlcolumnindex{#5}{#3}}}%
+ \@dtl at dogetentry
+ \ifdefequal{#1}{\dtlnovalue}%
+ {%
+ \@@dtl at setnull{#1}{#3}%
+ }%
+ {}%
+ \global\let#1=#1\relax
+ }%
+ {%
+ \PackageError{datatool}{Can't assign \string#1\space: there
+ is no key `#3' in data base `#5'}{}%
+ \global\let#1\DTLstringnull
+ }%
+ \def\dtl at tmp{#4}%
+ \ifx\@nnil\dtl at tmp
+ \let\@dtl at next\@dtl at assigncmdnoop
+ \else
+ \let\@dtl at next\@dtl at assigncmd
+ \fi
+ \@dtl at next#4\@@{#5}%
+}
+\def\@dtl at assigncmdnoop#1\@@#2{}
+\newcommand*{\@dtl at setnull}[2]{%
+ \@sDTLifhaskey{\@dtl at dbname}{#2}%
+ {%
+ \@@dtl at setnull{#1}{#2}%
+ }%
+ {%
+ \global\let#1=\DTLstringnull
+ }%
+}
+\newcommand*{\@@dtl at setnull}[2]{%
+ \@sdtlgetdatatype{\@dtl at type}{\@dtl at dbname}{#2}%
+ \ifnum0\@dtl at type=0\relax
+ \global\let#1=\DTLstringnull
+ \else
+ \global\let#1=\DTLnumbernull
+ \fi
+}
+\newcommand*{\DTLstringnull}{\@dtlstringnull}
+\newcommand*{\@dtlstringnull}{NULL}
+\newcommand*{\DTLnumbernull}{\@dtlnumbernull}
+\newcommand*{\@dtlnumbernull}{0}
+\newcommand*{\DTLifnull}[3]{%
+ \ifx#1\dtlnovalue
+ #2%
+ \else
+ \ifx#1\DTLstringnull
+ #2%
+ \else
+ \ifx#1\DTLnumbernull
+ #2%
+ \else
+ #3%
+ \fi
+ \fi
+ \fi
+}
+\newcommand*{\DTLifnullorempty}[3]{%
+ \ifdefempty{#1}{#2}{\DTLifnull{#1}{#2}{#3}}%
+}
+\def\@dtlnovalue{Undefined Value}
+\def\dtlnovalue{\@dtlnovalue}
+\newcommand*{\DTLgetkeydata}{%
+ \@ifstar\@sdtlgetkeydata\@dtlgetkeydata
+}
+\newcommand*{\@dtlgetkeydata}[5]{%
+ \DTLifdbexists{#2}%
+ {%
+ \@sDTLifhaskey{#2}{#1}%
+ {%
+ \@sdtlgetkeydata{#1}{#2}{#3}{#4}{#5}%
+ }%
+ {%
+ \PackageError{datatool}{Key `#1' not defined in database
+ `#2'}{}%
+ }%
+ }%
+ {%
+ \PackageError{datatool}{Database `#2' doesn't exist}{}%
+ }%
+}
+\newcommand*{\@sdtlgetkeydata}[5]{%
+ \@sdtl at getcolumnindex{#3}{#2}{#1}%
+ \edef\@dtl at dogetkeydata{\noexpand\@dtl at getprops
+ {\noexpand\@dtl at key}{\noexpand#4}{\noexpand\@dtl at colhead}%
+ {\noexpand\@dtl at before}{\noexpand\@dtl at after}%
+ {\expandafter\the\csname dtlkeys@#2\endcsname}%
+ {#3}}%
+ \@dtl at dogetkeydata
+ \edef#5{\the\@dtl at toks}%
+}
+\newcommand{\dtl at gathervalues}[3][key]{%
+ \dtlforeachkey(\@dtl at key,\@dtl at col,\@dtl at type,\@dtl at head)\in{#2}\do
+ {%
+ \dtlgetentryfromrow{\@dtl at tmp}{\@dtl at col}{#3}%
+ \ifx\@dtl at tmp\dtlnovalue
+ \@dtl at setnull{\@dtl at tmp}{\@dtl at key}%
+ \fi
+ \expandafter\let\csname @dtl@#1@\@dtl at key\endcsname\@dtl at tmp
+ }%
+}
+\newcommand{\dtl at g@gathervalues}[3][key]{%
+ \dtlforeachkey(\@dtl at key,\@dtl at col,\@dtl at type,\@dtl at head)\in{#2}\do
+ {%
+ \dtlgetentryfromrow{\@dtl at tmp}{\@dtl at col}{#3}%
+ \ifx\@dtl at tmp\dtlnovalue
+ \@dtl at setnull{\@dtl at tmp}{\@dtl at key}%
+ \fi
+ \expandafter\global
+ \expandafter\let\csname @dtl@#1@\@dtl at key\endcsname\@dtl at tmp
+ }%
+}
+\newtoks\dtlcurrentrow
+\newtoks\dtlbeforerow
+\newtoks\dtlafterrow
+
+\newcommand*{\dtlgetrow}[2]{%
+ \dtlrownum=#2\relax
+ \edef\dtldbname{#1}%
+ \expandafter\toks@\expandafter=\csname dtldb@#1\endcsname
+ \edef\@dtl at dogetrow{\noexpand\@dtlgetrow{\the\toks@}{\number#2}}%
+ \@dtl at dogetrow
+}
+\newcommand{\edtlgetrowforvalue}[3]{%
+ \protected at edef\@dtl at dogetrowforvalue{%
+ \noexpand\dtlgetrowforvalue{#1}{#2}{#3}}%
+ \@dtl at dogetrowforvalue
+}
+\newcommand{\DTLfetch}[4]{%
+ \edtlgetrowforvalue{#1}{\dtlcolumnindex{#1}{#2}}{#3}%
+ \dtlgetentryfromcurrentrow{\dtlcurrentvalue}{\dtlcolumnindex{#1}{#4}}%
+ \dtlcurrentvalue
+}
+\newcommand*{\dtlgetrowforvalue}[3]{%
+ \dtlgetrowindex{\dtl at rowidx}{#1}{#2}{#3}%
+ \ifx\dtl at rowidx\dtlnovalue
+ \PackageError{datatool}{No row found in database `#1' for
+ column `\number#2' matching `#3'}{}%
+ \else
+ \dtlrownum=\dtl at rowidx\relax
+ \edef\dtldbname{#1}%
+ \expandafter\toks@\expandafter=\csname dtldb@#1\endcsname
+ \edef\@dtl at dogetrow{\noexpand\@dtlgetrow{\the\toks@}{\dtl at rowidx}}%
+ \@dtl at dogetrow
+ \fi
+}
+\newcommand*{\@dtlgetrow}[2]{%
+ \def\@dtl at getrow##1% before stuff
+ \db at row@elt at w% start of the row
+ \db at row@id at w #2\db at row@id at end@% row id
+ ##2%
+ \db at row@id at w #2\db at row@id at end@% row id
+ \db at row@elt at end@% end of the row
+ ##3% after stuff
+ \q at nil{\dtlbeforerow={##1}\dtlcurrentrow={##2}\dtlafterrow={##3}}%
+ \@dtl at getrow#1\q at nil
+}
+\newcommand*{\dtlrecombine}{%
+ \@dtl at toks@gconcat at middle@cx{dtldb@\dtldbname}%
+ {\dtlbeforerow}%
+ {%
+ \noexpand\db at row@elt at w
+ \noexpand\db at row@id at w
+ \number\dtlrownum
+ \noexpand\db at row@id at end@
+ \the\dtlcurrentrow
+ \noexpand\db at row@id at w
+ \number\dtlrownum
+ \noexpand\db at row@id at end@
+ \noexpand\db at row@elt at end@
+ }%
+ {\dtlafterrow}%
+}
+\newcommand{\dtlrecombineomitcurrent}{%
+ \dtl at decrementrows{\dtlafterrow}{\dtlrownum}
+ \csname dtldb@\dtldbname\endcsname=\dtlbeforerow
+ \@dtl at toks@gput at right@cx{dtldb@\dtldbname}{\the\dtlafterrow}%
+ \dtl at message{Removed row \number\dtlrownum\space in database
+ `\dtldbname'}%
+}
+\newcommand*{\dtlsplitrow}[4]{%
+ \def\@dtlsplitrow##1%before stuff
+ \db at col@id at w #2\db at col@id at end@% column id
+ ##2% unwanted stuff
+ \db at col@id at w #2\db at col@id at end@% column id
+ ##3% after stuff
+ \q at nil{\def#3{##1}\def#4{##3}}%
+ \@dtlsplitrow#1\q at nil
+}
+\newcommand*{\dtlreplaceentryincurrentrow}[2]{%
+ \edef\@dtl at do@splitrow{\noexpand\dtlsplitrow
+ {\the\dtlcurrentrow}%
+ {\number#2}%
+ {\noexpand\@dtl at before@cs}%
+ {\noexpand\@dtl at after@cs}}%
+ \@dtl at do@splitrow
+ \toks@{#1}%
+ \edef\@dtl at stuff{%
+ \expandonce\@dtl at before@cs
+ \noexpand\db at col@id at w \number#2\noexpand
+ \noexpand\db at col@id at end@% column id
+ \noexpand\db at col@elt at w
+ \the\toks@
+ \noexpand\db at col@elt at end@
+ \noexpand\db at col@id at w \number#2\noexpand
+ \noexpand\db at col@id at end@% column id
+ \expandonce\@dtl at after@cs
+ }%
+ \expandafter\dtlcurrentrow\expandafter{\@dtl at stuff}%
+ \@sdtlgetkeyforcolumn{\@dtl at key}{\dtldbname}{#2}%
+ \@dtl at updatekeys{\dtldbname}{\@dtl at key}{#1}%
+ \dtl at message{Updated \@dtl at key\space -> #1\space in database
+ `\dtldbname'}%
+}
+\newcommand*{\dtlremoveentryincurrentrow}[1]{%
+ \edef\@dtl at do@splitrow{\noexpand\dtlsplitrow
+ {\the\dtlcurrentrow}%
+ {\number#1}%
+ {\noexpand\@dtl at before@cs}%
+ {\noexpand\@dtl at after@cs}}%
+ \@dtl at do@splitrow
+ \edef\@dtl at stuff{%
+ \expandonce\@dtl at before@cs
+ \expandonce\@dtl at after@cs
+ }%
+ \expandafter\dtlcurrentrow\expandafter{\@dtl at stuff}%
+ \dtl at message{Removed entry from column \number#1\space\space in database
+ `\dtldbname'}%
+}
+\newcommand*{\dtlswapentriesincurrentrow}[2]{%
+ \dtlgetentryfromcurrentrow{\@dtl at entryI}{#1}%
+ \dtlgetentryfromcurrentrow{\@dtl at entryII}{#2}%
+ \expandafter\dtlreplaceentryincurrentrow\expandafter
+ {\@dtl at entryII}{#1}%
+ \expandafter\dtlreplaceentryincurrentrow\expandafter
+ {\@dtl at entryI}{#2}%
+}
+\newcommand*{\dtlgetentryfromcurrentrow}[2]{%
+ \dtlgetentryfromrow{#1}{#2}{\dtlcurrentrow}%
+}
+\newcommand*{\dtlgetentryfromrow}[3]{%
+ \edef\@dtl at do@getentry{\noexpand\dtl at getentryfromrow
+ {\noexpand#1}{\number#2}{\the#3}}%
+ \@dtl at do@getentry
+}
+\newcommand*{\dtl at getentryfromrow}[3]{%
+ \def\dtl at dogetentry##1% before stuff
+ \db at col@id at w #2\db at col@id at end@% Column id
+ \db at col@elt at w ##2\db at col@elt at end@% Value
+ \db at col@id at w #2\db at col@id at end@% Column id
+ ##3% Remaining stuff
+ \q at nil{\def#1{##2}}%
+ \dtl at dogetentry#3%
+ \db at col@id at w #2\db at col@id at end@%
+ \db at col@elt at w \@dtlnovalue\db at col@elt at end@%
+ \db at col@id at w #2\db at col@id at end@%
+ \q at nil
+}
+\newcommand*{\dtlappendentrytocurrentrow}[2]{%
+ \@dtl at updatekeys{\dtldbname}{#1}{#2}%
+ \expandafter\dtlcolumnnum\expandafter
+ =\dtlcolumnindex{\dtldbname}{#1}\relax
+ \edef\dtl at dogetentry{\noexpand\dtlgetentryfromcurrentrow
+ {\noexpand\dtl at entry}{\number\dtlcolumnnum}%
+ }%
+ \dtl at dogetentry
+ \ifx\dtl at entry\dtlnovalue
+ \protected at edef\@dtl at tmp{#2}%
+ \expandafter\@dtl at toks\expandafter{\@dtl at tmp}%
+ \@dtl at toks@gput at right@cx{dtlcurrentrow}%
+ {%
+ \noexpand\db at col@id at w
+ \number\dtlcolumnnum
+ \noexpand\db at col@id at end@
+ \noexpand\db at col@elt at w
+ \the\@dtl at toks
+ \noexpand\db at col@elt at end@
+ \noexpand\db at col@id at w
+ \number\dtlcolumnnum
+ \noexpand\db at col@id at end@
+ }%
+ \dtl at message{Appended #1\space -> #2\space to database
+ `\dtldbname'}%
+ \else
+ \PackageError{datatool}{Can't append entry to row:
+ there is already an entry for key `#1' in this row}{}%
+ \fi
+}
+\newcommand*{\dtlupdateentryincurrentrow}[2]{%
+ \@dtl at updatekeys{\dtldbname}{#1}{#2}%
+ \expandafter\dtlcolumnnum\expandafter
+ =\dtlcolumnindex{\dtldbname}{#1}\relax
+ \edef\dtl at dogetentry{\noexpand\dtlgetentryfromcurrentrow
+ {\noexpand\dtl at entry}{\number\dtlcolumnnum}%
+ }%
+ \dtl at dogetentry
+ \ifx\dtl at entry\dtlnovalue
+ \protected at edef\@dtl at tmp{#2}%
+ \expandafter\@dtl at toks\expandafter{\@dtl at tmp}%
+ \@dtl at toks@gput at right@cx{dtlcurrentrow}%
+ {%
+ \noexpand\db at col@id at w
+ \number\dtlcolumnnum
+ \noexpand\db at col@id at end@
+ \noexpand\db at col@elt at w
+ \the\@dtl at toks
+ \noexpand\db at col@elt at end@
+ \noexpand\db at col@id at w
+ \number\dtlcolumnnum
+ \noexpand\db at col@id at end@
+ }%
+ \dtl at message{Appended #1\space -> #2\space to database
+ `\dtldbname'}%
+ \else
+ \toks@{#2}%
+ \edef\do at dtlreplaceincurrentrow{%
+ \noexpand\dtlreplaceentryincurrentrow{\the\toks@}{\number\dtlcolumnnum}%
+ }%
+ \do at dtlreplaceincurrentrow
+ \fi
+}
+\newcommand*{\DTLgetvalue}[4]{%
+ \edef\dtl at dogetvalue{\noexpand\dtl at getvalue{\noexpand#1}{#2}%
+ {\number#3}{\number#4}}%
+ \dtl at dogetvalue
+}
+\newcommand*{\dtl at getvalue}[4]{%
+ \def\@dtl at getvalue ##1% stuff before row <r>
+ \db at row@id at w #3\db at row@id at end@% row <r> id
+ ##2% stuff in row <r> before column <c>
+ \db at col@id at w #4\db at col@id at end@% column <c> id
+ \db at col@elt at w ##3\db at col@elt at end@% value
+ ##4% stuff after value
+ \q at nil{\def#1{##3}}%
+ \toks@=\csname dtldb@#2\endcsname
+ \expandafter\@dtl at getvalue\the\toks@% contents of data base
+ \db at row@id at w #3\db at row@id at end@%
+ \db at col@id at w #4\db at col@id at end@%
+ \db at col@elt at w \@dtlnovalue\db at col@elt at end@% undefined value
+ \q at nil
+ \ifx#1\dtlnovalue
+ \PackageError{datatool}{There is no element at (row=#3,\space
+ column=#4) in database `#2'}{}%
+ \fi
+}
+\newcommand*{\DTLgetlocation}[4]{%
+ \def\@dtl at getlocation##1% stuff before value
+ \db at col@elt at w #4\db at col@elt at end@% value
+ \db at col@id at w ##2\db at col@id at end@% column id
+ ##3% stuff after this column
+ \db at row@id at w ##4\db at row@id at end@% row id
+ ##5% stuff after row
+ \q at nil{\def#1{##4}\def#2{##2}}%
+ \toks@=\csname dtldb@#3\endcsname
+ \expandafter\@dtl at getlocation\the\toks@% contents of data base
+ \db at col@elt at w #4\db at col@elt at end@% value
+ \db at col@id at w \@dtlnovalue\db at col@id at end@% undefined column id
+ \db at row@id at w \@dtlnovalue\db at row@id at end@% undefined row id
+ \q at nil
+ \ifx#1\dtlnovalue
+ \PackageError{datatool}{There is no element `#4' in database `#3'}{}%
+ \fi
+}
+\newcommand*{\DTLgetrowindex}[4]{%
+ \toks@{#4}%
+ \edef\dtl at dogetrowindex{\noexpand\@dtlgetrowindex{\noexpand#1}{#2}{\number#3}{\the\toks@}}%
+ \dtl at dogetrowindex
+ \ifx#1\dtlnovalue
+ \PackageError{datatool}{There is no element `#4' for column
+ \number#3\space in database `#2'}{}%
+ \fi
+}
+\newcommand*{\dtlgetrowindex}[4]{%
+ \toks@{#4}%
+ \edef\dtl at dogetrowindex{\noexpand\@dtlgetrowindex{\noexpand#1}{#2}{\number#3}{\the\toks@}}%
+ \dtl at dogetrowindex
+}
+\newcommand*{\xdtlgetrowindex}[4]{%
+ \protected at edef\dtl at dogetrowindex{\noexpand\@dtlgetrowindex{\noexpand#1}{#2}{\number#3}{#4}}%
+ \dtl at dogetrowindex
+}
+\newcommand*{\@dtlgetrowindex}[4]{%
+ \def\@dtl at getrowindex##1% stuff before value
+ \db at col@elt at w #4\db at col@elt at end@% value
+ \db at col@id at w #3\db at col@id at end@% column id
+ ##2% stuff after this column
+ \db at row@id at w ##3\db at row@id at end@% row id
+ ##4% stuff after row
+ \q at nil{\def#1{##3}}%
+ \toks@=\csname dtldb@#2\endcsname
+ \expandafter\@dtl at getrowindex\the\toks@% contents of data base
+ \db at col@elt at w #4\db at col@elt at end@% value
+ \db at col@id at w #3\db at col@id at end@% column id
+ \db at row@id at w \@dtlnovalue\db at row@id at end@% undefined row id
+ \q at nil
+}
+
+\long\def\@dtlforeachrow(#1,#2)\in#3\do#4{%
+ \edef\dtl at tmp{\expandafter\the\csname dtldb@#3\endcsname}%
+ \expandafter\@dtl at foreachrow\dtl at tmp
+ \db at row@elt at w%
+ \db at row@id at w \@nil\db at row@id at end@%
+ \db at row@id at w \@nil\db at row@id at end@%
+ \db at row@elt at end@%
+ \@@{#1}{#2}{#4}\q at nil
+}
+\long\def\@dtl at foreachrow\db at row@elt at w%
+\db at row@id at w #1\db at row@id at end@%
+#2\db at row@id at w #3\db at row@id at end@%
+\db at row@elt at end@#4\@@#5#6#7\q at nil{%
+ \gdef#5{#1}%
+ \gdef\@dtl at loopbody{#7}%
+ \global\advance\@dtl at foreach@level by 1\relax
+ \ifx#5\@nnil
+ \expandafter\global\expandafter
+ \let\csname @dtl at foreachnext\the\@dtl at foreach@level\endcsname
+ =\@dtl at foreachnoop
+ \else
+ \gdef#6{#2}%
+ \expandafter\let
+ \csname @dtl at break@\the\@dtl at foreach@level\endcsname
+ \dtlbreak
+ \gdef\dtlbreak{\expandafter\global\expandafter
+ \let\csname @dtl at foreachnext\the\@dtl at foreach@level\endcsname
+ =\@dtl at foreachnoop}%
+ \expandafter\global\expandafter
+ \let\csname @dtl at foreachnext\the\@dtl at foreach@level\endcsname
+ =\@dtl at foreachrow
+ \@dtl at loopbody
+ \expandafter\let\expandafter\dtlbreak
+ \csname @dtl at break@\the\@dtl at foreach@level\endcsname
+ \fi
+ \expandafter\let\expandafter\@dtl at foreachnext
+ \csname @dtl at foreachnext\the\@dtl at foreach@level\endcsname
+ \global\advance\@dtl at foreach@level by -1\relax
+ \@dtl at foreachnext#4\@@{#5}{#6}{#7}\q at nil
+}
+\long\def\@dtl at foreachnoop#1\@@#2\q at nil{}
+\long\def\dtlforeachkey(#1,#2,#3,#4)\in#5\do#6{%
+ \gdef\@dtl at loopbody{#6}%
+ \edef\@dtl at keys{\expandafter\the\csname dtlkeys@#5\endcsname}%
+ \expandafter\@dtl at foreachkey\@dtl at keys
+ \db at plist@elt at w%
+ \db at col@id at w -1\db at col@id at end@%
+ \db at key@id at w \db at key@id at end@%
+ \db at type@id at w \db at type@id at end@%
+ \db at header@id at w \db at header@id at end@%
+ \db at col@id at w -1\db at col@id at end@%
+ \db at plist@elt at end@%
+ \@@{\@dtl at updatefkcs{#1}{#2}{#3}{#4}}\q at nil
+}
+\newcommand*{\@dtl at updatefkcs}[8]{%
+ \gdef#1{#5}%
+ \gdef#2{#6}%
+ \gdef#3{#7}%
+ \gdef#4{#8}%
+}
+\long\def\@dtl at foreachkey\db at plist@elt at w%
+\db at col@id at w #1\db at col@id at end@%
+\db at key@id at w #2\db at key@id at end@%
+\db at type@id at w #3\db at type@id at end@%
+\db at header@id at w #4\db at header@id at end@%
+\db at col@id at w #5\db at col@id at end@%
+\db at plist@elt at end@#6\@@#7\q at nil{%
+ \ifnum#1=-1\relax
+ \let\@dtl at foreachnext\@dtl at foreachnoop
+ \else
+ #7{#2}{#1}{#3}{#4}%
+ \global\advance\@dtl at foreach@level by 1\relax
+ \expandafter\let
+ \csname @dtl at break@\the\@dtl at foreach@level\endcsname
+ \dtlbreak
+ \gdef\dtlbreak{\expandafter\global\expandafter
+ \let\csname @dtl at foreachnext\the\@dtl at foreach@level\endcsname
+ =\@dtl at foreachnoop}%
+ \expandafter\global\expandafter
+ \let\csname @dtl at foreachnext\the\@dtl at foreach@level\endcsname
+ =\@dtl at foreachkey
+ \@dtl at loopbody
+ \expandafter\let\expandafter\@dtl at foreachnext
+ \csname @dtl at foreachnext\the\@dtl at foreach@level\endcsname
+ \expandafter\let\expandafter\dtlbreak
+ \csname @dtl at break@\the\@dtl at foreach@level\endcsname
+ \global\advance\@dtl at foreach@level by -1\relax
+ \fi
+ \@dtl at foreachnext#6\@@{#7}\q at nil
+}
+\newcommand*{\dtlforcolumn}{\@ifstar\@sdtlforcolumn\@dtlforcolumn}
+\newcommand{\@dtlforcolumn}[4]{%
+ \DTLifdbexists{#2}%
+ {%
+ \@DTLifhaskey{#2}{#3}%
+ {%
+ \@sdtlforcolumn{#1}{#2}{#3}{#4}%
+ }%
+ {%
+ \PackageError{datatool}{Database `#2' doesn't contain
+ key `#3'}{}%
+ }%
+ }%
+ {%
+ \PackageError{datatool}{Database `#2' doesn't exist}{}%
+ }%
+}
+\newcommand{\@sdtlforcolumn}[4]{%
+ \toks@{#4}%
+ \edef\@dtl at doforcol{\noexpand\dtl at forcolumn{\noexpand#1}%
+ {\expandafter\the\csname dtldb@#2\endcsname}%
+ {\dtlcolumnindex{#2}{#3}}{\the\toks@}%
+ }%
+ \@dtl at doforcol%
+}
+\newcommand*{\dtlforcolumnidx}{%
+ \@ifstar\@sdtlforcolumnidx\@dtlforcolumnidx
+}
+\newcommand{\@dtlforcolumnidx}[4]{%
+ \DTLifdbexists{#2}%
+ {%
+ \expandafter\ifnum\csname dtlcols@#2\endcsname<#3\relax
+ \PackageError{datatool}{Column index \number#3\space out of
+ bounds for database `#2'}{Database `#2' only has
+ \expandafter\number\csname dtlcols@#2\endcsname\space
+ columns}%
+ \else
+ \ifnum#3<1\relax
+ \PackageError{datatool}{Column index \number#3\space out of
+ bounds for database `#2'}{Indices start from 1}%
+ \else
+ \@sdtlforcolumnidx{#1}{#2}{#3}{#4}%
+ \fi
+ \fi
+ }%
+ {%
+ \PackageError{datatool}{Database `#2' doesn't exist}{}%
+ }%
+}
+\newcommand{\@sdtlforcolumnidx}[4]{%
+ \toks@{#4}%
+ \edef\@dtl at doforcol{\noexpand\dtl at forcolumn{\noexpand#1}%
+ {\expandafter\the\csname dtldb@#2\endcsname}%
+ {\number#3}{\the\toks@}%
+ }%
+ \@dtl at doforcol
+}
+\newcommand{\dtl at forcolumn}[4]{%
+ \let\@dtl at oldbreak\dtlbreak
+ \def\dtlbreak{\let\@dtl at forcolnext=\@dtl at forcolnoop}%
+ \def\@dtl at forcolumn##1% before stuff
+ \db at col@id at w #3\db at col@id at end@% column index
+ \db at col@elt at w ##2\db at col@elt at end@% entry
+ \db at col@id at w #3\db at col@id at end@% column index
+ ##3% after stuff
+ \q at nil{%
+ \def#1{##2}% assign value to <cs>
+ \ifx#1\@nnil
+ \let\@dtl at forcolnext=\@dtl at forcolnoop
+ \else
+ #4%
+ \let\@dtl at forcolnext=\@dtl at forcolumn
+ \fi
+ \@dtl at forcolnext##3\q at nil
+ }%
+ \@dtl at forcolumn#2%
+ \db at col@id at w #3\db at col@id at end@%
+ \db at col@elt at w \@nil\db at col@elt at end@%
+ \db at col@id at w #3\db at col@id at end@\q at nil
+ \let\dtlbreak\@dtl at oldbreak
+}
+\def\@dtl at forcolnoop#1\q at nil{}
+
+\newcount\dtlforeachlevel
+\newcounter{DTLrowi}
+\newcounter{DTLrowii}
+\newcounter{DTLrowiii}
+\newcounter{DTLrow}
+\def\theHDTLrow{\arabic{DTLrow}}
+\def\theHDTLrowi{\theHDTLrow.\arabic{DTLrowi}}
+\def\theHDTLrowii{\theHDTLrowi.\arabic{DTLrowii}}
+\def\theHDTLrowiii{\theHDTLrowii.\arabic{DTLrowiii}}
+\newcount\dtl at rowi
+\newcount\dtl at rowii
+\newcount\dtl at rowiii
+\newtoks\@dtl at curi
+\newtoks\@dtl at previ
+\newtoks\@dtl at nexti
+\newtoks\@dtl at curii
+\newtoks\@dtl at previi
+\newtoks\@dtl at nextii
+\newtoks\@dtl at curiii
+\newtoks\@dtl at previii
+\newtoks\@dtl at nextiii
+\newcommand*{\DTLsavelastrowcount}[1]{%
+\ifnum\dtlforeachlevel>2\relax
+ \def#1{0}%
+\else
+ \ifnum\dtlforeachlevel<0\relax
+ \def#1{0}%
+ \else
+ \@dtl at tmpcount=\dtlforeachlevel
+ \advance\@dtl at tmpcount by 1\relax
+ \edef#1{\expandafter\number
+ \csname c at DTLrow\romannumeral\@dtl at tmpcount\endcsname}%
+ \fi
+\fi}
+\newenvironment{DTLenvforeach}[3][\boolean{true}]%
+{%
+ \def\@dtlenvforeach at args{[#1]{#2}{#3}}%
+ \long at collect@body\@do at dtlenvforeach
+}%
+{}
+\newcommand{\@do at dtlenvforeach}[1]{%
+ \expandafter\@DTLforeach\@dtlenvforeach at args{#1}%
+}
+\newenvironment{DTLenvforeach*}[3][\boolean{true}]%
+{%
+ \def\s at dtlenvforeach@args{[#1]{#2}{#3}}%
+ \long at collect@body\@do at sdtlenvforeach
+}%
+{}
+\newcommand{\@do at sdtlenvforeach}[1]{%
+ \expandafter\@sDTLforeach\s at dtlenvforeach@args{#1}%
+}
+\newcommand*{\DTLforeach}{\@ifstar\@sDTLforeach\@DTLforeach}
+\newcommand{\@DTLforeach}[4][\boolean{true}]{%
+ \DTLifdbexists{#2}%
+ {%
+ \refstepcounter{DTLrow}%
+ \global\c at DTLrow=\c at DTLrow\relax
+ \xdef\@dtl at dbname{#2}%
+ \global\advance\dtlforeachlevel by 1\relax
+ \ifnum\dtlforeachlevel>3\relax
+ \PackageError{datatool}{\string\DTLforeach\space nested too
+ deeply}{Only 3 levels are allowed}%
+ \else
+ \@DTLifdbempty{#2}%
+ {}%
+ {%
+ \expandafter\global
+ \csname c at DTLrow\romannumeral\dtlforeachlevel\endcsname
+ = 0\relax
+ \expandafter\global\expandafter\let%
+ \csname @dtl at iffirstrow\the\dtlforeachlevel\endcsname
+ \DTLiffirstrow
+ \gdef\DTLiffirstrow##1##2{%
+ \expandafter\ifnum
+ \csname c at DTLrow\romannumeral\dtlforeachlevel\endcsname
+ =1 %space intended
+ ##1%
+ \else
+ ##2%
+ \fi}%
+ \expandafter\global\expandafter\let%
+ \csname @dtl at iflastrow\the\dtlforeachlevel\endcsname
+ \DTLiflastrow
+ \gdef\DTLiflastrow##1##2{%
+ \expandafter\ifnum
+ \csname c at DTLrow\romannumeral\dtlforeachlevel\endcsname
+ =\csname dtlrows@#2\endcsname
+ ##1%
+ \else
+ ##2%
+ \fi}%
+ \expandafter\global\expandafter\let%
+ \csname @dtl at ifoddrow\the\dtlforeachlevel\endcsname
+ \DTLifoddrow
+ \gdef\DTLifoddrow##1##2{%
+ \expandafter\ifodd
+ \csname c at DTLrow\romannumeral\dtlforeachlevel\endcsname
+ ##1%
+ \else
+ ##2%
+ \fi}%
+ \expandafter\global\expandafter\let
+ \csname @dtl at dbname@\romannumeral\dtlforeachlevel\endcsname
+ =\@dtl at dbname
+ \expandafter\global\expandafter\let
+ \csname @dtl at ro@\romannumeral\dtlforeachlevel\endcsname
+ = 0\relax
+ \dtlgforint
+ \csname dtl at row\romannumeral\dtlforeachlevel\endcsname
+ =1\to\csname dtlrows@#2\endcsname\step1\do
+ {%
+ \@dtl at tmpcount=
+ \csname dtl at row\romannumeral\dtlforeachlevel\endcsname
+ \edef\dtl at dogetrow{\noexpand\dtlgetrow{#2}%
+ {\number\@dtl at tmpcount}}%
+ \dtl at dogetrow
+ \expandafter\global
+ \csname @dtl at cur\romannumeral\dtlforeachlevel\endcsname
+ = \dtlcurrentrow
+ \expandafter\global
+ \csname @dtl at prev\romannumeral\dtlforeachlevel\endcsname
+ = \dtlbeforerow
+ \expandafter\global
+ \csname @dtl at next\romannumeral\dtlforeachlevel\endcsname
+ = \dtlafterrow
+ \ifblank{#3}{}{\@dtl at assign{#3}{#2}}%
+ \ifthenelse{#1}%
+ {%
+ \refstepcounter{DTLrow\romannumeral\dtlforeachlevel}%
+ \expandafter\edef\expandafter\DTLcurrentindex%
+ \expandafter{%
+ \arabic{DTLrow\romannumeral\dtlforeachlevel}}%
+ #4%
+ \edef\@dtl at tmp{\expandafter\the
+ \csname @dtl at cur\romannumeral
+ \dtlforeachlevel\endcsname}%
+ \ifx\@dtl at tmp\@nnil
+ \expandafter\dtl at decrementrows\expandafter
+ {\csname @dtl at prev\romannumeral
+ \dtlforeachlevel\endcsname
+ }{\csname dtl at row\romannumeral
+ \dtlforeachlevel\endcsname}%
+ \expandafter\dtl at decrementrows\expandafter
+ {\csname @dtl at next\romannumeral
+ \dtlforeachlevel\endcsname
+ }{\csname dtl at row\romannumeral
+ \dtlforeachlevel\endcsname}%
+ \edef\@dtl at tmp{%
+ \expandafter\the
+ \csname @dtl at prev\romannumeral
+ \dtlforeachlevel\endcsname
+ \expandafter\the
+ \csname @dtl at next\romannumeral
+ \dtlforeachlevel\endcsname
+ }%
+ \expandafter\global\expandafter
+ \csname dtldb@#2\endcsname\expandafter{\@dtl at tmp}%
+ \expandafter\global\expandafter
+ \advance\csname dtlrows@#2\endcsname by -1\relax
+ \expandafter\global\expandafter
+ \advance\csname dtl at row\romannumeral
+ \dtlforeachlevel\endcsname by -1\relax
+ \else
+ \@dtl at before=\csname @dtl at prev\romannumeral
+ \dtlforeachlevel\endcsname
+ \@dtl at after=\csname @dtl at next\romannumeral
+ \dtlforeachlevel\endcsname
+ \@dtl at toks@gconcat at middle@cx{dtldb@#2}%
+ {\@dtl at before}%
+ {%
+ \noexpand\db at row@elt at w%
+ \noexpand\db at row@id at w \expandafter\number
+ \csname dtl at row\romannumeral
+ \dtlforeachlevel\endcsname
+ \noexpand\db at row@id at end@%
+ \expandafter\the
+ \csname @dtl at cur\romannumeral
+ \dtlforeachlevel\endcsname
+ \noexpand\db at row@id at w \expandafter\number
+ \csname dtl at row\romannumeral
+ \dtlforeachlevel\endcsname
+ \noexpand\db at row@id at end@%
+ \noexpand\db at row@elt at end@%
+ }%
+ {\@dtl at after}%
+ \fi
+ }%
+ {}%
+ }%
+ \expandafter\global\expandafter\let\expandafter\DTLiffirstrow
+ \csname @dtl at iffirstrow\the\dtlforeachlevel\endcsname
+ \expandafter\global\expandafter\let\expandafter\DTLiflastrow
+ \csname @dtl at iflastrow\the\dtlforeachlevel\endcsname
+ \expandafter\global\expandafter\let\expandafter\DTLifoddrow
+ \csname @dtl at ifoddrow\the\dtlforeachlevel\endcsname
+ }%
+ \fi
+ \global\advance\dtlforeachlevel by -1\relax
+ }%
+ {%
+ \PackageError{datatool}{Database `#2' doesn't exist}{}%
+ }%
+}
+\newcommand{\@sDTLforeach}[4][\boolean{true}]{%
+ \DTLifdbexists{#2}%
+ {%
+ \refstepcounter{DTLrow}%
+ \global\c at DTLrow=\c at DTLrow
+ \xdef\@dtl at dbname{#2}%
+ \global\advance\dtlforeachlevel by 1\relax
+ \ifnum\dtlforeachlevel>3\relax
+ \PackageError{datatool}{\string\DTLforeach\space nested too
+ deeply}{Only 3 levels are allowed}%
+ \else
+ \@DTLifdbempty{#2}%
+ {}%
+ {%
+ \expandafter\global
+ \csname c at DTLrow\romannumeral\dtlforeachlevel\endcsname
+ = 0\relax
+ \expandafter\global\expandafter\let%
+ \csname @dtl at iffirstrow\the\dtlforeachlevel\endcsname
+ \DTLiffirstrow
+ \gdef\DTLiffirstrow##1##2{%
+ \expandafter\ifnum
+ \csname c at DTLrow\romannumeral\dtlforeachlevel\endcsname
+ =1 % space intended
+ ##1%
+ \else
+ ##2%
+ \fi}%
+ \expandafter\global\expandafter\let%
+ \csname @dtl at iflastrow\the\dtlforeachlevel\endcsname
+ \DTLiflastrow
+ \gdef\DTLiflastrow##1##2{%
+ \expandafter\ifnum
+ \csname c at DTLrow\romannumeral\dtlforeachlevel\endcsname
+ =\csname dtlrows@#2\endcsname
+ ##1%
+ \else
+ ##2%
+ \fi}%
+ \expandafter\global\expandafter\let%
+ \csname @dtl at ifoddrow\the\dtlforeachlevel\endcsname
+ \DTLifoddrow
+ \gdef\DTLifoddrow##1##2{%
+ \expandafter\ifodd
+ \csname c at DTLrow\romannumeral\dtlforeachlevel\endcsname
+ ##1%
+ \else
+ ##2%
+ \fi}%
+ \expandafter\gdef\csname @dtl at dbname@\romannumeral
+ \dtlforeachlevel\endcsname{#2}%
+ \expandafter\global\expandafter\let
+ \csname @dtl at ro@\romannumeral\dtlforeachlevel\endcsname
+ = 1\relax
+ \@dtlforeachrow(\dtl at thisidx,\dtl at thisrow)\in{#2}\do%
+ {%
+ \csname dtl at row\romannumeral\dtlforeachlevel\endcsname
+ = \dtl at thisidx\relax
+ \expandafter\global
+ \csname @dtl at cur\romannumeral\dtlforeachlevel\endcsname
+ = \expandafter{\dtl at thisrow}%
+ \ifblank{#3}{}
+ {%
+ \dtlcurrentrow=\expandafter{\dtl at thisrow}%
+ \@dtl at assign{#3}{#2}%
+ }%
+ \ifthenelse{#1}%
+ {%
+ \refstepcounter{DTLrow\romannumeral\dtlforeachlevel}%
+ \expandafter\edef\expandafter\DTLcurrentindex%
+ \expandafter{%
+ \arabic{DTLrow\romannumeral\dtlforeachlevel}}%
+ #4%
+ }%
+ {}%
+ }%
+ \expandafter\global\expandafter\let\expandafter\DTLiffirstrow
+ \csname @dtl at iffirstrow\the\dtlforeachlevel\endcsname
+ \expandafter\global\expandafter\let\expandafter\DTLiflastrow
+ \csname @dtl at iflastrow\the\dtlforeachlevel\endcsname
+ \expandafter\global\expandafter\let\expandafter\DTLifoddrow
+ \csname @dtl at ifoddrow\the\dtlforeachlevel\endcsname
+ }%
+ \fi
+ \global\advance\dtlforeachlevel by -1\relax
+ }%
+ {%
+ \PackageError{datatool}{Database `#2' doesn't exist}{}%
+ }%
+}
+\newcommand*{\@dtlifreadonly}[2]{%
+ \expandafter\ifx
+ \csname @dtl at ro@\romannumeral\dtlforeachlevel\endcsname1\relax
+ #1%
+ \else
+ #2%
+ \fi
+}
+\newcommand*{\DTLappendtorow}[2]{%
+ \ifnum\dtlforeachlevel=0\relax
+ \PackageError{datatool}{\string\DTLappendrow\space can only be
+ used inside \string\DTLforeach}{}%
+ \else
+ \expandafter\let\expandafter\@dtl at thisdb
+ \csname @dtl at dbname@\romannumeral\dtlforeachlevel\endcsname
+ \@dtlifreadonly
+ {%
+ \PackageError{datatool}{\string\DTLappendtorow\space can't
+ be used inside \DTLforeach*}{The starred version of
+ \string\DTLforeach\space is read only}%
+ }%
+ {%
+ \dtlrownum=
+ \csname dtl at row\romannumeral\dtlforeachlevel\endcsname\relax
+ \@dtl at updatekeys{\@dtl at thisdb}{#1}{#2}%
+ \expandafter\dtlcolumnnum\expandafter
+ =\dtlcolumnindex{\@dtl at thisdb}{#1}\relax
+ \dtlcurrentrow =
+ \csname @dtl at cur\romannumeral\dtlforeachlevel\endcsname
+ \edef\dtl at dogetentry{\noexpand\dtlgetentryfromcurrentrow
+ {\noexpand\dtl at entry}{\number\dtlcolumnnum}%
+ }%
+ \dtl at dogetentry
+ \ifx\dtl at entry\dtlnovalue
+ \protected at edef\@dtl at tmp{#2}%
+ \expandafter\@dtl at toks\expandafter{\@dtl at tmp}%
+ \@dtl at toks@gput at right@cx{@dtl at cur\romannumeral\dtlforeachlevel}%
+ {%
+ \noexpand\db at col@id at w \number\dtlcolumnnum
+ \noexpand\db at col@id at end@
+ \noexpand\db at col@elt at w \the\@dtl at toks
+ \noexpand\db at col@elt at end@
+ \noexpand\db at col@id at w \number\dtlcolumnnum
+ \noexpand\db at col@id at end@
+ }%
+ \dtl at message{Appended #1\space -> #2\space to database
+ `\@dtl at thisdb'}%
+ \else
+ \PackageError{datatool}{Can't append entry to row:
+ there is already an entry for key `#1' in this row}{}%
+ \fi
+ }%
+ \fi
+}
+\newcommand*{\DTLremoveentryfromrow}[1]{%
+ \ifnum\dtlforeachlevel=0\relax
+ \PackageError{datatool}{\string\DTLremoventryfromrow\space
+ can only be used inside \string\DTLforeach}{}%
+ \else
+ \expandafter\let\expandafter\@dtl at thisdb
+ \csname @dtl at dbname@\romannumeral\dtlforeachlevel\endcsname
+ \@dtlifreadonly
+ {%
+ \PackageError{datatool}{\string\DTLremoveentryfromrow\space
+ can't be used inside \string\DTLforeach*}{The starred
+ version of \string\DTLforeach\space is read only}%
+ }%
+ {%
+ \dtlrownum=
+ \csname dtl at row\romannumeral\dtlforeachlevel\endcsname\relax
+ \@DTLifhaskey{\@dtl at thisdb}{#1}%
+ {%
+ \@dtl at getcolumnindex{\thiscol}{\@dtl at thisdb}{#1}\relax
+ \dtlcolumnnum=\thiscol\relax
+ \dtlcurrentrow =
+ \csname @dtl at cur\romannumeral\dtlforeachlevel\endcsname
+ \edef\dtl at dogetentry{\noexpand\dtlgetentryfromcurrentrow
+ {\noexpand\dtl at entry}{\number\dtlcolumnnum}%
+ }%
+ \dtl at dogetentry
+ \ifx\dtl at entry\dtlnovalue
+ \PackageError{datatool}{Can't remove entry given by `#1'
+ from current row in database `\@dtl at thisdb': no such
+ entry}{The current row doesn't contain an entry for
+ key `#1'}%
+ \else
+ \edef\@dtl at dosplitrow{%
+ \noexpand\dtlsplitrow{\the\dtlcurrentrow}%
+ {\number\dtlcolumnnum}{\noexpand\dtl at pre}%
+ {\noexpand\dtl at post}%
+ }%
+ \@dtl at dosplitrow
+ \expandafter\@dtl at toks\expandafter{\dtl at pre}%
+ \expandafter\toks@\expandafter{\dtl at post}%
+ \edef\@dtl at tmp{\the\@dtl at toks \the\toks@}%
+ \dtlcurrentrow=\expandafter{\@dtl at tmp}%
+ \expandafter\global
+ \csname @dtl at cur\romannumeral\dtlforeachlevel\endcsname
+ = \dtlcurrentrow
+ \dtl at message{Removed entry given by #1\space from current
+ row of database `\@dtl at thisdb'}%
+ \fi
+ }%
+ {%
+ \PackageError{datatool}{Can't remove entry given by
+ `#1' - no such key exists}{}%
+ }%
+ }%
+ \fi
+}
+\newcommand*{\DTLreplaceentryforrow}[2]{%
+ \ifnum\dtlforeachlevel=0\relax
+ \PackageError{datatool}{\string\DTLreplaceentryforrow\space
+ can only be used inside \string\DTLforeach}{}%
+ \else
+ \expandafter\let\expandafter\@dtl at thisdb
+ \csname @dtl at dbname@\romannumeral\dtlforeachlevel\endcsname
+ \@dtlifreadonly
+ {%
+ \PackageError{datatool}{\string\DTLreplaceentryforrow\space
+ can't be used inside \string\DTLforeach*}{The starred version
+ of \string\DTLforeach\space is read only}%
+ }%
+ {%
+ \dtlrownum=
+ \csname dtl at row\romannumeral\dtlforeachlevel\endcsname\relax
+ \@DTLifhaskey{\@dtl at thisdb}{#1}%
+ {%
+ \@dtl at getcolumnindex{\thiscol}{\@dtl at thisdb}{#1}\relax
+ \dtlcolumnnum=\thiscol\relax
+ \dtlcurrentrow =
+ \csname @dtl at cur\romannumeral\dtlforeachlevel\endcsname
+ \edef\dtl at dogetentry{\noexpand\dtlgetentryfromcurrentrow
+ {\noexpand\dtl at entry}{\number\dtlcolumnnum}%
+ }%
+ \dtl at dogetentry
+ \ifx\dtl at entry\dtlnovalue
+ \PackageError{datatool}{Can't replace entry given by `#1'
+ from current row in database `\@dtl at thisdb': no such
+ entry}{The current row doesn't contain an entry for
+ key `#1'}%
+ \else
+ \edef\@dtl at dosplitrow{%
+ \noexpand\dtlsplitrow{\the\dtlcurrentrow}%
+ {\number\dtlcolumnnum}{\noexpand\dtl at pre}%
+ {\noexpand\dtl at post}%
+ }%
+ \@dtl at dosplitrow
+ \protected at edef\@dtl at tmp{#2}%
+ \expandafter\@dtl at toks\expandafter{\@dtl at tmp}% new value
+ \expandafter\@dtl at before\expandafter{\dtl at pre}%
+ \expandafter\@dtl at after\expandafter{\dtl at post}%
+ \@dtl at toks@gconcat at middle@cx
+ {@dtl at cur\romannumeral\dtlforeachlevel}%
+ {\@dtl at before}%
+ {%
+ \noexpand\db at col@id at w \number\dtlcolumnnum
+ \noexpand\db at col@id at end@%
+ \noexpand\db at col@elt at w \the\@dtl at toks
+ \noexpand\db at col@elt at end@%
+ \noexpand\db at col@id at w \number\dtlcolumnnum
+ \noexpand\db at col@id at end@%
+ }%
+ {\@dtl at after}%
+ \dtl at message{Updated #1\space -> #2\space in database
+ `\@dtl at thisdb'}%
+ \fi
+ }%
+ {%
+ \PackageError{datatool}{Can't replace key `#1' - no such
+ key in database `\@dtl at thisdb'}{}%
+ }%
+ }%
+ \fi
+}
+\newcommand*{\DTLremovecurrentrow}{%
+ \ifnum\dtlforeachlevel=0\relax
+ \PackageError{datatool}{\string\DTLremovecurrentrow\space can
+ only be used inside \string\DTLforeach}{}%
+ \else
+ \expandafter\let\expandafter\@dtl at thisdb
+ \csname @dtl at dbname@\romannumeral\dtlforeachlevel\endcsname
+ \@dtlifreadonly
+ {%
+ \PackageError{datatool}{\string\DTLreplaceentryforrow\space
+ can't be used inside \string\DTLforeach*}{The starred version
+ of \string\DTLforeach\space is read only}%
+ }%
+ {%
+ \expandafter\global
+ \csname @dtl at cur\romannumeral\dtlforeachlevel\endcsname
+ ={\@nil}%
+ }%
+ \fi
+}
+\newcommand{\DTLaddentryforrow}[5]{%
+ \DTLifdbexists{#1}%
+ {%
+ \def\@dtl at notdone{\PackageError{datatool}{Unable to add entry
+ given by key `#4': condition not met for any row in database
+ `#1'}{}}%
+ \DTLforeach[#3]{#1}{#2}%
+ {%
+ \DTLappendtorow{#4}{#5}%
+ \let\@dtl at notdone\relax
+ \dtlbreak
+ }%
+ \@dtl at notdone
+ }%
+ {%
+ \PackageError{datatool}{Unable to add entry given by key `#4':
+ database `#1' doesn't exist}{}%
+ }%
+}
+\newcommand*{\DTLforeachkeyinrow}[2]{%
+ \ifnum\dtlforeachlevel=0\relax
+ \PackageError{datatool}{\string\DTLforeachkeyinrow\space can only
+ be used inside \string\DTLforeach}{}%
+ \else
+ \expandafter\let\expandafter\@dtl at thisdb
+ \csname @dtl at dbname@\romannumeral\dtlforeachlevel\endcsname
+ \dtlforeachkey(\dtlkey,\dtlcol,\dtltype,\dtlheader)\in
+ \@dtl at thisdb\do{%
+ \dtlcurrentrow =
+ \csname @dtl at cur\romannumeral\dtlforeachlevel\endcsname
+ \edef\dtl at dogetentry{\noexpand\dtlgetentryfromcurrentrow
+ {\noexpand#1}{\dtlcol}}%
+ \dtl at dogetentry
+ \ifx#1\dtlnovalue
+ \ifnum0\dtltype=0\relax
+ \let#1=\@dtlstringnull
+ \else
+ \let#1=\@dtlnumbernull
+ \fi
+ \fi
+ \global\let#1#1%
+ \def\@dtl at loop@body{#2}%
+ \@dtl at loop@body
+ }%
+ \fi
+}
+\newcommand{\DTLiffirstrow}[2]{%
+ \PackageError{datatool}{\string\DTLiffirstrow\space can only
+ be used inside \string\DTLforeach}{}%
+}
+\newcommand{\DTLiflastrow}[2]{%
+ \PackageError{datatool}{\string\DTLiflastrow\space can only
+ be used inside \string\DTLforeach}{}%
+}
+\newcommand{\DTLifoddrow}[2]{%
+ \PackageError{datatool}{\string\DTLifoddrow\space can only
+ be used inside \string\DTLforeach}{}%
+}
+\newcommand*{\dtlbetweencols}{}
+\newcommand*{\dtlbeforecols}{}
+\newcommand*{\dtlaftercols}{}
+\newcommand*{\dtlstringalign}{l}
+\newcommand*{\dtlintalign}{r}
+\newcommand*{\dtlrealalign}{r}
+\newcommand*{\dtlcurrencyalign}{r}
+\newcommand*{\dtladdalign}[4]{%
+ \ifnum#3=1\relax
+ \protected at edef#1{\dtlbeforecols}%
+ \else
+ \protected at edef#1{#1\dtlbetweencols}%
+ \fi
+ \ifstrempty{#2}%
+ {%
+ \protected at edef#1{#1c}%
+ }%
+ {%
+ \ifcase#2\relax
+ \protected at edef#1{#1\dtlstringalign}%
+ \or
+ \protected at edef#1{#1\dtlintalign}%
+ \or
+ \protected at edef#1{#1\dtlrealalign}%
+ \or
+ \protected at edef#1{#1\dtlcurrencyalign}%
+ \else
+ \protected at edef#1{#1c}%
+ \PackageError{datatool}{Unknown data type `#2'}{}%
+ \fi
+ }%
+ \ifnum#3=#4\relax
+ \protected at edef#1{#1\dtlaftercols}%
+ \fi
+}
+\newcommand*{\dtlheaderformat}[1]{\null\hfil\textbf{#1}\hfil\null}
+\newcommand*{\dtlstringformat}[1]{#1}
+\newcommand*{\dtlintformat}[1]{#1}
+\newcommand*{\dtlrealformat}[1]{#1}
+\newcommand*{\dtlcurrencyformat}[1]{#1}
+\newcommand*{\dtldisplaystarttab}{}
+\newcommand*{\dtldisplayendtab}{}
+\newcommand*{\dtldisplayafterhead}{}
+\newcommand*{\dtldisplayvalign}{c}
+\newcommand*{\dtldisplaystartrow}{}
+\newcommand{\dtldisplaycr}{\tabularnewline}
+
+\newcommand*{\DTLdisplaydb}[2][]{%
+ \def\@dtl at doamp{\gdef\@dtl at doamp{&}}%
+ \def\@dtl at resetdoamp{\gdef\@dtl at doamp{\gdef\@dtl at doamp{&}}}%
+ \edef\@dtl at maxcols{\expandafter\number
+ \csname dtlcols@#2\endcsname}%
+ \DTLnumitemsinlist{#1}{\@dtl at tmp}%
+ \dtlsub{\@dtl at maxcols}{\@dtl at maxcols}{\@dtl at tmp}%
+ \dtlclip{\@dtl at maxcols}{\@dtl at maxcols}%
+ \def\@dtl at tabargs{}%
+ \dtlforeachkey(\@dtl at key,\@dtl at idx,\@dtl at type,\@dtl at head)%
+ \in{#2}\do
+ {%
+ \expandafter\DTLifinlist\expandafter{\@dtl at key}{#1}%
+ {}%
+ {%
+ \dtladdalign\@dtl at tabargs\@dtl at type\@dtl at idx\@dtl at maxcols
+ }%
+ }%
+ \edef\@dtl at dobegintab{\noexpand\begin{tabular}[\dtldisplayvalign]{\@dtl at tabargs}}%
+ \@dtl at dobegintab
+ \dtldisplaystarttab
+ \@dtl at resetdoamp
+ \dtlforeachkey(\@dtl at key,\@dtl at idx,\@dtl at type,\@dtl at head)%
+ \in{#2}\do
+ {%
+ \expandafter\DTLifinlist\expandafter{\@dtl at key}{#1}%
+ {}%
+ {%
+ \@dtl at doamp
+ \dtlheaderformat{\@dtl at head}%
+ }%
+ }%
+ \\%
+ \dtldisplayafterhead
+ \@dtl at resetdoamp
+ \@sDTLforeach{#2}{}{%
+ \DTLiffirstrow{}{\dtldisplaycr\dtldisplaystartrow}%
+ \@dtl at resetdoamp
+ \DTLforeachkeyinrow{\@dtl at val}%
+ {%
+ \expandafter\DTLifinlist\expandafter{\dtlkey}{#1}%
+ {}%
+ {%
+ \global\let\@dtl at val\@dtl at val
+ \@dtl at doamp
+ \@dtl at datatype=0\dtltype\relax
+ \ifcase\@dtl at datatype
+ \dtlstringformat\@dtl at val
+ \or
+ \dtlintformat\@dtl at val
+ \or
+ \dtlrealformat\@dtl at val
+ \or
+ \dtlcurrencyformat\@dtl at val
+ \else
+ \@dtl at val
+ \fi
+ }%
+ }%
+ }%
+ \dtldisplayendtab
+ \end{tabular}%
+}
+\define at key{displaylong}{caption}{\def\@dtl at cap{#1}}
+\define at key{displaylong}{contcaption}{\def\@dtl at contcap{#1}}
+\define at key{displaylong}{shortcaption}{\def\@dtl at shortcap{#1}}
+\define at key{displaylong}{label}{\def\@dtl at label{#1}}
+\define at key{displaylong}{foot}{\def\@dtl at foot{#1}}
+\define at key{displaylong}{lastfoot}{\def\@dtl at lastfoot{#1}}
+\define at key{displaylong}{omit}{\def\@dtl at omitlist{#1}}
+\newcommand*{\@dtl at resetdostartrow}{%
+ \gdef\@dtl at dostartrow{%
+ \gdef\@dtl at dostartrow{\dtldisplaycr\dtldisplaystartrow}}%
+}
+\newcommand*{\DTLdisplaylongdb}[2][]{%
+ \def\@dtl at cap{\@nil}%
+ \def\@dtl at contcap{\@nil}%
+ \def\@dtl at label{\@nil}%
+ \def\@dtl at shortcap{\@dtl at cap}%
+ \def\@dtl at foot{\@nil}%
+ \def\@dtl at lastfoot{\@nil}%
+ \def\@dtl at omitlist{}%
+ \setkeys{displaylong}{#1}%
+ \def\@dtl at doamp{\gdef\@dtl at doamp{&}}%
+ \def\@dtl at resetdoamp{\gdef\@dtl at doamp{\gdef\@dtl at doamp{&}}}%
+ \@dtl at resetdostartrow
+ \edef\@dtl at maxcols{\expandafter\number
+ \csname dtlcols@#2\endcsname}%
+ \DTLnumitemsinlist{\@dtl at omitlist}{\@dtl at tmp}%
+ \dtlsub{\@dtl at maxcols}{\@dtl at maxcols}{\@dtl at tmp}%
+ \dtlclip{\@dtl at maxcols}{\@dtl at maxcols}%
+ \def\@dtl at tabargs{}%
+ \dtlforeachkey(\@dtl at key,\@dtl at idx,\@dtl at type,\@dtl at head)%
+ \in{#2}\do
+ {%
+ \expandafter\DTLifinlist\expandafter{\@dtl at key}{\@dtl at omitlist}%
+ {}%
+ {%
+ \dtladdalign\@dtl at tabargs\@dtl at type\@dtl at idx\@dtl at maxcols
+ }%
+ }%
+ \edef\@dtl at dobegintab{\noexpand\begin{longtable}{\@dtl at tabargs}}%
+ \@dtl at dobegintab
+ \ifx\@dtl at foot\@nnil
+ \else
+ \@dtl at foot\endfoot
+ \fi
+ \ifx\@dtl at lastfoot\@nnil
+ \else
+ \@dtl at lastfoot\endlastfoot
+ \fi
+ \ifx\@dtl at cap\@nnil
+ \@dtl at resetdoamp
+ \dtldisplaystarttab
+ \dtlforeachkey(\@dtl at key,\@dtl at idx,\@dtl at type,\@dtl at head)%
+ \in{#2}\do
+ {%
+ \expandafter\DTLifinlist\expandafter{\@dtl at key}{\@dtl at omitlist}%
+ {}%
+ {%
+ \@dtl at doamp{\dtlheaderformat{\@dtl at head}}%
+ }%
+ }%
+ \@dtl at resetdoamp
+ \@dtl at resetdostartrow
+ \endhead\dtldisplayafterhead
+ \else
+ \caption[\@dtl at shortcap]{\@dtl at cap}%
+ \ifx\@dtl at label\@nnil
+ \else
+ \label{\@dtl at label}%
+ \fi
+ \dtldisplaycr
+ \dtldisplaystarttab
+ \@dtl at resetdoamp
+ \dtlforeachkey(\@dtl at key,\@dtl at idx,\@dtl at type,\@dtl at head)%
+ \in{#2}\do
+ {%
+ \expandafter\DTLifinlist\expandafter{\@dtl at key}{\@dtl at omitlist}%
+ {}%
+ {%
+ \@dtl at doamp{\dtlheaderformat{\@dtl at head}}%
+ }%
+ }%
+ \@dtl at resetdoamp
+ \dtldisplaycr\dtldisplayafterhead
+ \endfirsthead
+ \ifx\@dtl at contcap\@nnil
+ \caption{\@dtl at cap}%
+ \else
+ \caption{\@dtl at contcap}%
+ \fi
+ \dtldisplaycr\dtldisplaystarttab
+ \@dtl at resetdoamp
+ \dtlforeachkey(\@dtl at key,\@dtl at idx,\@dtl at type,\@dtl at head)%
+ \in{#2}\do
+ {%
+ \expandafter\DTLifinlist\expandafter{\@dtl at key}{\@dtl at omitlist}%
+ {}%
+ {%
+ \@dtl at doamp{\dtlheaderformat{\@dtl at head}}%
+ }%
+ }%
+ \@dtl at resetdoamp
+ \@dtl at resetdostartrow
+ \dtldisplaycr\dtldisplayafterhead
+ \endhead
+ \fi
+ \@sDTLforeach{#2}{}{%
+ \@dtl at dostartrow
+ \@dtl at resetdoamp
+ \DTLforeachkeyinrow{\@dtl at val}%
+ {%
+ \global\let\@dtl at val\@dtl at val
+ \expandafter\DTLifinlist\expandafter{\dtlkey}{\@dtl at omitlist}%
+ {}%
+ {%
+ \@dtl at doamp
+ \@dtl at datatype=0\dtltype\relax
+ \ifcase\@dtl at datatype
+ \dtlstringformat\@dtl at val
+ \or
+ \dtlintformat\@dtl at val
+ \or
+ \dtlrealformat\@dtl at val
+ \or
+ \dtlcurrencyformat\@dtl at val
+ \fi
+ }%
+ }%
+ }%
+ \dtldisplayendtab
+ \end{longtable}%
+}
+\newcommand*{\dtlswaprows}[3]{%
+ \ifnum#2=#3\relax
+ \else
+ \ifnum#2<#3\relax
+ \edef\@dtl at rowAidx{\number#2}%
+ \edef\@dtl at rowBidx{\number#3}%
+ \else
+ \edef\@dtl at rowAidx{\number#3}%
+ \edef\@dtl at rowBidx{\number#2}%
+ \fi
+ \edef\@dtl at dosplit{\noexpand\dtlgetrow{#1}{\@dtl at rowAidx}}%
+ \@dtl at dosplit
+ \expandafter\def\expandafter\@dtl at firstpart\expandafter
+ {\the\dtlbeforerow}%
+ \@dtl at toksA=\dtlcurrentrow
+ \edef\@dtl at dosplit{\noexpand\@dtlgetrow
+ {\the\dtlafterrow}{\@dtl at rowBidx}}%
+ \@dtl at dosplit
+ \expandafter\def\expandafter\@dtl at secondpart\expandafter
+ {\the\dtlbeforerow}%
+ \@dtl at toksB=\dtlcurrentrow
+ \expandafter\def\expandafter\@dtl at thirdpart\expandafter
+ {\the\dtlafterrow}%
+ \toks@=\expandafter{\@dtl at firstpart}%
+ \@dtl at toks=\expandafter{\@dtl at secondpart}%
+ \edef\@dtl at tmp{\the\toks@
+ \noexpand\db at row@elt at w%
+ \noexpand\db at row@id at w \@dtl at rowAidx\noexpand\db at row@id at end@%
+ \the\@dtl at toksB
+ \noexpand\db at row@id at w \@dtl at rowAidx\noexpand\db at row@id at end@%
+ \noexpand\db at row@elt at end@%
+ \the\@dtl at toks}%
+ \toks@=\expandafter{\@dtl at tmp}%
+ \@dtl at toks=\expandafter{\@dtl at thirdpart}%
+ \edef\@dtl at tmp{\the\toks@
+ \noexpand\db at row@elt at w%
+ \noexpand\db at row@id at w \@dtl at rowBidx\noexpand\db at row@id at end@%
+ \the\@dtl at toksA
+ \noexpand\db at row@id at w \@dtl at rowBidx\noexpand\db at row@id at end@%
+ \noexpand\db at row@elt at end@%
+ \the\@dtl at toks}%
+ \expandafter\global\csname dtldb@#1\endcsname=\expandafter
+ {\@dtl at tmp}%
+ \fi
+}
+\newcommand*{\dtl at decrementrows}[2]{%
+ \def\@dtl at newlist{}%
+ \edef\@dtl at min{\number#2}%
+ \expandafter\@dtl at decrementrows\the#1%
+ \db at row@elt at w%
+ \db at row@id at w \@nil\db at row@id at end@%
+ \db at row@id at w \@nil\db at row@id at end@%
+ \db at row@elt at end@%
+ \@nil
+ #1=\expandafter{\@dtl at newlist}%
+}
+\def\@dtl at decrementrows\db at row@elt at w\db at row@id at w #1\db at row@id at end@%
+#2\db at row@id at w #3\db at row@id at end@\db at row@elt at end@#4\@nil{%
+ \def\@dtl at thisrow{#1}%
+ \ifx\@dtl at thisrow\@nnil
+ \let\@dtl at donextdec=\@dtl at gobbletonil
+ \else
+ \ifnum\@dtl at thisrow>\@dtl at min
+ \@dtl at tmpcount=\@dtl at thisrow\relax
+ \advance\@dtl at tmpcount by -1\relax
+ \toks@{#2}%
+ \@dtl at toks=\expandafter{\@dtl at newlist}%
+ \edef\@dtl at newlist{\the\@dtl at toks
+ \noexpand\db at row@elt at w% row header
+ \noexpand\db at row@id at w \number\@dtl at tmpcount
+ \noexpand\db at row@id at end@% row id
+ \the\toks@ % row contents
+ \noexpand\db at row@id at w \number\@dtl at tmpcount
+ \noexpand\db at row@id at end@% row id
+ \noexpand\db at row@elt at end@% row end
+ }%
+ \else
+ \toks@{#2}%
+ \@dtl at toks=\expandafter{\@dtl at newlist}%
+ \edef\@dtl at newlist{\the\@dtl at toks
+ \noexpand\db at row@elt at w% row header
+ \noexpand\db at row@id at w #1%
+ \noexpand\db at row@id at end@% row id
+ \the\toks@ % row contents
+ \noexpand\db at row@id at w #3%
+ \noexpand\db at row@id at end@% row id
+ \noexpand\db at row@elt at end@% row end
+ }%
+ \fi
+ \let\@dtl at donextdec=\@dtl at decrementrows
+ \fi
+ \@dtl at donextdec#4\@nil
+}
+\newcommand*{\DTLremoverow}[2]{%
+ \DTLifdbexists{#1}%
+ {%
+ \ifnum#2>0\relax
+ \expandafter\ifnum\csname dtlrows@#1\endcsname<#2\relax
+ \expandafter\ifnum\csname dtlrows@#1\endcsname=1\relax
+ \PackageError{datatool}{Can't remove row `\number#2' from
+ database `#1': no such row}{Database `#1' only has
+ 1 row}%
+ \else
+ \PackageError{datatool}{Can't remove row `\number#2' from
+ database `#1': no such row}{Database `#1' only has
+ \expandafter\number\csname dtlrows@#1\endcsname\space
+ rows}%
+ \fi
+ \else
+ \@DTLremoverow{#1}{#2}%
+ \fi
+ \else
+ \PackageError{datatool}{Can't remove row \number#2: index
+ out of bounds}{Row indices start at 1}%
+ \fi
+ }%
+ {%
+ \PackageError{datatool}{Can't remove row: database `#1' doesn't
+ exist}{}%
+ }%
+}
+\newcommand*{\@DTLremoverow}[2]{%
+ \edef\dtl at dogetrow{\noexpand\dtlgetrow{#1}{\number#2}}%
+ \dtl at dogetrow
+ \expandafter\dtl at decrementrows\expandafter
+ {\dtlbeforerow}{#2}%
+ \expandafter\dtl at decrementrows\expandafter
+ {\dtlafterrow}{#2}%
+ \edef\dtl at tmp{\the\dtlbeforerow \the\dtlafterrow}%
+ \expandafter\global\csname dtldb@#1\endcsname
+ =\expandafter{\dtl at tmp}%
+ \expandafter\global\expandafter\advance
+ \csname dtlrows@#1\endcsname by -1\relax
+}
+\newcommand*{\DTLsumforkeys}[1][\boolean{true}\and
+ \DTLisnumerical{\DTLthisval}]{%
+ \def\@dtl at cond{#1}%
+ \@dtlsumforkeys
+}
+\newcommand*{\@dtlsumforkeys}[4][]{%
+ \def#4{0}%
+ \@for\@dtl at db@name:=#2\do{%
+ \@sDTLforeach{\@dtl at db@name}%
+ {#1}% assignment list
+ {%
+ \@for\@dtl at key:=#3\do{%
+ \@sdtl at getcolumnindex{\@dtl at col}{\@dtl at db@name}{\@dtl at key}%
+ \dtlcurrentrow=\expandafter{\dtl at thisrow}%
+ \dtlgetentryfromrow{\DTLthisval}{\@dtl at col}{\dtlcurrentrow}%
+ \expandafter\ifthenelse\expandafter{\@dtl at cond}%
+ {\DTLadd{#4}{#4}{\DTLthisval}}{}%
+ }%
+ }%
+ }%
+}
+\newcommand*{\DTLsumcolumn}[3]{%
+ \def#3{0}%
+ \DTLifdbexists{#1}%
+ {%
+ \@sDTLifhaskey{#1}{#2}%
+ {%
+ \@sdtlforcolumn{\DTLthisval}{#1}{#2}%
+ {%
+ \DTLadd{#3}{#3}{\DTLthisval}%
+ }%
+ }%
+ {%
+ \PackageError{datatool}{Key `#2' doesn't
+ exist in database `#1'}{}%
+ }%
+ }%
+ {%
+ \PackageError{datatool}{Data base `#1' doesn't
+ exist}{}%
+ }%
+}
+\newcommand*{\DTLmeanforkeys}[1][\boolean{true}\and
+ \DTLisnumerical{\DTLthisval}]{%
+ \def\@dtl at cond{#1}%
+ \@dtlmeanforkeys
+}
+\newcount\@dtl at elements
+\newcommand*{\@dtlmeanforkeys}[4][]{%
+ \def#4{0}%
+ \@dtl at elements=0\relax
+ \@for\@dtl at db@name:=#2\do{%
+ \@sDTLforeach{\@dtl at db@name}%
+ {#1}% assignment list
+ {%
+ \@for\@dtl at key:=#3\do{%
+ \@sdtl at getcolumnindex{\@dtl at col}{\@dtl at db@name}{\@dtl at key}%
+ \dtlcurrentrow=\expandafter{\dtl at thisrow}%
+ \dtlgetentryfromrow{\DTLthisval}{\@dtl at col}{\dtlcurrentrow}%
+ \expandafter\ifthenelse\expandafter{\@dtl at cond}%
+ {%
+ \DTLadd{#4}{#4}{\DTLthisval}%
+ \advance\@dtl at elements by 1\relax
+ }{}%
+ }%
+ }%
+ }%
+ \ifnum\@dtl at elements=0\relax
+ \PackageError{datatool}{Unable to evaluate mean: no data}{}%
+ \else
+ \edef\@dtl at n{\number\@dtl at elements}%
+ \DTLdiv{#4}{#4}{\@dtl at n}%
+ \fi
+}
+\newcommand*{\DTLmeanforcolumn}[3]{%
+ \def#3{0}%
+ \@dtl at elements=0\relax
+ \DTLifdbexists{#1}%
+ {%
+ \@sDTLifhaskey{#1}{#2}%
+ {%
+ \@sdtlforcolumn{\DTLthisval}{#1}{#2}%
+ {%
+ \DTLadd{#3}{#3}{\DTLthisval}%
+ \advance\@dtl at elements by 1\relax
+ }%
+ \ifnum\@dtl at elements=0\relax
+ \PackageError{datatool}{Can't compute mean for
+ column `#2' in database `#1': no data}{}%
+ \else
+ \edef\@dtl at n{\number\@dtl at elements}%
+ \DTLdiv{#3}{#3}{\@dtl at n}%
+ \fi
+ }%
+ {%
+ \PackageError{datatool}{Key `#2' doesn't
+ exist in database `#1'}{}%
+ }%
+ }%
+ {%
+ \PackageError{datatool}{Data base `#1' doesn't
+ exist}{}%
+ }%
+}
+\newcommand*{\DTLvarianceforkeys}[1][\boolean{true}\and
+ \DTLisnumerical{\DTLthisval}]{%
+ \def\@dtl at cond{#1}%
+ \@dtlvarianceforkeys
+}
+\newcommand*{\@dtlvarianceforkeys}[4][]{%
+ \@dtlmeanforkeys[#1]{#2}{#3}{\dtl at mean}%
+ \def#4{0}%
+ \@dtl at elements=0\relax
+ \@for\@dtl at db@name:=#2\do{%
+ \@sDTLforeach{\@dtl at db@name}%
+ {#1}% assignment list
+ {%
+ \@for\@dtl at key:=#3\do{%
+ \@sdtl at getcolumnindex{\@dtl at col}{\@dtl at db@name}{\@dtl at key}%
+ \dtlcurrentrow=\expandafter{\dtl at thisrow}%
+ \dtlgetentryfromrow{\DTLthisval}{\@dtl at col}{\dtlcurrentrow}%
+ \expandafter\ifthenelse\expandafter{\@dtl at cond}%
+ {%
+ \DTLsub{\dtl at diff}{\DTLthisval}{\dtl at mean}%
+ \DTLmul{\dtl at diff}{\dtl at diff}{\dtl at diff}%
+ \DTLadd{#4}{#4}{\dtl at diff}%
+ \advance\@dtl at elements by 1\relax
+ }{}%
+ }%
+ }%
+ }%
+ \ifnum\@dtl at elements=0\relax
+ \PackageError{datatool}{Unable to evaluate variance: no data}{}%
+ \else
+ \edef\@dtl at n{\number\@dtl at elements}%
+ \DTLdiv{#4}{#4}{\@dtl at n}%
+ \fi
+}
+\newcommand*{\DTLvarianceforcolumn}[3]{%
+ \DTLmeanforcolumn{#1}{#2}{\dtl at mean}%
+ \def#3{0}%
+ \@dtl at elements=0\relax
+ \DTLifdbexists{#1}%
+ {%
+ \@sDTLifhaskey{#1}{#2}%
+ {%
+ \@sdtlforcolumn{\DTLthisval}{#1}{#2}%
+ {%
+ \DTLsub{\dtl at diff}{\DTLthisval}{\dtl at mean}%
+ \DTLmul{\dtl at diff}{\dtl at diff}{\dtl at diff}%
+ \DTLadd{#3}{#3}{\dtl at diff}%
+ \advance\@dtl at elements by 1\relax
+ }%
+ \ifnum\@dtl at elements=0\relax
+ \PackageError{datatool}{Can't compute variance for
+ column `#2' in database `#1': no data}{}%
+ \else
+ \edef\@dtl at n{\number\@dtl at elements}%
+ \DTLdiv{#3}{#3}{\@dtl at n}%
+ \fi
+ }%
+ {%
+ \PackageError{datatool}{Key `#2' doesn't
+ exist in database `#1'}{}%
+ }%
+ }%
+ {%
+ \PackageError{datatool}{Data base `#1' doesn't
+ exist}{}%
+ }%
+}
+\newcommand*{\DTLsdforkeys}[1][\boolean{true}\and
+\DTLisnumerical{\DTLthisval}]{%
+ \def\@dtl at cond{#1}%
+ \@dtlsdforkeys
+}
+\newcommand*{\@dtlsdforkeys}[4][]{%
+ \@dtlvarianceforkeys[#1]{#2}{#3}{#4}%
+ \DTLsqrt{#4}{#4}%
+}
+\newcommand*{\DTLsdforcolumn}[3]{%
+ \DTLvarianceforcolumn{#1}{#2}{#3}%
+ \DTLsqrt{#3}{#3}%
+}
+\newcommand*{\DTLminforkeys}[1][\boolean{true}\and
+ \DTLisnumerical{\DTLthisval}]{%
+ \def\@dtl at cond{#1}%
+ \@dtlminforkeys
+}
+\newcommand*{\@dtlminforkeys}[4][]{%
+ \def#4{}%
+ \@for\@dtl at db@name:=#2\do{%
+ \@sDTLforeach{\@dtl at db@name}%
+ {#1}% assignment list
+ {%
+ \@for\@dtl at key:=#3\do{%
+ \@sdtl at getcolumnindex{\@dtl at col}{\@dtl at db@name}{\@dtl at key}%
+ \dtlcurrentrow=\expandafter{\dtl at thisrow}%
+ \dtlgetentryfromrow{\DTLthisval}{\@dtl at col}{\dtlcurrentrow}%
+ \expandafter\ifthenelse\expandafter{\@dtl at cond}%
+ {%
+ \ifdefempty{#4}%
+ {%
+ \let#4\DTLthisval
+ }%
+ {%
+ \DTLmin{#4}{#4}{\DTLthisval}%
+ }%
+ }{}%
+ }%
+ }%
+ }%
+}
+\newcommand*{\DTLminforcolumn}[3]{%
+ \def#3{}%
+ \DTLifdbexists{#1}%
+ {%
+ \@sDTLifhaskey{#1}{#2}%
+ {%
+ \@sdtlforcolumn{\DTLthisval}{#1}{#2}%
+ {%
+ \ifdefempty{#3}%
+ {%
+ \let#3\DTLthisval
+ }%
+ {%
+ \DTLmin{#3}{#3}{\DTLthisval}%
+ }%
+ }%
+ }%
+ {%
+ \PackageError{datatool}{Key `#2' doesn't
+ exist in database `#1'}{}%
+ }%
+ }%
+ {%
+ \PackageError{datatool}{Data base `#1' doesn't
+ exist}{}%
+ }%
+}
+\newcommand*{\DTLmaxforkeys}[1][\boolean{true}\and
+ \DTLisnumerical{\DTLthisval}]{%
+ \def\@dtl at cond{#1}%
+ \@dtlmaxforkeys
+}
+\newcommand*{\@dtlmaxforkeys}[4][]{%
+ \def#4{}%
+ \@for\@dtl at db@name:=#2\do{%
+ \@sDTLforeach{\@dtl at db@name}%
+ {#1}% assignment list
+ {%
+ \@for\@dtl at key:=#3\do{%
+ \@sdtl at getcolumnindex{\@dtl at col}{\@dtl at db@name}{\@dtl at key}%
+ \dtlcurrentrow=\expandafter{\dtl at thisrow}%
+ \dtlgetentryfromrow{\DTLthisval}{\@dtl at col}{\dtlcurrentrow}%
+ \expandafter\ifthenelse\expandafter{\@dtl at cond}%
+ {%
+ \ifdefempty{#4}%
+ {%
+ \let#4\DTLthisval
+ }%
+ {%
+ \DTLmax{#4}{#4}{\DTLthisval}%
+ }%
+ }{}%
+ }%
+ }%
+ }%
+}
+\newcommand*{\DTLmaxforcolumn}[3]{%
+ \def#3{}%
+ \DTLifdbexists{#1}%
+ {%
+ \@sDTLifhaskey{#1}{#2}%
+ {%
+ \@sdtlforcolumn{\DTLthisval}{#1}{#2}%
+ {%
+ \ifdefempty{#3}%
+ {%
+ \let#3\DTLthisval
+ }%
+ {%
+ \DTLmax{#3}{#3}{\DTLthisval}%
+ }%
+ }%
+ }%
+ {%
+ \PackageError{datatool}{Key `#2' doesn't
+ exist in database `#1'}{}%
+ }%
+ }%
+ {%
+ \PackageError{datatool}{Data base `#1' doesn't
+ exist}{}%
+ }%
+}
+\newcommand*{\DTLcomputebounds}[8][\boolean{true}]{%
+\let#5=\relax
+\let#6=\relax
+\let#7=\relax
+\let#8=\relax
+\@for\dtl at thisdb:=#2\do{%
+ \@sDTLforeach[#1]{\dtl at thisdb}{\DTLthisX=#3,\DTLthisY=#4}{%
+ \expandafter\DTLconverttodecimal\expandafter{\DTLthisX}{\dtl at decx}%
+ \expandafter\DTLconverttodecimal\expandafter{\DTLthisY}{\dtl at decy}%
+ \ifx#5\relax
+ \let#5=\dtl at decx
+ \let#6=\dtl at decy
+ \let#7=\dtl at decx
+ \let#8=\dtl at decy
+ \else
+ \dtlmin{#5}{#5}{\dtl at decx}%
+ \dtlmin{#6}{#6}{\dtl at decy}%
+ \dtlmax{#7}{#7}{\dtl at decx}%
+ \dtlmax{#8}{#8}{\dtl at decy}%
+ \fi
+ }%
+}%
+}
+\newcommand*{\DTLgetvalueforkey}[5]{%
+ \DTLgetrowforkey{\@dtl at row}{#3}{#4}{#5}%
+ \@sdtl at getcolumnindex{\@dtl at col}{#3}{#2}%
+ {%
+ \dtlcurrentrow=\expandafter{\@dtl at row}%
+ \edef\@dtl at dogetval{\noexpand\dtlgetentryfromcurrentrow
+ {\noexpand\@dtl at val}{\@dtl at col}}%
+ \@dtl at dogetval
+ \global\let#1=\@dtl at val
+ }%
+}
+\newcommand*{\DTLgetrowforkey}[4]{%
+ \global\let#1=\@empty
+ \@sDTLforeach{#2}{\dtl at refvalue=#3}{%
+ \DTLifnull{\dtl at refvalue}%
+ {}%
+ {%
+ \ifthenelse{\equal{\dtl at refvalue}{#4}}%
+ {%
+ \xdef#1{\the\dtlcurrentrow}%
+ \dtlbreak
+ }%
+ {}%
+ }%
+ }%
+}
+\newtoks\@dtl at list
+\newcommand*{\DTLsort}{\@ifstar\@sDTLsort\@DTLsort}
+\newcommand{\@DTLsort}[3][]{%
+ \dtlsort[#1]{#2}{#3}{\dtlcompare}%
+}
+\newcommand*{\@sDTLsort}[3][]{%
+ \dtlsort[#1]{#2}{#3}{\dtlicompare}%
+}
+\newcommand{\dtlsort}[4][]{%
+ \DTLifdbexists{#3}%
+ {%
+ \ifnum\DTLrowcount{#3}>100\relax
+ \typeout{Sorting `#3' - this may take a while.}%
+ \fi
+ \edef\@dtl at replacementkeys{#1}%
+ \def\@dtl at sortorder{}%
+ \@for\@dtl at level:=#2\do
+ {%
+ \expandafter\@dtl at getsortdirection\@dtl at level=\relax
+ \DTLifhaskey{#3}{\@dtl at key}%
+ {%
+ \ifdefempty\@dtl at sortorder
+ {\let\@dtl at sortorder=\@dtl at level}%
+ {\eappto\@dtl at sortorder{,\@dtl at level}}%
+ }%
+ {%
+ \PackageError{datatool}%
+ {%
+ Can't sort on `\@dtl at level'.
+ No such key `\@dtl at key' in database `#3'%
+ }{}%
+ }%
+ }%
+ \ifdefempty\@dtl at sortorder
+ {%
+ \PackageWarning{datatool}{No keys provided to sort database `#3'}%
+ }%
+ {%
+ \let\@dtl at comparecs=#4%
+ \dtl at sortdata{#3}%
+ }%
+ }%
+ {%
+ \PackageError{datatool}{Database `#3' doesn't exist}{}%
+ }%
+}
+\newtoks\@dtl at rowa
+\newtoks\@dtl at rowb
+\newcommand*{\dtl at sortdata}[1]{%
+ \def\@dtl at sortedlist{}%
+ \edef\@dtl at dbname{#1}%
+ \@dtlforeachrow(\@dtl at rowAnum,\@dtl at rowAcontents)\in\@dtl at dbname\do{%
+ \@dtl at rowa=\expandafter{\@dtl at rowAcontents}%
+ \def\@dtl at newlist{}%
+ \@dtl at insertdonefalse
+ \dtlrownum=0\relax
+ \expandafter\@dtl at foreachrow\@dtl at sortedlist
+ \db at row@elt at w%
+ \db at row@id at w \@nil\db at row@id at end@%
+ \db at row@id at w \@nil\db at row@id at end@%
+ \db at row@elt at end@%
+ \@@{\@dtl at rowBnum}{\@dtl at rowBcontents}%
+ {%
+ \@dtl at rowb=\expandafter{\@dtl at rowBcontents}%
+ \dtlrownum=\@dtl at rowBnum
+ \if at dtl@insertdone
+ \advance\dtlrownum by 1\relax
+ \else
+ \@dtl at sortcriteria{\@dtl at rowa}{\@dtl at rowb}%
+ \ifnum\dtl at sortresult<0\relax
+ \toks@=\expandafter{\@dtl at newlist}%
+ \edef\@dtl at newlist{%
+ \the\toks@
+ \noexpand\db at row@elt at w%
+ \noexpand\db at row@id at w \number\dtlrownum
+ \noexpand\db at row@id at end@%
+ \the\@dtl at rowa
+ \noexpand\db at row@id at w \number\dtlrownum
+ \noexpand\db at row@id at end@%
+ \noexpand\db at row@elt at end@%
+ }%
+ \advance\dtlrownum by 1\relax
+ \@dtl at insertdonetrue
+ \fi
+ \fi
+ \toks@=\expandafter{\@dtl at newlist}%
+ \edef\@dtl at newlist{\the\toks@
+ \noexpand\db at row@elt at w%
+ \noexpand\db at row@id at w \number\dtlrownum
+ \noexpand\db at row@id at end@%
+ \the\@dtl at rowb
+ \noexpand\db at row@id at w \number\dtlrownum
+ \noexpand\db at row@id at end@%
+ \noexpand\db at row@elt at end@%
+ }%
+ }\q at nil
+ \if at dtl@insertdone
+ \else
+ \advance\dtlrownum by 1\relax
+ \toks@=\expandafter{\@dtl at newlist}%
+ \edef\@dtl at newlist{\the\toks@
+ \noexpand\db at row@elt at w%
+ \noexpand\db at row@id at w \number\dtlrownum
+ \noexpand\db at row@id at end@%
+ \the\@dtl at rowa
+ \noexpand\db at row@id at w \number\dtlrownum
+ \noexpand\db at row@id at end@%
+ \noexpand\db at row@elt at end@%
+ }%
+ \fi
+ \let\@dtl at sortedlist=\@dtl at newlist
+ }%
+ \expandafter\global\csname dtldb@#1\endcsname=\expandafter
+ {\@dtl at sortedlist}%
+}
+\newcommand{\@dtl at sortcriteria}[2]{%
+ \@for\@dtl at level:=\@dtl at sortorder\do
+ {%
+ \expandafter\@dtl at getsortdirection\@dtl at level=\relax
+ \let\@dtl at keya=\@dtl at key
+ \let\@dtl at keyb=\@dtl at key
+ \@sdtl at getcolumnindex{\@dtl at col}{\@dtl at dbname}{\@dtl at key}%
+ \dtlgetentryfromrow{\@dtl at a}{\@dtl at col}{#1}%
+ \dtlgetentryfromrow{\@dtl at b}{\@dtl at col}{#2}%
+ \ifx\@dtl at a\dtlnovalue
+ \@dtl at setnull{\@dtl at a}{\@dtl at key}%
+ \fi
+ \ifx\@dtl at b\dtlnovalue
+ \@dtl at setnull{\@dtl at b}{\@dtl at key}%
+ \fi
+ \DTLifnull{\@dtl at a}%
+ {%
+ \@for\@dtl at keya:=\@dtl at replacementkeys\do{%
+ \@sdtl at getcolumnindex{\@dtl at col}{\@dtl at dbname}{\@dtl at keya}%
+ \dtlgetentryfromrow{\@dtl at a}{\@dtl at col}{#1}%
+ \ifx\@dtl at a\dtlnovalue
+ \@dtl at setnull{\@dtl at a}{\@dtl at key}%
+ \fi
+ \DTLifnull{\@dtl at a}{}{\@endfortrue}%
+ }%
+ \ifx\@dtl at keya\@nnil
+ \let\@dtl at keya\@dtl at key
+ \@dtl at setnull{\@dtl at a}{\@dtl at key}%
+ \fi
+ }%
+ {}%
+ \DTLifnull{\@dtl at b}%
+ {%
+ \@for\@dtl at keyb:=\@dtl at replacementkeys\do{%
+ \@sdtl at getcolumnindex{\@dtl at col}{\@dtl at dbname}{\@dtl at keyb}%
+ \dtlgetentryfromrow{\@dtl at b}{\@dtl at col}{#2}%
+ \ifx\@dtl at b\dtlnovalue
+ \@dtl at setnull{\@dtl at b}{\@dtl at key}%
+ \fi
+ \DTLifnull{\@dtl at b}{}{\@endfortrue}%
+ }%
+ \ifx\@dtl at keyb\@nnil
+ \let\@dtl at keyb\@dtl at key
+ \@dtl at setnull{\@dtl at b}{\@dtl at key}%
+ \fi
+ }%
+ {}%
+ \@dtl at toksA=\expandafter{\@dtl at a}%
+ \@dtl at toksB=\expandafter{\@dtl at b}%
+ \edef\@dtl at docompare{\noexpand\dtl at compare@
+ {\@dtl at keya}{\@dtl at keyb}%
+ {\noexpand\@dtl at toksA}{\noexpand\@dtl at toksB}}%
+ \@dtl at docompare
+ \ifnum\dtl at sortresult=0\relax
+ \@endforfalse
+ \else
+ \@endfortrue
+ \fi
+ }%
+ \multiply\dtl at sortresult by -\@dtl at sortdirection\relax
+}
+\def\@dtl at getsortdirection#1=#2\relax{%
+ \def\@dtl at key{#1}%
+ \def\@dtl at sortdirection{#2}%
+ \ifdefempty{\@dtl at sortdirection}%
+ {%
+ \def\@dtl at sortdirection{-1}%
+ }%
+ {%
+ \@dtl at get@sortdirection#2%
+ \def\@dtl at dir{ascending}%
+ \ifx\@dtl at sortdirection\@dtl at dir
+ \def\@dtl at sortdirection{-1}%
+ \else
+ \def\@dtl at dir{descending}%
+ \ifx\@dtl at sortdirection\@dtl at dir
+ \def\@dtl at sortdirection{1}%
+ \else
+ \PackageError{datatool}{Invalid sort direction
+ `\@dtl at sortdirection'}{The sort direction can only be
+ one of `ascending' or `descending'}%
+ \def\@dtl at sortdirection{-1}%
+ \fi
+ \fi
+ }%
+}
+\def\@dtl at get@sortdirection#1={\def\@dtl at sortdirection{#1}}
+\newtoks\@dtl at toksA
+\newtoks\@dtl at toksB
+\newcommand{\dtl at compare}[3]{%
+ \dtl at compare@{#1}{#1}{#2}{#3}%
+}
+\newcommand{\dtl at compare@}[4]{%
+ \DTLgetdatatype{\@dtl at typeA}{\@dtl at dbname}{#1}%
+ \ifx\@dtl at typeA\DTLunsettype
+ \let\@dtl at typeA\DTLstringtype
+ \fi
+ \DTLgetdatatype{\@dtl at typeB}{\@dtl at dbname}{#2}%
+ \ifx\@dtl at typeB\DTLunsettype
+ \let\@dtl at typeB\DTLstringtype
+ \fi
+ \@dtl at tmpcount=\@dtl at typeA\relax
+ \multiply\@dtl at tmpcount by \@dtl at typeB\relax
+ \ifnum\@dtl at tmpcount=0\relax
+ \edef\@dtl at tmpcmp{%
+ \noexpand\@dtl at comparecs{\noexpand\dtl at sortresult}%
+ {\the#3}{\the#4}%
+ }%
+ \@dtl at tmpcmp
+ \ifdtlverbose
+ \edef\@dtl at a{\the#3}%
+ \edef\@dtl at b{\the#4}%
+ \fi
+ \else
+ \edef\@dtl at a{\the#3}%
+ \edef\@dtl at b{\the#4}%
+ \DTLifnumlt{\@dtl at a}{\@dtl at b}%
+ {%
+ \dtl at sortresult=-1\relax
+ }%
+ {%
+ \DTLifnumgt{\@dtl at a}{\@dtl at b}%
+ {%
+ \dtl at sortresult=1\relax
+ }%
+ {%
+ \dtl at sortresult=0\relax
+ }%
+ }%
+ \fi
+ \ifdtlverbose
+ \@onelevel at sanitize\@dtl at a
+ \@onelevel at sanitize\@dtl at b
+ \dtl at message{`\@dtl at a' <=> `\@dtl at b' = \number\dtl at sortresult}%
+ \fi
+}
+\newwrite\@dtl at write
+\newcommand*{\DTLsavedb}[2]{%
+ \DTLifdbexists{#1}%
+ {%
+ \openout\@dtl at write=#2\relax
+ \def\@dtl at header{}%
+ \dtlforeachkey(\@dtl at key,\@dtl at col,\@dtl at type,\@dtl at head)%
+ \in{#1}\do
+ {%
+ \IfSubStringInString{\@dtl at separator}{\@dtl at key}%
+ {%
+ \ifdefempty{\@dtl at header}%
+ {%
+ \protected at edef\@dtl at header{%
+ \@dtl at delimiter\@dtl at key\@dtl at delimiter}%
+ }%
+ {%
+ \toks@=\expandafter{\@dtl at header}%
+ \protected at edef\@dtl at header{%
+ \the\toks@\@dtl at separator
+ \@dtl at delimiter\@dtl at key\@dtl at delimiter}%
+ }%
+ }%
+ {%
+ \ifdefempty{\@dtl at header}%
+ {%
+ \protected at edef\@dtl at header{\@dtl at key}%
+ }%
+ {%
+ \toks@=\expandafter{\@dtl at header}%
+ \protected at edef\@dtl at header{\the\toks@
+ \@dtl at separator\@dtl at key}%
+ }%
+ }%
+ }%
+ \protected at write\@dtl at write{}{\@dtl at header}%
+ \@sDTLforeach{#1}{}%
+ {%
+ \def\@dtl at row{}%
+ \DTLforeachkeyinrow{\@dtl at val}%
+ {%
+ \IfSubStringInString{\@dtl at separator}{\@dtl at val}%
+ {%
+ \ifdefempty{\@dtl at row}%
+ {%
+ \protected at edef\@dtl at row{%
+ \@dtl at delimiter\@dtl at val\@dtl at delimiter}%
+ }%
+ {%
+ \toks@=\expandafter{\@dtl at row}%
+ \protected at edef\@dtl at row{\the\toks@\@dtl at separator
+ \@dtl at delimiter\@dtl at val\@dtl at delimiter}%
+ }%
+ }%
+ {%
+ \ifdefempty{\@dtl at row}%
+ {%
+ \protected at edef\@dtl at row{\@dtl at val}%
+ }%
+ {%
+ \toks@=\expandafter{\@dtl at row}%
+ \protected at edef\@dtl at row{\the\toks@\@dtl at separator
+ \@dtl at val}%
+ }%
+ }%
+ }%
+ \protected at write\@dtl at write{}{\@dtl at row}%
+ }%
+ \closeout\@dtl at write
+ }%
+ {%
+ \PackageError{datatool}{Can't save database `#1': no such
+ database}{}%
+ }%
+}
+\newcommand*{\DTLsavetexdb}[2]{%
+ \DTLifdbexists{#1}%
+ {%
+ \openout\@dtl at write=#2\relax
+ \protected at write\@dtl at write{}{\string\DTLnewdb{#1}}%
+ \@sDTLforeach{#1}{}%
+ {%
+ \protected at write\@dtl at write{}{\string\DTLnewrow*{#1}}%
+ \DTLforeachkeyinrow{\@dtl at val}%
+ {%
+ \DTLifnull{\@dtl at val}%
+ {\def\@dtl at val{}}%
+ {}%
+ \protected at write\@dtl at write{}{%
+ \string\DTLnewdbentry*{#1}{\dtlkey}{\@dtl at val}}%
+ }%
+ }%
+ \dtlforeachkey(\@dtl at k,\@dtl at c,\@dtl at t,\@dtl at h)\in{#1}\do
+ {%
+ \@onelevel at sanitize\@dtl at h
+ \protected at write\@dtl at write{}{%
+ \string\DTLsetheader*{#1}{\@dtl at k}{\@dtl at h}}%
+ }%
+ \protected at write{\@dtl at write}{}{\string\def\string\dtllastloadeddb{#1}}%
+ \closeout\@dtl at write
+ }%
+ {%
+ \PackageError{datatool}{Can't save database `#1': no such
+ database}{}%
+ }%
+}
+\newcommand*{\dtl at saverawdbhook}{}
+\newcommand*{\DTLsaverawdb}[2]{%
+ \DTLifdbexists{#1}%
+ {%
+ \openout\@dtl at write=#2\relax
+ \protected at write{\@dtl at write}{}{%
+ \string\DTLifdbexists{#1}\expandafter\@gobble\string\%^^J%
+ {%
+ \string\PackageError{datatool}{Database `#1' ^^Jalready exists}{}%
+ \expandafter\@gobble\string\%^^J%
+ \string\aftergroup\string\endinput
+ }%
+ {%
+ }\expandafter\@gobble\string\%
+ }%
+ {%
+ \def\db at row@elt at w{\expandafter\@gobble\string\%^^J\string\db at row@elt at w\space}%
+ \def\db at row@elt at end@{\expandafter\@gobble\string\%^^J\string\db at row@elt at end@\space}%
+ \def\db at row@id at w{\expandafter\@gobble\string\%^^J\string\db at row@id at w\space}%
+ \def\db at row@id at end@{\expandafter\@gobble\string\%^^J\string\db at row@id at end@\space}%
+ \def\db at col@elt at w{\expandafter\@gobble\string\%^^J\string\db at col@elt at w\space}%
+ \def\db at col@elt at end@{\expandafter\@gobble\string\%^^J\string\db at col@elt at end@\space}%
+ \def\db at col@id at w{\expandafter\@gobble\string\%^^J\string\db at col@id at w\space}%
+ \def\db at col@id at end@{\expandafter\@gobble\string\%^^J\string\db at col@id at end@\space}%
+ \def\db at plist@elt at w{\expandafter\@gobble\string\%^^J\string\db at plist@elt at w\space}%
+ \def\db at plist@elt at end@{\expandafter\@gobble\string\%^^J\string\db at plist@elt at end@\space}%
+ \def\db at key@id at w{\expandafter\@gobble\string\%^^J\string\db at key@id at w\space}%
+ \def\db at key@id at end@{\expandafter\@gobble\string\%^^J\string\db at key@id at end@\space}%
+ \def\db at type@id at w{\expandafter\@gobble\string\%^^J\string\db at type@id at w\space}%
+ \def\db at type@id at end@{\expandafter\@gobble\string\%^^J\string\db at type@id at end@\space}%
+ \def\db at header@id at w{\expandafter\@gobble\string\%^^J\string\db at header@id at w\space}%
+ \def\db at header@id at end@{\expandafter\@gobble\string\%^^J\string\db at header@id at end@\space}%
+ \protected at write{\@dtl at write}{}{\string\bgroup\string\makeatletter}%
+ \protected at write{\@dtl at write}{}{%
+ \string\dtl at message{Reconstructing database^^J`#1'}%
+ \expandafter\@gobble\string\%}%
+ \protected at write{\@dtl at write}{}{%
+ \string\expandafter
+ \string\global\string\expandafter^^J\string\newtoks
+ \string\csname\space dtlkeys@#1\string\endcsname}%
+ \protected at write{\@dtl at write}{}{%
+ \string\expandafter
+ \string\global^^J
+ \string\csname\space dtlkeys@#1\string\endcsname
+ =\expandafter\@gobble\string\{\expandafter\@gobble\string\%}%
+ \expandafter\protected at xdef\csname dtl at rawwritedbkeys@#1\endcsname{%
+ \the\csname dtlkeys@#1\endcsname}%
+ \protected at write{\@dtl at write}{}{\csname dtl at rawwritedbkeys@#1\endcsname}%
+ \protected at write{\@dtl at write}{}%
+ {\expandafter\@gobble\string\}\expandafter\@gobble\string\%}%
+ \dtl at saverawdbhook
+ \protected at write{\@dtl at write}{}{%
+ \string\expandafter\string\global
+ \string\expandafter^^J\string\newtoks
+ \string\csname\space dtldb@#1\string\endcsname}%
+ \protected at write{\@dtl at write}{}{%
+ \string\expandafter
+ \string\global^^J\string\csname\space dtldb@#1\string\endcsname
+ =\expandafter\@gobble\string\{\expandafter\@gobble\string\%}%
+ \expandafter\protected at xdef\csname dtl at rawwritedb@#1\endcsname{\the\csname dtldb@#1\endcsname}%
+ \protected at write{\@dtl at write}{}{\csname dtl at rawwritedb@#1\endcsname}%
+ \protected at write{\@dtl at write}{}{\expandafter\@gobble\string\}\expandafter\@gobble\string\%}%
+ \protected at write{\@dtl at write}{}{\string\expandafter\string\global^^J
+ \string\expandafter\string\newcount
+ \string\csname\space dtlrows@#1\string\endcsname}%
+ \protected at write{\@dtl at write}{}{\string\expandafter\string\global^^J
+ \string\csname\space dtlrows@#1\string\endcsname
+ =\expandafter\number\csname dtlrows@#1\endcsname\string\relax}%
+ \protected at write{\@dtl at write}{}{\string\expandafter\string\global^^J
+ \string\expandafter\string\newcount
+ \string\csname\space dtlcols@#1\string\endcsname}%
+ \protected at write{\@dtl at write}{}{\string\expandafter\string\global^^J
+ \string\csname\space dtlcols@#1\string\endcsname
+ =\expandafter\number\csname dtlcols@#1\endcsname\string\relax}%
+ \dtlforeachkey(\@dtl at key,\@dtl at col,\@dtl at type,\@dtl at head)\in{#1}\do
+ {%
+ \edef\dtl at tmp{%
+ \string\expandafter^^J
+ \string\gdef
+ \string\csname\space dtl at ci@#1@\@dtl at key\string\endcsname
+ {\csname dtl at ci@#1@\@dtl at key\endcsname}\expandafter\@gobble\string\%
+ }%
+ \expandafter\write\expandafter\@dtl at write\expandafter{\dtl at tmp}%
+ }%
+ \protected at write{\@dtl at write}{}{\string\egroup}%
+ }%
+ \protected at write{\@dtl at write}{}{\string\def\string\dtllastloadeddb{#1}}%
+ \closeout\@dtl at write
+ }%
+ {%
+ \PackageError{datatool}{Can't save database `#1': no such
+ database}{}%
+ }%
+}
+\newcommand*{\DTLprotectedsaverawdb}[2]{%
+ \DTLifdbexists{#1}%
+ {%
+ \openout\@dtl at write=#2\relax
+ \protected at write{\@dtl at write}{}{%
+ \string\DTLifdbexists{#1}\expandafter\@gobble\string\%^^J%
+ {%
+ \string\PackageError{datatool}{Database `#1' ^^Jalready exists}{}%
+ \expandafter\@gobble\string\%^^J%
+ \string\aftergroup\string\endinput
+ }%
+ {%
+ }\expandafter\@gobble\string\%
+ }%
+ {%
+ \protected at write{\@dtl at write}{}{\string\bgroup\string\makeatletter}%
+ \protected at write{\@dtl at write}{}{\string\dtl at message{Reconstructing database
+ ^^J`#1'}\expandafter\@gobble\string\%}%
+ \protected at write{\@dtl at write}{}{%
+ \string\expandafter
+ \string\global\string\expandafter^^J\string\newtoks
+ \string\csname\space dtlkeys@#1\string\endcsname}%
+ \protected at write{\@dtl at write}{}{%
+ \string\expandafter
+ \string\global^^J
+ \string\csname\space dtlkeys@#1\string\endcsname
+ =\expandafter\@gobble\string\{\expandafter\@gobble\string\%}%
+ \edef\dtl at rawwrite@keys{\the\csname dtlkeys@#1\endcsname}%
+ \@onelevel at sanitize\dtl at rawwrite@keys
+ \expandafter\write\expandafter\@dtl at write\expandafter
+ {\dtl at rawwrite@keys\expandafter\@gobble\string\}}%
+ \protected at write{\@dtl at write}{}{%
+ \string\expandafter\string\global
+ \string\expandafter^^J\string\newtoks
+ \string\csname\space dtldb@#1\string\endcsname}%
+ \protected at write{\@dtl at write}{}{%
+ \string\expandafter
+ \string\global^^J\string\csname\space dtldb@#1\string\endcsname
+ =\expandafter\@gobble\string\{\expandafter\@gobble\string\%}%
+ \edef\dtl at rawwrite@db{\the\csname dtldb@#1\endcsname}%
+ \@onelevel at sanitize\dtl at rawwrite@db
+ \expandafter\write\expandafter\@dtl at write\expandafter
+ {\dtl at rawwrite@db\expandafter\@gobble\string\}}%
+ \protected at write{\@dtl at write}{}{\string\expandafter\string\global^^J
+ \string\expandafter\string\newcount
+ \string\csname\space dtlrows@#1\string\endcsname}%
+ \protected at write{\@dtl at write}{}{\string\expandafter\string\global^^J
+ \string\csname\space dtlrows@#1\string\endcsname
+ =\expandafter\number\csname dtlrows@#1\endcsname\string\relax}%
+ \protected at write{\@dtl at write}{}{\string\expandafter\string\global^^J
+ \string\expandafter\string\newcount
+ \string\csname\space dtlcols@#1\string\endcsname}%
+ \protected at write{\@dtl at write}{}{\string\expandafter\string\global^^J
+ \string\csname\space dtlcols@#1\string\endcsname
+ =\expandafter\number\csname dtlcols@#1\endcsname\string\relax}%
+ \dtlforeachkey(\@dtl at key,\@dtl at col,\@dtl at type,\@dtl at head)\in{#1}\do
+ {%
+ \edef\dtl at tmp{%
+ \string\expandafter^^J
+ \string\gdef
+ \string\csname\space dtl at ci@#1@\@dtl at key\string\endcsname
+ {\csname dtl at ci@#1@\@dtl at key\endcsname}\expandafter\@gobble\string\%
+ }%
+ \expandafter\write\expandafter\@dtl at write\expandafter{\dtl at tmp}%
+ }%
+ \protected at write{\@dtl at write}{}{\string\egroup}%
+ }%
+ \protected at write{\@dtl at write}{}{\string\def\string\dtllastloadeddb{#1}}%
+ \closeout\@dtl at write
+ }%
+ {%
+ \PackageError{datatool}{Can't save database `#1': no such
+ database}{}%
+ }%
+}
+\newcommand*{\DTLloaddbtex}[2]{%
+ \IfFileExists{#2}%
+ {%
+ \input{#2}%
+ \ifdef#1%
+ {%
+ \PackageError{datatool}{Command \string#1\space is already defined}%
+ {}%
+ }%
+ {%
+ \let#1\dtllastloadeddb
+ }%
+ }%
+ {%
+ \PackageError{datatool}{File `#2' doesn't exist.}{}%
+ }%
+}
+\newread\@dtl at read
+\newcount\dtl at entrycr
+\define at boolkey{loaddb}[dtl]{noheader}[true]{}
+\define at boolkey{loaddb}[dtl]{autokeys}[true]{}
+\dtlautokeysfalse
+\define at key{loaddb}{keys}{%
+ \dtl at entrycr=0\relax
+ \@for\@dtl at key:=#1\do
+ {%
+ \advance\dtl at entrycr by 1\relax
+ \expandafter
+ \edef\csname @dtl at inky@\romannumeral\dtl at entrycr\endcsname{%
+ \@dtl at key}%
+ }%
+}
+\define at key{loaddb}{headers}{%
+ \dtl at entrycr=0\relax
+ \@for\@dtl at head:=#1\do
+ {%
+ \advance\dtl at entrycr by 1\relax
+ \toks@=\expandafter{\@dtl at head}%
+ \expandafter
+ \edef\csname @dtl at inhd@\romannumeral\dtl at entrycr\endcsname{%
+ \the\toks@}%
+ }%
+}
+\newcount{\dtl at omitlines}
+\define at key{loaddb}{omitlines}{\dtl at omitlines=#1\relax}
+\newcommand*{\dtldefaultkey}{Column}
+\newcommand*{\@dtl at readline}[2]{%
+ \begingroup
+ \catcode\endlinechar=\active%
+ \global\read#1 to #2%
+ \endgroup%
+ \ifx#2\empty%
+ \else%
+ \expandafter\@dtl at stripeol#2%
+ \let#2\@dtl at strippedline%
+ \fi%
+}
+\begingroup
+\catcode\endlinechar=\active%
+\gdef\@dtl at stripeol#1
+{\gdef\@dtl at strippedline{#1}}
+\endgroup
+\newcommand*{\@dtl at readrawline}[2]{%
+ \@dtl at rawread#1 to #2%
+ \dtl at domappings\@dtl at line
+}
+\newif\ifDTLnewdbonload
+\DTLnewdbonloadtrue
+\newcommand*{\DTLloaddb}{%
+ \let\@dtl at doreadline\@dtl at readline
+ \@dtlloaddb
+}
+\newcommand*{\@dtlloaddb}[3][]{%
+ \IfFileExists{#3}{%
+ \begingroup
+ \catcode`\"12\relax
+ \dtlnoheaderfalse
+ \setkeys{loaddb}{#1}%
+ \openin\@dtl at read=#3%
+ \dtl at message{Reading `#3'}%
+ \loop
+ \ifnum \dtl at omitlines > \z@
+ \advance\dtl at omitlines by \m at ne
+ \read\@dtl at read to \@dtl at line
+ \repeat
+ \ifDTLnewdbonload
+ \DTLnewdb{#2}%
+ \fi
+ \ifeof\@dtl at read
+ \PackageWarning{datatool}{File `#3' has no data}%
+ \else
+ \ifdtlnoheader
+ \else
+ \loop
+ \@dtl at conditionfalse
+ \ifeof\@dtl at read
+ \else
+ \@dtl at doreadline\@dtl at read\@dtl at line
+ \ifdefempty{\@dtl at line}%
+ {%
+ \@dtl at conditiontrue
+ }%
+ {%
+ }%
+ \fi
+ \if at dtl@condition
+ \repeat
+ \protected at edef\@dtl at lin@{%
+ \@dtl at separator\@dtl at line\@dtl at separator}%
+ \dtl at entrycr=0\relax
+ \loop
+ \expandafter\@dtl at lopoff\@dtl at lin@\to\@dtl at lin@\@dtl at key
+ \advance\dtl at entrycr by 1\relax
+ \ifdtlautokeys
+ \csedef{@dtl at inky@\romannumeral\dtl at entrycr}%
+ {\dtldefaultkey\number\dtl at entrycr}%
+ \else
+ \ifdefempty{\@dtl at key}%
+ {%
+ \edef\@dtl at key{\dtldefaultkey\number\dtl at entrycr}%
+ }%
+ {}%
+ \fi
+ \expandafter\@dtl at toks\expandafter{\@dtl at key}%
+ \@ifundefined{@dtl at inky@\romannumeral\dtl at entrycr}%
+ {%
+ \expandafter
+ \edef\csname @dtl at inky@\romannumeral
+ \dtl at entrycr\endcsname{\the\@dtl at toks}%
+ }%
+ {%
+ \@ifundefined{@dtl at inhd@\romannumeral\dtl at entrycr}%
+ {%
+ \expandafter
+ \edef\csname @dtl at inhd@\romannumeral
+ \dtl at entrycr\endcsname{\the\@dtl at toks}%
+ }%
+ {}%
+ }%
+ \ifx\@dtl at lin@\@dtl at separator
+ \@dtl at conditionfalse
+ \else
+ \@dtl at conditiontrue
+ \fi
+ \if at dtl@condition
+ \repeat
+ \fi
+ \ifeof\@dtl at read
+ \ifdtlnoheader
+ \PackageWarning{datatool}{No data in `#3'}%
+ \else
+ \PackageWarning{datatool}{Only header row found in `#3'}%
+ \fi
+ \else
+ \@dtl at conditiontrue
+ \loop
+ \@dtl at doreadline\@dtl at read\@dtl at line
+ \ifdefempty{\@dtl at line}%
+ {%
+ }%
+ {%
+ \@sDTLnewrow{#2}%
+ \expandafter\@dtl at toks\expandafter{\@dtl at line}%
+ \edef\@dtl at lin@{\@dtl at separator\the\@dtl at toks
+ \@dtl at separator}%
+ \dtl at entrycr=0\relax
+ {%
+ \@dtl at conditiontrue
+ \loop
+ \expandafter\@dtl at lopoff\@dtl at lin@\to
+ \@dtl at lin@\@dtl at thisentry
+ \advance\dtl at entrycr by 1\relax
+ \@ifundefined{@dtl at inky@\romannumeral\dtl at entrycr}%
+ {%
+ \edef\@dtl at thiskey{\dtldefaultkey
+ \number\dtl at entrycr}%
+ \expandafter\let
+ \csname @dtl at inky@\romannumeral
+ \dtl at entrycr\endcsname\@dtl at thiskey
+ }%
+ {%
+ \edef\@dtl at thiskey{%
+ \csname @dtl at inky@\romannumeral
+ \dtl at entrycr\endcsname}%
+ }%
+ \expandafter\@dtl at toks\expandafter{\@dtl at thisentry}%
+ \edef\@do at dtlnewentry{\noexpand\@sDTLnewdbentry
+ {#2}{\@dtl at thiskey}{\the\@dtl at toks}}%
+ \@do at dtlnewentry
+ \ifx\@dtl at lin@\@dtl at separator
+ \@dtl at conditionfalse
+ \fi
+ \if at dtl@condition
+ \repeat
+ }%
+ }%
+ \ifeof\@dtl at read \@dtl at conditionfalse\fi
+ \if at dtl@condition
+ \repeat
+ \fi
+ \fi
+ \closein\@dtl at read
+ \edef\@dtl at maxcols{\expandafter
+ \number\csname dtlcols@#2\endcsname}%
+ \dtlgforint\dtl at entrycr=1\to\@dtl at maxcols\step1\do
+ {%
+ \@ifundefined{@dtl at inhd@\romannumeral\dtl at entrycr}%
+ {}%
+ {%
+ \expandafter\let\expandafter\@dtl at head
+ \csname @dtl at inhd@\romannumeral\dtl at entrycr\endcsname
+ \@dtl at toks=\expandafter{\@dtl at head}%
+ \edef\@dtl at dosetheader{\noexpand\@dtl at setheaderforindex
+ {#2}{\number\dtl at entrycr}{\the\@dtl at toks}}%
+ \@dtl at dosetheader
+ }%
+ }%
+ \endgroup
+ }{%
+ \PackageError{datatool}{Can't load database `#2' (file `#3'
+ doesn't exist)}{}%
+ }%
+}
+\newcommand*\DTLloadrawdb{%
+ \let\@dtl at doreadline\@dtl at readrawline
+ \@dtlloaddb
+}
+\begingroup
+\catcode`\%=\active
+\catcode`$=\active
+\catcode`&=\active
+\catcode`~=\active
+\catcode`_=\active
+\catcode`^=\active
+\catcode`#=\active
+\catcode`?=6\relax
+\catcode`<=1\relax
+\catcode`>=2\relax
+\catcode`\{=\active
+\catcode`\}=\active
+\gdef\@dtl at rawread?1to?2<\relax
+<<\catcode`\%=\active
+\catcode`$=\active
+\catcode`&=\active
+\catcode`~=\active
+\catcode`_=\active
+\catcode`^=\active
+\catcode`#=\active
+\catcode`\{=\active
+\catcode`\}=\active
+\def%<\noexpand\%>\relax
+\def$<\noexpand\$>\relax
+\def&<\&>\relax
+\def#<\#>\relax
+\def~<\noexpand\textasciitilde>\relax
+\def_<\noexpand\_>\relax
+\def^<\noexpand\textasciicircum>\relax
+\@dtl at activatebraces
+\@dtl at doreadraw?1?2>>>
+\gdef\@dtl at doreadraw?1?2<\relax
+\begingroup\catcode\endlinechar=\active\global\read?1 to \dtl at tmp\endgroup
+\expandafter\@dtl at stripeol\dtl at tmp
+\let\dtl at tmp\@dtl at strippedline
+\protected at xdef?2<\dtl at tmp>\relax
+>
+\endgroup
+\begingroup
+\catcode`\{=\active
+\catcode`\}=\active
+\catcode`<=1\relax
+\catcode`>=2\relax
+\gdef\@dtl at activatebraces<%
+ \catcode`\{=\active
+ \catcode`\}=\active
+ \def{<\noexpand\{>%
+ \def}<\noexpand\}>%
+>%
+\endgroup
+\newcommand*{\DTLrawmap}[2]{%
+ \expandafter\@dtl at toks\expandafter{\@dtl at rawmappings}%
+ \ifdefempty{\@dtl at rawmappings}%
+ {%
+ \def\@dtl at rawmappings{{#1}{#2}}%
+ }%
+ {%
+ \def\@dtl at tmp{{#1}{#2}}%
+ \protected at edef\@dtl at rawmappings{\the\@dtl at toks,\@dtl at tmp}%
+ }%
+}
+\newcommand*{\@dtl at rawmappings}{}
+\newcommand*{\dtl at domappings}[1]{%
+ \@for\@dtl at map:=\@dtl at rawmappings\do{%
+ \expandafter\DTLsubstituteall\expandafter#1\@dtl at map
+ }%
+}
+\newcommand*{\dtlshowdb}[1]{%
+ \expandafter\showthe\csname dtldb@#1\endcsname
+}
+\newcommand*{\dtlshowdbkeys}[1]{%
+ \expandafter\showthe\csname dtlkeys@#1\endcsname
+}
+\newcommand*{\dtlshowtype}[2]{%
+ \DTLgetdatatype{\@dtl at type}{#1}{#2}\show\@dtl at type
+}
+% \end{macrocode}
+%\iffalse
+% \begin{macrocode}
+%</datatool-2019-09-27.sty>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*datatool-base-2019-09-27.sty>
+% \end{macrocode}
+%\fi
+%\subsection{Rollback v2.32 (datatool-base-2019-09-27.sty)}
+% \begin{macrocode}
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{datatool-base}[2019/09/27 v2.32 (NLCT)]
+\RequirePackage{etoolbox}
+\RequirePackage{amsmath}
+\RequirePackage{xkeyval}
+\RequirePackage{xfor}
+\RequirePackage{ifthen}
+\RequirePackage{substr}[2009/10/20]
+\ifundef{\ifdtlverbose}
+{
+ \define at boolkey{datatool-base.sty}[dtl]{verbose}[true]{}
+}%
+{}
+\define at choicekey{datatool-base.sty}{math}[\val\nr]{fp,pgfmath}{%
+ \renewcommand*\@dtl at mathprocessor{#1}%
+}
+\define at boolkey{datatool-base.sty}[@dtl@]{utf8}[true]{}
+\ifdef\UTFviii at two@octets
+{\booltrue{@dtl at utf8}}%
+{\boolfalse{@dtl at utf8}}
+\newcommand*{\dtlenableUTFviii}{\booltrue{@dtl at utf8}}
+\newcommand*{\dtldisableUTFviii}{\boolfalse{@dtl at utf8}}
+\providecommand*{\@dtl at mathprocessor}{fp}
+\ProcessOptionsX
+\RequirePackage{datatool-\@dtl at mathprocessor}[=v2.32]
+\newcommand*{\dtl at message}[1]{%
+ \ifdtlverbose\typeout{#1}\fi
+}
+\newtoks\@dtl at toks
+\newcount\@dtl at tmpcount
+\newlength\dtl at tmplength
+\newcommand{\dtl at ifsingle}[3]{%
+ \def\@dtl at arg{#1}%
+ \ifdefempty{\@dtl at arg}%
+ {%
+ #3%
+ }%
+ {%
+ \@dtl at ifsingle#1\@nil{#2}{#3}%
+ }%
+}
+\def\@dtl at ifsingle#1#2\@nil#3#4{%
+ \def\dtl at sg@arg{#2}%
+ \ifdefempty{\dtl at sg@arg}%
+ {%
+ #3%
+ }%
+ {%
+ #4%
+ }%
+}
+\newcommand{\dtl at ifsingleorUTFviii}[3]{%
+ \ifbool{@dtl at utf8}
+ {%
+ \def\@dtl at arg{#1}%
+ \ifdefempty{\@dtl at arg}%
+ {%
+ #3%
+ }%
+ {%
+ \expandafter\dtl at if@two at octets#1\relax\relax\dtl at end@if at two@octets
+ {%
+ \dtl at getfirst@UTFviii#1\@nil\end at dtl@getfirst at UTFviii
+ \ifdefempty\dtl at rest{#2}{#3}%
+ }%
+ {%
+ \@dtl at ifsingle#1\@nil{#2}{#3}%
+ }%
+ }%
+ }%
+ {%
+ \dtl at ifsingle{#1}{#2}{#3}%
+ }%
+}%
+\newcommand{\dtlifintopenbetween}[5]{%
+ \ifnum#1>#2\relax
+ \ifnum#1<#3\relax
+ #4%
+ \else
+ #5%
+ \fi
+ \else
+ #5%
+ \fi
+}
+\newcommand{\dtlifintclosedbetween}[5]{%
+ \dtlifintopenbetween{#1}{#2}{#3}{#4}%
+ {%
+ \ifnum#1=#2\relax
+ #4%
+ \else
+ \ifnum#1=#3\relax
+ #4%
+ \else
+ #5%
+ \fi
+ \fi
+ }%
+}
+\long\def\long at collect@body#1{%
+ \@envbody{\@xp#1\@xp{\the\@envbody}}%
+ \edef\process at envbody{\the\@envbody\@nx\end{\@currenvir}}%
+ \@envbody\@emptytoks \def\begin at stack{b}%
+ \begingroup
+ \@xp\let\csname\@currenvir\endcsname\long at collect@@body
+ \edef\process at envbody{\@xp\@nx\csname\@currenvir\endcsname}%
+ \process at envbody
+}
+\long\def\long at addto@envbody#1{%
+ \toks@{#1}%
+ \edef\@dtl at tmp{\the\@envbody\the\toks@}%
+ \global\@envbody\@xp{\@dtl at tmp}%
+}
+\long\def\long at collect@@body#1\end#2{%
+ \protected at edef\begin at stack{%
+ \long at push@begins#1\begin\end \@xp\@gobble\begin at stack
+ }%
+ \ifx\@empty\begin at stack
+ \endgroup
+ \@checkend{#2}%
+ \long at addto@envbody{#1}%
+ \else
+ \long at addto@envbody{#1\end{#2}}%
+ \fi
+ \process at envbody
+}
+\long\def\long at push@begins#1\begin#2{%
+ \ifx\end#2\else b\@xp\long at push@begins\fi
+}
+\newcommand*{\DTLifinlist}[4]{%
+ \def\@dtl at doifinlist##1,#1,##2\end at dtl@doifinlist{%
+ \def\@before{##1}%
+ \def\@after{##2}%
+ }%
+ \expandafter\@dtl at doifinlist\expandafter,#2,#1,\@nil
+ \end at dtl@doifinlist
+ \ifx\@after\@nnil
+ #4%
+ \else
+ #3%
+ \fi
+}
+\newif\ifDTLlistskipempty
+\DTLlistskipemptytrue
+\newrobustcmd{\DTLlistelement}[2]{%
+ \begingroup
+ \@dtl at tmpcount=0\relax
+ \@for\@dtl at element:=#1\do{%
+ \ifDTLlistskipempty
+ \ifdefempty{\@dtl at element}%
+ {}%
+ {%
+ \advance\@dtl at tmpcount by 1\relax%
+ \ifnum\@dtl at tmpcount=#2 \@dtl at element\@endfortrue\fi
+ }%
+ \else
+ \advance\@dtl at tmpcount by 1\relax%
+ \ifnum\@dtl at tmpcount=#2 \@dtl at element\@endfortrue\fi
+ \fi
+ }%
+ \if at endfor \else\@dtl at listelement@outofrange{#2}\fi
+ \endgroup
+}
+\newrobustcmd{\DTLfetchlistelement}[3]{%
+ \begingroup
+ \@dtl at tmpcount=0\relax
+ \@for\@dtl at element:=#1\do{%
+ \ifDTLlistskipempty
+ \ifdefempty{\@dtl at element}%
+ {}%
+ {%
+ \advance\@dtl at tmpcount by 1\relax%
+ \ifnum\@dtl at tmpcount=#2 \@endfortrue\fi
+ }%
+ \else
+ \advance\@dtl at tmpcount by 1\relax%
+ \ifnum\@dtl at tmpcount=#2 \@endfortrue\fi
+ \fi
+ }%
+ \if at endfor \else\def\@dtl at element{\@dtl at listelement@outofrange{#2}}\fi
+ \edef\x{%
+ \endgroup
+ \noexpand\def\noexpand#3{\expandonce\@dtl at element}%
+ }\x
+}
+\newcommand{\@dtl at listelement@outofrange}[1]{%
+ \PackageWarning{datatool-base}{List index `\number#1' out of range}%
+}
+\newrobustcmd{\DTLnumitemsinlist}[2]{%
+ \@dtl at tmpcount=0\relax
+ \@for\@dtl at element:=#1\do{%
+ \ifDTLlistskipempty
+ \ifdefempty{\@dtl at element}%
+ {}%
+ {\advance\@dtl at tmpcount by 1\relax}%
+ \else
+ \advance\@dtl at tmpcount by 1\relax
+ \fi
+ }%
+ \edef#2{\number\@dtl at tmpcount}%
+}
+\newcommand*{\dtl at choplast}[3]{%
+ \let#2\@empty
+ \let#3\@empty
+ \@for\@dtl at element:=#1\do{%
+ \ifdefempty{#3}%
+ {%
+ }%
+ {%
+ \ifdefempty{#2}%
+ {%
+ \expandafter\toks@\expandafter{#3}%
+ \edef#2{{\the\toks@}}%
+ }%
+ {%
+ \expandafter\toks@\expandafter{#3}%
+ \expandafter\@dtl at toks\expandafter{#2}%
+ \edef#2{\the\@dtl at toks,{\the\toks@}}%
+ }%
+ }%
+ \let#3=\@dtl at element%
+ }%
+}
+\newcommand*{\dtl at chopfirst}[3]{%
+ \let#2=\@empty
+ \let#3=\@empty
+ \@for\@dtl at element:=#1\do{%
+ \let#2=\@dtl at element
+ \@endfortrue
+ }%
+ \if at endfor
+ \let#3=\@forremainder
+ \fi
+ \@endforfalse
+}
+\newcommand{\dtl at sortlist}[2]{%
+\def\@dtl at sortedlist{}%
+\@for\@dtl at currentrow:=#1\do{%
+\expandafter\dtl at insertinto\expandafter
+ {\@dtl at currentrow}{\@dtl at sortedlist}{#2}%
+\@endforfalse}%
+\let#1=\@dtl at sortedlist
+}
+\newcommand{\dtl at insertinto}[3]{%
+ \def\@dtl at newsortedlist{}%
+ \@dtl at insertdonefalse
+ \@for\dtl at srtelement:=#2\do{%
+ \if at dtl@insertdone
+ \expandafter\toks@\expandafter{\dtl at srtelement}%
+ \edef\@dtl at newstuff{{\the\toks@}}%
+ \else
+ \expandafter#3\expandafter{\dtl at srtelement}{#1}%
+ \ifnum\dtl at sortresult<0\relax
+ \expandafter\toks@\expandafter{\dtl at srtelement}%
+ \@dtl at toks{#1}%
+ \edef\@dtl at newstuff{{\the\@dtl at toks},{\the\toks@}}%
+ \@dtl at insertdonetrue
+ \else
+ \expandafter\toks@\expandafter{\dtl at srtelement}%
+ \edef\@dtl at newstuff{{\the\toks@}}%
+ \fi
+ \fi
+ \ifdefempty{\@dtl at newsortedlist}%
+ {%
+ \expandafter\toks@\expandafter{\@dtl at newstuff}%
+ \edef\@dtl at newsortedlist{\the\toks@}%
+ }%
+ {%
+ \expandafter\toks@\expandafter{\@dtl at newsortedlist}%
+ \expandafter\@dtl at toks\expandafter{\@dtl at newstuff}%
+ \edef\@dtl at newsortedlist{\the\toks@,\the\@dtl at toks}%
+ }%
+ \@endforfalse
+ }%
+ \ifdefempty{\@dtl at newsortedlist}%
+ {%
+ \@dtl at toks{#1}%
+ \edef\@dtl at newsortedlist{{\the\@dtl at toks}}%
+ }%
+ {%
+ \if at dtl@insertdone
+ \else
+ \expandafter\toks@\expandafter{\@dtl at newsortedlist}%
+ \@dtl at toks{#1}%
+ \edef\@dtl at newsortedlist{\the\toks@,{\the\@dtl at toks}}%
+ \fi
+ }%
+ \global\let#2=\@dtl at newsortedlist
+}
+\newcommand{\dtlsortlist}[2]{%
+\def\@dtl at sortedlist{}%
+\@for\@dtl at currentrow:=#1\do{%
+\expandafter\dtlinsertinto\expandafter
+ {\@dtl at currentrow}{\@dtl at sortedlist}{#2}%
+\@endforfalse}%
+\let#1=\@dtl at sortedlist
+}
+\newcommand{\dtlinsertinto}[3]{%
+ \def\@dtl at newsortedlist{}%
+ \@dtl at insertdonefalse
+ \@for\dtl at srtelement:=#2\do{%
+ \expandafter\DTLifSubString\expandafter{\dtl at srtelement}{,}
+ {%
+ \expandafter\toks@\expandafter{\dtl at srtelement}%
+ \edef\dtl at srtelement{{\the\toks@}}%
+ }%
+ {%
+ }
+ \if at dtl@insertdone
+ \let\@dtl at newstuff\dtl at srtelement
+ \else
+ \expandafter#3\expandafter\dtl at sortresult
+ \expandafter{\dtl at srtelement}{#1}%
+ \ifnum\dtl at sortresult>0\relax
+ \DTLifSubString{#1}{,}%
+ {%
+ \@dtl at toks{{#1}}%
+ }%
+ {%
+ \@dtl at toks{#1}%
+ }%
+ \expandafter\toks@\expandafter{\dtl at srtelement}%
+ \edef\@dtl at newstuff{\the\@dtl at toks,\the\toks@}%
+ \@dtl at insertdonetrue
+ \else
+ \expandafter\toks@\expandafter{\dtl at srtelement}%
+ \edef\@dtl at newstuff{{\the\toks@}}%
+ \let\@dtl at newstuff\dtl at srtelement
+ \fi
+ \fi
+ \ifdefempty{\@dtl at newsortedlist}%
+ {%
+ \expandafter\toks@\expandafter{\@dtl at newstuff}%
+ \edef\@dtl at newsortedlist{\the\toks@}%
+ }%
+ {%
+ \expandafter\toks@\expandafter{\@dtl at newsortedlist}%
+ \expandafter\@dtl at toks\expandafter{\@dtl at newstuff}%
+ \edef\@dtl at newsortedlist{\the\toks@,\the\@dtl at toks}%
+ }%
+ \@endforfalse
+ }%
+ \ifdefempty{\@dtl at newsortedlist}%
+ {%
+ \DTLifSubString{#1}{,}%
+ {%
+ \@dtl at toks{{#1}}%
+ }%
+ {%
+ \@dtl at toks{#1}%
+ }%
+ \edef\@dtl at newsortedlist{\the\@dtl at toks}%
+ }%
+ {%
+ \if at dtl@insertdone
+ \else
+ \DTLifSubString{#1}{,}%
+ {%
+ \@dtl at toks{{#1}}%
+ }%
+ {%
+ \@dtl at toks{#1}%
+ }%
+ \expandafter\toks@\expandafter{\@dtl at newsortedlist}%
+ \edef\@dtl at newsortedlist{\the\toks@,\the\@dtl at toks}%
+ \fi
+ }%
+ \global\let#2=\@dtl at newsortedlist
+}
+\newcommand*{\edtlinsertinto}[3]{%
+ \protected at edef\dtl at srtelement{#1}%
+ \expandafter\dtlinsertinto\expandafter{\dtl at srtelement}{#2}{#3}%
+}
+\newif\if at dtl@insertdone
+\newcount\dtl at sortresult
+\newcommand*{\DTLlistformatsep}{, }
+\newcommand*{\DTLlistformatoxford}{}
+\ifdef\andname
+{\newcommand*{\DTLandname}{\andname}}
+{\newcommand*{\DTLandname}{\&}}
+\newcommand*{\DTLlistformatlastsep}{ \DTLandname\space}
+\newcommand*{\DTLlistformatitem}[1]{#1}
+\newcommand*{\@dtl at formatlist@handler}[1]{%
+ \@dtl at formatlist@itemsep
+ \@dtl at formatlist@lastitem
+ \renewcommand{\@dtl at formatlist@lastitem}{%
+ \renewcommand{\@dtl at formatlist@itemsep}{%
+ \DTLlistformatsep
+ \renewcommand*{\@dtl at formatlist@prelastitemsep}{%
+ \DTLlistformatoxford}}%
+ \renewcommand{\@dtl at formatlist@prelastitem}{%
+ \@dtl at formatlist@prelastitemsep
+ \DTLlistformatlastsep}%
+ \DTLlistformatitem{#1}%
+ }%
+}%
+\newrobustcmd*{\DTLformatlist}{%
+ \@ifstar{\s at dtlformatlist}{\@dtlformatlist}%
+}
+\newcommand*{\s at dtlformatlist}[1]{%
+ \def\@dtl at formatlist@itemsep{}%
+ \def\@dtl at formatlist@lastitem{}%
+ \def\@dtl at formatlist@prelastitem{}%
+ \def\@dtl at formatlist@prelastitemsep{}%
+ \@for\@dtl at formatlist@item:=#1\do{%
+ \ifDTLlistskipempty
+ \ifdefempty{\@dtl at formatlist@item}%
+ {}%
+ {\expandafter\@dtl at formatlist@handler\expandafter{\@dtl at formatlist@item}}%
+ \else
+ \expandafter\@dtl at formatlist@handler\expandafter{\@dtl at formatlist@item}%
+ \fi
+ }%
+ \@dtl at formatlist@prelastitem\@dtl at formatlist@lastitem
+}
+\newcommand*{\@dtlformatlist}[1]{{\s at dtlformatlist{#1}}}
+\newcommand{\@dtl at toks@gput at right@cx}[2]{%
+ \def\@dtl at toks@name{#1}%
+ \edef\@dtl at stuff{#2}%
+ \global\csname\@dtl at toks@name\endcsname\expandafter
+ \expandafter\expandafter{\expandafter\the
+ \csname\expandafter\@dtl at toks@name\expandafter\endcsname\@dtl at stuff}%
+}
+\newcommand{\@dtl at toks@gconcat at middle@cx}[4]{%
+ \def\@dtl at toks@name{#1}%
+ \edef\@dtl at stuff{#3}%
+ \global\csname\@dtl at toks@name\endcsname\expandafter\expandafter
+ \expandafter\expandafter\expandafter
+ \expandafter\expandafter{\expandafter\expandafter\expandafter
+ \the\expandafter\expandafter\expandafter#2%
+ \expandafter\@dtl at stuff\the#4}%
+}
+\newcount\@dtl at numgrpsepcount
+\newcommand*{\@dtl at decimal}{.}
+\newcommand*{\@dtl at numbergroupchar}{,}
+\newcommand*{\DTLsetnumberchars}[2]{%
+ \renewcommand*{\@dtl at numbergroupchar}{#1}%
+ \renewcommand*{\@dtl at decimal}{#2}%
+ \@dtl at construct@getnums
+ \@dtl at construct@stripnumgrpchar{#1}%
+}
+\edef\@dtl at construct@getintfrac#1{%
+ \noexpand\def\noexpand\@dtl at getintfrac##1#1##2\noexpand\relax{%
+ \noexpand\@dtl at get@intpart{##1}%
+ \noexpand\def\noexpand\@dtl at fracpart{##2}%
+ \noexpand\ifdefempty{\noexpand\@dtl at fracpart}
+ {%
+ \noexpand\def\noexpand\@dtl at fracpart{0}%
+ }%
+ {%
+ \noexpand\@dtl at getfracpart##2\noexpand\relax
+ \noexpand\@dtl at choptrailingzeroes{\noexpand\@dtl at fracpart}%
+ }%
+ }%
+ \noexpand\def\noexpand\@dtl at getfracpart##1#1\noexpand\relax{%
+ \noexpand\def\noexpand\@dtl at fracpart{##1}%
+ }%
+ \noexpand\def\noexpand\DTLconverttodecimal##1##2{%
+ \noexpand\dtl at ifsingle{##1}%
+ {%
+ \noexpand\expandafter\noexpand\toks@\noexpand\expandafter{##1}%
+ \noexpand\edef\noexpand\@dtl at tmp{\noexpand\the\noexpand\toks@}%
+ }%
+ {%
+ \noexpand\def\noexpand\@dtl at tmp{##1}%
+ }%
+ \noexpand\@dtl at standardize@currency\noexpand\@dtl at tmp
+ \noexpand\ifdefempty{\noexpand\@dtl at org@currency}%
+ {%
+ }%
+ {%
+ \noexpand\let\noexpand\@dtl at currency\noexpand\@dtl at org@currency
+ }%
+ \noexpand\expandafter
+ \noexpand\@dtl at getintfrac\noexpand\@dtl at tmp#1\noexpand\relax
+ \noexpand\edef##2{\noexpand\@dtl at intpart.\noexpand\@dtl at fracpart}%
+ }%
+}
+\newcommand*{\@dtl at construct@getnums}{%
+ \expandafter\@dtl at construct@getintfrac\expandafter{\@dtl at decimal}%
+}
+\newcommand*{\@dtl at get@intpart}[1]{%
+ \@dtl at tmpcount=1\relax
+ \def\@dtl at intpart{#1}%
+ \ifx\@dtl at intpart\@empty
+ \def\@dtl at intpart{0}%
+ \else
+ \def\@dtl at intpart{}%
+ \@dtl at get@int at part#1.\relax%
+ \fi
+ \ifnum\@dtl at tmpcount<0\relax
+ \edef\@dtl at intpart{-\@dtl at intpart}%
+ \fi
+ \@dtl at strip@numgrpchar{\@dtl at intpart}%
+}
+\def\@dtl at get@int at part#1#2\relax{%
+ \def\@dtl at argi{#1}%
+ \def\@dtl at argii{#2}%
+ \ifx\protect#1\relax%
+ \let\@dtl at get@nextintpart=\@dtl at get@int at part
+ \else
+ \expandafter\ifx\@dtl at argi\$%
+ \let\@dtl at get@nextintpart=\@dtl at get@int at part
+ \else
+ \ifx-#1%
+ \multiply\@dtl at tmpcount by -1\relax
+ \let\@dtl at get@nextintpart=\@dtl at get@int at part
+ \else
+ \if\@dtl at argi+%
+ \let\@dtl at get@nextintpart=\@dtl at get@int at part
+ \else
+ \def\@dtl at intpart{#1}%
+ \ifx.\@dtl at argii
+ \let\@dtl at get@nextintpart=\@gobble
+ \else
+ \let\@dtl at get@nextintpart=\@dtl at get@next at intpart
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+ \@dtl at get@nextintpart#2\relax
+}
+\def\@dtl at get@next at intpart#1.\relax{%
+ \edef\@dtl at intpart{\@dtl at intpart#1}%
+}
+\newcommand*{\@dtl at choptrailingzeroes}[1]{%
+ \def\@dtl at tmpcpz{}%
+ \expandafter\@dtl at chop@trailingzeroes#1\@nil%
+ \let#1=\@dtl at tmpcpz
+}
+\def\@dtl at chop@trailingzeroes#1#2\@nil{%
+ \dtlifnumeq{#2}{0}%
+ {%
+ \edef\@dtl at tmpcpz{\@dtl at tmpcpz#1}%
+ \let\@dtl at chopzeroesnext=\@dtl at gobbletonil
+ }%
+ {%
+ \edef\@dtl at tmpcpz{\@dtl at tmpcpz#1}%
+ \let\@dtl at chopzeroesnext=\@dtl at chop@trailingzeroes
+ }%
+ \@dtl at chopzeroesnext#2\@nil
+}
+\def\@dtl at gobbletonil#1\@nil{}
+\newcommand*{\dtl at truncatedecimal}[1]{%
+ \expandafter\@dtl at truncatedecimal#1.\@nil#1%
+}
+\def\@dtl at truncatedecimal#1.#2\@nil#3{%
+ \def#3{#1}%
+}
+\newcommand*{\@dtl at strip@numgrpchar}[1]{%
+ \def\@dtl at stripped{}%
+ \edef\@dtl at do@stripnumgrpchar{%
+ \noexpand\@@dtl at strip@numgrpchar#1\@dtl at numbergroupchar
+ \noexpand\relax
+ }%
+ \@dtl at do@stripnumgrpchar
+ \let#1=\@dtl at stripped
+}
+\edef\@dtl at construct@stripnumgrpchar#1{%
+ \noexpand\def\noexpand\@@dtl at strip@numgrpchar##1#1##2\noexpand\relax{%
+ \noexpand\expandafter\noexpand\toks@\noexpand\expandafter
+ {\noexpand\@dtl at stripped}%
+ \noexpand\edef\noexpand\@dtl at stripped{%
+ \noexpand\the\noexpand\toks@
+ ##1%
+ }%
+ \noexpand\def\noexpand\@dtl at tmp{##2}%
+ \noexpand\ifx\noexpand\@dtl at tmp\noexpand\@empty
+ \noexpand\let\noexpand\@dtl at next=\noexpand\relax
+ \noexpand\else
+ \noexpand\let\noexpand\@dtl at next=\noexpand\@@dtl at strip@numgrpchar
+ \noexpand\fi
+ \noexpand\@dtl at next##2\noexpand\relax
+ }%
+}
+\newcommand*{\DTLdecimaltolocale}[2]{%
+ \edef\@dtl at tmpdtl{#1}%
+ \expandafter\@dtl at decimaltolocale\@dtl at tmpdtl.\relax
+ \dtlifnumeq{\@dtl at fracpart}{0}%
+ {%
+ \edef#2{\@dtl at intpart}%
+ }%
+ {%
+ \edef#2{\@dtl at intpart\@dtl at decimal\@dtl at fracpart}%
+ }%
+}
+\def\@dtl at decimaltolocale#1.#2\relax{%
+ \@dtl at decimaltolocaleint{#1}%
+ \def\@dtl at fracpart{#2}%
+ \ifdefempty\@dtl at fracpart
+ {%
+ \def\@dtl at fracpart{0}%
+ }%
+ {%
+ \@dtl at decimaltolocalefrac#2\relax
+ }%
+}
+\def\@dtl at decimaltolocaleint#1{%
+ \@dtl at tmpcount=0\relax
+ \@dtl at countdigits#1.\relax
+ \@dtl at numgrpsepcount=\@dtl at tmpcount\relax
+ \divide\@dtl at numgrpsepcount by 3\relax
+ \multiply\@dtl at numgrpsepcount by 3\relax
+ \advance\@dtl at numgrpsepcount by -\@dtl at tmpcount\relax
+ \ifnum\@dtl at numgrpsepcount<0\relax
+ \advance\@dtl at numgrpsepcount by 3\relax
+ \fi
+ \def\@dtl at intpart{}%
+ \@dtl at decimal@to at localeint#1.\relax
+}
+\def\@dtl at countdigits#1#2\relax{%
+ \advance\@dtl at tmpcount by 1\relax
+ \ifx.#2\relax
+ \let\@dtl at countnext=\@gobble
+ \else
+ \let\@dtl at countnext=\@dtl at countdigits
+ \fi
+ \@dtl at countnext#2\relax
+}
+\def\@dtl at decimal@to at localeint#1#2\relax{%
+ \advance\@dtl at numgrpsepcount by 1\relax
+ \ifx.#2\relax
+ \edef\@dtl at intpart{\@dtl at intpart#1}%
+ \let\@dtl at localeintnext=\@gobble
+ \else
+ \ifnum\@dtl at numgrpsepcount=3\relax
+ \edef\@dtl at intpart{\@dtl at intpart#1\@dtl at numbergroupchar}%
+ \@dtl at numgrpsepcount=0\relax
+ \else
+ \ifnum\@dtl at numgrpsepcount>3\relax
+ \@dtl at numgrpsepcount=0\relax
+ \fi
+ \edef\@dtl at intpart{\@dtl at intpart#1}%
+ \fi
+ \let\@dtl at localeintnext=\@dtl at decimal@to at localeint
+ \fi
+ \@dtl at localeintnext#2\relax
+}
+\def\@dtl at decimaltolocalefrac#1.\relax{%
+ \count@=0\relax
+ \@dtl at digitcount#1\relax
+ \ifnum\count@>9\relax
+ \@dtl at chopexcessfrac#1000000000\@nil
+ \else
+ \def\@dtl at fracpart{#1}%
+ \fi
+}
+\newcommand*{\@dtl at chopexcessfrac}[9]{%
+ \def\@dtl at fracpart{#1#2#3#4#5#6#7#8#9}%
+ \@dtl at gobbletonil
+}
+\newcommand*{\@dtl at digitcount}[1]{%
+ \ifx\relax#1\relax
+ \let\@dtl at digitcountnext\relax
+ \else
+ \advance\count@ by \@ne
+ \let\@dtl at digitcountnext\@dtl at digitcount
+ \fi
+ \@dtl at digitcountnext
+}
+\newcommand*{\DTLdecimaltocurrency}[2]{%
+ \edef\@dtl at tmpdtl{#1}%
+ \expandafter\@dtl at decimaltolocale\@dtl at tmpdtl.\relax
+ \dtl at truncatedecimal\@dtl at tmpdtl
+ \@dtl at tmpcount=\@dtl at tmpdtl\relax
+ \expandafter\@dtl at toks\expandafter{\@dtl at currency}%
+ \dtlifnumeq{\@dtl at fracpart}{0}%
+ {%
+ \ifnum\@dtl at tmpcount<0\relax
+ \@dtl at tmpcount = -\@dtl at tmpcount\relax
+ \edef#2{-\the\@dtl at toks\the\@dtl at tmpcount\@dtl at decimal00}%
+ \else
+ \edef#2{\the\@dtl at toks\@dtl at intpart\@dtl at decimal00}%
+ \fi
+ }%
+ {%
+ \ifnum\@dtl at tmpcount<0\relax
+ \@dtl at tmpcount = -\@dtl at tmpcount\relax
+ \ifnum\@dtl at fracpart<10\relax
+ \edef#2{%
+ -\the\@dtl at toks\number\@dtl at tmpcount
+ \@dtl at decimal\@dtl at fracpart0%
+ }%
+ \else
+ \edef#2{%
+ -\the\@dtl at toks\number\@dtl at tmpcount
+ \@dtl at decimal\@dtl at fracpart
+ }%
+ \fi
+ \else
+ \ifnum\@dtl at fracpart<10\relax
+ \edef#2{\the\@dtl at toks\@dtl at intpart\@dtl at decimal\@dtl at fracpart0}%
+ \else
+ \edef#2{\the\@dtl at toks\@dtl at intpart\@dtl at decimal\@dtl at fracpart}%
+ \fi
+ \fi
+ }%
+}
+\@dtl at construct@getnums
+\expandafter\@dtl at construct@stripnumgrpchar\expandafter
+ {\@dtl at numbergroupchar}
+\newcommand*{\@dtl at currencies}{\$,\pounds}
+\newcommand*{\DTLnewcurrencysymbol}[1]{%
+ \expandafter\toks@\expandafter{\@dtl at currencies}%
+ \@dtl at toks{#1}%
+ \edef\@dtl at currencies{\the\@dtl at toks,\the\toks@}%
+}
+\AtBeginDocument{%
+ \@ifundefined{texteuro}{}{\DTLnewcurrencysymbol{\texteuro}}%
+ \@ifundefined{textdollar}{}{\DTLnewcurrencysymbol{\textdollar}}%
+ \@ifundefined{textstirling}{}{\DTLnewcurrencysymbol{\textstirling}}%
+ \@ifundefined{textyen}{}{\DTLnewcurrencysymbol{\textyen}}%
+ \@ifundefined{textwon}{}{\DTLnewcurrencysymbol{\textwon}}%
+ \@ifundefined{textcurrency}{}{\DTLnewcurrencysymbol{\textcurrency}}%
+ \@ifundefined{euro}{}{\DTLnewcurrencysymbol{\euro}}%
+ \@ifundefined{yen}{}{\DTLnewcurrencysymbol{\yen}}%
+}
+\newcommand{\@dtl at standardize@currency}[1]{%
+ \def\@dtl at org@currency{}%
+ \@for\@dtl at thiscurrency:=\@dtl at currencies\do{%
+ \expandafter\toks@\expandafter{\@dtl at thiscurrency}%
+ \edef\@dtl at dosubs{\noexpand\DTLsubstitute{\noexpand#1}%
+ {\the\toks@}{\noexpand\$}}%
+ \@dtl at dosubs
+ \ifdefempty{\@dtl at replaced}%
+ {%
+ }%
+ {%
+ \let\@dtl at org@currency=\@dtl at replaced
+ \@endfortrue
+ }%
+ }%
+ \@endforfalse
+}
+\newcommand*{\@dtl at currency}{\$}
+\newcommand*{\DTLsetdefaultcurrency}[1]{%
+ \renewcommand*{\@dtl at currency}{#1}%
+}
+\newcommand*{\DTLadd}[3]{%
+ \DTLconverttodecimal{#2}{\@dtl at numi}%
+ \DTLconverttodecimal{#3}{\@dtl at numii}%
+ \dtladd{\@dtl at tmp}{\@dtl at numi}{\@dtl at numii}%
+ \ifdefempty{\@dtl at replaced}%
+ {%
+ \DTLdecimaltolocale{\@dtl at tmp}{#1}%
+ }%
+ {%
+ \DTLdecimaltocurrency{\@dtl at tmp}{#1}%
+ }%
+}
+\newcommand*{\DTLgadd}[3]{%
+ \DTLadd{\@dtl at tmpii}{#2}{#3}%
+ \global\let#1=\@dtl at tmpii
+}
+\newcommand*{\DTLaddall}[2]{%
+ \def\@dtl at sum{0}%
+ \@for\dtl at thisval:=#2\do{%
+ \expandafter\DTLconverttodecimal\expandafter{\dtl at thisval}{\@dtl at num}%
+ \dtladd{\@dtl at sum}{\@dtl at sum}{\@dtl at num}%
+ }%
+ \ifdefempty{\@dtl at replaced}%
+ {%
+ \DTLdecimaltolocale{\@dtl at sum}{#1}%
+ }%
+ {%
+ \DTLdecimaltocurrency{\@dtl at sum}{#1}%
+ }%
+}
+\newcommand*{\DTLgaddall}[2]{%
+ \DTLaddall{\@dtl at tmpi}{#2}%
+ \global\let#1=\@dtl at tmpi
+}
+\newcommand*{\DTLsub}[3]{%
+ \DTLconverttodecimal{#2}{\@dtl at numi}%
+ \DTLconverttodecimal{#3}{\@dtl at numii}%
+ \dtlsub{\@dtl at tmp}{\@dtl at numi}{\@dtl at numii}%
+ \ifdefempty{\@dtl at replaced}%
+ {%
+ \DTLdecimaltolocale{\@dtl at tmp}{#1}%
+ }%
+ {%
+ \DTLdecimaltocurrency{\@dtl at tmp}{#1}%
+ }%
+}
+\newcommand*{\DTLgsub}[3]{%
+ \DTLsub{\@dtl at tmpii}{#2}{#3}%
+ \global\let#1=\@dtl at tmpii
+}
+\newcommand*{\DTLmul}[3]{%
+ \let\@dtl at thisreplaced=\@empty
+ \DTLconverttodecimal{#2}{\@dtl at numi}%
+ \ifdefempty{\@dtl at replaced}%
+ {%
+ }%
+ {%
+ \let\@dtl at thisreplaced=\@dtl at replaced
+ }%
+ \DTLconverttodecimal{#3}{\@dtl at numii}%
+ \ifdefempty{\@dtl at replaced}%
+ {%
+ }%
+ {%
+ \let\@dtl at thisreplaced=\@dtl at replaced
+ }%
+ \dtlmul{\@dtl at tmp}{\@dtl at numi}{\@dtl at numii}%
+ \ifdefempty{\@dtl at thisreplaced}%
+ {%
+ \DTLdecimaltolocale{\@dtl at tmp}{#1}%
+ }%
+ {%
+ \DTLdecimaltocurrency{\@dtl at tmp}{#1}%
+ }%
+}
+\newcommand*{\DTLgmul}[3]{%
+ \DTLmul{\@dtl at tmpii}{#2}{#3}%
+ \global\let#1=\@dtl at tmpii
+}
+\newcommand*{\DTLdiv}[3]{%
+ \let\@dtl at thisreplaced=\@empty
+ \DTLconverttodecimal{#2}{\@dtl at numi}%
+ \ifdefempty{\@dtl at replaced}%
+ {%
+ }%
+ {%
+ \let\@dtl at thisreplaced=\@dtl at replaced
+ }%
+ \DTLconverttodecimal{#3}{\@dtl at numii}%
+ \dtldiv{\@dtl at tmp}{\@dtl at numi}{\@dtl at numii}%
+ \ifdefempty{\@dtl at thisreplaced}%
+ {%
+ \DTLdecimaltolocale{\@dtl at tmp}{#1}%
+ }%
+ {%
+ \ifdefequal{\@dtl at thisreplaced}{\@dtl at replaced}%
+ {%
+ \DTLdecimaltolocale{\@dtl at tmp}{#1}%
+ }%
+ {%
+ \DTLdecimaltocurrency{\@dtl at tmp}{#1}%
+ }%
+ }%
+}
+\newcommand*{\DTLgdiv}[3]{%
+ \DTLdiv{\@dtl at tmpii}{#2}{#3}%
+ \global\let#1=\@dtl at tmpii
+}
+\newcommand*{\DTLabs}[2]{%
+ \DTLconverttodecimal{#2}{\@dtl at numi}%
+ \dtlabs{\@dtl at tmp}{\@dtl at numi}%
+ \ifdefempty{\@dtl at replaced}%
+ {%
+ \DTLdecimaltolocale{\@dtl at tmp}{#1}%
+ }%
+ {%
+ \DTLdecimaltocurrency{\@dtl at tmp}{#1}%
+ }%
+}
+\newcommand*{\DTLgabs}[2]{%
+ \DTLabs{\@dtl at tmpii}{#2}%
+ \global\let#1=\@dtl at tmpii
+}
+\newcommand*{\DTLneg}[2]{%
+ \DTLconverttodecimal{#2}{\@dtl at numi}%
+ \dtlneg{\@dtl at tmp}{\@dtl at numi}%
+ \ifdefempty{\@dtl at replaced}%
+ {%
+ \DTLdecimaltolocale{\@dtl at tmp}{#1}%
+ }%
+ {%
+ \DTLdecimaltocurrency{\@dtl at tmp}{#1}%
+ }%
+}
+\newcommand*{\DTLgneg}[2]{%
+ \DTLneg{\@dtl at tmpii}{#2}%
+ \global\let#1=\@dtl at tmpii
+}
+\newcommand*{\DTLsqrt}[2]{%
+ \DTLconverttodecimal{#2}{\@dtl at numi}%
+ \dtlroot{\@dtl at tmpi}{\@dtl at numi}{2}%
+ \ifdefempty{\@dtl at replaced}%
+ {%
+ \DTLdecimaltolocale{\@dtl at tmpi}{#1}%
+ }%
+ {%
+ \DTLdecimaltocurrency{\@dtl at tmpi}{#1}%
+ }%
+}
+\newcommand*{\DTLgsqrt}[2]{%
+\DTLsqrt{\@dtl at tmpii}{#2}%
+\global\let#1=\@dtl at tmpii
+}
+\newcommand*{\DTLmin}[3]{%
+ \DTLconverttodecimal{#2}{\@dtl at numi}%
+ \DTLconverttodecimal{#3}{\@dtl at numii}%
+ \dtlifnumlt{\@dtl at numi}{\@dtl at numii}%
+ {%
+ \dtl at ifsingle{#2}%
+ {\let#1=#2}%
+ {\def#1{#2}}%
+ }%
+ {%
+ \dtl at ifsingle{#3}%
+ {\let#1=#3}%
+ {\def#1{#3}}%
+ }%
+}
+\newcommand*{\DTLgmin}[3]{%
+ \DTLmin{\@dtl at tmpii}{#2}{#3}%
+ \global\let#1=\@dtl at tmpii
+}
+\newcommand*{\DTLminall}[2]{%
+ \let\@dtl at min=\@empty
+ \@for\dtl at thisval:=#2\do{%
+ \expandafter\DTLconverttodecimal\expandafter{\dtl at thisval}{\@dtl at num}%
+ \ifdefempty{\@dtl at min}%
+ {%
+ \let\@dtl at min=\@dtl at num
+ }%
+ {%
+ \dtlmin{\@dtl at min}{\@dtl at min}{\@dtl at num}%
+ }%
+ }%
+ \ifdefempty{\@dtl at replaced}%
+ {%
+ \DTLdecimaltolocale{\@dtl at min}{#1}%
+ }%
+ {%
+ \DTLdecimaltocurrency{\@dtl at min}{#1}%
+ }%
+}
+\newcommand*{\DTLgminall}[2]{%
+ \DTLminall{\@dtl at tmpi}{#2}%
+ \global\let#1=\@dtl at tmpi
+}
+\newcommand*{\DTLmax}[3]{%
+ \DTLconverttodecimal{#2}{\@dtl at numi}%
+ \DTLconverttodecimal{#3}{\@dtl at numii}%
+ \dtlmax{\@dtl at tmp}{\@dtl at numi}{\@dtl at numii}%
+ \dtlifnumgt{\@dtl at numi}{\@dtl at numii}%
+ {%
+ \dtl at ifsingle{#2}%
+ {\let#1=#2}%
+ {\def#1{#2}}%
+ }%
+ {%
+ \dtl at ifsingle{#3}%
+ {\let#1=#3}%
+ {\def#1{#3}}%
+ }%
+}
+\newcommand*{\DTLgmax}[3]{%
+ \DTLmax{\@dtl at tmpii}{#2}{#3}%
+ \global\let#1=\@dtl at tmpii
+}
+\newcommand*{\DTLmaxall}[2]{%
+ \let\@dtl at max=\@empty
+ \@for\dtl at thisval:=#2\do{%
+ \expandafter\DTLconverttodecimal\expandafter{\dtl at thisval}{\@dtl at num}%
+ \ifdefempty{\@dtl at max}%
+ {%
+ \let\@dtl at max\@dtl at num
+ }%
+ {%
+ \dtlmax{\@dtl at max}{\@dtl at max}{\@dtl at num}%
+ }%
+ }%
+ \ifdefempty{\@dtl at replaced}%
+ {%
+ \DTLdecimaltolocale{\@dtl at max}{#1}%
+ }%
+ {%
+ \DTLdecimaltocurrency{\@dtl at max}{#1}%
+ }%
+}
+\newcommand*{\DTLgmaxall}[2]{%
+\DTLmaxall{\@dtl at tmpi}{#2}%
+\global\let#1=\@dtl at tmpi
+}
+\newcommand*{\DTLmeanforall}[2]{%
+ \def\@dtl at mean{0}%
+ \def\@dtl at n{0}%
+ \@for\dtl at thisval:=#2\do{%
+ \expandafter\DTLconverttodecimal\expandafter{\dtl at thisval}{\@dtl at num}%
+ \dtladd{\@dtl at mean}{\@dtl at mean}{\@dtl at num}%
+ \dtladd{\@dtl at n}{\@dtl at n}{1}%
+ }%
+ \dtldiv{\@dtl at mean}{\@dtl at mean}{\@dtl at n}%
+ \ifdefempty{\@dtl at replaced}%
+ {%
+ \DTLdecimaltolocale{\@dtl at mean}{#1}%
+ }%
+ {%
+ \DTLdecimaltocurrency{\@dtl at mean}{#1}%
+ }%
+}
+\newcommand*{\DTLgmeanforall}[2]{%
+ \DTLmeanforall{\@dtl at tmpi}{#2}%
+ \global\let#1=\@dtl at tmpi
+}
+\newcommand*{\DTLvarianceforall}[2]{%
+ \def\@dtl at mean{0}%
+ \def\@dtl at n{0}%
+ \let\@dtl at decvals=\@empty
+ \@for\dtl at thisval:=#2\do{%
+ \expandafter\DTLconverttodecimal\expandafter{\dtl at thisval}{\@dtl at num}%
+ \ifdefempty{\@dtl at decvals}%
+ {%
+ \let\@dtl at decvals=\@dtl at num
+ }%
+ {%
+ \expandafter\toks@\expandafter{\@dtl at decvals}%
+ \edef\@dtl at decvals{\the\toks@,\@dtl at num}%
+ }%
+ \dtladd{\@dtl at mean}{\@dtl at mean}{\@dtl at num}%
+ \dtladd{\@dtl at n}{\@dtl at n}{1}%
+ }%
+ \dtldiv{\@dtl at mean}{\@dtl at mean}{\@dtl at n}%
+ \def\@dtl at var{0}%
+ \@for\@dtl at num:=\@dtl at decvals\do{%
+ \dtlsub{\@dtl at diff}{\@dtl at num}{\@dtl at mean}%
+ \dtlmul{\@dtl at diff}{\@dtl at diff}{\@dtl at diff}%
+ \dtladd{\@dtl at var}{\@dtl at var}{\@dtl at diff}%
+ }%
+ \dtldiv{\@dtl at var}{\@dtl at var}{\@dtl at n}%
+ \ifdefempty{\@dtl at replaced}%
+ {%
+ \DTLdecimaltolocale{\@dtl at var}{#1}%
+ }%
+ {%
+ \DTLdecimaltocurrency{\@dtl at var}{#1}%
+ }%
+}
+\newcommand*{\DTLgvarianceforall}[2]{%
+ \DTLvarianceforall{\@dtl at tmpi}{#2}%
+ \global\let#1=\@dtl at tmpi
+}
+\newcommand*{\DTLsdforall}[2]{%
+ \def\@dtl at mean{0}%
+ \def\@dtl at n{0}%
+ \let\@dtl at decvals=\@empty
+ \@for\dtl at thisval:=#2\do{%
+ \expandafter\DTLconverttodecimal\expandafter{\dtl at thisval}{\@dtl at num}%
+ \ifdefempty{\@dtl at decvals}%
+ {%
+ \let\@dtl at decvals=\@dtl at num
+ }%
+ {%
+ \expandafter\toks@\expandafter{\@dtl at decvals}%
+ \edef\@dtl at decvals{\the\toks@,\@dtl at num}%
+ }%
+ \dtladd{\@dtl at mean}{\@dtl at mean}{\@dtl at num}%
+ \dtladd{\@dtl at n}{\@dtl at n}{1}%
+ }%
+ \dtldiv{\@dtl at mean}{\@dtl at mean}{\@dtl at n}%
+ \def\@dtl at sd{0}%
+ \@for\@dtl at num:=\@dtl at decvals\do{%
+ \dtlsub{\@dtl at diff}{\@dtl at num}{\@dtl at mean}%
+ \dtlmul{\@dtl at diff}{\@dtl at diff}{\@dtl at diff}%
+ \dtladd{\@dtl at sd}{\@dtl at sd}{\@dtl at diff}%
+ }%
+ \dtldiv{\@dtl at sd}{\@dtl at sd}{\@dtl at n}%
+ \dtlroot{\@dtl at sd}{\@dtl at sd}{2}%
+ \ifdefempty{\@dtl at replaced}%
+ {%
+ \DTLdecimaltolocale{\@dtl at sd}{#1}%
+ }%
+ {%
+ \DTLdecimaltocurrency{\@dtl at sd}{#1}%
+ }%
+}
+\newcommand*{\DTLgsdforall}[2]{%
+ \DTLsdforall{\@dtl at tmpi}{#2}%
+ \global\let#1=\@dtl at tmpi
+}
+\newcommand*{\DTLround}[3]{%
+ \DTLconverttodecimal{#2}{\@dtl at numi}%
+ \dtlround{\@dtl at tmp}{\@dtl at numi}{#3}%
+ \ifdefempty{\@dtl at replaced}%
+ {%
+ \DTLdecimaltolocale{\@dtl at tmp}{#1}%
+ }%
+ {%
+ \DTLdecimaltocurrency{\@dtl at tmp}{#1}%
+ }%
+}
+\newcommand*{\DTLground}[3]{%
+ \DTLround{\@dtl at tmpii}{#2}{#3}%
+ \global\let#1=\@dtl at tmpii
+}
+\newcommand*{\DTLtrunc}[3]{%
+ \DTLconverttodecimal{#2}{\@dtl at numi}%
+ \dtltrunc{\@dtl at tmp}{\@dtl at numi}{#3}%
+ \ifdefempty{\@dtl at replaced}%
+ {%
+ \DTLdecimaltolocale{\@dtl at tmp}{#1}%
+ }%
+ {%
+ \DTLdecimaltocurrency{\@dtl at tmp}{#1}%
+ }%
+}
+\newcommand*{\DTLgtrunc}[3]{%
+ \DTLtrunc{\@dtl at tmpii}{#2}{#3}%
+ \global\let#1=\@dtl at tmpii
+}
+\newcommand*{\DTLclip}[2]{%
+ \DTLconverttodecimal{#2}{\@dtl at numi}%
+ \dtlclip{\@dtl at tmp}{\@dtl at numi}%
+ \ifdefempty{\@dtl at replaced}%
+ {%
+ \DTLdecimaltolocale{\@dtl at tmp}{#1}%
+ }%
+ {%
+ \DTLdecimaltocurrency{\@dtl at tmp}{#1}%
+ }%
+}
+\newcommand*{\DTLgclip}[3]{%
+ \DTLclip{\@dtl at tmpii}{#2}%
+ \global\let#1=\@dtl at tmpii
+}
+\newcommand*\DTLinitials[1]{%
+ \def\dtl at initialscmd{}%
+ \dtl at subnobrsp{#1}{\dtl at string}%
+ \DTLsubstituteall{\dtl at string}{~}{ }%
+ \DTLsubstituteall{\dtl at string}{\ }{ }%
+ \DTLsubstituteall{\dtl at string}{\space}{ }%
+ \expandafter\dtl at initials\dtl at string{} \@nil%
+ \dtl at initialscmd
+}%
+\edef\dtl at construct@subnobrsp{%
+ \noexpand\def\noexpand\@dtl at subnobrsp##1\noexpand\protect
+ \expandafter\noexpand\csname nobreakspace \endcsname ##2{%
+ \noexpand\toks@{##1}%
+ \noexpand\expandafter\noexpand\@dtl at toks\noexpand\expandafter{%
+ \noexpand\@dtl at string}%
+ \noexpand\edef\noexpand\@dtl at string{\noexpand\the\noexpand\@dtl at toks
+ \noexpand\the\noexpand\toks@}%
+ \noexpand\def\noexpand\@dtl at tmp{##2}%
+ \noexpand\ifx\noexpand\@dtl at tmp\noexpand\@nnil
+ \noexpand\let\noexpand\@dtl at subnobrspnext=\noexpand\relax
+ \noexpand\else
+ \noexpand\toks@{ }%
+ \noexpand\expandafter\noexpand\@dtl at toks\noexpand\expandafter{%
+ \noexpand\@dtl at string}%
+ \noexpand\edef\noexpand\@dtl at string{\noexpand\the\noexpand\@dtl at toks
+ \noexpand\the\noexpand\toks@}%
+ \noexpand\let\noexpand\@dtl at subnobrspnext=\noexpand\@dtl at subnobrsp
+ \noexpand\fi
+ \noexpand\@dtl at subnobrspnext
+ }%
+ \noexpand\def\noexpand\dtl at subnobrsp##1##2{%
+ \noexpand\def\noexpand\@dtl at string{}%
+ \noexpand\@dtl at subnobrsp ##1\noexpand\protect\expandafter\noexpand
+ \csname nobreakspace \endcsname \noexpand\@nil
+ \noexpand\let##2=\noexpand\@dtl at string
+ }%
+}
+\dtl at construct@subnobrsp
+\newcommand*{\DTLstoreinitials}[2]{%
+ \def\dtl at initialscmd{}%
+ \dtl at subnobrsp{#1}{\dtl at string}%
+ \DTLsubstituteall{\dtl at string}{~}{ }%
+ \DTLsubstituteall{\dtl at string}{\ }{ }%
+ \DTLsubstituteall{\dtl at string}{\space}{ }%
+ \expandafter\dtl at initials\dtl at string{} \@nil
+ \let#2=\dtl at initialscmd
+}
+\def\dtl at initials#1#2 #3{%
+ \dtl at ifsingle{#1}%
+ {%
+ \ifcat\noexpand#1\relax\relax
+ \def\@dtl at donextinitials{\@dtl at initials#2 {#3}}%
+ \else
+ \def\@dtl at donextinitials{\@dtl at initials#1#2 {#3}}%
+ \fi
+ }%
+ {%
+ \def\@dtl at donextinitials{\@dtl at initials{#1}#2 {#3}}%
+ }%
+ \@dtl at donextinitials
+}
+\def\@dtl at initials#1#2 #3{%
+ \dtl at initialshyphen#2-{}\dtl at endhyp
+ \expandafter\@dtl at toks\expandafter{\dtl at initialscmd}%
+ \toks@{#1}%
+ \ifdefempty{\dtl at inithyphen}%
+ {%
+ }%
+ {%
+ \edef\dtl at initialscmd{\the\@dtl at toks\the\toks@}%
+ \expandafter\@dtl at toks\expandafter{\dtl at initialscmd}%
+ \expandafter\toks@\expandafter{\dtl at inithyphen}%
+ }%
+ \def\dtl at tmp{#3}%
+ \ifx\@nnil\dtl at tmp
+ \edef\dtl at initialscmd{\the\@dtl at toks\the\toks@\DTLafterinitials}%
+ \let\dtl at initialsnext=\@gobble
+ \else
+ \edef\dtl at initialscmd{\the\@dtl at toks\the\toks@\DTLbetweeninitials}%
+ \let\dtl at initialsnext=\dtl at initials
+ \fi
+ \dtl at initialsnext{#3}%
+}
+\def\dtl at initialshyphen#1-#2#3\dtl at endhyp{%
+ \def\dtl at inithyphen{#2}%
+ \ifdefempty{\dtl at inithyphen}%
+ {%
+ }%
+ {%
+ \edef\dtl at inithyphen{%
+ \DTLafterinitialbeforehyphen\DTLinitialhyphen#2}%
+ }%
+}
+\newcommand*{\DTLafterinitials}{.}
+\newcommand*{\DTLbetweeninitials}{.}
+\newcommand*{\DTLafterinitialbeforehyphen}{.}
+\newcommand*{\DTLinitialhyphen}{-}
+\newcommand*{\DTLifAllUpperCase}[3]{%
+ \protected at edef\dtl at tuc{#1}%
+ \expandafter\dtl at testifuppercase\dtl at tuc\@nil\relax
+ \if at dtl@condition#2\else#3\fi
+}
+\def\dtl at testifuppercase#1#2{%
+ \def\dtl at argi{#1}%
+ \def\dtl at argii{#2}%
+ \def\dtl at tc@rest{}%
+ \ifx\dtl at argi\@nnil
+ \let\dtl at testifuppernext=\@nnil
+ \else
+ \ifx#1\protect
+ \let\dtl at testifuppernext=\dtl at testifuppercase
+ \else
+ \ifx\uppercase#1\relax
+ \@dtl at conditiontrue
+ \def\dtl at tc@rest{}%
+ \let\dtl at testifuppernext=\relax
+ \else
+ \edef\dtl at tc@arg{\string#1}%
+ \expandafter\dtl at test@ifuppercase\dtl at tc@arg\end
+ \ifx\dtl at argii\@nnil
+ \let\dtl at testifuppernext=\@dtl at gobbletonil
+ \fi
+ \fi
+ \fi
+ \fi
+ \ifx\dtl at testifuppernext\relax
+ \edef\dtl at dotestifuppernext{%
+ \noexpand\dtl at testifuppercase}%
+ \else
+ \ifx\dtl at testifuppernext\@nnil
+ \edef\dtl at dotestifuppernext{#2}%
+ \else
+ \expandafter\toks@\expandafter{\dtl at tc@rest}%
+ \@dtl at toks{#2}%
+ \edef\dtl at dotestifuppernext{%
+ \noexpand\dtl at testifuppernext\the\toks@\the\@dtl at toks}%
+ \fi
+ \fi
+ \dtl at dotestifuppernext
+}
+\def\dtl at test@ifuppercase#1#2\end{%
+ \def\dtl at tc@rest{#2}%
+ \IfSubStringInString{\string\MakeUppercase}{#1#2}%
+ {%
+ \@dtl at conditiontrue
+ \def\dtl at tc@rest{}%
+ \let\dtl at testifuppernext=\relax
+ }%
+ {%
+ \IfSubStringInString{\string\MakeTextUppercase}{#1#2}%
+ {%
+ \@dtl at conditiontrue
+ \def\dtl at tc@rest{}%
+ \let\dtl at testifuppernext=\relax
+ }%
+ {%
+ \edef\dtl at uccode{\the\uccode`#1}%
+ \edef\dtl at code{\number`#1}%
+ \ifnum\dtl at code=\dtl at uccode\relax
+ \@dtl at conditiontrue
+ \let\dtl at testifuppernext=\dtl at testifuppercase
+ \else
+ \ifnum\dtl at uccode=0\relax
+ \@dtl at conditiontrue
+ \let\dtl at testifuppernext=\dtl at testifuppercase
+ \else
+ \@dtl at conditionfalse
+ \let\dtl at testifuppernext=\@dtl at gobbletonil
+ \fi
+ \fi
+ }%
+ }%
+}
+\newcommand*{\DTLifAllLowerCase}[3]{%
+ \protected at edef\dtl at tlc{#1}%
+ \expandafter\dtl at testiflowercase\dtl at tlc\@nil\relax
+ \if at dtl@condition#2\else#3\fi
+}
+\def\dtl at testiflowercase#1#2{%
+ \def\dtl at argi{#1}%
+ \def\dtl at argii{#2}%
+ \ifx\dtl at argi\@nnil
+ \let\dtl at testiflowernext=\@nnil
+ \else
+ \ifx#1\protect
+ \let\dtl at testiflowernext=\dtl at testiflowercase
+ \else
+ \ifx\lowercase#1\relax
+ \@dtl at conditiontrue
+ \def\dtl at tc@rest{}%
+ \let\dtl at testiflowernext=\relax
+ \else
+ \edef\dtl at tc@arg{\string#1}%
+ \expandafter\dtl at test@iflowercase\dtl at tc@arg\end
+ \ifx\dtl at argii\@nnil
+ \let\dtl at testiflowernext=\@dtl at gobbletonil
+ \fi
+ \fi
+ \fi
+ \fi
+ \ifx\dtl at testiflowernext\relax
+ \edef\dtl at dotestiflowernext{%
+ \noexpand\dtl at testiflowercase}%
+ \else
+ \ifx\dtl at testiflowernext\@nnil
+ \edef\dtl at dotestiflowernext{#2}%
+ \else
+ \expandafter\toks@\expandafter{\dtl at tc@rest}%
+ \@dtl at toks{#2}%
+ \edef\dtl at dotestiflowernext{%
+ \noexpand\dtl at testiflowernext\the\toks@\the\@dtl at toks}%
+ \fi
+ \fi
+ \dtl at dotestiflowernext
+}
+\def\dtl at test@iflowercase#1#2\end{%
+ \def\dtl at tc@rest{#2}%
+ \IfSubStringInString{\string\MakeLowercase}{#1#2}%
+ {%
+ \@dtl at conditiontrue
+ \def\dtl at tc@rest{}%
+ \let\dtl at testiflowernext=\relax
+ }%
+ {%
+ \IfSubStringInString{\string\MakeTextLowercase}{#1#2}%
+ {%
+ \@dtl at conditiontrue
+ \def\dtl at tc@rest{}%
+ \let\dtl at testiflowernext=\relax
+ }%
+ {%
+ \edef\dtl at lccode{\the\lccode`#1}%
+ \edef\dtl at code{\number`#1}%
+ \ifnum\dtl at code=\dtl at lccode\relax
+ \@dtl at conditiontrue
+ \let\dtl at testiflowernext=\dtl at testiflowercase
+ \else
+ \ifnum\dtl at lccode=0\relax
+ \@dtl at conditiontrue
+ \let\dtl at testiflowernext=\dtl at testiflowercase
+ \else
+ \@dtl at conditionfalse
+ \let\dtl at testiflowernext=\@dtl at gobbletonil
+ \fi
+ \fi
+ }%
+ }%
+}
+\newcommand{\DTLsubstitute}[3]{%
+ \expandafter\DTLsplitstring\expandafter
+ {#1}{#2}{\@dtl at beforepart}{\@dtl at afterpart}%
+ \ifdefempty{\@dtl at replaced}%
+ {%
+ }%
+ {%
+ \def#1{}%
+ \expandafter\@dtl at toks\expandafter{\@dtl at beforepart}%
+ \expandafter\toks@\expandafter{#1}%
+ \protected at edef#1{\the\toks@\the\@dtl at toks#3}%
+ \expandafter\@dtl at toks\expandafter{\@dtl at afterpart}%
+ \expandafter\toks@\expandafter{#1}%
+ \edef#1{\the\toks@\the\@dtl at toks}%
+ }%
+}
+\newcommand*{\DTLsplitstring}[4]{%
+ \def\dtl at splitstr##1#2##2\@nil{%
+ \def#3{##1}%
+ \def#4{##2}%
+ \ifdefempty{#4}%
+ {%
+ \let\@dtl at replaced=\@empty
+ }%
+ {%
+ \def\@dtl at replaced{#2}%
+ \dtl at split@str##2\@nil
+ }%
+ }%
+ \def\dtl at split@str##1#2\@nil{\def#4{##1}}%
+ \dtl at splitstr#1#2\@nil
+}
+\newcommand{\DTLsubstituteall}[3]{%
+ \def\@dtl at splitsubstr{}%
+ \let\@dtl at afterpart=#1\relax
+ \@dtl at dosubstitute{#2}{#3}%
+ \expandafter\toks@\expandafter{\@dtl at splitsubstr}%
+ \expandafter\@dtl at toks\expandafter{\@dtl at afterpart}%
+ \long\edef#1{\the\toks@\the\@dtl at toks}%
+}
+\def\@dtl at dosubstitute#1#2{%
+ \expandafter\DTLsplitstring\expandafter
+ {\@dtl at afterpart}{#1}{\@dtl at beforepart}{\@dtl at afterpart}%
+ \expandafter\toks@\expandafter{\@dtl at splitsubstr}%
+ \expandafter\@dtl at toks\expandafter{\@dtl at beforepart}%
+ \edef\@dtl at splitsubstr{\the\toks@\the\@dtl at toks}%
+ \ifdefempty{\@dtl at replaced}%
+ {%
+ \let\@dtl at dosubstnext=\@dtl at dosubstitutenoop
+ }%
+ {%
+ \expandafter\toks@\expandafter{\@dtl at splitsubstr}%
+ \@dtl at toks{#2}%
+ \edef\@dtl at splitsubstr{\the\toks@\the\@dtl at toks}%
+ \let\@dtl at dosubstnext=\@dtl at dosubstitute
+ }%
+ \@dtl at dosubstnext{#1}{#2}%
+}
+\def\@dtl at dosubstitutenoop#1#2{}
+\newif\if at dtl@condition
+\newcount\@dtl at datatype
+\newcommand{\@dtl at checknumerical}[1]{%
+ \@dtl at numgrpsepfalse
+ \dtl at ifsingle{#1}%
+ {%
+ \expandafter\toks@\expandafter{#1}%
+ \edef\@dtl at tmp{\the\toks@}%
+ }%
+ {%
+ \def\@dtl at tmp{#1}%
+ }%
+ \ifdefempty\@dtl at tmp
+ {%
+ \@dtl at datatype=0\relax
+ }%
+ {%
+ \@dtl at tmpcount=0\relax
+ \@dtl at datatype=0\relax
+ \@dtl at numgrpsepcount=2\relax
+ \@dtl at standardize@currency\@dtl at tmp
+ \ifdefempty{\@dtl at org@currency}%
+ {%
+ }%
+ {%
+ \let\@dtl at currency\@dtl at org@currency
+ }%
+ \expandafter\@dtl at checknumericalstart\@dtl at tmp\@nil\@nil
+ }%
+ \ifnum\@dtl at numgrpsepcount>-1\relax
+ \if at dtl@numgrpsep
+ \ifnum\@dtl at numgrpsepcount=3\relax
+ \else
+ \@dtl at datatype=0\relax
+ \fi
+ \fi
+ \fi
+}
+\newcommand*{\@dtl at protect}{\protect}
+\newcommand*{\@dtl at minus}{-}
+\newcommand*{\@dtl at plus}{+}
+\newcommand*{\@dtl at dollar}{\$}
+\def\@dtl at checknumericalstart#1#2\@nil\@nil{%
+ \def\@dtl at tmp{#1}%
+ \ifx\@dtl at tmp\@dtl at protect
+ \@dtl at checknumericalstart#2\@nil\@nil\relax
+ \else
+ \ifx\@dtl at tmp\@dtl at minus
+ \def\@dtl at tmp{#2}%
+ \ifdefempty{\@dtl at tmp}%
+ {%
+ \@dtl at datatype=0\relax
+ }%
+ {%
+ \ifnum\@dtl at datatype=0\relax
+ \@dtl at datatype=1\relax
+ \fi
+ \@dtl at checknumericalstart#2\@nil\@nil\relax
+ }%
+ \else
+ \ifx\@dtl at tmp\@dtl at plus
+ \def\@dtl at tmp{#2}%
+ \ifdefempty{\@dtl at tmp}%
+ {%
+ \@dtl at datatype=0\relax
+ }%
+ {%
+ \ifnum\@dtl at datatype=0\relax
+ \@dtl at datatype=1\relax
+ \fi
+ \@dtl at checknumericalstart#2\@nil\@nil\relax
+ }%
+ \else
+ \def\@dtl at tmp{#1}%
+ \ifx\@dtl at tmp\@dtl at dollar
+ \def\@dtl at tmp{#2}%
+ \ifdefempty{\@dtl at tmp}%
+ {%
+ \@dtl at datatype=0\relax
+ }%
+ {%
+ \@dtl at datatype=3\relax
+ \@dtl at checknumericalstart#2\@nil\@nil\relax
+ }%
+ \else
+ \ifdefempty{\@dtl at tmp}%
+ {%
+ \@dtl at datatype=0\relax
+ }%
+ {%
+ \ifnum\@dtl at datatype=0\relax
+ \@dtl at datatype=1\relax
+ \fi
+ \@dtl at checknumericalloop#1#2\@nil\@nil\relax
+ }%
+ \fi
+ \fi
+ \fi
+ \fi
+}
+\newif\if at dtl@numgrpsep
+\newcommand*{\@dtl at ifDigitOrDecimalSep}[3]{%
+ \ifnum 9<1\noexpand#1\relax
+ #2%
+ \else
+ \expandafter\ifx\@dtl at decimal#1\relax
+ #2%
+ \else
+ #3%
+ \fi
+ \fi
+}
+\def\@dtl at checknumericalloop#1#2\@nil{%
+\def\@dtl at tmp{#1}%
+\ifx\@nnil\@dtl at tmp\relax
+ \let\@dtl at chcknumnext=\@dtl at checknumericalnoop%
+\else
+ \@dtl at ifDigitOrDecimalSep{#1}{%
+ \let\@dtl at chcknumnext=\@dtl at checknumericalloop%
+ \expandafter\ifx\@dtl at decimal#1\relax
+ \if at dtl@numgrpsep
+ \ifnum\@dtl at numgrpsepcount=3\relax
+ \@dtl at numgrpsepcount=-1\relax
+ \else
+ \@dtl at datatype=0\relax
+ \let\@dtl at chcknumnext=\@dtl at checknumericalnoop
+ \fi
+ \else
+ \@dtl at numgrpsepcount=-1\relax
+ \fi
+ \else
+ \ifnum\@dtl at numgrpsepcount=-1\relax
+ \else
+ \advance\@dtl at numgrpsepcount by 1\relax
+ \fi
+ \fi
+}{%
+\ifx\@dtl at numbergroupchar\@dtl at tmp\relax
+ \@dtl at numgrpseptrue
+ \ifnum\@dtl at numgrpsepcount<3\relax
+ \@dtl at datatype=0\relax
+ \let\@dtl at chcknumnext=\@dtl at checknumericalnoop
+ \else
+ \@dtl at numgrpsepcount=0\relax
+ \fi
+\else
+ \@dtl at datatype=0\relax
+ \let\@dtl at chcknumnext=\@dtl at checknumericalnoop
+\fi
+}%
+ \ifx\@dtl at decimal\@dtl at tmp\relax
+ \ifnum\@dtl at datatype<3\relax
+ \@dtl at datatype=2\relax
+ \fi
+ \advance\@dtl at tmpcount by 1\relax
+ \ifnum\@dtl at tmpcount>1\relax
+ \@dtl at datatype=0\relax
+ \let\@dtl at chcknumnext=\@dtl at checknumericalnoop%
+ \fi
+ \fi
+\fi
+\@dtl at chcknumnext#2\@nil
+}
+\def\@dtl at checknumericalnoop#1\@nil#2{}
+\newcommand{\DTLifnumerical}[3]{%
+\@dtl at checknumerical{#1}%
+\ifnum\@dtl at datatype=0\relax#3\else#2\fi
+}
+\newcommand{\DTLifreal}[3]{%
+ \@dtl at checknumerical{#1}%
+ \ifnum\@dtl at datatype=2\relax #2\else #3\fi
+}
+\newcommand{\DTLifint}[3]{%
+ \@dtl at checknumerical{#1}%
+ \ifnum\@dtl at datatype=1\relax #2\else #3\fi
+}
+\newcommand{\DTLifstring}[3]{%
+ \@dtl at checknumerical{#1}%
+ \ifnum\@dtl at datatype=0\relax #2\else #3\fi
+}
+\newcommand{\DTLifcurrency}[3]{%
+ \@dtl at checknumerical{#1}%
+ \ifnum\@dtl at datatype=3\relax #2\else #3\fi
+}
+\newcommand*{\DTLifcurrencyunit}[4]{%
+ \@dtl at checknumerical{#1}%
+ \ifnum\@dtl at datatype=3\relax
+ \ifthenelse{\equal{\@dtl at org@currency}{#2}}{#3}{#4}%
+ \else
+ #4%
+ \fi
+}
+\newcommand{\DTLifcasedatatype}[5]{%
+ \@dtl at checknumerical{#1}%
+ \ifcase\@dtl at datatype
+ #2% string
+ \or
+ #3% integer
+ \or
+ #4% number
+ \or
+ #5% currency
+ \fi
+}
+\newcommand*{\dtl at testbothnumerical}[2]{%
+ \dtl at ifsingle{#1}{%
+ \edef\@dtl at tmp{#1}}{%
+ \def\@dtl at tmp{#1}}%
+ \expandafter\@dtl at checknumerical\expandafter{\@dtl at tmp}%
+ \edef\@dtl at firsttype{\number\@dtl at datatype}%
+ \dtl at ifsingle{#2}{%
+ \edef\@dtl at tmp{#2}}{%
+ \def\@dtl at tmp{#2}}%
+ \expandafter\@dtl at checknumerical\expandafter{\@dtl at tmp}%
+ \multiply\@dtl at datatype by \@dtl at firsttype\relax
+ \ifnum\@dtl at datatype>0\relax
+ \@dtl at conditiontrue
+ \else
+ \@dtl at conditionfalse
+ \fi
+}
+\newcommand*{\DTLifnumlt}[4]{%
+ \DTLconverttodecimal{#1}{\@dtl at numi}%
+ \DTLconverttodecimal{#2}{\@dtl at numii}%
+ \dtlifnumlt{\@dtl at numi}{\@dtl at numii}%
+ {%
+ #3%
+ }%
+ {%
+ #4%
+ }%
+}
+\newif\ifdtlcompareskipcs
+\dtlcompareskipcsfalse
+\newcommand*{\dtlcompare}[3]{%
+ \dtl at subnobrsp{#2}{\@dtl at argA}%
+ \dtl at subnobrsp{#3}{\@dtl at argB}%
+ \ifdefempty{\@dtl at argA}%
+ {%
+ \ifdefempty{\@dtl at argB}%
+ {%
+ #1=0\relax
+ }%
+ {%
+ #1=-1\relax
+ }%
+ }%
+ {%
+ \ifdefempty{\@dtl at argB}%
+ {%
+ #1=1\relax
+ }%
+ {%
+ \dtl at setwordbreaksnohyphens{\@dtl at argA}{\@dtl at wordbreak}%
+ \let\@dtl at argA\dtl at string
+ \dtl at setwordbreaksnohyphens{\@dtl at argB}{\@dtl at wordbreak}%
+ \let\@dtl at argB\dtl at string
+ \expandafter\dtl at getfirst\@dtl at argA\end at dtl@getfirst
+ \let\dtl at firstA=\dtl at first
+ \let\dtl at restA=\dtl at rest
+ \expandafter\dtl at getfirst\@dtl at argB\end at dtl@getfirst
+ \let\dtl at firstB=\dtl at first
+ \let\dtl at restB=\dtl at rest
+ \expandafter\dtl at ifsingleorUTFviii\expandafter{\dtl at firstA}%
+ {%
+ \expandafter\dtl at ifsingleorUTFviii\expandafter{\dtl at firstB}%
+ {%
+ \expandafter\dtl at setcharcode\expandafter{\dtl at firstA}{\dtl at codeA}%
+ \expandafter\dtl at setcharcode\expandafter{\dtl at firstB}{\dtl at codeB}%
+ \let\dtl at donextcompare\@firstofone
+ \ifdtlcompareskipcs
+ \ifnum\dtl at codeA=0\relax
+ \ifnum\dtl at codeB=0\relax
+ \edef\dtl at donext{%
+ \noexpand\dtlcompare
+ {\noexpand#1}{\expandonce\dtl at restA}{\expandonce\dtl at restB}}%
+ \dtl at donext
+ \let\dtl at donextcompare\@gobble
+ \else
+ \edef\dtl at donext{%
+ \noexpand\dtlcompare
+ {\noexpand#1}{\expandonce\dtl at restA}{\expandonce\@dtl at argB}}%
+ \dtl at donext
+ \let\dtl at donextcompare\@gobble
+ \fi
+ \else
+ \ifnum\dtl at codeB=0\relax
+ \edef\dtl at donext{%
+ \noexpand\dtlcompare
+ {\noexpand#1}{\expandonce\@dtl at argA}{\expandonce\dtl at restB}}%
+ \dtl at donext
+ \let\dtl at donextcompare\@gobble
+ \fi
+ \fi
+ \fi
+ \dtl at donextcompare
+ {%
+ \ifnum\dtl at codeA=-1\relax
+ \ifnum\dtl at codeB=-1\relax
+ \edef\dtl at donext{%
+ \noexpand\dtlcompare
+ {\noexpand#1}{\expandonce\dtl at restA}{\expandonce\dtl at restB}}%
+ \dtl at donext
+ \else
+ \edef\dtl at donext{%
+ \noexpand\dtlcompare
+ {\noexpand#1}%
+ {\expandonce\dtl at restA}%
+ {\expandonce\dtl at firstB\expandonce\dtl at restB}}%
+ \dtl at donext
+ \fi
+ \else
+ \ifnum\dtl at codeB=-1\relax
+ \edef\dtl at donext{%
+ \noexpand\dtlcompare
+ {\noexpand#1}%
+ {\expandonce\dtl at firstA\expandonce\dtl at restA}%
+ {\expandonce\dtl at restB}}%
+ \dtl at donext
+ \else
+ \ifnum\dtl at codeA<\dtl at codeB
+ #1=-1\relax
+ \else
+ \ifnum\dtl at codeA>\dtl at codeB
+ #1=1\relax
+ \else
+ \ifdefempty{\dtl at restA}%
+ {%
+ \ifdefempty{\dtl at restB}%
+ {%
+ #1=0\relax
+ }%
+ {%
+ #1=-1\relax
+ }%
+ }%
+ {%
+ \ifdefempty{\dtl at restB}%
+ {%
+ #1=1\relax
+ }%
+ {%
+ \protected at edef\dtl at donext{%
+ \noexpand\dtlcompare
+ {\noexpand#1}{\dtl at restA}{\dtl at restB}}%
+ \dtl at donext
+ }%
+ }%
+ \fi
+ \fi
+ \fi
+ \fi
+ }%
+ }%
+ {%
+ \edef\dtl at donext{%
+ \noexpand\dtlcompare
+ {\noexpand#1}%
+ {\expandonce\dtl at firstA\expandonce\dtl at restA}%
+ {\expandonce\dtl at firstB\expandonce\dtl at restB}}%
+ \dtl at donext
+ }%
+ }%
+ {%
+ \edef\dtl at donext{%
+ \noexpand\dtlcompare
+ {\noexpand#1}%
+ {\expandonce\dtl at firstA\expandonce\dtl at restA}%
+ {\expandonce\dtl at firstB\expandonce\dtl at restB}}%
+ \dtl at donext
+ }%
+ }%
+ }%
+}
+\def\dtl at if@two at octets#1#2\dtl at end@if at two@octets#3#4{%
+ \ifbool{@dtl at utf8}
+ {%
+ \ifx\UTFviii at two@octets#1\relax
+ #3%
+ \else
+ #4%
+ \fi
+ }%
+ {%
+ #4%
+ }%
+}
+\def\dtl at getfirst@UTFviii#1#2#3\end at dtl@getfirst at UTFviii{%
+ \def\dtl at first{#1#2}%
+ \ifx\@nil#3\relax
+ \def\dtl at rest{}%
+ \else
+ \expandafter\def\expandafter\dtl at rest\expandafter{\@dtl at firsttonil#3}%
+ \fi
+}
+\def\@dtl at firsttonil#1\@nil{#1}
+\def\dtl at getfirst#1#2\end at dtl@getfirst{%
+ \def\dtl at first{#1}%
+ \ifdefempty{\dtl at first}%
+ {%
+ \def\dtl at rest{#2}%
+ }%
+ {%
+ \ifbool{@dtl at utf8}
+ {%
+ \expandafter\dtl at if@two at octets#1#2\relax\dtl at end@if at two@octets
+ {%
+ \dtl at getfirst@UTFviii#1#2\@nil\end at dtl@getfirst at UTFviii
+ }%
+ {%
+ \dtl at ifsingle{#1}{\def\dtl at rest{#2}}{\dtl at getfirst#1#2\end at dtl@getfirst}%
+ }%
+ }%
+ {%
+ \dtl at ifsingle{#1}{\def\dtl at rest{#2}}{\dtl at getfirst#1#2\end at dtl@getfirst}%
+ }%
+ }%
+}%
+\newcount\dtl at codeA
+\newcount\dtl at codeB
+\newcommand*{\dtl at setcharcode}[2]{%
+ \ifstrempty{#1}%
+ {%
+ #2=-1\relax
+ }%
+ {%
+ \ifx\@dtl at wordbreak#1\relax
+ #2=`\ \relax
+ \else
+ \ifcat\noexpand#1\relax
+ #2=0\relax
+ \else
+ \expandafter\dtl at if@two at octets#1\relax\relax\dtl at end@if at two@octets
+ {%
+ \dtlsetUTFviiicharcode{#1}{#2}%
+ }%
+ {%
+ \dtlsetcharcode{#1}{#2}%
+ }%
+ \fi
+ \fi
+ }%
+}
+\newcommand*{\dtlsetcharcode}[2]{#2=`#1\relax}
+\newcommand*{\dtlsetlccharcode}[2]{#2=\lccode`#1\relax}
+\newcommand*\dtlsetUTFviiicharcode[2]{\dtlsetdefaultUTFviiicharcode{#1}{#2}}
+\newcommand*\dtlsetUTFviiilccharcode[2]{\dtlsetdefaultUTFviiilccharcode{#1}{#2}}
+\newcommand*\dtlsetdefaultUTFviiicharcode[2]{%
+ \ifboolexpr
+ {
+ test {\ifstrequal{#1}{À}}
+ or test {\ifstrequal{#1}{Á}}
+ or test {\ifstrequal{#1}{Á}}
+ or test {\ifstrequal{#1}{Ã}}
+ or test {\ifstrequal{#1}{Ä}}
+ }%
+ {%
+ #2=`A\relax
+ }%
+ {%
+ \ifstrequal{#1}{Ç}%
+ {%
+ #2=`C\relax
+ }%
+ {%
+ \ifboolexpr
+ {
+ test {\ifstrequal{#1}{È}}
+ or test {\ifstrequal{#1}{É}}
+ or test {\ifstrequal{#1}{Ê}}
+ or test {\ifstrequal{#1}{Ë}}
+ }%
+ {%
+ #2=`E\relax
+ }%
+ {%
+ \ifboolexpr
+ {
+ test {\ifstrequal{#1}{Ì}}
+ or test {\ifstrequal{#1}{Í}}
+ or test {\ifstrequal{#1}{Î}}
+ or test {\ifstrequal{#1}{Ï}}
+ }%
+ {%
+ #2=`I\relax
+ }%
+ {%
+ \ifstrequal{#1}{Ñ}%
+ {%
+ #2=`N\relax
+ }%
+ {%
+ \ifboolexpr
+ {
+ test {\ifstrequal{#1}{Ò}}
+ or test {\ifstrequal{#1}{Ó}}
+ or test {\ifstrequal{#1}{Ô}}
+ or test {\ifstrequal{#1}{Õ}}
+ or test {\ifstrequal{#1}{Ö}}
+ }%
+ {%
+ #2=`O\relax
+ }%
+ {%
+ \ifboolexpr
+ {
+ test {\ifstrequal{#1}{Ù}}
+ or test {\ifstrequal{#1}{Ú}}
+ or test {\ifstrequal{#1}{Û}}
+ or test {\ifstrequal{#1}{Ü}}
+ }%
+ {%
+ #2=`U\relax
+ }%
+ {%
+ \ifstrequal{#1}{Ý}%
+ {%
+ #2=`Y\relax
+ }%
+ {%
+ \ifboolexpr
+ {
+ test {\ifstrequal{#1}{à}}
+ or test {\ifstrequal{#1}{á}}
+ or test {\ifstrequal{#1}{á}}
+ or test {\ifstrequal{#1}{ã}}
+ or test {\ifstrequal{#1}{ä}}
+ }%
+ {%
+ #2=`a\relax
+ }%
+ {%
+ \ifstrequal{#1}{ç}%
+ {%
+ #2=`c\relax
+ }%
+ {%
+ \ifboolexpr
+ {
+ test {\ifstrequal{#1}{è}}
+ or test {\ifstrequal{#1}{é}}
+ or test {\ifstrequal{#1}{ê}}
+ or test {\ifstrequal{#1}{ë}}
+ }%
+ {%
+ #2=`e\relax
+ }%
+ {%
+ \ifboolexpr
+ {
+ test {\ifstrequal{#1}{ì}}
+ or test {\ifstrequal{#1}{í}}
+ or test {\ifstrequal{#1}{î}}
+ or test {\ifstrequal{#1}{ï}}
+ }%
+ {%
+ #2=`i\relax
+ }%
+ {%
+ \ifstrequal{#1}{ñ}%
+ {%
+ #2=`n\relax
+ }%
+ {%
+ \ifboolexpr
+ {
+ test {\ifstrequal{#1}{ò}}
+ or test {\ifstrequal{#1}{ó}}
+ or test {\ifstrequal{#1}{ô}}
+ or test {\ifstrequal{#1}{õ}}
+ or test {\ifstrequal{#1}{ö}}
+ }%
+ {%
+ #2=`o\relax
+ }%
+ {%
+ \ifboolexpr
+ {
+ test {\ifstrequal{#1}{ù}}
+ or test {\ifstrequal{#1}{ú}}
+ or test {\ifstrequal{#1}{û}}
+ or test {\ifstrequal{#1}{ü}}
+ }%
+ {%
+ #2=`u\relax
+ }%
+ {%
+ \ifstrequal{#1}{ý}%
+ {%
+ #2=`y\relax
+ }%
+ {%
+ #2=64\relax
+ }%
+ }%
+ }%
+ }%
+ }%
+ }%
+ }%
+ }%
+ }%
+ }%
+ }%
+ }%
+ }%
+ }%
+ }%
+ }%
+}
+\newcommand*\dtlsetdefaultUTFviiilccharcode[2]{%
+ \ifboolexpr
+ {
+ test {\ifstrequal{#1}{à}}
+ or test {\ifstrequal{#1}{á}}
+ or test {\ifstrequal{#1}{á}}
+ or test {\ifstrequal{#1}{ã}}
+ or test {\ifstrequal{#1}{ä}}
+ or test {\ifstrequal{#1}{À}}
+ or test {\ifstrequal{#1}{Á}}
+ or test {\ifstrequal{#1}{Á}}
+ or test {\ifstrequal{#1}{Ã}}
+ or test {\ifstrequal{#1}{Ä}}
+ }%
+ {%
+ #2=`a\relax
+ }%
+ {%
+ \ifboolexpr
+ {
+ test {\ifstrequal{#1}{ç}}
+ or test {\ifstrequal{#1}{Ç}}
+ }
+ {%
+ #2=`c\relax
+ }%
+ {%
+ \ifboolexpr
+ {
+ test {\ifstrequal{#1}{è}}
+ or test {\ifstrequal{#1}{é}}
+ or test {\ifstrequal{#1}{ê}}
+ or test {\ifstrequal{#1}{ë}}
+ or test {\ifstrequal{#1}{È}}
+ or test {\ifstrequal{#1}{É}}
+ or test {\ifstrequal{#1}{Ê}}
+ or test {\ifstrequal{#1}{Ë}}
+ }%
+ {%
+ #2=`e\relax
+ }%
+ {%
+ \ifboolexpr
+ {
+ test {\ifstrequal{#1}{ì}}
+ or test {\ifstrequal{#1}{í}}
+ or test {\ifstrequal{#1}{î}}
+ or test {\ifstrequal{#1}{ï}}
+ or test {\ifstrequal{#1}{Ì}}
+ or test {\ifstrequal{#1}{Í}}
+ or test {\ifstrequal{#1}{Î}}
+ or test {\ifstrequal{#1}{Ï}}
+ }%
+ {%
+ #2=`i\relax
+ }%
+ {%
+ \ifboolexpr
+ {
+ test {\ifstrequal{#1}{ñ}}
+ or test {\ifstrequal{#1}{Ñ}}
+ }
+ {%
+ #2=`n\relax
+ }%
+ {%
+ \ifboolexpr
+ {
+ test {\ifstrequal{#1}{ò}}
+ or test {\ifstrequal{#1}{ó}}
+ or test {\ifstrequal{#1}{ô}}
+ or test {\ifstrequal{#1}{õ}}
+ or test {\ifstrequal{#1}{ö}}
+ or test {\ifstrequal{#1}{Ò}}
+ or test {\ifstrequal{#1}{Ó}}
+ or test {\ifstrequal{#1}{Ô}}
+ or test {\ifstrequal{#1}{Õ}}
+ or test {\ifstrequal{#1}{Ö}}
+ }%
+ {%
+ #2=`o\relax
+ }%
+ {%
+ \ifboolexpr
+ {
+ test {\ifstrequal{#1}{ù}}
+ or test {\ifstrequal{#1}{ú}}
+ or test {\ifstrequal{#1}{û}}
+ or test {\ifstrequal{#1}{ü}}
+ or test {\ifstrequal{#1}{Ù}}
+ or test {\ifstrequal{#1}{Ú}}
+ or test {\ifstrequal{#1}{Û}}
+ or test {\ifstrequal{#1}{Ü}}
+ }%
+ {%
+ #2=`u\relax
+ }%
+ {%
+ \ifboolexpr
+ {
+ test {\ifstrequal{#1}{ý}}
+ or test {\ifstrequal{#1}{Ý}}
+ }%
+ {%
+ #2=`y\relax
+ }%
+ {%
+ #2=96\relax
+ }%
+ }%
+ }%
+ }%
+ }%
+ }%
+ }%
+ }%
+}
+\newcommand*{\dtl at setlccharcode}[2]{%
+ \ifstrempty{#1}%
+ {%
+ #2=-1\relax
+ }%
+ {%
+ \ifx#1\@dtl at wordbreak\relax
+ #2=`\ \relax
+ \else
+ \ifcat\noexpand#1\relax%
+ #2=0\relax
+ \else
+ \expandafter\dtl at if@two at octets#1\relax\relax\dtl at end@if at two@octets
+ {%
+ \dtlsetUTFviiilccharcode{#1}{#2}%
+ }%
+ {%
+ \dtlsetlccharcode{#1}{#2}%
+ }%
+ \ifnum#2=0\relax
+ #2=`#1\relax
+ \fi
+ \fi
+ \fi
+ }%
+}
+\newcommand*{\dtlicompare}[3]{%
+ \dtl at subnobrsp{#2}{\@dtl at argA}%
+ \dtl at subnobrsp{#3}{\@dtl at argB}%
+ \ifdefempty{\@dtl at argA}%
+ {%
+ \ifdefempty{\@dtl at argB}%
+ {%
+ #1=0\relax
+ }%
+ {%
+ #1=-1\relax
+ }%
+ }%
+ {%
+ \ifdefempty{\@dtl at argB}%
+ {%
+ #1=1\relax
+ }%
+ {%
+ \dtl at setwordbreaksnohyphens{\@dtl at argA}{\@dtl at wordbreak}%
+ \let\@dtl at argA\dtl at string
+ \dtl at setwordbreaksnohyphens{\@dtl at argB}{\@dtl at wordbreak}%
+ \let\@dtl at argB\dtl at string
+ \expandafter\dtl at getfirst\@dtl at argA\end at dtl@getfirst
+ \let\dtl at firstA=\dtl at first
+ \let\dtl at restA=\dtl at rest
+ \expandafter\dtl at getfirst\@dtl at argB\end at dtl@getfirst
+ \let\dtl at firstB=\dtl at first
+ \let\dtl at restB=\dtl at rest
+ \expandafter\dtl at ifsingleorUTFviii\expandafter{\dtl at firstA}%
+ {%
+ \expandafter\dtl at ifsingleorUTFviii\expandafter{\dtl at firstB}%
+ {%
+ \expandafter\dtl at setlccharcode\expandafter{\dtl at firstA}{\dtl at codeA}%
+ \expandafter\dtl at setlccharcode\expandafter{\dtl at firstB}{\dtl at codeB}%
+ \let\dtl at donextcompare\@firstofone
+ \ifdtlcompareskipcs
+ \ifnum\dtl at codeA=0\relax
+ \ifnum\dtl at codeB=0\relax
+ \edef\dtl at donext{%
+ \noexpand\dtlicompare
+ {\noexpand#1}{\expandonce\dtl at restA}{\expandonce\dtl at restB}}%
+ \dtl at donext
+ \let\dtl at donextcompare\@gobble
+ \else
+ \edef\dtl at donext{%
+ \noexpand\dtlicompare
+ {\noexpand#1}{\expandonce\dtl at restA}{\expandonce\@dtl at argB}}%
+ \dtl at donext
+ \let\dtl at donextcompare\@gobble
+ \fi
+ \else
+ \ifnum\dtl at codeB=0\relax
+ \edef\dtl at donext{%
+ \noexpand\dtlicompare
+ {\noexpand#1}{\expandonce\@dtl at argA}{\expandonce\dtl at restB}}%
+ \dtl at donext
+ \let\dtl at donextcompare\@gobble
+ \fi
+ \fi
+ \fi
+ \dtl at donextcompare
+ {%
+ \ifnum\dtl at codeA=-1\relax
+ \ifnum\dtl at codeB=-1\relax
+ \edef\dtl at donext{%
+ \noexpand\dtlicompare{\noexpand#1}%
+ {\expandonce\dtl at restA}{\expandonce\dtl at restB}}%
+ \dtl at donext
+ \else
+ \edef\dtl at donext{%
+ \noexpand\dtlicompare
+ {\noexpand#1}%
+ {\expandonce\dtl at restA}%
+ {\expandonce\dtl at firstB\expandonce\dtl at restB}}%
+ \dtl at donext
+ \fi
+ \else
+ \ifnum\dtl at codeB=-1\relax
+ \edef\dtl at donext{%
+ \noexpand\dtlicompare
+ {\noexpand#1}%
+ {\expandonce\dtl at firstA\expandonce\dtl at restA}%
+ {\expandonce\dtl at restB}}%
+ \dtl at donext
+ \else
+ \ifnum\dtl at codeA<\dtl at codeB
+ #1=-1\relax
+ \else
+ \ifnum\dtl at codeA>\dtl at codeB
+ #1=1\relax
+ \else
+ \ifdefempty{\dtl at restA}%
+ {%
+ \ifdefempty{\dtl at restB}%
+ {%
+ #1=0\relax
+ }%
+ {%
+ #1=-1\relax
+ }%
+ }%
+ {%
+ \ifdefempty{\dtl at restB}%
+ {%
+ #1=1\relax
+ }%
+ {%
+ \edef\dtl at donext{%
+ \noexpand\dtlicompare
+ {\noexpand#1}%
+ {\expandonce\dtl at restA}%
+ {\expandonce\dtl at restB}}%
+ \dtl at donext
+ }%
+ }%
+ \fi
+ \fi
+ \fi
+ \fi
+ }%
+ }%
+ {%
+ \edef\dtl at donext{%
+ \noexpand\dtlicompare
+ {\noexpand#1}%
+ {\expandonce\dtl at firstA\expandonce\dtl at restA}%
+ {\expandonce\dtl at firstB\expandonce\dtl at restB}}%
+ \dtl at donext
+ }%
+ }%
+ {%
+ \edef\dtl at donext{%
+ \noexpand\dtlicompare
+ {\noexpand#1}%
+ {\expandonce\dtl at firstA\expandonce\dtl at restA}%
+ {\expandonce\dtl at firstB\expandonce\dtl at restB}}%
+ \dtl at donext
+ }%
+ }%
+ }%
+}
+\newcommand*{\dtlwordindexcompare}[3]{%
+ \@dtldictcompare{#1}{#2}{#3}{\@dtl at wordbreak}%
+}
+\newcommand*{\dtlletterindexcompare}[3]{%
+ \@dtldictcompare{#1}{#2}{#3}{}%
+}
+\newcommand*{\@dtldictcompare}[4]{%
+ \dtl at subnobrsp{#2}{\@dtl at argA}%
+ \dtl at subnobrsp{#3}{\@dtl at argB}%
+ \ifdefempty{\@dtl at argA}%
+ {%
+ \ifdefempty{\@dtl at argB}%
+ {%
+ #1=0\relax
+ }%
+ {%
+ #1=-1\relax
+ }%
+ }%
+ {%
+ \ifdefempty{\@dtl at argB}%
+ {%
+ #1=1\relax
+ }%
+ {%
+ \expandafter\DTLsplitstring\expandafter
+ {\@dtl at argA}{\datatoolpersoncomma}{\@dtl at beforepart}{\@dtl at afterpart}%
+ \ifdefempty{\@dtl at replaced}%
+ {%
+ \expandafter\DTLsplitstring\expandafter
+ {\@dtl at argA}{\datatoolplacecomma}{\@dtl at beforepart}{\@dtl at afterpart}%
+ \ifdefempty{\@dtl at replaced}%
+ {%
+ \expandafter\DTLsplitstring\expandafter
+ {\@dtl at argA}{\datatoolsubjectcomma}{\@dtl at beforepart}{\@dtl at afterpart}%
+ \ifdefempty{\@dtl at replaced}%
+ {%
+ \expandafter\DTLsplitstring\expandafter
+ {\@dtl at argA}{\datatoolparenstart}{\@dtl at beforepart}{\@dtl at afterpart}%
+ \ifdefempty{\@dtl at replaced}%
+ {%
+ \def\@dtl at A@comma{0}%
+ \let\@dtl at A@before\@dtl at argA
+ \def\@dtl at A@after{}%
+ }%
+ {%
+ \let\@dtl at A@comma\@dtl at replaced
+ \let\@dtl at A@before\@dtl at beforepart
+ \let\@dtl at A@after\@dtl at afterpart
+ }%
+ }%
+ {%
+ \let\@dtl at A@comma\@dtl at replaced
+ \let\@dtl at A@before\@dtl at beforepart
+ \let\@dtl at A@after\@dtl at afterpart
+ }%
+ }%
+ {%
+ \let\@dtl at A@comma\@dtl at replaced
+ \let\@dtl at A@before\@dtl at beforepart
+ \let\@dtl at A@after\@dtl at afterpart
+ }%
+ }%
+ {%
+ \let\@dtl at A@comma\@dtl at replaced
+ \let\@dtl at A@before\@dtl at beforepart
+ \let\@dtl at A@after\@dtl at afterpart
+ }%
+ \expandafter\DTLsplitstring\expandafter
+ {\@dtl at argB}{\datatoolpersoncomma}{\@dtl at beforepart}{\@dtl at afterpart}%
+ \ifdefempty{\@dtl at replaced}%
+ {%
+ \expandafter\DTLsplitstring\expandafter
+ {\@dtl at argB}{\datatoolplacecomma}{\@dtl at beforepart}{\@dtl at afterpart}%
+ \ifdefempty{\@dtl at replaced}%
+ {%
+ \expandafter\DTLsplitstring\expandafter
+ {\@dtl at argB}{\datatoolsubjectcomma}{\@dtl at beforepart}{\@dtl at afterpart}%
+ \ifdefempty{\@dtl at replaced}%
+ {%
+ \expandafter\DTLsplitstring\expandafter
+ {\@dtl at argB}{\datatoolparenstart}{\@dtl at beforepart}{\@dtl at afterpart}%
+ \ifdefempty{\@dtl at replaced}%
+ {%
+ \def\@dtl at B@comma{0}%
+ \let\@dtl at B@before\@dtl at argB
+ \def\@dtl at B@after{}%
+ }%
+ {%
+ \let\@dtl at B@comma\@dtl at replaced
+ \let\@dtl at B@before\@dtl at beforepart
+ \let\@dtl at B@after\@dtl at afterpart
+ }%
+ }%
+ {%
+ \let\@dtl at B@comma\@dtl at replaced
+ \let\@dtl at B@before\@dtl at beforepart
+ \let\@dtl at B@after\@dtl at afterpart
+ }%
+ }%
+ {%
+ \let\@dtl at B@comma\@dtl at replaced
+ \let\@dtl at B@before\@dtl at beforepart
+ \let\@dtl at B@after\@dtl at afterpart
+ }%
+ }%
+ {%
+ \let\@dtl at B@comma\@dtl at replaced
+ \let\@dtl at B@before\@dtl at beforepart
+ \let\@dtl at B@after\@dtl at afterpart
+ }%
+ \expandafter\dtl at ifcasechargroup\@dtl at A@before\dtl at end@ifcasechargroup
+ {\def\@dtl at A@chargroup{2}}%
+ {\def\@dtl at A@chargroup{1}}%
+ {\def\@dtl at A@chargroup{0}}%
+ \expandafter\dtl at ifcasechargroup\@dtl at B@before\dtl at end@ifcasechargroup
+ {\def\@dtl at B@chargroup{2}}%
+ {\def\@dtl at B@chargroup{1}}%
+ {\def\@dtl at B@chargroup{0}}%
+ \ifnum\@dtl at A@chargroup<\@dtl at B@chargroup
+ #1=-1\relax
+ \else
+ \ifnum\@dtl at A@chargroup>\@dtl at B@chargroup
+ #1=1\relax
+ \else
+ \ifcase\@dtl at A@chargroup
+ \edef\dtl at donext{%
+ \noexpand\dtlcompare
+ {\noexpand#1}%
+ {\expandonce\@dtl at A@before}%
+ {\expandonce\@dtl at B@before}}%
+ \dtl at donext
+ \or
+ \ifnum\@dtl at A@before<\@dtl at B@before\relax
+ #1=-1\relax
+ \else
+ \ifnum\@dtl at A@before>\@dtl at B@before\relax
+ #1=1\relax
+ \else
+ #1=0\relax
+ \fi
+ \fi
+ \or
+ \@dtlwordindexcompare{#1}{\@dtl at A@before}{\@dtl at B@before}
+ {\dtlicomparewords}{#4}%
+ \ifnum#1=0\relax
+ \let\@org at dtl@person at comma\datatoolpersoncomma
+ \let\@org at dtl@place at comma\datatoolplacecomma
+ \let\@org at dtl@subject at comma\datatoolsubjectcomma
+ \let\@org at dtl@paren at start\datatoolparenstart
+ \def\datatoolpersoncomma{3}%
+ \def\datatoolplacecomma{2}%
+ \def\datatoolsubjectcomma{1}%
+ \def\datatoolparenstart{-1}%
+ \ifnum\@dtl at A@comma>\@dtl at B@comma\relax
+ #1=-1\relax
+ \else
+ \ifnum\@dtl at A@comma<\@dtl at B@comma\relax
+ #1=1\relax
+ \else
+ \@dtlwordindexcompare{#1}{\@dtl at B@before}{\@dtl at A@before}
+ {\dtlcomparewords}{#4}%
+ \ifnum#1=0\relax
+ \@dtlwordindexcompare{#1}{\@dtl at A@after}{\@dtl at B@after}
+ {\dtlicomparewords}{#4}%
+ \fi
+ \fi
+ \fi
+ \let\datatoolpersoncomma\@org at dtl@person at comma
+ \let\datatoolplacecomma\@org at dtl@place at comma
+ \let\datatoolsubjectcomma\@org at dtl@subject at comma
+ \let\datatoolparenstart\@org at dtl@paren at start
+ \fi
+ \fi
+ \fi
+ \fi
+ }%
+ }%
+}%
+\newcommand*{\datatoolpersoncomma}{,\space}
+\newcommand*{\datatoolplacecomma}{,\space}
+\newcommand*{\datatoolsubjectcomma}{,\space}
+\newcommand*{\datatoolparenstart}{\space}
+\newcommand*{\@dtlwordindexcompare}[5]{%
+ \dtl at setwordbreaks{#2}{#5}%
+ \let#2\dtl at string
+ \dtl at setwordbreaks{#3}{}%
+ \let#3\dtl at string
+ \edef\@dtl at do@compare{%
+ \noexpand#4{\noexpand#1}%
+ {\expandonce#2}{\expandonce#3}%
+ }%
+ \@dtl at do@compare
+}
+\newcommand*{\@dtl at dict@compare}[4]{%
+ \ifdefempty{#2}%
+ {%
+ \ifdefempty{#3}%
+ {%
+ #1=0\relax
+ }%
+ {%
+ #1=-1\relax
+ }%
+ }%
+ {%
+ \ifdefempty{#3}%
+ {%
+ #1=1\relax
+ }%
+ {%
+ \expandafter\dtl at grabword#2\@dtl at endgrabword\dtl at A@first\dtl at A@remain
+ \expandafter\dtl at grabword#3\@dtl at endgrabword\dtl at B@first\dtl at B@remain
+ \edef\@dtl at do@compare{%
+ \noexpand#4{\noexpand#1}%
+ {\expandonce\dtl at A@first}{\expandonce\dtl at B@first}%
+ }%
+ \@dtl at do@compare
+ \ifnum#1=0\relax
+ \@dtl at dict@compare{#1}{\dtl at A@remain}{\dtl at B@remain}{#4}%
+ \fi
+ }%
+ }%
+}
+\def\dtl at grabword#1\@dtl at wordbreak#2\@dtl at endgrabword#3#4{%
+ \def#3{#1}%
+ \def#4{#2}%
+}
+\newcommand{\dtlicomparewords}[3]{%
+ \dtlicompare{#1}{#2}{#3}%
+}
+\newcommand{\dtlcomparewords}[3]{%
+ \dtlcompare{#1}{#2}{#3}%
+}
+\newcommand*{\dtl at setwordbreaks}[2]{%
+ \expandafter\dtl at subnobrsp\expandafter{#1}{\dtl at string}%
+ \DTLsubstituteall{\dtl at string}{~}{#2}%
+ \DTLsubstituteall{\dtl at string}{\ }{#2}%
+ \DTLsubstituteall{\dtl at string}{\space}{#2}%
+ \DTLsubstituteall{\dtl at string}{-}{#2}%
+ \toks@{#2}%
+ \edef\dtl at do@setwordbreaks{%
+ \noexpand\@dtl at setwordbreaks{\the\toks@}\expandonce\dtl at string\space\noexpand\@nil}%
+ \def\dtl at string{}%
+ \dtl at do@setwordbreaks
+}
+\def\@dtl at setwordbreaks#1#2 #3{%
+ \def\dtl at tmp{#3}%
+ \ifx\@nnil\dtl at tmp
+ \let\@dtl at setwordbreaks@next\@gobbletwo
+ \appto\dtl at string{#2}%
+ \else
+ \let\@dtl at setwordbreaks@next\@dtl at setwordbreaks
+ \appto\dtl at string{#2#1}%
+ \fi
+ \@dtl at setwordbreaks@next{#1}#3%
+}
+\newcommand*{\dtl at setwordbreaksnohyphens}[2]{%
+ \expandafter\dtl at subnobrsp\expandafter{#1}{\dtl at string}%
+ \DTLsubstituteall{\dtl at string}{~}{#2}%
+ \DTLsubstituteall{\dtl at string}{\ }{#2}%
+ \DTLsubstituteall{\dtl at string}{\space}{#2}%
+ \toks@{#2}%
+ \edef\dtl at do@setwordbreaks{%
+ \noexpand\@dtl at setwordbreaks{\the\toks@}\expandonce\dtl at string\space\noexpand\@nil}%
+ \def\dtl at string{}%
+ \dtl at do@setwordbreaks
+}
+\newcommand*{\@dtl at wordbreak}{ }
+\def\dtl at ifcasechargroup#1#2\dtl at end@ifcasechargroup#3#4#5{%
+ \expandafter\dtl at if@two at octets#1#2\relax\relax\dtl at end@if at two@octets
+ {%
+ \dtl at getfirst@UTFviii#1#2\@nil\end at dtl@getfirst at UTFviii
+ \expandafter\dtlsetUTFviiilccharcode\expandafter{\dtl at first}{\count@}%
+ \ifnum\count@<`a\relax #5\else#3\fi
+ }%
+ {%
+ \dtlifcasechargroup{#1}%
+ {#3}%
+ {%
+ \DTLifint{#1#2}
+ {%
+ #4%
+ }%
+ {%
+ #3%
+ }%
+ }%
+ {#5}%
+ }%
+}
+\newcommand*{\dtlifcasechargroup}[4]{%
+ \count@=`#1\relax
+ \dtlifintclosedbetween{\number\count@}{48}{57}%
+ {%
+ #3%
+ }%
+ {%
+ \dtlifintclosedbetween{\number\count@}{97}{122}%
+ {%
+ #2%
+ }%
+ {%
+ \dtlifintclosedbetween{\number\count@}{65}{90}%
+ {%
+ #2%
+ }%
+ {%
+ #4%
+ }%
+ }%
+ }%
+}
+\newcommand*{\dtlparsewords}[2]{%
+ \dtl at subnobrsp{#1}{\dtl at string}%
+ \DTLsubstituteall{\dtl at string}{~}{ }%
+ \DTLsubstituteall{\dtl at string}{\ }{ }%
+ \DTLsubstituteall{\dtl at string}{\space}{ }%
+ \DTLsubstituteall{\dtl at string}{-}{ }%
+ \let\dtl at parsewordshandler#2\relax
+ \edef\dtl at donext{%
+ \noexpand\@dtl at parse@words\expandonce\dtl at string\space\noexpand\@nil}%
+ \dtl at donext
+}
+\def\@dtl at parse@words#1 #2{%
+ \def\dtl at tmp{#2}%
+ \ifx\@nnil\dtl at tmp
+ \let\parse at wordsnext=\@gobble
+ \else
+ \let\parse at wordsnext=\@dtl at parse@words
+ \fi
+ \dlt at parsewordshandler{#1}%
+ \parse at wordsnext#2%
+}
+\newcommand*{\DTLifstringlt}{\@ifstar\@sDTLifstringlt\@DTLifstringlt}
+\newcommand*{\@DTLifstringlt}[4]{%
+ \protected at edef\@dtl at tmpcmp{%
+ \noexpand\dtlcompare{\noexpand\@dtl at tmpcount}{#1}{#2}}%
+ \@dtl at tmpcmp
+ \ifnum\@dtl at tmpcount<0\relax
+ #3%
+ \else
+ #4%
+ \fi
+}
+\newcommand*{\@sDTLifstringlt}[4]{%
+ \protected at edef\@dtl at tmpcmp{%
+ \noexpand\dtlicompare{\noexpand\@dtl at tmpcount}{#1}{#2}}%
+ \@dtl at tmpcmp
+ \ifnum\@dtl at tmpcount<0\relax
+ #3%
+ \else
+ #4%
+ \fi
+}
+\newcommand*{\DTLiflt}{\@ifstar\@sDTLiflt\@DTLiflt}
+\newcommand*{\@DTLiflt}[4]{%
+ \dtl at testbothnumerical{#1}{#2}%
+ \if at dtl@condition
+ \DTLifnumlt{#1}{#2}{#3}{#4}%
+ \else
+ \@DTLifstringlt{#1}{#2}{#3}{#4}%
+ \fi
+}
+\newcommand*{\@sDTLiflt}[4]{%
+ \dtl at testbothnumerical{#1}{#2}%
+ \if at dtl@condition
+ \DTLifnumlt{#1}{#2}{#3}{#4}%
+ \else
+ \@sDTLifstringlt{#1}{#2}{#3}{#4}%
+ \fi
+}
+\newcommand*{\DTLifnumgt}[4]{%
+ \DTLconverttodecimal{#1}{\@dtl at numi}%
+ \DTLconverttodecimal{#2}{\@dtl at numii}%
+ \dtlifnumgt{\@dtl at numi}{\@dtl at numii}%
+ {%
+ #3%
+ }%
+ {%
+ #4%
+ }%
+}
+\newcommand*{\DTLifstringgt}{\@ifstar\@sDTLifstringgt\@DTLifstringgt}
+\newcommand*{\@DTLifstringgt}[4]{%
+ \protected at edef\@dtl at tmpcmp{%
+ \noexpand\dtlcompare{\noexpand\@dtl at tmpcount}{#1}{#2}}%
+ \@dtl at tmpcmp
+ \ifnum\@dtl at tmpcount>0\relax
+ #3%
+ \else
+ #4%
+ \fi
+}
+\newcommand*{\@sDTLifstringgt}[4]{%
+ \protected at edef\@dtl at tmpcmp{%
+ \noexpand\dtlicompare{\noexpand\@dtl at tmpcount}{#1}{#2}}%
+ \@dtl at tmpcmp
+ \ifnum\@dtl at tmpcount>0\relax
+ #3%
+ \else
+ #4%
+ \fi
+}
+\newcommand*{\DTLifgt}{\@ifstar\@sDTLifgt\@DTLifgt}
+\newcommand*{\@DTLifgt}[4]{%
+ \dtl at testbothnumerical{#1}{#2}%
+ \if at dtl@condition
+ \DTLifnumgt{#1}{#2}{#3}{#4}%
+ \else
+ \@DTLifstringgt{#1}{#2}{#3}{#4}%
+ \fi
+}
+\newcommand*{\@sDTLifgt}[4]{%
+ \dtl at testbothnumerical{#1}{#2}%
+ \if at dtl@condition
+ \DTLifnumgt{#1}{#2}{#3}{#4}%
+ \else
+ \@sDTLifstringgt{#1}{#2}{#3}{#4}%
+ \fi
+}
+\newcommand*{\DTLifnumeq}[4]{%
+ \DTLconverttodecimal{#1}{\@dtl at numi}%
+ \DTLconverttodecimal{#2}{\@dtl at numii}%
+ \dtlifnumeq{\@dtl at numi}{\@dtl at numii}%
+ {%
+ #3%
+ }%
+ {%
+ #4%
+ }%
+}
+\newcommand*{\DTLifstringeq}{\@ifstar\@sDTLifstringeq\@DTLifstringeq}
+\newcommand*{\@DTLifstringeq}[4]{%
+ \protected at edef\@dtl at tmpcmp{%
+ \noexpand\dtlcompare{\noexpand\@dtl at tmpcount}{#1}{#2}}%
+ \@dtl at tmpcmp
+ \ifnum\@dtl at tmpcount=0\relax
+ #3%
+ \else
+ #4%
+ \fi
+}
+\newcommand*{\@sDTLifstringeq}[4]{%
+ \protected at edef\@dtl at tmpcmp{%
+ \noexpand\dtlicompare{\noexpand\@dtl at tmpcount}{#1}{#2}}%
+ \@dtl at tmpcmp
+ \ifnum\@dtl at tmpcount=0\relax
+ #3%
+ \else
+ #4%
+ \fi
+}
+\newcommand*{\DTLifeq}{\@ifstar\@sDTLifeq\@DTLifeq}
+\newcommand*{\@DTLifeq}[4]{%
+ \dtl at testbothnumerical{#1}{#2}%
+ \if at dtl@condition
+ \DTLifnumeq{#1}{#2}{#3}{#4}%
+ \else
+ \@DTLifstringeq{#1}{#2}{#3}{#4}%
+ \fi
+}
+\newcommand*{\@sDTLifeq}[4]{%
+ \dtl at testbothnumerical{#1}{#2}%
+ \if at dtl@condition
+ \DTLifnumeq{#1}{#2}{#3}{#4}%
+ \else
+ \@sDTLifstringeq{#1}{#2}{#3}{#4}%
+ \fi
+}
+\newcommand*{\DTLifSubString}[4]{%
+ \protected at edef\@dtl at dotestifsubstring{\noexpand\dtl at testifsubstring
+ {#1}{#2}}%
+ \@dtl at dotestifsubstring
+ \if at dtl@condition
+ #3%
+ \else
+ #4%
+ \fi
+}
+\newcommand*{\dtl at testifsubstring}[2]{%
+ \dtl at subnobrsp{#1}{\@dtl at argA}%
+ \dtl at subnobrsp{#2}{\@dtl at argB}%
+ \dtl at setwordbreaksnohyphens{\@dtl at argA}{\@dtl at wordbreak}%
+ \let\@dtl at argA\dtl at string
+ \dtl at setwordbreaksnohyphens{\@dtl at argB}{\@dtl at wordbreak}%
+ \let\@dtl at argB\dtl at string
+ \edef\dtl at donext{%
+ \noexpand\@dtl at testifsubstring{\expandonce\@dtl at argA}{\expandonce\@dtl at argB}}%
+ \dtl at donext
+}
+\newcommand*{\@dtl at testifsubstring}[2]{%
+ \def\@dtl at subs@argA{#1}%
+ \def\@dtl at subs@argB{#2}%
+ \ifdefempty{\@dtl at subs@argB}%
+ {%
+ \@dtl at conditiontrue
+ }%
+ {%
+ \ifdefempty{\@dtl at subs@argA}%
+ {%
+ \@dtl at conditionfalse
+ }%
+ {%
+ \@dtl at teststartswith{#1}{#2}%
+ \if at dtl@condition
+ \else
+ \dtl at getfirst#1\end at dtl@getfirst
+ \expandafter\dtl at ifsingle\expandafter{\dtl at first}%
+ {%
+ \expandafter\@dtl at testifsubstring\expandafter{\dtl at rest}{#2}%
+ }%
+ {%
+ \protected at edef\@dtl at donext{\noexpand\@dtl at testifsubstring
+ {\expandonce\dtl at first\expandonce\dtl at rest}{\expandonce\@dtl at subs@argB}}%
+ \@dtl at donext
+ }%
+ \fi
+ }%
+ }%
+}
+\newcommand*{\DTLifStartsWith}[4]{%
+ \@dtl at conditionfalse
+ \protected at edef\@dtl at tmp{\noexpand\dtl at teststartswith{#1}{#2}}%
+ \@dtl at tmp
+ \if at dtl@condition
+ #3%
+ \else
+ #4%
+ \fi
+}
+\newcommand*{\dtl at teststartswith}[2]{%
+ \dtl at subnobrsp{#1}{\@dtl at argA}%
+ \dtl at subnobrsp{#2}{\@dtl at argB}%
+ \dtl at setwordbreaksnohyphens{\@dtl at argA}{\@dtl at wordbreak}%
+ \let\@dtl at argA\dtl at string
+ \dtl at setwordbreaksnohyphens{\@dtl at argB}{\@dtl at wordbreak}%
+ \let\@dtl at argB\dtl at string
+ \edef\dtl at donext{%
+ \noexpand\@dtl at teststartswith{\expandonce\@dtl at argA}{\expandonce\@dtl at argB}}%
+ \dtl at donext
+}
+
+\newcommand*{\@dtl at teststartswith}[2]{%
+ \def\@dtl at argA{#1}%
+ \def\@dtl at argB{#2}%
+ \ifdefempty{\@dtl at argA}%
+ {%
+ \ifdefempty{\@dtl at argB}%
+ {%
+ \@dtl at conditiontrue
+ }%
+ {%
+ \@dtl at conditionfalse
+ }%
+ }%
+ {%
+ \ifdefempty{\@dtl at argB}%
+ {%
+ \@dtl at conditiontrue
+ }%
+ {%
+ \expandafter\dtl at getfirst\@dtl at argA\end at dtl@getfirst
+ \let\dtl at firstA=\dtl at first
+ \let\dtl at restA=\dtl at rest
+ \expandafter\dtl at getfirst\@dtl at argB\end at dtl@getfirst
+ \let\dtl at firstB=\dtl at first
+ \let\dtl at restB=\dtl at rest
+ \expandafter\dtl at ifsingle\expandafter{\dtl at firstA}%
+ {%
+ \expandafter\dtl at ifsingle\expandafter{\dtl at firstB}%
+ {%
+ \expandafter\dtl at setcharcode\expandafter{\dtl at firstA}{\dtl at codeA}%
+ \expandafter\dtl at setcharcode\expandafter{\dtl at firstB}{\dtl at codeB}%
+ \ifnum\dtl at codeA=-1\relax
+ \ifnum\dtl at codeB=-1\relax
+ \protected at edef\dtl at donext{%
+ \noexpand\@dtl at teststartswith{\expandonce\dtl at restA}{\expandonce\dtl at restB}}%
+ \dtl at donext
+ \else
+ \protected at edef\dtl at donext{%
+ \noexpand\@dtl at teststartswith
+ {\expandonce\dtl at restA}{\expandonce\dtl at firstB\expandonce\dtl at restB}}%
+ \dtl at donext
+ \fi
+ \else
+ \ifnum\dtl at codeB=-1\relax
+ \protected at edef\dtl at donext{%
+ \noexpand\@dtl at teststartswith
+ {\expandonce\dtl at firstA\expandonce\dtl at restA}{\expandonce\dtl at restB}}%
+ \dtl at donext
+ \else
+ \ifnum\dtl at codeA=\dtl at codeB
+ \protected at edef\dtl at donext{%
+ \noexpand\@dtl at teststartswith{\expandonce\dtl at restA}{\expandonce\dtl at restB}}%
+ \dtl at donext
+ \else
+ \@dtl at conditionfalse
+ \fi
+ \fi
+ \fi
+ }%
+ {%
+ \protected at edef\dtl at donext{%
+ \noexpand\@dtl at teststartswith
+ {\expandonce\dtl at firstA\expandonce\dtl at restA}%
+ {\expandonce\dtl at firstB\expandonce\dtl at restB}}%
+ \dtl at donext
+ }%
+ }%
+ {%
+ \protected at edef\dtl at donext{%
+ \noexpand\@dtl at teststartswith
+ {\expandonce\dtl at firstA\expandonce\dtl at restA}%
+ {\expandonce\dtl at firstB\expandonce\dtl at restB}}%
+ }%
+ }%
+ }%
+}
+\newcommand*{\DTLifnumclosedbetween}[5]{%
+ \DTLconverttodecimal{#1}{\@dtl at numi}%
+ \DTLconverttodecimal{#2}{\@dtl at numii}%
+ \DTLconverttodecimal{#3}{\@dtl at numiii}%
+ \DTLifFPclosedbetween{\@dtl at numi}{\@dtl at numii}{\@dtl at numiii}{#4}{#5}%
+}
+\newcommand*{\DTLifstringclosedbetween}{%
+ \@ifstar\@sDTLifstringclosedbetween\@DTLifstringclosedbetween
+}
+\newcommand*{\@DTLifstringclosedbetween}[5]{%
+ \protected at edef\@dtl at tmpcmp{%
+ \noexpand\dtlcompare{\noexpand\@dtl at tmpcount}{#1}{#2}}%
+ \@dtl at tmpcmp
+ \let\@dtl at dovalue\relax
+ \ifnum\@dtl at tmpcount<0\relax
+ \def\@dtl at dovalue{#5}%
+ \fi
+ \ifx\@dtl at dovalue\relax
+ \protected at edef\@dtl at tmpcmp{%
+ \noexpand\dtlcompare{\noexpand\@dtl at tmpcount}{#1}{#3}}%
+ \@dtl at tmpcmp
+ \ifnum\@dtl at tmpcount>0\relax
+ \def\@dtl at dovalue{#5}%
+ \else
+ \def\@dtl at dovalue{#4}%
+ \fi
+ \fi
+ \@dtl at dovalue
+}
+\newcommand*{\@sDTLifstringclosedbetween}[5]{%
+ \protected at edef\@dtl at tmpcmp{%
+ \noexpand\dtlicompare{\noexpand\@dtl at tmpcount}{#1}{#2}}%
+ \@dtl at tmpcmp
+ \let\@dtl at dovalue\relax
+ \ifnum\@dtl at tmpcount<0\relax
+ \def\@dtl at dovalue{#5}%
+ \fi
+ \ifx\@dtl at dovalue\relax
+ \protected at edef\@dtl at tmpcmp{%
+ \noexpand\dtlicompare{\noexpand\@dtl at tmpcount}{#1}{#3}}%
+ \@dtl at tmpcmp
+ \ifnum\@dtl at tmpcount>0\relax
+ \def\@dtl at dovalue{#5}%
+ \else
+ \def\@dtl at dovalue{#4}%
+ \fi
+ \fi
+ \@dtl at dovalue
+}
+\newcommand*{\DTLifclosedbetween}{%
+ \@ifstar\@sDTLifclosedbetween\@DTLifclosedbetween
+}
+\newcommand*{\@DTLifclosedbetween}[5]{%
+ \dtl at testbothnumerical{#2}{#3}%
+ \if at dtl@condition
+ \dtl at ifsingle{#1}{%
+ \edef\@dtl at tmp{#1}}{%
+ \def\@dtl at tmp{#1}}%
+ \expandafter\@dtl at checknumerical\expandafter{\@dtl at tmp}%
+ \ifnum\@dtl at datatype>0\relax
+ \DTLifnumclosedbetween{#1}{#2}{#3}{#4}{#5}%
+ \else
+ \@DTLifstringclosedbetween{#1}{#2}{#3}{#4}{#5}%
+ \fi
+ \else
+ \@DTLifstringclosedbetween{#1}{#2}{#3}{#4}{#5}%
+ \fi
+}
+\newcommand*{\@sDTLifclosedbetween}[5]{%
+ \dtl at testbothnumerical{#2}{#3}%
+ \if at dtl@condition
+ \dtl at ifsingle{#1}{%
+ \edef\@dtl at tmp{#1}}{%
+ \def\@dtl at tmp{#1}}%
+ \expandafter\@dtl at checknumerical\expandafter{\@dtl at tmp}%
+ \ifnum\@dtl at datatype>0\relax
+ \DTLifnumclosedbetween{#1}{#2}{#3}{#4}{#5}%
+ \else
+ \@sDTLifstringclosedbetween{#1}{#2}{#3}{#4}{#5}%
+ \fi
+ \else
+ \@sDTLifstringclosedbetween{#1}{#2}{#3}{#4}{#5}%
+ \fi
+}
+\newcommand*{\DTLifnumopenbetween}[5]{%
+ \DTLconverttodecimal{#1}{\@dtl at numi}%
+ \DTLconverttodecimal{#2}{\@dtl at numii}%
+ \DTLconverttodecimal{#3}{\@dtl at numiii}%
+ \DTLifFPopenbetween{\@dtl at numi}{\@dtl at numii}{\@dtl at numiii}{#4}{#5}%
+}
+\newcommand*{\DTLifstringopenbetween}{%
+ \@ifstar\@sDTLifstringopenbetween\@DTLifstringopenbetween
+}
+\newcommand*{\@DTLifstringopenbetween}[5]{%
+ \protected at edef\@dtl at tmpcmp{%
+ \noexpand\dtlcompare{\noexpand\@dtl at tmpcount}{#1}{#2}}%
+ \@dtl at tmpcmp
+ \let\@dtl at dovalue\relax
+ \ifnum\@dtl at tmpcount>0\relax
+ \else
+ \def\@dtl at dovalue{#5}%
+ \fi
+ \ifx\@dtl at dovalue\relax
+ \protected at edef\@dtl at tmpcmp{%
+ \noexpand\dtlcompare{\noexpand\@dtl at tmpcount}{#1}{#3}}%
+ \@dtl at tmpcmp
+ \ifnum\@dtl at tmpcount<0\relax
+ \def\@dtl at dovalue{#4}%
+ \else
+ \def\@dtl at dovalue{#5}%
+ \fi
+ \fi
+ \@dtl at dovalue
+}
+\newcommand*{\@sDTLifstringopenbetween}[5]{%
+ \protected at edef\@dtl at tmpcmp{%
+ \noexpand\dtlicompare{\noexpand\@dtl at tmpcount}{#1}{#2}}%
+ \@dtl at tmpcmp
+ \let\@dtl at dovalue\relax
+ \ifnum\@dtl at tmpcount>0\relax
+ \else
+ \def\@dtl at dovalue{#5}%
+ \fi
+ \ifx\@dtl at dovalue\relax
+ \protected at edef\@dtl at tmpcmp{%
+ \noexpand\dtlicompare{\noexpand\@dtl at tmpcount}{#1}{#3}}%
+ \@dtl at tmpcmp
+ \ifnum\@dtl at tmpcount<0\relax
+ \def\@dtl at dovalue{#4}%
+ \else
+ \def\@dtl at dovalue{#5}%
+ \fi
+ \fi
+ \@dtl at dovalue
+}
+\newcommand*{\DTLifopenbetween}{%
+ \@ifstar\@sDTLifopenbetween\@DTLifopenbetween
+}
+\newcommand*{\@DTLifopenbetween}[5]{%
+ \dtl at testbothnumerical{#2}{#3}%
+ \if at dtl@condition
+ \dtl at ifsingle{#1}{%
+ \edef\@dtl at tmp{#1}}{%
+ \def\@dtl at tmp{#1}}%
+ \expandafter\@dtl at checknumerical\expandafter{\@dtl at tmp}%
+ \ifnum\@dtl at datatype>0\relax
+ \DTLifnumopenbetween{#1}{#2}{#3}{#4}{#5}%
+ \else
+ \@DTLifstringopenbetween{#1}{#2}{#3}{#4}{#5}%
+ \fi
+ \else
+ \@DTLifstringopenbetween{#1}{#2}{#3}{#4}{#5}%
+ \fi
+}
+\newcommand*{\@sDTLifopenbetween}[5]{%
+ \dtl at testbothnumerical{#2}{#3}%
+ \if at dtl@condition
+ \dtl at ifsingle{#1}{%
+ \edef\@dtl at tmp{#1}}{%
+ \def\@dtl at tmp{#1}}%
+ \expandafter\@dtl at checknumerical\expandafter{\@dtl at tmp}%
+ \ifnum\@dtl at datatype>0\relax
+ \DTLifnumopenbetween{#1}{#2}{#3}{#4}{#5}%
+ \else
+ \@sDTLifstringopenbetween{#1}{#2}{#3}{#4}{#5}%
+ \fi
+ \else
+ \@sDTLifstringopenbetween{#1}{#2}{#3}{#4}{#5}%
+ \fi
+}
+\let\DTLifFPopenbetween\dtlifnumopenbetween
+\let\DTLifFPclosedbetween\dtlifnumclosedbetween
+\newcommand*{\dtl at testlt}[2]{%
+ \DTLiflt{#1}{#2}{\@dtl at conditiontrue}{\@dtl at conditionfalse}%
+}
+\newcommand*{\DTLislt}[2]{%
+ \TE at throw\noexpand\dtl at testlt{#1}{#2}\noexpand\if at dtl@condition
+}
+\newcommand*{\dtl at testiclt}[2]{%
+ \@sDTLiflt{#1}{#2}{\@dtl at conditiontrue}{\@dtl at conditionfalse}%
+}
+\newcommand*{\DTLisilt}[2]{%
+ \TE at throw\noexpand\dtl at testiclt{#1}{#2}\noexpand\if at dtl@condition
+}
+\newcommand*{\dtl at testgt}[2]{%
+ \DTLifgt{#1}{#2}{\@dtl at conditiontrue}{\@dtl at conditionfalse}%
+}
+\newcommand*{\DTLisgt}[2]{%
+ \TE at throw\noexpand\dtl at testgt{#1}{#2}\noexpand\if at dtl@condition
+}
+\newcommand*{\dtl at testicgt}[2]{%
+ \@sDTLifgt{#1}{#2}{\@dtl at conditiontrue}{\@dtl at conditionfalse}%
+}
+\newcommand*{\DTLisigt}[2]{%
+ \TE at throw\noexpand\dtl at testicgt{#1}{#2}\noexpand\if at dtl@condition
+}
+\newcommand*{\dtl at testeq}[2]{%
+ \DTLifeq{#1}{#2}{\@dtl at conditiontrue}{\@dtl at conditionfalse}%
+}
+\newcommand*{\DTLiseq}[2]{%
+ \TE at throw\noexpand\dtl at testeq{#1}{#2}\noexpand\if at dtl@condition
+}
+\newcommand*{\dtl at testiceq}[2]{%
+ \@sDTLifeq{#1}{#2}{\@dtl at conditiontrue}{\@dtl at conditionfalse}%
+}
+\newcommand*{\DTLisieq}[2]{%
+ \TE at throw\noexpand\dtl at testiceq{#1}{#2}\noexpand\if at dtl@condition
+}
+\newcommand*{\DTLisSubString}[2]{%
+ \TE at throw\noexpand\dtl at testifsubstring{#1}{#2}%
+ \noexpand\if at dtl@condition
+}
+\newcommand*{\DTLisPrefix}[2]{%
+ \TE at throw\noexpand\dtl at teststartswith{#1}{#2}%
+ \noexpand\if at dtl@condition
+}
+\newcommand*{\DTLisinlist}[2]{%
+ \TE at throw\noexpand\dtl at testinlist{#1}{#2}%
+ \noexpand\if at dtl@condition
+}
+\newcommand*{\dtl at testinlist}[2]{%
+ \DTLifinlist{#1}{#2}{\@dtl at conditiontrue}{\@dtl at conditionfalse}%
+}
+\newcommand*{\dtl at testnumclosedbetween}[3]{%
+ \DTLifnumclosedbetween{#1}{#2}{#3}%
+ {\@dtl at conditiontrue}{\@dtl at conditionfalse}%
+}
+\newcommand*{\DTLisnumclosedbetween}[3]{%
+ \TE at throw\noexpand\dtl at testnumclosedbetween{#1}{#2}{#3}%
+ \noexpand\if at dtl@condition
+}
+\newcommand*{\dtl at testnumopenbetween}[3]{%
+ \DTLifnumopenbetween{#1}{#2}{#3}%
+ {\@dtl at conditiontrue}{\@dtl at conditionfalse}%
+}
+\newcommand*{\DTLisnumopenbetween}[3]{%
+ \TE at throw\noexpand\dtl at testnumopenbetween{#1}{#2}{#3}%
+ \noexpand\if at dtl@condition
+}
+\newcommand*{\dtl at testclosedbetween}[3]{%
+ \DTLifclosedbetween{#1}{#2}{#3}%
+ {\@dtl at conditiontrue}{\@dtl at conditionfalse}%
+}
+\newcommand*{\DTLisclosedbetween}[3]{%
+ \TE at throw\noexpand\dtl at testclosedbetween{#1}{#2}{#3}%
+ \noexpand\if at dtl@condition
+}
+\newcommand*{\dtl at testiclosedbetween}[3]{%
+ \@sDTLifclosedbetween{#1}{#2}{#3}%
+ {\@dtl at conditiontrue}{\@dtl at conditionfalse}%
+}
+\newcommand*{\DTLisiclosedbetween}[3]{%
+ \TE at throw\noexpand\dtl at testiclosedbetween{#1}{#2}{#3}%
+ \noexpand\if at dtl@condition
+}
+\newcommand*{\dtl at testopenbetween}[3]{%
+ \DTLifopenbetween{#1}{#2}{#3}%
+ {\@dtl at conditiontrue}{\@dtl at conditionfalse}%
+}
+\newcommand*{\DTLisopenbetween}[3]{%
+ \TE at throw\noexpand\dtl at testopenbetween{#1}{#2}{#3}%
+ \noexpand\if at dtl@condition
+}
+\newcommand*{\dtl at testiopenbetween}[3]{%
+ \@sDTLifopenbetween{#1}{#2}{#3}%
+ {\@dtl at conditiontrue}{\@dtl at conditionfalse}%
+}
+\newcommand*{\DTLisiopenbetween}[3]{%
+ \TE at throw\noexpand\dtl at testiopenbetween{#1}{#2}{#3}%
+ \noexpand\if at dtl@condition
+}
+\let\DTLisFPclosedbetween\DTLisnumclosedbetween
+\newcommand*{\dtl at testFPopenbetween}[3]{%
+ \DTLifFPopenbetween{#1}{#2}{#3}%
+ {\@dtl at conditiontrue}{\@dtl at conditionfalse}%
+}
+\newcommand*{\DTLisFPopenbetween}[3]{%
+ \TE at throw\noexpand\dtl at testFPopenbetween{#1}{#2}{#3}%
+ \noexpand\if at dtl@condition
+}
+\newcommand*{\dtl at testFPislt}[2]{%
+ \dtlifnumlt{#1}{#2}%
+ {%
+ \@dtl at conditiontrue
+ }%
+ {%
+ \@dtl at conditionfalse
+ }%
+}
+\newcommand*{\DTLisFPlt}[2]{%
+ \TE at throw\noexpand\dtl at testFPislt{#1}{#2}%
+ \noexpand\if at dtl@condition
+}
+\newcommand*{\dtl at testFPisgt}[2]{%
+ \dtlifnumgt{#1}{#2}%
+ {%
+ \@dtl at conditiontrue
+ }%
+ {%
+ \@dtl at conditionfalse
+ }%
+}
+\newcommand*{\DTLisFPgt}[2]{%
+ \TE at throw\noexpand\dtl at testFPisgt{#1}{#2}%
+ \noexpand\if at dtl@condition
+}
+\newcommand*{\dtl at testFPiseq}[2]{%
+ \dtlifnumeq{#1}{#2}%
+ {%
+ \@dtl at conditiontrue
+ }%
+ {%
+ \@dtl at conditionfalse
+ }%
+}
+\newcommand*{\DTLisFPeq}[2]{%
+ \TE at throw\noexpand\dtl at testFPiseq{#1}{#2}%
+ \noexpand\if at dtl@condition
+}
+\newcommand*{\dtl at testFPislteq}[2]{%
+ \dtlifnumlt{#1}{#2}%
+ {%
+ \@dtl at conditiontrue
+ }%
+ {%
+ \@dtl at conditionfalse
+ }%
+ \if at dtl@condition
+ \else
+ \dtl at testFPiseq{#1}{#2}%
+ \fi
+}
+\newcommand*{\DTLisFPlteq}[2]{%
+ \TE at throw\noexpand\dtl at testFPislteq{#1}{#2}%
+ \noexpand\if at dtl@condition
+}
+\newcommand*{\dtl at testFPisgteq}[2]{%
+ \dtlifnumgt{#1}{#2}%
+ {%
+ \@dtl at conditiontrue
+ }%
+ {%
+ \@dtl at conditionfalse
+ }%
+ \if at dtl@condition
+ \else
+ \dtl at testFPiseq{#1}{#2}%
+ \fi
+}
+\newcommand*{\DTLisFPgteq}[2]{%
+ \TE at throw\noexpand\dtl at testFPisgteq{#1}{#2}%
+ \noexpand\if at dtl@condition}
+\newcommand*{\dtl at teststring}[1]{%
+ \DTLifstring{#1}{\@dtl at conditiontrue}{\@dtl at conditionfalse}}
+\newcommand*{\DTLisstring}[1]{%
+ \TE at throw\noexpand\dtl at teststring{#1}\noexpand\if at dtl@condition}
+\newcommand*{\dtl at testnumerical}[1]{%
+ \DTLifnumerical{#1}{\@dtl at conditiontrue}{\@dtl at conditionfalse}%
+}
+\newcommand*{\DTLisnumerical}[1]{%
+ \TE at throw\noexpand\dtl at testnumerical{#1}\noexpand\if at dtl@condition}
+\newcommand*{\dtl at testint}[1]{%
+ \DTLifint{#1}{\@dtl at conditiontrue}{\@dtl at conditionfalse}}
+\newcommand*{\DTLisint}[1]{%
+ \TE at throw\noexpand\dtl at testint{#1}\noexpand\if at dtl@condition}
+\newcommand*{\dtl at testreal}[1]{%
+ \DTLifreal{#1}{\@dtl at conditiontrue}{\@dtl at conditionfalse}}
+\newcommand*{\DTLisreal}[1]{%
+ \TE at throw\noexpand\dtl at testreal{#1}\noexpand\if at dtl@condition}
+\newcommand*{\dtl at testcurrency}[1]{%
+ \DTLifcurrency{#1}{\@dtl at conditiontrue}{\@dtl at conditionfalse}}
+\newcommand*{\DTLiscurrency}[1]{%
+ \TE at throw\noexpand\dtl at testcurrency{#1}\noexpand\if at dtl@condition}
+\newcommand*{\dtl at testcurrencyunit}[2]{%
+ \DTLifcurrencyunit{#1}{#2}{\@dtl at conditiontrue}{\@dtl at conditionfalse}}
+\newcommand*{\DTLiscurrencyunit}[2]{%
+ \TE at throw\noexpand\dtl at testcurrencyunit{#1}{#2}%
+ \noexpand\if at dtl@condition
+}
+\newcommand*{\dtlbreak}{%
+ \PackageError{datatool}{Can't break out of anything}{}%
+}
+\long\def\dtlforint#1=#2\to#3\step#4\do#5{%
+ \let\@dtl at orgbreak\dtlbreak
+ \def\@dtl at endloophook{}%
+ \def\dtlbreak{\def\@dtl at endloophook{#1=#3}}%
+ #1=#2\relax
+ \ifnum#4<0\relax
+ \whiledo{\(#1>#3\)\TE at or\(#1=#3\)}%
+ {%
+ #5%
+ \@dtl at endloophook
+ \advance#1 by #4\relax
+ }%
+ \else
+ \whiledo{\(#1<#3\)\TE at or\(#1=#3\)}%
+ {%
+ #5%
+ \@dtl at endloophook
+ \advance#1 by #4\relax
+ }%
+ \fi
+ \let\dtlbreak\@dtl at orgbreak
+}
+\newcount\@dtl at foreach@level
+\long\def\dtlgforint#1=#2\to#3\step#4\do#5{%
+ \global#1=#2\relax
+ \global\advance\@dtl at foreach@level by 1\relax
+ \expandafter\global\expandafter
+ \let\csname @dtl at endhook@\the\@dtl at foreach@level\endcsname
+ \relax
+ \expandafter\global\expandafter
+ \let\csname @dtl at break@\the\@dtl at foreach@level\endcsname
+ \dtlbreak
+ \gdef\dtlbreak{\expandafter
+ \gdef\csname @dtl at endhook@\the\@dtl at foreach@level\endcsname{%
+ #1=#3}}%
+ \ifnum#4<0\relax
+ \whiledo{\(#1>#3\)\TE at or\(#1=#3\)}%
+ {%
+ #5%
+ \csname @dtl at endhook@\the\@dtl at foreach@level\endcsname
+ \global\advance#1 by #4\relax
+ }%
+ \else
+ \whiledo{\(#1<#3\)\TE at or\(#1=#3\)}%
+ {%
+ #5%
+ \csname @dtl at endhook@\the\@dtl at foreach@level\endcsname
+ \global\advance#1 by #4\relax
+ }%
+ \fi
+ \expandafter\global\expandafter\let\expandafter\dtlbreak
+ \csname @dtl at break@\the\@dtl at foreach@level\endcsname
+ \global\advance\@dtl at foreach@level by -1\relax
+}
+\newenvironment{dtlenvgforint}[1]%
+{%
+ \def\@dtlenvgforint at arg{#1}%
+ \long at collect@body\@do at dtlenvgforint
+}%
+{}
+\newcommand{\@do at dtlenvgforint}[1]{%
+ \expandafter\dtlgforint\@dtlenvgforint at arg\do{#1}%
+}
+% \end{macrocode}
+%\iffalse
+% \begin{macrocode}
+%</datatool-base-2019-09-27.sty>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*datatool-fp-2019-09-27.sty>
+% \end{macrocode}
+%\fi
+%\subsection{Rollback v2.32 (datatool-fp-2019-09-27.sty)}
+% \begin{macrocode}
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{datatool-fp}[2019/09/27 v2.32 (NLCT)]
+\RequirePackage{xkeyval}
+\RequirePackage{fp}
+\RequirePackage{datatool-base}[=v2.32]
+\define at choicekey{datatool-fp}{verbose}[\val\nr]{true,false}[true]{%
+ \ifcase\nr\relax
+ \FPmessagestrue
+ \or
+ \FPmessagesfalse
+ \fi
+}
+\let\ifFPmessages\ifdtlverbose
+\ProcessOptionsX
+\providecommand*{\@dtl at mathprocessor}{fp}
+\newcommand*{\dtlifnumeq}[4]{%
+ \FPifeq{#1}{#2}%
+ #3%
+ \else
+ #4%
+ \fi
+}
+\let\ifdtlverbose\ifFPmessages
+\newcommand*{\dtlifnumlt}[4]{%
+ \FPiflt{#1}{#2}%
+ #3%
+ \else
+ #4%
+ \fi
+}
+\newcommand*{\dtlifnumgt}[4]{%
+ \FPifgt{#1}{#2}%
+ #3%
+ \else
+ #4%
+ \fi
+}
+\newcommand*{\dtlifnumopenbetween}[5]{%
+ \let\@dtl at dovalue\relax
+ \dtlifnumgt{#1}{#2}%
+ {}%
+ {%
+ \def\@dtl at dovalue{#5}%
+ }%
+ \dtlifnumlt{#1}{#3}%
+ {%
+ \ifx\@dtl at dovalue\relax
+ \def\@dtl at dovalue{#4}%
+ \fi
+ }%
+ {%
+ \def\@dtl at dovalue{#5}%
+ }%
+ \@dtl at dovalue
+}
+\newcommand*{\dtlifnumclosedbetween}[5]{%
+ \let\@dtl at dovalue\relax
+ \dtlifnumgt{#1}{#2}%
+ {}%
+ {%
+ \dtlifnumeq{#1}{#2}%
+ {%
+ \def\@dtl at dovalue{#4}%
+ }%
+ {%
+ \def\@dtl at dovalue{#5}%
+ }%
+ }%
+ \dtlifnumlt{#1}{#3}%
+ {%
+ \ifx\@dtl at dovalue\relax
+ \def\@dtl at dovalue{#4}%
+ \fi
+ }%
+ {%
+ \dtlifnumeq{#1}{#3}%
+ {%
+ \def\@dtl at dovalue{#4}%
+ }%
+ {%
+ \def\@dtl at dovalue{#5}%
+ }%
+ }%
+ \@dtl at dovalue
+}
+\newcommand*{\dtladd}[3]{%
+ \FPadd{#1}{#2}{#3}%
+}
+\newcommand*{\dtlsub}[3]{%
+ \FPsub{#1}{#2}{#3}%
+}
+\newcommand*{\dtlmul}[3]{%
+ \FPmul{#1}{#2}{#3}%
+}
+\newcommand*{\dtldiv}[3]{%
+ \FPdiv{#1}{#2}{#3}%
+}
+\newcommand*{\dtlroot}[2]{%
+ \FProot{#1}{#2}%
+}
+\newcommand*{\dtlround}[3]{%
+ \FPround{#1}{#2}{#3}%
+}
+\newcommand*{\dtltrunc}[3]{%
+ \FPtrunc{#1}{#2}{#3}%
+}
+\newcommand*{\dtlclip}[2]{%
+ \FPclip{#1}{#2}%
+}
+\newcommand*{\dtlmin}[3]{%
+ \FPmin{#1}{#2}{#3}%
+}
+\newcommand*{\dtlmax}[3]{%
+ \FPmax{#1}{#2}{#3}%
+}
+\newcommand*{\dtlabs}[2]{%
+ \FPabs{#1}{#2}%
+}
+\newcommand*{\dtlneg}[2]{%
+ \FPneg{#1}{#2}%
+}
+% \end{macrocode}
+%\iffalse
+% \begin{macrocode}
+%</datatool-fp-2019-09-27.sty>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*datatool-pgfmath-2019-09-27.sty>
+% \end{macrocode}
+%\fi
+%\subsection{Rollback v2.32 (datatool-pgfmath-2019-09-27.sty)}
+% \begin{macrocode}
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{datatool-pgfmath}[2019/09/27 v2.32 (NLCT)]
+\RequirePackage{xkeyval}
+\RequirePackage{pgfrcs,pgfkeys,pgfmath}
+\ProcessOptionsX
+\providecommand*{\@dtl at mathprocessor}{pgfmath}
+\newcommand*{\dtlifnumeq}[4]{%
+ \def\@dtl at truepart{#3}%
+ \def\@dtl at falsepart{#4}%
+ \pgfmathifthenelse{\number0#1==\number0#2}%
+ {"\noexpand\@dtl at truepart"}{"\noexpand\@dtl at falsepart"}%
+ \pgfmathresult
+}
+\RequirePackage{datatool-base}[=v2.32]
+\newcommand*{\dtlifnumlt}[4]{%
+ \def\@dtl at truepart{#3}%
+ \def\@dtl at falsepart{#4}%
+ \pgfmathifthenelse{\number0#1 < \number0#2}%
+ {"\noexpand\@dtl at truepart"}{"\noexpand\@dtl at falsepart"}%
+ \pgfmathresult
+}
+\newcommand*{\dtlifnumgt}[4]{%
+ \def\@dtl at truepart{#3}%
+ \def\@dtl at falsepart{#4}%
+ \pgfmathifthenelse{\number0#1 > \number0#2}%
+ {"\noexpand\@dtl at truepart"}{"\noexpand\@dtl at falsepart"}%
+ \pgfmathresult
+}
+\newcommand*{\dtlifnumopenbetween}[5]{%
+ \def\@dtl at truepart{#4}%
+ \def\@dtl at falsepart{#5}%
+ \pgfmathifthenelse
+ {(\number0#2 < \number0#1) && (\number0#1 < \number0#3)}%
+ {"\noexpand\@dtl at truepart"}{"\noexpand\@dtl at falsepart"}%
+ \pgfmathresult
+}
+\newcommand*{\dtlifnumclosedbetween}[5]{%
+ \def\@dtl at truepart{#4}%
+ \def\@dtl at falsepart{#5}%
+ \pgfmathifthenelse
+ {(\number0#2 <= \number0#1) && (\number0#1 <= \number0#3)}
+ {"\noexpand\@dtl at truepart"}{"\noexpand\@dtl at falsepart"}%
+ \pgfmathresult
+}
+\newcommand*{\dtladd}[3]{%
+ \pgfmathadd{#2}{#3}%
+ \let#1\pgfmathresult
+}
+\newcommand*{\dtlsub}[3]{%
+ \pgfmathsubtract{#2}{#3}%
+ \let#1\pgfmathresult
+}
+\newcommand*{\dtlmul}[3]{%
+ \pgfmathmultiply{#2}{#3}%
+ \let#1\pgfmathresult
+}
+\newcommand*{\dtldiv}[3]{%
+ \pgfmathdivide{#2}{#3}%
+ \let#1\pgfmathresult
+}
+\newcommand*{\dtlroot}[2]{%
+ \pgfmathsqrt{#2}%
+ \let#1\pgfmathresult
+}
+\newcommand*{\dtlround}[3]{%
+ \ifnum#3=0\relax
+ \pgfmathparse{int(round(#2))}%
+ \let#1\pgfmathresult
+ \else
+ \pgfmathparse{int(10^#3)}%
+ \let\dtl at tmpshift\pgfmathresult
+ \pgfmathparse{int(floor(#2))}%
+ \let\dtl at int@round\pgfmathresult
+ \pgfmathparse{int(round((#2-\dtl at int@round) * \dtl at tmpshift))}%
+ \@dtl at tmpcount=0\relax
+ \expandafter\@dtl at countdigits\pgfmathresult.\relax
+ \advance\@dtl at tmpcount by -#3\relax
+ \def\@dtl at intpart{}%
+ \def\@dtl at fracpart{}%
+ \expandafter\@dtl at gatherintfrac\pgfmathresult\relax
+ \edef\@dtl at intpart{\number\numexpr\dtl at int@round
+ +\number0\@dtl at intpart}%
+ \edef#1{\@dtl at intpart.\@dtl at fracpart}%
+ \fi
+}
+\newcommand*{\@dtl at gatherintfrac}[1]{%
+ \ifx\relax#1\relax
+ \else
+ \advance\@dtl at tmpcount by -1\relax
+ \ifnum\@dtl at tmpcount<0\relax
+ \edef\@dtl at fracpart{\@dtl at fracpart#1}%
+ \else
+ \edef\@dtl at intpart{\@dtl at intpart#1}%
+ \fi
+ \expandafter\@dtl at gatherintfrac
+ \fi
+}
+\newcommand*{\dtltrunc}[3]{%
+ \ifnum#3=0\relax
+ \pgfmathparse{int(floor(#2))}%
+ \let#1\pgfmathresult
+ \else
+ \pgfmathparse{int(10^#3)}%
+ \let\dtl at tmpshift\pgfmathresult
+ \pgfmathparse{int(floor(#2))}%
+ \let\dtl at int@trunc\pgfmathresult
+ \pgfmathparse{int(floor((#2-\dtl at int@trunc) * \dtl at tmpshift))}%
+ \@dtl at tmpcount=0\relax
+ \expandafter\@dtl at countdigits\pgfmathresult.\relax
+ \advance\@dtl at tmpcount by -#3\relax
+ \def\@dtl at intpart{}%
+ \def\@dtl at fracpart{}%
+ \expandafter\@dtl at gatherintfrac\pgfmathresult\relax
+ \edef\@dtl at intpart{\number\numexpr\dtl at int@trunc
+ +\number0\@dtl at intpart}%
+ \edef#1{\@dtl at intpart.\@dtl at fracpart}%
+ \fi
+}
+\newcommand*{\dtlclip}[2]{%
+ \edef#1{#2}%
+}
+\newcommand*{\dtlmin}[3]{%
+ \pgfmathmin{#2}{#3}%
+ \let#1\pgfmathresult
+}
+\newcommand*{\dtlmax}[3]{%
+ \pgfmathmax{#2}{#3}%
+ \let#1\pgfmathresult
+}
+\newcommand*{\dtlabs}[2]{%
+ \pgfmathabs{#2}%
+ \let#1\pgfmathresult
+}
+\newcommand*{\dtlneg}[2]{%
+ \pgfmathmul{-1}{#2}%
+ \let#1\pgfmathresult
+}
+% \end{macrocode}
+%\iffalse
+% \begin{macrocode}
+%</datatool-pgfmath-2019-09-27.sty>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*person-2019-09-27.sty>
+% \end{macrocode}
+%\fi
+%\subsection{Rollback v2.32 (person-2019-09-27.sty)}
+% \begin{macrocode}
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{person}[2019/09/27 v2.32 (NLCT)]
+\RequirePackage{ifthen}
+\RequirePackage{datatool}[=v2.32]
+\newcounter{people}
+\newcounter{person}
+\newcommand*{\@people at list}{,}
+\newcommand*{\@get at firstperson}[1]{%
+ \expandafter\@@get at firstperson\@people at list,\@nil{#1}}
+ \def\@@get at firstperson,#1,#2\@nil#3{%
+ \def#3{#1}%
+}
+\newcommand*{\malelabels}{male,Male,MALE,M,m}
+\newcommand*{\addmalelabel}[1]{%
+ \expandafter\@dtl at toksA\expandafter{\malelabels}%
+ \expandafter\@dtl at toksB\expandafter{#1}%
+ \edef\malelabels{\the\@dtl at toksA,\the\@dtl at toksB}%
+}
+\newcommand*{\addfemalelabel}[1]{%
+ \expandafter\@dtl at toksA\expandafter{\femalelabels}%
+ \expandafter\@dtl at toksB\expandafter{#1}%
+ \edef\femalelabels{\the\@dtl at toksA,\the\@dtl at toksB}%
+}
+\newcommand*{\femalelabels}{female,Female,FEMALE,F,f}
+\newcommand{\ifmalelabel}[3]{%
+ \expandafter\DTLifinlist\expandafter{#1}{\malelabels}{#2}{#3}%
+}
+\newcommand{\iffemalelabel}[3]{%
+ \expandafter\DTLifinlist\expandafter{#1}{\femalelabels}{#2}{#3}%
+}
+\newcommand*{\newperson}[4][anon]{%
+ \@ifundefined{person@#1 at name}%
+ {%
+ \ifmalelabel{#4}%
+ {%
+ \expandafter\gdef\csname person@#1 at gender\endcsname{male}%
+ }%
+ {%
+ \iffemalelabel{#4}%
+ {%
+ \expandafter\gdef\csname person@#1 at gender\endcsname{female}%
+ }%
+ {%
+ \PackageError{person}{Unknown gender `#4' for person
+ `#1'}{Allowed gender labels are: \malelabels\space or
+ \femalelabels}%
+ \@namedef{person@#1 at gender}{other}%
+ }%
+ }%
+ \expandafter
+ \protected at xdef\csname person@#1 at fullname\endcsname{#2}%
+ \expandafter
+ \protected at xdef\csname person@#1 at name\endcsname{#3}%
+ \protected at xdef\@people at list{\@people at list#1,}%
+ \stepcounter{people}%
+ }%
+ {%
+ \PackageError{person}{Person `#1' has already been defined}{}%
+ }%
+}
+\newcommand*{\removeperson}[1][anon]{%
+ \edef\@person at label{#1}%
+ \expandafter\@removeperson\expandafter{\@person at label}%
+}
+\newcommand*{\@removeperson}[1]{%
+ \ifpersonexists{#1}%
+ {%
+ \def\@remove at person##1,#1,##2\@nil{%
+ \def\@prsn at pre{##1}\def\@prsn at post{##2}}%
+ \expandafter\@remove at person\@people at list\@nil
+ \xdef\@people at list{\@prsn at pre,\@prsn at post}%
+ \addtocounter{people}{-1}%
+ \expandafter\global\expandafter
+ \let\csname person@#1 at name\endcsname\undefined
+ \expandafter\global\expandafter
+ \let\csname person@#1 at fullname\endcsname\undefined
+ \expandafter\global\expandafter
+ \let\csname person@#1 at gender\endcsname\undefined
+ }%
+ {%
+ \PackageError{person}{Can't remove person `#1': no such
+ person}{}%
+ }%
+}
+\newcommand*{\removepeople}[1]{%
+ \@for\@thisperson:=#1\do{%
+ \ifx\@thisperson\@empty
+ \else
+ \expandafter\removeperson\expandafter[\@thisperson]%
+ \fi
+ }%
+}
+\newcommand*{\removeallpeople}{%
+ \@for\@thisperson:=\@people at list\do{%
+ \expandafter\global\expandafter
+ \let\csname person@\@thisperson @name\endcsname\undefined
+ \expandafter\global\expandafter
+ \let\csname person@\@thisperson @fullname\endcsname\undefined
+ \expandafter\global\expandafter
+ \let\csname person@\@thisperson @gender\endcsname\undefined
+ }%
+ \setcounter{people}{0}%
+ \gdef\@people at list{,}%
+}
+\newcommand{\ifpersonexists}[3]{%
+ \@ifundefined{person@#1 at name}{#3}{#2}%
+}
+\newcommand{\ifmale}[3]{%
+ \ifpersonexists{#1}%
+ {%
+ \edef\@gender{\csname person@#1 at gender\endcsname}%
+ \ifx\@gender\@male at label
+ #2%
+ \else
+ #3%
+ \fi
+ }%
+ {%
+ \PackageError{person}{Person `#1' doesn't exist.}{}%
+ }%
+}
+\def\@male at label{male}
+\newcommand{\ifallmale}[3][\@people at list]{%
+ \@for\@thisperson:=#1\do{%
+ \ifpersonexists{\@thisperson}%
+ {%
+ \edef\@gender{\csname person@\@thisperson @gender\endcsname}%
+ \ifx\@gender\@male at label
+ \else
+ \@endfortrue
+ \fi
+ }%
+ {%
+ \PackageError{person}{Person `#1' doesn't exist.}{}%
+ }%
+ }%
+ \if at endfor
+ #3%
+ \else
+ #2%
+ \fi
+}
+\newcommand{\iffemale}[3]{%
+ \ifpersonexists{#1}%
+ {%
+ \edef\@gender{\csname person@#1 at gender\endcsname}%
+ \ifx\@gender\@female at label
+ #2%
+ \else
+ #3%
+ \fi
+ }%
+ {%
+ \PackageError{person}{Person `#1' doesn't exist.}{}%
+ }%
+}
+\def\@female at label{female}
+\newcommand{\ifallfemale}[3][\@people at list]{%
+ \@for\@thisperson:=#1\do{%
+ \edef\@gender{\csname person@\@thisperson @gender\endcsname}%
+ \ifx\@gender\@female at label
+ \else
+ \@endfortrue
+ \fi
+ }%
+ \if at endfor
+ #3%
+ \else
+ #2%
+ \fi
+}
+\def\foreachperson(#1,#2,#3,#4)#5{%
+ \ifx#5\in
+ \def\@do at foreachperson{\@foreachperson(#1,#2,#3,#4)#5}%
+ \else
+ \def\@do at foreachperson{%
+ \@foreachperson(#1,#2,#3,#4)\in\@people at list#5}%
+ \fi
+ \@do at foreachperson
+}
+\long\def\@foreachperson(#1,#2,#3,#4)\in#5\do#6{%
+ \@for#4:=#5\do{%
+ \ifx#4\@empty
+ \else
+ \ifpersonexists{#4}%
+ {%
+ \expandafter
+ \let\expandafter#1\csname person@#4 at name\endcsname
+ \expandafter
+ \let\expandafter#2\csname person@#4 at fullname\endcsname
+ \expandafter
+ \let\expandafter#3\csname person@#4 at gender\endcsname
+ \ifx#3\@male at label
+ \let#3\malename
+ \else
+ \ifx#3\@female at label
+ \let#3\femalename
+ \fi
+ \fi
+ #6%
+ }%
+ {%
+ \PackageError{person}{Person `#4' doesn't exist}{}%
+ }%
+ \fi
+ }%
+}
+\newcommand*{\malepronoun}{he}
+\newcommand*{\femalepronoun}{she}
+\newcommand*{\pluralpronoun}{they}
+\newcommand*{\maleobjpronoun}{him}
+\newcommand*{\femaleobjpronoun}{her}
+\newcommand*{\pluralobjpronoun}{them}
+\newcommand*{\malepossadj}{his}
+\newcommand*{\femalepossadj}{her}
+\newcommand*{\pluralpossadj}{their}
+\newcommand*{\maleposspronoun}{his}
+\newcommand*{\femaleposspronoun}{hers}
+\newcommand*{\pluralposspronoun}{theirs}
+\newcommand*{\malechild}{son}
+\newcommand*{\femalechild}{daughter}
+\newcommand*{\pluralchild}{children}
+\newcommand*{\malechildren}{sons}
+\newcommand*{\femalechildren}{daughters}
+\newcommand*{\maleparent}{father}
+\newcommand*{\femaleparent}{mother}
+\newcommand*{\pluralparent}{parents}
+\newcommand*{\malesibling}{brother}
+\newcommand*{\femalesibling}{sister}
+\newcommand*{\pluralsibling}{siblings}
+\newcommand*{\malesiblings}{brothers}
+\newcommand*{\femalesiblings}{sisters}
+\providecommand*{\andname}{and}
+\newcommand*{\malename}{male}
+\newcommand*{\femalename}{female}
+\newcommand*{\personsep}{, }
+\newcommand*{\personlastsep}{\space\andname\space}
+\newcommand*{\twopeoplesep}{\space\andname\space}
+\newcommand*{\personfullname}[1][anon]{%
+ \@ifundefined{person@#1 at fullname}%
+ {%
+ \PackageError{person}{Person `#1' has not been defined}{}%
+ }%
+ {%
+ \csname person@#1 at fullname\endcsname
+ }%
+}
+\newcommand*{\peoplefullname}{%
+ \setcounter{person}{1}%
+ \@for\@thisperson:=\@people at list\do{%
+ \ifthenelse{\equal{\@thisperson}{}}%
+ {}%
+ {%
+ \personfullname[\@thisperson]%
+ \stepcounter{person}%
+ \ifnum\c at people=1\relax
+ \else
+ \ifnum\c at person=\c at people
+ \ifnum\c at people=2\relax
+ \twopeoplesep
+ \else
+ \personlastsep
+ \fi
+ \else
+ \ifnum\c at person<\c at people
+ \personsep
+ \fi
+ \fi
+ \fi
+ }%
+ }%
+}
+\newcommand*{\personname}[1][anon]{%
+ \@ifundefined{person@#1 at name}%
+ {%
+ \PackageError{person}{Person `#1' has not been defined}{}%
+ }%
+ {%
+ \csname person@#1 at name\endcsname
+ }%
+}
+\newcommand*{\peoplename}{%
+ \setcounter{person}{1}%
+ \@for\@thisperson:=\@people at list\do{%
+ \ifthenelse{\equal{\@thisperson}{}}%
+ {}%
+ {%
+ \personname[\@thisperson]%
+ \stepcounter{person}%
+ \ifnum\c at people=1\relax
+ \else
+ \ifnum\c at person=\c at people
+ \ifnum\c at people=2\relax
+ \twopeoplesep
+ \else
+ \personlastsep
+ \fi
+ \else
+ \ifnum\c at person<\c at people
+ \personsep
+ \fi
+ \fi
+ \fi
+ }%
+ }%
+}
+\newcommand*{\personpronoun}[1][anon]{%
+ \@ifundefined{person@#1 at gender}%
+ {%
+ \PackageError{person}{Person `#1' has not been defined}{}%
+ }%
+ {%
+ \edef\@gender{\csname person@#1 at gender\endcsname}%
+ \csname\@gender pronoun\endcsname
+ }%
+}
+\newcommand*{\Personpronoun}[1][anon]{%
+ \@ifundefined{person@#1 at gender}%
+ {%
+ \PackageError{person}{Person `#1' has not been defined}{}%
+ }%
+ {%
+ \edef\@gender{\csname person@#1 at gender\endcsname}%
+ \expandafter\expandafter\expandafter
+ \MakeUppercase\csname\@gender pronoun\endcsname
+ }%
+}
+\newcommand*{\peoplepronoun}{%
+ \ifnum\c at people>1\relax
+ \pluralpronoun
+ \else
+ \@get at firstperson{\@thisperson}%
+ \personpronoun[\@thisperson]%
+ \fi
+}
+\newcommand*{\Peoplepronoun}{%
+ \ifnum\c at people>1\relax
+ \expandafter\MakeUppercase\pluralpronoun
+ \else
+ \@get at firstperson{\@thisperson}%
+ \Personpronoun[\@thisperson]%
+ \fi
+}
+\newcommand*{\personobjpronoun}[1][anon]{%
+ \@ifundefined{person@#1 at gender}%
+ {%
+ \PackageError{person}{Person `#1' has not been defined}{}%
+ }%
+ {%
+ \edef\@gender{\csname person@#1 at gender\endcsname}%
+ \csname\@gender objpronoun\endcsname
+ }%
+}
+\newcommand*{\Personobjpronoun}[1][anon]{%
+ \@ifundefined{person@#1 at gender}%
+ {%
+ \PackageError{person}{Person `#1' has not been defined}{}%
+ }%
+ {%
+ \edef\@gender{\csname person@#1 at gender\endcsname}%
+ \expandafter\expandafter\expandafter
+ \MakeUppercase\csname\@gender objpronoun\endcsname
+ }%
+}
+\newcommand*{\peopleobjpronoun}{%
+ \ifnum\c at people>1\relax
+ \pluralobjpronoun
+ \else
+ \@get at firstperson{\@thisperson}%
+ \personobjpronoun[\@thisperson]%
+ \fi
+}
+\newcommand*{\Peopleobjpronoun}{%
+ \ifnum\c at people>1\relax
+ \expandafter\MakeUppercase\pluralobjpronoun
+ \else
+ \@get at firstperson{\@thisperson}%
+ \Personobjpronoun[\@thisperson]%
+ \fi
+}
+\newcommand*{\personpossadj}[1][anon]{%
+ \@ifundefined{person@#1 at gender}%
+ {%
+ \PackageError{person}{Person `#1' has not been defined}{}%
+ }%
+ {%
+ \edef\@gender{\csname person@#1 at gender\endcsname}%
+ \csname\@gender possadj\endcsname
+ }%
+}
+\newcommand*{\Personpossadj}[1][anon]{%
+ \@ifundefined{person@#1 at gender}%
+ {%
+ \PackageError{person}{Person `#1' has not been defined}{}%
+ }%
+ {%
+ \edef\@gender{\csname person@#1 at gender\endcsname}%
+ \expandafter\expandafter\expandafter
+ \MakeUppercase\csname\@gender possadj\endcsname
+ }%
+}
+\newcommand*{\peoplepossadj}{%
+ \ifnum\c at people>1\relax
+ \pluralpossadj
+ \else
+ \@get at firstperson{\@thisperson}%
+ \personpossadj[\@thisperson]%
+ \fi
+}
+\newcommand*{\Peoplepossadj}{%
+ \ifnum\c at people>1\relax
+ \expandafter\MakeUppercase\pluralpossadj
+ \else
+ \@get at firstperson{\@thisperson}%
+ \Personpossadj[\@thisperson]%
+ \fi
+}
+\newcommand*{\personposspronoun}[1][anon]{%
+ \@ifundefined{person@#1 at gender}%
+ {%
+ \PackageError{person}{Person `#1' has not been defined}{}%
+ }%
+ {%
+ \edef\@gender{\csname person@#1 at gender\endcsname}%
+ \csname\@gender posspronoun\endcsname
+ }%
+}
+\newcommand*{\Personposspronoun}[1][anon]{%
+ \@ifundefined{person@#1 at gender}%
+ {%
+ \PackageError{person}{Person `#1' has not been defined}{}%
+ }%
+ {%
+ \edef\@gender{\csname person@#1 at gender\endcsname}%
+ \expandafter\expandafter\expandafter
+ \MakeUppercase\csname\@gender posspronoun\endcsname
+ }%
+}
+\newcommand*{\peopleposspronoun}{%
+ \ifnum\c at people>1\relax
+ \pluralposspronoun
+ \else
+ \@get at firstperson{\@thisperson}%
+ \personposspronoun[\@thisperson]%
+ \fi
+}
+\newcommand*{\Peopleposspronoun}{%
+ \ifnum\c at people>1\relax
+ \expandafter\MakeUppercase\pluralposspronoun
+ \else
+ \@get at firstperson{\@thisperson}%
+ \Personposspronoun[\@thisperson]%
+ \fi
+}
+\newcommand*{\personchild}[1][anon]{%
+ \@ifundefined{person@#1 at gender}%
+ {%
+ \PackageError{person}{Person `#1' has not been defined}{}%
+ }%
+ {%
+ \edef\@gender{\csname person@#1 at gender\endcsname}%
+ \csname\@gender child\endcsname
+ }%
+}
+\newcommand*{\Personchild}[1][anon]{%
+ \@ifundefined{person@#1 at gender}%
+ {%
+ \PackageError{person}{Person `#1' has not been defined}{}%
+ }%
+ {%
+ \edef\@gender{\csname person@#1 at gender\endcsname}%
+ \expandafter\expandafter\expandafter\MakeUppercase
+ \csname\@gender child\endcsname
+ }%
+}
+\newcommand*{\peoplechild}{%
+ \ifnum\c at people>1\relax
+ \ifallmale
+ {\malechildren}%
+ {\ifallfemale{\femalechildren}{\pluralchild}}%
+ \else
+ \@get at firstperson{\@thisperson}%
+ \personchild[\@thisperson]%
+ \fi
+}
+\newcommand*{\Peoplechild}{%
+ \ifnum\c at people>1\relax
+ \ifallmale
+ {\expandafter\MakeUppercase\malechildren}%
+ {\ifallfemale
+ {\expandafter\MakeUppercase\femalechildren}
+ {\expandafter\MakeUppercase\pluralchild}}%
+ \else
+ \@get at firstperson{\@thisperson}%
+ \Personchild[\@thisperson]%
+ \fi
+}
+\newcommand*{\personparent}[1][anon]{%
+ \@ifundefined{person@#1 at gender}%
+ {%
+ \PackageError{person}{Person `#1' has not been defined}{}%
+ }%
+ {%
+ \edef\@gender{\csname person@#1 at gender\endcsname}%
+ \csname\@gender parent\endcsname
+ }%
+}
+\newcommand*{\Personparent}[1][anon]{%
+ \@ifundefined{person@#1 at gender}%
+ {%
+ \PackageError{person}{Person `#1' has not been defined}{}%
+ }%
+ {%
+ \edef\@gender{\csname person@#1 at gender\endcsname}%
+ \expandafter\expandafter\expandafter\MakeUppercase
+ \csname\@gender parent\endcsname
+ }%
+}
+\newcommand*{\peopleparent}{%
+ \ifnum\c at people>1\relax
+ \pluralparent
+ \else
+ \@get at firstperson{\@thisperson}%
+ \personparent[\@thisperson]%
+ \fi
+}
+\newcommand*{\Peopleparent}{%
+ \ifnum\c at people>1\relax
+ \expandafter\MakeUppercase\pluralparent
+ \else
+ \@get at firstperson{\@thisperson}%
+ \Personparent[\@thisperson]%
+ \fi
+}
+\newcommand*{\personsibling}[1][anon]{%
+ \@ifundefined{person@#1 at gender}%
+ {%
+ \PackageError{person}{Person `#1' has not been defined}{}%
+ }%
+ {%
+ \edef\@gender{\csname person@#1 at gender\endcsname}%
+ \csname\@gender sibling\endcsname
+ }%
+}
+\newcommand*{\Personsibling}[1][anon]{%
+ \@ifundefined{person@#1 at gender}%
+ {%
+ \PackageError{person}{Person `#1' has not been defined}{}%
+ }%
+ {%
+ \edef\@gender{\csname person@#1 at gender\endcsname}%
+ \expandafter\expandafter\expandafter\MakeUppercase
+ \csname\@gender sibling\endcsname
+ }%
+}
+\newcommand*{\peoplesibling}{%
+ \ifnum\c at people>1\relax
+ \ifallmale
+ {\malesiblings}%
+ {\ifallfemale{\femalesiblings}{\pluralsibling}}%
+ \else
+ \@get at firstperson{\@thisperson}%
+ \personsibling[\@thisperson]%
+ \fi
+}
+\newcommand*{\persongender}[1]{%
+ \ifmale{#1}{\malename}{\femalename}%
+}
+\newcommand*{\getpersongender}[2]{%
+ \ifmale{#2}{\let#1\malename}{\let#1\femalename}%
+}
+\newcommand*{\getpersonname}[2]{%
+ \ifpersonexists{#2}%
+ {%
+ \expandafter\let\expandafter#1\csname person@#2 at name\endcsname
+ }%
+ {%
+ \PackageError{person}{Person `#2' doesn't exist}{}%
+ }%
+}
+\newcommand*{\getpersonfullname}[2]{%
+ \ifpersonexists{#2}%
+ {%
+ \expandafter
+ \let\expandafter#1\csname person@#2 at fullname\endcsname
+ }%
+ {%
+ \PackageError{person}{Person `#2' doesn't exist}{}%
+ }%
+}
+% \end{macrocode}
+%\iffalse
+% \begin{macrocode}
+%</person-2019-09-27.sty>
+% \end{macrocode}
+%\fi
%\Finale
\endinput
Modified: trunk/Master/texmf-dist/source/latex/datatool/datatool.ins
===================================================================
--- trunk/Master/texmf-dist/source/latex/datatool/datatool.ins 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/source/latex/datatool/datatool.ins 2025-03-05 21:33:51 UTC (rev 74461)
@@ -1,4 +1,4 @@
-% datatool.ins generated using makedtx version 1.2 2025/3/3 16:09
+% datatool.ins generated using makedtx version 1.2 2025/3/5 16:10
\input docstrip
\preamble
@@ -18,7 +18,7 @@
The Current Maintainer of this work is Nicola Talbot.
- This work consists of the files datatool.dtx and datatool.ins and the derived files datatool-base.sty, datatool-undetermined.ldf, datatool-latin1.ldf, datatool-utf8.ldf, datatool-l3fp.def, datatool-lua.def, datatool-fp.def, datatool-fp.sty, datatool-pgfmath.def, datatool-pgfmath.sty, datatool.sty, datagidx.sty, databib.sty, databar.sty, datapie.sty, dataplot.sty, person.sty, databib.bst.
+ This work consists of the files datatool.dtx and datatool.ins and the derived files datatool-base.sty, datatool-undetermined.ldf, datatool-latin1.ldf, datatool-utf8.ldf, datatool-l3fp.def, datatool-lua.def, datatool-fp.def, datatool-fp.sty, datatool-pgfmath.def, datatool-pgfmath.sty, datatool.sty, datagidx.sty, databib.sty, databar.sty, datapie.sty, dataplot.sty, person.sty, databib.bst, databar-2019-09-27.sty, databib-2019-09-27.sty, datagidx-2019-09-27.sty, datapie-2019-09-27.sty, dataplot-2019-09-27.sty, datatool-2019-09-27.sty, datatool-base-2019-09-27.sty, datatool-fp-2019-09-27.sty, datatool-pgfmath-2019-09-27.sty, person-2019-09-27.sty.
\endpreamble
@@ -59,6 +59,26 @@
\file{person.sty}{\usepreamble\defaultpreamble
\usepostamble\defaultpostamble\from{datatool.dtx}{person.sty,package}}
\file{databib.bst}{\nopreamble\nopostamble\from{datatool.dtx}{databib.bst}}
+\file{databar-2019-09-27.sty}{\usepreamble\defaultpreamble
+\usepostamble\defaultpostamble\from{datatool.dtx}{databar-2019-09-27.sty,package}}
+\file{databib-2019-09-27.sty}{\usepreamble\defaultpreamble
+\usepostamble\defaultpostamble\from{datatool.dtx}{databib-2019-09-27.sty,package}}
+\file{datagidx-2019-09-27.sty}{\usepreamble\defaultpreamble
+\usepostamble\defaultpostamble\from{datatool.dtx}{datagidx-2019-09-27.sty,package}}
+\file{datapie-2019-09-27.sty}{\usepreamble\defaultpreamble
+\usepostamble\defaultpostamble\from{datatool.dtx}{datapie-2019-09-27.sty,package}}
+\file{dataplot-2019-09-27.sty}{\usepreamble\defaultpreamble
+\usepostamble\defaultpostamble\from{datatool.dtx}{dataplot-2019-09-27.sty,package}}
+\file{datatool-2019-09-27.sty}{\usepreamble\defaultpreamble
+\usepostamble\defaultpostamble\from{datatool.dtx}{datatool-2019-09-27.sty,package}}
+\file{datatool-base-2019-09-27.sty}{\usepreamble\defaultpreamble
+\usepostamble\defaultpostamble\from{datatool.dtx}{datatool-base-2019-09-27.sty,package}}
+\file{datatool-fp-2019-09-27.sty}{\usepreamble\defaultpreamble
+\usepostamble\defaultpostamble\from{datatool.dtx}{datatool-fp-2019-09-27.sty,package}}
+\file{datatool-pgfmath-2019-09-27.sty}{\usepreamble\defaultpreamble
+\usepostamble\defaultpostamble\from{datatool.dtx}{datatool-pgfmath-2019-09-27.sty,package}}
+\file{person-2019-09-27.sty}{\usepreamble\defaultpreamble
+\usepostamble\defaultpostamble\from{datatool.dtx}{person-2019-09-27.sty,package}}
}
\endbatchfile
Added: trunk/Master/texmf-dist/tex/latex/datatool/databar-2019-09-27.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/datatool/databar-2019-09-27.sty (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/datatool/databar-2019-09-27.sty 2025-03-05 21:33:51 UTC (rev 74461)
@@ -0,0 +1,838 @@
+%%
+%% This is file `databar-2019-09-27.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% datatool.dtx (with options: `databar-2019-09-27.sty,package')
+%%
+%% datatool.dtx
+%% Copyright 2025 Nicola Talbot
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of LaTeX
+%% version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status `maintained'.
+%%
+%% The Current Maintainer of this work is Nicola Talbot.
+%%
+%% This work consists of the files datatool.dtx and datatool.ins and the derived files datatool-base.sty, datatool-undetermined.ldf, datatool-latin1.ldf, datatool-utf8.ldf, datatool-l3fp.def, datatool-lua.def, datatool-fp.def, datatool-fp.sty, datatool-pgfmath.def, datatool-pgfmath.sty, datatool.sty, datagidx.sty, databib.sty, databar.sty, datapie.sty, dataplot.sty, person.sty, databib.bst, databar-2019-09-27.sty, databib-2019-09-27.sty, datagidx-2019-09-27.sty, datapie-2019-09-27.sty, dataplot-2019-09-27.sty, datatool-2019-09-27.sty, datatool-base-2019-09-27.sty, datatool-fp-2019-09-27.sty, datatool-pgfmath-2019-09-27.sty, person-2019-09-27.sty.
+%%
+%% \CharacterTable
+%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+%% Digits \0\1\2\3\4\5\6\7\8\9
+%% Exclamation \! Double quote \" Hash (number) \#
+%% Dollar \$ Percent \% Ampersand \&
+%% Acute accent \' Left paren \( Right paren \)
+%% Asterisk \* Plus \+ Comma \,
+%% Minus \- Point \. Solidus \/
+%% Colon \: Semicolon \; Less than \<
+%% Equals \= Greater than \> Question mark \?
+%% Commercial at \@ Left bracket \[ Backslash \\
+%% Right bracket \] Circumflex \^ Underscore \_
+%% Grave accent \` Left brace \{ Vertical bar \|
+%% Right brace \} Tilde \~}
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{databar}[2019/09/27 v2.32 (NLCT)]
+\RequirePackage{xkeyval}
+\RequirePackage{dataplot}[=v2.32]
+\newif\ifDTLcolorbarchart
+\DTLcolorbarcharttrue
+\DeclareOption{color}{\DTLcolorbarcharttrue}
+\DeclareOption{gray}{\DTLcolorbarchartfalse}
+\newcommand*{\DTLbarXlabelalign}{left,rotate=-90}
+\newcommand*{\DTLbarYticklabelalign}{right}
+\define at boolkey{databar}[DTL]{verticalbars}[true]{%
+\ifDTLverticalbars
+ \def\DTLbarXlabelalign{left,rotate=-90}%
+ \def\DTLbarYticklabelalign{right}
+\else
+ \def\DTLbarXlabelalign{right}%
+ \def\DTLbarYticklabelalign{center}
+\fi}
+\DTLverticalbarstrue
+\DeclareOption{vertical}{\DTLverticalbarstrue
+ \def\DTLbarXlabelalign{left,rotate=-90}%
+ \def\DTLbarYticklabelalign{right}
+}
+\DeclareOption{horizontal}{\DTLverticalbarsfalse
+ \def\DTLbarXlabelalign{right}%
+ \def\DTLbarYticklabelalign{center}
+}
+\ProcessOptions
+\RequirePackage{datatool}[=v2.32]
+\RequirePackage{tikz}
+\newlength\DTLbarchartlength
+\DTLbarchartlength=3in
+\newlength\DTLbarwidth
+\DTLbarwidth=1cm
+\newlength\DTLbarlabeloffset
+\setlength\DTLbarlabeloffset{10pt}
+\newcommand*{\DTLBarXAxisStyle}{-}
+\newcommand*{\DTLBarYAxisStyle}{-}
+\newcounter{DTLbarroundvar}
+\setcounter{DTLbarroundvar}{1}
+\newcommand*{\DTLbardisplayYticklabel}[1]{#1}
+\newcommand*{\DTLdisplaylowerbarlabel}[1]{#1}
+\newcommand*{\DTLdisplaylowermultibarlabel}[1]{#1}
+\newcommand*{\DTLdisplayupperbarlabel}[1]{#1}
+\newcommand*{\DTLdisplayuppermultibarlabel}[1]{#1}
+\newcommand*{\DTLbaratbegintikz}{}
+\newcommand*{\DTLbaratendtikz}{}
+\newif\ifDTLbarxaxis
+\newif\ifDTLbaryaxis
+\newif\ifDTLbarytics
+\newcount\@dtl at barcount
+\newcommand*{\DTLsetbarcolor}[2]{%
+\expandafter\def\csname dtlbar at segcol\romannumeral#1\endcsname{#2}%
+}
+\newcommand*{\DTLgetbarcolor}[1]{%
+\csname dtlbar at segcol\romannumeral#1\endcsname}
+\newcommand*{\DTLdobarcolor}[1]{%
+\expandafter\color\expandafter
+{\csname dtlbar at segcol\romannumeral#1\endcsname}}
+\newcommand*{\DTLdocurrentbarcolor}{%
+\ifnum\dtlforeachlevel=0\relax
+ \PackageError{databar}{Can't use
+ \string\DTLdocurrentbarcolor\space outside
+ \string\DTLbarchart}{}%
+\else
+ \expandafter\DTLdobarcolor\expandafter{%
+ \csname c at DTLrow\romannumeral\dtlforeachlevel\endcsname}%
+\fi}
+\newcommand*{\DTLbaroutlinecolor}{black}
+\newlength\DTLbaroutlinewidth
+\DTLbaroutlinewidth=0pt
+\ifDTLcolorbarchart
+ \DTLsetbarcolor{1}{red}
+ \DTLsetbarcolor{2}{green}
+ \DTLsetbarcolor{3}{blue}
+ \DTLsetbarcolor{4}{yellow}
+ \DTLsetbarcolor{5}{magenta}
+ \DTLsetbarcolor{6}{cyan}
+ \DTLsetbarcolor{7}{orange}
+ \DTLsetbarcolor{8}{white}
+\else
+ \DTLsetbarcolor{1}{black!15}
+ \DTLsetbarcolor{2}{black!25}
+ \DTLsetbarcolor{3}{black!35}
+ \DTLsetbarcolor{4}{black!45}
+ \DTLsetbarcolor{5}{black!55}
+ \DTLsetbarcolor{6}{black!65}
+ \DTLsetbarcolor{7}{black!75}
+ \DTLsetbarcolor{8}{black!85}
+\fi
+\newcommand*{\DTLeverybarhook}{}
+\define at key{databar}{max}{\def\DTLbarmax{#1}}
+\define at key{databar}{length}{\DTLbarchartlength=#1\relax
+}
+\define at key{databar}{maxdepth}{%
+\ifnum#1>0\relax
+ \PackageError{databar}{depth must be zero or negative}{}%
+\else
+ \def\DTLnegextent{#1}%
+\fi}
+\define at choicekey{databar}{axes}[\var\nr]{both,x,y,none}{%
+\ifcase\nr\relax
+ % both
+ \DTLbarxaxistrue
+ \DTLbaryaxistrue
+ \DTLbaryticstrue
+\or
+ % x only
+ \DTLbarxaxistrue
+ \DTLbaryaxisfalse
+ \DTLbaryticsfalse
+\or
+ % y only
+ \DTLbarxaxisfalse
+ \DTLbaryaxistrue
+ \DTLbaryticstrue
+\or
+ % neither
+ \DTLbarxaxisfalse
+ \DTLbaryaxisfalse
+ \DTLbaryticsfalse
+\fi
+}
+\define at key{databar}{variable}{%
+ \def\DTLbarvariable{#1}%
+}
+\define at key{databar}{variables}{%
+ \def\dtlbar at variables{#1}%
+}
+\define at key{databar}{barwidth}{\setlength{\DTLbarwidth}{#1}}
+\define at key{databar}{barlabel}{%
+\def\dtl at barlabel{#1}}
+\def\dtl at barlabel{}
+\define at key{databar}{multibarlabels}{%
+\def\dtl at multibarlabels{#1}}
+\def\dtl at multibarlabels{}
+\define at key{databar}{groupgap}{\def\dtlbar at groupgap{#1}}
+\def\dtlbar at groupgap{1}
+\define at key{databar}{upperbarlabel}{%
+\def\dtl at upperbarlabel{#1}}
+\def\dtl at upperbarlabel{}
+\define at key{databar}{uppermultibarlabels}{%
+\def\dtl at uppermultibarlabels{#1}}
+\def\dtl at uppermultibarlabels{}
+\define at key{databar}{yticpoints}{%
+\def\dtlbar at yticlist{#1}\DTLbaryticstrue\DTLbaryaxistrue}
+\let\dtlbar at yticlist=\relax
+\define at key{databar}{yticgap}{%
+\def\dtlbar at yticgap{#1}\DTLbaryticstrue\DTLbaryaxistrue}
+\let\dtlbar at yticgap=\relax
+\define at key{databar}{yticlabels}{%
+\def\dtlbar at yticlabels{#1}\DTLbaryticstrue\DTLbaryaxistrue}
+\let\dtlbar at yticlabels=\relax
+\define at key{databar}{ylabel}{%
+\def\dtlbar at ylabel{#1}}
+\let\dtlbar at ylabel=\relax
+\newcommand*{\DTLbarchart}[4][\boolean{true}]{%
+{%
+ \undef\DTLbarvariable
+ \undef\DTLbarmax
+ \undef\DTLnegextent
+ \disable at keys{databar}{variables,multibarlabels,%
+ uppermultibarlabels,groupgap}%
+ \setkeys{databar}{#2}%
+ \ifundef{\DTLbarvariable}%
+ {%
+ \PackageError{databar}%
+ {\string\DTLbarchart\space missing variable}%
+ {You haven't use the "variable" key}%
+ }%
+ {%
+ \ifundef{\DTLbarmax}%
+ {%
+ \@sDTLforeach[#1]{#3}{#4}{%
+ \expandafter\DTLconverttodecimal\expandafter
+ {\DTLbarvariable}{\dtl at barvar}%
+ \ifundef{\DTLbarmax}%
+ {%
+ \let\DTLbarmax=\dtl at barvar
+ }%
+ {%
+ \let\dtl at old=\DTLbarmax
+ \dtlmax{\DTLbarmax}{\dtl at old}{\dtl at barvar}%
+ }%
+ }%
+ \ifx\dtlbar at yticgap\relax
+ \else
+ \let\dtl at thistick=\dtlbar at yticgap
+ \whiledo{\DTLisFPopenbetween{\dtl at thistick}{0}{\DTLbarmax}}%
+ {%
+ \dtladd{\dtl at thistick}{\dtl at thistick}{\dtlbar at yticgap}%
+ }%
+ \let\DTLbarmax=\dtl at thistick
+ \fi
+ }%
+ {}%
+ \ifundef{\DTLnegextent}%
+ {%
+ \def\DTLnegextent{0}%
+ \@sDTLforeach[#1]{#3}{#4}{%
+ \expandafter\DTLconverttodecimal\expandafter
+ {\DTLbarvariable}{\dtl at barvar}%
+ \let\dtl at old=\DTLnegextent
+ \DTLmin{\DTLnegextent}{\dtl at old}{\dtl at barvar}%
+ }%
+ \ifx\dtlbar at yticgap\relax
+ \else
+ \ifthenelse{\DTLisFPlt{\DTLnegextent}{0}}%
+ {%
+ \edef\dtl at thistick{0}%
+ \whiledo{\DTLisFPclosedbetween{\dtl at thistick}{\DTLnegextent}{0}}{%
+ \dtlsub{\dtl at thistick}{\dtl at thistick}{\dtlbar at yticgap}%
+ }%
+ \let\DTLnegextent=\dtl at thistick
+ }{}%
+ \fi
+ }%
+ {}%
+ \@dtl at tmpcount=\DTLbarchartlength
+ \dtlsub{\dtl at extent}{\DTLbarmax}{\DTLnegextent}%
+ \dtldiv{\dtl at unit}{\number\@dtl at tmpcount}{\dtl at extent}%
+ \setlength{\dtl at yticlabelwidth}{0pt}%
+ \ifDTLbarytics
+ \ifx\dtlbar at yticlist\relax
+ \ifx\dtlbar at yticgap\relax
+ \@dtl at tmpcount=\DTLmintickgap
+ \divide\@dtl at tmpcount by 65536\relax
+ \dtldiv{\dtl at mingap}{\number\@dtl at tmpcount}{\dtl at unit}%
+ \dtl at constructticklist\DTLnegextent\DTLbarmax
+ \dtl at mingap\dtlbar at yticlist
+ \else
+ \dtl at constructticklistwithgapz
+ \DTLnegextent\DTLbarmax\dtlbar at yticlist\dtlbar at yticgap
+ \fi
+ \fi
+ \ifx\dtlbar at ylabel\relax
+ \else
+ \ifx\dtlbar at yticlabels\relax
+ \@for\dtl at thislabel:=\dtlbar at yticlist\do{%
+ \dtlround{\dtl at thislabel}{\dtl at thislabel}
+ {\c at DTLbarroundvar}%
+ \ifDTLverticalbars
+ \settowidth{\dtl at tmplength}{%
+ \DTLbardisplayYticklabel{\dtl at thislabel}}%
+ \else
+ \settoheight{\dtl at tmplength}{%
+ \DTLbardisplayYticklabel{\dtl at thislabel}}%
+ \edef\@dtl at h{\the\dtl at tmplength}%
+ \settodepth{\dtl at tmplength}{%
+ \DTLbardisplayYticklabel{\dtl at thislabel}}%
+ \addtolength{\dtl at tmplength}{\@dtl at h}%
+ \addtolength{\dtl at tmplength}{\baselineskip}%
+ \fi
+ \ifdim\dtl at tmplength>\dtl at yticlabelwidth
+ \setlength{\dtl at yticlabelwidth}{\dtl at tmplength}%
+ \fi
+ }%
+ \else
+ \@for\dtl at thislabel:=\dtlbar at yticlabels\do{%
+ \ifDTLverticalbars
+ \settowidth{\dtl at tmplength}{%
+ \DTLbardisplayYticklabel{\dtl at thislabel}}%
+ \else
+ \settoheight{\dtl at tmplength}{%
+ \DTLbardisplayYticklabel{\dtl at thislabel}}%
+ \edef\@dtl at h{\the\dtl at tmplength}%
+ \settodepth{\dtl at tmplength}{%
+ \DTLbardisplayYticklabel{\dtl at thislabel}}%
+ \addtolength{\dtl at tmplength}{\@dtl at h}%
+ \addtolength{\dtl at tmplength}{\baselineskip}%
+ \fi
+ \ifdim\dtl at tmplength>\dtl at yticlabelwidth
+ \setlength{\dtl at yticlabelwidth}{\dtl at tmplength}%
+ \fi
+ }%
+ \fi
+ \fi
+ \fi
+ \edef\DTLbarchartwidth{\expandafter\number\csname dtlrows@#3\endcsname}
+ \begin{tikzpicture}
+ \ifDTLverticalbars
+ \pgfsetyvec{\pgfpoint{0pt}{\dtl at unit sp}}%
+ \pgfsetxvec{\pgfpoint{\DTLbarwidth}{0pt}}%
+ \else
+ \pgfsetxvec{\pgfpoint{\dtl at unit sp}{0pt}}%
+ \pgfsetyvec{\pgfpoint{0pt}{\DTLbarwidth}}%
+ \fi
+ \DTLbaratbegintikz
+ \def\@dtl at start{0}%
+ \@sDTLforeach[#1]{#3}{#4}{%
+ \expandafter\let\expandafter\@dtl at bar
+ \csname c at DTLrow\romannumeral\dtlforeachlevel\endcsname%
+ \expandafter\DTLconverttodecimal\expandafter
+ {\DTLbarvariable}{\dtl at variable}%
+ \begin{scope}
+ \DTLdocurrentbarcolor
+ \ifDTLverticalbars
+ \fill (\@dtl at start,0) -- (\@dtl at start,\dtl at variable)
+ -- (\@dtl at bar,\dtl at variable) -- (\@dtl at bar,0) -- cycle;
+ \else
+ \fill (0,\@dtl at start) -- (\dtl at variable,\@dtl at start)
+ -- (\dtl at variable,\@dtl at bar) -- (0,\@dtl at bar) -- cycle;
+ \fi
+ \end{scope}
+ \begin{scope}
+ \ifdim\DTLbaroutlinewidth>0pt
+ \expandafter\color\expandafter{\DTLbaroutlinecolor}
+ \ifDTLverticalbars
+ \draw (\@dtl at start,0) -- (\@dtl at start,\dtl at variable)
+ -- (\@dtl at bar,\dtl at variable) -- (\@dtl at bar,0) -- cycle;
+ \else
+ \draw (0,\@dtl at start) -- (\dtl at variable,\@dtl at start)
+ -- (\dtl at variable,\@dtl at bar) -- (0,\@dtl at bar) -- cycle;
+ \fi
+ \fi
+ \end{scope}
+ \ifDTLverticalbars
+ \edef\dtl at textopt{%
+ at={\noexpand\pgfpointadd
+ {\noexpand\pgfpointxy{\@dtl at start.5}{0}}
+ {\noexpand\pgfpoint{0pt}{-\noexpand\DTLbarlabeloffset}}},
+ \DTLbarXlabelalign
+ }%
+ \edef\DTLstartpt{\noexpand\pgfpointxy{\@dtl at start.5}{0}}%
+ \else
+ \edef\dtl at textopt{%
+ at={\noexpand\pgfpointadd
+ {\noexpand\pgfpointxy{0}{\@dtl at start.5}}
+ {\noexpand\pgfpoint{-\noexpand\DTLbarlabeloffset}{0pt}}},
+ \DTLbarXlabelalign
+ }%
+ \edef\DTLstartpt{\noexpand\pgfpointxy{0}{\@dtl at start.5}}%
+ \fi
+ \expandafter\pgftext\expandafter[\dtl at textopt]{%
+ \DTLdisplaylowerbarlabel{\dtl at barlabel}}
+ \ifDTLverticalbars
+ \expandafter\DTLifnumlt\expandafter{\DTLbarvariable}{0}%
+ {
+ \edef\dtl at textopt{%
+ at={\noexpand\pgfpointadd
+ {\noexpand\pgfpointxy{\@dtl at start.5}{\dtl at variable}}
+ {\noexpand\pgfpoint{0pt}{-\noexpand\DTLbarlabeloffset}}}
+ }%
+ }{%
+ \edef\dtl at textopt{%
+ at={\noexpand\pgfpointadd
+ {\noexpand\pgfpointxy{\@dtl at start.5}{\dtl at variable}}
+ {\noexpand\pgfpoint{0pt}{\noexpand\DTLbarlabeloffset}}}
+ }%
+ }
+ \edef\DTLendpt{\noexpand\pgfpointxy{\@dtl at start.5}{\dtl at variable}}%
+ \else
+ \expandafter\DTLifnumlt\expandafter{\DTLbarvariable}{0}%
+ {
+ \edef\dtl at textopt{right,
+ at={\noexpand\pgfpointadd
+ {\noexpand\pgfpointxy{\dtl at variable}{\@dtl at start.5}}
+ {\noexpand\pgfpoint{-\noexpand\DTLbarlabeloffset}{0pt}}}
+ }%
+ }{%
+ \edef\dtl at textopt{left,
+ at={\noexpand\pgfpointadd
+ {\noexpand\pgfpointxy{\dtl at variable}{\@dtl at start.5}}
+ {\noexpand\pgfpoint{\noexpand\DTLbarlabeloffset}{0pt}}}
+ }%
+ }
+ \edef\DTLendpt{\noexpand\pgfpointxy{\dtl at variable}{\@dtl at start.5}}%
+ \fi
+ \expandafter\pgftext\expandafter[\dtl at textopt]{%
+ \DTLdisplayupperbarlabel{\dtl at upperbarlabel}}
+ \def\DTLmidpt{\pgfpointlineattime{0.5}{\DTLstartpt}{\DTLendpt}}%
+ \DTLeverybarhook
+ \edef\@dtl at start{\number\@dtl at bar}%
+ }%
+ \ifDTLbarxaxis
+ \ifDTLverticalbars
+ \expandafter\draw\expandafter[\DTLBarXAxisStyle]
+ (0,0) -- (\DTLbarchartwidth,0);
+ \else
+ \expandafter\draw\expandafter[\DTLBarXAxisStyle]
+ (0,0) -- (0,\DTLbarchartwidth);
+ \fi
+ \fi
+ \ifDTLbaryaxis
+ \ifDTLverticalbars
+ \expandafter\draw\expandafter[\DTLBarYAxisStyle]
+ (0,\DTLnegextent) -- (0,\DTLbarmax);
+ \else
+ \expandafter\draw\expandafter[\DTLBarYAxisStyle]
+ (\DTLnegextent,0) -- (\DTLbarmax,0);
+ \fi
+ \fi
+ \ifx\dtlbar at yticlist\relax
+ \else
+ \@for\dtl at thistick:=\dtlbar at yticlist\do{%
+ \ifDTLverticalbars
+ \pgfpathmoveto{\pgfpointxy{0}{\dtl at thistick}}
+ \pgfpathlineto{
+ \pgfpointadd{\pgfpointxy{0}{\dtl at thistick}}
+ {\pgfpoint{-\DTLticklength}{0pt}}}
+ \else
+ \pgfpathmoveto{\pgfpointxy{\dtl at thistick}{0}}
+ \pgfpathlineto{
+ \pgfpointadd{\pgfpointxy{\dtl at thistick}{0}}
+ {\pgfpoint{0pt}{-\DTLticklength}}}
+ \fi
+ \pgfusepath{stroke}
+ \ifx\dtlbar at yticlabels\relax
+ \dtlround{\dtl at thislabel}{\dtl at thistick}
+ {\c at DTLbarroundvar}%
+ \else
+ \dtl at chopfirst\dtlbar at yticlabels\dtl at thislabel\dtl at rest
+ \let\dtlbar at yticlabels=\dtl at rest
+ \fi
+ \ifDTLverticalbars
+ \edef\dtl at textopt{\DTLbarYticklabelalign,%
+ at={\noexpand\pgfpointadd
+ {\noexpand\pgfpointxy{0}{\dtl at thistick}}
+ {\noexpand\pgfpoint{-\noexpand\DTLticklabeloffset}{0pt}},
+ }}%
+ \else
+ \edef\dtl at textopt{\DTLbarYticklabelalign,
+ at={\noexpand\pgfpointadd
+ {\noexpand\pgfpointxy{\dtl at thistick}{0}}
+ {\noexpand\pgfpoint{0pt}{-\noexpand\DTLticklabeloffset}}
+ }}%
+ \fi
+ \expandafter\pgftext\expandafter[\dtl at textopt]{%
+ \DTLbardisplayYticklabel{\dtl at thislabel}}
+ }%
+ \fi
+ \ifx\dtlbar at ylabel\relax
+ \else
+ \addtolength{\dtl at yticlabelwidth}{\baselineskip}%
+ \setlength{\dtl at tmplength}{0.5\DTLbarchartlength}
+ \ifDTLverticalbars
+ \pgftext[bottom,center,at={\pgfpointadd
+ {\pgfpointxy{0}{\DTLnegextent}}%
+ {\pgfpoint{-\dtl at yticlabelwidth}{\dtl at tmplength}}},
+ rotate=90]{%
+ \dtlbar at ylabel}
+ \else
+ \pgftext[bottom,center,at={\pgfpointadd
+ {\pgfpointxy{\DTLnegextent}{0}}%
+ {\pgfpoint{\dtl at tmplength}{-\dtl at yticlabelwidth}}}]{%
+ \dtlbar at ylabel}
+ \fi
+ \fi
+ \DTLbaratendtikz
+ \end{tikzpicture}
+ }%
+}%
+}
+\newcommand*{\DTLmultibarchart}[4][\boolean{true}]{%
+{\let\dtlbar at variables=\relax
+\let\DTLbarmax=\relax
+\let\DTLnegextent=\relax
+\disable at keys{databar}{variable,upperbarlabel}%
+\setkeys{databar}{#2}%
+\ifx\dtlbar at variables\relax
+ \PackageError{databar}{\string\DTLmultibarchart\space missing variables setting}{}%
+\else
+ \ifx\DTLbarmax\relax
+ \@sDTLforeach[#1]{#3}{#4}{%
+ \@for\DTLbarvariable:=\dtlbar at variables\do{%
+ \expandafter\DTLconverttodecimal\expandafter
+ {\DTLbarvariable}{\dtl at barvar}%
+ \ifx\DTLbarmax\relax
+ \let\DTLbarmax=\dtl at barvar
+ \else
+ \let\dtl at old=\DTLbarmax
+ \dtlmax{\DTLbarmax}{\dtl at old}{\dtl at barvar}%
+ \fi
+ }%
+ }%
+ \ifx\dtlbar at yticgap\relax
+ \else
+ \let\dtl at thistick=\dtlbar at yticgap%
+ \whiledo{\DTLisFPopenbetween{\dtl at thistick}{0}{\DTLbarmax}}{%
+ \dtladd{\dtl at thistick}{\dtl at thistick}{\dtlbar at yticgap}%
+ }%
+ \let\DTLbarmax=\dtl at thistick
+ \fi
+ \fi
+ \ifx\DTLnegextent\relax
+ \def\DTLnegextent{0}%
+ \@sDTLforeach[#1]{#3}{#4}{%
+ \@for\DTLbarvariable:=\dtlbar at variables\do{%
+ \expandafter\DTLconverttodecimal\expandafter
+ {\DTLbarvariable}{\dtl at barvar}%
+ \let\dtl at old=\DTLnegextent
+ \DTLmin{\DTLnegextent}{\dtl at old}{\dtl at barvar}%
+ }%
+ }%
+ \ifx\dtlbar at yticgap\relax
+ \else
+ \ifthenelse{\DTLisFPlt{\DTLnegextent}{0}}{%
+ \edef\dtl at thistick{0}%
+ \whiledo{\DTLisFPclosedbetween{\dtl at thistick}{\DTLnegextent}{0}}{%
+ \dtlsub{\dtl at thistick}{\dtl at thistick}{\dtlbar at yticgap}%
+ }%
+ \let\DTLnegextent=\dtl at thistick
+ }{}%
+ \fi
+ \fi
+ \@dtl at tmpcount=\DTLbarchartlength
+ \dtlsub{\dtl at extent}{\DTLbarmax}{\DTLnegextent}%
+ \dtldiv{\dtl at unit}{\number\@dtl at tmpcount}{\dtl at extent}%
+ \setlength{\dtl at yticlabelwidth}{0pt}%
+ \ifDTLbarytics
+ \ifx\dtlbar at yticlist\relax
+ \ifx\dtlbar at yticgap\relax
+ \@dtl at tmpcount=\DTLmintickgap
+ \divide\@dtl at tmpcount by 65536\relax
+ \dtldiv{\dtl at mingap}{\number\@dtl at tmpcount}{\dtl at unit}%
+ \dtl at constructticklist\DTLnegextent\DTLbarmax
+ \dtl at mingap\dtlbar at yticlist
+ \else
+ \dtl at constructticklistwithgapz
+ \DTLnegextent\DTLbarmax\dtlbar at yticlist\dtlbar at yticgap
+ \fi
+ \fi
+ \ifx\dtlbar at ylabel\relax
+ \else
+ \ifx\dtlbar at yticlabels\relax
+ \@for\dtl at thislabel:=\dtlbar at yticlist\do{%
+ \dtlround{\dtl at thislabel}{\dtl at thislabel}
+ {\c at DTLbarroundvar}%
+ \ifDTLverticalbars
+ \settowidth{\dtl at tmplength}{%
+ \DTLbardisplayYticklabel{\dtl at thislabel}}%
+ \else
+ \settoheight{\dtl at tmplength}{%
+ \DTLbardisplayYticklabel{\dtl at thislabel}}%
+ \edef\@dtl at h{\the\dtl at tmplength}%
+ \settodepth{\dtl at tmplength}{%
+ \DTLbardisplayYticklabel{\dtl at thislabel}}%
+ \addtolength{\dtl at tmplength}{\@dtl at h}%
+ \addtolength{\dtl at tmplength}{\baselineskip}%
+ \fi
+ \ifdim\dtl at tmplength>\dtl at yticlabelwidth
+ \setlength{\dtl at yticlabelwidth}{\dtl at tmplength}%
+ \fi
+ }%
+ \else
+ \@for\dtl at thislabel:=\dtlbar at yticlabels\do{%
+ \ifDTLverticalbars
+ \settowidth{\dtl at tmplength}{%
+ \DTLbardisplayYticklabel{\dtl at thislabel}}%
+ \else
+ \settoheight{\dtl at tmplength}{%
+ \DTLbardisplayYticklabel{\dtl at thislabel}}%
+ \edef\@dtl at h{\the\dtl at tmplength}%
+ \settodepth{\dtl at tmplength}{%
+ \DTLbardisplayYticklabel{\dtl at thislabel}}%
+ \addtolength{\dtl at tmplength}{\@dtl at h}%
+ \addtolength{\dtl at tmplength}{\baselineskip}%
+ \fi
+ \ifdim\dtl at tmplength>\dtl at yticlabelwidth
+ \setlength{\dtl at yticlabelwidth}{\dtl at tmplength}%
+ \fi
+ }%
+ \fi
+ \fi
+ \fi
+\dtl at xticlabelheight=0pt\relax
+\@dtl at tmpcount=0\relax
+\@for\dtl at thislabel:=\dtl at multibarlabels\do{%
+ \advance\@dtl at tmpcount by 1\relax
+ \settoheight{\dtl at tmplength}{\tikz\expandafter\pgftext\expandafter
+ [\DTLbarXlabelalign]{\DTLdisplaylowerbarlabel{\dtl at thislabel}};}%
+ \edef\@dtl at h{\the\dtl at tmplength}%
+ \settodepth{\dtl at tmplength}{\tikz\expandafter\pgftext\expandafter
+ [\DTLbarXlabelalign]{\DTLdisplaylowerbarlabel{\dtl at thislabel}};}%
+ \addtolength{\dtl at tmplength}{\@dtl at h}%
+ \addtolength{\dtl at tmplength}{\baselineskip}%
+ \ifdim\dtl at tmplength>\dtl at xticlabelheight
+ \setlength{\dtl at xticlabelheight}{\dtl at tmplength}%
+ \fi
+}
+\@dtl at tmpcount=0\relax
+\@for\dtl at this:=\dtlbar at variables\do{%
+ \advance\@dtl at tmpcount by 1\relax
+}%
+\edef\DTLbargroupwidth{\number\@dtl at tmpcount}%
+\edef\dtl at n{\expandafter\number\csname dtlrows@#3\endcsname}
+\dtlmul{\dtl at tmpi}{\dtl at n}{\DTLbargroupwidth}
+\dtlsub{\dtl at tmpii}{\dtl at n}{1}%
+\dtlmul{\dtl at tmpii}{\dtl at tmpii}{\dtlbar at groupgap}%
+\dtladd{\DTLbarchartwidth}{\dtl at tmpi}{\dtl at tmpii}
+\begin{tikzpicture}
+\ifDTLverticalbars
+ \pgfsetyvec{\pgfpoint{0pt}{\dtl at unit sp}}%
+ \pgfsetxvec{\pgfpoint{\DTLbarwidth}{0pt}}%
+\else
+ \pgfsetxvec{\pgfpoint{\dtl at unit sp}{0pt}}%
+ \pgfsetyvec{\pgfpoint{0pt}{\DTLbarwidth}}%
+\fi
+\DTLbaratbegintikz
+\def\@dtl at start{0}%
+\@sDTLforeach[#1]{#3}{#4}{%
+\@dtl at barcount = 1\relax
+\let\dtl at multibar@labels=\dtl at multibarlabels
+\let\dtl at uppermultibar@labels=\dtl at uppermultibarlabels
+\dtlmul{\dtl at multimidpt}{\DTLbargroupwidth}{0.5}%
+\dtladd{\dtl at multimidpt}{\dtl at multimidpt}{\@dtl at start}%
+\@for\DTLbarvariable:=\dtlbar at variables\do{%
+\dtladd{\@dtl at endpt}{\@dtl at start}{1}%
+\expandafter\DTLconverttodecimal\expandafter
+ {\DTLbarvariable}{\dtl at variable}%
+\dtl at chopfirst\dtl at multibar@labels\dtl at thisbarlabel\dtl at rest
+\let\dtl at multibar@labels=\dtl at rest
+\dtl at chopfirst\dtl at uppermultibar@labels\dtl at thisupperbarlabel\dtl at rest
+\let\dtl at uppermultibar@labels=\dtl at rest
+\begin{scope}
+ \expandafter\color\expandafter{\DTLgetbarcolor{\@dtl at barcount}}%
+ \ifDTLverticalbars
+ \fill (\@dtl at start,0) -- (\@dtl at start,\dtl at variable)
+ -- (\@dtl at endpt,\dtl at variable) -- (\@dtl at endpt,0) -- cycle;
+ \else
+ \fill (0,\@dtl at start) -- (\dtl at variable,\@dtl at start)
+ -- (\dtl at variable,\@dtl at endpt) -- (0,\@dtl at endpt) -- cycle;
+ \fi
+\end{scope}
+\begin{scope}
+\ifdim\DTLbaroutlinewidth>0pt
+ \expandafter\color\expandafter{\DTLbaroutlinecolor}
+ \ifDTLverticalbars
+ \draw (\@dtl at start,0) -- (\@dtl at start,\dtl at variable)
+ -- (\@dtl at endpt,\dtl at variable) -- (\@dtl at endpt,0) -- cycle;
+ \else
+ \draw (0,\@dtl at start) -- (\dtl at variable,\@dtl at start)
+ -- (\dtl at variable,\@dtl at endpt) -- (0,\@dtl at endpt) -- cycle;
+ \fi
+\fi
+\end{scope}
+\dtladd{\@dtl at midpt}{\@dtl at start}{0.5}%
+\ifDTLverticalbars
+ \edef\dtl at textopt{%
+ at={\noexpand\pgfpointadd
+ {\noexpand\pgfpointxy{\@dtl at midpt}{0}}
+ {\noexpand\pgfpoint{0pt}{-\noexpand\DTLbarlabeloffset}}},
+ \DTLbarXlabelalign
+ }%
+ \edef\DTLstartpt{\noexpand\pgfpointxy{\@dtl at midpt}{0}}%
+\else
+ \edef\dtl at textopt{%
+ at={\noexpand\pgfpointadd
+ {\noexpand\pgfpointxy{0}{\@dtl at midpt}}
+ {\noexpand\pgfpoint{-\noexpand\DTLbarlabeloffset}{0pt}}},
+ \DTLbarXlabelalign
+ }%
+ \edef\DTLstartpt{\noexpand\pgfpointxy{0}{\@dtl at midpt}}%
+\fi
+ \expandafter\pgftext\expandafter[\dtl at textopt]{%
+ \DTLdisplaylowermultibarlabel{\dtl at thisbarlabel}}
+\ifDTLverticalbars
+ \expandafter\DTLifnumlt\expandafter{\DTLbarvariable}{0}
+ {
+ \edef\dtl at textopt{%
+ at={\noexpand\pgfpointadd
+ {\noexpand\pgfpointxy{\@dtl at midpt}{\dtl at variable}}
+ {\noexpand\pgfpoint{0pt}{-\noexpand\DTLbarlabeloffset}}}
+ }%
+ }{%
+ \edef\dtl at textopt{%
+ at={\noexpand\pgfpointadd
+ {\noexpand\pgfpointxy{\@dtl at midpt}{\dtl at variable}}
+ {\noexpand\pgfpoint{0pt}{\noexpand\DTLbarlabeloffset}}}
+ }%
+ }
+ \edef\DTLendpt{\noexpand\pgfpointxy{\@dtl at midpt}{\dtl at variable}}%
+\else
+ \expandafter\DTLifnumlt\expandafter{\DTLbarvariable}{0}
+ {
+ \edef\dtl at textopt{right,
+ at={\noexpand\pgfpointadd
+ {\noexpand\pgfpointxy{\dtl at variable}{\@dtl at midpt}}
+ {\noexpand\pgfpoint{-\noexpand\DTLbarlabeloffset}{0pt}}}
+ }%
+ }{%
+ \edef\dtl at textopt{left,
+ at={\noexpand\pgfpointadd
+ {\noexpand\pgfpointxy{\dtl at variable}{\@dtl at midpt}}
+ {\noexpand\pgfpoint{\noexpand\DTLbarlabeloffset}{0pt}}}
+ }%
+ }
+ \edef\DTLendpt{\noexpand\pgfpointxy{\dtl at variable}{\@dtl at midpt}}%
+\fi
+ \expandafter\pgftext\expandafter[\dtl at textopt]{%
+ \DTLdisplayuppermultibarlabel{\dtl at thisupperbarlabel}}
+\def\DTLmidpt{\pgfpointlineattime{0.5}{\DTLstartpt}{\DTLendpt}}%
+\DTLeverybarhook
+ \dtladd{\@dtl at start}{\@dtl at start}{1}%
+ \advance\@dtl at barcount by 1\relax
+}%
+\setlength{\dtl at tmplength}{\DTLbarlabeloffset}%
+\addtolength{\dtl at tmplength}{\dtl at xticlabelheight}%
+\ifDTLverticalbars
+ \edef\dtl at textopt{%
+ at={\noexpand\pgfpointadd
+ {\noexpand\pgfpointxy{\dtl at multimidpt}{0}}
+ {\noexpand\pgfpoint{0pt}{-\noexpand\dtl at tmplength}}},
+ \DTLbarXlabelalign
+ }%
+\else
+ \edef\dtl at textopt{%
+ at={\noexpand\pgfpointadd
+ {\noexpand\pgfpointxy{0}{\dtl at multimidpt}}
+ {\noexpand\pgfpoint{-\noexpand\dtl at tmplength}{0pt}}},
+ \DTLbarXlabelalign
+ }%
+\fi
+ \expandafter\pgftext\expandafter[\dtl at textopt]{%
+ \DTLdisplaylowerbarlabel{\dtl at barlabel}}
+ \dtladd{\@dtl at start}{\@dtl at start}{\dtlbar at groupgap}%
+}
+\ifDTLbarxaxis
+ \ifDTLverticalbars
+ \expandafter\draw\expandafter[\DTLBarXAxisStyle]
+ (0,0) -- (\DTLbarchartwidth,0);
+ \else
+ \expandafter\draw\expandafter[\DTLBarXAxisStyle]
+ (0,0) -- (0,\DTLbarchartwidth);
+ \fi
+\fi
+\ifDTLbaryaxis
+ \ifDTLverticalbars
+ \expandafter\draw\expandafter[\DTLBarYAxisStyle]
+ (0,\DTLnegextent) -- (0,\DTLbarmax);
+ \else
+ \expandafter\draw\expandafter[\DTLBarYAxisStyle]
+ (\DTLnegextent,0) -- (\DTLbarmax,0);
+ \fi
+\fi
+\ifx\dtlbar at yticlist\relax
+\else
+ \@for\dtl at thistick:=\dtlbar at yticlist\do{%
+ \ifDTLverticalbars
+ \pgfpathmoveto{\pgfpointxy{0}{\dtl at thistick}}
+ \pgfpathlineto{
+ \pgfpointadd{\pgfpointxy{0}{\dtl at thistick}}
+ {\pgfpoint{-\DTLticklength}{0pt}}}
+ \else
+ \pgfpathmoveto{\pgfpointxy{\dtl at thistick}{0}}
+ \pgfpathlineto{
+ \pgfpointadd{\pgfpointxy{\dtl at thistick}{0}}
+ {\pgfpoint{0pt}{-\DTLticklength}}}
+ \fi
+ \pgfusepath{stroke}
+ \ifx\dtlbar at yticlabels\relax
+ \dtlround{\dtl at thislabel}{\dtl at thistick}
+ {\c at DTLbarroundvar}%
+ \else
+ \dtl at chopfirst\dtlbar at yticlabels\dtl at thislabel\dtl at rest
+ \let\dtlbar at yticlabels=\dtl at rest
+ \fi
+ \ifDTLverticalbars
+ \edef\dtl at textopt{\DTLbarYticklabelalign,%
+ at={\noexpand\pgfpointadd
+ {\noexpand\pgfpointxy{0}{\dtl at thistick}}
+ {\noexpand\pgfpoint{-\noexpand\DTLticklabeloffset}{0pt}},
+ }}%
+ \else
+ \edef\dtl at textopt{\DTLbarYticklabelalign,
+ at={\noexpand\pgfpointadd
+ {\noexpand\pgfpointxy{\dtl at thistick}{0}}
+ {\noexpand\pgfpoint{0pt}{-\noexpand\DTLticklabeloffset}}
+ }}%
+ \fi
+ \expandafter\pgftext\expandafter[\dtl at textopt]{%
+ \DTLbardisplayYticklabel{\dtl at thislabel}}
+ }%
+\fi
+\ifx\dtlbar at ylabel\relax
+\else
+ \addtolength{\dtl at yticlabelwidth}{\baselineskip}%
+ \setlength{\dtl at tmplength}{0.5\DTLbarchartlength}
+ \ifDTLverticalbars
+ \pgftext[bottom,center,at={\pgfpointadd
+ {\pgfpointxy{0}{\DTLnegextent}}%
+ {\pgfpoint{-\dtl at yticlabelwidth}{\dtl at tmplength}}},
+ rotate=90]{%
+ \dtlbar at ylabel}
+ \else
+ \pgftext[bottom,center,at={\pgfpointadd
+ {\pgfpointxy{\DTLnegextent}{0}}%
+ {\pgfpoint{\dtl at tmplength}{-\dtl at yticlabelwidth}}}]{%
+ \dtlbar at ylabel}
+ \fi
+\fi
+\DTLbaratendtikz
+\end{tikzpicture}
+\fi
+}}
+\endinput
+%%
+%% End of file `databar-2019-09-27.sty'.
Property changes on: trunk/Master/texmf-dist/tex/latex/datatool/databar-2019-09-27.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: trunk/Master/texmf-dist/tex/latex/datatool/databar.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/datatool/databar.sty 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/tex/latex/datatool/databar.sty 2025-03-05 21:33:51 UTC (rev 74461)
@@ -21,7 +21,7 @@
%%
%% The Current Maintainer of this work is Nicola Talbot.
%%
-%% This work consists of the files datatool.dtx and datatool.ins and the derived files datatool-base.sty, datatool-undetermined.ldf, datatool-latin1.ldf, datatool-utf8.ldf, datatool-l3fp.def, datatool-lua.def, datatool-fp.def, datatool-fp.sty, datatool-pgfmath.def, datatool-pgfmath.sty, datatool.sty, datagidx.sty, databib.sty, databar.sty, datapie.sty, dataplot.sty, person.sty, databib.bst.
+%% This work consists of the files datatool.dtx and datatool.ins and the derived files datatool-base.sty, datatool-undetermined.ldf, datatool-latin1.ldf, datatool-utf8.ldf, datatool-l3fp.def, datatool-lua.def, datatool-fp.def, datatool-fp.sty, datatool-pgfmath.def, datatool-pgfmath.sty, datatool.sty, datagidx.sty, databib.sty, databar.sty, datapie.sty, dataplot.sty, person.sty, databib.bst, databar-2019-09-27.sty, databib-2019-09-27.sty, datagidx-2019-09-27.sty, datapie-2019-09-27.sty, dataplot-2019-09-27.sty, datatool-2019-09-27.sty, datatool-base-2019-09-27.sty, datatool-fp-2019-09-27.sty, datatool-pgfmath-2019-09-27.sty, person-2019-09-27.sty.
%%
%% \CharacterTable
%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
@@ -40,8 +40,8 @@
%% Right brace \} Tilde \~}
\NeedsTeXFormat{LaTeX2e}
\DeclareRelease{v2.32}{2019-09-27}{databar-2019-09-27.sty}
-\DeclareCurrentRelease{v3.0}{2025-03-03}
-\ProvidesPackage{databar}[2025/03/03 v3.0 (NLCT)]
+\DeclareCurrentRelease{v3.0.1}{2025-03-05}
+\ProvidesPackage{databar}[2025/03/05 v3.0.1 (NLCT)]
\newif\ifDTLcolorbarchart
\DTLcolorbarcharttrue
\newif\ifDTLverticalbars
Added: trunk/Master/texmf-dist/tex/latex/datatool/databib-2019-09-27.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/datatool/databib-2019-09-27.sty (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/datatool/databib-2019-09-27.sty 2025-03-05 21:33:51 UTC (rev 74461)
@@ -0,0 +1,1733 @@
+%%
+%% This is file `databib-2019-09-27.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% datatool.dtx (with options: `databib-2019-09-27.sty,package')
+%%
+%% datatool.dtx
+%% Copyright 2025 Nicola Talbot
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of LaTeX
+%% version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status `maintained'.
+%%
+%% The Current Maintainer of this work is Nicola Talbot.
+%%
+%% This work consists of the files datatool.dtx and datatool.ins and the derived files datatool-base.sty, datatool-undetermined.ldf, datatool-latin1.ldf, datatool-utf8.ldf, datatool-l3fp.def, datatool-lua.def, datatool-fp.def, datatool-fp.sty, datatool-pgfmath.def, datatool-pgfmath.sty, datatool.sty, datagidx.sty, databib.sty, databar.sty, datapie.sty, dataplot.sty, person.sty, databib.bst, databar-2019-09-27.sty, databib-2019-09-27.sty, datagidx-2019-09-27.sty, datapie-2019-09-27.sty, dataplot-2019-09-27.sty, datatool-2019-09-27.sty, datatool-base-2019-09-27.sty, datatool-fp-2019-09-27.sty, datatool-pgfmath-2019-09-27.sty, person-2019-09-27.sty.
+%%
+%% \CharacterTable
+%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+%% Digits \0\1\2\3\4\5\6\7\8\9
+%% Exclamation \! Double quote \" Hash (number) \#
+%% Dollar \$ Percent \% Ampersand \&
+%% Acute accent \' Left paren \( Right paren \)
+%% Asterisk \* Plus \+ Comma \,
+%% Minus \- Point \. Solidus \/
+%% Colon \: Semicolon \; Less than \<
+%% Equals \= Greater than \> Question mark \?
+%% Commercial at \@ Left bracket \[ Backslash \\
+%% Right bracket \] Circumflex \^ Underscore \_
+%% Grave accent \` Left brace \{ Vertical bar \|
+%% Right brace \} Tilde \~}
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{databib}[2019/09/27 v2.32 (NLCT)]
+\RequirePackage{datatool}[=v2.32]
+\newcommand*{\dtlbib at style}{plain}
+\define at choicekey{databib.sty}{style}{plain,abbrv,alpha}{%
+\def\dtlbib at style{#1}}
+\ProcessOptionsX
+\newcommand*{\DTLloadbbl}[3][\jobname.bbl]{%
+\bibliographystyle{databib}%
+\if at filesw
+ \immediate\write\@auxout{\string\bibdata{#3}}%
+\fi
+\DTLnewdb{#2}%
+\edef\DTLBIBdbname{#2}%
+\@input@{#1}}
+\newcommand*{\DTLnewbibrow}{\@DTLnewrow{\DTLBIBdbname}}
+\newcommand*{\DTLnewbibitem}[2]{%
+ \@DTLnewdbentry{\DTLBIBdbname}{#1}{#2}}
+\providecommand*{\andname}{and}
+\providecommand*{\ofname}{of}
+\providecommand*{\inname}{in}
+\providecommand*{\etalname}{et al.}
+\providecommand*{\editorname}{editor}
+\providecommand*{\editorsname}{editors}
+\providecommand*{\volumename}{volume}
+\providecommand*{\numbername}{number}
+\providecommand*{\pagesname}{pages}
+\providecommand*{\pagename}{page}
+\providecommand*{\editionname}{edition}
+\providecommand*{\techreportname}{Technical report}
+\providecommand*{\mscthesisname}{Master's thesis}
+\providecommand*{\phdthesisname}{PhD thesis}
+\newcommand*{\DTLbibliography}[2][\boolean{true}]{%
+ \begin{DTLthebibliography}[#1]{#2}%
+ \DTLforeachbibentry[#1]{#2}{%
+ \DTLbibitem \DTLformatbibentry \DTLendbibitem
+ }%
+ \end{DTLthebibliography}%
+}
+\newcommand*{\DTLformatbibentry}{%
+ \@ifundefined{DTLformat\DBIBentrytype}%
+ {%
+ \PackageError{databib}{Don't know how to format bibliography
+ entries of type `\DBIBentrytype'}{}%
+ }%
+ {%
+ \dtl at message{[\DBIBcitekey]}%
+ \DTLstartsentencefalse\DTLmidsentencefalse\DTLperiodfalse
+ \csname DTLformat\DBIBentrytype\endcsname
+ }%
+}
+\newcommand*{\gDTLformatbibentry}{%
+ \@ifundefined{DTLformat\DBIBentrytype}%
+ {%
+ \PackageError{databib}{Don't know how to format bibliography
+ entries of type `\DBIBentrytype'}{}%
+ }%
+ {%
+ \dtl at message{[\DBIBcitekey]}%
+ \global\DTLstartsentencefalse
+ \global\DTLmidsentencefalse
+ \global\DTLperiodfalse
+ \csname DTLformat\DBIBentrytype\endcsname
+ }%
+}
+\newcommand*{\DTLformatthisbibentry}[2]{%
+ \edef\DBIBname{#1}%
+ \edef\DBIBcitekey{#2}%
+ \edtlgetrowforvalue{#1}{\dtlcolumnindex{#1}{CiteKey}}{\DBIBcitekey}%
+ \dtl at gathervalues{#1}{\dtlcurrentrow}%
+ \letcs{\DBIBentrytype}{@dtl at key@EntryType}%
+ \DTLformatbibentry
+}
+\newcommand*{\DTLendbibitem}{}
+\newlength\dtl at widest
+\newcommand*{\DTLcomputewidestbibentry}[4]{%
+\dtl at widest=0pt\relax
+\let#4=\@empty
+\DTLforeachbibentry[#1]{#2}{%
+\settowidth{\dtl at tmplength}{#3}%
+\ifdim\dtl at tmplength>\dtl at widest\relax
+ \dtl at widest=\dtl at tmplength
+ \protected at edef#4{#3}%
+\fi
+}%
+}
+\newcommand*{\DTLforeachbibentry}{%
+\@ifstar\@sDTLforeachbibentry\@DTLforeachbibentry}
+\newcommand*{\@DTLforeachbibentry}[3][\boolean{true}]{%
+ \edef\DBIBname{#2}%
+ \setcounter{DTLbibrow}{0}%
+ \@DTLforeach{#2}{\DBIBcitekey=CiteKey,\DBIBentrytype=EntryType}%
+ {%
+ \dtl at gathervalues{#2}{\dtlcurrentrow}%
+ \ifthenelse{#1}{\refstepcounter{DTLbibrow}#3}{}%
+ }%
+}
+\newcommand*{\@sDTLforeachbibentry}[3][\boolean{true}]{%
+ \edef\DBIBname{#2}%
+ \setcounter{DTLbibrow}{0}%
+ \@sDTLforeach{#2}{\DBIBcitekey=CiteKey,\DBIBentrytype=EntryType}%
+ {%
+ \dtl at gathervalues{#2}{\dtlcurrentrow}%
+ \ifthenelse{#1}{\refstepcounter{DTLbibrow}#3}{}%
+ }%
+}
+\newcommand{\gDTLforeachbibentry}{%
+\@ifstar\@sgDTLforeachbibentry\@gDTLforeachbibentry}
+\newcommand*{\@gDTLforeachbibentry}[3][\boolean{true}]{%
+ \xdef\DBIBname{#2}%
+ \global\c at DTLbibrow = 0\relax
+ \@DTLforeach{#2}{\DBIBcitekey=CiteKey,\DBIBentrytype=EntryType}%
+ {%
+ \dtl at g@gathervalues{#2}{\dtlcurrentrow}%
+ \ifthenelse{#1}%
+ {%
+ \refstepcounter{DTLbibrow}%
+ \global\c at DTLbibrow=\c at DTLbibrow
+ #3%
+ }%
+ {}%
+ }%
+}
+\newcommand*{\@sgDTLforeachbibentry}[3][\boolean{true}]{%
+ \xdef\DBIBname{#2}%
+ \global\c at DTLbibrow = 0\relax
+ \@sDTLforeach{#2}{\DBIBcitekey=CiteKey,\DBIBentrytype=EntryType}%
+ {%
+ \dtl at g@gathervalues{#2}{\dtlcurrentrow}%
+ \ifthenelse{#1}%
+ {%
+ \refstepcounter{DTLbibrow}%
+ \global\c at DTLbibrow=\c at DTLbibrow
+ #3%
+ }%
+ {}%
+ }%
+}
+\newcounter{DTLbibrow}
+\def\theHDTLbibrow{\theHDTLrow.bib.\arabic{DTLbibrow}}%
+\newcommand*{\DTLbibfield}[1]{\csname @dtl at key@#1\endcsname}
+\newcommand*{\DTLbibfieldlet}[2]{%
+ \letcs{#1}{@dtl at key@#2}%
+}
+\newcommand*{\DTLifbibfieldexists}[3]{%
+\@ifundefined{@dtl at key@#1}{#3}{%
+\expandafter\DTLifnull\csname @dtl at key@#1\endcsname
+{#3}{#2}}}
+\newcommand*{\DTLifanybibfieldexists}[3]{%
+\@for\dtl at thisfield:=#1\do{%
+\@ifundefined{@dtl at key@\dtl at thisfield}{}{%
+\expandafter\DTLifnull\csname @dtl at key@\dtl at thisfield\endcsname
+{}{%
+\@endfortrue}}}%
+\if at endfor
+ #2%
+\else
+ #3%
+\fi
+\@endforfalse
+}
+\newif\ifDTLperiod
+\newcommand*{\DTLcheckendsperiod}[1]{%
+\dtl at checkendsperiod#1\@nil\relax}
+\def\dtl at checkendsperiod#1#2{%
+\def\@dtl at argi{#1}\def\@dtl at argii{#2}%
+\def\@dtl at period{.}%
+\ifx\@dtl at argi\@nnil
+ \global\DTLperiodfalse
+ \let\@dtl at donext=\relax
+\else
+ \ifx\@dtl at argii\@nnil
+ \ifx\@dtl at argi\@dtl at period
+ \global\DTLperiodtrue
+ \else
+ \global\DTLperiodfalse
+ \fi
+ \let\@dtl at donext=\@gobble
+ \else
+ \let\@dtl at donext=\dtl at checkendsperiod
+ \fi
+\fi
+\@dtl at donext{#2}%
+}
+\newcommand*{\DTLcheckbibfieldendsperiod}[1]{%
+\protected at edef\@dtl at tmp{\DTLbibfield{#1}}%
+\expandafter\DTLcheckendsperiod\expandafter{\@dtl at tmp}}
+\newif\ifDTLmidsentence
+\newif\ifDTLstartsentence
+\newcommand*{\DTLaddperiod}{\DTLmidsentencefalse\DTLperiodfalse
+\DTLstartsentencetrue
+\ifDTLperiod\else.\fi}
+\newcommand*{\DTLaddcomma}{, \DTLmidsentencetrue
+\DTLperiodfalse\DTLstartsentencefalse}
+\newcommand*{\DTLstartsentencespace}{%
+\ifDTLstartsentence\spacefactor=\sfcode`\.\relax\space
+\fi\DTLstartsentencefalse}
+\newcommand*{\DTLtwoand}{\ \andname\ }
+\newcommand*{\DTLandlast}{, \andname\ }
+\newcommand*{\DTLandnotlast}{, }
+\newcount\@dtl at authorcount
+\newcounter{DTLmaxauthors}
+\setcounter{DTLmaxauthors}{10}
+\newcommand*{\DTLformatauthorlist}{%
+\DTLifbibfieldexists{Author}{%
+\DTLstartsentencespace
+\@dtl at authorcount=0\relax
+\@for\@dtl at author:=\@dtl at key@Author\do{%
+\advance\@dtl at authorcount by 1\relax}%
+\@dtl at tmpcount=0\relax
+\ifnum\@dtl at authorcount>\c at DTLmaxauthors
+{%
+ \@for\@dtl at author:=\@dtl at key@Author\do{%
+ \advance\@dtl at tmpcount by 1\relax
+ \ifnum\@dtl at tmpcount=1\relax
+ \expandafter\DTLformatauthor\@dtl at author
+ \else
+ \ifnum\@dtl at tmpcount>\c at DTLmaxauthors
+ \DTLandnotlast \etalname
+ \expandafter\DTLcheckendsperiod\expandafter{\etalname}%
+ \@endfortrue
+ \else
+ \DTLandnotlast \expandafter\DTLformatauthor\@dtl at author
+ \fi
+ \fi
+ }%
+}%
+\else
+ \@for\@dtl at author:=\@dtl at key@Author\do{%
+ \advance\@dtl at tmpcount by 1\relax
+ \ifnum\@dtl at tmpcount=1\relax
+ \expandafter\DTLformatauthor\@dtl at author
+ \else
+ \ifnum\@dtl at tmpcount=\@dtl at authorcount
+ \ifnum\@dtl at authorcount=2\relax
+ \DTLtwoand
+ \else
+ \DTLandlast
+ \fi
+ \expandafter\DTLformatauthor\@dtl at author
+ \else
+ \DTLandnotlast \expandafter\DTLformatauthor\@dtl at author
+ \fi
+ \fi
+ }%
+\fi
+}{}%
+}
+\newcounter{DTLmaxeditors}
+\setcounter{DTLmaxeditors}{10}
+\newcommand*{\DTLformateditorlist}{%
+\DTLifbibfieldexists{Editor}{%
+\DTLstartsentencespace
+\@dtl at authorcount=0\relax
+\@for\@dtl at author:=\@dtl at key@Editor\do{%
+\advance\@dtl at authorcount by 1\relax}%
+\@dtl at tmpcount=0\relax
+\ifnum\@dtl at authorcount>\c at DTLmaxeditors
+{%
+ \@for\@dtl at author:=\@dtl at key@Editor\do{%
+ \advance\@dtl at tmpcount by 1\relax
+ \ifnum\@dtl at tmpcount=1\relax
+ \expandafter\DTLformateditor\@dtl at author
+ \else
+ \ifnum\@dtl at tmpcount>\c at DTLmaxeditors
+ \DTLandnotlast \etalname
+ \expandafter\DTLcheckendsperiod\expandafter{\etalname}%
+ \@endfortrue
+ \else
+ \DTLandnotlast \expandafter\DTLformateditor\@dtl at author
+ \fi
+ \fi
+ }%
+}%
+\else
+\@for\@dtl at author:=\@dtl at key@Editor\do{%
+ \advance\@dtl at tmpcount by 1\relax
+ \ifnum\@dtl at tmpcount=1\relax
+ \expandafter\DTLformateditor\@dtl at author
+ \else
+ \ifnum\@dtl at tmpcount=\@dtl at authorcount
+ \ifnum\@dtl at authorcount=2\relax
+ \DTLtwoand
+ \else
+ \DTLandlast
+ \fi
+ \expandafter\DTLformateditor\@dtl at author
+ \else
+ \DTLandnotlast \expandafter\DTLformateditor\@dtl at author
+ \fi
+ \fi
+ }%
+\fi
+,
+\ifnum\@dtl at authorcount=1\relax
+ \editorname
+ \expandafter\DTLcheckendsperiod\expandafter{\editorname}%
+\else
+ \editorsname
+ \expandafter\DTLcheckendsperiod\expandafter{\editorsname}%
+\fi
+}{}%
+}
+\newcommand*{\DTLformatsurnameonly}[4]{%
+\DTLstartsentencespace
+\def\@dtl at tmp{#1}%
+\ifx\@dtl at tmp\@empty\else#1~\fi
+#2%
+\def\@dtl at tmp{#3}%
+\ifx\@dtl at tmp\@empty
+ \DTLcheckendsperiod{#2}%
+\else
+ , #3%
+ \DTLcheckendsperiod{#3}%
+\fi
+}
+\newcommand*{\DTLformatforenames}[1]{%
+\DTLstartsentencespace
+#1%
+\DTLcheckendsperiod{#1}}
+\newcommand*{\DTLformatabbrvforenames}[1]{%
+\DTLstartsentencespace
+\DTLstoreinitials{#1}{\@dtl at tmp}\@dtl at tmp
+\expandafter\DTLcheckendsperiod\expandafter{\@dtl at tmp}}
+\newcommand*{\DTLformatvon}[1]{%
+\DTLstartsentencespace
+\def\@dtl at tmp{#1}%
+\ifx\@dtl at tmp\@empty
+\else
+ #1~%
+\fi
+}
+\newcommand*{\DTLformatsurname}[1]{%
+\DTLstartsentencespace
+#1\DTLcheckendsperiod{#1}}
+\newcommand*{\DTLformatjr}[1]{%
+\DTLstartsentencespace
+\def\@dtl at tmp{#1}%
+\ifx\@dtl at tmp\@empty
+\else
+ , #1\DTLcheckendsperiod{#1}%
+\fi
+}
+\newcommand*{\DTLformatcrossrefeditor}{%
+\DTLifbibfieldexists{Editor}{%
+\DTLstartsentencespace
+\@dtl at authorcount=0\relax
+\@for\@dtl at author:=\@dtl at key@Editor\do{%
+\advance\@dtl at authorcount by 1\relax}%
+{\@dtl at tmpcount=0\relax
+\@for\@dtl at author:=\@dtl at key@Editor\do{%
+\ifnum\@dtl at authorcount=1\relax
+ \expandafter\DTLformatsurnameonly\@dtl at author
+\else
+ \advance\@dtl at tmpcount by 1\relax
+ \ifnum\@dtl at tmpcount=1\relax
+ \expandafter\DTLformatsurnameonly\@dtl at author
+ \else
+ \ifnum\@dtl at authorcount=2\relax
+ \ \andname\ \expandafter\DTLformatsurnameonly\@dtl at author
+ \else
+ \ \etalname
+ \expandafter\DTLcheckendsperiod\expandafter{\etalname}
+ \fi
+ \@endfortrue
+ \fi
+\fi
+}}%
+}{}%
+}
+\newcommand*{\DTLformatvolnumpages}{%
+\DTLifbibfieldexists{Volume}{%
+\DTLstartsentencespace
+\DTLbibfield{Volume}\DTLperiodfalse}{}%
+\DTLifbibfieldexists{Number}{%
+\DTLstartsentencespace
+(\DTLbibfield{Number})\DTLperiodfalse}{}%
+\DTLifbibfieldexists{Pages}{%
+\DTLifanybibfieldexists{Volume,Number}{:}{%
+\DTLstartsentencespace
+\protected at edef\@dtl at pages{0\DTLbibfield{Pages}}%
+\DTLifnumerical{\@dtl at pages}{\pagename}{\pagesname}~}%
+\DTLbibfield{Pages}\DTLperiodfalse}{}%
+}
+\newcommand*{\DTLformatbvolume}{%
+\DTLifbibfieldexists{Volume}{%
+\ifDTLmidsentence
+ \volumename
+\else
+ \DTLstartsentencespace
+ \expandafter\MakeUppercase\volumename
+\fi
+~\DTLbibfield{Volume}%
+\DTLifbibfieldexists{Series}{\ \ofname\
+{\em\DTLbibfield{Series}}\DTLcheckbibfieldendsperiod{Series}}{%
+\DTLcheckbibfieldendsperiod{Volume}}%
+}{}}
+\newcommand*{\DTLformatchapterpages}{%
+\DTLifbibfieldexists{Chapter}{%
+\DTLifbibfieldexists{Type}{%
+\DTLstartsentencespace
+\DTLbibfield{Type}}{%
+\DTLstartsentencespace
+\chaptername}~\DTLbibfield{Chapter}%
+\DTLifbibfieldexists{Pages}{\DTLaddcomma}{%
+\DTLcheckbibfieldendsperiod{Chapter}}}{}%
+\DTLstartsentencespace
+\DTLformatpages}
+\newcommand*{\DTLformatpages}{%
+\DTLifbibfieldexists{Pages}{%
+\DTLstartsentencespace
+\protected at edef\@dtl at pages{0\DTLbibfield{Pages}}%
+\DTLifnumerical{\@dtl at pages}{\pagename}{\pagesname}~%
+\DTLbibfield{Pages}\DTLcheckbibfieldendsperiod{Pages}}{}%
+}
+\newcommand*{\DTLformatnumberseries}{%
+\DTLifbibfieldexists{Volume}{}{%
+\DTLifbibfieldexists{Number}{%
+\ifDTLmidsentence
+ \numbername
+\else
+ \DTLstartsentencespace
+ \expandafter\MakeUppercase\numbername
+\fi~\DTLbibfield{Number}%
+\DTLifbibfieldexists{Series}{\ \inname\ \DTLbibfield{Series}%
+\DTLcheckbibfieldendsperiod{Series}}{%
+\DTLcheckbibfieldendsperiod{Number}}%
+}{%
+\DTLifbibfieldexists{Series}{%
+\DTLstartsentencespace
+\DTLbibfield{Series}%
+\DTLcheckbibfieldendsperiod{Series}}{}}%
+}%
+}
+\newcommand*{\DTLformatbookcrossref}{%
+\DTLifbibfieldexists{Volume}{%
+\ifDTLmidsentence
+ \volumename
+\else
+ \DTLstartsentencespace
+ \expandafter\MakeUppercase\volumename
+\fi
+~\DTLbibfield{Volume}\ \ofname\
+}{%
+\ifDTLmidsentence
+ \inname
+\else
+ \DTLstartsentencespace
+ \expandafter\MakeUppercase\inname
+\fi\ }%
+\DTLifbibfieldexists{Editor}{\DTLformatcrossrefeditor}{%
+\DTLifbibfieldexists{Key}{%
+\DTLbibfield{Key}}{%
+\DTLifbibfieldexists{Series}{%
+{\em\DTLbibfield{Series}}}{}%
+}%
+}%
+~\DTLpcite{\DTLbibfield{CrossRef}}%
+}
+\newcommand*{\DTLformatincollproccrossref}{%
+\DTLifbibfieldexists{Editor}{%
+\ifDTLmidsentence
+ \inname
+\else
+ \DTLstartsentencespace
+ \expandafter\MakeUppercase\inname
+\fi\
+\DTLformatcrossrefeditor
+}{%
+\DTLifbibfieldexists{Key}{%
+\ifDTLmidsentence
+ \inname
+\else
+ \DTLstartsentencespace
+ \expandafter\MakeUppercase\inname
+\fi\ \DTLbibfield{Key}%
+}{%
+\DTLifbibfieldexists{BookTitle}{%
+\ifDTLmidsentence
+ \inname
+\else
+ \DTLstartsentencespace
+ \expandafter\MakeUppercase\inname
+\fi\ \DTLformatbooktitle{\DTLbibfield{BookTitle}}}{}%
+}}%
+~\DTLpcite{\DTLbibfield{CrossRef}}%
+}
+\newcommand*{\DTLformatinedbooktitle}{%
+\DTLifbibfieldexists{BookTitle}{%
+\ifDTLmidsentence
+ \inname
+\else
+ \DTLstartsentencespace
+ \expandafter\MakeUppercase\inname
+\fi\
+\DTLifbibfieldexists{Editor}{%
+\DTLformateditorlist\DTLaddcomma \DTLformatbooktitle{\DTLbibfield{BookTitle}}%
+\DTLcheckbibfieldendsperiod{BookTitle}%
+}{\DTLformatbooktitle{\DTLbibfield{BookTitle}}%
+\DTLcheckbibfieldendsperiod{BookTitle}%
+}}{}}
+\newcommand*{\DTLformatdate}{%
+\DTLifbibfieldexists{Year}{%
+\DTLifbibfieldexists{Month}{%
+\protected at edef\@dtl at tmp{\DTLbibfield{Month}}%
+\ifDTLmidsentence
+ \@dtl at tmp
+\else
+ \DTLstartsentencespace
+ \expandafter\MakeUppercase\@dtl at tmp
+\fi\
+\DTLmidsentencefalse}{}%
+\DTLstartsentencespace
+\DTLbibfield{Year}}{%
+\DTLifbibfieldexists{Month}{%
+\protected at edef\@dtl at tmp{\DTLbibfield{Month}}%
+\ifDTLmidsentence
+ \@dtl at tmp
+\else
+ \DTLstartsentencespace
+ \expandafter\MakeUppercase\@dtl at tmp
+\fi
+\DTLcheckbibfieldendsperiod{Month}%
+}{}}}
+\newcommand*{\DTLformatarticlecrossref}{%
+\DTLifbibfieldexists{Key}{%
+\ifDTLmidsentence
+ \inname
+\else
+ \DTLstartsentencespace
+ \expandafter\MakeUppercase\inname
+\fi
+\ {\em\DTLbibfield{Key}}}{%
+\DTLifbibfieldexists{Journal}{%
+\ifDTLmidsentence
+ \inname
+\else
+ \DTLstartsentencespace
+ \expandafter\MakeUppercase\inname
+\fi
+\ {\em\DTLbibfield{Journal}}}{}}%
+~\DTLpcite{\DTLbibfield{CrossRef}}%
+}
+\newrobustcmd*{\DTLpcite}[1]{%
+ \protected at edef\@dtl at tmp{#1}%
+ \cite{\@dtl at tmp}%
+}
+\newcommand*{\DTLbibfieldexists}[1]{%
+\TE at throw\noexpand\dtl at testbibfieldexists{#1}%
+\noexpand\if at dtl@condition}
+\newcommand*{\dtl at testbibfieldexists}[1]{%
+\DTLifbibfieldexists{#1}{\@dtl at conditiontrue}{\@dtl at conditionfalse}}
+\newcommand*{\DTLbibfieldiseq}[2]{%
+\TE at throw\noexpand\dtl at testbibfieldiseq{#1}{#2}%
+\noexpand\if at dtl@condition}
+\newcommand*{\dtl at testbibfieldiseq}[2]{%
+\DTLifbibfieldexists{#1}{%
+\expandafter\let\expandafter\@dtl at tmp\expandafter
+ =\csname @dtl at key@#1\endcsname
+\expandafter\toks@\expandafter{\@dtl at tmp}%
+\@dtl at toks{#2}%
+\edef\@dtl at docompare{\noexpand\dtlcompare{\noexpand\@dtl at tmpcount}%
+{\the\toks@}{\the\@dtl at toks}}%
+\@dtl at docompare
+\ifnum\@dtl at tmpcount=0\relax
+ \@dtl at conditiontrue
+\else
+ \@dtl at conditionfalse
+\fi
+}{%
+\@dtl at conditionfalse}%
+}
+\newcommand*{\DTLbibfieldislt}[2]{%
+\TE at throw\noexpand\dtl at testbibfieldislt{#1}{#2}%
+\noexpand\if at dtl@condition}
+\newcommand*{\dtl at testbibfieldislt}[2]{%
+\DTLifbibfieldexists{#1}{%
+\expandafter\let\expandafter\@dtl at tmp\expandafter
+ =\csname @dtl at key@#1\endcsname
+\expandafter\toks@\expandafter{\@dtl at tmp}%
+\@dtl at toks{#2}%
+\edef\@dtl at docompare{\noexpand\dtlcompare{\noexpand\@dtl at tmpcount}%
+{\the\toks@}{\the\@dtl at toks}}%
+\@dtl at docompare
+\ifnum\@dtl at tmpcount=-1\relax
+ \@dtl at conditiontrue
+\else
+ \@dtl at conditionfalse
+\fi
+}{%
+\@dtl at conditionfalse}%
+}
+\newcommand*{\DTLbibfieldisle}[2]{%
+\TE at throw\noexpand\dtl at testbibfieldisle{#1}{#2}%
+\noexpand\if at dtl@condition}
+\newcommand*{\dtl at testbibfieldisle}[2]{%
+\DTLifbibfieldexists{#1}{%
+\expandafter\let\expandafter\@dtl at tmp\expandafter
+ =\csname @dtl at key@#1\endcsname
+\expandafter\toks@\expandafter{\@dtl at tmp}%
+\@dtl at toks{#2}%
+\edef\@dtl at docompare{\noexpand\dtlcompare{\noexpand\@dtl at tmpcount}%
+{\the\toks@}{\the\@dtl at toks}}%
+\@dtl at docompare
+\ifnum\@dtl at tmpcount<1\relax
+ \@dtl at conditiontrue
+\else
+ \@dtl at conditionfalse
+\fi
+}{%
+\@dtl at conditionfalse}%
+}
+\newcommand*{\DTLbibfieldisgt}[2]{%
+\TE at throw\noexpand\dtl at testbibfieldisgt{#1}{#2}%
+\noexpand\if at dtl@condition}
+\newcommand*{\dtl at testbibfieldisgt}[2]{%
+\DTLifbibfieldexists{#1}{%
+\expandafter\let\expandafter\@dtl at tmp\expandafter
+ =\csname @dtl at key@#1\endcsname
+\expandafter\toks@\expandafter{\@dtl at tmp}%
+\@dtl at toks{#2}%
+\edef\@dtl at docompare{\noexpand\dtlcompare{\noexpand\@dtl at tmpcount}%
+{\the\toks@}{\the\@dtl at toks}}%
+\@dtl at docompare
+\ifnum\@dtl at tmpcount=1\relax
+ \@dtl at conditiontrue
+\else
+ \@dtl at conditionfalse
+\fi
+}{%
+\@dtl at conditionfalse}%
+}
+\newcommand*{\DTLbibfieldisge}[2]{%
+\TE at throw\noexpand\dtl at testbibfieldisge{#1}{#2}%
+\noexpand\if at dtl@condition}
+\newcommand*{\dtl at testbibfieldisge}[2]{%
+\DTLifbibfieldexists{#1}{%
+\expandafter\let\expandafter\@dtl at tmp\expandafter
+ =\csname @dtl at key@#1\endcsname
+\expandafter\toks@\expandafter{\@dtl at tmp}%
+\@dtl at toks{#2}%
+\edef\@dtl at docompare{\noexpand\dtlcompare{\noexpand\@dtl at tmpcount}%
+{\the\toks@}{\the\@dtl at toks}}%
+\@dtl at docompare
+\ifnum\@dtl at tmpcount>-1\relax
+ \@dtl at conditiontrue
+\else
+ \@dtl at conditionfalse
+\fi
+}{%
+\@dtl at conditionfalse}%
+}
+\newcommand*{\DTLbibfieldcontains}[2]{%
+\TE at throw\noexpand\dtl at testbibfieldcontains{#1}{#2}%
+\noexpand\if at dtl@condition}
+\newcommand*{\dtl at testbibfieldcontains}[2]{%
+\DTLifbibfieldexists{#1}{%
+\expandafter\let\expandafter\@dtl at tmp\expandafter
+ =\csname @dtl at key@#1\endcsname
+\expandafter\dtl at testifsubstring\expandafter{\@dtl at tmp}{#2}%
+}{\@dtl at conditionfalse}}
+\newenvironment{DTLthebibliography}[2][\boolean{true}]{%
+\@dtl at tmpcount=0\relax
+\@sDTLforeach[#1]{#2}{}{\advance\@dtl at tmpcount by 1\relax}%
+\begin{thebibliography}{\number\@dtl at tmpcount}
+}{\end{thebibliography}}
+\newcommand*{\DTLmonthname}[1]{%
+\dtl at monthname{#1}}
+\newcommand*{\dtl at monthname}[1]{%
+\ifcase#1%
+\or January%
+\or February%
+\or March%
+\or April%
+\or May%
+\or June%
+\or July%
+\or August%
+\or September%
+\or October%
+\or November%
+\or December%
+\fi}
+\newcommand*{\dtl at abbrvmonthname}[1]{%
+\ifcase#1%
+\or Jan.%
+\or Feb.%
+\or Mar.%
+\or Apr.%
+\or May%
+\or June%
+\or July%
+\or Aug.%
+\or Sept.%
+\or Oct.%
+\or Nov.%
+\or Dec.%
+\fi}
+\newcommand*{\DTLbibitem}{\bibitem{\DBIBcitekey}}
+\newcommand*{\DTLmbibitem}[1]{\bibitem{#1@\DBIBcitekey}}
+\newcommand*{\DTLcustombibitem}[3]{%
+ #1%
+ \if at filesw
+ \immediate\write\@auxout{\string\bibcite{#3}{#2}}%
+ \fi
+ \ignorespaces
+}
+\newcommand*{\DTLformatauthor}[4]{%
+\DTLformatforenames{#4}
+\DTLformatvon{#1}%
+\DTLformatsurname{#2}%
+\DTLformatjr{#3}}
+\newcommand*{\DTLformateditor}[4]{%
+\DTLformatforenames{#4}
+\DTLformatvon{#1}%
+\DTLformatsurname{#2}%
+\DTLformatjr{#3}}
+\newcommand*{\DTLformatedition}[1]{#1 \editionname}
+\newcommand{\DTLformatarticle}{}
+\newcommand{\DTLformatbook}{}
+\newcommand{\DTLformatbooklet}{}
+\newcommand{\DTLformatinbook}{}
+\newcommand{\DTLformatincollection}{}
+\newcommand{\DTLformatinproceedings}{}
+\newcommand{\DTLformatmanual}{}
+\newcommand{\DTLformatmastersthesis}{}
+\newcommand{\DTLformatmisc}{}
+\newcommand{\DTLformatphdthesis}{}
+\newcommand{\DTLformatproceedings}{}
+\newcommand{\DTLformattechreport}{}
+\newcommand{\DTLformatunpublished}{}
+\newcommand*{\DTLacmcs}{ACM Computing Surveys}
+\newcommand*{\DTLacta}{Acta Informatica}
+\newcommand*{\DTLcacm}{Communications of the ACM}
+\newcommand*{\DTLibmjrd}{IBM Journal of Research and Development}
+\newcommand*{\DTLibmsj}{IBM Systems Journal}
+\newcommand*{\DTLieeese}{IEEE Transactions on Software Engineering}
+\newcommand*{\DTLieeetc}{IEEE Transactions on Computers}
+\newcommand*{\DTLieeetcad}{IEEE Transactions on Computer-Aided Design
+of Integrated Circuits}
+\newcommand*{\DTLipl}{Information Processing Letters}
+\newcommand*{\DTLjacm}{Journal of the ACM}
+\newcommand*{\DTLjcss}{Journal of Computer and System Sciences}
+\newcommand*{\DTLscp}{Science of Computer Programming}
+\newcommand*{\DTLsicomp}{SIAM Journal on Computing}
+\newcommand*{\DTLtocs}{ACM Transactions on Computer Systems}
+\newcommand*{\DTLtods}{ACM Transactions on Database Systems}
+\newcommand*{\DTLtog}{ACM Transactions on Graphics}
+\newcommand*{\DTLtoms}{ACM Transactions on Mathematical Software}
+\newcommand*{\DTLtoois}{ACM Transactions on Office Information
+Systems}
+\newcommand*{\DTLtoplas}{ACM Transactions on Programming Languages
+and Systems}
+\newcommand*{\DTLtcs}{Theoretical Computer Science}
+\newcommand{\dtlbst at plain}{%
+ \renewenvironment{DTLthebibliography}[2][\boolean{true}]{%
+ \@dtl at tmpcount=0\relax
+ \@sDTLforeach[##1]{##2}{}{\advance\@dtl at tmpcount by 1\relax}%
+ \begin{thebibliography}{\number\@dtl at tmpcount}%
+ }{\end{thebibliography}}%
+ \renewcommand*{\DTLbibitem}{\bibitem{\DBIBcitekey}}%
+ \renewcommand*{\DTLmbibitem}[1]{\bibitem{##1@\DBIBcitekey}}%
+ \renewcommand*{\DTLformatauthor}[4]{%
+ \DTLformatforenames{##4}
+ \DTLformatvon{##1}%
+ \DTLformatsurname{##2}%
+ \DTLformatjr{##3}}
+ \renewcommand*{\DTLformateditor}[4]{%
+ \DTLformatforenames{##4}
+ \DTLformatvon{##1}%
+ \DTLformatsurname{##2}%
+ \DTLformatjr{##3}}
+ \renewcommand*{\DTLformatedition}[1]{##1 \editionname}%
+ \let\DTLmonthname\dtl at monthname
+ \renewcommand*{\DTLacmcs}{ACM Computing Surveys}
+ \renewcommand*{\DTLacta}{Acta Informatica}
+ \renewcommand*{\DTLcacm}{Communications of the ACM}
+ \renewcommand*{\DTLibmjrd}{IBM Journal of Research and Development}
+ \renewcommand*{\DTLibmsj}{IBM Systems Journal}
+ \renewcommand*{\DTLieeese}{IEEE Transactions on Software Engineering}
+ \renewcommand*{\DTLieeetc}{IEEE Transactions on Computers}
+ \renewcommand*{\DTLieeetcad}{IEEE Transactions on Computer-Aided Design
+of Integrated Circuits}
+ \renewcommand*{\DTLipl}{Information Processing Letters}
+ \renewcommand*{\DTLjacm}{Journal of the ACM}
+ \renewcommand*{\DTLjcss}{Journal of Computer and System Sciences}
+ \renewcommand*{\DTLscp}{Science of Computer Programming}
+ \renewcommand*{\DTLsicomp}{SIAM Journal on Computing}
+ \renewcommand*{\DTLtocs}{ACM Transactions on Computer Systems}
+ \renewcommand*{\DTLtods}{ACM Transactions on Database Systems}
+ \renewcommand*{\DTLtog}{ACM Transactions on Graphics}
+ \renewcommand*{\DTLtoms}{ACM Transactions on Mathematical Software}
+ \renewcommand*{\DTLtoois}{ACM Transactions on Office Information
+Systems}
+ \renewcommand*{\DTLtoplas}{ACM Transactions on Programming Languages
+and Systems}
+ \renewcommand*{\DTLtcs}{Theoretical Computer Science}
+ \renewcommand*{\DTLformatarticle}{%
+ \DTLformatauthorlist
+ \DTLifbibfieldexists{Author}{\DTLaddperiod}{}%
+ \DTLifbibfieldexists{Title}{%
+ \DTLstartsentencespace\DTLbibfield{Title}%
+ \DTLcheckbibfieldendsperiod{Title}%
+ \DTLaddperiod}{}%
+ \DTLifbibfieldexists{CrossRef}{%
+ \DTLformatarticlecrossref
+ \DTLifbibfieldexists{Pages}{\DTLaddcomma}{}%
+ \DTLformatpages
+ \DTLaddperiod
+ }{% no cross ref field
+ \DTLifbibfieldexists{Journal}{\DTLstartsentencespace
+ {\em\DTLbibfield{Journal}}%
+ \DTLcheckbibfieldendsperiod{Journal}%
+ \DTLifanybibfieldexists{Number,Volume,Pages,Month,Year}{%
+ \DTLaddcomma}{\DTLaddperiod}}{}%
+ \DTLformatvolnumpages
+ \DTLifanybibfieldexists{Volume,Number,Pages}{%
+ \DTLifanybibfieldexists{Year,Month}{\DTLaddcomma}{%
+ \DTLaddperiod}%
+ \DTLmidsentencefalse}{}%
+ \DTLformatdate
+ \DTLifanybibfieldexists{Year,Month}{\DTLaddperiod}{}%
+ }%
+ \DTLifbibfieldexists{Note}{\DTLstartsentencespace\DTLbibfield{Note}%
+ \DTLcheckbibfieldendsperiod{Note}%
+ \DTLaddperiod}{}%
+ }
+\renewcommand*{\DTLformatbook}{%
+ \DTLifbibfieldexists{Author}%
+ {%
+ \DTLformatauthorlist\DTLaddperiod
+ }%
+ {%
+ \DTLformateditorlist
+ \DTLifbibfieldexists{Editor}%
+ {%
+ \DTLaddperiod
+ }%
+ {}%
+ }%
+ \DTLifbibfieldexists{Title}%
+ {%
+ \DTLstartsentencespace
+ \DTLformatbooktitle{\DTLbibfield{Title}}%
+ \DTLcheckbibfieldendsperiod{Title}%
+ }%
+ {}%
+ \DTLifbibfieldexists{CrossRef}%
+ {%
+ \DTLifbibfieldexists{Title}{\DTLaddperiod}{}%
+ \DTLformatbookcrossref
+ \DTLifanybibfieldexists{Edition,Month,Year}%
+ {\DTLaddcomma}%
+ {\DTLaddperiod}%
+ }%
+ {%
+ \DTLifbibfieldexists{Title}%
+ {%
+ \DTLifbibfieldexists{Volume}{\DTLaddcomma}{\DTLaddperiod}%
+ }%
+ {}%
+ \DTLformatbvolume
+ \DTLformatnumberseries
+ \DTLifanybibfieldexists{Number,Series,Volume}{\DTLaddperiod}{}%
+ \DTLifbibfieldexists{Publisher}%
+ {%
+ \DTLstartsentencespace
+ \DTLbibfield{Publisher}%
+ \DTLcheckbibfieldendsperiod{Publisher}%
+ \DTLifbibfieldexists{Address}%
+ {\DTLaddcomma}%
+ {%
+ \DTLifanybibfieldexists{Month,Year}%
+ {\DTLaddcomma}%
+ {\DTLaddperiod}%
+ }%
+ }%
+ {}%
+ \DTLifbibfieldexists{Address}%
+ {%
+ \DTLstartsentencespace
+ \DTLbibfield{Address}%
+ \DTLcheckbibfieldendsperiod{Address}%
+ \DTLifanybibfieldexists{Month,Year}{\DTLaddcomma}{\DTLaddperiod}%
+ }%
+ {}%
+ }%
+ \DTLifbibfieldexists{Edition}%
+ {%
+ \protected at edef\@dtl at tmp{\DTLformatedition{\DTLbibfield{Edition}}}%
+ \ifDTLmidsentence
+ \@dtl at tmp
+ \else
+ \DTLstartsentencespace\expandafter\MakeUppercase\@dtl at tmp
+ \fi
+ \expandafter\DTLcheckendsperiod\expandafter{\@dtl at tmp}%
+ \DTLifanybibfieldexists{Month,Year}{\DTLaddcomma}{\DTLaddperiod}%
+ }%
+ {}%
+ \DTLformatdate
+ \DTLifanybibfieldexists{Year,Month}{\DTLaddperiod}{}%
+ \DTLifbibfieldexists{Note}%
+ {%
+ \DTLstartsentencespace
+ \DTLbibfield{Note}%
+ \DTLcheckbibfieldendsperiod{Note}%
+ \DTLaddperiod
+ }%
+ {}%
+}%
+\renewcommand*{\DTLformatbooklet}{%
+\DTLifbibfieldexists{Author}{%
+\DTLformatauthorlist\DTLaddperiod}{}%
+\DTLifbibfieldexists{Title}{\DTLstartsentencespace
+\DTLbibfield{Title}%
+\DTLcheckbibfieldendsperiod{Title}%
+\DTLaddperiod}{}%
+\DTLifbibfieldexists{HowPublished}{%
+\DTLstartsentencespace\DTLbibfield{HowPublished}%
+\DTLcheckbibfieldendsperiod{HowPublished}%
+\DTLifanybibfieldexists{Address,Month,Year}{\DTLaddcomma
+}{\DTLaddperiod}}{}%
+\DTLifbibfieldexists{Address}{\DTLstartsentencespace
+\DTLbibfield{Address}%
+\DTLcheckbibfieldendsperiod{Address}%
+\DTLifanybibfieldexists{Month,Year}{\DTLaddcomma}{\DTLaddperiod}}{}%
+\DTLformatdate
+\DTLifanybibfieldexists{Year,Month}{\DTLaddperiod}{}%
+\DTLifbibfieldexists{Note}{\DTLstartsentencespace\DTLbibfield{Note}%
+\DTLcheckbibfieldendsperiod{Note}%
+\DTLaddperiod}{}%
+}%
+\renewcommand*{\DTLformatinbook}{%
+\DTLifbibfieldexists{Author}{%
+\DTLformatauthorlist\DTLaddperiod}{%
+\DTLifbibfieldexists{Editor}{\DTLformateditorlist\DTLaddperiod}{}}%
+\DTLifbibfieldexists{Title}{%
+\DTLstartsentencespace
+{\em\DTLbibfield{Title}}%
+\DTLcheckbibfieldendsperiod{Title}%
+}{}%
+\DTLifbibfieldexists{CrossRef}{%
+\DTLifbibfieldexists{Title}{%
+\DTLifbibfieldexists{Chapter}{\DTLaddcomma}{\DTLaddperiod}}{}%
+\DTLformatchapterpages
+\DTLifanybibfieldexists{Chapter,Pages}{\DTLaddperiod}{}%
+\DTLformatbookcrossref
+}{% no cross ref
+\DTLifbibfieldexists{Title}{%
+\DTLifanybibfieldexists{Chapter,Volume}{\DTLaddcomma
+}{\DTLaddperiod}}{}%
+\DTLformatbvolume
+\DTLifanybibfieldexists{Volume,Series}{%
+\DTLifanybibfieldexists{Chapter,Pages}{%
+\DTLaddcomma}{\DTLaddperiod}}{}%
+\DTLformatchapterpages
+\DTLifanybibfieldexists{Chapter,Pages}{\DTLaddperiod}{}%
+\DTLifbibfieldexists{Publisher}{%
+\DTLstartsentencespace
+\DTLbibfield{Publisher}%
+\DTLcheckbibfieldendsperiod{Publisher}%
+\DTLifbibfieldexists{Address}{\DTLaddcomma}{}}{}%
+\DTLifbibfieldexists{Address}{%
+\DTLstartsentencespace
+\DTLbibfield{Address}%
+\DTLcheckbibfieldendsperiod{Address}}{}%
+}%
+\DTLifanybibfieldexists{Edition,Month,Year}{\DTLaddcomma
+}{\DTLaddperiod}%
+\DTLifbibfieldexists{Edition}{%
+\protected at edef\@dtl at tmp{\DTLformatedition{\DTLbibfield{Edition}}}%
+\ifDTLmidsentence
+ \@dtl at tmp
+\else
+ \DTLstartsentencespace
+ \expandafter\MakeUppercase\@dtl at tmp
+\fi
+\expandafter\DTLcheckendsperiod\expandafter{\@dtl at tmp}%
+\DTLifanybibfieldexists{Month,Year}{\DTLaddcomma
+}{\DTLaddperiod}%
+}{}%
+\DTLformatdate
+\DTLifanybibfieldexists{Month,Year}{\DTLaddperiod}{}%
+\DTLifbibfieldexists{Note}{%
+\DTLstartsentencespace
+\DTLbibfield{Note}%
+\DTLcheckbibfieldendsperiod{Note}%
+\DTLaddperiod}{}%
+}%
+\renewcommand*{\DTLformatincollection}{%
+\DTLifbibfieldexists{Author}{\DTLformatauthorlist\DTLaddperiod}{}%
+\DTLifbibfieldexists{Title}{%
+\DTLstartsentencespace
+\DTLbibfield{Title}%
+\DTLcheckbibfieldendsperiod{Title}%
+\DTLaddperiod}{}%
+\DTLifbibfieldexists{CrossRef}{%
+\DTLformatincollproccrossref
+\DTLifanybibfieldexists{Chapter,Pages}{\DTLaddcomma}{}%
+\DTLformatchapterpages\DTLaddperiod
+}{% no cross ref entry
+\DTLformatinedbooktitle
+\DTLifbibfieldexists{BookTitle}{%
+\DTLifanybibfieldexists{Volume,Series,Chapter,Pages,Number}{%
+\DTLaddcomma}{\DTLaddperiod}}{}%
+\DTLformatbvolume
+\DTLifbibfieldexists{Volume}{%
+\DTLifanybibfieldexists{Number,Series,Chapter,Pages}{%
+\DTLaddcomma}{\DTLaddperiod}}{}%
+\DTLformatnumberseries
+\DTLifanybibfieldexists{Number,Series}{%
+\DTLifanybibfieldexists{Chapter,Pages}{\DTLaddcomma
+}{\DTLaddperiod}}{}%
+\DTLformatchapterpages
+\DTLifanybibfieldexists{Chapter,Pages}{\DTLaddperiod}{}%
+\DTLifbibfieldexists{Publisher}{%
+\DTLstartsentencespace
+\DTLbibfield{Publisher}%
+\DTLcheckbibfieldendsperiod{Publisher}%
+\DTLifanybibfieldexists{Address,Edition,Month,Year}{%
+\DTLaddcomma}{\DTLaddperiod}}{}%
+\DTLifbibfieldexists{Address}{%
+\DTLstartsentencespace
+\DTLbibfield{Address}%
+\DTLcheckbibfieldendsperiod{Address}%
+\DTLifanybibfieldexists{Edition,Month,Year}{%
+\DTLaddcomma}{\DTLaddperiod}}{}%
+\DTLifbibfieldexists{Edition}{%
+\protected at edef\@dtl at tmp{\DTLformatedition{\DTLbibfield{Edition}}}%
+\ifDTLmidsentence
+ \@dtl at tmp
+\else
+ \DTLstartsentencespace
+ \expandafter\MakeUppercase\@dtl at tmp
+\fi
+\expandafter\DTLcheckendsperiod\expandafter{\@dtl at tmp}%
+\DTLifanybibfieldexists{Month,Year}{\DTLaddcomma
+}{\DTLaddperiod}%
+}{}%
+\DTLformatdate
+\DTLifanybibfieldexists{Month,Year}{\DTLaddperiod}{}%
+}%
+\DTLifbibfieldexists{Note}{%
+\DTLstartsentencespace
+\DTLbibfield{Note}%
+\DTLcheckbibfieldendsperiod{Note}%
+\DTLaddperiod}{}%
+}%
+\renewcommand*{\DTLformatinproceedings}{%
+\DTLifbibfieldexists{Author}{\DTLformatauthorlist
+\DTLaddperiod}{}%
+\DTLifbibfieldexists{Title}{%
+\DTLstartsentencespace
+\DTLbibfield{Title}%
+\DTLcheckbibfieldendsperiod{Title}%
+\DTLaddperiod}{}%
+\DTLifbibfieldexists{CrossRef}{%
+\DTLformatincollproccrossref
+\DTLifbibfieldexists{Pages}{\DTLaddcomma}{%
+\DTLaddperiod}%
+\DTLformatpages
+\DTLifbibfieldexists{Pages}{\DTLaddperiod}{}%
+}{% no cross ref
+\DTLformatinedbooktitle
+\DTLifbibfieldexists{BookTitle}{%
+\DTLifanybibfieldexists{Volume,Series,Pages,Number,Address,%
+Month,Year}{%
+\DTLaddcomma}{\DTLaddperiod}}{}%
+\DTLformatbvolume
+\DTLifbibfieldexists{Volume}{%
+\DTLifanybibfieldexists{Number,Series,Pages,Address,Month,Year}{%
+\DTLaddcomma}{\DTLaddperiod}}{}%
+\DTLformatnumberseries
+\DTLifanybibfieldexists{Number,Series}{%
+\DTLifanybibfieldexists{Pages,Address,Month,Year}{%
+\DTLaddcomma}{\DTLaddperiod}}{}%
+\DTLformatpages
+\DTLifbibfieldexists{Pages}{%
+\DTLifanybibfieldexists{Address,Month,Year}{%
+\DTLaddcomma}{\DTLaddperiod}}{}%
+\DTLifbibfieldexists{Address}{%
+\DTLstartsentencespace
+\DTLbibfield{Address}%
+\DTLcheckbibfieldendsperiod{Address}%
+\DTLifanybibfieldexists{Month,Year}{\DTLaddcomma}{%
+\DTLaddperiod}%
+\DTLformatdate
+\DTLifanybibfieldexists{Month,Year}{\DTLaddperiod}{}%
+\DTLifbibfieldexists{Organization}{%
+\DTLstartsentencespace
+\DTLbibfield{Organization}%
+\DTLcheckbibfieldendsperiod{Organization}%
+\DTLifbibfieldexists{Publisher}{\DTLaddcomma}{%
+\DTLaddperiod}}{}%
+\DTLifbibfieldexists{Publisher}{%
+\DTLstartsentencespace
+\DTLbibfield{Publisher}%
+\DTLcheckbibfieldendsperiod{Publisher}%
+\DTLaddperiod}{}%
+}{%
+\DTLifanybibfieldexists{Publisher,Organization}{%
+\DTLaddperiod}{}%
+\DTLifbibfieldexists{Organization}{%
+\DTLstartsentencespace
+\DTLbibfield{Organization}%
+\DTLcheckbibfieldendsperiod{Organization}%
+\DTLifanybibfieldexists{Publisher,Month,Year}{%
+\DTLaddcomma}{}}{}%
+\DTLifbibfieldexists{Publisher}{%
+\DTLstartsentencespace
+\DTLbibfield{Publisher}%
+\DTLcheckbibfieldendsperiod{Publisher}%
+\DTLifanybibfieldexists{Month,Year}{\DTLaddcomma}{%
+\DTLaddperiod}}{}%
+\DTLformatdate
+\DTLifanybibfieldexists{Month,Year}{\DTLaddperiod}{}%
+}%
+}%
+\DTLifbibfieldexists{Note}{%
+\DTLstartsentencespace
+\DTLbibfield{Note}%
+\DTLcheckbibfieldendsperiod{Note}%
+\DTLaddperiod}{}%
+}%
+\renewcommand*{\DTLformatmanual}{%
+\DTLifbibfieldexists{Author}{\DTLformatauthorlist
+\DTLaddperiod}{%
+\DTLifbibfieldexists{Organization}{%
+\DTLstartsentencespace
+\DTLbibfield{Organization}%
+\DTLcheckbibfieldendsperiod{Organization}%
+\DTLifbibfieldexists{Address}{\DTLaddcomma \DTLbibfield{Address}%
+\DTLcheckbibfieldendsperiod{Address}%
+}{}%
+\DTLaddperiod}{}%
+}%
+\DTLifbibfieldexists{Title}{%
+\DTLstartsentencespace
+{\em\DTLbibfield{Title}}%
+\DTLcheckbibfieldendsperiod{Title}%
+\DTLifbibfieldexists{Author}{%
+\DTLifanybibfieldexists{Organization,Address}{%
+\DTLaddperiod}{\DTLaddcomma}}{%
+\DTLifanybibfieldexists{Organization,Address,Edition,Month,Year}{%
+\DTLaddcomma}{\DTLaddperiod}}}{}%
+\DTLifbibfieldexists{Author}{%
+\DTLifbibfieldexists{Organization}{%
+\DTLstartsentencespace
+\DTLbibfield{Organization}%
+\DTLcheckbibfieldendsperiod{Organization}%
+\DTLifanybibfieldexists{Address,Edition,Month,Year}{%
+\DTLaddcomma}{\DTLaddperiod}}{}%
+\DTLifbibfieldexists{Address}{%
+\DTLstartsentencespace
+\DTLbibfield{Address}%
+\DTLcheckbibfieldendsperiod{Address}%
+\DTLifanybibfieldexists{Edition,Month,Year}{%
+\DTLaddcomma}{\DTLaddperiod}}{}%
+}{%
+\DTLifbibfieldexists{Organization}{}{%
+\DTLifbibfieldexists{Address}{%
+\DTLstartsentencespace
+\DTLbibfield{Address}%
+\DTLcheckbibfieldendsperiod{Address}%
+\DTLifanybibfieldexists{Edition,Month,Year}{\DTLaddcomma}{%
+\DTLaddperiod}}{}}%
+}%
+\DTLifbibfieldexists{Edition}{%
+\protected at edef\@dtl at tmp{\DTLformatedition{\DTLbibfield{Edition}}}%
+\ifDTLmidsentence
+ \@dtl at tmp
+\else
+ \DTLstartsentencespace
+ \expandafter\MakeUppercase\@dtl at tmp
+\fi
+\expandafter\DTLcheckendsperiod\expandafter{\@dtl at tmp}%
+\DTLifanybibfieldexists{Month,Year}{\DTLaddcomma}{%
+\DTLaddperiod}}{}%
+\DTLformatdate
+\DTLifanybibfieldexists{Month,Year}{\DTLaddperiod}{}%
+\DTLifbibfieldexists{Note}{%
+\DTLstartsentencespace
+\DTLbibfield{Note}%
+\DTLcheckbibfieldendsperiod{Note}%
+\DTLaddperiod}{}%
+}%
+\renewcommand*{\DTLformatmastersthesis}{%
+\DTLifbibfieldexists{Author}{\DTLformatauthorlist\DTLaddperiod}{}%
+\DTLifbibfieldexists{Title}{%
+\DTLstartsentencespace
+\DTLbibfield{Title}%
+\DTLcheckbibfieldendsperiod{Title}%
+\DTLaddperiod}{}%
+\DTLifbibfieldexists{Type}{%
+\DTLstartsentencespace
+\DTLbibfield{Type}%
+\DTLcheckbibfieldendsperiod{Type}%
+\DTLifanybibfieldexists{School,Address,Month,Year}{%
+\DTLaddcomma}{\DTLaddperiod}}{}%
+\DTLifbibfieldexists{School}{%
+\DTLstartsentencespace
+\DTLbibfield{School}%
+\DTLcheckbibfieldendsperiod{School}%
+\DTLifanybibfieldexists{Address,Month,Year}{%
+\DTLaddcomma}{\DTLaddperiod}}{}%
+\DTLifbibfieldexists{Address}{%
+\DTLstartsentencespace
+\DTLbibfield{Address}%
+\DTLcheckbibfieldendsperiod{Address}%
+\DTLifanybibfieldexists{Month,Year}{%
+\DTLaddcomma}{\DTLaddperiod}}{}%
+\DTLformatdate
+\DTLifanybibfieldexists{Month,Year}{\DTLaddperiod}{}%
+\DTLifbibfieldexists{Note}{%
+\DTLstartsentencespace
+\DTLbibfield{Note}%
+\DTLcheckbibfieldendsperiod{Note}%
+\DTLaddperiod}{}%
+}%
+\renewcommand*{\DTLformatmisc}{%
+\DTLifbibfieldexists{Author}{\DTLformatauthorlist\DTLaddperiod}{}%
+\DTLifbibfieldexists{Title}{%
+\DTLstartsentencespace
+\DTLbibfield{Title}%
+\DTLcheckbibfieldendsperiod{Title}%
+\DTLifbibfieldexists{HowPublished}{\DTLaddperiod}{%
+\DTLifanybibfieldexists{Month,Year}{\DTLaddcomma}{%
+\DTLaddperiod}%
+}%
+\DTLmidsentencefalse}{}%
+\DTLifbibfieldexists{HowPublished}{%
+\DTLstartsentencespace
+\DTLbibfield{HowPublished}%
+\DTLcheckbibfieldendsperiod{HowPublished}%
+\DTLifanybibfieldexists{Month,Year}{\DTLaddcomma}{%
+\DTLaddperiod}}{}%
+\DTLformatdate
+\DTLifanybibfieldexists{Month,Year}{\DTLaddperiod}{}%
+\DTLifbibfieldexists{Note}{%
+\DTLstartsentencespace
+\DTLbibfield{Note}%
+\DTLcheckbibfieldendsperiod{Note}%
+\DTLaddperiod}{}%
+}%
+\renewcommand*{\DTLformatphdthesis}{%
+\DTLifbibfieldexists{Author}{\DTLformatauthorlist\DTLaddperiod}{}%
+\DTLifbibfieldexists{Title}{%
+\DTLstartsentencespace
+{\em\DTLbibfield{Title}}%
+\DTLcheckbibfieldendsperiod{Title}%
+\DTLaddperiod}{}%
+\DTLifbibfieldexists{Type}{%
+\DTLstartsentencespace
+\DTLbibfield{Type}%
+\DTLcheckbibfieldendsperiod{Type}%
+\DTLifanybibfieldexists{School,Address,Month,Year}{%
+\DTLaddcomma}{\DTLaddperiod}}{}%
+\DTLifbibfieldexists{School}{%
+\DTLstartsentencespace
+\DTLbibfield{School}%
+\DTLcheckbibfieldendsperiod{School}%
+\DTLifanybibfieldexists{Address,Month,Year}{%
+\DTLaddcomma}{\DTLaddperiod}}{}%
+\DTLifbibfieldexists{Address}{%
+\DTLstartsentencespace
+\DTLbibfield{Address}%
+\DTLcheckbibfieldendsperiod{Address}%
+\DTLifanybibfieldexists{Month,Year}{%
+\DTLaddcomma}{\DTLaddperiod}}{}%
+\DTLformatdate
+\DTLifanybibfieldexists{Month,Year}{\DTLaddperiod}{}%
+\DTLifbibfieldexists{Note}{%
+\DTLstartsentencespace
+\DTLbibfield{Note}%
+\DTLcheckbibfieldendsperiod{Note}%
+\DTLaddperiod}{}%
+}%
+\renewcommand*{\DTLformatproceedings}{%
+\DTLifbibfieldexists{Editor}{%
+\DTLformateditorlist\DTLaddperiod}{%
+\DTLifbibfieldexists{Organization}{%
+\DTLstartsentencespace
+\DTLbibfield{Organization}%
+\DTLcheckbibfieldendsperiod{Organization}%
+\DTLaddperiod}{}}%
+\DTLifbibfieldexists{Title}{%
+\DTLstartsentencespace
+{\em\DTLbibfield{Title}}%
+\DTLcheckbibfieldendsperiod{Title}%
+\DTLifanybibfieldexists{Volume,Number,Address,Editor,Publisher,%
+Month,Year}{\DTLaddcomma}{\DTLaddperiod}%
+}{}%
+\DTLformatbvolume
+\DTLifbibfieldexists{Volume}{%
+\DTLifanybibfieldexists{Number,Address,Editor,Publisher,%
+Month,Year}{\DTLaddcomma}{\DTLaddperiod}}{}%
+\DTLformatnumberseries
+\DTLifbibfieldexists{Number}{%
+\DTLifanybibfieldexists{Address,Editor,Publisher,%
+Month,Year}{\DTLaddcomma}{\DTLaddperiod}}{}%
+\DTLifbibfieldexists{Address}{%
+\DTLstartsentencespace
+\DTLbibfield{Address}%
+\DTLcheckbibfieldendsperiod{Address}%
+\DTLifanybibfieldexists{Month,Year}{\DTLaddcomma}{\DTLaddperiod}%
+\DTLformatdate
+\DTLifanybibfieldexists{Month,Year}{\DTLaddperiod}{}%
+\DTLifbibfieldexists{Editor}{\DTLifbibfieldexists{Organization}{%
+\DTLstartsentencespace
+\DTLbibfield{Organization}%
+\DTLcheckbibfieldendsperiod{Organization}%
+\DTLifbibfieldexists{Publisher}{%
+\DTLaddcomma}{\DTLaddperiod}}{}}{}%
+\DTLifbibfieldexists{Publisher}{%
+\DTLstartsentencespace
+\DTLbibfield{Publisher}%
+\DTLcheckbibfieldendsperiod{Publisher}%
+\DTLaddperiod
+}{}%
+}{% no address
+\DTLifbibfieldexists{Editor}{%
+\DTLifbibfieldexists{Organization}{%
+\DTLstartsentencespace
+\DTLbibfield{Organization}%
+\DTLcheckbibfieldendsperiod{Organization}%
+\DTLifanybibfieldexists{Publisher,Month,Year}{%
+\DTLaddcomma}{\DTLaddperiod}}{}%
+}{}%
+\DTLifbibfieldexists{Publisher}{%
+\DTLstartsentencespace
+\DTLbibfield{Publisher}%
+\DTLcheckbibfieldendsperiod{Publisher}%
+\DTLifanybibfieldexists{Month,Year}{\DTLaddcomma}{\DTLaddperiod}}{}%
+\DTLformatdate
+\DTLifanybibfieldexists{Month,Year}{\DTLaddperiod}{}%
+}%
+\DTLifbibfieldexists{Note}{%
+\DTLstartsentencespace
+\DTLbibfield{Note}%
+\DTLcheckbibfieldendsperiod{Note}%
+\DTLaddperiod}{}%
+}%
+\renewcommand*{\DTLformattechreport}{%
+\DTLifbibfieldexists{Author}{\DTLformatauthorlist\DTLaddperiod}{}%
+\DTLifbibfieldexists{Title}{%
+\DTLstartsentencespace
+\DTLbibfield{Title}%
+\DTLcheckbibfieldendsperiod{Title}%
+\DTLaddperiod}{}%
+\DTLifbibfieldexists{Type}{%
+\DTLstartsentencespace
+\DTLbibfield{Type}%
+\DTLcheckbibfieldendsperiod{Type}%
+\DTLifbibfieldexists{Number}{~}{}}{}%
+\DTLifbibfieldexists{Number}{%
+\DTLstartsentencespace
+\DTLbibfield{Number}%
+\DTLcheckbibfieldendsperiod{Number}%
+}{}%
+\DTLifanybibfieldexists{Type,Number}{%
+\DTLifanybibfieldexists{Institution,Address,Month,Year}{\DTLaddcomma
+}{\DTLaddperiod}}{}%
+\DTLifbibfieldexists{Institution}{%
+\DTLstartsentencespace
+\DTLbibfield{Institution}%
+\DTLcheckbibfieldendsperiod{Institution}%
+\DTLifanybibfieldexists{Address,Month,Year}{\DTLaddcomma
+}{\DTLaddperiod}}{}%
+\DTLifbibfieldexists{Address}{%
+\DTLstartsentencespace
+\DTLbibfield{Address}%
+\DTLcheckbibfieldendsperiod{Address}%
+\DTLifanybibfieldexists{Month,Year}{\DTLaddcomma
+}{\DTLaddperiod}}{}%
+\DTLformatdate
+\DTLifanybibfieldexists{Month,Year}{\DTLaddperiod}{}%
+\DTLifbibfieldexists{Note}{%
+\DTLstartsentencespace
+\DTLbibfield{Note}%
+\DTLcheckbibfieldendsperiod{Note}%
+\DTLaddperiod}{}%
+}%
+\renewcommand*{\DTLformatunpublished}{%
+\DTLifbibfieldexists{Author}{\DTLformatauthorlist\DTLaddperiod}{}%
+\DTLifbibfieldexists{Title}{%
+\DTLstartsentencespace
+\DTLbibfield{Title}%
+\DTLcheckbibfieldendsperiod{Title}%
+\DTLaddperiod}{}%
+\DTLifbibfieldexists{Note}{%
+\DTLstartsentencespace
+\DTLbibfield{Note}%
+\DTLcheckbibfieldendsperiod{Note}%
+\DTLifanybibfieldexists{Month,Year}{\DTLaddcomma}{\DTLaddperiod}}{}%
+\DTLformatdate
+\DTLifanybibfieldexists{Month,Year}{\DTLaddperiod}{}%
+}%
+}
+\newcommand*{\DTLformatbooktitle}[1]{\emph{#1}}
+\newcommand{\dtlbst at abbrv}{%
+\dtlbst at plain
+\renewcommand*{\DTLformatauthor}[4]{%
+\DTLformatabbrvforenames{##4}
+\DTLformatvon{##1}%
+\DTLformatsurname{##2}%
+\DTLformatjr{##3}}
+\renewcommand*{\DTLformateditor}[4]{%
+\DTLformatabbrvforenames{##4}
+\DTLformatvon{##1}%
+\DTLformatsurname{##2}%
+\DTLformatjr{##3}}
+\let\DTLmonthname\dtl at abbrvmonthname
+\renewcommand*{\DTLacmcs}{ACM Comput.\ Surv.}
+\renewcommand*{\DTLacta}{Acta Inf.}
+\renewcommand*{\DTLcacm}{Commun.\ ACM}
+\renewcommand*{\DTLibmjrd}{IBM J.\ Res.\ Dev.}
+\renewcommand*{\DTLibmsj}{IBM Syst.~J.}
+\renewcommand*{\DTLieeese}{IEEE Trans. Softw.\ Eng.}
+\renewcommand*{\DTLieeetc}{IEEE Trans.\ Comput.}
+\renewcommand*{\DTLieeetcad}{IEEE Trans.\ Comput.-Aided Design
+Integrated Circuits}
+\renewcommand*{\DTLipl}{Inf.\ Process.\ Lett.}
+\renewcommand*{\DTLjacm}{J.~ACM}
+\renewcommand*{\DTLjcss}{J.~Comput.\ Syst.\ Sci.}
+\renewcommand*{\DTLscp}{Sci.\ Comput.\ Programming}
+\renewcommand*{\DTLsicomp}{SIAM J.~Comput.}
+\renewcommand*{\DTLtocs}{ACM Trans.\ Comput.\ Syst.}
+\renewcommand*{\DTLtods}{ACM Trans.\ Database Syst.}
+\renewcommand*{\DTLtog}{ACM Trans.\ Gr.}
+\renewcommand*{\DTLtoms}{ACM Trans.\ Math. Softw.}
+\renewcommand*{\DTLtoois}{ACM Trans. Office Inf.\ Syst.}
+\renewcommand*{\DTLtoplas}{ACM Trans.\ Prog. Lang.\ Syst.}
+\renewcommand*{\DTLtcs}{Theoretical Comput.\ Sci.}
+}
+\newcommand{\dtlbst at alpha}{%
+\dtlbst at plain
+\renewenvironment{DTLthebibliography}[2][\boolean{true}]{%
+\dtl at createalphabiblabels{##1}{##2}%
+\begin{thebibliography}{\@dtl at widestlabel}%
+}{\end{thebibliography}}%
+\renewcommand*{\DTLbibitem}{%
+\expandafter\bibitem\expandafter
+ [\csname dtl at biblabel@\DBIBcitekey\endcsname]{\DBIBcitekey}}%
+\renewcommand*{\DTLmbibitem}[1]{%
+\expandafter\bibitem\expandafter
+ [\csname dtl at biblabel@\DBIBcitekey\endcsname]{##1@\DBIBcitekey}}%
+}
+\newcommand*{\dtl at createalphabiblabels}[2]{%
+\dtl at message{Creating bib labels}%
+\begingroup
+\gdef\@dtl at widestlabel{}%
+\dtl at widest=0pt\relax
+\DTLforeachbibentry[#1]{#2}{%
+\dtl at message{\DBIBcitekey}%
+\DTLifbibfieldexists{Author}{%
+ \dtl at listgetalphalabel{\@dtl at thislabel}{\@dtl at key@Author}%
+}{%
+\DTLifbibfieldexists{Editor}{%
+ \dtl at listgetalphalabel{\@dtl at thislabel}{\@dtl at key@Editor}%
+ }{%
+ \DTLifbibfieldexists{Key}{%
+ \expandafter\dtl at get@firstthree\expandafter
+ {\@dtl at key@Key}{\@dtl at thislabel}%
+ }{%
+ \DTLifbibfieldexists{Organization}{%
+ \expandafter\dtl at get@firstthree\expandafter
+ {\@dtl at key@Organization}{\@dtl at thislabel}%
+ }{%
+ \expandafter\dtl at get@firstthree\expandafter
+ {\DBIBentrytype}{\@dtl at thislabel}%
+ }%
+ }}}%
+\DTLifbibfieldexists{Year}{}{\DTLifbibfieldexists{CrossRef}{%
+\DTLgetvalueforkey{\@dtl at key@Year}{Year}{#2}{CiteKey}{%
+\@dtl at key@CrossRef}}{}}%
+\DTLifbibfieldexists{Year}{%
+\expandafter\dtl at get@yearsuffix\expandafter{\@dtl at key@Year}%
+\expandafter\toks@\expandafter{\@dtl at thislabel}%
+\expandafter\@dtl at toks\expandafter{\@dtl at year}%
+\edef\@dtl at thislabel{\the\toks@\the\@dtl at toks}%
+}{}%
+\let\@dtl at s@thislabel=\@dtl at thislabel
+\@onelevel at sanitize\@dtl at s@thislabel
+\@ifundefined{c at biblabel@\@dtl at s@thislabel}{%
+\newcounter{biblabel@\@dtl at s@thislabel}%
+\setcounter{biblabel@\@dtl at s@thislabel}{1}%
+\expandafter\edef\csname @dtl at bibfirst@\@dtl at s@thislabel\endcsname{%
+\DBIBcitekey}%
+\expandafter\global
+\expandafter\let\csname dtl at biblabel@\DBIBcitekey\endcsname=
+ \@dtl at thislabel
+}{%
+\expandafter\ifnum\csname c at biblabel@\@dtl at s@thislabel\endcsname=1\relax
+ \expandafter\let\expandafter\@dtl at tmp
+ \csname @dtl at bibfirst@\@dtl at s@thislabel\endcsname
+ \expandafter\protected at xdef\csname dtl at biblabel@\@dtl at tmp\endcsname{%
+ \@dtl at thislabel a}%
+\fi
+\stepcounter{biblabel@\@dtl at s@thislabel}%
+\expandafter\protected at xdef\csname dtl at biblabel@\DBIBcitekey\endcsname{%
+ \@dtl at thislabel\alph{biblabel@\@dtl at s@thislabel}}%
+}%
+\settowidth{\dtl at tmplength}{%
+ \csname dtl at biblabel@\DBIBcitekey\endcsname}%
+\ifdim\dtl at tmplength>\dtl at widest
+ \dtl at widest=\dtl at tmplength
+ \expandafter\global\expandafter\let\expandafter\@dtl at widestlabel
+ \expandafter=\csname dtl at biblabel@\DBIBcitekey\endcsname
+\fi
+}%
+\endgroup
+}
+\newcommand*{\dtl at listgetalphalabel}[2]{%
+\@dtl at authorcount=0\relax
+\@for\@dtl at author:=#2\do{%
+\advance\@dtl at authorcount by 1\relax}%
+\ifnum\@dtl at authorcount=1\relax
+ \expandafter\dtl at getsinglealphalabel#2{#1}\relax
+\else
+ {%
+ \xdef#1{}%
+ \@dtl at tmpcount=0\relax
+ \def\DTLafterinitials{}\def\DTLbetweeninitials{}%
+ \def\DTLafterinitialbeforehyphen{}\def\DTLinitialhyphen{}%
+ \@for\@dtl at author:=#2\do{%
+ \expandafter\dtl at getauthorinitial\@dtl at author
+ \expandafter\toks@\expandafter{\@dtl at tmp}%
+ \expandafter\@dtl at toks\expandafter{#1}%
+ \xdef#1{\the\@dtl at toks\the\toks@}%
+ \advance\@dtl at tmpcount by 1\relax
+ \ifnum\@dtl at tmpcount>2\relax\@endfortrue\fi
+ }}%
+\fi
+}
+\newcommand*{\dtl at getauthorinitial}[4]{%
+\def\@dtl at vonpart{#1}%
+\ifx\@dtl at vonpart\@empty
+ \DTLstoreinitials{#2}{\@dtl at tmp}%
+\else
+ \DTLstoreinitials{#1 #2}{\@dtl at tmp}%
+\fi}
+\newcommand*{\dtl at getsinglealphalabel}[5]{%
+\def\@dtl at vonpart{#1}%
+\ifx\@dtl at vonpart\@empty
+ \DTLifSubString{#2}{-}{%
+ {\def\DTLafterinitials{}\def\DTLbetweeninitials{}%
+ \def\DTLafterinitialbeforehyphen{}%
+ \def\DTLinitialhyphen{}%
+ \DTLstoreinitials{#2}{\@dtl at tmp}\global\let#5=\@dtl at tmp}%
+ }{%
+ \dtl at getfirstthree{#5}#2{}{}{}{}\@nil
+ }
+\else
+ {\def\DTLafterinitials{}\def\DTLbetweeninitials{}%
+ \def\DTLafterinitialbeforehyphen{}%
+ \def\DTLinitialhyphen{}%
+ \DTLstoreinitials{#1 #2}{\@dtl at tmp}\global\let#5=\@dtl at tmp}%
+\fi
+}
+\def\dtl at getfirstthree#1#2#3#4#5\@nil{%
+ \def#1{#2#3#4}%
+}
+\newcommand*{\dtl at get@firstthree}[2]{%
+\dtl at getfirstthree#2#1{}{}{}{}{}\@nil}
+\newcommand*{\dtl at get@yearsuffix}[1]{%
+\dtl at getyearsuffix#1\@nil\relax\relax}
+
+\def\dtl at getyearsuffix#1#2#3{%
+\def\@dtl at argi{#1}\def\@dtl at argii{#2}%
+\def\@dtl at argiii{#3}%
+\ifx\@dtl at argi\@nnil
+ \def\@dtl at year{}%
+ \let\@dtl at donext=\relax
+\else
+ \ifx\@dtl at argii\@nnil
+ \dtl at ifsingle{#1}{%
+ \def\@dtl at year{#1}%
+ \let\@dtl at donext=\relax
+ }{%
+ \def\@dtl at donext{\dtl at getyearsuffix#1#2#3}%
+ }%
+ \else
+ \ifx\@dtl at argiii\@nnil
+ \dtl at ifsingle{#1}{%
+ \dtl at ifsingle{#2}{%
+ \def\@dtl at year{#1#2}%
+ \let\@dtl at donext=\relax
+ }{%
+ \def\@dtl at donext{\dtl at getyearsuffix#2#3}%
+ }%
+ }{%
+ \def\@dtl at donext{\dtl at getyearsuffix#2#3}%
+ }%
+ \else
+ \def\@dtl at donext{\dtl at getyearsuffix{#2}{#3}}%
+ \fi
+ \fi
+\fi
+\@dtl at donext
+}
+\newcommand*{\DTLbibliographystyle}[1]{%
+\@ifundefined{dtlbst@#1}{\PackageError{databib}{Unknown
+bibliography style `#1'}{}}{\csname dtlbst@#1\endcsname}}
+\DTLbibliographystyle{\dtlbib at style}
+\newcommand*{\DTLmultibibs}[1]{%
+\@for\@dtl at af:=#1\do{%
+\@ifundefined{dtl at aux@\@dtl at af}{%
+\expandafter\newwrite\csname dtl at aux@\@dtl at af\endcsname
+\expandafter\immediate
+\expandafter\openout\csname dtl at aux@\@dtl at af\endcsname=\@dtl at af.aux
+\expandafter\def\csname b@\@dtl at af @*\endcsname{}%
+}{%
+\PackageError{databib}{Can't create auxiliary file `\@dtl at af.aux',
+\expandafter\string\csname dtl at aux@\@dtl at af\endcsname\space
+already exists}{}}}}
+\@onlypreamble{\DTLmultibibs}
+\newcommand*{\DTLcite}{\@ifnextchar[{\@tempswatrue \dtl at citex
+}{\@tempswafalse \dtl at citex[]}}
+\def\dtl at citex[#1]#2#3{%
+\leavevmode\let\@citea\@empty
+\@cite{\@for\@citeb:=#3\do{\@citea
+ \def\@citea{,\penalty \@m \ }%
+ \edef\@citeb{\expandafter\@firstofone\@citeb\@empty}%
+ \if at filesw
+ \@ifundefined{dtl at aux@#2}{%
+ \PackageError{databib}{multibib `#2' not defined}{%
+ You need to define `#2' in \string\DTLmutlibibs}%
+ }{%
+ \expandafter\immediate
+ \expandafter\write\csname dtl at aux@#2\endcsname{%
+ \string\citation{\@citeb}}%
+ }%
+ \fi
+ \@ifundefined{b@#2@\@citeb}{%
+ \hbox{\reset at font\bfseries ?}%
+ \G at refundefinedtrue
+ \@latex at warning{Citation `\@citeb ' on page \thepage \space
+ undefined}%
+ }{%
+ \@cite at ofmt{\csname b@#2@\@citeb \endcsname }%
+ }%
+}}{#1}%
+}
+\newcommand*{\DTLnocite}[2]{%
+\@ifundefined{dtl at aux@#1}{%
+ \PackageError{databib}{multibib `#1' not defined}{%
+ You need to define `#1' in \string\DTLmutlibibs}%
+}{%
+ \@bsphack
+ \ifx\@onlypreamble\document
+ \@for\@citeb:=#2\do{%
+ \edef\@citeb{\expandafter\@firstofone\@citeb}%
+ \if at filesw
+ \expandafter\immediate
+ \expandafter\write\csname dtl at aux@#1\endcsname{%
+ \string\citation{\@citeb}}%
+ \fi
+ \@ifundefined{b@#1@\@citeb}{%
+ \G at refundefinedtrue
+ \@latex at warning{Citation `\@citeb ' undefined}}{}%
+ }%
+ \else
+ \@latex at error{Cannot be used in preamble}\@eha
+ \fi
+ \@esphack
+}%
+}
+\newcommand*{\DTLloadmbbl}[3]{%
+\@ifundefined{dtl at aux@#1}{%
+ \PackageError{databib}{multibib `#1' not defined}{%
+ You need to define `#1' in \string\DTLmutlibibs}%
+}{%
+ \if at filesw
+ \expandafter\immediate\expandafter
+ \write\csname dtl at aux@#1\endcsname{\string\bibstyle{databib}}%
+ \expandafter\immediate\expandafter
+ \write\csname dtl at aux@#1\endcsname{\string\bibdata{#3}}%
+ \fi
+ \DTLnewdb{#2}%
+ \edef\DTLBIBdbname{#2}%
+ \@input@{#1.bbl}%
+}%
+}
+\newcommand*{\DTLmbibliography}[3][\boolean{true}]{%
+\begin{DTLthebibliography}[#1]{#3}%
+\DTLforeachbibentry[#1]{#3}{%
+\DTLmbibitem{#2} \DTLformatbibentry \DTLendbibitem
+}%
+\end{DTLthebibliography}%
+}
+\endinput
+%%
+%% End of file `databib-2019-09-27.sty'.
Property changes on: trunk/Master/texmf-dist/tex/latex/datatool/databib-2019-09-27.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: trunk/Master/texmf-dist/tex/latex/datatool/databib.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/datatool/databib.sty 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/tex/latex/datatool/databib.sty 2025-03-05 21:33:51 UTC (rev 74461)
@@ -21,7 +21,7 @@
%%
%% The Current Maintainer of this work is Nicola Talbot.
%%
-%% This work consists of the files datatool.dtx and datatool.ins and the derived files datatool-base.sty, datatool-undetermined.ldf, datatool-latin1.ldf, datatool-utf8.ldf, datatool-l3fp.def, datatool-lua.def, datatool-fp.def, datatool-fp.sty, datatool-pgfmath.def, datatool-pgfmath.sty, datatool.sty, datagidx.sty, databib.sty, databar.sty, datapie.sty, dataplot.sty, person.sty, databib.bst.
+%% This work consists of the files datatool.dtx and datatool.ins and the derived files datatool-base.sty, datatool-undetermined.ldf, datatool-latin1.ldf, datatool-utf8.ldf, datatool-l3fp.def, datatool-lua.def, datatool-fp.def, datatool-fp.sty, datatool-pgfmath.def, datatool-pgfmath.sty, datatool.sty, datagidx.sty, databib.sty, databar.sty, datapie.sty, dataplot.sty, person.sty, databib.bst, databar-2019-09-27.sty, databib-2019-09-27.sty, datagidx-2019-09-27.sty, datapie-2019-09-27.sty, dataplot-2019-09-27.sty, datatool-2019-09-27.sty, datatool-base-2019-09-27.sty, datatool-fp-2019-09-27.sty, datatool-pgfmath-2019-09-27.sty, person-2019-09-27.sty.
%%
%% \CharacterTable
%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
@@ -40,8 +40,8 @@
%% Right brace \} Tilde \~}
\NeedsTeXFormat{LaTeX2e}
\DeclareRelease{v2.32}{2019-09-27}{databib-2019-09-27.sty}
-\DeclareCurrentRelease{v3.0}{2025-03-03}
-\ProvidesPackage{databib}[2025/03/03 v3.0 (NLCT)]
+\DeclareCurrentRelease{v3.0.1}{2025-03-05}
+\ProvidesPackage{databib}[2025/03/05 v3.0.1 (NLCT)]
\ExplSyntaxOn
\tl_new:N \l__databib_style_tl
\tl_set:Nn \l__databib_style_tl { plain }
Added: trunk/Master/texmf-dist/tex/latex/datatool/datagidx-2019-09-27.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/datatool/datagidx-2019-09-27.sty (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/datatool/datagidx-2019-09-27.sty 2025-03-05 21:33:51 UTC (rev 74461)
@@ -0,0 +1,3304 @@
+%%
+%% This is file `datagidx-2019-09-27.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% datatool.dtx (with options: `datagidx-2019-09-27.sty,package')
+%%
+%% datatool.dtx
+%% Copyright 2025 Nicola Talbot
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of LaTeX
+%% version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status `maintained'.
+%%
+%% The Current Maintainer of this work is Nicola Talbot.
+%%
+%% This work consists of the files datatool.dtx and datatool.ins and the derived files datatool-base.sty, datatool-undetermined.ldf, datatool-latin1.ldf, datatool-utf8.ldf, datatool-l3fp.def, datatool-lua.def, datatool-fp.def, datatool-fp.sty, datatool-pgfmath.def, datatool-pgfmath.sty, datatool.sty, datagidx.sty, databib.sty, databar.sty, datapie.sty, dataplot.sty, person.sty, databib.bst, databar-2019-09-27.sty, databib-2019-09-27.sty, datagidx-2019-09-27.sty, datapie-2019-09-27.sty, dataplot-2019-09-27.sty, datatool-2019-09-27.sty, datatool-base-2019-09-27.sty, datatool-fp-2019-09-27.sty, datatool-pgfmath-2019-09-27.sty, person-2019-09-27.sty.
+%%
+%% \CharacterTable
+%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+%% Digits \0\1\2\3\4\5\6\7\8\9
+%% Exclamation \! Double quote \" Hash (number) \#
+%% Dollar \$ Percent \% Ampersand \&
+%% Acute accent \' Left paren \( Right paren \)
+%% Asterisk \* Plus \+ Comma \,
+%% Minus \- Point \. Solidus \/
+%% Colon \: Semicolon \; Less than \<
+%% Equals \= Greater than \> Question mark \?
+%% Commercial at \@ Left bracket \[ Backslash \\
+%% Right bracket \] Circumflex \^ Underscore \_
+%% Grave accent \` Left brace \{ Vertical bar \|
+%% Right brace \} Tilde \~}
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{datagidx}[2019/09/27 v2.32 (NLCT)]
+\RequirePackage{datatool}[=v2.32]
+\RequirePackage{etoolbox}
+\RequirePackage{xkeyval}
+\RequirePackage{mfirstuc}
+\RequirePackage{xfor}
+\RequirePackage{multicol}
+\RequirePackage{textcase}
+\RequirePackage{afterpage}
+\newcommand*{\datagidx at columns}{2}
+\newcommand*{\DTLgidxSetColumns}[1]{%
+ \DTLifint{#1}%
+ {%
+ \def\datagidx at columns{#1}%
+ }%
+ {%
+ \PackageError{datagidx}%
+ {Number of columns must be an integer}%
+ {%
+ You have requested `#1' columns, which can't be parsed as a
+ number%
+ }%
+ }%
+}
+\newcounter{DTLgidxChildCount}
+\def\theHDTLgidxChildCount{\Label.\arabic{DTLgidxChildCount}}
+\newcommand*{\DTLgidxChildCountLabel}{\theDTLgidxChildCount) }
+\newcommand*{\DTLgidxChildStyle}[1]{#1}
+\newcommand*{\datagidx at setchildstyle}[1]{%
+ \ifcase#1\relax
+ \renewcommand*{\DTLgidxChildStyle}[1]{##1}%
+ \or
+ \renewcommand*{\DTLgidxChildStyle}[1]{%
+ \DTLgidxChildCountLabel
+ }%
+ \fi
+}
+\newcommand{\datagidx at foreachchild}{%
+ \datagidx at sort@foreachchild
+}
+\newcommand*{\datagidx at setchildsort}[1]{%
+ \ifcase#1\relax
+ \renewcommand*{\datagidx at foreachchild}{%
+ \datagidx at sort@foreachchild
+ }%
+ \or
+ \renewcommand*{\datagidx at foreachchild}{%
+ \datagidx at unsort@foreachchild
+ }%
+ \fi
+}
+\newcommand*{\DTLgidxPostName}{ }
+\newcommand*{\DTLgidxPostChildName}{\DTLgidxPostName}
+\newcommand*{\DTLgidxNameCase}[1]{#1}
+\newcommand*{\datagidx at setnamecase}[1]{%
+ \ifcase#1\relax
+ \renewcommand*{\DTLgidxNameCase}[1]{##1}%
+ \or
+ \let\DTLgidxNameCase\MakeTextUppercase
+ \or
+ \let\DTLgidxNameCase\MakeTextLowercase
+ \or
+ \let\DTLgidxNameCase\xmakefirstuc
+ \or
+ \let\DTLgidxNameCase\xcapitalisewords
+ \fi
+}
+\newcommand*{\DTLgidxNameFont}[1]{\textnormal{#1}}
+\newcommand*{\DTLgidxPostDescription}{}
+\newcommand*{\datagidx at setpostdesc}[1]{%
+ \ifcase#1\relax
+ \renewcommand*{\DTLgidxPostDescription}{}%
+ \or
+ \renewcommand*{\DTLgidxPostDescription}{.}%
+ \fi
+ }
+\newcommand*{\DTLgidxPreLocation}{\enspace}
+\newcommand*{\datagidx at setprelocation}[1]{%
+ \ifcase#1\relax
+ \renewcommand*{\DTLgidxPreLocation}{}%
+ \or
+ \renewcommand*{\DTLgidxPreLocation}{\enspace}%
+ \or
+ \renewcommand*{\DTLgidxPreLocation}{ }%
+ \or
+ \renewcommand*{\DTLgidxPreLocation}{\dotfill}%
+ \or
+ \renewcommand*{\DTLgidxPreLocation}{\hfill}%
+ \fi
+ }
+\newcommand*{\DTLgidxLocation}{\dtldolocationlist}
+\newcommand*{\datagidx at setlocation}[1]{%
+ \ifcase#1\relax
+ \renewcommand*{\DTLgidxLocation}{}%
+ \or
+ \renewcommand*{\DTLgidxLocation}{\dtldolocationlist}%
+ \or
+ \renewcommand*{\DTLgidxLocation}{\dtldofirstlocation}%
+ \fi
+}
+\newcommand*{\DTLgidxSee}{%
+ \DTLifnull{\See}%
+ {}%
+ {%
+ \DTLgidxPreLocation
+ \DTLgidxFormatSee{\seename}{\See}%
+ }%
+}
+\newcommand*{\DTLgidxSeeAlso}{%
+ \DTLifnull{\SeeAlso}%
+ {}%
+ {%
+ \DTLgidxFormatSeeAlso{\seealsoname}{\SeeAlso}%
+ }%
+}
+\newcommand*{\DTLgidxChildrenSeeAlso}{%
+ \DTLgidxChildren
+ \DTLgidxSeeAlso
+}
+\newcommand*{\datagidx at setsee}[1]{%
+ \ifcase#1\relax
+ \renewcommand*{\DTLgidxSee}{%
+ \DTLifnull{\See}{}%
+ {%
+ , \DTLgidxFormatSee{\seename}{\See}%
+ }%
+ }%
+ \or
+ \renewcommand*{\DTLgidxSee}{%
+ \DTLifnull{\See}{}
+ {%
+ \space(\DTLgidxFormatSee{\seename}{\See})%
+ }%
+ }%
+ \or
+ \renewcommand*{\DTLgidxSee}{%
+ \DTLifnull{\See}{}%
+ {%
+ . \DTLgidxFormatSee{\xmakefirstuc{\seename}}{\See}%
+ }%
+ }%
+ \or
+ \renewcommand*{\DTLgidxSee}{%
+ \DTLifnull{\See}{}
+ {%
+ \space\DTLgidxFormatSee{\seename}{\See}%
+ }%
+ }%
+ \or
+ \renewcommand*{\DTLgidxSee}{%
+ \DTLifnull{\See}{}
+ {%
+ \DTLgidxFormatSee{\seename}{\See}%
+ }%
+ }%
+ \or
+ \renewcommand*{\DTLgidxSee}{%
+ \DTLifnull{\See}{}
+ {%
+ ; \DTLgidxFormatSee{\seename}{\See}%
+ }%
+ }%
+ \or
+ \renewcommand*{\DTLgidxSee}{%
+ \DTLifnull{\See}{}
+ {%
+ \DTLgidxPreLocation\DTLgidxFormatSee{\seename}{\See}%
+ }%
+ }%
+ \fi
+}
+\newcommand*{\DTLgidxSymDescSep}{\space}
+\newlength\datagidxsymbolwidth
+\newlength\datagidxlocationwidth
+\newcommand{\DTLgidxFormatDesc}[1]{#1}
+\newcommand*{\DTLgidxSymbolDescription}{%
+ \DTLgidxSymbolDescLeft
+ \DTLgidxSymbolDescRight
+}
+\newcommand*{\DTLgidxSymbolDescLeft}{%
+ \ifdefempty{\Symbol}{}{(\Symbol)\DTLgidxSymDescSep}%
+}
+\newcommand*{\DTLgidxSymbolDescRight}{%
+ \ifdefempty{\Description}{}%
+ {%
+ \DTLgidxFormatDesc{\Description}\DTLgidxPostDescription
+ }%
+}
+\newif\if at datagidxsymbolleft
+\@datagidxsymbollefttrue
+\newcommand*{\datagidx at formatsymdesc}[1]{%
+ \ifcase#1\relax
+ \renewcommand*{\DTLgidxSymbolDescLeft}{%
+ \ifdefempty{\Symbol}{}{\Symbol}%
+ }%
+ \renewcommand*{\DTLgidxSymbolDescRight}{}%
+ \@datagidxsymbollefttrue
+ \or
+ \renewcommand*{\DTLgidxSymbolDescLeft}{%
+ \ifdefempty{\Description}{}%
+ {%
+ \DTLgidxFormatDesc{\Description}\DTLgidxPostDescription
+ }%
+ }%
+ \renewcommand*{\DTLgidxSymbolDescRight}{}%
+ \@datagidxsymbolleftfalse
+ \or
+ \renewcommand*{\DTLgidxSymbolDescLeft}{%
+ \ifdefempty{\Symbol}{}{(\Symbol)\DTLgidxSymDescSep}%
+ }%
+ \renewcommand*{\DTLgidxSymbolDescRight}{%
+ \ifdefempty{\Description}{}%
+ {%
+ \DTLgidxFormatDesc{\Description}\DTLgidxPostDescription
+ }%
+ }%
+ \@datagidxsymbollefttrue
+ \or
+ \renewcommand*{\DTLgidxSymbolDescLeft}{%
+ \ifdefempty{\Description}{}%
+ {%
+ \DTLgidxFormatDesc{\Description}%
+ \DTLgidxPostDescription\DTLgidxSymDescSep
+ }%
+ }%
+ \renewcommand*{\DTLgidxSymbolDescRight}{%
+ \ifdefempty{\Symbol}{}{(\Symbol)}%
+ }%
+ \@datagidxsymbolleftfalse
+ \or
+ \renewcommand*{\DTLgidxSymbolDescLeft}{%
+ \ifdefempty{\Symbol}{}{\Symbol\DTLgidxSymDescSep}%
+ }%
+ \renewcommand*{\DTLgidxSymbolDescRight}{%
+ \ifdefempty{\Description}{}%
+ {%
+ \DTLgidxFormatDesc{\Description}%
+ \DTLgidxPostDescription
+ }%
+ }%
+ \@datagidxsymbollefttrue
+ \or
+ \renewcommand*{\DTLgidxSymbolDescLeft}{%
+ \ifdefempty{\Description}{}%
+ {%
+ \DTLgidxFormatDesc{\Description}%
+ \DTLgidxPostDescription\DTLgidxSymDescSep
+ }%
+ }%
+ \renewcommand*{\DTLgidxSymbolDescRight}{%
+ \ifdefempty{\Symbol}{}{\Symbol}%
+ }%
+ \@datagidxsymbolleftfalse
+ \fi
+ }
+\newcommand*{\DTLgidxSetCompositor}[1]{%
+ \undef\datagidx at docomplist
+ \DeclareListParser{\datagidx at docomplist}{#1}%
+ \def\datagidx at compositor{#1}%
+}
+\DTLgidxSetCompositor{.}
+\newcommand*{\datagidx at do@sort}{\datagidx at sort}
+\newcommand*{\datagidx at optimize@sort}{%
+ \ifdef\datagidx at do@optimize at sort
+ {%
+ \datagidx at sort
+ }%
+ {%
+ \protected at write\@auxout{}{%
+ \string\gdef\string\datagidx at do@optimize at sort{}%
+ }%
+ \global\let\@datagidx at dorerun@warn at sort\@data at rerun@warn at sort
+ }%
+}
+\newif\if at datagidx@warn
+\@datagidx at warntrue
+\newcommand*\@datagidx at dorerun@warn{}
+\AtEndDocument{\if at datagidx@warn\@datagidx at dorerun@warn\fi}
+\newcommand*\@datagidx at dorerun@warn at sort{}
+\AtEndDocument{\if at datagidx@warn\@datagidx at dorerun@warn at sort\fi}
+\newcommand*\@data at rerun@warn at sort{%
+ \PackageWarningNoLine{datagidx}{Rerun required to sort the
+ index/glossary databases}%
+}
+\newcommand*\@data at rerun@warn{%
+ \PackageWarningNoLine{datagidx}{Rerun required to ensure the
+ index/glossary location lists are up-to-date}%
+}
+\newcommand*{\datagidx at do@highopt at optimize}{%
+ \renewcommand*{\datagidx at do@sort}{%
+ \ifcsdef{datagidx at do@highopt at sort@\DTLgidxCurrentdb}%
+ {%
+ \csuse{datagidx at do@highopt at sort@\DTLgidxCurrentdb}%
+ }%
+ {%
+ }%
+ \bgroup
+ \def\dtl at saverawdbhook{%
+ \let\db at col@id at w\@datagidx at db@col at id@w
+ \def\DTLgidxName{\string\DTLgidxName\space}%
+ \def\DTLgidxMac{\string\DTLgidxMac\space}%
+ \def\DTLgidxRank{\string\DTLgidxRank\space}%
+ \def\DTLgidxParen{\string\DTLgidxParen\space}%
+ \def\DTLgidxParticle{\string\DTLgidxParticle\space}%
+ \def\DTLgidxOffice{\string\DTLgidxOffice\space}%
+ \def\DTLgidxSaint{\string\DTLgidxSaint\space}%
+ \def\DTLgidxPlace{\string\DTLgidxPlace\space}%
+ \def\DTLgidxIgnore{\string\DTLgidxIgnore\space}%
+ \def\DTLgidxNameNum{\string\DTLgidxNameNum\space}%
+ \def\DTLgidxSubject{\string\DTLgidxSubject\space}%
+ }%
+ \DTLsaverawdb{\DTLgidxCurrentdb}{\datagidxhighoptfilename\DTLgidxCurrentdb}%
+ \egroup
+ }%
+ \def\newgidx{\datagidx at highopt@newgidx}%
+ \def\newterm{\datagidx at highopt@newterm}%
+}
+\def\@datagidx at db@col at id@w#1\db at col@id at end@\db at col@elt at w#2\db at col@elt at end@\db at col@id at w#3\db at col@id at end@{%
+ \expandafter\@gobble\string\%^^J
+ \string\db at col@id at w\space #1%
+ \expandafter\@gobble\string\%^^J
+ \string\db at col@id at end@\space
+ \expandafter\@gobble\string\%^^J
+ \string\db at col@elt at w\space
+ \expandafter\ifnum\csname dtl at ci@\DTLgidxCurrentdb @Used\endcsname=#1\space
+ 0%
+ \else
+ \expandafter\ifnum\csname dtl at ci@\DTLgidxCurrentdb @Location\endcsname=#1\space
+ \else
+ \expandafter\ifnum\csname dtl at ci@\DTLgidxCurrentdb @CurrentLocation\endcsname=#1\space
+ \else
+ \expandafter\ifnum\csname dtl at ci@\DTLgidxCurrentdb @Sort\endcsname=#1\space
+ \protect#2%
+ \else
+ #2%
+ \fi
+ \fi
+ \fi
+ \fi
+ \expandafter\@gobble\string\%^^J
+ \string\db at col@elt at end@\space
+ \expandafter\@gobble\string\%^^J
+ \string\db at col@id at w\space #3%
+ \expandafter\@gobble\string\%^^J
+ \string\db at col@id at end@\space
+}
+\newcommand*{\datagidx at do@highopt at update}[1]{}
+\newcommand*{\datagidxhighoptfilename}[1]{\jobname-#1.gidx}
+\define at choicekey{datagidx.sty}{optimize}[\val\nr]%
+ {off,low,high}[high]%
+ {%
+ \ifcase\nr\relax
+ \renewcommand*{\datagidx at do@sort}{\datagidx at sort}
+ \or
+ \renewcommand*{\datagidx at do@sort}{\datagidx at optimize@sort}
+ \or
+ \datagidx at do@highopt at optimize
+ \fi
+ }
+\define at choicekey{datagidx.sty}{nowarn}[\val\nr]{true,false}[true]%
+{%
+ \ifcase\nr\relax
+ \@datagidx at warnfalse
+ \or
+ \@datagidx at warntrue
+ \fi
+}
+\define at choicekey{datatool.sty}{utf8}{true,false}[true]{%
+ \setbool{@dtl at utf8}{#1}%
+}
+\define at key{datagidx.sty}{columns}%
+{%
+ \DTLgidxSetColumns{#1}%
+}
+\define at choicekey{datagidx.sty}{child}[\val\nr]%
+ {named,noname}%
+ {%
+ \datagidx at setchildstyle\nr
+ }
+\define at choicekey{datagidx.sty}{namecase}[\val\nr]%
+ {nochange,uc,lc,firstuc,capitalise}%
+ {%
+ \datagidx at setnamecase\nr
+ }
+\define at key{datagidx.sty}{namefont}%
+{%
+ \renewcommand*{\DTLgidxNameFont}[1]{{#1{##1}}}%
+}
+\define at key{datagidx.sty}{postname}
+{%
+ \renewcommand*{\DTLgidxPostName}{#1}%
+}
+\define at choicekey{datagidx.sty}{postdesc}[\val\nr]%
+ {none,dot}%
+ {%
+ \datagidx at setpostdesc\nr
+ }
+\define at choicekey{datagidx.sty}{prelocation}[\val\nr]%
+ {none,enspace,space,dotfill,hfill}%
+ {%
+ \datagidx at setprelocation\nr
+ }
+\define at choicekey{datagidx.sty}{location}[\val\nr]%
+ {hide,list,first}%
+ {\datagidx at setlocation\nr}
+\define at choicekey{datagidx.sty}{see}[\val\nr]%
+ {comma,brackets,dot,space,nosep,semicolon,location}%
+ {\datagidx at setsee\nr}
+\define at choicekey{datagidx.sty}{symboldesc}[\val\nr]%
+ {symbol,desc,(symbol) desc,desc (symbol),symbol desc,desc symbol}%
+ {\datagidx at formatsymdesc\nr}
+\define at key{datagidx.sty}{compositor}%
+{%
+ \DTLgidxSetCompositor{#1}%
+}%
+\DeclareOptionX{final}{%
+ \let\datagidxshowifdraft\@gobble
+}
+\let\datagidxshowifdraft\@gobble
+\DeclareOptionX{draft}{%
+ \let\datagidxshowifdraft\@firstofone
+}
+\define at choicekey{datagidx.sty}{verbose}[\val\nr]%
+ {true,false}[true]%
+ {%
+ \csuse{dtlverbose\val}%
+ }
+\ProcessOptionsX
+\DTLnewdb{datagidx}
+\providecommand*{\seename}{see}
+\providecommand*{\seealsoname}{see also}
+\newcommand*{\DTLgidxSeeTagFont}[1]{\emph{#1}}
+\newcommand*{\DTLgidxFormatSee}[2]{%
+ \DTLgidxSeeTagFont{#1} \DTLgidxSeeList{#2}%
+}
+\newcommand*{\DTLgidxFormatSeeAlso}[2]{%
+ \datagidxdoseealso
+ {%
+ \DTLgidxSeeTagFont{#1} \DTLgidxSeeList{#2}%
+ }%
+}
+\newcommand*{\datagidxdoseealso}[1]{%
+ \datagidxseealsostart
+ #1%
+ \datagidxseealsoend
+}
+\newcommand*{\DTLgidxSeeList}[1]{%
+ \def\datagidx at sep{}%
+ \@for\dtl at thislabel:=#1\do
+ {%
+ \ifx\@xfor at nextelement\@nnil
+ \ifdefempty{\datagidx at sep}%
+ {%
+ }%
+ {%
+ \DTLidxSeeLastSep
+ }%
+ \else
+ \datagidx at sep
+ \let\datagidx at sep\DTLidxSeeSep
+ \fi
+ \DTLidxFormatSeeItem{\dtl at thislabel}%
+ }%
+}
+\newcommand*{\DTLidxFormatSeeItem}[1]{%
+ \DTLgidxFetchEntry{\datagidx at value}{#1}{Name}%
+ \datagidxlink{#1}%
+ {%
+ \datagidx at value
+ }%
+}
+\newcommand*{\DTLidxSeeSep}{, }
+\newcommand*{\DTLidxSeeLastSep}{ \& }
+\newcommand*{\DTLgidxDoSeeOrLocation}{%
+ \DTLifnull\See
+ {%
+ \ifdefempty\Location
+ {%
+ }%
+ {%
+ \DTLgidxPreLocation
+ \DTLgidxLocation
+ }%
+ }%
+ {%
+ \DTLgidxSee
+ }%
+}
+\newcommand*{\datagidx at sortchildren}{%
+ \def\datagidx at sortedlist{}%
+ \@for\Label:=\Children\do
+ {%
+ \edef\do at getrow{%
+ \noexpand\dtlgetrowforvalue
+ {\DTLgidxCurrentdb}%
+ {\dtlcolumnindex{\DTLgidxCurrentdb}{Label}}%
+ {\Label}%
+ }%
+ \do at getrow
+ \ifdefempty\datagidx at sortedlist
+ {%
+ \edef\datagidx at newsortedlist{{\number\dtlrownum}{\Label}}%
+ }%
+ {%
+ \def\datagidx at newsortedlist{}%
+ \@for\@datagidx at thisval:=\datagidx at sortedlist\do
+ {%
+ \edef\datagidx at thisidx{\expandafter\@firstoftwo\@datagidx at thisval}%
+ \ifnum\datagidx at thisidx>\dtlrownum\relax
+ \ifdefempty\datagidx at newsortedlist
+ {%
+ \eappto\datagidx at newsortedlist
+ {%
+ {\number\dtlrownum}{\Label},\@datagidx at thisval
+ }%
+ }%
+ {%
+ \eappto\datagidx at newsortedlist
+ {%
+ ,{\number\dtlrownum}{\Label},\@datagidx at thisval
+ }%
+ }%
+ \@endfortrue
+ \else
+ \ifdefempty\datagidx at newsortedlist
+ {%
+ \edef\datagidx at newsortedlist{%
+ \@datagidx at thisval
+ }%
+ }%
+ {%
+ \eappto\datagidx at newsortedlist
+ {%
+ ,\@datagidx at thisval
+ }%
+ }%
+ \fi
+ }%
+ \if at endfor
+ \ifdefempty\@forremainder
+ {%
+ }%
+ {%
+ \eappto\datagidx at newsortedlist{,\@forremainder}%
+ }%
+ \else
+ \ifdefempty\datagidx at newsortedlist
+ {%
+ \edef\datagidx at newsortedlist{{\number\dtlrownum}{\Label}}%
+ }%
+ {%
+ \eappto\datagidx at newsortedlist{,{\number\dtlrownum}{\Label}}%
+ }%
+ \fi
+ }%
+ \let\datagidx at sortedlist\datagidx at newsortedlist
+ \@endforfalse
+ }%
+}
+\newcommand{\datagidx at sort@foreachchild}[1]{%
+ \datagidx at sortchildren
+ \@for\@datagidx at thisval:=\datagidx at sortedlist\do
+ {%
+ \edef\Label{\expandafter\@secondoftwo\@datagidx at thisval}%
+ #1%
+ }%
+}
+\newcommand{\datagidx at unsort@foreachchild}[1]{%
+ \@for\Label:=\Children\do
+ {%
+ #1%
+ }%
+}
+\newcommand*{\DTLgidxChildren}{%
+ \bgroup
+ \DTLifnull\Children
+ {}%
+ {%
+ \advance\datagidx at level by 1\relax
+ \datagidxchildstart
+ \let\Parent\Label
+ \datagidx at foreachchild
+ {%
+ \edef\do at getrow{%
+ \noexpand\dtlgetrowforvalue
+ {\DTLgidxCurrentdb}%
+ {\dtlcolumnindex{\DTLgidxCurrentdb}{Label}}%
+ {\Label}%
+ }%
+ \do at getrow
+ \dtlgetentryfromcurrentrow
+ {\Location}%
+ {\dtlcolumnindex{\DTLgidxCurrentdb}{Location}}%
+ \dtlgetentryfromcurrentrow
+ {\See}%
+ {\dtlcolumnindex{\DTLgidxCurrentdb}{See}}%
+ \dtlgetentryfromcurrentrow
+ {\SeeAlso}%
+ {\dtlcolumnindex{\DTLgidxCurrentdb}{SeeAlso}}%
+ \DTLifnull\Location
+ {%
+ \DTLifnull\See
+ {%
+ \DTLifnull\SeeAlso
+ {}%
+ {%
+ \datagidx at displaychild
+ }%
+ }%
+ {%
+ \datagidx at displaychild
+ }%
+ }%
+ {%
+ \datagidx at displaychild
+ }%
+ }%
+ \datagidxchildend
+ }%
+ \egroup
+}
+\newcommand*{\datagidxgetchildfields}{%
+ \dtlgetentryfromcurrentrow
+ {\Name}%
+ {\dtlcolumnindex{\DTLgidxCurrentdb}{Name}}%
+ \dtlgetentryfromcurrentrow
+ {\Description}%
+ {\dtlcolumnindex{\DTLgidxCurrentdb}{Description}}%
+ \dtlgetentryfromcurrentrow
+ {\Symbol}%
+ {\dtlcolumnindex{\DTLgidxCurrentdb}{Symbol}}%
+ \dtlgetentryfromcurrentrow
+ {\Long}%
+ {\dtlcolumnindex{\DTLgidxCurrentdb}{Long}}%
+ \dtlgetentryfromcurrentrow
+ {\Short}%
+ {\dtlcolumnindex{\DTLgidxCurrentdb}{Short}}%
+ \dtlgetentryfromcurrentrow
+ {\Text}%
+ {\dtlcolumnindex{\DTLgidxCurrentdb}{Text}}%
+ \dtlgetentryfromcurrentrow
+ {\Plural}%
+ {\dtlcolumnindex{\DTLgidxCurrentdb}{Plural}}%
+ \dtlgetentryfromcurrentrow
+ {\Short}%
+ {\dtlcolumnindex{\DTLgidxCurrentdb}{Used}}%
+ \dtlgetentryfromcurrentrow
+ {\Children}%
+ {\dtlcolumnindex{\DTLgidxCurrentdb}{Child}}%
+}
+\newcommand*{\datagidx at displaychild}{%
+ \datagidxgetchildfields
+ \datagidxchilditem
+}
+\ifdef{\chapter}
+{%
+ \newcommand*{\datagidx at heading}{\chapter*}
+}%
+{%
+ \newcommand*{\datagidx at heading}{\section*}
+}
+\let\DTLgidxNoHeading\@gobble
+\newcommand*{\datagidx at postheading}{}
+\newcommand*{\datagidx at multicols}{multicols}
+\newcommand*{\datagidx at sort}{%
+ \dtlsort{Sort,FirstId}{\DTLgidxCurrentdb}{\dtlwordindexcompare}%
+}
+\providecommand{\@idxitem}{\par\hangindent 40\p@}
+\newcommand*{\datagidxstart}%
+{%
+ \bgroup
+ \setlength{\parindent}{0pt}%
+ \setlength{\parskip}{0pt plus 0.3pt}%
+ \let\item\@idxitem
+}
+\newcommand*{\datagidxend}{\egroup}
+\newcommand*{\@datagidxtarget}[2]{%
+ \ifdef\hypertarget
+ {%
+ \bgroup
+ \let\glsadd\@gobble
+ \settoheight\dimen@{#2}%
+ \raisebox{\dimen@}{\hypertarget{#1}{}}%
+ \egroup
+ }%
+ {%
+ }%
+ #2%
+}
+\newcommand*{\datagidxtarget}{\@datagidxtarget}
+\newcommand*{\@datagidxlink}[2]{%
+ \ifdef\hyperlink
+ {%
+ \hyperlink{#1}{#2}%
+ }%
+ {%
+ #2%
+ }%
+}
+\newcommand*{\datagidxlink}{\@datagidxlink}
+\newcommand*{\DTLgidxEnableHyper}{%
+ \let\datagidxtarget\@datagidxtarget
+ \let\datagidxlink\@datagidxlink
+}
+\newcommand*{\DTLgidxDisableHyper}{%
+ \let\datagidxtarget\@secondoftwo
+ \let\datagidxlink\@secondoftwo
+}
+\newcommand*{\datagidxgroupsep}{}
+\newcommand*{\datagidxgroupheader}{}
+\newcommand*{\datagidxitem}{}%
+\newcommand*{\datagidxchildstart}{}
+\newcommand*{\datagidxchildend}{}
+\newcommand*{\datagidxchilditem}{}%
+\newcommand*{\datagidxseealsostart}{}
+\newcommand*{\datagidxseealsoend}{}
+\newcommand*{\datagidx at doifsymlocwidth}[3]{%
+ \setlength{\dtl at tmplength}{\linewidth}%
+ \addtolength{\dtl at tmplength}{-#1}%
+ \settowidth{\dimen@}{#2}%
+ \addtolength{\dtl at tmplength}{-\dimen@}%
+ \addtolength{\dtl at tmplength}{-\datagidxsymbolwidth}%
+ \addtolength{\dtl at tmplength}{-\datagidxlocationwidth}%
+ \settowidth{\dimen@}{\DTLgidxPreLocation}%
+ \addtolength{\dtl at tmplength}{-\dimen@}%
+ \settowidth{\dimen@}{\DTLgidxSymDescSep}%
+ \addtolength{\dtl at tmplength}{-\dimen@}%
+ \if at datagidxsymbolleft
+ \begin{minipage}[t]{\datagidxsymbolwidth}%
+ \datagidxsymalign
+ \let\DTLgidxSymDescSep\@empty
+ \DTLgidxSymbolDescLeft
+ \end{minipage}%
+ \DTLgidxSymDescSep
+ \begin{minipage}[t]{\dtl at tmplength}%
+ \let\DTLgidxSymDescSep\@empty
+ \DTLgidxSymbolDescRight
+ \end{minipage}%
+ \else
+ \begin{minipage}[t]{\dtl at tmplength}%
+ \let\DTLgidxSymDescSep\@empty
+ \DTLgidxSymbolDescRight
+ \end{minipage}%
+ \DTLgidxSymDescSep
+ \begin{minipage}[t]{\datagidxsymbolwidth}%
+ \datagidxsymalign
+ \let\DTLgidxSymDescSep\@empty
+ \DTLgidxSymbolDescLeft
+ \end{minipage}%
+ \fi
+ \DTLgidxPreLocation
+ \begin{minipage}[t]{\datagidxlocationwidth}%
+ \datagidxlocalign
+ \let\DTLgidxPreLocation\@empty
+ #3%
+ \end{minipage}%
+}
+\newcommand*{\datagidx at doiflocwidth}[3]{%
+ \setlength{\dtl at tmplength}{\linewidth}%
+ \addtolength{\dtl at tmplength}{-#1}%
+ \settowidth{\dimen@}{#2}%
+ \addtolength{\dtl at tmplength}{-\dimen@}%
+ \addtolength{\dtl at tmplength}{-\datagidxlocationwidth}%
+ \settowidth{\dimen@}{\DTLgidxPreLocation}%
+ \addtolength{\dtl at tmplength}{-\dimen@}%
+ \begin{minipage}[t]{\dtl at tmplength}%
+ \DTLgidxSymbolDescription
+ \end{minipage}%
+ \DTLgidxPreLocation
+ \begin{minipage}[t]{\datagidxlocationwidth}%
+ \datagidxlocalign
+ \let\DTLgidxPreLocation\@empty
+ #3%
+ \end{minipage}%
+}
+\newcommand*{\datagidx at doifsymwidth}[3]{%
+ \setlength{\dtl at tmplength}{\linewidth}%
+ \addtolength{\dtl at tmplength}{-#1}%
+ \settowidth{\dimen@}{#2}%
+ \addtolength{\dtl at tmplength}{-\dimen@}%
+ \addtolength{\dtl at tmplength}{-\datagidxsymbolwidth}%
+ \settowidth{\dimen@}{\DTLgidxSymDescSep}%
+ \addtolength{\dtl at tmplength}{-\dimen@}%
+ \if at datagidxsymbolleft
+ \begin{minipage}[t]{\datagidxsymbolwidth}%
+ \datagidxsymalign
+ \let\DTLgidxSymDescSep\@empty
+ \DTLgidxSymbolDescLeft
+ \end{minipage}%
+ \DTLgidxSymDescSep
+ \begin{minipage}[t]{\dtl at tmplength}%
+ \let\DTLgidxSymDescSep\@empty
+ \DTLgidxSymbolDescRight
+ #3%
+ \end{minipage}%
+ \else
+ \begin{minipage}[t]{\dtl at tmplength}%
+ \let\DTLgidxSymDescSep\@empty
+ \DTLgidxSymbolDescRight
+ \end{minipage}%
+ \DTLgidxSymDescSep
+ \begin{minipage}[t]{\datagidxsymbolwidth}%
+ \datagidxsymalign
+ \let\DTLgidxSymDescSep\@empty
+ \DTLgidxSymbolDescLeft
+ #3%
+ \end{minipage}%
+ \fi
+}
+\newcommand*{\datagidxlocalign}{\raggedleft}
+\newcommand*{\datagidxsymalign}{\centering}
+\newcommand*{\datagidxsetstyle}[1]{%
+ \ifcsdef{datagidx at style@#1}%
+ {%
+ \csuse{datagidx at style@#1}%
+ }%
+ {%
+ \PackageError{datagidx}{Unknown style `#1'}{}%
+ }%
+}
+\newcommand*{\datagidx at style@index}{%
+ \renewcommand*{\datagidxstart}%
+ {%
+ \bgroup
+ \setlength{\parindent}{0pt}%
+ \setlength{\parskip}{0pt plus 0.3pt}%
+ \raggedright
+ \let\item\@idxitem
+ \ifdim\datagidxsymbolwidth>0pt\relax
+ \ifdim\datagidxlocationwidth>0pt\relax
+ \def\datagidx at item@body{%
+ \datagidx at doifsymlocwidth{0pt}%
+ {\DTLgidxNameFont{\DTLgidxNameCase{\Name}}}%
+ {%
+ \DTLgidxDoSeeOrLocation
+ }%
+ }%
+ \else
+ \def\datagidx at item@body{%
+ \datagidx at doiflocwidth{0pt}%
+ {\DTLgidxNameFont{\DTLgidxNameCase{\Name}}}%
+ {%
+ \DTLgidxDoSeeOrLocation
+ }%
+ }%
+ \fi
+ \else
+ \ifdim\datagidxlocationwidth>0pt\relax
+ \def\datagidx at item@body{%
+ \datagidx at doiflocwidth{0pt}%
+ {\DTLgidxNameFont{\DTLgidxNameCase{\Name}}}%
+ {%
+ \DTLgidxDoSeeOrLocation
+ }%
+ }%
+ \else
+ \def\datagidx at item@body{%
+ \DTLgidxSymbolDescription
+ \DTLgidxDoSeeOrLocation
+ }%
+ \fi
+ \fi
+ }%
+ \renewcommand*{\datagidxend}{\egroup}%
+ \renewcommand*{\datagidxgroupsep}{\ifdatagidxshowgroups\indexspace\fi}%
+ \renewcommand{\datagidxgroupheader}{%
+ \ifdatagidxshowgroups
+ \item
+ \makebox[\linewidth]%
+ {%
+ \textbf{\DTLgidxGroupHeaderTitle{\datagidxcurrentgroup}}%
+ }%
+ \DTLpar\nobreak\@afterheading
+ \fi
+ }%
+ \renewcommand*{\datagidxitem}{%
+ \ifdefempty\datagidxprevgroup
+ {%
+ \datagidxgroupheader
+ }%
+ {%
+ \ifdefequal\datagidxcurrentgroup\datagidxprevgroup
+ {%
+ }%
+ {%
+ \datagidxgroupsep
+ \datagidxgroupheader
+ }%
+ }%
+ \item
+ \datagidxtarget{\Label}%
+ {%
+ \DTLgidxNameFont{\DTLgidxNameCase{\Name}}%
+ }%
+ \DTLgidxPostName
+ \datagidx at item@body
+ \DTLgidxChildrenSeeAlso
+ }%
+ \renewcommand*{\datagidxchildstart}%
+ {%
+ \bgroup
+ \setlength{\parindent}{0pt}%
+ \setlength{\parskip}{0pt plus 0.3pt}%
+ \let\item\@idxitem
+ }%
+ \renewcommand*{\datagidxchildend}{\egroup}%
+ \renewcommand*{\datagidxchilditem}{%
+ \setlength{\dimen@}{\datagidxindent}%
+ \multiply\dimen@ by \datagidx at level\relax
+ \@idxitem\hspace*{\dimen@}%
+ \refstepcounter{DTLgidxChildCount}%
+ \datagidxtarget{\Label}%
+ {%
+ \DTLgidxChildStyle
+ {%
+ \DTLgidxNameFont{\DTLgidxNameCase{\Name}}%
+ \DTLgidxPostChildName
+ }%
+ }%
+ \DTLgidxSymbolDescription
+ \DTLgidxDoSeeOrLocation
+ \DTLgidxChildrenSeeAlso
+ }%
+ \renewcommand*{\datagidxseealsostart}%
+ {%
+ \bgroup
+ \setlength{\parindent}{0pt}%
+ \setlength{\parskip}{0pt plus 0.3pt}%
+ \setlength{\dimen@}{\datagidxindent}%
+ \advance\datagidx at level by 1\relax
+ \multiply\dimen@ by \datagidx at level\relax
+ \@idxitem\hspace*{\dimen@}%
+ }%
+ \renewcommand{\datagidxseealsoend}{\egroup}%
+}
+\datagidx at style@index
+\newcommand*{\datagidx at style@indexalign}{%
+ \renewcommand*{\datagidxstart}%
+ {%
+ \bgroup
+ \setlength{\parindent}{0pt}%
+ \setlength{\parskip}{0pt plus 0.3pt}%
+ \setlength{\datagidxnamewidth}{0pt}%
+ \DTLforeach*{\DTLgidxCurrentdb}%
+ {\Name=Name,\Location=Location,\See=See,\SeeAlso=SeeAlso,%
+ \Parent=Parent}%
+ {%
+ \DTLifnull{\Parent}%
+ {%
+ \datagidx at doifdisplayed
+ {%
+ \settowidth{\dimen@}{\DTLgidxNameFont{\DTLgidxNameCase{\Name}}}%
+ \ifdim\dimen@>\datagidxnamewidth\relax
+ \datagidxnamewidth=\dimen@\relax
+ \fi
+ }%
+ }%
+ {}%
+ }%
+ \settowidth{\dimen@}{\DTLgidxPostName}%
+ \addtolength{\datagidxnamewidth}{\dimen@}%
+ \setlength{\datagidxdescwidth}{\linewidth}%
+ \addtolength{\datagidxdescwidth}{-\datagidxnamewidth}%
+ \ifdim\datagidxsymbolwidth>0pt\relax
+ \addtolength{\datagidxdescwidth}{-\datagidxsymbolwidth}%
+ \settowidth{\dimen@}{\DTLgidxSymDescSep}%
+ \addtolength{\datagidxdescwidth}{-\dimen@}%
+ \fi
+ \ifdim\datagidxlocationwidth>0pt\relax
+ \addtolength{\datagidxdescwidth}{-\datagidxlocationwidth}%
+ \settowidth{\dimen@}{\DTLgidxPreLocation}%
+ \addtolength{\datagidxdescwidth}{-\dimen@}%
+ \fi
+ \ifdim\datagidxsymbolwidth>0pt\relax
+ \ifdim\datagidxlocationwidth>0pt\relax
+ \if at datagidxsymbolleft
+ \def\datagidx at item@body{%
+ \begin{minipage}[t]{\datagidxsymbolwidth}%
+ \datagidxsymalign
+ \let\DTLgidxSymDescSep\@empty
+ \DTLgidxSymbolDescLeft
+ \end{minipage}%
+ \DTLgidxSymDescSep
+ \begin{minipage}[t]{\datagidxdescwidth}%
+ \let\DTLgidxSymDescSep\@empty
+ \setlength{\parskip}{0pt plus 0.3pt}%
+ \DTLgidxSymbolDescRight
+ \end{minipage}%
+ \DTLgidxPreLocation
+ \begin{minipage}[t]{\datagidxlocationwidth}%
+ \datagidxlocalign
+ \let\DTLgidxPreLocation\@empty
+ \DTLgidxDoSeeOrLocation
+ \end{minipage}%
+ }%
+ \else
+ \def\datagidx at item@body{%
+ \begin{minipage}[t]{\datagidxdescwidth}%
+ \let\DTLgidxSymDescSep\@empty
+ \DTLgidxSymbolDescLeft
+ \end{minipage}%
+ \DTLgidxSymDescSep
+ \begin{minipage}[t]{\datagidxsymbolwidth}%
+ \datagidxsymalign
+ \let\DTLgidxSymDescSep\@empty
+ \setlength{\parskip}{0pt plus 0.3pt}%
+ \DTLgidxSymbolDescRight
+ \end{minipage}%
+ \DTLgidxPreLocation
+ \begin{minipage}[t]{\datagidxlocationwidth}%
+ \datagidxlocalign
+ \let\DTLgidxPreLocation\@empty
+ \DTLgidxDoSeeOrLocation
+ \end{minipage}%
+ }%
+ \fi
+ \else
+ \if at datagidxsymbolleft
+ \def\datagidx at item@body{%
+ \begin{minipage}[t]{\datagidxsymbolwidth}%
+ \datagidxsymalign
+ \let\DTLgidxSymDescSep\@empty
+ \DTLgidxSymbolDescLeft
+ \end{minipage}%
+ \DTLgidxSymDescSep
+ \begin{minipage}[t]{\datagidxdescwidth}%
+ \let\DTLgidxSymDescSep\@empty
+ \setlength{\parskip}{0pt plus 0.3pt}%
+ \DTLgidxSymbolDescRight
+ \DTLgidxDoSeeOrLocation
+ \end{minipage}%
+ }%
+ \else
+ \def\datagidx at item@body{%
+ \begin{minipage}[t]{\datagidxdescwidth}%
+ \let\DTLgidxSymDescSep\@empty
+ \DTLgidxSymbolDescLeft
+ \end{minipage}%
+ \DTLgidxSymDescSep
+ \begin{minipage}[t]{\datagidxsymbolwidth}%
+ \datagidxsymalign
+ \let\DTLgidxSymDescSep\@empty
+ \setlength{\parskip}{0pt plus 0.3pt}%
+ \DTLgidxSymbolDescRight
+ \DTLgidxDoSeeOrLocation
+ \end{minipage}%
+ }%
+ \fi
+ \fi
+ \else
+ \ifdim\datagidxlocationwidth>0pt\relax
+ \def\datagidx at item@body{%
+ \begin{minipage}[t]{\datagidxdescwidth}%
+ \setlength{\parskip}{0pt plus 0.3pt}%
+ \DTLgidxSymbolDescription
+ \end{minipage}%
+ \DTLgidxPreLocation
+ \begin{minipage}[t]{\datagidxlocationwidth}%
+ \datagidxlocalign
+ \let\DTLgidxPreLocation\@empty
+ \DTLgidxDoSeeOrLocation
+ }%
+ \else
+ \def\datagidx at item@body{%
+ \begin{minipage}[t]{\datagidxdescwidth}%
+ \setlength{\parskip}{0pt plus 0.3pt}%
+ \DTLgidxSymbolDescription
+ \DTLgidxDoSeeOrLocation
+ \end{minipage}%
+ }%
+ \fi
+ \fi
+ }%
+ \renewcommand*{\datagidxend}{\egroup}%
+ \renewcommand*{\datagidxgroupsep}{}%
+ \renewcommand*{\datagidxgroupheader}{}%
+ \renewcommand*{\datagidxitem}{%
+ \ifdefempty\datagidxprevgroup
+ {%
+ \datagidxgroupheader
+ }%
+ {%
+ \ifdefequal\datagidxcurrentgroup\datagidxprevgroup
+ {%
+ }%
+ {%
+ \datagidxgroupsep
+ \datagidxgroupheader
+ }%
+ }%
+ \hangindent0pt\relax
+ \parindent0pt\relax
+ \makebox[\datagidxnamewidth][l]%
+ {%
+ \datagidxtarget{\Label}%
+ {%
+ \DTLgidxNameFont{\DTLgidxNameCase{\Name}}%
+ \DTLgidxPostName
+ }%
+ }%
+ \datagidx at item@body
+ \par
+ \DTLgidxChildrenSeeAlso
+ \par
+ }%
+ \renewcommand*{\datagidxchildstart}%
+ {%
+ \bgroup
+ \setlength{\dimen@}{\datagidxindent}%
+ \multiply\dimen@ by \datagidx at level\relax
+ \setlength{\dtl at tmplength}{\linewidth}%
+ \addtolength{\dtl at tmplength}{-\dimen@}%
+ \setlength{\parindent}{0pt}%
+ \setlength{\parskip}{0pt plus 0.3pt}%
+ \edef\item{\noexpand\parshape=1 \the\dimen@ \the\dtl at tmplength}%
+ \setlength{\datagidxnamewidth}{0pt}%
+ \DTLforeach*{\DTLgidxCurrentdb}%
+ {\Name=Name,\Location=Location,\See=See,\SeeAlso=SeeAlso,%
+ \Parent=Parent}%
+ {%
+ \DTLifnull{\Parent}%
+ {%
+ \datagidx at doifdisplayed
+ {%
+ \settowidth{\dimen@}%
+ {%
+ \DTLgidxChildStyle
+ {%
+ \DTLgidxNameFont{\DTLgidxNameCase{\Name}}%
+ }%
+ }%
+ \ifdim\dimen@>\datagidxnamewidth\relax
+ \datagidxnamewidth=\dimen@\relax
+ \fi
+ }%
+ }%
+ {}%
+ }%
+ \settowidth{\dimen@}{\DTLgidxChildStyle\DTLgidxPostChildName}%
+ \addtolength{\datagidxnamewidth}{\dimen@}%
+ \setlength{\datagidxdescwidth}{\dtl at tmplength}%
+ \addtolength{\datagidxdescwidth}{-\datagidxnamewidth}%
+ }%
+ \renewcommand{\datagidxchildend}{\egroup}%
+ \renewcommand*{\datagidxchilditem}{%
+ \item
+ \refstepcounter{DTLgidxChildCount}%
+ \makebox[\datagidxnamewidth][l]%
+ {%
+ \datagidxtarget{\Label}%
+ {%
+ \DTLgidxChildStyle
+ {%
+ \DTLgidxNameFont{\DTLgidxNameCase{\Name}}%
+ \DTLgidxPostChildName
+ }%
+ }%
+ }%
+ \begin{minipage}[t]{\datagidxdescwidth}%
+ \setlength{\parskip}{0pt plus 0.3pt}%
+ \DTLgidxSymbolDescription
+ \DTLgidxDoSeeOrLocation
+ \DTLgidxChildrenSeeAlso
+ \end{minipage}%
+ \par
+ }%
+}
+\newlength\datagidxindent
+\setlength\datagidxindent{10\p@}
+\newlength\datagidxnamewidth
+\newlength\datagidxdescwidth
+\newcommand*{\datagidx at style@align}{%
+ \renewcommand*{\datagidxstart}%
+ {%
+ \bgroup
+ \setlength{\parindent}{0pt}%
+ \setlength{\parskip}{0pt plus 0.3pt}%
+ \setlength{\datagidxnamewidth}{0pt}%
+ \DTLforeach*{\DTLgidxCurrentdb}%
+ {\Name=Name,\Location=Location,\See=See,\SeeAlso=SeeAlso,%
+ \Parent=Parent}%
+ {%
+ \DTLifnull{\Parent}%
+ {%
+ \datagidx at doifdisplayed
+ {%
+ \settowidth{\dimen@}{\DTLgidxNameFont{\DTLgidxNameCase{\Name}}}%
+ \ifdim\dimen@>\datagidxnamewidth\relax
+ \datagidxnamewidth=\dimen@\relax
+ \fi
+ }%
+ }%
+ {}%
+ }%
+ \settowidth{\dimen@}{\DTLgidxPostName}%
+ \addtolength{\datagidxnamewidth}{\dimen@}%
+ \setlength{\datagidxdescwidth}{\linewidth}%
+ \addtolength{\datagidxdescwidth}{-\datagidxnamewidth}%
+ \ifdim\datagidxsymbolwidth>0pt\relax
+ \addtolength{\datagidxdescwidth}{-\datagidxsymbolwidth}%
+ \settowidth{\dimen@}{\DTLgidxSymDescSep}%
+ \addtolength{\datagidxdescwidth}{-\dimen@}%
+ \fi
+ \ifdim\datagidxlocationwidth>0pt\relax
+ \addtolength{\datagidxdescwidth}{-\datagidxlocationwidth}%
+ \settowidth{\dimen@}{\DTLgidxPreLocation}%
+ \addtolength{\datagidxdescwidth}{-\dimen@}%
+ \fi
+ \ifdim\datagidxsymbolwidth>0pt\relax
+ \ifdim\datagidxlocationwidth>0pt\relax
+ \if at datagidxsymbolleft
+ \def\datagidx at item@body{%
+ \begin{minipage}[t]{\datagidxsymbolwidth}%
+ \datagidxsymalign
+ \let\DTLgidxSymDescSep\@empty
+ \DTLgidxSymbolDescLeft
+ \end{minipage}%
+ \DTLgidxSymDescSep
+ \begin{minipage}[t]{\datagidxdescwidth}%
+ \let\DTLgidxSymDescSep\@empty
+ \setlength{\parskip}{0pt plus 0.3pt}%
+ \DTLgidxSymbolDescRight
+ \end{minipage}%
+ \DTLgidxPreLocation
+ \begin{minipage}[t]{\datagidxlocationwidth}%
+ \datagidxlocalign
+ \let\DTLgidxPreLocation\@empty
+ \DTLgidxDoSeeOrLocation
+ \DTLgidxChildrenSeeAlso
+ \end{minipage}%
+ }%
+ \else
+ \def\datagidx at item@body{%
+ \begin{minipage}[t]{\datagidxdescwidth}%
+ \let\DTLgidxSymDescSep\@empty
+ \DTLgidxSymbolDescLeft
+ \end{minipage}%
+ \DTLgidxSymDescSep
+ \begin{minipage}[t]{\datagidxsymbolwidth}%
+ \datagidxsymalign
+ \let\DTLgidxSymDescSep\@empty
+ \setlength{\parskip}{0pt plus 0.3pt}%
+ \DTLgidxSymbolDescRight
+ \end{minipage}%
+ \DTLgidxPreLocation
+ \begin{minipage}[t]{\datagidxlocationwidth}%
+ \datagidxlocalign
+ \let\DTLgidxPreLocation\@empty
+ \DTLgidxDoSeeOrLocation
+ \DTLgidxChildrenSeeAlso
+ \end{minipage}%
+ }%
+ \fi
+ \else
+ \if at datagidxsymbolleft
+ \def\datagidx at item@body{%
+ \begin{minipage}[t]{\datagidxsymbolwidth}%
+ \datagidxsymalign
+ \let\DTLgidxSymDescSep\@empty
+ \DTLgidxSymbolDescLeft
+ \end{minipage}%
+ \DTLgidxSymDescSep
+ \begin{minipage}[t]{\datagidxdescwidth}%
+ \let\DTLgidxSymDescSep\@empty
+ \setlength{\parskip}{0pt plus 0.3pt}%
+ \DTLgidxSymbolDescRight
+ \DTLgidxDoSeeOrLocation
+ \DTLgidxChildrenSeeAlso
+ \end{minipage}%
+ }%
+ \else
+ \def\datagidx at item@body{%
+ \begin{minipage}[t]{\datagidxdescwidth}%
+ \let\DTLgidxSymDescSep\@empty
+ \DTLgidxSymbolDescLeft
+ \end{minipage}%
+ \DTLgidxSymDescSep
+ \begin{minipage}[t]{\datagidxsymbolwidth}%
+ \datagidxsymalign
+ \let\DTLgidxSymDescSep\@empty
+ \setlength{\parskip}{0pt plus 0.3pt}%
+ \DTLgidxSymbolDescRight
+ \DTLgidxDoSeeOrLocation
+ \DTLgidxChildrenSeeAlso
+ \end{minipage}%
+ }%
+ \fi
+ \fi
+ \else
+ \ifdim\datagidxlocationwidth>0pt\relax
+ \def\datagidx at item@body{%
+ \begin{minipage}[t]{\datagidxdescwidth}%
+ \setlength{\parskip}{0pt plus 0.3pt}%
+ \DTLgidxSymbolDescription
+ \end{minipage}%
+ \DTLgidxPreLocation
+ \begin{minipage}[t]{\datagidxlocationwidth}%
+ \datagidxlocalign
+ \let\DTLgidxPreLocation\@empty
+ \DTLgidxDoSeeOrLocation
+ \DTLgidxChildrenSeeAlso
+ \end{minipage}%
+ }%
+ \else
+ \def\datagidx at item@body{%
+ \begin{minipage}[t]{\datagidxdescwidth}%
+ \setlength{\parskip}{0pt plus 0.3pt}%
+ \DTLgidxSymbolDescription
+ \DTLgidxDoSeeOrLocation
+ \DTLgidxChildrenSeeAlso
+ \end{minipage}%
+ }%
+ \fi
+ \fi
+ }%
+ \renewcommand*{\datagidxend}{\egroup}%
+ \renewcommand*{\datagidxgroupsep}{\ifdatagidxshowgroups\indexspace\fi}%
+ \renewcommand{\datagidxgroupheader}{%
+ \ifdatagidxshowgroups
+ \item
+ \makebox[\linewidth]%
+ {%
+ \textbf{\DTLgidxGroupHeaderTitle{\datagidxcurrentgroup}}%
+ }%
+ \DTLpar\nobreak\@afterheading
+ \fi
+ }%
+ \renewcommand*{\datagidxitem}{%
+ \ifdefempty\datagidxprevgroup
+ {%
+ \datagidxgroupheader
+ }%
+ {%
+ \ifdefequal\datagidxcurrentgroup\datagidxprevgroup
+ {%
+ }%
+ {%
+ \datagidxgroupsep
+ \datagidxgroupheader
+ }%
+ }%
+ \hangindent0pt\relax
+ \parindent0pt\relax
+ \makebox[\datagidxnamewidth][l]%
+ {%
+ \datagidxtarget{\Label}%
+ {%
+ \DTLgidxNameFont{\DTLgidxNameCase{\Name}}%
+ \DTLgidxPostName
+ }%
+ }%
+ \datagidx at item@body
+ \par
+ }%
+ \renewcommand*{\datagidxchildstart}%
+ {%
+ \bgroup
+ \setlength{\parindent}{0pt}%
+ \setlength{\parskip}{0pt plus 0.3pt}%
+ \setlength{\datagidxnamewidth}{0pt}%
+ \DTLforeach*{\DTLgidxCurrentdb}%
+ {\Name=Name,\Location=Location,\See=See,\SeeAlso=SeeAlso,%
+ \Parent=Parent}%
+ {%
+ \DTLifnull{\Parent}%
+ {%
+ \datagidx at doifdisplayed
+ {%
+ \settowidth{\dimen@}%
+ {%
+ \DTLgidxChildStyle
+ {%
+ \DTLgidxNameFont{\DTLgidxNameCase{\Name}}%
+ }%
+ }%
+ \ifdim\dimen@>\datagidxnamewidth\relax
+ \datagidxnamewidth=\dimen@\relax
+ \fi
+ }%
+ }%
+ {}%
+ }%
+ \settowidth{\dimen@}{\DTLgidxChildStyle\DTLgidxPostChildName}%
+ \addtolength{\datagidxnamewidth}{\dimen@}%
+ \setlength{\datagidxdescwidth}{\linewidth}%
+ \addtolength{\datagidxdescwidth}{-\datagidxnamewidth}%
+ }%
+ \renewcommand{\datagidxchildend}{\egroup}%
+ \renewcommand*{\datagidxchilditem}{%
+ \hangindent0pt\relax
+ \parindent0pt\relax
+ \refstepcounter{DTLgidxChildCount}%
+ \makebox[\datagidxnamewidth][l]%
+ {%
+ \datagidxtarget{\Label}%
+ {%
+ \DTLgidxChildStyle
+ {%
+ \DTLgidxNameFont{\DTLgidxNameCase{\Name}}%
+ \DTLgidxPostChildName
+ }%
+ }%
+ }%
+ \begin{minipage}[t]{\datagidxdescwidth}%
+ \setlength{\parskip}{0pt plus 0.3pt}%
+ \DTLgidxSymbolDescription
+ \DTLgidxDoSeeOrLocation
+ \DTLgidxChildrenSeeAlso
+ \end{minipage}%
+ \par
+ }%
+}
+\newcommand*{\datagidx at style@gloss}{%
+ \renewcommand*{\datagidxstart}%
+ {%
+ \bgroup
+ \setlength{\parindent}{0pt}%
+ \setlength{\parskip}{0pt plus 0.3pt}%
+ \setlength{\datagidxnamewidth}{0pt}%
+ \DTLforeach*{\DTLgidxCurrentdb}%
+ {\Name=Name,\Location=Location,\See=See,\SeeAlso=SeeAlso,%
+ \Parent=Parent}%
+ {%
+ \DTLifnull{\Parent}%
+ {%
+ \datagidx at doifdisplayed
+ {%
+ \settowidth{\dimen@}{\DTLgidxNameFont{\DTLgidxNameCase{\Name}}}%
+ \ifdim\dimen@>\datagidxnamewidth\relax
+ \datagidxnamewidth=\dimen@\relax
+ \fi
+ }%
+ }%
+ {}%
+ }%
+ \settowidth{\dimen@}{\DTLgidxPostName}%
+ \addtolength{\datagidxnamewidth}{\dimen@}%
+ \setlength{\datagidxdescwidth}{\linewidth}%
+ \addtolength{\datagidxdescwidth}{-\datagidxnamewidth}%
+ }%
+ \renewcommand*{\datagidxend}{\egroup}%
+ \renewcommand*{\datagidxgroupsep}{\ifdatagidxshowgroups\indexspace\fi}%
+ \renewcommand{\datagidxgroupheader}{%
+ \ifdatagidxshowgroups
+ \item
+ \makebox[\linewidth]%
+ {%
+ \textbf{\DTLgidxGroupHeaderTitle{\datagidxcurrentgroup}}%
+ }%
+ \DTLpar\nobreak\@afterheading
+ \fi
+ }%
+ \renewcommand*{\datagidxitem}{%
+ \ifdefempty\datagidxprevgroup
+ {%
+ \datagidxgroupheader
+ }%
+ {%
+ \ifdefequal\datagidxcurrentgroup\datagidxprevgroup
+ {%
+ }%
+ {%
+ \datagidxgroupsep
+ \datagidxgroupheader
+ }%
+ }%
+ \hangindent0pt\relax
+ \parindent0pt\relax
+ \makebox[\datagidxnamewidth][l]%
+ {%
+ \datagidxtarget{\Label}%
+ {%
+ \DTLgidxNameFont{\DTLgidxNameCase{\Name}}%
+ \DTLgidxPostName
+ }%
+ }%
+ \begin{minipage}[t]{\datagidxdescwidth}%
+ \setlength{\parskip}{0pt plus 0.3pt}%
+ \@tempswatrue
+ \ifdefempty{\Description}%
+ {%
+ \ifdefempty{\Symbol}%
+ {%
+ \ifdefempty{\Location}{\@tempswafalse}{}%
+ }%
+ {}%
+ }%
+ {}%
+ \if at tempswa
+ \DTLgidxSymbolDescription
+ \DTLgidxDoSeeOrLocation
+ \else
+ \mbox{}%
+ \fi
+ \DTLgidxChildrenSeeAlso
+ \end{minipage}%
+ \par
+ }%
+ \renewcommand*{\datagidxchildstart}%
+ {%
+ \bgroup
+ \def\datagidx at childsep{}%
+ \setcounter{DTLgidxChildCount}{0}%
+ }%
+ \renewcommand{\datagidxchildend}{\DTLgidxPostChild\egroup}%
+ \renewcommand*{\datagidxchilditem}{%
+ \datagidx at childsep
+ \refstepcounter{DTLgidxChildCount}%
+ \datagidxtarget{\Label}%
+ {%
+ \DTLgidxChildStyle
+ {%
+ \DTLgidxNameFont{\DTLgidxNameCase{\Name}}%
+ \DTLgidxPostChildName
+ }%
+ }%
+ \DTLgidxSymbolDescription
+ \DTLgidxDoSeeOrLocation
+ \DTLgidxChildrenSeeAlso
+ \let\datagidx at childsep\DTLgidxChildSep
+ }%
+}
+\newcommand*{\DTLgidxChildSep}{ }
+\newcommand*{\DTLgidxPostChild}{}
+\ifdef\chapter
+{%
+ \newcommand\DTLgidxDictHead{%
+ \chapter{\DTLgidxGroupHeaderTitle{\datagidxcurrentgroup}}%
+ }%
+}%
+{%
+ \newcommand\DTLgidxDictHead{%
+ \section{\DTLgidxGroupHeaderTitle{\datagidxcurrentgroup}}%
+ }%
+}
+\newcommand*{\DTLgidxCategoryNameFont}[1]{#1}
+\newcommand*{\DTLgidxCategorySep}{\space}
+\newcommand*{\DTLgidxSubCategorySep}{\space}
+\newcommand*{\datagidxdictindent}{1em}
+\newcommand{\DTLgidxDictPostItem}{\par}
+\newcommand*{\datagidx at style@dict}{%
+ \renewcommand*{\datagidxstart}%
+ {%
+ \bgroup
+ \setlength{\parindent}{0pt}%
+ \setlength{\parskip}{0pt plus 0.3pt}%
+ \dimen@=\linewidth
+ \advance\dimen@ by -\datagidxdictindent\relax
+ \dtl at tmplength=\datagidxdictindent\relax
+ \xdef\datagidxdictparshape{%
+ \noexpand\parshape=2 0pt \the\linewidth\space
+ \the\dtl at tmplength\space \the\dimen@\relax
+ }%
+ \datagidx at level=1\relax
+ \raggedright
+ }%
+ \renewcommand*{\datagidxend}{\egroup}%
+ \renewcommand*{\datagidxgroupsep}{}%
+ \renewcommand{\datagidxgroupheader}{%
+ \ifdatagidxshowgroups
+ \datagidxend
+ \datagidx at postend
+ \DTLgidxDictHead
+ \datagidx at prestart
+ \datagidxstart
+ \fi
+ }%
+ \renewcommand*{\datagidxitem}{%
+ \ifdefempty\datagidxprevgroup
+ {%
+ \datagidxgroupheader
+ }%
+ {%
+ \ifdefequal\datagidxcurrentgroup\datagidxprevgroup
+ {%
+ }%
+ {%
+ \datagidxgroupsep
+ \datagidxgroupheader
+ }%
+ }%
+ \datagidxdictparshape
+ \datagidxtarget{\Label}%
+ {%
+ \DTLgidxNameFont{\DTLgidxNameCase{\Name}}%
+ }%
+ \DTLgidxPostName
+ \let\datagidx at catsep\@empty
+ \let\datagidx at subcatsep\@empty
+ \DTLgidxSymbolDescription
+ \DTLgidxChildrenSeeAlso
+ \DTLgidxDictPostItem
+ }%
+ \renewcommand*{\datagidxchildstart}%
+ {%
+ \bgroup
+ }%
+ \renewcommand*{\datagidxchildend}{\egroup}%
+ \renewcommand*{\datagidxchilditem}{%
+ \ifnum\datagidx at level=2\relax
+ \datagidx at catsep
+ \let\datagidx at catsep\DTLgidxCategorySep
+ \let\datagidx at subcapsep\@empty
+ \datagidxtarget{\Label}%
+ {%
+ \DTLgidxChildStyle
+ {%
+ \DTLgidxCategoryNameFont{\DTLgidxNameCase{\Name}}%
+ \DTLgidxPostChildName
+ }%
+ }%
+ \setcounter{DTLgidxChildCount}{0}%
+ \else
+ \datagidx at subcatsep
+ \let\datagidx at subcatsep\DTLgidxSubCategorySep
+ \refstepcounter{DTLgidxChildCount}%
+ \DTLgidxChildCountLabel
+ \DTLgidxPostChildName
+ \fi
+ \DTLgidxSymbolDescription
+ \DTLgidxDoSeeOrLocation
+ \DTLgidxChildrenSeeAlso
+ }%
+ \renewcommand*{\datagidxseealsostart}%
+ {%
+ \bgroup
+ \setlength{\parindent}{0pt}%
+ \setlength{\parskip}{0pt plus 0.3pt}%
+ \setlength{\dimen@}{\datagidxindent}%
+ \advance\datagidx at level by 1\relax
+ \multiply\dimen@ by \datagidx at level\relax
+ \@idxitem\hspace*{\dimen@}%
+ }%
+ \renewcommand{\datagidxseealsoend}{\egroup}%
+}
+\newcommand*{\dtldofirstlocation}{%
+ \@for\dtl at thisloc:=\Location\do{%
+ \ifdefempty\dtl at thisloc
+ {}%
+ {%
+ \expandafter\datagidx at getlocation\dtl at thisloc
+ \datagidxlink{\datagidx at current@target}%
+ {%
+ \datagidx at formatlocation
+ \datagidx at current@format\datagidx at current@locationstring
+ }%
+ \@endfortrue
+ }%
+ }%
+}
+\newcommand*{\datagidx at formatlocation}[2]{%
+ \ifdefempty{#1}%
+ {#2}%
+ {%
+ \ifcsdef{#1}%
+ {%
+ \csuse{#1}{#2}%
+ }%
+ {%
+ \PackageWarning{datagidx}{Unknown format `#1'}%
+ #2%
+ }%
+ }%
+}
+\newcommand*{\dtldolocationlist}{%
+ \DTLifnull{\Location}%
+ {}%
+ {%
+ \def\datagidx at prev@location{-1}%
+ \def\datagidx at prev@locationstring{}%
+ \def\datagidx at prev@format{}%
+ \def\datagidx at prev@locationformat{}%
+ \def\datagidx at prev@prefix{}%
+ \def\datagidx at prev@target{}%
+ \def\datagidx at location@sep{}%
+ \def\datagidx at location@start{-1}%
+ \expandafter\forcsvlist\expandafter\datagidx at parse@location
+ \expandafter{\Location}%
+ \do at prevlocation % tidy up loose ends
+ }%
+}
+\newif\if at dtl@sequential
+\newcommand*\datagidx at getlocdo[1]{%
+ \ifdefempty\datagidx at current@location
+ {}%
+ {%
+ \eappto\datagidx at current@prefix{%
+ \datagidx at current@location\datagidx at compositor
+ }%
+ }%
+ \def\datagidx at current@location{#1}%
+}
+\def\datagidx at getlocation[#1]#2#3{%
+ \def\datagidx at current@locationstring{#2}%
+ \bgroup
+ \datagidx at escapelocationformat
+ \xdef\datagidx at current@locationformat{#2}%
+ \datagidx at clearlocationformat
+ \xdef\datagidx at current@location{#2}%
+ \egroup
+ \let\datagidx at list\datagidx at current@location
+ \def\datagidx at current@prefix{}%
+ \def\datagidx at current@location{}%
+ \let\do\datagidx at getlocdo
+ \expandafter\datagidx at docomplist
+ \expandafter{\datagidx at list}%
+ \def\datagidx at current@format{#1}%
+ \def\datagidx at current@target{#3}%
+}
+\newcommand*{\datagidx at parse@location}[1]{%
+ \datagidx at getlocation#1\relax
+ \ifdefequal{\datagidx at prev@locationstring}{\datagidx at current@locationstring}%
+ {%
+ \ifdefequal{\datagidx at prev@format}{\datagidx at current@format}%
+ {%
+ }%
+ {%
+ \ifdefempty{\datagidx at current@format}%
+ {%
+ }%
+ {%
+ \ifdefempty{\datagidx at prev@format}%
+ {%
+ \let\datagidx at prev@format\datagidx at current@format
+ }%
+ {%
+ \PackageWarning{datagidx}%
+ {%
+ Conflicting location formats `\datagidx at prev@format' and
+ `\datagidx at current@format' for location `\datagidx at current@location'%
+ }%
+ }%
+ }%
+ }%
+ }%
+ {%
+ \@datagidx at parse@location
+ }%
+}
+\newcommand*{\@datagidx at parse@location}{%
+ \@dtl at sequentialtrue
+ \ifdefequal{\datagidx at prev@format}{\datagidx at current@format}%
+ {%
+ \ifdefequal{\datagidx at prev@locationformat}{\datagidx at current@locationformat}%
+ {%
+ \ifdefequal{\datagidx at prev@prefix}{\datagidx at current@prefix}%
+ {%
+ }%
+ {%
+ \@dtl at sequentialfalse
+ }%
+ }%
+ {%
+ \@dtl at sequentialfalse
+ }%
+ }%
+ {%
+ \@dtl at sequentialfalse
+ }%
+ \if at dtl@sequential
+ \ifnumequal{\datagidx at prev@location+1}{\datagidx at current@location}%
+ {%
+ \ifdefequal
+ \datagidx at current@locationformat
+ \datagidx at prev@locationformat
+ {%
+ \@dtl at sequentialtrue
+ }%
+ {%
+ \@dtl at sequentialfalse
+ }%
+ }%
+ {%
+ \@dtl at sequentialfalse
+ }%
+ \fi
+ \if at dtl@sequential
+ \ifnumequal{\datagidx at location@start}{-1}%
+ {%
+ \let\datagidx at location@start\datagidx at prev@location
+ \let\datagidx at location@startval\datagidx at prev@locationstring
+ \let\datagidx at location@format\datagidx at prev@format
+ \let\datagidx at location@target\datagidx at prev@target
+ }%
+ {%
+ }%
+ \else
+ \do at prevlocation
+ \fi
+ \let\datagidx at prev@location\datagidx at current@location
+ \let\datagidx at prev@format\datagidx at current@format
+ \let\datagidx at prev@prefix\datagidx at current@prefix
+ \let\datagidx at prev@locationformat\datagidx at current@locationformat
+ \let\datagidx at prev@locationstring\datagidx at current@locationstring
+ \let\datagidx at prev@target\datagidx at current@target
+}
+\newcommand*{\DTLgidxLocationSep}{, }
+\newcommand*{\DTLgidxLocationF}[2]{%
+ #1\DTLgidxLocationSep#2%
+}
+\newcommand*{\DTLgidxLocationFF}[2]{%
+ #1--#2%
+}
+\newcommand*{\do at prevlocation}{%
+ \ifnumequal{\datagidx at location@start}{-1}%
+ {%
+ \ifdefempty{\datagidx at prev@locationstring}%
+ {}%
+ {%
+ \datagidx at location@sep
+ \datagidxlink{\datagidx at prev@target}%
+ {%
+ \datagidx at formatlocation
+ \datagidx at prev@format\datagidx at prev@locationstring
+ }%
+ \def\datagidx at location@sep{\DTLgidxLocationSep}%
+ }%
+ }%
+ {%
+ \datagidx at location@sep
+ \do at locrange
+ \def\datagidx at location@sep{\DTLgidxLocationSep}%
+ \def\datagidx at location@start{-1}%
+ }%
+}
+\newcommand*{\do at locrange}{%
+ \ifnumgreater{\datagidx at prev@location}{\datagidx at location@start+1}%
+ {%
+ \DTLgidxLocationFF
+ {%
+ \datagidxlink{\datagidx at location@target}%
+ {%
+ \datagidx at formatlocation
+ \datagidx at location@format\datagidx at location@startval
+ }%
+ }%
+ {%
+ \datagidxlink{\datagidx at prev@target}%
+ {%
+ \datagidx at formatlocation
+ \datagidx at prev@format\datagidx at prev@locationstring
+ }%
+ }%
+ }%
+ {%
+ \DTLgidxLocationF
+ {%
+ \datagidxlink{\datagidx at location@target}%
+ {%
+ \datagidx at formatlocation
+ \datagidx at location@format\datagidx at location@startval
+ }%
+ }%
+ {%
+ \datagidxlink{\datagidx at prev@target}%
+ {%
+ \datagidx at formatlocation
+ \datagidx at prev@format\datagidx at prev@locationstring
+ }%
+ }%
+ }%
+}
+\newcommand*{\datagidx at defaultdatabase}{}
+\newcommand*{\DTLgidxSetDefaultDB}[1]{%
+ \renewcommand*{\datagidx at defaultdatabase}{#1}%
+}
+\define at key{newgloss}{heading}{\renewcommand*{\datagidx at heading}{#1}}
+\define at key{newgloss}{postheading}{%
+ \renewcommand*{\datagidx at postheading}{#1}%
+}
+\newif\ifdatagidxbalance
+\datagidxbalancetrue
+\define at choicekey{newgloss}{balance}[\val\nr]{true,false}[true]{%
+ \ifcase\nr\relax
+ \renewcommand*{\datagidx at multicols}{multicols}%
+ \datagidxbalancetrue
+ \or
+ \renewcommand*{\datagidx at multicols}{multicols*}%
+ \datagidxbalancefalse
+ \fi
+}
+\define at key{newgloss}{sort}{\renewcommand*{\datagidx at sort}{#1}}
+\newcommand*{\datagidx at style}{index}
+\define at key{newgloss}{style}{\renewcommand*{\datagidx at style}{#1}}
+\newif\ifdatagidxshowgroups
+\newcommand*{\datagidx at showgroups}{false}
+\define at choicekey{newgloss}{showgroups}{true,false}[true]%
+{%
+ \renewcommand{\datagidx at showgroups}{#1}%
+}%
+\ifundef\newgidx
+{%
+ \newcommand*{\newgidx}{\datagidx at newgidx}
+}%
+{}
+\@onlypreamble\newgidx
+\newcommand*{\datagidx at highopt@newgidx}[3][]{%
+ \edef\datagidx at indexfilename{\datagidxhighoptfilename{#2}}%
+ \IfFileExists{\datagidx at indexfilename}%
+ {%
+ \input{\datagidx at indexfilename}%
+ \bgroup
+ \setkeys{newgloss}{#1}%
+ \datagidx at newgidx@update{#2}{#3}%
+ \egroup
+ }%
+ {%
+ \datagidx at newgidx[#1]{#2}{#3}%
+ }%
+}
+\newcommand*{\loadgidx}[3][]{%
+ \input{#2}%
+ \bgroup
+ \setkeys{newgloss}{sort={},#1}%
+ \expandafter\datagidx at newgidx@update\expandafter
+ {\dtllastloadeddb}{#3}%
+ \egroup
+ \edef\datagidx at defaultdatabase{\dtllastloadeddb}%
+ \dtlforcolumn{\Label}{\dtllastloadeddb}{Label}%
+ {%
+ \csxdef{datagidxentry@\Label}{\dtllastloadeddb}%
+ }%
+}
+\@onlypreamble\loadgidx
+\newcommand*{\datagidx at newgidx}[3][]{%
+\bgroup
+ \setkeys{newgloss}{#1}%
+ \ifdefempty{\datagidx at defaultdatabase}%
+ {\xdef\datagidx at defaultdatabase{#2}}%
+ {}%
+ \DTLgnewdb{#2}%
+ \DTLaddcolumn{#2}{Label}%
+ \DTLaddcolumn{#2}{Location}%
+ \DTLaddcolumn{#2}{CurrentLocation}%
+ \DTLaddcolumn{#2}{FirstId}%
+ \DTLaddcolumn{#2}{Name}%
+ \DTLaddcolumn{#2}{Text}%
+ \DTLaddcolumn{#2}{Parent}%
+ \DTLaddcolumn{#2}{Child}%
+ \DTLaddcolumn{#2}{Description}%
+ \DTLaddcolumn{#2}{Used}%
+ \DTLaddcolumn{#2}{Symbol}%
+ \DTLaddcolumn{#2}{Long}%
+ \DTLaddcolumn{#2}{Short}%
+ \DTLaddcolumn{#2}{See}%
+ \DTLaddcolumn{#2}{SeeAlso}%
+ \datagidx at newgidx@update{#2}{#3}%
+\egroup
+}
+\newcommand*{\datagidx at newgidx@update}[2]{%
+ \DTLnewrow{datagidx}%
+ \DTLnewdbentry{datagidx}{Glossary}{#1}%
+ \DTLnewdbentry{datagidx}{Title}{#2}%
+ {%
+ \dtlexpandnewvalue
+ \DTLnewdbentry{datagidx}{Heading}{\expandonce\datagidx at heading}%
+ \DTLnewdbentry{datagidx}{PostHeading}{\expandonce\datagidx at postheading}%
+ \DTLnewdbentry{datagidx}{MultiCols}{\expandonce\datagidx at multicols}%
+ \DTLnewdbentry{datagidx}{Sort}{\expandonce\datagidx at sort}%
+ \DTLnewdbentry{datagidx}{Style}{\expandonce\datagidx at style}%
+ \DTLnewdbentry{datagidx}{ShowGroups}{\expandonce\datagidx at showgroups}%
+ }%
+}
+\newcommand*{\newterm at label}{}
+\define at key{newterm}{label}{\renewcommand*{\newterm at label}{#1}}
+\newcommand*{\newterm at parent}{}
+\define at key{newterm}{parent}{\renewcommand*{\newterm at parent}{#1}}
+\newcommand*{\newterm at text}{}
+\define at key{newterm}{text}{\renewcommand*{\newterm at text}{#1}}
+\newcommand*{\newterm at description}{}
+\define at key{newterm}{description}{%
+ \renewcommand*{\newterm at description}{#1}%
+}
+\define at key{newterm}{plural}{\def\newterm at plural{#1}}
+\newcommand*{\newterm at sort}{}
+\define at key{newterm}{sort}{\renewcommand*{\newterm at sort}{#1}}
+\newcommand*{\newterm at symbol}{}
+\define at key{newterm}{symbol}{\renewcommand*{\newterm at symbol}{#1}}
+\newcommand*{\newterm at database}{}
+\define at key{newterm}{database}{\renewcommand*{\newterm at database}{#1}}
+\newcommand*{\newterm at long}{}
+\define at key{newterm}{long}{%
+ \renewcommand*{\newterm at long}{#1}%
+ \def\newterm at longplural{#1s}%
+}
+\newcommand*{\newterm at short}{}
+\define at key{newterm}{short}{%
+ \renewcommand*{\newterm at short}{#1}%
+ \def\newterm at shortplural{#1s}%
+}
+\define at key{newterm}{longplural}{%
+ \def\newterm at longplural{#1}%
+}
+\define at key{newterm}{shortplural}{%
+ \def\newterm at shortplural{#1}%
+}
+\newcommand*{\newterm at see}{}
+\define at key{newterm}{see}{%
+ \renewcommand*{\newterm at see}{#1}%
+}
+\newcommand*{\newterm at seealso}{}
+\define at key{newterm}{seealso}{%
+ \renewcommand*{\newterm at seealso}{#1}%
+}
+\newcommand*{\newterm at defaultshook}{}
+\newcommand*{\newterm at extrafields}{}
+\newcommand*{\DTLgidxAssignList}{%
+ \Name=Name,\Description=Description,\Used=Used,\Symbol=Symbol,%
+ \Long=Long,\Short=Short,\LongPlural=LongPlural,\ShortPlural=ShortPlural,%
+ \Location=Location,\See=See,\SeeAlso=SeeAlso,%
+ \Text=Text,\Plural=Plural,\CurrentLocation=CurrentLocation,%
+ \Label=Label,\Parent=Parent,\Children=Child,\FirstId=FirstId,\Sort=Sort%
+}
+\newcommand*{\datagidxtermkeys}{%
+ name,description,symbol,long,short,see,seealso,text,plural,%
+ label,parent,sort%
+}
+\newcommand*\@datagidx at fieldkey@Name{name}%
+\newcommand*\@datagidx at fieldkey@Description{description}%
+\newcommand*\@datagidx at fieldkey@Symbol{symbol}%
+\newcommand*\@datagidx at fieldkey@Long{long}%
+\newcommand*\@datagidx at fieldkey@Short{short}%
+\newcommand*\@datagidx at fieldkey@See{see}%
+\newcommand*\@datagidx at fieldkey@SeeAlso{seealso}%
+\newcommand*\@datagidx at fieldkey@Text{text}%
+\newcommand*\@datagidx at fieldkey@Plural{plural}%
+\newcommand*\@datagidx at fieldkey@Label{label}%
+\newcommand*\@datagidx at fieldkey@Parent{parent}%
+\newcommand*\@datagidx at fieldkey@Sort{sort}%
+\newcommand*{\newtermaddfield}[4][]{%
+ \ifstrempty{#1}%
+ {%
+ \dtlforcolumn{\datagidx at thisidx}{datagidx}{Glossary}%
+ {%
+ \DTLaddcolumn{\datagidx at thisidx}{#2}%
+ }%
+ }%
+ {%
+ \@for\datagidx at thisidx:=#1\do
+ {%
+ \DTLaddcolumn{\datagidx at thisidx}{#2}%
+ }%
+ }%
+ \expandafter\gdef\csname newterm@#3\endcsname{}%
+ \define at key{newterm}{#3}%
+ {%
+ \expandafter\def\csname newterm@#3\endcsname{##1}%
+ }%
+ \gappto\newterm at defaultshook
+ {%
+ \expandafter\protected at edef\csname newterm@#3\endcsname{#4}%
+ }%
+ \gappto\newterm at extrafields
+ {%
+ \protected at edef\datagidx at value{\csname newterm@#3\endcsname}%
+ \DTLnewdbentry{\newterm at database}{#2}{\expandonce\datagidx at value}%
+ }%
+ \xappto\DTLgidxAssignList
+ {%
+ ,\expandafter\noexpand\csname#2\endcsname=#2%
+ }%
+ \xappto\datagidxtermkeys{,#3}%
+ \expandafter\xdef\csname @datagidx at fieldkey@#2\endcsname{#3}%
+ \xappto\datagidxgetchildfields
+ {%
+ \noexpand\dtlgetentryfromcurrentrow
+ {\expandafter\noexpand\csname#2\endcsname}%
+ {\noexpand\dtlcolumnindex{\noexpand\DTLgidxCurrentdb}{#2}}%
+ }%
+}
+\newcommand*{\newtermlabelhook}{}
+\newcommand*{\DTLgidxNoFormat}[1]{#1}
+\newcommand*{\DTLgidxGobble}[1]{}
+\newcommand*{\DTLgidxStripBackslash}[1]{%
+ \expandafter\@gobble\string#1%
+}
+\newcommand*{\DTLgidxName}[2]{%
+ #1\space #2%
+}
+\newcommand*{\DTLgidxNameNum}[1]{\@Roman{#1}}
+\newcommand*{\datagidx at namenum}[1]{\two at digits{#1}}
+\newcommand*{\DTLgidxPlace}[2]{%
+ #2%
+}
+\newcommand*{\DTLgidxSubject}[2]{%
+ #2%
+}
+\newcommand*{\DTLgidxOffice}[2]{%
+ #2 (#1)%
+}
+\newcommand*{\DTLgidxIgnore}[1]{#1}
+\newcommand*{\DTLgidxMac}[1]{#1}
+\newcommand*{\datagidx at mac}[1]{Mac}
+\newcommand*{\DTLgidxSaint}[1]{#1}
+\newcommand*{\datagidx at saint}[1]{Saint}
+\newcommand*{\DTLgidxRank}[2]{#1~#2}
+\newcommand*{\datagidx at rank}[2]{#2.}
+\newcommand*{\DTLgidxParticle}[2]{#1~#2}
+\newcommand*{\datagidx at particle}[2]{#2.}
+\newcommand*{\datagidx at bothoftwo}[2]{#1#2}
+\newcommand*{\datagidx at person}[2]{#2\noexpand\datatoolpersoncomma #1}
+\newcommand*{\datagidx at place}[2]{#2\noexpand\datatoolplacecomma #1}
+\newcommand*{\datagidx at subject}[2]{#2\noexpand\datatoolsubjectcomma #1}
+\newcommand*{\datagidx at paren}[1]{\noexpand\datatoolparenstart #1}
+\newcommand*{\datagidx at invert}[2]{#2, #1}
+\newcommand*{\DTLgidxParen}[1]{\space(#1)}
+\newcommand*{\datagidxwordifygreek}{%
+ \def\alpha{alpha}%
+ \def\beta{beta}%
+ \def\gamma{gamma}%
+ \def\delta{delta}%
+ \def\epsilon{epsilon}%
+ \def\varepsilon{epsilon}%
+ \def\zeta{zeta}%
+ \def\eta{eta}%
+ \def\theta{theta}%
+ \def\vartheta{theta}%
+ \def\iota{iota}%
+ \def\kappa{kappa}%
+ \def\lambda{lambda}%
+ \def\mu{mu}%
+ \def\nu{nu}%
+ \def\xi{xi}%
+ \def\pi{pi}%
+ \def\varpi{pi}%
+ \def\rho{rho}%
+ \def\varrho{rho}%
+ \def\sigma{sigma}%
+ \def\varsigma{sigma}%
+ \def\tau{tau}%
+ \def\upsilon{upsilon}%
+ \def\phi{phi}%
+ \def\varphi{phi}%
+ \def\chi{chi}%
+ \def\psi{psi}%
+ \def\omega{omega}%
+ \def\Gamma{Gamma}%
+ \def\Delta{Delta}%
+ \def\Theta{Theta}%
+ \def\Lambda{Lambda}%
+ \def\Xi{Xi}%
+ \def\Pi{Pi}%
+ \def\Sigma{Sigma}%
+ \def\Upsilon{Upsilon}%
+ \def\Phi{Phi}%
+ \def\Psi{Psi}%
+ \def\Omega{Omega}%
+}
+\newcommand{\datagidxextendedtoascii}{%
+ \def\AE{AE}%
+ \def\ae{ae}%
+ \def\OE{OE}%
+ \def\oe{oe}%
+ \def\AA{AA}%
+ \def\aa{aa}%
+ \def\L{L}%
+ \def\l{l}%
+ \def\O{O}%
+ \def\o{o}%
+ \def\SS{SS}%
+ \def\ss{ss}%
+ \def\th{th}%
+ \def\TH{TH}%
+ \def\dh{dh}%
+ \def\DH{DH}%
+}
+\newcommand*{\datagidxconvertchars}{%
+ \let~\space
+ \ifdef\andname
+ {%
+ \let\&\andname
+ }%
+ {%
+ \def\&{\expandafter\@gobble\string\&}%
+ }%
+ \def\_{\string_}%
+ \def\${\string$}%
+ \def\#{\expandafter\@gobble\string\#}%
+ \def\%{\expandafter\@gobble\string\%}%
+ \def\{{\expandafter\@gobble\string\{}%
+ \def\}{\expandafter\@gobble\string\}}%
+}
+\@ifl at t@r\fmtversion{2019/10/01}
+{%
+ \newcommand*{\datagidxstripaccents}{%
+ \let\add at accent@\@secondoftwo
+ \let\@text at composite@x\@secondoftwo
+ \let\@tabacckludge\@secondoftwo
+ \expandafter\def\csname \encodingdefault-cmd\endcsname##1##2##3{##3}%
+ \expandafter\def\csname OT1-cmd\endcsname##1##2##3{##3}%
+ \expandafter\def\csname T1-cmd\endcsname##1##2##3{##3}%
+ \expandafter\def\csname PD1-cmd\endcsname##1##2##3{##3}%
+ \def\IeC##1{\@gobbletwo##1}%
+ \let\UTFviii at two@octets\UTFviii at two@octets at combine
+ }%
+}
+{%
+ \newcommand*{\datagidxstripaccents}{%
+ \let\add at accent@\@secondoftwo
+ \let\@text at composite@x\@secondoftwo
+ \let\@tabacckludge\@secondoftwo
+ \expandafter\def\csname \encodingdefault-cmd\endcsname##1##2##3{##3}%
+ \expandafter\def\csname OT1-cmd\endcsname##1##2##3{##3}%
+ \expandafter\def\csname T1-cmd\endcsname##1##2##3{##3}%
+ \expandafter\def\csname PD1-cmd\endcsname##1##2##3{##3}%
+ \def\IeC##1{\@gobbletwo##1}%
+ }%
+}
+\providecommand{\newterm}{\datagidx at newterm}
+\@onlypreamble\newterm
+\newcommand{\datagidx at setfieldvalues}[2]{%
+ \def\newterm at name{#2}%
+ \renewcommand*\newterm at label{#2}%
+ \renewcommand*\newterm at text{#2}%
+ \undef\newterm at plural
+ \renewcommand*{\newterm at description}{}%
+ \renewcommand*{\newterm at sort}{#2}%
+ \renewcommand*{\newterm at symbol}{}%
+ \let\newterm at database\datagidx at defaultdatabase
+ \renewcommand*{\newterm at short}{#2}%
+ \undef\newterm at shortplural
+ \renewcommand*{\newterm at long}{#2}%
+ \undef\newterm at longplural
+ \renewcommand*{\newterm at see}{}%
+ \renewcommand*{\newterm at seealso}{}%
+ \renewcommand*{\newterm at parent}{}%
+ \let\datagidx at orgfield\field
+ \def\field##1{\expandafter\noexpand\csname newterm@##1\endcsname}%
+ \newterm at defaultshook
+ \let\field\datagidx at orgfield
+ \setkeys{newterm}{#1}%
+ \bgroup
+ \let\glsadd\@gobble
+ \let\MakeUppercase\DTLgidxNoFormat
+ \let\MakeTextUppercase\DTLgidxNoFormat
+ \let\MakeLowercase\DTLgidxNoFormat
+ \let\MakeTextLowercase\DTLgidxNoFormat
+ \let\acronymfont\DTLgidxNoFormat
+ \let\textrm\DTLgidxNoFormat
+ \let\texttt\DTLgidxNoFormat
+ \let\textsf\DTLgidxNoFormat
+ \let\textsc\DTLgidxNoFormat
+ \let\textbf\DTLgidxNoFormat
+ \let\textmd\DTLgidxNoFormat
+ \let\textit\DTLgidxNoFormat
+ \let\textsl\DTLgidxNoFormat
+ \let\emph\DTLgidxNoFormat
+ \let\textsuperscript\DTLgidxNoFormat
+ \datagidxconvertchars
+ \let\ensuremath\DTLgidxNoFormat
+ \let\DTLgidxParen\@gobble
+ \let\DTLgidxName\@secondoftwo
+ \let\DTLgidxPlace\datagidx at invert
+ \let\DTLgidxSubject\datagidx at invert
+ \let\DTLgidxOffice\@secondoftwo
+ \let\DTLgidxParticle\datagidx at bothoftwo
+ \datagidxwordifygreek
+ \datagidxstripaccents
+ \datagidxextendedtoascii
+ \newtermlabelhook
+ \protected at xdef\newterm at label{\newterm at label}%
+ \let\DTLgidxName\datagidx at person
+ \let\DTLgidxPlace\datagidx at place
+ \let\DTLgidxSubject\datagidx at subject
+ \let\DTLgidxOffice\datagidx at person
+ \let\DTLgidxParen\datagidx at paren
+ \let\DTLgidxMac\datagidx at mac
+ \let\DTLgidxSaint\datagidx at saint
+ \let\DTLgidxIgnore\@gobble
+ \let\DTLgidxRank\datagidx at rank
+ \let\DTLgidxParticle\datagidx at particle
+ \let\DTLgidxNameNum\datagidx at namenum
+ \protected at xdef\newterm at sort{\newterm at sort}%
+ \egroup
+}
+\newcommand*{\datagidx at add@term}[1]{%
+ \global\cslet{datagidxentry@\newterm at label}{\newterm at database}%
+ \DTLnewrow{\newterm at database}%
+ \DTLnewdbentry{\newterm at database}{Name}{#1}%
+ \DTLnewdbentry{\newterm at database}{Used}{0}%
+ {%
+ \dtlexpandnewvalue
+ \DTLnewdbentry{\newterm at database}{Text}{\expandonce\newterm at text}%
+ \DTLnewdbentry{\newterm at database}{Description}{\expandonce\newterm at description}%
+ \DTLnewdbentry{\newterm at database}{Label}{\expandonce\newterm at label}%
+ \DTLnewdbentry{\newterm at database}{Sort}{\expandonce\newterm at sort}%
+ \DTLnewdbentry{\newterm at database}{Symbol}{\expandonce\newterm at symbol}%
+ \DTLnewdbentry{\newterm at database}{Short}{\expandonce\newterm at short}%
+ \DTLnewdbentry{\newterm at database}{Long}{\expandonce\newterm at long}%
+ \ifundef\newterm at plural
+ {%
+ \DTLnewdbentry{\newterm at database}{Plural}{\expandonce\newterm at text s}%
+ }%
+ {%
+ \DTLnewdbentry{\newterm at database}{Plural}{\expandonce\newterm at plural}%
+ }%
+ \ifundef\newterm at shortplural
+ {%
+ \DTLnewdbentry{\newterm at database}{ShortPlural}{\expandonce\newterm at short s}%
+ }%
+ {%
+ \DTLnewdbentry{\newterm at database}{ShortPlural}{\expandonce\newterm at shortplural}%
+ }%
+ \ifundef\newterm at longplural
+ {%
+ \DTLnewdbentry{\newterm at database}{LongPlural}{\expandonce\newterm at long s}%
+ }%
+ {%
+ \DTLnewdbentry{\newterm at database}{LongPlural}{\expandonce\newterm at longplural}%
+ }%
+ \ifdefempty{\newterm at see}%
+ {}%
+ {\DTLnewdbentry{\newterm at database}{See}{\newterm at see}}%
+ \ifdefempty{\newterm at seealso}%
+ {}%
+ {\DTLnewdbentry{\newterm at database}{SeeAlso}{\newterm at seealso}}%
+ \newterm at extrafields
+ \ifdefempty{\newterm at parent}%
+ {}%
+ {%
+ \iftermexists{\newterm at parent}%
+ {%
+ \edef\newterm at parentdatabase{\csuse{datagidxentry@\newterm at parent}}%
+ \ifthenelse{\equal{\newterm at parentdatabase}{\newterm at database}}
+ {%
+ \DTLnewdbentry{\newterm at database}{Parent}{\newterm at parent}%
+ \datagidx at addchild{\newterm at database}{\newterm at parent}{\newterm at label}%
+ }%
+ {%
+ \PackageError{datagidx}%
+ {%
+ Parent entry `\newterm at parent' must belong to the
+ same database as child entry `\newterm at label'%
+ }%
+ {%
+ Parent entry is in database
+ `\newterm at parentdatabase' and child entry is in
+ database `\newterm at database'%
+ }%
+ }%
+ }%
+ {%
+ \PackageError{datagidx}%
+ {%
+ Can't assign parent to `\newterm at label':
+ `\newterm at parent' doesn't exist%
+ }%
+ {}%
+ }%
+ }%
+ }%
+ \global\let\datagidxlastlabel\newterm at label
+ \postnewtermhook
+}%
+\newcommand*{\postnewtermhook}{}
+\newcommand*{\newtermfield}[1]{\csuse{newterm@#1}}
+\newcommand{\ifnewtermfield}[3]{%
+ \ifcsdef{newterm@#1}
+ {%
+ \ifcsempty{newterm@#1}{#3}{#2}%
+ }%
+ {%
+ #3%
+ }%
+}
+\newcommand{\datagidx at newterm}[2][]{%
+ \datagidx at setfieldvalues{#1}{#2}%
+ \DTLifdbexists{\newterm at database}%
+ {%
+ \iftermexists{\newterm at label}%
+ {%
+ \PackageError{datagidx}{Term `\newterm at label' already
+ exists in database `\newterm at database'}{}%
+ }%
+ {%
+ \datagidx at add@term{#2}%
+ }%
+ }%
+ {%
+ \PackageError{datagidx}%
+ {Glossary/index data base `\newterm at database' doesn't exist}%
+ {%
+ You must define the glossary/index data base before you can
+ add any terms to it.%
+ }%
+ }%
+}
+\newcommand{\datagidx at highopt@newterm}[2][]{%
+ \datagidx at setfieldvalues{#1}{#2}%
+ \DTLifdbexists{\newterm at database}%
+ {%
+ \edef\dtl at dogetrow{%
+ \noexpand\dtlgetrowindex
+ {\noexpand\dtl at rowidx}%
+ {\newterm at database}%
+ {%
+ \dtlcolumnindex{\newterm at database}{Label}%
+ }%
+ {\newterm at label}}%
+ \dtl at dogetrow
+ \ifx\dtl at rowidx\dtlnovalue
+ \datagidx at add@term{#2}%
+ \csdef{datagidx at do@highopt at sort@\newterm at database}{\datagidx at sort}%
+ \else
+ \global\cslet{datagidxentry@\newterm at label}{\newterm at database}%
+ \global\let\datagidxlastlabel\newterm at label
+ \fi
+ }%
+ {%
+ \PackageError{datagidx}%
+ {Glossary/index data base `\newterm at database' doesn't exist}%
+ {%
+ You must define the glossary/index data base before you can
+ add any terms to it.%
+ }%
+ }%
+}
+\newcommand*{\datagidx at addchild}[3]{%
+ \edef\dtl at dogetrow{%
+ \noexpand\dtlgetrowforvalue
+ {#1}%
+ {%
+ \dtlcolumnindex{\newterm at database}{Label}%
+ }%
+ {#2}}%
+ \dtl at dogetrow
+ \dtlgetentryfromcurrentrow
+ {\datagidx at child}%
+ {\dtlcolumnindex{#1}{Child}}%
+ \ifx\datagidx at child\dtlnovalue
+ \edef\datagidx at child{#3}%
+ \else
+ \edef\datagidx at child{\datagidx at child,#3}%
+ \fi
+ \edef\do at update{\noexpand\dtlupdateentryincurrentrow
+ {Child}{\datagidx at child}}%
+ \do at update
+ \dtlrecombine
+}
+\newcommand{\newacro}[3][]{%
+ \newterm
+ [%
+ description={\capitalisewords{#3}},%
+ short={\acronymfont{#2}},%
+ long={#3},%
+ text={\DTLgidxAcrStyle{#3}{\acronymfont{#2}}},%
+ plural={\DTLgidxAcrStyle{#3s}{\acronymfont{#2s}}},%
+ sort={#2},%
+ #1%
+ ]%
+ {\MakeTextUppercase{#2}}%
+}
+\newcommand*{\acronymfont}[1]{#1}
+\newcommand*{\DTLgidxAcrStyle}[2]{#1 (#2)}
+\newcommand{\iftermexists}[3]{%
+ \ifcsdef{datagidxentry@#1}{#2}{#3}%
+}
+\newcommand*{\datagidxdb}[1]{%
+ \csuse{datagidxentry@#1}%
+}
+\newcommand*{\ifentryused}[3]{%
+ \letcs{\newterm at database}{datagidxentry@#1}%
+ \edef\dtl at dogetrow{%
+ \noexpand\dtlgetrowforvalue
+ {\newterm at database}%
+ {%
+ \dtlcolumnindex{\newterm at database}{Label}%
+ }%
+ {#1}}%
+ \dtl at dogetrow
+ \dtlgetentryfromcurrentrow
+ {\datagidx at value}%
+ {\dtlcolumnindex{\newterm at database}{Used}}%
+ \ifnum\datagidx at value=1\relax
+ #2%
+ \else
+ #3%
+ \fi
+}
+\newcommand*{\glsreset}[1]{%
+ \letcs{\newterm at database}{datagidxentry@#1}%
+ \edef\do at getrow{%
+ \noexpand\dtlgetrowforvalue
+ {\newterm at database}%
+ {\dtlcolumnindex{\newterm at database}{Label}}%
+ {#1}%
+ }%
+ \do at getrow
+ \dtlreplaceentryincurrentrow
+ {0}{\dtlcolumnindex{\newterm at database}{Used}}%
+ \dtlrecombine
+}
+\newcommand*{\glsunset}[1]{%
+ \letcs{\newterm at database}{datagidxentry@#1}%
+ \edef\do at getrow{%
+ \noexpand\dtlgetrowforvalue
+ {\newterm at database}%
+ {\dtlcolumnindex{\newterm at database}{Label}}%
+ {#1}%
+ }%
+ \do at getrow
+ \dtlreplaceentryincurrentrow
+ {1}{\dtlcolumnindex{\newterm at database}{Used}}%
+ \dtlrecombine
+}
+\newcommand*{\glsresetall}[1]{%
+ \def\datagidx at list{}%
+ \dtlforcolumn{\datagidx at label}{#1}{Label}%
+ {%
+ \ifdefempty\datagidx at list
+ {%
+ \let\datagidx at list\datagidx at label
+ }%
+ {%
+ \eappto\datagidx at list{,\datagidx at label}%
+ }%
+ }%
+ \@for\datagidx at thislabel:=\datagidx at list\do
+ {%
+ \glsreset{\datagidx at thislabel}%
+ }%
+}
+\newcommand*{\glsunsetall}[1]{%
+ \def\datagidx at list{}%
+ \dtlforcolumn{\datagidx at label}{#1}{Label}%
+ {%
+ \ifdefempty\datagidx at list
+ {%
+ \let\datagidx at list\datagidx at label
+ }%
+ {%
+ \eappto\datagidx at list{,\datagidx at label}%
+ }%
+ }%
+ \@for\datagidx at thislabel:=\datagidx at list\do
+ {%
+ \glsunset{\datagidx at thislabel}%
+ }%
+}
+\newcount\datagidx at anchorcount
+\newcommand*{\datagidx at formatanchor}[1]{%
+ \ifnum#1<10000
+ 0%
+ \ifnum#1<1000
+ 0%
+ \ifnum#1<100
+ 0%
+ \ifnum#1<10
+ 0%
+ \fi
+ \fi
+ \fi
+ \fi
+ \number#1%
+}
+\newcommand*{\@datagidx at escloc}[2]{%
+ \expandafter\string\csname#1\endcsname{\noexpand\number#2}%
+}
+\newcommand*{\datagidx at escapelocation}{%
+ \def\@arabic{\@datagidx at escloc{@arabic}}%
+ \def\@roman{\@datagidx at escloc{@roman}}%
+ \def\@Roman{\@datagidx at escloc{@Roman}}%
+ \def\@alph{\@datagidx at escloc{@alph}}%
+ \def\@Alph{\@datagidx at escloc{@Alph}}%
+}
+\newcommand*{\datagidx at escapelocationformat}{%
+ \def\@arabic##1{arabic}%
+ \def\@roman##1{roman}%
+ \def\@Roman##1{Roman}%
+ \def\@alph##1{alph}%
+ \def\@Alph##1{Alph}%
+}
+\newcommand*{\datagidx at clearlocationformat}{%
+ \let\@arabic\@firstofone
+ \let\@roman\@firstofone
+ \let\@Roman\@firstofone
+ \let\@alph\@firstofone
+ \let\@Alph\@firstofone
+}
+\newcommand*{\DTLgidxAddLocationType}[1]{%
+ \gappto\datagidx at escapelocation{%
+ \expandafter\def\csname#1\endcsname{\@datagidx at escloc{#1}}%
+ }%
+ \gappto\datagidx at escapelocationformat{%
+ \expandafter\def\csname#1\endcsname##1{#1}%
+ }%
+ \gappto\datagidx at clearlocationformat{%
+ \expandafter\let\csname#1\endcsname\@firstofone
+ }%
+}
+\@onlypreamble\DTLgidxAddLocationType
+\newcommand*{\datagidx at target}[4]{%
+ \global\advance\datagidx at anchorcount by 1\relax
+ \edef\@datagidx at target{datagidx.\datagidx at formatanchor\datagidx at anchorcount}%
+ \ifstrempty{#3}
+ {%
+ \datagidx at write@usedentry{#1}{}%
+ }%
+ {%
+ \bgroup
+ \datagidx at escapelocation
+ \def\@arabic{\noexpand\@arabic}%
+ \def\@roman{\noexpand\@roman}%
+ \def\@Roman{\noexpand\@Roman}%
+ \def\@alph{\noexpand\@alph}%
+ \def\@Alph{\noexpand\@Alph}%
+ \protected at edef\@datagidx at dowriteaux{%
+ \noexpand\datagidx at write@usedentry{#1}%
+ {[#2]{#3}{\@datagidx at target}}%
+ }%
+ \@datagidx at dowriteaux
+ \egroup
+ }%
+ \ifdef\hypertarget
+ {%
+ \datagidxshowifdraft
+ {%
+ [\@datagidx at target]%
+ \discretionary{}{}{}%
+ }%
+ \bgroup
+ \let\glsadd\@gobble
+ \settoheight\dimen@{#4}%
+ \raisebox{\dimen@}%
+ {%
+ \datagidxtarget{\@datagidx at target}{}%
+ }%
+ \egroup
+ }%
+ {%
+ }%
+ \datagidxshowifdraft{[#1]\discretionary{}{}{}}%
+ #4%
+}
+\DeclareRobustCommand*{\glsdispentry}[2]{%
+ \DTLgidxFetchEntry{\datagidx at dispentryval}{#1}{#2}%
+ \datagidx at dispentryval
+}
+\DeclareRobustCommand*{\Glsdispentry}[2]{%
+ \DTLgidxFetchEntry{\datagidx at dispentryval}{#1}{#2}%
+ \xmakefirstuc\datagidx at dispentryval
+}
+\newcommand*{\DTLgidxFetchEntry}[3]{%
+ \ifcsdef{datagidxentry@#2}%
+ {%
+ \letcs{\newterm at database}{datagidxentry@#2}%
+ \edef\do at getrow{%
+ \noexpand\dtlgetrowforvalue
+ {\newterm at database}%
+ {\dtlcolumnindex{\newterm at database}{Label}}%
+ {#2}%
+ }%
+ \do at getrow
+ \dtlgetentryfromcurrentrow
+ {#1}%
+ {\dtlcolumnindex{\newterm at database}{#3}}%
+ }%
+ {%
+ \PackageError{datagidx}{No term `#2' defined}{}%
+ }%
+}
+\newcommand*{\datagidx at parse@formatlabel}[1]{%
+ \datagidx at parse@format at label@#1\@endparse at formatlabel@
+}
+\newcommand*\datagidx at parse@format at label@{%
+ \@ifnextchar[{\datagidx at parse@formatlabel@}{\datagidx at parse@formatlabel@[]}%
+}
+\def\datagidx at parse@formatlabel@[#1]#2\@endparse at formatlabel@{%
+ \def\datagidx at format{#1}%
+ \def\datagidx at label{#2}%
+}
+\newcommand*{\@datagidx at use@entry}[1]{%
+ \ifcsundef{datagidxentry@\datagidx at label}
+ {%
+ \PackageError{datagidx}{Entry `\datagidx at label' doesn't exist}{}%
+ }%
+ {%
+ \letcs{\newterm at database}{datagidxentry@\datagidx at label}%
+ \edef\do at getrow{%
+ \noexpand\dtlgetrowforvalue
+ {\newterm at database}%
+ {\dtlcolumnindex{\newterm at database}{Label}}%
+ {\datagidx at label}%
+ }%
+ \do at getrow
+ \dtlgetentryfromcurrentrow
+ {\datagidx at id}%
+ {\dtlcolumnindex{\newterm at database}{FirstId}}%
+ \DTLifnull\datagidx at id
+ {%
+ \count@=\datagidx at anchorcount\relax
+ \advance\count@ by 1\relax
+ \dtlappendentrytocurrentrow{FirstId}{\datagidx at formatanchor\count@}%
+ }%
+ {}%
+ \dtlreplaceentryincurrentrow
+ {1}{\dtlcolumnindex{\newterm at database}{Used}}%
+ \dtlgetentryfromcurrentrow
+ {\datagidx at parent}%
+ {\dtlcolumnindex{\newterm at database}{Parent}}%
+ \dtlrecombine
+ \datagidx at markparent{\newterm at database}{\datagidx at parent}%
+ \datagidx at target{\datagidx at label}{\datagidx at format}%
+ {\csuse{the\DTLgidxCounter}}{#1}%
+ }%
+}
+\newcommand*{\DTLgidxCounter}{page}
+\newcommand*{\datagidx at markparent}[2]{%
+ \ifx#2\dtlnovalue
+ \else
+ \datagidx at target{#2}{}{}{}%
+ \edef\do at getrow{%
+ \noexpand\dtlgetrowforvalue
+ {#1}%
+ {\dtlcolumnindex{#1}{Label}}%
+ {#2}}%
+ \do at getrow
+ \dtlgetentryfromcurrentrow
+ {\datagidx at id}%
+ {\dtlcolumnindex{\newterm at database}{FirstId}}%
+ \DTLifnull\datagidx at id
+ {%
+ \dtlappendentrytocurrentrow{FirstId}{\datagidx at formatanchor\datagidx at anchorcount}%
+ }%
+ {}%
+ \dtlgetentryfromcurrentrow
+ {\datagidx at parent}%
+ {\dtlcolumnindex{#1}{Parent}}%
+ \dtlrecombine
+ \datagidx at markparent{#1}{\datagidx at parent}%
+ \fi
+}
+\newcommand*{\datagidx at write@usedentry}[2]{%
+ \datagidx at do@highopt at update{#1}%
+ \protected at write{\@auxout}{}%
+ {%
+ \string\datagidx at usedentry{#1}{#2}%
+ }%
+ \protected at edef\datagidx at do@usedentry{%
+ \noexpand\datagidx at xusedentry{CurrentLocation}{#1}{#2}%
+ }%
+ \expandafter\ifstrequal\expandafter{\DTLgidxCounter}{page}%
+ {%
+ \expandafter\afterpage\expandafter{\datagidx at do@usedentry}%
+ }%
+ {
+ \datagidx at do@usedentry
+ }%
+}
+\newcommand*{\datagidx at xusedentry}[3]{%
+ \protected at edef\@datagidx at do@xusedentry{%
+ \noexpand\datagidx at usedentry[#1]{#2}{#3}%
+ }%
+ \@datagidx at do@xusedentry
+}
+\newcommand*{\datagidx at usedentry}[3][Location]{%
+ \ifcsundef{datagidxentry@#2}%
+ {%
+ \PackageWarning{datagidx}{No term `#2' defined. Ignoring}%
+ }%
+ {%
+ \letcs{\newterm at database}{datagidxentry@#2}%
+ \edef\do at getrow{%
+ \noexpand\dtlgetrowforvalue
+ {\newterm at database}%
+ {\dtlcolumnindex{\newterm at database}{Label}}%
+ {#2}%
+ }%
+ \do at getrow
+ \dtlgetentryfromcurrentrow
+ {\datagidx at loc}%
+ {\dtlcolumnindex{\newterm at database}{#1}}%
+ \ifx\datagidx at loc\dtlnovalue
+ \def\datagidx at loc{#3}%
+ \dtlappendentrytocurrentrow{#1}{\expandonce\datagidx at loc}%
+ \else
+ \ifdefempty{\datagidx at loc}%
+ {%
+ \def\datagidx at loc{#3}%
+ }%
+ {%
+ \ifstrempty{#3}%
+ {}%
+ {%
+ \appto\datagidx at loc{,#3}%
+ }%
+ }%
+ \expandafter\dtlreplaceentryincurrentrow\expandafter
+ {\datagidx at loc}%
+ {\dtlcolumnindex{\newterm at database}{#1}}%
+ \fi
+ \dtlrecombine
+ }%
+}
+\newcommand*{\datagidx at save@loc}[2]{%
+ \bgroup
+ \datagidx at escapelocation
+ \xdef\datagidx at tmp{#2}%
+ \egroup
+ \expandafter\xdef\csname datagidx at prev@loc@#1\endcsname{\datagidx at tmp}%
+}
+\newcommand*{\glsadd}[1]{%
+ \NoCaseChange{\@glsadd{#1}}%
+}
+\DeclareRobustCommand*{\@glsadd}[1]{%
+ \ifcsundef{datagidxentry@\datagidx at label}%
+ {%
+ \PackageError{datagidx}{Term `\datagidx at label' doesn't exist}{}%
+ }%
+ {%
+ \datagidx at parse@formatlabel{#1}%
+ \datagidx at target{\datagidx at label}{\datagidx at format}%
+ {\csuse{the\DTLgidxCounter}}{}%
+ \letcs{\newterm at database}{datagidxentry@\datagidx at label}%
+ \edef\do at getrow{%
+ \noexpand\dtlgetrowforvalue
+ {\newterm at database}%
+ {\dtlcolumnindex{\newterm at database}{Label}}%
+ {\datagidx at label}%
+ }%
+ \do at getrow
+ \dtlreplaceentryincurrentrow
+ {1}{\dtlcolumnindex{\newterm at database}{Used}}%
+ \dtlgetentryfromcurrentrow
+ {\datagidx at id}%
+ {\dtlcolumnindex{\newterm at database}{FirstId}}%
+ \DTLifnull\datagidx at id
+ {%
+ \dtlappendentrytocurrentrow{FirstId}{\datagidx at formatanchor\datagidx at anchorcount}%
+ }%
+ {}%
+ \dtlrecombine
+ }%
+}
+\newcount\datagidx at count
+\newcommand*{\glsaddall}[1]{%
+ \DTLifdbexists{#1}%
+ {%
+ \edef\datagidx at rowcount{\number\DTLrowcount{#1}}%
+ \datagidx at count=0\relax
+ \loop
+ \advance\datagidx at count by 1\relax
+ \dtlgetrow{#1}{\datagidx at count}%
+ \dtlgetentryfromcurrentrow
+ {\datagidx at label}%
+ {\dtlcolumnindex{#1}{Label}}%
+ \bgroup
+ \undef\hypertarget
+ \datagidx at target{\datagidx at label}{}{}{}%
+ \egroup
+ \dtlreplaceentryincurrentrow
+ {1}{\dtlcolumnindex{#1}{Used}}%
+ \dtlgetentryfromcurrentrow
+ {\datagidx at id}%
+ {\dtlcolumnindex{#1}{FirstId}}%
+ \DTLifnull\datagidx at id
+ {%
+ \dtlappendentrytocurrentrow{FirstId}{\datagidx at formatanchor\datagidx at anchorcount}%
+ }%
+ {}%
+ \dtlrecombine
+ \ifnum\datagidx at count<\datagidx at rowcount
+ \repeat
+ }%
+ {%
+ \PackageError{datagidx}{Database `#1' doesn't exist}{}%
+ }%
+}
+\DeclareRobustCommand*{\glslink}[2]{%
+ \datagidx at parse@formatlabel{#1}%
+ \datagidxlink{\datagidx at label}%
+ {%
+ \@datagidx at use@entry{#2}%
+ }%
+}
+\DeclareRobustCommand*{\useentry}[2]{%
+ \datagidx at parse@formatlabel{#1}%
+ \DTLgidxFetchEntry{\datagidx at value}{\datagidx at label}{#2}%
+ \datagidxlink{\datagidx at label}%
+ {%
+ \@datagidx at use@entry{\datagidx at value}%
+ }%
+}
+\DeclareRobustCommand*{\Useentry}[2]{%
+ \datagidx at parse@formatlabel{#1}%
+ \DTLgidxFetchEntry{\datagidx at value}{\datagidx at label}{#2}%
+ \datagidxlink{\datagidx at label}%
+ {%
+ \@datagidx at use@entry{\xmakefirstuc{\datagidx at value}}%
+ }%
+}
+\DeclareRobustCommand*{\USEentry}[2]{%
+ \datagidx at parse@formatlabel{#1}%
+ \DTLgidxFetchEntry{\datagidx at value}{\datagidx at label}{#2}%
+ \datagidxlink{\datagidx at label}%
+ {%
+ \@datagidx at use@entry{\MakeTextUppercase{\datagidx at value}}%
+ }%
+}
+\DeclareRobustCommand*{\useentrynl}[2]{%
+ \datagidx at parse@formatlabel{#1}%
+ \DTLgidxFetchEntry{\datagidx at value}{\datagidx at label}{#2}%
+ \@datagidx at use@entry{\datagidx at value}%
+}
+\DeclareRobustCommand*{\Useentrynl}[2]{%
+ \datagidx at parse@formatlabel{#1}%
+ \DTLgidxFetchEntry{\datagidx at value}{\datagidx at label}{#2}%
+ \@datagidx at use@entry{\xmakefirstuc{\datagidx at value}}%
+}
+\DeclareRobustCommand*{\USEentrynl}[2]{%
+ \datagidx at parse@formatlabel{#1}%
+ \DTLgidxFetchEntry{\datagidx at value}{\datagidx at label}{#2}%
+ \@datagidx at use@entry{\MakeTextUppercase{\datagidx at value}}%
+}
+\DeclareRobustCommand*{\gls}[1]{\useentry{#1}{Text}}
+\DeclareRobustCommand*{\glspl}[1]{\useentry{#1}{Plural}}
+\DeclareRobustCommand*{\Gls}[1]{\Useentry{#1}{Text}}
+\DeclareRobustCommand*{\Glspl}[1]{\Useentry{#1}{Plural}}
+\DeclareRobustCommand*{\glsnl}[1]{\useentrynl{#1}{Text}}
+\DeclareRobustCommand*{\glsplnl}[1]{\useentrynl{#1}{Plural}}
+\DeclareRobustCommand*{\Glsnl}[1]{\Useentrynl{#1}{Text}}
+\DeclareRobustCommand*{\Glsplnl}[1]{\Useentrynl{#1}{Plural}}
+\DeclareRobustCommand*{\glssym}[1]{\useentry{#1}{Symbol}}
+\DeclareRobustCommand*{\Glssym}[1]{\Useentry{#1}{Symbol}}
+\newcommand*{\DTLgidxFormatAcr}[3]{%
+ \DTLgidxAcrStyle{\glsdispentry{#1}{#2}}{\useentry{#1}{#3}}%
+}
+\newcommand*{\DTLgidxFormatAcrUC}[3]{%
+ \DTLgidxAcrStyle{\Glsdispentry{#1}{#2}}{\useentry{#1}{#3}}%
+}
+\DeclareRobustCommand*{\acr}[1]{%
+ \ifentryused{#1}%
+ {\useentry{#1}{Short}}%
+ {\DTLgidxFormatAcr{#1}{Long}{Short}}%
+}
+\DeclareRobustCommand*{\acrpl}[1]{%
+ \ifentryused{#1}%
+ {\useentry{#1}{ShortPlural}}%
+ {\DTLgidxFormatAcr{#1}{LongPlural}{ShortPlural}}%
+}
+\DeclareRobustCommand*{\Acr}[1]{%
+ \ifentryused{#1}%
+ {\Useentry{#1}{Short}}%
+ {\DTLgidxFormatAcrUC{#1}{Long}{Short}}%
+}
+\DeclareRobustCommand*{\Acrpl}[1]{%
+ \ifentryused{#1}%
+ {\Useentry{#1}{ShortPlural}}%
+ {\DTLgidxFormatAcrUC{#1}{LongPlural}{ShortPlural}}%
+}
+\define at key{printterms}{database}{\renewcommand*{\newterm at database}{#1}}
+\define at choicekey{printterms}{postdesc}[\val\nr]%
+ {none,dot}%
+ {%
+ \datagidx at setpostdesc\nr
+ }
+\define at choicekey{printterms}{prelocation}[\val\nr]%
+ {none,enspace,space,dotfill,hfill}%
+ {%
+ \datagidx at setprelocation\nr
+ }
+\define at choicekey{printterms}{location}[\val\nr]%
+ {hide,list,first}%
+ {\datagidx at setlocation\nr}
+\define at choicekey{printterms}{symboldesc}[\val\nr]%
+ {symbol,desc,(symbol) desc,desc (symbol),symbol desc,desc symbol}%
+ {\datagidx at formatsymdesc\nr}
+\define at key{printterms}{columns}%
+{%
+ \DTLgidxSetColumns{#1}%
+}
+\define at choicekey{printterms}{namecase}[\val\nr]%
+ {nochange,uc,lc,firstuc,capitalise}%
+ {%
+ \datagidx at setnamecase\nr
+ }
+\define at key{printterms}{namefont}%
+{%
+ \renewcommand*{\DTLgidxNameFont}[1]{{#1{##1}}}%
+}
+\define at key{printterms}{postname}
+{%
+ \renewcommand*{\DTLgidxPostName}{#1}%
+}
+\define at choicekey{printterms}{see}[\val\nr]%
+ {comma,brackets,dot,space,nosep,semicolon,location}%
+ {\datagidx at setsee\nr}
+\define at choicekey{printterms}{child}[\val\nr]%
+ {named,noname}%
+ {%
+ \datagidx at setchildstyle\nr
+ }
+\define at key{printterms}{symbolwidth}%
+{%
+ \setlength{\datagidxsymbolwidth}{#1}%
+}
+\define at key{printterms}{locationwidth}%
+{%
+ \setlength{\datagidxlocationwidth}{#1}%
+}
+\define at choicekey{printterms}{childsort}[\val\nr]%
+ {true,false}[true]%
+ {%
+ \datagidx at setchildsort\nr
+ }
+\define at choicekey{printterms}{showgroups}{true,false}[true]{%
+ \appto\newterm at styles{showgroups={#1},}%
+}
+\define at key{printterms}{style}{\appto\newterm at styles{style={#1},}}
+\define at key{printterms}{heading}{\appto\newterm at styles{heading={#1},}}
+\define at key{printterms}{postheading}{%
+ \appto\newterm at styles{postheading={#1},}%
+}
+\define at key{printterms}{sort}{\appto\newterm at styles{sort={#1},}}
+\define at choicekey{printterms}{balance}[\val\nr]{true,false}[true]{%
+ \ifcase\nr\relax
+ \appto\newterm at styles{balance=true,}%
+ \or
+ \appto\newterm at styles{balance=false,}%
+ \fi
+}
+\newcommand*{\printterms at condition}{\boolean{true}}
+\define at key{printterms}{condition}{\renewcommand*{\printterms at condition}{#1}}
+\newcommand{\printtermsstartpar}{\par}
+\newcommand*{\printterms at setupmulticol}{%
+ \ifdefempty\datagidx at postheading
+ {%
+ \edef\datagidx at prestart{%
+ \noexpand\datagidx at heading{\noexpand\datagidx at title}%
+ \noexpand\begin{\datagidx at multicols}{\datagidx at columns}%
+ }%
+ }%
+ {%
+ \edef\datagidx at prestart{%
+ \noexpand\datagidx at heading{\noexpand\datagidx at title}%
+ \noexpand\begin{\datagidx at multicols}{\datagidx at columns}%
+ [\noexpand\datagidx at postheading]%
+ }%
+ }%
+ \edef\datagidx at postend{%
+ \noexpand\end{\datagidx at multicols}%
+ }%
+}
+\newcommand*{\printterms at setuptwocol}{%
+ \def\datagidx at prestart{%
+ \twocolumn[\datagidx at heading{\datagidx at title}%
+ \datagidx at postheading]}%
+ \if at twocolumn
+ \def\datagidx at postend{}%
+ \else
+ \def\datagidx at postend{\printtermsrestoreonecolumn}%
+ \fi
+}
+\newcommand{\printtermsrestoreonecolumn}{\onecolumn}
+\newcommand{\printterms}[1][]{%
+\bgroup
+ \let\newterm at database\datagidx at defaultdatabase
+ \let\newterm at styles\@empty
+ \setkeys{printterms}{#1}%
+ \DTLifdbexists{\newterm at database}%
+ {%
+ \edef\DTLgidxCurrentdb{\newterm at database}%
+ \edef\do at getrow{\noexpand\dtlgetrowforvalue
+ {datagidx}%
+ {\dtlcolumnindex{datagidx}{Glossary}}%
+ {\newterm at database}%
+ }%
+ \do at getrow
+ \dtlgetentryfromcurrentrow
+ {\datagidx at title}%
+ {\dtlcolumnindex{datagidx}{Title}}%
+ \dtlgetentryfromcurrentrow
+ {\datagidx at heading}%
+ {\dtlcolumnindex{datagidx}{Heading}}%
+ \dtlgetentryfromcurrentrow
+ {\datagidx at postheading}%
+ {\dtlcolumnindex{datagidx}{PostHeading}}%
+ \dtlgetentryfromcurrentrow
+ {\datagidx at multicols}%
+ {\dtlcolumnindex{datagidx}{MultiCols}}%
+ \dtlgetentryfromcurrentrow
+ {\datagidx at sort}%
+ {\dtlcolumnindex{datagidx}{Sort}}%
+ \dtlgetentryfromcurrentrow
+ {\datagidx at style}%
+ {\dtlcolumnindex{datagidx}{Style}}%
+ \dtlgetentryfromcurrentrow
+ {\datagidx at showgroups}%
+ {\dtlcolumnindex{datagidx}{ShowGroups}}%
+ \edef\dtl at do@setkeys{\noexpand\setkeys{newgloss}{\expandonce\newterm at styles}}%
+ \dtl at do@setkeys
+ \ifnum\datagidx at columns>1\relax
+ \ifnum\datagidx at columns=2\relax
+ \ifdatagidxbalance
+ \printterms at setupmulticol
+ \else
+ \printterms at setuptwocol
+ \fi
+ \else
+ \printterms at setupmulticol
+ \fi
+ \else
+ \def\datagidx at prestart{}%
+ \def\datagidx at postend{}%
+ \fi
+ \let\@dtl at dbname\DTLgidxCurrentdb
+ \csuse{datagidxshowgroups\datagidx at showgroups}%
+ \datagidxsetstyle{\datagidx at style}%
+ \def\datagidx at labellist{}%
+ \ifnum\datagidx at columns=1\relax
+ \datagidx at heading{\datagidx at title}%
+ \datagidx at postheading
+ \fi
+ \datagidx at do@sort
+ \datagidx at prestart
+ \printtermsstartpar
+ \datagidxstart
+ \let\DTLgidxName\datagidx at invert
+ \let\DTLgidxPlace\datagidx at invert
+ \let\DTLgidxSubject\datagidx at invert
+ \let\DTLgidxOffice\datagidx at invert
+ \DTLgidxForeachEntry
+ {%
+ \datagidxitem
+ }%
+ \datagidxend
+ \datagidx at postend
+ }%
+ {%
+ \PackageError{datagidx}%
+ {Glossary/index data base `\newterm at database' doesn't exist}%
+ {%
+ You must define the glossary/index data base before you can
+ use it.%
+ }%
+ }%
+\egroup
+}
+\def\datagidx at getgroup#1#2\datagidx at endgetgroup{%
+ \dtl at setcharcode{#1}{\count@}%
+ \dtlifintclosedbetween{\count@}{48}{57}%
+ {%
+ \gdef\datagidxcurrentgroup{Numbers}%
+ }%
+ {%
+ \dtlifintclosedbetween{\count@}{97}{122}%
+ {%
+ \advance\count@ by -96\relax
+ \xdef\datagidxcurrentgroup{\@Alph\count@}%
+ }%
+ {%
+ \dtlifintclosedbetween{\count@}{65}{90}%
+ {%
+ \gdef\datagidxcurrentgroup{#1}%
+ }%
+ {%
+ \gdef\datagidxcurrentgroup{Symbols}%
+ }%
+ }%
+ }%
+}
+\newcommand*{\DTLgidxGroupHeaderTitle}[1]{%
+ \ifcsdef{datagidx#1name}
+ {%
+ \csuse{datagidx#1name}%
+ }%
+ {%
+ #1%
+ }%
+}
+\newcommand{\DTLgidxForeachEntry}[1]{%
+ \def\datagidxprevgroup{}%
+ \edef\datagidx at doforeachentry{%
+ \noexpand\DTLforeach*[\expandonce\printterms at condition]{\DTLgidxCurrentdb}%
+ {\expandonce\DTLgidxAssignList}
+ }%
+ \datagidx at doforeachentry
+ {%
+ \DTLifnull{\Parent}%
+ {%
+ \DTLifnull\Location
+ {%
+ \DTLifnull\CurrentLocation
+ {%
+ }%
+ {%
+ \global\let\@datagidx at dorerun@warn\@data at rerun@warn
+ }%
+ }%
+ {%
+ \ifcsdef{datagidx at prev@loc@\Label}%
+ {%
+ \dtlgidx at checklocationchange
+ }%
+ {%
+ \global\let\@datagidx at dorerun@warn\@data at rerun@warn
+ }%
+ }%
+ \datagidx at doifdisplayed
+ {%
+ \edef\datagidx at dowrite{%
+ \noexpand\protected at write\noexpand\@auxout{}%
+ {%
+ \string\datagidx at save@loc{\Label}{\CurrentLocation}%
+ }%
+ }%
+ \datagidx at dowrite
+ \datagidx at level=1\relax
+ \expandafter\datagidx at getgroup\Sort{}\datagidx at endgetgroup
+ #1%
+ \global\let\datagidxprevgroup\datagidxcurrentgroup
+ }%
+ }%
+ {}%
+ }%
+}
+\newcommand*{\dtlgidx at checklocationchange}{%
+ \protected at edef\@prev at location{%
+ \csname datagidx at prev@loc@\Label\endcsname}%
+ \@onelevel at sanitize\@prev at location
+ \protected at edef\@cur at location{\CurrentLocation}%
+ \@onelevel at sanitize\@cur at location
+ \ifdefequal{\@prev at location}{\@cur at location}%
+ {}%
+ {%
+ \global\let\@datagidx at dorerun@warn\@data at rerun@warn
+ }%
+}
+\newcommand{\datagidx at doifdisplayed}[1]{%
+ \DTLifnull{\Location}%
+ {%
+ \DTLifnull{\See}
+ {%
+ \DTLifnull{\SeeAlso}{}%
+ {%
+ #1%
+ }%
+ }%
+ {%
+ \@for\dtl at thislabel:=\See\do
+ {%
+ \iftermexists{\dtl at thislabel}%
+ {%
+ \ifentryused{\dtl at thislabel}%
+ {%
+ #1%
+ \@endfortrue
+ }%
+ {}%
+ }%
+ {%
+ }%
+ }%
+ }%
+ }%
+ {%
+ #1%
+ }%
+}%
+\newcount\datagidx at level
+\endinput
+%%
+%% End of file `datagidx-2019-09-27.sty'.
Property changes on: trunk/Master/texmf-dist/tex/latex/datatool/datagidx-2019-09-27.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: trunk/Master/texmf-dist/tex/latex/datatool/datagidx.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/datatool/datagidx.sty 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/tex/latex/datatool/datagidx.sty 2025-03-05 21:33:51 UTC (rev 74461)
@@ -21,7 +21,7 @@
%%
%% The Current Maintainer of this work is Nicola Talbot.
%%
-%% This work consists of the files datatool.dtx and datatool.ins and the derived files datatool-base.sty, datatool-undetermined.ldf, datatool-latin1.ldf, datatool-utf8.ldf, datatool-l3fp.def, datatool-lua.def, datatool-fp.def, datatool-fp.sty, datatool-pgfmath.def, datatool-pgfmath.sty, datatool.sty, datagidx.sty, databib.sty, databar.sty, datapie.sty, dataplot.sty, person.sty, databib.bst.
+%% This work consists of the files datatool.dtx and datatool.ins and the derived files datatool-base.sty, datatool-undetermined.ldf, datatool-latin1.ldf, datatool-utf8.ldf, datatool-l3fp.def, datatool-lua.def, datatool-fp.def, datatool-fp.sty, datatool-pgfmath.def, datatool-pgfmath.sty, datatool.sty, datagidx.sty, databib.sty, databar.sty, datapie.sty, dataplot.sty, person.sty, databib.bst, databar-2019-09-27.sty, databib-2019-09-27.sty, datagidx-2019-09-27.sty, datapie-2019-09-27.sty, dataplot-2019-09-27.sty, datatool-2019-09-27.sty, datatool-base-2019-09-27.sty, datatool-fp-2019-09-27.sty, datatool-pgfmath-2019-09-27.sty, person-2019-09-27.sty.
%%
%% \CharacterTable
%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
@@ -40,8 +40,8 @@
%% Right brace \} Tilde \~}
\NeedsTeXFormat{LaTeX2e}
\DeclareRelease{v2.32}{2019-09-27}{datagidx-2019-09-27.sty}
-\DeclareCurrentRelease{v3.0}{2025-03-03}
-\ProvidesPackage{datagidx}[2025/03/03 v3.0 (NLCT)]
+\DeclareCurrentRelease{v3.0.1}{2025-03-05}
+\ProvidesPackage{datagidx}[2025/03/05 v3.0.1 (NLCT)]
\RequirePackage{etoolbox}
\ExplSyntaxOn
\int_new:N \l__datagidx_columns_int
Added: trunk/Master/texmf-dist/tex/latex/datatool/datapie-2019-09-27.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/datatool/datapie-2019-09-27.sty (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/datatool/datapie-2019-09-27.sty 2025-03-05 21:33:51 UTC (rev 74461)
@@ -0,0 +1,442 @@
+%%
+%% This is file `datapie-2019-09-27.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% datatool.dtx (with options: `datapie-2019-09-27.sty,package')
+%%
+%% datatool.dtx
+%% Copyright 2025 Nicola Talbot
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of LaTeX
+%% version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status `maintained'.
+%%
+%% The Current Maintainer of this work is Nicola Talbot.
+%%
+%% This work consists of the files datatool.dtx and datatool.ins and the derived files datatool-base.sty, datatool-undetermined.ldf, datatool-latin1.ldf, datatool-utf8.ldf, datatool-l3fp.def, datatool-lua.def, datatool-fp.def, datatool-fp.sty, datatool-pgfmath.def, datatool-pgfmath.sty, datatool.sty, datagidx.sty, databib.sty, databar.sty, datapie.sty, dataplot.sty, person.sty, databib.bst, databar-2019-09-27.sty, databib-2019-09-27.sty, datagidx-2019-09-27.sty, datapie-2019-09-27.sty, dataplot-2019-09-27.sty, datatool-2019-09-27.sty, datatool-base-2019-09-27.sty, datatool-fp-2019-09-27.sty, datatool-pgfmath-2019-09-27.sty, person-2019-09-27.sty.
+%%
+%% \CharacterTable
+%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+%% Digits \0\1\2\3\4\5\6\7\8\9
+%% Exclamation \! Double quote \" Hash (number) \#
+%% Dollar \$ Percent \% Ampersand \&
+%% Acute accent \' Left paren \( Right paren \)
+%% Asterisk \* Plus \+ Comma \,
+%% Minus \- Point \. Solidus \/
+%% Colon \: Semicolon \; Less than \<
+%% Equals \= Greater than \> Question mark \?
+%% Commercial at \@ Left bracket \[ Backslash \\
+%% Right bracket \] Circumflex \^ Underscore \_
+%% Grave accent \` Left brace \{ Vertical bar \|
+%% Right brace \} Tilde \~}
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{datapie}[2019/09/27 v2.32 (NLCT)]
+\RequirePackage{xkeyval}
+\newif\ifDTLcolorpiechart
+\DTLcolorpiecharttrue
+\DeclareOption{color}{\DTLcolorpiecharttrue}
+\DeclareOption{gray}{\DTLcolorpiechartfalse}
+\define at boolkey{datapie}[DTL]{rotateinner}[true]{}
+\define at boolkey{datapie}[DTL]{rotateouter}[true]{}
+\DTLrotateinnerfalse
+\DTLrotateouterfalse
+\DeclareOption{rotateinner}{\DTLrotateinnertrue}
+\DeclareOption{norotateinner}{\DTLrotateinnerfalse}
+\DeclareOption{rotateouter}{\DTLrotateoutertrue}
+\DeclareOption{norotateouter}{\DTLrotateouterfalse}
+\ProcessOptions
+\RequirePackage{datatool}[=v2.32]
+\RequirePackage{tikz}
+\newlength\DTLradius
+\DTLradius=2cm
+\newcommand*{\DTLinnerratio}{0.5}
+\newcommand*{\DTLouterratio}{1.25}
+\newcommand*\DTLcutawayratio{0.2}
+\newcommand*{\DTLstartangle}{0}
+\newlength\dtl at inneroffset
+\dtl at inneroffset=\DTLinnerratio\DTLradius
+\newlength\dtl at outeroffset
+\dtl at outeroffset=\DTLouterratio\DTLradius
+\newlength\dtl at cutawayoffset
+\dtl at cutawayoffset=\DTLcutawayratio\DTLradius
+\newcommand*{\dtl at piecutaways}{}
+\def\dtl at innerlabel{\DTLpievariable}%
+\def\dtl at outerlabel{}%
+\newcounter{DTLpieroundvar}
+\setcounter{DTLpieroundvar}{1}
+\newcommand*{\DTLdisplayinnerlabel}[1]{#1}
+\newcommand*{\DTLdisplayouterlabel}[1]{#1}
+\newcommand*{\DTLpiepercent}{%
+\ifnum\dtlforeachlevel=0\relax
+ \PackageError{datapie}{Can't use
+ \string\DTLpiepercent\space outside
+ \string\DTLpiechart}{}%
+\else
+ \csname dtl at piepercent@\romannumeral\@dtl at seg\endcsname
+\fi}
+\newcommand*{\DTLpieatbegintikz}{}
+\newcommand*{\DTLpieatendtikz}{}
+\newcommand*{\DTLsetpiesegmentcolor}[2]{%
+\expandafter\def\csname dtlpie at segcol\romannumeral#1\endcsname{#2}%
+}
+\newcommand*{\DTLgetpiesegmentcolor}[1]{%
+\csname dtlpie at segcol\romannumeral#1\endcsname}
+\newcommand*{\DTLdopiesegmentcolor}[1]{%
+\expandafter\color\expandafter
+{\csname dtlpie at segcol\romannumeral#1\endcsname}}
+\newcommand*{\DTLdocurrentpiesegmentcolor}{%
+\ifnum\dtlforeachlevel=0\relax
+ \PackageError{datapie}{Can't use
+ \string\DTLdocurrentpiesegmentcolor\space outside
+ \string\DTLpiechart}{}%
+\else
+ \expandafter\DTLdopiesegmentcolor\expandafter{%
+ \csname c at DTLrow\romannumeral\dtlforeachlevel\endcsname}%
+\fi}
+\newcommand*{\DTLpieoutlinecolor}{black}
+\newlength\DTLpieoutlinewidth
+\DTLpieoutlinewidth=0pt
+\ifDTLcolorpiechart
+ \DTLsetpiesegmentcolor{1}{red}
+ \DTLsetpiesegmentcolor{2}{green}
+ \DTLsetpiesegmentcolor{3}{blue}
+ \DTLsetpiesegmentcolor{4}{yellow}
+ \DTLsetpiesegmentcolor{5}{magenta}
+ \DTLsetpiesegmentcolor{6}{cyan}
+ \DTLsetpiesegmentcolor{7}{orange}
+ \DTLsetpiesegmentcolor{8}{white}
+\else
+ \DTLsetpiesegmentcolor{1}{black!15}
+ \DTLsetpiesegmentcolor{2}{black!25}
+ \DTLsetpiesegmentcolor{3}{black!35}
+ \DTLsetpiesegmentcolor{4}{black!45}
+ \DTLsetpiesegmentcolor{5}{black!55}
+ \DTLsetpiesegmentcolor{6}{black!65}
+ \DTLsetpiesegmentcolor{7}{black!75}
+ \DTLsetpiesegmentcolor{8}{black!85}
+\fi
+\define at key{datapie}{start}{\def\DTLstartangle{#1}}
+\define at key{datapie}{radius}{\DTLradius=#1\relax
+\dtl at inneroffset=\DTLinnerratio\DTLradius
+\dtl at outeroffset=\DTLouterratio\DTLradius
+\dtl at cutawayoffset=\DTLcutawayratio\DTLradius}
+\define at key{datapie}{innerratio}{%
+\def\DTLinnerratio{#1}%
+\dtl at inneroffset=\DTLinnerratio\DTLradius}
+\define at key{datapie}{outerratio}{%
+\def\DTLouterratio{#1}%
+\dtl at outeroffset=\DTLouterratio\DTLradius}
+\define at key{datapie}{cutawayratio}{%
+\def\DTLcutawayratio{#1}%
+\dtl at cutawayoffset=\DTLcutawayratio\DTLradius}
+\define at key{datapie}{inneroffset}{%
+\dtl at inneroffset=#1}
+\define at key{datapie}{outeroffset}{%
+\dtl at outeroffset=#1}
+\define at key{datapie}{cutawayoffset}{%
+\dtl at cutawayoffset=#1}
+\define at key{datapie}{cutaway}{%
+\renewcommand*{\dtl at piecutaways}{#1}}
+\define at key{datapie}{variable}{%
+\def\DTLpievariable{#1}}
+\define at key{datapie}{innerlabel}{%
+\def\dtl at innerlabel{#1}}
+\define at key{datapie}{outerlabel}{%
+\def\dtl at outerlabel{#1}}
+\newcommand*{\DTLpiechart}[4][\boolean{true}]{%
+\bgroup
+ \let\DTLpievariable=\relax
+ \setkeys{datapie}{#2}%
+ \ifx\DTLpievariable\relax
+ \PackageError{datapie}%
+ {\string\DTLpiechart\space missing variable}{}%
+ \else
+ \def\dtl at total{0}%
+ \@sDTLforeach[#1]{#3}{#4}{%
+ \let\dtl at oldtotal=\dtl at total
+ \expandafter\DTLconverttodecimal\expandafter
+ {\DTLpievariable}{\dtl at variable}%
+ \dtladd{\dtl at total}{\dtl at variable}{\dtl at total}%
+ }%
+ \expandafter\DTLconverttodecimal\expandafter
+ {\DTLstartangle}{\@dtl at start}%
+ \@sDTLforeach[#1]{#3}{#4}{%
+ \expandafter\DTLconverttodecimal\expandafter
+ {\DTLpievariable}{\dtl at variable}%
+ \dtl at computeangles
+ {\csname c at DTLrow\romannumeral\dtlforeachlevel\endcsname}%
+ {\dtl at variable}%
+ \expandafter\@dtl at seg\expandafter=
+ \csname c at DTLrow\romannumeral\dtlforeachlevel\endcsname%
+ \dtlmul{\dtl at tmp}{\dtl at variable}{100}%
+ \let\dtl at old=\dtl at tmp
+ \dtldiv{\dtl at tmp}{\dtl at old}{\dtl at total}%
+ \expandafter\dtlround
+ \csname dtl at piepercent@\romannumeral\@dtl at seg\endcsname\dtl at tmp
+ \c at DTLpieroundvar
+ }%
+ \@for\dtl at row:=\dtl at piecutaways\do{%
+ \expandafter\@dtl at set@off\dtl at row-\relax
+ }%
+ \let\dtl at start=\DTLstartangle
+ \begin{tikzpicture}
+ \DTLpieatbegintikz
+ \@sDTLforeach[#1]{#3}{#4}%
+ {%
+ \expandafter\@dtl at seg\expandafter=
+ \csname c at DTLrow\romannumeral\dtlforeachlevel\endcsname%
+ \edef\dtl at start{%
+ \csname dtl at sang@\romannumeral\@dtl at seg\endcsname}%
+ \edef\dtl at extent{%
+ \csname dtl at angle@\romannumeral\@dtl at seg\endcsname}%
+ \dtladd{\dtl at endangle}{\dtl at start}{\dtl at extent}%
+ \edef\dtl at angle{%
+ \csname dtl at cut@angle@\romannumeral\@dtl at seg\endcsname}%
+ \let\dtl at old=\dtl at angle
+ \dtl at truncatedecimal\dtl at angle
+ \ifnum\dtl at angle>180\relax
+ \dtlsub{\dtl at angle}{\dtl at old}{360}%
+ \dtl at truncatedecimal\dtl at angle
+ \fi
+ \edef\dtl at cutlen{%
+ \csname dtl at cut@len@\romannumeral\@dtl at seg\endcsname
+ }%
+ \edef\@dtl at shift{(\dtl at angle:\dtl at cutlen)}%
+ \dtlmul{\dtl at angle}{\dtl at extent}{0.5}%
+ \dtladd{\dtl at midangle}{\dtl at angle}{\dtl at start}%
+ \begin{scope}[shift={\@dtl at shift}]%
+ \fill[color=\DTLgetpiesegmentcolor\@dtl at seg] (0,0) --
+ (\dtl at start:\DTLradius)
+ arc (\dtl at start:\dtl at endangle:\DTLradius) -- cycle;
+ \ifdim\DTLpieoutlinewidth>0pt\relax
+ \draw[color=\DTLpieoutlinecolor,%
+ line width=\DTLpieoutlinewidth]
+ (0,0) -- (\dtl at start:\DTLradius)
+ arc (\dtl at start:\dtl at endangle:\DTLradius) -- cycle;
+ \fi
+ \dtl at truncatedecimal\dtl at midangle
+ \ifDTLrotateinner
+ \dtlifnumopenbetween{\dtl at midangle}{90}{270}%
+ {%
+ \let\@dtl at next\@firstoftwo
+ }%
+ {%
+ \dtlifnumlt{\dtl at midangle}{-90}%
+ {\let\@dtl at next\@firstoftwo}%
+ {\let\@dtl at next\@secondoftwo}%
+ }%
+ \@dtl at next
+ {%
+ \dtlsub{\dtl at labelangle}{\dtl at midangle}{180}%
+ \dtl at truncatedecimal\dtl at labelangle
+ \edef\dtl at innernodeopt{anchor=east,rotate=\dtl at labelangle}%
+ }%
+ {%
+ \edef\dtl at innernodeopt{anchor=west,rotate=\dtl at midangle}%
+ }%
+ \else
+ \edef\dtl at innernodeopt{anchor=center}%
+ \fi
+ \ifDTLrotateouter
+ \dtlifnumopenbetween{\dtl at midangle}{90}{270}%
+ {%
+ \let\@dtl at next\@firstoftwo
+ }%
+ {%
+ \dtlifnumlt{\dtl at midangle}{-90}%
+ {\let\@dtl at next\@firstoftwo}%
+ {\let\@dtl at next\@secondoftwo}%
+ }%
+ \@dtl at next
+ {%
+ \dtlsub{\dtl at labelangle}{\dtl at midangle}{180}%
+ \dtl at truncatedecimal\dtl at labelangle
+ \edef\dtl at outernodeopt{anchor=east,rotate=\dtl at labelangle}%
+ }%
+ {%
+ \edef\dtl at outernodeopt{anchor=west,rotate=\dtl at midangle}%
+ }%
+ \else
+ \dtlifnumeq{\dtl at midangle}{45}
+ {%
+ \let\@dtl at next\@firstoftwo
+ }%
+ {%
+ \dtlifnumgt{\dtl at midangle}{315}
+ {%
+ \let\@dtl at next\@firstoftwo
+ }%
+ {%
+ \dtlifnumopenbetween{\dtl at midangle}{-45}{45}%
+ {%
+ \let\@dtl at next\@firstoftwo
+ }%
+ {%
+ \let\@dtl at next\@secondoftwo
+ }%
+ }%
+ }%
+ \@dtl at next
+ {%
+ \edef\dtl at outernodeopt{anchor=west}%
+ }%
+ {%
+ \dtlifnumopenbetween{\dtl at midangle}{45}{135}%
+ {%
+ \let\@dtl at next\@firstoftwo
+ }%
+ {%
+ \dtlifnumeq{\dtl at midangle}{135}%
+ {%
+ \let\@dtl at next\@firstoftwo
+ }%
+ {%
+ \let\@dtl at next\@secondoftwo
+ }%
+ }%
+ \@dtl at next
+ {%
+ \edef\dtl at outernodeopt{anchor=south}%
+ }%
+ {%
+ \dtlifnumopenbetween{\dtl at midangle}{135}{225}%
+ {%
+ \let\@dtl at next\@firstoftwo
+ }%
+ {%
+ \dtlifnumeq{\dtl at midangle}{225}%
+ {%
+ \let\@dtl at next\@firstoftwo
+ }%
+ {%
+ \dtlifnumeq{\dtl at midangle}{-135}%
+ {%
+ \let\@dtl at next\@firstoftwo
+ }%
+ {%
+ \dtlifnumlt{\dtl at midangle}{-135}%
+ {%
+ \let\@dtl at next\@firstoftwo
+ }%
+ {%
+ \let\@dtl at next\@secondoftwo
+ }%
+ }%
+ }%
+ }%
+ \@dtl at next
+ {%
+ \edef\dtl at outernodeopt{anchor=east}%
+ }%
+ {%
+ \edef\dtl at outernodeopt{anchor=north}%
+ }%
+ }%
+ }%
+ \fi
+ \edef\@dtl at dolabel{%
+ \noexpand\draw (\dtl at midangle:\the\dtl at inneroffset)
+ node[\dtl at innernodeopt]{%
+ \noexpand\DTLdisplayinnerlabel{\noexpand\dtl at innerlabel}};
+ }%
+ \@dtl at dolabel
+ \edef\@dtl at dolabel{%
+ \noexpand\draw (\dtl at midangle:\the\dtl at outeroffset)
+ node[\dtl at outernodeopt]{%
+ \noexpand\DTLdisplayouterlabel{\noexpand\dtl at outerlabel}};
+ }%
+ \@dtl at dolabel
+ \end{scope}%
+ }%
+ \DTLpieatendtikz
+ \end{tikzpicture}%
+ \fi
+\egroup
+}
+\newcommand*{\dtl at computeangles}[2]{%
+ \dtlifnumgt{\@dtl at start}{180}%
+ {%
+ \let\dtl at old=\@dtl at start
+ \dtlsub{\@dtl at start}{\dtl at old}{360}%
+ }%
+ {}%
+ \dtlifnumlt{\@dtl at start}{-180}%
+ {%
+ \let\dtl at old=\@dtl at start
+ \dtladd{\@dtl at start}{\dtl at old}{360}%
+ }%
+ {}%
+ \expandafter\edef\csname dtl at sang@\romannumeral#1\endcsname{%
+ \@dtl at start}%
+ \dtlmul{\dtl at angle}{360}{#2}%
+ \let\dtl at old=\dtl at angle
+ \dtldiv{\dtl at angle}{\dtl at old}{\dtl at total}%
+ \expandafter\let\csname dtl at angle@\romannumeral#1\endcsname=\dtl at angle
+ \let\dtl at old=\@dtl at start
+ \dtladd{\@dtl at start}{\dtl at old}{\dtl at angle}%
+ \expandafter\def\csname dtl at cut@angle@\romannumeral#1\endcsname{0}%
+ \expandafter\def\csname dtl at cut@len@\romannumeral#1\endcsname{0cm}%
+}
+\def\@dtl at set@off#1-#2\relax{%
+ \ifstrempty{#2}%
+ {%
+ \@@dtl at set@off{#1}%
+ }%
+ {%
+ \@@dtl at set@offr#1-#2\relax
+ }%
+}
+\newcommand*{\@@dtl at set@off}[1]{%
+ \edef\dtl at old{\csname dtl at angle@\romannumeral#1\endcsname}%
+ \dtlmul{\dtl at angle}{\dtl at old}{0.5}%
+ \let\dtl at old=\dtl at angle
+ \edef\dtl at sang{\csname dtl at sang@\romannumeral#1\endcsname}%
+ \dtladd{\dtl at angle}{\dtl at old}{\dtl at sang}%
+ \expandafter\edef\csname dtl at cut@angle@\romannumeral#1\endcsname{%
+ \dtl at angle}%
+ \expandafter\edef\csname dtl at cut@len@\romannumeral#1\endcsname{%
+ \the\dtl at cutawayoffset}%
+}
+\newcount\@dtl at seg
+\def\@@dtl at set@offr#1-#2-\relax{%
+ \ifnum#1>#2\relax
+ \PackageError{datapie}{Segment ranges must go in ascending order}{%
+ Try #2-#1 instead of #1-#2}%
+ \else
+ \def\dtl at angle{0}%
+ \@dtl at seg=#1\relax
+ \whiledo{\not\(\@dtl at seg > #2\)}{%
+ \let\dtl at old=\dtl at angle
+ \edef\dtl at segang{\csname dtl at angle@\romannumeral\@dtl at seg\endcsname}%
+ \dtladd{\dtl at angle}{\dtl at old}{\dtl at segang}%
+ \advance\@dtl at seg by 1\relax
+ }%
+ \let\dtl at old=\dtl at angle
+ \dtlmul{\dtl at angle}{\dtl at old}{0.5}%
+ \edef\dtl at sang{\csname dtl at sang@\romannumeral#1\endcsname}%
+ \let\dtl at old=\dtl at angle
+ \dtladd{\dtl at angle}{\dtl at old}{\dtl at sang}%
+ \@dtl at seg=#1\relax
+ \whiledo{\not\(\@dtl at seg > #2\)}{%
+ \expandafter
+ \let\csname dtl at cut@angle@\romannumeral\@dtl at seg\endcsname
+ =\dtl at angle
+ \expandafter
+ \edef\csname dtl at cut@len@\romannumeral\@dtl at seg\endcsname{%
+ \the\dtl at cutawayoffset}
+ \advance\@dtl at seg by 1\relax
+ }%
+ \fi
+}
+\endinput
+%%
+%% End of file `datapie-2019-09-27.sty'.
Property changes on: trunk/Master/texmf-dist/tex/latex/datatool/datapie-2019-09-27.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: trunk/Master/texmf-dist/tex/latex/datatool/datapie.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/datatool/datapie.sty 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/tex/latex/datatool/datapie.sty 2025-03-05 21:33:51 UTC (rev 74461)
@@ -21,7 +21,7 @@
%%
%% The Current Maintainer of this work is Nicola Talbot.
%%
-%% This work consists of the files datatool.dtx and datatool.ins and the derived files datatool-base.sty, datatool-undetermined.ldf, datatool-latin1.ldf, datatool-utf8.ldf, datatool-l3fp.def, datatool-lua.def, datatool-fp.def, datatool-fp.sty, datatool-pgfmath.def, datatool-pgfmath.sty, datatool.sty, datagidx.sty, databib.sty, databar.sty, datapie.sty, dataplot.sty, person.sty, databib.bst.
+%% This work consists of the files datatool.dtx and datatool.ins and the derived files datatool-base.sty, datatool-undetermined.ldf, datatool-latin1.ldf, datatool-utf8.ldf, datatool-l3fp.def, datatool-lua.def, datatool-fp.def, datatool-fp.sty, datatool-pgfmath.def, datatool-pgfmath.sty, datatool.sty, datagidx.sty, databib.sty, databar.sty, datapie.sty, dataplot.sty, person.sty, databib.bst, databar-2019-09-27.sty, databib-2019-09-27.sty, datagidx-2019-09-27.sty, datapie-2019-09-27.sty, dataplot-2019-09-27.sty, datatool-2019-09-27.sty, datatool-base-2019-09-27.sty, datatool-fp-2019-09-27.sty, datatool-pgfmath-2019-09-27.sty, person-2019-09-27.sty.
%%
%% \CharacterTable
%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
@@ -40,8 +40,8 @@
%% Right brace \} Tilde \~}
\NeedsTeXFormat{LaTeX2e}
\DeclareRelease{v2.32}{2019-09-27}{datapie-2019-09-27.sty}
-\DeclareCurrentRelease{v3.0}{2025-03-03}
-\ProvidesPackage{datapie}[2025/03/03 v3.0 (NLCT)]
+\DeclareCurrentRelease{v3.0.1}{2025-03-05}
+\ProvidesPackage{datapie}[2025/03/05 v3.0.1 (NLCT)]
\newif\ifDTLcolorpiechart
\DTLcolorpiecharttrue
\newif\ifDTLrotateinner
Added: trunk/Master/texmf-dist/tex/latex/datatool/dataplot-2019-09-27.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/datatool/dataplot-2019-09-27.sty (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/datatool/dataplot-2019-09-27.sty 2025-03-05 21:33:51 UTC (rev 74461)
@@ -0,0 +1,977 @@
+%%
+%% This is file `dataplot-2019-09-27.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% datatool.dtx (with options: `dataplot-2019-09-27.sty,package')
+%%
+%% datatool.dtx
+%% Copyright 2025 Nicola Talbot
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of LaTeX
+%% version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status `maintained'.
+%%
+%% The Current Maintainer of this work is Nicola Talbot.
+%%
+%% This work consists of the files datatool.dtx and datatool.ins and the derived files datatool-base.sty, datatool-undetermined.ldf, datatool-latin1.ldf, datatool-utf8.ldf, datatool-l3fp.def, datatool-lua.def, datatool-fp.def, datatool-fp.sty, datatool-pgfmath.def, datatool-pgfmath.sty, datatool.sty, datagidx.sty, databib.sty, databar.sty, datapie.sty, dataplot.sty, person.sty, databib.bst, databar-2019-09-27.sty, databib-2019-09-27.sty, datagidx-2019-09-27.sty, datapie-2019-09-27.sty, dataplot-2019-09-27.sty, datatool-2019-09-27.sty, datatool-base-2019-09-27.sty, datatool-fp-2019-09-27.sty, datatool-pgfmath-2019-09-27.sty, person-2019-09-27.sty.
+%%
+%% \CharacterTable
+%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+%% Digits \0\1\2\3\4\5\6\7\8\9
+%% Exclamation \! Double quote \" Hash (number) \#
+%% Dollar \$ Percent \% Ampersand \&
+%% Acute accent \' Left paren \( Right paren \)
+%% Asterisk \* Plus \+ Comma \,
+%% Minus \- Point \. Solidus \/
+%% Colon \: Semicolon \; Less than \<
+%% Equals \= Greater than \> Question mark \?
+%% Commercial at \@ Left bracket \[ Backslash \\
+%% Right bracket \] Circumflex \^ Underscore \_
+%% Grave accent \` Left brace \{ Vertical bar \|
+%% Right brace \} Tilde \~}
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{dataplot}[2019/09/27 v2.32 (NLCT)]
+\RequirePackage{xkeyval}
+\RequirePackage{tikz}
+\RequirePackage{datatool}[=v2.32]
+\usetikzlibrary{plotmarks}
+\usetikzlibrary{plothandlers}
+\usetikzlibrary{calc}
+\newcommand*{\DTLplotstream}[4][\boolean{true}]{%
+ \@sDTLforeach[#1]{#2}{\dtl at x=#3,\dtl at y=#4}{%
+ \DTLconverttodecimal{\dtl at x}{\dtl at decx}%
+ \DTLconverttodecimal{\dtl at y}{\dtl at decy}%
+ \pgfplotstreampoint{\pgfpointxy{\dtl at decx}{\dtl at decy}}%
+ }%
+}
+\newcommand*{\DTLplotmarks}{%
+ \pgfuseplotmark{o},%
+ \pgfuseplotmark{x},%
+ \pgfuseplotmark{+},%
+ \pgfuseplotmark{square},%
+ \pgfuseplotmark{triangle},%
+ \pgfuseplotmark{diamond},%
+ \pgfuseplotmark{pentagon},%
+ \pgfuseplotmark{asterisk},%
+ \pgfuseplotmark{star}%
+}
+\newcommand*{\DTLplotmarkcolors}{%
+ red,%
+ green,%
+ blue,%
+ yellow,%
+ magenta,%
+ cyan,%
+ orange,%
+ black,%
+ gray}
+\newcommand*{\DTLplotlines}{%
+ \pgfsetdash{}{0pt},% solid line
+ \pgfsetdash{{10pt}{5pt}}{0pt},%
+ \pgfsetdash{{5pt}{5pt}}{0pt},%
+ \pgfsetdash{{1pt}{5pt}}{0pt},%
+ \pgfsetdash{{5pt}{5pt}{1pt}{5pt}}{0pt},%
+ \pgfsetdash{{1pt}{3pt}}{0pt},%
+}
+\newcommand*{\DTLplotlinecolors}{%
+ red,%
+ green,%
+ blue,%
+ yellow,%
+ magenta,%
+ cyan,%
+ orange,%
+ black,%
+ gray}
+\newlength\DTLplotwidth
+\setlength\DTLplotwidth{4in}
+\newlength\DTLplotheight
+\setlength\DTLplotheight{4in}
+\newlength\DTLticklength
+\setlength\DTLticklength{5pt}
+\newlength\DTLminorticklength
+\setlength\DTLminorticklength{2pt}
+\newlength\DTLticklabeloffset
+\setlength\DTLticklabeloffset{8pt}
+\newlength\dtl at xticlabelheight
+\newlength\dtl at yticlabelwidth
+\newlength\DTLmintickgap
+\setlength\DTLmintickgap{20pt}
+\newlength\DTLminminortickgap
+\setlength\DTLminminortickgap{5pt}
+\newcounter{DTLplotroundXvar}
+\setcounter{DTLplotroundXvar}{2}
+\newcounter{DTLplotroundYvar}
+\setcounter{DTLplotroundYvar}{2}
+\newif\ifDTLxaxis
+\DTLxaxistrue
+\newcommand*{\DTLXAxisStyle}{-}
+\newif\ifDTLyaxis
+\DTLyaxistrue
+\newcommand*{\DTLYAxisStyle}{-}
+\newcommand*{\DTLmajorgridstyle}{color=gray,-}
+\newcommand*{\DTLminorgridstyle}{color=gray,loosely dotted}
+\newif\ifDTLxticsin
+\DTLxticsintrue
+\newif\ifDTLyticsin
+\DTLyticsintrue
+\newcount\dtl at legendsetting
+\newlength\DTLlegendxoffset
+\setlength\DTLlegendxoffset{10pt}
+\newlength\DTLlegendyoffset
+\setlength\DTLlegendyoffset{10pt}
+\newcommand*{\DTLformatlegend}[1]{%
+\setlength{\fboxrule}{1.1pt}%
+\fcolorbox{black}{white}{#1}}
+\newif\ifDTLshowmarkers
+\DTLshowmarkerstrue
+\newif\ifDTLshowlines
+\DTLshowlinesfalse
+\newcommand*{\DTLplotatbegintikz}{}
+\newcommand*{\@dtlplothandlermark}[1]{%
+ \pgfplothandlermark
+ {%
+ \pgfmathparse{1/\dtl at scale@x}%
+ \pgftransformxscale{\pgfmathresult}%
+ \pgfmathparse{1/\dtl at scale@y}%
+ \pgftransformyscale{\pgfmathresult}%
+ #1%
+ }%
+}
+\newcommand*{\dtlplothandlermark}[1]{%
+ \PackageWarning{dataplot}{\string\dtlplothandlermark\space
+ found outside \string\DTLplot}%
+ \pgfplothandlermark{#1}%
+}
+\newcommand*{\DTLplotatendtikz}{}
+\define at key{dataplot}{x}{%
+\def\dtl at xkey{#1}}
+\define at key{dataplot}{y}{%
+\def\dtl at ykey{#1}}
+\define at key{dataplot}{markcolors}{%
+\def\DTLplotmarkcolors{#1}}
+\define at key{dataplot}{linecolors}{%
+\def\DTLplotlinecolors{#1}}
+\define at key{dataplot}{colors}{%
+\def\DTLplotmarkcolors{#1}%
+\def\DTLplotlinecolors{#1}}
+\define at key{dataplot}{marks}{%
+\def\DTLplotmarks{#1}}
+\define at key{dataplot}{lines}{%
+\def\DTLplotlines{#1}}
+\define at key{dataplot}{width}{%
+\setlength\DTLplotwidth{#1}}
+\define at key{dataplot}{height}{%
+\setlength\DTLplotheight{#1}}
+\define at choicekey{dataplot}{style}[\val\nr]{both,lines,markers}{%
+\ifcase\nr\relax
+ \DTLshowlinestrue
+ \DTLshowmarkerstrue
+\or
+ \DTLshowlinestrue
+ \DTLshowmarkersfalse
+\or
+ \DTLshowmarkerstrue
+ \DTLshowlinesfalse
+\fi}
+\define at choicekey{dataplot}{axes}[\val\nr]{both,x,y,none}[both]{%
+\ifcase\nr\relax
+ % both
+ \DTLxaxistrue
+ \DTLxticstrue
+ \DTLyaxistrue
+ \DTLyticstrue
+\or % x
+ \DTLxaxistrue
+ \DTLxticstrue
+ \DTLyaxisfalse
+ \DTLyticsfalse
+\or % y
+ \DTLxaxisfalse
+ \DTLxticsfalse
+ \DTLyaxistrue
+ \DTLyticstrue
+\or % none
+ \DTLxaxisfalse
+ \DTLxticsfalse
+ \DTLyaxisfalse
+ \DTLyticsfalse
+\fi
+}
+\define at boolkey{dataplot}[DTL]{box}[true]{}
+\DTLboxfalse
+\define at boolkey{dataplot}[DTL]{xtics}[true]{}
+\DTLxticstrue
+\define at boolkey{dataplot}[DTL]{ytics}[true]{}
+\DTLyticstrue
+\define at boolkey{dataplot}[DTL]{xminortics}[true]{%
+\ifDTLxminortics \DTLxticstrue\fi}
+\DTLxminorticsfalse
+\define at boolkey{dataplot}[DTL]{yminortics}[true]{%
+\ifDTLyminortics \DTLyticstrue\fi}
+\DTLyminorticsfalse
+\define at boolkey{dataplot}[DTL]{grid}[true]{}
+\define at choicekey{dataplot}{xticdir}[\val\nr]{in,out}{%
+\ifcase\nr\relax
+ \DTLxticsintrue
+\or
+ \DTLxticsinfalse
+\fi
+}
+\define at choicekey{dataplot}{yticdir}[\val\nr]{in,out}{%
+\ifcase\nr\relax
+ \DTLyticsintrue
+\or
+ \DTLyticsinfalse
+\fi
+}
+\define at choicekey{dataplot}{ticdir}[\val\nr]{in,out}{%
+\ifcase\nr\relax
+ \DTLxticsintrue
+ \DTLyticsintrue
+\or
+ \DTLxticsinfalse
+ \DTLyticsinfalse
+\fi
+}
+\define at key{dataplot}{bounds}{%
+\def\dtl at bounds{#1}}
+\let\dtl at bounds=\relax
+\define at key{dataplot}{minx}{%
+\def\dtl at minx{#1}}
+\let\dtl at minx=\relax
+\define at key{dataplot}{maxx}{%
+\def\dtl at maxx{#1}}
+\let\dtl at maxx=\relax
+\define at key{dataplot}{miny}{%
+\def\dtl at miny{#1}}
+\let\dtl at miny=\relax
+\define at key{dataplot}{maxy}{%
+\def\dtl at maxy{#1}}
+\let\dtl at maxy=\relax
+\define at key{dataplot}{xticpoints}{%
+\def\dtl at xticlist{#1}\DTLxticstrue\DTLxaxistrue}
+\let\dtl at xticlist=\relax
+\define at key{dataplot}{yticpoints}{%
+\def\dtl at yticlist{#1}\DTLyticstrue\DTLyaxistrue}
+\let\dtl at yticlist=\relax
+\define at key{dataplot}{xticgap}{\def\dtl at xticgap{#1}%
+\DTLxticstrue\DTLxaxistrue}
+\let\dtl at xticgap=\relax
+\define at key{dataplot}{yticgap}{\def\dtl at yticgap{#1}%
+\DTLyticstrue\DTLyaxistrue}
+\let\dtl at yticgap=\relax
+\define at key{dataplot}{xticlabels}{%
+\def\dtl at xticlabels{#1}\DTLxticstrue\DTLxaxistrue}
+\let\dtl at xticlabels=\relax
+\define at key{dataplot}{yticlabels}{%
+\def\dtl at yticlabels{#1}\DTLyticstrue\DTLyaxistrue}
+\let\dtl at yticlabels=\relax
+\define at key{dataplot}{xlabel}{%
+\def\dtl at xlabel{#1}}
+\let\dtl at xlabel=\relax
+\define at key{dataplot}{ylabel}{%
+\def\dtl at ylabel{#1}}
+\let\dtl at ylabel=\relax
+\define at choicekey{dataplot}{legend}[\val\nr]{none,north,northeast,%
+east,southeast,south,southwest,west,northwest}[northeast]{%
+\dtl at legendsetting=\nr\relax
+}
+\define at key{dataplot}{legendlabels}{\def\dtl at legendlabels{#1}}
+\newcommand*{\DTLplot}[3][\boolean{true}]{%
+\bgroup
+ \let\dtl at xkey=\relax
+ \let\dtl at ykey=\relax
+ \let\dtl at legendlabels=\relax
+ \setkeys{dataplot}{#3}%
+ \let\dtl at plotmarklist=\DTLplotmarks
+ \let\dtl at plotlinelist=\DTLplotlines
+ \let\dtl at plotmarkcolorlist=\DTLplotmarkcolors
+ \let\dtl at plotlinecolorlist=\DTLplotlinecolors
+ \def\dtl at legend{}%
+ \ifx\dtl at legendlabels\relax
+ \edef\dtl at legendlabels{#2}%
+ \fi
+ \ifx\dtl at xkey\relax
+ \PackageError{dataplot}{Missing x setting for
+ \string\DTLplot}{}%
+ \else
+ \ifx\dtl at ykey\relax
+ \PackageError{dataplot}{Missing y setting for
+ \string\DTLplot}{}%
+ \else
+ \ifx\dtl at bounds\relax
+ \DTLcomputebounds[#1]{#2}{\dtl at xkey}{\dtl at ykey}
+ {\DTLminX}{\DTLminY}{\DTLmaxX}{\DTLmaxY}%
+ \ifx\dtl at minx\relax
+ \else
+ \let\DTLminX=\dtl at minx
+ \fi
+ \ifx\dtl at maxx\relax
+ \else
+ \let\DTLmaxX=\dtl at maxx
+ \fi
+ \ifx\dtl at miny\relax
+ \else
+ \let\DTLminY=\dtl at miny
+ \fi
+ \ifx\dtl at maxy\relax
+ \else
+ \let\DTLmaxY=\dtl at maxy
+ \fi
+ \else
+ \expandafter\dtl at getbounds\dtl at bounds\@nil
+ \fi
+ \@dtl at tmpcount=\DTLplotwidth
+ \divide\@dtl at tmpcount by 65536\relax
+ \dtlsub{\dtl at dx}{\DTLmaxX}{\DTLminX}%
+ \dtldiv{\dtl at scale@x}{\number\@dtl at tmpcount}{\dtl at dx}%
+ \dtlmul{\dtl at offset@x}{-\dtl at scale@x}{\DTLminX}%
+ \@dtl at tmpcount=\DTLplotheight
+ \divide\@dtl at tmpcount by 65536\relax
+ \dtlsub{\dtl at dy}{\DTLmaxY}{\DTLminY}%
+ \dtldiv{\dtl at scale@y}{\number\@dtl at tmpcount}{\dtl at dy}%
+ \dtlmul{\dtl at offset@y}{-\dtl at scale@y}{\DTLminY}%
+ \ifDTLxtics
+ \ifx\dtl at xticlist\relax
+ \ifx\dtl at xticgap\relax
+ \dtlsub{\dtl at mingap}{\number\DTLmintickgap}{\dtl at offset@x}%
+ \dtldiv{\dtl at mingap}{\dtl at mingap}{\dtl at scale@x}%
+ \dtldiv{\dtl at mingap}{\dtl at mingap}{65536}%
+ \dtl at constructticklist\DTLminX\DTLmaxX
+ \dtl at mingap\dtl at xticlist
+ \else
+ \DTLifFPopenbetween{0}{\DTLminX}{\DTLmaxX}{%
+ \dtl at constructticklistwithgapz
+ \DTLminX\DTLmaxX\dtl at xticlist\dtl at xticgap}{%
+ \dtl at constructticklistwithgap
+ \DTLminX\DTLmaxX\dtl at xticlist\dtl at xticgap}%
+ \fi
+ \fi
+ \let\dtl at xminorticlist\@empty
+ \ifDTLxminortics
+ \let\dtl at prevtick=\relax
+ \@for\dtl at nexttick:=\dtl at xticlist\do{%
+ \ifx\dtl at prevtick\relax
+ \else
+ \dtl at constructminorticklist
+ \dtl at prevtick\dtl at nexttick\dtl at scale@x\dtl at xminorticlist
+ \fi
+ \let\dtl at prevtick=\dtl at nexttick
+ }%
+ \fi
+ \ifx\dtl at xticlabels\relax
+ \settoheight{\dtl at xticlabelheight}{\dtl at xticlist}%
+ \else
+ \settoheight{\dtl at xticlabelheight}{\dtl at xticlabels}%
+ \fi
+ \else
+ \setlength{\dtl at xticlabelheight}{0pt}%
+ \fi
+ \setlength{\dtl at yticlabelwidth}{0pt}%
+ \ifDTLytics
+ \ifx\dtl at yticlist\relax
+ \ifx\dtl at yticgap\relax
+ \dtlsub{\dtl at mingap}{\number\DTLmintickgap}{\dtl at offset@y}%
+ \dtldiv{\dtl at mingap}{\dtl at mingap}{\dtl at scale@y}%
+ \dtldiv{\dtl at mingap}{\dtl at mingap}{65536}%
+ \dtl at constructticklist\DTLminY\DTLmaxY
+ \dtl at mingap\dtl at yticlist
+ \else
+ \DTLifFPopenbetween{0}{\DTLminY}{\DTLmaxY}{%
+ \dtl at constructticklistwithgapz
+ \DTLminY\DTLmaxY\dtl at yticlist\dtl at yticgap}{%
+ \dtl at constructticklistwithgap
+ \DTLminY\DTLmaxY\dtl at yticlist\dtl at yticgap}%
+ \fi
+ \fi
+ \let\dtl at yminorticlist\@empty
+ \ifDTLyminortics
+ \let\dtl at prevtick=\relax
+ \@for\dtl at nexttick:=\dtl at yticlist\do{%
+ \ifx\dtl at prevtick\relax
+ \else
+ \dtl at constructminorticklist
+ \dtl at prevtick\dtl at nexttick\dtl at scale@y\dtl at yminorticlist
+ \fi
+ \let\dtl at prevtick=\dtl at nexttick
+ }%
+ \fi
+ \ifx\dtl at ylabel\relax
+ \else
+ \ifx\dtl at yticlabels\relax
+ \@for\dtl at thislabel:=\dtl at yticlist\do{%
+ \dtlround{\dtl at thislabel}{\dtl at thislabel}
+ {\c at DTLplotroundYvar}%
+ \settowidth{\dtl at tmplength}{\dtl at thislabel}%
+ \ifdim\dtl at tmplength>\dtl at yticlabelwidth
+ \setlength{\dtl at yticlabelwidth}{\dtl at tmplength}%
+ \fi
+ }%
+ \else
+ \@for\dtl at thislabel:=\dtl at yticlabels\do{%
+ \settowidth{\dtl at tmplength}{\dtl at thislabel}%
+ \ifdim\dtl at tmplength>\dtl at yticlabelwidth
+ \setlength{\dtl at yticlabelwidth}{\dtl at tmplength}%
+ \fi
+ }%
+ \fi
+ \fi
+ \fi
+ \begin{tikzpicture}
+ \pgfsetxvec{\pgfpoint{1pt}{0pt}}%
+ \pgfsetyvec{\pgfpoint{0pt}{1pt}}%
+ \begin{scope}
+ \pgftransformcm{\dtl at scale@x}{0}{0}{\dtl at scale@y}%
+ {\pgfpoint{\dtl at offset@x pt}{\dtl at offset@y pt}}%
+ \let\dtlplothandlermark\@dtlplothandlermark
+ \DTLplotatbegintikz
+ \ifDTLbox
+ \draw (\DTLminX,\DTLminY) -- (\DTLmaxX,\DTLminY) --
+ (\DTLmaxX,\DTLmaxY) -- (\DTLminX,\DTLmaxY) --
+ cycle;
+ \else
+ \ifDTLxaxis
+ \expandafter\draw\expandafter[\DTLXAxisStyle]
+ (\DTLminX,\DTLminY) -- (\DTLmaxX,\DTLminY);
+ \fi
+ \ifDTLyaxis
+ \expandafter\draw\expandafter[\DTLYAxisStyle]
+ (\DTLminX,\DTLminY) -- (\DTLminX,\DTLmaxY);
+ \fi
+ \fi
+ \ifDTLgrid
+ \ifDTLxminortics
+ \@for\dtl at thistick:=\dtl at xminorticlist\do{%
+ \expandafter\draw\expandafter[\DTLminorgridstyle]
+ (\dtl at thistick,\DTLminY) -- (\dtl at thistick,\DTLmaxY);
+ }%
+ \fi
+ \ifDTLyminortics
+ \@for\dtl at thistick:=\dtl at yminorticlist\do{%
+ \expandafter\draw\expandafter[\DTLminorgridstyle]
+ (\DTLminX,\dtl at thistick) -- (\DTLmaxX,\dtl at thistick);
+ }%
+ \fi
+ \@for\dtl at thistick:=\dtl at xticlist\do{%
+ \expandafter\draw\expandafter[\DTLmajorgridstyle]
+ (\dtl at thistick,\DTLminY) -- (\dtl at thistick,\DTLmaxY);
+ }%
+ \@for\dtl at thistick:=\dtl at yticlist\do{%
+ \expandafter\draw\expandafter[\DTLmajorgridstyle]
+ (\DTLminX,\dtl at thistick) -- (\DTLmaxX,\dtl at thistick);
+ }%
+ \fi
+ \ifDTLxtics
+ \dtlsub{\dtl at ticklength}{\number\DTLticklength}{-\dtl at offset@y}%
+ \dtldiv{\dtl at ticklength}{\dtl at ticklength}{\dtl at scale@y}%
+ \dtldiv{\dtl at ticklength}{\dtl at ticklength}{65536}%
+ \addtolength\dtl at xticlabelheight{\DTLticklabeloffset}%
+ \dtlsub{\dtl at ticlabeloffset}{\number\dtl at xticlabelheight}{-\dtl at offset@y}%
+ \dtldiv{\dtl at ticlabeloffset}{\dtl at ticlabeloffset}{\dtl at scale@y}%
+ \dtldiv{\dtl at ticlabeloffset}{\dtl at ticlabeloffset}{65536}%
+ \@for\dtl at thistick:=\dtl at xticlist\do{%
+ \let\dtl at thisticklabel\dtl at thistick
+ \ifx\dtl at xticlabels\relax
+ \dtlround{\dtl at thislabel}{\dtl at thistick}
+ {\c at DTLplotroundXvar}%
+ \else
+ \dtl at chopfirst\dtl at xticlabels\dtl at thislabel\dtl at rest
+ \let\dtl at xticlabels=\dtl at rest
+ \fi
+ \ifDTLxticsin
+ \draw (\dtl at thistick,\DTLminY) -- ++(0,\dtl at ticklength);
+ \draw (\dtl at thistick,\DTLminY)
+ ++ (0,-\dtl at ticlabeloffset) node {\dtl at thislabel};
+ \else
+ \draw (\dtl at thistick,\DTLminY) -- ++(0,-\dtl at ticklength)
+ ++ (0,-\dtl at ticlabeloffset) node {\dtl at thislabel};
+ \fi
+ \ifDTLbox
+ \ifDTLxticsin
+ \draw (\dtl at thistick,\DTLmaxY) -- ++(0,-\dtl at ticklength);
+ \else
+ \draw (\dtl at thistick,\DTLmaxY) -- ++(0,\dtl at ticklength);
+ \fi
+ \fi
+ }%
+ \fi
+ \ifx\dtl at xlabel\relax
+ \else
+ \dtladd{\dtl at x}{\number\baselineskip}{\dtl at offset@y}%
+ \dtldiv{\dtl at x}{\dtl at x}{\dtl at scale@y}%
+ \dtldiv{\dtl at x}{\dtl at x}{65536}%
+ \dtladd{\dtl at ticlabeloffset}{\dtl at ticlabeloffset}{\dtl at x}%
+ \dtlmul{\dtl at x}{\dtl at dx}{0.5}%
+ \draw (\DTLminX,\DTLminY) ++(\dtl at x,-\dtl at ticlabeloffset)
+ node[anchor=north] {\dtl at xlabel};
+ \fi
+ \ifDTLxminortics
+ \dtlsub{\dtl at ticklength}{\number\DTLminorticklength}{-\dtl at offset@y}%
+ \dtldiv{\dtl at ticklength}{\dtl at ticklength}{\dtl at scale@y}%
+ \dtldiv{\dtl at ticklength}{\dtl at ticklength}{65536}%
+ \@for\dtl at thistick:=\dtl at xminorticlist\do{%
+ \ifDTLxticsin
+ \draw (\dtl at thistick,\DTLminY) -- ++(0,\dtl at ticklength);
+ \draw (\dtl at thistick,\DTLminY)
+ ++ (0,-\dtl at ticlabeloffset) node[anchor=north] {\dtl at thislabel};
+ \else
+ \draw (\dtl at thistick,\DTLminY) -- ++(0,-\dtl at ticklength)
+ ++ (0,-\dtl at ticlabeloffset) node[anchor=north] {\dtl at thislabel};
+ \fi
+ \ifDTLbox
+ \ifDTLxticsin
+ \draw (\dtl at thistick,\DTLmaxY) -- ++(0,-\dtl at ticklength);
+ \else
+ \draw (\dtl at thistick,\DTLmaxY) -- ++(0,\dtl at ticklength);
+ \fi
+ \fi
+ }%
+ \fi
+ \ifDTLytics
+ \dtlsub{\dtl at ticklength}{\number\DTLticklength}{-\dtl at offset@x}%
+ \dtldiv{\dtl at ticklength}{\dtl at ticklength}{\dtl at scale@x}%
+ \dtldiv{\dtl at ticklength}{\dtl at ticklength}{65536}%
+ \dtladd{\dtl at ticlabeloffset}{\number\DTLticklabeloffset}{0}%
+ \dtlsub{\dtl at ticlabeloffset}{\number\DTLticklabeloffset}{-\dtl at offset@x}%
+ \dtldiv{\dtl at ticlabeloffset}{\dtl at ticlabeloffset}{\dtl at scale@x}%
+ \dtldiv{\dtl at ticlabeloffset}{\dtl at ticlabeloffset}{65536}%
+ \@for\dtl at thistick:=\dtl at yticlist\do{%
+ \let\dtl at thisticklabel\dtl at thistick
+ \ifx\dtl at yticlabels\relax
+ \dtlround{\dtl at thislabel}{\dtl at thistick}
+ {\c at DTLplotroundXvar}%
+ \else
+ \dtl at chopfirst\dtl at yticlabels\dtl at thislabel\dtl at rest
+ \let\dtl at yticlabels=\dtl at rest
+ \fi
+ \ifDTLyticsin
+ \draw (\DTLminX,\dtl at thistick) -- ++(\dtl at ticklength,0);
+ \draw (\DTLminX,\dtl at thistick)
+ ++ (-\dtl at ticlabeloffset,0) node[anchor=east] {\dtl at thislabel};
+ \else
+ \draw (\DTLminX,\dtl at thistick) -- ++(-\dtl at ticklength,0)
+ ++ (-\dtl at ticlabeloffset,0) node[anchor=east] {\dtl at thislabel};
+ \fi
+ \ifDTLbox
+ \ifDTLyticsin
+ \draw (\DTLmaxX,\dtl at thistick) -- ++(-\dtl at ticklength,0);
+ \else
+ \draw (\DTLmaxX,\dtl at thistick) -- ++(\dtl at ticklength,0);
+ \fi
+ \fi
+ }%
+ \fi
+ \ifx\dtl at ylabel\relax
+ \else
+ \setlength{\dtl at tmplength}{\baselineskip}%
+ \addtolength{\dtl at tmplength}{\dtl at yticlabelwidth}%
+ \addtolength{\dtl at tmplength}{\DTLticklabeloffset}%
+ \dtlsub{\dtl at ticlabeloffset}{\number\dtl at tmplength}{-\dtl at offset@x}%
+ \dtldiv{\dtl at ticlabeloffset}{\dtl at ticlabeloffset}{\dtl at scale@x}%
+ \dtldiv{\dtl at ticlabeloffset}{\dtl at ticlabeloffset}{65536}%
+ \dtlmul{\dtl at y}{\dtl at dy}{0.5}%
+ \draw (\DTLminX,\DTLminY) ++(-\dtl at ticlabeloffset,\dtl at y)
+ node[rotate=90,anchor=south] {\dtl at ylabel};
+ \fi
+ \ifDTLyminortics
+ \dtlsub{\dtl at ticklength}{\number\DTLminorticklength}{-\dtl at offset@x}%
+ \dtldiv{\dtl at ticklength}{\dtl at ticklength}{\dtl at scale@x}%
+ \dtldiv{\dtl at ticklength}{\dtl at ticklength}{65536}%
+ \@for\dtl at thistick:=\dtl at yminorticlist\do{%
+ \ifDTLyticsin
+ \draw (\DTLminX,\dtl at thistick) -- ++(\dtl at ticklength,0);
+ \else
+ \draw (\DTLminX,\dtl at thistick) -- ++(-\dtl at ticklength,0);
+ \fi
+ \ifDTLbox
+ \ifDTLyticsin
+ \draw (\DTLmaxX,\dtl at thistick) -- ++(-\dtl at ticklength,0);
+ \else
+ \draw (\DTLmaxX,\dtl at thistick) -- ++(\dtl at ticklength,0);
+ \fi
+ \fi
+ }%
+ \fi
+ \end{scope}
+ \@for\dtl at thisdb:=#2\do{%
+ \ifx\dtl at plotmarkcolorlist\@empty
+ \let\dtl at plotmarkcolorlist=\DTLplotmarkcolors
+ \fi
+ \dtl at chopfirst\dtl at plotmarkcolorlist\dtl at thisplotmarkcolor
+ \dtl at remainder
+ \let\dtl at plotmarkcolorlist=\dtl at remainder
+ \ifDTLshowmarkers
+ \ifx\dtl at plotmarklist\@empty
+ \let\dtl at plotmarklist=\DTLplotmarks
+ \fi
+ \dtl at chopfirst\dtl at plotmarklist\dtl at thisplotmark
+ \dtl at remainder
+ \let\dtl at plotmarklist=\dtl at remainder
+ \ifx\dtl at thisplotmark\relax
+ \let\dtl at mark=\relax
+ \else
+ \expandafter\toks@\expandafter{\dtl at thisplotmark}%
+ \ifx\dtl at thisplotmarkcolor\@empty
+ \edef\dtl at mark{\the\toks@}%
+ \else
+ \edef\dtl at mark{%
+ \noexpand\color{\dtl at thisplotmarkcolor}%
+ \the\toks@}%
+ \fi
+ \fi
+ \else
+ \let\dtl at mark=\relax
+ \fi
+ \ifx\dtl at plotlinecolorlist\@empty
+ \let\dtl at plotlinecolorlist=\DTLplotlinecolors
+ \fi
+ \dtl at chopfirst\dtl at plotlinecolorlist\dtl at thisplotlinecolor
+ \dtl at remainder
+ \let\dtl at plotlinecolorlist=\dtl at remainder
+ \ifDTLshowlines
+ \ifx\dtl at plotlinelist\@empty
+ \let\dtl at plotlinelist=\DTLplotlines
+ \fi
+ \dtl at chopfirst\dtl at plotlinelist\dtl at thisplotline
+ \dtl at remainder
+ \let\dtl at plotlinelist=\dtl at remainder
+ \expandafter\ifx\dtl at thisplotline\relax
+ \let\dtl at linestyle=\relax
+ \else
+ \expandafter\toks@\expandafter{\dtl at thisplotline}%
+ \ifx\dtl at thisplotlinecolor\@empty
+ \edef\dtl at linestyle{\the\toks@}%
+ \else
+ \edef\dtl at linestyle{%
+ \noexpand\color{\dtl at thisplotlinecolor}%
+ \the\toks@}%
+ \fi
+ \fi
+ \else
+ \let\dtl at linestyle=\relax
+ \fi
+ \ifnum\dtl at legendsetting>0\relax
+ \dtl at chopfirst\dtl at legendlabels\dtl at thislabel\dtl at rest
+ \let\dtl at legendlabels=\dtl at rest
+ \expandafter\toks@\expandafter{\dtl at mark}%
+ \expandafter\@dtl at toks\expandafter{\dtl at linestyle}%
+ \edef\dtl at addtolegend{\noexpand\DTLaddtoplotlegend
+ {\the\toks@}{\the\@dtl at toks}{\dtl at thislabel}}%
+ \dtl at addtolegend
+ \fi
+ \def\dtl at stream{\pgfplotstreamstart}%
+ \@sDTLforeach[#1]{\dtl at thisdb}{\dtl at x=\dtl at xkey,%
+ \dtl at y=\dtl at ykey}{%
+ \DTLconverttodecimal{\dtl at x}{\dtl at decx}%
+ \DTLconverttodecimal{\dtl at y}{\dtl at decy}%
+ \ifthenelse{%
+ \DTLisclosedbetween{\dtl at x}{\DTLminX}{\DTLmaxX}%
+ \and
+ \DTLisclosedbetween{\dtl at y}{\DTLminY}{\DTLmaxY}%
+ }%
+ {%
+ \expandafter\toks@\expandafter{\dtl at stream}%
+ \dtlmul{\dtl at decx}{\dtl at decx}{\dtl at scale@x}%
+ \dtladd{\dtl at decx}{\dtl at decx}{\dtl at offset@x}%
+ \dtlround{\dtl at decx}{\dtl at decx}{1}%
+ \dtlmul{\dtl at decy}{\dtl at decy}{\dtl at scale@y}%
+ \dtladd{\dtl at decy}{\dtl at decy}{\dtl at offset@y}%
+ \dtlround{\dtl at decy}{\dtl at decy}{1}%
+ \edef\dtl at stream{\the\toks@
+ \noexpand\pgfplotstreampoint
+ {\noexpand\pgfpointxy{\dtl at decx}{\dtl at decy}}}%
+ }{}%
+ }%
+ \expandafter\toks@\expandafter{\dtl at stream}%
+ \edef\dtl at stream{\the\toks@\noexpand\pgfplotstreamend}%
+ \ifx\dtl at linestyle\relax
+ \else
+ \begin{scope}
+ \dtl at linestyle
+ \pgfplothandlerlineto
+ \dtl at stream
+ \pgfusepath{stroke}
+ \end{scope}
+ \fi
+ \ifx\dtl at mark\relax
+ \else
+ \begin{scope}
+ \pgfplothandlermark{\dtl at mark}%
+ \dtl at stream
+ \pgfusepath{stroke}
+ \end{scope}
+ \fi
+ }%
+ \ifcase\dtl at legendsetting
+ % none
+ \or % north
+ \dtlmul{\dtl at decx}{\dtl at dx}{0.5}%
+ \dtladd{\dtl at decx}{\DTLminX}{\dtl at decx}%
+ \dtlmul{\dtl at decx}{\dtl at decx}{\dtl at scale@x}%
+ \dtladd{\dtl at decx}{\dtl at decx}{\dtl at offset@x}%
+ \dtlmul{\dtl at decy}{\DTLmaxY}{\dtl at scale@y}%
+ \dtladd{\dtl at decy}{\dtl at decy}{\dtl at offset@y}%
+ \draw (\dtl at decx,\dtl at decy) ++(0,-\DTLlegendyoffset)
+ node[anchor=north]
+ {\DTLformatlegend
+ {\begin{tabular}{cl}\dtl at legend\end{tabular}}%
+ };
+ \or % north east
+ \dtlmul{\dtl at decx}{\DTLmaxX}{\dtl at scale@x}%
+ \dtladd{\dtl at decx}{\dtl at decx}{\dtl at offset@x}%
+ \dtlmul{\dtl at decy}{\DTLmaxY}{\dtl at scale@y}%
+ \dtladd{\dtl at decy}{\dtl at decy}{\dtl at offset@y}%
+ \draw (\dtl at decx,\dtl at decy) ++(-\DTLlegendxoffset,-\DTLlegendyoffset)
+ node[anchor=north east]
+ {\DTLformatlegend
+ {\begin{tabular}{cl}\dtl at legend\end{tabular}}%
+ };
+ \or % east
+ \dtlmul{\dtl at decy}{\dtl at dy}{0.5}%
+ \dtladd{\dtl at decy}{\DTLminY}{\dtl at decy}%
+ \dtlmul{\dtl at decy}{\dtl at decy}{\dtl at scale@y}%
+ \dtladd{\dtl at decy}{\dtl at decy}{\dtl at offset@y}%
+ \dtlmul{\dtl at decx}{\DTLmaxX}{\dtl at scale@x}%
+ \dtladd{\dtl at decx}{\dtl at decx}{\dtl at offset@x}%
+ \draw (\dtl at decx,\dtl at decy) ++(-\DTLlegendxoffset,0)
+ node[anchor=east]
+ {\DTLformatlegend
+ {\begin{tabular}{cl}\dtl at legend\end{tabular}}%
+ };
+ \or % south east
+ \dtlmul{\dtl at decx}{\DTLmaxX}{\dtl at scale@x}%
+ \dtladd{\dtl at decx}{\dtl at decx}{\dtl at offset@x}%
+ \dtlmul{\dtl at decy}{\DTLminY}{\dtl at scale@y}%
+ \dtladd{\dtl at decy}{\dtl at decy}{\dtl at offset@y}%
+ \draw (\dtl at decx,\dtl at decy) ++(-\DTLlegendxoffset,\DTLlegendyoffset)
+ node[anchor=south east]
+ {\DTLformatlegend
+ {\begin{tabular}{cl}\dtl at legend\end{tabular}}%
+ };
+ \or % south
+ \dtlmul{\dtl at decx}{\dtl at dx}{0.5}%
+ \dtladd{\dtl at decx}{\DTLminX}{\dtl at decx}%
+ \dtlmul{\dtl at decx}{\dtl at decx}{\dtl at scale@x}%
+ \dtladd{\dtl at decx}{\dtl at decx}{\dtl at offset@x}%
+ \dtlmul{\dtl at decy}{\DTLminY}{\dtl at scale@y}%
+ \dtladd{\dtl at decy}{\dtl at decy}{\dtl at offset@y}%
+ \draw (\dtl at decx,\dtl at decy) ++(0,\DTLlegendyoffset)
+ node[anchor=south]
+ {\DTLformatlegend
+ {\begin{tabular}{cl}\dtl at legend\end{tabular}}%
+ };
+ \or % south west
+ \dtlmul{\dtl at decx}{\DTLminX}{\dtl at scale@x}%
+ \dtladd{\dtl at decx}{\dtl at decx}{\dtl at offset@x}%
+ \dtlmul{\dtl at decy}{\DTLminY}{\dtl at scale@y}%
+ \dtladd{\dtl at decy}{\dtl at decy}{\dtl at offset@y}%
+ \draw (\dtl at decx,\dtl at decy) ++(\DTLlegendxoffset,\DTLlegendyoffset)
+ node[anchor=south west]
+ {\DTLformatlegend
+ {\begin{tabular}{cl}\dtl at legend\end{tabular}}%
+ };
+ \or % west
+ \dtlmul{\dtl at decy}{\dtl at dy}{0.5}%
+ \dtladd{\dtl at decy}{\DTLminY}{\dtl at decy}%
+ \dtlmul{\dtl at decy}{\dtl at decy}{\dtl at scale@y}%
+ \dtladd{\dtl at decy}{\dtl at decy}{\dtl at offset@y}%
+ \dtlmul{\dtl at decx}{\DTLminX}{\dtl at scale@x}%
+ \dtladd{\dtl at decx}{\dtl at decx}{\dtl at offset@x}%
+ \draw (\dtl at decx,\dtl at decy) ++(\DTLlegendxoffset,0)
+ node[anchor=west]
+ {\DTLformatlegend
+ {\begin{tabular}{cl}\dtl at legend\end{tabular}}%
+ };
+ \or % north west
+ \dtlmul{\dtl at decx}{\DTLminX}{\dtl at scale@x}%
+ \dtladd{\dtl at decx}{\dtl at decx}{\dtl at offset@x}%
+ \dtlmul{\dtl at decy}{\DTLmaxY}{\dtl at scale@y}%
+ \dtladd{\dtl at decy}{\dtl at decy}{\dtl at offset@y}%
+ \draw (\dtl at decx,\dtl at decy) ++(\DTLlegendxoffset,-\DTLlegendyoffset)
+ node[anchor=north west]
+ {\DTLformatlegend
+ {\begin{tabular}{cl}\dtl at legend\end{tabular}}%
+ };
+ \fi
+ \pgftransformcm{\dtl at scale@x}{0}{0}{\dtl at scale@y}%
+ {\pgfpoint{\dtl at offset@x pt}{\dtl at offset@y pt}}%
+ \let\dtlplothandlermark\@dtlplothandlermark
+ \DTLplotatendtikz
+ \end{tikzpicture}
+ \fi
+ \fi
+\egroup
+}
+\def\dtl at getbounds#1,#2,#3,#4\@nil{%
+\def\DTLminX{#1}%
+\def\DTLminY{#2}%
+\def\DTLmaxX{#3}%
+\def\DTLmaxY{#4}%
+\dtlifnumgt{\DTLminX}{\DTLmaxX}
+{%
+ \PackageError{dataplot}{Min X > Max X in bounds #1,#2,#3,#4}{%
+ The bounds must be specified as minX,minY,maxX,maxY}%
+}{}%
+\dtlifnumgt{\DTLminY}{\DTLmaxY}
+{%
+ \PackageError{dataplot}{Min Y > Max Y in bounds #1,#2,#3,#4}{%
+ The bounds must be specified as minX,minY,maxX,maxY}%
+}{}%
+}
+\newcommand*{\dtl at constructticklist}[4]{%
+ \DTLifFPopenbetween{0}{#1}{#2}%
+ {%
+ \dtlsub{\@dtl at width}{0}{#1}%
+ \dtldiv{\@dtl at neggap}{\@dtl at width}{10}%
+ \dtlifnumlt{\@dtl at neggap}{#3}%
+ {%
+ \edef\@dtl at neggap{#3}%
+ }%
+ {}%
+ \dtldiv{\@dtl at posgap}{#2}{10}%
+ \dtlifnumlt{\@dtl at posgap}{#3}%
+ {%
+ \edef\@dtl at posgap{#3}%
+ }%
+ {}%
+ \dtlmax{\@dtl at gap}{\@dtl at neggap}{\@dtl at posgap}%
+ \dtlifnumgt{\@dtl at gap}{\@dtl at width}%
+ {}%
+ {%
+ \dtl at constructticklistwithgapz{#1}{#2}{#4}{\@dtl at gap}%
+ }%
+ }%
+ {%
+ \dtlsub{\@dtl at width}{#2}{#1}%
+ \dtldiv{\@dtl at gap}{\@dtl at width}{10}%
+ \dtlifnumlt{\@dtl at gap}{#3}%
+ {%
+ \dtlifnumgt{#3}{\@dtl at width}%
+ {%
+ \def#4{#1,#2}%
+ }%
+ {%
+ \dtl at constructticklistwithgap{#1}{#2}{#4}{#3}%
+ }
+ }%
+ {%
+ \dtl at constructticklistwithgap{#1}{#2}{#4}{\@dtl at gap}%
+ }%
+ }%
+}
+\newcommand*{\dtl at constructticklistwithgap}[4]{%
+\edef\@dtl at thistick{#1}%
+\edef#3{#1}%
+\dtladd{\@dtl at thistick}{\@dtl at thistick}{#4}%
+\whiledo{\DTLisFPopenbetween{\@dtl at thistick}{#1}{#2}}{%
+ \expandafter\toks@\expandafter{\@dtl at thistick}%
+ \edef#3{#3,\the\toks@}%
+ \dtladd{\@dtl at thistick}{\@dtl at thistick}{#4}%
+}%
+\expandafter\toks@\expandafter{#2}%
+\edef#3{#3,\the\toks@}%
+}
+\newcommand*{\dtl at constructticklistwithgapz}[4]{%
+ \edef\@dtl at thistick{0}%
+ \edef#3{0}%
+ \dtladd{\@dtl at thistick}{\@dtl at thistick}{#4}%
+ \whiledo{\DTLisFPopenbetween{\@dtl at thistick}{0}{#2}}%
+ {%
+ \expandafter\toks@\expandafter{\@dtl at thistick}%
+ \edef#3{#3,\the\toks@}%
+ \dtladd{\@dtl at thistick}{\@dtl at thistick}{#4}%
+ }%
+ \expandafter\toks@\expandafter{#2}%
+ \edef#3{#3,\the\toks@}%
+ \dtlifnumeq{#1}{0}%
+ {}%
+ {%
+ \edef\@dtl at thistick{0}%
+ \dtlsub{\@dtl at thistick}{\@dtl at thistick}{#4}%
+ \whiledo{\DTLisFPopenbetween{\@dtl at thistick}{#1}{0}}%
+ {%
+ \expandafter\toks@\expandafter{\@dtl at thistick}%
+ \edef#3{\the\toks@,#3}%
+ \dtlsub{\@dtl at thistick}{\@dtl at thistick}{#4}%
+ }%
+ \expandafter\toks@\expandafter{#1}%
+ \edef#3{\the\toks@,#3}%
+ }%
+}
+\newcommand*{\dtl at constructminorticklist}[4]{%
+ \dtlsub{\@dtl at width}{#2}{#1}%
+ \dtlmul{\@dtl at width}{\@dtl at width}{#3}%
+ \dtldiv{\@dtl at gap}{\@dtl at width}{10}%
+ \setlength\dtl at tmplength{\@dtl at gap sp}%
+ \ifdim\dtl at tmplength<\DTLminminortickgap
+ \dtldiv{\@dtl at gap}{\@dtl at width}{4}%
+ \setlength\dtl at tmplength{\@dtl at gap sp}%
+ \ifdim\dtl at tmplength<\DTLminminortickgap
+ \dtldiv{\@dtl at gap}{\@dtl at width}{2}%
+ \setlength\dtl at tmplength{\@dtl at gap sp}%
+ \ifdim\dtl at tmplength<\DTLminminortickgap
+ \let\@dtl at gap=\@dtl at width
+ \fi
+ \fi
+ \fi
+ \dtldiv{\@dtl at gap}{\@dtl at gap}{#3}%
+ \dtl at constructticklistwithgapex{#1}{#2}{\dtl at tmp}{\@dtl at gap}%
+ \ifx#4\@empty
+ \let#4=\dtl at tmp
+ \else
+ \expandafter\toks@\expandafter{#4}%
+ \edef#4{#4,\dtl at tmp}%
+ \fi
+}
+\newcommand*{\dtl at constructticklistwithgapex}[4]{%
+\edef\@dtl at thistick{#1}%
+\let#3=\@empty
+\dtladd{\@dtl at thistick}{\@dtl at thistick}{#4}%
+\whiledo{\DTLisFPopenbetween{\@dtl at thistick}{#1}{#2}}{%
+ \expandafter\toks@\expandafter{\@dtl at thistick}%
+ \ifx#3\@empty
+ \edef#3{\the\toks@}%
+ \else
+ \edef#3{#3,\the\toks@}%
+ \fi
+ \dtladd{\@dtl at thistick}{\@dtl at thistick}{#4}%
+}%
+}
+\newcommand*{\DTLaddtoplotlegend}[3]{%
+\def\dtl at legendline{}%
+\ifx\relax#2\relax
+\else
+ \toks@{#2%
+ \pgfpathmoveto{\pgfpoint{-10pt}{0pt}}%
+ \pgfpathlineto{\pgfpoint{10pt}{0pt}}%
+ \pgfusepath{stroke}}%
+ \edef\dtl at legendline{\the\toks@}%
+\fi
+\ifx\relax#1\relax
+\else
+ \toks@{#1}%
+ \expandafter\@dtl at toks\expandafter{\dtl at legendline}%
+ \edef\dtl at legendline{\the\@dtl at toks\the\toks@}%
+\fi
+\expandafter\toks@\expandafter{\dtl at legendline}%
+\ifx\dtl at legend\@empty
+ \xdef\dtl at legend{\noexpand\tikz\the\toks@; \noexpand& #3}%
+\else
+ \expandafter\@dtl at toks\expandafter{\dtl at legend}%
+ \xdef\dtl at legend{\the\@dtl at toks\noexpand\\%
+ \noexpand\tikz\the\toks@; \noexpand& #3}%
+\fi
+}
+\endinput
+%%
+%% End of file `dataplot-2019-09-27.sty'.
Property changes on: trunk/Master/texmf-dist/tex/latex/datatool/dataplot-2019-09-27.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: trunk/Master/texmf-dist/tex/latex/datatool/dataplot.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/datatool/dataplot.sty 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/tex/latex/datatool/dataplot.sty 2025-03-05 21:33:51 UTC (rev 74461)
@@ -21,7 +21,7 @@
%%
%% The Current Maintainer of this work is Nicola Talbot.
%%
-%% This work consists of the files datatool.dtx and datatool.ins and the derived files datatool-base.sty, datatool-undetermined.ldf, datatool-latin1.ldf, datatool-utf8.ldf, datatool-l3fp.def, datatool-lua.def, datatool-fp.def, datatool-fp.sty, datatool-pgfmath.def, datatool-pgfmath.sty, datatool.sty, datagidx.sty, databib.sty, databar.sty, datapie.sty, dataplot.sty, person.sty, databib.bst.
+%% This work consists of the files datatool.dtx and datatool.ins and the derived files datatool-base.sty, datatool-undetermined.ldf, datatool-latin1.ldf, datatool-utf8.ldf, datatool-l3fp.def, datatool-lua.def, datatool-fp.def, datatool-fp.sty, datatool-pgfmath.def, datatool-pgfmath.sty, datatool.sty, datagidx.sty, databib.sty, databar.sty, datapie.sty, dataplot.sty, person.sty, databib.bst, databar-2019-09-27.sty, databib-2019-09-27.sty, datagidx-2019-09-27.sty, datapie-2019-09-27.sty, dataplot-2019-09-27.sty, datatool-2019-09-27.sty, datatool-base-2019-09-27.sty, datatool-fp-2019-09-27.sty, datatool-pgfmath-2019-09-27.sty, person-2019-09-27.sty.
%%
%% \CharacterTable
%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
@@ -40,8 +40,8 @@
%% Right brace \} Tilde \~}
\NeedsTeXFormat{LaTeX2e}
\DeclareRelease{v2.32}{2019-09-27}{dataplot-2019-09-27.sty}
-\DeclareCurrentRelease{v3.0}{2025-03-03}
-\ProvidesPackage{dataplot}[2025/03/03 v3.0 (NLCT)]
+\DeclareCurrentRelease{v3.0.1}{2025-03-05}
+\ProvidesPackage{dataplot}[2025/03/05 v3.0.1 (NLCT)]
\IfPackageLoadedTF{datatool}
{
\DeclareOption*{\expandafter\DTLsetup\expandafter{\CurrentOption}}
Added: trunk/Master/texmf-dist/tex/latex/datatool/datatool-2019-09-27.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/datatool/datatool-2019-09-27.sty (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/datatool/datatool-2019-09-27.sty 2025-03-05 21:33:51 UTC (rev 74461)
@@ -0,0 +1,3356 @@
+%%
+%% This is file `datatool-2019-09-27.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% datatool.dtx (with options: `datatool-2019-09-27.sty,package')
+%%
+%% datatool.dtx
+%% Copyright 2025 Nicola Talbot
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of LaTeX
+%% version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status `maintained'.
+%%
+%% The Current Maintainer of this work is Nicola Talbot.
+%%
+%% This work consists of the files datatool.dtx and datatool.ins and the derived files datatool-base.sty, datatool-undetermined.ldf, datatool-latin1.ldf, datatool-utf8.ldf, datatool-l3fp.def, datatool-lua.def, datatool-fp.def, datatool-fp.sty, datatool-pgfmath.def, datatool-pgfmath.sty, datatool.sty, datagidx.sty, databib.sty, databar.sty, datapie.sty, dataplot.sty, person.sty, databib.bst, databar-2019-09-27.sty, databib-2019-09-27.sty, datagidx-2019-09-27.sty, datapie-2019-09-27.sty, dataplot-2019-09-27.sty, datatool-2019-09-27.sty, datatool-base-2019-09-27.sty, datatool-fp-2019-09-27.sty, datatool-pgfmath-2019-09-27.sty, person-2019-09-27.sty.
+%%
+%% \CharacterTable
+%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+%% Digits \0\1\2\3\4\5\6\7\8\9
+%% Exclamation \! Double quote \" Hash (number) \#
+%% Dollar \$ Percent \% Ampersand \&
+%% Acute accent \' Left paren \( Right paren \)
+%% Asterisk \* Plus \+ Comma \,
+%% Minus \- Point \. Solidus \/
+%% Colon \: Semicolon \; Less than \<
+%% Equals \= Greater than \> Question mark \?
+%% Commercial at \@ Left bracket \[ Backslash \\
+%% Right bracket \] Circumflex \^ Underscore \_
+%% Grave accent \` Left brace \{ Vertical bar \|
+%% Right brace \} Tilde \~}
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{datatool}[2019/09/27 v2.32 (NLCT)]
+\RequirePackage{xkeyval}
+\RequirePackage{ifthen}
+\RequirePackage{xfor}
+\RequirePackage{substr}
+\RequirePackage{etoolbox}
+\newcommand*{\@dtl at separator}{,}
+\newcommand*{\DTLsetseparator}[1]{%
+ \renewcommand*{\@dtl at separator}{#1}%
+ \@dtl at construct@lopoffs
+}
+\begingroup
+\catcode`\^^I12
+\gdef\DTLsettabseparator{%
+ \catcode`\^^I12
+ \DTLsetseparator{^^I}%
+}
+\gdef\DTLmaketabspace{%
+ \catcode`\^^I10\relax
+}
+\endgroup
+\begingroup
+\catcode`\"12\relax
+\gdef\@dtl at delimiter{"}
+\endgroup
+\newcommand*\DTLsetdelimiter[1]{%
+ \renewcommand*{\@dtl at delimiter}{#1}%
+ \@dtl at construct@lopoffs
+}
+\edef\@dtl at construct@lopoff#1#2{%
+ \noexpand\long
+ \noexpand\def\noexpand\@dtl at lopoff#1##1##2\noexpand\to##3##4{%
+ \noexpand\ifx#2##1\noexpand\relax
+ \noexpand\ifstrempty{##1}%
+ {\noexpand\@dtl at qlopoff#1{}##2\noexpand\to##3##4\relax}%
+ {%
+ \noexpand\dtl at ifsingle{##1}%
+ {\noexpand\@dtl at qlopoff#1##1##2\noexpand\to##3##4\relax}%
+ {\noexpand\@dtl at qlopoff#1{##1}##2\noexpand\to##3##4\relax}%
+ }%
+ \noexpand\else
+ \noexpand\ifstrempty{##1}%
+ {\noexpand\@dtl at lop@ff#1{}##2\noexpand\to##3##4\relax}%
+ {%
+ \noexpand\dtl at ifsingle{##1}%
+ {\noexpand\@dtl at lop@ff#1##1##2\noexpand\to##3##4\relax}%
+ {\noexpand\@dtl at lop@ff#1{##1}##2\noexpand\to##3##4\relax}%
+ }%
+ \noexpand\fi
+ }%
+}
+\edef\@dtl at construct@qlopoff#1#2{%
+ \noexpand\long
+ \noexpand\def\noexpand\@dtl at qlopoff#1#2##1#2#1##2\noexpand\to##3##4{%
+ \noexpand\def##4{##1}%
+ \noexpand\DTLsubstituteall{##4}{#2#2}{#2}%
+ \noexpand\edef\noexpand\@dtl at dosubs{%
+ \noexpand\noexpand\noexpand\DTLsubstituteall{\noexpand\noexpand##4}%
+ {\noexpand\expandafter\noexpand\noexpand\noexpand\csname#2\noexpand\endcsname#2}%
+ {\noexpand\expandafter\noexpand\noexpand\noexpand\csname#2\noexpand\endcsname}%
+ }%
+ \noexpand\@dtl at dosubs
+ \noexpand\def##3{#1##2}%
+ }%
+}
+\edef\@dtl at construct@lop at ff#1{%
+ \noexpand\long
+ \noexpand\def\noexpand\@dtl at lop@ff#1##1#1##2\noexpand\to##3##4{%
+ \noexpand\def##4{##1}%
+ \noexpand\def##3{#1##2}%
+ }%
+}
+\newcommand{\@dtl at construct@lopoffs}{%
+ \edef\@dtl at chars{{\@dtl at separator}{\@dtl at delimiter}}%
+ \expandafter\@dtl at construct@lopoff\@dtl at chars
+ \expandafter\@dtl at construct@qlopoff\@dtl at chars
+ \expandafter\@dtl at construct@lop at ff\expandafter{\@dtl at separator}%
+}
+\define at key{datatool.sty}{separator}{%
+ \DTLsetseparator{#1}%
+}
+\define at key{datatool.sty}{delimiter}{%
+ \DTLsetdelimiter{#1}%
+}
+\define at boolkey{datatool.sty}[dtl]{verbose}[true]{}
+\define at choicekey{datatool.sty}{math}[\val\nr]{fp,pgfmath}{%
+ \renewcommand*\@dtl at mathprocessor{#1}%
+}
+\providecommand*{\@dtl at mathprocessor}{fp}
+\newcommand*{\@dtl at set@options}{}
+\define at choicekey{datatool.sty}{utf8}{true,false}[true]{%
+ \renewcommand*{\@dtl at set@options}{\setbool{@dtl at utf8}{#1}}%
+}
+\ProcessOptionsX
+\@dtl at construct@lopoffs
+\RequirePackage{datatool-base}[=v2.32]
+\@dtl at set@options
+\DeclareRobustCommand{\DTLpar}{\par}
+\newcommand*{\DTLnewdb}[1]{%
+ \DTLifdbexists{#1}%
+ {%
+ \PackageError{datatool}{Database `#1' already exists}{}%
+ }%
+ {%
+ \dtl at message{Creating database `#1'}%
+ \expandafter\newtoks\csname dtldb@#1\endcsname
+ \expandafter\newtoks\csname dtlkeys@#1\endcsname{}%
+ \expandafter\newcount\csname dtlrows@#1\endcsname
+ \expandafter\newcount\csname dtlcols@#1\endcsname
+ }%
+}
+\newcommand*{\DTLcleardb}[1]{%
+ \DTLifdbexists{#1}%
+ {%
+ \dtlforeachkey(\@dtl at key,\@dtl at col,\@dtl at type,\@dtl at head)\in{#1}\do
+ {%
+ \expandafter\let\csname dtl at ci@#1@\@dtl at key\endcsname\undefined
+ }%
+ \csname dtldb@#1\endcsname{}%
+ \csname dtlkeys@#1\endcsname{}%
+ \csname dtlrows@#1\endcsname=0\relax
+ \csname dtlcols@#1\endcsname=0\relax
+ }%
+ {%
+ \PackageError{Can't clear database `#1':
+ database doesn't exist}{}{}%
+ }%
+}
+\newcommand*{\DTLdeletedb}[1]{%
+ \DTLifdbexists{#1}%
+ {%
+ \dtlforeachkey(\@dtl at key,\@dtl at col,\@dtl at type,\@dtl at head)\in{#1}\do
+ {%
+ \expandafter\let\csname dtl at ci@#1@\@dtl at key\endcsname\undefined
+ }%
+ \expandafter\let\csname dtldb@#1\endcsname\undefined
+ \expandafter\let\csname dtlkeys@#1\endcsname\undefined
+ \expandafter\let\csname dtlrows@#1\endcsname\undefined
+ \expandafter\let\csname dtlcols@#1\endcsname\undefined
+ }%
+ {%
+ \PackageError{Can't delete database `#1':
+ database doesn't exist}{}{}%
+ }%
+}
+\newcommand*{\DTLgnewdb}[1]{%
+ \DTLifdbexists{#1}%
+ {%
+ \PackageError{datatool}{Database `#1' already exists}{}%
+ }%
+ {%
+ \dtl at message{Creating database `#1'}%
+ \expandafter\global\expandafter\newtoks\csname dtldb@#1\endcsname
+ \expandafter\global\expandafter\newtoks\csname dtlkeys@#1\endcsname{}%
+ \expandafter\global\expandafter\newcount\csname dtlrows@#1\endcsname
+ \expandafter\global\expandafter\newcount\csname dtlcols@#1\endcsname
+ }%
+}
+\newcommand*{\DTLgdeletedb}[1]{%
+ \DTLifdbexists{#1}%
+ {%
+ \dtlforeachkey(\@dtl at key,\@dtl at col,\@dtl at type,\@dtl at head)\in{#1}\do
+ {%
+ \expandafter\global\expandafter\let\csname dtl at ci@#1@\@dtl at key\endcsname\undefined
+ }%
+ \expandafter\global\expandafter\let\csname dtldb@#1\endcsname\undefined
+ \expandafter\global\expandafter\let\csname dtlkeys@#1\endcsname\undefined
+ \expandafter\global\expandafter\let\csname dtlrows@#1\endcsname\undefined
+ \expandafter\global\expandafter\let\csname dtlcols@#1\endcsname\undefined
+ }%
+ {%
+ \PackageError{Can't delete database `#1':
+ database doesn't exist}{}{}%
+ }%
+}
+\newcommand*{\DTLgcleardb}[1]{%
+ \DTLifdbexists{#1}%
+ {%
+ \dtlforeachkey(\@dtl at key,\@dtl at col,\@dtl at type,\@dtl at head)\in{#1}\do
+ {%
+ \expandafter\global\expandafter\let\csname dtl at ci@#1@\@dtl at key\endcsname\undefined
+ }%
+ \expandafter\global\csname dtldb@#1\endcsname{}%
+ \expandafter\global\csname dtlkeys@#1\endcsname{}%
+ \expandafter\global\csname dtlrows@#1\endcsname=0\relax
+ \expandafter\global\csname dtlcols@#1\endcsname=0\relax
+ }%
+ {%
+ \PackageError{Can't clear database `#1':
+ database doesn't exist}{}{}%
+ }%
+}
+\newcommand*{\DTLrowcount}[1]{%
+ \expandafter\number\csname dtlrows@#1\endcsname
+}
+\newcommand*{\DTLcolumncount}[1]{%
+ \expandafter\number\csname dtlcols@#1\endcsname
+}
+\newcommand{\DTLifdbempty}[3]{%
+ \DTLifdbexists{#1}%
+ {\@DTLifdbempty{#1}{#2}{#3}}%
+ {\PackageError{Can't check if database `#1' is empty:
+ database doesn't exist}{}{}}%
+}
+\newcommand{\@DTLifdbempty}[3]{%
+ \expandafter\ifnum\csname dtlrows@#1\endcsname=0\relax
+ #2%
+ \else
+ #3%
+ \fi
+}
+\newcommand*{\DTLnewrow}{%
+ \@ifstar\@sDTLnewrow\@DTLnewrow
+}
+\newcommand*{\@DTLnewrow}[1]{%
+\DTLifdbexists{#1}%
+ {\@sDTLnewrow{#1}}%
+ {\PackageError{datatool}{Can't add new row to database `#1':
+ database doesn't exist}{}}%
+}
+\newcommand*{\@sDTLnewrow}[1]{%
+ \global\advance\csname dtlrows@#1\endcsname by 1\relax
+ \@dtl at toks@gput at right@cx{dtldb@#1}{%
+ \noexpand\db at row@elt at w%
+ \noexpand\db at row@id at w \number\csname dtlrows@#1\endcsname
+ \noexpand\db at row@id at end@%
+ \noexpand\db at row@id at w \number\csname dtlrows@#1\endcsname
+ \noexpand\db at row@id at end@%
+ \noexpand\db at row@elt at end@%
+ }%
+ \dtl at message{New row added to database `#1'}%
+}
+\newcount\dtlcolumnnum
+\newcount\dtlrownum
+\newcommand*{\DTLifhaskey}{\@ifstar\@sDTLifhaskey\@DTLifhaskey}
+\newcommand{\@DTLifhaskey}[4]{%
+ \DTLifdbexists{#1}%
+ {%
+ \@sDTLifhaskey{#1}{#2}{#3}{#4}%
+ }%
+ {%
+ \PackageError{datatool}{Database `#1' doesn't exist}{}%
+ }%
+}
+\newcommand{\@sDTLifhaskey}[4]{%
+ \@ifundefined{dtl at ci@#1@#2}%
+ {%
+ #4%
+ }%
+ {%
+ #3%
+ }%
+}
+\newcommand*{\DTLgetcolumnindex}{%
+ \@ifstar\@sdtl at getcolumnindex\@dtl at getcolumnindex
+}
+\newcommand*{\@dtl at getcolumnindex}[3]{%
+ \DTLifdbexists{#2}%
+ {%
+ \@sDTLifhaskey{#2}{#3}%
+ {%
+ \@sdtl at getcolumnindex{#1}{#2}{#3}%
+ }%
+ {%
+ \PackageError{datatool}{Database `#2' doesn't contain
+ key `#3'}{}%
+ }%
+ }%
+ {%
+ \PackageError{datatool}{Database `#2' doesn't exist}{}%
+ }%
+}
+\newcommand*{\@sdtl at getcolumnindex}[3]{%
+ \expandafter\let\expandafter#1\csname dtl at ci@#2@#3\endcsname
+}
+\newcommand*{\dtlcolumnindex}[2]{%
+ \csname dtl at ci@#1@#2\endcsname
+}
+\newcommand*{\DTLgetkeyforcolumn}{%
+ \@ifstar\@sdtlgetkeyforcolumn\@dtlgetkeyforcolumn}
+\newcommand*{\@dtlgetkeyforcolumn}[3]{%
+ \DTLifdbexists{#2}%
+ {%
+ \ifnum#3<1\relax
+ \PackageError{datatool}{Invalid column index \number#3}{%
+ Column indices start at 1}%
+ \else
+ \expandafter\ifnum\csname dtlcols@#2\endcsname<#3\relax
+ \PackageError{datatool}{Index \number#3\space out of
+ range for database `#2'}{Database `#2' only has
+ \expandafter\number\csname dtlcols@#2\endcsname\space
+ columns}%
+ \else
+ \@sdtlgetkeyforcolumn{#1}{#2}{#3}%
+ \fi
+ \fi
+ }%
+ {%
+ \PackageError{datatool}{Database `#2' doesn't exists}{}%
+ }%
+}
+\newcommand*{\@sdtlgetkeyforcolumn}[3]{%
+ \edef\@dtl at dogetkeyforcolumn{\noexpand\@dtl at getkeyforcolumn
+ {\noexpand#1}{#2}{\number#3}}%
+ \@dtl at dogetkeyforcolumn
+}
+\newcommand*{\@dtl at getkeyforcolumn}[3]{%
+ \def\@dtl at get@keyforcolumn##1% before stuff
+ \db at plist@elt at w% start of block
+ \db at col@id at w #3\db at col@id at end@% index
+ \db at key@id at w ##2\db at key@id at end@% key
+ \db at type@id at w ##3\db at type@id at end@% data type
+ \db at header@id at w ##4\db at header@id at end@% header
+ \db at col@id at w #3\db at col@id at end@% index
+ \db at plist@elt at end@% end of block
+ ##5\q at nil{\def#1{##2}}%
+ \edef\@dtl at tmp{\expandafter\the\csname dtlkeys@#2\endcsname}%
+ \expandafter\@dtl at get@keyforcolumn\@dtl at tmp
+ \db at plist@elt at w% start of block
+ \db at col@id at w #3\db at col@id at end@ %index
+ \db at key@id at w \@nil\db at key@id at end@% key
+ \db at type@id at w \db at type@id at end@% data type
+ \db at header@id at w \db at header@id at end@% header
+ \db at col@id at w #3\db at col@id at end@% index
+ \db at plist@elt at end@% end of block
+ \q at nil
+}
+\def\DTLunsettype{}
+\def\DTLstringtype{0}
+\def\DTLinttype{1}
+\def\DTLrealtype{2}
+\def\DTLcurrencytype{3}
+\newcommand*{\DTLgetdatatype}{%
+ \@ifstar\@sdtlgetdatatype\@dtlgetdatatype
+}
+\newcommand*{\@dtlgetdatatype}[3]{%
+ \DTLifdbexists{#2}%
+ {%
+ \@sDTLifhaskey{#2}{#3}%
+ {%
+ \@sdtlgetdatatype{#1}{#2}{#3}%
+ }%
+ {%
+ \PackageError{datatool}{Key `#3' undefined in database `#2'}{}%
+ }%
+ }%
+ {%
+ \PackageError{datatool}{Database `#2' doesn't exist}{}%
+ }%
+}
+\newcommand*{\@sdtlgetdatatype}[3]{%
+ \edef\@dtl at dogetdata{\noexpand\@dtl at getdatatype{\noexpand#1}%
+ {\expandafter\the\csname dtlkeys@#2\endcsname}%
+ {\dtlcolumnindex{#2}{#3}}}%
+ \@dtl at dogetdata
+}
+\newcommand*{\@dtl at getdatatype}[3]{%
+ \def\@dtl at get@keydata##1% stuff before
+ \db at plist@elt at w% start of key block
+ \db at col@id at w #3\db at col@id at end@% column index
+ \db at key@id at w ##2\db at key@id at end@% key id
+ \db at type@id at w ##3\db at type@id at end@% data type
+ \db at header@id at w ##4\db at header@id at end@% header
+ \db at col@id at w #3\db at col@id at end@% column index
+ \db at plist@elt at end@% end of key block
+ ##5% stuff afterwards
+ \q at nil{\def#1{##3}}%
+ \@dtl at get@keydata#2\q at nil
+}
+\newcommand*{\@dtl at getprops}[7]{%
+ \def\@dtl at get@keydata##1% stuff before
+ \db at plist@elt at w% start of key block
+ \db at col@id at w #7\db at col@id at end@% column index
+ \db at key@id at w ##2\db at key@id at end@% key id
+ \db at type@id at w ##3\db at type@id at end@% data type
+ \db at header@id at w ##4\db at header@id at end@% header
+ \db at col@id at w #7\db at col@id at end@% column index
+ \db at plist@elt at end@% end of key block
+ ##5% stuff afterwards
+ \q at nil{%
+ \def#1{##2}% key
+ \def#2{##3}% data type
+ #3={##4}% header
+ #4={##1}% before stuff
+ #5={##5}% after stuff
+ }%
+ \@dtl at get@keydata#6\q at nil
+}
+\newtoks\@dtl at before
+\newtoks\@dtl at after
+\newtoks\@dtl at colhead
+\newcommand*{\DTLaddcolumn}{%
+ \@ifstar\@sDTLaddcolumn\@DTLaddcolumn
+}
+\newcommand{\@DTLaddcolumn}[2]{%
+ \DTLifdbexists{#1}%
+ {\@dtl at updatekeys{#1}{#2}{}}%
+ {\PackageError{datatool}{Can't add new column to database `#1':
+ database doesn't exist}{}}%
+}
+\newcommand{\s at DTLaddcolumn}[2]{%
+ \@dtl at updatekeys{#1}{#2}{}%
+}
+\newcommand*{\@dtl at updatekeys}[3]{%
+ \@sDTLifhaskey{#1}{#2}%
+ {%
+ \expandafter\dtlcolumnnum\expandafter
+ =\dtlcolumnindex{#1}{#2}\relax
+ \edef\@dtl at dogetprops{\noexpand\@dtl at getprops
+ {\noexpand\@dtl at key}{\noexpand\@dtl at type}%
+ {\noexpand\@dtl at colhead}{\noexpand\@dtl at before}%
+ {\noexpand\@dtl at after}{\the\csname dtlkeys@#1\endcsname}%
+ {\number\dtlcolumnnum}}%
+ \@dtl at dogetprops
+ \ifstrempty{#3}%
+ {%
+ }%
+ {%
+ \let\@dtl at oldtype\@dtl at type
+ \@dtl at checknumerical{#3}%
+ \ifdefempty{\@dtl at type}%
+ {%
+ \edef\@dtl at type{\number\@dtl at datatype}%
+ }%
+ {%
+ \ifcase\@dtl at datatype % string
+ \def\@dtl at type{0}%
+ \or % int
+ \or % real
+ \ifnum\@dtl at type=1\relax
+ \def\@dtl at type{2}%
+ \fi
+ \or % currency
+ \ifnum\@dtl at type>0\relax
+ \def\@dtl at type{3}%
+ \fi
+ \fi
+ }%
+ \ifx\@dtl at oldtype\@dtl at type
+ \else
+ \@dtl at toks@gconcat at middle@cx{dtlkeys@#1}%
+ {\@dtl at before}%
+ {%
+ \noexpand\db at plist@elt at w% start of key block
+ \noexpand\db at col@id at w \the\dtlcolumnnum
+ \noexpand\db at col@id at end@% column index
+ \noexpand\db at key@id at w #2\noexpand\db at key@id at end@% key id
+ \noexpand\db at type@id at w \@dtl at type
+ \noexpand\db at type@id at end@% data type
+ \noexpand\db at header@id at w \the\@dtl at colhead
+ \noexpand\db at header@id at end@% header
+ \noexpand\db at col@id at w \the\dtlcolumnnum
+ \noexpand\db at col@id at end@% column index
+ \noexpand\db at plist@elt at end@% end of key block
+ }%
+ {\@dtl at after}%
+ \fi
+ }%
+ }%
+ {%
+ \expandafter\global\expandafter\advance
+ \csname dtlcols@#1\endcsname by 1\relax
+ \dtlcolumnnum=\csname dtlcols@#1\endcsname\relax
+ \expandafter\xdef\csname dtl at ci@#1@#2\endcsname{%
+ \number\dtlcolumnnum}%
+ \ifstrempty{#2}%
+ {%
+ \edef\@dtl at type{}% don't know data type yet
+ }%
+ {%
+ \@dtl at checknumerical{#3}%
+ \edef\@dtl at type{\number\@dtl at datatype}%
+ }%
+ \@dtl at toks@gput at right@cx{dtlkeys@#1}%
+ {%
+ \noexpand\db at plist@elt at w
+ \noexpand\db at col@id at w \the\dtlcolumnnum
+ \noexpand\db at col@id at end@
+ \noexpand\db at key@id at w #2\noexpand\db at key@id at end@
+ \noexpand\db at type@id at w \@dtl at type
+ \noexpand\db at type@id at end@
+ \noexpand\db at header@id at w #2\noexpand\db at header@id at end@
+ \noexpand\db at col@id at w \the\dtlcolumnnum
+ \noexpand\db at col@id at end@
+ \noexpand\db at plist@elt at end@
+ }%
+ }%
+}
+\newcommand*{\DTLsetheader}{\@ifstar\@sDTLsetheader\@DTLsetheader}
+\newcommand*{\@DTLsetheader}[3]{%
+ \DTLifdbexists{#1}%
+ {%
+ \@sDTLifhaskey{#1}{#2}%
+ {%
+ \@sDTLsetheader{#1}{#2}{#3}%
+ }%
+ {%
+ \PackageError{datatool}{Database `#1' doesn't contain key
+ `#2'}{}%
+ }%
+ }%
+ {%
+ \PackageError{datatool}{Database `#1' doesn't exist}{}%
+ }%
+}
+\newcommand*{\@sDTLsetheader}[3]{%
+ \expandafter\dtlcolumnnum\expandafter
+ =\dtlcolumnindex{#1}{#2}\relax
+ \@dtl at setheaderforindex{#1}{\dtlcolumnnum}{#3}%
+}
+\newcommand*{\@dtl at setheaderforindex}[3]{%
+ \edef\@dtl at dogetprops{\noexpand\@dtl at getprops
+ {\noexpand\@dtl at key}{\noexpand\@dtl at type}%
+ {\noexpand\@dtl at colhead}{\noexpand\@dtl at before}%
+ {\noexpand\@dtl at after}{\the\csname dtlkeys@#1\endcsname}%
+ {\number#2}}%
+ \@dtl at dogetprops
+ \@dtl at colhead={#3}%
+ \edef\@dtl at colnum{\number#2}\relax
+ \@dtl at toks@gconcat at middle@cx{dtlkeys@#1}%
+ {\@dtl at before}%
+ {%
+ \noexpand\db at plist@elt at w% start of block
+ \noexpand\db at col@id at w \@dtl at colnum
+ \noexpand\db at col@id at end@% index
+ \noexpand\db at key@id at w \@dtl at key\noexpand\db at key@id at end@% key
+ \noexpand\db at type@id at w \@dtl at type
+ \noexpand\db at type@id at end@% data type
+ \noexpand\db at header@id at w \the\@dtl at colhead
+ \noexpand\db at header@id at end@% header
+ \noexpand\db at col@id at w \@dtl at colnum
+ \noexpand\db at col@id at end@% index
+ \noexpand\db at plist@elt at end@% end of block
+ }%
+ {\@dtl at after}%
+}
+\newcommand*{\dtlexpandnewvalue}{%
+ \def\@dtl at setnewvalue##1{\protected at edef\@dtl at tmp{##1}%
+ \expandafter\@dtl at toks\expandafter{\@dtl at tmp}}%
+}
+\newcommand*{\dtlnoexpandnewvalue}{%
+ \def\@dtl at setnewvalue##1{\@dtl at toks{##1}}%
+}
+\dtlnoexpandnewvalue
+\newcommand{\DTLnewdbentry}{%
+ \@ifstar\@sDTLnewdbentry\@DTLnewdbentry
+}
+\newcommand{\@DTLnewdbentry}[3]{%
+ \DTLifdbexists{#1}%
+ {\@sDTLnewdbentry{#1}{#2}{#3}}%
+ {\PackageError{datatool}{Can't add new entry to database `#1':
+ database doesn't exist}{}}%
+}
+\newcommand*{\@sDTLnewdbentry}[3]{%
+ \@dtl at updatekeys{#1}{#2}{#3}%
+ \expandafter\dtlcolumnnum\expandafter
+ =\dtlcolumnindex{#1}{#2}\relax
+ \edef\dtl at dogetrow{\noexpand\dtlgetrow{#1}%
+ {\number\csname dtlrows@#1\endcsname}}%
+ \dtl at dogetrow
+ \edef\dtl at dogetentry{\noexpand\dtlgetentryfromcurrentrow
+ {\noexpand\dtl at entry}{\number\dtlcolumnnum}%
+ }%
+ \dtl at dogetentry
+ \ifx\dtl at entry\dtlnovalue
+ \@dtl at setnewvalue{#3}%
+ \@dtl at toks@gconcat at middle@cx{dtldb@#1}%
+ {\dtlbeforerow}%
+ {%
+ \noexpand\db at row@elt at w%
+ \noexpand\db at row@id at w \number\csname dtlrows@#1\endcsname
+ \noexpand\db at row@id at end@%
+ \the\dtlcurrentrow
+ \noexpand\db at col@id at w \number\dtlcolumnnum
+ \noexpand\db at col@id at end@%
+ \noexpand\db at col@elt at w \the\@dtl at toks
+ \noexpand\db at col@elt at end@%
+ \noexpand\db at col@id at w \number\dtlcolumnnum
+ \noexpand\db at col@id at end@%
+ \noexpand\db at row@id at w \number\csname dtlrows@#1\endcsname
+ \noexpand\db at row@id at end@%
+ \noexpand\db at row@elt at end@%
+ }%
+ {\dtlafterrow}%
+ \dtl at message{Added #2\space -> #3\space to database `#1'}%
+ \else
+ \PackageError{datatool}{Can't add entry with ID `#2' to
+ current row of database `#1'}{There is already an entry with
+ this ID in the current row}%
+ \fi
+}
+\newcommand{\DTLifdbexists}[3]{%
+ \@ifundefined{dtldb@#1}{#3}{#2}}
+\newcommand*{\DTLassign}[3]{%
+ \DTLifdbexists{#1}
+ {%
+ {%
+ \dtlgetrow{#1}{#2}%
+ \@dtl at assign{#3}{#1}%
+ }%
+ }%
+ {%
+ \PackageError{datatool}{Database `#1' doesn't exist}{}%
+ }%
+}
+\newcommand*{\DTLassignfirstmatch}[4]{%
+ \dtl at assignfirstmatch{#3}{#1}{#2}{#4}%
+}
+\newcommand*{\xDTLassignfirstmatch}[4]{%
+ \protected at edef\@dtl at asg@value{\expandonce{#3}}%
+ \expandafter\dtl at assignfirstmatch\expandafter
+ {\@dtl at asg@value}{#1}{#2}{#4}%
+}
+\newcommand*{\dtl at assignfirstmatch}[4]{%
+ \DTLifdbexists{#2}%
+ {%
+ {%
+ \dtlgetrowindex{\dtl at asg@rowidx}{#2}{\dtlcolumnindex{#2}{#3}}{#1}%
+ \ifx\dtl at asg@rowidx\dtlnovalue
+ \PackageError{datatool}{No match found for
+ \string\DTLassignfirstmatch{#2}{#3}{#1}{#4}}{}%
+ \else
+ \dtlgetrow{#2}{\dtl at asg@rowidx}%
+ \@dtl at assign{#4}{#2}%
+ \fi
+ }%
+ }%
+ {%
+ \PackageError{datatool}{Data base `#2' doesn't exist}{}%
+ }%
+}
+\newcommand*{\@dtl at assign}[2]{%
+ \ifstrempty{#1}{}%
+ {%
+ \@dtl at assigncmd#1,\@nil\@@{#2}%
+ }%
+}
+\def\@dtl at assigncmd#1#2=#3,#4\@@#5{%
+ \edef\@dtl at dbname{#5}%
+ \@sDTLifhaskey{#5}{#3}%
+ {%
+ \edef\@dtl at dogetentry{%
+ \noexpand\dtlgetentryfromcurrentrow
+ {\noexpand#1}{\dtlcolumnindex{#5}{#3}}}%
+ \@dtl at dogetentry
+ \ifdefequal{#1}{\dtlnovalue}%
+ {%
+ \@@dtl at setnull{#1}{#3}%
+ }%
+ {}%
+ \global\let#1=#1\relax
+ }%
+ {%
+ \PackageError{datatool}{Can't assign \string#1\space: there
+ is no key `#3' in data base `#5'}{}%
+ \global\let#1\DTLstringnull
+ }%
+ \def\dtl at tmp{#4}%
+ \ifx\@nnil\dtl at tmp
+ \let\@dtl at next\@dtl at assigncmdnoop
+ \else
+ \let\@dtl at next\@dtl at assigncmd
+ \fi
+ \@dtl at next#4\@@{#5}%
+}
+\def\@dtl at assigncmdnoop#1\@@#2{}
+\newcommand*{\@dtl at setnull}[2]{%
+ \@sDTLifhaskey{\@dtl at dbname}{#2}%
+ {%
+ \@@dtl at setnull{#1}{#2}%
+ }%
+ {%
+ \global\let#1=\DTLstringnull
+ }%
+}
+\newcommand*{\@@dtl at setnull}[2]{%
+ \@sdtlgetdatatype{\@dtl at type}{\@dtl at dbname}{#2}%
+ \ifnum0\@dtl at type=0\relax
+ \global\let#1=\DTLstringnull
+ \else
+ \global\let#1=\DTLnumbernull
+ \fi
+}
+\newcommand*{\DTLstringnull}{\@dtlstringnull}
+\newcommand*{\@dtlstringnull}{NULL}
+\newcommand*{\DTLnumbernull}{\@dtlnumbernull}
+\newcommand*{\@dtlnumbernull}{0}
+\newcommand*{\DTLifnull}[3]{%
+ \ifx#1\dtlnovalue
+ #2%
+ \else
+ \ifx#1\DTLstringnull
+ #2%
+ \else
+ \ifx#1\DTLnumbernull
+ #2%
+ \else
+ #3%
+ \fi
+ \fi
+ \fi
+}
+\newcommand*{\DTLifnullorempty}[3]{%
+ \ifdefempty{#1}{#2}{\DTLifnull{#1}{#2}{#3}}%
+}
+\def\@dtlnovalue{Undefined Value}
+\def\dtlnovalue{\@dtlnovalue}
+\newcommand*{\DTLgetkeydata}{%
+ \@ifstar\@sdtlgetkeydata\@dtlgetkeydata
+}
+\newcommand*{\@dtlgetkeydata}[5]{%
+ \DTLifdbexists{#2}%
+ {%
+ \@sDTLifhaskey{#2}{#1}%
+ {%
+ \@sdtlgetkeydata{#1}{#2}{#3}{#4}{#5}%
+ }%
+ {%
+ \PackageError{datatool}{Key `#1' not defined in database
+ `#2'}{}%
+ }%
+ }%
+ {%
+ \PackageError{datatool}{Database `#2' doesn't exist}{}%
+ }%
+}
+\newcommand*{\@sdtlgetkeydata}[5]{%
+ \@sdtl at getcolumnindex{#3}{#2}{#1}%
+ \edef\@dtl at dogetkeydata{\noexpand\@dtl at getprops
+ {\noexpand\@dtl at key}{\noexpand#4}{\noexpand\@dtl at colhead}%
+ {\noexpand\@dtl at before}{\noexpand\@dtl at after}%
+ {\expandafter\the\csname dtlkeys@#2\endcsname}%
+ {#3}}%
+ \@dtl at dogetkeydata
+ \edef#5{\the\@dtl at toks}%
+}
+\newcommand{\dtl at gathervalues}[3][key]{%
+ \dtlforeachkey(\@dtl at key,\@dtl at col,\@dtl at type,\@dtl at head)\in{#2}\do
+ {%
+ \dtlgetentryfromrow{\@dtl at tmp}{\@dtl at col}{#3}%
+ \ifx\@dtl at tmp\dtlnovalue
+ \@dtl at setnull{\@dtl at tmp}{\@dtl at key}%
+ \fi
+ \expandafter\let\csname @dtl@#1@\@dtl at key\endcsname\@dtl at tmp
+ }%
+}
+\newcommand{\dtl at g@gathervalues}[3][key]{%
+ \dtlforeachkey(\@dtl at key,\@dtl at col,\@dtl at type,\@dtl at head)\in{#2}\do
+ {%
+ \dtlgetentryfromrow{\@dtl at tmp}{\@dtl at col}{#3}%
+ \ifx\@dtl at tmp\dtlnovalue
+ \@dtl at setnull{\@dtl at tmp}{\@dtl at key}%
+ \fi
+ \expandafter\global
+ \expandafter\let\csname @dtl@#1@\@dtl at key\endcsname\@dtl at tmp
+ }%
+}
+\newtoks\dtlcurrentrow
+\newtoks\dtlbeforerow
+\newtoks\dtlafterrow
+
+\newcommand*{\dtlgetrow}[2]{%
+ \dtlrownum=#2\relax
+ \edef\dtldbname{#1}%
+ \expandafter\toks@\expandafter=\csname dtldb@#1\endcsname
+ \edef\@dtl at dogetrow{\noexpand\@dtlgetrow{\the\toks@}{\number#2}}%
+ \@dtl at dogetrow
+}
+\newcommand{\edtlgetrowforvalue}[3]{%
+ \protected at edef\@dtl at dogetrowforvalue{%
+ \noexpand\dtlgetrowforvalue{#1}{#2}{#3}}%
+ \@dtl at dogetrowforvalue
+}
+\newcommand{\DTLfetch}[4]{%
+ \edtlgetrowforvalue{#1}{\dtlcolumnindex{#1}{#2}}{#3}%
+ \dtlgetentryfromcurrentrow{\dtlcurrentvalue}{\dtlcolumnindex{#1}{#4}}%
+ \dtlcurrentvalue
+}
+\newcommand*{\dtlgetrowforvalue}[3]{%
+ \dtlgetrowindex{\dtl at rowidx}{#1}{#2}{#3}%
+ \ifx\dtl at rowidx\dtlnovalue
+ \PackageError{datatool}{No row found in database `#1' for
+ column `\number#2' matching `#3'}{}%
+ \else
+ \dtlrownum=\dtl at rowidx\relax
+ \edef\dtldbname{#1}%
+ \expandafter\toks@\expandafter=\csname dtldb@#1\endcsname
+ \edef\@dtl at dogetrow{\noexpand\@dtlgetrow{\the\toks@}{\dtl at rowidx}}%
+ \@dtl at dogetrow
+ \fi
+}
+\newcommand*{\@dtlgetrow}[2]{%
+ \def\@dtl at getrow##1% before stuff
+ \db at row@elt at w% start of the row
+ \db at row@id at w #2\db at row@id at end@% row id
+ ##2%
+ \db at row@id at w #2\db at row@id at end@% row id
+ \db at row@elt at end@% end of the row
+ ##3% after stuff
+ \q at nil{\dtlbeforerow={##1}\dtlcurrentrow={##2}\dtlafterrow={##3}}%
+ \@dtl at getrow#1\q at nil
+}
+\newcommand*{\dtlrecombine}{%
+ \@dtl at toks@gconcat at middle@cx{dtldb@\dtldbname}%
+ {\dtlbeforerow}%
+ {%
+ \noexpand\db at row@elt at w
+ \noexpand\db at row@id at w
+ \number\dtlrownum
+ \noexpand\db at row@id at end@
+ \the\dtlcurrentrow
+ \noexpand\db at row@id at w
+ \number\dtlrownum
+ \noexpand\db at row@id at end@
+ \noexpand\db at row@elt at end@
+ }%
+ {\dtlafterrow}%
+}
+\newcommand{\dtlrecombineomitcurrent}{%
+ \dtl at decrementrows{\dtlafterrow}{\dtlrownum}
+ \csname dtldb@\dtldbname\endcsname=\dtlbeforerow
+ \@dtl at toks@gput at right@cx{dtldb@\dtldbname}{\the\dtlafterrow}%
+ \dtl at message{Removed row \number\dtlrownum\space in database
+ `\dtldbname'}%
+}
+\newcommand*{\dtlsplitrow}[4]{%
+ \def\@dtlsplitrow##1%before stuff
+ \db at col@id at w #2\db at col@id at end@% column id
+ ##2% unwanted stuff
+ \db at col@id at w #2\db at col@id at end@% column id
+ ##3% after stuff
+ \q at nil{\def#3{##1}\def#4{##3}}%
+ \@dtlsplitrow#1\q at nil
+}
+\newcommand*{\dtlreplaceentryincurrentrow}[2]{%
+ \edef\@dtl at do@splitrow{\noexpand\dtlsplitrow
+ {\the\dtlcurrentrow}%
+ {\number#2}%
+ {\noexpand\@dtl at before@cs}%
+ {\noexpand\@dtl at after@cs}}%
+ \@dtl at do@splitrow
+ \toks@{#1}%
+ \edef\@dtl at stuff{%
+ \expandonce\@dtl at before@cs
+ \noexpand\db at col@id at w \number#2\noexpand
+ \noexpand\db at col@id at end@% column id
+ \noexpand\db at col@elt at w
+ \the\toks@
+ \noexpand\db at col@elt at end@
+ \noexpand\db at col@id at w \number#2\noexpand
+ \noexpand\db at col@id at end@% column id
+ \expandonce\@dtl at after@cs
+ }%
+ \expandafter\dtlcurrentrow\expandafter{\@dtl at stuff}%
+ \@sdtlgetkeyforcolumn{\@dtl at key}{\dtldbname}{#2}%
+ \@dtl at updatekeys{\dtldbname}{\@dtl at key}{#1}%
+ \dtl at message{Updated \@dtl at key\space -> #1\space in database
+ `\dtldbname'}%
+}
+\newcommand*{\dtlremoveentryincurrentrow}[1]{%
+ \edef\@dtl at do@splitrow{\noexpand\dtlsplitrow
+ {\the\dtlcurrentrow}%
+ {\number#1}%
+ {\noexpand\@dtl at before@cs}%
+ {\noexpand\@dtl at after@cs}}%
+ \@dtl at do@splitrow
+ \edef\@dtl at stuff{%
+ \expandonce\@dtl at before@cs
+ \expandonce\@dtl at after@cs
+ }%
+ \expandafter\dtlcurrentrow\expandafter{\@dtl at stuff}%
+ \dtl at message{Removed entry from column \number#1\space\space in database
+ `\dtldbname'}%
+}
+\newcommand*{\dtlswapentriesincurrentrow}[2]{%
+ \dtlgetentryfromcurrentrow{\@dtl at entryI}{#1}%
+ \dtlgetentryfromcurrentrow{\@dtl at entryII}{#2}%
+ \expandafter\dtlreplaceentryincurrentrow\expandafter
+ {\@dtl at entryII}{#1}%
+ \expandafter\dtlreplaceentryincurrentrow\expandafter
+ {\@dtl at entryI}{#2}%
+}
+\newcommand*{\dtlgetentryfromcurrentrow}[2]{%
+ \dtlgetentryfromrow{#1}{#2}{\dtlcurrentrow}%
+}
+\newcommand*{\dtlgetentryfromrow}[3]{%
+ \edef\@dtl at do@getentry{\noexpand\dtl at getentryfromrow
+ {\noexpand#1}{\number#2}{\the#3}}%
+ \@dtl at do@getentry
+}
+\newcommand*{\dtl at getentryfromrow}[3]{%
+ \def\dtl at dogetentry##1% before stuff
+ \db at col@id at w #2\db at col@id at end@% Column id
+ \db at col@elt at w ##2\db at col@elt at end@% Value
+ \db at col@id at w #2\db at col@id at end@% Column id
+ ##3% Remaining stuff
+ \q at nil{\def#1{##2}}%
+ \dtl at dogetentry#3%
+ \db at col@id at w #2\db at col@id at end@%
+ \db at col@elt at w \@dtlnovalue\db at col@elt at end@%
+ \db at col@id at w #2\db at col@id at end@%
+ \q at nil
+}
+\newcommand*{\dtlappendentrytocurrentrow}[2]{%
+ \@dtl at updatekeys{\dtldbname}{#1}{#2}%
+ \expandafter\dtlcolumnnum\expandafter
+ =\dtlcolumnindex{\dtldbname}{#1}\relax
+ \edef\dtl at dogetentry{\noexpand\dtlgetentryfromcurrentrow
+ {\noexpand\dtl at entry}{\number\dtlcolumnnum}%
+ }%
+ \dtl at dogetentry
+ \ifx\dtl at entry\dtlnovalue
+ \protected at edef\@dtl at tmp{#2}%
+ \expandafter\@dtl at toks\expandafter{\@dtl at tmp}%
+ \@dtl at toks@gput at right@cx{dtlcurrentrow}%
+ {%
+ \noexpand\db at col@id at w
+ \number\dtlcolumnnum
+ \noexpand\db at col@id at end@
+ \noexpand\db at col@elt at w
+ \the\@dtl at toks
+ \noexpand\db at col@elt at end@
+ \noexpand\db at col@id at w
+ \number\dtlcolumnnum
+ \noexpand\db at col@id at end@
+ }%
+ \dtl at message{Appended #1\space -> #2\space to database
+ `\dtldbname'}%
+ \else
+ \PackageError{datatool}{Can't append entry to row:
+ there is already an entry for key `#1' in this row}{}%
+ \fi
+}
+\newcommand*{\dtlupdateentryincurrentrow}[2]{%
+ \@dtl at updatekeys{\dtldbname}{#1}{#2}%
+ \expandafter\dtlcolumnnum\expandafter
+ =\dtlcolumnindex{\dtldbname}{#1}\relax
+ \edef\dtl at dogetentry{\noexpand\dtlgetentryfromcurrentrow
+ {\noexpand\dtl at entry}{\number\dtlcolumnnum}%
+ }%
+ \dtl at dogetentry
+ \ifx\dtl at entry\dtlnovalue
+ \protected at edef\@dtl at tmp{#2}%
+ \expandafter\@dtl at toks\expandafter{\@dtl at tmp}%
+ \@dtl at toks@gput at right@cx{dtlcurrentrow}%
+ {%
+ \noexpand\db at col@id at w
+ \number\dtlcolumnnum
+ \noexpand\db at col@id at end@
+ \noexpand\db at col@elt at w
+ \the\@dtl at toks
+ \noexpand\db at col@elt at end@
+ \noexpand\db at col@id at w
+ \number\dtlcolumnnum
+ \noexpand\db at col@id at end@
+ }%
+ \dtl at message{Appended #1\space -> #2\space to database
+ `\dtldbname'}%
+ \else
+ \toks@{#2}%
+ \edef\do at dtlreplaceincurrentrow{%
+ \noexpand\dtlreplaceentryincurrentrow{\the\toks@}{\number\dtlcolumnnum}%
+ }%
+ \do at dtlreplaceincurrentrow
+ \fi
+}
+\newcommand*{\DTLgetvalue}[4]{%
+ \edef\dtl at dogetvalue{\noexpand\dtl at getvalue{\noexpand#1}{#2}%
+ {\number#3}{\number#4}}%
+ \dtl at dogetvalue
+}
+\newcommand*{\dtl at getvalue}[4]{%
+ \def\@dtl at getvalue ##1% stuff before row <r>
+ \db at row@id at w #3\db at row@id at end@% row <r> id
+ ##2% stuff in row <r> before column <c>
+ \db at col@id at w #4\db at col@id at end@% column <c> id
+ \db at col@elt at w ##3\db at col@elt at end@% value
+ ##4% stuff after value
+ \q at nil{\def#1{##3}}%
+ \toks@=\csname dtldb@#2\endcsname
+ \expandafter\@dtl at getvalue\the\toks@% contents of data base
+ \db at row@id at w #3\db at row@id at end@%
+ \db at col@id at w #4\db at col@id at end@%
+ \db at col@elt at w \@dtlnovalue\db at col@elt at end@% undefined value
+ \q at nil
+ \ifx#1\dtlnovalue
+ \PackageError{datatool}{There is no element at (row=#3,\space
+ column=#4) in database `#2'}{}%
+ \fi
+}
+\newcommand*{\DTLgetlocation}[4]{%
+ \def\@dtl at getlocation##1% stuff before value
+ \db at col@elt at w #4\db at col@elt at end@% value
+ \db at col@id at w ##2\db at col@id at end@% column id
+ ##3% stuff after this column
+ \db at row@id at w ##4\db at row@id at end@% row id
+ ##5% stuff after row
+ \q at nil{\def#1{##4}\def#2{##2}}%
+ \toks@=\csname dtldb@#3\endcsname
+ \expandafter\@dtl at getlocation\the\toks@% contents of data base
+ \db at col@elt at w #4\db at col@elt at end@% value
+ \db at col@id at w \@dtlnovalue\db at col@id at end@% undefined column id
+ \db at row@id at w \@dtlnovalue\db at row@id at end@% undefined row id
+ \q at nil
+ \ifx#1\dtlnovalue
+ \PackageError{datatool}{There is no element `#4' in database `#3'}{}%
+ \fi
+}
+\newcommand*{\DTLgetrowindex}[4]{%
+ \toks@{#4}%
+ \edef\dtl at dogetrowindex{\noexpand\@dtlgetrowindex{\noexpand#1}{#2}{\number#3}{\the\toks@}}%
+ \dtl at dogetrowindex
+ \ifx#1\dtlnovalue
+ \PackageError{datatool}{There is no element `#4' for column
+ \number#3\space in database `#2'}{}%
+ \fi
+}
+\newcommand*{\dtlgetrowindex}[4]{%
+ \toks@{#4}%
+ \edef\dtl at dogetrowindex{\noexpand\@dtlgetrowindex{\noexpand#1}{#2}{\number#3}{\the\toks@}}%
+ \dtl at dogetrowindex
+}
+\newcommand*{\xdtlgetrowindex}[4]{%
+ \protected at edef\dtl at dogetrowindex{\noexpand\@dtlgetrowindex{\noexpand#1}{#2}{\number#3}{#4}}%
+ \dtl at dogetrowindex
+}
+\newcommand*{\@dtlgetrowindex}[4]{%
+ \def\@dtl at getrowindex##1% stuff before value
+ \db at col@elt at w #4\db at col@elt at end@% value
+ \db at col@id at w #3\db at col@id at end@% column id
+ ##2% stuff after this column
+ \db at row@id at w ##3\db at row@id at end@% row id
+ ##4% stuff after row
+ \q at nil{\def#1{##3}}%
+ \toks@=\csname dtldb@#2\endcsname
+ \expandafter\@dtl at getrowindex\the\toks@% contents of data base
+ \db at col@elt at w #4\db at col@elt at end@% value
+ \db at col@id at w #3\db at col@id at end@% column id
+ \db at row@id at w \@dtlnovalue\db at row@id at end@% undefined row id
+ \q at nil
+}
+
+\long\def\@dtlforeachrow(#1,#2)\in#3\do#4{%
+ \edef\dtl at tmp{\expandafter\the\csname dtldb@#3\endcsname}%
+ \expandafter\@dtl at foreachrow\dtl at tmp
+ \db at row@elt at w%
+ \db at row@id at w \@nil\db at row@id at end@%
+ \db at row@id at w \@nil\db at row@id at end@%
+ \db at row@elt at end@%
+ \@@{#1}{#2}{#4}\q at nil
+}
+\long\def\@dtl at foreachrow\db at row@elt at w%
+\db at row@id at w #1\db at row@id at end@%
+#2\db at row@id at w #3\db at row@id at end@%
+\db at row@elt at end@#4\@@#5#6#7\q at nil{%
+ \gdef#5{#1}%
+ \gdef\@dtl at loopbody{#7}%
+ \global\advance\@dtl at foreach@level by 1\relax
+ \ifx#5\@nnil
+ \expandafter\global\expandafter
+ \let\csname @dtl at foreachnext\the\@dtl at foreach@level\endcsname
+ =\@dtl at foreachnoop
+ \else
+ \gdef#6{#2}%
+ \expandafter\let
+ \csname @dtl at break@\the\@dtl at foreach@level\endcsname
+ \dtlbreak
+ \gdef\dtlbreak{\expandafter\global\expandafter
+ \let\csname @dtl at foreachnext\the\@dtl at foreach@level\endcsname
+ =\@dtl at foreachnoop}%
+ \expandafter\global\expandafter
+ \let\csname @dtl at foreachnext\the\@dtl at foreach@level\endcsname
+ =\@dtl at foreachrow
+ \@dtl at loopbody
+ \expandafter\let\expandafter\dtlbreak
+ \csname @dtl at break@\the\@dtl at foreach@level\endcsname
+ \fi
+ \expandafter\let\expandafter\@dtl at foreachnext
+ \csname @dtl at foreachnext\the\@dtl at foreach@level\endcsname
+ \global\advance\@dtl at foreach@level by -1\relax
+ \@dtl at foreachnext#4\@@{#5}{#6}{#7}\q at nil
+}
+\long\def\@dtl at foreachnoop#1\@@#2\q at nil{}
+\long\def\dtlforeachkey(#1,#2,#3,#4)\in#5\do#6{%
+ \gdef\@dtl at loopbody{#6}%
+ \edef\@dtl at keys{\expandafter\the\csname dtlkeys@#5\endcsname}%
+ \expandafter\@dtl at foreachkey\@dtl at keys
+ \db at plist@elt at w%
+ \db at col@id at w -1\db at col@id at end@%
+ \db at key@id at w \db at key@id at end@%
+ \db at type@id at w \db at type@id at end@%
+ \db at header@id at w \db at header@id at end@%
+ \db at col@id at w -1\db at col@id at end@%
+ \db at plist@elt at end@%
+ \@@{\@dtl at updatefkcs{#1}{#2}{#3}{#4}}\q at nil
+}
+\newcommand*{\@dtl at updatefkcs}[8]{%
+ \gdef#1{#5}%
+ \gdef#2{#6}%
+ \gdef#3{#7}%
+ \gdef#4{#8}%
+}
+\long\def\@dtl at foreachkey\db at plist@elt at w%
+\db at col@id at w #1\db at col@id at end@%
+\db at key@id at w #2\db at key@id at end@%
+\db at type@id at w #3\db at type@id at end@%
+\db at header@id at w #4\db at header@id at end@%
+\db at col@id at w #5\db at col@id at end@%
+\db at plist@elt at end@#6\@@#7\q at nil{%
+ \ifnum#1=-1\relax
+ \let\@dtl at foreachnext\@dtl at foreachnoop
+ \else
+ #7{#2}{#1}{#3}{#4}%
+ \global\advance\@dtl at foreach@level by 1\relax
+ \expandafter\let
+ \csname @dtl at break@\the\@dtl at foreach@level\endcsname
+ \dtlbreak
+ \gdef\dtlbreak{\expandafter\global\expandafter
+ \let\csname @dtl at foreachnext\the\@dtl at foreach@level\endcsname
+ =\@dtl at foreachnoop}%
+ \expandafter\global\expandafter
+ \let\csname @dtl at foreachnext\the\@dtl at foreach@level\endcsname
+ =\@dtl at foreachkey
+ \@dtl at loopbody
+ \expandafter\let\expandafter\@dtl at foreachnext
+ \csname @dtl at foreachnext\the\@dtl at foreach@level\endcsname
+ \expandafter\let\expandafter\dtlbreak
+ \csname @dtl at break@\the\@dtl at foreach@level\endcsname
+ \global\advance\@dtl at foreach@level by -1\relax
+ \fi
+ \@dtl at foreachnext#6\@@{#7}\q at nil
+}
+\newcommand*{\dtlforcolumn}{\@ifstar\@sdtlforcolumn\@dtlforcolumn}
+\newcommand{\@dtlforcolumn}[4]{%
+ \DTLifdbexists{#2}%
+ {%
+ \@DTLifhaskey{#2}{#3}%
+ {%
+ \@sdtlforcolumn{#1}{#2}{#3}{#4}%
+ }%
+ {%
+ \PackageError{datatool}{Database `#2' doesn't contain
+ key `#3'}{}%
+ }%
+ }%
+ {%
+ \PackageError{datatool}{Database `#2' doesn't exist}{}%
+ }%
+}
+\newcommand{\@sdtlforcolumn}[4]{%
+ \toks@{#4}%
+ \edef\@dtl at doforcol{\noexpand\dtl at forcolumn{\noexpand#1}%
+ {\expandafter\the\csname dtldb@#2\endcsname}%
+ {\dtlcolumnindex{#2}{#3}}{\the\toks@}%
+ }%
+ \@dtl at doforcol%
+}
+\newcommand*{\dtlforcolumnidx}{%
+ \@ifstar\@sdtlforcolumnidx\@dtlforcolumnidx
+}
+\newcommand{\@dtlforcolumnidx}[4]{%
+ \DTLifdbexists{#2}%
+ {%
+ \expandafter\ifnum\csname dtlcols@#2\endcsname<#3\relax
+ \PackageError{datatool}{Column index \number#3\space out of
+ bounds for database `#2'}{Database `#2' only has
+ \expandafter\number\csname dtlcols@#2\endcsname\space
+ columns}%
+ \else
+ \ifnum#3<1\relax
+ \PackageError{datatool}{Column index \number#3\space out of
+ bounds for database `#2'}{Indices start from 1}%
+ \else
+ \@sdtlforcolumnidx{#1}{#2}{#3}{#4}%
+ \fi
+ \fi
+ }%
+ {%
+ \PackageError{datatool}{Database `#2' doesn't exist}{}%
+ }%
+}
+\newcommand{\@sdtlforcolumnidx}[4]{%
+ \toks@{#4}%
+ \edef\@dtl at doforcol{\noexpand\dtl at forcolumn{\noexpand#1}%
+ {\expandafter\the\csname dtldb@#2\endcsname}%
+ {\number#3}{\the\toks@}%
+ }%
+ \@dtl at doforcol
+}
+\newcommand{\dtl at forcolumn}[4]{%
+ \let\@dtl at oldbreak\dtlbreak
+ \def\dtlbreak{\let\@dtl at forcolnext=\@dtl at forcolnoop}%
+ \def\@dtl at forcolumn##1% before stuff
+ \db at col@id at w #3\db at col@id at end@% column index
+ \db at col@elt at w ##2\db at col@elt at end@% entry
+ \db at col@id at w #3\db at col@id at end@% column index
+ ##3% after stuff
+ \q at nil{%
+ \def#1{##2}% assign value to <cs>
+ \ifx#1\@nnil
+ \let\@dtl at forcolnext=\@dtl at forcolnoop
+ \else
+ #4%
+ \let\@dtl at forcolnext=\@dtl at forcolumn
+ \fi
+ \@dtl at forcolnext##3\q at nil
+ }%
+ \@dtl at forcolumn#2%
+ \db at col@id at w #3\db at col@id at end@%
+ \db at col@elt at w \@nil\db at col@elt at end@%
+ \db at col@id at w #3\db at col@id at end@\q at nil
+ \let\dtlbreak\@dtl at oldbreak
+}
+\def\@dtl at forcolnoop#1\q at nil{}
+
+\newcount\dtlforeachlevel
+\newcounter{DTLrowi}
+\newcounter{DTLrowii}
+\newcounter{DTLrowiii}
+\newcounter{DTLrow}
+\def\theHDTLrow{\arabic{DTLrow}}
+\def\theHDTLrowi{\theHDTLrow.\arabic{DTLrowi}}
+\def\theHDTLrowii{\theHDTLrowi.\arabic{DTLrowii}}
+\def\theHDTLrowiii{\theHDTLrowii.\arabic{DTLrowiii}}
+\newcount\dtl at rowi
+\newcount\dtl at rowii
+\newcount\dtl at rowiii
+\newtoks\@dtl at curi
+\newtoks\@dtl at previ
+\newtoks\@dtl at nexti
+\newtoks\@dtl at curii
+\newtoks\@dtl at previi
+\newtoks\@dtl at nextii
+\newtoks\@dtl at curiii
+\newtoks\@dtl at previii
+\newtoks\@dtl at nextiii
+\newcommand*{\DTLsavelastrowcount}[1]{%
+\ifnum\dtlforeachlevel>2\relax
+ \def#1{0}%
+\else
+ \ifnum\dtlforeachlevel<0\relax
+ \def#1{0}%
+ \else
+ \@dtl at tmpcount=\dtlforeachlevel
+ \advance\@dtl at tmpcount by 1\relax
+ \edef#1{\expandafter\number
+ \csname c at DTLrow\romannumeral\@dtl at tmpcount\endcsname}%
+ \fi
+\fi}
+\newenvironment{DTLenvforeach}[3][\boolean{true}]%
+{%
+ \def\@dtlenvforeach at args{[#1]{#2}{#3}}%
+ \long at collect@body\@do at dtlenvforeach
+}%
+{}
+\newcommand{\@do at dtlenvforeach}[1]{%
+ \expandafter\@DTLforeach\@dtlenvforeach at args{#1}%
+}
+\newenvironment{DTLenvforeach*}[3][\boolean{true}]%
+{%
+ \def\s at dtlenvforeach@args{[#1]{#2}{#3}}%
+ \long at collect@body\@do at sdtlenvforeach
+}%
+{}
+\newcommand{\@do at sdtlenvforeach}[1]{%
+ \expandafter\@sDTLforeach\s at dtlenvforeach@args{#1}%
+}
+\newcommand*{\DTLforeach}{\@ifstar\@sDTLforeach\@DTLforeach}
+\newcommand{\@DTLforeach}[4][\boolean{true}]{%
+ \DTLifdbexists{#2}%
+ {%
+ \refstepcounter{DTLrow}%
+ \global\c at DTLrow=\c at DTLrow\relax
+ \xdef\@dtl at dbname{#2}%
+ \global\advance\dtlforeachlevel by 1\relax
+ \ifnum\dtlforeachlevel>3\relax
+ \PackageError{datatool}{\string\DTLforeach\space nested too
+ deeply}{Only 3 levels are allowed}%
+ \else
+ \@DTLifdbempty{#2}%
+ {}%
+ {%
+ \expandafter\global
+ \csname c at DTLrow\romannumeral\dtlforeachlevel\endcsname
+ = 0\relax
+ \expandafter\global\expandafter\let%
+ \csname @dtl at iffirstrow\the\dtlforeachlevel\endcsname
+ \DTLiffirstrow
+ \gdef\DTLiffirstrow##1##2{%
+ \expandafter\ifnum
+ \csname c at DTLrow\romannumeral\dtlforeachlevel\endcsname
+ =1 %space intended
+ ##1%
+ \else
+ ##2%
+ \fi}%
+ \expandafter\global\expandafter\let%
+ \csname @dtl at iflastrow\the\dtlforeachlevel\endcsname
+ \DTLiflastrow
+ \gdef\DTLiflastrow##1##2{%
+ \expandafter\ifnum
+ \csname c at DTLrow\romannumeral\dtlforeachlevel\endcsname
+ =\csname dtlrows@#2\endcsname
+ ##1%
+ \else
+ ##2%
+ \fi}%
+ \expandafter\global\expandafter\let%
+ \csname @dtl at ifoddrow\the\dtlforeachlevel\endcsname
+ \DTLifoddrow
+ \gdef\DTLifoddrow##1##2{%
+ \expandafter\ifodd
+ \csname c at DTLrow\romannumeral\dtlforeachlevel\endcsname
+ ##1%
+ \else
+ ##2%
+ \fi}%
+ \expandafter\global\expandafter\let
+ \csname @dtl at dbname@\romannumeral\dtlforeachlevel\endcsname
+ =\@dtl at dbname
+ \expandafter\global\expandafter\let
+ \csname @dtl at ro@\romannumeral\dtlforeachlevel\endcsname
+ = 0\relax
+ \dtlgforint
+ \csname dtl at row\romannumeral\dtlforeachlevel\endcsname
+ =1\to\csname dtlrows@#2\endcsname\step1\do
+ {%
+ \@dtl at tmpcount=
+ \csname dtl at row\romannumeral\dtlforeachlevel\endcsname
+ \edef\dtl at dogetrow{\noexpand\dtlgetrow{#2}%
+ {\number\@dtl at tmpcount}}%
+ \dtl at dogetrow
+ \expandafter\global
+ \csname @dtl at cur\romannumeral\dtlforeachlevel\endcsname
+ = \dtlcurrentrow
+ \expandafter\global
+ \csname @dtl at prev\romannumeral\dtlforeachlevel\endcsname
+ = \dtlbeforerow
+ \expandafter\global
+ \csname @dtl at next\romannumeral\dtlforeachlevel\endcsname
+ = \dtlafterrow
+ \ifblank{#3}{}{\@dtl at assign{#3}{#2}}%
+ \ifthenelse{#1}%
+ {%
+ \refstepcounter{DTLrow\romannumeral\dtlforeachlevel}%
+ \expandafter\edef\expandafter\DTLcurrentindex%
+ \expandafter{%
+ \arabic{DTLrow\romannumeral\dtlforeachlevel}}%
+ #4%
+ \edef\@dtl at tmp{\expandafter\the
+ \csname @dtl at cur\romannumeral
+ \dtlforeachlevel\endcsname}%
+ \ifx\@dtl at tmp\@nnil
+ \expandafter\dtl at decrementrows\expandafter
+ {\csname @dtl at prev\romannumeral
+ \dtlforeachlevel\endcsname
+ }{\csname dtl at row\romannumeral
+ \dtlforeachlevel\endcsname}%
+ \expandafter\dtl at decrementrows\expandafter
+ {\csname @dtl at next\romannumeral
+ \dtlforeachlevel\endcsname
+ }{\csname dtl at row\romannumeral
+ \dtlforeachlevel\endcsname}%
+ \edef\@dtl at tmp{%
+ \expandafter\the
+ \csname @dtl at prev\romannumeral
+ \dtlforeachlevel\endcsname
+ \expandafter\the
+ \csname @dtl at next\romannumeral
+ \dtlforeachlevel\endcsname
+ }%
+ \expandafter\global\expandafter
+ \csname dtldb@#2\endcsname\expandafter{\@dtl at tmp}%
+ \expandafter\global\expandafter
+ \advance\csname dtlrows@#2\endcsname by -1\relax
+ \expandafter\global\expandafter
+ \advance\csname dtl at row\romannumeral
+ \dtlforeachlevel\endcsname by -1\relax
+ \else
+ \@dtl at before=\csname @dtl at prev\romannumeral
+ \dtlforeachlevel\endcsname
+ \@dtl at after=\csname @dtl at next\romannumeral
+ \dtlforeachlevel\endcsname
+ \@dtl at toks@gconcat at middle@cx{dtldb@#2}%
+ {\@dtl at before}%
+ {%
+ \noexpand\db at row@elt at w%
+ \noexpand\db at row@id at w \expandafter\number
+ \csname dtl at row\romannumeral
+ \dtlforeachlevel\endcsname
+ \noexpand\db at row@id at end@%
+ \expandafter\the
+ \csname @dtl at cur\romannumeral
+ \dtlforeachlevel\endcsname
+ \noexpand\db at row@id at w \expandafter\number
+ \csname dtl at row\romannumeral
+ \dtlforeachlevel\endcsname
+ \noexpand\db at row@id at end@%
+ \noexpand\db at row@elt at end@%
+ }%
+ {\@dtl at after}%
+ \fi
+ }%
+ {}%
+ }%
+ \expandafter\global\expandafter\let\expandafter\DTLiffirstrow
+ \csname @dtl at iffirstrow\the\dtlforeachlevel\endcsname
+ \expandafter\global\expandafter\let\expandafter\DTLiflastrow
+ \csname @dtl at iflastrow\the\dtlforeachlevel\endcsname
+ \expandafter\global\expandafter\let\expandafter\DTLifoddrow
+ \csname @dtl at ifoddrow\the\dtlforeachlevel\endcsname
+ }%
+ \fi
+ \global\advance\dtlforeachlevel by -1\relax
+ }%
+ {%
+ \PackageError{datatool}{Database `#2' doesn't exist}{}%
+ }%
+}
+\newcommand{\@sDTLforeach}[4][\boolean{true}]{%
+ \DTLifdbexists{#2}%
+ {%
+ \refstepcounter{DTLrow}%
+ \global\c at DTLrow=\c at DTLrow
+ \xdef\@dtl at dbname{#2}%
+ \global\advance\dtlforeachlevel by 1\relax
+ \ifnum\dtlforeachlevel>3\relax
+ \PackageError{datatool}{\string\DTLforeach\space nested too
+ deeply}{Only 3 levels are allowed}%
+ \else
+ \@DTLifdbempty{#2}%
+ {}%
+ {%
+ \expandafter\global
+ \csname c at DTLrow\romannumeral\dtlforeachlevel\endcsname
+ = 0\relax
+ \expandafter\global\expandafter\let%
+ \csname @dtl at iffirstrow\the\dtlforeachlevel\endcsname
+ \DTLiffirstrow
+ \gdef\DTLiffirstrow##1##2{%
+ \expandafter\ifnum
+ \csname c at DTLrow\romannumeral\dtlforeachlevel\endcsname
+ =1 % space intended
+ ##1%
+ \else
+ ##2%
+ \fi}%
+ \expandafter\global\expandafter\let%
+ \csname @dtl at iflastrow\the\dtlforeachlevel\endcsname
+ \DTLiflastrow
+ \gdef\DTLiflastrow##1##2{%
+ \expandafter\ifnum
+ \csname c at DTLrow\romannumeral\dtlforeachlevel\endcsname
+ =\csname dtlrows@#2\endcsname
+ ##1%
+ \else
+ ##2%
+ \fi}%
+ \expandafter\global\expandafter\let%
+ \csname @dtl at ifoddrow\the\dtlforeachlevel\endcsname
+ \DTLifoddrow
+ \gdef\DTLifoddrow##1##2{%
+ \expandafter\ifodd
+ \csname c at DTLrow\romannumeral\dtlforeachlevel\endcsname
+ ##1%
+ \else
+ ##2%
+ \fi}%
+ \expandafter\gdef\csname @dtl at dbname@\romannumeral
+ \dtlforeachlevel\endcsname{#2}%
+ \expandafter\global\expandafter\let
+ \csname @dtl at ro@\romannumeral\dtlforeachlevel\endcsname
+ = 1\relax
+ \@dtlforeachrow(\dtl at thisidx,\dtl at thisrow)\in{#2}\do%
+ {%
+ \csname dtl at row\romannumeral\dtlforeachlevel\endcsname
+ = \dtl at thisidx\relax
+ \expandafter\global
+ \csname @dtl at cur\romannumeral\dtlforeachlevel\endcsname
+ = \expandafter{\dtl at thisrow}%
+ \ifblank{#3}{}
+ {%
+ \dtlcurrentrow=\expandafter{\dtl at thisrow}%
+ \@dtl at assign{#3}{#2}%
+ }%
+ \ifthenelse{#1}%
+ {%
+ \refstepcounter{DTLrow\romannumeral\dtlforeachlevel}%
+ \expandafter\edef\expandafter\DTLcurrentindex%
+ \expandafter{%
+ \arabic{DTLrow\romannumeral\dtlforeachlevel}}%
+ #4%
+ }%
+ {}%
+ }%
+ \expandafter\global\expandafter\let\expandafter\DTLiffirstrow
+ \csname @dtl at iffirstrow\the\dtlforeachlevel\endcsname
+ \expandafter\global\expandafter\let\expandafter\DTLiflastrow
+ \csname @dtl at iflastrow\the\dtlforeachlevel\endcsname
+ \expandafter\global\expandafter\let\expandafter\DTLifoddrow
+ \csname @dtl at ifoddrow\the\dtlforeachlevel\endcsname
+ }%
+ \fi
+ \global\advance\dtlforeachlevel by -1\relax
+ }%
+ {%
+ \PackageError{datatool}{Database `#2' doesn't exist}{}%
+ }%
+}
+\newcommand*{\@dtlifreadonly}[2]{%
+ \expandafter\ifx
+ \csname @dtl at ro@\romannumeral\dtlforeachlevel\endcsname1\relax
+ #1%
+ \else
+ #2%
+ \fi
+}
+\newcommand*{\DTLappendtorow}[2]{%
+ \ifnum\dtlforeachlevel=0\relax
+ \PackageError{datatool}{\string\DTLappendrow\space can only be
+ used inside \string\DTLforeach}{}%
+ \else
+ \expandafter\let\expandafter\@dtl at thisdb
+ \csname @dtl at dbname@\romannumeral\dtlforeachlevel\endcsname
+ \@dtlifreadonly
+ {%
+ \PackageError{datatool}{\string\DTLappendtorow\space can't
+ be used inside \DTLforeach*}{The starred version of
+ \string\DTLforeach\space is read only}%
+ }%
+ {%
+ \dtlrownum=
+ \csname dtl at row\romannumeral\dtlforeachlevel\endcsname\relax
+ \@dtl at updatekeys{\@dtl at thisdb}{#1}{#2}%
+ \expandafter\dtlcolumnnum\expandafter
+ =\dtlcolumnindex{\@dtl at thisdb}{#1}\relax
+ \dtlcurrentrow =
+ \csname @dtl at cur\romannumeral\dtlforeachlevel\endcsname
+ \edef\dtl at dogetentry{\noexpand\dtlgetentryfromcurrentrow
+ {\noexpand\dtl at entry}{\number\dtlcolumnnum}%
+ }%
+ \dtl at dogetentry
+ \ifx\dtl at entry\dtlnovalue
+ \protected at edef\@dtl at tmp{#2}%
+ \expandafter\@dtl at toks\expandafter{\@dtl at tmp}%
+ \@dtl at toks@gput at right@cx{@dtl at cur\romannumeral\dtlforeachlevel}%
+ {%
+ \noexpand\db at col@id at w \number\dtlcolumnnum
+ \noexpand\db at col@id at end@
+ \noexpand\db at col@elt at w \the\@dtl at toks
+ \noexpand\db at col@elt at end@
+ \noexpand\db at col@id at w \number\dtlcolumnnum
+ \noexpand\db at col@id at end@
+ }%
+ \dtl at message{Appended #1\space -> #2\space to database
+ `\@dtl at thisdb'}%
+ \else
+ \PackageError{datatool}{Can't append entry to row:
+ there is already an entry for key `#1' in this row}{}%
+ \fi
+ }%
+ \fi
+}
+\newcommand*{\DTLremoveentryfromrow}[1]{%
+ \ifnum\dtlforeachlevel=0\relax
+ \PackageError{datatool}{\string\DTLremoventryfromrow\space
+ can only be used inside \string\DTLforeach}{}%
+ \else
+ \expandafter\let\expandafter\@dtl at thisdb
+ \csname @dtl at dbname@\romannumeral\dtlforeachlevel\endcsname
+ \@dtlifreadonly
+ {%
+ \PackageError{datatool}{\string\DTLremoveentryfromrow\space
+ can't be used inside \string\DTLforeach*}{The starred
+ version of \string\DTLforeach\space is read only}%
+ }%
+ {%
+ \dtlrownum=
+ \csname dtl at row\romannumeral\dtlforeachlevel\endcsname\relax
+ \@DTLifhaskey{\@dtl at thisdb}{#1}%
+ {%
+ \@dtl at getcolumnindex{\thiscol}{\@dtl at thisdb}{#1}\relax
+ \dtlcolumnnum=\thiscol\relax
+ \dtlcurrentrow =
+ \csname @dtl at cur\romannumeral\dtlforeachlevel\endcsname
+ \edef\dtl at dogetentry{\noexpand\dtlgetentryfromcurrentrow
+ {\noexpand\dtl at entry}{\number\dtlcolumnnum}%
+ }%
+ \dtl at dogetentry
+ \ifx\dtl at entry\dtlnovalue
+ \PackageError{datatool}{Can't remove entry given by `#1'
+ from current row in database `\@dtl at thisdb': no such
+ entry}{The current row doesn't contain an entry for
+ key `#1'}%
+ \else
+ \edef\@dtl at dosplitrow{%
+ \noexpand\dtlsplitrow{\the\dtlcurrentrow}%
+ {\number\dtlcolumnnum}{\noexpand\dtl at pre}%
+ {\noexpand\dtl at post}%
+ }%
+ \@dtl at dosplitrow
+ \expandafter\@dtl at toks\expandafter{\dtl at pre}%
+ \expandafter\toks@\expandafter{\dtl at post}%
+ \edef\@dtl at tmp{\the\@dtl at toks \the\toks@}%
+ \dtlcurrentrow=\expandafter{\@dtl at tmp}%
+ \expandafter\global
+ \csname @dtl at cur\romannumeral\dtlforeachlevel\endcsname
+ = \dtlcurrentrow
+ \dtl at message{Removed entry given by #1\space from current
+ row of database `\@dtl at thisdb'}%
+ \fi
+ }%
+ {%
+ \PackageError{datatool}{Can't remove entry given by
+ `#1' - no such key exists}{}%
+ }%
+ }%
+ \fi
+}
+\newcommand*{\DTLreplaceentryforrow}[2]{%
+ \ifnum\dtlforeachlevel=0\relax
+ \PackageError{datatool}{\string\DTLreplaceentryforrow\space
+ can only be used inside \string\DTLforeach}{}%
+ \else
+ \expandafter\let\expandafter\@dtl at thisdb
+ \csname @dtl at dbname@\romannumeral\dtlforeachlevel\endcsname
+ \@dtlifreadonly
+ {%
+ \PackageError{datatool}{\string\DTLreplaceentryforrow\space
+ can't be used inside \string\DTLforeach*}{The starred version
+ of \string\DTLforeach\space is read only}%
+ }%
+ {%
+ \dtlrownum=
+ \csname dtl at row\romannumeral\dtlforeachlevel\endcsname\relax
+ \@DTLifhaskey{\@dtl at thisdb}{#1}%
+ {%
+ \@dtl at getcolumnindex{\thiscol}{\@dtl at thisdb}{#1}\relax
+ \dtlcolumnnum=\thiscol\relax
+ \dtlcurrentrow =
+ \csname @dtl at cur\romannumeral\dtlforeachlevel\endcsname
+ \edef\dtl at dogetentry{\noexpand\dtlgetentryfromcurrentrow
+ {\noexpand\dtl at entry}{\number\dtlcolumnnum}%
+ }%
+ \dtl at dogetentry
+ \ifx\dtl at entry\dtlnovalue
+ \PackageError{datatool}{Can't replace entry given by `#1'
+ from current row in database `\@dtl at thisdb': no such
+ entry}{The current row doesn't contain an entry for
+ key `#1'}%
+ \else
+ \edef\@dtl at dosplitrow{%
+ \noexpand\dtlsplitrow{\the\dtlcurrentrow}%
+ {\number\dtlcolumnnum}{\noexpand\dtl at pre}%
+ {\noexpand\dtl at post}%
+ }%
+ \@dtl at dosplitrow
+ \protected at edef\@dtl at tmp{#2}%
+ \expandafter\@dtl at toks\expandafter{\@dtl at tmp}% new value
+ \expandafter\@dtl at before\expandafter{\dtl at pre}%
+ \expandafter\@dtl at after\expandafter{\dtl at post}%
+ \@dtl at toks@gconcat at middle@cx
+ {@dtl at cur\romannumeral\dtlforeachlevel}%
+ {\@dtl at before}%
+ {%
+ \noexpand\db at col@id at w \number\dtlcolumnnum
+ \noexpand\db at col@id at end@%
+ \noexpand\db at col@elt at w \the\@dtl at toks
+ \noexpand\db at col@elt at end@%
+ \noexpand\db at col@id at w \number\dtlcolumnnum
+ \noexpand\db at col@id at end@%
+ }%
+ {\@dtl at after}%
+ \dtl at message{Updated #1\space -> #2\space in database
+ `\@dtl at thisdb'}%
+ \fi
+ }%
+ {%
+ \PackageError{datatool}{Can't replace key `#1' - no such
+ key in database `\@dtl at thisdb'}{}%
+ }%
+ }%
+ \fi
+}
+\newcommand*{\DTLremovecurrentrow}{%
+ \ifnum\dtlforeachlevel=0\relax
+ \PackageError{datatool}{\string\DTLremovecurrentrow\space can
+ only be used inside \string\DTLforeach}{}%
+ \else
+ \expandafter\let\expandafter\@dtl at thisdb
+ \csname @dtl at dbname@\romannumeral\dtlforeachlevel\endcsname
+ \@dtlifreadonly
+ {%
+ \PackageError{datatool}{\string\DTLreplaceentryforrow\space
+ can't be used inside \string\DTLforeach*}{The starred version
+ of \string\DTLforeach\space is read only}%
+ }%
+ {%
+ \expandafter\global
+ \csname @dtl at cur\romannumeral\dtlforeachlevel\endcsname
+ ={\@nil}%
+ }%
+ \fi
+}
+\newcommand{\DTLaddentryforrow}[5]{%
+ \DTLifdbexists{#1}%
+ {%
+ \def\@dtl at notdone{\PackageError{datatool}{Unable to add entry
+ given by key `#4': condition not met for any row in database
+ `#1'}{}}%
+ \DTLforeach[#3]{#1}{#2}%
+ {%
+ \DTLappendtorow{#4}{#5}%
+ \let\@dtl at notdone\relax
+ \dtlbreak
+ }%
+ \@dtl at notdone
+ }%
+ {%
+ \PackageError{datatool}{Unable to add entry given by key `#4':
+ database `#1' doesn't exist}{}%
+ }%
+}
+\newcommand*{\DTLforeachkeyinrow}[2]{%
+ \ifnum\dtlforeachlevel=0\relax
+ \PackageError{datatool}{\string\DTLforeachkeyinrow\space can only
+ be used inside \string\DTLforeach}{}%
+ \else
+ \expandafter\let\expandafter\@dtl at thisdb
+ \csname @dtl at dbname@\romannumeral\dtlforeachlevel\endcsname
+ \dtlforeachkey(\dtlkey,\dtlcol,\dtltype,\dtlheader)\in
+ \@dtl at thisdb\do{%
+ \dtlcurrentrow =
+ \csname @dtl at cur\romannumeral\dtlforeachlevel\endcsname
+ \edef\dtl at dogetentry{\noexpand\dtlgetentryfromcurrentrow
+ {\noexpand#1}{\dtlcol}}%
+ \dtl at dogetentry
+ \ifx#1\dtlnovalue
+ \ifnum0\dtltype=0\relax
+ \let#1=\@dtlstringnull
+ \else
+ \let#1=\@dtlnumbernull
+ \fi
+ \fi
+ \global\let#1#1%
+ \def\@dtl at loop@body{#2}%
+ \@dtl at loop@body
+ }%
+ \fi
+}
+\newcommand{\DTLiffirstrow}[2]{%
+ \PackageError{datatool}{\string\DTLiffirstrow\space can only
+ be used inside \string\DTLforeach}{}%
+}
+\newcommand{\DTLiflastrow}[2]{%
+ \PackageError{datatool}{\string\DTLiflastrow\space can only
+ be used inside \string\DTLforeach}{}%
+}
+\newcommand{\DTLifoddrow}[2]{%
+ \PackageError{datatool}{\string\DTLifoddrow\space can only
+ be used inside \string\DTLforeach}{}%
+}
+\newcommand*{\dtlbetweencols}{}
+\newcommand*{\dtlbeforecols}{}
+\newcommand*{\dtlaftercols}{}
+\newcommand*{\dtlstringalign}{l}
+\newcommand*{\dtlintalign}{r}
+\newcommand*{\dtlrealalign}{r}
+\newcommand*{\dtlcurrencyalign}{r}
+\newcommand*{\dtladdalign}[4]{%
+ \ifnum#3=1\relax
+ \protected at edef#1{\dtlbeforecols}%
+ \else
+ \protected at edef#1{#1\dtlbetweencols}%
+ \fi
+ \ifstrempty{#2}%
+ {%
+ \protected at edef#1{#1c}%
+ }%
+ {%
+ \ifcase#2\relax
+ \protected at edef#1{#1\dtlstringalign}%
+ \or
+ \protected at edef#1{#1\dtlintalign}%
+ \or
+ \protected at edef#1{#1\dtlrealalign}%
+ \or
+ \protected at edef#1{#1\dtlcurrencyalign}%
+ \else
+ \protected at edef#1{#1c}%
+ \PackageError{datatool}{Unknown data type `#2'}{}%
+ \fi
+ }%
+ \ifnum#3=#4\relax
+ \protected at edef#1{#1\dtlaftercols}%
+ \fi
+}
+\newcommand*{\dtlheaderformat}[1]{\null\hfil\textbf{#1}\hfil\null}
+\newcommand*{\dtlstringformat}[1]{#1}
+\newcommand*{\dtlintformat}[1]{#1}
+\newcommand*{\dtlrealformat}[1]{#1}
+\newcommand*{\dtlcurrencyformat}[1]{#1}
+\newcommand*{\dtldisplaystarttab}{}
+\newcommand*{\dtldisplayendtab}{}
+\newcommand*{\dtldisplayafterhead}{}
+\newcommand*{\dtldisplayvalign}{c}
+\newcommand*{\dtldisplaystartrow}{}
+\newcommand{\dtldisplaycr}{\tabularnewline}
+
+\newcommand*{\DTLdisplaydb}[2][]{%
+ \def\@dtl at doamp{\gdef\@dtl at doamp{&}}%
+ \def\@dtl at resetdoamp{\gdef\@dtl at doamp{\gdef\@dtl at doamp{&}}}%
+ \edef\@dtl at maxcols{\expandafter\number
+ \csname dtlcols@#2\endcsname}%
+ \DTLnumitemsinlist{#1}{\@dtl at tmp}%
+ \dtlsub{\@dtl at maxcols}{\@dtl at maxcols}{\@dtl at tmp}%
+ \dtlclip{\@dtl at maxcols}{\@dtl at maxcols}%
+ \def\@dtl at tabargs{}%
+ \dtlforeachkey(\@dtl at key,\@dtl at idx,\@dtl at type,\@dtl at head)%
+ \in{#2}\do
+ {%
+ \expandafter\DTLifinlist\expandafter{\@dtl at key}{#1}%
+ {}%
+ {%
+ \dtladdalign\@dtl at tabargs\@dtl at type\@dtl at idx\@dtl at maxcols
+ }%
+ }%
+ \edef\@dtl at dobegintab{\noexpand\begin{tabular}[\dtldisplayvalign]{\@dtl at tabargs}}%
+ \@dtl at dobegintab
+ \dtldisplaystarttab
+ \@dtl at resetdoamp
+ \dtlforeachkey(\@dtl at key,\@dtl at idx,\@dtl at type,\@dtl at head)%
+ \in{#2}\do
+ {%
+ \expandafter\DTLifinlist\expandafter{\@dtl at key}{#1}%
+ {}%
+ {%
+ \@dtl at doamp
+ \dtlheaderformat{\@dtl at head}%
+ }%
+ }%
+ \\%
+ \dtldisplayafterhead
+ \@dtl at resetdoamp
+ \@sDTLforeach{#2}{}{%
+ \DTLiffirstrow{}{\dtldisplaycr\dtldisplaystartrow}%
+ \@dtl at resetdoamp
+ \DTLforeachkeyinrow{\@dtl at val}%
+ {%
+ \expandafter\DTLifinlist\expandafter{\dtlkey}{#1}%
+ {}%
+ {%
+ \global\let\@dtl at val\@dtl at val
+ \@dtl at doamp
+ \@dtl at datatype=0\dtltype\relax
+ \ifcase\@dtl at datatype
+ \dtlstringformat\@dtl at val
+ \or
+ \dtlintformat\@dtl at val
+ \or
+ \dtlrealformat\@dtl at val
+ \or
+ \dtlcurrencyformat\@dtl at val
+ \else
+ \@dtl at val
+ \fi
+ }%
+ }%
+ }%
+ \dtldisplayendtab
+ \end{tabular}%
+}
+\define at key{displaylong}{caption}{\def\@dtl at cap{#1}}
+\define at key{displaylong}{contcaption}{\def\@dtl at contcap{#1}}
+\define at key{displaylong}{shortcaption}{\def\@dtl at shortcap{#1}}
+\define at key{displaylong}{label}{\def\@dtl at label{#1}}
+\define at key{displaylong}{foot}{\def\@dtl at foot{#1}}
+\define at key{displaylong}{lastfoot}{\def\@dtl at lastfoot{#1}}
+\define at key{displaylong}{omit}{\def\@dtl at omitlist{#1}}
+\newcommand*{\@dtl at resetdostartrow}{%
+ \gdef\@dtl at dostartrow{%
+ \gdef\@dtl at dostartrow{\dtldisplaycr\dtldisplaystartrow}}%
+}
+\newcommand*{\DTLdisplaylongdb}[2][]{%
+ \def\@dtl at cap{\@nil}%
+ \def\@dtl at contcap{\@nil}%
+ \def\@dtl at label{\@nil}%
+ \def\@dtl at shortcap{\@dtl at cap}%
+ \def\@dtl at foot{\@nil}%
+ \def\@dtl at lastfoot{\@nil}%
+ \def\@dtl at omitlist{}%
+ \setkeys{displaylong}{#1}%
+ \def\@dtl at doamp{\gdef\@dtl at doamp{&}}%
+ \def\@dtl at resetdoamp{\gdef\@dtl at doamp{\gdef\@dtl at doamp{&}}}%
+ \@dtl at resetdostartrow
+ \edef\@dtl at maxcols{\expandafter\number
+ \csname dtlcols@#2\endcsname}%
+ \DTLnumitemsinlist{\@dtl at omitlist}{\@dtl at tmp}%
+ \dtlsub{\@dtl at maxcols}{\@dtl at maxcols}{\@dtl at tmp}%
+ \dtlclip{\@dtl at maxcols}{\@dtl at maxcols}%
+ \def\@dtl at tabargs{}%
+ \dtlforeachkey(\@dtl at key,\@dtl at idx,\@dtl at type,\@dtl at head)%
+ \in{#2}\do
+ {%
+ \expandafter\DTLifinlist\expandafter{\@dtl at key}{\@dtl at omitlist}%
+ {}%
+ {%
+ \dtladdalign\@dtl at tabargs\@dtl at type\@dtl at idx\@dtl at maxcols
+ }%
+ }%
+ \edef\@dtl at dobegintab{\noexpand\begin{longtable}{\@dtl at tabargs}}%
+ \@dtl at dobegintab
+ \ifx\@dtl at foot\@nnil
+ \else
+ \@dtl at foot\endfoot
+ \fi
+ \ifx\@dtl at lastfoot\@nnil
+ \else
+ \@dtl at lastfoot\endlastfoot
+ \fi
+ \ifx\@dtl at cap\@nnil
+ \@dtl at resetdoamp
+ \dtldisplaystarttab
+ \dtlforeachkey(\@dtl at key,\@dtl at idx,\@dtl at type,\@dtl at head)%
+ \in{#2}\do
+ {%
+ \expandafter\DTLifinlist\expandafter{\@dtl at key}{\@dtl at omitlist}%
+ {}%
+ {%
+ \@dtl at doamp{\dtlheaderformat{\@dtl at head}}%
+ }%
+ }%
+ \@dtl at resetdoamp
+ \@dtl at resetdostartrow
+ \endhead\dtldisplayafterhead
+ \else
+ \caption[\@dtl at shortcap]{\@dtl at cap}%
+ \ifx\@dtl at label\@nnil
+ \else
+ \label{\@dtl at label}%
+ \fi
+ \dtldisplaycr
+ \dtldisplaystarttab
+ \@dtl at resetdoamp
+ \dtlforeachkey(\@dtl at key,\@dtl at idx,\@dtl at type,\@dtl at head)%
+ \in{#2}\do
+ {%
+ \expandafter\DTLifinlist\expandafter{\@dtl at key}{\@dtl at omitlist}%
+ {}%
+ {%
+ \@dtl at doamp{\dtlheaderformat{\@dtl at head}}%
+ }%
+ }%
+ \@dtl at resetdoamp
+ \dtldisplaycr\dtldisplayafterhead
+ \endfirsthead
+ \ifx\@dtl at contcap\@nnil
+ \caption{\@dtl at cap}%
+ \else
+ \caption{\@dtl at contcap}%
+ \fi
+ \dtldisplaycr\dtldisplaystarttab
+ \@dtl at resetdoamp
+ \dtlforeachkey(\@dtl at key,\@dtl at idx,\@dtl at type,\@dtl at head)%
+ \in{#2}\do
+ {%
+ \expandafter\DTLifinlist\expandafter{\@dtl at key}{\@dtl at omitlist}%
+ {}%
+ {%
+ \@dtl at doamp{\dtlheaderformat{\@dtl at head}}%
+ }%
+ }%
+ \@dtl at resetdoamp
+ \@dtl at resetdostartrow
+ \dtldisplaycr\dtldisplayafterhead
+ \endhead
+ \fi
+ \@sDTLforeach{#2}{}{%
+ \@dtl at dostartrow
+ \@dtl at resetdoamp
+ \DTLforeachkeyinrow{\@dtl at val}%
+ {%
+ \global\let\@dtl at val\@dtl at val
+ \expandafter\DTLifinlist\expandafter{\dtlkey}{\@dtl at omitlist}%
+ {}%
+ {%
+ \@dtl at doamp
+ \@dtl at datatype=0\dtltype\relax
+ \ifcase\@dtl at datatype
+ \dtlstringformat\@dtl at val
+ \or
+ \dtlintformat\@dtl at val
+ \or
+ \dtlrealformat\@dtl at val
+ \or
+ \dtlcurrencyformat\@dtl at val
+ \fi
+ }%
+ }%
+ }%
+ \dtldisplayendtab
+ \end{longtable}%
+}
+\newcommand*{\dtlswaprows}[3]{%
+ \ifnum#2=#3\relax
+ \else
+ \ifnum#2<#3\relax
+ \edef\@dtl at rowAidx{\number#2}%
+ \edef\@dtl at rowBidx{\number#3}%
+ \else
+ \edef\@dtl at rowAidx{\number#3}%
+ \edef\@dtl at rowBidx{\number#2}%
+ \fi
+ \edef\@dtl at dosplit{\noexpand\dtlgetrow{#1}{\@dtl at rowAidx}}%
+ \@dtl at dosplit
+ \expandafter\def\expandafter\@dtl at firstpart\expandafter
+ {\the\dtlbeforerow}%
+ \@dtl at toksA=\dtlcurrentrow
+ \edef\@dtl at dosplit{\noexpand\@dtlgetrow
+ {\the\dtlafterrow}{\@dtl at rowBidx}}%
+ \@dtl at dosplit
+ \expandafter\def\expandafter\@dtl at secondpart\expandafter
+ {\the\dtlbeforerow}%
+ \@dtl at toksB=\dtlcurrentrow
+ \expandafter\def\expandafter\@dtl at thirdpart\expandafter
+ {\the\dtlafterrow}%
+ \toks@=\expandafter{\@dtl at firstpart}%
+ \@dtl at toks=\expandafter{\@dtl at secondpart}%
+ \edef\@dtl at tmp{\the\toks@
+ \noexpand\db at row@elt at w%
+ \noexpand\db at row@id at w \@dtl at rowAidx\noexpand\db at row@id at end@%
+ \the\@dtl at toksB
+ \noexpand\db at row@id at w \@dtl at rowAidx\noexpand\db at row@id at end@%
+ \noexpand\db at row@elt at end@%
+ \the\@dtl at toks}%
+ \toks@=\expandafter{\@dtl at tmp}%
+ \@dtl at toks=\expandafter{\@dtl at thirdpart}%
+ \edef\@dtl at tmp{\the\toks@
+ \noexpand\db at row@elt at w%
+ \noexpand\db at row@id at w \@dtl at rowBidx\noexpand\db at row@id at end@%
+ \the\@dtl at toksA
+ \noexpand\db at row@id at w \@dtl at rowBidx\noexpand\db at row@id at end@%
+ \noexpand\db at row@elt at end@%
+ \the\@dtl at toks}%
+ \expandafter\global\csname dtldb@#1\endcsname=\expandafter
+ {\@dtl at tmp}%
+ \fi
+}
+\newcommand*{\dtl at decrementrows}[2]{%
+ \def\@dtl at newlist{}%
+ \edef\@dtl at min{\number#2}%
+ \expandafter\@dtl at decrementrows\the#1%
+ \db at row@elt at w%
+ \db at row@id at w \@nil\db at row@id at end@%
+ \db at row@id at w \@nil\db at row@id at end@%
+ \db at row@elt at end@%
+ \@nil
+ #1=\expandafter{\@dtl at newlist}%
+}
+\def\@dtl at decrementrows\db at row@elt at w\db at row@id at w #1\db at row@id at end@%
+#2\db at row@id at w #3\db at row@id at end@\db at row@elt at end@#4\@nil{%
+ \def\@dtl at thisrow{#1}%
+ \ifx\@dtl at thisrow\@nnil
+ \let\@dtl at donextdec=\@dtl at gobbletonil
+ \else
+ \ifnum\@dtl at thisrow>\@dtl at min
+ \@dtl at tmpcount=\@dtl at thisrow\relax
+ \advance\@dtl at tmpcount by -1\relax
+ \toks@{#2}%
+ \@dtl at toks=\expandafter{\@dtl at newlist}%
+ \edef\@dtl at newlist{\the\@dtl at toks
+ \noexpand\db at row@elt at w% row header
+ \noexpand\db at row@id at w \number\@dtl at tmpcount
+ \noexpand\db at row@id at end@% row id
+ \the\toks@ % row contents
+ \noexpand\db at row@id at w \number\@dtl at tmpcount
+ \noexpand\db at row@id at end@% row id
+ \noexpand\db at row@elt at end@% row end
+ }%
+ \else
+ \toks@{#2}%
+ \@dtl at toks=\expandafter{\@dtl at newlist}%
+ \edef\@dtl at newlist{\the\@dtl at toks
+ \noexpand\db at row@elt at w% row header
+ \noexpand\db at row@id at w #1%
+ \noexpand\db at row@id at end@% row id
+ \the\toks@ % row contents
+ \noexpand\db at row@id at w #3%
+ \noexpand\db at row@id at end@% row id
+ \noexpand\db at row@elt at end@% row end
+ }%
+ \fi
+ \let\@dtl at donextdec=\@dtl at decrementrows
+ \fi
+ \@dtl at donextdec#4\@nil
+}
+\newcommand*{\DTLremoverow}[2]{%
+ \DTLifdbexists{#1}%
+ {%
+ \ifnum#2>0\relax
+ \expandafter\ifnum\csname dtlrows@#1\endcsname<#2\relax
+ \expandafter\ifnum\csname dtlrows@#1\endcsname=1\relax
+ \PackageError{datatool}{Can't remove row `\number#2' from
+ database `#1': no such row}{Database `#1' only has
+ 1 row}%
+ \else
+ \PackageError{datatool}{Can't remove row `\number#2' from
+ database `#1': no such row}{Database `#1' only has
+ \expandafter\number\csname dtlrows@#1\endcsname\space
+ rows}%
+ \fi
+ \else
+ \@DTLremoverow{#1}{#2}%
+ \fi
+ \else
+ \PackageError{datatool}{Can't remove row \number#2: index
+ out of bounds}{Row indices start at 1}%
+ \fi
+ }%
+ {%
+ \PackageError{datatool}{Can't remove row: database `#1' doesn't
+ exist}{}%
+ }%
+}
+\newcommand*{\@DTLremoverow}[2]{%
+ \edef\dtl at dogetrow{\noexpand\dtlgetrow{#1}{\number#2}}%
+ \dtl at dogetrow
+ \expandafter\dtl at decrementrows\expandafter
+ {\dtlbeforerow}{#2}%
+ \expandafter\dtl at decrementrows\expandafter
+ {\dtlafterrow}{#2}%
+ \edef\dtl at tmp{\the\dtlbeforerow \the\dtlafterrow}%
+ \expandafter\global\csname dtldb@#1\endcsname
+ =\expandafter{\dtl at tmp}%
+ \expandafter\global\expandafter\advance
+ \csname dtlrows@#1\endcsname by -1\relax
+}
+\newcommand*{\DTLsumforkeys}[1][\boolean{true}\and
+ \DTLisnumerical{\DTLthisval}]{%
+ \def\@dtl at cond{#1}%
+ \@dtlsumforkeys
+}
+\newcommand*{\@dtlsumforkeys}[4][]{%
+ \def#4{0}%
+ \@for\@dtl at db@name:=#2\do{%
+ \@sDTLforeach{\@dtl at db@name}%
+ {#1}% assignment list
+ {%
+ \@for\@dtl at key:=#3\do{%
+ \@sdtl at getcolumnindex{\@dtl at col}{\@dtl at db@name}{\@dtl at key}%
+ \dtlcurrentrow=\expandafter{\dtl at thisrow}%
+ \dtlgetentryfromrow{\DTLthisval}{\@dtl at col}{\dtlcurrentrow}%
+ \expandafter\ifthenelse\expandafter{\@dtl at cond}%
+ {\DTLadd{#4}{#4}{\DTLthisval}}{}%
+ }%
+ }%
+ }%
+}
+\newcommand*{\DTLsumcolumn}[3]{%
+ \def#3{0}%
+ \DTLifdbexists{#1}%
+ {%
+ \@sDTLifhaskey{#1}{#2}%
+ {%
+ \@sdtlforcolumn{\DTLthisval}{#1}{#2}%
+ {%
+ \DTLadd{#3}{#3}{\DTLthisval}%
+ }%
+ }%
+ {%
+ \PackageError{datatool}{Key `#2' doesn't
+ exist in database `#1'}{}%
+ }%
+ }%
+ {%
+ \PackageError{datatool}{Data base `#1' doesn't
+ exist}{}%
+ }%
+}
+\newcommand*{\DTLmeanforkeys}[1][\boolean{true}\and
+ \DTLisnumerical{\DTLthisval}]{%
+ \def\@dtl at cond{#1}%
+ \@dtlmeanforkeys
+}
+\newcount\@dtl at elements
+\newcommand*{\@dtlmeanforkeys}[4][]{%
+ \def#4{0}%
+ \@dtl at elements=0\relax
+ \@for\@dtl at db@name:=#2\do{%
+ \@sDTLforeach{\@dtl at db@name}%
+ {#1}% assignment list
+ {%
+ \@for\@dtl at key:=#3\do{%
+ \@sdtl at getcolumnindex{\@dtl at col}{\@dtl at db@name}{\@dtl at key}%
+ \dtlcurrentrow=\expandafter{\dtl at thisrow}%
+ \dtlgetentryfromrow{\DTLthisval}{\@dtl at col}{\dtlcurrentrow}%
+ \expandafter\ifthenelse\expandafter{\@dtl at cond}%
+ {%
+ \DTLadd{#4}{#4}{\DTLthisval}%
+ \advance\@dtl at elements by 1\relax
+ }{}%
+ }%
+ }%
+ }%
+ \ifnum\@dtl at elements=0\relax
+ \PackageError{datatool}{Unable to evaluate mean: no data}{}%
+ \else
+ \edef\@dtl at n{\number\@dtl at elements}%
+ \DTLdiv{#4}{#4}{\@dtl at n}%
+ \fi
+}
+\newcommand*{\DTLmeanforcolumn}[3]{%
+ \def#3{0}%
+ \@dtl at elements=0\relax
+ \DTLifdbexists{#1}%
+ {%
+ \@sDTLifhaskey{#1}{#2}%
+ {%
+ \@sdtlforcolumn{\DTLthisval}{#1}{#2}%
+ {%
+ \DTLadd{#3}{#3}{\DTLthisval}%
+ \advance\@dtl at elements by 1\relax
+ }%
+ \ifnum\@dtl at elements=0\relax
+ \PackageError{datatool}{Can't compute mean for
+ column `#2' in database `#1': no data}{}%
+ \else
+ \edef\@dtl at n{\number\@dtl at elements}%
+ \DTLdiv{#3}{#3}{\@dtl at n}%
+ \fi
+ }%
+ {%
+ \PackageError{datatool}{Key `#2' doesn't
+ exist in database `#1'}{}%
+ }%
+ }%
+ {%
+ \PackageError{datatool}{Data base `#1' doesn't
+ exist}{}%
+ }%
+}
+\newcommand*{\DTLvarianceforkeys}[1][\boolean{true}\and
+ \DTLisnumerical{\DTLthisval}]{%
+ \def\@dtl at cond{#1}%
+ \@dtlvarianceforkeys
+}
+\newcommand*{\@dtlvarianceforkeys}[4][]{%
+ \@dtlmeanforkeys[#1]{#2}{#3}{\dtl at mean}%
+ \def#4{0}%
+ \@dtl at elements=0\relax
+ \@for\@dtl at db@name:=#2\do{%
+ \@sDTLforeach{\@dtl at db@name}%
+ {#1}% assignment list
+ {%
+ \@for\@dtl at key:=#3\do{%
+ \@sdtl at getcolumnindex{\@dtl at col}{\@dtl at db@name}{\@dtl at key}%
+ \dtlcurrentrow=\expandafter{\dtl at thisrow}%
+ \dtlgetentryfromrow{\DTLthisval}{\@dtl at col}{\dtlcurrentrow}%
+ \expandafter\ifthenelse\expandafter{\@dtl at cond}%
+ {%
+ \DTLsub{\dtl at diff}{\DTLthisval}{\dtl at mean}%
+ \DTLmul{\dtl at diff}{\dtl at diff}{\dtl at diff}%
+ \DTLadd{#4}{#4}{\dtl at diff}%
+ \advance\@dtl at elements by 1\relax
+ }{}%
+ }%
+ }%
+ }%
+ \ifnum\@dtl at elements=0\relax
+ \PackageError{datatool}{Unable to evaluate variance: no data}{}%
+ \else
+ \edef\@dtl at n{\number\@dtl at elements}%
+ \DTLdiv{#4}{#4}{\@dtl at n}%
+ \fi
+}
+\newcommand*{\DTLvarianceforcolumn}[3]{%
+ \DTLmeanforcolumn{#1}{#2}{\dtl at mean}%
+ \def#3{0}%
+ \@dtl at elements=0\relax
+ \DTLifdbexists{#1}%
+ {%
+ \@sDTLifhaskey{#1}{#2}%
+ {%
+ \@sdtlforcolumn{\DTLthisval}{#1}{#2}%
+ {%
+ \DTLsub{\dtl at diff}{\DTLthisval}{\dtl at mean}%
+ \DTLmul{\dtl at diff}{\dtl at diff}{\dtl at diff}%
+ \DTLadd{#3}{#3}{\dtl at diff}%
+ \advance\@dtl at elements by 1\relax
+ }%
+ \ifnum\@dtl at elements=0\relax
+ \PackageError{datatool}{Can't compute variance for
+ column `#2' in database `#1': no data}{}%
+ \else
+ \edef\@dtl at n{\number\@dtl at elements}%
+ \DTLdiv{#3}{#3}{\@dtl at n}%
+ \fi
+ }%
+ {%
+ \PackageError{datatool}{Key `#2' doesn't
+ exist in database `#1'}{}%
+ }%
+ }%
+ {%
+ \PackageError{datatool}{Data base `#1' doesn't
+ exist}{}%
+ }%
+}
+\newcommand*{\DTLsdforkeys}[1][\boolean{true}\and
+\DTLisnumerical{\DTLthisval}]{%
+ \def\@dtl at cond{#1}%
+ \@dtlsdforkeys
+}
+\newcommand*{\@dtlsdforkeys}[4][]{%
+ \@dtlvarianceforkeys[#1]{#2}{#3}{#4}%
+ \DTLsqrt{#4}{#4}%
+}
+\newcommand*{\DTLsdforcolumn}[3]{%
+ \DTLvarianceforcolumn{#1}{#2}{#3}%
+ \DTLsqrt{#3}{#3}%
+}
+\newcommand*{\DTLminforkeys}[1][\boolean{true}\and
+ \DTLisnumerical{\DTLthisval}]{%
+ \def\@dtl at cond{#1}%
+ \@dtlminforkeys
+}
+\newcommand*{\@dtlminforkeys}[4][]{%
+ \def#4{}%
+ \@for\@dtl at db@name:=#2\do{%
+ \@sDTLforeach{\@dtl at db@name}%
+ {#1}% assignment list
+ {%
+ \@for\@dtl at key:=#3\do{%
+ \@sdtl at getcolumnindex{\@dtl at col}{\@dtl at db@name}{\@dtl at key}%
+ \dtlcurrentrow=\expandafter{\dtl at thisrow}%
+ \dtlgetentryfromrow{\DTLthisval}{\@dtl at col}{\dtlcurrentrow}%
+ \expandafter\ifthenelse\expandafter{\@dtl at cond}%
+ {%
+ \ifdefempty{#4}%
+ {%
+ \let#4\DTLthisval
+ }%
+ {%
+ \DTLmin{#4}{#4}{\DTLthisval}%
+ }%
+ }{}%
+ }%
+ }%
+ }%
+}
+\newcommand*{\DTLminforcolumn}[3]{%
+ \def#3{}%
+ \DTLifdbexists{#1}%
+ {%
+ \@sDTLifhaskey{#1}{#2}%
+ {%
+ \@sdtlforcolumn{\DTLthisval}{#1}{#2}%
+ {%
+ \ifdefempty{#3}%
+ {%
+ \let#3\DTLthisval
+ }%
+ {%
+ \DTLmin{#3}{#3}{\DTLthisval}%
+ }%
+ }%
+ }%
+ {%
+ \PackageError{datatool}{Key `#2' doesn't
+ exist in database `#1'}{}%
+ }%
+ }%
+ {%
+ \PackageError{datatool}{Data base `#1' doesn't
+ exist}{}%
+ }%
+}
+\newcommand*{\DTLmaxforkeys}[1][\boolean{true}\and
+ \DTLisnumerical{\DTLthisval}]{%
+ \def\@dtl at cond{#1}%
+ \@dtlmaxforkeys
+}
+\newcommand*{\@dtlmaxforkeys}[4][]{%
+ \def#4{}%
+ \@for\@dtl at db@name:=#2\do{%
+ \@sDTLforeach{\@dtl at db@name}%
+ {#1}% assignment list
+ {%
+ \@for\@dtl at key:=#3\do{%
+ \@sdtl at getcolumnindex{\@dtl at col}{\@dtl at db@name}{\@dtl at key}%
+ \dtlcurrentrow=\expandafter{\dtl at thisrow}%
+ \dtlgetentryfromrow{\DTLthisval}{\@dtl at col}{\dtlcurrentrow}%
+ \expandafter\ifthenelse\expandafter{\@dtl at cond}%
+ {%
+ \ifdefempty{#4}%
+ {%
+ \let#4\DTLthisval
+ }%
+ {%
+ \DTLmax{#4}{#4}{\DTLthisval}%
+ }%
+ }{}%
+ }%
+ }%
+ }%
+}
+\newcommand*{\DTLmaxforcolumn}[3]{%
+ \def#3{}%
+ \DTLifdbexists{#1}%
+ {%
+ \@sDTLifhaskey{#1}{#2}%
+ {%
+ \@sdtlforcolumn{\DTLthisval}{#1}{#2}%
+ {%
+ \ifdefempty{#3}%
+ {%
+ \let#3\DTLthisval
+ }%
+ {%
+ \DTLmax{#3}{#3}{\DTLthisval}%
+ }%
+ }%
+ }%
+ {%
+ \PackageError{datatool}{Key `#2' doesn't
+ exist in database `#1'}{}%
+ }%
+ }%
+ {%
+ \PackageError{datatool}{Data base `#1' doesn't
+ exist}{}%
+ }%
+}
+\newcommand*{\DTLcomputebounds}[8][\boolean{true}]{%
+\let#5=\relax
+\let#6=\relax
+\let#7=\relax
+\let#8=\relax
+\@for\dtl at thisdb:=#2\do{%
+ \@sDTLforeach[#1]{\dtl at thisdb}{\DTLthisX=#3,\DTLthisY=#4}{%
+ \expandafter\DTLconverttodecimal\expandafter{\DTLthisX}{\dtl at decx}%
+ \expandafter\DTLconverttodecimal\expandafter{\DTLthisY}{\dtl at decy}%
+ \ifx#5\relax
+ \let#5=\dtl at decx
+ \let#6=\dtl at decy
+ \let#7=\dtl at decx
+ \let#8=\dtl at decy
+ \else
+ \dtlmin{#5}{#5}{\dtl at decx}%
+ \dtlmin{#6}{#6}{\dtl at decy}%
+ \dtlmax{#7}{#7}{\dtl at decx}%
+ \dtlmax{#8}{#8}{\dtl at decy}%
+ \fi
+ }%
+}%
+}
+\newcommand*{\DTLgetvalueforkey}[5]{%
+ \DTLgetrowforkey{\@dtl at row}{#3}{#4}{#5}%
+ \@sdtl at getcolumnindex{\@dtl at col}{#3}{#2}%
+ {%
+ \dtlcurrentrow=\expandafter{\@dtl at row}%
+ \edef\@dtl at dogetval{\noexpand\dtlgetentryfromcurrentrow
+ {\noexpand\@dtl at val}{\@dtl at col}}%
+ \@dtl at dogetval
+ \global\let#1=\@dtl at val
+ }%
+}
+\newcommand*{\DTLgetrowforkey}[4]{%
+ \global\let#1=\@empty
+ \@sDTLforeach{#2}{\dtl at refvalue=#3}{%
+ \DTLifnull{\dtl at refvalue}%
+ {}%
+ {%
+ \ifthenelse{\equal{\dtl at refvalue}{#4}}%
+ {%
+ \xdef#1{\the\dtlcurrentrow}%
+ \dtlbreak
+ }%
+ {}%
+ }%
+ }%
+}
+\newtoks\@dtl at list
+\newcommand*{\DTLsort}{\@ifstar\@sDTLsort\@DTLsort}
+\newcommand{\@DTLsort}[3][]{%
+ \dtlsort[#1]{#2}{#3}{\dtlcompare}%
+}
+\newcommand*{\@sDTLsort}[3][]{%
+ \dtlsort[#1]{#2}{#3}{\dtlicompare}%
+}
+\newcommand{\dtlsort}[4][]{%
+ \DTLifdbexists{#3}%
+ {%
+ \ifnum\DTLrowcount{#3}>100\relax
+ \typeout{Sorting `#3' - this may take a while.}%
+ \fi
+ \edef\@dtl at replacementkeys{#1}%
+ \def\@dtl at sortorder{}%
+ \@for\@dtl at level:=#2\do
+ {%
+ \expandafter\@dtl at getsortdirection\@dtl at level=\relax
+ \DTLifhaskey{#3}{\@dtl at key}%
+ {%
+ \ifdefempty\@dtl at sortorder
+ {\let\@dtl at sortorder=\@dtl at level}%
+ {\eappto\@dtl at sortorder{,\@dtl at level}}%
+ }%
+ {%
+ \PackageError{datatool}%
+ {%
+ Can't sort on `\@dtl at level'.
+ No such key `\@dtl at key' in database `#3'%
+ }{}%
+ }%
+ }%
+ \ifdefempty\@dtl at sortorder
+ {%
+ \PackageWarning{datatool}{No keys provided to sort database `#3'}%
+ }%
+ {%
+ \let\@dtl at comparecs=#4%
+ \dtl at sortdata{#3}%
+ }%
+ }%
+ {%
+ \PackageError{datatool}{Database `#3' doesn't exist}{}%
+ }%
+}
+\newtoks\@dtl at rowa
+\newtoks\@dtl at rowb
+\newcommand*{\dtl at sortdata}[1]{%
+ \def\@dtl at sortedlist{}%
+ \edef\@dtl at dbname{#1}%
+ \@dtlforeachrow(\@dtl at rowAnum,\@dtl at rowAcontents)\in\@dtl at dbname\do{%
+ \@dtl at rowa=\expandafter{\@dtl at rowAcontents}%
+ \def\@dtl at newlist{}%
+ \@dtl at insertdonefalse
+ \dtlrownum=0\relax
+ \expandafter\@dtl at foreachrow\@dtl at sortedlist
+ \db at row@elt at w%
+ \db at row@id at w \@nil\db at row@id at end@%
+ \db at row@id at w \@nil\db at row@id at end@%
+ \db at row@elt at end@%
+ \@@{\@dtl at rowBnum}{\@dtl at rowBcontents}%
+ {%
+ \@dtl at rowb=\expandafter{\@dtl at rowBcontents}%
+ \dtlrownum=\@dtl at rowBnum
+ \if at dtl@insertdone
+ \advance\dtlrownum by 1\relax
+ \else
+ \@dtl at sortcriteria{\@dtl at rowa}{\@dtl at rowb}%
+ \ifnum\dtl at sortresult<0\relax
+ \toks@=\expandafter{\@dtl at newlist}%
+ \edef\@dtl at newlist{%
+ \the\toks@
+ \noexpand\db at row@elt at w%
+ \noexpand\db at row@id at w \number\dtlrownum
+ \noexpand\db at row@id at end@%
+ \the\@dtl at rowa
+ \noexpand\db at row@id at w \number\dtlrownum
+ \noexpand\db at row@id at end@%
+ \noexpand\db at row@elt at end@%
+ }%
+ \advance\dtlrownum by 1\relax
+ \@dtl at insertdonetrue
+ \fi
+ \fi
+ \toks@=\expandafter{\@dtl at newlist}%
+ \edef\@dtl at newlist{\the\toks@
+ \noexpand\db at row@elt at w%
+ \noexpand\db at row@id at w \number\dtlrownum
+ \noexpand\db at row@id at end@%
+ \the\@dtl at rowb
+ \noexpand\db at row@id at w \number\dtlrownum
+ \noexpand\db at row@id at end@%
+ \noexpand\db at row@elt at end@%
+ }%
+ }\q at nil
+ \if at dtl@insertdone
+ \else
+ \advance\dtlrownum by 1\relax
+ \toks@=\expandafter{\@dtl at newlist}%
+ \edef\@dtl at newlist{\the\toks@
+ \noexpand\db at row@elt at w%
+ \noexpand\db at row@id at w \number\dtlrownum
+ \noexpand\db at row@id at end@%
+ \the\@dtl at rowa
+ \noexpand\db at row@id at w \number\dtlrownum
+ \noexpand\db at row@id at end@%
+ \noexpand\db at row@elt at end@%
+ }%
+ \fi
+ \let\@dtl at sortedlist=\@dtl at newlist
+ }%
+ \expandafter\global\csname dtldb@#1\endcsname=\expandafter
+ {\@dtl at sortedlist}%
+}
+\newcommand{\@dtl at sortcriteria}[2]{%
+ \@for\@dtl at level:=\@dtl at sortorder\do
+ {%
+ \expandafter\@dtl at getsortdirection\@dtl at level=\relax
+ \let\@dtl at keya=\@dtl at key
+ \let\@dtl at keyb=\@dtl at key
+ \@sdtl at getcolumnindex{\@dtl at col}{\@dtl at dbname}{\@dtl at key}%
+ \dtlgetentryfromrow{\@dtl at a}{\@dtl at col}{#1}%
+ \dtlgetentryfromrow{\@dtl at b}{\@dtl at col}{#2}%
+ \ifx\@dtl at a\dtlnovalue
+ \@dtl at setnull{\@dtl at a}{\@dtl at key}%
+ \fi
+ \ifx\@dtl at b\dtlnovalue
+ \@dtl at setnull{\@dtl at b}{\@dtl at key}%
+ \fi
+ \DTLifnull{\@dtl at a}%
+ {%
+ \@for\@dtl at keya:=\@dtl at replacementkeys\do{%
+ \@sdtl at getcolumnindex{\@dtl at col}{\@dtl at dbname}{\@dtl at keya}%
+ \dtlgetentryfromrow{\@dtl at a}{\@dtl at col}{#1}%
+ \ifx\@dtl at a\dtlnovalue
+ \@dtl at setnull{\@dtl at a}{\@dtl at key}%
+ \fi
+ \DTLifnull{\@dtl at a}{}{\@endfortrue}%
+ }%
+ \ifx\@dtl at keya\@nnil
+ \let\@dtl at keya\@dtl at key
+ \@dtl at setnull{\@dtl at a}{\@dtl at key}%
+ \fi
+ }%
+ {}%
+ \DTLifnull{\@dtl at b}%
+ {%
+ \@for\@dtl at keyb:=\@dtl at replacementkeys\do{%
+ \@sdtl at getcolumnindex{\@dtl at col}{\@dtl at dbname}{\@dtl at keyb}%
+ \dtlgetentryfromrow{\@dtl at b}{\@dtl at col}{#2}%
+ \ifx\@dtl at b\dtlnovalue
+ \@dtl at setnull{\@dtl at b}{\@dtl at key}%
+ \fi
+ \DTLifnull{\@dtl at b}{}{\@endfortrue}%
+ }%
+ \ifx\@dtl at keyb\@nnil
+ \let\@dtl at keyb\@dtl at key
+ \@dtl at setnull{\@dtl at b}{\@dtl at key}%
+ \fi
+ }%
+ {}%
+ \@dtl at toksA=\expandafter{\@dtl at a}%
+ \@dtl at toksB=\expandafter{\@dtl at b}%
+ \edef\@dtl at docompare{\noexpand\dtl at compare@
+ {\@dtl at keya}{\@dtl at keyb}%
+ {\noexpand\@dtl at toksA}{\noexpand\@dtl at toksB}}%
+ \@dtl at docompare
+ \ifnum\dtl at sortresult=0\relax
+ \@endforfalse
+ \else
+ \@endfortrue
+ \fi
+ }%
+ \multiply\dtl at sortresult by -\@dtl at sortdirection\relax
+}
+\def\@dtl at getsortdirection#1=#2\relax{%
+ \def\@dtl at key{#1}%
+ \def\@dtl at sortdirection{#2}%
+ \ifdefempty{\@dtl at sortdirection}%
+ {%
+ \def\@dtl at sortdirection{-1}%
+ }%
+ {%
+ \@dtl at get@sortdirection#2%
+ \def\@dtl at dir{ascending}%
+ \ifx\@dtl at sortdirection\@dtl at dir
+ \def\@dtl at sortdirection{-1}%
+ \else
+ \def\@dtl at dir{descending}%
+ \ifx\@dtl at sortdirection\@dtl at dir
+ \def\@dtl at sortdirection{1}%
+ \else
+ \PackageError{datatool}{Invalid sort direction
+ `\@dtl at sortdirection'}{The sort direction can only be
+ one of `ascending' or `descending'}%
+ \def\@dtl at sortdirection{-1}%
+ \fi
+ \fi
+ }%
+}
+\def\@dtl at get@sortdirection#1={\def\@dtl at sortdirection{#1}}
+\newtoks\@dtl at toksA
+\newtoks\@dtl at toksB
+\newcommand{\dtl at compare}[3]{%
+ \dtl at compare@{#1}{#1}{#2}{#3}%
+}
+\newcommand{\dtl at compare@}[4]{%
+ \DTLgetdatatype{\@dtl at typeA}{\@dtl at dbname}{#1}%
+ \ifx\@dtl at typeA\DTLunsettype
+ \let\@dtl at typeA\DTLstringtype
+ \fi
+ \DTLgetdatatype{\@dtl at typeB}{\@dtl at dbname}{#2}%
+ \ifx\@dtl at typeB\DTLunsettype
+ \let\@dtl at typeB\DTLstringtype
+ \fi
+ \@dtl at tmpcount=\@dtl at typeA\relax
+ \multiply\@dtl at tmpcount by \@dtl at typeB\relax
+ \ifnum\@dtl at tmpcount=0\relax
+ \edef\@dtl at tmpcmp{%
+ \noexpand\@dtl at comparecs{\noexpand\dtl at sortresult}%
+ {\the#3}{\the#4}%
+ }%
+ \@dtl at tmpcmp
+ \ifdtlverbose
+ \edef\@dtl at a{\the#3}%
+ \edef\@dtl at b{\the#4}%
+ \fi
+ \else
+ \edef\@dtl at a{\the#3}%
+ \edef\@dtl at b{\the#4}%
+ \DTLifnumlt{\@dtl at a}{\@dtl at b}%
+ {%
+ \dtl at sortresult=-1\relax
+ }%
+ {%
+ \DTLifnumgt{\@dtl at a}{\@dtl at b}%
+ {%
+ \dtl at sortresult=1\relax
+ }%
+ {%
+ \dtl at sortresult=0\relax
+ }%
+ }%
+ \fi
+ \ifdtlverbose
+ \@onelevel at sanitize\@dtl at a
+ \@onelevel at sanitize\@dtl at b
+ \dtl at message{`\@dtl at a' <=> `\@dtl at b' = \number\dtl at sortresult}%
+ \fi
+}
+\newwrite\@dtl at write
+\newcommand*{\DTLsavedb}[2]{%
+ \DTLifdbexists{#1}%
+ {%
+ \openout\@dtl at write=#2\relax
+ \def\@dtl at header{}%
+ \dtlforeachkey(\@dtl at key,\@dtl at col,\@dtl at type,\@dtl at head)%
+ \in{#1}\do
+ {%
+ \IfSubStringInString{\@dtl at separator}{\@dtl at key}%
+ {%
+ \ifdefempty{\@dtl at header}%
+ {%
+ \protected at edef\@dtl at header{%
+ \@dtl at delimiter\@dtl at key\@dtl at delimiter}%
+ }%
+ {%
+ \toks@=\expandafter{\@dtl at header}%
+ \protected at edef\@dtl at header{%
+ \the\toks@\@dtl at separator
+ \@dtl at delimiter\@dtl at key\@dtl at delimiter}%
+ }%
+ }%
+ {%
+ \ifdefempty{\@dtl at header}%
+ {%
+ \protected at edef\@dtl at header{\@dtl at key}%
+ }%
+ {%
+ \toks@=\expandafter{\@dtl at header}%
+ \protected at edef\@dtl at header{\the\toks@
+ \@dtl at separator\@dtl at key}%
+ }%
+ }%
+ }%
+ \protected at write\@dtl at write{}{\@dtl at header}%
+ \@sDTLforeach{#1}{}%
+ {%
+ \def\@dtl at row{}%
+ \DTLforeachkeyinrow{\@dtl at val}%
+ {%
+ \IfSubStringInString{\@dtl at separator}{\@dtl at val}%
+ {%
+ \ifdefempty{\@dtl at row}%
+ {%
+ \protected at edef\@dtl at row{%
+ \@dtl at delimiter\@dtl at val\@dtl at delimiter}%
+ }%
+ {%
+ \toks@=\expandafter{\@dtl at row}%
+ \protected at edef\@dtl at row{\the\toks@\@dtl at separator
+ \@dtl at delimiter\@dtl at val\@dtl at delimiter}%
+ }%
+ }%
+ {%
+ \ifdefempty{\@dtl at row}%
+ {%
+ \protected at edef\@dtl at row{\@dtl at val}%
+ }%
+ {%
+ \toks@=\expandafter{\@dtl at row}%
+ \protected at edef\@dtl at row{\the\toks@\@dtl at separator
+ \@dtl at val}%
+ }%
+ }%
+ }%
+ \protected at write\@dtl at write{}{\@dtl at row}%
+ }%
+ \closeout\@dtl at write
+ }%
+ {%
+ \PackageError{datatool}{Can't save database `#1': no such
+ database}{}%
+ }%
+}
+\newcommand*{\DTLsavetexdb}[2]{%
+ \DTLifdbexists{#1}%
+ {%
+ \openout\@dtl at write=#2\relax
+ \protected at write\@dtl at write{}{\string\DTLnewdb{#1}}%
+ \@sDTLforeach{#1}{}%
+ {%
+ \protected at write\@dtl at write{}{\string\DTLnewrow*{#1}}%
+ \DTLforeachkeyinrow{\@dtl at val}%
+ {%
+ \DTLifnull{\@dtl at val}%
+ {\def\@dtl at val{}}%
+ {}%
+ \protected at write\@dtl at write{}{%
+ \string\DTLnewdbentry*{#1}{\dtlkey}{\@dtl at val}}%
+ }%
+ }%
+ \dtlforeachkey(\@dtl at k,\@dtl at c,\@dtl at t,\@dtl at h)\in{#1}\do
+ {%
+ \@onelevel at sanitize\@dtl at h
+ \protected at write\@dtl at write{}{%
+ \string\DTLsetheader*{#1}{\@dtl at k}{\@dtl at h}}%
+ }%
+ \protected at write{\@dtl at write}{}{\string\def\string\dtllastloadeddb{#1}}%
+ \closeout\@dtl at write
+ }%
+ {%
+ \PackageError{datatool}{Can't save database `#1': no such
+ database}{}%
+ }%
+}
+\newcommand*{\dtl at saverawdbhook}{}
+\newcommand*{\DTLsaverawdb}[2]{%
+ \DTLifdbexists{#1}%
+ {%
+ \openout\@dtl at write=#2\relax
+ \protected at write{\@dtl at write}{}{%
+ \string\DTLifdbexists{#1}\expandafter\@gobble\string\%^^J%
+ {%
+ \string\PackageError{datatool}{Database `#1' ^^Jalready exists}{}%
+ \expandafter\@gobble\string\%^^J%
+ \string\aftergroup\string\endinput
+ }%
+ {%
+ }\expandafter\@gobble\string\%
+ }%
+ {%
+ \def\db at row@elt at w{\expandafter\@gobble\string\%^^J\string\db at row@elt at w\space}%
+ \def\db at row@elt at end@{\expandafter\@gobble\string\%^^J\string\db at row@elt at end@\space}%
+ \def\db at row@id at w{\expandafter\@gobble\string\%^^J\string\db at row@id at w\space}%
+ \def\db at row@id at end@{\expandafter\@gobble\string\%^^J\string\db at row@id at end@\space}%
+ \def\db at col@elt at w{\expandafter\@gobble\string\%^^J\string\db at col@elt at w\space}%
+ \def\db at col@elt at end@{\expandafter\@gobble\string\%^^J\string\db at col@elt at end@\space}%
+ \def\db at col@id at w{\expandafter\@gobble\string\%^^J\string\db at col@id at w\space}%
+ \def\db at col@id at end@{\expandafter\@gobble\string\%^^J\string\db at col@id at end@\space}%
+ \def\db at plist@elt at w{\expandafter\@gobble\string\%^^J\string\db at plist@elt at w\space}%
+ \def\db at plist@elt at end@{\expandafter\@gobble\string\%^^J\string\db at plist@elt at end@\space}%
+ \def\db at key@id at w{\expandafter\@gobble\string\%^^J\string\db at key@id at w\space}%
+ \def\db at key@id at end@{\expandafter\@gobble\string\%^^J\string\db at key@id at end@\space}%
+ \def\db at type@id at w{\expandafter\@gobble\string\%^^J\string\db at type@id at w\space}%
+ \def\db at type@id at end@{\expandafter\@gobble\string\%^^J\string\db at type@id at end@\space}%
+ \def\db at header@id at w{\expandafter\@gobble\string\%^^J\string\db at header@id at w\space}%
+ \def\db at header@id at end@{\expandafter\@gobble\string\%^^J\string\db at header@id at end@\space}%
+ \protected at write{\@dtl at write}{}{\string\bgroup\string\makeatletter}%
+ \protected at write{\@dtl at write}{}{%
+ \string\dtl at message{Reconstructing database^^J`#1'}%
+ \expandafter\@gobble\string\%}%
+ \protected at write{\@dtl at write}{}{%
+ \string\expandafter
+ \string\global\string\expandafter^^J\string\newtoks
+ \string\csname\space dtlkeys@#1\string\endcsname}%
+ \protected at write{\@dtl at write}{}{%
+ \string\expandafter
+ \string\global^^J
+ \string\csname\space dtlkeys@#1\string\endcsname
+ =\expandafter\@gobble\string\{\expandafter\@gobble\string\%}%
+ \expandafter\protected at xdef\csname dtl at rawwritedbkeys@#1\endcsname{%
+ \the\csname dtlkeys@#1\endcsname}%
+ \protected at write{\@dtl at write}{}{\csname dtl at rawwritedbkeys@#1\endcsname}%
+ \protected at write{\@dtl at write}{}%
+ {\expandafter\@gobble\string\}\expandafter\@gobble\string\%}%
+ \dtl at saverawdbhook
+ \protected at write{\@dtl at write}{}{%
+ \string\expandafter\string\global
+ \string\expandafter^^J\string\newtoks
+ \string\csname\space dtldb@#1\string\endcsname}%
+ \protected at write{\@dtl at write}{}{%
+ \string\expandafter
+ \string\global^^J\string\csname\space dtldb@#1\string\endcsname
+ =\expandafter\@gobble\string\{\expandafter\@gobble\string\%}%
+ \expandafter\protected at xdef\csname dtl at rawwritedb@#1\endcsname{\the\csname dtldb@#1\endcsname}%
+ \protected at write{\@dtl at write}{}{\csname dtl at rawwritedb@#1\endcsname}%
+ \protected at write{\@dtl at write}{}{\expandafter\@gobble\string\}\expandafter\@gobble\string\%}%
+ \protected at write{\@dtl at write}{}{\string\expandafter\string\global^^J
+ \string\expandafter\string\newcount
+ \string\csname\space dtlrows@#1\string\endcsname}%
+ \protected at write{\@dtl at write}{}{\string\expandafter\string\global^^J
+ \string\csname\space dtlrows@#1\string\endcsname
+ =\expandafter\number\csname dtlrows@#1\endcsname\string\relax}%
+ \protected at write{\@dtl at write}{}{\string\expandafter\string\global^^J
+ \string\expandafter\string\newcount
+ \string\csname\space dtlcols@#1\string\endcsname}%
+ \protected at write{\@dtl at write}{}{\string\expandafter\string\global^^J
+ \string\csname\space dtlcols@#1\string\endcsname
+ =\expandafter\number\csname dtlcols@#1\endcsname\string\relax}%
+ \dtlforeachkey(\@dtl at key,\@dtl at col,\@dtl at type,\@dtl at head)\in{#1}\do
+ {%
+ \edef\dtl at tmp{%
+ \string\expandafter^^J
+ \string\gdef
+ \string\csname\space dtl at ci@#1@\@dtl at key\string\endcsname
+ {\csname dtl at ci@#1@\@dtl at key\endcsname}\expandafter\@gobble\string\%
+ }%
+ \expandafter\write\expandafter\@dtl at write\expandafter{\dtl at tmp}%
+ }%
+ \protected at write{\@dtl at write}{}{\string\egroup}%
+ }%
+ \protected at write{\@dtl at write}{}{\string\def\string\dtllastloadeddb{#1}}%
+ \closeout\@dtl at write
+ }%
+ {%
+ \PackageError{datatool}{Can't save database `#1': no such
+ database}{}%
+ }%
+}
+\newcommand*{\DTLprotectedsaverawdb}[2]{%
+ \DTLifdbexists{#1}%
+ {%
+ \openout\@dtl at write=#2\relax
+ \protected at write{\@dtl at write}{}{%
+ \string\DTLifdbexists{#1}\expandafter\@gobble\string\%^^J%
+ {%
+ \string\PackageError{datatool}{Database `#1' ^^Jalready exists}{}%
+ \expandafter\@gobble\string\%^^J%
+ \string\aftergroup\string\endinput
+ }%
+ {%
+ }\expandafter\@gobble\string\%
+ }%
+ {%
+ \protected at write{\@dtl at write}{}{\string\bgroup\string\makeatletter}%
+ \protected at write{\@dtl at write}{}{\string\dtl at message{Reconstructing database
+ ^^J`#1'}\expandafter\@gobble\string\%}%
+ \protected at write{\@dtl at write}{}{%
+ \string\expandafter
+ \string\global\string\expandafter^^J\string\newtoks
+ \string\csname\space dtlkeys@#1\string\endcsname}%
+ \protected at write{\@dtl at write}{}{%
+ \string\expandafter
+ \string\global^^J
+ \string\csname\space dtlkeys@#1\string\endcsname
+ =\expandafter\@gobble\string\{\expandafter\@gobble\string\%}%
+ \edef\dtl at rawwrite@keys{\the\csname dtlkeys@#1\endcsname}%
+ \@onelevel at sanitize\dtl at rawwrite@keys
+ \expandafter\write\expandafter\@dtl at write\expandafter
+ {\dtl at rawwrite@keys\expandafter\@gobble\string\}}%
+ \protected at write{\@dtl at write}{}{%
+ \string\expandafter\string\global
+ \string\expandafter^^J\string\newtoks
+ \string\csname\space dtldb@#1\string\endcsname}%
+ \protected at write{\@dtl at write}{}{%
+ \string\expandafter
+ \string\global^^J\string\csname\space dtldb@#1\string\endcsname
+ =\expandafter\@gobble\string\{\expandafter\@gobble\string\%}%
+ \edef\dtl at rawwrite@db{\the\csname dtldb@#1\endcsname}%
+ \@onelevel at sanitize\dtl at rawwrite@db
+ \expandafter\write\expandafter\@dtl at write\expandafter
+ {\dtl at rawwrite@db\expandafter\@gobble\string\}}%
+ \protected at write{\@dtl at write}{}{\string\expandafter\string\global^^J
+ \string\expandafter\string\newcount
+ \string\csname\space dtlrows@#1\string\endcsname}%
+ \protected at write{\@dtl at write}{}{\string\expandafter\string\global^^J
+ \string\csname\space dtlrows@#1\string\endcsname
+ =\expandafter\number\csname dtlrows@#1\endcsname\string\relax}%
+ \protected at write{\@dtl at write}{}{\string\expandafter\string\global^^J
+ \string\expandafter\string\newcount
+ \string\csname\space dtlcols@#1\string\endcsname}%
+ \protected at write{\@dtl at write}{}{\string\expandafter\string\global^^J
+ \string\csname\space dtlcols@#1\string\endcsname
+ =\expandafter\number\csname dtlcols@#1\endcsname\string\relax}%
+ \dtlforeachkey(\@dtl at key,\@dtl at col,\@dtl at type,\@dtl at head)\in{#1}\do
+ {%
+ \edef\dtl at tmp{%
+ \string\expandafter^^J
+ \string\gdef
+ \string\csname\space dtl at ci@#1@\@dtl at key\string\endcsname
+ {\csname dtl at ci@#1@\@dtl at key\endcsname}\expandafter\@gobble\string\%
+ }%
+ \expandafter\write\expandafter\@dtl at write\expandafter{\dtl at tmp}%
+ }%
+ \protected at write{\@dtl at write}{}{\string\egroup}%
+ }%
+ \protected at write{\@dtl at write}{}{\string\def\string\dtllastloadeddb{#1}}%
+ \closeout\@dtl at write
+ }%
+ {%
+ \PackageError{datatool}{Can't save database `#1': no such
+ database}{}%
+ }%
+}
+\newcommand*{\DTLloaddbtex}[2]{%
+ \IfFileExists{#2}%
+ {%
+ \input{#2}%
+ \ifdef#1%
+ {%
+ \PackageError{datatool}{Command \string#1\space is already defined}%
+ {}%
+ }%
+ {%
+ \let#1\dtllastloadeddb
+ }%
+ }%
+ {%
+ \PackageError{datatool}{File `#2' doesn't exist.}{}%
+ }%
+}
+\newread\@dtl at read
+\newcount\dtl at entrycr
+\define at boolkey{loaddb}[dtl]{noheader}[true]{}
+\define at boolkey{loaddb}[dtl]{autokeys}[true]{}
+\dtlautokeysfalse
+\define at key{loaddb}{keys}{%
+ \dtl at entrycr=0\relax
+ \@for\@dtl at key:=#1\do
+ {%
+ \advance\dtl at entrycr by 1\relax
+ \expandafter
+ \edef\csname @dtl at inky@\romannumeral\dtl at entrycr\endcsname{%
+ \@dtl at key}%
+ }%
+}
+\define at key{loaddb}{headers}{%
+ \dtl at entrycr=0\relax
+ \@for\@dtl at head:=#1\do
+ {%
+ \advance\dtl at entrycr by 1\relax
+ \toks@=\expandafter{\@dtl at head}%
+ \expandafter
+ \edef\csname @dtl at inhd@\romannumeral\dtl at entrycr\endcsname{%
+ \the\toks@}%
+ }%
+}
+\newcount{\dtl at omitlines}
+\define at key{loaddb}{omitlines}{\dtl at omitlines=#1\relax}
+\newcommand*{\dtldefaultkey}{Column}
+\newcommand*{\@dtl at readline}[2]{%
+ \begingroup
+ \catcode\endlinechar=\active%
+ \global\read#1 to #2%
+ \endgroup%
+ \ifx#2\empty%
+ \else%
+ \expandafter\@dtl at stripeol#2%
+ \let#2\@dtl at strippedline%
+ \fi%
+}
+\begingroup
+\catcode\endlinechar=\active%
+\gdef\@dtl at stripeol#1
+{\gdef\@dtl at strippedline{#1}}
+\endgroup
+\newcommand*{\@dtl at readrawline}[2]{%
+ \@dtl at rawread#1 to #2%
+ \dtl at domappings\@dtl at line
+}
+\newif\ifDTLnewdbonload
+\DTLnewdbonloadtrue
+\newcommand*{\DTLloaddb}{%
+ \let\@dtl at doreadline\@dtl at readline
+ \@dtlloaddb
+}
+\newcommand*{\@dtlloaddb}[3][]{%
+ \IfFileExists{#3}{%
+ \begingroup
+ \catcode`\"12\relax
+ \dtlnoheaderfalse
+ \setkeys{loaddb}{#1}%
+ \openin\@dtl at read=#3%
+ \dtl at message{Reading `#3'}%
+ \loop
+ \ifnum \dtl at omitlines > \z@
+ \advance\dtl at omitlines by \m at ne
+ \read\@dtl at read to \@dtl at line
+ \repeat
+ \ifDTLnewdbonload
+ \DTLnewdb{#2}%
+ \fi
+ \ifeof\@dtl at read
+ \PackageWarning{datatool}{File `#3' has no data}%
+ \else
+ \ifdtlnoheader
+ \else
+ \loop
+ \@dtl at conditionfalse
+ \ifeof\@dtl at read
+ \else
+ \@dtl at doreadline\@dtl at read\@dtl at line
+ \ifdefempty{\@dtl at line}%
+ {%
+ \@dtl at conditiontrue
+ }%
+ {%
+ }%
+ \fi
+ \if at dtl@condition
+ \repeat
+ \protected at edef\@dtl at lin@{%
+ \@dtl at separator\@dtl at line\@dtl at separator}%
+ \dtl at entrycr=0\relax
+ \loop
+ \expandafter\@dtl at lopoff\@dtl at lin@\to\@dtl at lin@\@dtl at key
+ \advance\dtl at entrycr by 1\relax
+ \ifdtlautokeys
+ \csedef{@dtl at inky@\romannumeral\dtl at entrycr}%
+ {\dtldefaultkey\number\dtl at entrycr}%
+ \else
+ \ifdefempty{\@dtl at key}%
+ {%
+ \edef\@dtl at key{\dtldefaultkey\number\dtl at entrycr}%
+ }%
+ {}%
+ \fi
+ \expandafter\@dtl at toks\expandafter{\@dtl at key}%
+ \@ifundefined{@dtl at inky@\romannumeral\dtl at entrycr}%
+ {%
+ \expandafter
+ \edef\csname @dtl at inky@\romannumeral
+ \dtl at entrycr\endcsname{\the\@dtl at toks}%
+ }%
+ {%
+ \@ifundefined{@dtl at inhd@\romannumeral\dtl at entrycr}%
+ {%
+ \expandafter
+ \edef\csname @dtl at inhd@\romannumeral
+ \dtl at entrycr\endcsname{\the\@dtl at toks}%
+ }%
+ {}%
+ }%
+ \ifx\@dtl at lin@\@dtl at separator
+ \@dtl at conditionfalse
+ \else
+ \@dtl at conditiontrue
+ \fi
+ \if at dtl@condition
+ \repeat
+ \fi
+ \ifeof\@dtl at read
+ \ifdtlnoheader
+ \PackageWarning{datatool}{No data in `#3'}%
+ \else
+ \PackageWarning{datatool}{Only header row found in `#3'}%
+ \fi
+ \else
+ \@dtl at conditiontrue
+ \loop
+ \@dtl at doreadline\@dtl at read\@dtl at line
+ \ifdefempty{\@dtl at line}%
+ {%
+ }%
+ {%
+ \@sDTLnewrow{#2}%
+ \expandafter\@dtl at toks\expandafter{\@dtl at line}%
+ \edef\@dtl at lin@{\@dtl at separator\the\@dtl at toks
+ \@dtl at separator}%
+ \dtl at entrycr=0\relax
+ {%
+ \@dtl at conditiontrue
+ \loop
+ \expandafter\@dtl at lopoff\@dtl at lin@\to
+ \@dtl at lin@\@dtl at thisentry
+ \advance\dtl at entrycr by 1\relax
+ \@ifundefined{@dtl at inky@\romannumeral\dtl at entrycr}%
+ {%
+ \edef\@dtl at thiskey{\dtldefaultkey
+ \number\dtl at entrycr}%
+ \expandafter\let
+ \csname @dtl at inky@\romannumeral
+ \dtl at entrycr\endcsname\@dtl at thiskey
+ }%
+ {%
+ \edef\@dtl at thiskey{%
+ \csname @dtl at inky@\romannumeral
+ \dtl at entrycr\endcsname}%
+ }%
+ \expandafter\@dtl at toks\expandafter{\@dtl at thisentry}%
+ \edef\@do at dtlnewentry{\noexpand\@sDTLnewdbentry
+ {#2}{\@dtl at thiskey}{\the\@dtl at toks}}%
+ \@do at dtlnewentry
+ \ifx\@dtl at lin@\@dtl at separator
+ \@dtl at conditionfalse
+ \fi
+ \if at dtl@condition
+ \repeat
+ }%
+ }%
+ \ifeof\@dtl at read \@dtl at conditionfalse\fi
+ \if at dtl@condition
+ \repeat
+ \fi
+ \fi
+ \closein\@dtl at read
+ \edef\@dtl at maxcols{\expandafter
+ \number\csname dtlcols@#2\endcsname}%
+ \dtlgforint\dtl at entrycr=1\to\@dtl at maxcols\step1\do
+ {%
+ \@ifundefined{@dtl at inhd@\romannumeral\dtl at entrycr}%
+ {}%
+ {%
+ \expandafter\let\expandafter\@dtl at head
+ \csname @dtl at inhd@\romannumeral\dtl at entrycr\endcsname
+ \@dtl at toks=\expandafter{\@dtl at head}%
+ \edef\@dtl at dosetheader{\noexpand\@dtl at setheaderforindex
+ {#2}{\number\dtl at entrycr}{\the\@dtl at toks}}%
+ \@dtl at dosetheader
+ }%
+ }%
+ \endgroup
+ }{%
+ \PackageError{datatool}{Can't load database `#2' (file `#3'
+ doesn't exist)}{}%
+ }%
+}
+\newcommand*\DTLloadrawdb{%
+ \let\@dtl at doreadline\@dtl at readrawline
+ \@dtlloaddb
+}
+\begingroup
+\catcode`\%=\active
+\catcode`$=\active
+\catcode`&=\active
+\catcode`~=\active
+\catcode`_=\active
+\catcode`^=\active
+\catcode`#=\active
+\catcode`?=6\relax
+\catcode`<=1\relax
+\catcode`>=2\relax
+\catcode`\{=\active
+\catcode`\}=\active
+\gdef\@dtl at rawread?1to?2<\relax
+<<\catcode`\%=\active
+\catcode`$=\active
+\catcode`&=\active
+\catcode`~=\active
+\catcode`_=\active
+\catcode`^=\active
+\catcode`#=\active
+\catcode`\{=\active
+\catcode`\}=\active
+\def%<\noexpand\%>\relax
+\def$<\noexpand\$>\relax
+\def&<\&>\relax
+\def#<\#>\relax
+\def~<\noexpand\textasciitilde>\relax
+\def_<\noexpand\_>\relax
+\def^<\noexpand\textasciicircum>\relax
+\@dtl at activatebraces
+\@dtl at doreadraw?1?2>>>
+\gdef\@dtl at doreadraw?1?2<\relax
+\begingroup\catcode\endlinechar=\active\global\read?1 to \dtl at tmp\endgroup
+\expandafter\@dtl at stripeol\dtl at tmp
+\let\dtl at tmp\@dtl at strippedline
+\protected at xdef?2<\dtl at tmp>\relax
+>
+\endgroup
+\begingroup
+\catcode`\{=\active
+\catcode`\}=\active
+\catcode`<=1\relax
+\catcode`>=2\relax
+\gdef\@dtl at activatebraces<%
+ \catcode`\{=\active
+ \catcode`\}=\active
+ \def{<\noexpand\{>%
+ \def}<\noexpand\}>%
+>%
+\endgroup
+\newcommand*{\DTLrawmap}[2]{%
+ \expandafter\@dtl at toks\expandafter{\@dtl at rawmappings}%
+ \ifdefempty{\@dtl at rawmappings}%
+ {%
+ \def\@dtl at rawmappings{{#1}{#2}}%
+ }%
+ {%
+ \def\@dtl at tmp{{#1}{#2}}%
+ \protected at edef\@dtl at rawmappings{\the\@dtl at toks,\@dtl at tmp}%
+ }%
+}
+\newcommand*{\@dtl at rawmappings}{}
+\newcommand*{\dtl at domappings}[1]{%
+ \@for\@dtl at map:=\@dtl at rawmappings\do{%
+ \expandafter\DTLsubstituteall\expandafter#1\@dtl at map
+ }%
+}
+\newcommand*{\dtlshowdb}[1]{%
+ \expandafter\showthe\csname dtldb@#1\endcsname
+}
+\newcommand*{\dtlshowdbkeys}[1]{%
+ \expandafter\showthe\csname dtlkeys@#1\endcsname
+}
+\newcommand*{\dtlshowtype}[2]{%
+ \DTLgetdatatype{\@dtl at type}{#1}{#2}\show\@dtl at type
+}
+\endinput
+%%
+%% End of file `datatool-2019-09-27.sty'.
Property changes on: trunk/Master/texmf-dist/tex/latex/datatool/datatool-2019-09-27.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/datatool/datatool-base-2019-09-27.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/datatool/datatool-base-2019-09-27.sty (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/datatool/datatool-base-2019-09-27.sty 2025-03-05 21:33:51 UTC (rev 74461)
@@ -0,0 +1,3429 @@
+%%
+%% This is file `datatool-base-2019-09-27.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% datatool.dtx (with options: `datatool-base-2019-09-27.sty,package')
+%%
+%% datatool.dtx
+%% Copyright 2025 Nicola Talbot
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of LaTeX
+%% version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status `maintained'.
+%%
+%% The Current Maintainer of this work is Nicola Talbot.
+%%
+%% This work consists of the files datatool.dtx and datatool.ins and the derived files datatool-base.sty, datatool-undetermined.ldf, datatool-latin1.ldf, datatool-utf8.ldf, datatool-l3fp.def, datatool-lua.def, datatool-fp.def, datatool-fp.sty, datatool-pgfmath.def, datatool-pgfmath.sty, datatool.sty, datagidx.sty, databib.sty, databar.sty, datapie.sty, dataplot.sty, person.sty, databib.bst, databar-2019-09-27.sty, databib-2019-09-27.sty, datagidx-2019-09-27.sty, datapie-2019-09-27.sty, dataplot-2019-09-27.sty, datatool-2019-09-27.sty, datatool-base-2019-09-27.sty, datatool-fp-2019-09-27.sty, datatool-pgfmath-2019-09-27.sty, person-2019-09-27.sty.
+%%
+%% \CharacterTable
+%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+%% Digits \0\1\2\3\4\5\6\7\8\9
+%% Exclamation \! Double quote \" Hash (number) \#
+%% Dollar \$ Percent \% Ampersand \&
+%% Acute accent \' Left paren \( Right paren \)
+%% Asterisk \* Plus \+ Comma \,
+%% Minus \- Point \. Solidus \/
+%% Colon \: Semicolon \; Less than \<
+%% Equals \= Greater than \> Question mark \?
+%% Commercial at \@ Left bracket \[ Backslash \\
+%% Right bracket \] Circumflex \^ Underscore \_
+%% Grave accent \` Left brace \{ Vertical bar \|
+%% Right brace \} Tilde \~}
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{datatool-base}[2019/09/27 v2.32 (NLCT)]
+\RequirePackage{etoolbox}
+\RequirePackage{amsmath}
+\RequirePackage{xkeyval}
+\RequirePackage{xfor}
+\RequirePackage{ifthen}
+\RequirePackage{substr}[2009/10/20]
+\ifundef{\ifdtlverbose}
+{
+ \define at boolkey{datatool-base.sty}[dtl]{verbose}[true]{}
+}%
+{}
+\define at choicekey{datatool-base.sty}{math}[\val\nr]{fp,pgfmath}{%
+ \renewcommand*\@dtl at mathprocessor{#1}%
+}
+\define at boolkey{datatool-base.sty}[@dtl@]{utf8}[true]{}
+\ifdef\UTFviii at two@octets
+{\booltrue{@dtl at utf8}}%
+{\boolfalse{@dtl at utf8}}
+\newcommand*{\dtlenableUTFviii}{\booltrue{@dtl at utf8}}
+\newcommand*{\dtldisableUTFviii}{\boolfalse{@dtl at utf8}}
+\providecommand*{\@dtl at mathprocessor}{fp}
+\ProcessOptionsX
+\RequirePackage{datatool-\@dtl at mathprocessor}[=v2.32]
+\newcommand*{\dtl at message}[1]{%
+ \ifdtlverbose\typeout{#1}\fi
+}
+\newtoks\@dtl at toks
+\newcount\@dtl at tmpcount
+\newlength\dtl at tmplength
+\newcommand{\dtl at ifsingle}[3]{%
+ \def\@dtl at arg{#1}%
+ \ifdefempty{\@dtl at arg}%
+ {%
+ #3%
+ }%
+ {%
+ \@dtl at ifsingle#1\@nil{#2}{#3}%
+ }%
+}
+\def\@dtl at ifsingle#1#2\@nil#3#4{%
+ \def\dtl at sg@arg{#2}%
+ \ifdefempty{\dtl at sg@arg}%
+ {%
+ #3%
+ }%
+ {%
+ #4%
+ }%
+}
+\newcommand{\dtl at ifsingleorUTFviii}[3]{%
+ \ifbool{@dtl at utf8}
+ {%
+ \def\@dtl at arg{#1}%
+ \ifdefempty{\@dtl at arg}%
+ {%
+ #3%
+ }%
+ {%
+ \expandafter\dtl at if@two at octets#1\relax\relax\dtl at end@if at two@octets
+ {%
+ \dtl at getfirst@UTFviii#1\@nil\end at dtl@getfirst at UTFviii
+ \ifdefempty\dtl at rest{#2}{#3}%
+ }%
+ {%
+ \@dtl at ifsingle#1\@nil{#2}{#3}%
+ }%
+ }%
+ }%
+ {%
+ \dtl at ifsingle{#1}{#2}{#3}%
+ }%
+}%
+\newcommand{\dtlifintopenbetween}[5]{%
+ \ifnum#1>#2\relax
+ \ifnum#1<#3\relax
+ #4%
+ \else
+ #5%
+ \fi
+ \else
+ #5%
+ \fi
+}
+\newcommand{\dtlifintclosedbetween}[5]{%
+ \dtlifintopenbetween{#1}{#2}{#3}{#4}%
+ {%
+ \ifnum#1=#2\relax
+ #4%
+ \else
+ \ifnum#1=#3\relax
+ #4%
+ \else
+ #5%
+ \fi
+ \fi
+ }%
+}
+\long\def\long at collect@body#1{%
+ \@envbody{\@xp#1\@xp{\the\@envbody}}%
+ \edef\process at envbody{\the\@envbody\@nx\end{\@currenvir}}%
+ \@envbody\@emptytoks \def\begin at stack{b}%
+ \begingroup
+ \@xp\let\csname\@currenvir\endcsname\long at collect@@body
+ \edef\process at envbody{\@xp\@nx\csname\@currenvir\endcsname}%
+ \process at envbody
+}
+\long\def\long at addto@envbody#1{%
+ \toks@{#1}%
+ \edef\@dtl at tmp{\the\@envbody\the\toks@}%
+ \global\@envbody\@xp{\@dtl at tmp}%
+}
+\long\def\long at collect@@body#1\end#2{%
+ \protected at edef\begin at stack{%
+ \long at push@begins#1\begin\end \@xp\@gobble\begin at stack
+ }%
+ \ifx\@empty\begin at stack
+ \endgroup
+ \@checkend{#2}%
+ \long at addto@envbody{#1}%
+ \else
+ \long at addto@envbody{#1\end{#2}}%
+ \fi
+ \process at envbody
+}
+\long\def\long at push@begins#1\begin#2{%
+ \ifx\end#2\else b\@xp\long at push@begins\fi
+}
+\newcommand*{\DTLifinlist}[4]{%
+ \def\@dtl at doifinlist##1,#1,##2\end at dtl@doifinlist{%
+ \def\@before{##1}%
+ \def\@after{##2}%
+ }%
+ \expandafter\@dtl at doifinlist\expandafter,#2,#1,\@nil
+ \end at dtl@doifinlist
+ \ifx\@after\@nnil
+ #4%
+ \else
+ #3%
+ \fi
+}
+\newif\ifDTLlistskipempty
+\DTLlistskipemptytrue
+\newrobustcmd{\DTLlistelement}[2]{%
+ \begingroup
+ \@dtl at tmpcount=0\relax
+ \@for\@dtl at element:=#1\do{%
+ \ifDTLlistskipempty
+ \ifdefempty{\@dtl at element}%
+ {}%
+ {%
+ \advance\@dtl at tmpcount by 1\relax%
+ \ifnum\@dtl at tmpcount=#2 \@dtl at element\@endfortrue\fi
+ }%
+ \else
+ \advance\@dtl at tmpcount by 1\relax%
+ \ifnum\@dtl at tmpcount=#2 \@dtl at element\@endfortrue\fi
+ \fi
+ }%
+ \if at endfor \else\@dtl at listelement@outofrange{#2}\fi
+ \endgroup
+}
+\newrobustcmd{\DTLfetchlistelement}[3]{%
+ \begingroup
+ \@dtl at tmpcount=0\relax
+ \@for\@dtl at element:=#1\do{%
+ \ifDTLlistskipempty
+ \ifdefempty{\@dtl at element}%
+ {}%
+ {%
+ \advance\@dtl at tmpcount by 1\relax%
+ \ifnum\@dtl at tmpcount=#2 \@endfortrue\fi
+ }%
+ \else
+ \advance\@dtl at tmpcount by 1\relax%
+ \ifnum\@dtl at tmpcount=#2 \@endfortrue\fi
+ \fi
+ }%
+ \if at endfor \else\def\@dtl at element{\@dtl at listelement@outofrange{#2}}\fi
+ \edef\x{%
+ \endgroup
+ \noexpand\def\noexpand#3{\expandonce\@dtl at element}%
+ }\x
+}
+\newcommand{\@dtl at listelement@outofrange}[1]{%
+ \PackageWarning{datatool-base}{List index `\number#1' out of range}%
+}
+\newrobustcmd{\DTLnumitemsinlist}[2]{%
+ \@dtl at tmpcount=0\relax
+ \@for\@dtl at element:=#1\do{%
+ \ifDTLlistskipempty
+ \ifdefempty{\@dtl at element}%
+ {}%
+ {\advance\@dtl at tmpcount by 1\relax}%
+ \else
+ \advance\@dtl at tmpcount by 1\relax
+ \fi
+ }%
+ \edef#2{\number\@dtl at tmpcount}%
+}
+\newcommand*{\dtl at choplast}[3]{%
+ \let#2\@empty
+ \let#3\@empty
+ \@for\@dtl at element:=#1\do{%
+ \ifdefempty{#3}%
+ {%
+ }%
+ {%
+ \ifdefempty{#2}%
+ {%
+ \expandafter\toks@\expandafter{#3}%
+ \edef#2{{\the\toks@}}%
+ }%
+ {%
+ \expandafter\toks@\expandafter{#3}%
+ \expandafter\@dtl at toks\expandafter{#2}%
+ \edef#2{\the\@dtl at toks,{\the\toks@}}%
+ }%
+ }%
+ \let#3=\@dtl at element%
+ }%
+}
+\newcommand*{\dtl at chopfirst}[3]{%
+ \let#2=\@empty
+ \let#3=\@empty
+ \@for\@dtl at element:=#1\do{%
+ \let#2=\@dtl at element
+ \@endfortrue
+ }%
+ \if at endfor
+ \let#3=\@forremainder
+ \fi
+ \@endforfalse
+}
+\newcommand{\dtl at sortlist}[2]{%
+\def\@dtl at sortedlist{}%
+\@for\@dtl at currentrow:=#1\do{%
+\expandafter\dtl at insertinto\expandafter
+ {\@dtl at currentrow}{\@dtl at sortedlist}{#2}%
+\@endforfalse}%
+\let#1=\@dtl at sortedlist
+}
+\newcommand{\dtl at insertinto}[3]{%
+ \def\@dtl at newsortedlist{}%
+ \@dtl at insertdonefalse
+ \@for\dtl at srtelement:=#2\do{%
+ \if at dtl@insertdone
+ \expandafter\toks@\expandafter{\dtl at srtelement}%
+ \edef\@dtl at newstuff{{\the\toks@}}%
+ \else
+ \expandafter#3\expandafter{\dtl at srtelement}{#1}%
+ \ifnum\dtl at sortresult<0\relax
+ \expandafter\toks@\expandafter{\dtl at srtelement}%
+ \@dtl at toks{#1}%
+ \edef\@dtl at newstuff{{\the\@dtl at toks},{\the\toks@}}%
+ \@dtl at insertdonetrue
+ \else
+ \expandafter\toks@\expandafter{\dtl at srtelement}%
+ \edef\@dtl at newstuff{{\the\toks@}}%
+ \fi
+ \fi
+ \ifdefempty{\@dtl at newsortedlist}%
+ {%
+ \expandafter\toks@\expandafter{\@dtl at newstuff}%
+ \edef\@dtl at newsortedlist{\the\toks@}%
+ }%
+ {%
+ \expandafter\toks@\expandafter{\@dtl at newsortedlist}%
+ \expandafter\@dtl at toks\expandafter{\@dtl at newstuff}%
+ \edef\@dtl at newsortedlist{\the\toks@,\the\@dtl at toks}%
+ }%
+ \@endforfalse
+ }%
+ \ifdefempty{\@dtl at newsortedlist}%
+ {%
+ \@dtl at toks{#1}%
+ \edef\@dtl at newsortedlist{{\the\@dtl at toks}}%
+ }%
+ {%
+ \if at dtl@insertdone
+ \else
+ \expandafter\toks@\expandafter{\@dtl at newsortedlist}%
+ \@dtl at toks{#1}%
+ \edef\@dtl at newsortedlist{\the\toks@,{\the\@dtl at toks}}%
+ \fi
+ }%
+ \global\let#2=\@dtl at newsortedlist
+}
+\newcommand{\dtlsortlist}[2]{%
+\def\@dtl at sortedlist{}%
+\@for\@dtl at currentrow:=#1\do{%
+\expandafter\dtlinsertinto\expandafter
+ {\@dtl at currentrow}{\@dtl at sortedlist}{#2}%
+\@endforfalse}%
+\let#1=\@dtl at sortedlist
+}
+\newcommand{\dtlinsertinto}[3]{%
+ \def\@dtl at newsortedlist{}%
+ \@dtl at insertdonefalse
+ \@for\dtl at srtelement:=#2\do{%
+ \expandafter\DTLifSubString\expandafter{\dtl at srtelement}{,}
+ {%
+ \expandafter\toks@\expandafter{\dtl at srtelement}%
+ \edef\dtl at srtelement{{\the\toks@}}%
+ }%
+ {%
+ }
+ \if at dtl@insertdone
+ \let\@dtl at newstuff\dtl at srtelement
+ \else
+ \expandafter#3\expandafter\dtl at sortresult
+ \expandafter{\dtl at srtelement}{#1}%
+ \ifnum\dtl at sortresult>0\relax
+ \DTLifSubString{#1}{,}%
+ {%
+ \@dtl at toks{{#1}}%
+ }%
+ {%
+ \@dtl at toks{#1}%
+ }%
+ \expandafter\toks@\expandafter{\dtl at srtelement}%
+ \edef\@dtl at newstuff{\the\@dtl at toks,\the\toks@}%
+ \@dtl at insertdonetrue
+ \else
+ \expandafter\toks@\expandafter{\dtl at srtelement}%
+ \edef\@dtl at newstuff{{\the\toks@}}%
+ \let\@dtl at newstuff\dtl at srtelement
+ \fi
+ \fi
+ \ifdefempty{\@dtl at newsortedlist}%
+ {%
+ \expandafter\toks@\expandafter{\@dtl at newstuff}%
+ \edef\@dtl at newsortedlist{\the\toks@}%
+ }%
+ {%
+ \expandafter\toks@\expandafter{\@dtl at newsortedlist}%
+ \expandafter\@dtl at toks\expandafter{\@dtl at newstuff}%
+ \edef\@dtl at newsortedlist{\the\toks@,\the\@dtl at toks}%
+ }%
+ \@endforfalse
+ }%
+ \ifdefempty{\@dtl at newsortedlist}%
+ {%
+ \DTLifSubString{#1}{,}%
+ {%
+ \@dtl at toks{{#1}}%
+ }%
+ {%
+ \@dtl at toks{#1}%
+ }%
+ \edef\@dtl at newsortedlist{\the\@dtl at toks}%
+ }%
+ {%
+ \if at dtl@insertdone
+ \else
+ \DTLifSubString{#1}{,}%
+ {%
+ \@dtl at toks{{#1}}%
+ }%
+ {%
+ \@dtl at toks{#1}%
+ }%
+ \expandafter\toks@\expandafter{\@dtl at newsortedlist}%
+ \edef\@dtl at newsortedlist{\the\toks@,\the\@dtl at toks}%
+ \fi
+ }%
+ \global\let#2=\@dtl at newsortedlist
+}
+\newcommand*{\edtlinsertinto}[3]{%
+ \protected at edef\dtl at srtelement{#1}%
+ \expandafter\dtlinsertinto\expandafter{\dtl at srtelement}{#2}{#3}%
+}
+\newif\if at dtl@insertdone
+\newcount\dtl at sortresult
+\newcommand*{\DTLlistformatsep}{, }
+\newcommand*{\DTLlistformatoxford}{}
+\ifdef\andname
+{\newcommand*{\DTLandname}{\andname}}
+{\newcommand*{\DTLandname}{\&}}
+\newcommand*{\DTLlistformatlastsep}{ \DTLandname\space}
+\newcommand*{\DTLlistformatitem}[1]{#1}
+\newcommand*{\@dtl at formatlist@handler}[1]{%
+ \@dtl at formatlist@itemsep
+ \@dtl at formatlist@lastitem
+ \renewcommand{\@dtl at formatlist@lastitem}{%
+ \renewcommand{\@dtl at formatlist@itemsep}{%
+ \DTLlistformatsep
+ \renewcommand*{\@dtl at formatlist@prelastitemsep}{%
+ \DTLlistformatoxford}}%
+ \renewcommand{\@dtl at formatlist@prelastitem}{%
+ \@dtl at formatlist@prelastitemsep
+ \DTLlistformatlastsep}%
+ \DTLlistformatitem{#1}%
+ }%
+}%
+\newrobustcmd*{\DTLformatlist}{%
+ \@ifstar{\s at dtlformatlist}{\@dtlformatlist}%
+}
+\newcommand*{\s at dtlformatlist}[1]{%
+ \def\@dtl at formatlist@itemsep{}%
+ \def\@dtl at formatlist@lastitem{}%
+ \def\@dtl at formatlist@prelastitem{}%
+ \def\@dtl at formatlist@prelastitemsep{}%
+ \@for\@dtl at formatlist@item:=#1\do{%
+ \ifDTLlistskipempty
+ \ifdefempty{\@dtl at formatlist@item}%
+ {}%
+ {\expandafter\@dtl at formatlist@handler\expandafter{\@dtl at formatlist@item}}%
+ \else
+ \expandafter\@dtl at formatlist@handler\expandafter{\@dtl at formatlist@item}%
+ \fi
+ }%
+ \@dtl at formatlist@prelastitem\@dtl at formatlist@lastitem
+}
+\newcommand*{\@dtlformatlist}[1]{{\s at dtlformatlist{#1}}}
+\newcommand{\@dtl at toks@gput at right@cx}[2]{%
+ \def\@dtl at toks@name{#1}%
+ \edef\@dtl at stuff{#2}%
+ \global\csname\@dtl at toks@name\endcsname\expandafter
+ \expandafter\expandafter{\expandafter\the
+ \csname\expandafter\@dtl at toks@name\expandafter\endcsname\@dtl at stuff}%
+}
+\newcommand{\@dtl at toks@gconcat at middle@cx}[4]{%
+ \def\@dtl at toks@name{#1}%
+ \edef\@dtl at stuff{#3}%
+ \global\csname\@dtl at toks@name\endcsname\expandafter\expandafter
+ \expandafter\expandafter\expandafter
+ \expandafter\expandafter{\expandafter\expandafter\expandafter
+ \the\expandafter\expandafter\expandafter#2%
+ \expandafter\@dtl at stuff\the#4}%
+}
+\newcount\@dtl at numgrpsepcount
+\newcommand*{\@dtl at decimal}{.}
+\newcommand*{\@dtl at numbergroupchar}{,}
+\newcommand*{\DTLsetnumberchars}[2]{%
+ \renewcommand*{\@dtl at numbergroupchar}{#1}%
+ \renewcommand*{\@dtl at decimal}{#2}%
+ \@dtl at construct@getnums
+ \@dtl at construct@stripnumgrpchar{#1}%
+}
+\edef\@dtl at construct@getintfrac#1{%
+ \noexpand\def\noexpand\@dtl at getintfrac##1#1##2\noexpand\relax{%
+ \noexpand\@dtl at get@intpart{##1}%
+ \noexpand\def\noexpand\@dtl at fracpart{##2}%
+ \noexpand\ifdefempty{\noexpand\@dtl at fracpart}
+ {%
+ \noexpand\def\noexpand\@dtl at fracpart{0}%
+ }%
+ {%
+ \noexpand\@dtl at getfracpart##2\noexpand\relax
+ \noexpand\@dtl at choptrailingzeroes{\noexpand\@dtl at fracpart}%
+ }%
+ }%
+ \noexpand\def\noexpand\@dtl at getfracpart##1#1\noexpand\relax{%
+ \noexpand\def\noexpand\@dtl at fracpart{##1}%
+ }%
+ \noexpand\def\noexpand\DTLconverttodecimal##1##2{%
+ \noexpand\dtl at ifsingle{##1}%
+ {%
+ \noexpand\expandafter\noexpand\toks@\noexpand\expandafter{##1}%
+ \noexpand\edef\noexpand\@dtl at tmp{\noexpand\the\noexpand\toks@}%
+ }%
+ {%
+ \noexpand\def\noexpand\@dtl at tmp{##1}%
+ }%
+ \noexpand\@dtl at standardize@currency\noexpand\@dtl at tmp
+ \noexpand\ifdefempty{\noexpand\@dtl at org@currency}%
+ {%
+ }%
+ {%
+ \noexpand\let\noexpand\@dtl at currency\noexpand\@dtl at org@currency
+ }%
+ \noexpand\expandafter
+ \noexpand\@dtl at getintfrac\noexpand\@dtl at tmp#1\noexpand\relax
+ \noexpand\edef##2{\noexpand\@dtl at intpart.\noexpand\@dtl at fracpart}%
+ }%
+}
+\newcommand*{\@dtl at construct@getnums}{%
+ \expandafter\@dtl at construct@getintfrac\expandafter{\@dtl at decimal}%
+}
+\newcommand*{\@dtl at get@intpart}[1]{%
+ \@dtl at tmpcount=1\relax
+ \def\@dtl at intpart{#1}%
+ \ifx\@dtl at intpart\@empty
+ \def\@dtl at intpart{0}%
+ \else
+ \def\@dtl at intpart{}%
+ \@dtl at get@int at part#1.\relax%
+ \fi
+ \ifnum\@dtl at tmpcount<0\relax
+ \edef\@dtl at intpart{-\@dtl at intpart}%
+ \fi
+ \@dtl at strip@numgrpchar{\@dtl at intpart}%
+}
+\def\@dtl at get@int at part#1#2\relax{%
+ \def\@dtl at argi{#1}%
+ \def\@dtl at argii{#2}%
+ \ifx\protect#1\relax%
+ \let\@dtl at get@nextintpart=\@dtl at get@int at part
+ \else
+ \expandafter\ifx\@dtl at argi\$%
+ \let\@dtl at get@nextintpart=\@dtl at get@int at part
+ \else
+ \ifx-#1%
+ \multiply\@dtl at tmpcount by -1\relax
+ \let\@dtl at get@nextintpart=\@dtl at get@int at part
+ \else
+ \if\@dtl at argi+%
+ \let\@dtl at get@nextintpart=\@dtl at get@int at part
+ \else
+ \def\@dtl at intpart{#1}%
+ \ifx.\@dtl at argii
+ \let\@dtl at get@nextintpart=\@gobble
+ \else
+ \let\@dtl at get@nextintpart=\@dtl at get@next at intpart
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+ \@dtl at get@nextintpart#2\relax
+}
+\def\@dtl at get@next at intpart#1.\relax{%
+ \edef\@dtl at intpart{\@dtl at intpart#1}%
+}
+\newcommand*{\@dtl at choptrailingzeroes}[1]{%
+ \def\@dtl at tmpcpz{}%
+ \expandafter\@dtl at chop@trailingzeroes#1\@nil%
+ \let#1=\@dtl at tmpcpz
+}
+\def\@dtl at chop@trailingzeroes#1#2\@nil{%
+ \dtlifnumeq{#2}{0}%
+ {%
+ \edef\@dtl at tmpcpz{\@dtl at tmpcpz#1}%
+ \let\@dtl at chopzeroesnext=\@dtl at gobbletonil
+ }%
+ {%
+ \edef\@dtl at tmpcpz{\@dtl at tmpcpz#1}%
+ \let\@dtl at chopzeroesnext=\@dtl at chop@trailingzeroes
+ }%
+ \@dtl at chopzeroesnext#2\@nil
+}
+\def\@dtl at gobbletonil#1\@nil{}
+\newcommand*{\dtl at truncatedecimal}[1]{%
+ \expandafter\@dtl at truncatedecimal#1.\@nil#1%
+}
+\def\@dtl at truncatedecimal#1.#2\@nil#3{%
+ \def#3{#1}%
+}
+\newcommand*{\@dtl at strip@numgrpchar}[1]{%
+ \def\@dtl at stripped{}%
+ \edef\@dtl at do@stripnumgrpchar{%
+ \noexpand\@@dtl at strip@numgrpchar#1\@dtl at numbergroupchar
+ \noexpand\relax
+ }%
+ \@dtl at do@stripnumgrpchar
+ \let#1=\@dtl at stripped
+}
+\edef\@dtl at construct@stripnumgrpchar#1{%
+ \noexpand\def\noexpand\@@dtl at strip@numgrpchar##1#1##2\noexpand\relax{%
+ \noexpand\expandafter\noexpand\toks@\noexpand\expandafter
+ {\noexpand\@dtl at stripped}%
+ \noexpand\edef\noexpand\@dtl at stripped{%
+ \noexpand\the\noexpand\toks@
+ ##1%
+ }%
+ \noexpand\def\noexpand\@dtl at tmp{##2}%
+ \noexpand\ifx\noexpand\@dtl at tmp\noexpand\@empty
+ \noexpand\let\noexpand\@dtl at next=\noexpand\relax
+ \noexpand\else
+ \noexpand\let\noexpand\@dtl at next=\noexpand\@@dtl at strip@numgrpchar
+ \noexpand\fi
+ \noexpand\@dtl at next##2\noexpand\relax
+ }%
+}
+\newcommand*{\DTLdecimaltolocale}[2]{%
+ \edef\@dtl at tmpdtl{#1}%
+ \expandafter\@dtl at decimaltolocale\@dtl at tmpdtl.\relax
+ \dtlifnumeq{\@dtl at fracpart}{0}%
+ {%
+ \edef#2{\@dtl at intpart}%
+ }%
+ {%
+ \edef#2{\@dtl at intpart\@dtl at decimal\@dtl at fracpart}%
+ }%
+}
+\def\@dtl at decimaltolocale#1.#2\relax{%
+ \@dtl at decimaltolocaleint{#1}%
+ \def\@dtl at fracpart{#2}%
+ \ifdefempty\@dtl at fracpart
+ {%
+ \def\@dtl at fracpart{0}%
+ }%
+ {%
+ \@dtl at decimaltolocalefrac#2\relax
+ }%
+}
+\def\@dtl at decimaltolocaleint#1{%
+ \@dtl at tmpcount=0\relax
+ \@dtl at countdigits#1.\relax
+ \@dtl at numgrpsepcount=\@dtl at tmpcount\relax
+ \divide\@dtl at numgrpsepcount by 3\relax
+ \multiply\@dtl at numgrpsepcount by 3\relax
+ \advance\@dtl at numgrpsepcount by -\@dtl at tmpcount\relax
+ \ifnum\@dtl at numgrpsepcount<0\relax
+ \advance\@dtl at numgrpsepcount by 3\relax
+ \fi
+ \def\@dtl at intpart{}%
+ \@dtl at decimal@to at localeint#1.\relax
+}
+\def\@dtl at countdigits#1#2\relax{%
+ \advance\@dtl at tmpcount by 1\relax
+ \ifx.#2\relax
+ \let\@dtl at countnext=\@gobble
+ \else
+ \let\@dtl at countnext=\@dtl at countdigits
+ \fi
+ \@dtl at countnext#2\relax
+}
+\def\@dtl at decimal@to at localeint#1#2\relax{%
+ \advance\@dtl at numgrpsepcount by 1\relax
+ \ifx.#2\relax
+ \edef\@dtl at intpart{\@dtl at intpart#1}%
+ \let\@dtl at localeintnext=\@gobble
+ \else
+ \ifnum\@dtl at numgrpsepcount=3\relax
+ \edef\@dtl at intpart{\@dtl at intpart#1\@dtl at numbergroupchar}%
+ \@dtl at numgrpsepcount=0\relax
+ \else
+ \ifnum\@dtl at numgrpsepcount>3\relax
+ \@dtl at numgrpsepcount=0\relax
+ \fi
+ \edef\@dtl at intpart{\@dtl at intpart#1}%
+ \fi
+ \let\@dtl at localeintnext=\@dtl at decimal@to at localeint
+ \fi
+ \@dtl at localeintnext#2\relax
+}
+\def\@dtl at decimaltolocalefrac#1.\relax{%
+ \count@=0\relax
+ \@dtl at digitcount#1\relax
+ \ifnum\count@>9\relax
+ \@dtl at chopexcessfrac#1000000000\@nil
+ \else
+ \def\@dtl at fracpart{#1}%
+ \fi
+}
+\newcommand*{\@dtl at chopexcessfrac}[9]{%
+ \def\@dtl at fracpart{#1#2#3#4#5#6#7#8#9}%
+ \@dtl at gobbletonil
+}
+\newcommand*{\@dtl at digitcount}[1]{%
+ \ifx\relax#1\relax
+ \let\@dtl at digitcountnext\relax
+ \else
+ \advance\count@ by \@ne
+ \let\@dtl at digitcountnext\@dtl at digitcount
+ \fi
+ \@dtl at digitcountnext
+}
+\newcommand*{\DTLdecimaltocurrency}[2]{%
+ \edef\@dtl at tmpdtl{#1}%
+ \expandafter\@dtl at decimaltolocale\@dtl at tmpdtl.\relax
+ \dtl at truncatedecimal\@dtl at tmpdtl
+ \@dtl at tmpcount=\@dtl at tmpdtl\relax
+ \expandafter\@dtl at toks\expandafter{\@dtl at currency}%
+ \dtlifnumeq{\@dtl at fracpart}{0}%
+ {%
+ \ifnum\@dtl at tmpcount<0\relax
+ \@dtl at tmpcount = -\@dtl at tmpcount\relax
+ \edef#2{-\the\@dtl at toks\the\@dtl at tmpcount\@dtl at decimal00}%
+ \else
+ \edef#2{\the\@dtl at toks\@dtl at intpart\@dtl at decimal00}%
+ \fi
+ }%
+ {%
+ \ifnum\@dtl at tmpcount<0\relax
+ \@dtl at tmpcount = -\@dtl at tmpcount\relax
+ \ifnum\@dtl at fracpart<10\relax
+ \edef#2{%
+ -\the\@dtl at toks\number\@dtl at tmpcount
+ \@dtl at decimal\@dtl at fracpart0%
+ }%
+ \else
+ \edef#2{%
+ -\the\@dtl at toks\number\@dtl at tmpcount
+ \@dtl at decimal\@dtl at fracpart
+ }%
+ \fi
+ \else
+ \ifnum\@dtl at fracpart<10\relax
+ \edef#2{\the\@dtl at toks\@dtl at intpart\@dtl at decimal\@dtl at fracpart0}%
+ \else
+ \edef#2{\the\@dtl at toks\@dtl at intpart\@dtl at decimal\@dtl at fracpart}%
+ \fi
+ \fi
+ }%
+}
+\@dtl at construct@getnums
+\expandafter\@dtl at construct@stripnumgrpchar\expandafter
+ {\@dtl at numbergroupchar}
+\newcommand*{\@dtl at currencies}{\$,\pounds}
+\newcommand*{\DTLnewcurrencysymbol}[1]{%
+ \expandafter\toks@\expandafter{\@dtl at currencies}%
+ \@dtl at toks{#1}%
+ \edef\@dtl at currencies{\the\@dtl at toks,\the\toks@}%
+}
+\AtBeginDocument{%
+ \@ifundefined{texteuro}{}{\DTLnewcurrencysymbol{\texteuro}}%
+ \@ifundefined{textdollar}{}{\DTLnewcurrencysymbol{\textdollar}}%
+ \@ifundefined{textstirling}{}{\DTLnewcurrencysymbol{\textstirling}}%
+ \@ifundefined{textyen}{}{\DTLnewcurrencysymbol{\textyen}}%
+ \@ifundefined{textwon}{}{\DTLnewcurrencysymbol{\textwon}}%
+ \@ifundefined{textcurrency}{}{\DTLnewcurrencysymbol{\textcurrency}}%
+ \@ifundefined{euro}{}{\DTLnewcurrencysymbol{\euro}}%
+ \@ifundefined{yen}{}{\DTLnewcurrencysymbol{\yen}}%
+}
+\newcommand{\@dtl at standardize@currency}[1]{%
+ \def\@dtl at org@currency{}%
+ \@for\@dtl at thiscurrency:=\@dtl at currencies\do{%
+ \expandafter\toks@\expandafter{\@dtl at thiscurrency}%
+ \edef\@dtl at dosubs{\noexpand\DTLsubstitute{\noexpand#1}%
+ {\the\toks@}{\noexpand\$}}%
+ \@dtl at dosubs
+ \ifdefempty{\@dtl at replaced}%
+ {%
+ }%
+ {%
+ \let\@dtl at org@currency=\@dtl at replaced
+ \@endfortrue
+ }%
+ }%
+ \@endforfalse
+}
+\newcommand*{\@dtl at currency}{\$}
+\newcommand*{\DTLsetdefaultcurrency}[1]{%
+ \renewcommand*{\@dtl at currency}{#1}%
+}
+\newcommand*{\DTLadd}[3]{%
+ \DTLconverttodecimal{#2}{\@dtl at numi}%
+ \DTLconverttodecimal{#3}{\@dtl at numii}%
+ \dtladd{\@dtl at tmp}{\@dtl at numi}{\@dtl at numii}%
+ \ifdefempty{\@dtl at replaced}%
+ {%
+ \DTLdecimaltolocale{\@dtl at tmp}{#1}%
+ }%
+ {%
+ \DTLdecimaltocurrency{\@dtl at tmp}{#1}%
+ }%
+}
+\newcommand*{\DTLgadd}[3]{%
+ \DTLadd{\@dtl at tmpii}{#2}{#3}%
+ \global\let#1=\@dtl at tmpii
+}
+\newcommand*{\DTLaddall}[2]{%
+ \def\@dtl at sum{0}%
+ \@for\dtl at thisval:=#2\do{%
+ \expandafter\DTLconverttodecimal\expandafter{\dtl at thisval}{\@dtl at num}%
+ \dtladd{\@dtl at sum}{\@dtl at sum}{\@dtl at num}%
+ }%
+ \ifdefempty{\@dtl at replaced}%
+ {%
+ \DTLdecimaltolocale{\@dtl at sum}{#1}%
+ }%
+ {%
+ \DTLdecimaltocurrency{\@dtl at sum}{#1}%
+ }%
+}
+\newcommand*{\DTLgaddall}[2]{%
+ \DTLaddall{\@dtl at tmpi}{#2}%
+ \global\let#1=\@dtl at tmpi
+}
+\newcommand*{\DTLsub}[3]{%
+ \DTLconverttodecimal{#2}{\@dtl at numi}%
+ \DTLconverttodecimal{#3}{\@dtl at numii}%
+ \dtlsub{\@dtl at tmp}{\@dtl at numi}{\@dtl at numii}%
+ \ifdefempty{\@dtl at replaced}%
+ {%
+ \DTLdecimaltolocale{\@dtl at tmp}{#1}%
+ }%
+ {%
+ \DTLdecimaltocurrency{\@dtl at tmp}{#1}%
+ }%
+}
+\newcommand*{\DTLgsub}[3]{%
+ \DTLsub{\@dtl at tmpii}{#2}{#3}%
+ \global\let#1=\@dtl at tmpii
+}
+\newcommand*{\DTLmul}[3]{%
+ \let\@dtl at thisreplaced=\@empty
+ \DTLconverttodecimal{#2}{\@dtl at numi}%
+ \ifdefempty{\@dtl at replaced}%
+ {%
+ }%
+ {%
+ \let\@dtl at thisreplaced=\@dtl at replaced
+ }%
+ \DTLconverttodecimal{#3}{\@dtl at numii}%
+ \ifdefempty{\@dtl at replaced}%
+ {%
+ }%
+ {%
+ \let\@dtl at thisreplaced=\@dtl at replaced
+ }%
+ \dtlmul{\@dtl at tmp}{\@dtl at numi}{\@dtl at numii}%
+ \ifdefempty{\@dtl at thisreplaced}%
+ {%
+ \DTLdecimaltolocale{\@dtl at tmp}{#1}%
+ }%
+ {%
+ \DTLdecimaltocurrency{\@dtl at tmp}{#1}%
+ }%
+}
+\newcommand*{\DTLgmul}[3]{%
+ \DTLmul{\@dtl at tmpii}{#2}{#3}%
+ \global\let#1=\@dtl at tmpii
+}
+\newcommand*{\DTLdiv}[3]{%
+ \let\@dtl at thisreplaced=\@empty
+ \DTLconverttodecimal{#2}{\@dtl at numi}%
+ \ifdefempty{\@dtl at replaced}%
+ {%
+ }%
+ {%
+ \let\@dtl at thisreplaced=\@dtl at replaced
+ }%
+ \DTLconverttodecimal{#3}{\@dtl at numii}%
+ \dtldiv{\@dtl at tmp}{\@dtl at numi}{\@dtl at numii}%
+ \ifdefempty{\@dtl at thisreplaced}%
+ {%
+ \DTLdecimaltolocale{\@dtl at tmp}{#1}%
+ }%
+ {%
+ \ifdefequal{\@dtl at thisreplaced}{\@dtl at replaced}%
+ {%
+ \DTLdecimaltolocale{\@dtl at tmp}{#1}%
+ }%
+ {%
+ \DTLdecimaltocurrency{\@dtl at tmp}{#1}%
+ }%
+ }%
+}
+\newcommand*{\DTLgdiv}[3]{%
+ \DTLdiv{\@dtl at tmpii}{#2}{#3}%
+ \global\let#1=\@dtl at tmpii
+}
+\newcommand*{\DTLabs}[2]{%
+ \DTLconverttodecimal{#2}{\@dtl at numi}%
+ \dtlabs{\@dtl at tmp}{\@dtl at numi}%
+ \ifdefempty{\@dtl at replaced}%
+ {%
+ \DTLdecimaltolocale{\@dtl at tmp}{#1}%
+ }%
+ {%
+ \DTLdecimaltocurrency{\@dtl at tmp}{#1}%
+ }%
+}
+\newcommand*{\DTLgabs}[2]{%
+ \DTLabs{\@dtl at tmpii}{#2}%
+ \global\let#1=\@dtl at tmpii
+}
+\newcommand*{\DTLneg}[2]{%
+ \DTLconverttodecimal{#2}{\@dtl at numi}%
+ \dtlneg{\@dtl at tmp}{\@dtl at numi}%
+ \ifdefempty{\@dtl at replaced}%
+ {%
+ \DTLdecimaltolocale{\@dtl at tmp}{#1}%
+ }%
+ {%
+ \DTLdecimaltocurrency{\@dtl at tmp}{#1}%
+ }%
+}
+\newcommand*{\DTLgneg}[2]{%
+ \DTLneg{\@dtl at tmpii}{#2}%
+ \global\let#1=\@dtl at tmpii
+}
+\newcommand*{\DTLsqrt}[2]{%
+ \DTLconverttodecimal{#2}{\@dtl at numi}%
+ \dtlroot{\@dtl at tmpi}{\@dtl at numi}{2}%
+ \ifdefempty{\@dtl at replaced}%
+ {%
+ \DTLdecimaltolocale{\@dtl at tmpi}{#1}%
+ }%
+ {%
+ \DTLdecimaltocurrency{\@dtl at tmpi}{#1}%
+ }%
+}
+\newcommand*{\DTLgsqrt}[2]{%
+\DTLsqrt{\@dtl at tmpii}{#2}%
+\global\let#1=\@dtl at tmpii
+}
+\newcommand*{\DTLmin}[3]{%
+ \DTLconverttodecimal{#2}{\@dtl at numi}%
+ \DTLconverttodecimal{#3}{\@dtl at numii}%
+ \dtlifnumlt{\@dtl at numi}{\@dtl at numii}%
+ {%
+ \dtl at ifsingle{#2}%
+ {\let#1=#2}%
+ {\def#1{#2}}%
+ }%
+ {%
+ \dtl at ifsingle{#3}%
+ {\let#1=#3}%
+ {\def#1{#3}}%
+ }%
+}
+\newcommand*{\DTLgmin}[3]{%
+ \DTLmin{\@dtl at tmpii}{#2}{#3}%
+ \global\let#1=\@dtl at tmpii
+}
+\newcommand*{\DTLminall}[2]{%
+ \let\@dtl at min=\@empty
+ \@for\dtl at thisval:=#2\do{%
+ \expandafter\DTLconverttodecimal\expandafter{\dtl at thisval}{\@dtl at num}%
+ \ifdefempty{\@dtl at min}%
+ {%
+ \let\@dtl at min=\@dtl at num
+ }%
+ {%
+ \dtlmin{\@dtl at min}{\@dtl at min}{\@dtl at num}%
+ }%
+ }%
+ \ifdefempty{\@dtl at replaced}%
+ {%
+ \DTLdecimaltolocale{\@dtl at min}{#1}%
+ }%
+ {%
+ \DTLdecimaltocurrency{\@dtl at min}{#1}%
+ }%
+}
+\newcommand*{\DTLgminall}[2]{%
+ \DTLminall{\@dtl at tmpi}{#2}%
+ \global\let#1=\@dtl at tmpi
+}
+\newcommand*{\DTLmax}[3]{%
+ \DTLconverttodecimal{#2}{\@dtl at numi}%
+ \DTLconverttodecimal{#3}{\@dtl at numii}%
+ \dtlmax{\@dtl at tmp}{\@dtl at numi}{\@dtl at numii}%
+ \dtlifnumgt{\@dtl at numi}{\@dtl at numii}%
+ {%
+ \dtl at ifsingle{#2}%
+ {\let#1=#2}%
+ {\def#1{#2}}%
+ }%
+ {%
+ \dtl at ifsingle{#3}%
+ {\let#1=#3}%
+ {\def#1{#3}}%
+ }%
+}
+\newcommand*{\DTLgmax}[3]{%
+ \DTLmax{\@dtl at tmpii}{#2}{#3}%
+ \global\let#1=\@dtl at tmpii
+}
+\newcommand*{\DTLmaxall}[2]{%
+ \let\@dtl at max=\@empty
+ \@for\dtl at thisval:=#2\do{%
+ \expandafter\DTLconverttodecimal\expandafter{\dtl at thisval}{\@dtl at num}%
+ \ifdefempty{\@dtl at max}%
+ {%
+ \let\@dtl at max\@dtl at num
+ }%
+ {%
+ \dtlmax{\@dtl at max}{\@dtl at max}{\@dtl at num}%
+ }%
+ }%
+ \ifdefempty{\@dtl at replaced}%
+ {%
+ \DTLdecimaltolocale{\@dtl at max}{#1}%
+ }%
+ {%
+ \DTLdecimaltocurrency{\@dtl at max}{#1}%
+ }%
+}
+\newcommand*{\DTLgmaxall}[2]{%
+\DTLmaxall{\@dtl at tmpi}{#2}%
+\global\let#1=\@dtl at tmpi
+}
+\newcommand*{\DTLmeanforall}[2]{%
+ \def\@dtl at mean{0}%
+ \def\@dtl at n{0}%
+ \@for\dtl at thisval:=#2\do{%
+ \expandafter\DTLconverttodecimal\expandafter{\dtl at thisval}{\@dtl at num}%
+ \dtladd{\@dtl at mean}{\@dtl at mean}{\@dtl at num}%
+ \dtladd{\@dtl at n}{\@dtl at n}{1}%
+ }%
+ \dtldiv{\@dtl at mean}{\@dtl at mean}{\@dtl at n}%
+ \ifdefempty{\@dtl at replaced}%
+ {%
+ \DTLdecimaltolocale{\@dtl at mean}{#1}%
+ }%
+ {%
+ \DTLdecimaltocurrency{\@dtl at mean}{#1}%
+ }%
+}
+\newcommand*{\DTLgmeanforall}[2]{%
+ \DTLmeanforall{\@dtl at tmpi}{#2}%
+ \global\let#1=\@dtl at tmpi
+}
+\newcommand*{\DTLvarianceforall}[2]{%
+ \def\@dtl at mean{0}%
+ \def\@dtl at n{0}%
+ \let\@dtl at decvals=\@empty
+ \@for\dtl at thisval:=#2\do{%
+ \expandafter\DTLconverttodecimal\expandafter{\dtl at thisval}{\@dtl at num}%
+ \ifdefempty{\@dtl at decvals}%
+ {%
+ \let\@dtl at decvals=\@dtl at num
+ }%
+ {%
+ \expandafter\toks@\expandafter{\@dtl at decvals}%
+ \edef\@dtl at decvals{\the\toks@,\@dtl at num}%
+ }%
+ \dtladd{\@dtl at mean}{\@dtl at mean}{\@dtl at num}%
+ \dtladd{\@dtl at n}{\@dtl at n}{1}%
+ }%
+ \dtldiv{\@dtl at mean}{\@dtl at mean}{\@dtl at n}%
+ \def\@dtl at var{0}%
+ \@for\@dtl at num:=\@dtl at decvals\do{%
+ \dtlsub{\@dtl at diff}{\@dtl at num}{\@dtl at mean}%
+ \dtlmul{\@dtl at diff}{\@dtl at diff}{\@dtl at diff}%
+ \dtladd{\@dtl at var}{\@dtl at var}{\@dtl at diff}%
+ }%
+ \dtldiv{\@dtl at var}{\@dtl at var}{\@dtl at n}%
+ \ifdefempty{\@dtl at replaced}%
+ {%
+ \DTLdecimaltolocale{\@dtl at var}{#1}%
+ }%
+ {%
+ \DTLdecimaltocurrency{\@dtl at var}{#1}%
+ }%
+}
+\newcommand*{\DTLgvarianceforall}[2]{%
+ \DTLvarianceforall{\@dtl at tmpi}{#2}%
+ \global\let#1=\@dtl at tmpi
+}
+\newcommand*{\DTLsdforall}[2]{%
+ \def\@dtl at mean{0}%
+ \def\@dtl at n{0}%
+ \let\@dtl at decvals=\@empty
+ \@for\dtl at thisval:=#2\do{%
+ \expandafter\DTLconverttodecimal\expandafter{\dtl at thisval}{\@dtl at num}%
+ \ifdefempty{\@dtl at decvals}%
+ {%
+ \let\@dtl at decvals=\@dtl at num
+ }%
+ {%
+ \expandafter\toks@\expandafter{\@dtl at decvals}%
+ \edef\@dtl at decvals{\the\toks@,\@dtl at num}%
+ }%
+ \dtladd{\@dtl at mean}{\@dtl at mean}{\@dtl at num}%
+ \dtladd{\@dtl at n}{\@dtl at n}{1}%
+ }%
+ \dtldiv{\@dtl at mean}{\@dtl at mean}{\@dtl at n}%
+ \def\@dtl at sd{0}%
+ \@for\@dtl at num:=\@dtl at decvals\do{%
+ \dtlsub{\@dtl at diff}{\@dtl at num}{\@dtl at mean}%
+ \dtlmul{\@dtl at diff}{\@dtl at diff}{\@dtl at diff}%
+ \dtladd{\@dtl at sd}{\@dtl at sd}{\@dtl at diff}%
+ }%
+ \dtldiv{\@dtl at sd}{\@dtl at sd}{\@dtl at n}%
+ \dtlroot{\@dtl at sd}{\@dtl at sd}{2}%
+ \ifdefempty{\@dtl at replaced}%
+ {%
+ \DTLdecimaltolocale{\@dtl at sd}{#1}%
+ }%
+ {%
+ \DTLdecimaltocurrency{\@dtl at sd}{#1}%
+ }%
+}
+\newcommand*{\DTLgsdforall}[2]{%
+ \DTLsdforall{\@dtl at tmpi}{#2}%
+ \global\let#1=\@dtl at tmpi
+}
+\newcommand*{\DTLround}[3]{%
+ \DTLconverttodecimal{#2}{\@dtl at numi}%
+ \dtlround{\@dtl at tmp}{\@dtl at numi}{#3}%
+ \ifdefempty{\@dtl at replaced}%
+ {%
+ \DTLdecimaltolocale{\@dtl at tmp}{#1}%
+ }%
+ {%
+ \DTLdecimaltocurrency{\@dtl at tmp}{#1}%
+ }%
+}
+\newcommand*{\DTLground}[3]{%
+ \DTLround{\@dtl at tmpii}{#2}{#3}%
+ \global\let#1=\@dtl at tmpii
+}
+\newcommand*{\DTLtrunc}[3]{%
+ \DTLconverttodecimal{#2}{\@dtl at numi}%
+ \dtltrunc{\@dtl at tmp}{\@dtl at numi}{#3}%
+ \ifdefempty{\@dtl at replaced}%
+ {%
+ \DTLdecimaltolocale{\@dtl at tmp}{#1}%
+ }%
+ {%
+ \DTLdecimaltocurrency{\@dtl at tmp}{#1}%
+ }%
+}
+\newcommand*{\DTLgtrunc}[3]{%
+ \DTLtrunc{\@dtl at tmpii}{#2}{#3}%
+ \global\let#1=\@dtl at tmpii
+}
+\newcommand*{\DTLclip}[2]{%
+ \DTLconverttodecimal{#2}{\@dtl at numi}%
+ \dtlclip{\@dtl at tmp}{\@dtl at numi}%
+ \ifdefempty{\@dtl at replaced}%
+ {%
+ \DTLdecimaltolocale{\@dtl at tmp}{#1}%
+ }%
+ {%
+ \DTLdecimaltocurrency{\@dtl at tmp}{#1}%
+ }%
+}
+\newcommand*{\DTLgclip}[3]{%
+ \DTLclip{\@dtl at tmpii}{#2}%
+ \global\let#1=\@dtl at tmpii
+}
+\newcommand*\DTLinitials[1]{%
+ \def\dtl at initialscmd{}%
+ \dtl at subnobrsp{#1}{\dtl at string}%
+ \DTLsubstituteall{\dtl at string}{~}{ }%
+ \DTLsubstituteall{\dtl at string}{\ }{ }%
+ \DTLsubstituteall{\dtl at string}{\space}{ }%
+ \expandafter\dtl at initials\dtl at string{} \@nil%
+ \dtl at initialscmd
+}%
+\edef\dtl at construct@subnobrsp{%
+ \noexpand\def\noexpand\@dtl at subnobrsp##1\noexpand\protect
+ \expandafter\noexpand\csname nobreakspace \endcsname ##2{%
+ \noexpand\toks@{##1}%
+ \noexpand\expandafter\noexpand\@dtl at toks\noexpand\expandafter{%
+ \noexpand\@dtl at string}%
+ \noexpand\edef\noexpand\@dtl at string{\noexpand\the\noexpand\@dtl at toks
+ \noexpand\the\noexpand\toks@}%
+ \noexpand\def\noexpand\@dtl at tmp{##2}%
+ \noexpand\ifx\noexpand\@dtl at tmp\noexpand\@nnil
+ \noexpand\let\noexpand\@dtl at subnobrspnext=\noexpand\relax
+ \noexpand\else
+ \noexpand\toks@{ }%
+ \noexpand\expandafter\noexpand\@dtl at toks\noexpand\expandafter{%
+ \noexpand\@dtl at string}%
+ \noexpand\edef\noexpand\@dtl at string{\noexpand\the\noexpand\@dtl at toks
+ \noexpand\the\noexpand\toks@}%
+ \noexpand\let\noexpand\@dtl at subnobrspnext=\noexpand\@dtl at subnobrsp
+ \noexpand\fi
+ \noexpand\@dtl at subnobrspnext
+ }%
+ \noexpand\def\noexpand\dtl at subnobrsp##1##2{%
+ \noexpand\def\noexpand\@dtl at string{}%
+ \noexpand\@dtl at subnobrsp ##1\noexpand\protect\expandafter\noexpand
+ \csname nobreakspace \endcsname \noexpand\@nil
+ \noexpand\let##2=\noexpand\@dtl at string
+ }%
+}
+\dtl at construct@subnobrsp
+\newcommand*{\DTLstoreinitials}[2]{%
+ \def\dtl at initialscmd{}%
+ \dtl at subnobrsp{#1}{\dtl at string}%
+ \DTLsubstituteall{\dtl at string}{~}{ }%
+ \DTLsubstituteall{\dtl at string}{\ }{ }%
+ \DTLsubstituteall{\dtl at string}{\space}{ }%
+ \expandafter\dtl at initials\dtl at string{} \@nil
+ \let#2=\dtl at initialscmd
+}
+\def\dtl at initials#1#2 #3{%
+ \dtl at ifsingle{#1}%
+ {%
+ \ifcat\noexpand#1\relax\relax
+ \def\@dtl at donextinitials{\@dtl at initials#2 {#3}}%
+ \else
+ \def\@dtl at donextinitials{\@dtl at initials#1#2 {#3}}%
+ \fi
+ }%
+ {%
+ \def\@dtl at donextinitials{\@dtl at initials{#1}#2 {#3}}%
+ }%
+ \@dtl at donextinitials
+}
+\def\@dtl at initials#1#2 #3{%
+ \dtl at initialshyphen#2-{}\dtl at endhyp
+ \expandafter\@dtl at toks\expandafter{\dtl at initialscmd}%
+ \toks@{#1}%
+ \ifdefempty{\dtl at inithyphen}%
+ {%
+ }%
+ {%
+ \edef\dtl at initialscmd{\the\@dtl at toks\the\toks@}%
+ \expandafter\@dtl at toks\expandafter{\dtl at initialscmd}%
+ \expandafter\toks@\expandafter{\dtl at inithyphen}%
+ }%
+ \def\dtl at tmp{#3}%
+ \ifx\@nnil\dtl at tmp
+ \edef\dtl at initialscmd{\the\@dtl at toks\the\toks@\DTLafterinitials}%
+ \let\dtl at initialsnext=\@gobble
+ \else
+ \edef\dtl at initialscmd{\the\@dtl at toks\the\toks@\DTLbetweeninitials}%
+ \let\dtl at initialsnext=\dtl at initials
+ \fi
+ \dtl at initialsnext{#3}%
+}
+\def\dtl at initialshyphen#1-#2#3\dtl at endhyp{%
+ \def\dtl at inithyphen{#2}%
+ \ifdefempty{\dtl at inithyphen}%
+ {%
+ }%
+ {%
+ \edef\dtl at inithyphen{%
+ \DTLafterinitialbeforehyphen\DTLinitialhyphen#2}%
+ }%
+}
+\newcommand*{\DTLafterinitials}{.}
+\newcommand*{\DTLbetweeninitials}{.}
+\newcommand*{\DTLafterinitialbeforehyphen}{.}
+\newcommand*{\DTLinitialhyphen}{-}
+\newcommand*{\DTLifAllUpperCase}[3]{%
+ \protected at edef\dtl at tuc{#1}%
+ \expandafter\dtl at testifuppercase\dtl at tuc\@nil\relax
+ \if at dtl@condition#2\else#3\fi
+}
+\def\dtl at testifuppercase#1#2{%
+ \def\dtl at argi{#1}%
+ \def\dtl at argii{#2}%
+ \def\dtl at tc@rest{}%
+ \ifx\dtl at argi\@nnil
+ \let\dtl at testifuppernext=\@nnil
+ \else
+ \ifx#1\protect
+ \let\dtl at testifuppernext=\dtl at testifuppercase
+ \else
+ \ifx\uppercase#1\relax
+ \@dtl at conditiontrue
+ \def\dtl at tc@rest{}%
+ \let\dtl at testifuppernext=\relax
+ \else
+ \edef\dtl at tc@arg{\string#1}%
+ \expandafter\dtl at test@ifuppercase\dtl at tc@arg\end
+ \ifx\dtl at argii\@nnil
+ \let\dtl at testifuppernext=\@dtl at gobbletonil
+ \fi
+ \fi
+ \fi
+ \fi
+ \ifx\dtl at testifuppernext\relax
+ \edef\dtl at dotestifuppernext{%
+ \noexpand\dtl at testifuppercase}%
+ \else
+ \ifx\dtl at testifuppernext\@nnil
+ \edef\dtl at dotestifuppernext{#2}%
+ \else
+ \expandafter\toks@\expandafter{\dtl at tc@rest}%
+ \@dtl at toks{#2}%
+ \edef\dtl at dotestifuppernext{%
+ \noexpand\dtl at testifuppernext\the\toks@\the\@dtl at toks}%
+ \fi
+ \fi
+ \dtl at dotestifuppernext
+}
+\def\dtl at test@ifuppercase#1#2\end{%
+ \def\dtl at tc@rest{#2}%
+ \IfSubStringInString{\string\MakeUppercase}{#1#2}%
+ {%
+ \@dtl at conditiontrue
+ \def\dtl at tc@rest{}%
+ \let\dtl at testifuppernext=\relax
+ }%
+ {%
+ \IfSubStringInString{\string\MakeTextUppercase}{#1#2}%
+ {%
+ \@dtl at conditiontrue
+ \def\dtl at tc@rest{}%
+ \let\dtl at testifuppernext=\relax
+ }%
+ {%
+ \edef\dtl at uccode{\the\uccode`#1}%
+ \edef\dtl at code{\number`#1}%
+ \ifnum\dtl at code=\dtl at uccode\relax
+ \@dtl at conditiontrue
+ \let\dtl at testifuppernext=\dtl at testifuppercase
+ \else
+ \ifnum\dtl at uccode=0\relax
+ \@dtl at conditiontrue
+ \let\dtl at testifuppernext=\dtl at testifuppercase
+ \else
+ \@dtl at conditionfalse
+ \let\dtl at testifuppernext=\@dtl at gobbletonil
+ \fi
+ \fi
+ }%
+ }%
+}
+\newcommand*{\DTLifAllLowerCase}[3]{%
+ \protected at edef\dtl at tlc{#1}%
+ \expandafter\dtl at testiflowercase\dtl at tlc\@nil\relax
+ \if at dtl@condition#2\else#3\fi
+}
+\def\dtl at testiflowercase#1#2{%
+ \def\dtl at argi{#1}%
+ \def\dtl at argii{#2}%
+ \ifx\dtl at argi\@nnil
+ \let\dtl at testiflowernext=\@nnil
+ \else
+ \ifx#1\protect
+ \let\dtl at testiflowernext=\dtl at testiflowercase
+ \else
+ \ifx\lowercase#1\relax
+ \@dtl at conditiontrue
+ \def\dtl at tc@rest{}%
+ \let\dtl at testiflowernext=\relax
+ \else
+ \edef\dtl at tc@arg{\string#1}%
+ \expandafter\dtl at test@iflowercase\dtl at tc@arg\end
+ \ifx\dtl at argii\@nnil
+ \let\dtl at testiflowernext=\@dtl at gobbletonil
+ \fi
+ \fi
+ \fi
+ \fi
+ \ifx\dtl at testiflowernext\relax
+ \edef\dtl at dotestiflowernext{%
+ \noexpand\dtl at testiflowercase}%
+ \else
+ \ifx\dtl at testiflowernext\@nnil
+ \edef\dtl at dotestiflowernext{#2}%
+ \else
+ \expandafter\toks@\expandafter{\dtl at tc@rest}%
+ \@dtl at toks{#2}%
+ \edef\dtl at dotestiflowernext{%
+ \noexpand\dtl at testiflowernext\the\toks@\the\@dtl at toks}%
+ \fi
+ \fi
+ \dtl at dotestiflowernext
+}
+\def\dtl at test@iflowercase#1#2\end{%
+ \def\dtl at tc@rest{#2}%
+ \IfSubStringInString{\string\MakeLowercase}{#1#2}%
+ {%
+ \@dtl at conditiontrue
+ \def\dtl at tc@rest{}%
+ \let\dtl at testiflowernext=\relax
+ }%
+ {%
+ \IfSubStringInString{\string\MakeTextLowercase}{#1#2}%
+ {%
+ \@dtl at conditiontrue
+ \def\dtl at tc@rest{}%
+ \let\dtl at testiflowernext=\relax
+ }%
+ {%
+ \edef\dtl at lccode{\the\lccode`#1}%
+ \edef\dtl at code{\number`#1}%
+ \ifnum\dtl at code=\dtl at lccode\relax
+ \@dtl at conditiontrue
+ \let\dtl at testiflowernext=\dtl at testiflowercase
+ \else
+ \ifnum\dtl at lccode=0\relax
+ \@dtl at conditiontrue
+ \let\dtl at testiflowernext=\dtl at testiflowercase
+ \else
+ \@dtl at conditionfalse
+ \let\dtl at testiflowernext=\@dtl at gobbletonil
+ \fi
+ \fi
+ }%
+ }%
+}
+\newcommand{\DTLsubstitute}[3]{%
+ \expandafter\DTLsplitstring\expandafter
+ {#1}{#2}{\@dtl at beforepart}{\@dtl at afterpart}%
+ \ifdefempty{\@dtl at replaced}%
+ {%
+ }%
+ {%
+ \def#1{}%
+ \expandafter\@dtl at toks\expandafter{\@dtl at beforepart}%
+ \expandafter\toks@\expandafter{#1}%
+ \protected at edef#1{\the\toks@\the\@dtl at toks#3}%
+ \expandafter\@dtl at toks\expandafter{\@dtl at afterpart}%
+ \expandafter\toks@\expandafter{#1}%
+ \edef#1{\the\toks@\the\@dtl at toks}%
+ }%
+}
+\newcommand*{\DTLsplitstring}[4]{%
+ \def\dtl at splitstr##1#2##2\@nil{%
+ \def#3{##1}%
+ \def#4{##2}%
+ \ifdefempty{#4}%
+ {%
+ \let\@dtl at replaced=\@empty
+ }%
+ {%
+ \def\@dtl at replaced{#2}%
+ \dtl at split@str##2\@nil
+ }%
+ }%
+ \def\dtl at split@str##1#2\@nil{\def#4{##1}}%
+ \dtl at splitstr#1#2\@nil
+}
+\newcommand{\DTLsubstituteall}[3]{%
+ \def\@dtl at splitsubstr{}%
+ \let\@dtl at afterpart=#1\relax
+ \@dtl at dosubstitute{#2}{#3}%
+ \expandafter\toks@\expandafter{\@dtl at splitsubstr}%
+ \expandafter\@dtl at toks\expandafter{\@dtl at afterpart}%
+ \long\edef#1{\the\toks@\the\@dtl at toks}%
+}
+\def\@dtl at dosubstitute#1#2{%
+ \expandafter\DTLsplitstring\expandafter
+ {\@dtl at afterpart}{#1}{\@dtl at beforepart}{\@dtl at afterpart}%
+ \expandafter\toks@\expandafter{\@dtl at splitsubstr}%
+ \expandafter\@dtl at toks\expandafter{\@dtl at beforepart}%
+ \edef\@dtl at splitsubstr{\the\toks@\the\@dtl at toks}%
+ \ifdefempty{\@dtl at replaced}%
+ {%
+ \let\@dtl at dosubstnext=\@dtl at dosubstitutenoop
+ }%
+ {%
+ \expandafter\toks@\expandafter{\@dtl at splitsubstr}%
+ \@dtl at toks{#2}%
+ \edef\@dtl at splitsubstr{\the\toks@\the\@dtl at toks}%
+ \let\@dtl at dosubstnext=\@dtl at dosubstitute
+ }%
+ \@dtl at dosubstnext{#1}{#2}%
+}
+\def\@dtl at dosubstitutenoop#1#2{}
+\newif\if at dtl@condition
+\newcount\@dtl at datatype
+\newcommand{\@dtl at checknumerical}[1]{%
+ \@dtl at numgrpsepfalse
+ \dtl at ifsingle{#1}%
+ {%
+ \expandafter\toks@\expandafter{#1}%
+ \edef\@dtl at tmp{\the\toks@}%
+ }%
+ {%
+ \def\@dtl at tmp{#1}%
+ }%
+ \ifdefempty\@dtl at tmp
+ {%
+ \@dtl at datatype=0\relax
+ }%
+ {%
+ \@dtl at tmpcount=0\relax
+ \@dtl at datatype=0\relax
+ \@dtl at numgrpsepcount=2\relax
+ \@dtl at standardize@currency\@dtl at tmp
+ \ifdefempty{\@dtl at org@currency}%
+ {%
+ }%
+ {%
+ \let\@dtl at currency\@dtl at org@currency
+ }%
+ \expandafter\@dtl at checknumericalstart\@dtl at tmp\@nil\@nil
+ }%
+ \ifnum\@dtl at numgrpsepcount>-1\relax
+ \if at dtl@numgrpsep
+ \ifnum\@dtl at numgrpsepcount=3\relax
+ \else
+ \@dtl at datatype=0\relax
+ \fi
+ \fi
+ \fi
+}
+\newcommand*{\@dtl at protect}{\protect}
+\newcommand*{\@dtl at minus}{-}
+\newcommand*{\@dtl at plus}{+}
+\newcommand*{\@dtl at dollar}{\$}
+\def\@dtl at checknumericalstart#1#2\@nil\@nil{%
+ \def\@dtl at tmp{#1}%
+ \ifx\@dtl at tmp\@dtl at protect
+ \@dtl at checknumericalstart#2\@nil\@nil\relax
+ \else
+ \ifx\@dtl at tmp\@dtl at minus
+ \def\@dtl at tmp{#2}%
+ \ifdefempty{\@dtl at tmp}%
+ {%
+ \@dtl at datatype=0\relax
+ }%
+ {%
+ \ifnum\@dtl at datatype=0\relax
+ \@dtl at datatype=1\relax
+ \fi
+ \@dtl at checknumericalstart#2\@nil\@nil\relax
+ }%
+ \else
+ \ifx\@dtl at tmp\@dtl at plus
+ \def\@dtl at tmp{#2}%
+ \ifdefempty{\@dtl at tmp}%
+ {%
+ \@dtl at datatype=0\relax
+ }%
+ {%
+ \ifnum\@dtl at datatype=0\relax
+ \@dtl at datatype=1\relax
+ \fi
+ \@dtl at checknumericalstart#2\@nil\@nil\relax
+ }%
+ \else
+ \def\@dtl at tmp{#1}%
+ \ifx\@dtl at tmp\@dtl at dollar
+ \def\@dtl at tmp{#2}%
+ \ifdefempty{\@dtl at tmp}%
+ {%
+ \@dtl at datatype=0\relax
+ }%
+ {%
+ \@dtl at datatype=3\relax
+ \@dtl at checknumericalstart#2\@nil\@nil\relax
+ }%
+ \else
+ \ifdefempty{\@dtl at tmp}%
+ {%
+ \@dtl at datatype=0\relax
+ }%
+ {%
+ \ifnum\@dtl at datatype=0\relax
+ \@dtl at datatype=1\relax
+ \fi
+ \@dtl at checknumericalloop#1#2\@nil\@nil\relax
+ }%
+ \fi
+ \fi
+ \fi
+ \fi
+}
+\newif\if at dtl@numgrpsep
+\newcommand*{\@dtl at ifDigitOrDecimalSep}[3]{%
+ \ifnum 9<1\noexpand#1\relax
+ #2%
+ \else
+ \expandafter\ifx\@dtl at decimal#1\relax
+ #2%
+ \else
+ #3%
+ \fi
+ \fi
+}
+\def\@dtl at checknumericalloop#1#2\@nil{%
+\def\@dtl at tmp{#1}%
+\ifx\@nnil\@dtl at tmp\relax
+ \let\@dtl at chcknumnext=\@dtl at checknumericalnoop%
+\else
+ \@dtl at ifDigitOrDecimalSep{#1}{%
+ \let\@dtl at chcknumnext=\@dtl at checknumericalloop%
+ \expandafter\ifx\@dtl at decimal#1\relax
+ \if at dtl@numgrpsep
+ \ifnum\@dtl at numgrpsepcount=3\relax
+ \@dtl at numgrpsepcount=-1\relax
+ \else
+ \@dtl at datatype=0\relax
+ \let\@dtl at chcknumnext=\@dtl at checknumericalnoop
+ \fi
+ \else
+ \@dtl at numgrpsepcount=-1\relax
+ \fi
+ \else
+ \ifnum\@dtl at numgrpsepcount=-1\relax
+ \else
+ \advance\@dtl at numgrpsepcount by 1\relax
+ \fi
+ \fi
+}{%
+\ifx\@dtl at numbergroupchar\@dtl at tmp\relax
+ \@dtl at numgrpseptrue
+ \ifnum\@dtl at numgrpsepcount<3\relax
+ \@dtl at datatype=0\relax
+ \let\@dtl at chcknumnext=\@dtl at checknumericalnoop
+ \else
+ \@dtl at numgrpsepcount=0\relax
+ \fi
+\else
+ \@dtl at datatype=0\relax
+ \let\@dtl at chcknumnext=\@dtl at checknumericalnoop
+\fi
+}%
+ \ifx\@dtl at decimal\@dtl at tmp\relax
+ \ifnum\@dtl at datatype<3\relax
+ \@dtl at datatype=2\relax
+ \fi
+ \advance\@dtl at tmpcount by 1\relax
+ \ifnum\@dtl at tmpcount>1\relax
+ \@dtl at datatype=0\relax
+ \let\@dtl at chcknumnext=\@dtl at checknumericalnoop%
+ \fi
+ \fi
+\fi
+\@dtl at chcknumnext#2\@nil
+}
+\def\@dtl at checknumericalnoop#1\@nil#2{}
+\newcommand{\DTLifnumerical}[3]{%
+\@dtl at checknumerical{#1}%
+\ifnum\@dtl at datatype=0\relax#3\else#2\fi
+}
+\newcommand{\DTLifreal}[3]{%
+ \@dtl at checknumerical{#1}%
+ \ifnum\@dtl at datatype=2\relax #2\else #3\fi
+}
+\newcommand{\DTLifint}[3]{%
+ \@dtl at checknumerical{#1}%
+ \ifnum\@dtl at datatype=1\relax #2\else #3\fi
+}
+\newcommand{\DTLifstring}[3]{%
+ \@dtl at checknumerical{#1}%
+ \ifnum\@dtl at datatype=0\relax #2\else #3\fi
+}
+\newcommand{\DTLifcurrency}[3]{%
+ \@dtl at checknumerical{#1}%
+ \ifnum\@dtl at datatype=3\relax #2\else #3\fi
+}
+\newcommand*{\DTLifcurrencyunit}[4]{%
+ \@dtl at checknumerical{#1}%
+ \ifnum\@dtl at datatype=3\relax
+ \ifthenelse{\equal{\@dtl at org@currency}{#2}}{#3}{#4}%
+ \else
+ #4%
+ \fi
+}
+\newcommand{\DTLifcasedatatype}[5]{%
+ \@dtl at checknumerical{#1}%
+ \ifcase\@dtl at datatype
+ #2% string
+ \or
+ #3% integer
+ \or
+ #4% number
+ \or
+ #5% currency
+ \fi
+}
+\newcommand*{\dtl at testbothnumerical}[2]{%
+ \dtl at ifsingle{#1}{%
+ \edef\@dtl at tmp{#1}}{%
+ \def\@dtl at tmp{#1}}%
+ \expandafter\@dtl at checknumerical\expandafter{\@dtl at tmp}%
+ \edef\@dtl at firsttype{\number\@dtl at datatype}%
+ \dtl at ifsingle{#2}{%
+ \edef\@dtl at tmp{#2}}{%
+ \def\@dtl at tmp{#2}}%
+ \expandafter\@dtl at checknumerical\expandafter{\@dtl at tmp}%
+ \multiply\@dtl at datatype by \@dtl at firsttype\relax
+ \ifnum\@dtl at datatype>0\relax
+ \@dtl at conditiontrue
+ \else
+ \@dtl at conditionfalse
+ \fi
+}
+\newcommand*{\DTLifnumlt}[4]{%
+ \DTLconverttodecimal{#1}{\@dtl at numi}%
+ \DTLconverttodecimal{#2}{\@dtl at numii}%
+ \dtlifnumlt{\@dtl at numi}{\@dtl at numii}%
+ {%
+ #3%
+ }%
+ {%
+ #4%
+ }%
+}
+\newif\ifdtlcompareskipcs
+\dtlcompareskipcsfalse
+\newcommand*{\dtlcompare}[3]{%
+ \dtl at subnobrsp{#2}{\@dtl at argA}%
+ \dtl at subnobrsp{#3}{\@dtl at argB}%
+ \ifdefempty{\@dtl at argA}%
+ {%
+ \ifdefempty{\@dtl at argB}%
+ {%
+ #1=0\relax
+ }%
+ {%
+ #1=-1\relax
+ }%
+ }%
+ {%
+ \ifdefempty{\@dtl at argB}%
+ {%
+ #1=1\relax
+ }%
+ {%
+ \dtl at setwordbreaksnohyphens{\@dtl at argA}{\@dtl at wordbreak}%
+ \let\@dtl at argA\dtl at string
+ \dtl at setwordbreaksnohyphens{\@dtl at argB}{\@dtl at wordbreak}%
+ \let\@dtl at argB\dtl at string
+ \expandafter\dtl at getfirst\@dtl at argA\end at dtl@getfirst
+ \let\dtl at firstA=\dtl at first
+ \let\dtl at restA=\dtl at rest
+ \expandafter\dtl at getfirst\@dtl at argB\end at dtl@getfirst
+ \let\dtl at firstB=\dtl at first
+ \let\dtl at restB=\dtl at rest
+ \expandafter\dtl at ifsingleorUTFviii\expandafter{\dtl at firstA}%
+ {%
+ \expandafter\dtl at ifsingleorUTFviii\expandafter{\dtl at firstB}%
+ {%
+ \expandafter\dtl at setcharcode\expandafter{\dtl at firstA}{\dtl at codeA}%
+ \expandafter\dtl at setcharcode\expandafter{\dtl at firstB}{\dtl at codeB}%
+ \let\dtl at donextcompare\@firstofone
+ \ifdtlcompareskipcs
+ \ifnum\dtl at codeA=0\relax
+ \ifnum\dtl at codeB=0\relax
+ \edef\dtl at donext{%
+ \noexpand\dtlcompare
+ {\noexpand#1}{\expandonce\dtl at restA}{\expandonce\dtl at restB}}%
+ \dtl at donext
+ \let\dtl at donextcompare\@gobble
+ \else
+ \edef\dtl at donext{%
+ \noexpand\dtlcompare
+ {\noexpand#1}{\expandonce\dtl at restA}{\expandonce\@dtl at argB}}%
+ \dtl at donext
+ \let\dtl at donextcompare\@gobble
+ \fi
+ \else
+ \ifnum\dtl at codeB=0\relax
+ \edef\dtl at donext{%
+ \noexpand\dtlcompare
+ {\noexpand#1}{\expandonce\@dtl at argA}{\expandonce\dtl at restB}}%
+ \dtl at donext
+ \let\dtl at donextcompare\@gobble
+ \fi
+ \fi
+ \fi
+ \dtl at donextcompare
+ {%
+ \ifnum\dtl at codeA=-1\relax
+ \ifnum\dtl at codeB=-1\relax
+ \edef\dtl at donext{%
+ \noexpand\dtlcompare
+ {\noexpand#1}{\expandonce\dtl at restA}{\expandonce\dtl at restB}}%
+ \dtl at donext
+ \else
+ \edef\dtl at donext{%
+ \noexpand\dtlcompare
+ {\noexpand#1}%
+ {\expandonce\dtl at restA}%
+ {\expandonce\dtl at firstB\expandonce\dtl at restB}}%
+ \dtl at donext
+ \fi
+ \else
+ \ifnum\dtl at codeB=-1\relax
+ \edef\dtl at donext{%
+ \noexpand\dtlcompare
+ {\noexpand#1}%
+ {\expandonce\dtl at firstA\expandonce\dtl at restA}%
+ {\expandonce\dtl at restB}}%
+ \dtl at donext
+ \else
+ \ifnum\dtl at codeA<\dtl at codeB
+ #1=-1\relax
+ \else
+ \ifnum\dtl at codeA>\dtl at codeB
+ #1=1\relax
+ \else
+ \ifdefempty{\dtl at restA}%
+ {%
+ \ifdefempty{\dtl at restB}%
+ {%
+ #1=0\relax
+ }%
+ {%
+ #1=-1\relax
+ }%
+ }%
+ {%
+ \ifdefempty{\dtl at restB}%
+ {%
+ #1=1\relax
+ }%
+ {%
+ \protected at edef\dtl at donext{%
+ \noexpand\dtlcompare
+ {\noexpand#1}{\dtl at restA}{\dtl at restB}}%
+ \dtl at donext
+ }%
+ }%
+ \fi
+ \fi
+ \fi
+ \fi
+ }%
+ }%
+ {%
+ \edef\dtl at donext{%
+ \noexpand\dtlcompare
+ {\noexpand#1}%
+ {\expandonce\dtl at firstA\expandonce\dtl at restA}%
+ {\expandonce\dtl at firstB\expandonce\dtl at restB}}%
+ \dtl at donext
+ }%
+ }%
+ {%
+ \edef\dtl at donext{%
+ \noexpand\dtlcompare
+ {\noexpand#1}%
+ {\expandonce\dtl at firstA\expandonce\dtl at restA}%
+ {\expandonce\dtl at firstB\expandonce\dtl at restB}}%
+ \dtl at donext
+ }%
+ }%
+ }%
+}
+\def\dtl at if@two at octets#1#2\dtl at end@if at two@octets#3#4{%
+ \ifbool{@dtl at utf8}
+ {%
+ \ifx\UTFviii at two@octets#1\relax
+ #3%
+ \else
+ #4%
+ \fi
+ }%
+ {%
+ #4%
+ }%
+}
+\def\dtl at getfirst@UTFviii#1#2#3\end at dtl@getfirst at UTFviii{%
+ \def\dtl at first{#1#2}%
+ \ifx\@nil#3\relax
+ \def\dtl at rest{}%
+ \else
+ \expandafter\def\expandafter\dtl at rest\expandafter{\@dtl at firsttonil#3}%
+ \fi
+}
+\def\@dtl at firsttonil#1\@nil{#1}
+\def\dtl at getfirst#1#2\end at dtl@getfirst{%
+ \def\dtl at first{#1}%
+ \ifdefempty{\dtl at first}%
+ {%
+ \def\dtl at rest{#2}%
+ }%
+ {%
+ \ifbool{@dtl at utf8}
+ {%
+ \expandafter\dtl at if@two at octets#1#2\relax\dtl at end@if at two@octets
+ {%
+ \dtl at getfirst@UTFviii#1#2\@nil\end at dtl@getfirst at UTFviii
+ }%
+ {%
+ \dtl at ifsingle{#1}{\def\dtl at rest{#2}}{\dtl at getfirst#1#2\end at dtl@getfirst}%
+ }%
+ }%
+ {%
+ \dtl at ifsingle{#1}{\def\dtl at rest{#2}}{\dtl at getfirst#1#2\end at dtl@getfirst}%
+ }%
+ }%
+}%
+\newcount\dtl at codeA
+\newcount\dtl at codeB
+\newcommand*{\dtl at setcharcode}[2]{%
+ \ifstrempty{#1}%
+ {%
+ #2=-1\relax
+ }%
+ {%
+ \ifx\@dtl at wordbreak#1\relax
+ #2=`\ \relax
+ \else
+ \ifcat\noexpand#1\relax
+ #2=0\relax
+ \else
+ \expandafter\dtl at if@two at octets#1\relax\relax\dtl at end@if at two@octets
+ {%
+ \dtlsetUTFviiicharcode{#1}{#2}%
+ }%
+ {%
+ \dtlsetcharcode{#1}{#2}%
+ }%
+ \fi
+ \fi
+ }%
+}
+\newcommand*{\dtlsetcharcode}[2]{#2=`#1\relax}
+\newcommand*{\dtlsetlccharcode}[2]{#2=\lccode`#1\relax}
+\newcommand*\dtlsetUTFviiicharcode[2]{\dtlsetdefaultUTFviiicharcode{#1}{#2}}
+\newcommand*\dtlsetUTFviiilccharcode[2]{\dtlsetdefaultUTFviiilccharcode{#1}{#2}}
+\newcommand*\dtlsetdefaultUTFviiicharcode[2]{%
+ \ifboolexpr
+ {
+ test {\ifstrequal{#1}{À}}
+ or test {\ifstrequal{#1}{Á}}
+ or test {\ifstrequal{#1}{Á}}
+ or test {\ifstrequal{#1}{Ã}}
+ or test {\ifstrequal{#1}{Ä}}
+ }%
+ {%
+ #2=`A\relax
+ }%
+ {%
+ \ifstrequal{#1}{Ç}%
+ {%
+ #2=`C\relax
+ }%
+ {%
+ \ifboolexpr
+ {
+ test {\ifstrequal{#1}{È}}
+ or test {\ifstrequal{#1}{É}}
+ or test {\ifstrequal{#1}{Ê}}
+ or test {\ifstrequal{#1}{Ë}}
+ }%
+ {%
+ #2=`E\relax
+ }%
+ {%
+ \ifboolexpr
+ {
+ test {\ifstrequal{#1}{Ì}}
+ or test {\ifstrequal{#1}{Í}}
+ or test {\ifstrequal{#1}{Î}}
+ or test {\ifstrequal{#1}{Ï}}
+ }%
+ {%
+ #2=`I\relax
+ }%
+ {%
+ \ifstrequal{#1}{Ñ}%
+ {%
+ #2=`N\relax
+ }%
+ {%
+ \ifboolexpr
+ {
+ test {\ifstrequal{#1}{Ò}}
+ or test {\ifstrequal{#1}{Ó}}
+ or test {\ifstrequal{#1}{Ô}}
+ or test {\ifstrequal{#1}{Õ}}
+ or test {\ifstrequal{#1}{Ö}}
+ }%
+ {%
+ #2=`O\relax
+ }%
+ {%
+ \ifboolexpr
+ {
+ test {\ifstrequal{#1}{Ù}}
+ or test {\ifstrequal{#1}{Ú}}
+ or test {\ifstrequal{#1}{Û}}
+ or test {\ifstrequal{#1}{Ü}}
+ }%
+ {%
+ #2=`U\relax
+ }%
+ {%
+ \ifstrequal{#1}{Ý}%
+ {%
+ #2=`Y\relax
+ }%
+ {%
+ \ifboolexpr
+ {
+ test {\ifstrequal{#1}{à}}
+ or test {\ifstrequal{#1}{á}}
+ or test {\ifstrequal{#1}{á}}
+ or test {\ifstrequal{#1}{ã}}
+ or test {\ifstrequal{#1}{ä}}
+ }%
+ {%
+ #2=`a\relax
+ }%
+ {%
+ \ifstrequal{#1}{ç}%
+ {%
+ #2=`c\relax
+ }%
+ {%
+ \ifboolexpr
+ {
+ test {\ifstrequal{#1}{è}}
+ or test {\ifstrequal{#1}{é}}
+ or test {\ifstrequal{#1}{ê}}
+ or test {\ifstrequal{#1}{ë}}
+ }%
+ {%
+ #2=`e\relax
+ }%
+ {%
+ \ifboolexpr
+ {
+ test {\ifstrequal{#1}{ì}}
+ or test {\ifstrequal{#1}{í}}
+ or test {\ifstrequal{#1}{î}}
+ or test {\ifstrequal{#1}{ï}}
+ }%
+ {%
+ #2=`i\relax
+ }%
+ {%
+ \ifstrequal{#1}{ñ}%
+ {%
+ #2=`n\relax
+ }%
+ {%
+ \ifboolexpr
+ {
+ test {\ifstrequal{#1}{ò}}
+ or test {\ifstrequal{#1}{ó}}
+ or test {\ifstrequal{#1}{ô}}
+ or test {\ifstrequal{#1}{õ}}
+ or test {\ifstrequal{#1}{ö}}
+ }%
+ {%
+ #2=`o\relax
+ }%
+ {%
+ \ifboolexpr
+ {
+ test {\ifstrequal{#1}{ù}}
+ or test {\ifstrequal{#1}{ú}}
+ or test {\ifstrequal{#1}{û}}
+ or test {\ifstrequal{#1}{ü}}
+ }%
+ {%
+ #2=`u\relax
+ }%
+ {%
+ \ifstrequal{#1}{ý}%
+ {%
+ #2=`y\relax
+ }%
+ {%
+ #2=64\relax
+ }%
+ }%
+ }%
+ }%
+ }%
+ }%
+ }%
+ }%
+ }%
+ }%
+ }%
+ }%
+ }%
+ }%
+ }%
+ }%
+}
+\newcommand*\dtlsetdefaultUTFviiilccharcode[2]{%
+ \ifboolexpr
+ {
+ test {\ifstrequal{#1}{à}}
+ or test {\ifstrequal{#1}{á}}
+ or test {\ifstrequal{#1}{á}}
+ or test {\ifstrequal{#1}{ã}}
+ or test {\ifstrequal{#1}{ä}}
+ or test {\ifstrequal{#1}{À}}
+ or test {\ifstrequal{#1}{Á}}
+ or test {\ifstrequal{#1}{Á}}
+ or test {\ifstrequal{#1}{Ã}}
+ or test {\ifstrequal{#1}{Ä}}
+ }%
+ {%
+ #2=`a\relax
+ }%
+ {%
+ \ifboolexpr
+ {
+ test {\ifstrequal{#1}{ç}}
+ or test {\ifstrequal{#1}{Ç}}
+ }
+ {%
+ #2=`c\relax
+ }%
+ {%
+ \ifboolexpr
+ {
+ test {\ifstrequal{#1}{è}}
+ or test {\ifstrequal{#1}{é}}
+ or test {\ifstrequal{#1}{ê}}
+ or test {\ifstrequal{#1}{ë}}
+ or test {\ifstrequal{#1}{È}}
+ or test {\ifstrequal{#1}{É}}
+ or test {\ifstrequal{#1}{Ê}}
+ or test {\ifstrequal{#1}{Ë}}
+ }%
+ {%
+ #2=`e\relax
+ }%
+ {%
+ \ifboolexpr
+ {
+ test {\ifstrequal{#1}{ì}}
+ or test {\ifstrequal{#1}{í}}
+ or test {\ifstrequal{#1}{î}}
+ or test {\ifstrequal{#1}{ï}}
+ or test {\ifstrequal{#1}{Ì}}
+ or test {\ifstrequal{#1}{Í}}
+ or test {\ifstrequal{#1}{Î}}
+ or test {\ifstrequal{#1}{Ï}}
+ }%
+ {%
+ #2=`i\relax
+ }%
+ {%
+ \ifboolexpr
+ {
+ test {\ifstrequal{#1}{ñ}}
+ or test {\ifstrequal{#1}{Ñ}}
+ }
+ {%
+ #2=`n\relax
+ }%
+ {%
+ \ifboolexpr
+ {
+ test {\ifstrequal{#1}{ò}}
+ or test {\ifstrequal{#1}{ó}}
+ or test {\ifstrequal{#1}{ô}}
+ or test {\ifstrequal{#1}{õ}}
+ or test {\ifstrequal{#1}{ö}}
+ or test {\ifstrequal{#1}{Ò}}
+ or test {\ifstrequal{#1}{Ó}}
+ or test {\ifstrequal{#1}{Ô}}
+ or test {\ifstrequal{#1}{Õ}}
+ or test {\ifstrequal{#1}{Ö}}
+ }%
+ {%
+ #2=`o\relax
+ }%
+ {%
+ \ifboolexpr
+ {
+ test {\ifstrequal{#1}{ù}}
+ or test {\ifstrequal{#1}{ú}}
+ or test {\ifstrequal{#1}{û}}
+ or test {\ifstrequal{#1}{ü}}
+ or test {\ifstrequal{#1}{Ù}}
+ or test {\ifstrequal{#1}{Ú}}
+ or test {\ifstrequal{#1}{Û}}
+ or test {\ifstrequal{#1}{Ü}}
+ }%
+ {%
+ #2=`u\relax
+ }%
+ {%
+ \ifboolexpr
+ {
+ test {\ifstrequal{#1}{ý}}
+ or test {\ifstrequal{#1}{Ý}}
+ }%
+ {%
+ #2=`y\relax
+ }%
+ {%
+ #2=96\relax
+ }%
+ }%
+ }%
+ }%
+ }%
+ }%
+ }%
+ }%
+}
+\newcommand*{\dtl at setlccharcode}[2]{%
+ \ifstrempty{#1}%
+ {%
+ #2=-1\relax
+ }%
+ {%
+ \ifx#1\@dtl at wordbreak\relax
+ #2=`\ \relax
+ \else
+ \ifcat\noexpand#1\relax%
+ #2=0\relax
+ \else
+ \expandafter\dtl at if@two at octets#1\relax\relax\dtl at end@if at two@octets
+ {%
+ \dtlsetUTFviiilccharcode{#1}{#2}%
+ }%
+ {%
+ \dtlsetlccharcode{#1}{#2}%
+ }%
+ \ifnum#2=0\relax
+ #2=`#1\relax
+ \fi
+ \fi
+ \fi
+ }%
+}
+\newcommand*{\dtlicompare}[3]{%
+ \dtl at subnobrsp{#2}{\@dtl at argA}%
+ \dtl at subnobrsp{#3}{\@dtl at argB}%
+ \ifdefempty{\@dtl at argA}%
+ {%
+ \ifdefempty{\@dtl at argB}%
+ {%
+ #1=0\relax
+ }%
+ {%
+ #1=-1\relax
+ }%
+ }%
+ {%
+ \ifdefempty{\@dtl at argB}%
+ {%
+ #1=1\relax
+ }%
+ {%
+ \dtl at setwordbreaksnohyphens{\@dtl at argA}{\@dtl at wordbreak}%
+ \let\@dtl at argA\dtl at string
+ \dtl at setwordbreaksnohyphens{\@dtl at argB}{\@dtl at wordbreak}%
+ \let\@dtl at argB\dtl at string
+ \expandafter\dtl at getfirst\@dtl at argA\end at dtl@getfirst
+ \let\dtl at firstA=\dtl at first
+ \let\dtl at restA=\dtl at rest
+ \expandafter\dtl at getfirst\@dtl at argB\end at dtl@getfirst
+ \let\dtl at firstB=\dtl at first
+ \let\dtl at restB=\dtl at rest
+ \expandafter\dtl at ifsingleorUTFviii\expandafter{\dtl at firstA}%
+ {%
+ \expandafter\dtl at ifsingleorUTFviii\expandafter{\dtl at firstB}%
+ {%
+ \expandafter\dtl at setlccharcode\expandafter{\dtl at firstA}{\dtl at codeA}%
+ \expandafter\dtl at setlccharcode\expandafter{\dtl at firstB}{\dtl at codeB}%
+ \let\dtl at donextcompare\@firstofone
+ \ifdtlcompareskipcs
+ \ifnum\dtl at codeA=0\relax
+ \ifnum\dtl at codeB=0\relax
+ \edef\dtl at donext{%
+ \noexpand\dtlicompare
+ {\noexpand#1}{\expandonce\dtl at restA}{\expandonce\dtl at restB}}%
+ \dtl at donext
+ \let\dtl at donextcompare\@gobble
+ \else
+ \edef\dtl at donext{%
+ \noexpand\dtlicompare
+ {\noexpand#1}{\expandonce\dtl at restA}{\expandonce\@dtl at argB}}%
+ \dtl at donext
+ \let\dtl at donextcompare\@gobble
+ \fi
+ \else
+ \ifnum\dtl at codeB=0\relax
+ \edef\dtl at donext{%
+ \noexpand\dtlicompare
+ {\noexpand#1}{\expandonce\@dtl at argA}{\expandonce\dtl at restB}}%
+ \dtl at donext
+ \let\dtl at donextcompare\@gobble
+ \fi
+ \fi
+ \fi
+ \dtl at donextcompare
+ {%
+ \ifnum\dtl at codeA=-1\relax
+ \ifnum\dtl at codeB=-1\relax
+ \edef\dtl at donext{%
+ \noexpand\dtlicompare{\noexpand#1}%
+ {\expandonce\dtl at restA}{\expandonce\dtl at restB}}%
+ \dtl at donext
+ \else
+ \edef\dtl at donext{%
+ \noexpand\dtlicompare
+ {\noexpand#1}%
+ {\expandonce\dtl at restA}%
+ {\expandonce\dtl at firstB\expandonce\dtl at restB}}%
+ \dtl at donext
+ \fi
+ \else
+ \ifnum\dtl at codeB=-1\relax
+ \edef\dtl at donext{%
+ \noexpand\dtlicompare
+ {\noexpand#1}%
+ {\expandonce\dtl at firstA\expandonce\dtl at restA}%
+ {\expandonce\dtl at restB}}%
+ \dtl at donext
+ \else
+ \ifnum\dtl at codeA<\dtl at codeB
+ #1=-1\relax
+ \else
+ \ifnum\dtl at codeA>\dtl at codeB
+ #1=1\relax
+ \else
+ \ifdefempty{\dtl at restA}%
+ {%
+ \ifdefempty{\dtl at restB}%
+ {%
+ #1=0\relax
+ }%
+ {%
+ #1=-1\relax
+ }%
+ }%
+ {%
+ \ifdefempty{\dtl at restB}%
+ {%
+ #1=1\relax
+ }%
+ {%
+ \edef\dtl at donext{%
+ \noexpand\dtlicompare
+ {\noexpand#1}%
+ {\expandonce\dtl at restA}%
+ {\expandonce\dtl at restB}}%
+ \dtl at donext
+ }%
+ }%
+ \fi
+ \fi
+ \fi
+ \fi
+ }%
+ }%
+ {%
+ \edef\dtl at donext{%
+ \noexpand\dtlicompare
+ {\noexpand#1}%
+ {\expandonce\dtl at firstA\expandonce\dtl at restA}%
+ {\expandonce\dtl at firstB\expandonce\dtl at restB}}%
+ \dtl at donext
+ }%
+ }%
+ {%
+ \edef\dtl at donext{%
+ \noexpand\dtlicompare
+ {\noexpand#1}%
+ {\expandonce\dtl at firstA\expandonce\dtl at restA}%
+ {\expandonce\dtl at firstB\expandonce\dtl at restB}}%
+ \dtl at donext
+ }%
+ }%
+ }%
+}
+\newcommand*{\dtlwordindexcompare}[3]{%
+ \@dtldictcompare{#1}{#2}{#3}{\@dtl at wordbreak}%
+}
+\newcommand*{\dtlletterindexcompare}[3]{%
+ \@dtldictcompare{#1}{#2}{#3}{}%
+}
+\newcommand*{\@dtldictcompare}[4]{%
+ \dtl at subnobrsp{#2}{\@dtl at argA}%
+ \dtl at subnobrsp{#3}{\@dtl at argB}%
+ \ifdefempty{\@dtl at argA}%
+ {%
+ \ifdefempty{\@dtl at argB}%
+ {%
+ #1=0\relax
+ }%
+ {%
+ #1=-1\relax
+ }%
+ }%
+ {%
+ \ifdefempty{\@dtl at argB}%
+ {%
+ #1=1\relax
+ }%
+ {%
+ \expandafter\DTLsplitstring\expandafter
+ {\@dtl at argA}{\datatoolpersoncomma}{\@dtl at beforepart}{\@dtl at afterpart}%
+ \ifdefempty{\@dtl at replaced}%
+ {%
+ \expandafter\DTLsplitstring\expandafter
+ {\@dtl at argA}{\datatoolplacecomma}{\@dtl at beforepart}{\@dtl at afterpart}%
+ \ifdefempty{\@dtl at replaced}%
+ {%
+ \expandafter\DTLsplitstring\expandafter
+ {\@dtl at argA}{\datatoolsubjectcomma}{\@dtl at beforepart}{\@dtl at afterpart}%
+ \ifdefempty{\@dtl at replaced}%
+ {%
+ \expandafter\DTLsplitstring\expandafter
+ {\@dtl at argA}{\datatoolparenstart}{\@dtl at beforepart}{\@dtl at afterpart}%
+ \ifdefempty{\@dtl at replaced}%
+ {%
+ \def\@dtl at A@comma{0}%
+ \let\@dtl at A@before\@dtl at argA
+ \def\@dtl at A@after{}%
+ }%
+ {%
+ \let\@dtl at A@comma\@dtl at replaced
+ \let\@dtl at A@before\@dtl at beforepart
+ \let\@dtl at A@after\@dtl at afterpart
+ }%
+ }%
+ {%
+ \let\@dtl at A@comma\@dtl at replaced
+ \let\@dtl at A@before\@dtl at beforepart
+ \let\@dtl at A@after\@dtl at afterpart
+ }%
+ }%
+ {%
+ \let\@dtl at A@comma\@dtl at replaced
+ \let\@dtl at A@before\@dtl at beforepart
+ \let\@dtl at A@after\@dtl at afterpart
+ }%
+ }%
+ {%
+ \let\@dtl at A@comma\@dtl at replaced
+ \let\@dtl at A@before\@dtl at beforepart
+ \let\@dtl at A@after\@dtl at afterpart
+ }%
+ \expandafter\DTLsplitstring\expandafter
+ {\@dtl at argB}{\datatoolpersoncomma}{\@dtl at beforepart}{\@dtl at afterpart}%
+ \ifdefempty{\@dtl at replaced}%
+ {%
+ \expandafter\DTLsplitstring\expandafter
+ {\@dtl at argB}{\datatoolplacecomma}{\@dtl at beforepart}{\@dtl at afterpart}%
+ \ifdefempty{\@dtl at replaced}%
+ {%
+ \expandafter\DTLsplitstring\expandafter
+ {\@dtl at argB}{\datatoolsubjectcomma}{\@dtl at beforepart}{\@dtl at afterpart}%
+ \ifdefempty{\@dtl at replaced}%
+ {%
+ \expandafter\DTLsplitstring\expandafter
+ {\@dtl at argB}{\datatoolparenstart}{\@dtl at beforepart}{\@dtl at afterpart}%
+ \ifdefempty{\@dtl at replaced}%
+ {%
+ \def\@dtl at B@comma{0}%
+ \let\@dtl at B@before\@dtl at argB
+ \def\@dtl at B@after{}%
+ }%
+ {%
+ \let\@dtl at B@comma\@dtl at replaced
+ \let\@dtl at B@before\@dtl at beforepart
+ \let\@dtl at B@after\@dtl at afterpart
+ }%
+ }%
+ {%
+ \let\@dtl at B@comma\@dtl at replaced
+ \let\@dtl at B@before\@dtl at beforepart
+ \let\@dtl at B@after\@dtl at afterpart
+ }%
+ }%
+ {%
+ \let\@dtl at B@comma\@dtl at replaced
+ \let\@dtl at B@before\@dtl at beforepart
+ \let\@dtl at B@after\@dtl at afterpart
+ }%
+ }%
+ {%
+ \let\@dtl at B@comma\@dtl at replaced
+ \let\@dtl at B@before\@dtl at beforepart
+ \let\@dtl at B@after\@dtl at afterpart
+ }%
+ \expandafter\dtl at ifcasechargroup\@dtl at A@before\dtl at end@ifcasechargroup
+ {\def\@dtl at A@chargroup{2}}%
+ {\def\@dtl at A@chargroup{1}}%
+ {\def\@dtl at A@chargroup{0}}%
+ \expandafter\dtl at ifcasechargroup\@dtl at B@before\dtl at end@ifcasechargroup
+ {\def\@dtl at B@chargroup{2}}%
+ {\def\@dtl at B@chargroup{1}}%
+ {\def\@dtl at B@chargroup{0}}%
+ \ifnum\@dtl at A@chargroup<\@dtl at B@chargroup
+ #1=-1\relax
+ \else
+ \ifnum\@dtl at A@chargroup>\@dtl at B@chargroup
+ #1=1\relax
+ \else
+ \ifcase\@dtl at A@chargroup
+ \edef\dtl at donext{%
+ \noexpand\dtlcompare
+ {\noexpand#1}%
+ {\expandonce\@dtl at A@before}%
+ {\expandonce\@dtl at B@before}}%
+ \dtl at donext
+ \or
+ \ifnum\@dtl at A@before<\@dtl at B@before\relax
+ #1=-1\relax
+ \else
+ \ifnum\@dtl at A@before>\@dtl at B@before\relax
+ #1=1\relax
+ \else
+ #1=0\relax
+ \fi
+ \fi
+ \or
+ \@dtlwordindexcompare{#1}{\@dtl at A@before}{\@dtl at B@before}
+ {\dtlicomparewords}{#4}%
+ \ifnum#1=0\relax
+ \let\@org at dtl@person at comma\datatoolpersoncomma
+ \let\@org at dtl@place at comma\datatoolplacecomma
+ \let\@org at dtl@subject at comma\datatoolsubjectcomma
+ \let\@org at dtl@paren at start\datatoolparenstart
+ \def\datatoolpersoncomma{3}%
+ \def\datatoolplacecomma{2}%
+ \def\datatoolsubjectcomma{1}%
+ \def\datatoolparenstart{-1}%
+ \ifnum\@dtl at A@comma>\@dtl at B@comma\relax
+ #1=-1\relax
+ \else
+ \ifnum\@dtl at A@comma<\@dtl at B@comma\relax
+ #1=1\relax
+ \else
+ \@dtlwordindexcompare{#1}{\@dtl at B@before}{\@dtl at A@before}
+ {\dtlcomparewords}{#4}%
+ \ifnum#1=0\relax
+ \@dtlwordindexcompare{#1}{\@dtl at A@after}{\@dtl at B@after}
+ {\dtlicomparewords}{#4}%
+ \fi
+ \fi
+ \fi
+ \let\datatoolpersoncomma\@org at dtl@person at comma
+ \let\datatoolplacecomma\@org at dtl@place at comma
+ \let\datatoolsubjectcomma\@org at dtl@subject at comma
+ \let\datatoolparenstart\@org at dtl@paren at start
+ \fi
+ \fi
+ \fi
+ \fi
+ }%
+ }%
+}%
+\newcommand*{\datatoolpersoncomma}{,\space}
+\newcommand*{\datatoolplacecomma}{,\space}
+\newcommand*{\datatoolsubjectcomma}{,\space}
+\newcommand*{\datatoolparenstart}{\space}
+\newcommand*{\@dtlwordindexcompare}[5]{%
+ \dtl at setwordbreaks{#2}{#5}%
+ \let#2\dtl at string
+ \dtl at setwordbreaks{#3}{}%
+ \let#3\dtl at string
+ \edef\@dtl at do@compare{%
+ \noexpand#4{\noexpand#1}%
+ {\expandonce#2}{\expandonce#3}%
+ }%
+ \@dtl at do@compare
+}
+\newcommand*{\@dtl at dict@compare}[4]{%
+ \ifdefempty{#2}%
+ {%
+ \ifdefempty{#3}%
+ {%
+ #1=0\relax
+ }%
+ {%
+ #1=-1\relax
+ }%
+ }%
+ {%
+ \ifdefempty{#3}%
+ {%
+ #1=1\relax
+ }%
+ {%
+ \expandafter\dtl at grabword#2\@dtl at endgrabword\dtl at A@first\dtl at A@remain
+ \expandafter\dtl at grabword#3\@dtl at endgrabword\dtl at B@first\dtl at B@remain
+ \edef\@dtl at do@compare{%
+ \noexpand#4{\noexpand#1}%
+ {\expandonce\dtl at A@first}{\expandonce\dtl at B@first}%
+ }%
+ \@dtl at do@compare
+ \ifnum#1=0\relax
+ \@dtl at dict@compare{#1}{\dtl at A@remain}{\dtl at B@remain}{#4}%
+ \fi
+ }%
+ }%
+}
+\def\dtl at grabword#1\@dtl at wordbreak#2\@dtl at endgrabword#3#4{%
+ \def#3{#1}%
+ \def#4{#2}%
+}
+\newcommand{\dtlicomparewords}[3]{%
+ \dtlicompare{#1}{#2}{#3}%
+}
+\newcommand{\dtlcomparewords}[3]{%
+ \dtlcompare{#1}{#2}{#3}%
+}
+\newcommand*{\dtl at setwordbreaks}[2]{%
+ \expandafter\dtl at subnobrsp\expandafter{#1}{\dtl at string}%
+ \DTLsubstituteall{\dtl at string}{~}{#2}%
+ \DTLsubstituteall{\dtl at string}{\ }{#2}%
+ \DTLsubstituteall{\dtl at string}{\space}{#2}%
+ \DTLsubstituteall{\dtl at string}{-}{#2}%
+ \toks@{#2}%
+ \edef\dtl at do@setwordbreaks{%
+ \noexpand\@dtl at setwordbreaks{\the\toks@}\expandonce\dtl at string\space\noexpand\@nil}%
+ \def\dtl at string{}%
+ \dtl at do@setwordbreaks
+}
+\def\@dtl at setwordbreaks#1#2 #3{%
+ \def\dtl at tmp{#3}%
+ \ifx\@nnil\dtl at tmp
+ \let\@dtl at setwordbreaks@next\@gobbletwo
+ \appto\dtl at string{#2}%
+ \else
+ \let\@dtl at setwordbreaks@next\@dtl at setwordbreaks
+ \appto\dtl at string{#2#1}%
+ \fi
+ \@dtl at setwordbreaks@next{#1}#3%
+}
+\newcommand*{\dtl at setwordbreaksnohyphens}[2]{%
+ \expandafter\dtl at subnobrsp\expandafter{#1}{\dtl at string}%
+ \DTLsubstituteall{\dtl at string}{~}{#2}%
+ \DTLsubstituteall{\dtl at string}{\ }{#2}%
+ \DTLsubstituteall{\dtl at string}{\space}{#2}%
+ \toks@{#2}%
+ \edef\dtl at do@setwordbreaks{%
+ \noexpand\@dtl at setwordbreaks{\the\toks@}\expandonce\dtl at string\space\noexpand\@nil}%
+ \def\dtl at string{}%
+ \dtl at do@setwordbreaks
+}
+\newcommand*{\@dtl at wordbreak}{ }
+\def\dtl at ifcasechargroup#1#2\dtl at end@ifcasechargroup#3#4#5{%
+ \expandafter\dtl at if@two at octets#1#2\relax\relax\dtl at end@if at two@octets
+ {%
+ \dtl at getfirst@UTFviii#1#2\@nil\end at dtl@getfirst at UTFviii
+ \expandafter\dtlsetUTFviiilccharcode\expandafter{\dtl at first}{\count@}%
+ \ifnum\count@<`a\relax #5\else#3\fi
+ }%
+ {%
+ \dtlifcasechargroup{#1}%
+ {#3}%
+ {%
+ \DTLifint{#1#2}
+ {%
+ #4%
+ }%
+ {%
+ #3%
+ }%
+ }%
+ {#5}%
+ }%
+}
+\newcommand*{\dtlifcasechargroup}[4]{%
+ \count@=`#1\relax
+ \dtlifintclosedbetween{\number\count@}{48}{57}%
+ {%
+ #3%
+ }%
+ {%
+ \dtlifintclosedbetween{\number\count@}{97}{122}%
+ {%
+ #2%
+ }%
+ {%
+ \dtlifintclosedbetween{\number\count@}{65}{90}%
+ {%
+ #2%
+ }%
+ {%
+ #4%
+ }%
+ }%
+ }%
+}
+\newcommand*{\dtlparsewords}[2]{%
+ \dtl at subnobrsp{#1}{\dtl at string}%
+ \DTLsubstituteall{\dtl at string}{~}{ }%
+ \DTLsubstituteall{\dtl at string}{\ }{ }%
+ \DTLsubstituteall{\dtl at string}{\space}{ }%
+ \DTLsubstituteall{\dtl at string}{-}{ }%
+ \let\dtl at parsewordshandler#2\relax
+ \edef\dtl at donext{%
+ \noexpand\@dtl at parse@words\expandonce\dtl at string\space\noexpand\@nil}%
+ \dtl at donext
+}
+\def\@dtl at parse@words#1 #2{%
+ \def\dtl at tmp{#2}%
+ \ifx\@nnil\dtl at tmp
+ \let\parse at wordsnext=\@gobble
+ \else
+ \let\parse at wordsnext=\@dtl at parse@words
+ \fi
+ \dlt at parsewordshandler{#1}%
+ \parse at wordsnext#2%
+}
+\newcommand*{\DTLifstringlt}{\@ifstar\@sDTLifstringlt\@DTLifstringlt}
+\newcommand*{\@DTLifstringlt}[4]{%
+ \protected at edef\@dtl at tmpcmp{%
+ \noexpand\dtlcompare{\noexpand\@dtl at tmpcount}{#1}{#2}}%
+ \@dtl at tmpcmp
+ \ifnum\@dtl at tmpcount<0\relax
+ #3%
+ \else
+ #4%
+ \fi
+}
+\newcommand*{\@sDTLifstringlt}[4]{%
+ \protected at edef\@dtl at tmpcmp{%
+ \noexpand\dtlicompare{\noexpand\@dtl at tmpcount}{#1}{#2}}%
+ \@dtl at tmpcmp
+ \ifnum\@dtl at tmpcount<0\relax
+ #3%
+ \else
+ #4%
+ \fi
+}
+\newcommand*{\DTLiflt}{\@ifstar\@sDTLiflt\@DTLiflt}
+\newcommand*{\@DTLiflt}[4]{%
+ \dtl at testbothnumerical{#1}{#2}%
+ \if at dtl@condition
+ \DTLifnumlt{#1}{#2}{#3}{#4}%
+ \else
+ \@DTLifstringlt{#1}{#2}{#3}{#4}%
+ \fi
+}
+\newcommand*{\@sDTLiflt}[4]{%
+ \dtl at testbothnumerical{#1}{#2}%
+ \if at dtl@condition
+ \DTLifnumlt{#1}{#2}{#3}{#4}%
+ \else
+ \@sDTLifstringlt{#1}{#2}{#3}{#4}%
+ \fi
+}
+\newcommand*{\DTLifnumgt}[4]{%
+ \DTLconverttodecimal{#1}{\@dtl at numi}%
+ \DTLconverttodecimal{#2}{\@dtl at numii}%
+ \dtlifnumgt{\@dtl at numi}{\@dtl at numii}%
+ {%
+ #3%
+ }%
+ {%
+ #4%
+ }%
+}
+\newcommand*{\DTLifstringgt}{\@ifstar\@sDTLifstringgt\@DTLifstringgt}
+\newcommand*{\@DTLifstringgt}[4]{%
+ \protected at edef\@dtl at tmpcmp{%
+ \noexpand\dtlcompare{\noexpand\@dtl at tmpcount}{#1}{#2}}%
+ \@dtl at tmpcmp
+ \ifnum\@dtl at tmpcount>0\relax
+ #3%
+ \else
+ #4%
+ \fi
+}
+\newcommand*{\@sDTLifstringgt}[4]{%
+ \protected at edef\@dtl at tmpcmp{%
+ \noexpand\dtlicompare{\noexpand\@dtl at tmpcount}{#1}{#2}}%
+ \@dtl at tmpcmp
+ \ifnum\@dtl at tmpcount>0\relax
+ #3%
+ \else
+ #4%
+ \fi
+}
+\newcommand*{\DTLifgt}{\@ifstar\@sDTLifgt\@DTLifgt}
+\newcommand*{\@DTLifgt}[4]{%
+ \dtl at testbothnumerical{#1}{#2}%
+ \if at dtl@condition
+ \DTLifnumgt{#1}{#2}{#3}{#4}%
+ \else
+ \@DTLifstringgt{#1}{#2}{#3}{#4}%
+ \fi
+}
+\newcommand*{\@sDTLifgt}[4]{%
+ \dtl at testbothnumerical{#1}{#2}%
+ \if at dtl@condition
+ \DTLifnumgt{#1}{#2}{#3}{#4}%
+ \else
+ \@sDTLifstringgt{#1}{#2}{#3}{#4}%
+ \fi
+}
+\newcommand*{\DTLifnumeq}[4]{%
+ \DTLconverttodecimal{#1}{\@dtl at numi}%
+ \DTLconverttodecimal{#2}{\@dtl at numii}%
+ \dtlifnumeq{\@dtl at numi}{\@dtl at numii}%
+ {%
+ #3%
+ }%
+ {%
+ #4%
+ }%
+}
+\newcommand*{\DTLifstringeq}{\@ifstar\@sDTLifstringeq\@DTLifstringeq}
+\newcommand*{\@DTLifstringeq}[4]{%
+ \protected at edef\@dtl at tmpcmp{%
+ \noexpand\dtlcompare{\noexpand\@dtl at tmpcount}{#1}{#2}}%
+ \@dtl at tmpcmp
+ \ifnum\@dtl at tmpcount=0\relax
+ #3%
+ \else
+ #4%
+ \fi
+}
+\newcommand*{\@sDTLifstringeq}[4]{%
+ \protected at edef\@dtl at tmpcmp{%
+ \noexpand\dtlicompare{\noexpand\@dtl at tmpcount}{#1}{#2}}%
+ \@dtl at tmpcmp
+ \ifnum\@dtl at tmpcount=0\relax
+ #3%
+ \else
+ #4%
+ \fi
+}
+\newcommand*{\DTLifeq}{\@ifstar\@sDTLifeq\@DTLifeq}
+\newcommand*{\@DTLifeq}[4]{%
+ \dtl at testbothnumerical{#1}{#2}%
+ \if at dtl@condition
+ \DTLifnumeq{#1}{#2}{#3}{#4}%
+ \else
+ \@DTLifstringeq{#1}{#2}{#3}{#4}%
+ \fi
+}
+\newcommand*{\@sDTLifeq}[4]{%
+ \dtl at testbothnumerical{#1}{#2}%
+ \if at dtl@condition
+ \DTLifnumeq{#1}{#2}{#3}{#4}%
+ \else
+ \@sDTLifstringeq{#1}{#2}{#3}{#4}%
+ \fi
+}
+\newcommand*{\DTLifSubString}[4]{%
+ \protected at edef\@dtl at dotestifsubstring{\noexpand\dtl at testifsubstring
+ {#1}{#2}}%
+ \@dtl at dotestifsubstring
+ \if at dtl@condition
+ #3%
+ \else
+ #4%
+ \fi
+}
+\newcommand*{\dtl at testifsubstring}[2]{%
+ \dtl at subnobrsp{#1}{\@dtl at argA}%
+ \dtl at subnobrsp{#2}{\@dtl at argB}%
+ \dtl at setwordbreaksnohyphens{\@dtl at argA}{\@dtl at wordbreak}%
+ \let\@dtl at argA\dtl at string
+ \dtl at setwordbreaksnohyphens{\@dtl at argB}{\@dtl at wordbreak}%
+ \let\@dtl at argB\dtl at string
+ \edef\dtl at donext{%
+ \noexpand\@dtl at testifsubstring{\expandonce\@dtl at argA}{\expandonce\@dtl at argB}}%
+ \dtl at donext
+}
+\newcommand*{\@dtl at testifsubstring}[2]{%
+ \def\@dtl at subs@argA{#1}%
+ \def\@dtl at subs@argB{#2}%
+ \ifdefempty{\@dtl at subs@argB}%
+ {%
+ \@dtl at conditiontrue
+ }%
+ {%
+ \ifdefempty{\@dtl at subs@argA}%
+ {%
+ \@dtl at conditionfalse
+ }%
+ {%
+ \@dtl at teststartswith{#1}{#2}%
+ \if at dtl@condition
+ \else
+ \dtl at getfirst#1\end at dtl@getfirst
+ \expandafter\dtl at ifsingle\expandafter{\dtl at first}%
+ {%
+ \expandafter\@dtl at testifsubstring\expandafter{\dtl at rest}{#2}%
+ }%
+ {%
+ \protected at edef\@dtl at donext{\noexpand\@dtl at testifsubstring
+ {\expandonce\dtl at first\expandonce\dtl at rest}{\expandonce\@dtl at subs@argB}}%
+ \@dtl at donext
+ }%
+ \fi
+ }%
+ }%
+}
+\newcommand*{\DTLifStartsWith}[4]{%
+ \@dtl at conditionfalse
+ \protected at edef\@dtl at tmp{\noexpand\dtl at teststartswith{#1}{#2}}%
+ \@dtl at tmp
+ \if at dtl@condition
+ #3%
+ \else
+ #4%
+ \fi
+}
+\newcommand*{\dtl at teststartswith}[2]{%
+ \dtl at subnobrsp{#1}{\@dtl at argA}%
+ \dtl at subnobrsp{#2}{\@dtl at argB}%
+ \dtl at setwordbreaksnohyphens{\@dtl at argA}{\@dtl at wordbreak}%
+ \let\@dtl at argA\dtl at string
+ \dtl at setwordbreaksnohyphens{\@dtl at argB}{\@dtl at wordbreak}%
+ \let\@dtl at argB\dtl at string
+ \edef\dtl at donext{%
+ \noexpand\@dtl at teststartswith{\expandonce\@dtl at argA}{\expandonce\@dtl at argB}}%
+ \dtl at donext
+}
+
+\newcommand*{\@dtl at teststartswith}[2]{%
+ \def\@dtl at argA{#1}%
+ \def\@dtl at argB{#2}%
+ \ifdefempty{\@dtl at argA}%
+ {%
+ \ifdefempty{\@dtl at argB}%
+ {%
+ \@dtl at conditiontrue
+ }%
+ {%
+ \@dtl at conditionfalse
+ }%
+ }%
+ {%
+ \ifdefempty{\@dtl at argB}%
+ {%
+ \@dtl at conditiontrue
+ }%
+ {%
+ \expandafter\dtl at getfirst\@dtl at argA\end at dtl@getfirst
+ \let\dtl at firstA=\dtl at first
+ \let\dtl at restA=\dtl at rest
+ \expandafter\dtl at getfirst\@dtl at argB\end at dtl@getfirst
+ \let\dtl at firstB=\dtl at first
+ \let\dtl at restB=\dtl at rest
+ \expandafter\dtl at ifsingle\expandafter{\dtl at firstA}%
+ {%
+ \expandafter\dtl at ifsingle\expandafter{\dtl at firstB}%
+ {%
+ \expandafter\dtl at setcharcode\expandafter{\dtl at firstA}{\dtl at codeA}%
+ \expandafter\dtl at setcharcode\expandafter{\dtl at firstB}{\dtl at codeB}%
+ \ifnum\dtl at codeA=-1\relax
+ \ifnum\dtl at codeB=-1\relax
+ \protected at edef\dtl at donext{%
+ \noexpand\@dtl at teststartswith{\expandonce\dtl at restA}{\expandonce\dtl at restB}}%
+ \dtl at donext
+ \else
+ \protected at edef\dtl at donext{%
+ \noexpand\@dtl at teststartswith
+ {\expandonce\dtl at restA}{\expandonce\dtl at firstB\expandonce\dtl at restB}}%
+ \dtl at donext
+ \fi
+ \else
+ \ifnum\dtl at codeB=-1\relax
+ \protected at edef\dtl at donext{%
+ \noexpand\@dtl at teststartswith
+ {\expandonce\dtl at firstA\expandonce\dtl at restA}{\expandonce\dtl at restB}}%
+ \dtl at donext
+ \else
+ \ifnum\dtl at codeA=\dtl at codeB
+ \protected at edef\dtl at donext{%
+ \noexpand\@dtl at teststartswith{\expandonce\dtl at restA}{\expandonce\dtl at restB}}%
+ \dtl at donext
+ \else
+ \@dtl at conditionfalse
+ \fi
+ \fi
+ \fi
+ }%
+ {%
+ \protected at edef\dtl at donext{%
+ \noexpand\@dtl at teststartswith
+ {\expandonce\dtl at firstA\expandonce\dtl at restA}%
+ {\expandonce\dtl at firstB\expandonce\dtl at restB}}%
+ \dtl at donext
+ }%
+ }%
+ {%
+ \protected at edef\dtl at donext{%
+ \noexpand\@dtl at teststartswith
+ {\expandonce\dtl at firstA\expandonce\dtl at restA}%
+ {\expandonce\dtl at firstB\expandonce\dtl at restB}}%
+ }%
+ }%
+ }%
+}
+\newcommand*{\DTLifnumclosedbetween}[5]{%
+ \DTLconverttodecimal{#1}{\@dtl at numi}%
+ \DTLconverttodecimal{#2}{\@dtl at numii}%
+ \DTLconverttodecimal{#3}{\@dtl at numiii}%
+ \DTLifFPclosedbetween{\@dtl at numi}{\@dtl at numii}{\@dtl at numiii}{#4}{#5}%
+}
+\newcommand*{\DTLifstringclosedbetween}{%
+ \@ifstar\@sDTLifstringclosedbetween\@DTLifstringclosedbetween
+}
+\newcommand*{\@DTLifstringclosedbetween}[5]{%
+ \protected at edef\@dtl at tmpcmp{%
+ \noexpand\dtlcompare{\noexpand\@dtl at tmpcount}{#1}{#2}}%
+ \@dtl at tmpcmp
+ \let\@dtl at dovalue\relax
+ \ifnum\@dtl at tmpcount<0\relax
+ \def\@dtl at dovalue{#5}%
+ \fi
+ \ifx\@dtl at dovalue\relax
+ \protected at edef\@dtl at tmpcmp{%
+ \noexpand\dtlcompare{\noexpand\@dtl at tmpcount}{#1}{#3}}%
+ \@dtl at tmpcmp
+ \ifnum\@dtl at tmpcount>0\relax
+ \def\@dtl at dovalue{#5}%
+ \else
+ \def\@dtl at dovalue{#4}%
+ \fi
+ \fi
+ \@dtl at dovalue
+}
+\newcommand*{\@sDTLifstringclosedbetween}[5]{%
+ \protected at edef\@dtl at tmpcmp{%
+ \noexpand\dtlicompare{\noexpand\@dtl at tmpcount}{#1}{#2}}%
+ \@dtl at tmpcmp
+ \let\@dtl at dovalue\relax
+ \ifnum\@dtl at tmpcount<0\relax
+ \def\@dtl at dovalue{#5}%
+ \fi
+ \ifx\@dtl at dovalue\relax
+ \protected at edef\@dtl at tmpcmp{%
+ \noexpand\dtlicompare{\noexpand\@dtl at tmpcount}{#1}{#3}}%
+ \@dtl at tmpcmp
+ \ifnum\@dtl at tmpcount>0\relax
+ \def\@dtl at dovalue{#5}%
+ \else
+ \def\@dtl at dovalue{#4}%
+ \fi
+ \fi
+ \@dtl at dovalue
+}
+\newcommand*{\DTLifclosedbetween}{%
+ \@ifstar\@sDTLifclosedbetween\@DTLifclosedbetween
+}
+\newcommand*{\@DTLifclosedbetween}[5]{%
+ \dtl at testbothnumerical{#2}{#3}%
+ \if at dtl@condition
+ \dtl at ifsingle{#1}{%
+ \edef\@dtl at tmp{#1}}{%
+ \def\@dtl at tmp{#1}}%
+ \expandafter\@dtl at checknumerical\expandafter{\@dtl at tmp}%
+ \ifnum\@dtl at datatype>0\relax
+ \DTLifnumclosedbetween{#1}{#2}{#3}{#4}{#5}%
+ \else
+ \@DTLifstringclosedbetween{#1}{#2}{#3}{#4}{#5}%
+ \fi
+ \else
+ \@DTLifstringclosedbetween{#1}{#2}{#3}{#4}{#5}%
+ \fi
+}
+\newcommand*{\@sDTLifclosedbetween}[5]{%
+ \dtl at testbothnumerical{#2}{#3}%
+ \if at dtl@condition
+ \dtl at ifsingle{#1}{%
+ \edef\@dtl at tmp{#1}}{%
+ \def\@dtl at tmp{#1}}%
+ \expandafter\@dtl at checknumerical\expandafter{\@dtl at tmp}%
+ \ifnum\@dtl at datatype>0\relax
+ \DTLifnumclosedbetween{#1}{#2}{#3}{#4}{#5}%
+ \else
+ \@sDTLifstringclosedbetween{#1}{#2}{#3}{#4}{#5}%
+ \fi
+ \else
+ \@sDTLifstringclosedbetween{#1}{#2}{#3}{#4}{#5}%
+ \fi
+}
+\newcommand*{\DTLifnumopenbetween}[5]{%
+ \DTLconverttodecimal{#1}{\@dtl at numi}%
+ \DTLconverttodecimal{#2}{\@dtl at numii}%
+ \DTLconverttodecimal{#3}{\@dtl at numiii}%
+ \DTLifFPopenbetween{\@dtl at numi}{\@dtl at numii}{\@dtl at numiii}{#4}{#5}%
+}
+\newcommand*{\DTLifstringopenbetween}{%
+ \@ifstar\@sDTLifstringopenbetween\@DTLifstringopenbetween
+}
+\newcommand*{\@DTLifstringopenbetween}[5]{%
+ \protected at edef\@dtl at tmpcmp{%
+ \noexpand\dtlcompare{\noexpand\@dtl at tmpcount}{#1}{#2}}%
+ \@dtl at tmpcmp
+ \let\@dtl at dovalue\relax
+ \ifnum\@dtl at tmpcount>0\relax
+ \else
+ \def\@dtl at dovalue{#5}%
+ \fi
+ \ifx\@dtl at dovalue\relax
+ \protected at edef\@dtl at tmpcmp{%
+ \noexpand\dtlcompare{\noexpand\@dtl at tmpcount}{#1}{#3}}%
+ \@dtl at tmpcmp
+ \ifnum\@dtl at tmpcount<0\relax
+ \def\@dtl at dovalue{#4}%
+ \else
+ \def\@dtl at dovalue{#5}%
+ \fi
+ \fi
+ \@dtl at dovalue
+}
+\newcommand*{\@sDTLifstringopenbetween}[5]{%
+ \protected at edef\@dtl at tmpcmp{%
+ \noexpand\dtlicompare{\noexpand\@dtl at tmpcount}{#1}{#2}}%
+ \@dtl at tmpcmp
+ \let\@dtl at dovalue\relax
+ \ifnum\@dtl at tmpcount>0\relax
+ \else
+ \def\@dtl at dovalue{#5}%
+ \fi
+ \ifx\@dtl at dovalue\relax
+ \protected at edef\@dtl at tmpcmp{%
+ \noexpand\dtlicompare{\noexpand\@dtl at tmpcount}{#1}{#3}}%
+ \@dtl at tmpcmp
+ \ifnum\@dtl at tmpcount<0\relax
+ \def\@dtl at dovalue{#4}%
+ \else
+ \def\@dtl at dovalue{#5}%
+ \fi
+ \fi
+ \@dtl at dovalue
+}
+\newcommand*{\DTLifopenbetween}{%
+ \@ifstar\@sDTLifopenbetween\@DTLifopenbetween
+}
+\newcommand*{\@DTLifopenbetween}[5]{%
+ \dtl at testbothnumerical{#2}{#3}%
+ \if at dtl@condition
+ \dtl at ifsingle{#1}{%
+ \edef\@dtl at tmp{#1}}{%
+ \def\@dtl at tmp{#1}}%
+ \expandafter\@dtl at checknumerical\expandafter{\@dtl at tmp}%
+ \ifnum\@dtl at datatype>0\relax
+ \DTLifnumopenbetween{#1}{#2}{#3}{#4}{#5}%
+ \else
+ \@DTLifstringopenbetween{#1}{#2}{#3}{#4}{#5}%
+ \fi
+ \else
+ \@DTLifstringopenbetween{#1}{#2}{#3}{#4}{#5}%
+ \fi
+}
+\newcommand*{\@sDTLifopenbetween}[5]{%
+ \dtl at testbothnumerical{#2}{#3}%
+ \if at dtl@condition
+ \dtl at ifsingle{#1}{%
+ \edef\@dtl at tmp{#1}}{%
+ \def\@dtl at tmp{#1}}%
+ \expandafter\@dtl at checknumerical\expandafter{\@dtl at tmp}%
+ \ifnum\@dtl at datatype>0\relax
+ \DTLifnumopenbetween{#1}{#2}{#3}{#4}{#5}%
+ \else
+ \@sDTLifstringopenbetween{#1}{#2}{#3}{#4}{#5}%
+ \fi
+ \else
+ \@sDTLifstringopenbetween{#1}{#2}{#3}{#4}{#5}%
+ \fi
+}
+\let\DTLifFPopenbetween\dtlifnumopenbetween
+\let\DTLifFPclosedbetween\dtlifnumclosedbetween
+\newcommand*{\dtl at testlt}[2]{%
+ \DTLiflt{#1}{#2}{\@dtl at conditiontrue}{\@dtl at conditionfalse}%
+}
+\newcommand*{\DTLislt}[2]{%
+ \TE at throw\noexpand\dtl at testlt{#1}{#2}\noexpand\if at dtl@condition
+}
+\newcommand*{\dtl at testiclt}[2]{%
+ \@sDTLiflt{#1}{#2}{\@dtl at conditiontrue}{\@dtl at conditionfalse}%
+}
+\newcommand*{\DTLisilt}[2]{%
+ \TE at throw\noexpand\dtl at testiclt{#1}{#2}\noexpand\if at dtl@condition
+}
+\newcommand*{\dtl at testgt}[2]{%
+ \DTLifgt{#1}{#2}{\@dtl at conditiontrue}{\@dtl at conditionfalse}%
+}
+\newcommand*{\DTLisgt}[2]{%
+ \TE at throw\noexpand\dtl at testgt{#1}{#2}\noexpand\if at dtl@condition
+}
+\newcommand*{\dtl at testicgt}[2]{%
+ \@sDTLifgt{#1}{#2}{\@dtl at conditiontrue}{\@dtl at conditionfalse}%
+}
+\newcommand*{\DTLisigt}[2]{%
+ \TE at throw\noexpand\dtl at testicgt{#1}{#2}\noexpand\if at dtl@condition
+}
+\newcommand*{\dtl at testeq}[2]{%
+ \DTLifeq{#1}{#2}{\@dtl at conditiontrue}{\@dtl at conditionfalse}%
+}
+\newcommand*{\DTLiseq}[2]{%
+ \TE at throw\noexpand\dtl at testeq{#1}{#2}\noexpand\if at dtl@condition
+}
+\newcommand*{\dtl at testiceq}[2]{%
+ \@sDTLifeq{#1}{#2}{\@dtl at conditiontrue}{\@dtl at conditionfalse}%
+}
+\newcommand*{\DTLisieq}[2]{%
+ \TE at throw\noexpand\dtl at testiceq{#1}{#2}\noexpand\if at dtl@condition
+}
+\newcommand*{\DTLisSubString}[2]{%
+ \TE at throw\noexpand\dtl at testifsubstring{#1}{#2}%
+ \noexpand\if at dtl@condition
+}
+\newcommand*{\DTLisPrefix}[2]{%
+ \TE at throw\noexpand\dtl at teststartswith{#1}{#2}%
+ \noexpand\if at dtl@condition
+}
+\newcommand*{\DTLisinlist}[2]{%
+ \TE at throw\noexpand\dtl at testinlist{#1}{#2}%
+ \noexpand\if at dtl@condition
+}
+\newcommand*{\dtl at testinlist}[2]{%
+ \DTLifinlist{#1}{#2}{\@dtl at conditiontrue}{\@dtl at conditionfalse}%
+}
+\newcommand*{\dtl at testnumclosedbetween}[3]{%
+ \DTLifnumclosedbetween{#1}{#2}{#3}%
+ {\@dtl at conditiontrue}{\@dtl at conditionfalse}%
+}
+\newcommand*{\DTLisnumclosedbetween}[3]{%
+ \TE at throw\noexpand\dtl at testnumclosedbetween{#1}{#2}{#3}%
+ \noexpand\if at dtl@condition
+}
+\newcommand*{\dtl at testnumopenbetween}[3]{%
+ \DTLifnumopenbetween{#1}{#2}{#3}%
+ {\@dtl at conditiontrue}{\@dtl at conditionfalse}%
+}
+\newcommand*{\DTLisnumopenbetween}[3]{%
+ \TE at throw\noexpand\dtl at testnumopenbetween{#1}{#2}{#3}%
+ \noexpand\if at dtl@condition
+}
+\newcommand*{\dtl at testclosedbetween}[3]{%
+ \DTLifclosedbetween{#1}{#2}{#3}%
+ {\@dtl at conditiontrue}{\@dtl at conditionfalse}%
+}
+\newcommand*{\DTLisclosedbetween}[3]{%
+ \TE at throw\noexpand\dtl at testclosedbetween{#1}{#2}{#3}%
+ \noexpand\if at dtl@condition
+}
+\newcommand*{\dtl at testiclosedbetween}[3]{%
+ \@sDTLifclosedbetween{#1}{#2}{#3}%
+ {\@dtl at conditiontrue}{\@dtl at conditionfalse}%
+}
+\newcommand*{\DTLisiclosedbetween}[3]{%
+ \TE at throw\noexpand\dtl at testiclosedbetween{#1}{#2}{#3}%
+ \noexpand\if at dtl@condition
+}
+\newcommand*{\dtl at testopenbetween}[3]{%
+ \DTLifopenbetween{#1}{#2}{#3}%
+ {\@dtl at conditiontrue}{\@dtl at conditionfalse}%
+}
+\newcommand*{\DTLisopenbetween}[3]{%
+ \TE at throw\noexpand\dtl at testopenbetween{#1}{#2}{#3}%
+ \noexpand\if at dtl@condition
+}
+\newcommand*{\dtl at testiopenbetween}[3]{%
+ \@sDTLifopenbetween{#1}{#2}{#3}%
+ {\@dtl at conditiontrue}{\@dtl at conditionfalse}%
+}
+\newcommand*{\DTLisiopenbetween}[3]{%
+ \TE at throw\noexpand\dtl at testiopenbetween{#1}{#2}{#3}%
+ \noexpand\if at dtl@condition
+}
+\let\DTLisFPclosedbetween\DTLisnumclosedbetween
+\newcommand*{\dtl at testFPopenbetween}[3]{%
+ \DTLifFPopenbetween{#1}{#2}{#3}%
+ {\@dtl at conditiontrue}{\@dtl at conditionfalse}%
+}
+\newcommand*{\DTLisFPopenbetween}[3]{%
+ \TE at throw\noexpand\dtl at testFPopenbetween{#1}{#2}{#3}%
+ \noexpand\if at dtl@condition
+}
+\newcommand*{\dtl at testFPislt}[2]{%
+ \dtlifnumlt{#1}{#2}%
+ {%
+ \@dtl at conditiontrue
+ }%
+ {%
+ \@dtl at conditionfalse
+ }%
+}
+\newcommand*{\DTLisFPlt}[2]{%
+ \TE at throw\noexpand\dtl at testFPislt{#1}{#2}%
+ \noexpand\if at dtl@condition
+}
+\newcommand*{\dtl at testFPisgt}[2]{%
+ \dtlifnumgt{#1}{#2}%
+ {%
+ \@dtl at conditiontrue
+ }%
+ {%
+ \@dtl at conditionfalse
+ }%
+}
+\newcommand*{\DTLisFPgt}[2]{%
+ \TE at throw\noexpand\dtl at testFPisgt{#1}{#2}%
+ \noexpand\if at dtl@condition
+}
+\newcommand*{\dtl at testFPiseq}[2]{%
+ \dtlifnumeq{#1}{#2}%
+ {%
+ \@dtl at conditiontrue
+ }%
+ {%
+ \@dtl at conditionfalse
+ }%
+}
+\newcommand*{\DTLisFPeq}[2]{%
+ \TE at throw\noexpand\dtl at testFPiseq{#1}{#2}%
+ \noexpand\if at dtl@condition
+}
+\newcommand*{\dtl at testFPislteq}[2]{%
+ \dtlifnumlt{#1}{#2}%
+ {%
+ \@dtl at conditiontrue
+ }%
+ {%
+ \@dtl at conditionfalse
+ }%
+ \if at dtl@condition
+ \else
+ \dtl at testFPiseq{#1}{#2}%
+ \fi
+}
+\newcommand*{\DTLisFPlteq}[2]{%
+ \TE at throw\noexpand\dtl at testFPislteq{#1}{#2}%
+ \noexpand\if at dtl@condition
+}
+\newcommand*{\dtl at testFPisgteq}[2]{%
+ \dtlifnumgt{#1}{#2}%
+ {%
+ \@dtl at conditiontrue
+ }%
+ {%
+ \@dtl at conditionfalse
+ }%
+ \if at dtl@condition
+ \else
+ \dtl at testFPiseq{#1}{#2}%
+ \fi
+}
+\newcommand*{\DTLisFPgteq}[2]{%
+ \TE at throw\noexpand\dtl at testFPisgteq{#1}{#2}%
+ \noexpand\if at dtl@condition}
+\newcommand*{\dtl at teststring}[1]{%
+ \DTLifstring{#1}{\@dtl at conditiontrue}{\@dtl at conditionfalse}}
+\newcommand*{\DTLisstring}[1]{%
+ \TE at throw\noexpand\dtl at teststring{#1}\noexpand\if at dtl@condition}
+\newcommand*{\dtl at testnumerical}[1]{%
+ \DTLifnumerical{#1}{\@dtl at conditiontrue}{\@dtl at conditionfalse}%
+}
+\newcommand*{\DTLisnumerical}[1]{%
+ \TE at throw\noexpand\dtl at testnumerical{#1}\noexpand\if at dtl@condition}
+\newcommand*{\dtl at testint}[1]{%
+ \DTLifint{#1}{\@dtl at conditiontrue}{\@dtl at conditionfalse}}
+\newcommand*{\DTLisint}[1]{%
+ \TE at throw\noexpand\dtl at testint{#1}\noexpand\if at dtl@condition}
+\newcommand*{\dtl at testreal}[1]{%
+ \DTLifreal{#1}{\@dtl at conditiontrue}{\@dtl at conditionfalse}}
+\newcommand*{\DTLisreal}[1]{%
+ \TE at throw\noexpand\dtl at testreal{#1}\noexpand\if at dtl@condition}
+\newcommand*{\dtl at testcurrency}[1]{%
+ \DTLifcurrency{#1}{\@dtl at conditiontrue}{\@dtl at conditionfalse}}
+\newcommand*{\DTLiscurrency}[1]{%
+ \TE at throw\noexpand\dtl at testcurrency{#1}\noexpand\if at dtl@condition}
+\newcommand*{\dtl at testcurrencyunit}[2]{%
+ \DTLifcurrencyunit{#1}{#2}{\@dtl at conditiontrue}{\@dtl at conditionfalse}}
+\newcommand*{\DTLiscurrencyunit}[2]{%
+ \TE at throw\noexpand\dtl at testcurrencyunit{#1}{#2}%
+ \noexpand\if at dtl@condition
+}
+\newcommand*{\dtlbreak}{%
+ \PackageError{datatool}{Can't break out of anything}{}%
+}
+\long\def\dtlforint#1=#2\to#3\step#4\do#5{%
+ \let\@dtl at orgbreak\dtlbreak
+ \def\@dtl at endloophook{}%
+ \def\dtlbreak{\def\@dtl at endloophook{#1=#3}}%
+ #1=#2\relax
+ \ifnum#4<0\relax
+ \whiledo{\(#1>#3\)\TE at or\(#1=#3\)}%
+ {%
+ #5%
+ \@dtl at endloophook
+ \advance#1 by #4\relax
+ }%
+ \else
+ \whiledo{\(#1<#3\)\TE at or\(#1=#3\)}%
+ {%
+ #5%
+ \@dtl at endloophook
+ \advance#1 by #4\relax
+ }%
+ \fi
+ \let\dtlbreak\@dtl at orgbreak
+}
+\newcount\@dtl at foreach@level
+\long\def\dtlgforint#1=#2\to#3\step#4\do#5{%
+ \global#1=#2\relax
+ \global\advance\@dtl at foreach@level by 1\relax
+ \expandafter\global\expandafter
+ \let\csname @dtl at endhook@\the\@dtl at foreach@level\endcsname
+ \relax
+ \expandafter\global\expandafter
+ \let\csname @dtl at break@\the\@dtl at foreach@level\endcsname
+ \dtlbreak
+ \gdef\dtlbreak{\expandafter
+ \gdef\csname @dtl at endhook@\the\@dtl at foreach@level\endcsname{%
+ #1=#3}}%
+ \ifnum#4<0\relax
+ \whiledo{\(#1>#3\)\TE at or\(#1=#3\)}%
+ {%
+ #5%
+ \csname @dtl at endhook@\the\@dtl at foreach@level\endcsname
+ \global\advance#1 by #4\relax
+ }%
+ \else
+ \whiledo{\(#1<#3\)\TE at or\(#1=#3\)}%
+ {%
+ #5%
+ \csname @dtl at endhook@\the\@dtl at foreach@level\endcsname
+ \global\advance#1 by #4\relax
+ }%
+ \fi
+ \expandafter\global\expandafter\let\expandafter\dtlbreak
+ \csname @dtl at break@\the\@dtl at foreach@level\endcsname
+ \global\advance\@dtl at foreach@level by -1\relax
+}
+\newenvironment{dtlenvgforint}[1]%
+{%
+ \def\@dtlenvgforint at arg{#1}%
+ \long at collect@body\@do at dtlenvgforint
+}%
+{}
+\newcommand{\@do at dtlenvgforint}[1]{%
+ \expandafter\dtlgforint\@dtlenvgforint at arg\do{#1}%
+}
+\endinput
+%%
+%% End of file `datatool-base-2019-09-27.sty'.
Property changes on: trunk/Master/texmf-dist/tex/latex/datatool/datatool-base-2019-09-27.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: trunk/Master/texmf-dist/tex/latex/datatool/datatool-base.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/datatool/datatool-base.sty 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/tex/latex/datatool/datatool-base.sty 2025-03-05 21:33:51 UTC (rev 74461)
@@ -21,7 +21,7 @@
%%
%% The Current Maintainer of this work is Nicola Talbot.
%%
-%% This work consists of the files datatool.dtx and datatool.ins and the derived files datatool-base.sty, datatool-undetermined.ldf, datatool-latin1.ldf, datatool-utf8.ldf, datatool-l3fp.def, datatool-lua.def, datatool-fp.def, datatool-fp.sty, datatool-pgfmath.def, datatool-pgfmath.sty, datatool.sty, datagidx.sty, databib.sty, databar.sty, datapie.sty, dataplot.sty, person.sty, databib.bst.
+%% This work consists of the files datatool.dtx and datatool.ins and the derived files datatool-base.sty, datatool-undetermined.ldf, datatool-latin1.ldf, datatool-utf8.ldf, datatool-l3fp.def, datatool-lua.def, datatool-fp.def, datatool-fp.sty, datatool-pgfmath.def, datatool-pgfmath.sty, datatool.sty, datagidx.sty, databib.sty, databar.sty, datapie.sty, dataplot.sty, person.sty, databib.bst, databar-2019-09-27.sty, databib-2019-09-27.sty, datagidx-2019-09-27.sty, datapie-2019-09-27.sty, dataplot-2019-09-27.sty, datatool-2019-09-27.sty, datatool-base-2019-09-27.sty, datatool-fp-2019-09-27.sty, datatool-pgfmath-2019-09-27.sty, person-2019-09-27.sty.
%%
%% \CharacterTable
%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
@@ -40,8 +40,8 @@
%% Right brace \} Tilde \~}
\NeedsTeXFormat{LaTeX2e}
\DeclareRelease{v2.32}{2019-09-27}{datatool-base-2019-09-27.sty}
-\DeclareCurrentRelease{v3.0}{2025-03-03}
-\ProvidesPackage{datatool-base}[2025/03/03 v3.0 (NLCT)]
+\DeclareCurrentRelease{v3.0.1}{2025-03-05}
+\ProvidesPackage{datatool-base}[2025/03/05 v3.0.1 (NLCT)]
\RequirePackage{etoolbox}
\RequirePackage{amsmath}
\RequirePackage{xfor}
Added: trunk/Master/texmf-dist/tex/latex/datatool/datatool-fp-2019-09-27.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/datatool/datatool-fp-2019-09-27.sty (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/datatool/datatool-fp-2019-09-27.sty 2025-03-05 21:33:51 UTC (rev 74461)
@@ -0,0 +1,164 @@
+%%
+%% This is file `datatool-fp-2019-09-27.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% datatool.dtx (with options: `datatool-fp-2019-09-27.sty,package')
+%%
+%% datatool.dtx
+%% Copyright 2025 Nicola Talbot
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of LaTeX
+%% version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status `maintained'.
+%%
+%% The Current Maintainer of this work is Nicola Talbot.
+%%
+%% This work consists of the files datatool.dtx and datatool.ins and the derived files datatool-base.sty, datatool-undetermined.ldf, datatool-latin1.ldf, datatool-utf8.ldf, datatool-l3fp.def, datatool-lua.def, datatool-fp.def, datatool-fp.sty, datatool-pgfmath.def, datatool-pgfmath.sty, datatool.sty, datagidx.sty, databib.sty, databar.sty, datapie.sty, dataplot.sty, person.sty, databib.bst, databar-2019-09-27.sty, databib-2019-09-27.sty, datagidx-2019-09-27.sty, datapie-2019-09-27.sty, dataplot-2019-09-27.sty, datatool-2019-09-27.sty, datatool-base-2019-09-27.sty, datatool-fp-2019-09-27.sty, datatool-pgfmath-2019-09-27.sty, person-2019-09-27.sty.
+%%
+%% \CharacterTable
+%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+%% Digits \0\1\2\3\4\5\6\7\8\9
+%% Exclamation \! Double quote \" Hash (number) \#
+%% Dollar \$ Percent \% Ampersand \&
+%% Acute accent \' Left paren \( Right paren \)
+%% Asterisk \* Plus \+ Comma \,
+%% Minus \- Point \. Solidus \/
+%% Colon \: Semicolon \; Less than \<
+%% Equals \= Greater than \> Question mark \?
+%% Commercial at \@ Left bracket \[ Backslash \\
+%% Right bracket \] Circumflex \^ Underscore \_
+%% Grave accent \` Left brace \{ Vertical bar \|
+%% Right brace \} Tilde \~}
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{datatool-fp}[2019/09/27 v2.32 (NLCT)]
+\RequirePackage{xkeyval}
+\RequirePackage{fp}
+\RequirePackage{datatool-base}[=v2.32]
+\define at choicekey{datatool-fp}{verbose}[\val\nr]{true,false}[true]{%
+ \ifcase\nr\relax
+ \FPmessagestrue
+ \or
+ \FPmessagesfalse
+ \fi
+}
+\let\ifFPmessages\ifdtlverbose
+\ProcessOptionsX
+\providecommand*{\@dtl at mathprocessor}{fp}
+\newcommand*{\dtlifnumeq}[4]{%
+ \FPifeq{#1}{#2}%
+ #3%
+ \else
+ #4%
+ \fi
+}
+\let\ifdtlverbose\ifFPmessages
+\newcommand*{\dtlifnumlt}[4]{%
+ \FPiflt{#1}{#2}%
+ #3%
+ \else
+ #4%
+ \fi
+}
+\newcommand*{\dtlifnumgt}[4]{%
+ \FPifgt{#1}{#2}%
+ #3%
+ \else
+ #4%
+ \fi
+}
+\newcommand*{\dtlifnumopenbetween}[5]{%
+ \let\@dtl at dovalue\relax
+ \dtlifnumgt{#1}{#2}%
+ {}%
+ {%
+ \def\@dtl at dovalue{#5}%
+ }%
+ \dtlifnumlt{#1}{#3}%
+ {%
+ \ifx\@dtl at dovalue\relax
+ \def\@dtl at dovalue{#4}%
+ \fi
+ }%
+ {%
+ \def\@dtl at dovalue{#5}%
+ }%
+ \@dtl at dovalue
+}
+\newcommand*{\dtlifnumclosedbetween}[5]{%
+ \let\@dtl at dovalue\relax
+ \dtlifnumgt{#1}{#2}%
+ {}%
+ {%
+ \dtlifnumeq{#1}{#2}%
+ {%
+ \def\@dtl at dovalue{#4}%
+ }%
+ {%
+ \def\@dtl at dovalue{#5}%
+ }%
+ }%
+ \dtlifnumlt{#1}{#3}%
+ {%
+ \ifx\@dtl at dovalue\relax
+ \def\@dtl at dovalue{#4}%
+ \fi
+ }%
+ {%
+ \dtlifnumeq{#1}{#3}%
+ {%
+ \def\@dtl at dovalue{#4}%
+ }%
+ {%
+ \def\@dtl at dovalue{#5}%
+ }%
+ }%
+ \@dtl at dovalue
+}
+\newcommand*{\dtladd}[3]{%
+ \FPadd{#1}{#2}{#3}%
+}
+\newcommand*{\dtlsub}[3]{%
+ \FPsub{#1}{#2}{#3}%
+}
+\newcommand*{\dtlmul}[3]{%
+ \FPmul{#1}{#2}{#3}%
+}
+\newcommand*{\dtldiv}[3]{%
+ \FPdiv{#1}{#2}{#3}%
+}
+\newcommand*{\dtlroot}[2]{%
+ \FProot{#1}{#2}%
+}
+\newcommand*{\dtlround}[3]{%
+ \FPround{#1}{#2}{#3}%
+}
+\newcommand*{\dtltrunc}[3]{%
+ \FPtrunc{#1}{#2}{#3}%
+}
+\newcommand*{\dtlclip}[2]{%
+ \FPclip{#1}{#2}%
+}
+\newcommand*{\dtlmin}[3]{%
+ \FPmin{#1}{#2}{#3}%
+}
+\newcommand*{\dtlmax}[3]{%
+ \FPmax{#1}{#2}{#3}%
+}
+\newcommand*{\dtlabs}[2]{%
+ \FPabs{#1}{#2}%
+}
+\newcommand*{\dtlneg}[2]{%
+ \FPneg{#1}{#2}%
+}
+\endinput
+%%
+%% End of file `datatool-fp-2019-09-27.sty'.
Property changes on: trunk/Master/texmf-dist/tex/latex/datatool/datatool-fp-2019-09-27.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/datatool/datatool-fp.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/datatool/datatool-fp.def (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/datatool/datatool-fp.def 2025-03-05 21:33:51 UTC (rev 74461)
@@ -0,0 +1,254 @@
+%%
+%% This is file `datatool-fp.def',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% datatool.dtx (with options: `datatool-fp.def,package')
+%%
+%% datatool.dtx
+%% Copyright 2025 Nicola Talbot
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of LaTeX
+%% version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status `maintained'.
+%%
+%% The Current Maintainer of this work is Nicola Talbot.
+%%
+%% This work consists of the files datatool.dtx and datatool.ins and the derived files datatool-base.sty, datatool-undetermined.ldf, datatool-latin1.ldf, datatool-utf8.ldf, datatool-l3fp.def, datatool-lua.def, datatool-fp.def, datatool-fp.sty, datatool-pgfmath.def, datatool-pgfmath.sty, datatool.sty, datagidx.sty, databib.sty, databar.sty, datapie.sty, dataplot.sty, person.sty, databib.bst, databar-2019-09-27.sty, databib-2019-09-27.sty, datagidx-2019-09-27.sty, datapie-2019-09-27.sty, dataplot-2019-09-27.sty, datatool-2019-09-27.sty, datatool-base-2019-09-27.sty, datatool-fp-2019-09-27.sty, datatool-pgfmath-2019-09-27.sty, person-2019-09-27.sty.
+%%
+%% \CharacterTable
+%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+%% Digits \0\1\2\3\4\5\6\7\8\9
+%% Exclamation \! Double quote \" Hash (number) \#
+%% Dollar \$ Percent \% Ampersand \&
+%% Acute accent \' Left paren \( Right paren \)
+%% Asterisk \* Plus \+ Comma \,
+%% Minus \- Point \. Solidus \/
+%% Colon \: Semicolon \; Less than \<
+%% Equals \= Greater than \> Question mark \?
+%% Commercial at \@ Left bracket \[ Backslash \\
+%% Right bracket \] Circumflex \^ Underscore \_
+%% Grave accent \` Left brace \{ Vertical bar \|
+%% Right brace \} Tilde \~}
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesFile{datatool-fp.def}[2025/03/05 v3.0.1 (NLCT)]
+\RequirePackage{fp}
+\ifFPmessages
+ \dtlverbosetrue
+\fi
+\newrobustcmd*{\dtlifnumeq}[4]{%
+ \FPifeq{#1}{#2}%
+ #3%
+ \else
+ #4%
+ \fi
+}
+\newrobustcmd*{\dtlifnumlt}[4]{%
+ \FPiflt{#1}{#2}%
+ #3%
+ \else
+ #4%
+ \fi
+}
+\newrobustcmd*{\dtlifnumgt}[4]{%
+ \FPifgt{#1}{#2}%
+ #3%
+ \else
+ #4%
+ \fi
+}
+\newrobustcmd*{\dtlifnumopenbetween}[5]{%
+ \let\@dtl at dovalue\relax
+ \dtlifnumgt{#1}{#2}%
+ {}%
+ {%
+ \def\@dtl at dovalue{#5}%
+ }%
+ \dtlifnumlt{#1}{#3}%
+ {%
+ \ifx\@dtl at dovalue\relax
+ \def\@dtl at dovalue{#4}%
+ \fi
+ }%
+ {%
+ \def\@dtl at dovalue{#5}%
+ }%
+ \@dtl at dovalue
+}
+\newrobustcmd*{\dtlifnumclosedbetween}[5]{%
+ \let\@dtl at dovalue\relax
+ \dtlifnumgt{#1}{#2}%
+ {}%
+ {%
+ \dtlifnumeq{#1}{#2}%
+ {%
+ \def\@dtl at dovalue{#4}%
+ }%
+ {%
+ \def\@dtl at dovalue{#5}%
+ }%
+ }%
+ \dtlifnumlt{#1}{#3}%
+ {%
+ \ifx\@dtl at dovalue\relax
+ \def\@dtl at dovalue{#4}%
+ \fi
+ }%
+ {%
+ \dtlifnumeq{#1}{#3}%
+ {%
+ \def\@dtl at dovalue{#4}%
+ }%
+ {%
+ \def\@dtl at dovalue{#5}%
+ }%
+ }%
+ \@dtl at dovalue
+}
+\NewDocumentCommand{\dtladd}{mmm}{%
+ \FPadd{#1}{#2}{#3}%
+}
+\NewDocumentCommand{\dtladdall}{mm}{%
+ \def#1{0}%
+ \@for\@dtl at tmp:=#2\do{%
+ \FPadd{#1}{#1}{\@dtl at tmp}%
+ }%
+}
+\NewDocumentCommand{\dtlsub}{mmm}{%
+ \FPsub{#1}{#2}{#3}%
+}
+\NewDocumentCommand{\dtlmul}{mmm}{%
+ \FPmul{#1}{#2}{#3}%
+}
+\NewDocumentCommand{\dtldiv}{mmm}{%
+ \FPdiv{#1}{#2}{#3}%
+}
+\NewDocumentCommand{\dtlsqrt}{mm}{%
+ \FProot{#1}{#2}{2}%
+}
+\NewDocumentCommand{\dtlroot}{mmm}{%
+ \FProot{#1}{#2}{#3}%
+}
+\NewDocumentCommand{\dtlround}{mmm}{%
+ \FPround{#1}{#2}{#3}%
+}
+\NewDocumentCommand{\dtltrunc}{mmm}{%
+ \FPtrunc{#1}{#2}{#3}%
+}
+\NewDocumentCommand{\dtlclip}{mm}{%
+ \FPclip{#1}{#2}%
+}
+\NewDocumentCommand{\dtlmin}{mmm}{%
+ \FPmin{#1}{#2}{#3}%
+}
+\NewDocumentCommand{\dtlminall}{mm}{%
+ \let#1\empty
+ \@for\@dtl at tmp:=#2\do{%
+ \ifx\empty
+ \let#1\@dtl at tmp
+ \else
+ \FPmin#1{#1}{\@dtl at tmp}%
+ \fi
+ }%
+}
+\NewDocumentCommand{\dtlmax}{mmm}{%
+ \FPmax{#1}{#2}{#3}%
+}
+\NewDocumentCommand{\dtlmaxall}{mm}{%
+ \let#1\empty
+ \@for\@dtl at tmp:=#2\do{%
+ \ifx\empty
+ \let#1\@dtl at tmp
+ \else
+ \FPmax#1{#1}{\@dtl at tmp}%
+ \fi
+ }%
+}
+\NewDocumentCommand{\dtlabs}{mm}{%
+ \FPabs{#1}{#2}%
+}
+\NewDocumentCommand{\dtlneg}{mm}{%
+ \FPneg{#1}{#2}%
+}
+\NewDocumentCommand{\dtlmeanforall}{mm}{%
+ \def#1{0}%
+ \count@=0\relax
+ \@for\@dtl at tmp:=#2\do{%
+ \advance\count@ by \@ne
+ \FPadd{#1}{#1}{\@dtl at tmp}%
+ }%
+ \FPdiv{#1}{#1}{\number\count@}%
+}
+\NewDocumentCommand{\dtlvarianceforall}{omm}{%
+ \IfNoValueTF{#1}%
+ {%
+ \def\@dtl at mean{0}%
+ \count@=0\relax
+ \@for\@dtl at tmp:=#3\do{%
+ \advance\count@ by \@ne
+ \FPadd{\@dtl at mean}{\@dtl at mean}{\@dtl at tmp}%
+ }%
+ \FPdiv{\@dtl at mean}{\@dtl at mean}{\number\count@}%
+ \def#2{0}%
+ \@for\@dtl at tmp:=#3\do{%
+ \FPsub{\@dtl at tmp}{\@dtl at tmp}{\@dtl at mean}%
+ \FPmul{\@dtl at tmp}{\@dtl at tmp}{\@dtl at tmp}%
+ \FPadd{#2}{#2}{\@dtl at tmp}%
+ }%
+ \FPdiv{#2}{#2}{\number\count@}%
+ }%
+ {%
+ \def\@dtl at mean{#1}%
+ \count@=0\relax
+ \def#2{0}%
+ \@for\@dtl at tmp:=#3\do{%
+ \advance\count@ by \@ne
+ \FPsub{\@dtl at tmp}{\@dtl at tmp}{\@dtl at mean}%
+ \FPmul{\@dtl at tmp}{\@dtl at tmp}{\@dtl at tmp}%
+ \FPadd{#2}{#2}{\@dtl at tmp}%
+ }%
+ \FPdiv{#2}{#2}{\number\count@}%
+ }%
+}
+\NewDocumentCommand{\dtlsdforall}{omm}{%
+ \IfNoValueTF{#1}%
+ {%
+ \def\@dtl at mean{0}%
+ \count@=0\relax
+ \@for\@dtl at tmp:=#3\do{%
+ \advance\count@ by \@ne
+ \FPadd{\@dtl at mean}{\@dtl at mean}{\@dtl at tmp}%
+ }%
+ \FPdiv{\@dtl at mean}{\@dtl at mean}{\number\count@}%
+ \def#2{0}%
+ \@for\@dtl at tmp:=#3\do{%
+ \FPsub{\@dtl at tmp}{\@dtl at tmp}{\@dtl at mean}%
+ \FPmul{\@dtl at tmp}{\@dtl at tmp}{\@dtl at tmp}%
+ \FPadd{#2}{#2}{\@dtl at tmp}%
+ }%
+ }%
+ {%
+ \def\@dtl at mean{#1}%
+ \count@=0\relax
+ \def#2{0}%
+ \@for\@dtl at tmp:=#3\do{%
+ \advance\count@ by \@ne
+ \FPsub{\@dtl at tmp}{\@dtl at tmp}{\@dtl at mean}%
+ \FPmul{\@dtl at tmp}{\@dtl at tmp}{\@dtl at tmp}%
+ \FPadd{#2}{#2}{\@dtl at tmp}%
+ }%
+ }%
+ \FPdiv{#2}{#2}{\number\count@}%
+ \FProot{#2}{#2}{2}%
+}
+\endinput
+%%
+%% End of file `datatool-fp.def'.
Property changes on: trunk/Master/texmf-dist/tex/latex/datatool/datatool-fp.def
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: trunk/Master/texmf-dist/tex/latex/datatool/datatool-fp.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/datatool/datatool-fp.sty 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/tex/latex/datatool/datatool-fp.sty 2025-03-05 21:33:51 UTC (rev 74461)
@@ -21,7 +21,7 @@
%%
%% The Current Maintainer of this work is Nicola Talbot.
%%
-%% This work consists of the files datatool.dtx and datatool.ins and the derived files datatool-base.sty, datatool-undetermined.ldf, datatool-latin1.ldf, datatool-utf8.ldf, datatool-l3fp.def, datatool-lua.def, datatool-fp.def, datatool-fp.sty, datatool-pgfmath.def, datatool-pgfmath.sty, datatool.sty, datagidx.sty, databib.sty, databar.sty, datapie.sty, dataplot.sty, person.sty, databib.bst.
+%% This work consists of the files datatool.dtx and datatool.ins and the derived files datatool-base.sty, datatool-undetermined.ldf, datatool-latin1.ldf, datatool-utf8.ldf, datatool-l3fp.def, datatool-lua.def, datatool-fp.def, datatool-fp.sty, datatool-pgfmath.def, datatool-pgfmath.sty, datatool.sty, datagidx.sty, databib.sty, databar.sty, datapie.sty, dataplot.sty, person.sty, databib.bst, databar-2019-09-27.sty, databib-2019-09-27.sty, datagidx-2019-09-27.sty, datapie-2019-09-27.sty, dataplot-2019-09-27.sty, datatool-2019-09-27.sty, datatool-base-2019-09-27.sty, datatool-fp-2019-09-27.sty, datatool-pgfmath-2019-09-27.sty, person-2019-09-27.sty.
%%
%% \CharacterTable
%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
@@ -40,8 +40,8 @@
%% Right brace \} Tilde \~}
\NeedsTeXFormat{LaTeX2e}
\DeclareRelease{v2.32}{2019-09-27}{datatool-fp-2019-09-27.sty}
-\DeclareCurrentRelease{v3.0}{2025-03-03}
-\ProvidesPackage{datatool-fp}[2025/03/03 v3.0 (NLCT)]
+\DeclareCurrentRelease{v3.0.1}{2025-03-05}
+\ProvidesPackage{datatool-fp}[2025/03/05 v3.0.1 (NLCT)]
\PackageWarning{datatool-fp}%
{datatool-fp.sty deprecated. Use
\string\usepackage[math=fp]{datatool} instead or
Added: trunk/Master/texmf-dist/tex/latex/datatool/datatool-l3fp.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/datatool/datatool-l3fp.def (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/datatool/datatool-l3fp.def 2025-03-05 21:33:51 UTC (rev 74461)
@@ -0,0 +1,245 @@
+%%
+%% This is file `datatool-l3fp.def',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% datatool.dtx (with options: `datatool-l3fp.def,package')
+%%
+%% datatool.dtx
+%% Copyright 2025 Nicola Talbot
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of LaTeX
+%% version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status `maintained'.
+%%
+%% The Current Maintainer of this work is Nicola Talbot.
+%%
+%% This work consists of the files datatool.dtx and datatool.ins and the derived files datatool-base.sty, datatool-undetermined.ldf, datatool-latin1.ldf, datatool-utf8.ldf, datatool-l3fp.def, datatool-lua.def, datatool-fp.def, datatool-fp.sty, datatool-pgfmath.def, datatool-pgfmath.sty, datatool.sty, datagidx.sty, databib.sty, databar.sty, datapie.sty, dataplot.sty, person.sty, databib.bst, databar-2019-09-27.sty, databib-2019-09-27.sty, datagidx-2019-09-27.sty, datapie-2019-09-27.sty, dataplot-2019-09-27.sty, datatool-2019-09-27.sty, datatool-base-2019-09-27.sty, datatool-fp-2019-09-27.sty, datatool-pgfmath-2019-09-27.sty, person-2019-09-27.sty.
+%%
+%% \CharacterTable
+%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+%% Digits \0\1\2\3\4\5\6\7\8\9
+%% Exclamation \! Double quote \" Hash (number) \#
+%% Dollar \$ Percent \% Ampersand \&
+%% Acute accent \' Left paren \( Right paren \)
+%% Asterisk \* Plus \+ Comma \,
+%% Minus \- Point \. Solidus \/
+%% Colon \: Semicolon \; Less than \<
+%% Equals \= Greater than \> Question mark \?
+%% Commercial at \@ Left bracket \[ Backslash \\
+%% Right bracket \] Circumflex \^ Underscore \_
+%% Grave accent \` Left brace \{ Vertical bar \|
+%% Right brace \} Tilde \~}
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesFile{datatool-l3fp.def}[2025/03/05 v3.0.1 (NLCT)]
+\ExplSyntaxOn
+\newcommand*{\dtlifnumeq}[4]{%
+ \fp_compare:nNnTF { #1 } = { #2 } { #3 } { #4 }
+}
+\newcommand*{\dtlifnumlt}[4]{%
+ \fp_compare:nNnTF { #1 } < { #2 } { #3 } { #4 }
+}
+\newcommand*{\dtlifnumgt}[4]{%
+ \fp_compare:nNnTF { #1 } > { #2 } { #3 } { #4 }
+}
+\newcommand*{\dtlifnumopenbetween}[5]{%
+ \fp_compare:nTF { #2 < #1 < #3 }
+ { #4 } { #5 }
+}
+\newcommand*{\dtlifnumclosedbetween}[5]{%
+ \fp_compare:nTF { #2 <= #1 <= #3 }
+ { #4 } { #5 }
+}
+\NewDocumentCommand \dtladd { m m m }
+{
+ \fp_set:Nn \l__datatool_tmpa_fp { #2 + #3 }
+ \tl_set:Nx #1 { \fp_use:N \l__datatool_tmpa_fp }
+}
+\NewDocumentCommand \dtladdall { m m }
+{
+ \fp_zero:N \l__datatool_tmpa_fp
+ \exp_args:Nx \clist_map_inline:nn { #2 }
+ { \fp_add:Nn \l__datatool_tmpa_fp { ##1 } }
+ \tl_set:Nx #1 { \fp_use:N \l__datatool_tmpa_fp }
+}
+\NewDocumentCommand \dtlsub { m m m }
+{
+ \fp_set:Nn \l__datatool_tmpa_fp { #2 - #3 }
+ \tl_set:Nx #1 { \fp_use:N \l__datatool_tmpa_fp }
+}
+\NewDocumentCommand \dtlmul { m m m }
+{
+ \fp_set:Nn \l__datatool_tmpa_fp { #2 * #3 }
+ \tl_set:Nx #1 { \fp_use:N \l__datatool_tmpa_fp }
+}
+\NewDocumentCommand \dtldiv { m m m }
+{
+ \fp_set:Nn \l__datatool_tmpa_fp { #2 / #3 }
+ \tl_set:Nx #1 { \fp_use:N \l__datatool_tmpa_fp }
+}
+\NewDocumentCommand \dtlsqrt { m m }
+{
+ \fp_set:Nn \l__datatool_tmpa_fp { sqrt ( #2 ) }
+ \tl_set:Nx #1 { \fp_use:N \l__datatool_tmpa_fp }
+}
+\NewDocumentCommand \dtlroot { m m m }
+{
+ \exp_args:Nx \tl_if_eq:nnTF { #3 } { 2 }
+ {
+ \fp_set:Nn \l__datatool_tmpa_fp { sqrt ( #2 ) }
+ \tl_set:Nx #1 { \fp_use:N \l__datatool_tmpa_fp }
+ }
+ {
+ \fp_set:Nn \l__datatool_tmpa_fp { ( #2 ) ^ ( 1 / ( #3 ) ) }
+ \tl_set:Nx #1 { \fp_use:N \l__datatool_tmpa_fp }
+ }
+}
+\NewDocumentCommand \dtlround { m m m }
+{
+ \fp_set:Nn \l__datatool_tmpa_fp { round ( #2, #3 ) }
+ \tl_set:Nx #1 { \fp_to_decimal:N \l__datatool_tmpa_fp }
+ \datatool_pad_trailing_zeros:Nn #1 { #3 }
+}
+\NewDocumentCommand \dtltrunc { m m m }
+{
+ \fp_set:Nn \l__datatool_tmpa_fp { trunc ( #2, #3 ) }
+ \tl_set:Nx #1 { \fp_to_decimal:N \l__datatool_tmpa_fp }
+ \datatool_pad_trailing_zeros:Nn #1 { #3 }
+}
+\NewDocumentCommand \dtlclip { m m }
+{
+ \fp_set:Nn \l__datatool_tmpa_fp { #2 }
+ \tl_set:Nx #1 { \fp_to_decimal:N \l__datatool_tmpa_fp }
+}
+\NewDocumentCommand \dtlmin { m m m }
+{
+ \fp_set:Nn \l__datatool_tmpa_fp { min ( #2, #3 ) }
+ \tl_set:Nx #1 { \fp_use:N \l__datatool_tmpa_fp }
+}
+\NewDocumentCommand \dtlminall { m m }
+{
+ \fp_set:Nn \l__datatool_tmpa_fp { min ( #2 ) }
+ \tl_set:Nx #1 { \fp_use:N \l__datatool_tmpa_fp }
+}
+\NewDocumentCommand \dtlmax { m m m }
+{
+ \fp_set:Nn \l__datatool_tmpa_fp { max ( #2, #3 ) }
+ \tl_set:Nx #1 { \fp_use:N \l__datatool_tmpa_fp }
+}
+\NewDocumentCommand \dtlmaxall { m m }
+{
+ \fp_set:Nn \l__datatool_tmpa_fp { max ( #2 ) }
+ \tl_set:Nx #1 { \fp_use:N \l__datatool_tmpa_fp }
+}
+\NewDocumentCommand \dtlabs { m m }
+{
+ \fp_set:Nn \l__datatool_tmpa_fp { abs ( #2 ) }
+ \tl_set:Nx #1 { \fp_use:N \l__datatool_tmpa_fp }
+}
+\NewDocumentCommand \dtlneg {m m }
+{
+ \fp_set:Nn \l__datatool_tmpa_fp { - ( #2 ) }
+ \tl_set:Nx #1 { \fp_use:N \l__datatool_tmpa_fp }
+}
+\NewDocumentCommand \dtlmeanforall { m m }
+{
+ \fp_zero:N \l__datatool_total_fp
+ \int_zero:N \l__datatool_count_int
+ \exp_args:No \clist_map_inline:nn { #2 }
+ {
+ \int_incr:N \l__datatool_count_int
+ \fp_add:Nn \l__datatool_total_fp { ##1 }
+ }
+ \fp_set:Nn \l__datatool_mean_fp
+ { \l__datatool_total_fp / \l__datatool_count_int }
+ \tl_set:Nx #1 { \fp_use:N \l__datatool_mean_fp }
+}
+\NewDocumentCommand \dtlvarianceforall { o m m }
+{
+ \IfNoValueTF { #1 }
+ {
+ \fp_zero:N \l__datatool_total_fp
+ \int_zero:N \l__datatool_count_int
+ \exp_args:No \clist_map_inline:nn { #3 }
+ {
+ \int_incr:N \l__datatool_count_int
+ \fp_add:Nn \l__datatool_total_fp { ##1 }
+ }
+ \fp_set:Nn \l__datatool_mean_fp
+ { \l__datatool_total_fp / \l__datatool_count_int }
+ \fp_zero:N \l__datatool_total_fp
+ \exp_args:No \clist_map_inline:nn { #3 }
+ {
+ \fp_set:Nn \l__datatool_tmpa_fp
+ { ##1 - \l__datatool_mean_fp }
+ \fp_add:Nn \l__datatool_total_fp
+ { \l__datatool_tmpa_fp * \l__datatool_tmpa_fp }
+ }
+ }
+ {
+ \fp_set:Nn { \l__datatool_mean_fp } { #1 }
+ \fp_zero:N \l__datatool_total_fp
+ \int_zero:N \l__datatool_count_int
+ \exp_args:No \clist_map_inline:nn { #3 }
+ {
+ \int_incr:N \l__datatool_count_int
+ \fp_set:Nn \l__datatool_tmpa_fp
+ { ##1 - \l__datatool_mean_fp }
+ \fp_add:Nn \l__datatool_total_fp
+ { \l__datatool_tmpa_fp * \l__datatool_tmpa_fp }
+ }
+ }
+ \fp_set:Nn \l__datatool_tmpa_fp
+ { \l__datatool_total_fp / \l__datatool_count_int }
+ \tl_set:Nx #2 { \fp_use:N \l__datatool_tmpa_fp }
+}
+\NewDocumentCommand \dtlsdforall { o m m }
+{
+ \IfNoValueTF { #1 }
+ {
+ \fp_zero:N \l__datatool_total_fp
+ \int_zero:N \l__datatool_count_int
+ \exp_args:No \clist_map_inline:nn { #3 }
+ {
+ \int_incr:N \l__datatool_count_int
+ \fp_add:Nn \l__datatool_total_fp { ##1 }
+ }
+ \fp_set:Nn \l__datatool_mean_fp
+ { \l__datatool_total_fp / \l__datatool_count_int }
+ \fp_zero:N \l__datatool_total_fp
+ \exp_args:No \clist_map_inline:nn { #3 }
+ {
+ \fp_set:Nn \l__datatool_tmpa_fp
+ { ##1 - \l__datatool_mean_fp }
+ \fp_add:Nn \l__datatool_total_fp
+ { \l__datatool_tmpa_fp * \l__datatool_tmpa_fp }
+ }
+ }
+ {
+ \fp_set:Nn \l__datatool_mean_fp { #1 }
+ \fp_zero:N \l__datatool_total_fp
+ \int_zero:N \l__datatool_count_int
+ \exp_args:No \clist_map_inline:nn { #3 }
+ {
+ \int_incr:N \l__datatool_count_int
+ \fp_set:Nn \l__datatool_tmpa_fp { ##1 - \l__datatool_mean_fp }
+ \fp_add:Nn \l__datatool_total_fp
+ { \l__datatool_tmpa_fp * \l__datatool_tmpa_fp }
+ }
+ }
+ \fp_set:Nn \l__datatool_tmpa_fp
+ { sqrt ( \l__datatool_total_fp / \l__datatool_count_int ) }
+ \tl_set:Nx #2 { \fp_use:N \l__datatool_tmpa_fp }
+}
+\ExplSyntaxOff
+\endinput
+%%
+%% End of file `datatool-l3fp.def'.
Property changes on: trunk/Master/texmf-dist/tex/latex/datatool/datatool-l3fp.def
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/datatool/datatool-latin1.ldf
===================================================================
--- trunk/Master/texmf-dist/tex/latex/datatool/datatool-latin1.ldf (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/datatool/datatool-latin1.ldf 2025-03-05 21:33:51 UTC (rev 74461)
@@ -0,0 +1,57 @@
+%%
+%% This is file `datatool-latin1.ldf',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% datatool.dtx (with options: `datatool-latin1.ldf,package')
+%%
+%% datatool.dtx
+%% Copyright 2025 Nicola Talbot
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of LaTeX
+%% version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status `maintained'.
+%%
+%% The Current Maintainer of this work is Nicola Talbot.
+%%
+%% This work consists of the files datatool.dtx and datatool.ins and the derived files datatool-base.sty, datatool-undetermined.ldf, datatool-latin1.ldf, datatool-utf8.ldf, datatool-l3fp.def, datatool-lua.def, datatool-fp.def, datatool-fp.sty, datatool-pgfmath.def, datatool-pgfmath.sty, datatool.sty, datagidx.sty, databib.sty, databar.sty, datapie.sty, dataplot.sty, person.sty, databib.bst, databar-2019-09-27.sty, databib-2019-09-27.sty, datagidx-2019-09-27.sty, datapie-2019-09-27.sty, dataplot-2019-09-27.sty, datatool-2019-09-27.sty, datatool-base-2019-09-27.sty, datatool-fp-2019-09-27.sty, datatool-pgfmath-2019-09-27.sty, person-2019-09-27.sty.
+%%
+%% \CharacterTable
+%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+%% Digits \0\1\2\3\4\5\6\7\8\9
+%% Exclamation \! Double quote \" Hash (number) \#
+%% Dollar \$ Percent \% Ampersand \&
+%% Acute accent \' Left paren \( Right paren \)
+%% Asterisk \* Plus \+ Comma \,
+%% Minus \- Point \. Solidus \/
+%% Colon \: Semicolon \; Less than \<
+%% Equals \= Greater than \> Question mark \?
+%% Commercial at \@ Left bracket \[ Backslash \\
+%% Right bracket \] Circumflex \^ Underscore \_
+%% Grave accent \` Left brace \{ Vertical bar \|
+%% Right brace \} Tilde \~}
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesFile{datatool-latin1.ldf}[2025/03/05 v3.0.1 (NLCT)]
+\ExplSyntaxOn
+\datatool_set_currencysign_from_charcode:ne
+ { cent } { "A2 }
+\datatool_set_currencysign_from_charcode:nn
+ { pound } { "A3 }
+\datatool_set_currencysign_from_charcode:nn
+ { currency } { "A4 }
+\datatool_set_currencysign_from_charcode:nn
+ { yen } { "A5 }
+\datatool_set_symbol_from_charcode:nn
+ { middot } { "B7 }
+\ExplSyntaxOff
+\endinput
+%%
+%% End of file `datatool-latin1.ldf'.
Property changes on: trunk/Master/texmf-dist/tex/latex/datatool/datatool-latin1.ldf
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/datatool/datatool-lua.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/datatool/datatool-lua.def (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/datatool/datatool-lua.def 2025-03-05 21:33:51 UTC (rev 74461)
@@ -0,0 +1,230 @@
+%%
+%% This is file `datatool-lua.def',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% datatool.dtx (with options: `datatool-lua.def,package')
+%%
+%% datatool.dtx
+%% Copyright 2025 Nicola Talbot
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of LaTeX
+%% version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status `maintained'.
+%%
+%% The Current Maintainer of this work is Nicola Talbot.
+%%
+%% This work consists of the files datatool.dtx and datatool.ins and the derived files datatool-base.sty, datatool-undetermined.ldf, datatool-latin1.ldf, datatool-utf8.ldf, datatool-l3fp.def, datatool-lua.def, datatool-fp.def, datatool-fp.sty, datatool-pgfmath.def, datatool-pgfmath.sty, datatool.sty, datagidx.sty, databib.sty, databar.sty, datapie.sty, dataplot.sty, person.sty, databib.bst, databar-2019-09-27.sty, databib-2019-09-27.sty, datagidx-2019-09-27.sty, datapie-2019-09-27.sty, dataplot-2019-09-27.sty, datatool-2019-09-27.sty, datatool-base-2019-09-27.sty, datatool-fp-2019-09-27.sty, datatool-pgfmath-2019-09-27.sty, person-2019-09-27.sty.
+%%
+%% \CharacterTable
+%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+%% Digits \0\1\2\3\4\5\6\7\8\9
+%% Exclamation \! Double quote \" Hash (number) \#
+%% Dollar \$ Percent \% Ampersand \&
+%% Acute accent \' Left paren \( Right paren \)
+%% Asterisk \* Plus \+ Comma \,
+%% Minus \- Point \. Solidus \/
+%% Colon \: Semicolon \; Less than \<
+%% Equals \= Greater than \> Question mark \?
+%% Commercial at \@ Left bracket \[ Backslash \\
+%% Right bracket \] Circumflex \^ Underscore \_
+%% Grave accent \` Left brace \{ Vertical bar \|
+%% Right brace \} Tilde \~}
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesFile{datatool-lua.def}[2025/03/05 v3.0.1 (NLCT)]
+\newcommand*{\dtlifnumeq}[4]{%
+ \ifnum\directlua{if #1==#2 then tex.print(1) else tex.print(0) end}=1
+ #3%
+ \else
+ #4%
+ \fi
+}
+\newcommand*{\dtlifnumlt}[4]{%
+ \ifnum\directlua{if #1<#2 then tex.print(1) else tex.print(0) end}=1
+ #3%
+ \else
+ #4%
+ \fi
+}
+\newcommand*{\dtlifnumgt}[4]{%
+ \ifnum\directlua{if #1>#2 then tex.print(1) else tex.print(0) end}=1
+ #3%
+ \else
+ #4%
+ \fi
+}
+\newcommand*{\dtlifnumopenbetween}[5]{%
+ \ifnum\directlua{if #2 < #1 and #1 < #3 then tex.print(1) else tex.print(0) end}=1
+ #4%
+ \else
+ #5%
+ \fi
+}
+\newcommand*{\dtlifnumclosedbetween}[5]{%
+ \ifnum\directlua{if #2 <= #1 and #1 <= #3 then tex.print(1) else tex.print(0) end}=1
+ #4%
+ \else
+ #5%
+ \fi
+}
+\NewDocumentCommand\dtladd{mmm}{%
+ \edef#1{\directlua{ tex.print(#2+(#3)) }}%
+}
+\NewDocumentCommand\dtladdall{mm}{%
+ \edef#1{\directlua{
+ x = 0;
+ array = { #2 };
+ for key,val in ipairs(array) do
+ x = x + val;
+ end
+ tex.print(x);
+ }}%
+}
+\NewDocumentCommand\dtlsub{mmm}{%
+ \edef#1{\directlua{ tex.print(#2-(#3)) }}%
+}
+\NewDocumentCommand\dtlmul{mmm}{%
+ \edef#1{\directlua{ tex.print(#2*#3) }}%
+}
+\NewDocumentCommand\dtldiv{mmm}{%
+ \edef#1{\directlua{ tex.print(#2/#3) }}%
+}
+\NewDocumentCommand\dtlsqrt{mm}{%
+ \edef#1{\directlua{ tex.print(math.sqrt(#2)) }}%
+}
+\NewDocumentCommand\dtlroot{mmm}{%
+ \edef#1{\directlua{ tex.print((#2)^(1/(#3))) }}%
+}
+\NewDocumentCommand\dtlround{mmm}{%
+ \edef#1{"\@percentchar0.\number#3f", #2}%
+ \edef#1{\directlua{ tex.print(string.format(#1)) }}%
+}
+\NewDocumentCommand\dtltrunc{mmm}{%
+ \edef#1{\directlua{
+ local m = 10^(#3);
+ tex.print(string.format("\@percentchar.#3f", math.floor(#2 * m)/m))
+ }}%
+}
+\NewDocumentCommand\dtlclip{mm}{%
+ \edef#1{\directlua{
+ local s = "#2";
+ tex.print(s:match("^(\@percentchar d*\@percentchar.?0?\@percentchar d-)0*$"))
+ }}%
+}
+\NewDocumentCommand\dtlmin{mmm}{%
+ \edef#1{\directlua{tex.print(math.min(#2,#3))}}%
+}
+\NewDocumentCommand\dtlminall{mm}{%
+ \edef#1{\directlua{tex.print(math.min(#2))}}%
+}
+\NewDocumentCommand\dtlmax{mmm}{%
+ \edef#1{\directlua{tex.print(math.max(#2,#3))}}%
+}
+\NewDocumentCommand\dtlmaxall{mm}{%
+ \edef#1{\directlua{tex.print(math.max(#2))}}%
+}
+\NewDocumentCommand\dtlabs{mm}{%
+ \edef#1{\directlua{tex.print(math.abs(#2))}}%
+}
+\NewDocumentCommand\dtlneg{mm}{%
+ \edef#1{\directlua{tex.print(-(#2))}}%
+}
+\NewDocumentCommand\dtlmeanforall{mm}{%
+ \edef#1{\directlua{
+ x = 0;
+ n = 0;
+ array = { #2 };
+ for key,val in ipairs(array) do
+ n = n + 1;
+ x = x + val;
+ end
+ tex.print(x/n);
+ }}%
+}
+\NewDocumentCommand \dtlvarianceforall { o m m }
+{%
+ \IfNoValueTF{#1}%
+ {%
+ \edef#2{\directlua{
+ n = 0;
+ mean = 0;
+ array = { #3 };
+ for key,val in ipairs(array) do
+ n = n + 1;
+ mean = mean + val;
+ end
+ mean = mean / n;
+ variance = 0;
+ for key,val in ipairs(array) do
+ x = val - mean;
+ variance = variance + x * x;
+ end
+ variance = variance / n;
+ tex.print(variance);
+ }}%
+ }%
+ {%
+ \edef#2{\directlua{
+ n = 0;
+ mean = #1;
+ array = { #3 };
+ variance = 0;
+ for key,val in ipairs(array) do
+ n = n + 1;
+ x = val - mean;
+ variance = variance + x * x;
+ end
+ variance = variance / n;
+ tex.print(variance);
+ }}%
+ }%
+}
+\NewDocumentCommand \dtlsdforall { o m m }
+{%
+ \IfNoValueTF{#1}%
+ {%
+ \edef#2{\directlua{
+ n = 0;
+ mean = 0;
+ array = { #3 };
+ for key,val in ipairs(array) do
+ n = n + 1;
+ mean = mean + val;
+ end
+ mean = mean / n;
+ variance = 0;
+ for key,val in ipairs(array) do
+ x = val - mean;
+ variance = variance + x * x;
+ end
+ variance = variance / n;
+ tex.print(math.sqrt(variance));
+ }}%
+ }%
+ {%
+ \edef#2{\directlua{
+ n = 0;
+ mean = #1;
+ array = { #3 };
+ variance = 0;
+ for key,val in ipairs(array) do
+ n = n + 1;
+ x = val - mean;
+ variance = variance + x * x;
+ end
+ variance = variance / n;
+ tex.print(math.sqrt(variance));
+ }}%
+ }%
+}
+\endinput
+%%
+%% End of file `datatool-lua.def'.
Property changes on: trunk/Master/texmf-dist/tex/latex/datatool/datatool-lua.def
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/datatool/datatool-pgfmath-2019-09-27.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/datatool/datatool-pgfmath-2019-09-27.sty (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/datatool/datatool-pgfmath-2019-09-27.sty 2025-03-05 21:33:51 UTC (rev 74461)
@@ -0,0 +1,180 @@
+%%
+%% This is file `datatool-pgfmath-2019-09-27.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% datatool.dtx (with options: `datatool-pgfmath-2019-09-27.sty,package')
+%%
+%% datatool.dtx
+%% Copyright 2025 Nicola Talbot
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of LaTeX
+%% version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status `maintained'.
+%%
+%% The Current Maintainer of this work is Nicola Talbot.
+%%
+%% This work consists of the files datatool.dtx and datatool.ins and the derived files datatool-base.sty, datatool-undetermined.ldf, datatool-latin1.ldf, datatool-utf8.ldf, datatool-l3fp.def, datatool-lua.def, datatool-fp.def, datatool-fp.sty, datatool-pgfmath.def, datatool-pgfmath.sty, datatool.sty, datagidx.sty, databib.sty, databar.sty, datapie.sty, dataplot.sty, person.sty, databib.bst, databar-2019-09-27.sty, databib-2019-09-27.sty, datagidx-2019-09-27.sty, datapie-2019-09-27.sty, dataplot-2019-09-27.sty, datatool-2019-09-27.sty, datatool-base-2019-09-27.sty, datatool-fp-2019-09-27.sty, datatool-pgfmath-2019-09-27.sty, person-2019-09-27.sty.
+%%
+%% \CharacterTable
+%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+%% Digits \0\1\2\3\4\5\6\7\8\9
+%% Exclamation \! Double quote \" Hash (number) \#
+%% Dollar \$ Percent \% Ampersand \&
+%% Acute accent \' Left paren \( Right paren \)
+%% Asterisk \* Plus \+ Comma \,
+%% Minus \- Point \. Solidus \/
+%% Colon \: Semicolon \; Less than \<
+%% Equals \= Greater than \> Question mark \?
+%% Commercial at \@ Left bracket \[ Backslash \\
+%% Right bracket \] Circumflex \^ Underscore \_
+%% Grave accent \` Left brace \{ Vertical bar \|
+%% Right brace \} Tilde \~}
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{datatool-pgfmath}[2019/09/27 v2.32 (NLCT)]
+\RequirePackage{xkeyval}
+\RequirePackage{pgfrcs,pgfkeys,pgfmath}
+\ProcessOptionsX
+\providecommand*{\@dtl at mathprocessor}{pgfmath}
+\newcommand*{\dtlifnumeq}[4]{%
+ \def\@dtl at truepart{#3}%
+ \def\@dtl at falsepart{#4}%
+ \pgfmathifthenelse{\number0#1==\number0#2}%
+ {"\noexpand\@dtl at truepart"}{"\noexpand\@dtl at falsepart"}%
+ \pgfmathresult
+}
+\RequirePackage{datatool-base}[=v2.32]
+\newcommand*{\dtlifnumlt}[4]{%
+ \def\@dtl at truepart{#3}%
+ \def\@dtl at falsepart{#4}%
+ \pgfmathifthenelse{\number0#1 < \number0#2}%
+ {"\noexpand\@dtl at truepart"}{"\noexpand\@dtl at falsepart"}%
+ \pgfmathresult
+}
+\newcommand*{\dtlifnumgt}[4]{%
+ \def\@dtl at truepart{#3}%
+ \def\@dtl at falsepart{#4}%
+ \pgfmathifthenelse{\number0#1 > \number0#2}%
+ {"\noexpand\@dtl at truepart"}{"\noexpand\@dtl at falsepart"}%
+ \pgfmathresult
+}
+\newcommand*{\dtlifnumopenbetween}[5]{%
+ \def\@dtl at truepart{#4}%
+ \def\@dtl at falsepart{#5}%
+ \pgfmathifthenelse
+ {(\number0#2 < \number0#1) && (\number0#1 < \number0#3)}%
+ {"\noexpand\@dtl at truepart"}{"\noexpand\@dtl at falsepart"}%
+ \pgfmathresult
+}
+\newcommand*{\dtlifnumclosedbetween}[5]{%
+ \def\@dtl at truepart{#4}%
+ \def\@dtl at falsepart{#5}%
+ \pgfmathifthenelse
+ {(\number0#2 <= \number0#1) && (\number0#1 <= \number0#3)}
+ {"\noexpand\@dtl at truepart"}{"\noexpand\@dtl at falsepart"}%
+ \pgfmathresult
+}
+\newcommand*{\dtladd}[3]{%
+ \pgfmathadd{#2}{#3}%
+ \let#1\pgfmathresult
+}
+\newcommand*{\dtlsub}[3]{%
+ \pgfmathsubtract{#2}{#3}%
+ \let#1\pgfmathresult
+}
+\newcommand*{\dtlmul}[3]{%
+ \pgfmathmultiply{#2}{#3}%
+ \let#1\pgfmathresult
+}
+\newcommand*{\dtldiv}[3]{%
+ \pgfmathdivide{#2}{#3}%
+ \let#1\pgfmathresult
+}
+\newcommand*{\dtlroot}[2]{%
+ \pgfmathsqrt{#2}%
+ \let#1\pgfmathresult
+}
+\newcommand*{\dtlround}[3]{%
+ \ifnum#3=0\relax
+ \pgfmathparse{int(round(#2))}%
+ \let#1\pgfmathresult
+ \else
+ \pgfmathparse{int(10^#3)}%
+ \let\dtl at tmpshift\pgfmathresult
+ \pgfmathparse{int(floor(#2))}%
+ \let\dtl at int@round\pgfmathresult
+ \pgfmathparse{int(round((#2-\dtl at int@round) * \dtl at tmpshift))}%
+ \@dtl at tmpcount=0\relax
+ \expandafter\@dtl at countdigits\pgfmathresult.\relax
+ \advance\@dtl at tmpcount by -#3\relax
+ \def\@dtl at intpart{}%
+ \def\@dtl at fracpart{}%
+ \expandafter\@dtl at gatherintfrac\pgfmathresult\relax
+ \edef\@dtl at intpart{\number\numexpr\dtl at int@round
+ +\number0\@dtl at intpart}%
+ \edef#1{\@dtl at intpart.\@dtl at fracpart}%
+ \fi
+}
+\newcommand*{\@dtl at gatherintfrac}[1]{%
+ \ifx\relax#1\relax
+ \else
+ \advance\@dtl at tmpcount by -1\relax
+ \ifnum\@dtl at tmpcount<0\relax
+ \edef\@dtl at fracpart{\@dtl at fracpart#1}%
+ \else
+ \edef\@dtl at intpart{\@dtl at intpart#1}%
+ \fi
+ \expandafter\@dtl at gatherintfrac
+ \fi
+}
+\newcommand*{\dtltrunc}[3]{%
+ \ifnum#3=0\relax
+ \pgfmathparse{int(floor(#2))}%
+ \let#1\pgfmathresult
+ \else
+ \pgfmathparse{int(10^#3)}%
+ \let\dtl at tmpshift\pgfmathresult
+ \pgfmathparse{int(floor(#2))}%
+ \let\dtl at int@trunc\pgfmathresult
+ \pgfmathparse{int(floor((#2-\dtl at int@trunc) * \dtl at tmpshift))}%
+ \@dtl at tmpcount=0\relax
+ \expandafter\@dtl at countdigits\pgfmathresult.\relax
+ \advance\@dtl at tmpcount by -#3\relax
+ \def\@dtl at intpart{}%
+ \def\@dtl at fracpart{}%
+ \expandafter\@dtl at gatherintfrac\pgfmathresult\relax
+ \edef\@dtl at intpart{\number\numexpr\dtl at int@trunc
+ +\number0\@dtl at intpart}%
+ \edef#1{\@dtl at intpart.\@dtl at fracpart}%
+ \fi
+}
+\newcommand*{\dtlclip}[2]{%
+ \edef#1{#2}%
+}
+\newcommand*{\dtlmin}[3]{%
+ \pgfmathmin{#2}{#3}%
+ \let#1\pgfmathresult
+}
+\newcommand*{\dtlmax}[3]{%
+ \pgfmathmax{#2}{#3}%
+ \let#1\pgfmathresult
+}
+\newcommand*{\dtlabs}[2]{%
+ \pgfmathabs{#2}%
+ \let#1\pgfmathresult
+}
+\newcommand*{\dtlneg}[2]{%
+ \pgfmathmul{-1}{#2}%
+ \let#1\pgfmathresult
+}
+\endinput
+%%
+%% End of file `datatool-pgfmath-2019-09-27.sty'.
Property changes on: trunk/Master/texmf-dist/tex/latex/datatool/datatool-pgfmath-2019-09-27.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/datatool/datatool-pgfmath.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/datatool/datatool-pgfmath.def (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/datatool/datatool-pgfmath.def 2025-03-05 21:33:51 UTC (rev 74461)
@@ -0,0 +1,323 @@
+%%
+%% This is file `datatool-pgfmath.def',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% datatool.dtx (with options: `datatool-pgfmath.def,package')
+%%
+%% datatool.dtx
+%% Copyright 2025 Nicola Talbot
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of LaTeX
+%% version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status `maintained'.
+%%
+%% The Current Maintainer of this work is Nicola Talbot.
+%%
+%% This work consists of the files datatool.dtx and datatool.ins and the derived files datatool-base.sty, datatool-undetermined.ldf, datatool-latin1.ldf, datatool-utf8.ldf, datatool-l3fp.def, datatool-lua.def, datatool-fp.def, datatool-fp.sty, datatool-pgfmath.def, datatool-pgfmath.sty, datatool.sty, datagidx.sty, databib.sty, databar.sty, datapie.sty, dataplot.sty, person.sty, databib.bst, databar-2019-09-27.sty, databib-2019-09-27.sty, datagidx-2019-09-27.sty, datapie-2019-09-27.sty, dataplot-2019-09-27.sty, datatool-2019-09-27.sty, datatool-base-2019-09-27.sty, datatool-fp-2019-09-27.sty, datatool-pgfmath-2019-09-27.sty, person-2019-09-27.sty.
+%%
+%% \CharacterTable
+%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+%% Digits \0\1\2\3\4\5\6\7\8\9
+%% Exclamation \! Double quote \" Hash (number) \#
+%% Dollar \$ Percent \% Ampersand \&
+%% Acute accent \' Left paren \( Right paren \)
+%% Asterisk \* Plus \+ Comma \,
+%% Minus \- Point \. Solidus \/
+%% Colon \: Semicolon \; Less than \<
+%% Equals \= Greater than \> Question mark \?
+%% Commercial at \@ Left bracket \[ Backslash \\
+%% Right bracket \] Circumflex \^ Underscore \_
+%% Grave accent \` Left brace \{ Vertical bar \|
+%% Right brace \} Tilde \~}
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesFile{datatool-pgfmath.def}[2025/03/05 v3.0.1 (NLCT)]
+\RequirePackage{pgfrcs,pgfkeys,pgfmath}
+\ExplSyntaxOn
+\NewDocumentCommand \dtlifnumeq { m m m m }
+{
+ \def\@dtl at truepart{#3}%
+ \def\@dtl at falsepart{#4}%
+ \exp_args:Nx \pgfmathifthenelse {#1==#2}%
+ {"\exp_not:N \@dtl at truepart"}{"\exp_not:N \@dtl at falsepart"}%
+ \pgfmathresult
+}
+\NewDocumentCommand \dtlifnumlt { m m m m }
+{
+ \def\@dtl at truepart{#3}%
+ \def\@dtl at falsepart{#4}%
+ \exp_args:Nx \pgfmathifthenelse {#1 < #2}%
+ {"\exp_not:N \@dtl at truepart"}{"\exp_not:N \@dtl at falsepart"}%
+ \pgfmathresult
+}
+\NewDocumentCommand \dtlifnumgt { m m m m }
+{
+ \def\@dtl at truepart{#3}%
+ \def\@dtl at falsepart{#4}%
+ \exp_args:Nx \pgfmathifthenelse {#1 > #2}%
+ {"\exp_not:N \@dtl at truepart"}{"\exp_not:N \@dtl at falsepart"}%
+ \pgfmathresult
+}
+\NewDocumentCommand \dtlifnumopenbetween { m m m m m }
+{
+ \dtlifnumlt { #1 } { #3 }
+ { \dtlifnumgt { #1 } { #2 } { #4 } { #5 } }
+ { #5 }
+}
+\NewDocumentCommand \dtlifnumclosedbetween { m m m m m }
+{
+ \dtlifnumlt { #1 } { #2 }
+ { #5 }
+ { \dtlifnumgt { #1 } { #3 } { #5 } { #4 } }
+}
+\NewDocumentCommand \dtladd { m m m }
+{
+ \pgfmathadd{#2}{#3}%
+ \let#1\pgfmathresult
+}
+\NewDocumentCommand \dtladdall { m m }
+{
+ \tl_set:Nn \pgfmathresult { 0 }
+ \exp_args:No \clist_map_inline:nn { #2 }
+ {
+ \pgfmathadd { \pgfmathresult } { ##1 }
+ }
+ \tl_set_eq:NN #1 \pgfmathresult
+}
+\NewDocumentCommand \dtlsub { m m m }
+{
+ \pgfmathsubtract{#2}{#3}%
+ \let#1\pgfmathresult
+}
+\NewDocumentCommand \dtlmul { m m m }
+{%
+ \pgfmathmultiply{#2}{#3}%
+ \let#1\pgfmathresult
+}
+\NewDocumentCommand \dtldiv { m m m }
+{%
+ \pgfmathdivide{#2}{#3}%
+ \let#1\pgfmathresult
+}
+\NewDocumentCommand \dtlsqrt { m m }
+{%
+ \pgfmathsqrt{#2}%
+ \let#1\pgfmathresult
+}
+\NewDocumentCommand \dtlroot { m m m }
+{
+ \exp_args:Nx \tl_if_eq:nnTF { #3 } { 2 }
+ {
+ \exp_args:Nx \pgfmathsqrt { #2 }
+ \let#1\pgfmathresult
+ }
+ {
+ \exp_args:Nxx \pgfmathpow { #2 } { 1 / ( #3 ) }
+ \let#1\pgfmathresult
+ }
+}
+\NewDocumentCommand{\dtlround}{mmm}{%
+ \ifnum#3=0\relax
+ \exp_args:Nx \pgfmathparse { int( round ( #2 ) ) }
+ \let#1\pgfmathresult
+ \else
+ \exp_args:Nx \pgfmathparse { int ( 10 \exp_not:N ^ #3 )}
+ \let\dtl at tmpshift\pgfmathresult
+ \exp_args:Nx \pgfmathparse { int ( floor ( #2 ) ) }%
+ \let\dtl at int@round\pgfmathresult
+ \exp_args:Nx \pgfmathparse
+ { int ( round ( ( #2 - \dtl at int@round ) * \dtl at tmpshift ) ) }
+ \@dtl at tmpcount=0\relax
+ \expandafter\@dtl at countdigits\pgfmathresult.\relax
+ \advance\@dtl at tmpcount by -#3\relax
+ \def\@dtl at intpart{}%
+ \def\@dtl at fracpart{}%
+ \expandafter\@dtl at gatherintfrac\pgfmathresult\relax
+ \tl_if_empty:NT \@dtl at intpart { \tl_set:Nn \@dtl at intpart { 0 } }
+ \edef\@dtl at intpart{\number\numexpr\dtl at int@round + \@dtl at intpart}%
+ \edef#1{\@dtl at intpart.\@dtl at fracpart}%
+ \fi
+}
+\newcommand*{\@dtl at gatherintfrac}[1]{%
+ \ifx\relax#1\relax
+ \else
+ \advance\@dtl at tmpcount by -1\relax
+ \ifnum\@dtl at tmpcount<0\relax
+ \edef\@dtl at fracpart{\@dtl at fracpart#1}%
+ \else
+ \edef\@dtl at intpart{\@dtl at intpart#1}%
+ \fi
+ \expandafter\@dtl at gatherintfrac
+ \fi
+}
+\NewDocumentCommand \dtltrunc { m m m }
+{
+ \ifnum#3=0\relax
+ \exp_args:Nx \pgfmathparse { int ( floor ( #2 ) ) }%
+ \let#1\pgfmathresult
+ \else
+ \exp_args:Nx \pgfmathparse { int ( 10 \exp_not:N ^ #3 ) }
+ \let\dtl at tmpshift\pgfmathresult
+ \exp_args:Nx \pgfmathparse { int ( floor ( #2 ) ) }
+ \let\dtl at int@trunc\pgfmathresult
+ \exp_args:Nx \pgfmathparse
+ { int ( floor ( ( #2 - \dtl at int@trunc ) * \dtl at tmpshift ) ) }
+ \@dtl at tmpcount=0\relax
+ \expandafter\@dtl at countdigits\pgfmathresult.\relax
+ \advance\@dtl at tmpcount by -#3\relax
+ \def\@dtl at intpart{}%
+ \def\@dtl at fracpart{}%
+ \expandafter\@dtl at gatherintfrac\pgfmathresult\relax
+ \tl_if_empty:NT \@dtl at intpart { \tl_set:Nn \@dtl at intpart { 0 } }
+ \edef\@dtl at intpart{\number\numexpr\dtl at int@trunc
+ + \@dtl at intpart}%
+ \edef#1{\@dtl at intpart.\@dtl at fracpart}%
+ \fi
+}
+\NewDocumentCommand \dtlclip { m m }
+{
+ \fp_set:Nn { \l__datatool_tmpa_fp } { #2 }
+ \tl_set:Nx #1 { \fp_use:N { \l__datatool_tmpa_fp } }
+}
+\NewDocumentCommand \dtlmin { m m m }
+{
+ \exp_args:Nxx \pgfmathmin { #2 } { #3 }
+ \let#1\pgfmathresult
+}
+\NewDocumentCommand \dtlminall { m m }
+{
+ \exp_args:Nx \pgfmathmin { #2 } { }
+ \let#1\pgfmathresult
+}
+\NewDocumentCommand \dtlmax { m m m }
+{
+ \exp_args:Nx \pgfmathmax { #2 } { #3 }
+ \let#1\pgfmathresult
+}
+\NewDocumentCommand \dtlmaxall { m m }
+{
+ \exp_args:Nx \pgfmathmax { #2 } { }
+ \let#1\pgfmathresult
+}
+\NewDocumentCommand \dtlabs { m m }
+{
+ \exp_args:Nx \pgfmathabs { #2 }
+ \let#1\pgfmathresult
+}
+\NewDocumentCommand \dtlneg { m m }
+{
+ \exp_args:Nx \pgfmathneg { #2 }
+ \let#1\pgfmathresult
+}
+\NewDocumentCommand \dtlmeanforall { m m }
+{
+ \tl_set:Nn \pgfmathresult { 0 }
+ \int_zero:N \l__datatool_count_int
+ \exp_args:No \clist_map_inline:nn { #2 }
+ {
+ \int_incr:N \l__datatool_count_int
+ \exp_args:Nxx \pgfmathadd { \pgfmathresult } { ##1 }
+ }
+ \exp_args:Nxx \pgfmathdivide
+ { \pgfmathresult }
+ { \int_use:N \l__datatool_count_int }
+ \tl_set_eq:NN #1 \pgfmathresult
+}
+\NewDocumentCommand {\dtlvarianceforall} { o m m }
+{%
+ \IfNoValueTF { #1 }
+ {
+ \tl_set:Nn \pgfmathresult { 0 }
+ \int_zero:N \l__datatool_count_int
+ \exp_args:No \clist_map_inline:nn { #3 }
+ {
+ \int_incr:N \l__datatool_count_int
+ \exp_args:Nxx \pgfmathadd { \pgfmathresult } { ##1 }
+ }
+ \exp_args:Nxx \pgfmathdivide
+ { \pgfmathresult }
+ { \int_use:N \l__datatool_count_int }
+ \tl_set_eq:NN \@dtl at mean \pgfmathresult
+ \tl_set:Nn #2 { 0 }
+ \exp_args:No \clist_map_inline:nn { #3 }
+ {
+ \exp_args:Nxx \pgfmathsubtract { ##1 } { \@dtl at mean }
+ \exp_args:Nxx \pgfmathmultiply { \pgfmathresult } { \pgfmathresult }
+ \exp_args:Nxx \pgfmathadd { #2 } { \pgfmathresult }
+ \tl_set_eq:NN #2 \pgfmathresult
+ }
+ }
+ {
+ \tl_set:Nx \@dtl at mean { #1 }
+ \int_zero:N \l__datatool_count_int
+ \tl_set:Nn #2 { 0 }
+ \exp_args:No \clist_map_inline:nn { #3 }
+ {
+ \int_incr:N \l__datatool_count_int
+ \exp_args:Nxx \pgfmathsubtract { ##1 } { \@dtl at mean }
+ \exp_args:Nxx \pgfmathmultiply
+ { \pgfmathresult } { \pgfmathresult }
+ \exp_args:Nxx \pgfmathadd { #2 } { \pgfmathresult }
+ \tl_set_eq:NN #2 \pgfmathresult
+ }
+ }
+ \exp_args:Nxx \pgfmathdivide
+ { #2 }
+ { \int_use:N \l__datatool_count_int }
+ \tl_set_eq:NN #2 \pgfmathresult
+}
+\NewDocumentCommand{\dtlsdforall} { o m m }
+{%
+ \IfNoValueTF{#1}%
+ {%
+ \tl_set:Nn \pgfmathresult { 0 }
+ \int_zero:N \l__datatool_count_int
+ \exp_args:No \clist_map_inline:nn { #3 }
+ {
+ \int_incr:N \l__datatool_count_int
+ \exp_args:Nxx \pgfmathadd { \pgfmathresult } { ##1 }
+ }
+ \exp_args:Nxx \pgfmathdivide
+ { \pgfmathresult }
+ { \int_use:N \l__datatool_count_int }
+ \tl_set_eq:NN \@dtl at mean \pgfmathresult
+ \tl_set:Nn #2 { 0 }
+ \exp_args:No \clist_map_inline:nn { #3 }
+ {
+ \exp_args:Nxx \pgfmathsubtract { ##1 } { \@dtl at mean }
+ \exp_args:Nxx \pgfmathmultiply { \pgfmathresult } { \pgfmathresult }
+ \exp_args:Nxx \pgfmathadd { #2 } { \pgfmathresult }
+ \tl_set_eq:NN #2 \pgfmathresult
+ }
+ }
+ {
+ \tl_set:Nn \@dtl at mean { #1 }
+ \int_zero:N \l__datatool_count_int
+ \tl_set:Nn #2 { 0 }
+ \exp_args:No \clist_map_inline:nn { #3 }
+ {
+ \int_incr:N \l__datatool_count_int
+ \exp_args:Nxx \pgfmathsubtract { ##1 } { \@dtl at mean }
+ \exp_args:Nxx \pgfmathmultiply
+ { \pgfmathresult } { \pgfmathresult }
+ \exp_args:Nxx \pgfmathadd { #2 } { \pgfmathresult }
+ \tl_set_eq:NN #2 \pgfmathresult
+ }
+ }
+ \exp_args:Nxx \pgfmathdivide
+ { #2 } { \int_use:N \l__datatool_count_int }
+ \exp_args:Nx \pgfmathsqrt { \pgfmathresult }
+ \tl_set_eq:NN #2 \pgfmathresult
+}
+\ExplSyntaxOff
+\endinput
+%%
+%% End of file `datatool-pgfmath.def'.
Property changes on: trunk/Master/texmf-dist/tex/latex/datatool/datatool-pgfmath.def
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: trunk/Master/texmf-dist/tex/latex/datatool/datatool-pgfmath.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/datatool/datatool-pgfmath.sty 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/tex/latex/datatool/datatool-pgfmath.sty 2025-03-05 21:33:51 UTC (rev 74461)
@@ -21,7 +21,7 @@
%%
%% The Current Maintainer of this work is Nicola Talbot.
%%
-%% This work consists of the files datatool.dtx and datatool.ins and the derived files datatool-base.sty, datatool-undetermined.ldf, datatool-latin1.ldf, datatool-utf8.ldf, datatool-l3fp.def, datatool-lua.def, datatool-fp.def, datatool-fp.sty, datatool-pgfmath.def, datatool-pgfmath.sty, datatool.sty, datagidx.sty, databib.sty, databar.sty, datapie.sty, dataplot.sty, person.sty, databib.bst.
+%% This work consists of the files datatool.dtx and datatool.ins and the derived files datatool-base.sty, datatool-undetermined.ldf, datatool-latin1.ldf, datatool-utf8.ldf, datatool-l3fp.def, datatool-lua.def, datatool-fp.def, datatool-fp.sty, datatool-pgfmath.def, datatool-pgfmath.sty, datatool.sty, datagidx.sty, databib.sty, databar.sty, datapie.sty, dataplot.sty, person.sty, databib.bst, databar-2019-09-27.sty, databib-2019-09-27.sty, datagidx-2019-09-27.sty, datapie-2019-09-27.sty, dataplot-2019-09-27.sty, datatool-2019-09-27.sty, datatool-base-2019-09-27.sty, datatool-fp-2019-09-27.sty, datatool-pgfmath-2019-09-27.sty, person-2019-09-27.sty.
%%
%% \CharacterTable
%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
@@ -40,8 +40,8 @@
%% Right brace \} Tilde \~}
\NeedsTeXFormat{LaTeX2e}
\DeclareRelease{v2.32}{2019-09-27}{datatool-pgfmath-2019-09-27.sty}
-\DeclareCurrentRelease{v3.0}{2025-03-03}
-\ProvidesPackage{datatool-pgfmath}[2025/03/03 v3.0 (NLCT)]
+\DeclareCurrentRelease{v3.0.1}{2025-03-05}
+\ProvidesPackage{datatool-pgfmath}[2025/03/05 v3.0.1 (NLCT)]
\PackageWarning{datatool-pgfmath}%
{datatool-pgfmath.sty deprecated. Use
\string\usepackage[math=pgfmath]{datatool} instead or
Added: trunk/Master/texmf-dist/tex/latex/datatool/datatool-undetermined.ldf
===================================================================
--- trunk/Master/texmf-dist/tex/latex/datatool/datatool-undetermined.ldf (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/datatool/datatool-undetermined.ldf 2025-03-05 21:33:51 UTC (rev 74461)
@@ -0,0 +1,52 @@
+%%
+%% This is file `datatool-undetermined.ldf',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% datatool.dtx (with options: `datatool-undetermined.ldf,package')
+%%
+%% datatool.dtx
+%% Copyright 2025 Nicola Talbot
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of LaTeX
+%% version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status `maintained'.
+%%
+%% The Current Maintainer of this work is Nicola Talbot.
+%%
+%% This work consists of the files datatool.dtx and datatool.ins and the derived files datatool-base.sty, datatool-undetermined.ldf, datatool-latin1.ldf, datatool-utf8.ldf, datatool-l3fp.def, datatool-lua.def, datatool-fp.def, datatool-fp.sty, datatool-pgfmath.def, datatool-pgfmath.sty, datatool.sty, datagidx.sty, databib.sty, databar.sty, datapie.sty, dataplot.sty, person.sty, databib.bst, databar-2019-09-27.sty, databib-2019-09-27.sty, datagidx-2019-09-27.sty, datapie-2019-09-27.sty, dataplot-2019-09-27.sty, datatool-2019-09-27.sty, datatool-base-2019-09-27.sty, datatool-fp-2019-09-27.sty, datatool-pgfmath-2019-09-27.sty, person-2019-09-27.sty.
+%%
+%% \CharacterTable
+%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+%% Digits \0\1\2\3\4\5\6\7\8\9
+%% Exclamation \! Double quote \" Hash (number) \#
+%% Dollar \$ Percent \% Ampersand \&
+%% Acute accent \' Left paren \( Right paren \)
+%% Asterisk \* Plus \+ Comma \,
+%% Minus \- Point \. Solidus \/
+%% Colon \: Semicolon \; Less than \<
+%% Equals \= Greater than \> Question mark \?
+%% Commercial at \@ Left bracket \[ Backslash \\
+%% Right bracket \] Circumflex \^ Underscore \_
+%% Grave accent \` Left brace \{ Vertical bar \|
+%% Right brace \} Tilde \~}
+\TrackLangProvidesResource{undetermined}[2025/03/05 v3.0.1]
+\ExplSyntaxOn
+\newcommand \DTLundLocaleHook
+ {
+ \DTLresetLanguage
+ \tl_set:Nn \l_datatool_current_language_tl { und }
+ }
+\ExplSyntaxOff
+\TrackLangAddToCaptions{\DTLundLocaleHook}
+\endinput
+%%
+%% End of file `datatool-undetermined.ldf'.
Property changes on: trunk/Master/texmf-dist/tex/latex/datatool/datatool-undetermined.ldf
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/datatool/datatool-utf8.ldf
===================================================================
--- trunk/Master/texmf-dist/tex/latex/datatool/datatool-utf8.ldf (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/datatool/datatool-utf8.ldf 2025-03-05 21:33:51 UTC (rev 74461)
@@ -0,0 +1,88 @@
+%%
+%% This is file `datatool-utf8.ldf',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% datatool.dtx (with options: `datatool-utf8.ldf,package')
+%%
+%% datatool.dtx
+%% Copyright 2025 Nicola Talbot
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of LaTeX
+%% version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status `maintained'.
+%%
+%% The Current Maintainer of this work is Nicola Talbot.
+%%
+%% This work consists of the files datatool.dtx and datatool.ins and the derived files datatool-base.sty, datatool-undetermined.ldf, datatool-latin1.ldf, datatool-utf8.ldf, datatool-l3fp.def, datatool-lua.def, datatool-fp.def, datatool-fp.sty, datatool-pgfmath.def, datatool-pgfmath.sty, datatool.sty, datagidx.sty, databib.sty, databar.sty, datapie.sty, dataplot.sty, person.sty, databib.bst, databar-2019-09-27.sty, databib-2019-09-27.sty, datagidx-2019-09-27.sty, datapie-2019-09-27.sty, dataplot-2019-09-27.sty, datatool-2019-09-27.sty, datatool-base-2019-09-27.sty, datatool-fp-2019-09-27.sty, datatool-pgfmath-2019-09-27.sty, person-2019-09-27.sty.
+%%
+%% \CharacterTable
+%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+%% Digits \0\1\2\3\4\5\6\7\8\9
+%% Exclamation \! Double quote \" Hash (number) \#
+%% Dollar \$ Percent \% Ampersand \&
+%% Acute accent \' Left paren \( Right paren \)
+%% Asterisk \* Plus \+ Comma \,
+%% Minus \- Point \. Solidus \/
+%% Colon \: Semicolon \; Less than \<
+%% Equals \= Greater than \> Question mark \?
+%% Commercial at \@ Left bracket \[ Backslash \\
+%% Right bracket \] Circumflex \^ Underscore \_
+%% Grave accent \` Left brace \{ Vertical bar \|
+%% Right brace \} Tilde \~}
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesFile{datatool-utf8.ldf}[2025/03/05 v3.0.1 (NLCT)]
+\ExplSyntaxOn
+\datatool_set_currencysign:nn { cent } { ¢ }
+\datatool_set_currencysign:nn { pound } { £ }
+\datatool_set_currencysign:nn { currency } { ¤ }
+\datatool_set_currencysign:nn { yen } { ¥ }
+\datatool_set_symbol:nn { middot } { · }
+\datatool_set_currencysign:nn { florin } { ƒ }
+\datatool_set_currencysign:nn { baht } { ฿ }
+\datatool_set_currencysign:nn { ecu } { ₠ }
+\datatool_set_currencysign:nn { colonsign } { ₡ }
+\datatool_set_currencysign:nn { cruzerio } { ₢ }
+\datatool_set_currencysign:nn { frenchfranc } { ₣ }
+\datatool_set_currencysign:nn { lira } { ₤ }
+\datatool_set_currencysign:nn { mill } { ₥ }
+\datatool_set_currencysign:nn { naira } { ₦ }
+\datatool_set_currencysign:nn { peseta } { ₧ }
+\datatool_set_currencysign:nn { rupee } { ₨ }
+\datatool_set_currencysign:nn { won } { ₩ }
+\datatool_set_currencysign:nn { shekel } { ₪ }
+\datatool_set_currencysign:nn { dong } { ₫ }
+\datatool_set_currencysign:nn { euro } { € }
+\datatool_set_currencysign:nn { kip } { ₭ }
+\datatool_set_currencysign:nn { tugrik } { ₮ }
+\datatool_set_currencysign:nn { drachma } { ₯ }
+\datatool_set_currencysign:nn { germanpenny } { ₰ }
+\datatool_set_currencysign:nn { peso } { ₱ }
+\datatool_set_currencysign:nn { guarani } { ₲ }
+\datatool_set_currencysign:nn { austral } { ₳ }
+\datatool_set_currencysign:nn { hryvnia } { ₴ }
+\datatool_set_currencysign:nn { cedi } { ₵ }
+\datatool_set_currencysign:nn { livretournois } { ₶ }
+\datatool_set_currencysign:nn { spesmilo } { Sm }
+\datatool_set_currencysign:nn { tenge } { ₸ }
+\datatool_set_currencysign:nn { indianrupee } { ₹ }
+\datatool_set_currencysign:nn { turkishlira } { ₺ }
+\datatool_set_currencysign:nn { nordicmark } { ₻ }
+\datatool_set_currencysign:nn { manat } { ₼ }
+\datatool_set_currencysign:nn { ruble } { ₽ }
+\datatool_set_currencysign:nn { lari } { ₾ }
+\datatool_set_currencysign:nn { bitcoin } { ₿ }
+\datatool_set_currencysign:nn { som } { ⃀ }
+\regex_set:Nn \l_datatool_apos_regex { \' | ’ }
+\ExplSyntaxOff
+\endinput
+%%
+%% End of file `datatool-utf8.ldf'.
Property changes on: trunk/Master/texmf-dist/tex/latex/datatool/datatool-utf8.ldf
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: trunk/Master/texmf-dist/tex/latex/datatool/datatool.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/datatool/datatool.sty 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/tex/latex/datatool/datatool.sty 2025-03-05 21:33:51 UTC (rev 74461)
@@ -21,7 +21,7 @@
%%
%% The Current Maintainer of this work is Nicola Talbot.
%%
-%% This work consists of the files datatool.dtx and datatool.ins and the derived files datatool-base.sty, datatool-undetermined.ldf, datatool-latin1.ldf, datatool-utf8.ldf, datatool-l3fp.def, datatool-lua.def, datatool-fp.def, datatool-fp.sty, datatool-pgfmath.def, datatool-pgfmath.sty, datatool.sty, datagidx.sty, databib.sty, databar.sty, datapie.sty, dataplot.sty, person.sty, databib.bst.
+%% This work consists of the files datatool.dtx and datatool.ins and the derived files datatool-base.sty, datatool-undetermined.ldf, datatool-latin1.ldf, datatool-utf8.ldf, datatool-l3fp.def, datatool-lua.def, datatool-fp.def, datatool-fp.sty, datatool-pgfmath.def, datatool-pgfmath.sty, datatool.sty, datagidx.sty, databib.sty, databar.sty, datapie.sty, dataplot.sty, person.sty, databib.bst, databar-2019-09-27.sty, databib-2019-09-27.sty, datagidx-2019-09-27.sty, datapie-2019-09-27.sty, dataplot-2019-09-27.sty, datatool-2019-09-27.sty, datatool-base-2019-09-27.sty, datatool-fp-2019-09-27.sty, datatool-pgfmath-2019-09-27.sty, person-2019-09-27.sty.
%%
%% \CharacterTable
%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
@@ -40,8 +40,8 @@
%% Right brace \} Tilde \~}
\NeedsTeXFormat{LaTeX2e}
\DeclareRelease{v2.32}{2019-09-27}{datatool-2019-09-27.sty}
-\DeclareCurrentRelease{v3.0}{2025-03-03}
-\ProvidesPackage{datatool}[2025/03/03 v3.0 (NLCT)]
+\DeclareCurrentRelease{v3.0.1}{2025-03-05}
+\ProvidesPackage{datatool}[2025/03/05 v3.0.1 (NLCT)]
\RequirePackage{ifthen}
\RequirePackage{xfor}
\RequirePackage{etoolbox}
Added: trunk/Master/texmf-dist/tex/latex/datatool/person-2019-09-27.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/datatool/person-2019-09-27.sty (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/datatool/person-2019-09-27.sty 2025-03-05 21:33:51 UTC (rev 74461)
@@ -0,0 +1,633 @@
+%%
+%% This is file `person-2019-09-27.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% datatool.dtx (with options: `person-2019-09-27.sty,package')
+%%
+%% datatool.dtx
+%% Copyright 2025 Nicola Talbot
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of LaTeX
+%% version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status `maintained'.
+%%
+%% The Current Maintainer of this work is Nicola Talbot.
+%%
+%% This work consists of the files datatool.dtx and datatool.ins and the derived files datatool-base.sty, datatool-undetermined.ldf, datatool-latin1.ldf, datatool-utf8.ldf, datatool-l3fp.def, datatool-lua.def, datatool-fp.def, datatool-fp.sty, datatool-pgfmath.def, datatool-pgfmath.sty, datatool.sty, datagidx.sty, databib.sty, databar.sty, datapie.sty, dataplot.sty, person.sty, databib.bst, databar-2019-09-27.sty, databib-2019-09-27.sty, datagidx-2019-09-27.sty, datapie-2019-09-27.sty, dataplot-2019-09-27.sty, datatool-2019-09-27.sty, datatool-base-2019-09-27.sty, datatool-fp-2019-09-27.sty, datatool-pgfmath-2019-09-27.sty, person-2019-09-27.sty.
+%%
+%% \CharacterTable
+%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+%% Digits \0\1\2\3\4\5\6\7\8\9
+%% Exclamation \! Double quote \" Hash (number) \#
+%% Dollar \$ Percent \% Ampersand \&
+%% Acute accent \' Left paren \( Right paren \)
+%% Asterisk \* Plus \+ Comma \,
+%% Minus \- Point \. Solidus \/
+%% Colon \: Semicolon \; Less than \<
+%% Equals \= Greater than \> Question mark \?
+%% Commercial at \@ Left bracket \[ Backslash \\
+%% Right bracket \] Circumflex \^ Underscore \_
+%% Grave accent \` Left brace \{ Vertical bar \|
+%% Right brace \} Tilde \~}
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{person}[2019/09/27 v2.32 (NLCT)]
+\RequirePackage{ifthen}
+\RequirePackage{datatool}[=v2.32]
+\newcounter{people}
+\newcounter{person}
+\newcommand*{\@people at list}{,}
+\newcommand*{\@get at firstperson}[1]{%
+ \expandafter\@@get at firstperson\@people at list,\@nil{#1}}
+ \def\@@get at firstperson,#1,#2\@nil#3{%
+ \def#3{#1}%
+}
+\newcommand*{\malelabels}{male,Male,MALE,M,m}
+\newcommand*{\addmalelabel}[1]{%
+ \expandafter\@dtl at toksA\expandafter{\malelabels}%
+ \expandafter\@dtl at toksB\expandafter{#1}%
+ \edef\malelabels{\the\@dtl at toksA,\the\@dtl at toksB}%
+}
+\newcommand*{\addfemalelabel}[1]{%
+ \expandafter\@dtl at toksA\expandafter{\femalelabels}%
+ \expandafter\@dtl at toksB\expandafter{#1}%
+ \edef\femalelabels{\the\@dtl at toksA,\the\@dtl at toksB}%
+}
+\newcommand*{\femalelabels}{female,Female,FEMALE,F,f}
+\newcommand{\ifmalelabel}[3]{%
+ \expandafter\DTLifinlist\expandafter{#1}{\malelabels}{#2}{#3}%
+}
+\newcommand{\iffemalelabel}[3]{%
+ \expandafter\DTLifinlist\expandafter{#1}{\femalelabels}{#2}{#3}%
+}
+\newcommand*{\newperson}[4][anon]{%
+ \@ifundefined{person@#1 at name}%
+ {%
+ \ifmalelabel{#4}%
+ {%
+ \expandafter\gdef\csname person@#1 at gender\endcsname{male}%
+ }%
+ {%
+ \iffemalelabel{#4}%
+ {%
+ \expandafter\gdef\csname person@#1 at gender\endcsname{female}%
+ }%
+ {%
+ \PackageError{person}{Unknown gender `#4' for person
+ `#1'}{Allowed gender labels are: \malelabels\space or
+ \femalelabels}%
+ \@namedef{person@#1 at gender}{other}%
+ }%
+ }%
+ \expandafter
+ \protected at xdef\csname person@#1 at fullname\endcsname{#2}%
+ \expandafter
+ \protected at xdef\csname person@#1 at name\endcsname{#3}%
+ \protected at xdef\@people at list{\@people at list#1,}%
+ \stepcounter{people}%
+ }%
+ {%
+ \PackageError{person}{Person `#1' has already been defined}{}%
+ }%
+}
+\newcommand*{\removeperson}[1][anon]{%
+ \edef\@person at label{#1}%
+ \expandafter\@removeperson\expandafter{\@person at label}%
+}
+\newcommand*{\@removeperson}[1]{%
+ \ifpersonexists{#1}%
+ {%
+ \def\@remove at person##1,#1,##2\@nil{%
+ \def\@prsn at pre{##1}\def\@prsn at post{##2}}%
+ \expandafter\@remove at person\@people at list\@nil
+ \xdef\@people at list{\@prsn at pre,\@prsn at post}%
+ \addtocounter{people}{-1}%
+ \expandafter\global\expandafter
+ \let\csname person@#1 at name\endcsname\undefined
+ \expandafter\global\expandafter
+ \let\csname person@#1 at fullname\endcsname\undefined
+ \expandafter\global\expandafter
+ \let\csname person@#1 at gender\endcsname\undefined
+ }%
+ {%
+ \PackageError{person}{Can't remove person `#1': no such
+ person}{}%
+ }%
+}
+\newcommand*{\removepeople}[1]{%
+ \@for\@thisperson:=#1\do{%
+ \ifx\@thisperson\@empty
+ \else
+ \expandafter\removeperson\expandafter[\@thisperson]%
+ \fi
+ }%
+}
+\newcommand*{\removeallpeople}{%
+ \@for\@thisperson:=\@people at list\do{%
+ \expandafter\global\expandafter
+ \let\csname person@\@thisperson @name\endcsname\undefined
+ \expandafter\global\expandafter
+ \let\csname person@\@thisperson @fullname\endcsname\undefined
+ \expandafter\global\expandafter
+ \let\csname person@\@thisperson @gender\endcsname\undefined
+ }%
+ \setcounter{people}{0}%
+ \gdef\@people at list{,}%
+}
+\newcommand{\ifpersonexists}[3]{%
+ \@ifundefined{person@#1 at name}{#3}{#2}%
+}
+\newcommand{\ifmale}[3]{%
+ \ifpersonexists{#1}%
+ {%
+ \edef\@gender{\csname person@#1 at gender\endcsname}%
+ \ifx\@gender\@male at label
+ #2%
+ \else
+ #3%
+ \fi
+ }%
+ {%
+ \PackageError{person}{Person `#1' doesn't exist.}{}%
+ }%
+}
+\def\@male at label{male}
+\newcommand{\ifallmale}[3][\@people at list]{%
+ \@for\@thisperson:=#1\do{%
+ \ifpersonexists{\@thisperson}%
+ {%
+ \edef\@gender{\csname person@\@thisperson @gender\endcsname}%
+ \ifx\@gender\@male at label
+ \else
+ \@endfortrue
+ \fi
+ }%
+ {%
+ \PackageError{person}{Person `#1' doesn't exist.}{}%
+ }%
+ }%
+ \if at endfor
+ #3%
+ \else
+ #2%
+ \fi
+}
+\newcommand{\iffemale}[3]{%
+ \ifpersonexists{#1}%
+ {%
+ \edef\@gender{\csname person@#1 at gender\endcsname}%
+ \ifx\@gender\@female at label
+ #2%
+ \else
+ #3%
+ \fi
+ }%
+ {%
+ \PackageError{person}{Person `#1' doesn't exist.}{}%
+ }%
+}
+\def\@female at label{female}
+\newcommand{\ifallfemale}[3][\@people at list]{%
+ \@for\@thisperson:=#1\do{%
+ \edef\@gender{\csname person@\@thisperson @gender\endcsname}%
+ \ifx\@gender\@female at label
+ \else
+ \@endfortrue
+ \fi
+ }%
+ \if at endfor
+ #3%
+ \else
+ #2%
+ \fi
+}
+\def\foreachperson(#1,#2,#3,#4)#5{%
+ \ifx#5\in
+ \def\@do at foreachperson{\@foreachperson(#1,#2,#3,#4)#5}%
+ \else
+ \def\@do at foreachperson{%
+ \@foreachperson(#1,#2,#3,#4)\in\@people at list#5}%
+ \fi
+ \@do at foreachperson
+}
+\long\def\@foreachperson(#1,#2,#3,#4)\in#5\do#6{%
+ \@for#4:=#5\do{%
+ \ifx#4\@empty
+ \else
+ \ifpersonexists{#4}%
+ {%
+ \expandafter
+ \let\expandafter#1\csname person@#4 at name\endcsname
+ \expandafter
+ \let\expandafter#2\csname person@#4 at fullname\endcsname
+ \expandafter
+ \let\expandafter#3\csname person@#4 at gender\endcsname
+ \ifx#3\@male at label
+ \let#3\malename
+ \else
+ \ifx#3\@female at label
+ \let#3\femalename
+ \fi
+ \fi
+ #6%
+ }%
+ {%
+ \PackageError{person}{Person `#4' doesn't exist}{}%
+ }%
+ \fi
+ }%
+}
+\newcommand*{\malepronoun}{he}
+\newcommand*{\femalepronoun}{she}
+\newcommand*{\pluralpronoun}{they}
+\newcommand*{\maleobjpronoun}{him}
+\newcommand*{\femaleobjpronoun}{her}
+\newcommand*{\pluralobjpronoun}{them}
+\newcommand*{\malepossadj}{his}
+\newcommand*{\femalepossadj}{her}
+\newcommand*{\pluralpossadj}{their}
+\newcommand*{\maleposspronoun}{his}
+\newcommand*{\femaleposspronoun}{hers}
+\newcommand*{\pluralposspronoun}{theirs}
+\newcommand*{\malechild}{son}
+\newcommand*{\femalechild}{daughter}
+\newcommand*{\pluralchild}{children}
+\newcommand*{\malechildren}{sons}
+\newcommand*{\femalechildren}{daughters}
+\newcommand*{\maleparent}{father}
+\newcommand*{\femaleparent}{mother}
+\newcommand*{\pluralparent}{parents}
+\newcommand*{\malesibling}{brother}
+\newcommand*{\femalesibling}{sister}
+\newcommand*{\pluralsibling}{siblings}
+\newcommand*{\malesiblings}{brothers}
+\newcommand*{\femalesiblings}{sisters}
+\providecommand*{\andname}{and}
+\newcommand*{\malename}{male}
+\newcommand*{\femalename}{female}
+\newcommand*{\personsep}{, }
+\newcommand*{\personlastsep}{\space\andname\space}
+\newcommand*{\twopeoplesep}{\space\andname\space}
+\newcommand*{\personfullname}[1][anon]{%
+ \@ifundefined{person@#1 at fullname}%
+ {%
+ \PackageError{person}{Person `#1' has not been defined}{}%
+ }%
+ {%
+ \csname person@#1 at fullname\endcsname
+ }%
+}
+\newcommand*{\peoplefullname}{%
+ \setcounter{person}{1}%
+ \@for\@thisperson:=\@people at list\do{%
+ \ifthenelse{\equal{\@thisperson}{}}%
+ {}%
+ {%
+ \personfullname[\@thisperson]%
+ \stepcounter{person}%
+ \ifnum\c at people=1\relax
+ \else
+ \ifnum\c at person=\c at people
+ \ifnum\c at people=2\relax
+ \twopeoplesep
+ \else
+ \personlastsep
+ \fi
+ \else
+ \ifnum\c at person<\c at people
+ \personsep
+ \fi
+ \fi
+ \fi
+ }%
+ }%
+}
+\newcommand*{\personname}[1][anon]{%
+ \@ifundefined{person@#1 at name}%
+ {%
+ \PackageError{person}{Person `#1' has not been defined}{}%
+ }%
+ {%
+ \csname person@#1 at name\endcsname
+ }%
+}
+\newcommand*{\peoplename}{%
+ \setcounter{person}{1}%
+ \@for\@thisperson:=\@people at list\do{%
+ \ifthenelse{\equal{\@thisperson}{}}%
+ {}%
+ {%
+ \personname[\@thisperson]%
+ \stepcounter{person}%
+ \ifnum\c at people=1\relax
+ \else
+ \ifnum\c at person=\c at people
+ \ifnum\c at people=2\relax
+ \twopeoplesep
+ \else
+ \personlastsep
+ \fi
+ \else
+ \ifnum\c at person<\c at people
+ \personsep
+ \fi
+ \fi
+ \fi
+ }%
+ }%
+}
+\newcommand*{\personpronoun}[1][anon]{%
+ \@ifundefined{person@#1 at gender}%
+ {%
+ \PackageError{person}{Person `#1' has not been defined}{}%
+ }%
+ {%
+ \edef\@gender{\csname person@#1 at gender\endcsname}%
+ \csname\@gender pronoun\endcsname
+ }%
+}
+\newcommand*{\Personpronoun}[1][anon]{%
+ \@ifundefined{person@#1 at gender}%
+ {%
+ \PackageError{person}{Person `#1' has not been defined}{}%
+ }%
+ {%
+ \edef\@gender{\csname person@#1 at gender\endcsname}%
+ \expandafter\expandafter\expandafter
+ \MakeUppercase\csname\@gender pronoun\endcsname
+ }%
+}
+\newcommand*{\peoplepronoun}{%
+ \ifnum\c at people>1\relax
+ \pluralpronoun
+ \else
+ \@get at firstperson{\@thisperson}%
+ \personpronoun[\@thisperson]%
+ \fi
+}
+\newcommand*{\Peoplepronoun}{%
+ \ifnum\c at people>1\relax
+ \expandafter\MakeUppercase\pluralpronoun
+ \else
+ \@get at firstperson{\@thisperson}%
+ \Personpronoun[\@thisperson]%
+ \fi
+}
+\newcommand*{\personobjpronoun}[1][anon]{%
+ \@ifundefined{person@#1 at gender}%
+ {%
+ \PackageError{person}{Person `#1' has not been defined}{}%
+ }%
+ {%
+ \edef\@gender{\csname person@#1 at gender\endcsname}%
+ \csname\@gender objpronoun\endcsname
+ }%
+}
+\newcommand*{\Personobjpronoun}[1][anon]{%
+ \@ifundefined{person@#1 at gender}%
+ {%
+ \PackageError{person}{Person `#1' has not been defined}{}%
+ }%
+ {%
+ \edef\@gender{\csname person@#1 at gender\endcsname}%
+ \expandafter\expandafter\expandafter
+ \MakeUppercase\csname\@gender objpronoun\endcsname
+ }%
+}
+\newcommand*{\peopleobjpronoun}{%
+ \ifnum\c at people>1\relax
+ \pluralobjpronoun
+ \else
+ \@get at firstperson{\@thisperson}%
+ \personobjpronoun[\@thisperson]%
+ \fi
+}
+\newcommand*{\Peopleobjpronoun}{%
+ \ifnum\c at people>1\relax
+ \expandafter\MakeUppercase\pluralobjpronoun
+ \else
+ \@get at firstperson{\@thisperson}%
+ \Personobjpronoun[\@thisperson]%
+ \fi
+}
+\newcommand*{\personpossadj}[1][anon]{%
+ \@ifundefined{person@#1 at gender}%
+ {%
+ \PackageError{person}{Person `#1' has not been defined}{}%
+ }%
+ {%
+ \edef\@gender{\csname person@#1 at gender\endcsname}%
+ \csname\@gender possadj\endcsname
+ }%
+}
+\newcommand*{\Personpossadj}[1][anon]{%
+ \@ifundefined{person@#1 at gender}%
+ {%
+ \PackageError{person}{Person `#1' has not been defined}{}%
+ }%
+ {%
+ \edef\@gender{\csname person@#1 at gender\endcsname}%
+ \expandafter\expandafter\expandafter
+ \MakeUppercase\csname\@gender possadj\endcsname
+ }%
+}
+\newcommand*{\peoplepossadj}{%
+ \ifnum\c at people>1\relax
+ \pluralpossadj
+ \else
+ \@get at firstperson{\@thisperson}%
+ \personpossadj[\@thisperson]%
+ \fi
+}
+\newcommand*{\Peoplepossadj}{%
+ \ifnum\c at people>1\relax
+ \expandafter\MakeUppercase\pluralpossadj
+ \else
+ \@get at firstperson{\@thisperson}%
+ \Personpossadj[\@thisperson]%
+ \fi
+}
+\newcommand*{\personposspronoun}[1][anon]{%
+ \@ifundefined{person@#1 at gender}%
+ {%
+ \PackageError{person}{Person `#1' has not been defined}{}%
+ }%
+ {%
+ \edef\@gender{\csname person@#1 at gender\endcsname}%
+ \csname\@gender posspronoun\endcsname
+ }%
+}
+\newcommand*{\Personposspronoun}[1][anon]{%
+ \@ifundefined{person@#1 at gender}%
+ {%
+ \PackageError{person}{Person `#1' has not been defined}{}%
+ }%
+ {%
+ \edef\@gender{\csname person@#1 at gender\endcsname}%
+ \expandafter\expandafter\expandafter
+ \MakeUppercase\csname\@gender posspronoun\endcsname
+ }%
+}
+\newcommand*{\peopleposspronoun}{%
+ \ifnum\c at people>1\relax
+ \pluralposspronoun
+ \else
+ \@get at firstperson{\@thisperson}%
+ \personposspronoun[\@thisperson]%
+ \fi
+}
+\newcommand*{\Peopleposspronoun}{%
+ \ifnum\c at people>1\relax
+ \expandafter\MakeUppercase\pluralposspronoun
+ \else
+ \@get at firstperson{\@thisperson}%
+ \Personposspronoun[\@thisperson]%
+ \fi
+}
+\newcommand*{\personchild}[1][anon]{%
+ \@ifundefined{person@#1 at gender}%
+ {%
+ \PackageError{person}{Person `#1' has not been defined}{}%
+ }%
+ {%
+ \edef\@gender{\csname person@#1 at gender\endcsname}%
+ \csname\@gender child\endcsname
+ }%
+}
+\newcommand*{\Personchild}[1][anon]{%
+ \@ifundefined{person@#1 at gender}%
+ {%
+ \PackageError{person}{Person `#1' has not been defined}{}%
+ }%
+ {%
+ \edef\@gender{\csname person@#1 at gender\endcsname}%
+ \expandafter\expandafter\expandafter\MakeUppercase
+ \csname\@gender child\endcsname
+ }%
+}
+\newcommand*{\peoplechild}{%
+ \ifnum\c at people>1\relax
+ \ifallmale
+ {\malechildren}%
+ {\ifallfemale{\femalechildren}{\pluralchild}}%
+ \else
+ \@get at firstperson{\@thisperson}%
+ \personchild[\@thisperson]%
+ \fi
+}
+\newcommand*{\Peoplechild}{%
+ \ifnum\c at people>1\relax
+ \ifallmale
+ {\expandafter\MakeUppercase\malechildren}%
+ {\ifallfemale
+ {\expandafter\MakeUppercase\femalechildren}
+ {\expandafter\MakeUppercase\pluralchild}}%
+ \else
+ \@get at firstperson{\@thisperson}%
+ \Personchild[\@thisperson]%
+ \fi
+}
+\newcommand*{\personparent}[1][anon]{%
+ \@ifundefined{person@#1 at gender}%
+ {%
+ \PackageError{person}{Person `#1' has not been defined}{}%
+ }%
+ {%
+ \edef\@gender{\csname person@#1 at gender\endcsname}%
+ \csname\@gender parent\endcsname
+ }%
+}
+\newcommand*{\Personparent}[1][anon]{%
+ \@ifundefined{person@#1 at gender}%
+ {%
+ \PackageError{person}{Person `#1' has not been defined}{}%
+ }%
+ {%
+ \edef\@gender{\csname person@#1 at gender\endcsname}%
+ \expandafter\expandafter\expandafter\MakeUppercase
+ \csname\@gender parent\endcsname
+ }%
+}
+\newcommand*{\peopleparent}{%
+ \ifnum\c at people>1\relax
+ \pluralparent
+ \else
+ \@get at firstperson{\@thisperson}%
+ \personparent[\@thisperson]%
+ \fi
+}
+\newcommand*{\Peopleparent}{%
+ \ifnum\c at people>1\relax
+ \expandafter\MakeUppercase\pluralparent
+ \else
+ \@get at firstperson{\@thisperson}%
+ \Personparent[\@thisperson]%
+ \fi
+}
+\newcommand*{\personsibling}[1][anon]{%
+ \@ifundefined{person@#1 at gender}%
+ {%
+ \PackageError{person}{Person `#1' has not been defined}{}%
+ }%
+ {%
+ \edef\@gender{\csname person@#1 at gender\endcsname}%
+ \csname\@gender sibling\endcsname
+ }%
+}
+\newcommand*{\Personsibling}[1][anon]{%
+ \@ifundefined{person@#1 at gender}%
+ {%
+ \PackageError{person}{Person `#1' has not been defined}{}%
+ }%
+ {%
+ \edef\@gender{\csname person@#1 at gender\endcsname}%
+ \expandafter\expandafter\expandafter\MakeUppercase
+ \csname\@gender sibling\endcsname
+ }%
+}
+\newcommand*{\peoplesibling}{%
+ \ifnum\c at people>1\relax
+ \ifallmale
+ {\malesiblings}%
+ {\ifallfemale{\femalesiblings}{\pluralsibling}}%
+ \else
+ \@get at firstperson{\@thisperson}%
+ \personsibling[\@thisperson]%
+ \fi
+}
+\newcommand*{\persongender}[1]{%
+ \ifmale{#1}{\malename}{\femalename}%
+}
+\newcommand*{\getpersongender}[2]{%
+ \ifmale{#2}{\let#1\malename}{\let#1\femalename}%
+}
+\newcommand*{\getpersonname}[2]{%
+ \ifpersonexists{#2}%
+ {%
+ \expandafter\let\expandafter#1\csname person@#2 at name\endcsname
+ }%
+ {%
+ \PackageError{person}{Person `#2' doesn't exist}{}%
+ }%
+}
+\newcommand*{\getpersonfullname}[2]{%
+ \ifpersonexists{#2}%
+ {%
+ \expandafter
+ \let\expandafter#1\csname person@#2 at fullname\endcsname
+ }%
+ {%
+ \PackageError{person}{Person `#2' doesn't exist}{}%
+ }%
+}
+\endinput
+%%
+%% End of file `person-2019-09-27.sty'.
Property changes on: trunk/Master/texmf-dist/tex/latex/datatool/person-2019-09-27.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: trunk/Master/texmf-dist/tex/latex/datatool/person.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/datatool/person.sty 2025-03-05 21:32:08 UTC (rev 74460)
+++ trunk/Master/texmf-dist/tex/latex/datatool/person.sty 2025-03-05 21:33:51 UTC (rev 74461)
@@ -21,7 +21,7 @@
%%
%% The Current Maintainer of this work is Nicola Talbot.
%%
-%% This work consists of the files datatool.dtx and datatool.ins and the derived files datatool-base.sty, datatool-undetermined.ldf, datatool-latin1.ldf, datatool-utf8.ldf, datatool-l3fp.def, datatool-lua.def, datatool-fp.def, datatool-fp.sty, datatool-pgfmath.def, datatool-pgfmath.sty, datatool.sty, datagidx.sty, databib.sty, databar.sty, datapie.sty, dataplot.sty, person.sty, databib.bst.
+%% This work consists of the files datatool.dtx and datatool.ins and the derived files datatool-base.sty, datatool-undetermined.ldf, datatool-latin1.ldf, datatool-utf8.ldf, datatool-l3fp.def, datatool-lua.def, datatool-fp.def, datatool-fp.sty, datatool-pgfmath.def, datatool-pgfmath.sty, datatool.sty, datagidx.sty, databib.sty, databar.sty, datapie.sty, dataplot.sty, person.sty, databib.bst, databar-2019-09-27.sty, databib-2019-09-27.sty, datagidx-2019-09-27.sty, datapie-2019-09-27.sty, dataplot-2019-09-27.sty, datatool-2019-09-27.sty, datatool-base-2019-09-27.sty, datatool-fp-2019-09-27.sty, datatool-pgfmath-2019-09-27.sty, person-2019-09-27.sty.
%%
%% \CharacterTable
%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
@@ -40,8 +40,8 @@
%% Right brace \} Tilde \~}
\NeedsTeXFormat{LaTeX2e}
\DeclareRelease{v2.32}{2019-09-27}{person-2019-09-27.sty}
-\DeclareCurrentRelease{v3.0}{2025-03-03}
-\ProvidesPackage{person}[2025/03/03 v3.0 (NLCT)]
+\DeclareCurrentRelease{v3.0.1}{2025-03-05}
+\ProvidesPackage{person}[2025/03/05 v3.0.1 (NLCT)]
\newcommand\@person at datatoolsty{datatool}
\ExplSyntaxOn
\cs_new:Nn \__person_define_shortcuts:
More information about the tex-live-commits
mailing list.