From 1916527c4310ffc4b2517c1242af4658bfa44e06 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Wed, 13 Jan 2016 22:14:45 +0000 Subject: datatool (13jan16) git-svn-id: svn://tug.org/texlive/trunk@39376 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/doc/latex/datatool/CHANGES | 13 + Master/texmf-dist/doc/latex/datatool/README | 4 +- .../doc/latex/datatool/datatool-code.pdf | Bin 923804 -> 1165367 bytes .../doc/latex/datatool/datatool-user.pdf | Bin 606573 -> 607877 bytes .../doc/latex/datatool/datatool-user.tex | 246 +++++++++- .../doc/latex/datatool/samples/sample-autokeys.pdf | Bin 24923 -> 24911 bytes .../doc/latex/datatool/samples/sample-barchart.pdf | Bin 35068 -> 35056 bytes .../latex/datatool/samples/sample-datatooltk.pdf | Bin 22860 -> 22848 bytes .../doc/latex/datatool/samples/sample-dict.pdf | Bin 122595 -> 122578 bytes .../latex/datatool/samples/sample-europecv-bib.pdf | Bin 89557 -> 89544 bytes .../doc/latex/datatool/samples/sample-gidx.pdf | Bin 179590 -> 180135 bytes .../doc/latex/datatool/samples/sample-glossary.pdf | Bin 104238 -> 104788 bytes .../doc/latex/datatool/samples/sample-index.pdf | Bin 128779 -> 128764 bytes .../latex/datatool/samples/sample-mail-merge.pdf | Bin 21623 -> 21890 bytes .../doc/latex/datatool/samples/sample-piechart.pdf | Bin 33966 -> 33954 bytes .../doc/latex/datatool/samples/sample-sort.pdf | Bin 61064 -> 89727 bytes .../doc/latex/datatool/samples/sample-sort.tex | 19 +- .../datatool/samples/sample-student-scores.pdf | Bin 34616 -> 34602 bytes .../latex/datatool/samples/sample-two-per-row.pdf | Bin 31751 -> 31739 bytes .../texmf-dist/source/latex/datatool/datatool.dtx | 532 +++++++++++++++++++-- .../texmf-dist/source/latex/datatool/datatool.ins | 4 +- Master/texmf-dist/tex/latex/datatool/databar.sty | 4 +- Master/texmf-dist/tex/latex/datatool/databib.sty | 4 +- Master/texmf-dist/tex/latex/datatool/datagidx.sty | 4 +- Master/texmf-dist/tex/latex/datatool/datapie.sty | 4 +- Master/texmf-dist/tex/latex/datatool/dataplot.sty | 4 +- .../tex/latex/datatool/datatool-base.sty | 389 ++++++++++++++- .../texmf-dist/tex/latex/datatool/datatool-fp.sty | 4 +- .../tex/latex/datatool/datatool-pgfmath.sty | 4 +- Master/texmf-dist/tex/latex/datatool/datatool.sty | 4 +- Master/texmf-dist/tex/latex/datatool/person.sty | 4 +- 31 files changed, 1161 insertions(+), 82 deletions(-) diff --git a/Master/texmf-dist/doc/latex/datatool/CHANGES b/Master/texmf-dist/doc/latex/datatool/CHANGES index 311f435b815..e29220008d8 100644 --- a/Master/texmf-dist/doc/latex/datatool/CHANGES +++ b/Master/texmf-dist/doc/latex/datatool/CHANGES @@ -1,3 +1,16 @@ +v2.24: + + * datatool-base: + + - added "utf8" package option and \dtlenableUTFviii, + \dtldisableUTFviii + + - added \dtlsetcharcode, \dtlsetlccharcode, + \dtlsetUTFviiicharcode, \dtlsetUTFviiilccharcode + \dtlsetdefaultUTFviiicharcode and + \dtlsetdefaultUTFviiilccharcode for use with the comparison + handlers. + v2.23: * datatool: diff --git a/Master/texmf-dist/doc/latex/datatool/README b/Master/texmf-dist/doc/latex/datatool/README index 28ef7ab8756..38aad314e74 100644 --- a/Master/texmf-dist/doc/latex/datatool/README +++ b/Master/texmf-dist/doc/latex/datatool/README @@ -1,6 +1,6 @@ -LaTeX Bundle : datatool v2.23 +LaTeX Bundle : datatool v2.24 -Last Modified : 2015-07-11 +Last Modified : 2016-01-12 Author : Nicola Talbot diff --git a/Master/texmf-dist/doc/latex/datatool/datatool-code.pdf b/Master/texmf-dist/doc/latex/datatool/datatool-code.pdf index 5a1571a4282..e9a74d5c7a1 100644 Binary files a/Master/texmf-dist/doc/latex/datatool/datatool-code.pdf and b/Master/texmf-dist/doc/latex/datatool/datatool-code.pdf differ diff --git a/Master/texmf-dist/doc/latex/datatool/datatool-user.pdf b/Master/texmf-dist/doc/latex/datatool/datatool-user.pdf index fac3cc3d181..5360d80b0c1 100644 Binary files a/Master/texmf-dist/doc/latex/datatool/datatool-user.pdf and b/Master/texmf-dist/doc/latex/datatool/datatool-user.pdf differ diff --git a/Master/texmf-dist/doc/latex/datatool/datatool-user.tex b/Master/texmf-dist/doc/latex/datatool/datatool-user.tex index 91a26817787..885b832c301 100644 --- a/Master/texmf-dist/doc/latex/datatool/datatool-user.tex +++ b/Master/texmf-dist/doc/latex/datatool/datatool-user.tex @@ -1,5 +1,7 @@ \documentclass[report,widecs]{nlctdoc} +\usepackage[T1]{fontenc} +\usepackage[utf8]{inputenc} \usepackage{ifthen} \usepackage[verbose=false]{datatool} \usepackage{datapie,databar,databib,person,datagidx} @@ -7,10 +9,9 @@ \usepackage{graphicx} \usepackage{colortbl} \usepackage{booktabs} +\usepackage{metalogo} \usepackage{cmap} \usepackage{alltt} -\usepackage[T1]{fontenc} -\usepackage[utf8]{inputenc} \ifpdf \usepackage{mathpazo} \usepackage[scaled=.88]{helvet} @@ -98,11 +99,11 @@ \MakeShortVerb{"} \DeleteShortVerb{\|} - \title{User Manual for datatool bundle version~2.23} + \title{User Manual for datatool bundle version~2.24} \author{Nicola L.C. Talbot\\ \url{http://www.dickimaw-books.com/}} - \date{2015-07-11} + \date{2016-01-12} \maketitle \pagenumbering{roman} @@ -117,7 +118,7 @@ The \styfmt{datatool} bundle comes with the following documentation: \item[\url{datatool-code.pdf}] Advanced users wishing to know more about the inner workings of all the packages provided in the \styfmt{datatool} bundle should - read \qt{Documented Code for datatool v2.23} + read \qt{Documented Code for datatool v2.24} \item[INSTALL] Installation instructions. @@ -3906,7 +3907,7 @@ environment: \bfseries Email 1 & \bfseries Email 2 & \bfseries Reg Num% -\DTLforeach{emailDB}{\firstname=FirstName,\surname=Surname,% +\DTLforeach*{emailDB}{\firstname=FirstName,\surname=Surname,% \emailI=Email1,\emailII=Email2,\regnum=RegNum}{% \\\firstname & \surname & \emailI & \emailII & \regnum}% \end{tabular} @@ -3918,7 +3919,7 @@ This produces the following:\par\vskip\baselineskip\noindent \bfseries Email 1 & \bfseries Email 2 & \bfseries Reg Num\relax -\DTLforeach{emailDB}{\firstname=FirstName,\surname +\DTLforeach*{emailDB}{\firstname=FirstName,\surname =Surname,\emailI=Email1,\emailII=Email2,\regnum=RegNum}{\relax \\\firstname & \surname & \emailI & \emailII & \regnum}\relax \end{tabular} @@ -4570,8 +4571,9 @@ First of all, display the unsorted data: \DTLdisplaydb{inversiondata} \end{verbatim} This produces: - +\begin{display} \DTLdisplaydb{inversiondata} +\end{display} Now sort the data using the \ics{dtlwordindexcompare} handler: \begin{verbatim} @@ -4583,10 +4585,10 @@ and display again: \DTLdisplaydb{inversiondata} \end{verbatim} which now produces: - +\begin{display} \DTLdisplaydb{inversiondata} - -~here are three entries with pre-inversion text as simply +\end{display} +There are three entries here with pre-inversion text that's simply \texttt{New York}. Since each of these three entries has the same pre-inversion text, they need to be sorted according to the type of inversion: person, place, subject. The fourth entry (New York, New @@ -4601,7 +4603,221 @@ code for details on the syntax of the handler. (You may want to consider uploading your handler as a separate package to CTAN if you think it will be of general use.) -There are two shortcut commands: +As from version 2.24, the predefined handlers now have limited support for UTF-8 +characters. \emph{This is still experimental.} The support will +automatically be switched on if the \sty{inputenc} package is loaded +with the \pkgopt{utf8} option before loading \sty{datatool-base} +(which is automatically loaded by \sty{datatool}). If \sty{inputenc} +is loaded after \sty{datatool-base}, you can use the (boolean) \pkgopt{utf8} +option when you load \sty{datatool-base} to enable it. For example, +either: +\begin{verbatim} +\usepackage[utf8]{inputenc} +\usepackage{datatool-base} +\end{verbatim} +or +\begin{verbatim} +\usepackage[utf8]{datatool-base} +\usepackage[utf8]{inputenc} +\end{verbatim} +You can also enable this option after \sty{datatool-base} has been loaded +using +\begin{definition}[\DescribeMacro\dtlenableUTFviii] +\cs{dtlenableUTFviii} +\end{definition} +or disable it with +\begin{definition}[\DescribeMacro\dtldisableUTFviii] +\cs{dtldisableUTFviii} +\end{definition} +For example: +\begin{verbatim} +\usepackage[utf8]{inputenc} +\usepackage{datatool} +\dtldisableUTFviii +\end{verbatim} +This option isn't required for \XeLaTeX, which treats each UTF-8 +character as an individual token. + +With regular (pdf)\LaTeX\ (as opposed to \XeLaTeX) each UTF-8 character is +actually treated as two tokens that represent the first and second +octet of the UTF-8 character. This means that it's not possible for +\TeX\ to obtain a character code using the usual backtick method, so +(with this option enabled) if a UTF-8 character is detected, the handlers +described above will pass both octet tokens to one of the following commands: +\begin{definition}[\DescribeMacro\dtlsetUTFviiicharcode] +\cs{dtlsetUTFviiicharcode}\marg{octet tokens}\marg{count} +\end{definition} +(for the case-sensitive handler \ics{dltcompare}) and +\begin{definition}[\DescribeMacro\dtlsetUTFviiilccharcode] +\cs{dtlsetUTFviiilccharcode}\marg{octet tokens}\marg{count} +\end{definition} +(for the case-insensitive handlers). + +By default the first simply does: +\begin{definition}[\DescribeMacro\dtlsetdefaultUTFviiicharcode] +\cs{dtlsetdefaultUTFviiicharcode}\marg{octet tokens}\marg{count} +\end{definition} +and the second does +\begin{definition}[\DescribeMacro\dtlsetdefaultUTFviiilccharcode] +\cs{dtlsetdefaultUTFviiilccharcode}\marg{octet tokens}\marg{count} +\end{definition} + +In all the above \meta{octet tokens} are the two octets forming the +UTF-8 character and \meta{count} is a count register in which to +store the relevant character code. + +The default commands simply set the character code for certain +common accented Latin characters (such as \'e) to the code for their +unaccented version (such as e). You can redefine +\cs{dtlsetUTFviiicharcode} and \cs{dtlsetUTFviiilccharcode} to test +for additional characters. For example, to add the Norwegian +characters \ae, \o\ and \aa\ to the end of the Latin alphabet, you +can do: +\begin{verbatim} +\renewcommand*{\dtlsetUTFviiicharcode}[2]{% + \ifstrequal{#1}{Æ}% + {% + #2=91\relax + }% + {% + \ifstrequal{#1}{Ø}% + {% + #2=92\relax + }% + {% + \ifstrequal{#1}{Å}% + {% + #2=93\relax + }% + {% + \ifstrequal{#1}{æ}% + {% + #2=123\relax + }% + {% + \ifstrequal{#1}{ø}% + {% + #2=124\relax + }% + {% + \ifstrequal{#1}{å}% + {% + #2=125\relax + }% + {% + \dtlsetdefaultUTFviiicharcode{#1}{#2}% + }% + }% + }% + }% + }% + }% +} + +\renewcommand*{\dtlsetUTFviiilccharcode}[2]{% + \ifstrequal{#1}{Æ}% + {% + #2=123\relax + }% + {% + \ifstrequal{#1}{Ø}% + {% + #2=124\relax + }% + {% + \ifstrequal{#1}{Å}% + {% + #2=125\relax + }% + {% + \ifstrequal{#1}{æ}% + {% + #2=123\relax + }% + {% + \ifstrequal{#1}{ø}% + {% + #2=124\relax + }% + {% + \ifstrequal{#1}{å}% + {% + #2=125\relax + }% + {% + \dtlsetdefaultUTFviiilccharcode{#1}{#2}% + }% + }% + }% + }% + }% + }% +} +\end{verbatim} + +In the case where a~character is a single token (for example, with +Latin-1 encoding), the code associated with that character is set +using +\begin{definition}[\DescribeMacro\dtlsetcharcode] +\cs{dtlsetcharcode}\marg{c}\marg{count register} +\end{definition} +(for case-sensitive comparison) and +\begin{definition}[\DescribeMacro\dtlsetlccharcode] +\cs{dtlsetlccharcode}\marg{c}\marg{count register} +\end{definition} +(for case-insensitive comparison), where \meta{c} is the character +and \meta{count register} is a count register. The default +definitions are: +\begin{verbatim} +\newcommand*{\dtlsetcharcode}[2]{#2=`#1\relax} +\newcommand*{\dtlsetlccharcode}[2]{#2=\lccode`#1\relax} +\end{verbatim} +So, for example, the letter \qt{e} has the code \number`e\ whereas +(with the Latin-1 encoding) the letter \qt{\'e} has the code 233. +This means that \qt{\'e} will be sorted after \qt{e}. It may be that +you want \qt{\'e} to be treated the same as \qt{e} when making the +comparison. In this case, you need to redefine \cs{dtlsetcharcode} +and \cs{dtlsetlccharcode}. For example, for the case-sensitive +comparisons: +\begin{verbatim} +\renewcommand*{\dtlsetcharcode}[2]{% + \ifstrequal{#1}{É}% + {% + #2=`E\relax + }% + {% + \ifstrequal{#1}{é}% + {% + #2=`e\relax + }% + {% + #2=`#1\relax + }% + }% +} +\end{verbatim} +and for the case-insensitive comparisons: +\begin{verbatim} +\renewcommand*{\dtlsetlccharcode}[2]{% + \ifboolexpr + {% + test {\ifstrequal{#1}{é}} + or test {\ifstrequal{#1}{É}} + }% + {% + #2=`e\relax + }% + {% + #2=\lccode`#1\relax + }% +} +\end{verbatim} +(Extra conditionals will need to be added for other diacritics. +Alternative conditionals, such as \cs{ifx} or \cs{ifnum}, may be more +efficient. In the above I've used the \sty{etoolbox} commands for +clarity.) + +There are two shortcut commands for \cs{dtlsort}: \begin{definition}[\DescribeMacro{\DTLsort}]% \cs{DTLsort}\oarg{replacement key list}\marg{sort criteria}\marg{db name} \end{definition} @@ -4887,12 +5103,6 @@ This produces \autoref{tab:influencesort}. \section{Saving a Database to an External File} \label{sec:savedb} -\begin{important} -\TeX's write mechanism automatically inserts linebreaks every 80 -characters. This may cause problems if you have long entries in your -database. -\end{important} - \begin{definition}[\DescribeMacro{\DTLsavedb}]% \cs{DTLsavedb}\marg{db name}\marg{filename} \end{definition} diff --git a/Master/texmf-dist/doc/latex/datatool/samples/sample-autokeys.pdf b/Master/texmf-dist/doc/latex/datatool/samples/sample-autokeys.pdf index ad495330892..dfba3d43cc7 100644 Binary files a/Master/texmf-dist/doc/latex/datatool/samples/sample-autokeys.pdf and b/Master/texmf-dist/doc/latex/datatool/samples/sample-autokeys.pdf differ diff --git a/Master/texmf-dist/doc/latex/datatool/samples/sample-barchart.pdf b/Master/texmf-dist/doc/latex/datatool/samples/sample-barchart.pdf index aaf21393f64..c6aadfaa097 100644 Binary files a/Master/texmf-dist/doc/latex/datatool/samples/sample-barchart.pdf and b/Master/texmf-dist/doc/latex/datatool/samples/sample-barchart.pdf differ diff --git a/Master/texmf-dist/doc/latex/datatool/samples/sample-datatooltk.pdf b/Master/texmf-dist/doc/latex/datatool/samples/sample-datatooltk.pdf index 3f82014ed9c..efc79437a63 100644 Binary files a/Master/texmf-dist/doc/latex/datatool/samples/sample-datatooltk.pdf and b/Master/texmf-dist/doc/latex/datatool/samples/sample-datatooltk.pdf differ diff --git a/Master/texmf-dist/doc/latex/datatool/samples/sample-dict.pdf b/Master/texmf-dist/doc/latex/datatool/samples/sample-dict.pdf index 533efaba595..5339715bd16 100644 Binary files a/Master/texmf-dist/doc/latex/datatool/samples/sample-dict.pdf and b/Master/texmf-dist/doc/latex/datatool/samples/sample-dict.pdf differ diff --git a/Master/texmf-dist/doc/latex/datatool/samples/sample-europecv-bib.pdf b/Master/texmf-dist/doc/latex/datatool/samples/sample-europecv-bib.pdf index 45461691083..25761b21490 100644 Binary files a/Master/texmf-dist/doc/latex/datatool/samples/sample-europecv-bib.pdf and b/Master/texmf-dist/doc/latex/datatool/samples/sample-europecv-bib.pdf differ diff --git a/Master/texmf-dist/doc/latex/datatool/samples/sample-gidx.pdf b/Master/texmf-dist/doc/latex/datatool/samples/sample-gidx.pdf index a1d0cbdd44f..32fb87b3ab5 100644 Binary files a/Master/texmf-dist/doc/latex/datatool/samples/sample-gidx.pdf and b/Master/texmf-dist/doc/latex/datatool/samples/sample-gidx.pdf differ diff --git a/Master/texmf-dist/doc/latex/datatool/samples/sample-glossary.pdf b/Master/texmf-dist/doc/latex/datatool/samples/sample-glossary.pdf index c2c7ed49280..7b88dbfa57a 100644 Binary files a/Master/texmf-dist/doc/latex/datatool/samples/sample-glossary.pdf and b/Master/texmf-dist/doc/latex/datatool/samples/sample-glossary.pdf differ diff --git a/Master/texmf-dist/doc/latex/datatool/samples/sample-index.pdf b/Master/texmf-dist/doc/latex/datatool/samples/sample-index.pdf index 21697f30670..aaed390088c 100644 Binary files a/Master/texmf-dist/doc/latex/datatool/samples/sample-index.pdf and b/Master/texmf-dist/doc/latex/datatool/samples/sample-index.pdf differ diff --git a/Master/texmf-dist/doc/latex/datatool/samples/sample-mail-merge.pdf b/Master/texmf-dist/doc/latex/datatool/samples/sample-mail-merge.pdf index 57406d47eab..b007bf31bbc 100644 Binary files a/Master/texmf-dist/doc/latex/datatool/samples/sample-mail-merge.pdf and b/Master/texmf-dist/doc/latex/datatool/samples/sample-mail-merge.pdf differ diff --git a/Master/texmf-dist/doc/latex/datatool/samples/sample-piechart.pdf b/Master/texmf-dist/doc/latex/datatool/samples/sample-piechart.pdf index f431b620aaf..6ea6b930502 100644 Binary files a/Master/texmf-dist/doc/latex/datatool/samples/sample-piechart.pdf and b/Master/texmf-dist/doc/latex/datatool/samples/sample-piechart.pdf differ diff --git a/Master/texmf-dist/doc/latex/datatool/samples/sample-sort.pdf b/Master/texmf-dist/doc/latex/datatool/samples/sample-sort.pdf index 1cf45c10e0e..9737968d009 100644 Binary files a/Master/texmf-dist/doc/latex/datatool/samples/sample-sort.pdf and b/Master/texmf-dist/doc/latex/datatool/samples/sample-sort.pdf differ diff --git a/Master/texmf-dist/doc/latex/datatool/samples/sample-sort.tex b/Master/texmf-dist/doc/latex/datatool/samples/sample-sort.tex index bce750819dc..2c1f0b96f00 100644 --- a/Master/texmf-dist/doc/latex/datatool/samples/sample-sort.tex +++ b/Master/texmf-dist/doc/latex/datatool/samples/sample-sort.tex @@ -2,6 +2,10 @@ \documentclass{article} +\usepackage[margin=1in]{geometry} + +\usepackage[T1]{fontenc} +\usepackage[utf8]{inputenc} \usepackage{datatool} % Sample database @@ -20,8 +24,9 @@ \DTLnewdbentry{data}{Word}{#1}% % Convert word to its definition and add {% - \def\thisword{#1}\@onelevel@sanitize\thisword - \dtlexpandnewvalue % ensure \theword gets expanded + \def\thisword{#1}% + \@onelevel@sanitize\thisword + \dtlexpandnewvalue % ensure \thisword gets expanded \DTLnewdbentry{data}{Definition}{\thisword}% }% } @@ -69,8 +74,18 @@ \newword{Alpha} \newword{seal} \newword{sea lion} +\newword{elephant} +\newword{Élite} \begin{document} +This is a sample document testing datatool's comparison +handlers. Note that UTF-8 characters are treated as two tokens +(the first and second octets) with regular (pdf)\LaTeX, so the +definition column on the following pages shows the two octets +for the UTF-8 character É as ÃĽ, which is how \LaTeX\ sees them. XeLaTeX will treat it as a single +token. + +\newpage \section{Unsorted data} diff --git a/Master/texmf-dist/doc/latex/datatool/samples/sample-student-scores.pdf b/Master/texmf-dist/doc/latex/datatool/samples/sample-student-scores.pdf index b73bfa7ef1f..ccff004636c 100644 Binary files a/Master/texmf-dist/doc/latex/datatool/samples/sample-student-scores.pdf and b/Master/texmf-dist/doc/latex/datatool/samples/sample-student-scores.pdf differ diff --git a/Master/texmf-dist/doc/latex/datatool/samples/sample-two-per-row.pdf b/Master/texmf-dist/doc/latex/datatool/samples/sample-two-per-row.pdf index 5492735022c..7e6e918a0cb 100644 Binary files a/Master/texmf-dist/doc/latex/datatool/samples/sample-two-per-row.pdf and b/Master/texmf-dist/doc/latex/datatool/samples/sample-two-per-row.pdf differ diff --git a/Master/texmf-dist/source/latex/datatool/datatool.dtx b/Master/texmf-dist/source/latex/datatool/datatool.dtx index 23268df6614..34fd38d4f8a 100644 --- a/Master/texmf-dist/source/latex/datatool/datatool.dtx +++ b/Master/texmf-dist/source/latex/datatool/datatool.dtx @@ -2,11 +2,6 @@ % datatool.dtx generated using makedtx version 1.1 (c) Nicola Talbot % Command line args: % -doc "datatool-manual.tex" -% -codetitle "" -% -comment "databib\.bst" -% -macrocode "databib\.bst" -% -author "Nicola Talbot" -% -setambles "databib\.bst=>\nopreamble\nopostamble" % -src "datatool-base.sty\Z=>datatool-base.sty" % -src "datatool-fp.sty\Z=>datatool-fp.sty" % -src "datatool-pgfmath.sty\Z=>datatool-pgfmath.sty" @@ -18,8 +13,13 @@ % -src "dataplot.sty\Z=>dataplot.sty" % -src "person.sty\Z=>person.sty" % -src "databib.bst\Z=>databib.bst" +% -author "Nicola Talbot" +% -codetitle "" +% -macrocode "databib\.bst" +% -comment "databib\.bst" +% -setambles "databib\.bst=>\nopreamble\nopostamble" % datatool -% Created on 2015/7/11 16:07 +% Created on 2016/1/13 11:57 %\fi %\iffalse %<*package> @@ -42,7 +42,7 @@ %\fi % \iffalse % Doc-Source file to use with LaTeX2e -% Copyright (C) 2015 Nicola Talbot, all rights reserved. +% Copyright (C) 2016 Nicola Talbot, all rights reserved. % \fi % \iffalse %<*driver> @@ -66,7 +66,7 @@ datatool.dtx \doxitem{Counter}{counter}{counters} \doxitem{Option}{option}{package options} -\CheckSum{23161} +\CheckSum{23425} \RecordChanges \PageIndex @@ -79,11 +79,11 @@ datatool.dtx %\fi %\MakeShortVerb{"} % -%\title{Documented Code for datatool v2.23} +%\title{Documented Code for datatool v2.24} %\author{Nicola L. C. Talbot\\ %\url{http://www.dickimaw-books.com/}} % -%\date{2015-07-11} +%\date{2016-01-12} %\maketitle % %\pagenumbering{roman} @@ -117,7 +117,7 @@ datatool.dtx % % \begin{macrocode} \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{datatool-base}[2015/07/11 v2.23 (NLCT)] +\ProvidesPackage{datatool-base}[2016/01/12 v2.24 (NLCT)] % \end{macrocode} % Required packages: % \begin{macrocode} @@ -157,6 +157,33 @@ datatool.dtx } % \end{macrocode} %\end{option} +% +%\begin{option}{utf8} +%\changes{2.24}{2016-01-12}{new} +% Enable UTF-8 support in comparison handlers. This is still a bit +% experimental, so it needs to be explicitly switched on. +% \begin{macrocode} +\define@boolkey{datatool-base.sty}[@dtl@]{utf8}[true]{} +\ifdef\UTFviii@two@octets +{\booltrue{@dtl@utf8}}% +{\boolfalse{@dtl@utf8}} +% \end{macrocode} +%\end{option} +% +%\begin{macro}{\dtlenableUTFviii} +%\changes{2.24}{2016-01-12}{new} +% \begin{macrocode} +\newcommand*{\dtlenableUTFviii}{\booltrue{@dtl@utf8}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\dtldisableUTFviii} +%\changes{2.24}{2016-01-12}{new} +% \begin{macrocode} +\newcommand*{\dtldisableUTFviii}{\boolfalse{@dtl@utf8}} +% \end{macrocode} +%\end{macro} +% %\begin{macro}{\@dtl@mathprocessor} % \begin{macrocode} \providecommand*{\@dtl@mathprocessor}{fp} @@ -239,6 +266,36 @@ datatool.dtx % \end{macrocode} %\end{macro} % +%\begin{macro}{\dtl@ifsingleorUTFviii} +%\changes{2.24}{2016-01-12}{new} +% As above but also checks for UTF8. +% \begin{macrocode} +\newcommand{\dtl@ifsingleorUTFviii}[3]{% + \ifbool{@dtl@utf8} + {% + \def\@dtl@arg{#1}% + \ifdefempty{\@dtl@arg}% + {% + #3% + }% + {% + \expandafter\dtl@if@two@octets#1\relax\relax\dtl@end@if@two@octets + {% + \dtl@getfirst@UTFviii#1\@nil\end@dtl@getfirst@UTFviii + \ifdefempty\dtl@rest{#2}{#3}% + }% + {% + \@dtl@ifsingle#1\@nil{#2}{#3}% + }% + }% + }% + {% + \dtl@ifsingle{#1}{#2}{#3}% + }% +}% +% \end{macrocode} +%\end{macro} +% %\begin{macro}{\dtlifintopenbetween} %\begin{definition} %\cs{dtlifintopenbetween}\marg{num}\marg{min}\marg{max}\marg{true @@ -2808,8 +2865,8 @@ datatool.dtx \expandafter\dtl@getfirst\@dtl@argB\end@dtl@getfirst \let\dtl@firstB=\dtl@first \let\dtl@restB=\dtl@rest - \expandafter\dtl@ifsingle\expandafter{\dtl@firstA}{% - \expandafter\dtl@ifsingle\expandafter{\dtl@firstB}{% + \expandafter\dtl@ifsingleorUTFviii\expandafter{\dtl@firstA}{% + \expandafter\dtl@ifsingleorUTFviii\expandafter{\dtl@firstB}{% \expandafter\dtl@setcharcode\expandafter{\dtl@firstA}{\dtl@codeA}% \expandafter\dtl@setcharcode\expandafter{\dtl@firstB}{\dtl@codeB}% \ifnum\dtl@codeA=-1\relax @@ -2878,6 +2935,48 @@ datatool.dtx } % \end{macrocode} %\end{macro} +% +%\begin{macro}{\dtl@if@two@octets} +%\changes{2.24}{2016-01-12}{new} +%Check if argument starts with \cs{UTFviii@two@octets} +% \begin{macrocode} +\def\dtl@if@two@octets#1#2\dtl@end@if@two@octets#3#4{% + \ifbool{@dtl@utf8} + {% + \ifx\UTFviii@two@octets#1\relax + #3% + \else + #4% + \fi + }% + {% + #4% + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\dtl@getfirst@UTFviii} +%\changes{2.24}{2016-01-12}{new} +% \begin{macrocode} +\def\dtl@getfirst@UTFviii#1#2#3\end@dtl@getfirst@UTFviii{% + \def\dtl@first{#1#2}% + \ifx\@nil#3\relax + \def\dtl@rest{}% + \else + \expandafter\def\expandafter\dtl@rest\expandafter{\@dtl@firsttonil#3}% + \fi +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@dtl@firsttonil} +%\changes{2.24}{2016-01-12}{new} +% \begin{macrocode} +\def\@dtl@firsttonil#1\@nil{#1} +% \end{macrocode} +%\end{macro} +% %\begin{macro}{\dtl@getfirst} % Gets the first object, and stores in \cs{dtl@first}. The remainder % is stored in \cs{dtl@rest}. @@ -2890,9 +2989,21 @@ datatool.dtx \def\dtl@rest{#2}% }% {% - \dtl@ifsingle{#1}{\def\dtl@rest{#2}}{\dtl@getfirst#1#2\end@dtl@getfirst}% + \ifbool{@dtl@utf8} + {% + \expandafter\dtl@if@two@octets#1#2\relax\dtl@end@if@two@octets + {% + \dtl@getfirst@UTFviii#1#2\@nil\end@dtl@getfirst@UTFviii + }% + {% + \dtl@ifsingle{#1}{\def\dtl@rest{#2}}{\dtl@getfirst#1#2\end@dtl@getfirst}% + }% + }% + {% + \dtl@ifsingle{#1}{\def\dtl@rest{#2}}{\dtl@getfirst#1#2\end@dtl@getfirst}% + }% }% -} +}% % \end{macrocode} %\end{macro} % Count registers to store character codes: @@ -2918,7 +3029,7 @@ datatool.dtx #2=-1\relax }% {% - \ifx#1\@dtl@wordbreak\relax + \ifx\@dtl@wordbreak#1\relax % \end{macrocode} % Reached a word break. Set to character code of a space. %\changes{2.13}{2013-01-15}{change from check for space and tilde to check @@ -2932,10 +3043,19 @@ datatool.dtx % \begin{macrocode} #2=0\relax \else + \expandafter\dtl@if@two@octets#1\relax\relax\dtl@end@if@two@octets + {% +% \end{macrocode} +% Argument is a UTF8 character. +% \begin{macrocode} + \dtlsetUTFviiicharcode{#1}{#2}% + }% + {% % \end{macrocode} % Argument is a character, so set to the character code. % \begin{macrocode} - #2=`#1\relax + \dtlsetcharcode{#1}{#2}% + }% \fi \fi }% @@ -2943,6 +3063,336 @@ datatool.dtx % \end{macrocode} %\end{macro} % +%\begin{macro}{\dtlsetcharcode} +%\changes{2.24}{2016-01-12}{new} +% Set the code for the given character. May be redefined by user +% for non-UTF8 encodings (e.g.\ Latin-1). +% \begin{macrocode} +\newcommand*{\dtlsetcharcode}[2]{#2=`#1\relax} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\dtlsetlccharcode} +%\changes{2.24}{2016-01-12}{new} +% Set the lowercase code for the given character. May be redefined by user +% for non-UTF8 encodings (e.g.\ Latin-1). +% \begin{macrocode} +\newcommand*{\dtlsetlccharcode}[2]{#2=\lccode`#1\relax} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\dtlsetUTFviiicharcode} +% Default behaviour is to set all UTF8 characters to code 64 (before +% A). This will need to be redefined according to the relevant alphabet. +%\changes{2.24}{2016-01-12}{new} +% \begin{macrocode} +\newcommand*\dtlsetUTFviiicharcode[2]{\dtlsetdefaultUTFviiicharcode{#1}{#2}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\dtlsetUTFviiilccharcode} +%\changes{2.24}{2016-01-12}{new} +% Default behaviour is to set all UTF8 characters to code 96 (before +% a). This will need to be redefined according to the relevant alphabet. +% \begin{macrocode} +\newcommand*\dtlsetUTFviiilccharcode[2]{\dtlsetdefaultUTFviiilccharcode{#1}{#2}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\dtlsetdefaultUTFviiicharcode} +%\changes{2.24}{2016-01-12}{new} +% Default codes for some supplemental Latin characters. +% \begin{macrocode} +\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 + }% + }% + }% + }% + }% + }% + }% + }% + }% + }% + }% + }% + }% + }% + }% + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\dtlsetdefaultUTFviiilccharcode} +%\changes{2.24}{2016-01-12}{new} +% As above but for case-insensitive comparison. +% \begin{macrocode} +\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 + }% + }% + }% + }% + }% + }% + }% + }% +} +% \end{macrocode} +%\end{macro} +% %\begin{macro}{\dtl@setlccharcode} %\begin{definition} %\cs{dtl@setlccharcode}\marg{c}\marg{count register} @@ -2975,10 +3425,19 @@ datatool.dtx % \begin{macrocode} #2=0\relax \else + \expandafter\dtl@if@two@octets#1\relax\relax\dtl@end@if@two@octets + {% +% \end{macrocode} +% Argument is a UTF8 character. +% \begin{macrocode} + \dtlsetUTFviiilccharcode{#1}{#2}% + }% + {% % \end{macrocode} % Argument is a character, so set to the lower case code. % \begin{macrocode} - #2=\lccode`#1\relax + \dtlsetlccharcode{#1}{#2}% + }% % \end{macrocode} % If the result is zero, which means the character doesn't have a lower case % equivalent. So set to the character code. @@ -3052,13 +3511,13 @@ datatool.dtx % \end{macrocode} % Is the first object of \meta{string1} a single character or a group? % \begin{macrocode} - \expandafter\dtl@ifsingle\expandafter{\dtl@firstA}% + \expandafter\dtl@ifsingleorUTFviii\expandafter{\dtl@firstA}% {% % \end{macrocode} % It's a single character. Is the first object of \meta{string2} a % single character or a group? % \begin{macrocode} - \expandafter\dtl@ifsingle\expandafter{\dtl@firstB}% + \expandafter\dtl@ifsingleorUTFviii\expandafter{\dtl@firstB}% {% % \end{macrocode} % Both are a single character. Get the lower case character code. @@ -3631,6 +4090,20 @@ datatool.dtx % Determine if first character is a letter, a digit or a symbol. % \begin{macrocode} \def\dtl@ifcasechargroup#1#2\dtl@end@ifcasechargroup#3#4#5{% +% \end{macrocode} +% Does it start with a UTF8 character? +% \begin{macrocode} + \expandafter\dtl@if@two@octets#1#2\relax\relax\dtl@end@if@two@octets + {% +% \end{macrocode} +% Get the lower case character code. +%\changes{2.24}{2016-01-12}{added check for UTF8} +% \begin{macrocode} + \dtl@getfirst@UTFviii#1#2\@nil\end@dtl@getfirst@UTFviii + \expandafter\dtlsetUTFviiilccharcode\expandafter{\dtl@first}{\count@}% + \ifnum\count@<`a\relax #5\else#3\fi + }% + {% \dtlifcasechargroup{#1}% {#3}% {% @@ -3649,6 +4122,7 @@ datatool.dtx }% }% {#5}% + }% } % \end{macrocode} %\end{macro} @@ -5232,7 +5706,7 @@ datatool.dtx % Definitions of fixed-point commands that use the \sty{fp} package. % \begin{macrocode} \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{datatool-fp}[2015/07/11 v2.23 (NLCT)] +\ProvidesPackage{datatool-fp}[2016/01/12 v2.24 (NLCT)] % \end{macrocode} % Required packages: % \begin{macrocode} @@ -5521,7 +5995,7 @@ datatool.dtx % Definitions of fixed-point commands that use the \sty{pgfmath} package. % \begin{macrocode} \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{datatool-pgfmath}[2015/07/11 v2.23 (NLCT)] +\ProvidesPackage{datatool-pgfmath}[2016/01/12 v2.24 (NLCT)] % \end{macrocode} % Required packages: % \begin{macrocode} @@ -5778,7 +6252,7 @@ datatool.dtx %\section{Package Declaration} % \begin{macrocode} \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{datatool}[2015/07/11 v2.23 (NLCT)] +\ProvidesPackage{datatool}[2016/01/12 v2.24 (NLCT)] % \end{macrocode} % Load required packages: % \begin{macrocode} @@ -13371,7 +13845,7 @@ datatool.dtx % Declare package: % \begin{macrocode} \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{datagidx}[2015/07/11 v2.23 (NLCT)] +\ProvidesPackage{datagidx}[2016/01/12 v2.24 (NLCT)] % \end{macrocode} % Required packages: % \begin{macrocode} @@ -19280,7 +19754,7 @@ datatool.dtx %\section{Package Declaration} % \begin{macrocode} \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{databib}[2015/07/11 v2.23 (NLCT)] +\ProvidesPackage{databib}[2016/01/12 v2.24 (NLCT)] % \end{macrocode} % Load required packages: % \begin{macrocode} @@ -22203,7 +22677,7 @@ already exists}{}}}} % Declare package: % \begin{macrocode} \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{databar}[2015/07/11 v2.23 (NLCT)] +\ProvidesPackage{databar}[2016/01/12 v2.24 (NLCT)] % \end{macrocode} % Require \sty{xkeyval} package % \begin{macrocode} @@ -23510,7 +23984,7 @@ already exists}{}}}} % Declare package: % \begin{macrocode} \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{datapie}[2015/07/11 v2.23 (NLCT)] +\ProvidesPackage{datapie}[2016/01/12 v2.24 (NLCT)] % \end{macrocode} % Require \sty{xkeyval} package % \begin{macrocode} @@ -24215,7 +24689,7 @@ Try #2-#1 instead of #1-#2}% % Declare package: % \begin{macrocode} \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{dataplot}[2015/07/11 v2.23 (NLCT)] +\ProvidesPackage{dataplot}[2016/01/12 v2.24 (NLCT)] % \end{macrocode} % Required packages % \begin{macrocode} @@ -25837,7 +26311,7 @@ east,southeast,south,southwest,west,northwest}[northeast]{% % Package identification: % \begin{macrocode} \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{person}[2015/07/11 v2.23 (NLCT)] +\ProvidesPackage{person}[2016/01/12 v2.24 (NLCT)] % \end{macrocode} % Requires the \sty{ifthen} package. % \begin{macrocode} diff --git a/Master/texmf-dist/source/latex/datatool/datatool.ins b/Master/texmf-dist/source/latex/datatool/datatool.ins index 74541b91fe8..653f1e5da7f 100644 --- a/Master/texmf-dist/source/latex/datatool/datatool.ins +++ b/Master/texmf-dist/source/latex/datatool/datatool.ins @@ -1,10 +1,10 @@ -% datatool.ins generated using makedtx version 1.1 2015/7/11 16:07 +% datatool.ins generated using makedtx version 1.1 2016/1/13 11:57 \input docstrip \preamble datatool.dtx - Copyright 2015 Nicola Talbot + Copyright 2016 Nicola Talbot This work may be distributed and/or modified under the conditions of the LaTeX Project Public License, either version 1.3 diff --git a/Master/texmf-dist/tex/latex/datatool/databar.sty b/Master/texmf-dist/tex/latex/datatool/databar.sty index 299ab3dcd59..c2be6c46081 100644 --- a/Master/texmf-dist/tex/latex/datatool/databar.sty +++ b/Master/texmf-dist/tex/latex/datatool/databar.sty @@ -7,7 +7,7 @@ %% datatool.dtx (with options: `databar.sty,package') %% %% datatool.dtx -%% Copyright 2015 Nicola Talbot +%% Copyright 2016 Nicola Talbot %% %% This work may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either version 1.3 @@ -39,7 +39,7 @@ %% Grave accent \` Left brace \{ Vertical bar \| %% Right brace \} Tilde \~} \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{databar}[2015/07/11 v2.23 (NLCT)] +\ProvidesPackage{databar}[2016/01/12 v2.24 (NLCT)] \RequirePackage{xkeyval} \RequirePackage{dataplot} \newif\ifDTLcolorbarchart diff --git a/Master/texmf-dist/tex/latex/datatool/databib.sty b/Master/texmf-dist/tex/latex/datatool/databib.sty index 62f315bd24d..fa88e581ed4 100644 --- a/Master/texmf-dist/tex/latex/datatool/databib.sty +++ b/Master/texmf-dist/tex/latex/datatool/databib.sty @@ -7,7 +7,7 @@ %% datatool.dtx (with options: `databib.sty,package') %% %% datatool.dtx -%% Copyright 2015 Nicola Talbot +%% Copyright 2016 Nicola Talbot %% %% This work may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either version 1.3 @@ -39,7 +39,7 @@ %% Grave accent \` Left brace \{ Vertical bar \| %% Right brace \} Tilde \~} \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{databib}[2015/07/11 v2.23 (NLCT)] +\ProvidesPackage{databib}[2016/01/12 v2.24 (NLCT)] \RequirePackage{datatool} \newcommand*{\dtlbib@style}{plain} \define@choicekey{databib.sty}{style}{plain,abbrv,alpha}{% diff --git a/Master/texmf-dist/tex/latex/datatool/datagidx.sty b/Master/texmf-dist/tex/latex/datatool/datagidx.sty index 79800baf338..f954dfd77ed 100644 --- a/Master/texmf-dist/tex/latex/datatool/datagidx.sty +++ b/Master/texmf-dist/tex/latex/datatool/datagidx.sty @@ -7,7 +7,7 @@ %% datatool.dtx (with options: `datagidx.sty,package') %% %% datatool.dtx -%% Copyright 2015 Nicola Talbot +%% Copyright 2016 Nicola Talbot %% %% This work may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either version 1.3 @@ -39,7 +39,7 @@ %% Grave accent \` Left brace \{ Vertical bar \| %% Right brace \} Tilde \~} \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{datagidx}[2015/07/11 v2.23 (NLCT)] +\ProvidesPackage{datagidx}[2016/01/12 v2.24 (NLCT)] \RequirePackage{datatool} \RequirePackage{etoolbox} \RequirePackage{xkeyval} diff --git a/Master/texmf-dist/tex/latex/datatool/datapie.sty b/Master/texmf-dist/tex/latex/datatool/datapie.sty index fc7d158d960..60d8841780f 100644 --- a/Master/texmf-dist/tex/latex/datatool/datapie.sty +++ b/Master/texmf-dist/tex/latex/datatool/datapie.sty @@ -7,7 +7,7 @@ %% datatool.dtx (with options: `datapie.sty,package') %% %% datatool.dtx -%% Copyright 2015 Nicola Talbot +%% Copyright 2016 Nicola Talbot %% %% This work may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either version 1.3 @@ -39,7 +39,7 @@ %% Grave accent \` Left brace \{ Vertical bar \| %% Right brace \} Tilde \~} \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{datapie}[2015/07/11 v2.23 (NLCT)] +\ProvidesPackage{datapie}[2016/01/12 v2.24 (NLCT)] \RequirePackage{xkeyval} \newif\ifDTLcolorpiechart \DTLcolorpiecharttrue diff --git a/Master/texmf-dist/tex/latex/datatool/dataplot.sty b/Master/texmf-dist/tex/latex/datatool/dataplot.sty index 66614bdd404..bce7f288af8 100644 --- a/Master/texmf-dist/tex/latex/datatool/dataplot.sty +++ b/Master/texmf-dist/tex/latex/datatool/dataplot.sty @@ -7,7 +7,7 @@ %% datatool.dtx (with options: `dataplot.sty,package') %% %% datatool.dtx -%% Copyright 2015 Nicola Talbot +%% Copyright 2016 Nicola Talbot %% %% This work may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either version 1.3 @@ -39,7 +39,7 @@ %% Grave accent \` Left brace \{ Vertical bar \| %% Right brace \} Tilde \~} \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{dataplot}[2015/07/11 v2.23 (NLCT)] +\ProvidesPackage{dataplot}[2016/01/12 v2.24 (NLCT)] \RequirePackage{xkeyval} \RequirePackage{tikz} \RequirePackage{datatool} diff --git a/Master/texmf-dist/tex/latex/datatool/datatool-base.sty b/Master/texmf-dist/tex/latex/datatool/datatool-base.sty index 37df89e72d3..bff81cc7e7e 100644 --- a/Master/texmf-dist/tex/latex/datatool/datatool-base.sty +++ b/Master/texmf-dist/tex/latex/datatool/datatool-base.sty @@ -7,7 +7,7 @@ %% datatool.dtx (with options: `datatool-base.sty,package') %% %% datatool.dtx -%% Copyright 2015 Nicola Talbot +%% Copyright 2016 Nicola Talbot %% %% This work may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either version 1.3 @@ -39,7 +39,7 @@ %% Grave accent \` Left brace \{ Vertical bar \| %% Right brace \} Tilde \~} \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{datatool-base}[2015/07/11 v2.23 (NLCT)] +\ProvidesPackage{datatool-base}[2016/01/12 v2.24 (NLCT)] \RequirePackage{etoolbox} \RequirePackage{amsmath} \RequirePackage{xkeyval} @@ -54,6 +54,12 @@ \define@choicekey{datatool-base.sty}{math}[\val\nr]{fp,pgfmath}{% \renewcommand*\@dtl@mathprocessor{#1}% } +\define@boolkey{datatool-base.sty}[@dtl@]{utf8}[true]{} +\ifdef\UTFviii@two@octets +{\booltrue{@dtl@utf8}}% +{\boolfalse{@dtl@utf8}} +\newcommand*{\dtlenableUTFviii}{\booltrue{@dtl@utf8}} +\newcommand*{\dtldisableUTFviii}{\boolfalse{@dtl@utf8}} \providecommand*{\@dtl@mathprocessor}{fp} \ProcessOptionsX \RequirePackage{datatool-\@dtl@mathprocessor} @@ -83,6 +89,29 @@ #4% }% } +\newcommand{\dtl@ifsingleorUTFviii}[3]{% + \ifbool{@dtl@utf8} + {% + \def\@dtl@arg{#1}% + \ifdefempty{\@dtl@arg}% + {% + #3% + }% + {% + \expandafter\dtl@if@two@octets#1\relax\relax\dtl@end@if@two@octets + {% + \dtl@getfirst@UTFviii#1\@nil\end@dtl@getfirst@UTFviii + \ifdefempty\dtl@rest{#2}{#3}% + }% + {% + \@dtl@ifsingle#1\@nil{#2}{#3}% + }% + }% + }% + {% + \dtl@ifsingle{#1}{#2}{#3}% + }% +}% \newcommand{\dtlifintopenbetween}[5]{% \ifnum#1>#2\relax \ifnum#1<#3\relax @@ -1509,8 +1538,8 @@ \expandafter\dtl@getfirst\@dtl@argB\end@dtl@getfirst \let\dtl@firstB=\dtl@first \let\dtl@restB=\dtl@rest - \expandafter\dtl@ifsingle\expandafter{\dtl@firstA}{% - \expandafter\dtl@ifsingle\expandafter{\dtl@firstB}{% + \expandafter\dtl@ifsingleorUTFviii\expandafter{\dtl@firstA}{% + \expandafter\dtl@ifsingleorUTFviii\expandafter{\dtl@firstB}{% \expandafter\dtl@setcharcode\expandafter{\dtl@firstA}{\dtl@codeA}% \expandafter\dtl@setcharcode\expandafter{\dtl@firstB}{\dtl@codeB}% \ifnum\dtl@codeA=-1\relax @@ -1577,6 +1606,28 @@ }% }% } +\def\dtl@if@two@octets#1#2\dtl@end@if@two@octets#3#4{% + \ifbool{@dtl@utf8} + {% + \ifx\UTFviii@two@octets#1\relax + #3% + \else + #4% + \fi + }% + {% + #4% + }% +} +\def\dtl@getfirst@UTFviii#1#2#3\end@dtl@getfirst@UTFviii{% + \def\dtl@first{#1#2}% + \ifx\@nil#3\relax + \def\dtl@rest{}% + \else + \expandafter\def\expandafter\dtl@rest\expandafter{\@dtl@firsttonil#3}% + \fi +} +\def\@dtl@firsttonil#1\@nil{#1} \def\dtl@getfirst#1#2\end@dtl@getfirst{% \def\dtl@first{#1}% \ifdefempty{\dtl@first}% @@ -1584,9 +1635,21 @@ \def\dtl@rest{#2}% }% {% - \dtl@ifsingle{#1}{\def\dtl@rest{#2}}{\dtl@getfirst#1#2\end@dtl@getfirst}% + \ifbool{@dtl@utf8} + {% + \expandafter\dtl@if@two@octets#1#2\relax\dtl@end@if@two@octets + {% + \dtl@getfirst@UTFviii#1#2\@nil\end@dtl@getfirst@UTFviii + }% + {% + \dtl@ifsingle{#1}{\def\dtl@rest{#2}}{\dtl@getfirst#1#2\end@dtl@getfirst}% + }% + }% + {% + \dtl@ifsingle{#1}{\def\dtl@rest{#2}}{\dtl@getfirst#1#2\end@dtl@getfirst}% + }% }% -} +}% \newcount\dtl@codeA \newcount\dtl@codeB \newcommand*{\dtl@setcharcode}[2]{% @@ -1595,17 +1658,307 @@ #2=-1\relax }% {% - \ifx#1\@dtl@wordbreak\relax + \ifx\@dtl@wordbreak#1\relax #2=`\ \relax \else \ifcat\noexpand#1\relax #2=0\relax \else - #2=`#1\relax + \expandafter\dtl@if@two@octets#1\relax\relax\dtl@end@if@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@setlccharcode}[2]{% \ifstrempty{#1}% {% @@ -1618,7 +1971,13 @@ \ifcat\noexpand#1\relax% #2=0\relax \else - #2=\lccode`#1\relax + \expandafter\dtl@if@two@octets#1\relax\relax\dtl@end@if@two@octets + {% + \dtlsetUTFviiilccharcode{#1}{#2}% + }% + {% + \dtlsetlccharcode{#1}{#2}% + }% \ifnum#2=0\relax #2=`#1\relax \fi @@ -1655,9 +2014,9 @@ \expandafter\dtl@getfirst\@dtl@argB\end@dtl@getfirst \let\dtl@firstB=\dtl@first \let\dtl@restB=\dtl@rest - \expandafter\dtl@ifsingle\expandafter{\dtl@firstA}% + \expandafter\dtl@ifsingleorUTFviii\expandafter{\dtl@firstA}% {% - \expandafter\dtl@ifsingle\expandafter{\dtl@firstB}% + \expandafter\dtl@ifsingleorUTFviii\expandafter{\dtl@firstB}% {% \expandafter\dtl@setlccharcode\expandafter{\dtl@firstA}{\dtl@codeA}% \expandafter\dtl@setlccharcode\expandafter{\dtl@firstB}{\dtl@codeB}% @@ -1996,6 +2355,13 @@ } \newcommand*{\@dtl@wordbreak}{ } \def\dtl@ifcasechargroup#1#2\dtl@end@ifcasechargroup#3#4#5{% + \expandafter\dtl@if@two@octets#1#2\relax\relax\dtl@end@if@two@octets + {% + \dtl@getfirst@UTFviii#1#2\@nil\end@dtl@getfirst@UTFviii + \expandafter\dtlsetUTFviiilccharcode\expandafter{\dtl@first}{\count@}% + \ifnum\count@<`a\relax #5\else#3\fi + }% + {% \dtlifcasechargroup{#1}% {#3}% {% @@ -2008,6 +2374,7 @@ }% }% {#5}% + }% } \newcommand*{\dtlifcasechargroup}[4]{% \count@=`#1\relax diff --git a/Master/texmf-dist/tex/latex/datatool/datatool-fp.sty b/Master/texmf-dist/tex/latex/datatool/datatool-fp.sty index 3d2e5a6798e..b1b27fabe8d 100644 --- a/Master/texmf-dist/tex/latex/datatool/datatool-fp.sty +++ b/Master/texmf-dist/tex/latex/datatool/datatool-fp.sty @@ -7,7 +7,7 @@ %% datatool.dtx (with options: `datatool-fp.sty,package') %% %% datatool.dtx -%% Copyright 2015 Nicola Talbot +%% Copyright 2016 Nicola Talbot %% %% This work may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either version 1.3 @@ -39,7 +39,7 @@ %% Grave accent \` Left brace \{ Vertical bar \| %% Right brace \} Tilde \~} \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{datatool-fp}[2015/07/11 v2.23 (NLCT)] +\ProvidesPackage{datatool-fp}[2016/01/12 v2.24 (NLCT)] \RequirePackage{xkeyval} \RequirePackage{fp} \RequirePackage{datatool-base} diff --git a/Master/texmf-dist/tex/latex/datatool/datatool-pgfmath.sty b/Master/texmf-dist/tex/latex/datatool/datatool-pgfmath.sty index 82904f6cdd8..ac7e48ec5a3 100644 --- a/Master/texmf-dist/tex/latex/datatool/datatool-pgfmath.sty +++ b/Master/texmf-dist/tex/latex/datatool/datatool-pgfmath.sty @@ -7,7 +7,7 @@ %% datatool.dtx (with options: `datatool-pgfmath.sty,package') %% %% datatool.dtx -%% Copyright 2015 Nicola Talbot +%% Copyright 2016 Nicola Talbot %% %% This work may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either version 1.3 @@ -39,7 +39,7 @@ %% Grave accent \` Left brace \{ Vertical bar \| %% Right brace \} Tilde \~} \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{datatool-pgfmath}[2015/07/11 v2.23 (NLCT)] +\ProvidesPackage{datatool-pgfmath}[2016/01/12 v2.24 (NLCT)] \RequirePackage{xkeyval} \RequirePackage{pgfrcs,pgfkeys,pgfmath} \ProcessOptionsX diff --git a/Master/texmf-dist/tex/latex/datatool/datatool.sty b/Master/texmf-dist/tex/latex/datatool/datatool.sty index 46b03f234e4..4d27d477dad 100644 --- a/Master/texmf-dist/tex/latex/datatool/datatool.sty +++ b/Master/texmf-dist/tex/latex/datatool/datatool.sty @@ -7,7 +7,7 @@ %% datatool.dtx (with options: `datatool.sty,package') %% %% datatool.dtx -%% Copyright 2015 Nicola Talbot +%% Copyright 2016 Nicola Talbot %% %% This work may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either version 1.3 @@ -39,7 +39,7 @@ %% Grave accent \` Left brace \{ Vertical bar \| %% Right brace \} Tilde \~} \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{datatool}[2015/07/11 v2.23 (NLCT)] +\ProvidesPackage{datatool}[2016/01/12 v2.24 (NLCT)] \RequirePackage{xkeyval} \RequirePackage{ifthen} \RequirePackage{xfor} diff --git a/Master/texmf-dist/tex/latex/datatool/person.sty b/Master/texmf-dist/tex/latex/datatool/person.sty index 8e5bf2590a3..7a2d31ada7e 100644 --- a/Master/texmf-dist/tex/latex/datatool/person.sty +++ b/Master/texmf-dist/tex/latex/datatool/person.sty @@ -7,7 +7,7 @@ %% datatool.dtx (with options: `person.sty,package') %% %% datatool.dtx -%% Copyright 2015 Nicola Talbot +%% Copyright 2016 Nicola Talbot %% %% This work may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either version 1.3 @@ -39,7 +39,7 @@ %% Grave accent \` Left brace \{ Vertical bar \| %% Right brace \} Tilde \~} \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{person}[2015/07/11 v2.23 (NLCT)] +\ProvidesPackage{person}[2016/01/12 v2.24 (NLCT)] \RequirePackage{ifthen} \RequirePackage{datatool} \newcounter{people} -- cgit v1.2.3