% \iffalse meta-comment
% An Infrastructure for managing addresses and affiliations in LaTeX
% $URL: https://svn.kwarc.info/repos/stex/trunk/sty/workaddress/workaddress.dtx $ 
% $Rev: 1999 $; last modified by $Author: kohlhase $ 
% $Date: 2012-01-28 08:32:11 +0100 (Sat, 28 Jan 2012) $
% Copyright (c) 2011 Michael Kohlhase, all rights reserved
%               this file is released under the
%               LaTeX Project Public License (LPPL)
% \fi
% 
% \iffalse
%<*package>
\NeedsTeXFormat{LaTeX2e}[1999/12/01]
\ProvidesPackage{workaddress}[2012/01/28 v0.4 WorkAddress]
%</package>
%<*driver>
\documentclass{ltxdoc}
\usepackage{workaddress,sref,url,array,float}
\usepackage[show]{ed}
\usepackage[hyperref=auto,style=alphabetic]{biblatex}
\bibliography{kwarc}
\usepackage{../ctansvn}
\usepackage{hyperref}
\usepackage{stex-logo}
\usepackage[eso-foot,today]{svninfo}
\svnInfo $Id: workaddress.dtx 1999 2012-01-28 07:32:11Z kohlhase $
\svnKeyword $HeadURL: https://svn.kwarc.info/repos/stex/trunk/sty/workaddress/workaddress.dtx $
\makeindex
\floatstyle{boxed}
\newfloat{exfig}{thp}{lop}
\floatname{exfig}{Example}
\WAperson[id=jdoe,affiliation=dfki,department=skss,
           url=http://dfki.de/jdoe]
          {John Doe}
\WAperson[id=miko,affiliation=jacu,department=case,
           url=http://kwarc.info/kohlhase]
          {Michael Kohlhase}
\WAinstitution[id=case,acronym=CASE,
                url=http://jacobs-university.de/ses/case,partof=jacu]
               {Center for Advanced Systems Engineering}
\WAinstitution[id=jacu,url=http://jacobs-university.de,shortname=Jacobs University,acronym=JU]
               {Jacobs University Bremen}
\WAinstitution[id=skss,url=http://dfki.de/sks,partof=dfki,acronym=SKS,]
               {Safe and Secure Cognitive Systems}
\WAinstitution[id=dfki,url=http://dfki.de,acronym=DFKI,shortname=DFKI]
               {German Research Center for Artificial Intelligence}
\def\tracissue#1{\cite{sTeX:online}, \hyperlink{http://trac.kwarc.info/sTeX/ticket/#1}{issue #1}}
\begin{document}\DocInput{workaddress.dtx}\end{document}
%</driver>
% \fi
%
%\CheckSum{341}
%
% \changes{v0.4}{2011/11/04}{Extracting from dcm.sty}
% \changes{v0.4}{2012/01/18}{new functionality for logos}
% 
% \GetFileInfo{workaddress.sty}
% 
% \MakeShortVerb{\|}
% \def\scsys#1{{{\sc #1}}\index{#1@{\sc #1}}}
% \def\latexml{\scsys{LaTeXML}}
%
%   \title{{\texttt{workaddress.sty}}: An Infrastructure for managing Addresses and
%   Affiliations in {\LaTeX}\thanks{Version {\fileversion} (last revised {\filedate})}}
%   \author{\WAauthorblock[aff,url]{miko,jdoe}}
%   \maketitle
%   \begin{abstract}The |workaddress| package allows manage addresses and Affiliations in
%     a bib\TeX-like manner.\ednote{continue}
%   \end{abstract}
%
% \setcounter{tocdepth}{2}\tableofcontents\newpage
%
% \section{Introduction}\label{sec:intro}
%
% The |workaddress| package allows manage Addresses and affiliations of persons in a
% bib\TeX-like manner.\ednote{continue}
% 
% \section{The User Interface}\label{sec:user}
% 
% \subsection{Package Options}\label{sec:user.options}
% 
% The |workaddress| package takes a single option: \DescribeMacro{showmeta}|showmeta|. If
% this is set, then the metadata keys are shown (see~\cite{Kohlhase:metakeys:ctan} for
% details and customization options).
%
% \subsection{Database Entries for Persons}
% 
% The |workaddress| package recognizes that from a metadata perspective, persons are complex
% entities. In particular, specifying metadata is a tedious and repetitive task that leads
% to embarrassing errors. Therefore the |workaddress| package takes a hint from bibTeX and allows
% to specify personal metadata in a database and use it by a database key.
% \begin{exfig}[ht]
% \begin{verbatim}
% \WAperson[id=jdoe,affiliation=dfki,department=skss,
%            url=http://dfki.de/jdoe]
%           {John Doe}
% \WAperson[id=miko,affiliation=jacu,department=case,
%            url=http://kwarc.info/kohlhase]
%           {Michael Kohlhase}
% \end{verbatim}
% \caption{A small database of Persons}
% \label{fig:persons}
% \end{exfig}
% The \DescribeMacro{\WAperson}|\WAperson| macro allows to specify personal metadata\ednote{This
% should be synchronized with the FOAF specification~\cite{FOAF:spec}} with the following
% keys: 
% \begin{center}
% \begin{tabular}{|l|l|l|}\hline
% key & value & comment\\\hline\hline
% id & string & identifier of this person\\\hline
% birthdate & date & birthdate \\\hline
% email & & the primary e-mail address\\\hline
% url & URI & primary home page \\\hline
% affiliation & Inst. identifier & the primary professional affiliation\\\hline
% personaltitle & string & the personal title e.g. {\texttt{King}}\\\hline
% academictitle & string & the academic title e.g. {\texttt{Prof. Dr.}}\\\hline
% department & Inst. identifier & the department specified in the work address\\\hline
% workaddress & long string & the work address \\\hline
% privaddress & long string & the private address \\\hline
% worktel & string & work telephone number \\\hline
% privtel & string & private telephone number\\\hline
% workfax & string & work fax number \\\hline
% privfax & string & private fax number \\\hline
% worktelfax & string & if the phone and fax share a prefix, give this as well \\\hline
% privtelfax & string & dito\\\hline
% \end{tabular}
% \end{center}
% In Figure~\ref{fig:persons} we have specified (minimal) metadata for the authors of the
% |workaddress| package. The metadata can be accessed by specifying the identifiers (given by the
% |id| key) in the |workaddress| macros defined below, see for instance the |\WAcreators| macro
% in Figure~\ref{fig:workaddressblock}, which leads to the title block of this note.
% 
% Like in bibTeX~\cite{Patashnik:b88}, it is a good idea to collect the metadata in a separate
% file that is input in the document. In practice it may be possible to generate these
% files from conventional address databases.
% 
% \subsection{Institutions}
% 
% Institutions are treated analogously to persons.
% \begin{exfig}[ht]
% \begin{verbatim}
% \WAinstitution[id=case,partof=jacu,acronym=CASE,
%                 url=http://jacobs-university.de/ses/case]
%                {Center for Advanced Systems Engineering}
% \WAinstitution[id=jacu,url=http://jacobs-university.de]
%                {Jacobs University Bremen}
% \WAinstitution[id=skss,partof=dfki,url=http://dfki.de/sks,acronym=SKS]
%                {Safe and Secure Cognitive Systems}
% \WAinstitution[id=dfki,url=http://dfki.de,shortname=DFKI,acronym=DFKI]
%                {German Research Center for Artificial Intelligence}
% \end{verbatim}
% \caption{A small Database of Institutions and their Parts}
% \label{fig:institutions}
% \end{exfig}
% The \DescribeMacro{\WAinstitution}|\WAinstitution| macro allows to specify personal
% metadata\ednote{This should be synchronized with the FOAF
% specification~\cite{FOAF:spec}} with the following keys:
% \begin{center}
% \begin{tabular}{|l|l|l|}\hline
% key & value & comment\\\hline\hline
% id & string & identifier of this person\\\hline
% url & URI & primary home page \\\hline
% partof & Inst. identifier & parent institution\\\hline
% \end{tabular}
% \end{center}
% 
% \subsection{Applications}\label{sec:user.appl}
% 
% The data from the address database can be used in various ways. For instance, the
% \DescribeMacro{\WAauthorblock}|\WAauthorblock| macro creates a block of users and their
% affiliations. In the context of the database from Figures~\ref{fig:persons}
% and~\ref{fig:institutions}, |\WAauthorblock{miko,jdoe}| creates
% \begin{center}\WAauthorblock{miko,jdoe}\end{center}
%
% \DescribeMacro{\wa@institution@logo}|\wa@institution@logo| creates the logo of an
% institution from the database, and (if that is not there create a box and a message
% instead.)
% 
% \section{Limitations}\label{sec:limitations}
% 
% In this section we document known limitations. If you want to help alleviate them,
% please feel free to contact the package author. Some of them are currently discussed in
% the \sTeX TRAC~\cite{sTeX:online}. 
% \begin{compactenum}
% \item none reported yet
% \end{compactenum}
% 
% \StopEventually{\printbibliography}
% 
% \section{The Implementation}\label{sec:impl}
%
% The |workaddress| package generates two files: the {\LaTeX} package (all the code between
% {\textsf{$\langle$*package$\rangle$}} and {\textsf{$\langle$/package$\rangle$}}) and the
% {\latexml} bindings (between {\textsf{$\langle$*ltxml$\rangle$ and
%     $\langle$/ltxml$\rangle$}}). We keep the corresponding code fragments together,
% since the documentation applies to both of them and to prevent them from getting out of
% sync.
%
% \subsection{Package Options}\label{sec:impl.options}
% The first step is to declare (a few) package options that handle whether certain
% information is printed or not. They all come with their own conditionals that are set by
% the options.
%
%    \begin{macrocode}
%<*package>
\DeclareOption{showmeta}{\PassOptionsToPackage{\CurrentOption}{metakeys}}
\ProcessOptions
%</package>
%    \end{macrocode}
%
% The first measure is to ensure that the |KeyVal| package is loaded (in the right
% version). For {\latexml} we also initialize the package inclusions.
%    \begin{macrocode}
%<*package>
\RequirePackage{sref}
\RequirePackage{pgf}
%</package>
%<*ltxml>
# -*- CPERL -*-
package LaTeXML::Package::Pool;
use strict;
use LaTeXML::Global;
use LaTeXML::Package;
RequirePackage('sref');
%</ltxml>
%    \end{macrocode}
%
% \subsection{Persons}
% 
% To implement the |\WAperson| macro, we need to implement its keywords.
%
%    \begin{macrocode}
%<*package>
\addmetakey{wa@person}{id}
\addmetakey{wa@person}{birthdate}
\addmetakey{wa@person}{email}
\addmetakey{wa@person}{url}
\addmetakey{wa@person}{affiliation}
\addmetakey{wa@person}{personaltitle}
\addmetakey{wa@person}{academictitle}
\addmetakey{wa@person}{department}
\addmetakey{wa@person}{workaddress}
\addmetakey{wa@person}{privaddress}
\addmetakey{wa@person}{worktel}
\addmetakey{wa@person}{privtel}
\addmetakey{wa@person}{workfax}
\addmetakey{wa@person}{privfax}
\addmetakey{wa@person}{worktelfax}
\addmetakey{wa@person}{privtelfax}
%    \end{macrocode}
% 
% \begin{macro}{\wa@def}
%   The next macro is an auxiliary one that puts the value into an appropriate token
%   register. 
%    \begin{macrocode}
\def\wa@def#1#2#3#4{\expandafter\xdef\csname wa@#1@#2@#3\endcsname{#4}}
%</package>
%    \end{macrocode}
% 
% At the {\latexml} side we have a function |ExportMetadata| that does a similar job,
% fishing out the metadata keys from the keyval arguments and storing them in a safe place
% so they can be accessed later.
% 
%    \begin{macrocode}
%<*ltxml>
 sub getKeyValue_noDelim {
 my ($keyval,$key)=@_;
 my $valuelist = $keyval && ToString($keyval->getValue($key));
 $valuelist =~ s/^{(.*)}$/$1/g if $valuelist;
 return $valuelist;
}
sub ExportMetadata {
  my $keys = shift;
  my($id, $email,$affill,$address,$url,$name)=$keys
    && map(getKeyValue_noDelim($keys,$_),qw(id email affiliation address url name));
  if ($id) {
   AssignValue('WA_'.$id.'_email',$email,'global') if $email;
   AssignValue('WA_'.$id.'_affiliation',$affill,'global') if $affill;
   AssignValue('WA_'.$id.'_address',$email,'global') if $email;
   AssignValue('WA_'.$id.'_url',$url,'global') if $url;
   AssignValue('WA_'.$id.'_name',$name,'global') if $name;
  } else {print STDERR "Warning: key 'id' undefined in \\WAperson\n"};
  return;}#$ 
%</ltxml>
%    \end{macrocode}
% \end{macro}
% 
% 
% \begin{macro}{\wa@ref@test}
%   This macro tests whether the information specified is defined, and gives an error
%   message else.
%    \begin{macrocode}
%<*package>
\def\wa@ref@test#1#2#3{%
\@ifundefined{wa@#1@#2@#3}%
{\PackageError{workaddress}{reference to undefined #3 of #1 #2}%
{you must define a #1 with #2=#3\MessageBreak% 
via the macro \protect\WA#1, before you can use it!}}
{}}
%    \end{macrocode}
% \end{macro}
%
% With this, referencing is simple
%
% \begin{macro}{\wa@ref}
%    \begin{macrocode}
\def\wa@ref#1#2#3{\wa@ref@test{#1}{#2}{#3}\csname wa@#1@#2@#3\endcsname}
%    \end{macrocode}
% \end{macro}
% 
% With this we can define the |\WAperson| macro, it just clears the keys, sets them
% again, and stores them in token registers. If course only if a |id| attribute is given,
% else we raise an error.
% 
% \begin{macro}{WAperson}
%    \begin{macrocode}
\let\wa@persons=\relax
\newcommand{\WAperson}[2][]{\metasetkeys{wa@person}{#1}
\ifx\wa@person@id\@empty\@latex@warning{key 'id' undefined in WAperson}\else
\wa@def{person}\wa@person@id{id}{\wa@person@id}% redundant, but useful for checking
\wa@def{person}\wa@person@id{name}{#2}
\wa@def{person}\wa@person@id{email}{\wa@person@email}
\wa@def{person}\wa@person@id{birthdate}{\wa@person@birthdate}
\wa@def{person}\wa@person@id{url}{\wa@person@url}
\wa@def{person}\wa@person@id{affiliation}{\wa@person@affiliation}
\wa@def{person}\wa@person@id{workaddress}{\wa@person@workaddress}
\wa@def{person}\wa@person@id{privaddress}{\wa@person@privaddress}
\wa@def{person}\wa@person@id{personaltitle}{\wa@person@personaltitle}
\wa@def{person}\wa@person@id{academictitle}{\wa@person@academictitle}
\wa@def{person}\wa@person@id{department}{\wa@person@department}
\wa@def{person}\wa@person@id{workaddress}{\wa@person@workaddress}
\wa@def{person}\wa@person@id{privaddress}{\wa@person@privaddress}
\wa@def{person}\wa@person@id{worktel}{\wa@person@worktel}
\wa@def{person}\wa@person@id{privtel}{\wa@person@privtel}
\wa@def{person}\wa@person@id{workfax}{\wa@person@workfax}
\wa@def{person}\wa@person@id{privfax}{\wa@person@privfax}
\wa@def{person}\wa@person@id{worktelfax}{\wa@person@worktelfax}
\wa@def{person}\wa@person@id{privtelfax}{\wa@person@privtelfax}
\@ifundefined{wa@persons}
{\xdef\wa@persons{\wa@person@id}}
{\xdef\wa@persons{\wa@persons,\wa@person@id}}
\fi}
\newcommand\DCMperson[2][]{\WAperson[#1]{#2}%
\PackageWarning{workaddress}{\protect\DCMperson\space is deprecated, use \protect\WAperson\space instead}}
%</package>
%<*ltxml>
DefKeyVal('wa@person','id','Semiverbatim');
DefKeyVal('wa@person','birthdate','Semiverbatim');
DefKeyVal('wa@person','email','Semiverbatim');
DefKeyVal('wa@person','url','Semiverbatim');
DefKeyVal('wa@person','affiliation','Semiverbatim');
DefKeyVal('wa@person','personaltitle','Semiverbatim');
DefKeyVal('wa@person','academictitle','Semiverbatim');
DefKeyVal('wa@person','department','Semiverbatim');
DefKeyVal('wa@person','workaddress','Semiverbatim');
DefKeyVal('wa@person','privaddress','Semiverbatim');
DefKeyVal('wa@person','worktel','Semiverbatim');
DefKeyVal('wa@person','privtel','Semiverbatim');
DefKeyVal('wa@person','workfax','Semiverbatim');
DefKeyVal('wa@person','privfax','Semiverbatim');
DefKeyVal('wa@person','worktelfax','Semiverbatim');
DefKeyVal('wa@person','privtelfax','Semiverbatim');

DefConstructor('\WAperson OptionalKeyVals:wa@person {}','', 
afterDigest=>sub {
  my ($stomach,$whatsit)=@_;
  my $keys=$whatsit->getArg(1);
  my $name=ToString($whatsit->getArg(2));
  $keys->setValue('name',$name);
  ExportMetadata($keys);
  return;
});#$
%</ltxml>
%    \end{macrocode}
% \end{macro}
%
% \subsection{Institutions}
% 
% To implement the |\WAinstitution| macro, we need to implement its keywords first.
%
%    \begin{macrocode}
%<*package>
\addmetakey{wa@institution}{id}
\addmetakey{wa@institution}{shortname}
\addmetakey{wa@institution}{acronym}
\addmetakey{wa@institution}{url}
\addmetakey{wa@institution}{partof}
\addmetakey{wa@institution}{countryshort}
\addmetakey{wa@institution}{logo}
\addmetakey{wa@institution}{streetaddress}
\addmetakey{wa@institution}{townzip}
\addmetakey{wa@institution}{type}
\addmetakey{wa@institution}{country}
%    \end{macrocode}
% and we proceed as for |\WAperson|, 
%    \begin{macrocode}
\let\wa@institutions=\relax
%    \end{macrocode}
%
% \begin{macro}{WAinstitution}
%    \begin{macrocode}
\newcommand{\WAinstitution}[2][]{\metasetkeys{wa@institution}{#1}
\ifx\wa@institution@id\@empty\@latex@warning{key 'id' undefined in WAinstitution}\else
\wa@def{institution}\wa@institution@id{id}{\wa@institution@id}% redundant, but useful for checking
\wa@def{institution}\wa@institution@id{name}{#2}
\wa@def{institution}\wa@institution@id{shortname}{\wa@institution@shortname}
\wa@def{institution}\wa@institution@id{acronym}{\wa@institution@acronym}
\wa@def{institution}\wa@institution@id{url}{\wa@institution@url}
\wa@def{institution}\wa@institution@id{partof}{\wa@institution@partof}
\wa@def{institution}\wa@institution@id{countryshort}{\wa@institution@countryshort}
\wa@def{institution}\wa@institution@id{logo}{\wa@institution@logo}
\wa@def{institution}\wa@institution@id{townzip}{\wa@institution@townzip}
\wa@def{institution}\wa@institution@id{streetaddress}{\wa@institution@streetaddress}
\wa@def{institution}\wa@institution@id{country}{\wa@institution@country}
\wa@def{institution}\wa@institution@id{type}{\wa@institution@type}
\@ifundefined{wa@institutions}
{\xdef\wa@institutions{\wa@institution@id}}
{\xdef\wa@institutions{\wa@institutions,\wa@institution@id}}
\fi}
\newcommand\DCMinstitution[2][]{\WAinstitution[#1]{#2}%
\PackageWarning{workaddress}{\protect\DCMinstitution\space is deprecated, use \protect\WAinstitution\space instead}}
%</package>
%<*ltxml>
DefKeyVal('wa@institution','id','Semiverbatim');
DefKeyVal('wa@institution','url','Semiverbatim');
DefKeyVal('wa@institution','partof','Semiverbatim');
DefConstructor('\WAinstitution OptionalKeyVals:wa@institution {}','', 
afterDigest=>sub {
  my ($stomach,$whatsit)=@_;
  my $keys=$whatsit->getArg(1);
  my $name=ToString($whatsit->getArg(2));
  $keys->setValue('name',$name);
  ExportMetadata($keys);
  return;
});#$
%</ltxml>
%    \end{macrocode}
% \end{macro}
% 
%\subsection{Applications}\label{sec:impl.appl}
%
% \begin{macro}{\WAauthorblock}
%   This internal macro builds an author block from a list of |\WAperson| labels in
%   |\wa@creators|.
%    \begin{macrocode}
%<*package>
\addmetakey[false]{WAauthorblock}{dept}[true]
\addmetakey[false]{WAauthorblock}{aff}[true]
\addmetakey[false]{WAauthorblock}{url}[true]
\def\@true{true}
\newcounter{authors}
\newcommand\WAauthorblock[2][]{%
\metasetkeys{WAauthorblock}{#1}
{\let\tabularnewline\relax
 \@for\@I:=#2\do{\stepcounter{authors}}
  \def\@authors{}\def\@affs{}\def\@depts{}\def\@urls{}
 \@for\@I:=#2\do
    {\xdef\@authors{\@authors&\wa@ref{person}\@I{name}}
      \xdef\@@dept{\wa@ref{person}\@I{department}}
      \xdef\@shortname{\csname wa@institution@\@@dept @shortname\endcsname}
      \xdef\@dept{\ifx\@shortname\@empty\wa@ref{institution}\@@dept{name}\else\@shortname\fi}
      \xdef\@depts{\@depts&\@dept}
      \xdef\@@aff{\wa@ref{person}\@I{affiliation}}
      \xdef\@shortname{\csname wa@institution@\@@aff @shortname\endcsname}
      \xdef\@aff{\ifx\@shortname\@empty\wa@ref{institution}\@@aff{name}\else\@shortname\fi}
      \xdef\@affs{\@affs&\@aff}
      \xdef\@urls{\@urls&\wa@ref{person}\@I{url}}}
  \message{\theauthors authors: \@authors}}
  \begin{tabular}[t]{l*{\theauthors}{c}}
    \@authors\\
    \ifx\WAauthorblock@dept\@true\@depts\\\fi
    \ifx\WAauthorblock@aff\@true\@affs\\\fi
    \ifx\WAauthorblock@url\@true\@urls\\\fi
\end{tabular}}
%</package>
%    \begin{macrocode}
% \end{macro}
%
% \begin{macro}{\wapname}
%    \begin{macrocode}
%<*package>
\newcommand\wapname[1]{\wa@ref{person}{#1}{name}}
%</package>
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\waptname}
%    \begin{macrocode}
%<*package>
\newcommand\waptname[1]{\wa@ref{person}{#1}{personaltitle} \wa@ref{person}{#1}{name}}
%</package>
%    \end{macrocode}
% \end{macro}
% 
% \begin{macro}{\wa@institution@logo}
%    \ednote{this code should probably be refactored into workaddress.dtx}
%    \begin{macrocode}
%<*package>
\newcommand\wa@institution@logo[2][]{%
\pgfdeclareimage[#1]{logo}{\wa@ref{institution}{#2}{logo}}
\IfFileExists{\wa@ref{institution}{#2}{logo}}%
{\pgfuseimage{logo}}
{\fbox{#2 logo}\message{still need logo for #2}}}
%</package>
%    \end{macrocode}
% \end{macro}
%
%\subsection{Finale}
%
% Finally, we need to terminate the file with a success mark for perl.
%    \begin{macrocode}
%<ltxml>1;
%    \end{macrocode}
% \Finale
\endinput
% \iffalse
%%% Local Variables: 
%%% mode: doctex
%%% TeX-master: t
%%% End: 
% \fi

% LocalWords:  RequirePackage birthdate personaltitle academictitle workaddress
% LocalWords:  privaddress worktel privtel workfax privfax worktelfax noDelim
% LocalWords:  privtelfax getKeyValue valuelist ToString getValue affill STDERR
% LocalWords:  ExportMetadata AssignValue WAperson DefConstructor afterDigest
% LocalWords:  getArg setValue FishOutMetadata keyvals foreach idlist tabline
% LocalWords:  LookupValue insertElement atabline bitabline shorttitle nc args
% LocalWords:  sharealike noderivativeworks DefMacro authorblock subsubsection
% LocalWords:  contribs OptionalKeyVals omgroup omdoc srcref xml RawTeX partof
% LocalWords:  openElement iffalse kohlhase Thu scsys sc sc latexml 
% LocalWords:  maketitle WAtitle texttt fileversion WAcreators miko jdoe impl
% LocalWords:  WAabstract setcounter tocdepth tableofcontents newpage dmt03
% LocalWords:  WAsection ednote WAsubsection exfig hline dcmblock Patashnik
% LocalWords:  DescribeEnv WAcontributors WAshorttitle WAshorttitle WAdate
% LocalWords:  WAsubject WAsubject WAdescription WAdescription WApublisher
% LocalWords:  WApublisher WAdate WAtype WAtype WAidentifier WAidentifier
% LocalWords:  WAsource WAsource WAlanguage WAlanguage WArelation ctancite
% LocalWords:  WArelation WArights WArights WAlicense WAlicense titlepage
% LocalWords:  WAlicensenotice WAlicensenotice WAcopyrightnotice titlepage
% LocalWords:  WAcopyrightnotice WAcclicense WAcclicense user.blockstyles
% LocalWords:  WAchapter WAchatper WAsubsubsection WAsubsubsection ltxml
% LocalWords:  user.conig makeatletter printbibliography expandafter showmeta
% LocalWords:  xdef csname endcsname newcommand ifx ifundefined affs showmeta
% LocalWords:  Semiverbatim whatsit newenvironment mtabline providecommand vfil
% LocalWords:  WAsubtitle cclicense defdcm impl.blockstyles newcounter vskip
% LocalWords:  stepcounter tabularnewline theauthors lineskip textbf noindent
% LocalWords:  omd omd srefaddidkey thechapter autoclose thesection ifnum ifnum
% LocalWords:  thesubsection thesubsubsection WAparagraph ISOtimestamp doctex
% LocalWords:  WAinstitution WAinstitution compactenum textsf langle textsf
% LocalWords:  langle metakeys addmetakey metasetkeys countryshort townzip aff
% LocalWords:  streetaddress depts
