summaryrefslogtreecommitdiff
path: root/Master
diff options
context:
space:
mode:
Diffstat (limited to 'Master')
-rw-r--r--Master/texmf-dist/doc/latex/palette/README.md17
-rw-r--r--Master/texmf-dist/doc/latex/palette/palette.pdfbin0 -> 180652 bytes
-rw-r--r--Master/texmf-dist/source/latex/palette/palette.dtx404
-rw-r--r--Master/texmf-dist/tex/latex/palette/colorpalette.sty81
-rw-r--r--Master/texmf-dist/tex/latex/palette/symbolpalette.sty67
-rwxr-xr-xMaster/tlpkg/bin/tlpkg-ctan-check2
-rw-r--r--Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc1
-rw-r--r--Master/tlpkg/tlpsrc/palette.tlpsrc0
8 files changed, 571 insertions, 1 deletions
diff --git a/Master/texmf-dist/doc/latex/palette/README.md b/Master/texmf-dist/doc/latex/palette/README.md
new file mode 100644
index 00000000000..ad518480507
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/palette/README.md
@@ -0,0 +1,17 @@
+# The LaTeX package palette - version 1.0.0 (2021/07/27)
+
+**palette** provides the ability to create custom color palettes and symbol palettes ("symbol suites"), and swap one palette in for another easily. It also allows the user to create a variable that represents the selected palette, and provides checks in case the variable represents a palette that does not exist.
+
+The package is split into `colorpalette` and `symbolsuite`.
+
+## Installation instructions
+
+A working TeX installation is required.
+
+This is a self-extracting dtx file, so run
+
+ pdflatex palette.dtx
+
+to generate the README, documentation, and packages.
+
+
diff --git a/Master/texmf-dist/doc/latex/palette/palette.pdf b/Master/texmf-dist/doc/latex/palette/palette.pdf
new file mode 100644
index 00000000000..12a95fc0b75
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/palette/palette.pdf
Binary files differ
diff --git a/Master/texmf-dist/source/latex/palette/palette.dtx b/Master/texmf-dist/source/latex/palette/palette.dtx
new file mode 100644
index 00000000000..b66fc4875e1
--- /dev/null
+++ b/Master/texmf-dist/source/latex/palette/palette.dtx
@@ -0,0 +1,404 @@
+% \iffalse meta-comment
+% This package was written for pdfLaTeX.
+% In particular, there is no guarantee that this works for other tex engines.
+%
+% Copyright (C) 2021 Dennis Chen <proofprogram@gmail.com>
+%
+% This work may be distributed and/or modified under
+% the conditions the LaTeX Project Public License (LPPL),
+% either version 1.3 of this license or (at your option)
+% any later version. The latest version of this license
+% can be found in
+% http://www.latex-project.org/lppl.txt
+% and version 1.3 or later is part of all distributions of LaTeX
+% version 2005/12/01 or later.
+%
+%<*internal>
+\iffalse
+%</internal>
+%<*readme>
+# The LaTeX package palette - version 1.0.0 (2021/07/27)
+
+**palette** provides the ability to create custom color palettes and symbol palettes ("symbol suites"), and swap one palette in for another easily. It also allows the user to create a variable that represents the selected palette, and provides checks in case the variable represents a palette that does not exist.
+
+The package is split into `colorpalette` and `symbolsuite`.
+
+## Installation instructions
+
+A working TeX installation is required.
+
+This is a self-extracting dtx file, so run
+
+ pdflatex palette.dtx
+
+to generate the README, documentation, and packages.
+%</readme>
+% \fi
+
+% \iffalse
+
+%<*internal>
+\fi
+\def\nameofplainTeX{plain}
+\ifx\fmtname\nameofplainTeX\else
+ \expandafter\begingroup
+\fi
+%</internal>
+%<*install>
+
+\input docstrip.tex
+\keepsilent
+\askforoverwritefalse
+\preamble
+
+This is a generated file.
+
+Copyright (C) 2021 Dennis Chen <proofprogram@gmail.com>
+
+This work may be distributed and/or modified under
+the conditions the LaTeX Project Public License (LPPL),
+either version 1.3 of this license or (at your option)
+any later version. The latest version of this license
+can be found in
+
+ http://www.latex-project.org/lppl.txt
+
+and version 1.3 or later is part of all distributions of LaTeX
+version 2005/12/01 or later.
+
+To produce the documentation, run palette.dtx through pdflatex.
+
+\endpreamble
+\postamble
+
+This package consists of the file palette.dtx,
+ and the generated files colorpalette.sty,
+ symbolpalette.sty,
+ palette.pdf.
+\endpostamble
+
+\usedir{tex/latex/palette}
+\generate{
+ \file{colorpalette.sty}{\from{\jobname.dtx}{color}}
+ \file{symbolpalette.sty}{\from{\jobname.dtx}{symbol}}
+}
+
+\obeyspaces
+\Msg{*************************************************************}
+\Msg{* *}
+\Msg{* To finish the installation you have to move the following *}
+\Msg{* files into a directory searched by TeX: *}
+\Msg{* *}
+\Msg{* colorpalette.sty *}
+\Msg{* symbolpalette.sty *}
+\Msg{* *}
+\Msg{* To produce the documentation, run the file *}
+\Msg{* palette.dtx through LaTeX. *}
+\Msg{* *}
+\Msg{* Happy TeXing! *}
+\Msg{* *}
+\Msg{*************************************************************}
+
+%</install>
+%<install>\endbatchfile
+%<*internal>
+
+\usedir{source/latex/palette}
+\generate{
+ \file{\jobname.ins}{\from{\jobname.dtx}{install}}
+}
+\nopreamble\nopostamble
+
+\usedir{doc/latex/palette}
+\generate{
+ \file{README.md}{\from{\jobname.dtx}{readme}}
+}
+
+\ifx\fmtname\nameofplainTeX
+ \expandafter\endbatchfile
+\else
+ \expandafter\endgroup
+\fi
+%</internal>
+%
+%<color|symbol>\NeedsTeXFormat{LaTeX2e}
+%<color>\ProvidesPackage{colorpalette}
+%<symbol>\ProvidesPackage{symbolsuite}
+%<color|symbol>[2021/07/27 v1.0.0 Create palettes for colors and symbols]
+%<color>\RequirePackage{xcolor}
+%<*color|symbol>
+\RequirePackage{macrolist}
+%</color|symbol>
+%<*driver>
+\ProvidesFile{\jobname.dtx}[2021/07/27 v1.0.0 Create palettes for colors and symbols]
+\documentclass{ltxdoc}
+
+\EnableCrossrefs
+\CodelineIndex
+\RecordChanges
+
+\begin{document}
+ \DocInput{\jobname.dtx}
+ \PrintIndex
+ \PrintChanges
+\end{document}
+%</driver>
+% \fi
+%
+% \GetFileInfo{\jobname.dtx}
+%
+% \changes{v1.0.0}{2021/07/27}{Initial version}
+%
+% \title{\textsf{palette} -- Create palettes for colors and symbols}
+% \author{Dennis Chen \\ proofprogram@gmail.com}
+% \date{\fileversion{} (\filedate)}
+%
+% \maketitle
+%
+% \begin{abstract}
+% The \textsf{palette} package provides \textsf{colorpalette.sty} and \textsf{symbolpalette.sty}, which can be used to create and manage palettes of colors and symbols, respectively.
+% \end{abstract}
+%
+% \section{Overview}
+% We will go over the basic structure of the user interface in broad terms first (i.e. no macros or environments yet). We will use \textsf{colorpalette} as our example here, but \textsf{symbolsuite} behaves virtually identically.
+%
+% First, the user can create palette \emph{themes}, which are independent from each other. Then, you can add colors to themes. Finally, you can make a palette associated with a theme and set its colors.
+%
+% \section{colorpalette.sty}
+%
+% \subsection{Usage}
+%
+% \DescribeMacro{\newpalettetheme}
+% To create a new palette theme called \textsf{theme}, write |\newpalettetheme{theme}|.
+%
+% \iffalse
+%<*color>
+\newcommand\newpalettetheme[1]{
+ \newlist{colorpalette@theme@#1@palettes}
+ \newlist{colorpalette@theme@#1@colors}
+}
+%</color>
+% \fi
+% \DescribeMacro{\addcolortotheme}
+% To add a color \textsf{color} to theme \textsf{theme}, write |\addcolortotheme{theme}{color}|.
+%
+% \iffalse
+%<*color>
+\newcommand\addcolortotheme[2]{
+ \colorpalette@themecheck{#1}
+ \listadd{colorpalette@theme@#1@colors}{#2}
+}
+%</color>
+% \fi
+%
+% \DescribeMacro{\newpalette}
+% To create a new palette \textsf{palette} based on theme \textsf{theme}, write |\newpalette{theme}{palette}|.
+%
+% Palette names only need to be unique across the same theme. This means that you can have two palettes with the same name if they are associated with different themes.
+%
+% \iffalse
+%<*color>
+\newcommand\newpalette[2]{
+ % Check that the theme exists
+ \colorpalette@themecheck{#1}
+ \listadd{colorpalette@theme@#1@palettes}{#2}
+}
+%</color>
+% \fi
+%
+% \DescribeMacro{\setpalettecolor}
+% To set the color \textsf{color} (which was defined with respect to the theme of the palette) as the color value \textsf{value} in the format \textsf{encoding} (which by default is HTML) of palette \textsf{palette} in theme \textsf{theme}, write \begin{verbatim}\setpalettecolor{theme}{palette}{color}[encoding]{value}\end{verbatim}
+%
+% \iffalse
+%<*color>
+\newcommand\setpalettecolor[3]{
+ \colorpalette@themecheck{#1}
+ \colorpalette@palettecheck{#1}{#2}
+ \colorpalette@colorcheck{#1}{#3}
+ \def\colorpalette@temp@themename{#1}
+ \def\colorpalette@temp@palettename{#2}
+ \def\colorpalette@temp@colorname{#3}
+ \colorpalette@setpalettecolor
+}
+\newcommand\colorpalette@setpalettecolor[2][HTML]{
+ \definecolor{colorpalette@\colorpalette@temp@themename @\colorpalette@temp@palettename @\colorpalette@temp@colorname}{#1}{#2}
+}
+%</color>
+% \fi
+%
+% \DescribeMacro{\activepalette}
+% This sets the active palette of a theme. (This is how palettes are ``swapped in'' with respect to a theme.) To set the active palette of theme \textsf{theme} as \textsf{palette}, write |\activepalette{theme}{palette}|.
+%
+% \iffalse
+%<*color>
+\newcommand\activepalette[2]{%
+ \colorpalette@themecheck{#1}
+ \colorpalette@palettecheck{#1}{#2}
+ \expandafter\def\csname colorpalette@#1@active\endcsname{#2}%
+}
+%</color>
+% \fi
+%
+% \DescribeMacro{\getcolor}
+% To use, write |\getcolor{theme}{color}|. This gets the \emph{internal} color name from the \emph{active} palette of \textsf{theme}. No errors will be thrown even if you pass in an undefined theme or color (with respect to the theme). This limitation is because we must be able to parse |\getcolor|.
+%
+% \iffalse
+%<*color>
+\newcommand\getcolor[2]{colorpalette@#1@\csname colorpalette@#1@active\endcsname @#2}
+%</color>
+% \fi
+%
+% \DescribeMacro{\applycolor}
+% To use, write |\applycolor{theme}{color}|. This applies color \textsf{color} from the \emph{active} palette of theme \textsf{theme}. (This means that the newly defined color is passed into |\color|.) If \textsf{theme} has no active palette, an error will be thrown.
+%
+% To make it clearer what |\applycolor| does, we will just show the macro definition directly (since it is quite simple). (The macros |\colorpalette@themecheck| and |\colorpalette@colorcheck| are just for error handling.)
+%
+% \begin{macrocode}
+%<*color>
+\newcommand\applycolor[2]{%
+ \colorpalette@themecheck{#1}%
+ \colorpalette@colorcheck{#1}{#2}%
+ \color{\getcolor{#1}{#2}}%
+}
+%</color>
+% \end{macrocode}
+%
+% \subsection{Error Messages}
+% \iffalse
+%<*color>
+\newcommand\colorpalette@themecheck[1]{\listexists{colorpalette@theme@#1@palettes}{}{\colorpalette@error@theme{#1}}}
+\newcommand\colorpalette@palettecheck[2]{\listcontains{colorpalette@theme@#1@palettes}{#2}{}{\colorpalette@error@palette{#1}{#2}}}
+\newcommand\colorpalette@colorcheck[2]{\listcontains{colorpalette@theme@#1@colors}{#2}{}{\colorpalette@error@color{#1}{#2}}}
+%</color>
+% \fi
+%
+% If a nonexistent theme is passed in, the following error will be thrown:
+% \begin{verbatim}The palette passed in is not a defined palette of theme `#1'\end{verbatim}
+% where |#1| is the name of the theme.
+% \iffalse
+%<color>\newcommand\colorpalette@error@theme[1]{\PackageError{colorpalette}{The theme `#1' passed in is not defined}{}}
+% \fi
+%
+% If a palette that does not belong to a theme is passed in, the following error will be thrown:
+% \begin{verbatim}The palette `#2' passed in is not a defined palette of theme `#1'\end{verbatim}
+% where |#1| is the name of the theme and |#2| is the name of the palette.
+% \iffalse
+%<color>\newcommand\colorpalette@error@palette[2]{\PackageError{colorpalette}{The palette `#2' passed in is not a defined palette of theme `#1'}{}}
+% \fi
+%
+% If a color that does not belong to a theme is passed in, the following error will be thrown:
+% \begin{verbatim}The color `#2' passed in is not a defined color of theme `#1'\end{verbatim}
+% where |#1| is the name of the theme and |#2| is the name of the color.
+% \iffalse
+%<color>\newcommand\colorpalette@error@color[2]{\PackageError{colorpalette}{The color `#2' passed in is not a defined color of theme `#1'}{}}
+% \fi
+%
+% \section{symbolpalette.sty}
+%
+% Despite the name \textsf{symbolpalette} (which is used to identify it as one of the files of the package \textsf{palette}), the main keyword is a \emph{suite}. This is because the keyword \emph{palette} is already used for \textsf{colorpalette}.
+%
+% This package is nearly analogous to \textsf{colorpalette}. A \emph{suite} is analogous to a \emph{palette}, and a \emph{symbol} is analogous to a \emph{color}. \emph{Themes} are used in both packages.
+%
+% \subsection{Usage}
+%
+% \DescribeMacro{\newsuitetheme}
+% To create a new suite theme called \textsf{theme}, write |\newsuitetheme{theme}|.
+%
+% \iffalse
+%<*symbol>
+\newcommand\newsuitetheme[1]{
+ \newlist{symbolsuite@theme@#1@suites}
+ \newlist{symbolsuite@theme@#1@symbols}
+}
+%</symbol>
+% \fi
+% \DescribeMacro{\addsymboltotheme}
+% To add a symbol \textsf{symbol} to theme \textsf{theme}, write |\addsymboltotheme{theme}{symbol}|.
+%
+% \iffalse
+%<*symbol>
+\newcommand\addsymboltotheme[2]{
+ \symbolsuite@themecheck{#1}
+ \listadd{symbolsuite@theme@#1@symbols}{#2}
+}
+%</symbol>
+% \fi
+%
+% \DescribeMacro{\newsuite}
+% To create a new suite \textsf{suite} based on theme \textsf{theme}, write |\newsuite{theme}{suite}|.
+%
+% Suite names only need to be unique across the same theme. This means that you can have two suites with the same name if they are associated with different themes.
+%
+% \iffalse
+%<*symbol>
+\newcommand\newsuite[2]{
+ \symbolsuite@themecheck{#1}
+ \listadd{symbolsuite@theme@#1@suites}{#2}
+}
+%</symbol>
+% \fi
+%
+% \DescribeMacro{\setsuitesymbol}
+% To set the symbol \textsf{symbol} (which was defined with respect to the theme of the suite) as the icon \textsf{icon} of suite \textsf{suite} in theme \textsf{theme}, write \begin{verbatim}\setsuitesymbol{theme}{suite}{symbol}{icon}\end{verbatim}
+%
+% \iffalse
+%<symbol>\newcommand\setsuitesymbol[4]{\expandafter\def\csname symbolsuite@#1@#2@#3\endcsname{#4}}
+% \fi
+%
+% \DescribeMacro{\activesuite}
+% This sets the active suite of a theme. (This is how suites are ``swapped in'' with respect to a theme.) To set the active suite of theme \textsf{theme} as \textsf{suite}, write |\activesuite{theme}{suite}|.
+%
+% \iffalse
+%<*symbol>
+\newcommand\activesuite[2]{
+ \symbolsuite@themecheck{#1}
+ \symbolsuite@suitecheck{#1}{#2}
+ \expandafter\def\csname symbolsuite@#1@active\endcsname{#2}
+}
+%</symbol>
+% \fi
+%
+% \DescribeMacro{\printsymbol}
+% To use, write |\printsymbol{theme}{symbol}|. This is similar to \textsf{colorpalette.sty}'s |\applycolor|.
+% \iffalse
+%<*symbol>
+\newcommand\printsymbol[2]{%
+ \symbolsuite@themecheck{#1}%
+ \symbolsuite@symbolcheck{#1}{#2}%
+ \csname symbolsuite@#1@\csname symbolsuite@#1@active\endcsname @#2\endcsname%
+}
+%</symbol>
+% \fi
+%
+% \subsection{Error Messages}
+% \iffalse
+%<*symbol>
+\newcommand\symbolsuite@themecheck[1]{\listexists{symbolsuite@theme@#1@suites}{}{\symbolsuite@error@theme{#1}}}
+\newcommand\symbolsuite@suitecheck[2]{\listcontains{symbolsuite@theme@#1@suites}{#2}{}{\symbolsuite@error@suite{#1}{#2}}}
+\newcommand\symbolsuite@symbolcheck[2]{\listcontains{symbolsuite@theme@#1@symbols}{#2}{}{\symbolsuite@error@symbol{#1}{#2}}}
+%</symbol>
+% \fi
+%
+% If a nonexistent theme is passed in, the following error will be thrown:
+% \begin{verbatim}The palette passed in is not a defined palette of theme `#1'\end{verbatim}
+% where |#1| is the name of the theme.
+% \iffalse
+%<symbol>\newcommand\symbolsuite@error@theme[1]{\PackageError{symbolsuite}{The theme `#1' passed in is not defined}{}}
+% \fi
+%
+% If a suite that does not belong to a theme is passed in, the following error will be thrown:
+% \begin{verbatim}The suite `#2' passed in is not a defined suite of theme `#1'\end{verbatim}
+% where |#1| is the name of the theme and |#2| is the name of the suite.
+% \iffalse
+%<symbol>\newcommand\symbolsuite@error@suite[2]{\PackageError{symbolsuite}{The suite `#2' passed in is not a defined suite of theme `#1'}{}}
+% \fi
+%
+% If a symbol that does not belong to a theme is passed in, the following error will be thrown:
+% \begin{verbatim}The symbol `#2' passed in is not a defined symbol of theme `#1'\end{verbatim}
+% where |#1| is the name of the theme and |#2| is the name of the symbol.
+% \iffalse
+%<symbol>\newcommand\symbolsuite@error@symbol[2]{\PackageError{symbolsuite}{The symbol `#2' passed in is not a defined color of theme `#1'}{}}
+% \fi
+% \Finale
+%
+\endinput \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/palette/colorpalette.sty b/Master/texmf-dist/tex/latex/palette/colorpalette.sty
new file mode 100644
index 00000000000..cdf3e2265a3
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/palette/colorpalette.sty
@@ -0,0 +1,81 @@
+%%
+%% This is file `colorpalette.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% palette.dtx (with options: `color')
+%%
+%% This is a generated file.
+%%
+%% Copyright (C) 2021 Dennis Chen <proofprogram@gmail.com>
+%%
+%% This work may be distributed and/or modified under
+%% the conditions the LaTeX Project Public License (LPPL),
+%% either version 1.3 of this license or (at your option)
+%% any later version. The latest version of this license
+%% can be found in
+%%
+%% http://www.latex-project.org/lppl.txt
+%%
+%% and version 1.3 or later is part of all distributions of LaTeX
+%% version 2005/12/01 or later.
+%%
+%% To produce the documentation, run palette.dtx through pdflatex.
+%%
+
+
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{colorpalette}
+[2021/07/27 v1.0.0 Create palettes for colors and symbols]
+\RequirePackage{xcolor}
+\RequirePackage{macrolist}
+\newcommand\newpalettetheme[1]{
+ \newlist{colorpalette@theme@#1@palettes}
+ \newlist{colorpalette@theme@#1@colors}
+}
+\newcommand\addcolortotheme[2]{
+ \colorpalette@themecheck{#1}
+ \listadd{colorpalette@theme@#1@colors}{#2}
+}
+\newcommand\newpalette[2]{
+ % Check that the theme exists
+ \colorpalette@themecheck{#1}
+ \listadd{colorpalette@theme@#1@palettes}{#2}
+}
+\newcommand\setpalettecolor[3]{
+ \colorpalette@themecheck{#1}
+ \colorpalette@palettecheck{#1}{#2}
+ \colorpalette@colorcheck{#1}{#3}
+ \def\colorpalette@temp@themename{#1}
+ \def\colorpalette@temp@palettename{#2}
+ \def\colorpalette@temp@colorname{#3}
+ \colorpalette@setpalettecolor
+}
+\newcommand\colorpalette@setpalettecolor[2][HTML]{
+ \definecolor{colorpalette@\colorpalette@temp@themename @\colorpalette@temp@palettename @\colorpalette@temp@colorname}{#1}{#2}
+}
+\newcommand\activepalette[2]{%
+ \colorpalette@themecheck{#1}
+ \colorpalette@palettecheck{#1}{#2}
+ \expandafter\def\csname colorpalette@#1@active\endcsname{#2}%
+}
+\newcommand\getcolor[2]{colorpalette@#1@\csname colorpalette@#1@active\endcsname @#2}
+\newcommand\applycolor[2]{%
+ \colorpalette@themecheck{#1}%
+ \colorpalette@colorcheck{#1}{#2}%
+ \color{\getcolor{#1}{#2}}%
+}
+\newcommand\colorpalette@themecheck[1]{\listexists{colorpalette@theme@#1@palettes}{}{\colorpalette@error@theme{#1}}}
+\newcommand\colorpalette@palettecheck[2]{\listcontains{colorpalette@theme@#1@palettes}{#2}{}{\colorpalette@error@palette{#1}{#2}}}
+\newcommand\colorpalette@colorcheck[2]{\listcontains{colorpalette@theme@#1@colors}{#2}{}{\colorpalette@error@color{#1}{#2}}}
+\newcommand\colorpalette@error@theme[1]{\PackageError{colorpalette}{The theme `#1' passed in is not defined}{}}
+\newcommand\colorpalette@error@palette[2]{\PackageError{colorpalette}{The palette `#2' passed in is not a defined palette of theme `#1'}{}}
+\newcommand\colorpalette@error@color[2]{\PackageError{colorpalette}{The color `#2' passed in is not a defined color of theme `#1'}{}}
+%%
+%% This package consists of the file palette.dtx,
+%% and the generated files colorpalette.sty,
+%% symbolpalette.sty,
+%% palette.pdf.
+%%
+%% End of file `colorpalette.sty'.
diff --git a/Master/texmf-dist/tex/latex/palette/symbolpalette.sty b/Master/texmf-dist/tex/latex/palette/symbolpalette.sty
new file mode 100644
index 00000000000..170612dd207
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/palette/symbolpalette.sty
@@ -0,0 +1,67 @@
+%%
+%% This is file `symbolpalette.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% palette.dtx (with options: `symbol')
+%%
+%% This is a generated file.
+%%
+%% Copyright (C) 2021 Dennis Chen <proofprogram@gmail.com>
+%%
+%% This work may be distributed and/or modified under
+%% the conditions the LaTeX Project Public License (LPPL),
+%% either version 1.3 of this license or (at your option)
+%% any later version. The latest version of this license
+%% can be found in
+%%
+%% http://www.latex-project.org/lppl.txt
+%%
+%% and version 1.3 or later is part of all distributions of LaTeX
+%% version 2005/12/01 or later.
+%%
+%% To produce the documentation, run palette.dtx through pdflatex.
+%%
+
+
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{symbolsuite}
+[2021/07/27 v1.0.0 Create palettes for colors and symbols]
+\RequirePackage{macrolist}
+\newcommand\newsuitetheme[1]{
+ \newlist{symbolsuite@theme@#1@suites}
+ \newlist{symbolsuite@theme@#1@symbols}
+}
+\newcommand\addsymboltotheme[2]{
+ \symbolsuite@themecheck{#1}
+ \listadd{symbolsuite@theme@#1@symbols}{#2}
+}
+\newcommand\newsuite[2]{
+ \symbolsuite@themecheck{#1}
+ \listadd{symbolsuite@theme@#1@suites}{#2}
+}
+\newcommand\setsuitesymbol[4]{\expandafter\def\csname symbolsuite@#1@#2@#3\endcsname{#4}}
+\newcommand\activesuite[2]{
+ \symbolsuite@themecheck{#1}
+ \symbolsuite@suitecheck{#1}{#2}
+ \expandafter\def\csname symbolsuite@#1@active\endcsname{#2}
+}
+\newcommand\printsymbol[2]{%
+ \symbolsuite@themecheck{#1}%
+ \symbolsuite@symbolcheck{#1}{#2}%
+ \csname symbolsuite@#1@\csname symbolsuite@#1@active\endcsname @#2\endcsname%
+}
+\newcommand\symbolsuite@themecheck[1]{\listexists{symbolsuite@theme@#1@suites}{}{\symbolsuite@error@theme{#1}}}
+\newcommand\symbolsuite@suitecheck[2]{\listcontains{symbolsuite@theme@#1@suites}{#2}{}{\symbolsuite@error@suite{#1}{#2}}}
+\newcommand\symbolsuite@symbolcheck[2]{\listcontains{symbolsuite@theme@#1@symbols}{#2}{}{\symbolsuite@error@symbol{#1}{#2}}}
+\newcommand\symbolsuite@error@theme[1]{\PackageError{symbolsuite}{The theme `#1' passed in is not defined}{}}
+\newcommand\symbolsuite@error@suite[2]{\PackageError{symbolsuite}{The suite `#2' passed in is not a defined suite of theme `#1'}{}}
+\newcommand\symbolsuite@error@symbol[2]{\PackageError{symbolsuite}{The symbol `#2' passed in is not a defined color of theme `#1'}{}}
+%%
+%% This package consists of the file palette.dtx,
+%% and the generated files colorpalette.sty,
+%% symbolpalette.sty,
+%% palette.pdf.
+%%
+%% End of file `symbolpalette.sty'.
diff --git a/Master/tlpkg/bin/tlpkg-ctan-check b/Master/tlpkg/bin/tlpkg-ctan-check
index 90c9ace7a99..a57679c74d8 100755
--- a/Master/tlpkg/bin/tlpkg-ctan-check
+++ b/Master/tlpkg/bin/tlpkg-ctan-check
@@ -578,7 +578,7 @@ my @TLP_working = qw(
overlays overlock overpic
pacioli padauk padcount
pagecolor pagecont pagenote pagerange pagesel pageslts
- palatino paper papercdcase papermas papertex
+ palatino palette paper papercdcase papermas papertex
paracol parades paralist parallel paratype
paresse parnotes parrun parsa parselines parskip
pas-cours pas-crosswords pas-cv pas-tableur passivetex
diff --git a/Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc b/Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc
index b63f81422a4..237648224b1 100644
--- a/Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc
+++ b/Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc
@@ -923,6 +923,7 @@ depend pagecont
depend pagenote
depend pagerange
depend pageslts
+depend palette
depend paper
depend papercdcase
depend papermas
diff --git a/Master/tlpkg/tlpsrc/palette.tlpsrc b/Master/tlpkg/tlpsrc/palette.tlpsrc
new file mode 100644
index 00000000000..e69de29bb2d
--- /dev/null
+++ b/Master/tlpkg/tlpsrc/palette.tlpsrc