texlive[53700] Master: metastr (6feb20)

commits+karl at tug.org commits+karl at tug.org
Thu Feb 6 21:53:43 CET 2020


Revision: 53700
          http://tug.org/svn/texlive?view=revision&revision=53700
Author:   karl
Date:     2020-02-06 21:53:43 +0100 (Thu, 06 Feb 2020)
Log Message:
-----------
metastr (6feb20)

Modified Paths:
--------------
    trunk/Master/tlpkg/bin/tlpkg-ctan-check
    trunk/Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc

Added Paths:
-----------
    trunk/Master/texmf-dist/doc/latex/metastr/
    trunk/Master/texmf-dist/doc/latex/metastr/README.txt
    trunk/Master/texmf-dist/doc/latex/metastr/metasamp.tex
    trunk/Master/texmf-dist/doc/latex/metastr/metastr.pdf
    trunk/Master/texmf-dist/source/latex/metastr/
    trunk/Master/texmf-dist/source/latex/metastr/metastr.dtx
    trunk/Master/texmf-dist/source/latex/metastr/metastr.ins
    trunk/Master/texmf-dist/tex/latex/metastr/
    trunk/Master/texmf-dist/tex/latex/metastr/metastr.sty
    trunk/Master/tlpkg/tlpsrc/metastr.tlpsrc

Added: trunk/Master/texmf-dist/doc/latex/metastr/README.txt
===================================================================
--- trunk/Master/texmf-dist/doc/latex/metastr/README.txt	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/metastr/README.txt	2020-02-06 20:53:43 UTC (rev 53700)
@@ -0,0 +1,37 @@
+metastr v1.0
+Copyright 2020 Niklas Beisert
+
+metastr is a LaTeX2e package
+to store and compose strings in a structured way.
+This can serve several purposes such as:
+manage and write document metadata;
+use templates for formatting document data;
+assist in assembling and displaying document license information;
+facilitate basic internationalisation and localisation.
+
+The package consists of the files
+
+    README.txt   readme file
+    metastr.ins  installation file
+    metastr.dtx  source file
+    metastr.sty  package file
+    metasamp.tex sample latex file
+    metastr.pdf  manual
+
+The distribution consists of the files
+README.txt, metastr.ins and metastr.dtx.
+
+Run "(pdf)latex metastr.dtx" to compile the manual metastr.pdf.
+
+Run "latex metastr.ins" to create the package metastr.sty
+and the sample metasamp.tex.
+Copy the file metastr.sty to an appropriate directory of your LaTeX
+distribution, e.g. texmf-root/tex/latex/metastr.
+
+This work may be distributed and/or modified under the
+conditions of the LaTeX Project Public License, either version 1.3
+of this license or (at your option) any later version.
+The latest version of this license is in
+  http://www.latex-project.org/lppl.txt
+and version 1.3 or later is part of all distributions of LaTeX
+version 2005/12/01 or later.


Property changes on: trunk/Master/texmf-dist/doc/latex/metastr/README.txt
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/metastr/metasamp.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/metastr/metasamp.tex	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/metastr/metasamp.tex	2020-02-06 20:53:43 UTC (rev 53700)
@@ -0,0 +1,157 @@
+%%
+%% This is file `metasamp.tex',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% metastr.dtx  (with options: `sample')
+%% 
+%% Copyright (C) 2020 Niklas Beisert
+%% 
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%%   http://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of LaTeX
+%% version 2005/12/01 or later.
+%% 
+\NeedsTeXFormat{LaTeX2e}[1996/12/01]
+\ProvidesFile{metasamp.tex}[2020/02/06 v1.0 sample for metastr]
+\documentclass[12pt]{article}
+
+\usepackage{geometry}
+\geometry{layout=a4paper}
+\geometry{paper=a4paper}
+\geometry{margin=2.5cm}
+\parindent0pt
+\parskip1ex
+
+\PassOptionsToPackage{bookmarks=true}{hyperref}
+\usepackage{hyperref}
+
+\PassOptionsToPackage{draft}{metastr}
+\PassOptionsToPackage{loadlang=en|de|fr|es}{metastr}
+%%\PassOptionsToPackage{loadlang=en|fr|es}{metastr}
+%%\PassOptionsToPackage{loadlang=de|en}{metastr}
+\PassOptionsToPackage{cclogocurr=euro}{metastr}
+
+\usepackage{metastr}
+\usepackage{graphicx}
+\usepackage{babel}
+\IfFileExists{ccicons.sty}{\usepackage{ccicons}}{}
+
+\metasetterm[en]{Zurich}{Zurich}
+\metasetterm[de]{Zurich}{Z\"rich}
+\metasetterm[fr]{Zurich}{Zurich}
+\metasetterm[es]{Zurich}{Z\'urich}
+\metasetterm[it]{Zurich}{Zurigo}
+\metasetterm[pt]{Zurich}{Zurique}
+
+\metaset{subject}{\metacompose[#1]{location}{location: }
+   {\metacompose[#1]{date}{, date: }{}{}}
+   {\metacompose[#1]{date}{date: }{}{}}}
+
+\metaset[skip]{subtitle}{\vspace{1ex}}
+\metaset[skip]{author}{\vspace{2ex}}
+\metaset[skip]{location}{\vspace{1ex}}
+\metaset[skip]{date}{\vspace{1ex}}
+\metaset[style]{title}{\LARGE\bfseries}
+\metaset[style]{author}{\large\scshape}
+\metaset[sep]{draft}{ -- }
+%%\metaunset[sep]{date}
+
+\metaset[altlang]{title}{en,de}
+\metaset[altlang]{rightstext}{en,es}
+\metaset[rights]{writepdf}{}
+
+\metasetlang{en}
+%%\metasetlang{de}
+%%\metasetlang{de-CH}
+%%\metasetlang{fr}
+
+\metaset[en]{title}{A metastr Sample}
+\metaset[de]{title}{Ein metastr Beispiel}
+\metaset[print]{title}{A \textsf{metastr} Sample}
+\metaset{subtitle}{Illustration of some features}
+\metaset{author}{Niklas Beisert}
+\metaset{keywords}{composition of title, application of licenses, translations}
+\metaset{location}{\metatranslate[#1]{Zurich}}
+\metaset{date}{2020/02/06}
+\metaset{partof}{The metastr Package}
+\metaset[print]{partof}{The \textsf{metastr} Package}
+
+\metaset{copyrightowner}{\metapick[#1]{author}}
+\metaset{copyrightdate}{2020}
+\metacopyright{doc}
+%%\metacopyright{reserved}
+
+%%\metaset{licenseversion}{1.2}
+%%\metalicense{lppl}
+
+%%\metaset{licenseversion}{3.0}
+\metalicensecc{by-sa}
+%%\metalicensecc{by-nc-sa}
+%%\metalicensecc{zero}
+%%\metalicensecc{pd}
+
+\metaset[cmd]{licenselogo}{\includegraphics[scale=0.75]{#1}}
+
+\begin{document}
+
+\pdfbookmark[1]{\metaterm{title}}{title}
+\begin{center}
+\metapick[print]{titletext}
+\end{center}
+
+\vspace{1ex}\hrule\par\vspace{1ex}
+\begingroup\footnotesize
+\pdfbookmark[1]{\metaterm{copyright}}{copyright}
+\metapick[print]{rightstext}
+\endgroup
+\vspace{1ex}\hrule\par\vspace{1ex}
+
+\section{Metadata Inspection}
+
+The metadata stored in this example PDF can be inspected with
+the tool \texttt{pdfinfo}:
+
+\begin{tabular}{l}
+\verb+pdfinfo metasamp.pdf+\\
+\verb+pdfinfo -meta metasamp.pdf | less+
+\end{tabular}
+
+\section{Translations}
+
+\begin{tabular}{ll}
+document language:&\metaterm{Zurich}\\
+Spanish:&\metatranslate[es]{Zurich}
+\end{tabular}
+
+\metaif[]{cc at type}{ % only if a CC license is in use
+\section{Creative Commons}
+some representations of the selected license:
+\begin{itemize}
+\item license identifier:
+  \metapick[]{licensecc}
+\item \texttt{short} identifier:
+  \metapick[short]{licensecc}
+\item full form:
+  \metapick[]{licenseccfull}
+\item \texttt{ident} form:
+  \metapick[ident]{licensecc}
+\item \texttt{short} form:
+  \metapick[short]{licenseccfull}
+\IfFileExists{ccicons.sty}
+  {\item \texttt{icon} forms:
+   -- \metapick[icon]{licensecc}
+   -- \metapick[icon]{licenseccfull} --}{}
+\item \texttt{url} form:
+  \metapick[url]{licenseccfull}
+\end{itemize}
+}{}
+
+\end{document}
+\endinput
+%%
+%% End of file `metasamp.tex'.


Property changes on: trunk/Master/texmf-dist/doc/latex/metastr/metasamp.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/metastr/metastr.pdf
===================================================================
(Binary files differ)

Index: trunk/Master/texmf-dist/doc/latex/metastr/metastr.pdf
===================================================================
--- trunk/Master/texmf-dist/doc/latex/metastr/metastr.pdf	2020-02-06 20:52:44 UTC (rev 53699)
+++ trunk/Master/texmf-dist/doc/latex/metastr/metastr.pdf	2020-02-06 20:53:43 UTC (rev 53700)

Property changes on: trunk/Master/texmf-dist/doc/latex/metastr/metastr.pdf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/pdf
\ No newline at end of property
Added: trunk/Master/texmf-dist/source/latex/metastr/metastr.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/metastr/metastr.dtx	                        (rev 0)
+++ trunk/Master/texmf-dist/source/latex/metastr/metastr.dtx	2020-02-06 20:53:43 UTC (rev 53700)
@@ -0,0 +1,3323 @@
+% \iffalse
+%
+% metastr.dtx Copyright (C) 2020 Niklas Beisert
+%
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either version 1.3
+% of this license or (at your option) any later version.
+% The latest version of this license is in
+%   http://www.latex-project.org/lppl.txt
+% and version 1.3 or later is part of all distributions of LaTeX
+% version 2005/12/01 or later.
+%
+% This work has the LPPL maintenance status `maintained'.
+%
+% The Current Maintainer of this work is Niklas Beisert.
+%
+% This work consists of the files metastr.dtx and metastr.ins
+% and the derived files metastr.sty and metasamp.tex.
+%
+%<package|sample>\NeedsTeXFormat{LaTeX2e}[1996/12/01]
+%<package>\ProvidesPackage{metastr}[2020/02/06 v1.0 Metadata Strings Storage]
+%<sample>\ProvidesFile{metasamp.tex}[2020/02/06 v1.0 sample for metastr]
+%<*driver>
+\def\thedate#1{2020/02/06}\def\theversion#1{v1.0}
+\ProvidesFile{metastr.dtx}[\thedate{} \theversion{} metastr reference manual file]
+\PassOptionsToClass{10pt,a4paper}{article}
+\documentclass{ltxdoc}
+
+\usepackage[margin=35mm]{geometry}
+\usepackage{hyperref}
+\usepackage{hyperxmp}
+\usepackage[usenames]{color}
+\usepackage[utf8]{inputenc}
+\usepackage{babel}
+\usepackage{graphicx}
+\usepackage{ccicons}
+\newcommand{\translate}[1]{\ignorespaces}
+
+\IfFileExists{doclicense.sty}{}{%
+  \GenericWarning{please install package `doclicense'}}
+
+\hypersetup{colorlinks=true}
+\hypersetup{pdfstartview=FitH}
+\hypersetup{pdfpagemode=UseNone}
+\hypersetup{keeppdfinfo}
+\hypersetup{pdfsource={}}
+\hypersetup{pdflang={en-UK}}
+\hypersetup{pdfcopyright={Copyright 2020 Niklas Beisert.
+  This work may be distributed and/or modified under the
+  conditions of the LaTeX Project Public License, either version 1.3
+  of this license or (at your option) any later version.}}
+\hypersetup{pdflicenseurl={http://www.latex-project.org/lppl.txt}}
+\hypersetup{pdfcontactaddress={ETH Zurich, ITP, HIT K,
+  Wolfgang-Pauli-Strasse 27}}
+\hypersetup{pdfcontactpostcode={8093}}
+\hypersetup{pdfcontactcity={Zurich}}
+\hypersetup{pdfcontactcountry={Switzerland}}
+\hypersetup{pdfcontactemail={nbeisert at itp.phys.ethz.ch}}
+\hypersetup{pdfcontacturl={http://people.phys.ethz.ch/\xmptilde nbeisert/}}
+
+\newcommand{\secref}[1]{\hyperref[#1]{section \ref*{#1}}}
+
+\parskip1ex
+\parindent0pt
+\let\olditemize\itemize
+\def\itemize{\olditemize\parskip0pt}
+
+\begin{document}
+
+\title{The \textsf{metastr} Package}
+\hypersetup{pdftitle={The metastr Package}}
+\author{Niklas Beisert\\[2ex]
+  Institut f\"ur Theoretische Physik\\
+  Eidgen\"ossische Technische Hochschule Z\"urich\\
+  Wolfgang-Pauli-Strasse 27, 8093 Z\"urich, Switzerland\\[1ex]
+  \href{mailto:nbeisert at itp.phys.ethz.ch}
+  {\texttt{nbeisert at itp.phys.ethz.ch}}}
+\hypersetup{pdfauthor={Niklas Beisert}}
+\hypersetup{pdfsubject={Manual for the LaTeX2e Package metastr}}
+\date{\thedate{}, \theversion{}}
+\maketitle
+
+\begin{abstract}\noindent
+\textsf{metastr} is a \LaTeXe{} package
+to store and compose strings in a structured way.
+This can serve several purposes such as:
+manage and write document metadata;
+use templates for formatting document data;
+assist in assembling and displaying document license information;
+facilitate basic internationalisation and localisation.
+\end{abstract}
+
+\begingroup
+\parskip0ex
+\tableofcontents
+\endgroup
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\section{Introduction}
+
+This package provides some basic functionality
+to store and compose strings.
+The main goal is to keep relevant information
+for the document in a structured way
+such that it can be accessed and used by conveniently
+using some standardised methods.
+
+The package has the following goals, tasks and features:
+%
+\begin{itemize}
+\item
+manage document metadata and write them to the PDF output file;
+\item
+set up and use templates for formatting document data, e.g.\ for title pages;
+\item
+assist in assembling and displaying document license information;
+\item
+facilitate basic internationalisation and localisation;
+\item
+provide preset texts and common license statements
+in different languages.
+\end{itemize}
+%
+Using the structures provided by the packages makes particular sense
+if you can rely on predefined text and formatting or if you have a couple
+of similar documents for which you can define suitable templates.
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\section{Usage}
+\label{sec:usage}
+
+To use the package \textsf{metastr}, add the command
+%
+\begin{center}
+|\usepackage{metastr}|
+\end{center}
+%
+to the preamble of the \LaTeX{} document.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\subsection{Defining Strings}
+\label{sec:def}
+
+\DescribeMacro{\metadef}
+\DescribeMacro{\metaset}
+The package supplies registers for storing data.
+Registers need to be declared before they can be filled or used
+(unless the package option |checkdef=false| is set,
+see \secref{sec:options}).
+A new register \textit{reg} is declared by the command:
+%
+\begin{center}
+|\metadef{|\textit{reg}|}|
+\end{center}
+%
+The register \textit{reg} can be filled
+with the value \textit{def}
+by the command:
+%
+\begin{center}
+|\metaset{|\textit{reg}|}{|\textit{def}|}|
+\end{center}
+%
+
+The package declares a couple of registers for storing standard metadata.
+The basic set of registers consists of:
+%
+\begin{center}
+\begin{tabular}{ll}
+|title| & document title
+\\
+|subtitle| & document subtitle
+\\
+|author| & document author
+\\
+|location| & location associated to the document
+\\
+|date| & document date
+\\
+|subject| & `subject' of the document
+\\
+|keywords| & (a list of) keywords describing the document
+\\
+|titletext| & composition register for title
+\end{tabular}
+\end{center}
+%
+
+The register |titletext| composes information
+for printing the title
+(such as |title|, |subtitle|, |author|, |location| and |date|).
+It can serve a similar purpose as the \LaTeX{} command |\maketitle|.
+
+Finally, there are some auxiliary registers:
+%
+\begin{center}
+\begin{tabular}{ll}
+|language| &
+main language of the document
+\\
+|url| &
+URL of the document or additional info on it
+\\
+|urlmessage| &
+message to describe the document URL
+\\
+|source| &
+name of the source file
+\\
+|draft| &
+indicator of draft version
+\end{tabular}
+\end{center}
+%
+The register |language| specifies
+the main language used in the document.
+This should be a two-letter language code (\textit{ln})
+potentially followed by two-letter country code
+(\textit{ln}|-|\textit{CN}) such as |en| or |en-GB|.
+The language has some impact on selecting
+register variants, see \secref{sec:variants} and \secref{sec:language},
+it should therefore be set by the command:
+%
+\begin{center}
+|\metasetlang|[|*|]|{|\textit{ln-CN}|}|
+\end{center}
+%
+The starred version declares the language for PDF metadata
+rather than the document contents.
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\subsection{Working with Strings}
+\label{sec:work}
+
+\DescribeMacro{\metaget}
+A register \textit{reg} can be read out by the macro:
+%
+\begin{center}
+|\metaget[]{|\textit{reg}|}{|\textit{def}|}|
+\end{center}
+%
+Note that the (empty) argument in square brackets is mandatory,
+it cannot be left out, see \secref{sec:variants}
+for further details on its purpose.
+This is because |\metaget| must be robust so that its output
+can be processed for writing (optional arguments make a macro fragile).
+In case the register \textit{reg} has not been filled,
+|\metaget| returns nothing.
+
+\DescribeMacro{\metaif}
+Sometimes one may want to test whether a register is filled or not,
+e.g.\ in order to display a default value otherwise.
+This can be achieved by the conditional:
+%
+\begin{center}
+|\metaif[]{|\textit{reg}|}{|\textit{true}|}{|\textit{false}|}|
+\end{center}
+%
+If the register \textit{reg} is filled, return \textit{true}
+otherwise \textit{false}.
+Again, the argument in square brackets is mandatory.
+
+\DescribeMacro{\metaunset}
+The following command cleans a register \textit{reg}
+which has previously been filled:
+%
+\begin{center}
+|\metaunset{|\textit{reg}|}|
+\end{center}
+%
+Note that cleaning is different from filling an empty string
+when it comes to the conditional |\metaif|
+which evaluates true for an empty string but false for a clean register.
+
+\DescribeMacro{\metaappend}
+\DescribeMacro{\metaprepend}
+\DescribeMacro{\metaaddsep}
+The content of registers can be manipulated by some commands.
+To append or prepend a string to a register,
+use the commands:
+%
+\begin{center}
+\begin{tabular}{l}
+|\metaappend{|\textit{reg}|}{|\textit{def}|}|\\
+|\metaprepend{|\textit{reg}|}{|\textit{def}|}|\\
+|\metaaddsep{|\textit{reg}|}{|\textit{sep}|}{|\textit{def}|}|
+\end{tabular}
+\end{center}
+%
+The latter command |\metaaddsep| is designed to compose lists with separators,
+it appends the separator \textit{sep}
+and the value \textit{def} unless the register is clean,
+in which case it is set to \textit{def} without the separator \textit{sep}.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\subsection{String Variants}
+\label{sec:variants}
+
+A versatile feature of the registers is that they can be provided
+in several variants.
+These variants can be used for producing different representations
+of the same register depending on the intended situation.
+For example, a title could be given in a fully formatted version
+|print| for printing, a bare version for metadata
+and a shortened version for headings.
+Similarly, translations to different languages
+could be stored as different versions of the same register,
+see \secref{sec:language}.
+Moreover, certain attributes related to the registers
+could be stored in additional variants.
+
+For example, the register |titletext| exists in
+the default variant (mainly intended for writing out metadata)
+and the |print| variant
+(for printing out a combination of title data on the title page).
+The default variant expands to a combination
+of |draft|, |title| and |subtitle|
+(as far as filled):
+%
+\begin{center}
+[\textit{draft}: ]\textit{title}[ -- \textit{subtitle}]
+\end{center}
+%
+The |print| variant is accessed by the command:
+%
+\begin{center}
+|\metapick[print]{titletext}|
+\end{center}
+%
+It expands to four lines
+containing |title|, |subtitle| + |draft|, |author| and |location| + |date|
+(as far as filled):
+%
+\begin{center}
+\textit{title}\\
+\textit{subtitle} |\par| \textit{draft}\\
+\textit{author}\\
+\textit{location}, \textit{date}
+\end{center}
+%
+The formatting style of each line is given
+by the variant |style| of the first register on this line;
+the vertical space above each line is
+produced by the variant |skip|.
+Two items on a single line are separated by the variant |sep|
+of the second register;
+an unfilled |sep| variant puts the two items on individual lines
+(by default this applies to |subtitle| and |draft|).
+In this way the layout of the title display on the title page
+can be adjusted conveniently
+(by default it mimics the \LaTeX{} command |\maketitle|
+in the class \textsf{article}).
+
+Variants are always specified by an argument |[|\textit{var}|]|
+in square brackets preceding the register |{|\textit{reg}|}|.
+This argument is optional for commands
+which set registers and which can be fragile;
+it is however \emph{mandatory} for macros which read
+the register content and whose output needs to be expandable
+into the output stream
+(even though the register is not optional,
+it is more uniform to stick with square brackets to specify the variant).
+The main declaration involving variants is:
+%
+\begin{center}
+|\metaset[|\textit{var}|]{|\textit{reg}|}{|\textit{def}|}|
+\end{center}
+%
+This command defines the register \textit{reg} in variant \textit{var}
+as \textit{def}.
+The default variant is the empty string,
+while the variant |print| is intended for printed output.
+The variant string is obtained by:
+%
+\begin{center}
+|\metaget[|\textit{var}|]{|\textit{reg}|}|
+\end{center}
+
+\DescribeMacro{\metapick}
+The variant mechanism can become powerful
+through macros which fall back to default variants
+if the desired variant has not been filled explicitly:
+%
+\begin{center}
+|\metapick[|\textit{var}|]{|\textit{reg}|}|
+\end{center}
+%
+This macro tests whether the variant \textit{var},
+the language variant \textit{ln}
+specified through |\metasetlang{|\textit{ln}|}|,
+the generic (empty) variant
+or a fallback language variant have been specified.
+If so, their value is returned (in this order of preference).
+Importantly, the intended variant \textit{var} is passed along
+to the evaluation of \textit{reg} as the argument `|#1|' in
+the definition string \textit{def} of |\metaset|.
+This allows to define a register in one generic variant
+which composes other registers in more specific variants.
+To that end reference registers should be accessed by the construct:
+%
+\begin{center}
+|\metaset{|\textit{reg1}|}{|\ldots|\metapick[#1]{|\textit{reg2}|}|\ldots|}|
+\end{center}
+%
+When this register is accessed by
+|\metapick[|\textit{var}|]{|\textit{reg1}|}|,
+it will read the default variant of \textit{reg1}
+which will pass on to \textit{reg2} in \textit{var}
+(rather than in the default variant).
+
+\DescribeMacro{\metaifpick}
+\DescribeMacro{\metacompose}
+There also exist a corresponding conditional:
+%
+\begin{center}
+|\metaifpick[|\textit{var}|]{|\textit{reg}|}|%
+  |{|\textit{true}|}{|\textit{false}|}|
+\end{center}
+%
+This command tests whether any of the above variants \textit{var}
+have been filled.
+Another convenient macro to more efficiently compose strings is:
+%
+\begin{center}
+|\metacompose[|\textit{var}|]{|\textit{reg}|}|%
+  |{|\textit{prefix}|}{|\textit{postfix}|}{|\textit{empty}|}|
+\end{center}
+%
+It returns the intended register value with prefix string \textit{prefix}
+and suffix string \textit{suffix} if any of the above variants
+have been filled; otherwise it returns \textit{empty}.
+For example, the prefix and/or suffix could be separators for
+displaying the content of an optional register.
+
+In dealing with variants,
+the following commands specify the variant \textit{var}
+as an optional argument |[|\textit{var}|]|:
+%
+\begin{center}
+\begin{tabular}{l}
+|\metaset[|\textit{var}|]{|\textit{reg}|}{|\textit{def}|}|\\
+|\metaunset[|\textit{var}|]{|\textit{reg}|}|\\
+|\metaappend[|\textit{var}|]{|\textit{reg}|}{|\textit{def}|}|\\
+|\metaprepend[|\textit{var}|]{|\textit{reg}|}{|\textit{def}|}|\\
+|\metaaddsep[|\textit{var}|]{|\textit{reg}|}{|\textit{sep}|}{|\textit{def}|}|
+\end{tabular}
+\end{center}
+%
+For the following macros, specifying the variant \textit{var}
+as |[|\textit{var}|]| is \emph{mandatory}:
+%
+\begin{center}
+|\metaget[|\textit{var}|]{|\textit{reg}|}|\\
+|\metapick[|\textit{var}|]{|\textit{reg}|}|\\
+|\metaifpick[|\textit{var}|]{|\textit{reg}|}|%
+  |{|\textit{true}|}{|\textit{false}|}|\\
+|\metacompose[|\textit{var}|]{|\textit{reg}|}|%
+  |{|\textit{prefix}|}{|\textit{postfix}|}|
+\end{center}
+%
+Here, the default variant is accessed by an empty argument \textit{var}.
+
+To illustrate a construction using variants,
+let us consider the above register |titletext|.
+It is defined in the generic variant as:
+%
+\begin{center}
+\begin{tabular}{l}
+|\metaset{titletext}{%|\\
+|  \metacompose[#1]{draft}{}{: }{}%|\\
+|  \metapick[#1]{title}%|\\
+|  \metacompose[#1]{subtitle}{\metaget[sep]{subtitle}}{}{}}|
+\end{tabular}
+\end{center}
+%
+This expands to the prefix `\textit{draft}: ' (if available),
+the main title `\textit{title}'
+and the suffix ` -- \textit{subtitle}' (if available).
+The |print| variant to output a full title for the document is defined by:
+%
+\begin{center}
+\begin{tabular}{l}
+|\metaset[print]{titletext}{%|\\
+|  \metatitleline[print]{title}%|\\
+|  \metatitlelinetwo[print]{subtitle}[print]{draft}%|\\
+|  \metatitleline[print]{author}%|\\
+|  \metatitlelinetwo[print]{location}[print]{date}}|
+\end{tabular}
+\end{center}
+%
+Here, the macros |\metatitleline|[|two|] produce a title line
+consisting of one or two items.
+The single-item version is defined as:
+%
+\begin{center}
+\begin{tabular}{l}
+|\def\metatitleline[#1]#2{%|\\
+|  \metacompose[#1]{#2}|\\
+|   {\metaget[skip]{#2}\begingroup\metaget[style]{#2}}|\\
+|   {\par\endgroup}{}}|
+\end{tabular}
+\end{center}
+%
+If register |#2| is filled,
+this expands to the vertical skip defined by the variant |skip|
+and an encapsulated paragraph of the register value
+in the layout defined by the variant |style|.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\subsection{Write Document Metadata}
+\label{sec:meta}
+
+The contents of certain registers can be written out to
+PDF files as metadata using the package \textsf{hyperref}
+and the extension \textsf{hyperxmp}.
+
+\DescribeMacro{\metawritepdfinfo}
+The basic metadata registers are written out by |\metawritepdfinfo|
+using \textsf{hyperref}.
+The mapping between \textsf{metastr} registers
+and \textsf{hyperref} |\hypersetup| options is given by:
+%
+\begin{center}
+\begin{tabular}{l@{\quad$\to$\quad}l}
+|titletext| & |pdftitle|
+\\
+|author| & |pdfauthor|
+\\
+|subject| & |pdfsubject|
+\\
+|keywords| & |pdfkeywords|
+\end{tabular}
+\end{center}
+%
+Here, |titletext| is used instead of |title| to compose information
+from the registers |draft|, |title| and |subtitle| (as far as filled).
+Note that |\metawritepdfinfo| will be effective
+only when invoked before the contents of the first page are written out.
+
+\DescribeMacro{\metawritepdfaux}
+Auxiliary metadata is written out using \textsf{hyperxmp}
+by the command |\metawritepdfaux| with the mapping:
+%
+\begin{center}
+\begin{tabular}{l@{\quad$\to$\quad}l}
+|url| & |pdfurl|
+\\
+|source| & |pdfsource|
+\end{tabular}
+\end{center}
+
+\DescribeMacro{\metawritepdfpreamble}
+Some metadata must be written out sufficiently early,
+i.e.\ in the document preamble, in order to go into effect.
+These include the language settings,
+and they are written out by |\metawritepdfpreamble|
+with the mapping:
+%
+\begin{center}
+\begin{tabular}{l@{\quad$\to$\quad}l}
+|language| & |pdflang|
+\\
+|language| variant |[meta]| & |pdfmetalang|
+\\
+ & |keeppdfinfo|
+\end{tabular}
+\end{center}
+%
+Note that |pdfmetalang| is a setting of \textsf{hyperxmp}
+and will be ignored if the package is not loaded.
+Furthermore, the \textsf{hyperxmp} option |keeppdfinfo|
+will be set unless the package option |xmppdfinfo=false| is set.
+
+\DescribeMacro{\metawritepdfcontact}
+A contact can be specified within PDF files
+in a standardised format using \textsf{hyperxmp}.
+The command |\metawritepdfcontact| passes on the following
+registers with the mapping:
+%
+\begin{center}
+\begin{tabular}{l@{\quad$\to$\quad}l}
+|contactaddress| & |pdfcontactaddress|
+\\
+|contactpostcode| & |pdfcontactpostcode|
+\\
+|contactcity| & |pdfcontactcity|
+\\
+|contactregion| & |pdfcontactregion|
+\\
+|contactcountry| & |pdfcontactcountry|
+\\
+|contactemail| & |pdfcontactemail|
+\\
+|contacturl| & |pdfcontacturl|
+\end{tabular}
+\end{center}
+
+\DescribeMacro{\metawritepdfrights}
+A document copyright statement, see \secref{sec:rights},
+is recorded within the PDF file by |\metawritepdfrights|
+using \textsf{hyperxmp} with the mapping:
+%
+\begin{center}
+\begin{tabular}{l@{\quad$\to$\quad}l}
+|rightstext| & |pdfcopyright|
+\\
+|licenseurl| & |pdflicenseurl|
+\end{tabular}
+\end{center}
+%
+
+\DescribeMacro{\metawritepdf}
+\DescribeMacro{writepdf}
+Finally, it makes sense to write out PDF metadata automatically.
+This is controlled by filling or clearing certain variants \textit{var}
+of the register |writepdf|:
+%
+\begin{center}
+\begin{tabular}{rl}
+&|\metaset[|\textit{var}|]{writepdf}{}|\\
+or&|\metaunset[|\textit{var}|]{writepdf}|
+\end{tabular}
+\end{center}
+%
+If the variant |auto| is filled (default),
+PDF metadata is written automatically
+at the beginning of the |document| block
+by calling |\metawritepdf|.
+The command |\metawritepdf| calls
+the commands |\metawritepdf|\ldots{}
+depending on whether the variants |info|, |aux|, |preamble|,
+|contact|, |rights| of the register |writepdf| are filled;
+the variants |info|, |aux|, |preamble| are enabled by default,
+the variants |contact|, |rights| need to be enabled explicitly.
+
+Note that the basic metadata such as |author| and |title|
+do not have to be defined already in the preamble,
+but (depending on the combination of drivers and packages)
+they can be set before the contents of the first page
+are shipped out to the PDF file.
+If the basic registers are to be declared on the first page,
+one should disable their automatic writing by
+|\metaunset[info]{writepdf}|.
+When the corresponding registers have been filled,
+(but no later than the end of the first page),
+they need to be written manually
+by invoking |\metawritepdfinfo|.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\subsection{Copyright and Licenses}
+\label{sec:rights}
+
+Specifying a copyright statement and a license is very useful because it
+makes the allowed (re)use of the provided material evident to the reader.
+However, it also takes some efforts to set things up properly.
+The package \textsf{metastr} provides some default texts to
+state the license for a couple of well-established licenses.
+For instance, the set of Creative Commons licenses has become a standard
+to mark the intended (re)use of a document involving creative content.
+For documents related to software, there is a number of
+standard software licenses to choose from.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\paragraph{Registers.}
+
+The package declares the following registers to state the copyright:
+%
+\begin{center}
+\begin{tabular}{ll}
+|copyrightmark| & `\copyright' (|print| variant) or ``Copyright''
+\\
+|copyrightdate| & copyright date
+\\
+|copyrightowner| & copyright owner
+\\
+|copyrightstatement| & combines:
+|...mark| + |...date| + |...owner|
+\\
+|copyrightmessage| & a message explaining the copyright situation
+\end{tabular}
+\end{center}
+%
+The package declares the following registers to state the license:
+%
+\begin{center}
+\begin{tabular}{ll}
+|licensemessage| & licensing message
+\\
+|licenseprovider| & license provider
+\\
+|licenseversion| & license version
+\\
+|licenselogo| & license logo inclusion
+\\
+|licenselogomessage| & display the license logo
+\\
+|licenseurl| & URL with license text and details
+\\
+|licenseurlmessage| & display the license URL
+\end{tabular}
+\end{center}
+%
+Furthermore, there are some related auxiliary registers:
+%
+\begin{center}
+\begin{tabular}{ll}
+|partof| & specifies the work this document is a part of
+\\
+|partofmessage| & a message declaring being part of
+\\
+|attributionmessage| & a message declaring attributions
+\\
+|rightstext| & a composition template for all of the above
+\end{tabular}
+\end{center}
+%
+The above information is compiled automatically in the register |rightstext|.
+It can be written as PDF metadata
+as well as printed with formatting:
+%
+\begin{center}
+|\metapick[print]{rightstext}|
+\end{center}
+%
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\paragraph{Presets.}
+
+The package provides a couple of presets
+for commonly used copyright statements and licenses.
+These are selected by:
+%
+\begin{center}
+\begin{tabular}{l}
+|\metacopyright{|\textit{preset}|}|\\
+|\metalicense{|\textit{preset}|}|
+\end{tabular}
+\end{center}
+%
+The following \textit{preset} values
+provide the associated copyright statements:
+%
+\begin{center}
+\begin{tabular}{ll}
+|plain| & This work is protected by copyright.
+\\
+|parts| & This work as well as its parts is protected by copyright.
+\\
+|doc| & This document is protected by copyright.
+\\
+|doc-parts| & This document as well as its parts is protected by copyright.
+\\
+|reserved| & All rights reserved.
+\\
+|publicdomain| & This work is dedicated to the public domain.
+\end{tabular}
+\end{center}
+%
+The following \textit{preset} values
+provide the associated license statements:
+%
+\begin{center}
+\begin{tabular}{ll}
+|consent| &
+\parbox[t]{0.75\textwidth}{\raggedright
+  Reproduction of any part of this work in any form
+  without prior written consent
+  \textit{of the author}
+  is not permissible.
+}
+\\
+\vphantom{$\hat A$}%
+|consent-noncom| &
+\parbox[t]{0.75\textwidth}{\raggedright
+  Reproduction of any part of this work in any form
+  without prior written consent
+  \textit{of the author}
+  is permissible only for private, scientific and non-commercial use.
+  \vphantom{g}}
+\\
+\vphantom{$\hat A$}%
+|lppl| &
+\parbox[t]{0.75\textwidth}{\raggedright
+  This work may be distributed and/or modified under the
+  conditions of the LaTeX Project Public License, either version \textit{1.3}
+  of this license or (at your option) any later version.\\
+  \url{http://www.latex-project.org/lppl.txt}
+}
+\end{tabular}
+\end{center}
+%
+The license URL will be selected where available.
+The italicised parts of the license statement can be customised
+by the registers |licenseversion| and |licenseprovider|.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\paragraph{Creative Commons Licenses.}
+
+A Creative Commons license can be selected by the command:
+%
+\begin{center}
+|\metalicensecc{|\textit{license}|}|
+\end{center}
+%
+The parameter \textit{license} specifies the type of CC license:
+%
+\begin{center}
+\begin{tabular}{ll}
+|by| & Attribution \\
+|by-sa| & Attribution-ShareAlike \\
+|by-nd| & Attribution-NoDerivatives \\
+|by-nc| & Attribution-NonCommercial \\
+|by-nc-sa| & Attribution-NonCommercial-ShareAlike \\
+|by-nc-nd| & Attribution-NonCommercial-NoDerivatives \\
+|zero| & CC0 public domain declaration \\
+|pd| & generic public domain declaration
+\end{tabular}
+\end{center}
+%
+The appropriate license URL and CC logo is selected
+by the command as well, e.g.
+%
+\begin{center}
+\includegraphics{doclicense-CC-by-sa}\\
+\url{https://creativecommons.org/licenses/by-sa/4.0/}
+\end{center}
+%
+Note that |pd| is not a CC license, but it declares
+that the document is in the public domain by
+|\metacopyright{publicdomain}|
+and it selects the corresponding CC logo for public domain content.
+
+A version of the CC license can be specified by
+the register |licenseversion|.
+The default version is |4.0| (international), further available versions are
+|3.0| (unported) as well as |2.5|, |2.0|, |1.0| (generic).
+For the CC0 license |zero|, the only available version is |1.0| (universal)
+which is the default.
+
+Displaying the logo requires (manual) loading
+of the package \textsf{graphicx};
+furthermore the package \textsf{doclicense} containing the logo files
+must be present.
+The display of the logo can be disabled by the package option |cclogo=false|.
+The logo display is coded by the following definitions
+which can be customised:
+%
+\begin{center}
+\begin{tabular}{l}
+|\metaset[print]{licenselogomessage}{%|\\
+|  \centerline{\metapick[#1]{licenselogo}}}|\\
+|\metaset[cmd]{licenselogo}{\includegraphics{#1}}|
+\end{tabular}
+\end{center}
+
+Various registers and variants of the selected CC license exist.
+The registers specific to CC licenses are:
+%
+\begin{center}
+\begin{tabular}{ll}
+|licencecc| & CC license identifier
+\\
+|licenceccver| & CC license version
+\\
+|licenceccfull| & full license descriptor
+\end{tabular}
+\end{center}
+%
+The variants specific to CC licenses are:
+%
+\begin{center}
+\begin{tabular}{ll}
+\textit{ln} & representation in language \textit{ln}
+\\
+|icon| & CC icon (package \textsf{ccicons} required),
+e.g. \ccLogo\ccAttribution\ccShareAlike
+\\
+|url| & license URL
+\\
+|ident| & CC identifier, e.g.\ `BY-SA'
+\\
+|short| & short form, e.g.\ `CC BY-SA'
+\\
+|logo| & logo filename (package \textsf{doclicense})
+\end{tabular}
+\end{center}
+%
+For example, a full license descriptor is displayed by
+|\metapick[]{licenseccfull}|:
+Creative Commons License ``Attribution-ShareAlike 4.0 International''.
+The license icon can be displayed by
+|\metaget[icon]{licensecc}|: \ccLogo\ccAttribution\ccShareAlike{}
+(this requires the package \textsf{ccicons} to be loaded).
+Note that displaying the full license message |licensemessage|
+in variant |print| in some languages
+may produce quotation marks not declared in default fonts
+causing an error; this can be avoided to some extent by
+loading an appropriate packages for internationalisation
+such as \textsf{babel}.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\subsection{Languages}
+\label{sec:language}
+
+A principal application of the register variants is to
+implement internationalisation and localisation.
+Evidently, this is a tricky subject
+due to various particularities of languages,
+but the register variants can be used
+to specify and select different language representations
+for some commonly used text elements.
+For example, the copyright and license statements in \secref{sec:rights}
+are internationalised (to some extent).
+This makes them conveniently usable in the appropriate language.
+Note that the language presets to be loaded
+need to be specified explicitly by the package option |loadlang|,
+see \secref{sec:options}.
+
+The idea is to understand the variant \textit{var}
+of a register \textit{reg} to be its representation in the language
+\textit{var}=\textit{ln}[|-|\textit{CN}].
+The default (empty) variant as well as specific purpose variants
+(such as |print|) should be provided in the
+document language or a fallback language (such as English).
+The macro |\metapick[|\textit{var}|]{|\textit{reg}|}|
+then selects the appropriate language representation
+or falls back to the default language.
+Here \textit{var} can specify a particular language or a particular purpose.
+Then, |\metapick| will pick (in this order of preference):
+%
+\begin{itemize}
+\item
+the language or purpose \textit{var},
+\item
+the document language specified by |\metasetlang| (if available),
+\item
+the document language specified by |\metasetlang|
+with country code stripped (if available),
+\item
+the default variant,
+\item
+the fallback language (first of package option |loadlang|).
+\end{itemize}
+%
+Note that nesting of |\metapick|
+via |\metapick[#1]{|\textit{reg}|}|
+passes along the original variant
+\textit{var} in the parameter |#1|.
+This mechanism allows to specify some non-specific elements
+in a universal language while the appropriate language is
+selected where available.
+
+\macro{\metaterm}
+\macro{\metatranslate}
+\macro{\metasettest}
+The package reserves registers of the form |term-|\textit{term}
+for storing terms in various (language) representations.
+A couple of such term registers describing common entities in typesetting
+are defined by the package:
+%
+\begin{center}
+\begin{tabular}[t]{ll}
+|title|&Title\\
+|abstract|&Abstract\\
+|copyright|&Copyright\\
+|preface|&Preface\\
+|part|&Part\\
+|chapter|&Chapter\\
+|section|&Section\\
+|subsection|&Subsection\\
+|paragraph|&Paragraph
+\end{tabular}
+\qquad\qquad
+\begin{tabular}[t]{ll}
+|appendix|&Appendix\\
+|page|&Page\\
+|figure|&Figure\\
+|table|&Table\\
+|contents|&Contents\\
+|listfigure|&List of Figures\\
+|listtable|&List of Tables\\
+|references|&References\\
+|index|&Index\\
+|draft|&DRAFT
+\end{tabular}
+\end{center}
+%
+These are provided in different languages for convenient
+internationalisation
+(this can be viewed as a low-key implementation of some of the features
+of the \href{https://ctan.org/pkg/babel}{\textsf{babel}} package).
+Additional term registers can be defined by the user.
+Term registers are accessed by the macros:
+%
+\begin{center}
+\begin{tabular}{l}
+|\metaterm{|\textit{term}|}|\\
+|\metatranslate[|\textit{ln}|]{|\textit{term}|}|\\
+|\metasetterm[|\textit{ln}|]{|\textit{reg}|}{|\textit{def}|}|
+\end{tabular}
+\end{center}
+%
+The macro |\metaterm| obtains the term \textit{term}
+in the default language
+(it invokes |\metapick[]| with empty variant),
+while |\metatranslate| uses any other language \textit{ln}.
+The macro |\metasetterm| declares and fills a term register \textit{term}
+(in a particular language \textit{ln}).
+Note that therefore it is not necessary to declare term registers
+explicitly by |\metadef|.
+
+The PDF metadata are written out in the metadata language variant
+specified by |\metasetlang*|;
+otherwise in the default document language
+specified by |\metasetlang| is used.
+Some registers can even be written out
+in several alternative language versions
+using the package \textsf{hyperxmp},
+namely |title|, |subject| and |rightstext|.
+The set of alternative languages is specified by
+(before invoking the respective command |\metawritepdf...|):
+%
+\begin{center}
+\begin{tabular}{l}
+|\metaset[altlang]{title}{|\textit{languages}|}|\\
+|\metaset[altlang]{subject}{|\textit{languages}|}|\\
+|\metaset[altlang]{rightstext}{|\textit{languages}|}|
+\end{tabular}
+\end{center}
+%
+Here, \textit{languages} is a comma-separated list of language identifiers
+and for each identifier \textit{ln}
+the information is written out in the respective language variant.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\subsection{Package Options}
+\label{sec:options}
+
+General options for the package can be selected by the commands:
+%
+\begin{center}
+\begin{tabular}{rl}
+&|\usepackage[|\textit{opts}|]{metastr}|
+\\
+or&|\PassOptionsToPackage{|\textit{opts}|}{metastr}|
+\end{tabular}
+\end{center}
+%
+|\PassOptionsToPackage| must be used before |\usepackage|.
+\textit{opts} is a comma-separated list of options.
+
+The following options are available:
+%
+\begin{itemize}
+\item |hyperref|[|=true|\textbar|false|]
+(no value implies |true|, initially set to |true|) --
+use the package \textsf{hyperref} to write metadata to PDF.
+\item |hyperxmp|[|=true|\textbar|false|]
+(no value implies |true|, initially set to |true|) --
+use the auxiliary package \textsf{hyperxmp}
+to write additional metadata to PDF.
+\item |checkdef|[|=true|\textbar|false|]
+(no value implies |true|, initially set to |true|) --
+check whether registers have been previously declared
+when filling them.
+\item |cclogo|[|=true|\textbar|false|]
+(no value implies |true|, initially set to |true|) --
+display CC logo from \textsf{doclicense} package.
+\item |cclogocurr=dollar|\textbar|euro|\textbar|yen|
+(initially set to |dollar|) --
+select currency symbol for Creative Commons NonCommercial logos.
+\item |xmppdfinfo|[|=true|\textbar|false|]
+(no value implies |true|, initially set to |true|) --
+write the basic PDF info block
+when using the auxiliary package \textsf{hyperxmp};
+if this option is set,
+\textsf{hyperxmp} is loaded with the option |keeppdfinfo|.
+\item |draft|[|=true|\textbar|false|]
+(no value implies |true|, initially set to |false|) --
+fill |draft| register with ``DRAFT''.
+\item |course|[|=true|\textbar|false|]
+(no value implies |true|, initially set to |false|) --
+Setup extended registers for course materials, see \secref{sec:extras}.
+\item |loadlang=|\textit{ln-1}\texttt{\textbar}\textit{ln-2}%
+  \texttt{\textbar}|...|\texttt{\textbar}\textit{ln-n}
+(bar-separated list w/o spaces, initially set to |en|) --
+Load presets for languages \textit{ln-1}, \textit{ln-2}, \ldots, \textit{ln-n},
+see \secref{sec:language}.
+The first language \textit{ln-1} serves as the fallback variant.
+Available internationalisations currently consist of:
+\begin{center}
+\begin{tabular}{ll}
+|en|& English\\
+|de|& German\\
+|fr|& French\\
+|es|& Spanish
+\end{tabular}
+\end{center}
+\end{itemize}
+%
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\subsection{Extras}
+\label{sec:extras}
+
+The package can provide some special purpose registers on request.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\paragraph{Course Materials.}
+
+A couple of registers for course materials are provided
+upon setting the package option |course|:
+%
+\begin{center}
+\begin{tabular}{ll}
+|course| & title of course
+\\
+|material| & description of document material
+\\
+|period| & period where course takes place
+\\
+|institution| & institution where course is given
+\\
+|instructor| & instructor of course
+\end{tabular}
+\end{center}
+%
+
+The variant |course| of the register |titletext| displays a
+compilation of these registers for display on a title page:
+%
+\begin{center}
+\textit{course}\\
+\textit{material} |\par| \textit{draft}\\
+\textit{institution}, \textit{period}\\
+\textit{instructor}
+\end{center}
+%
+Furthermore, the registers
+|title|, |subtitle|, |author|, |location| and |date| are
+diverted to |course|, |material|, |instructor|,
+|institution| and |period| respectively.
+Consequently, their values are automatically written as PDF metadata,
+but it is certainly possible to override them with custom values.
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\section{Information}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\subsection{Copyright}
+
+Copyright \copyright{} 2020 Niklas Beisert
+
+This work may be distributed and/or modified under the
+conditions of the \LaTeX{} Project Public License, either version 1.3
+of this license or (at your option) any later version.
+The latest version of this license is in
+  \url{http://www.latex-project.org/lppl.txt}
+and version 1.3 or later is part of all distributions of \LaTeX{}
+version 2005/12/01 or later.
+
+This work has the LPPL maintenance status `maintained'.
+
+The Current Maintainer of this work is Niklas Beisert.
+
+This work consists of the files |README.txt|, |metastr.ins| and |metastr.dtx|
+as well as the derived files |metastr.sty|, |metasamp.tex| and |metastr.pdf|.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\subsection{Files and Installation}
+
+The package consists of the files:
+%
+\begin{center}
+\begin{tabular}{ll}
+    |README.txt|   & readme file \\
+    |metastr.ins|  & installation file \\
+    |metastr.dtx|  & source file \\
+    |metastr.sty|  & package file \\
+    |metasamp.tex| & sample file \\
+    |metastr.pdf|  & manual
+\end{tabular}
+\end{center}
+%
+The distribution consists of the files
+|README.txt|, |metastr.ins| and |metastr.dtx|.
+%
+\begin{itemize}
+\item
+Run (pdf)\LaTeX{} on |metastr.dtx|
+to compile the manual |metastr.pdf| (this file).
+\item
+Run \LaTeX{} on |metastr.ins| to create the package |metastr.sty|
+and the samples consisting of |metasamp.tex|.
+Copy the file |metastr.sty| to an appropriate directory of your \LaTeX{}
+distribution, e.g.\ \textit{texmf-root}|/tex/latex/metastr|.
+\end{itemize}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\subsection{Related Packages}
+
+The package makes use of other packages available at CTAN:
+\begin{itemize}
+\item
+This package uses the package
+\href{http://ctan.org/pkg/hyperref}{\textsf{hyperref}}
+to write basic metadata to a PDF file.
+Compatibility with the \textsf{hyperref} package
+has been tested with v7.00c (2019/11/10).
+\item
+This package uses the package \textsf{keyval}
+from the \textsf{graphics} bundle
+to process the options for the package, environments and macros.
+Compatibility with the \textsf{keyval} package
+has been tested with v1.15 (2014/10/28).
+\item
+This package can use the package
+\href{http://ctan.org/pkg/hyperxmp}{\textsf{hyperxmp}}
+to write extended metadata to a PDF file.
+Compatibility with the \textsf{hyperxmp} package
+has been tested with v4.1 (2019/04/05).
+\item
+This package can use the Creative Commons license icon files
+included in the package
+\href{http://ctan.org/pkg/doclicense}{\textsf{doclicense}}.
+Compatibility with the \textsf{doclicense} package
+has been tested with v1.10.0 (2019/06/05).
+\item
+This package can use the Creative Commons license icon fonts
+included in the package
+\href{http://ctan.org/pkg/ccicons}{\textsf{ccicons}}.
+Compatibility with the \textsf{ccicons} package
+has been tested with v1.6 (2017/10/30).
+\item
+Icon files are displayed by means of the
+\href{http://ctan.org/pkg/graphicx}{\textsf{graphicx}} package.
+The package needs to be loaded explicitly.
+Compatibility with the \textsf{graphicx} package
+has been tested with v1.1a (2017/06/01).
+\end{itemize}
+
+There are several other \LaTeX{} packages
+which store and write basic metadata
+for some specific purposes:
+%
+\begin{itemize}
+\item
+The package \href{http://ctan.org/pkg/hyperref}{\textsf{hyperref}}
+writes the arguments of |\author| and |\title|
+unless the package option |pdfusetitle=false| is declared (at load time).
+\item
+The package \href{http://ctan.org/pkg/hyperxmp}{\textsf{hyperxmp}}
+writes the arguments of |\author| and |\title|.
+\item
+The package \href{http://ctan.org/pkg/exframe}{\textsf{exframe}}
+writes the |\exercisedata| registers
+|author|, |title|, |subject| and |keyword|
+unless the package option |pdfdata=off| is specified.
+\item
+The package \href{http://ctan.org/pkg/beamer}{\textsf{beamer}}
+writes the arguments of |\author|, |\title|, |\subject| and |\keywords|.
+\item
+The package \href{http://ctan.org/pkg/gitver}{\textsf{gitver}}
+writes |pdfsubject| unless the package option |nopdfinfo| is specified.
+\item
+Various packages to prepare articles for publication in journals.
+\end{itemize}
+%
+Their mechanisms may be in competition
+with the ones of the present package \textsf{metastr}.
+In order to make the packages work together on the same set of data,
+the most promising option which should work in many cases is the following:
+Fill the registers of \textsf{metastr}
+with the desired values.
+Then pass them on to the structures
+of the other package(s) using |\metaget| or |\metapick|.
+Since the latter commands are robust,
+the other structures ought to be able to handle them without further ado.
+To avoid potential conflicts, multiple writing of (basic) metadata
+should be disabled. For the \textsf{metastr} package this is achived by:
+%
+\begin{center}
+\begin{tabular}{rl}
+&|\metaunset[info]{writepdf}|\\
+or&|\metaunset[auto]{writepdf}|
+\end{tabular}
+\end{center}
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\subsection{Feature Suggestions}
+\label{sec:suggestions}
+
+The following is a list of features which may be useful for future
+versions of this package:
+%
+\begin{itemize}
+\item
+Presets for GNU and other software licenses.
+\item
+Registers for publication data.
+% editor, preprint, doi, publisher, publication, (volume, page), version ...
+\item
+Further translations of copyright and license statements.
+\item
+Export translations to files
+\item
+Make use of the \textsf{babel} package for translations of basic terms.
+\end{itemize}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\subsection{Revision History}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\paragraph{v1.0:} 2020/02/06
+
+\begin{itemize}
+\item
+first version, published on CTAN
+\end{itemize}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\appendix
+
+\settowidth\MacroIndent{\rmfamily\scriptsize 0000\ }
+
+ \DocInput{metastr.dtx}
+
+\end{document}
+%</driver>
+% \fi
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \section{Sample}
+% \label{sec:sample}
+%\iffalse
+%<*sample>
+%\fi
+%
+% This section provides an example of how to apply
+% some of the \textsf{metastr} mechanisms and licenses.
+%
+% Some lines in the example are commented by |%%| for easy experimenting.
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \paragraph{Preamble.}
+%
+% Standard document class:
+%    \begin{macrocode}
+\documentclass[12pt]{article}
+%    \end{macrocode}
+
+% Use package \textsf{geometry} to set the page layout;
+% adjust the paragraph shape:
+%    \begin{macrocode}
+\usepackage{geometry}
+\geometry{layout=a4paper}
+\geometry{paper=a4paper}
+\geometry{margin=2.5cm}
+\parindent0pt
+\parskip1ex
+%    \end{macrocode}
+
+% Declare some options for the package \textsf{hyperref};
+% it does not hurt to load it explicitly
+% although \textsf{metastr} will invoke it by default if not loaded:
+%    \begin{macrocode}
+\PassOptionsToPackage{bookmarks=true}{hyperref}
+\usepackage{hyperref}
+%    \end{macrocode}
+
+% Set some options for the \textsf{metastr} package:
+%    \begin{macrocode}
+\PassOptionsToPackage{draft}{metastr}
+\PassOptionsToPackage{loadlang=en|de|fr|es}{metastr}
+%%\PassOptionsToPackage{loadlang=en|fr|es}{metastr}
+%%\PassOptionsToPackage{loadlang=de|en}{metastr}
+\PassOptionsToPackage{cclogocurr=euro}{metastr}
+%    \end{macrocode}
+
+% Include the \textsf{metastr} package along with
+% \textsf{graphicx}, \textsf{babel}
+% and \textsf{ccicons} (where available):
+%    \begin{macrocode}
+\usepackage{metastr}
+\usepackage{graphicx}
+\usepackage{babel}
+\IfFileExists{ccicons.sty}{\usepackage{ccicons}}{}
+%    \end{macrocode}
+
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \paragraph{Some Adjustments.}
+%
+% Declare some term to be translated;
+% doesn't hurt to declare a couple of variants:
+%    \begin{macrocode}
+\metasetterm[en]{Zurich}{Zurich}
+\metasetterm[de]{Zurich}{Z\"rich}
+\metasetterm[fr]{Zurich}{Zurich}
+\metasetterm[es]{Zurich}{Z\'urich}
+\metasetterm[it]{Zurich}{Zurigo}
+\metasetterm[pt]{Zurich}{Zurique}
+%    \end{macrocode}
+
+% Define |subject| to combine |location| and |date|
+% (as far as filled):
+%    \begin{macrocode}
+\metaset{subject}{\metacompose[#1]{location}{location: }
+   {\metacompose[#1]{date}{, date: }{}{}}
+   {\metacompose[#1]{date}{date: }{}{}}}
+%    \end{macrocode}
+
+% Adjust title display:
+%    \begin{macrocode}
+\metaset[skip]{subtitle}{\vspace{1ex}}
+\metaset[skip]{author}{\vspace{2ex}}
+\metaset[skip]{location}{\vspace{1ex}}
+\metaset[skip]{date}{\vspace{1ex}}
+\metaset[style]{title}{\LARGE\bfseries}
+\metaset[style]{author}{\large\scshape}
+\metaset[sep]{draft}{ -- }
+%%\metaunset[sep]{date}
+%    \end{macrocode}
+
+% Write title also in english and german;
+% write rights as PDF metadata also in English and Spanish:
+%    \begin{macrocode}
+\metaset[altlang]{title}{en,de}
+\metaset[altlang]{rightstext}{en,es}
+\metaset[rights]{writepdf}{}
+%    \end{macrocode}
+
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \paragraph{Set Document Data.}
+%
+% Set the document language:
+%    \begin{macrocode}
+\metasetlang{en}
+%%\metasetlang{de}
+%%\metasetlang{de-CH}
+%%\metasetlang{fr}
+%    \end{macrocode}
+
+% Define some document data:
+%    \begin{macrocode}
+\metaset[en]{title}{A metastr Sample}
+\metaset[de]{title}{Ein metastr Beispiel}
+\metaset[print]{title}{A \textsf{metastr} Sample}
+\metaset{subtitle}{Illustration of some features}
+\metaset{author}{Niklas Beisert}
+\metaset{keywords}{composition of title, application of licenses, translations}
+\metaset{location}{\metatranslate[#1]{Zurich}}
+\metaset{date}{2020/02/06}
+\metaset{partof}{The metastr Package}
+\metaset[print]{partof}{The \textsf{metastr} Package}
+%    \end{macrocode}
+
+% Copyright settings:
+%    \begin{macrocode}
+\metaset{copyrightowner}{\metapick[#1]{author}}
+\metaset{copyrightdate}{2020}
+\metacopyright{doc}
+%%\metacopyright{reserved}
+%    \end{macrocode}
+
+% License settings:
+%    \begin{macrocode}
+%%\metaset{licenseversion}{1.2}
+%%\metalicense{lppl}
+%    \end{macrocode}
+
+% Creative Commons License use:
+%    \begin{macrocode}
+%%\metaset{licenseversion}{3.0}
+\metalicensecc{by-sa}
+%%\metalicensecc{by-nc-sa}
+%%\metalicensecc{zero}
+%%\metalicensecc{pd}
+%    \end{macrocode}
+
+% Scale the CC logo a bit:
+%    \begin{macrocode}
+\metaset[cmd]{licenselogo}{\includegraphics[scale=0.75]{#1}}
+%    \end{macrocode}
+
+% Start document body:
+%    \begin{macrocode}
+\begin{document}
+%    \end{macrocode}
+
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \paragraph{Header.}
+%
+% Display title block:
+%    \begin{macrocode}
+\pdfbookmark[1]{\metaterm{title}}{title}
+\begin{center}
+\metapick[print]{titletext}
+\end{center}
+%    \end{macrocode}
+
+% Display fineprint in fine print:
+%    \begin{macrocode}
+\vspace{1ex}\hrule\par\vspace{1ex}
+\begingroup\footnotesize
+\pdfbookmark[1]{\metaterm{copyright}}{copyright}
+\metapick[print]{rightstext}
+\endgroup
+\vspace{1ex}\hrule\par\vspace{1ex}
+%    \end{macrocode}
+
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \paragraph{Content.}
+%
+% Some useful content:
+%    \begin{macrocode}
+\section{Metadata Inspection}
+
+The metadata stored in this example PDF can be inspected with
+the tool \texttt{pdfinfo}:
+
+\begin{tabular}{l}
+\verb+pdfinfo metasamp.pdf+\\
+\verb+pdfinfo -meta metasamp.pdf | less+
+\end{tabular}
+%    \end{macrocode}
+
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \paragraph{Translations.}
+%
+% Demonstration of terms and translations:
+%    \begin{macrocode}
+\section{Translations}
+
+\begin{tabular}{ll}
+document language:&\metaterm{Zurich}\\
+Spanish:&\metatranslate[es]{Zurich}
+\end{tabular}
+%    \end{macrocode}
+
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \paragraph{Creative Commons.}
+%
+% Demonstrate some CC terms:
+%    \begin{macrocode}
+\metaif[]{cc at type}{ % only if a CC license is in use
+\section{Creative Commons}
+some representations of the selected license:
+\begin{itemize}
+\item license identifier:
+  \metapick[]{licensecc}
+\item \texttt{short} identifier:
+  \metapick[short]{licensecc}
+\item full form:
+  \metapick[]{licenseccfull}
+\item \texttt{ident} form:
+  \metapick[ident]{licensecc}
+\item \texttt{short} form:
+  \metapick[short]{licenseccfull}
+\IfFileExists{ccicons.sty}
+  {\item \texttt{icon} forms:
+   -- \metapick[icon]{licensecc}
+   -- \metapick[icon]{licenseccfull} --}{}
+\item \texttt{url} form:
+  \metapick[url]{licenseccfull}
+\end{itemize}
+}{}
+%    \end{macrocode}
+
+% End of document body:
+%    \begin{macrocode}
+\end{document}
+%    \end{macrocode}
+%\iffalse
+%</sample>
+%\fi
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \section{Implementation}
+% \label{sec:implementation}
+%\iffalse
+%<*package>
+%\fi
+%
+% This section describes the implementation of the package |metastr.sty|.
+
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \subsection{Package Setup}
+% \label{sec:imp-setup}
+%
+% The package declares a couple of setup options.
+%
+% It loads the package \textsf{keyval}
+% for extended options processing.
+%    \begin{macrocode}
+\RequirePackage{keyval}
+%    \end{macrocode}
+
+% \macro{hyperref}
+% \macro{hyperxmp}
+% \macro{checkdef}
+% \macro{cclogo}
+% \macro{cclogocurr}
+% \macro{xmppdfinfo}
+% Store the selected package options in some corresponding internal macros:
+%    \begin{macrocode}
+\newif\ifmstr at opt@hyperref\mstr at opt@hyperreftrue
+\newif\ifmstr at opt@hyperxmp\mstr at opt@hyperxmptrue
+\newif\ifmstr at opt@checkdef\mstr at opt@checkdeftrue
+\newif\ifmstr at opt@xmppdfinfo\mstr at opt@xmppdfinfotrue
+\newif\ifmstr at opt@course\mstr at opt@coursefalse
+\newif\ifmstr at opt@draft\mstr at opt@draftfalse
+\newif\ifmstr at opt@cclogo\mstr at opt@cclogotrue
+\def\mstr at opt@cclogocurr{dollar}
+\def\mstr at opt@loadlang{en}
+\def\mstr at group{mstr@}
+\define at key{\mstr at group}{hyperref}[true]
+  {\csname mstr at opt@hyperref#1\endcsname}
+\define at key{\mstr at group}{hyperxmp}[true]
+  {\csname mstr at opt@hyperxmp#1\endcsname}
+\define at key{\mstr at group}{checkdef}[true]
+  {\csname mstr at opt@checkdef#1\endcsname}
+\define at key{\mstr at group}{xmppdfinfo}[true]
+  {\csname mstr at opt@xmppdfinfo#1\endcsname}
+\define at key{\mstr at group}{cclogo}[true]{\csname mstr at opt@cclogo#1\endcsname}
+\define at key{\mstr at group}{cclogocurr}{\def\mstr at opt@cclogocurr{#1}}
+\define at key{\mstr at group}{loadlang}{\def\mstr at opt@loadlang{#1}}
+\define at key{\mstr at group}{course}[true]{\csname mstr at opt@course#1\endcsname}
+\define at key{\mstr at group}{draft}[true]{\csname mstr at opt@draft#1\endcsname}
+%    \end{macrocode}
+
+% Pass undeclared options on to \textsf{keyval} processing:
+%    \begin{macrocode}
+\DeclareOption*{\expandafter\setkeys\expandafter\mstr at group%
+  \expandafter{\CurrentOption}}
+%    \end{macrocode}
+
+% Process global options while loading package:
+%    \begin{macrocode}
+\ProcessOptions
+%    \end{macrocode}
+
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \subsection{Definitions}
+% \label{sec:imp-def}
+%
+% The following describes the basic definitions
+% of the package.
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \paragraph{Required Packages.}
+%
+% The package loads the packages
+% \textsf{hyperref} and \textsf{hyperxmp}
+% (unless excluded):
+%    \begin{macrocode}
+\ifmstr at opt@hyperref\RequirePackage{hyperref}\fi
+\ifmstr at opt@hyperxmp\RequirePackage{hyperxmp}\fi
+%    \end{macrocode}
+
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \paragraph{General Definitions.}
+%
+% \macro{\mstr at exptwo}
+% A macro to conveniently expand the third token in line:
+%    \begin{macrocode}
+\def\mstr at exptwo#1{\expandafter#1\expandafter}
+%    \end{macrocode}
+% \macro{\mstr at csdo}
+% \macro{\mstr at csdotwo}
+% Some macros to conveniently expand |\csname| arguments
+% before expanding the macro:
+%    \begin{macrocode}
+\def\mstr at csdo#1#2{\expandafter#1\csname#2\endcsname}
+\def\mstr at csdotwo#1#2#3{\mstr at exptwo#1#2\csname#3\endcsname}
+%    \end{macrocode}
+% \macro{\mstr at iftext}
+% Check whether macro |#1| equals text |#2|, then do |#3|:
+%    \begin{macrocode}
+\long\def\mstr at iftext#1#2#3{\def\mstr at tmp{#2}\ifx#1\mstr at tmp#3\fi}
+%    \end{macrocode}
+
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \paragraph{Internal Definitions.}
+%
+% \macro{\mstr at lang@main}
+% \macro{\mstr at lang@short}
+% \macro{\mstr at lang@fallback}
+% \macro{\mstr at lang@meta}
+% Predefine language identifiers as empty.
+% These define the language for the document text
+% (with and without country code), document metadata
+% and a fallback language:
+%    \begin{macrocode}
+\let\mstr at lang@main\@empty
+\let\mstr at lang@short\@empty
+\let\mstr at lang@fallback\@empty
+\let\mstr at lang@meta\@empty
+%    \end{macrocode}
+
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \paragraph{Interface Definitions.}
+%
+% \macro{\metatilde}
+% \macro{\metacomma}
+% Define a macro for the tilde character (mostly for use within URLs);
+% recycle the definitions from \textsf{hyperxmp} if available:
+%    \begin{macrocode}
+\ifdefined\xmptilde
+\let\metatilde\xmptilde
+\let\metacomma\xmpcomma
+\else
+\def\metatilde{~}
+\def\metacomma{,}
+\fi
+%    \end{macrocode}
+
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \paragraph{Declare Registers.}
+%
+% \macro{\metadef}
+% Declare a register:
+%    \begin{macrocode}
+\newcommand{\metadef}[1]{%
+  \mstr at csdo\let{mstr at def@#1}\relax}
+%    \end{macrocode}
+
+% \macro{\mstr at verify}
+% Verify the declaration of a register;
+% throw an error if undeclared;
+% disable checking for package option |checkdef=false|:
+%    \begin{macrocode}
+\newcommand{\mstr at verify}[1]{%
+  \ifcsname mstr at def@#1\endcsname\else
+    \PackageError{metastr}{register `#1' undefined}{}%
+  \fi}
+\ifmstr at opt@checkdef\else\def\mstr at verify#1{}\fi
+%    \end{macrocode}
+
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \paragraph{Set Registers.}
+%
+% \macro{\mstr at setbare}
+% Store the register value in the macro
+% |\mstr at data@|\textit{reg}|@|\textit{var};
+% define one argument to pass along original variant:
+%    \begin{macrocode}
+\long\def\mstr at setbare[#1]#2#3{%
+  \mstr at csdo\gdef{mstr at data@#2@#1}##1{#3}}
+%    \end{macrocode}
+
+% \macro{\mstr at set}
+% Set the register value; verify whether the register has been declared:
+%    \begin{macrocode}
+\long\def\mstr at set[#1]#2#3{\mstr at verify{#2}%
+  \mstr at setbare[#1]{#2}{#3}}
+%    \end{macrocode}
+
+% \macro{\metaset}
+% Interface macro for setting register
+% with optional variant argument:
+%    \begin{macrocode}
+\newcommand{\metaset}{\@ifnextchar[{\mstr at set}{\mstr at set[]}}
+%    \end{macrocode}
+
+% \macro{\mstr at unset}
+% Clear a register value:
+%    \begin{macrocode}
+\long\def\mstr at unset[#1]#2{\mstr at verify{#2}%
+  \mstr at csdotwo\global\let{mstr at data@#2@#1}\@undefined}
+%    \end{macrocode}
+
+% \macro{\metaunset}
+% Interface macro for clearing register
+% with optional variant argument:
+%    \begin{macrocode}
+\newcommand{\metaunset}{\@ifnextchar[{\mstr at unset}{\mstr at unset[]}}
+%    \end{macrocode}
+
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \paragraph{Register Conditionals.}
+%
+% \macro{\metaif}
+% If-then-else structure checking whether register variant is filled:
+%    \begin{macrocode}
+\long\def\metaif[#1]#2#3#4{%
+  \ifcsname mstr at data@#2@#1\endcsname #3\else #4\fi}
+%    \end{macrocode}
+
+% \macro{\metaifpick}
+% If-then-else structure checking if the register in either of the variants
+% |#1|, |\mstr at lang@main|, |\mstr at lang@short|,
+% default and |\mstr at lang@fallback|
+% is filled;
+% |#1| may in fact be a comma-separated list of variants (without spaces):
+%    \begin{macrocode}
+\long\def\mstr at ifloop[#1,#2]#3#4#5{%
+  \metaif[#1]{#3}{#4}{\if @#2@#5\else\mstr at ifloop[#2]{#3}{#4}{#5}\fi}}
+\long\def\metaifpick[#1]#2#3#4{%
+  \mstr at ifloop
+    [#1,\mstr at lang@main,\mstr at lang@short,,\mstr at lang@fallback,]
+    {#2}{#3}{#4}}
+%    \end{macrocode}
+
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \paragraph{Manipulate Registers.}
+%
+% \macro{\mstr at append}
+% Append some string to a register value:
+%    \begin{macrocode}
+\long\def\mstr at append[#1]#2#3{%
+  \mstr at csdotwo\let\mstr at tmpa{mstr at data@#2@#1}%
+  \def\mstr at tmpb##1{\mstr at set[#1]{#2}{##1#3}}%
+  \mstr at exptwo\mstr at tmpb{\mstr at tmpa{##1}}}
+%    \end{macrocode}
+
+% \macro{\mstr at prepend}
+% Prepend some string to a register value:
+%    \begin{macrocode}
+\long\def\mstr at prepend[#1]#2#3{%
+  \mstr at csdotwo\let\mstr at tmpa{mstr at data@#2@#1}%
+  \def\mstr at tmpb##1{\mstr at set[#1]{#2}{#3##1}}%
+  \mstr at exptwo\mstr at tmpb{\mstr at tmpa{##1}}}
+%    \end{macrocode}
+
+% \macro{\mstr at addsep}
+% Append a string to a register value separated by |#1|
+% if the string was previously filled:
+%    \begin{macrocode}
+\long\def\mstr at addsep[#1]#2#3#4{%
+  \metaif[#1]{#2}{\mstr at append[#1]{#2}{#3#4}}{\mstr at set[#1]{#2}{#4}}}
+%    \end{macrocode}
+
+% \macro{\metaappend}
+% \macro{\metaprepend}
+% \macro{\metaaddsep}
+% Interface macros for appending, prepending
+% and adding with separator:
+%    \begin{macrocode}
+\newcommand{\metaappend}{%
+  \@ifnextchar[{\mstr at append}{\mstr at append[]}}
+\newcommand{\metaprepend}{%
+  \@ifnextchar[{\mstr at prepend}{\mstr at prepend[]}}
+\newcommand{\metaaddsep}{%
+  \@ifnextchar[{\mstr at addsep}{\mstr at addsep[]}}
+%    \end{macrocode}
+
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \paragraph{Read Register Values.}
+%
+% \macro{\mstr at getbare}
+% Read a register value
+% while passing along the original variant as an argument:
+%    \begin{macrocode}
+\def\mstr at getbare[#1]#2#3{\csname mstr at data@#2@#1\endcsname{#3}}
+%    \end{macrocode}
+
+% \macro{\metaget}
+% Interface function to read register value
+% with mandatory variant argument in square brackets;
+% return nothing if register clean:
+%    \begin{macrocode}
+\def\metaget[#1]#2{%
+  \metaif[#1]{#2}{\mstr at getbare[#1]{#2}{#1}}{}}%
+%    \end{macrocode}
+
+% \macro{\metacompose}
+% \macro{\metapick}
+% |\metapick| returns a filled register value among the variants
+% |#1|, |\mstr at lang@main|, |\mstr at lang@short|, default
+% and |\mstr at lang@fallback|
+% (in this order of preference), otherwise it returns nothing;
+% |#1| may in fact be a comma-separated list of variants (without spaces);
+% |\metacompose| sandwiches the value between |#3| and |#4| if found,
+% and otherwise returns |#5|:
+%    \begin{macrocode}
+\long\def\mstr at composeloop[#1,#2]#3#4#5#6#7{%
+  \metaif[#1]{#4}{#5\mstr at getbare[#1]{#4}{#3}#6}
+    {\if @#2@#7\else\mstr at composeloop[#2]{#3}{#4}{#5}{#6}{#7}\fi}}
+\long\def\metacompose[#1]#2#3#4#5{%
+  \mstr at composeloop
+    [#1,\mstr at lang@main,\mstr at lang@short,,\mstr at lang@fallback,]{#1}
+    {#2}{#3}{#4}{#5}}%
+\def\metapick[#1]#2{\metacompose[#1]{#2}{}{}{}}
+%    \end{macrocode}
+
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \paragraph{Language Selection.}
+%
+% \macro{language}
+% Declare language register:
+%    \begin{macrocode}
+\metadef{language}
+%    \end{macrocode}
+% \macro{\metasetlang}
+% Set language and extract short forms:
+%    \begin{macrocode}
+\def\mstr at lang@split#1#2-#3@{%
+  \mstr at csdo\gdef{mstr at lang@#1}{#2}}
+\newcommand{\mstr at setlang@main}[1]{%
+  \metaset{language}{#1}%
+  \gdef\mstr at lang@main{#1}%
+  \mstr at lang@split{short}#1-@%
+  \metaset[short]{language}{\mstr at lang@short}%
+  \metaif[meta]{language}{}{\mstr at lang@split{meta}#1-@}}
+\newcommand{\mstr at setlang@meta}[1]{%
+  \metaset[meta]{language}{#1}%
+  \mstr at lang@split{meta}#1-@%
+  \metaset[metashort]{language}{\mstr at lang@meta}}
+\newcommand{\metasetlang}{%
+  \@ifstar\mstr at setlang@meta\mstr at setlang@main}
+%    \end{macrocode}
+
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \paragraph{Terms.}
+%
+% \macro{\metaterm}
+% \macro{\metatranslate}
+% \macro{\metasetterm}
+% Macros for filling and reading term registers:
+%    \begin{macrocode}
+\newcommand{\metaterm}{\metatranslate[]}
+\def\metatranslate[#1]#2{\metapick[#1]{term-#2}}
+\long\def\mstr at setterm[#1]#2#3{%
+  \metadef{term-#2}\mstr at setbare[#1]{term-#2}{#3}}
+\newcommand{\metasetterm}{\@ifnextchar[{\mstr at setterm}{\mstr at setterm[]}}
+%    \end{macrocode}
+
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \paragraph{Automatic Writing to PDF.}
+%
+% \macro{writepdf}
+% Declare register |writepdf| to control automatic
+% writing of metadata to PDF files:
+%    \begin{macrocode}
+\metadef{writepdf}
+\metaset[auto]{writepdf}{}
+\metaset[preamble]{writepdf}{}
+\metaset[info]{writepdf}{}
+\metaset[aux]{writepdf}{}
+%    \end{macrocode}
+
+% \macro{\mstr at ifwritepdf}
+% Auxiliary macro to write some type of metadata if switch activated,
+% disable switch afterwards:
+%    \begin{macrocode}
+\long\def\mstr at ifwritepdf[#1]#2{%
+  \metaif[#1]{writepdf}{#2\metaunset[#1]{writepdf}}{}}
+%    \end{macrocode}
+
+% \macro{\metawritepdf}
+% Write selected types of metadata to PDF file:
+%    \begin{macrocode}
+\newcommand{\metawritepdf}{%
+  \mstr at ifwritepdf[preamble]{\metawritepdfpreamble}%
+  \mstr at ifwritepdf[info]{\metawritepdfinfo}%
+  \mstr at ifwritepdf[aux]{\metawritepdfaux}%
+  \mstr at ifwritepdf[contact]{\metawritepdfcontact}%
+  \mstr at ifwritepdf[rights]{\metawritepdfrights}%
+}
+%    \end{macrocode}
+
+% \macro{\mstr at begindoc}
+% Hook for writing data to PDF file;
+% this is the last chance to write the preamble set of data to the PDF:
+%    \begin{macrocode}
+\newcommand{\mstr at begindoc}{%
+  \mstr at ifwritepdf[preamble]{\metawritepdfpreamble}%
+  \mstr at ifwritepdf[auto]{\metawritepdf}%
+}
+%    \end{macrocode}
+
+% Hook |\mstr at begindoc| to begining of |document| block
+% before all other hooks are called:
+%    \begin{macrocode}
+\begingroup
+\toks@\expandafter{\expandafter\mstr at begindoc\@begindocumenthook}%
+\xdef\@begindocumenthook{\the\toks@}%
+\endgroup
+%    \end{macrocode}
+
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \subsection{Basic Registers}
+% \label{sec:imp-basic}
+%
+% The following defines a set of basic and auxiliary registers.
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \paragraph{Declarations.}
+%
+% \macro{draft}
+% Declare register to state draft mode:
+%    \begin{macrocode}
+\metadef{draft}
+%    \end{macrocode}
+% Set draft text (if |draft| option set):
+%    \begin{macrocode}
+\ifmstr at opt@draft
+\metaset{draft}{\metatranslate[#1]{draft}}
+\fi
+%    \end{macrocode}
+
+% \macro{title}
+% \macro{subtitle}
+% \macro{author}
+% \macro{date}
+% \macro{location}
+% \macro{subject}
+% \macro{keywords}
+% Basic registers:
+%    \begin{macrocode}
+\metadef{title}
+\metadef{subtitle}
+\metadef{author}
+\metadef{date}
+\metadef{location}
+\metadef{subject}
+\metadef{keywords}
+%    \end{macrocode}
+
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \paragraph{Title Composition.}
+%
+% \macro{titletext}
+% Declare register to compose title display (analogous to |\maketitle|):
+%    \begin{macrocode}
+\metadef{titletext}
+%    \end{macrocode}
+
+% \macro{\metatitleline}
+% \macro{\metatitlelinetwo}
+% Macros to print a formatted title line
+% with one or two items;
+% variant |skip| produces vertical skip before the item,
+% variant |style| sets the text style,
+% variant |sep| defines the separator between
+% two items or undefined for two independent lines:
+%    \begin{macrocode}
+\def\metatitleline[#1]#2{%
+  \metacompose[#1]{#2}
+   {\metaget[skip]{#2}\begingroup\metaget[style]{#2}}
+   {\par\endgroup}{}}
+\def\metatitlelinetwo[#1]#2[#3]#4{%
+  \metaif[sep]{#4}
+   {\metacompose[#1]{#2}
+     {\metaget[skip]{#2}\begingroup\metaget[style]{#2}}
+     {\metacompose[#3]{#4}{\metaget[sep]{#4}}{}{}\par\endgroup}
+     {\metatitleline[#3]{#4}}}
+   {\metatitleline[#1]{#2}\metatitleline[#3]{#4}}}
+%    \end{macrocode}
+
+% Set default layout and spacing:
+%    \begin{macrocode}
+\metaset[style]{title}{\LARGE}
+\metaset[style]{subtitle}{\large}
+\metaset[style]{draft}{\large}
+\metaset[style]{author}{\large}
+\metaset[style]{location}{\large}
+\metaset[style]{date}{\large}
+\metaset[skip]{subtitle}{\vspace{1.5em}}
+\metaset[skip]{draft}{\vspace{1.5em}}
+\metaset[skip]{author}{\vspace{3em}}
+\metaset[skip]{location}{\vspace{1.5em}}
+\metaset[skip]{date}{\vspace{1.5em}}
+\metaset[sep]{subtitle}{ -- }
+\metaset[sep]{date}{, }
+%    \end{macrocode}
+% Preset for |titletext| in generic and |print| variants:
+%    \begin{macrocode}
+\metaset{titletext}{%
+  \metacompose[#1]{draft}{}{: }{}%
+  \metapick[#1]{title}%
+  \metacompose[#1]{subtitle}{\metaget[sep]{subtitle}}{}{}}
+\metaset[print]{titletext}{%
+  \metatitleline[print]{title}%
+  \metatitlelinetwo[print]{subtitle}[print]{draft}%
+  \metatitleline[print]{author}%
+  \metatitlelinetwo[print]{location}[print]{date}}
+%    \end{macrocode}
+
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \paragraph{Further Registers.}
+%
+% \macro{url}
+% \macro{urlmessage}
+% Registers for document URL and message to display it:
+%    \begin{macrocode}
+\metadef{url}
+\metadef{urlmessage}
+%    \end{macrocode}
+% Print URL as hyperlink:
+%    \begin{macrocode}
+\metaset[print]{url}{\url{\metaget[]{url}}}
+%    \end{macrocode}
+% URL message default text (translated):
+% \translate{urlmessage}
+%    \begin{macrocode}
+% \metaset{urlmessage}{%
+%   The current version of this work can be found at:
+%   \metapick[#1]{url}.}
+%    \end{macrocode}
+
+% \macro{partof}
+% \macro{partofmessage}
+% Registers for document URL and message to display it:
+%    \begin{macrocode}
+\metadef{partof}
+\metadef{partofmessage}
+%    \end{macrocode}
+% part of message default text (translated):
+% \translate{partofmessage}
+%    \begin{macrocode}
+% \metaset{partofmessage}{%
+%   This document is part of the work: \metapick[#1]{partof}.}
+%    \end{macrocode}
+
+% \macro{source}
+% Register for source name:
+%    \begin{macrocode}
+\metadef{source}
+%    \end{macrocode}
+
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \paragraph{Write to PDF.}
+%
+% \macro{\metawritepdfpreamble}
+% Write some registers to PDF that need to be written
+% before the start of the document:
+%    \begin{macrocode}
+\newcommand{\metawritepdfpreamble}{\ifdefined\hypersetup
+  \ifmstr at opt@xmppdfinfo
+    \ifdefined\xmptilde\hypersetup{keeppdfinfo}\fi\fi
+  \metaif[]{language}
+    {\hypersetup{pdflang={\metaget[]{language}}}}{}%
+  \ifdefined\xmptilde
+    \metaif[meta]{language}
+      {\hypersetup{pdfmetalang={\metaget[meta]{language}}}}{}%
+  \fi\fi}
+%    \end{macrocode}
+
+% \macro{\metawritepdfinfo}
+% Write the basic registers to PDF;
+% also write alternative language representations
+% of |pdftitle| and |pdfsubject|:
+%    \begin{macrocode}
+\newcommand{\metawritepdfinfo}{\ifdefined\hypersetup
+  \metaifpick[\mstr at lang@meta]{author}
+    {\hypersetup{pdfauthor={\metapick[\mstr at lang@meta]{author}}}}{}%
+  \metaifpick[\mstr at lang@meta]{title}
+    {\hypersetup{pdftitle={\metapick[\mstr at lang@meta]{titletext}}}}{}%
+  \metaifpick[\mstr at lang@meta]{subject}
+    {\hypersetup{pdfsubject={\metapick[\mstr at lang@meta]{subject}}}}{}%
+  \metaifpick[\mstr at lang@meta]{keywords}
+    {\hypersetup{pdfkeywords={\metapick[\mstr at lang@meta]{keywords}}}}{}%
+  \ifdefined\xmptilde
+    \metaif[altlang]{title}{%
+      \@for\mstr at tmp:=\mstr at data@title at altlang{}\do{%
+        \metaifpick[\mstr at tmp]{title}
+          {\XMPLangAlt{\mstr at tmp}{pdftitle=
+            {\metapick[\mstr at tmp]{titletext}}}}{}}%
+      \metaunset[altlang]{title}}{}%
+    \metaif[altlang]{subject}{%
+      \@for\mstr at tmp:=\mstr at data@subject at altlang{}\do{%
+        \metaifpick[\mstr at tmp]{subject}
+          {\XMPLangAlt{\mstr at tmp}{pdfsubject=
+            {\metapick[\mstr at tmp]{subject}}}}{}}%
+      \metaunset[altlang]{subject}}{}%
+  \fi\fi}
+%    \end{macrocode}
+
+% \macro{\metawritepdfaux}
+% Write auxiliary registers to PDF:
+%    \begin{macrocode}
+\newcommand{\metawritepdfaux}{\ifdefined\hypersetup\ifdefined\xmptilde
+  \metaif[]{url}
+    {\hypersetup{pdfurl={\metaget[]{url}}}}{}%
+  \hypersetup{pdfsource={}}%
+  \metaif[]{source}
+    {\hypersetup{pdfsource={\metaget[]{source}}}}{}%
+\fi\fi}
+%    \end{macrocode}
+
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \subsection{Copyright and License}
+% \label{sec:imp-rights}
+%
+% The following defines some registers concerning
+% copyright and licensing.
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \paragraph{Rights Composition.}
+%
+% \macro{rightstext}
+% Declare a register to compose copyright and license information:
+%    \begin{macrocode}
+\metadef{rightstext}
+%    \end{macrocode}
+% Define generic version of composition register:
+%    \begin{macrocode}
+\metaset{rightstext}{%
+  \metaifpick[]{partof}{\metacompose[#1]{partofmessage}{}{ }{}}{}%
+  \metapick[#1]{copyrightstatement}%
+  \metacompose[#1]{copyrightmessage}{ }{}{}%
+  \metacompose[#1]{licensemessage}{ }{}{}%
+  \metaif[]{licenseurl}{\metacompose[#1]{licenseurlmessage}{ }{}{}}{}%
+  \metaif[]{url}{\metacompose[#1]{urlmessage}{ }{}{}}{}%
+}
+%    \end{macrocode}
+% Define print version of composition register;
+% variant |sep| contains code to separate parts of the message:
+%    \begin{macrocode}
+\metaset[skip]{rightstext}{\par\addvspace\medskipamount}
+\metaset[print]{rightstext}{%
+  \metaifpick[]{partof}{%
+    \metacompose[#1]{partofmessage}{}{\metaget[skip]{rightstext}}{}}{}%
+  \metacompose[#1]{copyrightstatement}{}{\metaget[skip]{rightstext}}{}%
+  \metacompose[#1]{copyrightmessage}{}{ }{}%
+  \metacompose[#1]{licensemessage}{}{ }{}%
+  \metaif[]{licenselogo}{%
+    \metacompose[#1]{licenselogomessage}
+    {\metaget[skip]{rightstext}}{\metaget[skip]{rightstext}}{}}{}%
+  \metaif[]{licenseurl}{\metacompose[#1]{licenseurlmessage}{ }{ }{}}{}%
+  \metaif[]{url}{\metacompose[#1]{urlmessage}
+    {\metaget[skip]{rightstext}}{}{}}{}
+  \metacompose[#1]{attributionmessage}{\metaget[skip]{rightstext}}{}{}%
+}
+%    \end{macrocode}
+
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \paragraph{Copyright Composition.}
+%
+% \macro{copyright...}
+% Declare registers to specify document copyright:
+%    \begin{macrocode}
+\metadef{copyrightmark}
+\metadef{copyrightdate}
+\metadef{copyrightowner}
+\metadef{copyrightstatement}
+\metadef{copyrightmessage}
+%    \end{macrocode}
+
+% \macro{copyrightmark}
+% The copyright sign or word:
+%    \begin{macrocode}
+\metaset{copyrightmark}{Copyright}
+\metaset[print]{copyrightmark}{\copyright}
+%    \end{macrocode}
+
+% \macro{copyrightstatement}
+% Assemble the copyright statement from available fragments;
+% proper spacing makes this a bit tedious:
+%    \begin{macrocode}
+\metaset{copyrightstatement}{\metaifpick[#1]{copyrightdate}%
+  {\metapick[#1]{copyrightmark} \metapick[#1]{copyrightdate}%
+  \metacompose[#1]{copyrightowner}{ }{}{}.}
+  {\metaifpick[#1]{copyrightowner}
+   {\metapick[#1]{copyrightmark} \metapick[#1]{copyrightowner}.}{}}}
+%    \end{macrocode}
+
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \paragraph{License Composition.}
+%
+% \macro{license...}
+% Declare registers to specify document license:
+%    \begin{macrocode}
+\metadef{licenseversion}
+\metadef{licenseprovider}
+\metadef{licensemessage}
+\metadef{licenselogo}
+\metadef{licenselogomessage}
+\metadef{licenseurl}
+\metadef{licenseurlmessage}
+%    \end{macrocode}
+
+% \macro{attributionmessage}
+% Declare a register for the attribution message:
+%    \begin{macrocode}
+\metadef{attributionmessage}
+%    \end{macrocode}
+
+% \macro{licenseurlmessage}
+% Message to declare URL at which the relevant license
+% or further details can be found (translated):
+% \translate{licenseurlmessage}
+%    \begin{macrocode}
+% \metaset{licenseurlmessage}{%
+%   To view a copy of this license, visit: \metapick[#1]{licenseurl}.}
+%    \end{macrocode}
+
+% \macro{licenseurl}
+% In |print| version, pass plain |licenseurl| through |\url|:
+%    \begin{macrocode}
+\metaset[print]{licenseurl}{\url{\metaget[]{licenseurl}}}
+%    \end{macrocode}
+
+% \macro{licenselogo}
+% \macro{licenselogomessage}
+% Display license logo, by default align centrally;
+% abuse the variant argument for passing the file name argument
+% to |\includegraphics|:
+%    \begin{macrocode}
+\metaset[print]{licenselogomessage}{%
+  \centerline{\metapick[#1]{licenselogo}}}
+\metaset[cmd]{licenselogo}{\includegraphics{#1}}
+\metaset[print]{licenselogo}{%
+  \mstr at getbare[cmd]{licenselogo}{\metaget[]{licenselogo}}}
+%    \end{macrocode}
+
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \paragraph{Write to PDF.}
+%
+% \macro{\metawritepdfrights}
+% Write rights information
+% (rights text, alternative language representations, license url)
+% to PDF via \textsf{hyperxmp}:
+%    \begin{macrocode}
+\newcommand{\metawritepdfrights}{\ifdefined\hypersetup\ifdefined\xmptilde
+    \metaifpick[\mstr at lang@meta]{rightstext}
+      {\hypersetup{pdfcopyright=
+        {\metapick[\mstr at lang@meta]{rightstext}}}}{}%
+    \metaif[altlang]{rightstext}
+      {\@for\mstr at tmp:=\mstr at data@rightstext at altlang{}\do
+        {\XMPLangAlt{\mstr at tmp}{pdfcopyright=
+          {\metapick[\mstr at tmp]{rightstext}}}}}{}
+    \metaifpick[\mstr at lang@meta]{licenseurl}
+      {\hypersetup{pdflicenseurl=
+        {\metapick[\mstr at lang@meta]{licenseurl}}}}{}%
+\fi\fi}
+%    \end{macrocode}
+
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \paragraph{Copyright Presets.}
+%
+% \macro{copyright at ...}
+% Declare some copyright presets:
+%    \begin{macrocode}
+\metadef{copyright at plain}
+\metadef{copyright at parts}
+\metadef{copyright at doc}
+\metadef{copyright at doc-parts}
+\metadef{copyright at reserved}
+\metadef{copyright at publicdomain}
+%    \end{macrocode}
+% \macro{plain}
+% \macro{parts}
+% \macro{doc}
+% \macro{doc-parts}
+% \macro{reserved}
+% Some plain copyright messages (translated):
+% \translate{copyright at plain}
+% \translate{copyright at parts}
+% \translate{copyright at doc}
+% \translate{copyright at doc-parts}
+% \translate{copyright at reserved}
+%    \begin{macrocode}
+% \metaset{copyright at plain}{%
+%   This work is protected by copyright.}
+% \metaset{copyright at parts}{%
+%   This work as well as its parts is protected by copyright.}
+% \metaset{copyright at doc}{%
+%   This document is protected by copyright.}
+% \metaset{copyright at doc-parts}{%
+%   This document as well as its parts is protected by copyright.}
+% \metaset{copyright at reserved}{All rights reserved.}
+%    \end{macrocode}
+% \macro{publicdomain}
+% A public domain declaration (translated):
+% \translate{copyright at publicdomain}
+%    \begin{macrocode}
+% \metaset{copyright at publicdomain}
+%   {This work is dedicated to the public domain.}
+%    \end{macrocode}
+
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \paragraph{License Presets.}
+%
+% \macro{license at ...}
+% Declare some license presets
+%    \begin{macrocode}
+\metadef{license at consent}
+\metadef{license at consent-noncom}
+\metadef{license at lppl}
+%    \end{macrocode}
+
+% \macro{consent}
+% A license to reproduce with prior written consent (translated):
+% \translate{license at consent}
+%    \begin{macrocode}
+% \metaset{license at consent}{%
+%   Reproduction of any part of this work in any form
+%   without prior written consent
+%   \metacompose[#1]{licenseprovider}{}{}{of the author}
+%   is not permissible.}
+%    \end{macrocode}
+
+% \macro{consent-noncom}
+% A license to reproduce
+% for private, scientific and non-commercial purposes
+% or with prior written consent (translated):
+% \translate{license at consent-noncom}
+%    \begin{macrocode}
+% \metaset{license at consent-noncom}{%
+%   Reproduction of any part of this work in any form
+%   without prior written consent
+%   \metapick[#1]{licenseprovider}{}{}{of the author}
+%   is permissible only for private, scientific and non-commercial use.}
+%    \end{macrocode}
+
+% \macro{lppl}
+% \LaTeX{} project public license (translated):
+% \translate{license at lppl}
+%    \begin{macrocode}
+\metaset[url]{license at lppl}{http://www.latex-project.org/lppl.txt}
+% \metaset{license at lppl}{%
+%   This work may be distributed and/or modified under the
+%   conditions of the LaTeX Project Public License, either version
+%   \metaif[]{licenseversion}{\metaget[]{licenseversion}}{1.3}
+%   of this license or (at your option) any later version.}
+%    \end{macrocode}
+
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \paragraph{Selection Code.}
+%
+% \macro{\metacopyright}
+% \macro{\metalicense}
+% Set a copyright or license message:
+%    \begin{macrocode}
+\newcommand{\metacopyright}[1]{%
+  \metaset{copyrightmessage}{\metapick[##1]{copyright@#1}}}
+\newcommand{\metalicense}[1]{%
+  \metaset{licensemessage}{\metapick[##1]{license@#1}}%
+  \metaif[url]{license@#1}{%
+    \metaset{licenseurl}{\metaget[url]{license@#1}}}{}}
+%    \end{macrocode}
+
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \subsection{Creative Commons}
+% \label{sec:imp-cc}
+%
+% The following implements the scheme of Creative Commons licenses.
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \paragraph{Declarations.}
+%
+% \macro{cc at type}
+% \macro{cc at class}
+% |cc at type| stores the selected CC license type;
+% |cc at class| is `|@zero|' for the CC0 public domain dedication
+% and empty otherwise:
+%    \begin{macrocode}
+\metadef{cc at type}
+\metadef{cc at class}
+%    \end{macrocode}
+
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \paragraph{Text Components and Internationalisation.}
+%
+% CC license declarations are composed
+% from several elements which can be conveniently internationalised.
+%
+% The following registers store various terms used in CC licenses:
+% \translate{term-cc at ...}
+%    \begin{macrocode}
+\metasetterm{cc at sep}{-}
+\metasetterm{cc at quotel}{\textquotedblleft}
+\metasetterm{cc at quoter}{\textquotedblright}
+\metasetterm{cc at cc}{Creative Commons}
+\metasetterm{cc at zero}{CC0}
+\metasetterm{cc at by}{Attribution}
+\metasetterm{cc at sa}{ShareAlike}
+\metasetterm{cc at nd}{NoDerivatives}
+\metasetterm{cc at nc}{NonCommercial}
+\metasetterm{cc at unported}{Unported}
+\metasetterm{cc at generic}{Generic}
+\metasetterm{cc at intl}{International}
+\metasetterm{cc at univ}{Universal}
+\metasetterm{cc at pd}{Public Domain}
+\metasetterm{cc at license}{License}
+\metasetterm{cc at pddecl}{Public Domain Dedication}
+%    \end{macrocode}
+
+% \macro{cc at pd}
+% \macro{cc at zero}
+% \macro{cc at by...}
+% The following template registers store the combinations
+% for the various CC licenses:
+%    \begin{macrocode}
+\metadef{cc at pd}
+\metadef{cc at zero}
+\metadef{cc at by}
+\metadef{cc at by-sa}
+\metadef{cc at by-nd}
+\metadef{cc at by-nc}
+\metadef{cc at by-nc-sa}
+\metadef{cc at by-nc-nd}
+%    \end{macrocode}
+% Fill the registers:
+%    \begin{macrocode}
+\metaset{cc at zero}{\metatranslate[#1]{cc at zero}}
+\metaset{cc at by}{\metatranslate[#1]{cc at by}}
+\metaset{cc at by-sa}{%
+  \metatranslate[#1]{cc at by}\metatranslate[#1]{cc at sep}%
+  \metatranslate[#1]{cc at sa}}
+\metaset{cc at by-nd}{%
+  \metatranslate[#1]{cc at by}\metatranslate[#1]{cc at sep}%
+  \metatranslate[#1]{cc at nd}}
+\metaset{cc at by-nc}{%
+  \metatranslate[#1]{cc at by}\metatranslate[#1]{cc at sep}%
+  \metatranslate[#1]{cc at nc}}
+\metaset{cc at by-nc-sa}{%
+  \metatranslate[#1]{cc at by}\metatranslate[#1]{cc at sep}%
+  \metatranslate[#1]{cc at nc}\metatranslate[#1]{cc at sep}%
+  \metatranslate[#1]{cc at sa}}
+\metaset{cc at by-nc-nd}{%
+  \metatranslate[#1]{cc at by}\metatranslate[#1]{cc at sep}%
+  \metatranslate[#1]{cc at nc}\metatranslate[#1]{cc at sep}%
+  \metatranslate[#1]{cc at nd}}
+%    \end{macrocode}
+
+% \macro{cc at n.n}
+% \macro{cc at n.n@zero}
+% The following registers store the various versions for CC licenses:
+%    \begin{macrocode}
+\metadef{cc at 1.0@zero}
+\metadef{cc at 1.0}
+\metadef{cc at 2.0}
+\metadef{cc at 2.5}
+\metadef{cc at 3.0}
+\metadef{cc at 4.0}
+%    \end{macrocode}
+% Fill the registers:
+%    \begin{macrocode}
+\metaset{cc at 1.0@zero}{\metatranslate[#1]{cc at univ}}
+\metaset{cc at 1.0}{\metatranslate[#1]{cc at generic}}
+\metaset{cc at 2.0}{\metatranslate[#1]{cc at generic}}
+\metaset{cc at 2.5}{\metatranslate[#1]{cc at generic}}
+\metaset{cc at 3.0}{\metatranslate[#1]{cc at unported}}
+\metaset{cc at 4.0}{\metatranslate[#1]{cc at intl}}
+%    \end{macrocode}
+
+% \macro{cc at license}
+% \macro{cc at license@zero}
+% \macro{cc at license@pd}
+% The following registers store the term ``CC license'':
+%    \begin{macrocode}
+\metadef{cc at license}
+\metadef{cc at license@zero}
+\metadef{cc at license@pd}
+%    \end{macrocode}
+% Fill the registers (translated):
+% \translate{cc at license}
+% \translate{cc at license@zero}
+% \translate{cc at license@pd}
+%    \begin{macrocode}
+% \metaset{cc at license}{%
+%   \metatranslate[#1]{cc at cc} \metatranslate[#1]{cc at license}}
+% \metaset{cc at license@zero}{%
+%   \metatranslate[#1]{cc at cc} \metatranslate[#1]{cc at pddecl}}
+\metaset{cc at license@pd}{\metatranslate[#1]{cc at pddecl}}
+%    \end{macrocode}
+
+% \macro{cc at message}
+% \macro{cc at message@zero}
+% The following registers contain presets for the CC license messages:
+%    \begin{macrocode}
+\metadef{cc at message}
+\metadef{cc at message@zero}
+%    \end{macrocode}
+% Fill the registers (translated):
+% \translate{cc at message}
+% \translate{cc at message@zero}
+%    \begin{macrocode}
+% \metaset{cc at message}{%
+%   This work is licensed under the
+%   \metapick[#1]{licenseccfull} (\metapick[short]{licenseccfull}).}
+% \metaset{cc at message@zero}{%
+%   This work is dedicated to the public domain by means of the
+%   \metapick[#1]{licenseccfull} (\metapick[short]{licenseccfull}).}
+%    \end{macrocode}
+
+% \macro{licensecc}
+% \macro{licenseccver}
+% \macro{licenseccfull}
+% |licensecc| and |licenseccver|
+% represent the name and version of the selected CC license;
+% |licenseccfull| contains a full representation of the selected CC license:
+%    \begin{macrocode}
+\metadef{licensecc}
+\metadef{licenseccver}
+\metadef{licenseccfull}
+%    \end{macrocode}
+% Fill the registers:
+%    \begin{macrocode}
+\metaset{licensecc}{%
+  \metapick[#1]{cc@\metaget[]{cc at type}}}
+\metaset{licenseccver}{%
+  \metaget[]{licenseversion}
+  \metapick[#1]{cc@\metaget[]{licenseversion}\metaget[]{cc at class}}}
+\metaset{licenseccfull}{%
+  \metapick[#1]{cc at license\metaget[]{cc at class}}
+  \metatranslate[#1]{cc at quotel}%
+  \metapick[#1]{licensecc}
+  \metapick[#1]{licenseccver}%
+  \metatranslate[#1]{cc at quoter}}
+%    \end{macrocode}
+
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \paragraph{License Identifier.}
+%
+% \macro{ident}
+% Compose the license identifier by |ident| variant:
+%    \begin{macrocode}
+\metaset[ident]{licenseccver}{\metaget[]{licenseversion}}
+\metaset[ident]{licenseccfull}{%
+  \metapick[ident]{licensecc} \metaget[ident]{licenseccver}}
+\metasetterm[ident]{cc at sep}{-}
+\metasetterm[ident]{cc at cc}{CC}
+\metasetterm[ident]{cc at by}{BY}
+\metasetterm[ident]{cc at sa}{SA}
+\metasetterm[ident]{cc at nd}{ND}
+\metasetterm[ident]{cc at nc}{NC}
+\metasetterm[ident]{cc at zero}{CC0}
+%    \end{macrocode}
+%
+% \macro{short}
+% Compose the short license identifier by |short| variant:
+%    \begin{macrocode}
+\metaset[short]{licensecc}{%
+  \metaget[short]{cc at license\metaget[]{cc at class}}%
+  \metapick[short]{cc@\metaget[]{cc at type}}}
+\metaset[short]{licenseccver}{\metaget[]{licenseversion}}
+\metaset[short]{licenseccfull}{%
+  \metapick[short]{licensecc} \metaget[short]{licenseccver}}
+\metasetterm[short]{cc at sep}{-}
+\metasetterm[short]{cc at cc}{CC}
+\metasetterm[short]{cc at by}{BY}
+\metasetterm[short]{cc at sa}{SA}
+\metasetterm[short]{cc at nd}{ND}
+\metasetterm[short]{cc at nc}{NC}
+\metasetterm[short]{cc at zero}{CC0}
+\metaset[short]{cc at license}{CC }
+\metaset[short]{cc at license@zero}{}
+%    \end{macrocode}
+
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \paragraph{License Logo.}
+%
+% \macro{logo}
+% |logo| variants used for the license logo
+% provided by the \textsf{doclicense} package:
+%    \begin{macrocode}
+\metaset[logo]{cc at pd}{doclicense-CC-pd}
+\metaset[logo]{cc at zero}{doclicense-CC-zero}
+\metaset[logo]{cc at by}{doclicense-CC-by}
+\metaset[logo]{cc at by-sa}{doclicense-CC-by-sa}
+\metaset[logo]{cc at by-nd}{doclicense-CC-by-nd}
+\metaset[logo]{cc at by-nc}{doclicense-CC-by-nc}
+\metaset[logo]{cc at by-nc-sa}{doclicense-CC-by-nc-sa}
+\metaset[logo]{cc at by-nc-nd}{doclicense-CC-by-nc-nd}
+%    \end{macrocode}
+% Use euro sign versions:
+%    \begin{macrocode}
+\mstr at iftext\mstr at opt@cclogocurr{euro}{
+\metaset[logo]{cc at by-nc}{doclicense-CC-by-nc-eu}
+\metaset[logo]{cc at by-nc-sa}{doclicense-CC-by-nc-sa-eu}
+\metaset[logo]{cc at by-nc-nd}{doclicense-CC-by-nc-nd-eu}}
+%    \end{macrocode}
+
+% \macro{\mstr at setcclogo}
+% Use the Creative Commons logos
+% included in the \textsf{doclicense} package:
+%    \begin{macrocode}
+\newcommand{\mstr at setcclogo}{%
+  \ifmstr at opt@cclogo
+    \IfFileExists{doclicense.sty}{%
+      \ifdefined\includegraphics
+      \metaset{licenselogo}{%
+        \metapick[logo]{licensecc}}
+      \fi}{\GenericWarning{please install package `doclicense'}}%
+  \fi}
+%    \end{macrocode}
+
+% \macro{icon}
+% |icon| variants used for the license icons
+% provided by the \textsf{ccicons} package:
+%    \begin{macrocode}
+\metaset[icon]{licensecc}{%
+  \metaget[icon]{cc at license\metaget[]{cc at class}}%
+  \metapick[icon]{cc@\metaget[]{cc at type}}}
+\metaset[icon]{licenseccver}{\metaget[]{licenseversion}}
+\metaset[icon]{licenseccfull}{%
+  \metaget[icon]{licensecc}
+  \metaget[icon]{licenseccver}}
+\metasetterm[icon]{cc at sep}{}
+\metasetterm[icon]{cc at cc}{\ccLogo}
+\metasetterm[icon]{cc at pd}{\ccPublicDomain}
+\metasetterm[icon]{cc at zero}{\ccZero}
+\metasetterm[icon]{cc at by}{\ccAttribution}
+\metasetterm[icon]{cc at sa}{\ccShareAlike}
+\metasetterm[icon]{cc at nd}{\ccNoDerivatives}
+\metasetterm[icon]{cc at nc}{\ccNonCommercial}
+\metaset[icon]{cc at license}{\metatranslate[#1]{cc at cc}}
+\metaset[icon]{cc at license@zero}{\metatranslate[#1]{cc at cc}}
+\metaset[icon]{cc at license@pd}{\metatranslate[#1]{cc at pd}}
+\metaset[icon]{copyrightmark}{\ccCopy}
+%    \end{macrocode}
+% Use euro or yen sign versions:
+%    \begin{macrocode}
+\mstr at iftext\mstr at opt@cclogocurr{euro}{
+  \metasetterm[icon]{cc at nc}{\ccNonCommercialEU}}
+\mstr at iftext\mstr at opt@cclogocurr{yen}{
+  \metasetterm[icon]{cc at nc}{\ccNonCommercialJP}}
+%    \end{macrocode}
+
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \paragraph{License URL.}
+%
+% \macro{url}
+% The |url| variant of compounds are used for the license URL.
+%    \begin{macrocode}
+\metaset[url]{licenseccver}{\metaget[]{licenseversion}}
+\metaset[url]{licenseccfull}{%
+  \metaget[url]{cc at license\metaget[]{cc at class}}/%
+  \metapick[url]{licensecc}/%
+  \metaget[url]{licenseccver}/}
+\metaset[url]{cc at license}{https://creativecommons.org/licenses}
+\metaset[url]{cc at license@zero}{https://creativecommons.org/publicdomain}
+\metaset[url]{cc at zero}{zero}
+\metaset[url]{cc at by}{by}
+\metaset[url]{cc at by-sa}{by-sa}
+\metaset[url]{cc at by-nd}{by-nd}
+\metaset[url]{cc at by-nc}{by-nc}
+\metaset[url]{cc at by-nc-sa}{by-nc-sa}
+\metaset[url]{cc at by-nc-nd}{by-nc-nd}
+%    \end{macrocode}
+
+% Declare registers for internationalisation of deed URL:
+%    \begin{macrocode}
+\metadef{cc at url}
+\metadef{cc at url@deed}
+%    \end{macrocode}
+% Fill registers:
+% \translate{cc at url@deed}
+%    \begin{macrocode}
+\metaset{cc at url@deed}{}
+\metaset{cc at url}{\metapick[url]{licenseccfull}\metapick[#1]{cc at url@deed}}
+%    \end{macrocode}
+
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \paragraph{License Preset.}
+%
+% \macro{\metalicensecc}
+% Set the CC license of type `|#1|':
+%    \begin{macrocode}
+\newcommand{\metalicensecc}[1]{%
+  \def\mstr at tmpl{#1}%
+  \def\mstr at tmp{pd}%
+  \ifx\mstr at tmpl\mstr at tmp
+    \metaset{cc at class}{@pd}%
+    \metacopyright{publicdomain}%
+    \metaset{cc at type}{pd}%
+  \else
+    \def\mstr at tmp{zero}%
+    \ifx\mstr at tmpl\mstr at tmp
+      \metaset{cc at class}{@zero}%
+      \metaif[]{licenseversion}{}{\metaset{licenseversion}{1.0}}%
+    \else
+      \metaset{cc at class}{}%
+      \metaif[]{licenseversion}{}{\metaset{licenseversion}{4.0}}%
+    \fi
+    \metaset{cc at type}{#1}%
+    \metaset{licenseurl}{\metapick[##1]{cc at url}}%
+    \metaset{licensemessage}
+      {\metapick[##1]{cc at message\metaget[]{cc at class}}}%
+  \fi
+  \mstr at setcclogo}
+%    \end{macrocode}
+
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \subsection{Contact Information}
+% \label{sec:imp-contact}
+%
+% The following describes an interface
+% to store and write contact information.
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \paragraph{Declarations.}
+%
+% \macro{contact...}
+% Contact register declarations:
+%    \begin{macrocode}
+\metadef{contactaddress}
+\metadef{contactpostcode}
+\metadef{contactcity}
+\metadef{contactregion}
+\metadef{contactcountry}
+\metadef{contactemail}
+\metadef{contacturl}
+%    \end{macrocode}
+
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \paragraph{Write to PDF.}
+%
+% \macro{\metawritepdfcontact}
+% Write contact information to PDF via \textsf{hyperxmp}:
+%    \begin{macrocode}
+\newcommand{\metawritepdfcontact}{\ifdefined\hypersetup\ifdefined\xmptilde
+  \metaifpick[\mstr at lang@meta]{contactaddress}{%
+    \hypersetup{pdfcontactaddress=
+      {\metapick[\mstr at lang@meta]{contactaddress}}}}{}%
+  \metaifpick[\mstr at lang@meta]{contactpostcode}{%
+    \hypersetup{pdfcontactpostcode=
+      {\metapick[\mstr at lang@meta]{contactpostcode}}}}{}%
+  \metaifpick[\mstr at lang@meta]{contactcity}{%
+    \hypersetup{pdfcontactcity=
+      {\metapick[\mstr at lang@meta]{contactcity}}}}{}%
+  \metaifpick[\mstr at lang@meta]{contactregion}{%
+    \hypersetup{pdfcontactregion=
+      {\metapick[\mstr at lang@meta]{contactregion}}}}{}%
+  \metaifpick[\mstr at lang@meta]{contactcountry}{%
+    \hypersetup{pdfcontactcountry=
+      {\metapick[\mstr at lang@meta]{contactcountry}}}}{}%
+  \metaifpick[\mstr at lang@meta]{contactemail}{%
+    \hypersetup{pdfcontactemail=
+      {\metapick[\mstr at lang@meta]{contactemail}}}}{}%
+  \metaifpick[\mstr at lang@meta]{contacturl}{%
+    \hypersetup{pdfcontacturl=
+      {\metapick[\mstr at lang@meta]{contacturl}}}}{}%
+\fi\fi}
+%    \end{macrocode}
+
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \subsection{Extras}
+% \label{sec:imp-extra}
+%
+% The following defines some extras to be activated by package options.
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \paragraph{Course Metadata.}
+%
+% Include structures for course materials:
+%    \begin{macrocode}
+\ifmstr at opt@course
+%    \end{macrocode}
+
+%\macro{institution}
+%\macro{instructor}
+%\macro{course}
+%\macro{material}
+%\macro{period}
+% Declare course structures:
+%    \begin{macrocode}
+\metadef{institution}
+\metadef{instructor}
+\metadef{course}
+\metadef{material}
+\metadef{period}
+%    \end{macrocode}
+
+% Preset formatting styles:
+%    \begin{macrocode}
+\metaset[style]{course}{\LARGE\bfseries}
+\metaset[style]{material}{\large}
+\metaset[style]{institution}{\large}
+\metaset[style]{period}{\large}
+\metaset[style]{instructor}{\scshape\Large}
+\metaset[skip]{material}{\vspace{2ex}}
+\metaset[skip]{institution}{\vspace{4ex}}
+\metaset[skip]{period}{\vspace{4ex}}
+\metaset[skip]{instructor}{\vspace{6ex}}
+\metaset[sep]{period}{, }
+%    \end{macrocode}
+
+% Fill |titletext| in |course| variant to display
+% relevant title data for the course material:
+%    \begin{macrocode}
+\metaset[course]{titletext}{%
+  \metatitleline[print]{course}%
+  \metatitlelinetwo[print]{material}[print]{draft}%
+  \metatitlelinetwo[print]{institution}[print]{period}%
+  \metatitleline[print]{instructor}}
+%    \end{macrocode}
+
+% Inherit title, subtitle, author and date:
+%    \begin{macrocode}
+\metaset{title}{\metapick[#1]{course}}
+\metaset{subtitle}{\metapick[#1]{material}}
+\metaset{author}{\metapick[#1]{instructor}}
+\metaset{date}{\metapick[#1]{period}}
+\metaset{location}{\metapick[#1]{institution}}
+%    \end{macrocode}
+
+%    \begin{macrocode}
+\fi
+%    \end{macrocode}
+
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \subsection{Translations}
+% \label{sec:imp-translate}
+%
+% Determine all desired international versions to be loaded;
+% use first one as fallback language:
+%    \begin{macrocode}
+\def\mstr at loadlangloop#1|#2&{%
+  \mstr at csdo\let{mstr at lang@#1}\relax%
+  \ifx\mstr at lang@fallback\@empty\def\mstr at lang@fallback{#1}\fi%
+  \if @#2@\else\mstr at loadlangloop#2&\fi}
+\expandafter\mstr at loadlangloop\mstr at opt@loadlang|&
+%    \end{macrocode}
+
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \paragraph{English.}
+%
+% Check whether to load English strings:
+%    \begin{macrocode}
+\ifdefined\mstr at lang@en
+%    \end{macrocode}
+
+% Terms:
+%    \begin{macrocode}
+\metasetterm[en]{title}{Title}
+\metasetterm[en]{abstract}{Abstract}
+\metasetterm[en]{copyright}{Copyright}
+\metasetterm[en]{preface}{Preface}
+\metasetterm[en]{part}{Part}
+\metasetterm[en]{chapter}{Chapter}
+\metasetterm[en]{section}{Section}
+\metasetterm[en]{subsection}{Subsection}
+\metasetterm[en]{paragraph}{Paragraph}
+\metasetterm[en]{appendix}{Appendix}
+\metasetterm[en]{page}{Page}
+\metasetterm[en]{figure}{Figure}
+\metasetterm[en]{table}{Table}
+\metasetterm[en]{contents}{Contents}
+\metasetterm[en]{listfigure}{List of Figures}
+\metasetterm[en]{listtable}{List of Tables}
+\metasetterm[en]{references}{References}
+\metasetterm[en]{index}{Index}
+\metasetterm[en]{draft}{DRAFT}
+%    \end{macrocode}
+
+% General purpose messages:
+%    \begin{macrocode}
+\metaset[en]{urlmessage}{%
+  The current version of this work can be found at: \metapick[#1]{url}.}
+\metaset[en]{partofmessage}{%
+  This document is part of the work: \metapick[#1]{partof}.}
+\metaset[en]{licenseurlmessage}{%
+  To view a copy of this license, visit: \metapick[#1]{licenseurl}.}
+%    \end{macrocode}
+% Copyright statements:
+%    \begin{macrocode}
+\metaset[en]{copyright at plain}{%
+  This work is protected by copyright.}
+\metaset[en]{copyright at parts}{%
+  This work as well as its parts is protected by copyright.}
+\metaset[en]{copyright at doc}{%
+  This document is protected by copyright.}
+\metaset[en]{copyright at doc-parts}{%
+  This document as well as its parts is protected by copyright.}
+\metaset[en]{copyright at reserved}{All rights reserved.}
+\metaset[en]{copyright at publicdomain}
+  {This work is dedicated to the public domain.}
+%    \end{macrocode}
+% License statements:
+%    \begin{macrocode}
+\metaset[en]{license at consent}{%
+  Reproduction of any part of this work in any form
+  without prior written consent
+  \metacompose[#1]{licenseprovider}{}{}{of the author}
+  is not permissible.}
+\metaset[en]{license at consent-noncom}{%
+  Reproduction of any part of this work in any form
+  without prior written consent
+  \metacompose[#1]{licenseprovider}{}{}{of the author}
+  is permissible only for private, scientific and non-commercial use.}
+\metaset[en]{license at lppl}{%
+  This work may be distributed and/or modified under the
+  conditions of the LaTeX Project Public License, either version
+  \metaif[]{licenseversion}{\metaget[]{licenseversion}}{1.3}
+  of this license or (at your option) any later version.}
+%    \end{macrocode}
+% Creative Commons license composition:
+%    \begin{macrocode}
+\metaset[en]{cc at url@deed}{deed.en}
+\metaset[en]{cc at message}{%
+  This work is licensed under the
+  \metapick[en]{licenseccfull} (\metapick[short]{licenseccfull}).}
+\metaset[en]{cc at message@zero}{%
+  This work is dedicated to the public domain by means of the
+  \metapick[#1]{licenseccfull} (\metapick[short]{licenseccfull}).}
+\metaset[en]{cc at license}{%
+  \metatranslate[#1]{cc at cc} \metatranslate[#1]{cc at license}}
+\metaset[en]{cc at license@zero}{%
+  \metatranslate[#1]{cc at cc} \metatranslate[#1]{cc at pddecl}}
+\metasetterm[en]{cc at sep}{-}
+\metasetterm[en]{cc at quotel}{\textquotedblleft}
+\metasetterm[en]{cc at quoter}{\textquotedblright}
+\metasetterm[en]{cc at by}{Attribution}
+\metasetterm[en]{cc at sa}{ShareAlike}
+\metasetterm[en]{cc at nd}{NoDerivatives}
+\metasetterm[en]{cc at nc}{NonCommercial}
+\metasetterm[en]{cc at unported}{Unported}
+\metasetterm[en]{cc at generic}{Generic}
+\metasetterm[en]{cc at intl}{International}
+\metasetterm[en]{cc at univ}{Universal}
+\metasetterm[en]{cc at license}{License}
+\metasetterm[en]{cc at pd}{Public Domain}
+\metasetterm[en]{cc at pddecl}{Public Domain Dedication}
+%    \end{macrocode}
+
+%    \begin{macrocode}
+\fi
+%    \end{macrocode}
+
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \paragraph{German.}
+%
+% Check whether to load German strings:
+%    \begin{macrocode}
+\ifdefined\mstr at lang@de
+%    \end{macrocode}
+
+% Terms:
+%    \begin{macrocode}
+\metasetterm[de]{title}{Titel}
+\metasetterm[de]{abstract}{Zusammenfassung}
+\metasetterm[de]{copyright}{Urheberrechte}
+\metasetterm[de]{preface}{Vorwort}
+\metasetterm[de]{part}{Teil}
+\metasetterm[de]{chapter}{Kapitel}
+\metasetterm[de]{section}{Abschnitt}
+\metasetterm[de]{subsection}{Unterabschnitt}
+\metasetterm[de]{paragraph}{Absatz}
+\metasetterm[de]{appendix}{Anhang}
+\metasetterm[de]{page}{Seite}
+\metasetterm[de]{figure}{Abbildung}
+\metasetterm[de]{table}{Tabelle}
+\metasetterm[de]{contents}{Inhaltsverzeichnis}
+\metasetterm[de]{listfigure}{Abbildungsverzeichnis}
+\metasetterm[de]{listtable}{Tabellenverzeichnis}
+\metasetterm[de]{references}{Literatur}
+\metasetterm[de]{index}{Index}
+\metasetterm[de]{draft}{ENTWURF}
+%    \end{macrocode}
+
+% General purpose messages:
+%    \begin{macrocode}
+\metaset[de]{urlmessage}{%
+  Die aktuelle Version dieses Werks befindet sich unter:
+  \metapick[#1]{url}.}
+\metaset[de]{partofmessage}{%
+  Dieses Dokument ist Teil des Werks: \metapick[#1]{partof}.}
+\metaset[de]{licenseurlmessage}{%
+  Die Lizenz kann eingesehen werden unter:
+  \metapick[#1]{licenseurl}.}
+%    \end{macrocode}
+% Copyright statements:
+%    \begin{macrocode}
+\metaset[de]{copyright at plain}{%
+  Dieses Werk ist urheberrechtlich gesch\"utzt.}
+\metaset[de]{copyright at parts}{%
+  Dieses Werk sowie seine Teile sind urheberrechtlich gesch\"utzt.}
+\metaset[de]{copyright at doc}{%
+  Dieses Dokument ist urheberrechtlich gesch\"utzt.}
+\metaset[de]{copyright at doc-parts}{%
+  Dieses Dokument sowie seine Teile sind urheberrechtlich gesch\"utzt.}
+\metaset[de]{copyright at reserved}{Alle Rechte vorbehalten.}
+\metaset[de]{copyright at publicdomain}
+  {Dieses Werk ist gemeinfrei.}
+%    \end{macrocode}
+% License statements:
+%    \begin{macrocode}
+\metaset[de]{license at consent}{%
+  Reproduktion eines Teils dieses Werks in beliebiger Form
+  ohne vorg\"angige schriftliche Erlaubnis
+  \metacompose[#1]{licenseprovider}{}{}{des Verfassers}
+  ist nicht gestattet.}
+\metaset[de]{license at consent-noncom}{%
+  Reproduktion eines Teils dieses Werks in beliebiger Form
+  ohne vorg\"angige schriftliche Erlaubnis
+  \metacompose[#1]{licenseprovider}{}{}{des Verfassers}
+  ist nur zum privaten, wissenschaftlichen
+  und nicht-gewerblichen Gebrauch gestattet.}
+\metaset[de]{license at lppl}{%
+  Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz,
+  entweder Version
+  \metaif[]{licenseversion}{\metaget[]{licenseversion}}{1.3}
+  oder (nach Ihrer Wahl) jede sp\"atere Version,
+  verteilt und/oder ver\"andert werden.}
+%    \end{macrocode}
+% Creative Commons license composition:
+%    \begin{macrocode}
+\metaset[de]{cc at url@deed}{deed.de}
+\metaset[de]{cc at message}{%
+  Dieses Werk ist lizensiert unter der
+  \metapick[de]{licenseccfull} (\metapick[short]{licenseccfull}).}
+\metaset[de]{cc at message@zero}{%
+  Dieses Werk ist gemeinfrei deklariert mittels der
+  \metapick[de]{licenseccfull} (\metapick[short]{licenseccfull}).}
+\metaset[de]{cc at license}{%
+  \metatranslate[#1]{cc at cc} \metatranslate[#1]{cc at license}}
+\metaset[de]{cc at license@zero}{%
+  \metatranslate[#1]{cc at cc} \metatranslate[#1]{cc at pddecl}}
+\metasetterm[de]{cc at sep}{ -- }
+\metasetterm[de]{cc at quotel}{\quotedblbase}
+\metasetterm[de]{cc at quoter}{\textquotedblleft}
+\metasetterm[de]{cc at by}{Namensnennung}
+\metasetterm[de]{cc at sa}{Weitergabe unter gleichen Bedingungen}
+\metasetterm[de]{cc at nd}{Keine Bearbeitungen}
+\metasetterm[de]{cc at nc}{Nicht kommerziell}
+\metasetterm[de]{cc at unported}{Unportiert}
+\metasetterm[de]{cc at generic}{Generisch}
+\metasetterm[de]{cc at intl}{International}
+\metasetterm[de]{cc at univ}{Universell}
+\metasetterm[de]{cc at license}{Lizenz}
+\metasetterm[de]{cc at pd}{Gemeinfrei}
+\metasetterm[de]{cc at pddecl}{Gemeinfrei Deklaration}
+%    \end{macrocode}
+
+%    \begin{macrocode}
+\fi
+%    \end{macrocode}
+
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \paragraph{French.}
+%
+% Disclaimer: professional assistance with translations needed.
+%
+% Check whether to load French strings:
+%    \begin{macrocode}
+\ifdefined\mstr at lang@fr
+%    \end{macrocode}
+
+% Terms:
+%    \begin{macrocode}
+\metasetterm[fr]{title}{Titre}
+\metasetterm[fr]{abstract}{R\'esum\'e}
+\metasetterm[fr]{copyright}{Droits d'Auteur}
+\metasetterm[fr]{preface}{Pr\'eface}
+\metasetterm[fr]{part}{Partie}
+\metasetterm[fr]{chapter}{Chapitre}
+\metasetterm[fr]{section}{Section}
+\metasetterm[fr]{subsection}{Sous-Section}
+\metasetterm[fr]{paragraph}{Paragraphe}
+\metasetterm[fr]{appendix}{Annexe}
+\metasetterm[fr]{page}{Page}
+\metasetterm[fr]{figure}{Figure}
+\metasetterm[fr]{table}{Table}
+\metasetterm[fr]{contents}{Table des Mati\`eres}
+\metasetterm[fr]{listfigure}{Table des Figures}
+\metasetterm[fr]{listtable}{Liste des Tableaux}
+\metasetterm[fr]{references}{R\'ef\'erences}
+\metasetterm[fr]{index}{Index}
+\metasetterm[fr]{draft}{BROUILLON}
+%    \end{macrocode}
+
+% General purpose messages:
+%    \begin{macrocode}
+\metaset[fr]{urlmessage}{%
+  La version actuelle de cet \oe uvre se trouve \`a l'adresse:
+  \metapick[#1]{url}.}
+\metaset[fr]{partofmessage}{%
+  Ce document fait partie de la \oe uvre: \metapick[#1]{partof}.}
+\metaset[fr]{licenseurlmessage}{%
+  Pour voir une copie de cette licence, visitez:
+  \metapick[#1]{licenseurl}.}
+%    \end{macrocode}
+% Copyright statements:
+%    \begin{macrocode}
+\metaset[fr]{copyright at plain}{%
+  Cette \oe uvre est prot\'eg\'ee par le droit d'auteur.}
+\metaset[fr]{copyright at parts}{%
+  Cette \oe uvre ainsi que ses parties
+  sont prot\'eg\'ees par le droit d'auteur.}
+\metaset[fr]{copyright at doc}{%
+  Ce document est prot\'eg\'es par le droit d'auteur.}
+\metaset[fr]{copyright at doc-parts}{%
+  Ce document ainsi que ses parties
+  sont prot\'eg\'es par le droit d'auteur.}
+\metaset[fr]{copyright at reserved}{Tous les droits sont r\'eserv\'es.}
+\metaset[fr]{copyright at publicdomain}
+  {Cette \oe uvre est du domaine public.}
+%    \end{macrocode}
+% Creative Commons license composition:
+%    \begin{macrocode}
+\metaset[fr]{cc at url@deed}{deed.fr}
+\metaset[fr]{cc at message}{%
+  Cette \oe uvre est mise \`a disposition selon les termes de la
+  \metapick[fr]{licenseccfull} (\metapick[short]{licenseccfull}).}
+\metaset[fr]{cc at message@zero}{%
+  Cette \oe uvre est d\'eclar\'ee du domaine public par le
+  \metapick[fr]{licenseccfull} (\metapick[short]{licenseccfull}).}
+\metaset[fr]{cc at license}{%
+  \metatranslate[#1]{cc at license} \metatranslate[#1]{cc at cc}}
+\metaset[fr]{cc at license@zero}{%
+  \metatranslate[#1]{cc at pddecl} \metatranslate[#1]{cc at cc}}
+\metasetterm[fr]{cc at sep}{ -- }
+\metasetterm[fr]{cc at quotel}{\guillemotleft}
+\metasetterm[fr]{cc at quoter}{\guillemotright}
+\metasetterm[fr]{cc at by}{Attribution}
+\metasetterm[fr]{cc at sa}{Partage dans les M\^emes Conditions}
+\metasetterm[fr]{cc at nd}{Pas de Modification}
+\metasetterm[fr]{cc at nc}{Pas d'Utilisation Commerciale}
+\metasetterm[fr]{cc at unported}{Non Transpos\'e}
+\metasetterm[fr]{cc at generic}{G\'en\'erique}
+\metasetterm[fr]{cc at intl}{International}
+\metasetterm[fr]{cc at univ}{Universel}
+\metasetterm[fr]{cc at license}{Licence}
+\metasetterm[fr]{cc at pd}{Domaine Public}
+\metasetterm[fr]{cc at pddecl}{Transfert dans le Domaine Public}
+%    \end{macrocode}
+
+%    \begin{macrocode}
+\fi
+%    \end{macrocode}
+
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \paragraph{Spanish.}
+%
+% Disclaimer: professional assistance with translations needed.
+%
+% Check whether to load Spanish strings:
+%    \begin{macrocode}
+\ifdefined\mstr at lang@es
+%    \end{macrocode}
+
+% Terms:
+%    \begin{macrocode}
+\metasetterm[es]{chapter}{Cap\'itulo}
+\metasetterm[es]{section}{Secci\'on}
+\metasetterm[es]{subsection}{Subsecci\'on}
+\metasetterm[es]{paragraph}{P\'arrafo}
+\metasetterm[es]{title}{T\'itulo}
+\metasetterm[es]{abstract}{Resumen}
+\metasetterm[es]{copyright}{Derechos de Autor}
+\metasetterm[es]{preface}{Prefacio}
+\metasetterm[es]{part}{Parte}
+\metasetterm[es]{appendix}{Ap\'endice}
+\metasetterm[es]{page}{P\'agina}
+\metasetterm[es]{figure}{Figura}
+\metasetterm[es]{table}{Cuadro}
+\metasetterm[es]{contents}{\'Indice}
+\metasetterm[es]{listfigure}{\'Indice de Figuras}
+\metasetterm[es]{listtable}{\'Indice de Cuadros}
+\metasetterm[es]{references}{Referencias}
+\metasetterm[es]{index}{\'Indice Alfab\'etico}
+\metasetterm[es]{draft}{BORRADOR}
+%    \end{macrocode}
+
+% General purpose messages:
+%    \begin{macrocode}
+\metaset[es]{urlmessage}{%
+  La versi\'on actual de esta obra se puede encontrar en:
+  \metapick[#1]{url}.}
+\metaset[es]{partofmessage}{%
+  Este documento es parte de la obra: \metapick[#1]{partof}.}
+\metaset[es]{licenseurlmessage}{%
+  Para ver una copia de esta licencia, visite:
+  \metapick[#1]{licenseurl}.}
+%    \end{macrocode}
+% Copyright statements:
+%    \begin{macrocode}
+\metaset[es]{copyright at plain}{%
+  Esta obra est\'a protegida por derechos de autor.}
+\metaset[es]{copyright at parts}{%
+  Esta obra y sus partes est\'an protegidas por derechos de autor.}
+\metaset[es]{copyright at doc}{%
+  Este documento est\'a protegido por derechos de autor.}
+\metaset[es]{copyright at doc-parts}{%
+  Este documento y sus partes est\'an protegidos por derechos de autor.}
+\metaset[es]{copyright at reserved}{Todos los derechos reservados.}
+\metaset[es]{copyright at publicdomain}
+  {Esta obra es de dominio p\'ublico.}
+%    \end{macrocode}
+% Creative Commons license composition:
+%    \begin{macrocode}
+\metaset[es]{cc at url@deed}{deed.es}
+\metaset[es]{cc at message}{%
+  Esta obra est\'a bajo la
+  \metapick[es]{licenseccfull} (\metapick[short]{licenseccfull}).}
+\metaset[es]{cc at message@zero}{Esta obra est\'a dedicada
+  al dominio p\'ublico por la
+  \metapick[es]{licenseccfull} (\metapick[short]{licenseccfull}).}
+\metaset[es]{cc at license}{%
+  \metatranslate[#1]{cc at license} \metatranslate[#1]{cc at cc}}
+\metaset[es]{cc at license@zero}{%
+  \metatranslate[#1]{cc at pddecl} \metatranslate[#1]{cc at cc}}
+\metasetterm[es]{cc at sep}{-}
+\metasetterm[es]{cc at quotel}{\textquotedblleft}
+\metasetterm[es]{cc at quoter}{\textquotedblright}
+\metasetterm[es]{cc at by}{Atribuci\'on}
+\metasetterm[es]{cc at sa}{CompartirIgual}
+\metasetterm[es]{cc at nd}{SinDerivadas}
+\metasetterm[es]{cc at nc}{NoComercial}
+\metasetterm[es]{cc at unported}{No Portada}
+\metasetterm[es]{cc at generic}{Gen\'erica}
+\metasetterm[es]{cc at intl}{Internacional}
+\metasetterm[es]{cc at univ}{Universal}
+\metasetterm[es]{cc at license}{Licencia}
+\metasetterm[es]{cc at pd}{Dominio P\'ublico}
+\metasetterm[es]{cc at pddecl}{Dedicaci\'on de Dominio P\'ublico}
+%    \end{macrocode}
+
+%    \begin{macrocode}
+\fi
+%    \end{macrocode}
+
+%\iffalse
+%</package>
+%\fi
+%
+\endinput


Property changes on: trunk/Master/texmf-dist/source/latex/metastr/metastr.dtx
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/source/latex/metastr/metastr.ins
===================================================================
--- trunk/Master/texmf-dist/source/latex/metastr/metastr.ins	                        (rev 0)
+++ trunk/Master/texmf-dist/source/latex/metastr/metastr.ins	2020-02-06 20:53:43 UTC (rev 53700)
@@ -0,0 +1,29 @@
+\def\batchfile{metastr.ins}
+\input docstrip.tex
+
+\keepsilent
+\preamble
+
+Copyright (C) 2020 Niklas Beisert
+
+This work may be distributed and/or modified under the
+conditions of the LaTeX Project Public License, either version 1.3
+of this license or (at your option) any later version.
+The latest version of this license is in
+  http://www.latex-project.org/lppl.txt
+and version 1.3 or later is part of all distributions of LaTeX
+version 2005/12/01 or later.
+
+\endpreamble
+
+% the style and sample files
+\generate{\askforoverwritefalse
+\file{metastr.sty}{\from{metastr.dtx}{package}}
+\file{metasamp.tex}{\from{metastr.dtx}{sample}}
+}
+
+\Msg{***********************************************************************}
+\Msg{* Done. Please copy the file metastr.sty to an appropriate directory  *}
+\Msg{* of your LaTeX distribution, e.g. texmf-root/tex/latex/metastr.      *}
+\Msg{***********************************************************************}
+\endbatchfile

Added: trunk/Master/texmf-dist/tex/latex/metastr/metastr.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/metastr/metastr.sty	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/metastr/metastr.sty	2020-02-06 20:53:43 UTC (rev 53700)
@@ -0,0 +1,964 @@
+%%
+%% This is file `metastr.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% metastr.dtx  (with options: `package')
+%% 
+%% Copyright (C) 2020 Niklas Beisert
+%% 
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%%   http://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of LaTeX
+%% version 2005/12/01 or later.
+%% 
+\NeedsTeXFormat{LaTeX2e}[1996/12/01]
+\ProvidesPackage{metastr}[2020/02/06 v1.0 Metadata Strings Storage]
+
+\RequirePackage{keyval}
+
+\newif\ifmstr at opt@hyperref\mstr at opt@hyperreftrue
+\newif\ifmstr at opt@hyperxmp\mstr at opt@hyperxmptrue
+\newif\ifmstr at opt@checkdef\mstr at opt@checkdeftrue
+\newif\ifmstr at opt@xmppdfinfo\mstr at opt@xmppdfinfotrue
+\newif\ifmstr at opt@course\mstr at opt@coursefalse
+\newif\ifmstr at opt@draft\mstr at opt@draftfalse
+\newif\ifmstr at opt@cclogo\mstr at opt@cclogotrue
+\def\mstr at opt@cclogocurr{dollar}
+\def\mstr at opt@loadlang{en}
+\def\mstr at group{mstr@}
+\define at key{\mstr at group}{hyperref}[true]
+  {\csname mstr at opt@hyperref#1\endcsname}
+\define at key{\mstr at group}{hyperxmp}[true]
+  {\csname mstr at opt@hyperxmp#1\endcsname}
+\define at key{\mstr at group}{checkdef}[true]
+  {\csname mstr at opt@checkdef#1\endcsname}
+\define at key{\mstr at group}{xmppdfinfo}[true]
+  {\csname mstr at opt@xmppdfinfo#1\endcsname}
+\define at key{\mstr at group}{cclogo}[true]{\csname mstr at opt@cclogo#1\endcsname}
+\define at key{\mstr at group}{cclogocurr}{\def\mstr at opt@cclogocurr{#1}}
+\define at key{\mstr at group}{loadlang}{\def\mstr at opt@loadlang{#1}}
+\define at key{\mstr at group}{course}[true]{\csname mstr at opt@course#1\endcsname}
+\define at key{\mstr at group}{draft}[true]{\csname mstr at opt@draft#1\endcsname}
+
+\DeclareOption*{\expandafter\setkeys\expandafter\mstr at group%
+  \expandafter{\CurrentOption}}
+
+\ProcessOptions
+
+\ifmstr at opt@hyperref\RequirePackage{hyperref}\fi
+\ifmstr at opt@hyperxmp\RequirePackage{hyperxmp}\fi
+
+\def\mstr at exptwo#1{\expandafter#1\expandafter}
+\def\mstr at csdo#1#2{\expandafter#1\csname#2\endcsname}
+\def\mstr at csdotwo#1#2#3{\mstr at exptwo#1#2\csname#3\endcsname}
+\long\def\mstr at iftext#1#2#3{\def\mstr at tmp{#2}\ifx#1\mstr at tmp#3\fi}
+
+\let\mstr at lang@main\@empty
+\let\mstr at lang@short\@empty
+\let\mstr at lang@fallback\@empty
+\let\mstr at lang@meta\@empty
+
+\ifdefined\xmptilde
+\let\metatilde\xmptilde
+\let\metacomma\xmpcomma
+\else
+\def\metatilde{~}
+\def\metacomma{,}
+\fi
+
+\newcommand{\metadef}[1]{%
+  \mstr at csdo\let{mstr at def@#1}\relax}
+
+\newcommand{\mstr at verify}[1]{%
+  \ifcsname mstr at def@#1\endcsname\else
+    \PackageError{metastr}{register `#1' undefined}{}%
+  \fi}
+\ifmstr at opt@checkdef\else\def\mstr at verify#1{}\fi
+
+\long\def\mstr at setbare[#1]#2#3{%
+  \mstr at csdo\gdef{mstr at data@#2@#1}##1{#3}}
+
+\long\def\mstr at set[#1]#2#3{\mstr at verify{#2}%
+  \mstr at setbare[#1]{#2}{#3}}
+
+\newcommand{\metaset}{\@ifnextchar[{\mstr at set}{\mstr at set[]}}
+
+\long\def\mstr at unset[#1]#2{\mstr at verify{#2}%
+  \mstr at csdotwo\global\let{mstr at data@#2@#1}\@undefined}
+
+\newcommand{\metaunset}{\@ifnextchar[{\mstr at unset}{\mstr at unset[]}}
+
+\long\def\metaif[#1]#2#3#4{%
+  \ifcsname mstr at data@#2@#1\endcsname #3\else #4\fi}
+
+\long\def\mstr at ifloop[#1,#2]#3#4#5{%
+  \metaif[#1]{#3}{#4}{\if @#2@#5\else\mstr at ifloop[#2]{#3}{#4}{#5}\fi}}
+\long\def\metaifpick[#1]#2#3#4{%
+  \mstr at ifloop
+    [#1,\mstr at lang@main,\mstr at lang@short,,\mstr at lang@fallback,]
+    {#2}{#3}{#4}}
+
+\long\def\mstr at append[#1]#2#3{%
+  \mstr at csdotwo\let\mstr at tmpa{mstr at data@#2@#1}%
+  \def\mstr at tmpb##1{\mstr at set[#1]{#2}{##1#3}}%
+  \mstr at exptwo\mstr at tmpb{\mstr at tmpa{##1}}}
+
+\long\def\mstr at prepend[#1]#2#3{%
+  \mstr at csdotwo\let\mstr at tmpa{mstr at data@#2@#1}%
+  \def\mstr at tmpb##1{\mstr at set[#1]{#2}{#3##1}}%
+  \mstr at exptwo\mstr at tmpb{\mstr at tmpa{##1}}}
+
+\long\def\mstr at addsep[#1]#2#3#4{%
+  \metaif[#1]{#2}{\mstr at append[#1]{#2}{#3#4}}{\mstr at set[#1]{#2}{#4}}}
+
+\newcommand{\metaappend}{%
+  \@ifnextchar[{\mstr at append}{\mstr at append[]}}
+\newcommand{\metaprepend}{%
+  \@ifnextchar[{\mstr at prepend}{\mstr at prepend[]}}
+\newcommand{\metaaddsep}{%
+  \@ifnextchar[{\mstr at addsep}{\mstr at addsep[]}}
+
+\def\mstr at getbare[#1]#2#3{\csname mstr at data@#2@#1\endcsname{#3}}
+
+\def\metaget[#1]#2{%
+  \metaif[#1]{#2}{\mstr at getbare[#1]{#2}{#1}}{}}%
+
+\long\def\mstr at composeloop[#1,#2]#3#4#5#6#7{%
+  \metaif[#1]{#4}{#5\mstr at getbare[#1]{#4}{#3}#6}
+    {\if @#2@#7\else\mstr at composeloop[#2]{#3}{#4}{#5}{#6}{#7}\fi}}
+\long\def\metacompose[#1]#2#3#4#5{%
+  \mstr at composeloop
+    [#1,\mstr at lang@main,\mstr at lang@short,,\mstr at lang@fallback,]{#1}
+    {#2}{#3}{#4}{#5}}%
+\def\metapick[#1]#2{\metacompose[#1]{#2}{}{}{}}
+
+\metadef{language}
+\def\mstr at lang@split#1#2-#3@{%
+  \mstr at csdo\gdef{mstr at lang@#1}{#2}}
+\newcommand{\mstr at setlang@main}[1]{%
+  \metaset{language}{#1}%
+  \gdef\mstr at lang@main{#1}%
+  \mstr at lang@split{short}#1-@%
+  \metaset[short]{language}{\mstr at lang@short}%
+  \metaif[meta]{language}{}{\mstr at lang@split{meta}#1-@}}
+\newcommand{\mstr at setlang@meta}[1]{%
+  \metaset[meta]{language}{#1}%
+  \mstr at lang@split{meta}#1-@%
+  \metaset[metashort]{language}{\mstr at lang@meta}}
+\newcommand{\metasetlang}{%
+  \@ifstar\mstr at setlang@meta\mstr at setlang@main}
+
+\newcommand{\metaterm}{\metatranslate[]}
+\def\metatranslate[#1]#2{\metapick[#1]{term-#2}}
+\long\def\mstr at setterm[#1]#2#3{%
+  \metadef{term-#2}\mstr at setbare[#1]{term-#2}{#3}}
+\newcommand{\metasetterm}{\@ifnextchar[{\mstr at setterm}{\mstr at setterm[]}}
+
+\metadef{writepdf}
+\metaset[auto]{writepdf}{}
+\metaset[preamble]{writepdf}{}
+\metaset[info]{writepdf}{}
+\metaset[aux]{writepdf}{}
+
+\long\def\mstr at ifwritepdf[#1]#2{%
+  \metaif[#1]{writepdf}{#2\metaunset[#1]{writepdf}}{}}
+
+\newcommand{\metawritepdf}{%
+  \mstr at ifwritepdf[preamble]{\metawritepdfpreamble}%
+  \mstr at ifwritepdf[info]{\metawritepdfinfo}%
+  \mstr at ifwritepdf[aux]{\metawritepdfaux}%
+  \mstr at ifwritepdf[contact]{\metawritepdfcontact}%
+  \mstr at ifwritepdf[rights]{\metawritepdfrights}%
+}
+
+\newcommand{\mstr at begindoc}{%
+  \mstr at ifwritepdf[preamble]{\metawritepdfpreamble}%
+  \mstr at ifwritepdf[auto]{\metawritepdf}%
+}
+
+\begingroup
+\toks@\expandafter{\expandafter\mstr at begindoc\@begindocumenthook}%
+\xdef\@begindocumenthook{\the\toks@}%
+\endgroup
+
+\metadef{draft}
+\ifmstr at opt@draft
+\metaset{draft}{\metatranslate[#1]{draft}}
+\fi
+
+\metadef{title}
+\metadef{subtitle}
+\metadef{author}
+\metadef{date}
+\metadef{location}
+\metadef{subject}
+\metadef{keywords}
+
+\metadef{titletext}
+
+\def\metatitleline[#1]#2{%
+  \metacompose[#1]{#2}
+   {\metaget[skip]{#2}\begingroup\metaget[style]{#2}}
+   {\par\endgroup}{}}
+\def\metatitlelinetwo[#1]#2[#3]#4{%
+  \metaif[sep]{#4}
+   {\metacompose[#1]{#2}
+     {\metaget[skip]{#2}\begingroup\metaget[style]{#2}}
+     {\metacompose[#3]{#4}{\metaget[sep]{#4}}{}{}\par\endgroup}
+     {\metatitleline[#3]{#4}}}
+   {\metatitleline[#1]{#2}\metatitleline[#3]{#4}}}
+
+\metaset[style]{title}{\LARGE}
+\metaset[style]{subtitle}{\large}
+\metaset[style]{draft}{\large}
+\metaset[style]{author}{\large}
+\metaset[style]{location}{\large}
+\metaset[style]{date}{\large}
+\metaset[skip]{subtitle}{\vspace{1.5em}}
+\metaset[skip]{draft}{\vspace{1.5em}}
+\metaset[skip]{author}{\vspace{3em}}
+\metaset[skip]{location}{\vspace{1.5em}}
+\metaset[skip]{date}{\vspace{1.5em}}
+\metaset[sep]{subtitle}{ -- }
+\metaset[sep]{date}{, }
+\metaset{titletext}{%
+  \metacompose[#1]{draft}{}{: }{}%
+  \metapick[#1]{title}%
+  \metacompose[#1]{subtitle}{\metaget[sep]{subtitle}}{}{}}
+\metaset[print]{titletext}{%
+  \metatitleline[print]{title}%
+  \metatitlelinetwo[print]{subtitle}[print]{draft}%
+  \metatitleline[print]{author}%
+  \metatitlelinetwo[print]{location}[print]{date}}
+
+\metadef{url}
+\metadef{urlmessage}
+\metaset[print]{url}{\url{\metaget[]{url}}}
+
+\metadef{partof}
+\metadef{partofmessage}
+
+\metadef{source}
+
+\newcommand{\metawritepdfpreamble}{\ifdefined\hypersetup
+  \ifmstr at opt@xmppdfinfo
+    \ifdefined\xmptilde\hypersetup{keeppdfinfo}\fi\fi
+  \metaif[]{language}
+    {\hypersetup{pdflang={\metaget[]{language}}}}{}%
+  \ifdefined\xmptilde
+    \metaif[meta]{language}
+      {\hypersetup{pdfmetalang={\metaget[meta]{language}}}}{}%
+  \fi\fi}
+
+\newcommand{\metawritepdfinfo}{\ifdefined\hypersetup
+  \metaifpick[\mstr at lang@meta]{author}
+    {\hypersetup{pdfauthor={\metapick[\mstr at lang@meta]{author}}}}{}%
+  \metaifpick[\mstr at lang@meta]{title}
+    {\hypersetup{pdftitle={\metapick[\mstr at lang@meta]{titletext}}}}{}%
+  \metaifpick[\mstr at lang@meta]{subject}
+    {\hypersetup{pdfsubject={\metapick[\mstr at lang@meta]{subject}}}}{}%
+  \metaifpick[\mstr at lang@meta]{keywords}
+    {\hypersetup{pdfkeywords={\metapick[\mstr at lang@meta]{keywords}}}}{}%
+  \ifdefined\xmptilde
+    \metaif[altlang]{title}{%
+      \@for\mstr at tmp:=\mstr at data@title at altlang{}\do{%
+        \metaifpick[\mstr at tmp]{title}
+          {\XMPLangAlt{\mstr at tmp}{pdftitle=
+            {\metapick[\mstr at tmp]{titletext}}}}{}}%
+      \metaunset[altlang]{title}}{}%
+    \metaif[altlang]{subject}{%
+      \@for\mstr at tmp:=\mstr at data@subject at altlang{}\do{%
+        \metaifpick[\mstr at tmp]{subject}
+          {\XMPLangAlt{\mstr at tmp}{pdfsubject=
+            {\metapick[\mstr at tmp]{subject}}}}{}}%
+      \metaunset[altlang]{subject}}{}%
+  \fi\fi}
+
+\newcommand{\metawritepdfaux}{\ifdefined\hypersetup\ifdefined\xmptilde
+  \metaif[]{url}
+    {\hypersetup{pdfurl={\metaget[]{url}}}}{}%
+  \hypersetup{pdfsource={}}%
+  \metaif[]{source}
+    {\hypersetup{pdfsource={\metaget[]{source}}}}{}%
+\fi\fi}
+
+\metadef{rightstext}
+\metaset{rightstext}{%
+  \metaifpick[]{partof}{\metacompose[#1]{partofmessage}{}{ }{}}{}%
+  \metapick[#1]{copyrightstatement}%
+  \metacompose[#1]{copyrightmessage}{ }{}{}%
+  \metacompose[#1]{licensemessage}{ }{}{}%
+  \metaif[]{licenseurl}{\metacompose[#1]{licenseurlmessage}{ }{}{}}{}%
+  \metaif[]{url}{\metacompose[#1]{urlmessage}{ }{}{}}{}%
+}
+\metaset[skip]{rightstext}{\par\addvspace\medskipamount}
+\metaset[print]{rightstext}{%
+  \metaifpick[]{partof}{%
+    \metacompose[#1]{partofmessage}{}{\metaget[skip]{rightstext}}{}}{}%
+  \metacompose[#1]{copyrightstatement}{}{\metaget[skip]{rightstext}}{}%
+  \metacompose[#1]{copyrightmessage}{}{ }{}%
+  \metacompose[#1]{licensemessage}{}{ }{}%
+  \metaif[]{licenselogo}{%
+    \metacompose[#1]{licenselogomessage}
+    {\metaget[skip]{rightstext}}{\metaget[skip]{rightstext}}{}}{}%
+  \metaif[]{licenseurl}{\metacompose[#1]{licenseurlmessage}{ }{ }{}}{}%
+  \metaif[]{url}{\metacompose[#1]{urlmessage}
+    {\metaget[skip]{rightstext}}{}{}}{}
+  \metacompose[#1]{attributionmessage}{\metaget[skip]{rightstext}}{}{}%
+}
+
+\metadef{copyrightmark}
+\metadef{copyrightdate}
+\metadef{copyrightowner}
+\metadef{copyrightstatement}
+\metadef{copyrightmessage}
+
+\metaset{copyrightmark}{Copyright}
+\metaset[print]{copyrightmark}{\copyright}
+
+\metaset{copyrightstatement}{\metaifpick[#1]{copyrightdate}%
+  {\metapick[#1]{copyrightmark} \metapick[#1]{copyrightdate}%
+  \metacompose[#1]{copyrightowner}{ }{}{}.}
+  {\metaifpick[#1]{copyrightowner}
+   {\metapick[#1]{copyrightmark} \metapick[#1]{copyrightowner}.}{}}}
+
+\metadef{licenseversion}
+\metadef{licenseprovider}
+\metadef{licensemessage}
+\metadef{licenselogo}
+\metadef{licenselogomessage}
+\metadef{licenseurl}
+\metadef{licenseurlmessage}
+
+\metadef{attributionmessage}
+
+
+\metaset[print]{licenseurl}{\url{\metaget[]{licenseurl}}}
+
+\metaset[print]{licenselogomessage}{%
+  \centerline{\metapick[#1]{licenselogo}}}
+\metaset[cmd]{licenselogo}{\includegraphics{#1}}
+\metaset[print]{licenselogo}{%
+  \mstr at getbare[cmd]{licenselogo}{\metaget[]{licenselogo}}}
+
+\newcommand{\metawritepdfrights}{\ifdefined\hypersetup\ifdefined\xmptilde
+    \metaifpick[\mstr at lang@meta]{rightstext}
+      {\hypersetup{pdfcopyright=
+        {\metapick[\mstr at lang@meta]{rightstext}}}}{}%
+    \metaif[altlang]{rightstext}
+      {\@for\mstr at tmp:=\mstr at data@rightstext at altlang{}\do
+        {\XMPLangAlt{\mstr at tmp}{pdfcopyright=
+          {\metapick[\mstr at tmp]{rightstext}}}}}{}
+    \metaifpick[\mstr at lang@meta]{licenseurl}
+      {\hypersetup{pdflicenseurl=
+        {\metapick[\mstr at lang@meta]{licenseurl}}}}{}%
+\fi\fi}
+
+\metadef{copyright at plain}
+\metadef{copyright at parts}
+\metadef{copyright at doc}
+\metadef{copyright at doc-parts}
+\metadef{copyright at reserved}
+\metadef{copyright at publicdomain}
+
+\metadef{license at consent}
+\metadef{license at consent-noncom}
+\metadef{license at lppl}
+
+
+
+\metaset[url]{license at lppl}{http://www.latex-project.org/lppl.txt}
+
+\newcommand{\metacopyright}[1]{%
+  \metaset{copyrightmessage}{\metapick[##1]{copyright@#1}}}
+\newcommand{\metalicense}[1]{%
+  \metaset{licensemessage}{\metapick[##1]{license@#1}}%
+  \metaif[url]{license@#1}{%
+    \metaset{licenseurl}{\metaget[url]{license@#1}}}{}}
+
+\metadef{cc at type}
+\metadef{cc at class}
+
+\metasetterm{cc at sep}{-}
+\metasetterm{cc at quotel}{\textquotedblleft}
+\metasetterm{cc at quoter}{\textquotedblright}
+\metasetterm{cc at cc}{Creative Commons}
+\metasetterm{cc at zero}{CC0}
+\metasetterm{cc at by}{Attribution}
+\metasetterm{cc at sa}{ShareAlike}
+\metasetterm{cc at nd}{NoDerivatives}
+\metasetterm{cc at nc}{NonCommercial}
+\metasetterm{cc at unported}{Unported}
+\metasetterm{cc at generic}{Generic}
+\metasetterm{cc at intl}{International}
+\metasetterm{cc at univ}{Universal}
+\metasetterm{cc at pd}{Public Domain}
+\metasetterm{cc at license}{License}
+\metasetterm{cc at pddecl}{Public Domain Dedication}
+
+\metadef{cc at pd}
+\metadef{cc at zero}
+\metadef{cc at by}
+\metadef{cc at by-sa}
+\metadef{cc at by-nd}
+\metadef{cc at by-nc}
+\metadef{cc at by-nc-sa}
+\metadef{cc at by-nc-nd}
+\metaset{cc at zero}{\metatranslate[#1]{cc at zero}}
+\metaset{cc at by}{\metatranslate[#1]{cc at by}}
+\metaset{cc at by-sa}{%
+  \metatranslate[#1]{cc at by}\metatranslate[#1]{cc at sep}%
+  \metatranslate[#1]{cc at sa}}
+\metaset{cc at by-nd}{%
+  \metatranslate[#1]{cc at by}\metatranslate[#1]{cc at sep}%
+  \metatranslate[#1]{cc at nd}}
+\metaset{cc at by-nc}{%
+  \metatranslate[#1]{cc at by}\metatranslate[#1]{cc at sep}%
+  \metatranslate[#1]{cc at nc}}
+\metaset{cc at by-nc-sa}{%
+  \metatranslate[#1]{cc at by}\metatranslate[#1]{cc at sep}%
+  \metatranslate[#1]{cc at nc}\metatranslate[#1]{cc at sep}%
+  \metatranslate[#1]{cc at sa}}
+\metaset{cc at by-nc-nd}{%
+  \metatranslate[#1]{cc at by}\metatranslate[#1]{cc at sep}%
+  \metatranslate[#1]{cc at nc}\metatranslate[#1]{cc at sep}%
+  \metatranslate[#1]{cc at nd}}
+
+\metadef{cc at 1.0@zero}
+\metadef{cc at 1.0}
+\metadef{cc at 2.0}
+\metadef{cc at 2.5}
+\metadef{cc at 3.0}
+\metadef{cc at 4.0}
+\metaset{cc at 1.0@zero}{\metatranslate[#1]{cc at univ}}
+\metaset{cc at 1.0}{\metatranslate[#1]{cc at generic}}
+\metaset{cc at 2.0}{\metatranslate[#1]{cc at generic}}
+\metaset{cc at 2.5}{\metatranslate[#1]{cc at generic}}
+\metaset{cc at 3.0}{\metatranslate[#1]{cc at unported}}
+\metaset{cc at 4.0}{\metatranslate[#1]{cc at intl}}
+
+\metadef{cc at license}
+\metadef{cc at license@zero}
+\metadef{cc at license@pd}
+\metaset{cc at license@pd}{\metatranslate[#1]{cc at pddecl}}
+
+\metadef{cc at message}
+\metadef{cc at message@zero}
+
+\metadef{licensecc}
+\metadef{licenseccver}
+\metadef{licenseccfull}
+\metaset{licensecc}{%
+  \metapick[#1]{cc@\metaget[]{cc at type}}}
+\metaset{licenseccver}{%
+  \metaget[]{licenseversion}
+  \metapick[#1]{cc@\metaget[]{licenseversion}\metaget[]{cc at class}}}
+\metaset{licenseccfull}{%
+  \metapick[#1]{cc at license\metaget[]{cc at class}}
+  \metatranslate[#1]{cc at quotel}%
+  \metapick[#1]{licensecc}
+  \metapick[#1]{licenseccver}%
+  \metatranslate[#1]{cc at quoter}}
+
+\metaset[ident]{licenseccver}{\metaget[]{licenseversion}}
+\metaset[ident]{licenseccfull}{%
+  \metapick[ident]{licensecc} \metaget[ident]{licenseccver}}
+\metasetterm[ident]{cc at sep}{-}
+\metasetterm[ident]{cc at cc}{CC}
+\metasetterm[ident]{cc at by}{BY}
+\metasetterm[ident]{cc at sa}{SA}
+\metasetterm[ident]{cc at nd}{ND}
+\metasetterm[ident]{cc at nc}{NC}
+\metasetterm[ident]{cc at zero}{CC0}
+\metaset[short]{licensecc}{%
+  \metaget[short]{cc at license\metaget[]{cc at class}}%
+  \metapick[short]{cc@\metaget[]{cc at type}}}
+\metaset[short]{licenseccver}{\metaget[]{licenseversion}}
+\metaset[short]{licenseccfull}{%
+  \metapick[short]{licensecc} \metaget[short]{licenseccver}}
+\metasetterm[short]{cc at sep}{-}
+\metasetterm[short]{cc at cc}{CC}
+\metasetterm[short]{cc at by}{BY}
+\metasetterm[short]{cc at sa}{SA}
+\metasetterm[short]{cc at nd}{ND}
+\metasetterm[short]{cc at nc}{NC}
+\metasetterm[short]{cc at zero}{CC0}
+\metaset[short]{cc at license}{CC }
+\metaset[short]{cc at license@zero}{}
+
+\metaset[logo]{cc at pd}{doclicense-CC-pd}
+\metaset[logo]{cc at zero}{doclicense-CC-zero}
+\metaset[logo]{cc at by}{doclicense-CC-by}
+\metaset[logo]{cc at by-sa}{doclicense-CC-by-sa}
+\metaset[logo]{cc at by-nd}{doclicense-CC-by-nd}
+\metaset[logo]{cc at by-nc}{doclicense-CC-by-nc}
+\metaset[logo]{cc at by-nc-sa}{doclicense-CC-by-nc-sa}
+\metaset[logo]{cc at by-nc-nd}{doclicense-CC-by-nc-nd}
+\mstr at iftext\mstr at opt@cclogocurr{euro}{
+\metaset[logo]{cc at by-nc}{doclicense-CC-by-nc-eu}
+\metaset[logo]{cc at by-nc-sa}{doclicense-CC-by-nc-sa-eu}
+\metaset[logo]{cc at by-nc-nd}{doclicense-CC-by-nc-nd-eu}}
+
+\newcommand{\mstr at setcclogo}{%
+  \ifmstr at opt@cclogo
+    \IfFileExists{doclicense.sty}{%
+      \ifdefined\includegraphics
+      \metaset{licenselogo}{%
+        \metapick[logo]{licensecc}}
+      \fi}{\GenericWarning{please install package `doclicense'}}%
+  \fi}
+
+\metaset[icon]{licensecc}{%
+  \metaget[icon]{cc at license\metaget[]{cc at class}}%
+  \metapick[icon]{cc@\metaget[]{cc at type}}}
+\metaset[icon]{licenseccver}{\metaget[]{licenseversion}}
+\metaset[icon]{licenseccfull}{%
+  \metaget[icon]{licensecc}
+  \metaget[icon]{licenseccver}}
+\metasetterm[icon]{cc at sep}{}
+\metasetterm[icon]{cc at cc}{\ccLogo}
+\metasetterm[icon]{cc at pd}{\ccPublicDomain}
+\metasetterm[icon]{cc at zero}{\ccZero}
+\metasetterm[icon]{cc at by}{\ccAttribution}
+\metasetterm[icon]{cc at sa}{\ccShareAlike}
+\metasetterm[icon]{cc at nd}{\ccNoDerivatives}
+\metasetterm[icon]{cc at nc}{\ccNonCommercial}
+\metaset[icon]{cc at license}{\metatranslate[#1]{cc at cc}}
+\metaset[icon]{cc at license@zero}{\metatranslate[#1]{cc at cc}}
+\metaset[icon]{cc at license@pd}{\metatranslate[#1]{cc at pd}}
+\metaset[icon]{copyrightmark}{\ccCopy}
+\mstr at iftext\mstr at opt@cclogocurr{euro}{
+  \metasetterm[icon]{cc at nc}{\ccNonCommercialEU}}
+\mstr at iftext\mstr at opt@cclogocurr{yen}{
+  \metasetterm[icon]{cc at nc}{\ccNonCommercialJP}}
+
+\metaset[url]{licenseccver}{\metaget[]{licenseversion}}
+\metaset[url]{licenseccfull}{%
+  \metaget[url]{cc at license\metaget[]{cc at class}}/%
+  \metapick[url]{licensecc}/%
+  \metaget[url]{licenseccver}/}
+\metaset[url]{cc at license}{https://creativecommons.org/licenses}
+\metaset[url]{cc at license@zero}{https://creativecommons.org/publicdomain}
+\metaset[url]{cc at zero}{zero}
+\metaset[url]{cc at by}{by}
+\metaset[url]{cc at by-sa}{by-sa}
+\metaset[url]{cc at by-nd}{by-nd}
+\metaset[url]{cc at by-nc}{by-nc}
+\metaset[url]{cc at by-nc-sa}{by-nc-sa}
+\metaset[url]{cc at by-nc-nd}{by-nc-nd}
+
+\metadef{cc at url}
+\metadef{cc at url@deed}
+\metaset{cc at url@deed}{}
+\metaset{cc at url}{\metapick[url]{licenseccfull}\metapick[#1]{cc at url@deed}}
+
+\newcommand{\metalicensecc}[1]{%
+  \def\mstr at tmpl{#1}%
+  \def\mstr at tmp{pd}%
+  \ifx\mstr at tmpl\mstr at tmp
+    \metaset{cc at class}{@pd}%
+    \metacopyright{publicdomain}%
+    \metaset{cc at type}{pd}%
+  \else
+    \def\mstr at tmp{zero}%
+    \ifx\mstr at tmpl\mstr at tmp
+      \metaset{cc at class}{@zero}%
+      \metaif[]{licenseversion}{}{\metaset{licenseversion}{1.0}}%
+    \else
+      \metaset{cc at class}{}%
+      \metaif[]{licenseversion}{}{\metaset{licenseversion}{4.0}}%
+    \fi
+    \metaset{cc at type}{#1}%
+    \metaset{licenseurl}{\metapick[##1]{cc at url}}%
+    \metaset{licensemessage}
+      {\metapick[##1]{cc at message\metaget[]{cc at class}}}%
+  \fi
+  \mstr at setcclogo}
+
+\metadef{contactaddress}
+\metadef{contactpostcode}
+\metadef{contactcity}
+\metadef{contactregion}
+\metadef{contactcountry}
+\metadef{contactemail}
+\metadef{contacturl}
+
+\newcommand{\metawritepdfcontact}{\ifdefined\hypersetup\ifdefined\xmptilde
+  \metaifpick[\mstr at lang@meta]{contactaddress}{%
+    \hypersetup{pdfcontactaddress=
+      {\metapick[\mstr at lang@meta]{contactaddress}}}}{}%
+  \metaifpick[\mstr at lang@meta]{contactpostcode}{%
+    \hypersetup{pdfcontactpostcode=
+      {\metapick[\mstr at lang@meta]{contactpostcode}}}}{}%
+  \metaifpick[\mstr at lang@meta]{contactcity}{%
+    \hypersetup{pdfcontactcity=
+      {\metapick[\mstr at lang@meta]{contactcity}}}}{}%
+  \metaifpick[\mstr at lang@meta]{contactregion}{%
+    \hypersetup{pdfcontactregion=
+      {\metapick[\mstr at lang@meta]{contactregion}}}}{}%
+  \metaifpick[\mstr at lang@meta]{contactcountry}{%
+    \hypersetup{pdfcontactcountry=
+      {\metapick[\mstr at lang@meta]{contactcountry}}}}{}%
+  \metaifpick[\mstr at lang@meta]{contactemail}{%
+    \hypersetup{pdfcontactemail=
+      {\metapick[\mstr at lang@meta]{contactemail}}}}{}%
+  \metaifpick[\mstr at lang@meta]{contacturl}{%
+    \hypersetup{pdfcontacturl=
+      {\metapick[\mstr at lang@meta]{contacturl}}}}{}%
+\fi\fi}
+
+\ifmstr at opt@course
+
+\metadef{institution}
+\metadef{instructor}
+\metadef{course}
+\metadef{material}
+\metadef{period}
+
+\metaset[style]{course}{\LARGE\bfseries}
+\metaset[style]{material}{\large}
+\metaset[style]{institution}{\large}
+\metaset[style]{period}{\large}
+\metaset[style]{instructor}{\scshape\Large}
+\metaset[skip]{material}{\vspace{2ex}}
+\metaset[skip]{institution}{\vspace{4ex}}
+\metaset[skip]{period}{\vspace{4ex}}
+\metaset[skip]{instructor}{\vspace{6ex}}
+\metaset[sep]{period}{, }
+
+\metaset[course]{titletext}{%
+  \metatitleline[print]{course}%
+  \metatitlelinetwo[print]{material}[print]{draft}%
+  \metatitlelinetwo[print]{institution}[print]{period}%
+  \metatitleline[print]{instructor}}
+
+\metaset{title}{\metapick[#1]{course}}
+\metaset{subtitle}{\metapick[#1]{material}}
+\metaset{author}{\metapick[#1]{instructor}}
+\metaset{date}{\metapick[#1]{period}}
+\metaset{location}{\metapick[#1]{institution}}
+
+\fi
+
+\def\mstr at loadlangloop#1|#2&{%
+  \mstr at csdo\let{mstr at lang@#1}\relax%
+  \ifx\mstr at lang@fallback\@empty\def\mstr at lang@fallback{#1}\fi%
+  \if @#2@\else\mstr at loadlangloop#2&\fi}
+\expandafter\mstr at loadlangloop\mstr at opt@loadlang|&
+
+\ifdefined\mstr at lang@en
+
+\metasetterm[en]{title}{Title}
+\metasetterm[en]{abstract}{Abstract}
+\metasetterm[en]{copyright}{Copyright}
+\metasetterm[en]{preface}{Preface}
+\metasetterm[en]{part}{Part}
+\metasetterm[en]{chapter}{Chapter}
+\metasetterm[en]{section}{Section}
+\metasetterm[en]{subsection}{Subsection}
+\metasetterm[en]{paragraph}{Paragraph}
+\metasetterm[en]{appendix}{Appendix}
+\metasetterm[en]{page}{Page}
+\metasetterm[en]{figure}{Figure}
+\metasetterm[en]{table}{Table}
+\metasetterm[en]{contents}{Contents}
+\metasetterm[en]{listfigure}{List of Figures}
+\metasetterm[en]{listtable}{List of Tables}
+\metasetterm[en]{references}{References}
+\metasetterm[en]{index}{Index}
+\metasetterm[en]{draft}{DRAFT}
+
+\metaset[en]{urlmessage}{%
+  The current version of this work can be found at: \metapick[#1]{url}.}
+\metaset[en]{partofmessage}{%
+  This document is part of the work: \metapick[#1]{partof}.}
+\metaset[en]{licenseurlmessage}{%
+  To view a copy of this license, visit: \metapick[#1]{licenseurl}.}
+\metaset[en]{copyright at plain}{%
+  This work is protected by copyright.}
+\metaset[en]{copyright at parts}{%
+  This work as well as its parts is protected by copyright.}
+\metaset[en]{copyright at doc}{%
+  This document is protected by copyright.}
+\metaset[en]{copyright at doc-parts}{%
+  This document as well as its parts is protected by copyright.}
+\metaset[en]{copyright at reserved}{All rights reserved.}
+\metaset[en]{copyright at publicdomain}
+  {This work is dedicated to the public domain.}
+\metaset[en]{license at consent}{%
+  Reproduction of any part of this work in any form
+  without prior written consent
+  \metacompose[#1]{licenseprovider}{}{}{of the author}
+  is not permissible.}
+\metaset[en]{license at consent-noncom}{%
+  Reproduction of any part of this work in any form
+  without prior written consent
+  \metacompose[#1]{licenseprovider}{}{}{of the author}
+  is permissible only for private, scientific and non-commercial use.}
+\metaset[en]{license at lppl}{%
+  This work may be distributed and/or modified under the
+  conditions of the LaTeX Project Public License, either version
+  \metaif[]{licenseversion}{\metaget[]{licenseversion}}{1.3}
+  of this license or (at your option) any later version.}
+\metaset[en]{cc at url@deed}{deed.en}
+\metaset[en]{cc at message}{%
+  This work is licensed under the
+  \metapick[en]{licenseccfull} (\metapick[short]{licenseccfull}).}
+\metaset[en]{cc at message@zero}{%
+  This work is dedicated to the public domain by means of the
+  \metapick[#1]{licenseccfull} (\metapick[short]{licenseccfull}).}
+\metaset[en]{cc at license}{%
+  \metatranslate[#1]{cc at cc} \metatranslate[#1]{cc at license}}
+\metaset[en]{cc at license@zero}{%
+  \metatranslate[#1]{cc at cc} \metatranslate[#1]{cc at pddecl}}
+\metasetterm[en]{cc at sep}{-}
+\metasetterm[en]{cc at quotel}{\textquotedblleft}
+\metasetterm[en]{cc at quoter}{\textquotedblright}
+\metasetterm[en]{cc at by}{Attribution}
+\metasetterm[en]{cc at sa}{ShareAlike}
+\metasetterm[en]{cc at nd}{NoDerivatives}
+\metasetterm[en]{cc at nc}{NonCommercial}
+\metasetterm[en]{cc at unported}{Unported}
+\metasetterm[en]{cc at generic}{Generic}
+\metasetterm[en]{cc at intl}{International}
+\metasetterm[en]{cc at univ}{Universal}
+\metasetterm[en]{cc at license}{License}
+\metasetterm[en]{cc at pd}{Public Domain}
+\metasetterm[en]{cc at pddecl}{Public Domain Dedication}
+
+\fi
+
+\ifdefined\mstr at lang@de
+
+\metasetterm[de]{title}{Titel}
+\metasetterm[de]{abstract}{Zusammenfassung}
+\metasetterm[de]{copyright}{Urheberrechte}
+\metasetterm[de]{preface}{Vorwort}
+\metasetterm[de]{part}{Teil}
+\metasetterm[de]{chapter}{Kapitel}
+\metasetterm[de]{section}{Abschnitt}
+\metasetterm[de]{subsection}{Unterabschnitt}
+\metasetterm[de]{paragraph}{Absatz}
+\metasetterm[de]{appendix}{Anhang}
+\metasetterm[de]{page}{Seite}
+\metasetterm[de]{figure}{Abbildung}
+\metasetterm[de]{table}{Tabelle}
+\metasetterm[de]{contents}{Inhaltsverzeichnis}
+\metasetterm[de]{listfigure}{Abbildungsverzeichnis}
+\metasetterm[de]{listtable}{Tabellenverzeichnis}
+\metasetterm[de]{references}{Literatur}
+\metasetterm[de]{index}{Index}
+\metasetterm[de]{draft}{ENTWURF}
+
+\metaset[de]{urlmessage}{%
+  Die aktuelle Version dieses Werks befindet sich unter:
+  \metapick[#1]{url}.}
+\metaset[de]{partofmessage}{%
+  Dieses Dokument ist Teil des Werks: \metapick[#1]{partof}.}
+\metaset[de]{licenseurlmessage}{%
+  Die Lizenz kann eingesehen werden unter:
+  \metapick[#1]{licenseurl}.}
+\metaset[de]{copyright at plain}{%
+  Dieses Werk ist urheberrechtlich gesch\"utzt.}
+\metaset[de]{copyright at parts}{%
+  Dieses Werk sowie seine Teile sind urheberrechtlich gesch\"utzt.}
+\metaset[de]{copyright at doc}{%
+  Dieses Dokument ist urheberrechtlich gesch\"utzt.}
+\metaset[de]{copyright at doc-parts}{%
+  Dieses Dokument sowie seine Teile sind urheberrechtlich gesch\"utzt.}
+\metaset[de]{copyright at reserved}{Alle Rechte vorbehalten.}
+\metaset[de]{copyright at publicdomain}
+  {Dieses Werk ist gemeinfrei.}
+\metaset[de]{license at consent}{%
+  Reproduktion eines Teils dieses Werks in beliebiger Form
+  ohne vorg\"angige schriftliche Erlaubnis
+  \metacompose[#1]{licenseprovider}{}{}{des Verfassers}
+  ist nicht gestattet.}
+\metaset[de]{license at consent-noncom}{%
+  Reproduktion eines Teils dieses Werks in beliebiger Form
+  ohne vorg\"angige schriftliche Erlaubnis
+  \metacompose[#1]{licenseprovider}{}{}{des Verfassers}
+  ist nur zum privaten, wissenschaftlichen
+  und nicht-gewerblichen Gebrauch gestattet.}
+\metaset[de]{license at lppl}{%
+  Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz,
+  entweder Version
+  \metaif[]{licenseversion}{\metaget[]{licenseversion}}{1.3}
+  oder (nach Ihrer Wahl) jede sp\"atere Version,
+  verteilt und/oder ver\"andert werden.}
+\metaset[de]{cc at url@deed}{deed.de}
+\metaset[de]{cc at message}{%
+  Dieses Werk ist lizensiert unter der
+  \metapick[de]{licenseccfull} (\metapick[short]{licenseccfull}).}
+\metaset[de]{cc at message@zero}{%
+  Dieses Werk ist gemeinfrei deklariert mittels der
+  \metapick[de]{licenseccfull} (\metapick[short]{licenseccfull}).}
+\metaset[de]{cc at license}{%
+  \metatranslate[#1]{cc at cc} \metatranslate[#1]{cc at license}}
+\metaset[de]{cc at license@zero}{%
+  \metatranslate[#1]{cc at cc} \metatranslate[#1]{cc at pddecl}}
+\metasetterm[de]{cc at sep}{ -- }
+\metasetterm[de]{cc at quotel}{\quotedblbase}
+\metasetterm[de]{cc at quoter}{\textquotedblleft}
+\metasetterm[de]{cc at by}{Namensnennung}
+\metasetterm[de]{cc at sa}{Weitergabe unter gleichen Bedingungen}
+\metasetterm[de]{cc at nd}{Keine Bearbeitungen}
+\metasetterm[de]{cc at nc}{Nicht kommerziell}
+\metasetterm[de]{cc at unported}{Unportiert}
+\metasetterm[de]{cc at generic}{Generisch}
+\metasetterm[de]{cc at intl}{International}
+\metasetterm[de]{cc at univ}{Universell}
+\metasetterm[de]{cc at license}{Lizenz}
+\metasetterm[de]{cc at pd}{Gemeinfrei}
+\metasetterm[de]{cc at pddecl}{Gemeinfrei Deklaration}
+
+\fi
+
+\ifdefined\mstr at lang@fr
+
+\metasetterm[fr]{title}{Titre}
+\metasetterm[fr]{abstract}{R\'esum\'e}
+\metasetterm[fr]{copyright}{Droits d'Auteur}
+\metasetterm[fr]{preface}{Pr\'eface}
+\metasetterm[fr]{part}{Partie}
+\metasetterm[fr]{chapter}{Chapitre}
+\metasetterm[fr]{section}{Section}
+\metasetterm[fr]{subsection}{Sous-Section}
+\metasetterm[fr]{paragraph}{Paragraphe}
+\metasetterm[fr]{appendix}{Annexe}
+\metasetterm[fr]{page}{Page}
+\metasetterm[fr]{figure}{Figure}
+\metasetterm[fr]{table}{Table}
+\metasetterm[fr]{contents}{Table des Mati\`eres}
+\metasetterm[fr]{listfigure}{Table des Figures}
+\metasetterm[fr]{listtable}{Liste des Tableaux}
+\metasetterm[fr]{references}{R\'ef\'erences}
+\metasetterm[fr]{index}{Index}
+\metasetterm[fr]{draft}{BROUILLON}
+
+\metaset[fr]{urlmessage}{%
+  La version actuelle de cet \oe uvre se trouve \`a l'adresse:
+  \metapick[#1]{url}.}
+\metaset[fr]{partofmessage}{%
+  Ce document fait partie de la \oe uvre: \metapick[#1]{partof}.}
+\metaset[fr]{licenseurlmessage}{%
+  Pour voir une copie de cette licence, visitez:
+  \metapick[#1]{licenseurl}.}
+\metaset[fr]{copyright at plain}{%
+  Cette \oe uvre est prot\'eg\'ee par le droit d'auteur.}
+\metaset[fr]{copyright at parts}{%
+  Cette \oe uvre ainsi que ses parties
+  sont prot\'eg\'ees par le droit d'auteur.}
+\metaset[fr]{copyright at doc}{%
+  Ce document est prot\'eg\'es par le droit d'auteur.}
+\metaset[fr]{copyright at doc-parts}{%
+  Ce document ainsi que ses parties
+  sont prot\'eg\'es par le droit d'auteur.}
+\metaset[fr]{copyright at reserved}{Tous les droits sont r\'eserv\'es.}
+\metaset[fr]{copyright at publicdomain}
+  {Cette \oe uvre est du domaine public.}
+\metaset[fr]{cc at url@deed}{deed.fr}
+\metaset[fr]{cc at message}{%
+  Cette \oe uvre est mise \`a disposition selon les termes de la
+  \metapick[fr]{licenseccfull} (\metapick[short]{licenseccfull}).}
+\metaset[fr]{cc at message@zero}{%
+  Cette \oe uvre est d\'eclar\'ee du domaine public par le
+  \metapick[fr]{licenseccfull} (\metapick[short]{licenseccfull}).}
+\metaset[fr]{cc at license}{%
+  \metatranslate[#1]{cc at license} \metatranslate[#1]{cc at cc}}
+\metaset[fr]{cc at license@zero}{%
+  \metatranslate[#1]{cc at pddecl} \metatranslate[#1]{cc at cc}}
+\metasetterm[fr]{cc at sep}{ -- }
+\metasetterm[fr]{cc at quotel}{\guillemotleft}
+\metasetterm[fr]{cc at quoter}{\guillemotright}
+\metasetterm[fr]{cc at by}{Attribution}
+\metasetterm[fr]{cc at sa}{Partage dans les M\^emes Conditions}
+\metasetterm[fr]{cc at nd}{Pas de Modification}
+\metasetterm[fr]{cc at nc}{Pas d'Utilisation Commerciale}
+\metasetterm[fr]{cc at unported}{Non Transpos\'e}
+\metasetterm[fr]{cc at generic}{G\'en\'erique}
+\metasetterm[fr]{cc at intl}{International}
+\metasetterm[fr]{cc at univ}{Universel}
+\metasetterm[fr]{cc at license}{Licence}
+\metasetterm[fr]{cc at pd}{Domaine Public}
+\metasetterm[fr]{cc at pddecl}{Transfert dans le Domaine Public}
+
+\fi
+
+\ifdefined\mstr at lang@es
+
+\metasetterm[es]{chapter}{Cap\'itulo}
+\metasetterm[es]{section}{Secci\'on}
+\metasetterm[es]{subsection}{Subsecci\'on}
+\metasetterm[es]{paragraph}{P\'arrafo}
+\metasetterm[es]{title}{T\'itulo}
+\metasetterm[es]{abstract}{Resumen}
+\metasetterm[es]{copyright}{Derechos de Autor}
+\metasetterm[es]{preface}{Prefacio}
+\metasetterm[es]{part}{Parte}
+\metasetterm[es]{appendix}{Ap\'endice}
+\metasetterm[es]{page}{P\'agina}
+\metasetterm[es]{figure}{Figura}
+\metasetterm[es]{table}{Cuadro}
+\metasetterm[es]{contents}{\'Indice}
+\metasetterm[es]{listfigure}{\'Indice de Figuras}
+\metasetterm[es]{listtable}{\'Indice de Cuadros}
+\metasetterm[es]{references}{Referencias}
+\metasetterm[es]{index}{\'Indice Alfab\'etico}
+\metasetterm[es]{draft}{BORRADOR}
+
+\metaset[es]{urlmessage}{%
+  La versi\'on actual de esta obra se puede encontrar en:
+  \metapick[#1]{url}.}
+\metaset[es]{partofmessage}{%
+  Este documento es parte de la obra: \metapick[#1]{partof}.}
+\metaset[es]{licenseurlmessage}{%
+  Para ver una copia de esta licencia, visite:
+  \metapick[#1]{licenseurl}.}
+\metaset[es]{copyright at plain}{%
+  Esta obra est\'a protegida por derechos de autor.}
+\metaset[es]{copyright at parts}{%
+  Esta obra y sus partes est\'an protegidas por derechos de autor.}
+\metaset[es]{copyright at doc}{%
+  Este documento est\'a protegido por derechos de autor.}
+\metaset[es]{copyright at doc-parts}{%
+  Este documento y sus partes est\'an protegidos por derechos de autor.}
+\metaset[es]{copyright at reserved}{Todos los derechos reservados.}
+\metaset[es]{copyright at publicdomain}
+  {Esta obra es de dominio p\'ublico.}
+\metaset[es]{cc at url@deed}{deed.es}
+\metaset[es]{cc at message}{%
+  Esta obra est\'a bajo la
+  \metapick[es]{licenseccfull} (\metapick[short]{licenseccfull}).}
+\metaset[es]{cc at message@zero}{Esta obra est\'a dedicada
+  al dominio p\'ublico por la
+  \metapick[es]{licenseccfull} (\metapick[short]{licenseccfull}).}
+\metaset[es]{cc at license}{%
+  \metatranslate[#1]{cc at license} \metatranslate[#1]{cc at cc}}
+\metaset[es]{cc at license@zero}{%
+  \metatranslate[#1]{cc at pddecl} \metatranslate[#1]{cc at cc}}
+\metasetterm[es]{cc at sep}{-}
+\metasetterm[es]{cc at quotel}{\textquotedblleft}
+\metasetterm[es]{cc at quoter}{\textquotedblright}
+\metasetterm[es]{cc at by}{Atribuci\'on}
+\metasetterm[es]{cc at sa}{CompartirIgual}
+\metasetterm[es]{cc at nd}{SinDerivadas}
+\metasetterm[es]{cc at nc}{NoComercial}
+\metasetterm[es]{cc at unported}{No Portada}
+\metasetterm[es]{cc at generic}{Gen\'erica}
+\metasetterm[es]{cc at intl}{Internacional}
+\metasetterm[es]{cc at univ}{Universal}
+\metasetterm[es]{cc at license}{Licencia}
+\metasetterm[es]{cc at pd}{Dominio P\'ublico}
+\metasetterm[es]{cc at pddecl}{Dedicaci\'on de Dominio P\'ublico}
+
+\fi
+
+\endinput
+%%
+%% End of file `metastr.sty'.


Property changes on: trunk/Master/texmf-dist/tex/latex/metastr/metastr.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: trunk/Master/tlpkg/bin/tlpkg-ctan-check
===================================================================
--- trunk/Master/tlpkg/bin/tlpkg-ctan-check	2020-02-06 20:52:44 UTC (rev 53699)
+++ trunk/Master/tlpkg/bin/tlpkg-ctan-check	2020-02-06 20:53:43 UTC (rev 53700)
@@ -469,7 +469,7 @@
     memoir MemoirChapStyles memory memorygraphs mendex-doc mentis
     mensa-tex menu menukeys merriweather
     metafont-beginners metago metalogo metalogox metaobj metaplot
-    metapost-colorbrewer metapost-examples metatex metatype1 metauml
+    metapost-colorbrewer metapost-examples metastr metatex metatype1 metauml
     method metre metrix
     mf2pt1 mfirstuc mflogo mflogo-font mfnfss mfpic mfpic4ode mftinc
     mgltex mhchem

Modified: trunk/Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc
===================================================================
--- trunk/Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc	2020-02-06 20:52:44 UTC (rev 53699)
+++ trunk/Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc	2020-02-06 20:53:43 UTC (rev 53700)
@@ -748,6 +748,7 @@
 depend menu
 depend menukeys
 depend metalogox
+depend metastr
 depend method
 depend metre
 depend mfirstuc

Added: trunk/Master/tlpkg/tlpsrc/metastr.tlpsrc
===================================================================


More information about the tex-live-commits mailing list.