summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/latex/base/ltxdoc.dtx
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/source/latex/base/ltxdoc.dtx')
-rw-r--r--Master/texmf-dist/source/latex/base/ltxdoc.dtx132
1 files changed, 116 insertions, 16 deletions
diff --git a/Master/texmf-dist/source/latex/base/ltxdoc.dtx b/Master/texmf-dist/source/latex/base/ltxdoc.dtx
index 7a21f7d871f..4d854728a0c 100644
--- a/Master/texmf-dist/source/latex/base/ltxdoc.dtx
+++ b/Master/texmf-dist/source/latex/base/ltxdoc.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2021
+% Copyright (C) 1993-2022
% The LaTeX Project and any individual authors listed elsewhere
% in this file.
%
@@ -30,7 +30,7 @@
%
%<class>\NeedsTeXFormat{LaTeX2e}
%<class>\ProvidesClass{ltxdoc}
-%<class> [2020/12/05 v2.1b Standard LaTeX documentation class]
+%<class> [2022/06/03 v2.1f Standard LaTeX documentation class]
%
%<*driver>
\documentclass{ltxdoc}
@@ -51,6 +51,8 @@
%
% \fi
%
+% \providecommand\pkg[1]{\texttt{#1}}
+%
%
% \changes{v2.0i}{1994/04/29}{Update the documentation.}
% \changes{v2.0s}{1998/08/17}{(RmS) Documentation fixes.}
@@ -102,7 +104,7 @@
% \PassOptionsToClass{a4paper}{article}
%\end{verbatim}
%
-% All the source files are in two parts, separated by |\StopEventually|.
+% All the source files are in two parts, separated by |\MaybeStop|.
% The first part (should) contain `user' documentation. The second part
% is a full documented listing of the source code. The |doc| package
% provides the command |\OnlyDescription| which suppresses the code
@@ -115,10 +117,13 @@
% \AtBeginDocument{\OnlyDescription}
%\end{verbatim}
%
+% If your document relies on using the old \pkg{doc} version, you can
+% request that the class loads \pkg{doc} version~2 by passing the
+% option \texttt{doc2}.
%
% If the full source listing |sources2e.tex| is processed, then an index
-% and change history are produced by default, however indices are not
-% normally produced for individual files.
+% and change history are produced by default, however indexes are normally
+% not produced for individual files.
%
% As an example, consider |ltclass.dtx|, which contains the sources for
% the new class and package interface commands. With no |cfg|
@@ -156,47 +161,73 @@
% \includeonly{ltvers,ltboxes}
%\end{verbatim}
%
-% \StopEventually{}
+% \MaybeStop{}
%
%
% \section{Options}
%
% \begin{macrocode}
%<*class>
+% \end{macrocode}
+%
+% \begin{macrocode}
\DeclareOption{a5paper}{\@latexerr{Option not supported}%
{}}
% \end{macrocode}
+% Prevent loading of a config file.
+% \begin{macrocode}
+\newif\ifltxdoc@load@cfg@ \ltxdoc@load@cfg@true
+\DeclareOption{nocfg}{\ltxdoc@load@cfg@false}
+% \end{macrocode}
%
+% Support rolling back \pkg{doc} to version 2:
+% \changes{v2.1e}{2022/05/27}{Support rolling back doc to version 2}
+% \begin{macrocode}
+\let\ltxdoc@doc@version\@empty % use current version by default
+\DeclareOption{doc2}{\def\ltxdoc@doc@version{=v2}}
+% \end{macrocode}
+%
% \begin{macrocode}
\DeclareOption*{%
\PassOptionsToClass {\CurrentOption}{article}}
% \end{macrocode}
%
-% \section{Configuration}
+% \section{Option Processing}
+%
+% \begin{macrocode}
+\ProcessOptions
+% \end{macrocode}
+%
+% \section{Local configuration}
% Input a local configuration file, if it exists.
% \begin{macrocode}
+\ifltxdoc@load@cfg@
\InputIfFileExists{ltxdoc.cfg}
{\typeout{*************************************^^J%
* Local config file ltxdoc.cfg used^^J%
*************************************}}
{}
+\else
+ \typeout{*************************************^^J%
+ * Local config file ignored^^J%
+ *************************************}
+\fi
% \end{macrocode}
%
%
-% \section{Option Processing}
-%
-% \begin{macrocode}
-\ProcessOptions
-% \end{macrocode}
-%
% \section{Loading article and doc}
%
% \begin{macrocode}
\LoadClass{article}
% \end{macrocode}
%
+% By default, loadthe current \pkg{doc} version
+% (\cs{ltxdoc@doc@version} is empty). If option
+% \texttt{doc2} is given version 2 is loaded
+% (\cs{ltxdoc@doc@version} contains \texttt{=v2}).
+% \changes{v2.1e}{2022/05/27}{Support rolling back doc to version 2}
% \begin{macrocode}
-\RequirePackage{doc}
+\RequirePackage{doc}[\ltxdoc@doc@version]
% \end{macrocode}
%
% Make \verb+|+ be a `short verb' character, but not in the document
@@ -256,7 +287,7 @@
% arguments. It can \emph{not} be use to record commands that are defined as
% ``|\outer|'' nor is it possible to use it on conditionals such as
% |\iftrue| or defined by |\newif|.
-% |\cs{foo}| also prints |\foo|, for those who prefer that
+% |\cs{foo}| already available with the \texttt{doc} package also prints |\foo|, for those who prefer that
% syntax. (This second form can be used to record all types of command so the
% above restrictions do not apply.
% \begin{macro}{\cmd}
@@ -266,7 +297,7 @@
% \begin{macrocode}
\def\cmd#1{\cs{\expandafter\cmd@to@cs\string#1}}
\def\cmd@to@cs#1#2{\char\number`#2\relax}
-\DeclareRobustCommand\cs[1]{\texttt{\char`\\#1}}
+%\DeclareRobustCommand\cs[1]{\texttt{\char`\\#1}} % already part of doc.sty
% \end{macrocode}
% \end{macro}
% \end{macro}
@@ -600,7 +631,76 @@ Bug reports can be opened (category \texttt{#1}) at\\%
%
% \begin{macrocode}
\def\task#1#2{}
+% \end{macrocode}
+% \changes{v2.1f}{2022/06/03}{define \cs{pkg} and other commands}
+% \changes{v2.1f}{2022/06/03}{allow \_ in macro names}
+% Some feaures from l3doc.cls
+% \begin{macrocode}
+\providecommand\LuaTeX{Lua\TeX}
+\providecommand\cls{\textsf}
+\providecommand\pkg{\textsf}
+\providecommand\enquote[1]{``#1''}
+\DeclareRobustCommand\cs[1]{\texttt{\bslash\detokenize{#1}}}%
+\AtBeginDocument{%
+ \renewcommand\PrintMacroName[1]{\MacroFont\detokenize{#1}}%
+ }
+% \end{macrocode}
+%
+% \begin{macrocode}
%</class>
% \end{macrocode}
+%
+%
+%
+% \section{Configuration file}
+%
+%
+% \begin{macrocode}
+%<*cfg>
+%
+% This is the ltxdoc configuration file we use to format the LaTeX
+% kernel sources.
+%
+%
+% Copyright 2006, 2007, 2011 Heiko Oberdiek
+% Copyright 2014-2021 The LaTeX Project
+%
+
+\ProvidesFile{ltxdoc.cfg}%
+ [2021/12/07 v2.0c ltxdoc.cls configuration (LaTeX Project)]
+\PassOptionsToClass{a4paper}{article}
+
+% hyperref and hypdoc are now loaded late (or by the user) so we have to wait
+% with any adjustments until that has happened
+
+\AddToHook{package/hyperref/after}{%
+%% \RequirePackage{hypdoc}% % this is now triggered by doc
+ \RequirePackage{pdftexcmds}\relax
+ \ifnum\pdf@strcmp{\jobname}{inputenc}=0 %
+ \hypersetup{pdfencoding=auto}%
+ \pdfstringdefDisableCommands{%
+ \def\meta#1{% inputenc.dtx
+ \9060\010#1\9060\011%
+ }%
+ }%
+ \else
+ \fi
+ \pdfstringdefDisableCommands{%
+ \let\env\relax % longtable.dtx
+ \let\mytt\relax % tabularx.dtx
+ }%
+}
+
+% This should work well for documentation of packages outside the
+% LaTeX kernel, but if not, you can prevent the loading with the
+% option "nocfg", i.e.,
+%
+% \documentclass[nocfg]{ltxdoc]
+%
+% or by providing your own config file
+
+\endinput
+%</cfg>
+% \end{macrocode}
% \Finale
%