summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Master/texmf-dist/doc/latex/useclass/README.md26
-rw-r--r--Master/texmf-dist/doc/latex/useclass/useclass.pdfbin0 -> 490171 bytes
-rw-r--r--Master/texmf-dist/source/latex/useclass/useclass.dtx250
-rw-r--r--Master/texmf-dist/source/latex/useclass/useclass.ins70
-rw-r--r--Master/texmf-dist/tex/latex/useclass/useclass.sty64
-rwxr-xr-xMaster/tlpkg/bin/tlpkg-ctan-check2
-rw-r--r--Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc1
-rw-r--r--Master/tlpkg/tlpsrc/useclass.tlpsrc0
8 files changed, 412 insertions, 1 deletions
diff --git a/Master/texmf-dist/doc/latex/useclass/README.md b/Master/texmf-dist/doc/latex/useclass/README.md
new file mode 100644
index 00000000000..baabb9b6e73
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/useclass/README.md
@@ -0,0 +1,26 @@
+# The `useclass.sty` Package: Use Classes as Packages
+
+## Introduction
+`useclass` is a package that enables the usage of classes as packages. It was originally designed for the `l3doc` class, which is employed for documenting LaTeX code with numerous useful features. However, employing the `l3doc` class as a package is not convenient when using the developing class as the style for the document. Therefore, this package provides a simple interface for utilizing classes as packages.
+
+## Usage
+Use `\useclass` to load a class with the same usage as `\usepackage`:
+```tex
+\useclass[<options>]{<class>}
+```
+where `<options>` and `<class>` are the options and the name of the loaded class, respectively.
+
+Example:
+```tex
+\usepackage{useclass}
+\useclass[full]{l3doc}
+```
+
+## License
+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
+ https://www.latex-project.org/lppl.txt
+and version 1.3c or later is part of all distributions of LaTeX
+version 2008 or later.
diff --git a/Master/texmf-dist/doc/latex/useclass/useclass.pdf b/Master/texmf-dist/doc/latex/useclass/useclass.pdf
new file mode 100644
index 00000000000..499da57e296
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/useclass/useclass.pdf
Binary files differ
diff --git a/Master/texmf-dist/source/latex/useclass/useclass.dtx b/Master/texmf-dist/source/latex/useclass/useclass.dtx
new file mode 100644
index 00000000000..74d9d63ca1d
--- /dev/null
+++ b/Master/texmf-dist/source/latex/useclass/useclass.dtx
@@ -0,0 +1,250 @@
+% \iffalse meta-comment
+% !TEX program = pdfLaTeX
+%
+% DO NOT REMOVE THE MARK MANUALLY (used in l3build) -> %
+%
+%<*internal>
+\iffalse
+%</internal>
+%<*internal>
+\fi
+\begingroup
+ \def\nameofLaTeXe{LaTeX2e}
+\expandafter\endgroup\ifx\fmtname\nameofLaTeXe\else
+\csname fi\endcsname
+%</internal>
+%<*install>
+\input docstrip
+\keepsilent
+\askforoverwritefalse
+\preamble
+
+ Copyright (C) 2024 by HUANG Yuxi <useclass@hyxi.dev>
+
+ 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. This version of this license is in
+ https://www.latex-project.org/lppl/lppl-1-3c.txt
+ and the latest version of this license is in
+ https://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 HUANG Yuxi.
+
+\endpreamble
+\postamble
+
+ This work consists of the files \jobname.dtx
+ and the derived files \jobname.sty and \jobname.ins.
+
+\endpostamble
+
+\generate
+ {
+%</install>
+%<*internal>
+ \usedir{source/latex/useclass}
+ \file{\jobname.ins}{\from{\jobname.dtx}{install}}
+%</internal>
+%<*install>
+ \usedir{tex/latex/useclass}
+ \file{\jobname.sty}{\from{\jobname.dtx}{package}}
+ }
+\endbatchfile
+%</install>
+%<*internal>
+\fi
+%</internal>
+
+%<package>\NeedsTeXFormat{LaTeX2e}
+%<package>\ProvidesExplPackage{useclass}
+%<package> {2024-03-04}{0.9}{Use Classes as Packages} %
+%<*driver>
+\documentclass{article}
+\usepackage{useclass}
+\useclass[full]{l3doc}
+\usepackage{mdframed}
+
+\providecommand{\pkgname}{\pkg{\jobname}}
+\begin{document}
+ \DocInput{\jobname.dtx}
+ \PrintIndex
+\end{document}
+%</driver>
+% \fi
+%
+% \title{The \pkgname.sty Package: Use Classes as Packages}
+% \author
+% {
+% Huang Yuxi
+% \thanks{
+% \textit{Huang} is his surname.
+% }
+% <^^A
+% \href
+% {mailto:useclass@hyxi.dev}
+% {useclass@hyxi.dev}^^A
+% >
+% }
+% \date{2024-03-04 \quad Version 0.9}
+%
+
+% \maketitle
+%
+%
+%
+% \begin{mdframed}
+% \textsf{TL;DR} \; Use \cs{useclass} to load a class with the same usage as \cs{usepackage}:
+% \begin{verbatim}
+% \usepackage{useclass}
+% \useclass[full]{l3doc}
+% \end{verbatim}
+% \end{mdframed}
+%
+% \tableofcontents
+%
+% \begin{documentation}
+%
+% \section{Introduction}
+%
+% \pkgname{} is a package that enables the usage of classes as packages. It was originally designed for the \cls{l3doc} class, which is employed for documenting \LaTeX{} code with numerous useful features. However, employing the \cls{l3doc} class as a package is not convenient when using the developing class as the style for the document. Therefore, this package provides a simple interface for utilizing classes as packages.
+% The package \pkgname{} was initially released on 2024-03-04, under the LaTeX Project Public License Version 1.3c^^A
+% \footnote{\url{https://www.latex-project.org/lppl/lppl-1-3c.txt}}
+% or later, and is maintained at \url{https://github.com/huangyxi/useclass}.
+%
+% \section{Usage}
+
+%
+% \begin{function}{\useclass}
+% \begin{syntax}
+ % \cs{useclass} \marg{class}
+% \cs{useclass} \oarg{options} \marg{class}
+% \end{syntax}
+% Load class with options, where \meta{options} is the options for the class and \meta{class} is the class name without the extension.
+% \end{function}
+%
+% Example for a \file{dtx} file:
+% \begin{mdframed}
+% \begin{verbatim}
+% % \iffalse
+% \documentclass{article}
+% \usepackage{l3doc}
+% \begin{document}
+% \DocInput{\jobname.dtx}
+% \end{document}
+% % \fi
+% %
+% % \section{Implementation}
+% % \begin{variable}{\l_demo_tl}
+% % \begin{macrocode}
+% \tl_new:N \l_demo_tl
+% % \end{macrocode}
+% % \end{variable}
+% \end{verbatim}
+% \end{mdframed}
+%
+% \end{documentation}
+%
+% \begin{implementation}
+%
+%
+% \section{\pkgname{} Implementation}
+% \begin{macrocode}
+%<@@=useclass>
+%<*package>
+% \end{macrocode}
+%
+%
+% \subsection{Variables}
+%
+% \begin{variable}{\@@_tempa_cs:w}
+% Temporary control sequence.
+% \begin{macrocode}
+\cs_new_eq:NN \@@_tempa_cs:w ?
+% \end{macrocode}
+% \end{variable}
+%
+% \subsection{Helpers}
+%
+% \begin{macro}{\@@_cs_swap:NN}
+% Define a helper function to swap two control sequences.
+% \begin{macrocode}
+\cs_new:Npn \@@_cs_swap:NN #1 #2
+ {
+ \cs_set_eq:NN \@@_tempa_cs:w #1
+ \cs_set_eq:NN #1 #2
+ \cs_set_eq:NN #2 \@@_tempa_cs:w
+ }
+% \end{macrocode}
+% \end{macro}
+% \subsection{Dependences loading}
+% \pkgname{} currently don't have any explicit dependences.
+%
+% \subsection{Patched Macros}
+%
+% \begin{macro}{\@@_LoadClass:n}
+% Patched \cs{LoadClass} to do nothing.
+% \begin{macrocode}
+\cs_new:Npn \@@_LoadClass:n #1 {}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Before Loading Class}
+%
+% \begin{macro}{\@@_use_before:}
+% These are the things to do before loading class.
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_use_before:
+ {
+ \@@_cs_swap:NN \LoadClass \@@_LoadClass:n
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Loading Class}
+%
+% \begin{macro}{\@@_use_class:nn}
+% Load class with options.
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_use_class:nn #1 #2
+ {
+ \@fileswithoptions\@clsextension[#1]{#2}
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{After Loading Class}
+%
+% \begin{macro}{\@@_use_after:}
+% These are the things to do after loading class.
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_use_after:
+ {
+ \@@_cs_swap:NN \LoadClass \@@_LoadClass:n
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{User Interface}
+% \begin{macro}{\useclass}
+% Load patch class with options.
+% \begin{macrocode}
+\NewDocumentCommand {\useclass} { O{} m }
+ {
+ \@@_use_before:
+ \@@_use_class:nn {#1} {#2}
+ \@@_use_after:
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macrocode}
+%</package>
+% \end{macrocode}
+
+% \end{implementation}
+% \PrintIndex
diff --git a/Master/texmf-dist/source/latex/useclass/useclass.ins b/Master/texmf-dist/source/latex/useclass/useclass.ins
new file mode 100644
index 00000000000..3d8431cde62
--- /dev/null
+++ b/Master/texmf-dist/source/latex/useclass/useclass.ins
@@ -0,0 +1,70 @@
+%%
+%% This is file `useclass.ins',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% useclass.dtx (with options: `install')
+%%
+%% Copyright (C) 2024 by HUANG Yuxi <useclass@hyxi.dev>
+%%
+%% 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. This version of this license is in
+%% https://www.latex-project.org/lppl/lppl-1-3c.txt
+%% and the latest version of this license is in
+%% https://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 HUANG Yuxi.
+%%
+\input docstrip
+\keepsilent
+\askforoverwritefalse
+\preamble
+
+ Copyright (C) 2024 by HUANG Yuxi <useclass@hyxi.dev>
+
+ 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. This version of this license is in
+ https://www.latex-project.org/lppl/lppl-1-3c.txt
+ and the latest version of this license is in
+ https://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 HUANG Yuxi.
+
+\endpreamble
+\postamble
+
+ This work consists of the files \jobname.dtx
+ and the derived files \jobname.sty and \jobname.ins.
+
+\endpostamble
+
+\generate
+ {
+ \usedir{tex/latex/useclass}
+ \file{\jobname.sty}{\from{\jobname.dtx}{package}}
+ }
+\endbatchfile
+
+
+
+ % \cs{useclass} \marg{class}
+
+%%
+%% This work consists of the files useclass.dtx
+%% and the derived files useclass.sty and useclass.ins.
+%%
+%%
+%% End of file `useclass.ins'.
diff --git a/Master/texmf-dist/tex/latex/useclass/useclass.sty b/Master/texmf-dist/tex/latex/useclass/useclass.sty
new file mode 100644
index 00000000000..172309b1da4
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/useclass/useclass.sty
@@ -0,0 +1,64 @@
+%%
+%% This is file `useclass.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% useclass.dtx (with options: `package')
+%%
+%% Copyright (C) 2024 by HUANG Yuxi <useclass@hyxi.dev>
+%%
+%% 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. This version of this license is in
+%% https://www.latex-project.org/lppl/lppl-1-3c.txt
+%% and the latest version of this license is in
+%% https://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 HUANG Yuxi.
+%%
+
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesExplPackage{useclass}
+ {2024-03-04}{0.9}{Use Classes as Packages} %
+
+
+ % \cs{useclass} \marg{class}
+\cs_new_eq:NN \__useclass_tempa_cs:w ?
+\cs_new:Npn \__useclass_cs_swap:NN #1 #2
+ {
+ \cs_set_eq:NN \__useclass_tempa_cs:w #1
+ \cs_set_eq:NN #1 #2
+ \cs_set_eq:NN #2 \__useclass_tempa_cs:w
+ }
+\cs_new:Npn \__useclass_LoadClass:n #1 {}
+\cs_new_protected:Npn \__useclass_use_before:
+ {
+ \__useclass_cs_swap:NN \LoadClass \__useclass_LoadClass:n
+ }
+\cs_new_protected:Npn \__useclass_use_class:nn #1 #2
+ {
+ \@fileswithoptions\@clsextension[#1]{#2}
+ }
+\cs_new_protected:Npn \__useclass_use_after:
+ {
+ \__useclass_cs_swap:NN \LoadClass \__useclass_LoadClass:n
+ }
+\NewDocumentCommand {\useclass} { O{} m }
+ {
+ \__useclass_use_before:
+ \__useclass_use_class:nn {#1} {#2}
+ \__useclass_use_after:
+ }
+
+%%
+%% This work consists of the files useclass.dtx
+%% and the derived files useclass.sty and useclass.ins.
+%%
+%%
+%% End of file `useclass.sty'.
diff --git a/Master/tlpkg/bin/tlpkg-ctan-check b/Master/tlpkg/bin/tlpkg-ctan-check
index bddf2a4d6e2..23ccaa33335 100755
--- a/Master/tlpkg/bin/tlpkg-ctan-check
+++ b/Master/tlpkg/bin/tlpkg-ctan-check
@@ -898,7 +898,7 @@ my @TLP_working = qw(
uol-physics-report uothesis uowthesis uowthesistitlepage
upca updatemarks uplatex upmendex upmethodology uppunctlm upquote
uptex-base uptex-fonts upzhkinsoku
- uri url urlbst urcls urwchancal usebib ushort uspace uspatent
+ uri url urlbst urcls urwchancal usebib useclass ushort uspace uspatent
ut-thesis utexasthesis utf8add utf8mex utfsym uvaletter
uwa-colours uwa-letterhead uwa-pcf uwa-pif uwmslide uwthesis
vak vancouver variablelm variations varindex varisize
diff --git a/Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc b/Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc
index c077cb862ab..7c7077f64f6 100644
--- a/Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc
+++ b/Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc
@@ -1443,6 +1443,7 @@ depend updatemarks
depend upmethodology
depend upquote
depend uri
+depend useclass
depend ushort
depend uspace
depend utf8add
diff --git a/Master/tlpkg/tlpsrc/useclass.tlpsrc b/Master/tlpkg/tlpsrc/useclass.tlpsrc
new file mode 100644
index 00000000000..e69de29bb2d
--- /dev/null
+++ b/Master/tlpkg/tlpsrc/useclass.tlpsrc