summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/stex/sty/metakeys/metakeys.dtx
diff options
context:
space:
mode:
Diffstat (limited to 'macros/latex/contrib/stex/sty/metakeys/metakeys.dtx')
-rw-r--r--macros/latex/contrib/stex/sty/metakeys/metakeys.dtx455
1 files changed, 0 insertions, 455 deletions
diff --git a/macros/latex/contrib/stex/sty/metakeys/metakeys.dtx b/macros/latex/contrib/stex/sty/metakeys/metakeys.dtx
deleted file mode 100644
index 84ced73e5f..0000000000
--- a/macros/latex/contrib/stex/sty/metakeys/metakeys.dtx
+++ /dev/null
@@ -1,455 +0,0 @@
-% \iffalse meta-comment
-% An Infrastructure for marking up Metadata in LaTeX documents
-% Copyright (c) 2009 Michael Kohlhase, all rights reserved
-% this file is released under the
-% LaTeX Project Public License (LPPL)
-% The original of this file is in the public repository at
-% http://github.com/KWARC/sTeX/
-% \fi
-%
-% \iffalse
-%<*package>
-\NeedsTeXFormat{LaTeX2e}[1999/12/01]
-\ProvidesPackage{metakeys}[2019/03/20 v0.9 Framework for Metadata Keys]
-%</package>
-%<*driver>
-\documentclass{ltxdoc}
-\usepackage[utf8]{inputenc}
-\usepackage{stex-logo,url,array,float}
-\usepackage[show]{ed}
-\usepackage{ctangit}
-\usepackage[hyperref=auto,style=alphabetic]{biblatex}
-\addbibresource{kwarcpubs.bib}
-\addbibresource{extpubs.bib}
-\addbibresource{kwarccrossrefs.bib}
-\addbibresource{extcrossrefs.bib}
-\usepackage{hyperref}
-%\makeindex
-\floatstyle{boxed}
-\newfloat{exfig}{thp}{lop}
-\floatname{exfig}{Example}
-\def\githubissue#1{\cite{sTeX:github:on}, \hyperlink{https://github.com/KWARC/sTeX/issues/#1}{issue #1}}
-\usepackage[showmeta]{metakeys}
-\begin{document}
-\RecordChanges
-\DocInput{metakeys.dtx}
-\end{document}
-%</driver>
-% \fi
-%
-%\CheckSum{135}
-%
-% \changes{v0.1}{2009/12/14}{First version}
-% \changes{v0.8}{2010/06/18}{This is almost done}
-% \changes{v0.9}{2010/09/02}{make sure that showkeys is always initialized}
-%
-% \GetFileInfo{metakeys.sty}
-%
-% \MakeShortVerb{\|}
-% \def\scsys#1{{{\sc #1}}\index{#1@{\sc #1}}}
-% \def\latexml{\scsys{LaTeXML}}
-% \def\omdoc{OMDoc}
-% \def\omdocv#1{\omdoc{#1}}
-%
-% \title{{\texttt{metakeys.sty}}: A generic framework for extensible Metadata in {\LaTeX}\thanks{Version {\fileversion} (last revised
-% {\filedate})}}
-% \author{Michael Kohlhase\\
-% FAU Erlangen-N\"urnberg\\
-% \url{http://kwarc.info/kohlhase}}
-% \maketitle
-% \begin{abstract}
-% The |metakeys| package is part of the {\sTeX} collection, a version of {\TeX/\LaTeX} that
-% allows to markup {\TeX/\LaTeX} documents semantically without leaving the document
-% format, essentially turning {\TeX/\LaTeX} into a document format for mathematical
-% knowledge management (MKM).
-%
-% This package supplies the infrastructure for extending {\sTeX} macros with {\omdoc}
-% metadata. This package is mainly intended for authors of {\sTeX} extension packages.
-% \end{abstract}
-%
-% \setcounter{tocdepth}{2}\tableofcontents\newpage
-%
-% \section{The User Interface}\label{sec:user}
-%
-% Many of the {\stex} macros and environments take an optional first argument which uses
-% key/value pairs to specify metadata relations of the marked up objects. The |metakeys|
-% package supplies the infrastructure managing these key/value pairs. It also forms the
-% basis for the |rdfmeta| package which allows to use these for flexible, user-extensible
-% metadata relations (see~\ctancite{Kohlhase:rdfmeta} for details).
-%
-% \subsection{Package Options}\label{sec:user:options}
-%
-% The |metakeys| package takes a single option: \DescribeMacro{showmeta}|showmeta|. If
-% this is set, then the metadata keys defined by the |\addmetakey| are shown
-% (see~\ref{sec:user:showmeta})
-%
-% \subsection{Adding Metadata Keys to Commands}\label{sec:user:keys}
-%
-% Key/value pairs in \stex are organized in \textbf{key groups}: every {\stex} macro and
-% environment that takes a key/value argument has an associated key group, and only keys
-% that are registered in this group can be utilized. The |metakeys| package supplies the
-% \DescribeMacro{\addmetakey}|\addmetakey| macro to add a new key to a key group: If
-% \meta{group} is the name of a key group \meta{key} is a metadata keyword name, then
-% \begin{quote}
-% |\addmetakey[|\meta{default}|]{|\meta{group}|}{|\meta{key}|}[|\meta{dval}|]|
-% \end{quote}
-% registers \meta{key} in the metadata group \meta{group}, with an optional values
-% \meta{default} and \meta{dval} for \meta{key}. \meta{default} is the default value for
-% \meta{key}, if it is not specified, and \meta{dval} is the value \meta{key} gets, if
-% \meta{key} is given without specifying a value. These two defaults are often used as
-% \begin{quote}
-% |\addmetakey[false]{|\meta{group}|}{|\meta{key}|}[true]|
-% \end{quote}
-% Then, the value of \meta{key} is |false| if \meta{key} is not given and |true|, if
-% \meta{key} is specified without value. This is often the best way if we want to use
-% \meta{key} as an indicator to have a feature of name \meta{key} (we can test that with
-% |\ifx\|\meta{group}|@|\meta{key}|\@true|, if we prepared the macro |\def\@true{true}|
-% earlier).
-%
-% The keys registered for a metadata group can be used for defining macros with a
-% key/value arguments via the \DescribeMacro{\metasetkeys}|\metasetkeys| macro, see for
-% instance the the definition in Figure~\ref{fig:foo}. This macro is used exactly like the
-% |\setkeys| macro from the |keyval| package~\cite{Carlisle:tkp99}, but integrates custom
-% initialization and draft display functionality. This usage is mostly for package
-% designers. There is another: If a macro or environment cannot be extended by an optional
-% argument, e.g. because anther package already does so (e.g. the |document| environment
-% is extended -- by redefining it -- by various packages, which causes problems), the
-% |\metasetkeys| macro can be used directly.
-%
-% The \DescribeMacro{\addmetalistkey}|\addmetalistkey| macro is a variant of |\addmetakey|
-% that adds a list-valued metadata key. The |\addmetalistkey{foo}{val}| in
-% Figure~\ref{fig:foo} would allows to use multiple occurrences of the |val| keys in the
-% metadata argument of |\foo|, the values of the |val| keys are collected as a
-% comma-separated list in the token register |\foo@vals|. Note that the |val| key can also
-% deal with comma-separated lists for convenience.
-%
-% With these definitions in a used package\footnote{\makeatletter Recall that the
-% \texttt{@} character is only allowed in packages, where comma-separated lists can be
-% iterated over e.g. by the \texttt{\textbackslash{@}for} macro.} an invocation of
-% \begin{quote}
-% |\foo[type=bar,id=f4711,val=4,val=7,val={1,1}]|
-% \end{quote}
-% is formatted to
-% \begin{quote}
-% \addmetakey{foo}{id}\addmetakey{foo}{type}\addmetalistkey{foo}{val}\makeatletter
-% \newcommand\foo[1][]{\metasetkeys{foo}{#1} I have seen a \emph{foo} of type \texttt{\foo@type}
-% with identifier \texttt{\foo@id} and values
-% \let\@join=\relax\def\@thejoin{, and }
-% \@for\@I:=\foo@vals\do{\@join\@I\let\@join=\@thejoin}!}\makeatother
-% \foo[type=bar,id=f4711,val=4,val=7,val=1,val=1]
-% \end{quote}
-%
-% \begin{exfig}[ht]
-% \begin{verbatim}
-% \addmetakey{foo}{id}
-% \addmetakey{foo}{type}
-% \addmetakey[yes]{foo}{visible}
-% \addmetalistkey{foo}{val}
-% \def\@yes{yes}
-% \newcommand\foo[1][]{\metasetkeys{foo}{#1}
-% \ifx\foo@visible\@yes % testing for visibility
-% I have seen a \emph{foo} of type \texttt{\foo@type} with identifier
-% \texttt\foo@id and values \texttt\foo@vals.
-% \let\@join=\relax\def\@thejoin{, and }
-% \@for\@I:=\foo@vals\do{\@join\@I\let\@join=\@thejoin}!
-% \fi}
-% \end{verbatim}
-% \vspace*{-2em}
-% \caption{Defining a macro with metadata}
-% \label{fig:foo}
-% \end{exfig}
-%
-% \subsection{Showing Metadata Keys/Values}\label{sec:user:showmeta}
-%
-% If the |showmeta| package option is set, the |metakeys| package sets an internal switch that
-% shows the values of all keys specified with the |\addmetakey| macro. The default behavior
-% is to write the key/value pairs into the margin as \meta{key}|:|\meta{value}. Package
-% designers can customize this behavior by redefining the |\metakeys@show@key| and
-% |\metakeys@show@keys| macro.
-%
-% \DescribeMacro{\metakeys@show@key}|\metakeys@show@key{|\meta{key}|}{|\meta{value}|}| shows the a
-% single key value pair, and
-% \DescribeMacro{\metakeys@show@keys}|\metakeys@show@keys{|\meta{group}|}{|\meta{keys}|}| shows the
-% a list of keys metadata, by default we disregard the \meta{group} and show \meta{keys}
-% in a marginpar.
-%
-% For keys that should not be shown in this manner, the |\addmetakey| macro has a variant
-% \DescribeMacro{\addmetakey*}|\addmetakey*|. Its behavior is exactly the same, only that
-% it keeps the key from being shown by the |showmeta| option.
-%
-% Note that setting the |showmeta| option will enable metadata presentation on the whole
-% document. But sometimes we want to disable that, e.g. inside figures, where |\marginpar|
-% is not allowed. Therefore the |metakeys| package provides the
-% \DescribeMacro{\hidemetakeys}|\hidemetakeys| macro that reverses this. The
-% \DescribeMacro{\showmetakeys}|\showmetakeys| macro re-enables metadata presentation.
-%
-%
-% \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 GitHub repository~\cite{sTeX:github:on}.
-% \begin{enumerate}
-% \item none reported yet
-% \end{enumerate}
-%
-% \StopEventually{\newpage\PrintChanges\printbibliography}
-%
-% \section{The Implementation}\label{sec:impl}
-%
-% \subsection{Package Options}\label{sec:impl:options}
-%
-% We declare some switches which will modify the behavior according to the package
-% options. Generally, an option |xxx| will just set the appropriate switches to true
-% (otherwise they stay false). First we have the general options
-% \begin{macrocode}
-%<*package>
-\newif\ifmetakeys@showmeta\metakeys@showmetafalse
-\DeclareOption{showmeta}{\metakeys@showmetatrue}
-\DeclareOption*{}
-\ProcessOptions
-% \end{macrocode}
-%
-% We build on the |keyval| package which we first need to load. For {\latexml}, we also
-% initialize the package inclusions.
-% \begin{macrocode}
-\RequirePackage{keyval}[1997/11/10]
-\RequirePackage{etoolbox}
-% \end{macrocode}
-%
-% \subsection{Adding Metadata Keys}\label{sec:impl:keys}
-%
-% \begin{macro}{\addmetakey}
-% The |\addmetakey| macro looks at the next character and invokes helper macros accordingly.
-% \begin{macrocode}
-\newcommand\addmetakey{\@ifstar\addmetakey@star\addmetakey@nostar}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\addmetakey@star}
-% |\addmetakey@star| takes care of the starred form of |\addmetakey|. An invocation of
-% |\addmetakey@star{|\meta{default}|}{|\meta{group}|}{|\meta{key}|}| macro first extends the
-% |\metakeys@clear@|\meta{group}|@keys| macro then defines the key \meta{key} with the
-% |\define@key| macro from the |keyval| package. This stores the key value given in the
-% local macro |\|\meta{group}|@|\meta{key}.
-% \begin{macrocode}
-\newcommand\addmetakey@star[3][]{%
- \@ifnextchar[{%
- \addmetakey@star@aux[#1]{#2}{#3}%
- }{%
- \addmetakey@star@aux[#1]{#2}{#3}[]%
- }%
-}%
-\def\addmetakey@star@aux[#1]#2#3[#4]{%
- \metakeys@ext@clear@keys{#2}{#3}{#1}%
- \metakeys@initialize@showkeys{#2}%
- \define@key{#2}{#3}[#4]{%
- \csxdef{#2@#3}{##1}%
- }%
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\addmetakey@nostar}
-% |\addmetakey@nostar| takes care of the no-starred form of |\addmetakey| by first extending the
-% |\metakeys@|\meta{group}|@showkeys| macro which contains those keys that should be
-% shown and then calling |\addmetakey@star|.
-% \begin{macrocode}
-\newcommand\addmetakey@nostar[3][]{%
- \metakeys@ext@showkeys{#2}{#3}%
- \addmetakey@star[#1]{#2}{#3}%
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\metasetkeys}
-% The |\metasetkeys{|\meta{group}|}| clears/presets the key of \meta{group} via
-% |\clear@|\meta{group}|@keys|, (if the |showmeta| option is set) shows them, and
-% then sets the keys via |keyval|s |\setkeys| command.
-% \begin{macrocode}
-\newcommand\metasetkeys[2]{%
- \@nameuse{clear@#1@keys}%
- \setkeys{#1}{#2}%
- \ifmetakeys@showmeta%
- \edef\@@keys{\@nameuse{#1@showkeys}}%
- \metakeys@show@keys{#1}{%
- \@for\@I:=\@@keys\do{%
- \metakeys@show@keyval{#1}{\@I}%
- }%
- }%
- \fi%
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\metakeys@ext@clear@keys}
-% |\metakeys@ext@clear@keys{|\meta{group}|}{|\meta{key}|}{|\meta{default}|}| extends (or
-% sets up if this is the first |\addmetakey| for \meta{group}) the
-% |\clear@|\meta{group}|@keys| macro to set the default value \meta{default} for
-% \meta{key}. The |\clear@|\meta{group}|@keys| macro is used in the generic
-% |\metasetkeys| macro below. The variant |\@metakeys@ext@clear@keys| is provided for
-% use in the |sref| package.
-% \begin{macrocode}
-\newrobustcmd\metakeys@ext@clear@keys[3]{%
- \@metakeys@ext@clear@keys{#1}{#1@#2}{#3}%
-}%
-\newrobustcmd\@metakeys@ext@clear@keys[3]{%
- \@ifundefined{clear@#1@keys}{%
- \csgdef{clear@#1@keys}{\csgdef{#2}{#3}}%
- }%
- {\expandafter\gappto\csname clear@#1@keys\endcsname{\csgdef{#2}{#3}}}%
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\addmetalistkey}
-% \begin{macrocode}
-\newrobustcmd\addmetalistkey{%
- \@ifstar\addmetalistkey@star\addmetalistkey@nostar%
-}%
-\newrobustcmd\addmetalistkey@star[3][]{%
- \metakeys@ext@clear@keys{#2}{#3}{#1}%
- \metakeys@initialize@showkeys{#2}%
- \csgdef{#2@#3s}{}%
- \define@key{#2}{#3}[#1]{%
- \ifcsempty{#2@#3s}{%
- \csgdef{#2@#3s}{##1}%
- }{%
- \csxdef{#2@#3s}{\csuse{#2@#3s},##1}%
- }%
- }%
-}%
-\newrobustcmd\addmetalistkey@nostar[3][]{%
- \metakeys@ext@showkeys{#2}{#3}%
- \addmetalistkey@star[#1]{#2}{#3}%
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \subsection{Showing Metadata Keys/Values}\label{sec:impl:showmeta}
-%
-% \begin{macro}{\metakeys@initialize@showkeys}
-% |\metakeys@initialize@showkeys{|\meta{group}|}| sets up the |\|\meta{group}|@showkeys|
-% macro which is is used to store the keys to be shown of the metadata in in the generic
-% |\setmetakeys| macro below.
-% \begin{macrocode}
-\newrobustcmd\metakeys@initialize@showkeys[1]{%
- \@ifundefined{#1@showkeys}{%
- \csdef{#1@showkeys}{}%
- }{}%
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\metakeys@ext@showkeys}
-% |\metakeys@ext@showkeys{|\meta{group}|}{|\meta{key}|}| extends (or sets up) the
-% |\|\meta{group}|@showkeys| macro which is is used to store the keys to be shown of the
-% metadata in in the generic |\setmetakeys| macro below.
-% \begin{macrocode}
-\newrobustcmd\metakeys@ext@showkeys[2]{%
- \@ifundefined{#1@showkeys}{%
- \csdef{#1@showkeys}{#2}%
- }{%
- \csedef{#1@showkeys}{\csuse{#1@showkeys},#2}%
- }%
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\metakeys@show@key}
-% |\metakeys@show@key{|\meta{key}|}{|\meta{value}|}| shows the a single key value pair, as a
-% default we just write \meta{key}|:|\meta{value}.
-% \begin{macrocode}
-\newrobustcmd\@metakeys@show@key[2]{\metakeys@show@key{#2}{#1}}%
-\newrobustcmd\metakeys@show@key[2]{%
- \edef\@test{#2}%
- \ifx\@test\@empty\else #1:#2\quad\fi%
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\metakeys@show@keys}
-% |\metakeys@show@keys{|\meta{group}|}{|\meta{keys}|}| shows the metadata, by default we
-% disregard the \meta{group} and show \meta{keys} in a marginpar.
-% \begin{macrocode}
-\newrobustcmd\metakeys@show@keys[2]{\marginpar{{\scriptsize #2}}}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\metakeys@show@keyval}
-% |\metakeys@show@keyval{|\meta{group}|}|{|\meta{key}|} shows the key/value pair of a given key \meta{key}.
-% \begin{macrocode}
-\newrobustcmd\metakeys@show@keyval[2]{%
- \expandafter\@metakeys@show@key\csname #1@#2\endcsname{#2}%
-}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\showmetakeys}
-% \begin{macrocode}
-\newrobustcmd\showmetakeys{\metakeys@showmetatrue}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\hidemetakeys}
-% \begin{macrocode}
-\newrobustcmd\hidemetakeys{\metakeys@showmetafalse}%
-% \end{macrocode}
-% \end{macro}
-%
-% \subsection{Using better defaults than empty}
-%
-% \begin{macro}{\addmetakeynew}
-% |\addmetakeynew| is an experimental version of |\addmetakey| which gives
-% |\omd@unspecified| as an optional argument, so that it is used as the default value
-% here and then test for it in |\omfidus|. But unfortunately, this does not work yet.
-% \begin{macrocode}
-\newrobustcmd\addmetakeynew[3][]{%
- \metakeys@ext@clear@keys{#2}{#3}{#1}%
- \define@key{#2}{#3}{%
- \csgdef{#2@#3}{##1}%
- }%
-}%
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \begin{macro}{\metakeys@unspecified}
-% An internal macro for unspecified values. It is used to initialize keys.\ednote{MK:
-% we could probably embed an package error or warning in here}
-% \begin{macrocode}
-\newrobustcmd\metakeys@unspecified{an metakeys-defined key left unspecified}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\metakeysifus}
-% This just tests for equality of the first arg with |\metakeys@unspecified|
-% \begin{macrocode}
-\newrobustcmd\metakeysifus[4]{%
- \message{testing #1@#2=\csname#1@#2\endcsname}%
- \expandafter\ifx\csname #1@#2\endcsname\metakeys@unspecified{#3}\else{#4}\fi%
-}%
-%</package>
-% \end{macrocode}
-% \end{macro}
-% \Finale
-\endinput
-% \iffalse
-%%% Local Variables:
-%%% mode: doctex
-%%% TeX-master: t
-%%% End:
-% \fi
-
-
-% LocalWords: iffalse kohlhase Thu metakeys metakeys.dtx scsys sc sc latexml omdoc foo
-% LocalWords: omdocv texttt fileversion maketitle setcounter tocdepth newpage filedate
-% LocalWords: tableofcontents ednote showmeta NeedsTeXFormat stex rdfmeta ctancite dval
-% LocalWords: makeatletter newcommand emph makeatother exfig vspace impl ltxml textbf
-% LocalWords: printbibliography keyval expandafter gdef csname ifx tkp99 sref
-% LocalWords: endcsname setkeys ifundefined omfidus metakeysifus addmetakey foo@vals
-% LocalWords: doctex metasetkeys metasetkeys marginpar hidemetakeys textsf omd rangle
-% LocalWords: hidemetakeys showmetakeys showmetakeys langle textsf langle addmetalistkey
-% LocalWords: newif ifmetakeys showmetafalse showmetatrue ifstar showkeys addmetalistkey
-% LocalWords: nameuse setmetakeys addmetakeynew textbackslash compactenum rangle xdef
-% LocalWords: addmetakey@nostar addmetalistkey@nostar scriptsize endinput