texlive[61840] Master/texmf-dist: dtxdescribe (1feb22)

commits+karl at tug.org commits+karl at tug.org
Tue Feb 1 23:08:13 CET 2022


Revision: 61840
          http://tug.org/svn/texlive?view=revision&revision=61840
Author:   karl
Date:     2022-02-01 23:08:12 +0100 (Tue, 01 Feb 2022)
Log Message:
-----------
dtxdescribe (1feb22)

Modified Paths:
--------------
    trunk/Master/texmf-dist/doc/latex/dtxdescribe/README.txt
    trunk/Master/texmf-dist/doc/latex/dtxdescribe/dtxdescribe.pdf
    trunk/Master/texmf-dist/source/latex/dtxdescribe/dtxdescribe.dtx
    trunk/Master/texmf-dist/tex/latex/dtxdescribe/dtxdescribe.sty

Modified: trunk/Master/texmf-dist/doc/latex/dtxdescribe/README.txt
===================================================================
--- trunk/Master/texmf-dist/doc/latex/dtxdescribe/README.txt	2022-02-01 22:07:59 UTC (rev 61839)
+++ trunk/Master/texmf-dist/doc/latex/dtxdescribe/README.txt	2022-02-01 22:08:12 UTC (rev 61840)
@@ -1,8 +1,9 @@
 The LaTeX dtxdescribe package
 Describe additional object types in dtx source files.
 
-v1.01 — 2019/03/22
-Copyright 2016–2019 Brian Dunn — www.BDTechConcepts.com
+v1.03 — 2012/02/01
+Copyright 2016–2022 Brian Dunn — www.BDTechConcepts.com
+
 LaTeX Project Public License, version 1.3
 
 The doc package includes tools for describing macros and environments in

Modified: trunk/Master/texmf-dist/doc/latex/dtxdescribe/dtxdescribe.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/source/latex/dtxdescribe/dtxdescribe.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/dtxdescribe/dtxdescribe.dtx	2022-02-01 22:07:59 UTC (rev 61839)
+++ trunk/Master/texmf-dist/source/latex/dtxdescribe/dtxdescribe.dtx	2022-02-01 22:08:12 UTC (rev 61840)
@@ -1,7 +1,7 @@
 
 % \iffalse meta-comment
 %
-% Copyright 2016-2019 Brian Dunn
+% Copyright 2016-2022 Brian Dunn
 %
 % This work may be distributed and/or modified under the
 % conditions of the LaTeX Project Public License, either version 1.3
@@ -17,7 +17,7 @@
 % \iffalse
 %<package>\NeedsTeXFormat{LaTeX2e}
 %<package>\ProvidesPackage{dtxdescribe}
-%<package>    [2019/07/16 v1.02 Describe additional object types in source files.]
+%<package>    [2022/02/01 v1.03 Describe additional object types in source files.]
 %
 %<*driver>
 \documentclass{ltxdoc}
@@ -26,6 +26,10 @@
 \newcommand{\quicksummary}{Describe additional object types in \texttt{dtx} source files.}
 
 
+\usepackage{iftex}
+
+\ifpdftex
+
 % \usepackage{lmodern}
 % \usepackage{libertine}
 \usepackage[space]{erewhon}
@@ -41,10 +45,6 @@
 \usepackage[utf8]{inputenc}
 \usepackage{textcomp}	% provides \degree, \textquotesingle, \textmu
 
-
-
-
-
 % copy/paste special unicode symbols:
 \input{glyphtounicode}
 \pdfglyphtounicode{prime}{2032}% hex
@@ -74,25 +74,27 @@
 \newunicodechar{‡}{\ddag}
 \newunicodechar{⚠}{\warningsign}
 
-\usepackage{microtype}
+\else
 
-\usepackage{metalogo}
-\makeatletter
-\@ifpackageloaded{erewhon}{
-\setlogokern{Te}{-.08em}
-\setlogokern{eX}{-0.04em}
-\setlogokern{La}{-.25em}
-\setlogokern{aT}{-.08em}
-\setlogokern{Xe}{-.04em}
-\setlogokern{eL}{-.06em}
-\setlogodrop{0.27ex}
-}{}
-\makeatother
+\usepackage{fontspec}
 
+\setmainfont{Erewhon-Regular}
+\setsansfont{Cabin}
+\setmonofont{inconsolata}
+
+\fi
+
+
 \usepackage{etoolbox}
 
-\usepackage[log-declarations=false]{xparse}
+\usepackage{xparse}
 
+
+
+\usepackage{microtype}
+
+\usepackage{metalogox}
+
 \usepackage{titleps}
 
 \newpagestyle{pageheadfoot}{
@@ -119,7 +121,7 @@
 
 \usepackage{\mypackagename}
 
-\usepackage[pdftex,bookmarks=true,hidelinks,%
+\usepackage[bookmarks=true,hidelinks,%
 colorlinks,linkcolor=mylinkcolor,urlcolor=myurlcolor,%
 pageanchor=true,hyperindex=true,
 ]{hyperref}
@@ -136,6 +138,21 @@
 \usepackage{cleveref}
 
 
+\renewenvironment{abstract}
+    {
+        \bigskip
+        \begin{center}
+        \textbf{\abstractname}
+        \end{center}
+%         \small
+        \setlength{\parindent}{2em}
+        \setlength{\parskip}{0ex}
+    }
+    {
+        \bigskip
+    }
+
+
 \setcounter{IndexColumns}{2}
 
 \DisableCrossrefs
@@ -153,7 +170,7 @@
 %<*package>
 % \fi
 %
-% \CheckSum{1118}
+% \CheckSum{1211}
 %
 % \CharacterTable
 % {Upper-case     \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
@@ -176,6 +193,7 @@
 % \changes{v1.00}{2019/01/11}{\ 2019/01/11}
 % \changes{v1.01}{2019/03/22}{\ 2019/03/22}
 % \changes{v1.02}{2019/07/16}{\ 2019/07/16}
+% \changes{v1.03}{2022/02/01}{\ 2022/02/01}
 
 
 
@@ -200,12 +218,14 @@
 %
 % \bigskip
 %
-% {\small\textcopyright{} 2016--2018} Brian Dunn\\ \small \texttt{bd at BDTechConcepts.com}
+% {\small\textcopyright{} 2016--2022} Brian Dunn\\ \small \texttt{bd at BDTechConcepts.com}
 %
 % \vspace{.5in}
 %
 % {\Large \textup{\quicksummary}}
 %
+% \end{center}
+%
 % \vfill
 %
 %
@@ -214,7 +234,7 @@
 % The \pkg{doc} package includes tools for describing macros and environments
 % in \LaTeX\ source \filenm{.dtx} format.
 % The \pkg{dtxdescribe} package adds additional tools for describing
-% booleans, lengths, counters, keys, packages, classes, options,
+% booleans, lengths, counters, hooks, keys, packages, classes, options,
 % files, commands, arguments, and other objects.
 % \pkg{dtxdescribe} also works with the regular document classes, for those
 % who do not wish to use the \pkg{ltxdoc} class and \filenm{.dtx} files.
@@ -240,12 +260,13 @@
 % the \env{macro} and \env{environment} environments are not supported.
 % Either \pkg{makeidx} or \pkg{splitidx} may be loaded by the user.
 % \pkg{makeidx} will be used by default.
+%
+% \pkg{dtxdescribe} works with pdf\TeX, \XeTeX, and \LuaTeX, and perhaps other engines
+% as well.
 % \end{abstract}
 %
-%
 % \vfill
 %
-% \end{center}
 % \clearpage
 %
 % \tableofcontents
@@ -312,8 +333,8 @@
 % %</driver>
 % \end{sourceverb}
 
-% Various objects inside the |dtx| file may be described with \cs{DescribeBoolean},
-% \cs{DescribeLength}, \cs{DescribeCounter}, and related macros,
+% Various objects inside the |dtx| file may be described with new
+% macros such as \cs{DescribeBoolean}, \cs{DescribeLength}, \cs{DescribeCounter},
 % similar to the already-familiar \cs{DescribeMacro} and \cs{DescribeEnv}.
 
 % Optional ``classes'' may be assigned to the objects being described, including the new versions
@@ -419,7 +440,7 @@
 % See \cref{ex:arguments} on \cpageref{ex:arguments}.
 
 
-% \subsection{Booleans, lengths, counters, keys}
+% \subsection{Booleans, lengths, counters, hooks, keys}
 %
 % See \cref{ex:common} on \cpageref{ex:common}.
 %
@@ -438,6 +459,16 @@
 % Describes a counter.  Given a `Ctr' tag in the margin and index.
 %
 %
+% \DescribeMacro{\DescribeHook} \oarg{class} \marg{name}
+% 
+% Describes a hook.  Given a `Hook' tag in the margin and index.
+% The |class| may be used to categorize hooks by package.
+% Example:
+% \begin{sourceverb}
+% \DescribeHook[LaTeX]{para/begin}
+% \end{sourceverb}
+%
+%
 % \DescribeMacro{\DescribeKey} \oarg{class} \marg{name}
 % 
 % Describes a key.  Given a `Key' tag in the margin and index.
@@ -523,6 +554,8 @@
 %
 % \DescribeMacro{\ItemDescribeCounter} \oarg{class} \marg{name} A description.
 %
+% \DescribeMacro{\ItemDescribeHook} \oarg{class} \marg{name} A description.
+%
 % \DescribeMacro{\ItemDescribeKey} \oarg{class} \marg{name} A description.
 %
 % \DescribeMacro{\ItemDescribePackage} \oarg{class} \marg{package\_name} With underscores.
@@ -558,6 +591,29 @@
 % \DescribeDefault{green!50!black}
 
 
+% \subsection{Nesting}
+%
+% \DescribeMacro{\shownesting}
+%       * \oarg{fraction of \cs{linewidth}} \marg{container name} \marg{contents}
+%
+% It may be useful to show which objects contain which other objects.
+% \cs{shownesting} shows a box enclosing a name for the container,
+% and the container's contents.
+% \cs{shownesting} be nested, showing boxes inside other boxes,
+% which displays how each environment and macro is fit together inside each other.
+%
+% The optional argument is the fraction of \cs{linewidth} to use for the box,
+% from |[0]| to |[1]|.
+% The default is |[1]|.
+% Each \cs{shownesting} starts its own paragraph, unless the star |*| is used,
+% in which case the \cs{shownesting*} appears inline with previous text.
+% To place two \cs{shownesting} boxes side-by-side, use optional arguments to
+% specify less than full \cs{linewidth} for each box, and use \cs{shownesting*} for
+% the second box to place it inline.
+%
+% See \cref{ex:nesting} on \cpageref{ex:nesting} for an example.
+
+
 % \subsection{\cs{margintag}, \cs{watchout}}
 %
 %
@@ -616,13 +672,15 @@
 %
 % \subsection{\env{noindmacro} and \env{noindenvironment} environments}
 %
+% These are like \env{macro} and \env{environment}, but not indexed.
+% \watchout[\filenm{.dtx} only]
 % These only make sense if using the \pkg{ltxdoc} class and \pkg{doc} package
-% \watchout[\filenm{.dtx} only]
 % to document a \filenm{.dtx} file, where comments are used by \prog{docstrip}
 % to disable these environments in the resulting \filenm{.sty} file.
-% When using the regular document classes, the \env{noindmacro} and
-% \env{noindenvironment} environments would localize any definitions,
-% and \cs{DescribeMacro} and \cs{DescribeEnv} should be used instead.
+% When using the regular document classes, \env{noindmacro} and
+% \env{noindenvironment} environments should not be used, as they
+% would localize any definitions.
+% \cs{DescribeMacro} and \cs{DescribeEnv} should be used instead.
 %
 % \DescribeEnv{noindmacro} \marg{\cs{name}}
 % To document macros which should not be included in the index.
@@ -704,23 +762,33 @@
 %
 % Macros to format references to various kinds of objects.
 %
-% This \pkg{dtxdescribe} package documentation uses \pkg{erewhon}, \pkg{roboto},
-% and \pkg{inconsolata}, along with \pkg{metalogo},
+% This \pkg{dtxdescribe} package documentation uses \pkg{erewhon}, \pkg{cabin},
+% and \pkg{inconsolata}, along with \pkg{metalogox},
 % to demonstrate the following font effects.
 %
 %
 % \subsubsection{\LaTeX\ objects}
 %
-% \DescribeMacro{\pkg} \pkg{packagename}, also for a \pkg{classname}
+% \DescribeMacro{\pkg} \marg{packagename} \quad Prints as \pkg{packagename}.
+%       Also for a \pkg{classname}.
 
-% \DescribeMacro{\env} \env{environment}
+% \DescribeMacro{\cs} \marg{csname}  \quad Prints as \cs{csname}.
 
-% \DescribeMacro{\ctr} \ctr{counter}
+% \DescribeMacro{\env} \marg{environment}   \quad Prints as \env{environment}.
 
-% \DescribeMacro{\bool} \bool{boolean}
+% \DescribeMacro{\marg} \marg{argument} \quad Prints \marg{arg}.  Mandatory argument.
 
-% \DescribeMacro{\optn} \optn{option}: to a macro, package, class
+% \DescribeMacro{\oarg} \marg{argument} \quad Prints \oarg{arg}.  Optional argument.
 
+% \DescribeMacro{\parg} \marg{argument} \quad Prints \parg{arg}.  Picture-mode argument.
+
+% \DescribeMacro{\ctr} \marg{counter} \quad Prints as \ctr{counter}.
+
+% \DescribeMacro{\bool} \marg{boolean}  \quad Prints as \bool{boolean}. 
+
+% \DescribeMacro{\optn} \marg{option}   \quad Prints as \optn{option},
+%       for example to a macro, package, class.
+
 % \DescribeMacro{\TOC} \TOC: Table of contents.
 
 % \DescribeMacro{\LOF} \LOF: List of figures.
@@ -730,17 +798,17 @@
 
 % \subsubsection{Programs and commands}
 
-% \DescribeMacro{\progcode} \progcode{inline program code}:
+% \DescribeMacro{\progcode} Prints as \progcode{inline program code}:
 % Escape underscores and other special characters such as \{, \%, \$.
 
-% \DescribeMacro{\prog} \prog{grep}, \prog{make}: A program name.  Underscores allowed.
+% \DescribeMacro{\prog} Prints as \prog{grep}, \prog{make}: A program name.  Underscores allowed.
 
-% \DescribeMacro{\filenm} \filenm{file_name}: Underscores allowed.
+% \DescribeMacro{\filenm} Prints as \filenm{file_name}: Underscores allowed.
 
-% \DescribeMacro{\UI} \UI{General user-interface text.} What the user sees on the display.
+% \DescribeMacro{\UI} Prints as \UI{General user-interface text.} What the user sees on the display.
 % Also see the \env{UIdisplay} environment.
 %
-% \DescribeMacro{\cmds} \cmds{commands to be entered}: What the user enters.
+% \DescribeMacro{\cmds} Prints as \cmds{Commands to be entered}: What the user enters.
 % Escape underscores and other special characters such as \{, \%, \$.
 % Also see the \cs{userentry} macro.
 %
@@ -770,10 +838,18 @@
 
 % \DescribeMacro{\URL} \URL: Uniform Resource Locator
 
-% \DescribeMacro{\element} \element{element}: \HTML \Slash \CSS\ element
+% \DescribeMacro{\element} \marg{element name}  \quad Prints as \element{element},
+%       an \HTML \Slash \CSS\ element
 
-% \DescribeMacro{\attribute} \attribute{attribute}: \HTML \Slash \CSS\ attribute
+% \DescribeMacro{\attribute} \marg{attribute name} \quad Prints as \attribute{attribute},
+%       an \HTML \Slash \CSS\ attribute.
+%       pdf\TeX\ and \XeTeX\ only.
+%       \textcolor{\watchoutcolor}{Not for \LuaTeX.}
 
+% \DescribeMacro{\attrib} \marg{attribute name} \quad Prints as \attribute{attribute},
+%       an \HTML \Slash \CSS\ attribute.
+%       pdf\TeX, \XeTeX, or \LuaTeX.
+
 % \DescribeMacro{\HTML} \HTML: Hypertext Markup Language
 
 % \DescribeMacro{\HTMLfive} \HTMLfive: Old-style figure if font supports
@@ -789,18 +865,20 @@
 %
 % \DescribeMacro{\tikz} \tikz: Package logo
 
-% \DescribeMacro{\MathML} \MathML: Mathematical Markup Language
-
 % \DescribeMacro{\CTAN} \CTAN: Comprehensive \TeX\ Archive Network
 
 % \DescribeMacro{\TDS} \TDS: \TeX\ Directory Structure
 %
+% \DescribeMacro{\MathML} \MathML: Mathematical Markup Language
 %
+% \DescribeMacro{\MathJax} \MathJax: Math on the web.
+%
+%
 % \subsubsection{Acronyms, brand names, trademarks}
 %
-% \DescribeMacro{\brand} \brand{Brandname}, \brand{Company Name}
+% \DescribeMacro{\brand} \marg{name} \quad \brand{Brandname}, \brand{Company Name}
 
-% \DescribeMacro{\acro} \acro{acro}: Acronym
+% \DescribeMacro{\acro} \marg{acronym} \quad \acro{acro}: Acronym
 
 % \DescribeMacro{\supregistered} Superscript trademark symbol\supregistered
 %
@@ -809,8 +887,18 @@
 %
 % \subsection{Logos}
 %
-% Several additional logos are provided:
+% Several additional logos are provided.
 %
+% Also see the \pkg{metalogo} and \pkg{metalogox} packages.
+%
+% \DescribeMacro{\dviTeX}  \dviTeX
+%
+% \DescribeMacro{\dviLaTeX}  \dviLaTeX
+%
+% \DescribeMacro{\pdfTeX}  \pdfTeX
+%
+% \DescribeMacro{\pdfLaTeX}  \pdfLaTeX
+%
 % \DescribeMacro{\LuaTeX} \LuaTeX
 %
 % \DescribeMacro{\LuaLaTeX} \LuaLaTeX
@@ -1072,7 +1160,32 @@
 % Uses a \env{description} environment to describe objects.
 
 
+% \clearpage
+%
+% \begin{dtxexample}{Nesting\label{ex:nesting}}
+% \shownesting{\env{environmentA}}{
+%       \shownesting{\cs{macroB}}{
+%           \shownesting{\env{environmentC}}{
+%               The contents.
+%           }
+%       }
+% }
+%
+% \shownesting{\env{sidebyside}}{
+%       \shownesting[.35]{minipage}{
+%           Left contents.
+%       }
+%       \hfill \cs{hfill} \hfill
+%       \shownesting*[.35]{minipage}{
+%           Right contents.
+%       }
+% }
+% \end{dtxexample}
+%
+% Note the use of the optional arguments to select less than full \cs{linewidth},
+% and the starred form for the second box to place it inline with the \cs{hfill} text.
 
+
 % \clearpage
 %
 %
@@ -1192,7 +1305,7 @@
 % It may be useful to use \cs{DeclareBoolean} and friends both at the code location
 % and also in the User's Manual section.
 %
-% \item[Extra spaces:] When placing multiple \cs{Describe}, \cs{index}, \cs{margintag}, and
+% \item[Extra spaces:] When placing multiple uses of \cs{Describe}, \cs{index}, \cs{margintag}, and
 % \cs{watchout} macros
 % together, care must be taken to avoid extra space in the printed text where
 % these macros occur.
@@ -1270,12 +1383,12 @@
 \RequirePackage{xparse}
 %    \end{macrocode}
 
-% \DescribePackage{xifthen} Used for the examples.
+% \changes{v1.03}{2021/09/02}{No longer requires \pkg{xifthen}.}
+
+% \DescribePackage{calc} Used for \cs{shownesting}.
 %    \begin{macrocode}
-\RequirePackage{xifthen}
+\RequirePackage{calc}
 %    \end{macrocode}
-%
-%
 
 
 % \DescribePackage{xcolor} Used for the examples.
@@ -1345,7 +1458,6 @@
             \def\filenm#1{\detokenize{#1}}%
             \def\brand#1{#1}%
             \def\acro#1{#1}%
-            \def\HTML{HTML}%
             \def\ODT{ODT}%
             \def\SVG{SVG}%
             \def\PNG{PNG}%
@@ -1358,6 +1470,7 @@
             \def\URL{URL}%
             \def\element#1{#1}%
             \def\attribute#1{#1}%
+            \def\attrib#1{#1}%
             \def\HTML{HTML}%
             \def\HTMLfive{HTML5}%
             \def\CSS{CSS}%
@@ -1580,18 +1693,23 @@
 % The |class| is used to sub-categories keys into their key/value groups.
 %
 % \changes{v1.01}{2019/01/20}{Put margin tag class in brackets.}
+% \changes{v1.03}{2022/01/08}{Reduce hbox warnings.}
 %    \begin{macrocode}
 \newcommand*{\DTXD at margintag}[3]{%
-\@ifundefined{@captype}{% not float?
-\leavevmode%
-\marginpar{%
-\DTXD at printtype{%
-#3% margintag
-\ifblank{#1}{}{ [#1]}% class
-}% Desc at Type
-\texttt{#2}% name
-}% marginpar
-}{}% not float?
+    \@ifundefined{@captype}{% not float?
+        \leavevmode%
+        \marginpar{%
+            {%
+                \hbadness=10000%
+                \hfuzz=5em%
+                \DTXD at printtype{%
+                    #3% margintag
+                    \ifblank{#1}{}{ [#1]}% class
+                }%
+                \texttt{#2}% name
+            }%
+        }% marginpar
+    }{}% not float?
 }
 %    \end{macrocode}
 % \end{macro}
@@ -1731,15 +1849,20 @@
 \@bsphack%
 %    \end{macrocode}
 % Create a margin tag with the name of the macro:
+% \changes{v1.03}{2022/01/08}{Reduce hbox warnings.}
 %    \begin{macrocode}
 \@ifundefined{@captype}{% not float?
 \leavevmode%
 \marginpar{%
-\DTXD at printtype{%
-#3% margin tag
-\ifblank{#1}{}{ [#1]}% class
-}% Desc at Type
-\cmd{#2}% name
+    {%
+        \hbadness=10000%
+        \hfuzz=5em%
+        \DTXD at printtype{%
+            #3% margin tag
+            \ifblank{#1}{}{ [#1]}% class
+        }%
+        \cmd{#2}% name
+    }%
 }% marginpar
 }{}% not float?
 %    \end{macrocode}
@@ -1786,6 +1909,7 @@
 % \changes{v1.00}{2019/01/09}{Sans tag font.}
 % \changes{v1.01}{2019/01/20}{Put margin tag class in brackets.}
 % \changes{v1.02}{2019/07/14}{Fix if not \pkg{ltxdoc} class.}
+% \changes{v1.03}{2022/01/08}{Reduce hbox warnings.}
 %    \begin{macrocode}
 \providecommand*{\DescribeMacro}{}
 \renewcommand*{\DescribeMacro}[2][]{%
@@ -1796,12 +1920,17 @@
 \@ifundefined{@captype}{% not float?
 \leavevmode%
 \marginpar{%
-\raggedleft%
-\ifblank{#1}{}{{\scriptsize\textsf{[#1]}} }% class
-\cmd{#2}% name
+    {%
+        \hbadness=10000%
+        \hfuzz=5em%
+        \raggedleft%
+        \ifblank{#1}{}{{\scriptsize\textsf{[#1]}} }% class
+        \cmd{#2}% name
+    }%
 }% marginpar
 }{}% not float?
 %    \end{macrocode}
+%
 % Write the index sorted by the name without the backslash,
 % followed by the actual name with the backslash.
 % Append the class if given.
@@ -1810,9 +1939,10 @@
 %    \begin{macrocode}
 \begingroup%
 \DTXD at origwrindex{%
-\DTXD at macroname{#2}\actualchar\DTXD at verbatimcmd{#2}% name
-\ifblank{#1}{}{\levelchar[#1]}% class
-\encapchar usage}%
+    \DTXD at macroname{#2}\actualchar\DTXD at verbatimcmd{#2}% name
+    \ifblank{#1}{}{\levelchar[#1]}% class
+    \encapchar usage%
+}%
 %    \end{macrocode}
 % Only if a class was given:
 %    \begin{macrocode}
@@ -1823,11 +1953,11 @@
 %
 % Write class=(class):>name=csname\verb+|usage+
 %    \begin{macrocode}
-\begingroup%
-\DTXD at origwrindex{%
-#1\actualchar[#1]:\levelchar%
-\DTXD at macroname{#2}\actualchar\DTXD at verbatimcmd{#2}%
-\encapchar usage}%
+    \begingroup%
+    \DTXD at origwrindex{%
+    #1\actualchar[#1]:\levelchar%
+    \DTXD at macroname{#2}\actualchar\DTXD at verbatimcmd{#2}%
+    \encapchar usage}%
 }% class given
 \@esphack%
 \ignorespaces%
@@ -2054,6 +2184,15 @@
 %    \end{macrocode}
 % \end{macro}
 %
+% \begin{macro}{\DescribeHook} \oarg{class} \marg{name}
+% \changes{v1.03}{2021/12/18}{Added.}
+%    \begin{macrocode}
+\newcommand*{\DescribeHook}[2][]
+    {\DTXD at margintagindex{#1}{#2}{Hook}{hook}{usage}}
+%    \end{macrocode}
+% \end{macro}
+%
+%
 % \begin{macro}{\DescribeKey} \oarg{class} \marg{name}
 %
 % The |class| may be used to categorize keys by their kev/value group.
@@ -2072,36 +2211,40 @@
 % \changes{v1.01}{2019/01/20}{Put margin tag class in brackets.}
 % \changes{v1.02}{2019/07/14}{Added \cs{ignorespaces}.}
 % \changes{v1.02}{2019/07/16}{\cs{raggedleft} margin par.}
+% \changes{v1.03}{2022/01/08}{Reduce hbox warnings.}
 %    \begin{macrocode}
 \newcommand*{\DescribeObject}[2][]{%
 \@ifundefined{@captype}{% not float?
-\@bsphack%
-\leavevmode%
-\marginpar{%
-    \raggedleft%
-    \ifblank{#1}{}{\raggedleft{\scriptsize[#1]} }
-    \texttt{#2}%
-}%
+    \@bsphack%
+    \leavevmode%
+    \marginpar{%
+        \hbadness=10000%
+        \hfuzz=5em%
+        \raggedleft%
+        \ifblank{#1}{}{\raggedleft{\scriptsize[#1]} }
+        \texttt{#2}%
+    }%
 }{}% not float?
 \ifblank{#1}%
-{\begingroup%
-\DTXD at origwrindex{%
-#2\actualchar{\protect\ttfamily#2}%
-\encapchar usage%
+{%
+    \begingroup%
+    \DTXD at origwrindex{%
+        #2\actualchar{\protect\ttfamily#2}%
+        \encapchar usage%
+    }%
 }%
-}%
 {%
-\begingroup%
-\DTXD at origwrindex{%
-#2\actualchar{\protect\ttfamily#2} [#1]%
-\encapchar usage%
+    \begingroup%
+    \DTXD at origwrindex{%
+        #2\actualchar{\protect\ttfamily#2} [#1]%
+        \encapchar usage%
+    }%
+    \begingroup%
+    \DTXD at origwrindex{%
+        #1\actualchar[#1]:\levelchar#2\actualchar{\protect\ttfamily#2}%
+        \encapchar usage%
+    }%
 }%
-\begingroup%
-\DTXD at origwrindex{%
-#1\actualchar[#1]:\levelchar#2\actualchar{\protect\ttfamily#2}%
-\encapchar usage%
-}%
-}%
 \@esphack%
 \ignorespaces%
 }
@@ -2115,27 +2258,30 @@
 % \changes{v1.01}{2019/01/20}{Put margin tag class in brackets.}
 % \changes{v1.02}{2019/07/14}{Added \cs{ignorespaces}.}
 % \changes{v1.02}{2019/07/16}{\cs{raggedleft} margin par.}
+% \changes{v1.03}{2022/01/08}{Reduce hbox warnings.}
 %    \begin{macrocode}
 \newcommand*{\DescribeOther}[2][]{%
 \@ifundefined{@captype}{% not float?
-\@bsphack%
-\leavevmode%
-\marginpar{%
-    \raggedleft%
-    \ifblank{#1}{}{\raggedleft{\scriptsize[#1]} }%
-    #2%
-}%
+    \@bsphack%
+    \leavevmode%
+    \marginpar{%
+        \hbadness=10000%
+        \hfuzz=5em%
+        \raggedleft%
+        \ifblank{#1}{}{\raggedleft{\scriptsize[#1]} }%
+        #2%
+    }%
 }{}% not float?
 \ifblank{#1}%
 {%
-\begingroup%
-\DTXD at origwrindex{#2\encapchar usage}%
+    \begingroup%
+    \DTXD at origwrindex{#2\encapchar usage}%
 }%
 {%
-\begingroup%
-\DTXD at origwrindex{#2 [#1]\encapchar usage}%
-\begingroup%
-\DTXD at origwrindex{#1\actualchar[#1]:\levelchar#2\encapchar usage}%
+    \begingroup%
+    \DTXD at origwrindex{#2 [#1]\encapchar usage}%
+    \begingroup%
+    \DTXD at origwrindex{#1\actualchar[#1]:\levelchar#2\encapchar usage}%
 }%
 \@esphack%
 \ignorespaces%
@@ -2184,9 +2330,9 @@
 % \changes{v1.00}{2019/01/09}{Added.}
 %    \begin{macrocode}
 \newcommand{\ItemDescribeMacro}[2][]{%
-\item[\cmd{#2}:]%
-\setlength{\parskip}{1.5ex}%
-\DescribeMacro[#1]{#2}%
+    \item[\cmd{#2}:]%
+    \setlength{\parskip}{1.5ex}%
+    \DescribeMacro[#1]{#2}%
 }
 %    \end{macrocode}
 % \end{macro}
@@ -2195,9 +2341,9 @@
 % \changes{v1.00}{2019/01/09}{Added.}
 %    \begin{macrocode}
 \newcommand{\ItemDescribeEnv}[2][]{%
-\item[\env{#2}:]%
-\setlength{\parskip}{1.5ex}%
-\DescribeEnv[#1]{#2}%
+    \item[\env{#2}:]%
+    \setlength{\parskip}{1.5ex}%
+    \DescribeEnv[#1]{#2}%
 }
 %    \end{macrocode}
 % \end{macro}
@@ -2206,9 +2352,9 @@
 % \changes{v1.00}{2019/01/09}{Added.}
 %    \begin{macrocode}
 \newcommand{\ItemDescribeArgument}[2][]{%
-\item[\texttt{#2}:]%
-\setlength{\parskip}{1.5ex}%
-\DescribeArgument[#1]{#2}%
+    \item[\texttt{#2}:]%
+    \setlength{\parskip}{1.5ex}%
+    \DescribeArgument[#1]{#2}%
 }
 %    \end{macrocode}
 % \end{macro}
@@ -2217,9 +2363,9 @@
 % \changes{v1.00}{2019/01/09}{Added.}
 %    \begin{macrocode}
 \newcommand{\ItemDescribeBoolean}[2][]{%
-\item[\texttt{#2}:]%
-\setlength{\parskip}{1.5ex}%
-\DescribeBoolean[#1]{#2}%
+    \item[\texttt{#2}:]%
+    \setlength{\parskip}{1.5ex}%
+    \DescribeBoolean[#1]{#2}%
 }
 %    \end{macrocode}
 % \end{macro}
@@ -2228,9 +2374,9 @@
 % \changes{v1.00}{2019/01/09}{Added.}
 %    \begin{macrocode}
 \newcommand{\ItemDescribeLength}[2][]{%
-\item[\cmd{#2}:]%
-\setlength{\parskip}{1.5ex}%
-\DescribeLength[#1]{#2}%
+    \item[\cmd{#2}:]%
+    \setlength{\parskip}{1.5ex}%
+    \DescribeLength[#1]{#2}%
 }
 %    \end{macrocode}
 % \end{macro}
@@ -2239,20 +2385,31 @@
 % \changes{v1.00}{2019/01/09}{Added.}
 %    \begin{macrocode}
 \newcommand{\ItemDescribeCounter}[2][]{%
-\item[\texttt{#2}:]%
-\setlength{\parskip}{1.5ex}%
-\DescribeCounter[#1]{#2}%
+    \item[\texttt{#2}:]%
+    \setlength{\parskip}{1.5ex}%
+    \DescribeCounter[#1]{#2}%
 }
 %    \end{macrocode}
 % \end{macro}
 
+% \begin{macro}{\ItemDescribeHook} \oarg{class} \marg{name}
+% \changes{v1.03}{2021/12/18}{Added.}
+%    \begin{macrocode}
+\newcommand{\ItemDescribeHook}[2][]{%
+    \item[\texttt{#2}:]%
+    \setlength{\parskip}{1.5ex}%
+    \DescribeHook[#1]{#2}%
+}
+%    \end{macrocode}
+% \end{macro}
+
 % \begin{macro}{\ItemDescribeKey} \oarg{class} \marg{name}
 % \changes{v1.00}{2019/01/09}{Added.}
 %    \begin{macrocode}
 \newcommand{\ItemDescribeKey}[2][]{%
-\item[\texttt{#2}:]%
-\setlength{\parskip}{1.5ex}%
-\DescribeKey[#1]{#2}%
+    \item[\texttt{#2}:]%
+    \setlength{\parskip}{1.5ex}%
+    \DescribeKey[#1]{#2}%
 }
 %    \end{macrocode}
 % \end{macro}
@@ -2261,14 +2418,14 @@
 % \changes{v1.00}{2019/01/09}{Added.}
 %    \begin{macrocode}
 \newcommand{\DTXD at ItemDescribePackage}[2][]{%
-\item[\texttt{#2}:]%
-\setlength{\parskip}{1.5ex}%
-\DescribePackage[#1]{#2}%
-\endgroup
+    \item[\texttt{#2}:]%
+    \setlength{\parskip}{1.5ex}%
+    \DescribePackage[#1]{#2}%
+    \endgroup%
 }
 
 \newcommand{\ItemDescribePackage}{%
-\begingroup\catcode`\_=12 \DTXD at ItemDescribePackage%
+    \begingroup\catcode`\_=12 \DTXD at ItemDescribePackage%
 }
 %    \end{macrocode}
 % \end{macro}
@@ -2277,14 +2434,14 @@
 % \changes{v1.00}{2019/01/09}{Added.}
 %    \begin{macrocode}
 \newcommand{\DTXD at ItemDescribeClass}[2][]{%
-\item[\texttt{#2}:]%
-\setlength{\parskip}{1.5ex}%
-\DescribeClass[#1]{#2}%
-\endgroup
+    \item[\texttt{#2}:]%
+    \setlength{\parskip}{1.5ex}%
+    \DescribeClass[#1]{#2}%
+    \endgroup%
 }
 
 \newcommand{\ItemDescribeClass}{%
-\begingroup\catcode`\_=12 \DTXD at ItemDescribeClass%
+    \begingroup\catcode`\_=12 \DTXD at ItemDescribeClass%
 }
 %    \end{macrocode}
 % \end{macro}
@@ -2293,9 +2450,9 @@
 % \changes{v1.00}{2019/01/09}{Added.}
 %    \begin{macrocode}
 \newcommand{\ItemDescribeOption}[2][]{%
-\item[\texttt{#2}:]%
-\setlength{\parskip}{1.5ex}%
-\DescribeOption[#1]{#2}%
+    \item[\texttt{#2}:]%
+    \setlength{\parskip}{1.5ex}%
+    \DescribeOption[#1]{#2}%
 }
 %    \end{macrocode}
 % \end{macro}
@@ -2305,14 +2462,14 @@
 % \changes{v1.00}{2019/01/09}{Added.}
 %    \begin{macrocode}
 \newcommand{\DTXD at ItemDescribeFile}[2][]{%
-\item[\texttt{#2}:]%
-\setlength{\parskip}{1.5ex}%
-\DescribeFile[#1]{#2}%
-\endgroup
+    \item[\texttt{#2}:]%
+    \setlength{\parskip}{1.5ex}%
+    \DescribeFile[#1]{#2}%
+    \endgroup%
 }
 
 \newcommand{\ItemDescribeFile}{%
-\begingroup\catcode`\_=12 \DTXD at ItemDescribeFile%
+    \begingroup\catcode`\_=12 \DTXD at ItemDescribeFile%
 }
 %    \end{macrocode}
 % \end{macro}
@@ -2321,14 +2478,14 @@
 % \changes{v1.00}{2019/01/09}{Added.}
 %    \begin{macrocode}
 \newcommand{\DTXD at ItemDescribeProgram}[2][]{%
-\item[\texttt{#2}:]%
-\setlength{\parskip}{1.5ex}%
-\DescribeProgram[#1]{#2}%
-\endgroup
+    \item[\texttt{#2}:]%
+    \setlength{\parskip}{1.5ex}%
+    \DescribeProgram[#1]{#2}%
+    \endgroup%
 }
 
 \newcommand{\ItemDescribeProgram}{%
-\begingroup\catcode`\_=12 \DTXD at ItemDescribeProgram%
+    \begingroup\catcode`\_=12 \DTXD at ItemDescribeProgram%
 }
 %    \end{macrocode}
 % \end{macro}
@@ -2337,14 +2494,14 @@
 % \changes{v1.00}{2019/01/09}{Added.}
 %    \begin{macrocode}
 \newcommand{\DTXD at ItemDescribeCommand}[2][]{%
-\item[\texttt{#2}:]%
-\setlength{\parskip}{1.5ex}%
-\DescribeCommand[#1]{#2}%
-\endgroup
+    \item[\texttt{#2}:]%
+    \setlength{\parskip}{1.5ex}%
+    \DescribeCommand[#1]{#2}%
+    \endgroup%
 }
 
 \newcommand{\ItemDescribeCommand}{%
-\begingroup\catcode`\_=12 \DTXD at ItemDescribeCommand%
+    \begingroup\catcode`\_=12 \DTXD at ItemDescribeCommand%
 }
 %    \end{macrocode}
 % \end{macro}
@@ -2353,9 +2510,9 @@
 % \changes{v1.00}{2019/01/09}{Added.}
 %    \begin{macrocode}
 \newcommand{\ItemDescribeObject}[2][]{%
-\item[\texttt{#2}:]%
-\setlength{\parskip}{1.5ex}%
-\DescribeObject[#1]{#2}%
+    \item[\texttt{#2}:]%
+    \setlength{\parskip}{1.5ex}%
+    \DescribeObject[#1]{#2}%
 }
 %    \end{macrocode}
 % \end{macro}
@@ -2364,9 +2521,9 @@
 % \changes{v1.00}{2019/01/09}{Added.}
 %    \begin{macrocode}
 \newcommand{\ItemDescribeOther}[2][]{%
-\item[\texttt{#2}:]%
-\setlength{\parskip}{1.5ex}%
-\DescribeOther[#1]{#2}%
+    \item[\texttt{#2}:]%
+    \setlength{\parskip}{1.5ex}%
+    \DescribeOther[#1]{#2}%
 }
 %    \end{macrocode}
 % \end{macro}
@@ -2434,6 +2591,35 @@
 % \end{macro}
 
 
+% \subsection{Nesting}
+%
+% Shows a box enclosing a label for the container, and the container's contents.
+% May be nested.
+%
+% \begin{macro}{\shownesting}
+%                   \oarg{fraction of \cs{linewidth}} \marg{container} \marg{contents}
+% \changes{v1.03}{2021/09/01}{Added.}
+%    \begin{macrocode}
+\NewDocumentCommand{\shownesting}{s O{1} m m}{
+    \IfBooleanF{#1}{
+        \par\smallskip
+    }
+    \fbox{
+        \begin{minipage}{#2\linewidth-2em}
+            \hbadness=10000\relax%
+            #3\par\smallskip
+            \hspace{1em}
+            \begin{minipage}{\linewidth-1.5em}
+                #4
+            \end{minipage}
+        \end{minipage}
+    }
+}
+%    \end{macrocode}
+% \end{macro}
+
+
+
 % \subsection{The \env{dtxexample} environment}
 %
 % Also see \cref{ex:dtxexample} on page \cpageref{ex:dtxexample}.
@@ -2760,31 +2946,62 @@
 %
 % \subsubsection{\LaTeX\ objects}
 %
-% \begin{macro}{\pkg} or class
+% \begin{macro}{\pkg} \marg{name} \quad Also useable for class names.
 %    \begin{macrocode}
 \providerobustcmd*{\pkg}[1]{\mbox{\textsf{#1}}}
 %    \end{macrocode}
 % \end{macro}
 
-% \begin{macro}{\env}
+% \begin{macro}{\cs} \marg{csname}  \quad From \pkg{ltxdoc}.
+% \changes{v1.03}{2021/09/02}{Provided.}
 %    \begin{macrocode}
+\providerobustcmd*{\cs}[1]{\texttt{\char`\\#1}}
+%    \end{macrocode}
+% \end{macro}
+
+% \begin{macro}{\env} \marg{name}
+%    \begin{macrocode}
 \providerobustcmd*{\env}[1]{\mbox{\texttt{#1}}}
 %    \end{macrocode}
 % \end{macro}
 
-% \begin{macro}{\ctr}
+% \begin{macro}{\marg} \marg{argument}  \quad From \pkg{ltxdoc}.
+% \changes{v1.03}{2021/09/02}{Provided.}
 %    \begin{macrocode}
+\providecommand\marg[1]{%
+  {\ttfamily\char`\{}\meta{#1}{\ttfamily\char`\}}}
+%    \end{macrocode}
+% \end{macro}
+
+% \begin{macro}{\oarg} \oarg{argument}  \quad From \pkg{ltxdoc}.
+% \changes{v1.03}{2021/09/02}{Provided.}
+%    \begin{macrocode}
+\providecommand\oarg[1]{%
+  {\ttfamily[}\meta{#1}{\ttfamily]}}
+%    \end{macrocode}
+% \end{macro}
+
+% \begin{macro}{\parg} \parg{argument}  \quad From \pkg{ltxdoc}.
+% \changes{v1.03}{2021/09/02}{Provided.}
+%    \begin{macrocode}
+\providecommand\parg[1]{%
+  {\ttfamily(}\meta{#1}{\ttfamily)}}
+%    \end{macrocode}
+% \end{macro}
+
+% \begin{macro}{\ctr} \marg{name}
+%    \begin{macrocode}
 \providerobustcmd*{\ctr}[1]{\mbox{\texttt{#1}}}
 %    \end{macrocode}
 % \end{macro}
 
-% \begin{macro}{\bool}
+% \begin{macro}{\bool} \marg{name}
 %    \begin{macrocode}
 \providerobustcmd*{\bool}[1]{\mbox{\texttt{#1}}}
 %    \end{macrocode}
 % \end{macro}
 
-% \begin{macro}{\optn}
+% \begin{macro}{\optn} \marg{name}
 %    \begin{macrocode}
 \providerobustcmd*{\optn}[1]{\mbox{\texttt{#1}}}
 %    \end{macrocode}
@@ -2811,19 +3028,21 @@
 
 % \subsubsection{Programs and commands}
 
-% \begin{macro}{\cmds}
+% \begin{macro}{\cmds} \marg{commands to print}
+%   \quad No processing is provided for special characters.
 %    \begin{macrocode}
 \providerobustcmd*{\cmds}[1]{\mbox{\textbf{\texttt{#1}}}}
 %    \end{macrocode}
 % \end{macro}
 
-% \begin{macro}{\progcode}
+% \begin{macro}{\progcode} \marg{code to print}
+%   \quad No processing is provided for special characters.
 %    \begin{macrocode}
 \providerobustcmd*{\progcode}[1]{\mbox{\texttt{#1}}}
 %    \end{macrocode}
 % \end{macro}
 
-% \begin{macro}{\prog}
+% \begin{macro}{\prog} \marg{program name}  \quad Underscores are allowed.
 %    \begin{macrocode}
 \newcommand*{\DTXD at prog}[1]{%
     \mbox{\textsf{\textsl{\detokenize{#1}}}}%
@@ -2838,7 +3057,7 @@
 %    \end{macrocode}
 % \end{macro}
 
-% \begin{macro}{\filenm}
+% \begin{macro}{\filenm} \marg{file name}  \quad Underscores are allowed.
 %    \begin{macrocode}
 \newcommand*{\DTXD at filenm}[1]{%
     \mbox{\texttt{\detokenize{#1}}}%
@@ -2925,17 +3144,27 @@
 %    \end{macrocode}
 % \end{macro}
 
-% \begin{macro}{\element}
+% \begin{macro}{\element} \marg{name}
 %    \begin{macrocode}
 \providerobustcmd*{\element}[1]{\texttt{<#1>}}
 %    \end{macrocode}
 % \end{macro}
 
-% \begin{macro}{\attribute}
+% \begin{macro}{\attribute} \marg{name}
+% \begin{macro}{\attrib} \marg{name}
+%
+% Each of these is ``provided'', and any prior meaning will
+% be unchanged.
+% In particular, \LuaTeX\ uses \cs{attribute}, so its meaning
+% is unchanged if using \LuaTeX.
+% \changes{v1.03}{2021/09/01}{For \LuaTeX.}
 %    \begin{macrocode}
+\providerobustcmd*{\attrib}[1]{\mbox{\texttt{#1}}}
+
 \providerobustcmd*{\attribute}[1]{\mbox{\texttt{#1}}}
 %    \end{macrocode}
 % \end{macro}
+% \end{macro}
 
 % \begin{macro}{\HTML}
 %    \begin{macrocode}
@@ -2976,12 +3205,6 @@
 %    \end{macrocode}
 % \end{macro}
 
-% \begin{macro}{\MathML}
-%    \begin{macrocode}
-\providerobustcmd*{\MathML}{Math\acro{ML}}
-%    \end{macrocode}
-% \end{macro}
-
 % \begin{macro}{\CTAN}
 %    \begin{macrocode}
 \providerobustcmd*{\CTAN}{\acro{CTAN}}
@@ -2994,16 +3217,29 @@
 %    \end{macrocode}
 % \end{macro}
 %
+% \begin{macro}{\MathML}
+%    \begin{macrocode}
+\providerobustcmd*{\MathML}{Math\acro{ML}}
+%    \end{macrocode}
+% \end{macro}
 %
+% \begin{macro}{\MathJax}
+% \changes{v1.03}{2021/09/02}{Added.}
+%    \begin{macrocode}
+\providerobustcmd*{\MathJax}{\brand{MathJax}}
+%    \end{macrocode}
+% \end{macro}
+%
+%
 % \subsubsection{Acronyms, brand names, trademarks}
 %
-% \begin{macro}{\brand}
+% \begin{macro}{\brand} \marg{name}
 %    \begin{macrocode}
 \providerobustcmd*{\brand}[1]{\textsc{#1}}
 %    \end{macrocode}
 % \end{macro}
 
-% \begin{macro}{\acro}
+% \begin{macro}{\acro} \marg{acronym}
 %    \begin{macrocode}
 \providerobustcmd*{\acro}[1]{\textsc{\lowercase{#1}}}
 %    \end{macrocode}
@@ -3022,6 +3258,34 @@
 %
 % \changes{v1.00}{2019/01/11}{Added logos.}
 %
+% \begin{macro}{\dviTeX} \dviTeX
+% \changes{v1.03}{2021/09/02}{Added.}
+%    \begin{macrocode}
+\providerobustcmd*{\dviTeX}{\mbox{\DVI\,\TeX}}
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\dviLaTeX} \dviLaTeX
+% \changes{v1.03}{2021/09/02}{Added.}
+%    \begin{macrocode}
+\providerobustcmd*{\dviLaTeX}{\mbox{\DVI\,\LaTeX}}
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pdfTeX} \pdfTeX
+% \changes{v1.03}{2021/09/02}{Added.}
+%    \begin{macrocode}
+\providerobustcmd*{\pdfTeX}{\mbox{\PDF\,\TeX}}
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pdfLaTeX} \pdfLaTeX
+% \changes{v1.03}{2021/09/02}{Added.}
+%    \begin{macrocode}
+\providerobustcmd*{\pdfLaTeX}{\mbox{\PDF\,\LaTeX}}
+%    \end{macrocode}
+% \end{macro}
+%
 % \begin{macro}{\LuaTeX} \LuaTeX
 %    \begin{macrocode}
 \providerobustcmd*{\LuaTeX}{\mbox{Lua\TeX}}
@@ -3116,13 +3380,17 @@
 %
 % \begin{macro}{\thinbrspace} A thin space which allows a line break.
 %    \begin{macrocode}
-\newcommand{\thinbrspace}{\hspace{.16667em}\penalty\exhyphenpenalty\hspace{0pt}}
+\newcommand{\thinbrspace}{%
+    \hspace{.16667em}\penalty\exhyphenpenalty\hspace{0pt}%
+}
 %    \end{macrocode}
 % \end{macro}
 %
 % \begin{macro}{\thinthinbrspace} A thin space which allows a line break.
 %    \begin{macrocode}
-\newcommand{\thinthinbrspace}{\hspace{.08333em}\penalty\exhyphenpenalty\hspace{0pt}}
+\newcommand{\thinthinbrspace}{%
+    \hspace{.08333em}\penalty\exhyphenpenalty\hspace{0pt}%
+}
 %    \end{macrocode}
 % \end{macro}
 %

Modified: trunk/Master/texmf-dist/tex/latex/dtxdescribe/dtxdescribe.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/dtxdescribe/dtxdescribe.sty	2022-02-01 22:07:59 UTC (rev 61839)
+++ trunk/Master/texmf-dist/tex/latex/dtxdescribe/dtxdescribe.sty	2022-02-01 22:08:12 UTC (rev 61840)
@@ -18,7 +18,7 @@
 
 \NeedsTeXFormat{LaTeX2e}
 \ProvidesPackage{dtxdescribe}
-    [2019/07/16 v1.02 Describe additional object types in source files.]
+    [2022/02/01 v1.03 Describe additional object types in source files.]
 
 
 
@@ -94,6 +94,12 @@
 
 
 
+
+
+
+
+
+
 \AtBeginDocument{
     \@ifpackageloaded{makeidx}{}{
     \@ifpackageloaded{splitidx}{}{
@@ -106,8 +112,9 @@
 
 \RequirePackage{xparse}
 
-\RequirePackage{xifthen}
 
+\RequirePackage{calc}
+
 \RequirePackage{xcolor}
 \definecolor{myurlcolor}{rgb}{0,0,.7}
 \definecolor{mylinkcolor}{rgb}{.7,0,0}
@@ -149,7 +156,6 @@
             \def\filenm#1{\detokenize{#1}}%
             \def\brand#1{#1}%
             \def\acro#1{#1}%
-            \def\HTML{HTML}%
             \def\ODT{ODT}%
             \def\SVG{SVG}%
             \def\PNG{PNG}%
@@ -162,6 +168,7 @@
             \def\URL{URL}%
             \def\element#1{#1}%
             \def\attribute#1{#1}%
+            \def\attrib#1{#1}%
             \def\HTML{HTML}%
             \def\HTMLfive{HTML5}%
             \def\CSS{CSS}%
@@ -279,16 +286,20 @@
 \let\DTXD at origwrindex\@wrindex
 
 \newcommand*{\DTXD at margintag}[3]{%
-\@ifundefined{@captype}{% not float?
-\leavevmode%
-\marginpar{%
-\DTXD at printtype{%
-#3% margintag
-\ifblank{#1}{}{ [#1]}% class
-}% Desc at Type
-\texttt{#2}% name
-}% marginpar
-}{}% not float?
+    \@ifundefined{@captype}{% not float?
+        \leavevmode%
+        \marginpar{%
+            {%
+                \hbadness=10000%
+                \hfuzz=5em%
+                \DTXD at printtype{%
+                    #3% margintag
+                    \ifblank{#1}{}{ [#1]}% class
+                }%
+                \texttt{#2}% name
+            }%
+        }% marginpar
+    }{}% not float?
 }
 
 \newcommand*{\DTXD at index}[5]{%
@@ -334,11 +345,15 @@
 \@ifundefined{@captype}{% not float?
 \leavevmode%
 \marginpar{%
-\DTXD at printtype{%
-#3% margin tag
-\ifblank{#1}{}{ [#1]}% class
-}% Desc at Type
-\cmd{#2}% name
+    {%
+        \hbadness=10000%
+        \hfuzz=5em%
+        \DTXD at printtype{%
+            #3% margin tag
+            \ifblank{#1}{}{ [#1]}% class
+        }%
+        \cmd{#2}% name
+    }%
 }% marginpar
 }{}% not float?
 \begingroup%
@@ -364,24 +379,29 @@
 \@ifundefined{@captype}{% not float?
 \leavevmode%
 \marginpar{%
-\raggedleft%
-\ifblank{#1}{}{{\scriptsize\textsf{[#1]}} }% class
-\cmd{#2}% name
+    {%
+        \hbadness=10000%
+        \hfuzz=5em%
+        \raggedleft%
+        \ifblank{#1}{}{{\scriptsize\textsf{[#1]}} }% class
+        \cmd{#2}% name
+    }%
 }% marginpar
 }{}% not float?
 \begingroup%
 \DTXD at origwrindex{%
-\DTXD at macroname{#2}\actualchar\DTXD at verbatimcmd{#2}% name
-\ifblank{#1}{}{\levelchar[#1]}% class
-\encapchar usage}%
+    \DTXD at macroname{#2}\actualchar\DTXD at verbatimcmd{#2}% name
+    \ifblank{#1}{}{\levelchar[#1]}% class
+    \encapchar usage%
+}%
 \ifblank{#1}%
 {}% no class
 {% class given
-\begingroup%
-\DTXD at origwrindex{%
-#1\actualchar[#1]:\levelchar%
-\DTXD at macroname{#2}\actualchar\DTXD at verbatimcmd{#2}%
-\encapchar usage}%
+    \begingroup%
+    \DTXD at origwrindex{%
+    #1\actualchar[#1]:\levelchar%
+    \DTXD at macroname{#2}\actualchar\DTXD at verbatimcmd{#2}%
+    \encapchar usage}%
 }% class given
 \@esphack%
 \ignorespaces%
@@ -447,60 +467,67 @@
 {\DTXD at cmdmargintagindex{#1}{#2}{Len}{length}{usage}}
 \newcommand*{\DescribeCounter}[2][]
 {\DTXD at margintagindex{#1}{#2}{Ctr}{counter}{usage}}
+\newcommand*{\DescribeHook}[2][]
+    {\DTXD at margintagindex{#1}{#2}{Hook}{hook}{usage}}
 \newcommand*{\DescribeKey}[2][]
 {\DTXD at margintagindex{#1}{#2}{Key}{key}{usage}}
 \newcommand*{\DescribeObject}[2][]{%
 \@ifundefined{@captype}{% not float?
-\@bsphack%
-\leavevmode%
-\marginpar{%
-    \raggedleft%
-    \ifblank{#1}{}{\raggedleft{\scriptsize[#1]} }
-    \texttt{#2}%
-}%
+    \@bsphack%
+    \leavevmode%
+    \marginpar{%
+        \hbadness=10000%
+        \hfuzz=5em%
+        \raggedleft%
+        \ifblank{#1}{}{\raggedleft{\scriptsize[#1]} }
+        \texttt{#2}%
+    }%
 }{}% not float?
 \ifblank{#1}%
-{\begingroup%
-\DTXD at origwrindex{%
-#2\actualchar{\protect\ttfamily#2}%
-\encapchar usage%
+{%
+    \begingroup%
+    \DTXD at origwrindex{%
+        #2\actualchar{\protect\ttfamily#2}%
+        \encapchar usage%
+    }%
 }%
-}%
 {%
-\begingroup%
-\DTXD at origwrindex{%
-#2\actualchar{\protect\ttfamily#2} [#1]%
-\encapchar usage%
+    \begingroup%
+    \DTXD at origwrindex{%
+        #2\actualchar{\protect\ttfamily#2} [#1]%
+        \encapchar usage%
+    }%
+    \begingroup%
+    \DTXD at origwrindex{%
+        #1\actualchar[#1]:\levelchar#2\actualchar{\protect\ttfamily#2}%
+        \encapchar usage%
+    }%
 }%
-\begingroup%
-\DTXD at origwrindex{%
-#1\actualchar[#1]:\levelchar#2\actualchar{\protect\ttfamily#2}%
-\encapchar usage%
-}%
-}%
 \@esphack%
 \ignorespaces%
 }
 \newcommand*{\DescribeOther}[2][]{%
 \@ifundefined{@captype}{% not float?
-\@bsphack%
-\leavevmode%
-\marginpar{%
-    \raggedleft%
-    \ifblank{#1}{}{\raggedleft{\scriptsize[#1]} }%
-    #2%
-}%
+    \@bsphack%
+    \leavevmode%
+    \marginpar{%
+        \hbadness=10000%
+        \hfuzz=5em%
+        \raggedleft%
+        \ifblank{#1}{}{\raggedleft{\scriptsize[#1]} }%
+        #2%
+    }%
 }{}% not float?
 \ifblank{#1}%
 {%
-\begingroup%
-\DTXD at origwrindex{#2\encapchar usage}%
+    \begingroup%
+    \DTXD at origwrindex{#2\encapchar usage}%
 }%
 {%
-\begingroup%
-\DTXD at origwrindex{#2 [#1]\encapchar usage}%
-\begingroup%
-\DTXD at origwrindex{#1\actualchar[#1]:\levelchar#2\encapchar usage}%
+    \begingroup%
+    \DTXD at origwrindex{#2 [#1]\encapchar usage}%
+    \begingroup%
+    \DTXD at origwrindex{#1\actualchar[#1]:\levelchar#2\encapchar usage}%
 }%
 \@esphack%
 \ignorespaces%
@@ -519,118 +546,124 @@
 }
 
 \newcommand{\ItemDescribeMacro}[2][]{%
-\item[\cmd{#2}:]%
-\setlength{\parskip}{1.5ex}%
-\DescribeMacro[#1]{#2}%
+    \item[\cmd{#2}:]%
+    \setlength{\parskip}{1.5ex}%
+    \DescribeMacro[#1]{#2}%
 }
 
 \newcommand{\ItemDescribeEnv}[2][]{%
-\item[\env{#2}:]%
-\setlength{\parskip}{1.5ex}%
-\DescribeEnv[#1]{#2}%
+    \item[\env{#2}:]%
+    \setlength{\parskip}{1.5ex}%
+    \DescribeEnv[#1]{#2}%
 }
 
 \newcommand{\ItemDescribeArgument}[2][]{%
-\item[\texttt{#2}:]%
-\setlength{\parskip}{1.5ex}%
-\DescribeArgument[#1]{#2}%
+    \item[\texttt{#2}:]%
+    \setlength{\parskip}{1.5ex}%
+    \DescribeArgument[#1]{#2}%
 }
 
 \newcommand{\ItemDescribeBoolean}[2][]{%
-\item[\texttt{#2}:]%
-\setlength{\parskip}{1.5ex}%
-\DescribeBoolean[#1]{#2}%
+    \item[\texttt{#2}:]%
+    \setlength{\parskip}{1.5ex}%
+    \DescribeBoolean[#1]{#2}%
 }
 
 \newcommand{\ItemDescribeLength}[2][]{%
-\item[\cmd{#2}:]%
-\setlength{\parskip}{1.5ex}%
-\DescribeLength[#1]{#2}%
+    \item[\cmd{#2}:]%
+    \setlength{\parskip}{1.5ex}%
+    \DescribeLength[#1]{#2}%
 }
 
 \newcommand{\ItemDescribeCounter}[2][]{%
-\item[\texttt{#2}:]%
-\setlength{\parskip}{1.5ex}%
-\DescribeCounter[#1]{#2}%
+    \item[\texttt{#2}:]%
+    \setlength{\parskip}{1.5ex}%
+    \DescribeCounter[#1]{#2}%
 }
 
+\newcommand{\ItemDescribeHook}[2][]{%
+    \item[\texttt{#2}:]%
+    \setlength{\parskip}{1.5ex}%
+    \DescribeHook[#1]{#2}%
+}
+
 \newcommand{\ItemDescribeKey}[2][]{%
-\item[\texttt{#2}:]%
-\setlength{\parskip}{1.5ex}%
-\DescribeKey[#1]{#2}%
+    \item[\texttt{#2}:]%
+    \setlength{\parskip}{1.5ex}%
+    \DescribeKey[#1]{#2}%
 }
 
 \newcommand{\DTXD at ItemDescribePackage}[2][]{%
-\item[\texttt{#2}:]%
-\setlength{\parskip}{1.5ex}%
-\DescribePackage[#1]{#2}%
-\endgroup
+    \item[\texttt{#2}:]%
+    \setlength{\parskip}{1.5ex}%
+    \DescribePackage[#1]{#2}%
+    \endgroup%
 }
 
 \newcommand{\ItemDescribePackage}{%
-\begingroup\catcode`\_=12 \DTXD at ItemDescribePackage%
+    \begingroup\catcode`\_=12 \DTXD at ItemDescribePackage%
 }
 
 \newcommand{\DTXD at ItemDescribeClass}[2][]{%
-\item[\texttt{#2}:]%
-\setlength{\parskip}{1.5ex}%
-\DescribeClass[#1]{#2}%
-\endgroup
+    \item[\texttt{#2}:]%
+    \setlength{\parskip}{1.5ex}%
+    \DescribeClass[#1]{#2}%
+    \endgroup%
 }
 
 \newcommand{\ItemDescribeClass}{%
-\begingroup\catcode`\_=12 \DTXD at ItemDescribeClass%
+    \begingroup\catcode`\_=12 \DTXD at ItemDescribeClass%
 }
 
 \newcommand{\ItemDescribeOption}[2][]{%
-\item[\texttt{#2}:]%
-\setlength{\parskip}{1.5ex}%
-\DescribeOption[#1]{#2}%
+    \item[\texttt{#2}:]%
+    \setlength{\parskip}{1.5ex}%
+    \DescribeOption[#1]{#2}%
 }
 
 \newcommand{\DTXD at ItemDescribeFile}[2][]{%
-\item[\texttt{#2}:]%
-\setlength{\parskip}{1.5ex}%
-\DescribeFile[#1]{#2}%
-\endgroup
+    \item[\texttt{#2}:]%
+    \setlength{\parskip}{1.5ex}%
+    \DescribeFile[#1]{#2}%
+    \endgroup%
 }
 
 \newcommand{\ItemDescribeFile}{%
-\begingroup\catcode`\_=12 \DTXD at ItemDescribeFile%
+    \begingroup\catcode`\_=12 \DTXD at ItemDescribeFile%
 }
 
 \newcommand{\DTXD at ItemDescribeProgram}[2][]{%
-\item[\texttt{#2}:]%
-\setlength{\parskip}{1.5ex}%
-\DescribeProgram[#1]{#2}%
-\endgroup
+    \item[\texttt{#2}:]%
+    \setlength{\parskip}{1.5ex}%
+    \DescribeProgram[#1]{#2}%
+    \endgroup%
 }
 
 \newcommand{\ItemDescribeProgram}{%
-\begingroup\catcode`\_=12 \DTXD at ItemDescribeProgram%
+    \begingroup\catcode`\_=12 \DTXD at ItemDescribeProgram%
 }
 
 \newcommand{\DTXD at ItemDescribeCommand}[2][]{%
-\item[\texttt{#2}:]%
-\setlength{\parskip}{1.5ex}%
-\DescribeCommand[#1]{#2}%
-\endgroup
+    \item[\texttt{#2}:]%
+    \setlength{\parskip}{1.5ex}%
+    \DescribeCommand[#1]{#2}%
+    \endgroup%
 }
 
 \newcommand{\ItemDescribeCommand}{%
-\begingroup\catcode`\_=12 \DTXD at ItemDescribeCommand%
+    \begingroup\catcode`\_=12 \DTXD at ItemDescribeCommand%
 }
 
 \newcommand{\ItemDescribeObject}[2][]{%
-\item[\texttt{#2}:]%
-\setlength{\parskip}{1.5ex}%
-\DescribeObject[#1]{#2}%
+    \item[\texttt{#2}:]%
+    \setlength{\parskip}{1.5ex}%
+    \DescribeObject[#1]{#2}%
 }
 
 \newcommand{\ItemDescribeOther}[2][]{%
-\item[\texttt{#2}:]%
-\setlength{\parskip}{1.5ex}%
-\DescribeOther[#1]{#2}%
+    \item[\texttt{#2}:]%
+    \setlength{\parskip}{1.5ex}%
+    \DescribeOther[#1]{#2}%
 }
 
 
@@ -655,6 +688,22 @@
 }{}% not float?
 }
 
+\NewDocumentCommand{\shownesting}{s O{1} m m}{
+    \IfBooleanF{#1}{
+        \par\smallskip
+    }
+    \fbox{
+        \begin{minipage}{#2\linewidth-2em}
+            \hbadness=10000\relax%
+            #3\par\smallskip
+            \hspace{1em}
+            \begin{minipage}{\linewidth-1.5em}
+                #4
+            \end{minipage}
+        \end{minipage}
+    }
+}
+
 \definecolor{DTXD at examplerulecolor}{rgb}{.9,.9,.9}
 \newcommand*{\dtxexamplecodename}{Code:}
 
@@ -788,8 +837,19 @@
 }
 \providerobustcmd*{\pkg}[1]{\mbox{\textsf{#1}}}
 
+\providerobustcmd*{\cs}[1]{\texttt{\char`\\#1}}
+
 \providerobustcmd*{\env}[1]{\mbox{\texttt{#1}}}
 
+\providecommand\marg[1]{%
+  {\ttfamily\char`\{}\meta{#1}{\ttfamily\char`\}}}
+
+\providecommand\oarg[1]{%
+  {\ttfamily[}\meta{#1}{\ttfamily]}}
+
+\providecommand\parg[1]{%
+  {\ttfamily(}\meta{#1}{\ttfamily)}}
+
 \providerobustcmd*{\ctr}[1]{\mbox{\texttt{#1}}}
 
 \providerobustcmd*{\bool}[1]{\mbox{\texttt{#1}}}
@@ -851,6 +911,8 @@
 
 \providerobustcmd*{\element}[1]{\texttt{<#1>}}
 
+\providerobustcmd*{\attrib}[1]{\mbox{\texttt{#1}}}
+
 \providerobustcmd*{\attribute}[1]{\mbox{\texttt{#1}}}
 
 \providerobustcmd*{\HTML}{\acro{HTML}}
@@ -864,16 +926,20 @@
 \providerobustcmd*{\EPUB}{\acro{EPUB}}
 \providerobustcmd*{\tikz}{Ti\textit{k}z}
 
-\providerobustcmd*{\MathML}{Math\acro{ML}}
-
 \providerobustcmd*{\CTAN}{\acro{CTAN}}
 
 \providerobustcmd*{\TDS}{\acro{TDS}}
+\providerobustcmd*{\MathML}{Math\acro{ML}}
+\providerobustcmd*{\MathJax}{\brand{MathJax}}
 \providerobustcmd*{\brand}[1]{\textsc{#1}}
 
 \providerobustcmd*{\acro}[1]{\textsc{\lowercase{#1}}}
 
 \providerobustcmd*{\supregistered}{\textsuperscript{\textregistered}}
+\providerobustcmd*{\dviTeX}{\mbox{\DVI\,\TeX}}
+\providerobustcmd*{\dviLaTeX}{\mbox{\DVI\,\LaTeX}}
+\providerobustcmd*{\pdfTeX}{\mbox{\PDF\,\TeX}}
+\providerobustcmd*{\pdfLaTeX}{\mbox{\PDF\,\LaTeX}}
 \providerobustcmd*{\LuaTeX}{\mbox{Lua\TeX}}
 \providerobustcmd*{\LuaLaTeX}{\mbox{Lua\LaTeX}}
 \providerobustcmd*{\XeTeXrevE}
@@ -900,8 +966,12 @@
 \DeclareRobustCommand{\thinskip}{\hskip 0.16667em\relax}
 \def\endash{–}
 \def\emdash{—}
-\newcommand{\thinbrspace}{\hspace{.16667em}\penalty\exhyphenpenalty\hspace{0pt}}
-\newcommand{\thinthinbrspace}{\hspace{.08333em}\penalty\exhyphenpenalty\hspace{0pt}}
+\newcommand{\thinbrspace}{%
+    \hspace{.16667em}\penalty\exhyphenpenalty\hspace{0pt}%
+}
+\newcommand{\thinthinbrspace}{%
+    \hspace{.08333em}\penalty\exhyphenpenalty\hspace{0pt}%
+}
 \newrobustcmd{\Dash}{\unskip\thinspace\emdash\thinbrspace}
 \newrobustcmd{\dash}{\unskip\thinspace\endash\thinbrspace}
 \newrobustcmd{\Slash}{\unskip\hspace{.08333em}/\thinthinbrspace}



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