texlive[67082] Master: codedescribe (12may23)

commits+karl at tug.org commits+karl at tug.org
Fri May 12 22:27:51 CEST 2023


Revision: 67082
          http://tug.org/svn/texlive?view=revision&revision=67082
Author:   karl
Date:     2023-05-12 22:27:50 +0200 (Fri, 12 May 2023)
Log Message:
-----------
codedescribe (12may23)

Modified Paths:
--------------
    trunk/Master/tlpkg/bin/tlpkg-ctan-check
    trunk/Master/tlpkg/libexec/ctan2tds
    trunk/Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc

Added Paths:
-----------
    trunk/Master/texmf-dist/doc/latex/codedescribe/
    trunk/Master/texmf-dist/doc/latex/codedescribe/README.md
    trunk/Master/texmf-dist/doc/latex/codedescribe/codedescribe.pdf
    trunk/Master/texmf-dist/doc/latex/codedescribe/codedescribe.tex
    trunk/Master/texmf-dist/tex/latex/codedescribe/
    trunk/Master/texmf-dist/tex/latex/codedescribe/codedescribe.sty
    trunk/Master/texmf-dist/tex/latex/codedescribe/codelisting.sty
    trunk/Master/tlpkg/tlpsrc/codedescribe.tlpsrc

Added: trunk/Master/texmf-dist/doc/latex/codedescribe/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/codedescribe/README.md	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/codedescribe/README.md	2023-05-12 20:27:50 UTC (rev 67082)
@@ -0,0 +1,90 @@
+
+codedescribe / codelisting
+==========
+
+These are expl3 based packages for LaTeX/expl3 code documetation.
+### codedescribe
+ provides a series of macros/environments (similar to doc/docx/doc3) for package/classes documentantion
+### codelisting
+ provides a few macros for LaTeX code listing/demo.
+
+They are designed to be 'as class independent as possible',
+no assumption about underline macros is made.
+Furthermore, it's assumed that *\maketitle* and the *abstract* environment
+were modified by the underline class, so alternatives (based on the article class) are provided.
+
+For more details,  see the documentation,
+[codedescribe.pdf](http://mirrors.ctan.org/macros/latex/contrib/codedescribe/doc/codedescribe.pdf)
+
+--------------
+
+## Requirements
+* none besides a fairly recent LaTeX distribution as recent as 2022/06/01
+(with the new in kernel *\ProcessKeyOptions* and *\NewDocumentCommand*)
+
+## Installation
+The stable version is available at [CTAN](https://ctan.org/pkg/codedescribe).
+
+## Usage
+### Stable version
+Just place
+```latex
+  \usepackage{codedescribe}
+```
+
+in the preamble and compile away.
+
+
+Be aware that options might change between versions, so you have to check them manually.
+
+## More Information and documentation
+More Information can be found in the documentation; you can find a  "bleeding edge" version
+at [the github page](http://github.com/alceu-frigeri/codedescribe)
+
+## Contacting Author
+
+For bug reports and enhacement suggestions, the preferred way is to use
+[the project's issue page](https://github.com/alceu-frigeri/codedescribe/issues).
+Please be ready to provide an example code showing the bug, if any.
+
+Please do not use the issue page for generic help on how to use the package.
+
+* git: https://github.com/alceu-frigeri/codedescribe
+
+-------------
+Copyright 2023 by Alceu Frigeri
+
+ This work may be distributed and/or modified under the
+ conditions of
+
+ * The [LaTeX Project Public License](http://www.latex-project.org/lppl.txt), version 1.3c (or later), and/or
+ * The [GNU Affero General Public License](https://www.gnu.org/licenses/agpl-3.0.html), version 3 (or later)
+
+This work has the LPPL maintenance status *maintained*.
+
+The Current Maintainer of this work is Alceu Frigeri
+
+-------------
+## This work consists of the files
+
+* codelisting.sty
+    - set of macros to typeset and demonstrate LaTeX code
+
+* codedescribe.sty
+    - set of macros to document LaTeX packages
+
+* README.md (this file)
+    - quick introduction
+
+* codedescribe.tex
+    - package documentation
+
+* codedescribe.pdf
+    - documentation in PDF format
+
+-------------
+
+## Changelog
+
+* Version 1.0 (this)
+    - Initial release by CTAN


Property changes on: trunk/Master/texmf-dist/doc/latex/codedescribe/README.md
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/codedescribe/codedescribe.pdf
===================================================================
(Binary files differ)

Index: trunk/Master/texmf-dist/doc/latex/codedescribe/codedescribe.pdf
===================================================================
--- trunk/Master/texmf-dist/doc/latex/codedescribe/codedescribe.pdf	2023-05-12 20:26:41 UTC (rev 67081)
+++ trunk/Master/texmf-dist/doc/latex/codedescribe/codedescribe.pdf	2023-05-12 20:27:50 UTC (rev 67082)

Property changes on: trunk/Master/texmf-dist/doc/latex/codedescribe/codedescribe.pdf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/pdf
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/codedescribe/codedescribe.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/codedescribe/codedescribe.tex	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/codedescribe/codedescribe.tex	2023-05-12 20:27:50 UTC (rev 67082)
@@ -0,0 +1,433 @@
+% !TEX program = pdflatex
+% !TEX ext =  --interaction=nonstopmode --enable-etex --enable-write18
+% !BIB program = none
+%%%==============================================================================
+%% Copyright 2022 by Alceu Frigeri
+%%
+%% This work may be distributed and/or modified under the conditions of
+%%
+%% * The [LaTeX Project Public License](http://www.latex-project.org/lppl.txt),
+%%   version 1.3c (or later), and/or
+%% * The [GNU Affero General Public License](https://www.gnu.org/licenses/agpl-3.0.html),
+%%   version 3 (or later)
+%%
+%% This work has the LPPL maintenance status *maintained*.
+%%
+%% The Current Maintainer of this work is Alceu Frigeri
+%%
+%% This is version 1.0 (2023/05/11)
+%%
+%% The list of files that compose this work can be found in the README.md file at
+%% https://ctan.org/pkg/democodetools
+%%
+%%%==============================================================================
+%\documentclass[dctools,english]{ufrgscca}
+\documentclass{article}
+\RequirePackage[verbose,a4paper,marginparwidth=27.5mm,top=2.5cm,bottom=1.5cm,hmargin={40mm,20mm},marginparsep=2.5mm,columnsep=10mm,asymmetric]{geometry}
+\usepackage{codedescribe}
+\usepackage{enumitem}
+
+\begin{document}
+
+%%% TO BE DETERMINED !! \parindent
+%%%\setlength\parindent{0pt}
+
+\tstitle{
+  author={Alceu Frigeri\footnote{\tsverb{https://github.com/alceu-frigeri/codedescribe}}},
+  date={2023/05/11},
+  title={The codedescribe and codelisting Packages\break Version \PkgInfo{codedesc}{version}}
+  }
+  
+\begin{typesetabstract}
+
+This documentation package is designed to be `as class independent as possible', depending only on \tsobj[pkg]{expl3,scontents,listing}. Unlike other packages of the kind, a minimal set of macros/commands/environments is defined: most/all defined commands have an 'object type' as a \tsobj[key]{keyval} parameter, allowing for an easy expansion mechanism (instead of the usual 'one set of macros/environments' for each object type).
+
+No assumption about page layout is made (besides `having a marginpar'),  or underlying macros, so that it can be used with any document class.
+
+\end{typesetabstract}
+
+\tableofcontents
+
+%\setcodefmt{fontsize=\large}
+
+\section{Introduction}
+
+This package aims to document both \tsobj[code]{Document} level (i.e. final user) commands, as well \tsobj[code]{Package/Class} level commands. It's fully implemented using \tsobj[pkg]{expl3} syntax and structures, in special \tsobj[pkg]{l3coffins, l3seq, l3keys}. Besides those \tsobj[pkg]{scontents,listing} packages are used to typeset code snippets.
+ 
+ 
+No other package/class is needed, any class can be used as the base one, which allows to demonstrate the documented commands with any desired layout.
+
+\tsobj[pkg]{codelisting} defines a few macros to display and demonstrate \LaTeX~ code (using \tsobj[pkg]{listings} and \tsobj[pkg]{scontents}), whilst \tsobj[pkg]{codedescribe} defines a series of macros to display/enumerate macros and environments (somewhat resembling the \tsobj[pkg]{doc3} style).
+
+\subsection{Single versus Multi-column Classes}
+This package 'can' be used with multi-column classes, given that the \tsobj[code]{\linewidth,\columnsep} are defined appropriately. \tsobj{\linewidth} shall defaults to text/column real width, whilst \tsobj{\columnsep}, if needed (2 or more columns) shall be greater than \tsobj{\marginparwidth} plus \tsobj{\marginparsep}.
+
+\subsection{Current Version}
+This doc regards to \tsobj[pkg]{codedescribe} version \PkgInfo{codedesc}{version}~ and \tsobj[pkg]{codelisting} version \PkgInfo{codedesc}{version}. Those two packages are fairly stable, and given the \tsobj[meta]{obj-type} mechanism (see below, \ref{obj-type-def}) it can be easily extended without changing it's interface.
+
+\section{codelisting Package}
+
+It requires two packages: \tsobj[pkg]{listings,scontents},  defines an environment: \tsobj[env]{codestore} and 
+ 2 main commands: \tsobj[code]{\tscode,\tsdemo} and 1 auxiliary command: \tsobj{\setcodekeys}.
+
+\subsection{In Memory Code Storage}
+Thanks to \tsobj[pkg]{scontents} (\tsobj[pkg]{expl3} based) it's possible to store \LaTeX~ code snippets in a \tsobj[pkg]{expl3} key.
+
+
+\begin{codedescribe}[env,rulecolor=white]{codestore}
+	\begin{codesyntax}
+		\tsmacro{\begin{codestore}}[stcontents-keys]{}
+    \tsmacro{\end{codestore}}{}
+	\end{codesyntax}
+This environment is an alias to \tsobj[env]{scontents} environment (from \tsobj[pkg]{scontents} package), all \tsobj[pkg]{scontents} keys are valid, with two additional ones: \tsobj[key]{st,store-at} which are aliases to the \tsobj[key]{store-env} key. If an 'isolated' \tsobj[key,meta]{st-name} is given (unknown \tsobj[key]{key}), it is assumed 'by Default' that the environment body shall be stored in it (for use with \tsobj[code]{\tscode,\tsdemo}).
+\end{codedescribe}
+
+
+
+\subsection{Code Display/Demo}
+\begin{codedescribe}{\tscode*,\tsdemo*}
+	\begin{codesyntax}%
+		\tsmacro{\tscode*}[code-keys]{st-name}
+		\tsmacro{\tsdemo*}[code-keys]{st-name}
+	\end{codesyntax}
+\tsmacro{\tscode}{} just typesets \tsobj[meta]{st-name} (the key-name created with \tsobj[env]{stcode}), in verbatim mode with syntax highlight. The non-star version centers it and use just half of the base line. The star version uses the full text width.
+
+\tsmacro{\tsdemo*}{} first typesets \tsobj[meta]{st-name}, as above, then it \emph{executes} said code. The non-start versions place them side-by-side, whilst the star versions places one following the other.
+\end{codedescribe}
+
+
+For Example:
+
+\begin{codestore}[st=democodestore]
+	\begin{codestore}[stmeta]
+		Some \LaTeX~coding, for example: \ldots.
+  \end{codestore}
+  
+This will just typesets \tsobj[key]{stmeta}:
+
+\tscode*[codeprefix={Sample Code:}] {stmeta}
+
+and this will demonstrate it, side by side with source code:
+
+\tsdemo[numbers=left,ruleht=0.5,
+    codeprefix={inner sample code},
+    resultprefix={inner sample result}] {stmeta}
+\end{codestore}
+
+\tsdemo*[emph2={tscode,tsdemo},emph={stmeta},keywd2={codestore}]{democodestore}
+
+\begin{codedescribe}{\setcodekeys}
+	\begin{codesyntax}%
+		\tsmacro{\setcodekeys}{code-keys}
+	\end{codesyntax}
+
+Instead of setting/defining \tsmeta{code-keys} per \tsmacro{\tscode}{}/\tsmacro{\tsdemo}{} call, one can set those \emph{globally}, better said, \emph{in the called context group} .\\
+\begin{tsremark}[N.B.:]
+All \tsobj[code]{\tscode,\tsdemo} commands create a local group  in which the \tsmeta{code-keys} are defined, and discarded once said local group is closed. \tsmacro{\setcodekeys}{} defines those keys in the \emph{current} context/group.
+\end{tsremark}
+\end{codedescribe}
+
+
+
+
+\subsubsection{Code Keys}
+Using a \tsobj[key]{key}\,=\tsobj[value]{value} syntax, one can fine tune \tsobj[pkg]{listings} syntax highlight.
+
+\begin{codedescribe}[key]{settexcs,texcs,texcsstyle}
+\begin{codesyntax}% Also
+	\tsobj[key]{settexcs,settexcs2,settexcs3}
+	\tsobj[key]{texcs,texcs2,texcs3}
+	\tsobj[key]{texcsstyle,texcs2style,texcs3style}
+\end{codesyntax}
+Those define sets of \LaTeX~commands (csnames), the \tsobj[key]{set} variants initialize/redefine those sets (an empty list, clears the set), while the others extend those sets. The \tsobj[key]{style} ones redefines the command display style (an empty \tsobj[meta]{value} resets the style to it's default).\\
+\end{codedescribe}
+
+\begin{codedescribe}[key]{setkeywd,keywd,keywdstyle}
+\begin{codesyntax}	%
+	\tsobj[key]{setkeywd,setkeywd2,setkeywd3}
+	\tsobj[key]{keywd,keywd2,keywd3}
+	\tsobj[key]{keywdstyle,keywd2style,keywd3style}
+\end{codesyntax}
+Same for other \emph{keywords} sets.\\
+\end{codedescribe}
+
+\begin{codedescribe}[key]{setemph,emph,emphstyle}
+\begin{codesyntax}	%
+	\tsobj[key]{setemph,setemph2,setemph3}
+	\tsobj[key]{emph,emph2,emph3}
+	\tsobj[key]{emphstyle,emph2style,emph3style}
+\end{codesyntax}
+for some extra emphasis sets.\\
+\end{codedescribe}
+
+\begin{codedescribe}[key]{numbers,numberstyle}
+\begin{codesyntax} %
+	\tsobj[key]{numbers,numberstyle}
+\end{codesyntax}
+\tsobj[key]{numbers} possible values are \tsobj[value]{none} (default) and \tsobj[value]{left} (to add tinny numbers to the left of the listing). With \tsobj[key]{numberstyle} one can redefine the numbering style.\\
+\end{codedescribe}
+
+\begin{codedescribe}[key]{stringstyle,codestyle}
+\begin{codesyntax} %
+	\tsobj[key]{stringstyle,commentstyle}
+\end{codesyntax}
+to redefine \tsobj[key]{strings} and \tsobj[key]{comments} formatting style.\\
+\end{codedescribe}
+
+\begin{codedescribe}[key]{bckgndcolor}
+\begin{codesyntax} %
+	\tsobj[key]{bckgndcolor}
+\end{codesyntax}
+to change the listing background's color.\\
+\end{codedescribe}
+
+\begin{codedescribe}[key]{codeprefix,resultprefix}
+\begin{codesyntax} %
+	\tsobj[key]{codeprefix,resultprefix}
+\end{codesyntax}
+those set the \tsobj[key]{codeprefix} (default: \LaTeX~Code:) and \tsobj[key]{resultprefix} (default: \LaTeX~Result:)
+\end{codedescribe}
+
+\begin{codedescribe}[key]{parindent}
+\begin{codesyntax} %
+	\tsobj[key]{parindent}
+\end{codesyntax}
+Sets the indentation to be used when 'demonstrating' \LaTeXe code (\tsobj[code]{\tsdemo}). Defaults to whatever value \tsobj[code]{\parindent} was when the package was first loaded.
+\end{codedescribe}
+
+\begin{codedescribe}[key]{ruleht}
+\begin{codesyntax} %
+	\tsobj[key]{ruleht}
+\end{codesyntax}
+When typesetting the 'code demo' (\tsobj{\tsdemo}) a set of rules is drawn. The Default, 1, equals to \tsobj{\arrayrulewidth} (usually 0.4pt).
+\end{codedescribe}
+
+
+
+\section{codedescribe Package}
+
+This package aims at minimizing the number of commands, having the object kind (if a macro, or a function, or environment, or variable, or key ...) as a parameter, allowing for a simple 'extension mechanism': other object types can be easily introduced without having to change, or add commands.
+
+\subsection{Package Options}
+It has a single package option:
+\begin{describelist}{option}
+\describe{nolisting}{it will suppress the \tsobj[pkg]{codelisting} package load. In case it's not necessary or one wants to use a differen package for \LaTeX\ code listing.}
+\end{describelist}
+
+\subsection{\tsobj[oarg]{obj-type} keys}\label{obj-type-def}
+
+
+The current  known Object Types (keys)  are: 
+\begin{itemize}[noitemsep]
+\item \tsobj[keys]{meta} for a 'general' case,
+\item \tsobj[keys]{arg,marg,oarg,parg,xarg} for commands/functions arguments,
+\item \tsobj[keys]{code,macro,function} for macros in general,
+\item \tsobj[keys]{syntax} to describe/typeset code syntax,
+\item \tsobj[keys]{key,keys,keyval,value,defaultval} to list keys, values, etc.,
+\item \tsobj[keys]{option} for package/macros options,
+\item \tsobj[keys]{env} for environments,
+\item \tsobj[keys]{pkg,pack} for packages.
+\end{itemize}
+% Besides those, for \tsmacro{\tsobj}{} one has \tsobj[keys]{sep,comma} keys to change the last 'connector term' (default: and) and \tsobj[keys]{rulecolor,new,update,note} to customize the \tsobj[env]{codedescribe} environment.
+The format's defaults can be changed with \tsobj{\setcodefmt}
+
+\begin{codedescribe}[code]{\setcodefmt}
+\begin{codesyntax} %
+	\tsmacro{\setcodefmt}{fmt-keys}
+\end{codesyntax}
+\tsobj[marg]{fmt-keys} are basically the same as above:
+\begin{itemize}[noitemsep]
+  \item To change default colors: (note each group defines a single entry/alias)
+ \begin{itemize}[noitemsep]
+\item \tsobj[keys,sep=or]{meta,marg,arg} ,
+\item \tsobj[keys,sep=or]{oarg,parg,xarg} ,
+\item \tsobj[keys,sep=or]{code,macro,function} ,
+\item \tsobj[keys,sep=or]{syntax} ,
+\item \tsobj[keys,sep=or]{key,keys,keyval,value} ,
+\item \tsobj[keys,sep=or]{defaultval} ,
+\item \tsobj[keys,sep=or]{option} ,
+\item \tsobj[keys,sep=or]{env} ,
+\item \tsobj[keys,sep=or]{pkg,pack} ,
+\item \tsobj[keys,sep=or]{allcolors} to set all colors at once, single value.
+  \end{itemize}
+\item others
+  \begin{itemize}
+    \item \tsobj[keys]{font} to change font (default: \tsobj{\ttfamily})
+    \item \tsobj[keys]{fontsize} to change size (default: \tsobj{\small})
+    \item \tsobj[keys]{fontshape} to change the used 'slshape' (default: \tsobj{\slshape})
+  \end{itemize}
+\end{itemize}
+
+\end{codedescribe}
+
+
+
+\subsection{Environments}
+\begin{codedescribe}[env,new=2023/05/01,update=2023/05/1,note={this is an example}]{codedescribe}
+\begin{codesyntax}
+\tsmacro{\begin{codedescribe}}[obj-type]{csv-list}
+\ldots
+\tsmacro{\end{codedescribe}}{}
+\end{codesyntax}
+This is the main environment to describe \tsobj[env]{Macros, Functions, Variable, Environments, etc.}  \tsobj[meta]{csv-list} is typeset in the margin. The optional \tsobj[oarg]{obj-type} defines the object-type format. 
+\end{codedescribe}
+\begin{tsremark}
+One can change the rule color with the key \tsobj[keys]{rulecolor}, for instance \tsmacro{\begin{codedescribe}[rulecolor=white]}{} will remove the rules.
+\end{tsremark}
+\begin{tsremark}
+Besides that, one can use the keys \tsobj[keys]{new,update,note} to further customize it as: \tsverb{\begin{codedescribe}[new=2023/05/01,update=2023/05/1,note={this is an example}]}
+\end{tsremark}
+
+
+\begin{codedescribe}[env]{codesyntax}
+\begin{codesyntax}
+\tsmacro{\begin{codesyntax}}{}
+\end{codesyntax}
+The \tsobj[env]{codesyntax} environment sets the fontsize and activates \tsmacro{\obeylines,\obeyspaces}{}, so one can list macros/cmds/keys use, one per line.
+
+\end{codedescribe}
+
+\begin{tsremark}
+\tsobj[env]{codesyntax} environment shall appear only once, inside of a \tsobj[env]{codedescribe} environment. Take note, as well, this is not a verbatim environment!
+%\begin{describelist*}{code}
+%\describe{something}{ a text}
+%\describe{some}{ some text}
+%\end{describelist*}
+%
+\end{tsremark}
+
+For example, the code for  \tsobj[env]{codedescribe} (entry above) is:
+
+\begin{codestore}[demoD]
+\begin{codedescribe}[env,new=2023/05/01,update=2023/05/1,note={this is an example}]{codedescribe}
+  \begin{codesyntax}
+    \tsmacro{\begin{codedescribe}}[obj-type]{csv-list}
+    \ldots
+    \tsmacro{\end{codedescribe}}{}
+  \end{codesyntax}
+  This is the main ...
+\end{codedescribe}
+\end{codestore}  
+
+\tscode*{demoD}
+
+
+
+\begin{codedescribe}[env]{describelist,describelist*}
+  \begin{codesyntax}
+\tsmacro{\begin{describelist}}[item-indent]{obj-type}
+..\tsmacro{\describe}{item-name,item-description}
+..\tsmacro{\describe}{item-name,item-description}
+\ldots
+\tsmacro{\end{describelist}}{}
+  \end{codesyntax}
+This sets a \tsobj[env]{description} like 'list'. In the non-star version the \tsobj[marg]{items-name} will be typeset on the marginpar. In the star version, \tsobj[marg]{item-description} will be indented by \tsobj[oarg]{item-indent} (defaults to: 20mm).
+\tsobj[marg]{obj-type} defines the object-type format used to typeset \tsobj[marg]{item-name}. 
+\end{codedescribe}
+
+\begin{codedescribe}[code]{\describe}
+\begin{codesyntax}
+\tsmacro{\describe}{item-name,item-description}
+\end{codesyntax}
+This is the \tsobj[env]{describelist} companion macro. In case of the \tsobj[env]{describe*}, \tsobj[marg]{item-name} will be typeset in a box \tsobj[oarg]{item-ident} wide, so that \tsobj[marg]{item-description} will be fully indented, otherwise \tsobj[marg]{item-name} will be typed in the marginpar.
+\end{codedescribe}
+
+
+\subsection{Commands}
+
+
+\begin{codedescribe}[code]{\typesetobj,\tsobj}
+\begin{codesyntax}
+\tsmacro{\typesetobj}[obj-type]{csv-list}
+\tsmacro{\tsobj}[obj-type]{csv-list}
+\end{codesyntax}
+It can be used to typeset a single 'object' or a list thereof. In the case of a list, each term will be separated by commas. The last two  by \tsobj[key]{sep} (defaults to: and).
+\end{codedescribe}
+\begin{tsremark}
+One can change the last 'separator' with the key \tsobj[keys]{sep}, for instance \tsverb[code]{\tsobj[env,sep=or] {}} (in case one wants to produce an 'or' list of environments). Additionally, one can use the key \tsobj[keys]{comma} to change the last separator to a single comma, like \tsverb[code]{\tsobj[env,comma] {}}.
+\end{tsremark}
+
+\begin{codedescribe}[code]{\typesetargs,\tsargs}
+\begin{codesyntax}
+\tsmacro{\typesetargs}[obj-type]{csv-list}
+\tsmacro{\tsargs}[obj-type]{csv-list}
+\end{codesyntax}
+ Those will typeset \tsobj[marg]{csv-list} as a list of parameters, like \tsargs[oarg]{arg1,arg2,arg3}, or \tsargs[marg]{arg1,arg2,arg3}, etc. \tsobj[oarg]{obj-type} defines the formating AND kind of braces used: \tsverb{[]} for optional arguments (oarg), \tsverb{{}} for mandatory arguments (marg), and so on.
+\end{codedescribe}
+
+
+\begin{codedescribe}[code]{\typesetmacro,\tsmacro}
+\begin{codesyntax}
+\tsmacro{\typesetmacro}{macro-list}\tsargs[oarg]{oargs-list}\tsargs[marg]{margs-list}
+\tsmacro{\tsmacro}{macro-list}\tsargs[oarg]{oargs-list}\tsargs[marg]{margs-list}
+\end{codesyntax}
+This is just a short-cut for\par \tsobj[code]{\tsobj [code] {macro-list}} \tsobj[code]{\tsargs [oarg] {oargs-list}} \tsobj[code]{\tsargs [marg] {margs-list}}.
+\end{codedescribe}
+
+\begin{codedescribe}[code]{\typesetmeta,\tsmeta}
+\begin{codesyntax}
+\tsmacro{\typesetmeta}{name}
+\tsmacro{\tsmeta}{name}
+\end{codesyntax}
+ Those will just typeset \tsobj[meta]{name} between left/right 'angles' (no other formatting).
+\end{codedescribe}
+
+\begin{codedescribe}[code]{\typesetverb,\tsverb}
+\begin{codesyntax}
+\tsmacro{\typesetverb}[obj-type]{verbatim text}
+\tsmacro{\tsverb}[obj-type]{verbatim text}
+\end{codesyntax}
+ Typesets \tsobj[marg]{verbatim text} as is (verbatim...). \tsobj[oarg]{obj-type} defines the used format.
+\end{codedescribe}
+
+\begin{codedescribe}[code]{\typesetmarginnote,\tsmarginnote}
+\begin{codesyntax}
+\tsmacro{\typesetmarginnote}{note}
+\tsmacro{\tsmarginnote}{note}
+\end{codesyntax}
+Typesets a small note at the margin.
+\end{codedescribe}
+
+\begin{codedescribe}[env]{tsremark}
+\begin{codesyntax}
+\tsmacro{\begin{tsremark}[NB]}{}
+\tsmacro{\end{tsremark}}{}
+\end{codesyntax}
+ The environment body will be typeset as a text note. \tsobj[oarg]{NB} (defaults to Note:) is the note begin (in boldface). For instance:
+ \begin{codestore}[demo.remark]
+ Sample text. Sample test.
+  \begin{tsremark}[N.B.]
+    This is an example.
+  \end{tsremark}
+ \end{codestore}
+ \tsdemo{demo.remark}
+\end{codedescribe}
+
+\subsection{Auxiliar Command / Environment}
+In case the used Document Class redefines the \tsobj[code]{\maketitle} command and/or \tsobj[env]{abstract} environment, alternatives are provided (based on the article class).
+
+\begin{codedescribe}[code]{typesettitle,tstitle}
+\begin{codesyntax}
+\tsmacro{\typesettitle}{title-keys}
+\tsmacro{\tstitle}{title-keys}
+\end{codesyntax}
+This is based on the \tsobj[code]{\maketitle} from the \tsobj[pkg]{article} class. The \tsobj[marg]{title-keys} are:
+\end{codedescribe}
+
+\begin{describelist}{key}
+\describe{title}{The used title.}
+\describe{author}{Author's name. It's possible to use \tsobj[code]{\footnote} command in it.}
+\describe{date}{Title's date.}
+\end{describelist}
+
+\begin{codedescribe}[env]{tsabstract}
+\begin{codesyntax}
+\tsmacro{\begin{tsabstract}}{}
+\ldots
+\tsmacro{\end{tsabstract}}{}
+\end{codesyntax}
+This is the \tsobj[env]{abstract} environment from the \tsobj[pkg]{article} class.
+\end{codedescribe}
+
+
+\end{document} 
\ No newline at end of file


Property changes on: trunk/Master/texmf-dist/doc/latex/codedescribe/codedescribe.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/codedescribe/codedescribe.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/codedescribe/codedescribe.sty	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/codedescribe/codedescribe.sty	2023-05-12 20:27:50 UTC (rev 67082)
@@ -0,0 +1,964 @@
+%%%==============================================================================
+%% Copyright 2023 by Alceu Frigeri
+%%
+%% This work may be distributed and/or modified under the conditions of
+%%
+%% * The [LaTeX Project Public License](http://www.latex-project.org/lppl.txt),
+%%   version 1.3c (or later), and/or
+%% * The [GNU Affero General Public License](https://www.gnu.org/licenses/agpl-3.0.html),
+%%   version 3 (or later)
+%%
+%% This work has the LPPL maintenance status *maintained*.
+%%
+%% The Current Maintainer of this work is Alceu Frigeri
+%%
+%% This is version 1.0.1beta (2023/05/11)
+%%
+%% The list of files that compose this work can be found in the README.md file at
+%% https://ctan.org/pkg/codedescribe
+%%
+%%%==============================================================================
+\NeedsTeXFormat{LaTeX2e}[2022/06/01]
+\RequirePackage{ expl3 }
+\ProvidesExplPackage
+    {codedescribe}
+    {2023/05/11}
+    {1.0}
+    {LaTeX Code Description/Documentation}
+
+\prop_if_exist:NTF \g__codedesc_pkg_prop
+  {}
+  { \prop_new:N \g__codedesc_pkg_prop }
+  
+\prop_put_from_keyval:Nn \g__codedesc_pkg_prop
+  {
+    codedesc . name         = codedescribe ,
+    codedesc . prefix       = codedesc ,
+    codedesc . date         = 2023/05/11 ,
+    codedesc . version      = 1.0 ,
+    codedesc . description  = LaTeX Code Description/Documentation
+  }
+
+\cs_gset:Npn \__codedesc_pkg_info:nn #1#2
+  {
+    \prop_item:Nn \g__codedesc_pkg_prop {#1.#2}
+  }
+
+\cs_if_exist:NTF \PkgInfo 
+  {}
+  {
+    \NewDocumentCommand \PkgInfo {mm} { \prop_item:Nn \g__codedesc_pkg_prop {#1.#2} }  
+  }
+
+
+\use:c {@reversemargintrue}
+
+\bool_new:N \l__codedesc_loadlisting_bool
+\bool_set_true:N \l__codedesc_loadlisting_bool
+
+\keys_define:nn { codedescribe }
+{
+  nolisting.usage:n = general,
+	nolisting.bool_set_inverse:N = \l__codedesc_loadlisting_bool,
+  nolisting.default:n = {true},
+}
+\ProcessKeyOptions [codedescribe ]
+
+\RequirePackage{xcolor}
+\bool_if:nT {\l__codedesc_loadlisting_bool}
+  {
+    \RequirePackage{codelisting}
+  }
+
+
+\cs_generate_variant:Nn \tl_set:Nn {Ne}
+
+
+
+%%%%%%%
+%%%
+%%% 'simplified' bold versions of \hline and \rule
+%%% those don't peek ahead (to see if they are followed by another line)
+%%%
+%%%%%%%
+\cs_new:Npn \__codedesc_hline:nnnn #1#2#3#4 {\noalign{#1\vskip #2\vskip 0pt\hrule height #3\arrayrulewidth\vskip #4\vskip 0pt}}
+\cs_new:Npn \__codedesc_hline:nn #1#2       {\__codedesc_hline:nnnn {#1}{-0.5ex}{#2}{0.25ex}}
+\cs_new:Npn \__codedesc_hline:n #1          {\__codedesc_hline:nnnn {#1}{-0.5ex}{2}{0.25ex}}
+\cs_new:Npn \__codedesc_rule:n #1 {\hrule height #1\arrayrulewidth}
+\cs_new:Npn \__codedesc_rule:     {\hrule height 2\arrayrulewidth}
+
+
+
+%%%%%%%
+%%%
+%%% To get the 'real' columnwidth (multicolumn case)
+%%% given the current \linewidth and \textwidth
+%%%
+%%%%%%%
+
+\dim_new:N \l__codedesc_linewidth_dim
+\dim_new:N \l__codedesc_textcolwidth_dim
+
+\cs_new:Npn \__codedesc_set_textcolwidth: 
+  {
+    \dim_compare:nNnTF {\linewidth} = {\l__codedesc_linewidth_dim}
+      {}
+      {
+%        \dim_set:Nn \l__codedesc_linewidth_dim {\linewidth}
+%        \fp_set:Nn \l_tmpa_fp {(\textwidth - \linewidth) / \textwidth}
+%        \dim_set:Nn \l__codedesc_textcolwidth_dim {\linewidth - \fp_use:N \l_tmpa_fp \columnsep}
+
+        \dim_set:Nn \l__codedesc_textcolwidth_dim {\linewidth}
+      }
+    
+  }
+
+\colorlet{c__codedesc_none_color}{red!70!black}
+
+\bool_new:N  \l__codedesc_descnotes_bool 
+\bool_new:N  \l__codedesc_descdate_new_bool 
+\tl_new:N    \l__codedesc_descdate_new_tl 
+\bool_new:N  \l__codedesc_descdate_update_bool 
+\tl_new:N    \l__codedesc_descdate_update_tl
+\bool_new:N  \l__codedesc_sidenote_bool 
+\tl_new:N    \l__codedesc_sidenote_tl
+
+
+\cs_new:Npn \__codedesc_keysmetadefaults:nn #1#2
+  {
+    \tl_if_blank:nTF {#2}
+      { \keys_set:nn {codedesc / defaults} { #1 } }
+      { \keys_set:nn {codedesc / defaults} { #1 = {#2} } }
+  }
+
+\keys_define:nn { codedesc / defaults }
+{
+  meta.usage:n = general,
+	meta.code:n = { \colorlet{c__codedesc_marg_color}{#1} } ,
+	meta.default:n = { gray!60!black } ,
+	%
+  marg.usage:n = general,
+	marg.code:n = { \__codedesc_keysmetadefaults:nn {meta}{#1} } ,
+	%
+  arg.usage:n = general,
+	arg.code:n = { \__codedesc_keysmetadefaults:nn {meta}{#1} } ,
+	%
+
+  oarg.usage:n = general,
+	oarg.code:n =  { \colorlet{c__codedesc_oarg_color}{#1} } ,
+  oarg.default:n = { gray!90!black } ,
+	%
+  parg.usage:n = general,
+	parg.code:n = { \__codedesc_keysmetadefaults:nn {oarg}{#1} } ,
+	%
+  xarg.usage:n = general,
+	xarg.code:n = { \__codedesc_keysmetadefaults:nn {oarg}{#1} } ,
+	%
+
+  code.usage:n = general,
+	code.code:n = { \colorlet{c__codedesc_code_color}{#1} } ,
+  code.default:n = { blue!40!black } ,
+	%
+  macro.usage:n = general,
+	macro.code:n = { \__codedesc_keysmetadefaults:nn {code}{#1} } ,
+	%
+  function.usage:n = general,
+	function.code:n = { \__codedesc_keysmetadefaults:nn {code}{#1} } ,
+	%
+
+  syntax.usage:n = general,
+	syntax.code:n = { \colorlet{c__codedesc_syntax_color}{#1} } ,
+  syntax.default:n = { blue!60!black } ,
+	%
+
+  keyval.usage:n = general,
+	keyval.code:n = { \colorlet{c__codedesc_keyval_color}{#1} } ,
+  keyval.default:n = { teal!40!black } ,
+	%
+  key.usage:n = general,
+	key.code:n = { \__codedesc_keysmetadefaults:nn {keyval}{#1} } ,
+  %
+  keys.usage:n = general,
+	keys.code:n = { \__codedesc_keysmetadefaults:nn {keyval}{#1} } ,
+	%
+  value.usage:n = general,
+	value.code:n = { \__codedesc_keysmetadefaults:nn {keyval}{#1} } ,
+	%
+
+  option.usage:n = general,
+	option.code:n = { \colorlet{c__codedesc_options_color}{#1} } ,
+  option.default:n = { green!30!black } ,
+	%
+
+  defaultval.usage:n = general,
+	defaultval.code:n = { \colorlet{c__codedesc_defaultval_color}{#1} } ,
+  defaultval.default:n = { blue!60!black } ,
+	%
+
+  env.usage:n = general,
+	env.code:n = { \colorlet{c__codedesc_env_color}{#1} } ,
+  env.default:n = { green!30!black } ,
+	%
+
+  pkg.usage:n = general,
+	pkg.code:n = { \colorlet{c__codedesc_pkg_color}{#1} } ,
+  pkg.default:n = { green!30!black } ,
+	%
+  pack.usage:n = general,
+	pack.code:n = { \__codedesc_keysmetadefaults:nn {pkg}{#1} } ,
+	%
+  
+  allcolors.usage:n = general,
+	allcolors.meta:n = 
+    { 
+      meta = {#1} ,
+      oarg = {#1} ,
+      code = {#1} ,
+      syntax = {#1} ,
+      keyval = {#1} ,
+      option = {#1} ,
+      defaultval = {#1} ,
+      env = {#1} ,
+      pkg = {#1} ,
+    } ,
+  allcolors.default:n = { black } ,
+  
+  font.usage:n = general ,
+  font.code:n = { \tl_set:Nn \__codedesc_metafont_tl: {#1} } ,
+  font.default:n = { \ttfamily } ,
+  
+  fontsize.usage:n = general ,
+  fontsize.code:n = { \tl_set:Nn \__codedesc_metasize_tl: {#1} } ,
+  fontsize.default:n = { \small } ,
+
+  fontshape.usage:n = general ,
+  fontshape.code:n = { \tl_set:Nn \__codedesc_slshape_tl: {#1} } ,
+  fontshape.default:n = { \slshape } ,
+
+  setdefaults.usage:n = general ,
+  setdefaults.meta:n = { meta, oarg, code, syntax, keyval, option, defaultval, env, pkg , font, fontsize, fontshape} , 
+
+  unknown.usage:n = general,
+	unknown.code:n = 
+    { }, % unknown keys are silently ignored...
+}
+
+\keys_set:nn {codedesc / defaults}{setdefaults}
+
+\NewDocumentCommand \setcodefmt {m} { \keys_set:nn {codedesc / defaults}{#1}}
+
+\keys_define:nn { codedesc / format }
+{
+  meta.usage:n = general,
+	meta.code:n = 
+    {
+      \tl_set:Nn \__codedesc_metacolor_tl: { \color{c__codedesc_marg_color} }
+      \tl_set:Nn \__codedesc_typeset_tl:n { \__codedesc_meta:n }
+      \tl_set:Nn \__codedesc_typeset_tl:o { \__codedesc_meta:o }
+    },
+  marg.usage:n = general,
+	marg.meta:n = { meta } ,
+	%
+	%
+  arg.usage:n = general,
+	arg.meta:n = { meta } ,
+	%
+
+  oarg.usage:n = general,
+	oarg.code:n = 
+    {
+      \tl_set:Nn \__codedesc_metacolor_tl: { \color{c__codedesc_oarg_color} }
+      \tl_set:Nn \__codedesc_typeset_tl:n { \__codedesc_meta:n }
+      \tl_set:Nn \__codedesc_typeset_tl:o { \__codedesc_meta:o }
+    },
+	%
+  parg.usage:n = general,
+	parg.meta:n = { oarg } ,
+	%
+  xarg.usage:n = general,
+	xarg.meta:n = { oarg } ,
+	%
+
+  code.usage:n = general,
+	code.code:n = 
+    {
+      \tl_set:Nn \__codedesc_metacolor_tl: { \color{c__codedesc_code_color} }
+      \tl_set:Nn \__codedesc_typeset_tl:n { \__codedesc_macro_typeset:n }
+      \tl_set:Nn \__codedesc_typeset_tl:o { \__codedesc_macro_typeset:o }
+    },
+	%
+  macro.usage:n = general,
+	macro.meta:n = { code } ,
+	%
+  function.usage:n = general,
+	function.meta:n = { code } ,
+	%
+
+  syntax.usage:n = general,
+	syntax.code:n = 
+    {
+      \tl_set:Nn \__codedesc_metacolor_tl: { \color{c__codedesc_syntax_color} }
+    },
+	%
+
+  keyval.usage:n = general,
+	keyval.code:n = 
+    {
+      \tl_set:Nn \__codedesc_metacolor_tl: { \color{c__codedesc_keyval_color} }
+      \tl_set:Nn \__codedesc_metashape_tl: { \__codedesc_slshape_tl: }
+    },
+	%
+  key.usage:n = general,
+	key.meta:n = { keyval } ,
+  %
+  keys.usage:n = general,
+	keys.meta:n = { keyval } ,
+	%
+  value.usage:n = general,
+	value.meta:n = { keyval } ,
+	%
+
+  option.usage:n = general,
+	option.code:n = 
+    {
+      \tl_set:Nn \__codedesc_metacolor_tl: { \color{c__codedesc_options_color} }
+    },
+	%
+
+  defaultval.usage:n = general,
+	defaultval.code:n = 
+    {
+      \tl_set:Nn \__codedesc_metacolor_tl: { \color{c__codedesc_defaultval_color} }
+    },
+	%
+
+  env.usage:n = general,
+	env.code:n = 
+    {
+      \tl_set:Nn \__codedesc_metacolor_tl: { \color{c__codedesc_env_color} }
+      \tl_set:Nn \__codedesc_metashape_tl: { \__codedesc_slshape_tl: }
+    },
+	%
+
+  pkg.usage:n = general,
+	pkg.code:n = 
+    {
+      \tl_set:Nn \__codedesc_metacolor_tl: { \color{c__codedesc_pkg_color} }
+      \tl_set:Nn \__codedesc_metashape_tl: { \__codedesc_slshape_tl: }
+    },
+	%
+  pack.usage:n = general,
+	pack.meta:n = { pkg } ,
+	%
+
+  sep.usage:n = general,
+	sep.code:n = 
+    {
+      \tl_set:Nn \__codedesc_lastsep_tl { ~#1~ }
+    },
+	%
+  comma.usage:n = general,
+  comma.code:n = 
+    {
+      \tl_set:Nn \__codedesc_lastsep_tl { ,~ }
+    },
+  %
+  rulecolor.usage:n = general,
+  rulecolor.code:n = 
+    {
+      \tl_set:Nn \__codedesc_rulecolor_tl: { \color{#1} }
+    },
+  %
+  new.usage:n = general,
+  new.code:n =
+    {
+      \bool_set_true:N \l__codedesc_descnotes_bool
+      \bool_set_true:N \l__codedesc_descdate_new_bool 
+      \tl_set:Nn       \l__codedesc_descdate_new_tl {#1}
+    },
+    
+  update.usage:n = general,
+  update.code:n =
+    {
+      \bool_set_true:N \l__codedesc_descnotes_bool
+      \bool_set_true:N \l__codedesc_descdate_update_bool 
+      \tl_set:Nn       \l__codedesc_descdate_update_tl {#1}
+    },
+    
+  note.usage:n = general,
+  note.code:n =
+    {
+      \bool_set_true:N \l__codedesc_descnotes_bool
+      \bool_set_true:N \l__codedesc_sidenote_bool 
+      \tl_set:Nn       \l__codedesc_sidenote_tl {#1}
+    },
+    
+  unknown.usage:n = general,
+	unknown.code:n = 
+    {
+      \tl_set:Nn \__codedesc_metacolor_tl: { \color{c__codedesc_none_color} }
+    },
+    
+}
+
+\cs_new:Npn \__codedesc_metafmt_set:n #1
+  {
+    \tl_set:Nn \__codedesc_rulecolor_tl: { \__codedesc_metacolor_tl: }
+    \tl_set:Nn \__codedesc_metashape_tl: { }
+    \tl_set:Nn \__codedesc_typeset_tl:n { }
+    \tl_set:Nn \__codedesc_typeset_tl:o { \relax }
+    \tl_set:Nn \__codedesc_sep_tl {,\ }
+    \tl_set:Nn \__codedesc_lastsep_tl {\ and\ }
+
+    \bool_set_false:N \l__codedesc_descnotes_bool
+    \bool_set_false:N \l__codedesc_descdate_new_bool 
+    \bool_set_false:N \l__codedesc_descdate_update_bool 
+    \bool_set_false:N \l__codedesc_sidenote_bool 
+
+    \keys_set:nn {codedesc / format}{#1}
+  }
+  
+\cs_generate_variant:Nn \__codedesc_metafmt_set:n {o}
+
+\cs_new:Npn \__codedesc_metafmt:n #1
+  {
+    \tl_set:Nn \__codedesc_rulecolor_tl: { \__codedesc_metacolor_tl: } 
+    \tl_set:Nn \__codedesc_metashape_tl: { }
+    \tl_set:Nn \__codedesc_typeset_tl:n { }
+    \tl_set:Nn \__codedesc_typeset_tl:o { }
+    \tl_set:Nn \__codedesc_sep_tl {,\ }
+    \tl_set:Nn \__codedesc_lastsep_tl {\ and\ }
+
+    \bool_set_false:N \l__codedesc_descnotes_bool
+    \bool_set_false:N \l__codedesc_descdate_new_bool 
+    \bool_set_false:N \l__codedesc_descdate_update_bool 
+    \bool_set_false:N \l__codedesc_sidenote_bool 
+
+    \keys_set:nn {codedesc / format}{#1}
+    %\tl_show:N \__codedesc_rulecolor_tl
+    \__codedesc_metafmt:
+  }
+
+\cs_generate_variant:Nn \__codedesc_metafmt:n {o}
+
+  
+\cs_new:Npn \__codedesc_metafmt: 
+  {
+    \__codedesc_metacolor_tl:
+    \__codedesc_metasize_tl:
+    \__codedesc_metafont_tl:
+    \__codedesc_metashape_tl:
+  }
+
+
+\keys_define:nn { codedesc / delimiters }
+{
+  oarg.usage:n = general,
+	oarg.code:n = 
+    {
+      \tl_set:Nn \__codedesc_open_delimit_tl {[}
+      \tl_set:Nn \__codedesc_close_delimit_tl {]}
+    },
+  marg.usage:n = general,
+	marg.code:n = 
+    {
+      \tl_set:Nn \__codedesc_open_delimit_tl {\{}
+      \tl_set:Nn \__codedesc_close_delimit_tl {\}}
+    },
+  parg.usage:n = general,
+	parg.code:n = 
+    {
+      \tl_set:Nn \__codedesc_open_delimit_tl {(}
+      \tl_set:Nn \__codedesc_close_delimit_tl {)}
+    },
+	%
+  xarg.usage:n = general,
+	xarg.code:n = 
+    {
+      \tl_set:Nn \__codedesc_open_delimit_tl {<}
+      \tl_set:Nn \__codedesc_close_delimit_tl {>}
+    },
+	%
+  meta.usage:n = general,
+	meta.code:n = 
+    {
+      \tl_set:Nn \__codedesc_open_delimit_tl {}
+      \tl_set:Nn \__codedesc_close_delimit_tl {}
+    },
+	%
+  unknown.usage:n = general,
+	unknown.code:n = 
+    {
+%      \tl_set:Nn \__codedesc_open_delimit_tl {!}
+%      \tl_set:Nn \__codedesc_close_delimit_tl {!}
+    },
+	%
+}
+
+
+%%%%%%%
+%%%
+%%% < meta >
+%%%
+%%%%%%%
+\cs_new:Npn \__codedesc_meta:n #1
+  {
+    \ensuremath\langle #1 \ensuremath\rangle
+  }  
+  
+\cs_generate_variant:Nn \__codedesc_meta:n {o}  
+
+%%%%%%%
+%%%
+%%% < meta > 'detokenized'
+%%%
+%%%%%%%
+\cs_new:Npn \__codedesc_meta*:n #1
+  {
+    \ensuremath\langle \tl_to_str:n {#1} \ensuremath\rangle
+  }  
+
+
+\cs_generate_variant:cn {__codedesc_meta*:n} {o}  
+
+
+
+\cs_new:Npn \__codedesc_macro_typeset:n #1
+  {
+    \tl_set:Ne \l_tmpb_tl {\tl_to_str:n{#1}}
+    \regex_replace_all:nnN {\ }{}  \l_tmpb_tl
+    \regex_replace_once:nnNTF {TF}{}\l_tmpb_tl
+      {
+        \l_tmpb_tl\textsl{\underline{TF}}
+      }
+      { \l_tmpb_tl }  
+  }
+
+\cs_generate_variant:Nn \__codedesc_macro_typeset:n {o}
+
+
+
+
+
+\cs_new:Npn \__codedesc_list_typeset:nnn #1#2#3
+  {
+    \seq_set_from_clist:Nn \l_tmpa_seq {#1}
+    \bool_set:Nn \l__codedesc_bool {\seq_if_empty_p:N \l_tmpa_seq}
+    \tl_set:Nn \l__codedesc_middle_tl {}
+    \tl_set:Nn \l__codedesc_lastone_tl {}
+    \bool_until_do:Nn \l__codedesc_bool 
+      {
+        \seq_pop_left:NNTF \l_tmpa_seq \l_tmpa_tl
+          {
+            \seq_if_empty:NTF \l_tmpa_seq
+              {
+                \l__codedesc_lastone_tl
+                {
+                  \__codedesc_metafmt:
+                  \__codedesc_typeset_tl:o \l_tmpa_tl
+                }
+                \bool_set_true:N \l__codedesc_bool
+              }
+              {
+                \l__codedesc_middle_tl                
+                {
+                  \__codedesc_metafmt:
+                  \__codedesc_typeset_tl:o \l_tmpa_tl
+                }
+                \tl_set:Nn \l__codedesc_middle_tl {#2}
+                \tl_set:Nn \l__codedesc_lastone_tl {#3}
+              }
+          }
+          {}
+      }
+  }
+
+\cs_generate_variant:Nn \__codedesc_list_typeset:nnn {noo}
+
+
+
+
+\cs_new:Npn \__codedesc_args_typeset:nnnn #1#2#3#4
+  {
+    \seq_set_from_clist:Nn \l_tmpa_seq {#3}
+    \group_begin:
+      \__codedesc_metafmt:n {#1}
+      \seq_map_inline:Nn \l_tmpa_seq {~\!\!#2 \__codedesc_meta:n {##1} #4 }                                  
+    \group_end:    
+  }
+  
+  
+\bool_new:N \l__codedesc_longblock_bool
+\coffin_new:N \l__codedesc_margin_coffin
+\coffin_new:N \l__codedesc_text_coffin
+\coffin_new:N \l__codedesc_syntax_coffin
+\bool_new:N   \l__codedesc_syntax_bool
+\dim_new:N \l__codedesc_syntax_wd_dim
+\dim_new:N \l__codedesc_margin_wd_dim
+  
+  
+  
+%%%%%%%%%%%%%%%%%%%
+%%%%
+%%%%  User/Document level commands
+%%%%
+%%%%%%%%%%%%%%%%%%%
+ 
+  
+  
+\NewDocumentEnvironment {codedescribe}{O{code}m}
+  {
+    \seq_set_from_clist:Nn \l_tmpa_seq {#2}
+    \__codedesc_set_textcolwidth: 
+    \hcoffin_set:Nn \l__codedesc_margin_coffin 
+      {
+        \__codedesc_metafmt:n {#1}
+        
+        \begin{tabular}{@{} l @{} }
+          \__codedesc_hline:nnnn {\__codedesc_rulecolor_tl:}{0.5ex}{2}{0.25ex}
+          \seq_map_inline:Nn \l_tmpa_seq { \__codedesc_typeset_tl:n {##1} \\ } 
+          \bool_if:nTF {\l__codedesc_descnotes_bool}
+            {
+             \\[-2.5ex]
+             \__codedesc_hline:nnnn {\color{black}}{0.5ex}{0.25}{0.25ex} 
+             
+             \bool_if:nT {\l__codedesc_descdate_new_bool} 
+                {\scriptsize\color{black}new:~ \l__codedesc_descdate_new_tl\\}
+             \bool_if:nT {\l__codedesc_descdate_update_bool} 
+                {\scriptsize\color{black}update:~ \l__codedesc_descdate_update_tl\\}
+             \bool_if:nT {\l__codedesc_sidenote_bool} 
+                {\scriptsize\color{black}NB:~ \l__codedesc_sidenote_tl\\}
+            }
+            {}
+          \\[-2.5ex]                                
+          \__codedesc_hline:nnnn {\__codedesc_rulecolor_tl:}{-0.25ex}{2}{1ex}
+        \end{tabular}
+      }
+    \dim_set:Nn \l__codedesc_margin_wd_dim {\coffin_wd:N \l__codedesc_margin_coffin}
+    \bool_if:nTF { \dim_compare_p:nNn \l__codedesc_margin_wd_dim > \marginparwidth}
+      {
+        \bool_set_true:N \l__codedesc_longblock_bool
+        \dim_set:Nn \l__codedesc_syntax_wd_dim {\l__codedesc_textcolwidth_dim - (\l__codedesc_margin_wd_dim - \marginparwidth) }        
+      }
+      {
+        \bool_set_false:N \l__codedesc_longblock_bool
+        \dim_set:Nn \l__codedesc_syntax_wd_dim {\l__codedesc_textcolwidth_dim}        
+      }
+    \coffin_clear:N \l__codedesc_syntax_coffin
+    \bool_set_false:N \l__codedesc_syntax_bool
+    \vcoffin_set:Nnw \l__codedesc_text_coffin {\l__codedesc_textcolwidth_dim}
+    \setlength\parindent{0pt}
+    \begin{minipage}[t]{\l__codedesc_textcolwidth_dim} 
+  }
+  {
+    \end{minipage}
+    \vcoffin_set_end:
+    \bool_if:NTF \l__codedesc_longblock_bool
+      { % __describeblock starting at marginpar
+        \coffin_join:NnnNnnnn \l__codedesc_syntax_coffin {l}{t} \l__codedesc_margin_coffin {r}{t} {-\marginparsep}{0pt}
+        \coffin_join:NnnNnnnn \l__codedesc_syntax_coffin {l}{b} \l__codedesc_text_coffin {l}{t} {\marginparwidth+\marginparsep}{0pt}%{-0.25\baselineskip}
+        \par\noindent
+        \coffin_typeset:Nnnnn \l__codedesc_syntax_coffin {l}{t} {-\marginparwidth-\marginparsep}{0pt}              
+      }
+      { % __describeblock at marginpar
+        \coffin_attach:NnnNnnnn \l__codedesc_syntax_coffin {l}{t} \l__codedesc_margin_coffin {r}{t} {-\marginparsep}{0pt}
+        \coffin_join:NnnNnnnn \l__codedesc_syntax_coffin {l}{b} \l__codedesc_text_coffin {l}{t} {0pt}{0pt}%{-0.25\baselineskip}
+        \par\noindent
+        \coffin_typeset:Nnnnn \l__codedesc_syntax_coffin {l}{t} {0pt}{0pt}      
+      }
+    \\[0.25\baselineskip]
+  }
+  
+ 
+  
+\NewDocumentEnvironment{codesyntax}{}
+  {
+    \vcoffin_gset:Nnw \l__codedesc_syntax_coffin {\l__codedesc_syntax_wd_dim}
+    \__codedesc_metafmt:n {syntax}
+    \hspace*{2em}     %% !!! together with \parindent{-2em}
+    \begin{tabular} { @{} l @{} }
+      \__codedesc_hline:nnnn {\color{white}}{0.5ex}{2}{-1.5ex}
+      \__codedesc_metacolor_tl:
+      \begin{minipage}[t]{\l__codedesc_syntax_wd_dim}
+        \obeylines\obeyspaces\setlength\parindent{-2em}
+  }
+  {
+      \end{minipage}\\[-2.5ex]
+          \\                                
+          \__codedesc_hline:nnnn {\color{white}}{0ex}{2}{1ex}      
+    \end{tabular}
+    %\color{black}
+    \vcoffin_gset_end:
+  }
+
+
+\coffin_new:N \__codedesc_describe_coffin
+\dim_new:N \__codedesc_describelabel_wd_dim
+\dim_new:N \__codedesc_describelist_wd_dim
+\tl_new:N \__codedesc_join_tl:
+\tl_new:N \__codedesc_ragged_tl:
+
+  
+  
+  \NewDocumentEnvironment{describelist}{O{20mm}m}
+  {
+    %\vspace*{-1.5ex}
+    \mode_if_horizontal:TF 
+      {\vspace*{-0.75ex}} 
+      {}
+    \__codedesc_set_textcolwidth: 
+    \coffin_clear:N \__codedesc_describe_coffin
+    \dim_set:Nn \__codedesc_describelabel_wd_dim {#1}
+    \dim_set:Nn \__codedesc_describelist_wd_dim {\l__codedesc_textcolwidth_dim}
+    \tl_set:Nn \__codedesc_join_tl: {\coffin_attach:NnnNnnnn}
+    \tl_set:Nn \__codedesc_ragged_tl: {\raggedleft}
+    \tl_set:Nn \__codedesc_listkind_tl {#2}
+  }
+  {
+%    \par\noindent\coffin_typeset:Nnnnn \__codedesc_describe_coffin {l}{t}{0pt}{10pt}
+  }
+  
+\NewDocumentEnvironment{describelist*}{O{20mm}m}
+  {
+    %\vspace*{-1.5ex}
+    \mode_if_horizontal:TF 
+      {\vspace*{-1ex}} 
+      {}
+    \__codedesc_set_textcolwidth: 
+    \coffin_clear:N \__codedesc_describe_coffin
+    \dim_set:Nn \__codedesc_describelabel_wd_dim {#1}
+    \dim_set:Nn \__codedesc_describelist_wd_dim {\l__codedesc_textcolwidth_dim - \__codedesc_describelabel_wd_dim -\marginparsep}
+    \tl_set:Nn \__codedesc_join_tl: {\coffin_join:NnnNnnnn}
+    \tl_set:Nn \__codedesc_ragged_tl: {}
+    \tl_set:Nn \__codedesc_listkind_tl {#2}
+  }
+  {
+%    \par\noindent\coffin_typeset:Nnnnn \__codedesc_describe_coffin {l}{t}{0pt}{10pt}
+  }
+
+\NewDocumentCommand \describe {mm}
+  {
+    
+    \hcoffin_set:Nn \l_tmpb_coffin 
+      { 
+        \__codedesc_metafmt:o { \__codedesc_listkind_tl }
+        \__codedesc_ragged_tl: \__codedesc_typeset_tl:n {#1}
+      }
+      
+      \dim_compare:nNnTF {\coffin_wd:N \l_tmpb_coffin} > {\__codedesc_describelabel_wd_dim}
+        {
+          \vcoffin_set:Nnn \l_tmpa_coffin 
+            { \__codedesc_describelabel_wd_dim } 
+            {  ~\ ~ }
+          \coffin_attach:NnnNnnnn
+            \l_tmpa_coffin {r}{t}
+            \l_tmpb_coffin    {r}{t}
+            {0pt}{0pt}
+        
+        }
+        {
+          \vcoffin_set:Nnn \l_tmpa_coffin 
+            { \__codedesc_describelabel_wd_dim } 
+            { 
+              \__codedesc_metafmt:o { \__codedesc_listkind_tl }
+              \noindent\__codedesc_ragged_tl: \__codedesc_typeset_tl:n {#1}
+            }          
+        }
+
+    \vcoffin_set:Nnn \l_tmpb_coffin 
+      { \__codedesc_describelist_wd_dim } 
+      { 
+        \noindent
+        \begin{minipage}[t]{ \__codedesc_describelist_wd_dim }
+          #2
+        \end{minipage}
+      }
+      
+      
+    \__codedesc_join_tl: 
+      \l_tmpb_coffin {l}{t} 
+      \l_tmpa_coffin {r}{t} 
+      {-\marginparsep}{0pt}
+
+    \mode_if_horizontal:TF 
+      {
+        \\ 
+%        \tl_set:Nn \l_tmpa_tl {~\ ~}
+      }
+      {
+%        \tl_set:Nn \l_tmpa_tl {~\ ~}
+      }
+      \noindent%\vspace*{-1ex}
+    \coffin_typeset:Nnnnn 
+      \l_tmpb_coffin {l}{t} {0pt}{0pt}
+    \\[-0.5\baselineskip] 
+    
+  }
+
+
+  
+\NewDocumentCommand \typesetmeta {m} {\__codedesc_meta:n {#1}}
+
+\cs_new_eq:NN \tsmeta \typesetmeta  
+
+
+\NewDocumentCommand \typesetargs {O{meta}m}
+  { 
+    \keys_set:nn {codedesc / delimiters}{#1}
+    \__codedesc_args_typeset:nnnn {#1} \__codedesc_open_delimit_tl {#2} \__codedesc_close_delimit_tl
+  }
+  
+\cs_new_eq:NN \tsargs \typesetargs  
+
+
+
+\NewDocumentCommand \typesetmacro {mO{}m} 
+  {
+    \__codedesc_metafmt_set:n {code} %.... argh!
+    \__codedesc_list_typeset:nnn{#1}{,~}{,~}
+%    \__codedesc_macro_typeset:n{#1}
+    \,\__codedesc_args_typeset:nnnn {oarg} [ {#2} ]
+    \__codedesc_args_typeset:nnnn {marg} \{ {#3} \}
+  }
+\cs_new_eq:NN \tsmacro \typesetmacro
+
+
+\NewDocumentCommand \typesetverb {O{code}m} 
+  {
+    \group_begin:
+      \__codedesc_metafmt:n {#1}
+      \tl_to_str:n {#2}
+    \group_end:
+  }
+\cs_new_eq:NN \tsverb \typesetverb
+
+\NewDocumentCommand \typesetobj {O{code}m} 
+  {
+    \__codedesc_metafmt_set:n {#1}
+    \__codedesc_list_typeset:noo{#2}{\__codedesc_sep_tl}{\__codedesc_lastsep_tl}
+  }
+
+\cs_new_eq:NN \tsobj \typesetobj
+
+
+\NewDocumentCommand \typesetmarginnote {m}{\marginpar{{\scriptsize\raggedleft #1 \par}}}
+\cs_new_eq:NN \tsmarginnote \typesetmarginnote
+
+
+\NewDocumentEnvironment {tsremark} {O{Note:}}
+  {
+%    \par\vspace*{0.5\baselineskip}
+    \mode_if_horizontal:TF 
+      {\par\vspace*{0.25\baselineskip}}%\vspace*{-1.5ex}} 
+      {\vspace*{0.75\baselineskip}}   
+    \__codedesc_set_textcolwidth:
+    \group_begin:
+      \noindent\hspace{0.2\l__codedesc_textcolwidth_dim}
+      \begin{minipage}{0.8\l__codedesc_textcolwidth_dim}
+        \setlength\parindent{0pt}\small
+        \textsl{\textbf{#1}} %\dim_to_decimal:n {\linewidth}
+  }
+  {
+      \end{minipage}
+    \group_end:
+    \par
+  }
+
+
+%%%% ARGH !!!!
+
+\keys_define:nn { codedesc / title }
+  {
+    title    .usage:n = general ,
+  	title    .tl_set:N = \l__codedesc_title_tl ,
+
+    author   .usage:n = general ,
+  	author   .tl_set:N = \l__codedesc_author_tl ,
+
+    date     .usage:n = general ,
+  	date     .tl_set:N = \l__codedesc_descdate_tl ,
+
+    abstract .usage:n = general ,
+  	abstract .tl_set:N = \l__codedesc_abstract_tl ,
+  }
+
+
+\cs_new:Npn \__codedesc_make_title: {%
+	\newpage
+	\null
+	\vskip 2em%
+	\begin{center}%
+		\let \footnote \thanks
+		{\LARGE \l__codedesc_title_tl \par}%
+		\vskip 1.5em%
+		{\large
+			\lineskip .5em%
+			\begin{tabular}[t]{c}%
+				\l__codedesc_author_tl
+			\end{tabular}\par}%
+		\vskip 1em%
+		{\large \l__codedesc_descdate_tl}%
+	\end{center}%
+	\par
+	\vskip 1.5em
+}
+
+
+%%%ARGH !!!!!
+%%% 'adapted' from 'abstract.cls'
+%%%
+%%%
+
+\makeatletter
+
+
+\NewDocumentCommand \typesettitle {m}
+  {
+    \keys_set:nn {codedesc / title}{#1}
+  
+  	\group_begin:
+    	\renewcommand\thefootnote{\@fnsymbol\c at footnote}%
+    	\def\@makefnmark{\rlap{\@textsuperscript{\normalfont\@thefnmark}}}%
+    	\long\def\@makefntext##1{\parindent 1em\noindent
+    		\hb at xt@1.8em{%
+    			\hss\@textsuperscript{\normalfont\@thefnmark}}##1}%
+    	\if at twocolumn
+      	\ifnum \col at number=\@ne
+        	\__codedesc_make_title:
+    	  \else
+        	\twocolumn[\__codedesc_make_title:]%
+    	  \fi
+    	\else
+      	\newpage
+      	\global\@topnum\z@   % Prevents figures from going at top of page.
+      	\__codedesc_make_title:
+    	\fi
+    	\thispagestyle{plain}\@thanks
+  	\group_end:
+  }
+
+\cs_new_eq:NN \tstitle \typesettitle
+
+
+\NewDocumentEnvironment{tsabstract}{}
+  {
+   	\if at twocolumn
+     	\section*{\abstractname}%
+   	\else
+     	\small
+     	\begin{center}%
+     		{\bfseries \abstractname\vspace{-.5em}\vspace{\z@}}%
+     	\end{center}%
+     	\quotation
+   	\fi
+  }
+  {
+    \if at twocolumn\else\endquotation\fi
+  }
+\cs_new_eq:NN \typesetabstract \tsabstract
+\cs_new_eq:NN \endtypesetabstractend \endtsabstract
+
+\makeatother
+
+
+


Property changes on: trunk/Master/texmf-dist/tex/latex/codedescribe/codedescribe.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/codedescribe/codelisting.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/codedescribe/codelisting.sty	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/codedescribe/codelisting.sty	2023-05-12 20:27:50 UTC (rev 67082)
@@ -0,0 +1,691 @@
+%%%==============================================================================
+%% Copyright 2023 by Alceu Frigeri
+%%
+%% This work may be distributed and/or modified under the conditions of
+%%
+%% * The [LaTeX Project Public License](http://www.latex-project.org/lppl.txt),
+%%   version 1.3c (or later), and/or
+%% * The [GNU Affero General Public License](https://www.gnu.org/licenses/agpl-3.0.html),
+%%   version 3 (or later)
+%%
+%% This work has the LPPL maintenance status *maintained*.
+%%
+%% The Current Maintainer of this work is Alceu Frigeri
+%%
+%% This is version 1.0 (2023/05/11)
+%%
+%% The list of files that compose this work can be found in the README.md file at
+%% https://ctan.org/pkg/codedescribe
+%%
+%%%==============================================================================
+\NeedsTeXFormat{LaTeX2e}[2022/06/01]
+
+\RequirePackage{ expl3 }
+\ProvidesExplPackage
+    {codelisting}
+    {2023/05/11}
+    {1.0}
+    {LaTeX Code Listing}
+
+\prop_if_exist:NTF \g__codedesc_pkg_prop
+  {}
+  { \prop_new:N \g__codedesc_pkg_prop }
+  
+\prop_put_from_keyval:Nn \g__codedesc_pkg_prop
+  {
+    codelist . name         = codelisting ,
+    codelist . prefix       = codelist ,
+    codelist . date         = 2023/05/11 ,
+    codelist . version      = 1.0 ,
+    codelist . description  = LaTeX Code Listing
+  }
+
+\cs_gset:Npn \__codedesc_pkg_info:nn #1#2
+  {
+    \prop_item:Nn \g__codedesc_pkg_prop {#1.#2}
+  }
+
+\RequirePackage{listings,scontents}
+
+
+
+\dim_new:N \l__codelist_demo_parindent_dim
+\dim_new:N \l__codelist_org_parindent_dim
+
+\dim_set:Nn\l__codelist_org_parindent_dim{\parindent}
+
+
+\colorlet{c__codelist_lightcyan_color}{white!97!cyan}
+\colorlet{c__codelist_lightgray_color}{white!97!black}
+\definecolor{c__codelist_grayblack_color}{rgb}{0.8,0.8,0.8}
+
+\colorlet{c__codelist_darkred_color}{red!45!black!100}
+\colorlet{c__codelist_darkgreen_color}{green!45!black!100}
+\colorlet{c__codelist_darkblue_color}{blue!40!black!100}
+\colorlet{c__codelist_darkmagenta_color}{magenta!45!black!100}
+\colorlet{c__codelist_darkyellow_color}{yellow!45!black!100}
+\colorlet{c__codelist_darkteal_color}{teal!45!black!100}
+
+\colorlet{c__codelist_redishblack_color}{red!60!black!100}
+\colorlet{c__codelist_greenishblack_color}{green!65!black!100}
+\colorlet{c__codelist_blueishblack_color}{blue!85!black!100}
+\colorlet{c__codelist_magentaishblack_color}{magenta!65!black!100}
+\colorlet{c__codelist_yellowishblack_color}{yellow!65!black!100}
+\colorlet{c__codelist_tealishblack_color}{teal!65!black!100}
+
+\colorlet{c__codelist_redblack_color}{red!90!black!100}
+\colorlet{c__codelist_greenblack_color}{green!90!black!100}
+\colorlet{c__codelist_blueblack_color}{blue!90!black!100}
+\colorlet{c__codelist_magentablack_color}{magenta!90!black!100}
+\colorlet{c__codelist_yellowblack_color}{yellow!80!black!100}
+\colorlet{c__codelist_tealblack_color}{teal!90!black!100}
+
+\colorlet{c__codelist_gray_color}{gray}
+
+\tl_set:Nn \l__codelist_bckgnd_color_default_tl{c__codelist_lightgray_color}%
+\tl_set:Nn \l__codelist_string_color_default_tl{c__codelist_darkteal_color}
+\tl_set:Nn \l__codelist_comment_color_default_tl{c__codelist_darkgreen_color}
+
+\tl_set:Nn \l__codelist_texcs_color_default_tl{c__codelist_darkblue_color}
+\tl_set:Nn \l__codelist_keywd_color_default_tl{c__codelist_darkgreen_color}
+\tl_set:Nn \l__codelist_emph_color_default_tl{c__codelist_darkred_color}
+
+\tl_set:Nn \l__codelist_texcsB_color_default_tl{c__codelist_blueishblack_color}
+\tl_set:Nn \l__codelist_keywdB_color_default_tl{c__codelist_greenishblack_color}
+\tl_set:Nn \l__codelist_emphB_color_default_tl{c__codelist_redishblack_color}
+
+\tl_set:Nn \l__codelist_texcsC_color_default_tl{c__codelist_blueblack_color}
+\tl_set:Nn \l__codelist_keywdC_color_default_tl{c__codelist_greenblack_color}
+\tl_set:Nn \l__codelist_emphC_color_default_tl{c__codelist_redblack_color}
+
+\tl_set:Nn \l__codelist_rule_color_default_tl{c__codelist_gray_color}
+\tl_set:Nn \l__codelist_number_color_default_tl{c__codelist_gray_color}
+
+\keys_define:nn {CodeListingOptions} {
+  settexcs      .usage:n   =  general,
+  settexcs      .code:n    =  { \tl_set:Nn \l__codelist_texcs_tl {#1} },
+  settexcs      .default:n =   ,
+  
+  texcs         .usage:n   =   general,
+  texcs         .code:n    =  { \tl_put_right:Nn \l__codelist_texcs_tl { , #1} },
+  texcs         .default:n =  ,
+
+  texcsstyle    .usage:n   =   general,
+  texcsstyle    .code:n    =  { \tl_set:Nn \l__codelist_texcsstyle_tl {#1} },
+  texcsstyle    .default:n =  \bfseries\color{ \l__codelist_texcs_color_default_tl },
+
+
+  settexcs2     .usage:n   =   general,
+  settexcs2     .code:n    =  { \tl_set:Nn \l__codelist_texcsB_tl {#1} },
+  settexcs2     .default:n =  ,
+
+  texcs2        .usage:n   =   general,
+  texcs2        .code:n    =  { \tl_put_right:Nn \l__codelist_texcsB_tl { , #1} },
+  texcs2        .default:n =  ,
+
+  texcs2style   .usage:n   =   general,
+  texcs2style   .code:n    =  { \tl_set:Nn \l__codelist_texcsBstyle_tl {#1} },
+  texcs2style   .default:n =  \bfseries\color{ \l__codelist_texcs_color_default_tl } ,
+
+
+  settexcs3     .usage:n   =   general,
+  settexcs3     .code:n    =  { \tl_set:Nn \l__codelist_texcsC_tl {#1} },
+  settexcs3     .default:n =  ,
+
+  texcs3        .usage:n   =   general,
+  texcs3        .code:n    =  { \tl_put_right:Nn \l__codelist_texcsC_tl { , #1} },
+  texcs3        .default:n =  ,
+
+  texcs3style   .usage:n   =   general,
+  texcs3style   .code:n    =  { \tl_set:Nn \l__codelist_texcsCstyle_tl {#1} },
+  texcs3style   .default:n =  \bfseries\color{ \l__codelist_texcsC_color_default_tl } ,
+
+
+  setkeywd      .usage:n   =   general,
+  setkeywd      .code:n    =  { \tl_set:Nn \l__codelist_keywd_tl {#1} },
+  setkeywd      .default:n =  ,
+
+  keywd         .usage:n   =   general,
+  keywd         .code:n    =  { \tl_put_right:Nn \l__codelist_keywd_tl { , #1} },
+  keywd         .default:n =  ,
+
+  keywdstyle    .usage:n   =   general,
+  keywdstyle    .code:n    =  { \tl_set:Nn \l__codelist_keywdstyle_tl {#1} },
+  keywdstyle    .default:n =  \bfseries\color{ \l__codelist_keywd_color_default_tl } ,
+
+  setkeywd2     .usage:n   =   general,
+  setkeywd2     .code:n    =  { \tl_set:Nn \l__codelist_keywdB_tl {#1} },
+  setkeywd2     .default:n =  ,
+
+  keywd2        .usage:n   =   general,
+  keywd2        .code:n    =  { \tl_put_right:Nn \l__codelist_keywdB_tl { , #1} },
+  keywd2        .default:n =  ,
+
+  keywd2style   .usage:n   =   general,
+  keywd2style   .code:n    =  { \tl_set:Nn \l__codelist_keywdBstyle_tl {#1} },
+  keywd2style   .default:n =  \bfseries\color{ \l__codelist_keywdB_color_default_tl } ,
+
+  setkeywd3     .usage:n   =   general,
+  setkeywd3     .code:n    =  { \tl_set:Nn \l__codelist_keywdC_tl {#1} },
+  setkeywd3     .default:n =  ,
+
+  keywd3        .usage:n   =   general,
+  keywd3        .code:n    =  { \tl_put_right:Nn \l__codelist_keywdC_tl { , #1} },
+  keywd3        .default:n =  ,
+
+  keywd3style   .usage:n   =   general,
+  keywd3style   .code:n    =  { \tl_set:Nn \l__codelist_keywdCstyle_tl {#1} },
+  keywd3style   .default:n =  \bfseries\color{ \l__codelist_keywdC_color_default_tl } ,
+
+  setemph       .usage:n   =   general,
+  setemph       .code:n    =  { \tl_set:Nn \l__codelist_emph_tl {#1} },
+  setemph       .default:n =  ,
+
+  emph          .usage:n   =   general,
+  emph          .code:n    =  { \tl_put_right:Nn \l__codelist_emph_tl { , #1} },
+  emph          .default:n =  ,
+
+  emphstyle     .usage:n   =   general,
+  emphstyle     .code:n    =  { \tl_set:Nn \l__codelist_emphstyle_tl {#1} },
+  emphstyle     .default:n =  \bfseries\color{ \l__codelist_emph_color_default_tl } ,
+
+  setemph2      .usage:n   =   general,
+  setemph2      .code:n    =  { \tl_set:Nn \l__codelist_emphB_tl {#1} },
+  setemph2      .default:n =  ,
+
+  emph2         .usage:n   =   general,
+  emph2         .code:n    =  { \tl_put_right:Nn \l__codelist_emphB_tl { , #1} },
+  emph2         .default:n =  ,
+
+  emph2style    .usage:n   =   general,
+  emph2style    .code:n    =  { \tl_set:Nn \l__codelist_emphBstyle_tl {#1} },
+  emph2style    .default:n =  \bfseries\color{ \l__codelist_emphB_color_default_tl } ,
+
+  setemph3      .usage:n   =   general,
+  setemph3      .code:n    =  { \tl_set:Nn \l__codelist_emphC_tl {#1} },
+  setemph3      .default:n =  ,
+
+  emph3         .usage:n   =   general,
+  emph3         .code:n    =  { \tl_put_right:Nn \l__codelist_emphC_tl { , #1} },
+  emph3         .default:n =  ,
+
+  emph3style    .usage:n   =   general,
+  emph3style    .code:n    =  { \tl_set:Nn \l__codelist_emphCstyle_tl {#1} },
+  emph3style    .default:n =  \bfseries\color{ \l__codelist_emphC_color_default_tl } ,
+
+  stringstyle   .usage:n   =   general,
+  stringstyle   .code:n    =  { \tl_set:Nn \l__codelist_stringstyle_tl {#1} },
+  stringstyle   .default:n =  \color{ \l__codelist_string_color_default_tl } ,
+
+  commentstyle  .usage:n   =   general,
+  commentstyle  .code:n    =  { \tl_set:Nn \l__codelist_commentstyle_tl {#1} },
+  commentstyle  .default:n =  \color{ \l__codelist_comment_color_default_tl } ,
+
+  bckgndcolor   .usage:n   =   general,
+  bckgndcolor   .code:n    =  { \tl_set:Nn \l__codelist_bckgndcolor_tl {#1} },
+  bckgndcolor   .default:n =  \color{ \l__codelist_bckgnd_color_default_tl } ,
+
+  rulecolor     .usage:n   =   general,
+  rulecolor     .code:n    =  { \tl_set:Nn \l__codelist_rulecolor_tl {#1} },
+  rulecolor     .default:n =  \color{ \l__codelist_rule_color_default_tl } ,
+
+  numbers       .usage:n   =   general,
+  numbers       .code:n    =  { \tl_set:Nn \l__codelist_numbers_tl {#1} },
+  numbers       .default:n =  none,
+
+  numberstyle   .usage:n   =   general,
+  numberstyle   .code:n    =  { \tl_set:Nn \l__codelist_numberstyle_tl {#1} },
+  numberstyle   .default:n =  \tiny\color{ \l__codelist_number_color_default_tl },
+
+
+  parindent     .usage:n   =   general,
+  parindent     .code:n    =  { \dim_set:Nn\l__codelist_demo_parindent_dim{#1} },
+  parindent     .default:n =  \l__codelist_org_parindent_dim,
+
+
+	codeprefix    .usage:n   =   general,
+	codeprefix    .code:n    =  { \tl_set:Nn \l__codelist_codeprefix_tl {#1} },
+  codeprefix    .default:n =  \LaTeX\  Code:,
+
+	resultprefix  .usage:n   =   general,
+	resultprefix  .code:n    =  { \tl_set:Nn \l__codelist_resultprefix_tl {#1} },
+  resultprefix  .default:n =  \LaTeX\  Result:,
+
+  ruleht        .usage:n   =   general,
+  ruleht        .code:n    =  { \tl_set:Nn \l__codelist_ruleheight_tl {#1} },
+  ruleht        .default:n =  1,
+
+  default       .usage:n   =   general,
+  default       .meta:n    = {
+      settexcs     , texcsstyle  , 
+      settexcs2    , texcs2style , 
+      settexcs3    , texcs3style ,
+		  setkeywd     , keywdstyle  , 
+      setkeywd2    , keywd2style , 
+      setkeywd3    , keywd3style ,
+		  setemph      , emphstyle   , 
+      setemph2     , emph2style  , 
+      setemph3     , emph3style  ,
+		  stringstyle  , 
+      commentstyle , 
+      bckgndcolor  , rulecolor   ,
+		  numbers      , numberstyle ,
+      parindent    ,
+      codeprefix   , resultprefix ,
+      ruleht   ,
+  },
+
+}
+
+\cs_new:Npn \__codelist_set_options:n #1 {\keys_set:nn {CodeListingOptions}{#1}}
+
+\__codelist_set_options:n{default}
+
+
+%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%
+%%%
+%%%  From doctools.dtx file
+%%% lstlistings 'definitions'
+%%%
+%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%
+
+%%% listings
+%
+\lstdefinestyle{lstStyleDefault}{
+                              %%% appearance
+   ,basicstyle=\small\ttfamily % Standardschrift
+                              %%%  Space and placement
+   ,floatplacement=tbp        % is used as float place specifier
+   ,aboveskip=\medskipamount  % define the space above and
+   ,belowskip=\medskipamount  % below displayed listings.
+   ,lineskip=0pt              % specifies additional space between lines in listings.
+   ,boxpos=c                  % c,b,t
+   ,showlines=false           % prints empty lines at the end of listings
+                              %%% characters
+   ,extendedchars=true        % allows or prohibits extended characters
+                              % in listings, that means (national)
+                              % characters of codes 128-255.
+   ,upquote=true              % determines printing of quotes
+   ,tabsize=2,                % chars of tab
+   ,showtabs=false            % do not show tabs
+   ,showspaces=false          % do not show spaces
+   ,showstringspaces=false    % do not show blank spaces in string
+                              %%% Line numbers
+   ,numbers=none              % left, right, none
+                              %%% Captions
+   ,numberbychapter=true      %
+   ,captionpos=b              % t,b
+   ,abovecaptionskip=\smallskipamount % the vertical space respectively above
+   ,belowcaptionskip=\smallskipamount % or below each caption
+                              %%% Margins and line shape
+   ,linewidth=\linewidth      % defines the base line width for listings.
+   ,xleftmargin=0pt           % extra margins
+   ,xrightmargin=0pt          %
+   ,resetmargins=false        % indention from list environments like enumerate
+                              % or itemize is reset, i.e. not used.
+   ,breaklines=true           % line breaking of long lines.
+   ,breakatwhitespace=false   % allows line breaks only at white space.
+   ,breakindent=0pt           % is the indention of the second, third, ...
+                              % line of broken lines.
+   ,breakautoindent=true      % apply intendation
+   ,columns=flexible          %
+   ,keepspaces=true           %
+}
+
+
+\lstdefinestyle{lstDocStyleBase}{
+                              %%% base style
+   ,style=lstStyleDefault
+
+   ,commentstyle=\slshape
+                              %%% Line numbers
+   ,numbers=left              % left, right, none
+   ,stepnumber=1              % seperation between numbers
+   ,numberfirstline=false     % number first line always
+                              %
+   ,numberstyle={\l__codelist_numberstyle_tl}    % style of numbers
+   ,numbersep=5pt             % distance to text
+   ,numberblanklines=true     %
+                              %%% language
+   ,language = [LaTeX]TeX
+                              %%% commands
+                              % LaTeX programming
+   ,moretexcs={setlength,usepackage,newcommand,renewcommand,providecommand,RequirePackage,SelectInputMappings,ifpdftex,ifpdfoutput,AtBeginEnvironment,ProvidesPackage},
+   ,moretexcs={maketitle,text,includegraphics,chapter,section,subsection,
+     subsubsection,paragraph,textmu,enquote,blockquote,ding,mathds,ifcsdef,Bra,Ket,Braket,subcaption,lettrine,mdfsetup,captionof,listoffigures,listoftables,tableofcontents,appendix}
+   ,moretexcs={newcolumntype,rowfont,taburowcolors,rowcolor,rowcolors,bottomrule,
+     toprule,midrule,}
+   ,moretexcs={hypersetup}
+   ,moretexcs={gls,printglossary,glsadd,newglossaryentry,newacronym}
+   ,moretexcs={mainmatter,frontmatter,geometry,KOMAoptions,setkomafont,addtokomafont}
+   ,moretexcs={si,SI,sisetup,unit,unitfrac,micro}
+   ,moretexcs={newblock,ExecuteBibliographyOptions,addbibresource}
+   ,moretexcs={operatorname,frac,sfrac,dfrac,DeclareMathOperator,mathcal,underset}
+   ,moretexcs={democodefile,package,cs,command,env,DemoError,PrintDemo}
+   ,moretexcs={theadstart,tbody,tsubheadstart,tsubhead,tend}
+   ,moretexcs={DefineCodeSection,SetCodeSection,BeginCodeSection,EndCodeSection}
+   ,moretexcs={IfDefined,IfUndefined,IfElseDefined,IfElseUndefined,IfMultDefined,IfNotDraft,IfNotDraftElse,IfDraft,IfPackageLoaded,IfElsePackageLoaded,IfPackageNotLoaded,IfPackagesLoaded,IfPackagesNotLoaded,ExecuteAfterPackage,ExecuteBeforePackage,IfTikzLibraryLoaded,IfColumntypeDefined,IfColumntypesDefined,IfColorDefined,IfColorsDefined,IfMathVersionDefined,SetTemplateDefinition,UseDefinition,IfFileExists,iflanguage}
+   ,moretexcs={setuptablefontsize,tablefontsize,setuptablestyle,tablestyle,  setuptablecolor,tablecolor,disablealternatecolors,   tablealtcolored,tbegin,tbody,tend,thead, theadstart,tsubheadstart,tsubhead,theadrow,tsubheadrow,resettablestyle,theadend,tsubheadend,tableitemize,PreserveBackslash}
+   ,moretexcs={todo,missingfigure}
+   ,moretexcs={lstloadlanguages,lstdefinestyle,lstset}
+   ,moretexcs={indexsetup}
+   ,moretexcs={newglossarystyle,glossarystyle,deftranslation,newglossary}
+   ,moretexcs={usetikzlibrary}
+   ,moretexcs={definecolor,colorlet}
+   ,moretexcs={captionsetup,DeclareCaptionStyle}
+   ,moretexcs={floatsetup}
+   ,moretexcs={EnableCrossrefs,DisableCrossrefs,PageIndex,CodelineIndex,CodelineNumbered}
+   ,moretexcs={cref,Cref,vref,eqnref,figref,tabref,secref,chapref}
+}
+
+%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%
+%%%
+%%%  From doctools.dtx file
+%%% lstlistings 'definitions'
+%%%
+%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%
+
+\lstloadlanguages{[LaTeX]TeX}
+\lstdefinestyle{codestyle}{
+  style        =  lstDocStyleBase,
+  language     =  [LaTeX]{TeX},
+  numbers      =   none, %\l__codelist_numbers_tl,
+  rulecolor    =      {\l__codelist_rulecolor_tl},
+	backgroundcolor  =  {\l__codelist_bckgndcolor_tl},
+  stringstyle  =      {\l__codelist_stringstyle_tl},
+  commentstyle =      {\l__codelist_commentstyle_tl},
+  framerule    =   0pt,                        %0.4pt,
+	nolol        =   true,
+	frame        =   none,
+	aboveskip    =   0pt,%-2ex,
+  belowskip    =   0pt,%-2ex,
+	basicstyle   =   \footnotesize\ttfamily ,  
+	rulesep      =   0pt,
+	breaklines   =   true,
+	breakindent  =   3em,
+	moretexcs    =      {\l__codelist_texcs_tl},
+  moretexcs    =  [2] {\l__codelist_texcsB_tl},
+  moretexcs    =  [3] {\l__codelist_texcsC_tl},
+  texcsstyle   = *    {\l__codelist_texcsstyle_tl},
+	texcsstyle   = *[2] {\l__codelist_texcsBstyle_tl},
+	texcsstyle   = *[3] {\l__codelist_texcsCstyle_tl},
+	morekeywords =      {\l__codelist_keywd_tl},
+	morekeywords =  [2] {\l__codelist_keywdB_tl},
+	morekeywords =  [3] {\l__codelist_keywdC_tl},
+  keywordstyle =      {\l__codelist_keywdstyle_tl},
+	keywordstyle =  [2] {\l__codelist_keywdBstyle_tl},
+	keywordstyle =  [3] {\l__codelist_keywdCstyle_tl},
+	emph         =      {\l__codelist_emph_tl},
+	emph         =  [2] {\l__codelist_emphB_tl},
+	emph         =  [3] {\l__codelist_emphC_tl},
+  emphstyle    =      {\l__codelist_emphstyle_tl},
+  emphstyle    =  [2] {\l__codelist_emphBstyle_tl},
+  emphstyle    =  [3] {\l__codelist_emphCstyle_tl},
+}
+\lstset{style=codestyle}
+
+\cs_generate_variant:Nn \keys_set:nn {nx}
+%%%
+%%% extending scontents package options !!!!
+%%% changing it's default key handling from \msg_error to 'store-env'.
+%%%
+\keys_define:nn { scontents / scontents}
+  {
+  	st.meta:nn          = { scontents } { store-env = #1 },
+    st.value_required:n = true,
+  	store-at.meta:nn          = { scontents } { store-env = #1 },
+    store-at.value_required:n = true,
+    unknown . undefine: ,
+    unknown . code:n = { \keys_set:nx {scontents}{ store-env = \l_keys_key_str} }
+ }
+
+\newenvsc{codestore}
+
+
+
+%%%%%%%%%
+%%%
+%%% yep, the <verbatimsc> environment gets redefined 
+%%% each and every time (to change the 'listings' defaults/highlights !
+%%%
+%%%
+%%%%%%%%%
+
+\cs_undefine:c{verbatimsc}
+\cs_undefine:c{verbatimsc@@}
+\cs_undefine:c{verbatimsc@}
+\cs_undefine:c{endverbatimsc}
+\lstnewenvironment{verbatimsc}{\lstset{style=codestyle}}{}
+
+\cs_new:Npn \__codelist_set_verbsc:n #1
+  {
+      \cs_undefine:c{verbatimsc}
+      \cs_undefine:c{verbatimsc@@}
+      \cs_undefine:c{verbatimsc@}
+      \cs_undefine:c{endverbatimsc}
+      
+  		\__codelist_set_options:n{#1}
+
+      \lstnewenvironment{verbatimsc}
+        {
+          \exp_args:Ne \lstset
+            {
+              style=codestyle,
+              moretexcs     =     {\l__codelist_texcs_tl},
+              moretexcs     =[2]  {\l__codelist_texcsB_tl},
+              moretexcs     =[3]  {\l__codelist_texcsC_tl},
+        		  morekeywords  =     {\l__codelist_keywd_tl},
+              morekeywords  =[2]  {\l__codelist_keywdB_tl},
+              morekeywords  =[3]  {\l__codelist_keywdC_tl},
+        		  emph          =     {\l__codelist_emph_tl}, 
+              emph          =[2]  {\l__codelist_emphB_tl}, 
+              emph          =[3]  {\l__codelist_emphC_tl},
+        	    numbers       =     \l__codelist_numbers_tl
+            }
+        }
+        {}
+  }
+
+%%% !!! DEPRECTAED !!!
+\NewDocumentEnvironment {verbsc} {m}
+  {
+      \cs_undefine:c{verbatimsc}
+      \cs_undefine:c{verbatimsc@@}
+      \cs_undefine:c{verbatimsc@}
+      \cs_undefine:c{endverbatimsc}
+      
+  		\__codelist_set_options:n{#1}
+
+      \lstnewenvironment{verbatimsc}
+        {
+          \exp_args:Ne \lstset
+            {
+              style=codestyle,
+              moretexcs     =     {\l__codelist_texcs_tl},
+              moretexcs     =[2]  {\l__codelist_texcsB_tl},
+              moretexcs     =[3]  {\l__codelist_texcsC_tl},
+        		  morekeywords  =     {\l__codelist_keywd_tl},
+              morekeywords  =[2]  {\l__codelist_keywdB_tl},
+              morekeywords  =[3]  {\l__codelist_keywdC_tl},
+        		  emph          =     {\l__codelist_emph_tl}, 
+              emph          =[2]  {\l__codelist_emphB_tl}, 
+              emph          =[3]  {\l__codelist_emphC_tl},
+        	    numbers       =     \l__codelist_numbers_tl
+            }
+        }
+        {}
+  }
+  {  } %environment's end
+
+
+\NewDocumentCommand \setcodekeys {m}
+  {
+    \keys_set:nn {CodeListingOptions}{#1}
+  }
+
+\NewDocumentCommand{\typesetcode}{sO{}m}
+  {
+  \__codedesc_set_textcolwidth:
+    \group_begin:
+      \par\noindent
+      \bool_if:nTF {#1}
+      { % paragraph wide
+        \dim_set:Nn \l__codedesc_width_dim {\l__codedesc_textcolwidth_dim}
+        \dim_set:Nn \l__codedesc_offset_dim {0pt}
+      }
+      { % half as wide
+        \dim_set:Nn \l__codedesc_width_dim {0.5\l__codedesc_textcolwidth_dim}
+        \dim_set:Nn \l__codedesc_offset_dim {0.5\l__codedesc_width_dim}
+      }
+  
+      \__codelist_set_verbsc:n {#2}
+      \vcoffin_set:Nnn \__codelist_display_label_coffin {\l__codedesc_width_dim}
+        {
+          \raggedright
+          \l__codelist_codeprefix_tl
+        }
+      \vcoffin_set:Nnn \__codelist_display_coffin {\l__codedesc_width_dim}
+        {
+          \raggedright
+          \typestored{#3}
+        }
+        \coffin_join:NnnNnnnn
+          \__codelist_display_label_coffin {l}{b}
+          \__codelist_display_coffin {l}{t}
+          {0pt}{-1ex}
+        \vspace*{-1ex}
+        \coffin_typeset:Nnnnn \__codelist_display_label_coffin {l}{t}{\l__codedesc_offset_dim}{0pt}
+        \vspace*{2ex}
+        \par
+    \group_end: 
+  }
+
+\cs_new_eq:NN \tscode \typesetcode
+
+
+
+\coffin_new:N \__codelist_display_coffin
+\coffin_new:N \__codelist_display_label_coffin
+\coffin_new:N \__codelist_demo_coffin
+\coffin_new:N \__codelist_demo_label_coffin
+
+\dim_new:N \l__codedesc_width_dim
+\dim_new:N \l__codedesc_offset_dim
+
+\NewDocumentCommand{\typesetdemo}{sO{}mO{1ex}}
+  {
+    \__codedesc_set_textcolwidth:
+    \group_begin:
+      \par\setlength\parindent{0pt}
+      \bool_if:nTF {#1}
+        { % one below the other
+          \dim_set:Nn \l__codedesc_width_dim {\l__codedesc_textcolwidth_dim}
+          \tl_set:Nn \l__codedesc_rule_in_tl {\__codedesc_rule:n {\l__codelist_ruleheight_tl}}
+          \tl_set:Nn \l__codedesc_rule_out_tl {}
+        }
+        { % side-by-side
+          \dim_set:Nn \l__codedesc_width_dim {0.5\l__codedesc_textcolwidth_dim}
+          \tl_set:Nn \l__codedesc_rule_in_tl {}
+          \tl_set:Nn \l__codedesc_rule_out_tl {\__codedesc_rule:n {\l__codelist_ruleheight_tl}}
+        }
+        
+      \__codelist_set_verbsc:n {#2}
+      \vcoffin_set:Nnn \__codelist_display_label_coffin {\l__codedesc_width_dim}
+        {
+          \raggedright
+          \l__codelist_codeprefix_tl
+        }
+      \vcoffin_set:Nnn \__codelist_display_coffin {\l__codedesc_width_dim}
+        {
+          \raggedright\vspace*{0.1ex}
+          \typestored{#3}
+        }
+
+      \vcoffin_set:Nnn \__codelist_demo_label_coffin {\l__codedesc_width_dim}
+        {
+          \raggedright
+          \l__codelist_resultprefix_tl
+        }
+      \vcoffin_set:Nnn \__codelist_demo_coffin {\l__codedesc_width_dim}
+        { 
+          \l__codedesc_rule_in_tl
+          \group_begin:\vspace*{0.5\baselineskip}%\vspace*{-1ex}
+          \setlength\parindent{\l__codelist_demo_parindent_dim}
+          \getstored{#3}%\vspace*{-1ex}
+          \group_end:
+          \l__codedesc_rule_in_tl
+        }
+
+      \bool_if:nTF {#1}
+        { % one below the other
+          \coffin_join:NnnNnnnn
+            \__codelist_display_label_coffin {l}{b}
+            \__codelist_display_coffin {l}{t}
+            {0pt}{-1ex}
+          \vspace*{-1ex}
+          \coffin_typeset:Nnnnn \__codelist_display_label_coffin {l}{t}{0pt}{0pt}\vspace*{1ex}
+          \par
+          \coffin_join:NnnNnnnn
+            \__codelist_demo_label_coffin {l}{b}
+            \__codelist_demo_coffin {l}{t}
+            {0pt}{-1ex}
+          \coffin_typeset:Nnnnn \__codelist_demo_label_coffin {l}{t}{0pt}{0pt}
+          \vspace*{\baselineskip}
+          %\vspace*{1ex}
+        }
+        { % side-by-side
+          \coffin_join:NnnNnnnn
+            \__codelist_display_label_coffin {r}{b}
+            \__codelist_demo_label_coffin {l}{b}
+            {0pt}{0pt}    
+          \coffin_join:NnnNnnnn
+            \__codelist_display_coffin {r}{vc}
+            \__codelist_demo_coffin {l}{vc}
+            {0pt}{0pt}    
+        
+          \coffin_typeset:Nnnnn \__codelist_display_label_coffin {l}{t}{0pt}{0pt}\vspace*{1ex}\par
+          \l__codedesc_rule_out_tl
+          \coffin_typeset:Nnnnn \__codelist_display_coffin {l}{t}{0pt}{0pt}
+          \vspace*{0.25ex}
+          \l__codedesc_rule_out_tl
+          \vspace*{\baselineskip}
+        }
+      \par
+    \group_end:
+  }
+
+
+\cs_new_eq:NN \tsdemo \typesetdemo
+
+%%%
+%%% Using scontents package !!!!
+%%%
+
+
+%%%
+%%% from https://en.wikibooks.org/wiki/LaTeX/Source_Code_Listings#Encoding_issue
+\lstset{literate=
+  {á}{{\'a}}1 {é}{{\'e}}1 {í}{{\'i}}1 {ó}{{\'o}}1 {ú}{{\'u}}1
+  {Á}{{\'A}}1 {É}{{\'E}}1 {Í}{{\'I}}1 {Ó}{{\'O}}1 {Ú}{{\'U}}1
+  {à}{{\`a}}1 {è}{{\`e}}1 {ì}{{\`i}}1 {ò}{{\`o}}1 {ù}{{\`u}}1
+  {À}{{\`A}}1 {È}{{\'E}}1 {Ì}{{\`I}}1 {Ò}{{\`O}}1 {Ù}{{\`U}}1
+  {ä}{{\"a}}1 {ë}{{\"e}}1 {ï}{{\"i}}1 {ö}{{\"o}}1 {ü}{{\"u}}1
+  {Ä}{{\"A}}1 {Ë}{{\"E}}1 {Ï}{{\"I}}1 {Ö}{{\"O}}1 {Ü}{{\"U}}1
+  {â}{{\^a}}1 {ê}{{\^e}}1 {î}{{\^i}}1 {ô}{{\^o}}1 {û}{{\^u}}1
+  {Â}{{\^A}}1 {Ê}{{\^E}}1 {Î}{{\^I}}1 {Ô}{{\^O}}1 {Û}{{\^U}}1
+	{ã}{{\~{a}}}1 {õ}{{\~{o}}}1
+	{Ã}{{\~{A}}}1 {Õ}{{\~{O}}}1
+  {ý}{{\'{y}}}1 {Ý}{{\'{Y}}}1  {ÿ}{{\"{y}}}1 {Ÿ}{{\"{Y}}}1
+  {œ}{{\oe}}1 {Œ}{{\OE}}1 {æ}{{\ae}}1 {Æ}{{\AE}}1 {ß}{{\ss}}1
+  {ç}{{\c c}}1 {Ç}{{\c C}}1 {ø}{{\o}}1 {å}{{\r a}}1 {Å}{{\r A}}1
+  {€}{{\EUR}}1 {£}{{\pounds}}1
+}
+
+  
+  
+  
+\endinput


Property changes on: trunk/Master/texmf-dist/tex/latex/codedescribe/codelisting.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: trunk/Master/tlpkg/bin/tlpkg-ctan-check
===================================================================
--- trunk/Master/tlpkg/bin/tlpkg-ctan-check	2023-05-12 20:26:41 UTC (rev 67081)
+++ trunk/Master/tlpkg/bin/tlpkg-ctan-check	2023-05-12 20:27:50 UTC (rev 67082)
@@ -193,8 +193,8 @@
     cmap cmarrows cmathbb cmbright cmcyr
     cmdstring cmdtrack cmexb cmextra cmll cmpica cmpj cmsd cmsrb cmtiup
     cmupint cnbwp cnltx cntformats cntperchap
-    cochineal codeanatomy codebox codedoc codehigh codepage codesection
-    codicefiscaleitaliano
+    cochineal codeanatomy codebox codedescribe codedoc
+    codehigh codepage codesection codicefiscaleitaliano
     coelacanth coffeestains collcell collectbox collref
     colophon color-edits colordoc colorframed
     colorinfo coloring colorist colorprofiles

Modified: trunk/Master/tlpkg/libexec/ctan2tds
===================================================================
--- trunk/Master/tlpkg/libexec/ctan2tds	2023-05-12 20:26:41 UTC (rev 67081)
+++ trunk/Master/tlpkg/libexec/ctan2tds	2023-05-12 20:27:50 UTC (rev 67082)
@@ -1679,6 +1679,7 @@
  'citation-style-language' => '&POST_do_man',
  'cjk-gs-integrate'	=> '&POSTcjk_gs_integrate',
  'cmcyr'		=> '&POSTcmcyr',
+ 'codedescribe'		=> '&POST_onelevel',
  'context'		=> '&POSTcontext',
  'context-games'	=> '&POSTcontext_games',
  'coordsys'		=> '&POSTcoordsys',

Added: trunk/Master/tlpkg/tlpsrc/codedescribe.tlpsrc
===================================================================
Modified: trunk/Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc
===================================================================
--- trunk/Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc	2023-05-12 20:26:41 UTC (rev 67081)
+++ trunk/Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc	2023-05-12 20:27:50 UTC (rev 67082)
@@ -211,6 +211,7 @@
 depend cntformats
 depend cntperchap
 depend codebox
+depend codedescribe
 depend codedoc
 depend codehigh
 depend codepage



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