From 66a28e0c48dbe5e98f85c13320d4c1aa27deed16 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Mon, 9 Jan 2012 22:43:47 +0000 Subject: rm stex, cannot get right: bin programs, xml, etc. git-svn-id: svn://tug.org/texlive/trunk@25063 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/source/latex/stex/dcm/dcm.dtx | 1067 ----------------------- 1 file changed, 1067 deletions(-) delete mode 100644 Master/texmf-dist/source/latex/stex/dcm/dcm.dtx (limited to 'Master/texmf-dist/source/latex/stex/dcm') diff --git a/Master/texmf-dist/source/latex/stex/dcm/dcm.dtx b/Master/texmf-dist/source/latex/stex/dcm/dcm.dtx deleted file mode 100644 index ba7bdc3df31..00000000000 --- a/Master/texmf-dist/source/latex/stex/dcm/dcm.dtx +++ /dev/null @@ -1,1067 +0,0 @@ -% \iffalse meta-comment -% An Infrastructure for marking up Dublin Core Metadata in LaTeX documents -% $URL: https://svn.kwarc.info/repos/stex/trunk/sty/dcm/dcm.dtx $ -% $Rev: 1671 $; last modified by $Author: kohlhase $ -% $Date: 2010-11-06 08:05:15 +0100 (Sat, 06 Nov 2010) $ -% Copyright (c) 2007 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{dcm}[2010/06/25 v0.3 Dublin Core Metadata] -% -%<*driver> -\documentclass{ltxdoc} -\usepackage{dcm,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: dcm.dtx 1671 2010-11-06 07:05:15Z kohlhase $ -\svnKeyword $HeadURL: https://svn.kwarc.info/repos/stex/trunk/sty/dcm/dcm.dtx $ -\makeindex -\floatstyle{boxed} -\newfloat{exfig}{thp}{lop} -\floatname{exfig}{Example} -\DCMperson[id=jdoe,affiliation={DFKI Bremen}, - url=http://dfki.de/jdoe]{John Doe} -\DCMperson[id=miko,affiliation={Jacobs University, Bremen}, - url=http://kwarc.info/kohlhase]{Michael Kohlhase} -\def\tracissue#1{\cite{sTeX:online}, \hyperlink{http://trac.kwarc.info/sTeX/ticket/#1}{issue #1}} -\begin{document}\DocInput{dcm.dtx}\end{document} -% -% \fi -% -%\iffalse\CheckSum{667}\fi -% -% \changes{v0.1}{2007/01/02}{First Hack for OMDoc spec} -% \changes{v0.2}{2008/06/17}{First Version with Documentation} -% \changes{v0.2}{2008/07/02}{Renamed to dcm} -% \changes{v0.3}{2009/09/21}{much more documentation of the user interface} -% \changes{v0.3}{2009/09/21}{Adding sref support and made generated headings configurable} -% \changes{v0.3}{2010/01/11}{Eliminating stub author index that never worked anyways} -% -% \GetFileInfo{dcm.sty} -% -% \MakeShortVerb{\|} -% \def\scsys#1{{{\sc #1}}\index{#1@{\sc #1}}} -% \def\latexml{\scsys{LaTeXML}} -% -% \begin{DCmetadata}[maketitle] -% \DCMtitle{{\texttt{dcm.sty}}: An Infrastructure for marking up Dublin Core Metadata in {\LaTeX} -% documents\thanks{Version {\fileversion} (last revised {\filedate})}} -% \DCMcreators{miko,jdoe} -% \DCMabstract{The |dcm| package allows mark up Dublin -% Core Metadata in {\LaTeX} documents that can be harvested by automated tools or -% exported to PDF, while at the same time generating conventional title information.} -% \end{DCmetadata} -% -% \setcounter{tocdepth}{2}\tableofcontents\newpage -% -%\DCMsection[id=intro,creators={miko}]{Introduction} -% -% The |dcm| packge allows mark up Dublin Core Metadata~\cite{DCMI:dmt03} in {\LaTeX} -% documents so that it can be harvested by automated tools or exported to PDF\ednote{This -% still needs to be implemented, see \texttt{http://www.wlug.org.nz/PdfLatexNotes} for -% details}. This package allows to attribute authorship to arbitrary text -% fragments.\ednote{continue} -% -% \DCMsection[id=user,creators={miko,jdoe}]{The User Interface} -% -% \DCMsubsection[id=user.options]{Package Options} -% -% The |dcm| 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). -% -% \DCMsubsection{Persons} -% -% The |dcm| 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 |dcm| 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} -% \DCMperson[id=jdoe,affiliation={DFKI Bremen}, -% url=http://dfki.de/jdoe]{John Doe} -% \DCMperson[id=miko,affiliation={Jacobs University, Bremen}, -% url=http://kwarc.info/kohlhase]{Michael Kohlhase} -% \end{verbatim} -% \caption{A small database of Persons} -% \label{fig:persons} -% \end{exfig} -% The \DescribeMacro{\DCMperson}|\DCMperson| 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|}\hline -% key & comment\\\hline\hline -% id & identifier of this person\\\hline -% birthdate & birthdate \\\hline -% email & the primary e-mail address\\\hline -% url & the URI of the primary home page \\\hline -% affiliation & the primary professional affiliation\\\hline -% personaltitle & the personal title e.g. {\texttt{King}}\\\hline -% academictitle & the academic title e.g. {\texttt{Prof. Dr.}}\\\hline -% department & the department specified in the work address\\\hline -% workaddress & the work address \\\hline -% privaddress & the private address \\\hline -% worktel & work telephone number \\\hline -% privtel & private telephone number\\\hline -% workfax & work fax number \\\hline -% privfax & private fax number \\\hline -% worktelfax & if the phone and fax share a prefix, give this as well \\\hline -% privtelfax & dito\\\hline -% \end{tabular} -% \end{center} -% In Figure~\ref{fig:persons} we have specified (minimal) metadata for the authors of the -% |dcm| package. The metadata can be accessed by specifying the identifiers (given by the -% |id| key) in the |dcm| macros defined below, see for instance the |\DCMcreators| macro -% in Figure~\ref{fig:dcmblock}, 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. -% -% \DCMsubsection[id=user.dcm.mdblock]{The DC Metadata Block} -% -% \DescribeEnv{DCmetadata} The |dcm| provides the environment |DCmetadata| for Dublin Core -% Metadata Blocks. |DCmetadata| defines local macros for the specifying the relevant -% Dublin Core metadata fields and takes an optional argument that specifies the -% presentation of the metadata block, see Figure~\ref{fig:dcmblock} for an example which -% would generate the title block for the |dcm| package. Let us now come to the macros themselves -% -% \DescribeMacro{\DCMcreators}\DescribeMacro{\DCMcontributors} The |\DCMcreators| and -% |\DCMcontributors| macros are used to specify the authors and contributors to a text -% fragments. These macros take one argument, the authorship of a document specified in -% terms of |id|s of persons specified via |\DCMperson| before. They can occur multiply in -% a metadata block. -% -% \DescribeMacro{\DCMtitle} The |\DCMtitle| macro takes one argument, the -% -% \DescribeMacro{\DCMshorttitle} The |\DCMshorttitle| macro takes one argument, the -% -% \DescribeMacro{\DCMsubject} The |\DCMsubject| macro takes one argument, the -% -% \DescribeMacro{\DCMdescription} The |\DCMdescription| macro takes one argument, the -% -% \DescribeMacro{\DCMpublisher} The |\DCMpublisher| macro takes one argument, the -% -% \DescribeMacro{\DCMdate} The |\DCMdate| macro takes one argument, the -% -% \DescribeMacro{\DCMtype} The |\DCMtype| macro takes one argument, the -% -% \DescribeMacro{\DCMidentifier} The |\DCMidentifier| macro takes two arguments, the first one -% is the identification system, and the second one the identifier string itself. -% -% \DescribeMacro{\DCMsource} The |\DCMsource| macro takes one argument, the -% -% \DescribeMacro{\DCMlanguage} The |\DCMlanguage| macro takes one argument, the -% -% \DescribeMacro{\DCMrelation} The |\DCMrelation| macro takes one argument, the -% -% \DescribeMacro{\DCMrights} The |\DCMrights| macro takes one argument, the -% -% \DescribeMacro{\DCMlicense} The |\DCMlicense| macro takes one argument, the -% -% \DescribeMacro{\DCMabstract} The |\DCMabstract| macro takes one argument, the -% -% \DescribeMacro{\DCMlicensenotice} The |\DCMlicensenotice| macro takes one argument, the -% -% \DescribeMacro{\DCMcopyrightnotice} The |\DCMcopyrightnotice| macro takes one argument, the -% -% \DescribeMacro{\DCMcclicense} The |\DCMcclicense| macro -% -% \DescribeMacro{\attribution} -% -% \DescribeMacro{\noncommercial} -% -% \DescribeMacro{\sharealike} -% -% \DescribeMacro{\noderivativeworks} -% -% \begin{exfig}[ht] -% \begin{verbatim} -% \begin{DCmetadata}[maketitle] -% \DCMtitle{An Infrastructure for marking up Dublin Core Metadata in -% {\LaTeX} documents\thanks{Version {\fileversion} -% (last revised {\filedate})}} -% \DCMcreators{miko,jdoe} -% \DCMdate{\today} -% \DCMcopyrightnotice{2008}{Michael Kohlhase} -% \DCMlicensenotice{Copyright (c) 2008 Michael Kohlhase, all rights -% reserved. This file is released under the LaTeX Project Public -% License (LPPL)} -% \DCMabstract{The {\texttt{dcm}} packge allows mark up Dublin -% Core Metadata in {\LaTeX} documents that can be harvested by -% automated tools or exported to PDF, while at the same time -% generating conventional title information.} -% \end{DCmetadata} -% \end{verbatim} -% \caption{The DC Metadata block for the {\texttt{dcm}} package documentation} -% \label{fig:dcmblock} -% \end{exfig} -% -% \DCMsubsection[creators=jdoe,id=user.blockstyles]{DCM Metadata Block Styles} -% -% The |DCmetadata| environment takes an optional argument that specifies the style the -% metadata block is rendered in. The |dcm| package supplies two styles: -% \DescribeMacro{maketitle}|maketitle| and \DescribeMacro{titlepage}|titlepage|. The -% former uses the |\maketitle| macro from the calling class to assemble a title, whereas -% the latter builds a title page from scratch. The title block of this documentation has -% been created by the |maketitle| style. -% -% To add a further metadata block style \meta{sty}, we simply have to supply a -% \DescribeMacro{\dcm@*@block}|\dcm@|\meta{sty}|@block| macro that expands to the intended -% presentation. This macro does not take any arguments, but can use the internal token -% registers defined by the |DCmetadata| environment. Generally, for any of the metadata -% commands |\DCM|\meta{md} defined in {\sref{user.dcm.mdblock}} there is a token register -% |\dcm@|\meta{md} that contains the value specified in the key. -% -% \DCMsubsection{Augmented Sectioning Macros} -% -% The |dcm| package supplies sectioning commands customized for metadata handling: The -% \DescribeMacro{\DCMchapter}|\DCMchatper| \DescribeMacro{\DCMsection}|\DCMsection| -% \DescribeMacro{\DCMsubsection}|\DCMsubsection|, and -% \DescribeMacro{\DCMsubsubsection}|\DCMsubsubsection| macros behave like their regular -% {\LaTeX} counterpart, except that the optional argument, which is used to specify a -% short title there, is now a KeyVal argument. The |short| key takes over the role of -% specifying a short title in |\DCM|\meta{sect}. The |id| key allows to specify an -% identifier, which can be used for {\LaTeX}-style referencing (use -% |\ref{|\meta{sect}|.|\meta{id}|}|) or |sref|-style referencing~\ctancite{Kohlhase:sref} -% (use |\sref{|\meta{id}|}|). Finally, the keys |creators| and |contributors| can be used -% to specify the authors (creators in Dublin Core speak~\cite{DCMI:dmt03}) and -% contributors. For instance the following line was used to specify the heading of -% {\sref{user}}. -% \begin{verbatim} -% \DCMsection[id=user,creators={miko,jdoe}]{The User Interface} -% \end{verbatim} -% Finally, the |style| key can be used to specify a style. -% -% \DCMsubsection[id=user.conig]{Configuration} -% -% The |dcm| package provides a set of macros that customize (e.g. for multiple languages) -% the generated -% content. -% \DescribeMacro{\dcm@abstract@heading} -% \DescribeMacro{\dcm@creators@heading} -% \DescribeMacro{\dcm@contributors@connector} -% \DescribeMacro{\dcm@chapter@heading} -% \DescribeMacro{\dcm@section@heading} -% \DescribeMacro{\dcm@subsection@heading} -% \DescribeMacro{\dcm@subsubsection@heading} -% \begin{center}\makeatletter -% \begin{tabular}{|l|l|}\hline -% Macro & Default\\\hline\hline -% |\dcm@abstract@heading| & \dcm@abstract@heading \\\hline -% |\dcm@creators@heading| & \dcm@creators@heading \\\hline -% |\dcm@contributors@connector| & \dcm@contributors@connector \\\hline\hline -% |\dcm@chapter@heading| & \dcm@chapter@heading \\\hline -% |\dcm@section@heading| & \dcm@section@heading \\\hline -% |\dcm@subsection@heading| & \dcm@subsection@heading \\\hline -% |\dcm@subsubsection@heading| & \dcm@subsubsection@heading \\\hline -% \end{tabular} -% \end{center} -% -% -% \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} -% -% \DCMsection[creators=jdoe,id=impl]{The Implementation} -% -% The |dcm| 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. -% -% \DCMsubsection[id=impl.options]{Package 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 -% -% \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} -% -%<*ltxml> -# -*- CPERL -*- -package LaTeXML::Package::Pool; -use strict; -use LaTeXML::Global; -use LaTeXML::Package; -RequirePackage('sref'); -% -% \end{macrocode} -% -% \DCMsubsection{Persons} -% -% To implement the |\DCMperson| macro, we need to implement its keywords first and also -% the |\dcm@person@clear@keys| macro that clears them. \ednote{need some DCM stuff here} -% -% \begin{macrocode} -%<*package> -\addmetakey{dcm@person}{id} -\addmetakey{dcm@person}{birthdate} -\addmetakey{dcm@person}{email} -\addmetakey{dcm@person}{url} -\addmetakey{dcm@person}{affiliation} -\addmetakey{dcm@person}{personaltitle} -\addmetakey{dcm@person}{academictitle} -\addmetakey{dcm@person}{department} -\addmetakey{dcm@person}{workaddress} -\addmetakey{dcm@person}{privaddress} -\addmetakey{dcm@person}{worktel} -\addmetakey{dcm@person}{privtel} -\addmetakey{dcm@person}{workfax} -\addmetakey{dcm@person}{privfax} -\addmetakey{dcm@person}{worktelfax} -\addmetakey{dcm@person}{privtelfax} -% -% \end{macrocode} -% -% The next macro is an auxiliary one that puts the value into an appropriate token -% register. 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} -%<*package> -\def\dcm@pers@def#1#2{\expandafter\xdef\csname dcm@person@\dcm@person@id @#1\endcsname{#2}} -\def\dcm@pers@ref#1#2{\csname dcm@person@#1@#2\endcsname} -\let\dcm@persons=\relax -% -%<*ltxml> - sub getKeyValue_noDelim { - my ($keyval,$key)=@_; - my $valuelist = 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('DCM_'.$id.'_email',$email,'global') if $email; - AssignValue('DCM_'.$id.'_affiliation',$affill,'global') if $affill; - AssignValue('DCM_'.$id.'_address',$email,'global') if $email; - AssignValue('DCM_'.$id.'_url',$url,'global') if $url; - AssignValue('DCM_'.$id.'_name',$name,'global') if $name; - } else {print STDERR "Warning: key 'id' undefined in \\DCMperson\n"}; - return;} -% -% \end{macrocode} -% -% With this we can define the |\DCMperson| 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}{DCMPerson} -% \begin{macrocode} -%<*package> -\newcommand{\DCMperson}[2][]{\metasetkeys{dcm@person}{#1} -\ifx\dcm@person@id\@empty\@latex@warning{key 'id' undefined in DCMperson}\else -\dcm@pers@def{name}{#2} -\dcm@pers@def{email}{\dcm@person@email} -\dcm@pers@def{birthdate}{\dcm@person@birthdate} -\dcm@pers@def{url}{\dcm@person@url} -\dcm@pers@def{affiliation}{\dcm@person@affiliation} -\dcm@pers@def{workaddress}{\dcm@person@workaddress} -\dcm@pers@def{privaddress}{\dcm@person@privaddress} -\dcm@pers@def{personaltitle}{\dcm@person@personaltitle} -\dcm@pers@def{academictitle}{\dcm@person@academictitle} -\dcm@pers@def{department}{\dcm@person@department} -\dcm@pers@def{workaddress}{\dcm@person@workaddress} -\dcm@pers@def{privaddress}{\dcm@person@privaddress} -\dcm@pers@def{worktel}{\dcm@person@worktel} -\dcm@pers@def{privtel}{\dcm@person@privtel} -\dcm@pers@def{workfax}{\dcm@person@workfax} -\dcm@pers@def{privfax}{\dcm@person@privfax} -\dcm@pers@def{worktelfax}{\dcm@person@worktelfax} -\dcm@pers@def{privtelfax}{\dcm@person@privtelfax} -\@ifundefined{dcm@persons}{\xdef\dcm@persons{\dcm@person@id}}{\xdef\dcm@persons{\dcm@persons,\dcm@person@id}} -\fi} -% -%<*ltxml> -DefKeyVal('dcm@person','id','Semiverbatim'); -DefKeyVal('dcm@person','birthdate','Semiverbatim'); -DefKeyVal('dcm@person','email','Semiverbatim'); -DefKeyVal('dcm@person','url','Semiverbatim'); -DefKeyVal('dcm@person','affiliation','Semiverbatim'); -DefKeyVal('dcm@person','personaltitle','Semiverbatim'); -DefKeyVal('dcm@person','academictitle','Semiverbatim'); -DefKeyVal('dcm@person','department','Semiverbatim'); -DefKeyVal('dcm@person','workaddress','Semiverbatim'); -DefKeyVal('dcm@person','privaddress','Semiverbatim'); -DefKeyVal('dcm@person','worktel','Semiverbatim'); -DefKeyVal('dcm@person','privtel','Semiverbatim'); -DefKeyVal('dcm@person','workfax','Semiverbatim'); -DefKeyVal('dcm@person','privfax','Semiverbatim'); -DefKeyVal('dcm@person','worktelfax','Semiverbatim'); -DefKeyVal('dcm@person','privtelfax','Semiverbatim'); - -DefConstructor('\DCMperson OptionalKeyVals:dcm@person {}','', -afterDigest=>sub { - my ($stomach,$whatsit)=@_; - my $keys=$whatsit->getArg(1); - my $name=ToString($whatsit->getArg(2)); - $keys->setValue('name',$name); - ExportMetadata($keys); - return; -});#$ -% -% \end{macrocode} -% \end{macro} -% -% Furthermore, we need a couple of helper functions for the -% -% \begin{macrocode} -%<*ltxml> -sub FishOutMetadata { - my ($document,$keyvals)=@_; - foreach my $role(qw(creators contributors)) { - my $idlist_string=getKeyValue_noDelim($keyvals,$role); - my @ids = split(/,\s*/, $idlist_string); - foreach my $id(@ids) { - my $name = LookupValue('DCM_'.$id.'_name'); - if ($name) { - my $prop_role = $role; - chop $prop_role if $prop_role; - $document->insertElement("dc:$prop_role",$name) if $role; - } else {print STDERR "Warning: no $role with 'id' $id !\n";} - } - } - return;}#$ -% -% \end{macrocode} -% -% \DCMsubsection{The DC Metadata Block} -% -% Then we make an environment for defining the metadata. Note that since we have defined -% the |omdoc:metadata| element to auto-open and auto-close, we do not have to (and should -% not for that matter) supply it in the |DCmetadata| element. -% -% \begin{environment}{DCmetadata} -% \begin{macrocode} -%<*package> -\newenvironment{DCmetadata}[1][]% -{\def\@style{#1}} % to set the way things are presented. -{\@ifundefined{dcm@\@style @block}{\message{style {\@style} not defined}}{\csname dcm@\@style @block\endcsname}} -% -%<*ltxml> -DefEnvironment('{DCmetadata}[]', "#body"); -% -% \end{macrocode} -% \end{environment} -% -% Now some auxiliary macros to make author blocks. \ednote{use and document them!} -% -% \begin{macrocode} -%<*package> -\def\dcm@tabline#1#2{\xdef\tab@line{}% -\@for\@p:={#1}\do{\xdef\tab@line{\tab@line&\dcm@pers@ref\@p{#2}}} -\tab@line} -\def\dcm@atabline#1#2#3{\xdef\tab@line{}% -\@for\@p:={#1}\do{\xdef\tab@line{\tab@line: \dcm@pers@ref\@p{#3}}} -\tab@line} -\def\dcm@bitabline#1#2#3#4{\xdef\tab@line{}% -\@for\@p:={#1}\do{\xdef\tab@line{\tab@line&\dcm@pers@ref\@p{#2} #3 \dcm@pers@ref\@p{#4}}} -\tab@line} -% -% \end{macrocode} -% Here come the constructors, most of them are relatively straightforward -% \begin{macro}{\DCMcreators} -% the |\DCMcreators| macro checks whether all ids are defined. -% \begin{macrocode} -%<*package> -\def\DCMcreators#1{\@for\@I:=#1\do{% -\ifx\csname dcm@person@\@I @id\endcsname\@empty% undefined \dcm@person@id -\PackageError{dcm}{reference to undefined DCMperson \@I}% -{you must define a person with id=\@I\MessageBreak% -via the macro \protect\DCMperson, before you can use it in \protect\DCMcreators}\fi}% -\def\dcm@creators{#1}} -% -%<*ltxml> -DefConstructor('\DCMcreators{}',sub{ - my ($document,$args,%properties) = @_; - my $keyval = LaTeXML::KeyVals->new('dcm@person',T_BEGIN,T_END,('creators'=>$args)); - FishOutMetadata($document,$keyval); - return;}); -% -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\DCMcontributors} -% the |\DCMcontributors| macro also checks whether all ids are defined. -% \begin{macrocode} -%<*package> -\def\DCMcontributors#1{\@for\@I:=#1\do{% -\ifx\csname dcm@person@\@I @id\endcsname\@empty% undefined \dcm@person@id -\PackageError{dcm}{reference to undefined DCMperson \@I}% -{you must define a person with id=\@I\MessageBreak% -via the macro \protect\DCMperson, before you can use it in \protect\DCMcontributors}}% -\else% all \dcm@person@id in the list are defined -\def\dcm@contributors{#1}\fi} -% -%<*ltxml> -DefConstructor('\DCMcontributors{}',sub{ - my ($document,$args,%properties) = @_; - my $keyval = LaTeXML::KeyVals->new('dcm@person',T_BEGIN,T_END,('contributors'=>$args)); - FishOutMetadata($document,$keyval); - return;}); -% -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\DCMtitle} -% \begin{macrocode} -%<*package> -\def\DCMtitle#1{\def\dcm@title{#1}\providecommand{\dcm@shorttitle}{#1}} -% -%<*ltxml> -DefConstructor('\DCMtitle{}',"#1"); -% -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\DCMsubtitle} -% \begin{macrocode} -%<*package> -\def\dcm@subtitle{} -\def\DCMsubtitle#1{\def\dcm@subtitle{#1}} -% -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\DCMshorttitle} -% \begin{macrocode} -%<*package> -\def\dcm@shorttitle{} -\def\DCMshorttitle#1{\def\dcm@shorttitle{#1}} -% -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\DCMsubject} -% \begin{macrocode} -%<*package> -\def\DCMsubject#1{\def\dcm@subject{#1}} -% -%<*ltxml> -DefConstructor('\DCMsubject{}',"#1"); -% -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\DCMdescription} -% \begin{macrocode} -%<*package> -\long\def\DCMdescription#1{\long\def\dcm@description{#1}} -% -%<*ltxml> -DefConstructor('\DCMdescription{}',"#1"); -% -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\DCMpublisher} -% \begin{macrocode} -%<*package> -\def\DCMpublisher#1{\def\dcm@publisher{#1}} -% -%<*ltxml> -DefConstructor('\DCMpublisher{}',"#1"); -% -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\DCMdate} -% the |\DCMdate| uses |\today| as a default\ednote{@DEYAN: do that in latexml} -% \begin{macrocode} -%<*package> -\def\dcm@date{\today} -\def\DCMdate#1{\def\dcm@date{#1}} -% -%<*ltxml> -DefConstructor('\DCMdate{}',"#1"); -% -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\DCMtype} -% \begin{macrocode} -%<*package> -\def\DCMtype#1{\def\dcm@type{#1}} -% -%<*ltxml> -DefConstructor('\DCMtype{}',"#1"); -% -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\DCMidentifier} -% \begin{macrocode} -%<*package> -\def\DCMidentifier#1#2{\def\dcm@scheme{#1}\def\dcm@identifier{#2}} -% -%<*ltxml> -DefConstructor('\DCMidentifier{}{}',"#2"); -% -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\DCMsource} -% \begin{macrocode} -%<*package> -\def\DCMsource#1{\def\dcm@source{#1}} -% -%<*ltxml> -DefConstructor('\DCMsource{}',"#1"); -% -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\DCMlanguage} -% \begin{macrocode} -%<*package> -\def\DCMlanguage#1{\def\dcm@language{#1}} -% -%<*ltxml> -DefConstructor('\DCMlanguage{}',"#1"); -% -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\DCMrelation} -% \begin{macrocode} -%<*package> -\def\DCMrelation#1{\def\dcm@relation{#1}} -% -%<*ltxml> -DefConstructor('\DCMrelation{}',"#1"); -% -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\DCMrights} -% \begin{macrocode} -%<*package> -\def\DCMrights#1{\long\def\dcm@rights{#1}} -% -%<*ltxml> -DefConstructor('\DCMrights{}',"#1"); -% -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\DCMlicense} -% \begin{macrocode} -%<*package> -\def\DCMlicense#1{\def\dcm@license{#1}} -% -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\DCMlicensenotice} -% here we have a default -% \begin{macrocode} -%<*package> -\def\dcm@license{All rights reserved} -\def\DCMlicensenotice#1{\long\def\dcm@license{\\[1ex]License: #1}} -% -%<*ltxml> -DefMacro('\DCMlicensenotice{}','\DCMrights{#1}'); -% -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\DCMcopyrightnotice} -% \begin{macrocode} -%<*package> -\def\DCMcopyrightnotice#1#2{\DCMrights{Copyright {\copyright} #1: #2}} -% -%<*ltxml> -DefMacro('\DCMcopyrightnotice{}{}','\DCMrights{Copyright {\copyright} #1: #2}'); -% -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\cclicense} -% \begin{macrocode} -%<*package> -\def\cclicense#1{\def\attribution{\def\dcm@by{yes}} - \def\noncommercial{\def\dcm@nc{yes}} - \def\sharealike{\defdcm@sharealike{yes}} - \def\noderivativeworks{\def\dcm@derivatives{no}}} -% -%<*ltxml> -DefConstructor('\cclicense{}',"#1"); -DefConstructor('\attribution',""); -DefConstructor('\noncommercial',""); -DefConstructor('\sharealike',""); -DefConstructor('\noderivativeworks',""); -% -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\DCMabstract} -% \begin{macrocode} -%<*package> -\long\def\DCMabstract#1{\long\def\dcm@abstract{#1}} -% -%<*ltxml> -DefConstructor('\DCMabstract{}',"#1"); -% -% \end{macrocode} -% \end{macro} -% -% \DCMsubsection[creators=jdoe,id=impl.blockstyles]{DCM Block Styles} -% -% We now define various commonly used styles. -% -% \begin{macro}{\dcm@authorblock} -% This internal macro builds an author block from a list of |\DCMperson| labels in -% |\dcm@creators|. -% \begin{macrocode} -%<*package> -\def\dcm@authorblock{\newcounter{authors}\stepcounter{authors} -{\let\tabularnewline\relax - \@for\@I:=\dcm@creators\do{\stepcounter{authors}} - \def\@authors{}\def\@affs{}\def\@urls{} - \@for\@I:=\dcm@creators\do - {\xdef\@authors{\@authors&\csname dcm@person@\@I @name\endcsname} - \xdef\@affs{\@affs&\csname dcm@person@\@I @affiliation\endcsname} - \xdef\@urls{\@urls&\csname dcm@person@\@I @url\endcsname}} - \message{authors: \@authors}} - \begin{tabular}[t]{l*{\theauthors}{c}}\@authors\\\@affs\\\@urls\end{tabular}} -% -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\dcm@titlepage@block} -% This style builds up a title page from scratch -% \begin{macrocode} -%<*package> -\def\dcm@titlepage@block{\begin{titlepage} - \null\vfil\vskip 60\p@ - \begin{center} - \ifx\dcm@title\@empty - \PackageWarning{dcm}{No title specified}{\LARGE Add title here\par} - \else\LARGE \dcm@title \par\fi - \ifx\dcm@subtitle\@empty - \vskip 3em\Large \dcm@subtitle \par\vskip 3em - \else\large\lineskip .75em\dcm@authorblock\vskip 1.5em\fi - \ifx\dcm@date\@empty - \PackageWarning{dcm}{No date specified}{\large\today\par} - \else{\large\dcm@date\par}\vskip 2em\fi - \end{center}\vskip2em - \ifx\dcm@abstract\@empty - \PackageWarning{dcm}{No Abstract specified}\else - \begin{quote}\textbf\dcm@abstract@heading:\dcm@abstract\end{quote}\fi - \vskip 2em\par\vfil\noindent - {\small\noindent\dcm@rights\dcm@license} - \end{titlepage}} -% -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\dcm@maketitle@block} -% This style makes use of the title facility of the document class. -% \begin{macrocode} -%<*package> -\def\dcm@maketitle@block{\def\@title{\dcm@title\ifx\dcm@subtitle\empty\else\newline\dcm@subtitle\fi} -\def\@author{\dcm@authorblock}\def\@date{\dcm@date}\maketitle} -% -% \end{macrocode} -% \end{macro} -% -% \DCMsubsection{Augmented Sectioning Macros} -% -% \begin{macro}{\dcm@sect@clear@keys} -% We first define the sectioning keys with the infrastructure from the |metakeys| -% package~\ctancite{Kohlhase:metakeys} -% \begin{macrocode} -%<*package> -\srefaddidkey{dcm@sect} -\addmetakey{dcm@sect}{short} -\addmetakey{dcm@sect}{creators} -\addmetakey{dcm@sect}{contributors} -% -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\dcm@section} -% The next step is to define an auxiliary macro that does all the -% work. |\dcm@section{|\meta{type}|}{|\meta{title}|}{|\meta{keys}|}| delegates the -% presentation of the \meta{title} and the metadata in \meta{keys} to the -% |\dcm@section@*@style| macro specified \meta{style}. -% \begin{macrocode} -%<*package> -\def\dcm@section#1#2#3{\def\dcm@sect@type{#1}\metasetkeys{dcm@sect}{#3}\sref@target% -\ifx\dcm@sect@short\@empty\csname #1\endcsname{#2}% -\else\csname #1\endcsname[\dcm@sect@short]{#2}\fi~% -\@ifundefined{sect@style} % -{\dcm@section@default@style{#1}}% -{\csname dcm@section@\sect@style @style\endcsname{#1}}} -% -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\dcm@section@default@style} -% This is the default style for sectional metadata -% \begin{macrocode} -%<*package> -\def\dcm@section@default@style#1{% -\ifx\dcm@sect@creators\@empty\else% -\textbf{\dcm@creators@heading}:% -\@for\@I:=\dcm@sect@creators\do{~\csname dcm@person@\@I @name\endcsname}\fi% -\ifx\dcm@sect@contributors\@empty\else% there are contributors -\dcm@contributors@connector% -\@for\@I:=\dcm@sect@contributors\do{~\csname dcm@person@\@I @name\endcsname}\\\fi} -% -% \end{macrocode} -% \end{macro} -% -% Armed with these, the rest is very simple -% -% \begin{macro}{\DCMchapter} -% \begin{macrocode} -%<*package> -\newcommand{\DCMchapter}[2][]% -{\dcm@section{chapter}{#2}{#1}\sref@label@id{\dcm@chapter@heading\ \thechapter}} -% -% \end{macrocode} -% For the {\latexml} bindings we have to be a bit more creative. We only open the -% |omgroup| element (and declare it to autoclose)\ednote{@DEYAN, we need to document more -% here; and we should also close the metadata element just to be more tidy.} -% \begin{macrocode} -%<*ltxml> -Tag('omdoc:omgroup', autoClose=>1); -DefConstructor('\DCMchapter OptionalKeyVals:omgroup {}',sub { - my ($document,$keyvals,$title,%properties) = @_; - my $id=$keyvals->getValue('id')||""; - $document->openElement('omdoc:chapter',('xml:id'=>$id)); - $document->openElement('omdoc:metadata'); - $document->insertElement('dc:title',$title); - FishOutMetadata($document,$keyvals); - return;}); -% -% \end{macrocode} -% \end{macro} -% \ednote{@DEYAN: I guess since they all do the same as {\texttt{DCMchapter}}, we may -% actually get away with \texttt{Let(DCMsection,DCMchapter);} here.} -% \begin{macro}{\DCMsection} -% \begin{macrocode} -%<*package> -\newcommand{\DCMsection}[2][]% -{\dcm@section{section}{#2}{#1}\sref@label@id{\dcm@section@heading\ \thesection}} -% -%<*ltxml> -DefConstructor('\DCMsection OptionalKeyVals:omgroup {}',sub{ - my ($document,$keyvals,$title,%properties) = @_; - my $id=$keyvals->getValue('id')||""; - $document->openElement('omdoc:section',('xml:id'=>$id)); - $document->openElement('omdoc:metadata'); - $document->insertElement('dc:title',$title); - FishOutMetadata($document,$keyvals); - return;}); -% -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\DCMsubsection} -% \begin{macrocode} -%<*package> -\newcommand{\DCMsubsection}[2][]% -{\dcm@section{subsection}{#2}{#1}\sref@label@id{\dcm@subsection@heading\ \thesubsection}} -% -%<*ltxml> -DefConstructor('\DCMsubsection OptionalKeyVals:omgroup {}',sub{ - my ($document,$keyvals,$title,%properties) = @_; - my $id=$keyvals->getValue('id')||""; - $document->openElement('omdoc:subsection',('xml:id'=>$id)); - $document->openElement('omdoc:metadata'); - $document->insertElement('dc:title',$title); - FishOutMetadata($document,$keyvals); - return;}); -% -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\DCMsubsubsection} -% \begin{macrocode} -%<*package> -\newcommand{\DCMsubsubsection}[2][]% -{\dcm@section{subsubsection}{#2}{#1}\sref@label@id{\dcm@subsubsection@heading\ \thesubsubsection}} -% -%<*ltxml> -DefConstructor('\DCMsubsubsection OptionalKeyVals:omgroup {}',sub{ - my ($document,$keyvals,$title,%properties) = @_; - my $id=$keyvals->getValue('id')||""; - $document->openElement('omdoc:subsubsection',('xml:id'=>$id)); - $document->openElement('omdoc:metadata'); - $document->insertElement('dc:title',$title); - FishOutMetadata($document,$keyvals); - return;}); -% -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\DCMparagraph} -% \begin{macrocode} -%<*package> -\newcommand{\DCMparagraph}[2][]% -{\dcm@section{paragraph}{#2}{#1}\sref@label@id{this \dcm@paragraph@heading}} -% -%<*ltxml> -DefConstructor('\DCMparagraph OptionalKeyVals:omgroup {}',sub{ - my ($document,$keyvals,$title,%properties) = @_; - my $id=$keyvals->getValue('id')||""; - $document->openElement('omdoc:paragraph',('xml:id'=>$id)); - $document->openElement('omdoc:metadata'); - $document->insertElement('dc:title',$title); - FishOutMetadata($document,$keyvals); - return;}); -% -% \end{macrocode} -% \end{macro} -% -% We have to make sure that the DCM sectioning and metadata commands have IDs, so that we doc not get -% duplicates. -% -% \begin{macrocode} -%<*ltxml> -Tag('omdoc:chapter',afterOpen=>\&numberIt,afterClose=>\&locateIt,autoClose=>1); -Tag('omdoc:section',afterOpen=>\&numberIt,afterClose=>\&locateIt,autoClose=>1); -Tag('omdoc:subsection',afterOpen=>\&numberIt,afterClose=>\&locateIt,autoClose=>1); -Tag('omdoc:subsubsection',afterOpen=>\&numberIt,afterClose=>\&locateIt,autoClose=>1); -Tag('omdoc:paragraph',afterOpen=>\&numberIt,afterClose=>\&locateIt,autoClose=>1); -Tag('omdoc:subparagraph',afterOpen=>\&numberIt,afterClose=>\&locateIt,autoClose=>1); -Tag('dc:description',afterOpen=>\&numberIt,afterClose=>\&locateIt,autoClose=>1); -Tag('dc:date',afterOpen=>\&numberIt,afterClose=>\&locateIt,autoClose=>1); -Tag('dc:creator',afterOpen=>\&numberIt,afterClose=>\&locateIt,autoClose=>1); -Tag('dc:contributor',afterOpen=>\&numberIt,afterClose=>\&locateIt,autoClose=>1); -Tag('dc:title',afterOpen=>\&numberIt,afterClose=>\&locateIt,autoClose=>1); -Tag('dc:subject',afterOpen=>\&numberIt,afterClose=>\&locateIt,autoClose=>1); -Tag('dc:publisher',afterOpen=>\&numberIt,afterClose=>\&locateIt,autoClose=>1); -Tag('dc:type',afterOpen=>\&numberIt,afterClose=>\&locateIt,autoClose=>1); -Tag('dc:identifier',afterOpen=>\&numberIt,afterClose=>\&locateIt,autoClose=>1); -Tag('dc:language',afterOpen=>\&numberIt,afterClose=>\&locateIt,autoClose=>1); -Tag('dc:rights',afterOpen=>\&numberIt,afterClose=>\&locateIt,autoClose=>1); -% -% \end{macrocode} -% -% \DCMsubsection{Dealing with ISO Dates} -% -% The first step is to build a macro for making ISO dates.\ednote{make better ltxml} -% -% \begin{macrocode} -%<*package> -\def\ISOtimestamp{\count1=\time\divide\count1 by 60 % hours -\count2=\count1\multiply\count2 by 60% minutes in \count1 hours -\count3=\time\advance\count3 by -\count2 % minutes -\the\year -\ifnum\month>9\else0\fi\the\month-\ifnum\day>9\else0\fi\the\day -T\ifnum\count1>9\else0\fi\the\count1:\ifnum\count3>9\else0\fi\the\count3:00Z} -% -%<*ltxml> -RawTeX('\def\ISOtimestamp{\count1=\time\divide\count1 by 60 % hours -\count2=\count1\multiply\count2 by 60% minutes in \count1 hours -\count3=\time\advance\count3 by -\count2 % minutes -\the\year -\the\month-\the\day T\the\count1:\the\count3:00Z}'); -% -% \end{macrocode} -% -%\DCMsubsection{Configuration} -% -% \begin{macrocode} -%<*package> -\def\dcm@abstract@heading{Abstract} -\def\dcm@creators@heading{Author(s)} -\def\dcm@contributors@connector{with contributions from} -\def\dcm@chapter@heading{Chapter} -\def\dcm@section@heading{Section} -\def\dcm@subsection@heading{Subsection} -\def\dcm@subsubsection@heading{Subsubsection} -\def\dcm@paragraph@heading{Paragraph} -% -% \end{macrocode} -% -% \DCMsubsection[id=sec:impl:ids]{Providing IDs for {\omdoc} Elements} -% -% To provide default identifiers, we tag all {\omdoc} elements that allow |xml:id| -% attributes by executing the |numberIt| procedure below. -% -% \begin{macrocode} -%<*ltxml> -Tag('dc:title',afterOpen=>\&numberIt,afterClose=>\&locateIt); -% -% \end{macrocode} -% -%\DCMsubsection{Finale} -% -% Finally, we need to terminate the file with a success mark for perl. -% \begin{macrocode} -%1; -% \end{macrocode} -% \Finale -\endinput -% \iffalse -% LocalWords: GPL structuresharing STR LaTeX dcm dtx keyval sref CPERL url qw -%%% 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 DCMperson 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 locator xml RawTeX -% LocalWords: openElement iffalse kohlhase Thu scsys sc sc latexml DCmetadata -% LocalWords: maketitle DCMtitle texttt fileversion DCMcreators miko jdoe impl -% LocalWords: DCMabstract setcounter tocdepth tableofcontents newpage dmt03 -% LocalWords: DCMsection ednote DCMsubsection exfig hline dcmblock Patashnik -% LocalWords: DescribeEnv DCMcontributors DCMshorttitle DCMshorttitle DCMdate -% LocalWords: DCMsubject DCMsubject DCMdescription DCMdescription DCMpublisher -% LocalWords: DCMpublisher DCMdate DCMtype DCMtype DCMidentifier DCMidentifier -% LocalWords: DCMsource DCMsource DCMlanguage DCMlanguage DCMrelation ctancite -% LocalWords: DCMrelation DCMrights DCMrights DCMlicense DCMlicense titlepage -% LocalWords: DCMlicensenotice DCMlicensenotice DCMcopyrightnotice titlepage -% LocalWords: DCMcopyrightnotice DCMcclicense DCMcclicense user.blockstyles -% LocalWords: DCMchapter DCMchatper DCMsubsubsection DCMsubsubsection ltxml -% LocalWords: user.conig makeatletter printbibliography expandafter -% LocalWords: xdef csname endcsname newcommand ifx ifundefined affs -% LocalWords: Semiverbatim whatsit newenvironment mtabline providecommand vfil -% LocalWords: DCMsubtitle 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 DCMparagraph ISOtimestamp doctex -- cgit v1.2.3