texlive[48836] Master/texmf-dist: nicematrix (5oct18)

commits+karl at tug.org commits+karl at tug.org
Fri Oct 5 22:50:50 CEST 2018


Revision: 48836
          http://tug.org/svn/texlive?view=revision&revision=48836
Author:   karl
Date:     2018-10-05 22:50:49 +0200 (Fri, 05 Oct 2018)
Log Message:
-----------
nicematrix (5oct18)

Modified Paths:
--------------
    trunk/Master/texmf-dist/doc/latex/nicematrix/README.md
    trunk/Master/texmf-dist/doc/latex/nicematrix/nicematrix.pdf
    trunk/Master/texmf-dist/source/latex/nicematrix/nicematrix.dtx
    trunk/Master/texmf-dist/tex/latex/nicematrix/nicematrix.sty

Modified: trunk/Master/texmf-dist/doc/latex/nicematrix/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/nicematrix/README.md	2018-10-05 20:50:33 UTC (rev 48835)
+++ trunk/Master/texmf-dist/doc/latex/nicematrix/README.md	2018-10-05 20:50:49 UTC (rev 48836)
@@ -1,10 +1,26 @@
-The LaTeX extension nicematrix is distributed under the LPPL 1.3 license.
+# Readme for the package nicematrix
 
-This extension has been written by F. Pantigny (fpantigny at wanadoo.fr).
+## License
+The LaTeX extension `nicematrix` is distributed under the LPPL 1.3 license.
 
-This extension is entirely contained in a single file : nicematrix.sty
+## Presentation
+This extension has been written by F. Pantigny (`fpantigny at wanadoo.fr`).
 
-The LaTeX package nicematrix provides new environments similar to the classical environments
-array and matrix but with some additional features. Among these features are the
+The LaTeX package `nicematrix` provides new environments similar to the classical environments
+`{array}` and `{matrix}` but with some additional features. Among these features are the
 possibilities to fix the width of the columns, to draw continuous ellipsis dots between the cells
-of the array and to add an exterior line and an exterior column.
\ No newline at end of file
+of the array and to add an exterior line and an exterior column.
+
+
+## Installation
+
+The package `nicematrix` is present in the distributions MiKTeX, TeXLive and MacTeX.
+
+For a manual installation:
+
+* put the files `nicematrix.ins` dans `nicematrix.dtx` in the same directory; 
+* run `latex nicematrix.ins`.
+
+The file `nicematrix.sty` will be generated.
+
+The file `nicematrix.sty` is the only file necessary to use the extension `nicematrix`.

Modified: trunk/Master/texmf-dist/doc/latex/nicematrix/nicematrix.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/source/latex/nicematrix/nicematrix.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/nicematrix/nicematrix.dtx	2018-10-05 20:50:33 UTC (rev 48835)
+++ trunk/Master/texmf-dist/source/latex/nicematrix/nicematrix.dtx	2018-10-05 20:50:49 UTC (rev 48836)
@@ -15,8 +15,8 @@
 %
 % \fi
 % \iffalse
-\def\myfileversion{2.1.1}
-\def\myfiledate{2018/09/16}
+\def\myfileversion{2.1.2}
+\def\myfiledate{2018/10/05}
 %
 %
 %<*batchfile>
@@ -64,6 +64,7 @@
 \setlength{\columnseprule}{0.4pt}
 \usepackage{colortbl}
 \usepackage{arydshln}
+\usepackage{footnotehyper}
 \parindent 0pt
 
 \DisableCrossrefs
@@ -96,15 +97,18 @@
 %
 %
 % \medskip
+% \begin{savenotes}
 % \begin{minipage}{0.6\linewidth}
 % This package provides some new tools to draw mathematical matrices. The main features are the following:
 % 
-% \textbullet\ continuous dotted lines;
+% \textbullet\ continuous dotted lines\footnote{If the class option |draft| is used, these dotted lines will not be
+% drawn for a faster compilation.};
 %
 % \textbullet\ a first row and a last column for labels;
 %
 % \textbullet\ a control of the width of the columns.
 % \end{minipage}
+% \end{savenotes}
 % \hspace{1.4cm}
 % $\vcenter{
 %  \begin{bNiceArrayRC}{CCCC}%
@@ -222,9 +226,9 @@
 %
 % \smallskip
 % Each of them must be used alone in the cell of the array and it draws a dotted line between the first non-empty
-% cells\footnote{The precise definition of a ``non-empty cell'' is given below.} on both sides of the current cell.
-% Of course, for |\Ldots| and |\Cdots|, it's an horizontal line; for |\Vdots|, it's a vertical line and for
-% |\Ddots| and |\Iddots| diagonal ones.\par\nobreak
+% cells\footnote{The precise definition of a ``non-empty cell'' is given below (cf. p.~\pageref{empty-cells}).} on
+% both sides of the current cell. Of course, for |\Ldots| and |\Cdots|, it's an horizontal line; for |\Vdots|, it's
+% a vertical line and for |\Ddots| and |\Iddots| diagonal ones.\par\nobreak
 % \bigskip
 % \begin{BVerbatim}[baseline=c,boxwidth=10cm]
 % \begin{bNiceMatrix}
@@ -492,6 +496,9 @@
 % The command |\hdotsfor| of \pkg{amsmath} takes an optional argument (between square brackets) which is 
 % used for fine tuning of the space beetween two consecutive dots. For homogeneity, |\Hdotsfor| has
 % also an optional argument but this argument is discarded silently.
+%
+% Remark: Unlike the command |\hdotsfor| of \pkg{amsmath}, the command |\Hdotsfor| is compatible with the extension
+% \pkg{colortbl}.  
 % 
 % \subsection{How to generate the continuous dotted lines transparently}
 %
@@ -543,8 +550,8 @@
 % 
 % The package \pkg{nicematrix} creates a Tikz node for each cell of the considered array. These nodes are used to
 % draw the dotted lines between the cells of the matrix. However, the user may wish to use directly these nodes.
-% It's possible. First, the user have to give a name to the matrix (with a key called |name|). Then, the nodes are
-% accessible through the names ``\textsl{name}-$i$-$j$'' where \textsl{name} is the name given to the matrix and
+% It's possible. First, the user have to give a name to the array (with the key called |name|). Then, the nodes are
+% accessible through the names ``\textsl{name}-$i$-$j$'' where \textsl{name} is the name given to the array and
 % $i$ and $j$ the number of the row and the column of the considered cell.
 % 
 % \medskip
@@ -834,7 +841,7 @@
 % 
 %
 % \bigskip
-% In fact, the environment |{pNiceArrayC}| and its variants are based upon an more general environment, called
+% In fact, the environment |{pNiceArrayC}| and its variants are based upon a more general environment, called
 % |{NiceArrayCwithDelims}|. The first two mandatory arguments of this environment are the left and right delimiters
 % used in the construction of the matrix. It's possible to use |{NiceArrayCwithDelims}| if we want to use atypical
 % delimiters.
@@ -1173,6 +1180,7 @@
 %
 % \subsection{The ``empty'' cells}
 % 
+% \label{empty-cells}
 % An instruction like |\Ldots|, |\Cdots|, etc. tries to determine the first non-empty cells on both sides. However,
 % a empty cell is not necessarily a cell with no TeX content (that is to say a cell with no token between the two
 % ampersands~|&|). Indeed, a cell with contents |\hspace*{1cm}| may be considered as empty.
@@ -1223,10 +1231,19 @@
 % |\NiceMatrixOptions|. With this option, |{NiceArray}| will insert the same horizontal spaces as the environment
 % |{array}|. 
 %
-% This option is also for ``compatibility'' since the package \pkg{nicematrix} provides a more precise control with
+% This option is only for ``compatibility'' since the package \pkg{nicematrix} provides a more precise control with
 % the options |left-margin|, |right-margin|, |extra-left-margin| and |extra-right-margin|.
 %
 %
+% \subsection{The class option draft}
+%
+% The package \pkg{nicematrix} is rather slow when drawing the dotted lines (generated by |\Cdots|, |\Ldots|, |\Ddots|,
+% etc.).\footnote{The main reason is that we want dotted lines with round dots (and not square dots) with the same
+% space on both extremities of the lines. To achieve this goal, we have to construct our own systeme of dotted
+% lines.}
+%
+% That's why, when the class option |draft| is used, the dotted lines are not drawn, for a faster compilation.
+% 
 % \subsection{A technical problem with the argument of \textbackslash\textbackslash}
 %
 % For technical, reasons, if you use the optional argument of the command |\\|, the vertical space added will also
@@ -1301,29 +1318,32 @@
 % possible to use |-- cycle| in |code-after|. 
 %
 %
-% \subsection{Compatibility with dcolumn}
+% \subsection{Compatibility with the extension dcolumn}
 %
+% \label{dcolumn}
 % If we want to make \pkg{nicematrix} compatible with \pkg{dcolumn}, it's necessary to patch the commands
 % |\DC at endcentre| and |\DC at endright| as follow.
 %
 % \bigskip
-% |\def\DC at endcentre{$\egroup|
 %
-% |\ifdim \wd\z@>\wd\tw@|
-%
-% |\setbox\tw@=\hbox to\wd\z@{\unhbox\tw@\hfill}%|
-%
-% |\else|
+% \begin{scope}
+% \fvset{commandchars=\~\#\+}
+% \begin{Verbatim}
+% \def\DC at endcentre{$\egroup
+% \ifdim \wd\z@>\wd\tw@
+% \setbox\tw@=\hbox to\wd\z@{\unhbox\tw@\hfill}%
+% \else
+% \setbox\z@=\hbox to\wd\tw@{\hfill\unhbox\z@}\fi
+% ~emphase#\@@_Cell:+\box\z@\box\tw@ ~emphase#\@@_end_Cell:+}
+% \end{Verbatim}
 % 
-% |\setbox\z@=\hbox to\wd\tw@{\hfill\unhbox\z@}\fi|
+% \begin{Verbatim}
+% \def\DC at endright{$\hfil\egroup ~emphase#\@@_Cell:+\box\z@\box\tw@ ~emphase#\@@_end_Cell:+}
+% \end{Verbatim}
+% \end{scope}
+%       
 %
-% |\@@_Cell:\box\z@\box\tw@ \@@_end_Cell:}|
 %
-% \medskip
-% |\def\DC at endright{$\hfil\egroup \@@_Cell:\box\z@\box\tw@ \@@_end_Cell:}|
-%
-%
-%
 % \section{Examples}
 %
 % \subsection{Dotted lines}
@@ -1845,7 +1865,8 @@
 % 
 % \section{Implementation}
 %
-% By default, the package \pkg{nicematrix} doesn't patch any existing code.
+% By default, the package \pkg{nicematrix} doesn't patch any existing code.\footnote{If we want \pkg{nicematrix}
+% compatible with \pkg{dcolumn}, we have to patch \pkg{dcolumn}: cf. p.~\pageref{dcolumn}.}
 %
 % \smallskip
 % However, when the option |renew-dots| is used, the commands |\cdots|, |\ldots|, |\dots|, |\vdots|, |\ddots| and
@@ -1885,19 +1906,23 @@
   {Several features to improve the typesetting of mathematical matrices with TikZ}
 %    \end{macrocode}
 % 
+% \bigskip
+% We test if the class option |draft| has been used. In this case, we raise the flag |\c_@@_draft_bool| because we
+% won't draw the dotted lines if the option |draft| is used.
+%    \begin{macrocode}
+\bool_new:N \c_@@_draft_bool
+\DeclareOption {draft} {\bool_set_true:N \c_@@_draft_bool}
+\DeclareOption* {}
+\ProcessOptions \relax
+%    \end{macrocode}
+%
 % The command for the treatment of the options of |\usepackage| is at the end of this package for technical reasons.
-%
+% 
 % \bigskip
 % We load \pkg{array} and \pkg{amsmath}.
 %    \begin{macrocode}
 \RequirePackage{array}
 \RequirePackage{amsmath}
-%    \end{macrocode}
-%
-% \bigskip 
-% The package \pkg{xparse} will be used to define the environment |{NiceMatrix}|, its variants and the
-% document-level commands (|\NiceMatrixOptions|, etc.).
-%    \begin{macrocode}
 \RequirePackage{xparse}
 %    \end{macrocode}
 %
@@ -1978,7 +2003,7 @@
 %
 % The token list |\l_@@_pos_env_tl| will contain one of the three values |t|, |c| or |b| and will indicate the
 % position of the environment as in the option of the environment |{array}|. For the environment |{pNiceMatrix}|,
-% |{pNiceArrayC}|,|{pNiceArrayRC}| and their variants, the value will programmatically be fixed to |c|. For the
+% |{pNiceArrayC}|, |{pNiceArrayRC}| and their variants, the value will programmatically be fixed to |c|. For the
 % environment |{NiceArray}|, however, the three values |t|, |c| and |b| are possible.
 %    \begin{macrocode}
 \tl_new:N \l_@@_pos_env_tl 
@@ -1994,7 +2019,7 @@
 %    \end{macrocode}
 %
 % \bigskip
-% The flag |\l_@@_parallelize_diags_bool| controls wether the diagonals are parallelized. The default
+% The flag |\l_@@_parallelize_diags_bool| controls wether the diagonals are parallelized. The initial value
 % is~|true|.
 %    \begin{macrocode}
 \bool_new:N \l_@@_parallelize_diags_bool
@@ -2065,7 +2090,7 @@
 \dim_new:N \g_@@_extra_right_margin_dim
 %    \end{macrocode}
 % 
-%
+% 
 % \bigskip
 % We define a set of options which will be used with the command |NiceMatrixOptions|.\footnote{Before the version
 % 1.3, the names of the options were in ``camel-case style'' (like |ParallelizeDiagonals|) which was not a good idea. In
@@ -2122,8 +2147,8 @@
 % \bigskip
 % Idem for the first row in environments like |{pNiceArrayRC}|.
 %    \begin{macrocode}
-   code-for-first-row   .tl_set:N   = \l_@@_code_for_first_row_tl,
-   code-for-first-row    .value_required:n = true,
+      code-for-first-row   .tl_set:N   = \l_@@_code_for_first_row_tl,
+      code-for-first-row    .value_required:n = true,
 %    \end{macrocode}
 %
 % \bigskip
@@ -2150,6 +2175,7 @@
       create-extra-nodes  .default:n    = true,
 %    \end{macrocode}
 %
+%
 % \bigskip
 %    \begin{macrocode}
       left-margin  .dim_set:N  = \l_@@_left_margin_dim,
@@ -2459,7 +2485,50 @@
               nested.~We~can~go~on,~but,~maybe,~you~will~have~errors~or~an~incorrect~
               result.}
 %    \end{macrocode}
+%
+%
 % \bigskip
+% The command |\@@_define_dots:| will be used in the environment |{NiceArray}| to define the commands |\Ldots|,
+% |\Cdots|, etc.
+%    \begin{macrocode}
+\cs_new_protected:Npn \@@_define_dots:
+    {\cs_set_eq:NN \Ldots \@@_Ldots
+     \cs_set_eq:NN \Cdots \@@_Cdots
+     \cs_set_eq:NN \Vdots \@@_Vdots
+     \cs_set_eq:NN \Ddots \@@_Ddots
+     \cs_set_eq:NN \Iddots \@@_Iddots
+     \bool_if:NT \l_@@_renew_dots_bool
+        {\cs_set_eq:NN \ldots \@@_Ldots
+         \cs_set_eq:NN \cdots \@@_Cdots
+         \cs_set_eq:NN \vdots \@@_Vdots
+         \cs_set_eq:NN \ddots \@@_Ddots
+         \cs_set_eq:NN \iddots \@@_Iddots
+         \cs_set_eq:NN \dots \@@_Ldots
+         \cs_set_eq:NN \hdotsfor \@@_Hdotsfor}}
+%    \end{macrocode}
+%
+% \bigskip
+% With |\@@_define_dots_to_nil:|, the commands like |\Ldots|, |\Cdots|, are defined, but with no effect. This
+% command will be used if the class option |draft| is used.
+%    \begin{macrocode}
+\cs_new_protected:Npn \@@_define_dots_to_nil:
+    {\cs_set_eq:NN \Ldots \prg_do_nothing:
+     \cs_set_eq:NN \Cdots \prg_do_nothing:
+     \cs_set_eq:NN \Vdots \prg_do_nothing:
+     \cs_set_eq:NN \Ddots \prg_do_nothing:
+     \cs_set_eq:NN \Iddots \prg_do_nothing:
+     \bool_if:NT \l_@@_renew_dots_bool
+        {\cs_set_eq:NN \ldots \prg_do_nothing:
+         \cs_set_eq:NN \cdots \prg_do_nothing:
+         \cs_set_eq:NN \vdots \prg_do_nothing:
+         \cs_set_eq:NN \ddots \prg_do_nothing:
+         \cs_set_eq:NN \iddots \prg_do_nothing:
+         \cs_set_eq:NN \dots \prg_do_nothing:
+         \cs_set_eq:NN \hdotsfor \@@_Hdotsfor}}
+%    \end{macrocode}
+%                                                                                      
+%
+% \bigskip
 % First, we test if we are yet in an environment |{NiceArray}| (nested environment are forbidden). It's easy to
 % test whether we are in an environment |{NiceArray}| : a special command |\@@_in_NiceArray:| is defined.
 %    \begin{macrocode}
@@ -2470,9 +2539,8 @@
 % We deactivate Tikz externalization (since we use Tikz pictures with the options |overlay| and 
 % |remember picture|, there would be errors).
 %    \begin{macrocode}
-     \ifcsname tikz at library@external at loaded\endcsname
-      \tikzset{external/export = false}
-     \fi
+     \cs_if_exist:NT \tikz at library@external at loaded
+        {\tikzset{external/export = false}}
      \cs_set:Npn \@@_in_NiceArray: {--Void--}
      \aftergroup \@@_after_array:
      \tl_gclear_new:N \g_@@_lines_to_draw_tl 
@@ -2586,24 +2654,15 @@
           \makebox[##2][##1]{\box_use:N \l_tmpa_box}}}
 %    \end{macrocode}
 % 
-% The commands |\Ldots|, |\Cdots|, etc. will be defined only in the environment |{NiceArray}|.
+% The commands |\Ldots|, |\Cdots|, etc. will be defined only in the environment |{NiceArray}|. If the class option
+% |draft| is used, these commands will be defined to be no-op (the dotted lines are not drawn).
 %    \begin{macrocode}
-     \cs_set_eq:NN \Ldots \@@_Ldots
-     \cs_set_eq:NN \Cdots \@@_Cdots
-     \cs_set_eq:NN \Vdots \@@_Vdots
-     \cs_set_eq:NN \Ddots \@@_Ddots
-     \cs_set_eq:NN \Iddots \@@_Iddots
+     \bool_if:NTF \c_@@_draft_bool
+            \@@_define_dots_to_nil:
+            \@@_define_dots:
      \cs_set_eq:NN \Hspace \@@_Hspace:
      \cs_set_eq:NN \Hdotsfor \@@_Hdotsfor
      \cs_set_eq:NN \multicolumn \@@_multicolumn:nnn
-     \bool_if:NT \l_@@_renew_dots_bool
-        {\cs_set_eq:NN \ldots \@@_Ldots
-         \cs_set_eq:NN \cdots \@@_Cdots
-         \cs_set_eq:NN \vdots \@@_Vdots
-         \cs_set_eq:NN \ddots \@@_Ddots
-         \cs_set_eq:NN \iddots \@@_Iddots
-         \cs_set_eq:NN \dots \@@_Ldots
-         \cs_set_eq:NN \hdotsfor \@@_Hdotsfor}
 %    \end{macrocode}
 % 
 %
@@ -2816,9 +2875,8 @@
 %    \begin{macrocode}
 \cs_new_protected:Nn \@@_after_array:
     {\group_begin:
-     \ifcsname tikz at library@external at loaded\endcsname
-         \tikzset{external/export = false}
-     \fi
+     \cs_if_exist:NT \tikz at library@external at loaded
+         {\tikzset{external/export = false}}
 %    \end{macrocode}
 % Now, the definition of the counters |\g_@@_column_int| and |\g_@@_column_total_int| change: |\g_@@_column_int|
 % will be the number of columns without the exterior column (in an environment like |{pNiceArrayC}|) and
@@ -2887,7 +2945,7 @@
 %    \end{macrocode}
 %
 % \bigskip
-% A dotted line will be said \emph{open} in one of its extremity when it stops on the edge of the matrix and \emph{closed}
+% A dotted line will be said \emph{open} in one of its extremities when it stops on the edge of the matrix and \emph{closed}
 % otherwise. In the following matrix, the dotted line is closed on its left extremity and open on its right.
 % \[ \begin{pNiceMatrix}
 % a+b+c & a+b & a\\
@@ -2896,7 +2954,8 @@
 % \end{pNiceMatrix}\]
 % For a closed extremity, we use the normal node and for a open one, we use the ``medium node'' (the medium and
 % large nodes are created with |\@@_create_extra_nodes:| if they have not been created yet).
-% \[ \begin{pNiceMatrix}[code-after = {\begin{tikzpicture} 
+% \[ \begin{pNiceMatrix}[create-extra-nodes,
+%                        code-after = {\begin{tikzpicture} 
 %                                      \node [highlight, fit={(2-1)}] {} ;
 %                                      \node [highlight, fit={(2-3-medium)}] {} ;
 %                                      \end{tikzpicture}
@@ -4140,6 +4199,9 @@
 % Tikz externalization. In any case, it's not possible to externalize the Tikz elements constructed by
 % \pkg{nicematrix} because they use the options |overlay| and |remember picture|.}
 % 
+% \subsection{Changes between version 2.1 and 2.1.2}
+% Option |draft|: with this option, the dotted lines are not drawn (quicker).
+%
 % \endinput
 % Local Variables:
 % TeX-fold-mode: nil

Modified: trunk/Master/texmf-dist/tex/latex/nicematrix/nicematrix.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/nicematrix/nicematrix.sty	2018-10-05 20:50:33 UTC (rev 48835)
+++ trunk/Master/texmf-dist/tex/latex/nicematrix/nicematrix.sty	2018-10-05 20:50:49 UTC (rev 48836)
@@ -18,8 +18,8 @@
 %% and version 1.3 or later is part of all distributions of
 %% LaTeX version 2005/12/01 or later.
 %% 
-\def\myfileversion{2.1.1}
-\def\myfiledate{2018/09/16}
+\def\myfileversion{2.1.2}
+\def\myfiledate{2018/10/05}
 \RequirePackage{tikz}
 \usetikzlibrary{fit}
 \RequirePackage{l3keys2e}
@@ -28,6 +28,10 @@
   {\myfiledate}
   {\myfileversion}
   {Several features to improve the typesetting of mathematical matrices with TikZ}
+\bool_new:N \c__nm_draft_bool
+\DeclareOption {draft} {\bool_set_true:N \c__nm_draft_bool}
+\DeclareOption* {}
+\ProcessOptions \relax
 \RequirePackage{array}
 \RequirePackage{amsmath}
 \RequirePackage{xparse}
@@ -91,8 +95,8 @@
       NullifyDots       .meta:n     = nullify-dots,
       code-for-last-col  .tl_set:N         = \l__nm_code_for_last_col_tl,
       code-for-last-col  .value_required:n = true,
-   code-for-first-row   .tl_set:N   = \l__nm_code_for_first_row_tl,
-   code-for-first-row    .value_required:n = true,
+      code-for-first-row   .tl_set:N   = \l__nm_code_for_first_row_tl,
+      code-for-first-row    .value_required:n = true,
       exterior-arraycolsep .bool_set:N = \l__nm_exterior_arraycolsep_bool ,
       exterior-arraycolsep .default:n  = true,
       columns-width     .code:n    = \str_if_eq:nnTF {#1} {auto}
@@ -284,12 +288,39 @@
              {Environments~\{NiceArray\}~(or~\{NiceMatrix\},~etc.)~can't~be~
               nested.~We~can~go~on,~but,~maybe,~you~will~have~errors~or~an~incorrect~
               result.}
+\cs_new_protected:Npn \__nm_define_dots:
+    {\cs_set_eq:NN \Ldots \__nm_Ldots
+     \cs_set_eq:NN \Cdots \__nm_Cdots
+     \cs_set_eq:NN \Vdots \__nm_Vdots
+     \cs_set_eq:NN \Ddots \__nm_Ddots
+     \cs_set_eq:NN \Iddots \__nm_Iddots
+     \bool_if:NT \l__nm_renew_dots_bool
+        {\cs_set_eq:NN \ldots \__nm_Ldots
+         \cs_set_eq:NN \cdots \__nm_Cdots
+         \cs_set_eq:NN \vdots \__nm_Vdots
+         \cs_set_eq:NN \ddots \__nm_Ddots
+         \cs_set_eq:NN \iddots \__nm_Iddots
+         \cs_set_eq:NN \dots \__nm_Ldots
+         \cs_set_eq:NN \hdotsfor \__nm_Hdotsfor}}
+\cs_new_protected:Npn \__nm_define_dots_to_nil:
+    {\cs_set_eq:NN \Ldots \prg_do_nothing:
+     \cs_set_eq:NN \Cdots \prg_do_nothing:
+     \cs_set_eq:NN \Vdots \prg_do_nothing:
+     \cs_set_eq:NN \Ddots \prg_do_nothing:
+     \cs_set_eq:NN \Iddots \prg_do_nothing:
+     \bool_if:NT \l__nm_renew_dots_bool
+        {\cs_set_eq:NN \ldots \prg_do_nothing:
+         \cs_set_eq:NN \cdots \prg_do_nothing:
+         \cs_set_eq:NN \vdots \prg_do_nothing:
+         \cs_set_eq:NN \ddots \prg_do_nothing:
+         \cs_set_eq:NN \iddots \prg_do_nothing:
+         \cs_set_eq:NN \dots \prg_do_nothing:
+         \cs_set_eq:NN \hdotsfor \__nm_Hdotsfor}}
 \NewDocumentEnvironment {NiceArray} {O{} m O{}}
     {\cs_if_exist:NT \__nm_in_NiceArray:
            {\__nm_msg_error:n {We~are~yet~in~an~environment~NiceArray}}
-     \ifcsname tikz at library@external at loaded\endcsname
-      \tikzset{external/export = false}
-     \fi
+     \cs_if_exist:NT \tikz at library@external at loaded
+        {\tikzset{external/export = false}}
      \cs_set:Npn \__nm_in_NiceArray: {--Void--}
      \aftergroup \__nm_after_array:
      \tl_gclear_new:N \g__nm_lines_to_draw_tl
@@ -348,22 +379,12 @@
           \hbox_set_end:
           \cs_set_eq:NN \hss \hfil
           \makebox[##2][##1]{\box_use:N \l_tmpa_box}}}
-     \cs_set_eq:NN \Ldots \__nm_Ldots
-     \cs_set_eq:NN \Cdots \__nm_Cdots
-     \cs_set_eq:NN \Vdots \__nm_Vdots
-     \cs_set_eq:NN \Ddots \__nm_Ddots
-     \cs_set_eq:NN \Iddots \__nm_Iddots
+     \bool_if:NTF \c__nm_draft_bool
+            \__nm_define_dots_to_nil:
+            \__nm_define_dots:
      \cs_set_eq:NN \Hspace \__nm_Hspace:
      \cs_set_eq:NN \Hdotsfor \__nm_Hdotsfor
      \cs_set_eq:NN \multicolumn \__nm_multicolumn:nnn
-     \bool_if:NT \l__nm_renew_dots_bool
-        {\cs_set_eq:NN \ldots \__nm_Ldots
-         \cs_set_eq:NN \cdots \__nm_Cdots
-         \cs_set_eq:NN \vdots \__nm_Vdots
-         \cs_set_eq:NN \ddots \__nm_Ddots
-         \cs_set_eq:NN \iddots \__nm_Iddots
-         \cs_set_eq:NN \dots \__nm_Ldots
-         \cs_set_eq:NN \hdotsfor \__nm_Hdotsfor}
      \seq_gclear_new:N  \g__nm_empty_cells_seq
      \seq_gclear_new:N \g__nm_multicolumn_cells_seq
      \seq_gclear_new:N \g__nm_multicolumn_sizes_seq
@@ -433,9 +454,8 @@
                        {\int_use:N \g__nm_column_int}}}
 \cs_new_protected:Nn \__nm_after_array:
     {\group_begin:
-     \ifcsname tikz at library@external at loaded\endcsname
-         \tikzset{external/export = false}
-     \fi
+     \cs_if_exist:NT \tikz at library@external at loaded
+         {\tikzset{external/export = false}}
      \int_gset_eq:NN \g__nm_column_int \g__nm_column_total_int
      \bool_if:NT \l__nm_exterior_column_bool {\int_gdecr:N \g__nm_column_int}
      \seq_gclear_new:N \g__nm_yet_drawn_seq



More information about the tex-live-commits mailing list