summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/listings
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2024-05-26 03:01:14 +0000
committerNorbert Preining <norbert@preining.info>2024-05-26 03:01:14 +0000
commita6ca78f24091e7023516b4761d400b3699f82937 (patch)
treec232a264a2fbf391f9d10cf330ce611f8a0e64ab /macros/latex/contrib/listings
parent737e568a228eca50e9aeabe3116e1fe8116d27d5 (diff)
CTAN sync 202405260301
Diffstat (limited to 'macros/latex/contrib/listings')
-rw-r--r--macros/latex/contrib/listings/listings-devel.pdfbin1451842 -> 1454841 bytes
-rw-r--r--macros/latex/contrib/listings/listings.dtx210
-rw-r--r--macros/latex/contrib/listings/listings.pdfbin1026586 -> 1028632 bytes
-rw-r--r--macros/latex/contrib/listings/lstdrvrs.dtx190
-rw-r--r--macros/latex/contrib/listings/lstdrvrs.pdfbin761854 -> 790575 bytes
5 files changed, 245 insertions, 155 deletions
diff --git a/macros/latex/contrib/listings/listings-devel.pdf b/macros/latex/contrib/listings/listings-devel.pdf
index 5cf9af1ff8..da1506f1df 100644
--- a/macros/latex/contrib/listings/listings-devel.pdf
+++ b/macros/latex/contrib/listings/listings-devel.pdf
Binary files differ
diff --git a/macros/latex/contrib/listings/listings.dtx b/macros/latex/contrib/listings/listings.dtx
index 06f881726b..525ba1a4ae 100644
--- a/macros/latex/contrib/listings/listings.dtx
+++ b/macros/latex/contrib/listings/listings.dtx
@@ -135,7 +135,7 @@
% Hoffmann became the maintainer of the \packagename{listings}
% package in 2013; see the Preface for details.}~ %
% \textless\lstemail\textgreater}
-% \date{2024/03/11\enspace\enspace Version 1.10a\ \box\abstractbox}
+% \date{2024/05/25\enspace\enspace Version 1.10b\ \box\abstractbox}
% \def\lstemail{\href{mailto:j.hoffmann@fh-aachen.de}{\texttt{j.hoffmann(at)fh-aachen.de}}}
% \ifhyper
% \hypersetup{pdftitle=The Listings Package,
@@ -3561,15 +3561,18 @@
% other & \texttt{!\ " \#\ \%\ \&\ ' ( ) * + , - .\ / :\ ; < = > ?}\\
% & {\catcode`\|=12\texttt{[ \char92\ ] \textasciicircum\ \char123\
% | \char125\ \textasciitilde}}\\
-% space & chr(32)\\
-% tabulator & chr(9)\\
-% form feed & chr(12)\\
+% space & \texttt{chr(32)}\footnotemark{}\\
+% tabulator & \texttt{chr(9)}\\
+% form feed & \texttt{chr(12)}\\
% \noalign{\smallskip}
% \end{tabular}
% \par\noindent
% Note: Extended characters of codes 128--255 (if defined) are \emph{currently}
% letters.
% \end{table}
+% \footnotetext{Here and at other places |chr(|\meta{number}|)| means a
+% Pascal function which returns the character which has ASCII value
+% \meta{number}.}
%
%
% \paragraph{Strings}\label{uStrings}
@@ -4197,20 +4200,25 @@
%
% \subsection{Listings inside arguments}\label{uListingsArguments}
%
-% At the moment it isn't possible to use \verb-\lstinline{...}- in a cell
+% A long time it wasn't possible to use \verb-\lstinline{...}- in a cell
% of a table\makeatletter\@ifundefined{r@uProcessingInline}{}{%
% (see section \ref{uProcessingInline} on page \pageref{uProcessingInline}
% for more information)},%
% \makeatother%
-% but it is possible to define a wrapper macro
-% which can be used instead of \verb-\lstinline{...}-:
+% but there was a recommended workaround. This workaround is still
+% functional, but now one can use \verb-\lstinline{...}- and of course
+% \verb-\lstinline|...|- directly:
% \begin{lstsample}[lstlisting]{}{}
% \newcommand\foo{\lstinline{t}}
% \newcommand\foobar[2][]{\lstinline[#1]{#2}}
%
% \begin{tabular}{ll}
-% \foo & a variable\\
-% \foobar[language=java]{int u;} & a declaration
+% \lstinline|r| & a first variable (standard)\\
+% \lstinline[language=java]|int s;| & a standard declaration \\
+% \foo & a second variable (workaround)\\
+% \foobar[language=java]{int u;} & a (workaraond) declaration \\
+% \lstinline{v} & another variable using braces\\
+% \lstinline[language=java]{int w;} & an additional braced declaration
% \end{tabular}
% \end{lstsample}
%
@@ -5744,7 +5752,7 @@
% \item |\lst@Init\relax|
% \item |\lst@Def{`#1}{\lst@DeInit\egroup}| installs the `end inline'
% detection, where |#1| is the next character after |\lstinline|.
-% Moreover chr(13) is redefined to end the fragment in the same way but
+% Moreover |chr(13)| is redefined to end the fragment in the same way but
% also issues an error message.
% \item Now comes the source code and \ldots
% \item \ldots\ |\lst@DeInit| (from |\lst@Def| above) ends the code snippet
@@ -5978,7 +5986,7 @@
% \part{Implementation}
%
%
-% \CheckSum{12409}
+% \CheckSum{12435}
%^^A
%^^A Don't index TeX-primitives.
%^^A
@@ -6122,8 +6130,8 @@
% All files will have same date and version.
% \begin{macrocode}
%<*kernel|misc|doc>
-\def\filedate{2024/03/11}
-\def\fileversion{1.10a}
+\def\filedate{2024/05/25}
+\def\fileversion{1.10b}
%</kernel|misc|doc>
% \end{macrocode}
% What we need and who we are.
@@ -6662,11 +6670,11 @@
\ifx#1\relax
\else \lccode`\^^@=`#1%
% \end{macrocode}
-% Otherwise we say that |^^@|=chr(0) is the lower case version of the first
+% Otherwise we say that |^^@|=|chr(0)| is the lower case version of the first
% character.
% Then we test the second character.
% If there is none, we append the lower case |^^@| to |\lst@temp|.
-% Otherwise we say that |^^A|=chr(1) is the lower case version of the second
+% Otherwise we say that |^^A|=|chr(1)| is the lower case version of the second
% character and we test the next argument, and so on.
% \begin{macrocode}
\ifx#2\relax
@@ -6703,7 +6711,7 @@
\lst@next}
\endgroup
% \end{macrocode}
-% This |\endgroup| restores the catcodes of chr(0)--chr(8), but not the
+% This |\endgroup| restores the catcodes of |chr(0)|--|chr(8)|, but not the
% catcodes of the characters inside |\lst@MakeActive@| since they are already
% read.
%
@@ -14552,7 +14560,7 @@
\fi
\lsthk@InitVars \lsthk@InitVarsBOL
% \end{macrocode}
-% The end of line character chr(13)=|^^M| controls the processing, see the
+% The end of line character |chr(13)|=|^^M| controls the processing, see the
% definition of |\lst@MProcessListing| below.
% The argument |#1| is either |\relax| or |\lstenv@backslash|.
% \begin{macrocode}
@@ -14904,36 +14912,35 @@
% \subsubsection{Processing inline listings}\label{uProcessingInline}
%
% \begin{macro}{\lstinline}
-% In addition to |\lsthk@PreSet|, we use |boxpos=b| and flexiblecolumns.
-% I've inserted |\leavevmode| after bug report from \lsthelper{Michael~Weber}
-% {1999/12/16}{wrong spacing in list environments}. \lsthelper{Olivier~Lecarme}
-% {2001/07/30}{inconsistent `break' when \lstinline is used inside caption}
-% reported a problem which has gone after removing |\let| |\lst@newlines|
-% |\@empty| (now |\lst@newlines| is a counter!). Unfortunately I don't know
-% the reason for inserting this code some time ago! At the end of the macro we
-% check the delimiter.
-% \begin{macrocode}
-\newcommand\lstinline[1][]{%
- \leavevmode\bgroup % \hbox\bgroup --> \bgroup
- \def\lst@boxpos{b}%
- \lsthk@PreSet\lstset{flexiblecolumns,#1}%
- \lsthk@TextStyle
- \@ifnextchar\bgroup{%
-% \end{macrocode}
-% \lsthelper{Luc~Van~Eycken}{2014/01/22}{\rcmdname\lstinline{} in alignments}
-% reported, that the experimental implementation of |\lstinline| with
-% braces instead of characters surrounding the source code resulted in an
-% error if used in a tabular environment. He found that this error comes
-% from the master counter (cf. appendix D (Dirty Tricks), item 5. (Brace
-% hacks), of the TeXbook (p. 385-386)). Adding the following line at this
-% point
+% In addition to |\lsthk@PreSet|, we use |boxpos=b| and
+% flexiblecolumns. I've inserted |\leavevmode| after bug report from
+% \lsthelper{Michael~Weber} {1999/12/16}{wrong spacing in list
+% environments}. \lsthelper{Olivier~Lecarme} {2001/07/30}{inconsistent
+% `break' when \lstinline is used inside caption} reported a problem
+% which has gone after removing |\let| |\lst@newlines| |\@empty| (now
+% |\lst@newlines| is a counter!). Unfortunately I don't know the reason
+% for inserting this code some time ago! At the end of the macro we
+% check the delimiter.\footnote{This is text of the original author
+% Carsten Heinz.}
+%
+% Then came an experimental version which allowed braces, but
+% \lsthelper{Luc~Van~Eycken}{2014/01/22}{\rcmdname\lstinline{} in
+% alignments} reported, that the experimental implementation of
+% |\lstinline| with braces instead of characters surrounding the source
+% code resulted in an error if used in a tabular environment.
+%
+% He found that this error comes from the master counter (cf. appendix
+% D (Dirty Tricks), item 5. (Brace hacks), of the TeXbook
+% (p. 385-386)). Adding the following line after testing the next
+% character (line no. 7 in the following outcommented snippet)
%\begin{verbatim}
-% \ifnum`{=0}\fi%
+%\ifnum`{=0}\fi%
%\end{verbatim}
-% remedies the wrong behaviour. But \lsthelper{Qing~Lee}{2014/06/28}{-}
-% pointed out, that this breaks code like the one showed in
-% \ref{uListingsArguments} on \pageref{uListingsArguments} and proposed
-% another solution which in turn broke the code needed by Luc:
+% remedies the wrong behaviour. But \lsthelper{Qing~Lee}{2014/06/28}{-}
+% pointed out, that this breaks code like the one shown in section
+% \ref{uListingsArguments} on page \pageref{uListingsArguments} and
+% proposed another solution which in turn broke the code provided by
+% Luc:
%\begin{verbatim}
% \renewcommand\lstinline[1][]{%
% \leavevmode\bgroup % \hbox\bgroup --> \bgroup
@@ -14944,20 +14951,45 @@
% \@ifnextchar\bgroup{%
% \ifnum`{=\z@}\fi%
% \afterassignment\lst@InlineG \let\@let@token}{%
-% \ifnum`{=\z@}\fi\lstinline@}}
+% \ifnum`{=\z@}\fi\lstinline@}%
+%}
%\end{verbatim}
-% So finally the old code comes back and the people, who need a
-% |\lstinline| with braces, should use the workaround from section
-% \ref{uListingsArguments} on page \pageref{uListingsArguments}.
+% So finally the old code came back and the people, who needed a
+% |\lstinline| with braces, should use the workaround from section
+% \ref{uListingsArguments} on page \pageref{uListingsArguments}.
+%
+% This long outstanding deficiency is now repaired by
+% \lsthelper{user5028841}{2024/05/05}{Regarding the Listings package}
+% who provided a solution by using special characters as begin and end
+% of a group:
+% \begin{macrocode}
+\edef\lst@temp{\the\catcode`\^^@}
+\catcode`\^^@=1
+\newcommand\lstinline[1][]{%
+ \leavevmode\bgroup % \hbox\bgroup --> \bgroup
+ \def\lst@boxpos{b}%
+ \lsthk@PreSet\lstset{flexiblecolumns,#1}%
+ \lsthk@TextStyle
+ \@ifnextchar\bgroup{%
+ \afterassignment\lst@InlineG \romannumeral`^^@\iffalse}\fi
+ \let\@let@token}%
+ \lstinline@}
+% \end{macrocode}
+% Here we restore the previous catcode of |\^^@|:
+% \begin{macrocode}
+\catcode`\^^@=\lst@temp
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\lst@inline@}
+% This is the standard method after processing the optional arguments
+% of |\lstinline|.
% \begin{macrocode}
- \afterassignment\lst@InlineG \let\@let@token}%
- \lstinline@}
\def\lstinline@#1{%
- \lst@Init\relax
- \lst@IfNextCharActive{\lst@InlineM#1}{\lst@InlineJ#1}}
-\lst@AddToHook{TextStyle}{}% init
+ \lst@Init\relax
+ \lst@IfNextCharActive{\lst@InlineM#1}{\lst@InlineJ#1}}
% \end{macrocode}
% \begin{macrocode}
+\lst@AddToHook{TextStyle}{}% init
\lst@AddToHook{SelectCharTable}{\lst@inlinechars}
\global\let\lst@inlinechars\@empty
% \end{macrocode}
@@ -14965,56 +14997,68 @@
%
% \begin{macro}{\lst@InlineM}
% \begin{macro}{\lst@InlineJ}
-% treat the cases of `normal' inlines and inline listings inside an argument.
-% In the first case the given character ends the inline listing and EOL within
-% such a listing immediately ends it and produces an error message.
+% treat the cases of `normal' inlines and inline listings inside an
+% argument. In the first case the given character ends the inline
+% listing and EOL within such a listing immediately ends it and
+% produces an error message.
% \begin{macrocode}
-\def\lst@InlineM#1{\gdef\lst@inlinechars{%
+\def\lst@InlineM#1{%
+ \gdef\lst@inlinechars{%
\lst@Def{`#1}{\lst@DeInit\egroup\global\let\lst@inlinechars\@empty}%
\lst@Def{13}{\lst@DeInit\egroup \global\let\lst@inlinechars\@empty
- \PackageError{Listings}{lstinline ended by EOL}\@ehc}}%
- \lst@inlinechars}
+ \PackageError{Listings}{lstinline ended by EOL}\@ehc}}%
+ \lst@inlinechars}
% \end{macrocode}
% In the other case we get all characters up to |#1|, make these characters
% active, execute (typeset) them and end the listing (all via temporary macro).
% That's all about it.
% \begin{macrocode}
\def\lst@InlineJ#1{%
- \def\lst@temp##1#1{%
- \let\lst@arg\@empty \lst@InsideConvert{##1}\lst@arg
- \lst@DeInit\egroup}%
- \lst@temp}
+ \def\lst@temp##1#1{%
+ \let\lst@arg\@empty \lst@InsideConvert{##1}\lst@arg
+ \lst@DeInit\egroup}%
+ \lst@temp}
% \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\lst@InlineG}
-% is experimental.
+% is experimental.
% \begin{macrocode}
\def\lst@InlineG{%
- \lst@Init\relax
- \lst@IfNextCharActive{\lst@InlineM\}}%
- {\let\lst@arg\@empty \lst@InlineGJ}}
+ \lst@Init\relax
+ \lst@IfNextCharActive{\lst@InlineM\}}{%
+ \let\lst@arg\@empty \lst@InlineGJ}}
+% \end{macrocode}
+% This is the point for closing the group:
+% \begin{macrocode}
+\edef\lst@temp{\the\catcode`\^^@}
+\catcode`\^^@=2
\def\lst@InlineGJ{\futurelet\@let@token\lst@InlineGJTest}
\def\lst@InlineGJTest{%
- \ifx\@let@token\egroup
- \afterassignment\lst@InlineGJEnd
- \expandafter\let\expandafter\@let@token
+ \ifx\@let@token\egroup
+ \iffalse{\fi\romannumeral`^^@
+ \afterassignment\lst@InlineGJEnd
+ \expandafter\let\expandafter\@let@token
+ \else
+ \ifx\@let@token\@sptoken
+ \let\lst@next\lst@InlineGJReadSp
\else
- \ifx\@let@token\@sptoken
- \let\lst@next\lst@InlineGJReadSp
- \else
- \let\lst@next\lst@InlineGJRead
- \fi
- \expandafter\lst@next
+ \let\lst@next\lst@InlineGJRead
+ \fi
+ \expandafter\lst@next
\fi}
+% \end{macrocode}
+% As before: restore the previous catcode of |\^^@|:
+% \begin{macrocode}
+\catcode`\^^@=\lst@temp
\def\lst@InlineGJEnd{\lst@arg\lst@DeInit\egroup}
\def\lst@InlineGJRead#1{%
- \lccode`\~=`#1\lowercase{\lst@lAddTo\lst@arg~}%
- \lst@InlineGJ}
+ \lccode`\~=`#1\lowercase{\lst@lAddTo\lst@arg~}%
+ \lst@InlineGJ}
\def\lst@InlineGJReadSp#1{%
- \lccode`\~=`\ \lowercase{\lst@lAddTo\lst@arg~}%
- \lst@InlineGJ#1}
+ \lccode`\~=`\ \lowercase{\lst@lAddTo\lst@arg~}%
+ \lst@InlineGJ#1}
% \end{macrocode}
% \end{macro}
%
@@ -15313,7 +15357,7 @@
%
% \begin{macro}{\lst@MSkipToFirst}
% We just look whether to drop more lines or to leave the mode which restores
-% the definition of chr(13) and chr(10).
+% the definition of |chr(13)| and |chr(10)|.
% \begin{macrocode}
\def\lst@MSkipToFirst{%
\global\advance\lst@lineno\@ne
@@ -15391,7 +15435,7 @@
% \end{macrocode}
% We must append an active backslash and the `end string' to |\lst@arg|. So all
% (in fact most) other processing won't notice that the code has been inside
-% an argument. But the EOL character is chr(10)=|^^J| now and not chr(13).
+% an argument. But the EOL character is |chr(10)|=|^^J| now and not |chr(13)|.
% \begin{macrocode}
\begingroup \lccode`\~=`\\\lowercase{%
\gdef\lstenv@ProcessJ@{%
diff --git a/macros/latex/contrib/listings/listings.pdf b/macros/latex/contrib/listings/listings.pdf
index 41c366106a..b4bfc0d79e 100644
--- a/macros/latex/contrib/listings/listings.pdf
+++ b/macros/latex/contrib/listings/listings.pdf
Binary files differ
diff --git a/macros/latex/contrib/listings/lstdrvrs.dtx b/macros/latex/contrib/listings/lstdrvrs.dtx
index 56c2a92642..8541b7a0b9 100644
--- a/macros/latex/contrib/listings/lstdrvrs.dtx
+++ b/macros/latex/contrib/listings/lstdrvrs.dtx
@@ -1,6 +1,6 @@
% \iffalse
%
-% Time-stamp: <2024-03-12 09:33:03 ax006ho>
+% Time-stamp: <2024-05-25 06:23:16 ax006ho>
%
%<*driver>
\documentclass{ltxdoc}
@@ -33,7 +33,7 @@
% \title{Language, Style and Format drivers\\ for \textsf{Listings}\\
% {\large by Carsten Heinz and individual authors:}}
% \author{\InputIfFileExists{lstdrvrs.tmp}{}{}}
-% \date{2024/03/11\enspace\enspace Version 1.10a\ \box\abstractbox}
+% \date{2024/05/25\enspace\enspace Version 1.10b\ \box\abstractbox}
%
% \ifhyper
% \hypersetup{pdftitle={Language, Style and Format drivers for the
@@ -138,7 +138,7 @@
% \endgroup
% We mainly define default dialects.
% \begin{macrocode}
-\ProvidesFile{listings.cfg}[2024/03/11 1.10a listings configuration]
+\ProvidesFile{listings.cfg}[2024/05/25 1.10b listings configuration]
\def\lstlanguagefiles
{lstlang0.sty,lstlang1.sty,lstlang2.sty,lstlang3.sty}
\lstset{defaultdialect=[R/3 6.10]ABAP,
@@ -154,6 +154,7 @@
defaultdialect=[11.0]Mathematica,
defaultdialect=[OMG]OCL,
defaultdialect=[Standard]Pascal,
+ defaultdialect=[2]Python,
defaultdialect=[67]Simula,
defaultdialect=[plain]TeX,
defaultdialect=[97]VRML}
@@ -186,7 +187,7 @@
%<+lua-prf>\ProvidesFile{listings-lua.prf}
%<+python-prf>\ProvidesFile{listings-python.prf}
%<+rexx-prf>\ProvidesFile{listings-rexx.prf}
-%<-config> [2024/03/11 1.10a listings language file]
+%<-config> [2024/05/25 1.10b listings language file]
% \end{macrocode}
%
%
@@ -7819,7 +7820,8 @@ morecomment=[l]!%
%
% In August 2013
% \lstthanks{Alexis~Dimitriadis}{A.Dimitriadis@uu.nl}{2013/08/15} reworked
-% the definition by supplying the builtins.
+% the definition by supplying the builtins. The current version is based on
+% \url{https://docs.python.org/2/reference/lexical_analysis.html#identifiers}.
% \begingroup
% \begin{macrocode}
%<*lang1>
@@ -7828,17 +7830,22 @@ morecomment=[l]!%
%%
%% Python definition (c) 1998 Michael Weber
%% Additional definitions (2013) Alexis Dimitriadis
+%% small corrections based on
+%% https://docs.python.org/2/reference/lexical_analysis.html#identifiers
%%
-\lst@definelanguage{Python}{%
- morekeywords={access, and, break, class, continue, def, del, elif, else,%
- except, exec, finally, for, from, global, if, import, in, is, lambda,%
- not, or, pass, print, raise, return, try, while},%
+\lst@definelanguage[2]{Python}{%
+ morekeywords={and, as, assert, break, class, continue, def, del, elif,%
+ else, except, exec, finally, for, from, global, if, import, in, is,%
+ lambda, not, or, pass, print, raise, return, try, while, with, yield},%
% \end{macrocode}
-% Python has a long list of builtin-in functions
+% Python has a long list of builtin-in functions (altogether 76 entries
+% plus 5 special ones)
% (\url{http://docs.python.org/2/library/functions.html}) and it is a good
-% idea to make them visible in printed code
+% idea to make them visible in printed code.
% \begin{macrocode}
- % Built-ins
+ % Built-ins according to
+ % http://docs.python.org/2/library/functions.html,
+ % the last five entries are known as advanced or not essential
morekeywords=[2]{abs, all, any, basestring, bin, bool, bytearray,%
callable, chr, classmethod, cmp, compile, complex, delattr, dict, dir,%
divmod, enumerate, eval, execfile, file, filter, float, format,%
@@ -7847,43 +7854,96 @@ morecomment=[l]!%
memoryview, min, next, object, oct, open, ord, pow, property, range,%
raw_input, reduce, reload, repr, reversed, round, set, setattr, slice,%
sorted, staticmethod, str, sum, super, tuple, type, unichr, unicode,%
- vars, xrange, zip, apply, buffer, coerce, intern},%
+ vars, xrange, zip, __import__, apply, buffer, coerce, intern},%
sensitive=true,%
morecomment=[l]\#,%
+ morestring=[s]{'''}{'''},% used for documentation text
+ % (multiline strings)
+ morestring=[s]{"""}{"""},% added by Philipp Matthias Hahn
morestring=[b]',%
- morestring=[b]",%
-% \end{macrocode}
-% According to PEP (Python Enhancement Proposals) comment should be
-% distinguished from documentation strings, so we define
-% \begin{macrocode}
- morecomment=[s]{'''}{'''},% used for documentation text
- % (mulitiline strings)
- morecomment=[s]{"""}{"""},% added by Philipp Matthias Hahn
-% \end{macrocode}
-% \lsthelper{J\"urgen Dietel}{j.dietel@rz.rwth-aachen}{2015/05/05}{} provided
-% an example with a wrong representation of documentation strings, so the
-% two lines above got changed from |morestring| $\rightarrow$ |morecomment|.
-%
-% Python now supports so called \emph{raw strings} and also Unicode
-% strings. Here is the definition of these strings:
-% \begin{macrocode}
- morestring=[s]{r'}{'},% `raw' strings
- morestring=[s]{r"}{"},%
- morestring=[s]{r'''}{'''},%
- morestring=[s]{r"""}{"""},%
- morestring=[s]{u'}{'},% unicode strings
- morestring=[s]{u"}{"},%
- morestring=[s]{u'''}{'''},%
- morestring=[s]{u"""}{"""}%
-}%
+ morestring=[b]"%
+}
% \end{macrocode}
% \lsthelper{Philipp Matthias Hahn}{pmhahn@titan.lahn.de}{2002/04/18}{}
-% added the third comment. \lsthelper{eRreuR}{rogspr@newdeal.ch}{2002/05/28}
-% {probl\`eme avec "listings" et le langage Python} found a bug using Python
-% and \lsthelper{Nicolas Markey}{markey@lsv.ens-cachan.fr}{2002/05/29}
+% added the third comment above.
+% \lsthelper{eRreuR}{rogspr@newdeal.ch}{2002/05/28} {probl\`eme avec
+% "listings" et le langage Python} found a bug using Python and
+% \lsthelper{Nicolas Markey}{markey@lsv.ens-cachan.fr}{2002/05/29}
% {listings and Python} informed me about the corresponding thread on
% \texttt{fr.comp.text.tex} and provided the fix---adding \texttt{[b]} to
% both \texttt{morestring} declarations.
+%
+% \lsthelper{J\"urgen Dietel}{j.dietel@rz.rwth-aachen}{2015/05/05}{}
+% provided an example with a wrong representation of documentation strings,
+% so the two lines added by Philipp Matthias Hahn got changed from
+% |morestring| $\rightarrow$ |morecomment|.\footnote{According to PEP
+% (Python Enhancement Proposals---\url{https://peps.python.org/pep-0257/})
+% comment should be distinguished from documentation strings.}
+%
+% Python 3.0 was released in December 2008 and brought with it a number of
+% new features. \lsthelper{Naoki Sean
+% Pross}{npross@student.ethz.ch}{2024/05/25}{Python 3 syntax support for
+% the listings LaTeX package} provided the lists of new keywords and
+% built-in functions as well as the support for special strings.
+% \begin{macrocode}
+\lst@definelanguage[3]{Python}[2]{Python}{%
+ % keywords
+ deletekeywords={exec, print},
+ morekeywords={False, None, True, async, await, nonlocal,
+% \end{macrocode}
+% Python knows so called soft keywords:
+% \begin{macrocode}
+ match, case},
+% \end{macrocode}
+% The list of built-in functions has changed considerably (only 71 entries,
+% no special ones):
+% \begin{macrocode}
+ % built-in functions
+ deletekeywords=[2]{apply, basestring, buffer, cmp, coerce, execfile, %
+ file, intern, long, raw_input, reduce, reload, unichr, unicode, xrange},
+ morekeywords=[2]{aiter, anext, ascii, breakpoint, bytes, exec},
+% \end{macrocode}
+% Python now supports special strings like \emph{raw strings}, Unicode
+% strings, and some more. Here is the definition of these strings:
+% \begin{macrocode}
+ % `raw' strings
+ morestring=[s]{r'}{'},
+ morestring=[s]{r"}{"},
+ morestring=[s]{r'''}{'''},
+ morestring=[s]{r"""}{"""},
+ morestring=[s]{R'}{'},
+ morestring=[s]{R"}{"},
+ morestring=[s]{R'''}{'''},
+ morestring=[s]{R"""}{"""},
+ % Unicode strings
+ morestring=[s]{u'}{'},
+ morestring=[s]{u"}{"},
+ morestring=[s]{u'''}{'''},
+ morestring=[s]{u"""}{"""},
+ morestring=[s]{U'}{'},
+ morestring=[s]{U"}{"},
+ morestring=[s]{U'''}{'''},
+ morestring=[s]{U"""}{"""},
+ % Format strings
+ morestring=[s]{f'}{'},
+ morestring=[s]{f"}{"},
+ morestring=[s]{f'''}{'''},
+ morestring=[s]{f"""}{"""},
+ morestring=[s]{F'}{'},
+ morestring=[s]{F"}{"},
+ morestring=[s]{F'''}{'''},
+ morestring=[s]{F"""}{"""},
+ % Byte literals
+ morestring=[s]{b'}{'},
+ morestring=[s]{b"}{"},
+ morestring=[s]{b'''}{'''},
+ morestring=[s]{b"""}{"""},
+ morestring=[s]{B'}{'},
+ morestring=[s]{B"}{"},
+ morestring=[s]{B'''}{'''},
+ morestring=[s]{B"""}{"""},
+}%
+% \end{macrocode}
% \begin{macrocode}
%</lang1>
% \end{macrocode}
@@ -7903,6 +7963,8 @@ morecomment=[l]!%
%% Actual colors from idlelib/config-highlight.def
%% --> corrected to ``web-safe''
+%% Unimplemented IDLE syntax: function/class names being
+%% defined should be blue
%% strings = #00aa00 / 0,170,0 (a darker green)
%% builtins = #900090 / 144,0,144 (purple-ish)
%% keywords = #FF7700 / 255,119,0 (quite close to plain `orange')
@@ -7958,6 +8020,7 @@ morecomment=[l]!%
procedure,pull,push,queue,return,say,select,signal,then,%
to,trace,when},%
sensitive=false,%
+ morecomment=[l]{--},%
morecomment=[n]{/*}{*/},%
morestring=[d]{'},%
morestring=[d]{"},%
@@ -7999,7 +8062,6 @@ morecomment=[l]!%
sensitive=false,%
morestring=[d]",%
morestring=[d]',%
- morecomment=[s]{/*}{*/},%
}[keywords,comments,strings]
% \end{macrocode}
% \begin{macrocode}
@@ -8026,7 +8088,7 @@ morecomment=[l]!%
::options, ::requires, ::resource, ::routine,%
forward, guard, local, loop, raise, strict,%
},%
- alsoletter={:},%
+ alsoletter={:}
}[keywords,comments,strings]
% \end{macrocode}
% \begin{macrocode}
@@ -8042,38 +8104,22 @@ morecomment=[l]!%
%<*rexx-prf>
% \end{macrocode}
% \begin{macrocode}
-\usepackage{xcolor}
-\usepackage{textcomp}
-
-%% Actual colors from idlelib/config-highlight.def
-%% --> corrected to ``web-safe''
-%% strings = #00aa00 / 0,170,0 (a darker green)
-%% builtins = #900090 / 144,0,144 (purple-ish)
-%% keywords = #FF7700 / 255,119,0 (quite close to plain `orange')
-%\definecolor{IDLEorange}{RGB}{255,119,0} % pretty close to real orange
-%\definecolor{IDLEpurple}{RGB}{144,0,144}
-%\definecolor{IDLEgreen}{RGB}{0,170,0}
-%\definecolor{IDLEred}{RGB}{221,0,0}
-%% Corrected to ``web-safe''
-%\definecolor{orange2}{RGB}{255,102,0}
-\definecolor{purple2}{RGB}{153,0,153} % there's actually no standard purple
-\definecolor{green2}{RGB}{0,153,0} % a darker green
-%\definecolor{red2}{RGB}{221,0,0}
+\usepackage{xcolor} % needed for colors like yellow!10
+\usepackage{textcomp} % needed for upquote
-% Except for green and purple, the other colors are pretty good in standard
-% hue
-\lstdefinestyle{python-idle-code}{%
- language=Python, % the language
- basicstyle=\normalsize\ttfamily, % size of the fonts for the code
- % Color settings to match IDLE style
- keywordstyle=\color{orange}, % core keywords
- keywordstyle={[2]\color{purple2}}, % built-ins
- stringstyle=\color{green2},%
- commentstyle=\color{red},%
+\lstdefinestyle{rexx-colored}{%
+ language=oorexx, % the language
+ backgroundcolor=\color{yellow!10},
+ basicstyle=\normalsize\ttfamily, % size of the fonts for
+ % the code
+ % Color settings to match JHf's preferred style
+ keywordstyle=\color{blue}, % core keywords
+ keywordstyle={[2]\color{cyan}}, % built-ins
+ keywordstyle={[3]\color{olive}}, % special keywords
+ stringstyle=\color{teal},%
+ commentstyle=\color{orange},%
upquote=true, % requires textcomp
}
-% Unimplemented IDLE syntax: function/class names being defined should be
-% blue
% \end{macrocode}
% This code is provided in the file |listings-rexx.prf|, see section
% 2.4.1 (Preferences) of the \packagename{listings} documentation.
diff --git a/macros/latex/contrib/listings/lstdrvrs.pdf b/macros/latex/contrib/listings/lstdrvrs.pdf
index e5ded0321c..0315d2cad2 100644
--- a/macros/latex/contrib/listings/lstdrvrs.pdf
+++ b/macros/latex/contrib/listings/lstdrvrs.pdf
Binary files differ