From a62f77790bf4d66905f22ad01203d3b08301f6e5 Mon Sep 17 00:00:00 2001
From: Karl Berry <karl@freefriends.org>
Date: Tue, 5 Sep 2017 21:56:47 +0000
Subject: algobox (5sep17)

git-svn-id: svn://tug.org/texlive/trunk@45223 c570f23f-e606-0410-a88d-b1316a301751
---
 Master/texmf-dist/source/latex/algobox/algobox.dtx | 142 ++++++++++++++-------
 1 file changed, 96 insertions(+), 46 deletions(-)

(limited to 'Master/texmf-dist/source/latex/algobox/algobox.dtx')

diff --git a/Master/texmf-dist/source/latex/algobox/algobox.dtx b/Master/texmf-dist/source/latex/algobox/algobox.dtx
index b20a17a29c9..2e26eb79f4d 100644
--- a/Master/texmf-dist/source/latex/algobox/algobox.dtx
+++ b/Master/texmf-dist/source/latex/algobox/algobox.dtx
@@ -1,7 +1,7 @@
 % \iffalse meta-comment
 % vim: tw=80
 %
-%% File: algobox.dtx (C) Copyright 2016 RIVAUD Julien
+%% File: algobox.dtx (C) Copyright 2016-2017 RIVAUD Julien
 %%
 %% It may be distributed and/or modified under the conditions of the
 %% General Public License (GPL), either version 3 of this
@@ -14,16 +14,16 @@
 \RequirePackage{expl3}[2016/01/19]
 \def\ExplFileName{algobox}
 \def\ExplFileDescription{Typeset Algobox programs}
-\def\ExplFileDate{2017/09/03}
-\def\ExplFileVersion{1.1}
+\def\ExplFileDate{2017/09/04}
+\def\ExplFileVersion{1.2a}
 %</driver|package>
 %<*driver>
-\documentclass[full]{l3doc}
+\documentclass[full,a4paper]{l3doc}
 \usepackage{fontspec}
 \usepackage{algobox}
 \usepackage{url}
 \begin{document}
-  \def\Algobox{\textsc{Algobox}}
+  \def\Algobox{\textsc{AlgoBox}}
   \DocInput{\jobname.dtx}
 \end{document}
 %</driver>
@@ -232,14 +232,21 @@
 
 \int_new:N \l_@@_level_int
 
+%    \end{macrocode}
+% The colors are defined in "algohighlighter.cpp" in the \Algobox\ source,
+% except for the tree lines color. The names here are the same, with "algobox"
+% prepended.
+%    \begin{macrocode}
+
 \definecolor{algoboxarbre}{RGB}{146,146,146}
-\colorlet   {algoboxcommentaire}{algoboxarbre!70!black}
-\definecolor{algoboxstructure}{RGB}{134,0,0}
-\definecolor{algoboxmotclef}{RGB}{25,3,180}
-\definecolor{algoboxsialors}{RGB}{147,0,128}
-\definecolor{algoboxpour}{RGB}{187,136,0}
-\definecolor{algoboxtantque}{RGB}{222,111,6}
-\definecolor{algoboxnormal}{RGB}{0,0,0}
+\definecolor{algoboxColorStandard}{HTML}{000000}
+\definecolor{algoboxColorComment}{HTML}{606060}
+\definecolor{algoboxColorBloc}{HTML}{800000}
+\definecolor{algoboxColorCommande}{HTML}{0000CC}
+\definecolor{algoboxColorSi}{HTML}{800080}
+\definecolor{algoboxColorTantQue}{HTML}{DD6F06}
+\definecolor{algoboxColorPour}{HTML}{BB8800}
+\definecolor{algoboxColorFonction}{HTML}{9A4D00}
 
 \tikzset{
     every~algobox/.style=,
@@ -253,31 +260,35 @@
     algobox~indent/.style={xshift=2em},
     algobox~normal/.style={
         font=\sffamily,
-        color=algoboxnormal,
+        color=algoboxColorStandard,
     },
     algobox~commentaire/.style={
         algobox~normal/.try,
-        color=algoboxcommentaire,
+        color=algoboxColorComment,
     },
-    algobox~motclef/.style={
+    algobox~commande/.style={
         algobox~normal/.try,
-        color=algoboxmotclef,
+        color=algoboxColorCommande,
     },
     algobox~structure/.style={
         font=\sffamily\bfseries,
-        color=algoboxstructure
+        color=algoboxColorBloc
     },
     algobox~sialors/.style={
         algobox~structure/.try,
-        color=algoboxsialors,
+        color=algoboxColorSi,
     },
     algobox~pour/.style={
         algobox~structure/.try,
-        color=algoboxpour,
+        color=algoboxColorPour,
     },
     algobox~tantque/.style={
         algobox~structure/.try,
-        color=algoboxtantque,
+        color=algoboxColorTantQue,
+    },
+    algobox~fonctions/.style={
+        algobox~structure/.try,
+        color=algoboxColorFonction,
     },
 }
 
@@ -404,38 +415,26 @@
 % \subsection{Parsing/typesetting commands}
 %    \begin{macrocode}
 
-\NewDocumentCommand \@@_VARIABLES:w {} {
-    \@@_indent:nn {structure} {VARIABLES}
-}
-
 \NewDocumentCommand \@@_ESTDUTYPE:w { +u{\ESTDUTYPE} +u{\;} } {
     \@@_block:nn {normal} {
         \ignorespaces #1 \unskip\c_space_token\null
     }
-    \@@_node:nn {motclef}{EST_DU_TYPE}
+    \@@_node:nn {commande}{EST_DU_TYPE}
     \@@_node:nn {normal}{\null\c_space_token#2}
 }
 
-\NewDocumentCommand \@@_DEBUTALGORITHME:w {} {
-    \int_compare:nNnT \l_@@_level_int = \c_one {
-        % if there was a VARIABLES before
-        \@@_unindent:
-    }
-    \@@_indent:nn {structure} {DEBUT_ALGORITHME}
-}
-
 \NewDocumentCommand \@@_FINALGORITHME:w {} {
-    \int_compare:nNnT \l_@@_level_int = \c_one {
+    \int_while_do:nNnn \l_@@_level_int > \c_zero {
         \@@_unindent:
-        \@@_block:nn {structure} {FIN_ALGORITHME}
     }
+    \@@_block:nn {structure} {FIN_ALGORITHME}
 }
 
 \NewDocumentCommand \@@_PRENDLAVALEUR:w { u{\PRENDLAVALEUR} m } {
     \@@_block:nn {normal} {
         \ignorespaces#1\unskip\c_space_token\null
     }
-    \@@_node:nn {motclef}{PREND_LA_VALEUR}
+    \@@_node:nn {commande}{PREND_LA_VALEUR}
     \@@_node:nn {normal}{\null\c_space_token#2}
 }
 
@@ -490,6 +489,14 @@
     \@@_unindent:
 }
 
+\NewDocumentCommand \@@_FONCTION:w { +u{\;} } {
+    \int_while_do:nNnn \l_@@_level_int > \c_one {
+        \@@_unindent:
+    }
+    \@@_indent:nn {fonctions} {FONCTION}
+    \@@_node:nn {normal}{\null\c_space_token#1}
+}
+
 \NewDocumentCommand \@@_LINE:w { s O{normal} m } {
     \IfBooleanTF {#1} {
         \@@_indent:nn {#2} {#3}
@@ -507,6 +514,51 @@
 % \subsection{User commands and environment}
 %    \begin{macrocode}
 
+\cs_new_protected_nopar:Nn \@@_make_keyword:n {
+    \tl_set:Nn \l_tmpa_tl {#1}
+    \tl_replace_all:Nnn \l_tmpa_tl {_} {}
+    \cs_set:cpn {\l_tmpa_tl} {\@@_keyword:nw {#1}}
+}
+
+\NewDocumentCommand \@@_keyword:nw {m +u{\;}} {
+    \@@_block:nn {commande} {#1}
+    \@@_node:nn {normal}{\null\c_space_token#2}
+}
+
+\cs_new_protected_nopar:Nn \@@_make_structure:nn {
+    \tl_set:Nn \l_tmpa_tl {#2}
+    \tl_replace_all:Nnn \l_tmpa_tl {_} {}
+    \cs_set:cpn {\l_tmpa_tl} {\@@_topstructure:nn {#1}{#2}}
+}
+
+\cs_new_protected_nopar:Nn \@@_topstructure:nn {
+    \int_while_do:nNnn \l_@@_level_int > \c_zero {
+        \@@_unindent:
+    }
+    \@@_indent:nn {#1} {#2}
+}
+
+\cs_new_protected_nopar:Nn \@@_make_func_structure:nn {
+    \tl_set:Nn \l_tmpa_tl {#1}
+    \tl_replace_all:Nnn \l_tmpa_tl {_} {}
+    \cs_set:cpn {\l_tmpa_tl} {\@@_funcstructure:nn {#1}{#2}}
+}
+
+\cs_new_protected_nopar:Nn \@@_funcstructure:nn {
+    \int_while_do:nNnn \l_@@_level_int > \c_two {
+        \@@_unindent:
+    }
+    \bool_if:nTF {#2}{\@@_indent:nn}{\@@_block:nn} {fonctions} {#1}
+}
+
+\clist_const:Nn \c_@@_keywords_clist {
+    PAUSE, LIRE, AFFICHERCALCUL, AFFICHER,
+    TRACER_POINT, TRACER_POINT_Rouge, TRACER_POINT_Vert,
+    TRACER_POINT_Bleu, TRACER_POINT_Blanc,
+    TRACER_SEGMENT, TRACER_SEGMENT_Rouge, TRACER_SEGMENT_Vert,
+    TRACER_SEGMENT_Bleu, TRACER_SEGMENT_Blanc,
+    RENVOYER, APPELER_FONCTION
+}
 
 \cs_new_protected_nopar:Nn \@@_begincode:n {
     \int_zero:N \l_@@_level_int
@@ -517,26 +569,24 @@
         \cs_set_eq:NN \; \prg_do_nothing:
         \cs_set_eq:NN \LINE             \@@_LINE:w
         \cs_set_eq:NN \NODE             \@@_NODE:w
-        \cs_set_eq:NN \VARIABLES        \@@_VARIABLES:w
-        \cs_set_eq:NN \DEBUTALGORITHME  \@@_DEBUTALGORITHME:w
         \cs_set_eq:NN \FINALGORITHME    \@@_FINALGORITHME:w
         \cs_set_eq:NN \SI               \@@_SI:w
         \cs_set_eq:NN \POUR             \@@_POUR:w
         \cs_set_eq:NN \TANTQUE          \@@_TANTQUE:w
-        \cs_set:Npn \AFFICHER           {\@@_keyword:nw {AFFICHER}}
-        \cs_set:Npn \AFFICHERCALCUL     {\@@_keyword:nw {AFFICHERCALCUL}}
-        \cs_set:Npn \LIRE               {\@@_keyword:nw {LIRE}}
-        \cs_set:Npn \PAUSE              {\@@_block:nn{motclef}{PAUSE}}
+        \cs_set_eq:NN \FONCTION         \@@_FONCTION:w
         \cs_set:Npn \//##1\;            {\@@_block:nn{commentaire}{//##1}}
+        \clist_map_function:NN \c_@@_keywords_clist \@@_make_keyword:n
+        \@@_make_structure:nn {structure} {VARIABLES}
+        \@@_make_structure:nn {structure} {DEBUT_ALGORITHME}
+        \@@_make_structure:nn {fonctions} {FONCTIONS_UTILISEES}
+        \@@_make_func_structure:nn {VARIABLES_FONCTION} \c_true_bool
+        \@@_make_func_structure:nn {DEBUT_FONCTION} \c_false_bool
+        \@@_make_func_structure:nn {FIN_FONCTION} \c_false_bool
 }
 \cs_new_protected_nopar:Nn \@@_closecode: {
     \end{tikzpicture}
 }
 
-\NewDocumentCommand \@@_keyword:nw {m +u{\;}} {
-    \@@_block:nn {motclef} {#1}
-    \@@_node:nn {normal}{\null\c_space_token#2}
-}
 
 
 \NewDocumentCommand \smalgobox { O{} m } {
-- 
cgit v1.2.3

