summaryrefslogtreecommitdiff
path: root/Master/texmf-dist
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2012-09-21 22:42:23 +0000
committerKarl Berry <karl@freefriends.org>2012-09-21 22:42:23 +0000
commit001ce1425d9a3d1dcf6d3eade95e7dcd53c5be9b (patch)
tree9e328c707629868ab374011733fc92d11ee275c8 /Master/texmf-dist
parent01b93a5e06fc5b6aecdf087e7b0a9ca8eb14a010 (diff)
new generic package plainpkg (21sep12)
git-svn-id: svn://tug.org/texlive/trunk@27765 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist')
-rw-r--r--Master/texmf-dist/doc/generic/plainpkg/README46
-rw-r--r--Master/texmf-dist/doc/generic/plainpkg/SrcFILEs.txt9
-rw-r--r--Master/texmf-dist/doc/generic/plainpkg/plainpkg-doc.pdfbin0 -> 396804 bytes
-rw-r--r--Master/texmf-dist/source/generic/plainpkg/plainpkg-doc.tex282
-rw-r--r--Master/texmf-dist/source/generic/plainpkg/srcfiles.tex12
-rw-r--r--Master/texmf-dist/tex/generic/plainpkg/plainpkg.tex153
6 files changed, 502 insertions, 0 deletions
diff --git a/Master/texmf-dist/doc/generic/plainpkg/README b/Master/texmf-dist/doc/generic/plainpkg/README
new file mode 100644
index 00000000000..3f1f51eaff7
--- /dev/null
+++ b/Master/texmf-dist/doc/generic/plainpkg/README
@@ -0,0 +1,46 @@
+
+ README for the `plainpkg' package
+ (C) Uwe Lueck 2012/09/20
+
+
+`plainpkg.tex' provides a "minimal" method for making "generic"
+packages, combining `maybeload' functionality, fallback definitions
+for \ProvidesPackage and \RequirePackage, and handling of arbitrary
+(multiple) "private letters" in nested package files. The
+documentation contains a central reference for making and using
+"generic" packages based on `plainpkg.tex'.
+
+REQUIRED PACKAGES: stacklet (catcodes bundle)
+
+RELATED PACKAGES: miniltx, maybeload, catoptions, pcatcode
+ (amsrefs), texapi; readprov
+
+KEYWORDs: macro programming, package management
+
+LICENSE:
+
+The package file `plainpkg.tex' and the documentation files
+`plainpkg-doc.pdf' and `plainpkg-doc.tex' can be redistributed and/or
+modified under the terms of the LaTeX Project Public License;
+either version 1.3c of the License, or any later version, see
+
+ http://www.latex-project.org/lppl.txt
+
+There is NO WARRANTY, indeed this is still somewhat experimental.
+
+The `plainpkg' package is author-maintained in the sense of
+the license.
+
+The latest public version of the package is available at
+
+ http://mirror.ctan.org/macros/generic/plainpkg/
+
+A TDS version of the package is available as
+
+ http://mirror.ctan.org/install/macros/generic/plainpkg.tds.zip
+
+Please report bugs, problems, and suggestions via
+
+ http://www.contact-ednotes.sty.de.vu
+
+
diff --git a/Master/texmf-dist/doc/generic/plainpkg/SrcFILEs.txt b/Master/texmf-dist/doc/generic/plainpkg/SrcFILEs.txt
new file mode 100644
index 00000000000..67624485abc
--- /dev/null
+++ b/Master/texmf-dist/doc/generic/plainpkg/SrcFILEs.txt
@@ -0,0 +1,9 @@
+
+ *File List*
+ plainpkg.tex 2012/09/19 v0.4a plain package management
+plainpkg-doc.tex 2012/09/19 -- documenting plainpkg.tex
+ ***********
+
+ List made at 2012/09/19, 18:35
+ from script file srcfiles.tex
+
diff --git a/Master/texmf-dist/doc/generic/plainpkg/plainpkg-doc.pdf b/Master/texmf-dist/doc/generic/plainpkg/plainpkg-doc.pdf
new file mode 100644
index 00000000000..fbd1b2a3beb
--- /dev/null
+++ b/Master/texmf-dist/doc/generic/plainpkg/plainpkg-doc.pdf
Binary files differ
diff --git a/Master/texmf-dist/source/generic/plainpkg/plainpkg-doc.tex b/Master/texmf-dist/source/generic/plainpkg/plainpkg-doc.tex
new file mode 100644
index 00000000000..882dce5ac4b
--- /dev/null
+++ b/Master/texmf-dist/source/generic/plainpkg/plainpkg-doc.tex
@@ -0,0 +1,282 @@
+\ProvidesFile{plainpkg-doc.tex}[2012/09/19 documenting plainpkg.tex]
+\title{\pkg{\huge plainpkg}\\---\\%%%Rudimentary Package Management
+% without \LaTeX\thanks{This document describes
+ a ``Minimal" Method\\for Making ``Generic" Packages\thanks{%
+ This document describes
+ \file{plainpkg.tex}'s %% 2012/08/24
+ version~\textcolor{blue}{\UseVersionOf{plainpkg.tex}}
+ as of~\textcolor{blue}{\UseDateOf{plainpkg.tex}}.}}
+% \listfiles %% 2012/09/16
+% \RequirePackage{inputtrc}\dotracinginputs
+{ \RequirePackage{makedoc} \ProcessLineMessage{}
+ \renewcommand*{\mdSectionLevelOne}{\string\subsection}
+ \renewcommand*{\mdJobName}{plainpkg}
+ \MakeJobDoc[tex]{21}%% 2012/08/25
+ {\SectionLevelTwoParseInput} }
+\documentclass[fleqn]{article}%% TODO paper dimensions!?
+\input{makedoc.cfg} %% shared formatting settings
+% \ReadFileInfos{plainpkg} %% 2012/09/16 Fehler, wird wohl schon
+ %% durch fifinddo via stacklet aufgerufen.
+\MDkeywords{Macro programming, package management}
+\newcommand*{\plpkg}[1]{\pkg{plainpkg} #1ackage}
+\newcommand*{\plpkgpkg}{\plpkg p}
+\newcommand*{\Plpkgpkg}{\plpkg P}
+\sloppy
+\begin{document}
+\maketitle
+\begin{MDabstract}
+'plainpkg.tex' provides some rudimentary \LaTeX-like package
+management for ``generic" packages: \
+(i)\enspace a (rather arbitrary) implementation of
+\LaTeX's `\ProvidesFile' (support for \ctanpkgref{readprov}), \
+(ii)\enspace an implementation of \LaTeX's `\ProvidesPackage'
+that, in addition to (i), avoids loading twice, \
+(iii)\enspace a simple implementation of \LaTeX's `\RequirePackage' %% P 2012/09/19
+to allow nesting of package files with and without \LaTeX\ \ and \
+%% <- 2012/08/25
+(iv)\enspace loading 'stacklet.sty' for managing private letters
+with nested package files. \ Also,
+(v)\enspace a rather experimental `\ifltx' is provided indicating
+whether the format is \LaTeX---or \CtanPkgRef{miniltx}{miniltx.tex}
+has been loaded earlier~... \
+A by-product is \ (vi)\enspace the helper `\withcsname' for
+`csname' constructs. %% rm. \ 2012/09/19
+%% 2012/09/19:
+The documentation also introduces a notion of ``\plpkgpkg s"
+for a central explanation of how to make and work with ``generic"
+packages based on 'plainpkg'.
+
+\MDaddtoabstract{Related Packages}
+\ctanpkgref{miniltx}, \ctanpkgref{maybeload};
+\ctanpkgref{catoptions},\\\null\qquad 'pcatcode' from \ctanpkgref{amsrefs},
+\ctanpkgref{texapi}
+%% 2012/09/19:
+\MDaddtoabstract{Required Packages} 'stacklet.sty' from
+\ctanpkgref{catcodes} bundle
+\end{MDabstract}
+% \newpage
+\tableofcontents
+\section{Purpose and Usage}
+\label{sec:pu}
+\subsection{Purpose}
+'plainpkg.tex' in the first instance is a tool for \TeX\ macro packages
+to work with \LaTeX\ as well as with Plain \TeX, perhaps even with other
+\TeX\ formats.
+When \LaTeX\ seems to be missing, a definition for `\ProvidesPackage'
+is provided that avoids loading such a package a second time.
+Earlier (in the \ctanpkgref{dowith} package), I tried to ``hide"
+the `\ProvidesPackage' command when it was not defined,
+the original motive was to have that command somewhere so
+its version information can be accessed by the \ctanpkgref{readprov} package.
+As such ``generic" packages often use private \LaTeX\ internals,
+I thought that 'plainpkg' also should offer a stack for handling category
+codes of `@' in nested package files. Rather than providing such a stack
+in `plainpkg.tex', I use the more general 'stacklet.sty', because I
+have used different ``private letters" in other nested package files
+that \emph{require \LaTeX}, so such stacks should be accessible
+\emph{without} 'plainpkg'.
+%
+% Details, including why a mere document author should consider it,
+% are following.
+
+\subsection{Installing: How and Why}
+The file `plainpkg.tex' is provided ready, like `stacklet.sty'
+(\ctanpkgref{catcodes} bundle), installation only requires
+putting both somewhere where \TeX\ finds them
+(which may need updating the filename data
+ base).\urlfoot{ukfaqref}{inst-wlcf}
+
+\subsection{Features}
+\label{sec:feat}
+Besides providing 'stacklet''s features---see the 'catcodes' bundle
+documentation in `catcodes.pdf'---and a fallback definition
+|\ProvidesPackage| for running without \LaTeX, some |\withcsname|,
+a conditional |\ifltx| as well as
+fallback definitions for |\RequirePackage| and |\ProvidesFile|
+are provided---see implementation sections for details.
+
+\subsection{Loading `plainpkg.tex'}
+\label{sec:load}
+`plainpkg.tex' may be loaded by |\input plainpkg| or---with \LaTeX---by
+|\input{plainpkg}|. However, in a document source file this is useful only
+when so-called ``weak \plpkgpkg s" according to Section~\ref{sec:plpkg}
+are loaded additionally. With \LaTeX, the only effect will be that
+`\withcsname' works and that the 'stacklet' package is loaded.
+So if you just want to have the 'stacklet' functionality of support for
+private letters in nested package files, you better use
+|\RequirePackage{stacklet}| or |\usepackage{stacklet}| directly.
+The latter still is a little strange---it may be helpful for private
+letters other than `@' in a \LaTeX\ document, or with ``weak 'stacklet'
+packages," a notion that I have not introduced yet.
+
+\subsection{Notion and Usage of ``\Plpkgpkg s"}
+\label{sec:plpkg}
+The main purpose of the present section is to have a central
+reference for all ``generic" packages based on 'plainpkg',
+to avoid repeating details in the documentation of each single
+package of that kind.
+
+\subsubsection{The Notion: ``Strong" and ``Weak \Plpkgpkg s"}
+\label{sec:not}
+I introduce the notion of ``\strong{\plpkgpkg s}" for ``generic" packages
+based on 'plainpkg.tex' and requiring it.
+\begin{description}
+ \item[Strong \plpkgpkg s] (i)~have filename extension |.sty|
+ \ and \ (ii)~contain |\input plainpkg|.
+ \item[Weak \plpkgpkg s] do not load `plainpkg.tex',
+ but their \emph{documentation} says that they must be loaded
+ \emph{after} `plainpkg.tex' has been loaded.
+ They have filename extension |.sty| as well.
+\end{description}
+\emph{My} \plpkgpkg s will also contain \ |\ProvidesPackage{<pkg>}[<ver>]| \
+(\mbox{after} `\input plpkgpkg').
+A package loading `plainpkg.tex' and \emph{not} containing `\ProvidesPackage'
+may work and be called a ``\plpkgpkg", but the usefulness of such a
+practice, hmm, is in some sense discussed in Section~\ref{sec:load}.
+
+``Weak" \plpkgpkg s are just an idea that came to my mind when I thought
+about the present documentation, at present I prefer \emph{strong}
+\plpkgpkg s, I do not want to explain usage of weak \plpkgpkg s.
+
+I like to place the `\input plainpkg' ``right-adjusted" in the
+plain text file hoping this way the file information of the next
+\cs{Provides\dots} line is not overlooked.
+
+\subsubsection{How to Load a \Plpkgpkg}
+For loading a \plpkgpkg\ `<generic>.sty' from within some file <loading>,
+we have the following cases:
+\begin{description}
+ \item[from within the \LaTeX\ document preamble] of <loading>:\\
+ |\usepackage{<generic>}|\footnote{$\dots$ or even
+ &\RequirePackage{<generic>} \dots}
+ \item[not intended for \LaTeX:] |\input <generic>.sty|
+ \item[possibly with \LaTeX (``generic"):] |\Require{<generic>}|\\---and
+ `plainpkg.tex' should have been loaded before,\\
+ \strong{recommendation:} <loading> a \plpkgpkg\ `<lodyng>.sty' itself.
+\end{description}
+\strong{Note:}\quad The optional argument as in
+|\RequirePackage{<generic>}[<date>]| is \strong{not supported} (at present)!
+
+\subsubsection{How to Make a \Plpkgpkg}
+% \subsubsection{What a \Plpkgpkg\ Must Contain}
+% For what a \plpkgpkg\ \emph{must} contain,
+% ---see Section~\ref{sec:not}.
+Section~\ref{sec:not} tells what rather is \emph{required} for a
+\plpkgpkg, and Section~\ref{sec:may} summarizes what additionally
+\emph{works} in a \plpkgpkg, due to 'plainpkg''s \emph{features.}
+
+\subsubsection{What a \Plpkgpkg\ May Contain}
+\label{sec:may}
+A \plpkgpkg\ may contain
+\begin{itemize}
+ \item |\ProvidesPackage|, |\RequirePackage|
+ (without optional argument),
+ \item |\ifltx|, and |\withcsname|;
+ \item 'stacklet' commands properly paired:
+ for each ``private letter" <char>, place
+ \begin{itemize}
+ \item |\PushCatMakeLetter\<char>| above its first use
+ and place
+ \item |\PopLetterCat\<char>| after the last use, above `\endinput'.
+ \item If <char> is `@',
+ |\PushCatMakeLetterAt| and |\PopLetterCatAt| are recommended instead.
+ \end{itemize}
+\end{itemize}
+
+% \subsubsection{Implications}
+% See Section~\ref{sec:feat} for what is available besides the
+% specific features advertised for some \plpkgpkg.
+%
+\subsubsection{Other ``\pkg{plainpkg} Files"}
+As 'plainpkg' also provides a fallback definition for
+|\ProvidesFile|, another notion could be that of a
+``\pkg{plainpkg} file" <file> that \
+(i)~has an arbitrary filename extension, \
+(ii)~is loaded by |\input <file>| or, with \LaTeX, |\input{<file>}|
+\ and \
+(iii)~may contain what is allowed according to Section~\ref{sec:may},
+apart from `\ProvidesPackage'.
+As an obvious example, all the document source files such as `<part>.tex'
+may start with `\ProvidesFile', or certain `.def' files could be
+considered ``\pkg{plainpkg} files."
+
+% \subsection{More PU\dots}
+% \begin{enumerate} %% 2012/08/24
+% \item
+% `plainpkg.tex' should be loaded by
+% % \[|\input plainpkg|\]
+% \[\cs{input plainpkg}\]
+% starting a file <generic> for Plain~\TeX\ or that should be
+% independent of a \TeX\ format (basically based on `plain.tex').
+% \item
+% Below that line, such a file may contain
+% \begin{enumerate}
+% \item a \LaTeX\ |\ProvidesFile| or |\ProvidesPackage|
+% command (purpose: accessible by '\ctanpkgref{readprov}.sty'),
+% \item commands from the 'stacklet' package managing
+% private letters with nested packages,
+% \item |\RequirePackage<args>|,
+% \item |\ifltx| indicating running under \LaTeX\ or with
+% \CtanPkgRef{miniltx}{miniltx.tex}.
+% However, something may fail when 'miniltx.tex'
+% is loaded \emph{after} 'plainpkg.tex'.
+% In this case, `\ifltx' at least indicates
+% what \emph{format} is used.
+% \end{enumerate}
+% \item
+% When <generic> is some `<generig>.sty' also intended to
+% work as a \LaTeX\ package, 'plainpkg' will at least ensure
+% that the 'stacklet' commands in <generic> work.
+% \item
+% (Such) <generic> `<generig>.sty' files should be loaded by
+% \[|\RequirePackage{generig}|\]
+% ---\emph{not} \qtd{\cs{input <generig>.sty}}---to ensure that,
+% under \LaTeX, %% 2012/09/16
+% \[`\ProvidesPackage{generig}'\]
+% works properly and to avoid multiple loading. %% 2012/09/16
+% \item
+% \emph{Without} \LaTeX, |\ProvidesPackage| also stops reading
+% the rest of the file when it has been loaded earlier.
+% Thus it is a replacement for \ctanpkgref{maybeload}.
+% \end{enumerate}
+
+% \setcounter{section}{-1}
+\section{Comparison with 'miniltx' and 'maybeload'}
+% Packages based on 'plainpkg' can and should employ `\ProvidesPackage'
+% and `\RequirePackage' even without \LaTeX. In the latter situation,
+% however, their definitions
+Without \LaTeX, the definitions of `\ProvidesPackage' and `\RequirePackage'
+are by no means copies from \LaTeX, as they are in \ctanpkgref{miniltx}.
+Rather, \cs{Provides}\-\code{Package} will work like \ctanpkgref{maybeload}'s
+`\thisfileis'.---\pkg{maybeload} was made for ``\LaTeX," too,
+according to its comment. But that rather was
+pre\mbox{-}$2_{\varepsilon}$ \LaTeX. 'plainpkg' might also have been called
+``\pkg{maybeload2e}", as we are essentially combining 'maybeload''s functionality
+with fall-back support for \LaTeXe's basic package commands.
+But of course, that name would not reflect loading 'stacklet',
+whose purpose also has been to have as little as possible
+above `\ProvidesPackage'.
+
+\section{The Package File}
+\subsection{Header---Bootstrapping and Legalese}
+The first line is for Section~\ref{sec:once}.
+Next I want to have \cs{Provides\textellipsis} info at the top
+of the file, but such a command hasn't been defined yet.
+`\def\filename' etc. could be bad as well, overriding `\filedate'
+of a package that loads 'plainpkg.tex'.
+\input{plainpkg.doc}
+
+\end{document}
+
+VERSION HISTORY
+
+2012/08/22 for v0.1 very first
+2012/08/24 for v0.3 \thanks supplemented
+2012/08/25 "installing" sec. -> `plainpkg.tex',
+ adjusted \HeaderLines, abstract extended,
+ TOC on \newpage, explaining top lines,
+ mentioning \ifltx
+2012/08/26 LaTeX -> \LaTeX; doc. grammar fix
+2012/09/19 different title, moving documentation here
+ from package file and reworking it,
+ changing doc structure, abstract mod.
diff --git a/Master/texmf-dist/source/generic/plainpkg/srcfiles.tex b/Master/texmf-dist/source/generic/plainpkg/srcfiles.tex
new file mode 100644
index 00000000000..8a07a31a36c
--- /dev/null
+++ b/Master/texmf-dist/source/generic/plainpkg/srcfiles.tex
@@ -0,0 +1,12 @@
+\ProvidesFile{srcfiles.tex}[2012/08/22 file infos -> SrcFILEs.txt]
+\RequirePackage{nicefilelist,myfilist}
+\EmptyFileList %%% [readprov.sty,myfilist.sty]
+%% packages:
+\ReadFileInfos{plainpkg}
+%% documentation:
+\ReadFileInfos{plainpkg-doc}
+%% documentation settings and auxiliaries:
+% \ReadPackageInfos{fifinddo,makedoc,niceverb}
+% \ReadFileInfos{makedoc.cfg,mdoccorr.cfg,srcfiles}
+\ListInfos[SrcFILEs.txt]
+
diff --git a/Master/texmf-dist/tex/generic/plainpkg/plainpkg.tex b/Master/texmf-dist/tex/generic/plainpkg/plainpkg.tex
new file mode 100644
index 00000000000..d56b8848a0d
--- /dev/null
+++ b/Master/texmf-dist/tex/generic/plainpkg/plainpkg.tex
@@ -0,0 +1,153 @@
+ \ifx\plainpkginfo\undefined
+ \gdef\plainpkginfo{\ProvidesFile{%
+ %
+ plainpkg.tex} [%
+ 2012/09/19 v0.4a plain package management]}
+%%
+%% Copyright (C) 2012 Uwe Lueck,
+%% http://www.contact-ednotes.sty.de.vu
+%% -- author-maintained in the sense of LPPL below --
+%%
+%% This file can be redistributed and/or modified under
+%% the terms of the LaTeX Project Public License; either
+%% version 1.3c of the License, or any later version.
+%% The latest version of this license is in
+%% http://www.latex-project.org/lppl.txt
+%% We did our best to help you, but there is NO WARRANTY.
+%%
+%% Please report bugs, problems, and suggestions via
+%%
+%% http://www.contact-ednotes.sty.de.vu
+%%
+%% == Purpose and Usage ==
+%% ... of the file `plainpkg.tex' is described in Section~\ref{sec:pu}
+%% of the documentation file `plainpkg-doc.pdf' generated from
+%% `plainpkg-doc.tex' (... in case somebody is reading the plain
+%% text of `plainpkg.tex').
+%%
+%% == Avoiding Being Loaded Twice ==
+%% \label{sec:once}
+%% Continuing the first conditional:
+ \else
+%% Keeping the `\endinput' \emph{outside} the conditional:
+ \expandafter \endinput
+ \fi
+%% The earlier idea to close the conditional more below
+%% conflicted with avoiding `\input stacklet' under 'readprov'.
+%%
+%% == \cs{global} ==
+%% A funny idea of my earlier 'makedoc' in the 'nicetext' bundle
+%% was that its macro definitions should be \emph{local},
+%% for \emph{preprocessing} documentation files---results
+%% being written to files. Well, but when `makedoc.sty' loads
+%% the present `plainpkg.tex', the latter's definitions should
+%% \emph{last}. Therefore, v0.4 renders all definitions \emph{global}.
+%% I.e., `\def' is replaced by `\gdef', `\edef' by `\xdef',
+%% and `\let' assignments are prefixed with `\global'.
+%%
+%% == A Tool for \cs{csname} ==
+%% \label{sec:withcs}
+%% |\withcsname<cmd>| is a little helper with `\csname'
+%% that will be used by 'stacklet' as well. Usage actually should be
+%% about as
+%% \[`\withcsname\<letters> <chars>\endcsname'\]
+%% or
+%% \[`\withcsname\<letters><non-letter-char><chars>\endcsname'\]
+%% (but better don't expect that `@' were a non-letter-char!\@) %% 2012/08/27
+%% or
+%% \[`\withcsname\<non-letter><chars>\endcsname'\]
+%% (tokenization~...)
+%% and should result in a sequence of two tokens---in
+%% %% <- fixed 2012/08/27 ->
+%% the \ctanpkgref{dowith} notation---
+%% \[?<letters>\,?<chars>\quad \mbox{or}\quad
+%% ?<letters>\,?<non-letter-char><chars>\]
+%% or\quad ?<non-letter>\,?<chars> ...
+ \gdef\withcsname#1{\expandafter#1\csname}
+%% 2012/08/27 I realize that from the three files I made this weekend
+%% ('plainpkg.tex', 'stacklet.sty', 'actcodes.sty'),
+%% a single ?`withcsname' token appears in macro replacement
+%% ``texts" ('actcodes' doesn't use it at all)---wondering
+%% whether I should remove it TODO---however,
+%% it improves readability of the files.
+%%
+%% == \cs{Provides\dots}, \cs{ifltx} ==
+\ifx\ProvidesPackage\undefined
+%% ... or can it be `\relax', cf. concern in 'german.sty'?
+%%
+%% We expect that |\ProvidesFile| and |\ProvidesPackage|
+%% are used with the trailing ``optional" argument:
+ \gdef\ProvidesFile#1[#2]{\wlog{#1 #2}}
+%% |\ProvidesPackage| gets \ctanpkgref{maybeload} functionality.
+%% v0.2 aims at saving a few tokens. And we form a token name
+%% containing an `@' without changing its `\catcode'.
+ \xdef\ProvidesPackage#1{%
+ \noexpand\withcsname
+ \withcsname\noexpand @providespkg\endcsname %% ` ' v0.3
+ ver@#1.sty\endcsname{#1}} %% .sty v0.3
+%% ... so `\ProvidesPackage{<chars>}' should result in %% P 2012/09/15
+%% \[\!\!\!\!?`withcsname'\,?`@providespkg'\,\textsf{in}\sb{k}\sp*(`ver@'<chars>)\,
+%% ?`endcsname'\,.`{'\,\textsf{in}\sb{k}\sp*(<chars>)\,.`}'\!\]
+%% where $\textsf{in}\sb{k}\sp*(\chi)$ is the tokenization of $\chi$
+%% with current `\catcode' function $k$; and this should further result in
+%% \[?`@providespkg'\,?`ver@<chars>'\,.`{'\,\textsf{in}\sb{k}\sp*(<chars>)\,.`}'\]
+% \show\ProvidesPackage
+%% The first tokens of the next code line result in
+%% ?`gdef'\,?`@providespkg': %% gdef 2012/09/19
+ \withcsname\gdef @providespkg\endcsname#1#2[#3]{% %% ` ' v0.3
+ \ifx#1\relax \ProvidesFile{#2.sty}[#3]%
+ \xdef#1{#3}%
+%% ... like \LaTeX, while 'maybeload' consumes less memory.
+ \else \expandafter \endinput
+ \fi }
+%% Moreover, if `\ProvidesPackage' has not been defined before,
+%% neither \LaTeX\ is present nor \ctanpkgref{miniltx} has been
+%% loaded, so |\ifltx| is rendered `\iffalse'
+%% (the construction ensures proper skipping by the outer
+%% conditional, and `\ifltx' rather than `\iflatex' alludes to
+%% considering 'miniltx' and to our worries):
+ \global \expandafter \let \expandafter
+ \ifltx \csname iffalse\endcsname
+%% If `\ProvidesPackage' has been defined, how come?
+%% Not from 'plainpkg.tex' which is not loaded twice.
+%% Rather from \LaTeX\ or 'miniltx':
+\else
+ \global \withcsname \let ifltx\expandafter\endcsname %% 2012/08/26
+ \csname iftrue\endcsname
+\fi
+%% Now `\ProvidesFile' for 'plainpkg.tex' can be executed:
+\plainpkginfo
+%%
+%% == \cs{RequirePackage} ==
+%% Without \LaTeX\, ...
+\ifltx \else %% 2012/08/25
+%% |\RequirePackage| simply is ...
+ \gdef\RequirePackage#1{\input #1.sty}
+\fi
+%%
+%% == \cs{catcode} Stacks ==
+%% ... (for private letters) are provided by 'stacklet.sty' ...
+\RequirePackage{stacklet}
+%%
+%% == Leaving and \acro{HISTORY} ==
+\endinput
+%% VERSION HISTORY
+v0.1 2012/08/22 very first
+v0.2 2012/08/23 refinements with \csname
+v0.3 2012/08/24 \oncsname -> \withcsname;
+ loading `stacklet.sty' with LaTeX;
+ doc. extended
+ 2012/08/25 doc. "installing" mv. here;
+ aligning first conditional + label, \ifltx
+ 2012/08/26 explaining \withcsname;
+ corrected second \ifltx;
+ bug fix "ver@#1.sty"!!!
+ 2012/08/27 account for `@' being letter; doc. fix
+ remark on keeping \withcsname
+v0.4 2012/08/27 \global
+ 2012/09/15 doc. was \Providespackage
+ 2012/09/16 doc: endorsing \RequirePackage more clearly
+ 2012/09/17 bug fix: \def\plain... -> \gdef\plain...
+ (for local makedoc processing)
+ STORED SEPARATELY
+v0.4a 2012/09/19 moving documentation outside, \label..., ?gdef