summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2012-09-26 22:30:53 +0000
committerKarl Berry <karl@freefriends.org>2012-09-26 22:30:53 +0000
commit23c31c37f42516ec286c308a8b7aabe4af68da61 (patch)
treec55a2b5883ae9172b5ba0ff1a7c182908191520b
parent21d48443cf41d93582f2b299b10ed2edb65e5814 (diff)
datatool (26sep12)
git-svn-id: svn://tug.org/texlive/trunk@27818 c570f23f-e606-0410-a88d-b1316a301751
-rw-r--r--Master/texmf-dist/doc/latex/datatool/CHANGES19
-rw-r--r--Master/texmf-dist/doc/latex/datatool/README6
-rw-r--r--Master/texmf-dist/doc/latex/datatool/datatool-user.pdfbin495654 -> 498420 bytes
-rw-r--r--Master/texmf-dist/doc/latex/datatool/datatool-user.tex79
-rw-r--r--Master/texmf-dist/doc/latex/datatool/datatool.pdfbin732186 -> 731663 bytes
-rw-r--r--Master/texmf-dist/source/latex/datatool/datatool.dtx244
-rw-r--r--Master/texmf-dist/source/latex/datatool/datatool.ins2
-rw-r--r--Master/texmf-dist/tex/latex/datatool/databar.sty2
-rw-r--r--Master/texmf-dist/tex/latex/datatool/databib.sty2
-rw-r--r--Master/texmf-dist/tex/latex/datatool/datapie.sty2
-rw-r--r--Master/texmf-dist/tex/latex/datatool/dataplot.sty2
-rw-r--r--Master/texmf-dist/tex/latex/datatool/datatool-base.sty2
-rw-r--r--Master/texmf-dist/tex/latex/datatool/datatool-fp.sty2
-rw-r--r--Master/texmf-dist/tex/latex/datatool/datatool-pgfmath.sty2
-rw-r--r--Master/texmf-dist/tex/latex/datatool/datatool.sty100
-rw-r--r--Master/texmf-dist/tex/latex/datatool/person.sty2
16 files changed, 408 insertions, 58 deletions
diff --git a/Master/texmf-dist/doc/latex/datatool/CHANGES b/Master/texmf-dist/doc/latex/datatool/CHANGES
index 7236ed455d9..018d5368546 100644
--- a/Master/texmf-dist/doc/latex/datatool/CHANGES
+++ b/Master/texmf-dist/doc/latex/datatool/CHANGES
@@ -1,3 +1,22 @@
+v2.11:
+
+ * datatool.sty:
+
+ - removed unwanted space in \@dtl@updatekeys
+
+ - fixed typo in user guide (should be \dtlforcolumnidx not
+ \dtlforcolumnindex)
+
+ - added \dtldisplayvalign
+
+ - added \DTLaddcolumn
+
+ - added \dtlgetrowforvalue
+
+ - added \dtlupdateentryincurrentrow
+
+ - added \DTLgetrowindex and \dtlgetrowindex
+
v2.10 (2012/07/18):
* datatool.sty:
diff --git a/Master/texmf-dist/doc/latex/datatool/README b/Master/texmf-dist/doc/latex/datatool/README
index 23c357ae670..8395e3a7e3c 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.10
+LaTeX Bundle : datatool v2.11
-Last Modified : 2012-07-18
+Last Modified : 2012-09-25
Author : Nicola Talbot
@@ -124,5 +124,5 @@ dtx and ins file located in texmf/source.
This material is subject to the LaTeX Project Public License.
See http://www.ctan.org/tex-archive/help/Catalogue/licenses.lppl.html for the details of that license.
-http://theoval.cmp.uea.ac.uk/~nlct/
+http://www.dickimaw-books.com/
diff --git a/Master/texmf-dist/doc/latex/datatool/datatool-user.pdf b/Master/texmf-dist/doc/latex/datatool/datatool-user.pdf
index 59d242c0cee..ce9ffcf3c5e 100644
--- a/Master/texmf-dist/doc/latex/datatool/datatool-user.pdf
+++ b/Master/texmf-dist/doc/latex/datatool/datatool-user.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/datatool/datatool-user.tex b/Master/texmf-dist/doc/latex/datatool/datatool-user.tex
index 86ac37d6af7..6560eb60c0c 100644
--- a/Master/texmf-dist/doc/latex/datatool/datatool-user.tex
+++ b/Master/texmf-dist/doc/latex/datatool/datatool-user.tex
@@ -56,15 +56,11 @@
\MakeShortVerb{"}
\DeleteShortVerb{\|}
- \title{User Manual for datatool bundle version~2.10}
- \author{Nicola L.C. Talbot\\[10pt]
-School of Computing Sciences\\
-University of East Anglia\\
-Norwich. Norfolk\\
-NR4 7TJ. United Kingdom.\\
-\url{http://theoval.cmp.uea.ac.uk/~nlct/}}
-
- \date{2012-07-18}
+ \title{User Manual for datatool bundle version~2.11}
+ \author{Nicola L.C. Talbot\\
+\url{http://www.dickimaw-books.com/}}
+
+ \date{2012-09-25}
\maketitle
\pagenumbering{roman}
@@ -79,7 +75,7 @@ The \styfmt{datatool} bundle comes with the following documentation:
\item[\url{datatool.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.10}
+ read \qt{Documented Code for datatool v2.11}
\item[INSTALL] Installation instructions.
@@ -2119,6 +2115,14 @@ For example:
\DTLsetheader{mydata}{Price}{Price (\$)}
\end{verbatim}
+\begin{definition}[\DescribeMacro{\DTLaddcolumn}]
+\cs{DTLaddcolumn}\marg{db}\marg{key}
+\end{definition}
+Adds a new column with the given key to the database \meta{db}. This
+doesn't add any data to the column, just identifies it as an
+available column. The starred version doesn't check if the database
+exists.
+
\section{Loading a Database from an External ASCII File}
\label{sec:loaddb}
@@ -2570,6 +2574,13 @@ This specifies how to format each entry in the columns that contain
only currency or currency mixed with real numbers and/or integers.
This defaults to just displaying \meta{text}.
+\begin{definition}[\DescribeMacro{\dtldisplayvalign}]
+\cs{dtldisplayvalign}
+\end{definition}
+Specifies the vertical alignment of the \env{tabular} environment
+used by \cs{DTLdisplaydb}. Defaults to \texttt{c} (centred). May be redefined
+to \texttt{t} (top) or \texttt{b} (bottom).
+
\begin{definition}[\DescribeMacro{\dtldisplaystarttab}]%
\cs{dtldisplaystarttab}
\end{definition}
@@ -4584,8 +4595,8 @@ iteration, \meta{cs} (which must be a control sequence) is set to
the current element in the column and may be used in \meta{body}.
Alternatively, if you want to identify the column by its index
rather than its key, use:
-\begin{definition}[\DescribeMacro{\dtlforcolumnindex}]%
-\cs{dtlforcolumnindex}\marg{cs}\marg{db}\marg{col index}\marg{body}
+\begin{definition}[\DescribeMacro{\dtlforcolumnidx}]%
+\cs{dtlforcolumnidx}\marg{cs}\marg{db}\marg{col index}\marg{body}
\end{definition}
\begin{definition}[\DescribeMacro{\DTLifdbexists}]
@@ -4765,11 +4776,35 @@ If you want to select from or edit a particular row in a database without having
to iterate through the database using \cs{DTLforeach}, you can use
the commands described in this section.
+\begin{definition}[\DescribeMacro{\DTLgetrowindex}]
+\cs{DTLgetrowindex}\marg{row cs}\marg{db name}\marg{col
+idx}\marg{value}
+\end{definition}
+Gets the row index of the first row in database \meta{db name} where
+the value for column \meta{col idx} matches \meta{value} and stores
+the result in \meta{row cs}, which must be a control sequence.
+An error message is given if not found.
+\begin{definition}[\DescribeMacro{\dtlgetrowindex}]
+\cs{dtlgetrowindex}\marg{row cs}\marg{db name}\marg{col
+idx}\marg{value}
+\end{definition}
+Similar to \cs{DTLgetrowindex} but doesn't produce an error if no match is
+found. You can test the result by using \cs{ifx}\meta{row
+cs}\cs{dtlnovalue}. For example:
+\begin{verbatim}
+\dtlgetrowindex{\myrowidx}{data}{\dtlcolumnindex{data}{Surname}}{Smith}
+\ifx\myrowidx\dtlnovalue
+ Not Found
+\else
+ Found in row \myrowidx.
+\fi
+\end{verbatim}
+
\begin{definition}[\DescribeMacro{\dtlgetrow}]
\cs{dtlgetrow}\marg{db name}\marg{row idx}
\end{definition}
Gets the row with index \meta{row idx} from the database \meta{db
-name}. The required row is stored in the token register
+name}. The required row is stored in the token register
\begin{definition}[\DescribeMacro{\dtlcurrentrow}]
\cs{dtlcurrentrow}
\end{definition}
@@ -4796,6 +4831,13 @@ inserted} error if you misspell the database name and a \qt{Runaway
argument} error if you specify a row index that is out of range.
\end{important}
+\begin{definition}[\DescribeMacro{\dtlgetrowforvalue}]
+\cs{dtlgetrowforvalue}\marg{db name}\marg{column index}\marg{value}
+\end{definition}
+Like \cs{dtlgetrow}, but this gets the row where the entry in column
+\meta{column index} matches \meta{value}. This command produces an
+error if no match is found.
+
You can use the commands below to access or edit \cs{dtlcurrentrow}, but
they won't change the database. Instead, once you've finished
editing \cs{dtlcurrentrow}, you need to reconstruct the database
@@ -4853,8 +4895,15 @@ the column indices).
\cs{dtlappendentrytocurrentrow}\marg{key}\marg{value}
\end{definition}
Appends \meta{value} to the current row for column given by
-\meta{key}. (Note this is the only command in this section to
-reference by key rather than by index.)
+\meta{key}. (Produces an error if there is already an entry for that
+column in the current row.)
+
+\begin{definition}[\DescribeMacro{\dtlappendentrytocurrentrow}]
+\cs{dtlupdateentryincurrentrow}\marg{key}\marg{value}
+\end{definition}
+Behaves like \cs{dtlappendentrytocurrentrow} if the current row
+doesn't contain an entry for the column given by \meta{key},
+otherwise behaves like \cs{dtlreplaceentryincurrentrow}.
\chapter{Pie Charts (\texorpdfstring{\sty{datapie}}{datapie} package)}
\label{sec:datapie}
diff --git a/Master/texmf-dist/doc/latex/datatool/datatool.pdf b/Master/texmf-dist/doc/latex/datatool/datatool.pdf
index bd25ebec2ea..d55c219c3ad 100644
--- a/Master/texmf-dist/doc/latex/datatool/datatool.pdf
+++ b/Master/texmf-dist/doc/latex/datatool/datatool.pdf
Binary files differ
diff --git a/Master/texmf-dist/source/latex/datatool/datatool.dtx b/Master/texmf-dist/source/latex/datatool/datatool.dtx
index 48dbc515cb4..45457a7cdf2 100644
--- a/Master/texmf-dist/source/latex/datatool/datatool.dtx
+++ b/Master/texmf-dist/source/latex/datatool/datatool.dtx
@@ -16,7 +16,7 @@
% -author "Nicola Talbot"
% -codetitle ""
% datatool
-% Created on 2012/7/19 16:34
+% Created on 2012/9/25 22:56
%\fi
%\iffalse
%<*package>
@@ -63,7 +63,7 @@ datatool.dtx
\doxitem{Counter}{counter}{counters}
\doxitem{Option}{option}{package options}
-\CheckSum{16856}
+\CheckSum{17022}
\RecordChanges
\PageIndex
@@ -76,15 +76,11 @@ datatool.dtx
%\fi
%\MakeShortVerb{"}
%
-%\title{Documented Code for datatool v2.10}
-%\author{Nicola L. C. Talbot\\[10pt]
-%School of Computing Sciences\\
-%University of East Anglia\\
-%Norwich. Norfolk\\
-%NR4 7TJ. United Kingdom\\
-%\url{http://theoval.cmp.uea.ac.uk/~nlct/}}
+%\title{Documented Code for datatool v2.11}
+%\author{Nicola L. C. Talbot\\
+%\url{http://www.dickimaw-books.com/}}
%
-%\date{2012-07-18}
+%\date{2012-09-25}
%\maketitle
%
%\pagenumbering{roman}
@@ -119,7 +115,7 @@ datatool.dtx
%
% \begin{macrocode}
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{datatool-base}[2012/07/18 v2.10 (NLCT)]
+\ProvidesPackage{datatool-base}[2012/09/25 v2.11 (NLCT)]
% \end{macrocode}
% Required packages:
% \begin{macrocode}
@@ -4381,7 +4377,7 @@ datatool.dtx
% Definitions of fixed-point commands that use the \sty{fp} package.
% \begin{macrocode}
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{datatool-fp}[2012/07/18 v2.10 (NLCT)]
+\ProvidesPackage{datatool-fp}[2012/09/25 v2.11 (NLCT)]
% \end{macrocode}
% Required packages:
% \begin{macrocode}
@@ -4670,7 +4666,7 @@ datatool.dtx
% Definitions of fixed-point commands that use the \sty{pgfmath} package.
% \begin{macrocode}
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{datatool-pgfmath}[2012/07/18 v2.10 (NLCT)]
+\ProvidesPackage{datatool-pgfmath}[2012/09/25 v2.11 (NLCT)]
% \end{macrocode}
% Required packages:
% \begin{macrocode}
@@ -4910,7 +4906,7 @@ datatool.dtx
%\section{Package Declaration}
% \begin{macrocode}
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{datatool}[2012/07/18 v2.10 (NLCT)]
+\ProvidesPackage{datatool}[2012/09/25 v2.11 (NLCT)]
% \end{macrocode}
% Load required packages:
% \begin{macrocode}
@@ -5796,6 +5792,30 @@ datatool.dtx
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\DTLaddcolumn}
+%\begin{definition}
+%\cs{DTLaddcolumn}\marg{db}\marg{key}
+%\end{definition}
+% Adds a column with given key to given column. No data is added to
+% the column. The starred version doesn't check for the existence of
+% the database.
+%\changes{2.11}{2012-09-25}{new}
+% \begin{macrocode}
+\newcommand*{\DTLaddcolumn}{%
+ \@ifstar\@sDTLaddcolumn\@DTLaddcolumn
+}
+\newcommand{\@DTLaddcolumn}[2]{%
+ \DTLifdbexists{#1}%
+ {\@dtl@updatekeys{#1}{#2}{}}%
+ {\PackageError{datatool}{Can't add new column to database `#1':
+ database doesn't exist}{}}%
+}
+\newcommand{\s@DTLaddcolumn}[2]{%
+ \@dtl@updatekeys{#1}{#2}{}%
+}
+% \end{macrocode}
+%\end{macro}
+%
%\begin{macro}{\@dtl@updatekeys}
%\begin{definition}
%\cs{@dtl@updatekeys}\marg{db}\marg{key}\marg{value}
@@ -5819,12 +5839,13 @@ datatool.dtx
=\dtlcolumnindex{#1}{#2}\relax
% \end{macrocode}
% Get the properties for this column
+%\changes{2.11}{2012-09-25}{remove unwanted space}
% \begin{macrocode}
\edef\@dtl@dogetprops{\noexpand\@dtl@getprops
{\noexpand\@dtl@key}{\noexpand\@dtl@type}%
{\noexpand\@dtl@colhead}{\noexpand\@dtl@before}%
{\noexpand\@dtl@after}{\the\csname dtlkeys@#1\endcsname}%
- {\number\dtlcolumnnum}}
+ {\number\dtlcolumnnum}}%
\@dtl@dogetprops
% \end{macrocode}
% Is the value empty?
@@ -6522,7 +6543,7 @@ datatool.dtx
\newtoks\dtlafterrow
% \end{macrocode}
%\end{macro}
-%
+
%\begin{macro}{\dtlgetrow}
%\begin{definition}
%\cs{dtlgetrow}\marg{db}\marg{row idx}
@@ -6543,6 +6564,31 @@ datatool.dtx
}
% \end{macrocode}
%\end{macro}
+%\begin{macro}{\dtlgetrowforvalue}
+%\begin{definition}
+%\cs{dtlgetrowforvalue}\marg{db}\marg{column idx}\marg{value}
+%\end{definition}
+% Like \cs{dtlgetrow}, but gets the row where the entry in column
+% \meta{column index} matches \meta{value}. Produces an error if row
+% not found.
+%\changes{2012-09-25}{2.11}{new}
+% \begin{macrocode}
+\newcommand*{\dtlgetrowforvalue}[3]{%
+ \dtlgetrowindex{\dtl@rowidx}{#1}{#2}{#3}%
+ \ifx\dtl@rowidx\dtlnovalue
+ \PackageError{datatool}{No row found in database `#1' for
+ column `\number#2' matching `#3'}{}%
+ \else
+ \dtlrownum=\dtl@rowidx\relax
+ \edef\dtldbname{#1}%
+ \expandafter\toks@\expandafter=\csname dtldb@#1\endcsname
+ \edef\@dtl@dogetrow{\noexpand\@dtlgetrow{\the\toks@}{\dtl@rowidx}}%
+ \@dtl@dogetrow
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
%
%\begin{macro}{\@dtlgetrow}
%\begin{definition}
@@ -6883,6 +6929,82 @@ datatool.dtx
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\dtlupdateentryincurrentrow}
+%\begin{definition}
+%\cs{dtlupdateentryincurrentrow}\marg{key}\marg{value}
+%\end{definition}
+% Appends entry to \cs{dtlcurrentrow} if column with given key
+% doesn't exist, otherwise updates the value.
+%\changes{2.11}{2012-09-25}{new}
+% \begin{macrocode}
+\newcommand*{\dtlupdateentryincurrentrow}[2]{%
+% \end{macrocode}
+% Update information about this column (adding new column if
+% necessary)
+% \begin{macrocode}
+ \@dtl@updatekeys{\dtldbname}{#1}{#2}%
+% \end{macrocode}
+% Get column index and store in \cs{dtlcolumnnum}
+% \begin{macrocode}
+ \expandafter\dtlcolumnnum\expandafter
+ =\dtlcolumnindex{\dtldbname}{#1}\relax
+% \end{macrocode}
+% Does this row already have an entry with this key?
+% \begin{macrocode}
+ \edef\dtl@dogetentry{\noexpand\dtlgetentryfromcurrentrow
+ {\noexpand\dtl@entry}{\number\dtlcolumnnum}%
+ }%
+ \dtl@dogetentry
+ \ifx\dtl@entry\dtlnovalue
+% \end{macrocode}
+% There are no entries in this row for the given key.
+% Expand entry value before storing.
+% \begin{macrocode}
+ \protected@edef\@dtl@tmp{#2}%
+ \expandafter\@dtl@toks\expandafter{\@dtl@tmp}%
+% \end{macrocode}
+% Append this entry to the current row.
+% \begin{macrocode}
+ \toks@gput@right@cx{dtlcurrentrow}%
+ {%
+% \end{macrocode}
+% Begin column index specs:
+% \begin{macrocode}
+ \noexpand\db@col@id@w
+ \number\dtlcolumnnum
+ \noexpand\db@col@id@end@
+% \end{macrocode}
+% New entry:
+% \begin{macrocode}
+ \noexpand\db@col@elt@w
+ \the\@dtl@toks
+ \noexpand\db@col@elt@end@
+% \end{macrocode}
+% End column index specs:
+% \begin{macrocode}
+ \noexpand\db@col@id@w
+ \number\dtlcolumnnum
+ \noexpand\db@col@id@end@
+ }%
+% \end{macrocode}
+% Print information to terminal and log file if in verbose mode.
+% \begin{macrocode}
+ \dtl@message{Appended #1\space -> #2\space to database
+ `\dtldbname'}%
+ \else
+% \end{macrocode}
+% There is already an entry in this row for the given key
+% \begin{macrocode}
+ \toks@{#2}%
+ \edef\do@dtlreplaceincurrentrow{%
+ \noexpand\dtlreplaceentryincurrentrow{\the\toks@}{\number\dtlcolumnnum}%
+ }%
+ \do@dtlreplaceincurrentrow
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
%\begin{macro}{\DTLgetvalue}
%\begin{definition}
%\cs{DTLgetvalue}\marg{cs}\marg{db}\marg{r}\marg{c}
@@ -6915,7 +7037,7 @@ datatool.dtx
\db@col@elt@w \@dtlnovalue\db@col@elt@end@% undefined value
\q@nil
\ifx#1\dtlnovalue
- \PackageError{datatool}{There is no element at (row=#3,
+ \PackageError{datatool}{There is no element at (row=#3,\space
column=#4) in database `#2'}{}%
\fi
}
@@ -6945,12 +7067,76 @@ datatool.dtx
\db@row@id@w \@dtlnovalue\db@row@id@end@% undefined row id
\q@nil
\ifx#1\dtlnovalue
- \PackageError{datatool}{There is no element `#4' in
- database `#3'}{}%
+ \PackageError{datatool}{There is no element `#4' in database `#3'}{}%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTLgetrowindex}
+%\begin{definition}
+%\cs{DTLgetrowindex}\marg{row cs}\marg{database}\marg{column index}%
+%\marg{value}
+%\end{definition}
+% Assigns \meta{row cs} to the row index of the
+% first entry in \meta{database} where the entry in \meta{column
+% index} matches \meta{value}.
+%\changes{2.11}{2012-09-25}{new}
+% \begin{macrocode}
+\newcommand*{\DTLgetrowindex}[4]{%
+ \toks@{#4}%
+ \edef\dtl@dogetrowindex{\noexpand\@dtlgetrowindex{\noexpand#1}{#2}{\number#3}{\the\toks@}}%
+ \dtl@dogetrowindex
+ \ifx#1\dtlnovalue
+ \PackageError{datatool}{There is no element `#4' for column
+ \number#3\space in database `#2'}{}%
\fi
}
% \end{macrocode}
%\end{macro}
+%
+%\begin{macro}{\dtlgetrowindex}
+%\begin{definition}
+%\cs{dtlgetrowindex}\marg{row cs}\marg{database}\marg{column index}%
+%\marg{value}
+%\end{definition}
+% As above but doesn't produce an error if not found.
+%\changes{2.11}{2012-09-25}{new}
+% \begin{macrocode}
+\newcommand*{\dtlgetrowindex}[4]{%
+ \toks@{#4}%
+ \edef\dtl@dogetrowindex{\noexpand\@dtlgetrowindex{\noexpand#1}{#2}{\number#3}{\the\toks@}}%
+ \dtl@dogetrowindex
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTLgetrowindex}
+%\begin{definition}
+%\cs{DTLgetrowindex}\marg{row cs}\marg{database}\marg{column index}%
+%\marg{value}
+%\end{definition}
+% Column index must be fully expanded.
+%\changes{2.11}{2012-09-25}{new}
+% \begin{macrocode}
+\newcommand*{\@dtlgetrowindex}[4]{%
+ \def\@dtl@getrowindex##1% stuff before value
+ \db@col@elt@w #4\db@col@elt@end@% value
+ \db@col@id@w #3\db@col@id@end@% column id
+ ##2% stuff after this column
+ \db@row@id@w ##3\db@row@id@end@% row id
+ ##4% stuff after row
+ \q@nil{\def#1{##3}}%
+ \toks@=\csname dtldb@#2\endcsname
+ \expandafter\@dtl@getrowindex\the\toks@% contents of data base
+ \db@col@elt@w #4\db@col@elt@end@% value
+ \db@col@id@w #3\db@col@id@end@% column id
+ \db@row@id@w \@dtlnovalue\db@row@id@end@% undefined row id
+ \q@nil
+}
+% \end{macrocode}
+%\end{macro}
+
%\section{Iterating Through Databases}
%\label{sec:code:loops}
@@ -8644,6 +8830,14 @@ datatool.dtx
\newcommand*{\dtldisplayafterhead}{}
% \end{macrocode}
%\end{macro}
+%\begin{macro}{\dtldisplayvalign}
+%\changes{2.11}{2012-09-25}{new}
+% Stores the vertical alignment specifier for the tabular
+% environment used in \cs{DTLdisplaydb}
+% \begin{macrocode}
+\newcommand*{\dtldisplayvalign}{c}
+% \end{macrocode}
+%\end{macro}
%
%\begin{macro}{\dtldisplaystartrow}
% Indicates what to do at the start of each row (not including
@@ -8696,7 +8890,7 @@ datatool.dtx
% \end{macrocode}
% Begin tabular environment
% \begin{macrocode}
- \edef\@dtl@dobegintab{\noexpand\begin{tabular}{\@dtl@tabargs}}%
+ \edef\@dtl@dobegintab{\noexpand\begin{tabular}[\dtldisplayvalign]{\@dtl@tabargs}}%
\@dtl@dobegintab
% \end{macrocode}
% Do start hook
@@ -11534,7 +11728,7 @@ datatool.dtx
%\section{Package Declaration}
% \begin{macrocode}
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{databib}[2012/07/18 v2.10 (NLCT)]
+\ProvidesPackage{databib}[2012/09/25 v2.11 (NLCT)]
% \end{macrocode}
% Load required packages:
% \begin{macrocode}
@@ -14241,7 +14435,7 @@ already exists}{}}}}
% Declare package:
% \begin{macrocode}
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{databar}[2012/07/18 v2.10 (NLCT)]
+\ProvidesPackage{databar}[2012/09/25 v2.11 (NLCT)]
% \end{macrocode}
% Require \sty{xkeyval} package
% \begin{macrocode}
@@ -15542,7 +15736,7 @@ already exists}{}}}}
% Declare package:
% \begin{macrocode}
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{datapie}[2012/07/18 v2.10 (NLCT)]
+\ProvidesPackage{datapie}[2012/09/25 v2.11 (NLCT)]
% \end{macrocode}
% Require \sty{xkeyval} package
% \begin{macrocode}
@@ -16220,7 +16414,7 @@ Try #2-#1 instead of #1-#2}%
% Declare package:
% \begin{macrocode}
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{dataplot}[2012/07/18 v2.10 (NLCT)]
+\ProvidesPackage{dataplot}[2012/09/25 v2.11 (NLCT)]
% \end{macrocode}
% Required packages
% \begin{macrocode}
@@ -17649,7 +17843,7 @@ east,southeast,south,southwest,west,northwest}[northeast]{%
% Package identification:
% \begin{macrocode}
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{person}[2012/07/18 v2.10 (NLCT)]
+\ProvidesPackage{person}[2012/09/25 v2.11 (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 ace8870e0cc..8b90d4d9259 100644
--- a/Master/texmf-dist/source/latex/datatool/datatool.ins
+++ b/Master/texmf-dist/source/latex/datatool/datatool.ins
@@ -1,4 +1,4 @@
-% datatool.ins generated using makedtx version 0.94b 2012/7/19 16:34
+% datatool.ins generated using makedtx version 0.94b 2012/9/25 22:56
\input docstrip
\preamble
diff --git a/Master/texmf-dist/tex/latex/datatool/databar.sty b/Master/texmf-dist/tex/latex/datatool/databar.sty
index 513e39c512e..972aa20eceb 100644
--- a/Master/texmf-dist/tex/latex/datatool/databar.sty
+++ b/Master/texmf-dist/tex/latex/datatool/databar.sty
@@ -39,7 +39,7 @@
%% Grave accent \` Left brace \{ Vertical bar \|
%% Right brace \} Tilde \~}
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{databar}[2012/07/18 v2.10 (NLCT)]
+\ProvidesPackage{databar}[2012/09/25 v2.11 (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 1229b6dcfc7..c5c7ada4dfc 100644
--- a/Master/texmf-dist/tex/latex/datatool/databib.sty
+++ b/Master/texmf-dist/tex/latex/datatool/databib.sty
@@ -39,7 +39,7 @@
%% Grave accent \` Left brace \{ Vertical bar \|
%% Right brace \} Tilde \~}
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{databib}[2012/07/18 v2.10 (NLCT)]
+\ProvidesPackage{databib}[2012/09/25 v2.11 (NLCT)]
\RequirePackage{datatool}
\newcommand*{\dtlbib@style}{plain}
\define@choicekey{databib.sty}{style}{plain,abbrv,alpha}{%
diff --git a/Master/texmf-dist/tex/latex/datatool/datapie.sty b/Master/texmf-dist/tex/latex/datatool/datapie.sty
index f464e584153..21da0dc72a1 100644
--- a/Master/texmf-dist/tex/latex/datatool/datapie.sty
+++ b/Master/texmf-dist/tex/latex/datatool/datapie.sty
@@ -39,7 +39,7 @@
%% Grave accent \` Left brace \{ Vertical bar \|
%% Right brace \} Tilde \~}
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{datapie}[2012/07/18 v2.10 (NLCT)]
+\ProvidesPackage{datapie}[2012/09/25 v2.11 (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 29bc2632de6..2131f0a62d5 100644
--- a/Master/texmf-dist/tex/latex/datatool/dataplot.sty
+++ b/Master/texmf-dist/tex/latex/datatool/dataplot.sty
@@ -39,7 +39,7 @@
%% Grave accent \` Left brace \{ Vertical bar \|
%% Right brace \} Tilde \~}
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{dataplot}[2012/07/18 v2.10 (NLCT)]
+\ProvidesPackage{dataplot}[2012/09/25 v2.11 (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 90e7a0c545a..005b6acd55a 100644
--- a/Master/texmf-dist/tex/latex/datatool/datatool-base.sty
+++ b/Master/texmf-dist/tex/latex/datatool/datatool-base.sty
@@ -39,7 +39,7 @@
%% Grave accent \` Left brace \{ Vertical bar \|
%% Right brace \} Tilde \~}
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{datatool-base}[2012/07/18 v2.10 (NLCT)]
+\ProvidesPackage{datatool-base}[2012/09/25 v2.11 (NLCT)]
\RequirePackage{etoolbox}
\RequirePackage{amsmath}
\RequirePackage{xkeyval}
diff --git a/Master/texmf-dist/tex/latex/datatool/datatool-fp.sty b/Master/texmf-dist/tex/latex/datatool/datatool-fp.sty
index 135d81f2c5b..de6bf14aa2c 100644
--- a/Master/texmf-dist/tex/latex/datatool/datatool-fp.sty
+++ b/Master/texmf-dist/tex/latex/datatool/datatool-fp.sty
@@ -39,7 +39,7 @@
%% Grave accent \` Left brace \{ Vertical bar \|
%% Right brace \} Tilde \~}
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{datatool-fp}[2012/07/18 v2.10 (NLCT)]
+\ProvidesPackage{datatool-fp}[2012/09/25 v2.11 (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 4da81dbc76f..b6a593d36eb 100644
--- a/Master/texmf-dist/tex/latex/datatool/datatool-pgfmath.sty
+++ b/Master/texmf-dist/tex/latex/datatool/datatool-pgfmath.sty
@@ -39,7 +39,7 @@
%% Grave accent \` Left brace \{ Vertical bar \|
%% Right brace \} Tilde \~}
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{datatool-pgfmath}[2012/07/18 v2.10 (NLCT)]
+\ProvidesPackage{datatool-pgfmath}[2012/09/25 v2.11 (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 103f7daa59a..b8d1237baf7 100644
--- a/Master/texmf-dist/tex/latex/datatool/datatool.sty
+++ b/Master/texmf-dist/tex/latex/datatool/datatool.sty
@@ -39,7 +39,7 @@
%% Grave accent \` Left brace \{ Vertical bar \|
%% Right brace \} Tilde \~}
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{datatool}[2012/07/18 v2.10 (NLCT)]
+\ProvidesPackage{datatool}[2012/09/25 v2.11 (NLCT)]
\RequirePackage{xkeyval}
\RequirePackage{ifthen}
\RequirePackage{xfor}
@@ -363,6 +363,18 @@
\newtoks\@dtl@before
\newtoks\@dtl@after
\newtoks\@dtl@colhead
+\newcommand*{\DTLaddcolumn}{%
+ \@ifstar\@sDTLaddcolumn\@DTLaddcolumn
+}
+\newcommand{\@DTLaddcolumn}[2]{%
+ \DTLifdbexists{#1}%
+ {\@dtl@updatekeys{#1}{#2}{}}%
+ {\PackageError{datatool}{Can't add new column to database `#1':
+ database doesn't exist}{}}%
+}
+\newcommand{\s@DTLaddcolumn}[2]{%
+ \@dtl@updatekeys{#1}{#2}{}%
+}
\newcommand*{\@dtl@updatekeys}[3]{%
\@sDTLifhaskey{#1}{#2}%
{%
@@ -372,7 +384,7 @@
{\noexpand\@dtl@key}{\noexpand\@dtl@type}%
{\noexpand\@dtl@colhead}{\noexpand\@dtl@before}%
{\noexpand\@dtl@after}{\the\csname dtlkeys@#1\endcsname}%
- {\number\dtlcolumnnum}}
+ {\number\dtlcolumnnum}}%
\@dtl@dogetprops
\ifstrempty{#3}%
{%
@@ -662,6 +674,7 @@
\newtoks\dtlcurrentrow
\newtoks\dtlbeforerow
\newtoks\dtlafterrow
+
\newcommand*{\dtlgetrow}[2]{%
\dtlrownum=#2\relax
\edef\dtldbname{#1}%
@@ -669,6 +682,19 @@
\edef\@dtl@dogetrow{\noexpand\@dtlgetrow{\the\toks@}{\number#2}}%
\@dtl@dogetrow
}
+\newcommand*{\dtlgetrowforvalue}[3]{%
+ \dtlgetrowindex{\dtl@rowidx}{#1}{#2}{#3}%
+ \ifx\dtl@rowidx\dtlnovalue
+ \PackageError{datatool}{No row found in database `#1' for
+ column `\number#2' matching `#3'}{}%
+ \else
+ \dtlrownum=\dtl@rowidx\relax
+ \edef\dtldbname{#1}%
+ \expandafter\toks@\expandafter=\csname dtldb@#1\endcsname
+ \edef\@dtl@dogetrow{\noexpand\@dtlgetrow{\the\toks@}{\dtl@rowidx}}%
+ \@dtl@dogetrow
+ \fi
+}
\newcommand*{\@dtlgetrow}[2]{%
\def\@dtl@getrow##1% before stuff
\db@row@elt@w% start of the row
@@ -811,6 +837,39 @@
there is already an entry for key `#1' in this row}{}%
\fi
}
+\newcommand*{\dtlupdateentryincurrentrow}[2]{%
+ \@dtl@updatekeys{\dtldbname}{#1}{#2}%
+ \expandafter\dtlcolumnnum\expandafter
+ =\dtlcolumnindex{\dtldbname}{#1}\relax
+ \edef\dtl@dogetentry{\noexpand\dtlgetentryfromcurrentrow
+ {\noexpand\dtl@entry}{\number\dtlcolumnnum}%
+ }%
+ \dtl@dogetentry
+ \ifx\dtl@entry\dtlnovalue
+ \protected@edef\@dtl@tmp{#2}%
+ \expandafter\@dtl@toks\expandafter{\@dtl@tmp}%
+ \toks@gput@right@cx{dtlcurrentrow}%
+ {%
+ \noexpand\db@col@id@w
+ \number\dtlcolumnnum
+ \noexpand\db@col@id@end@
+ \noexpand\db@col@elt@w
+ \the\@dtl@toks
+ \noexpand\db@col@elt@end@
+ \noexpand\db@col@id@w
+ \number\dtlcolumnnum
+ \noexpand\db@col@id@end@
+ }%
+ \dtl@message{Appended #1\space -> #2\space to database
+ `\dtldbname'}%
+ \else
+ \toks@{#2}%
+ \edef\do@dtlreplaceincurrentrow{%
+ \noexpand\dtlreplaceentryincurrentrow{\the\toks@}{\number\dtlcolumnnum}%
+ }%
+ \do@dtlreplaceincurrentrow
+ \fi
+}
\newcommand*{\DTLgetvalue}[4]{%
\edef\dtl@dogetvalue{\noexpand\dtl@getvalue{\noexpand#1}{#2}%
{\number#3}{\number#4}}%
@@ -831,7 +890,7 @@
\db@col@elt@w \@dtlnovalue\db@col@elt@end@% undefined value
\q@nil
\ifx#1\dtlnovalue
- \PackageError{datatool}{There is no element at (row=#3,
+ \PackageError{datatool}{There is no element at (row=#3,\space
column=#4) in database `#2'}{}%
\fi
}
@@ -850,10 +909,38 @@
\db@row@id@w \@dtlnovalue\db@row@id@end@% undefined row id
\q@nil
\ifx#1\dtlnovalue
- \PackageError{datatool}{There is no element `#4' in
- database `#3'}{}%
+ \PackageError{datatool}{There is no element `#4' in database `#3'}{}%
+ \fi
+}
+\newcommand*{\DTLgetrowindex}[4]{%
+ \toks@{#4}%
+ \edef\dtl@dogetrowindex{\noexpand\@dtlgetrowindex{\noexpand#1}{#2}{\number#3}{\the\toks@}}%
+ \dtl@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@dogetrowindex{\noexpand\@dtlgetrowindex{\noexpand#1}{#2}{\number#3}{\the\toks@}}%
+ \dtl@dogetrowindex
+}
+\newcommand*{\@dtlgetrowindex}[4]{%
+ \def\@dtl@getrowindex##1% stuff before value
+ \db@col@elt@w #4\db@col@elt@end@% value
+ \db@col@id@w #3\db@col@id@end@% column id
+ ##2% stuff after this column
+ \db@row@id@w ##3\db@row@id@end@% row id
+ ##4% stuff after row
+ \q@nil{\def#1{##3}}%
+ \toks@=\csname dtldb@#2\endcsname
+ \expandafter\@dtl@getrowindex\the\toks@% contents of data base
+ \db@col@elt@w #4\db@col@elt@end@% value
+ \db@col@id@w #3\db@col@id@end@% column id
+ \db@row@id@w \@dtlnovalue\db@row@id@end@% undefined row id
+ \q@nil
+}
\long\def\@dtlforeachrow(#1,#2)\in#3\do#4{%
\edef\dtl@tmp{\expandafter\the\csname dtldb@#3\endcsname}%
@@ -1620,6 +1707,7 @@
\newcommand*{\dtldisplaystarttab}{}
\newcommand*{\dtldisplayendtab}{}
\newcommand*{\dtldisplayafterhead}{}
+\newcommand*{\dtldisplayvalign}{c}
\newcommand*{\dtldisplaystartrow}{}
\newcommand*{\DTLdisplaydb}[2][]{%
@@ -1640,7 +1728,7 @@
\dtladdalign\@dtl@tabargs\@dtl@type\@dtl@idx\@dtl@maxcols
}
}%
- \edef\@dtl@dobegintab{\noexpand\begin{tabular}{\@dtl@tabargs}}%
+ \edef\@dtl@dobegintab{\noexpand\begin{tabular}[\dtldisplayvalign]{\@dtl@tabargs}}%
\@dtl@dobegintab
\dtldisplaystarttab
\@dtl@resetdoamp
diff --git a/Master/texmf-dist/tex/latex/datatool/person.sty b/Master/texmf-dist/tex/latex/datatool/person.sty
index 8d77dbcacd0..84d18ad96da 100644
--- a/Master/texmf-dist/tex/latex/datatool/person.sty
+++ b/Master/texmf-dist/tex/latex/datatool/person.sty
@@ -39,7 +39,7 @@
%% Grave accent \` Left brace \{ Vertical bar \|
%% Right brace \} Tilde \~}
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{person}[2012/07/18 v2.10 (NLCT)]
+\ProvidesPackage{person}[2012/09/25 v2.11 (NLCT)]
\RequirePackage{ifthen}
\RequirePackage{datatool}
\newcounter{people}