diff options
Diffstat (limited to 'Master')
-rw-r--r-- | Master/texmf-dist/doc/latex/nicematrix/README.md | 28 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/nicematrix/nicematrix.pdf | bin | 370325 -> 373723 bytes | |||
-rw-r--r-- | Master/texmf-dist/source/latex/nicematrix/nicematrix.dtx | 180 | ||||
-rw-r--r-- | Master/texmf-dist/tex/latex/nicematrix/nicematrix.sty | 66 |
4 files changed, 186 insertions, 88 deletions
diff --git a/Master/texmf-dist/doc/latex/nicematrix/README.md b/Master/texmf-dist/doc/latex/nicematrix/README.md index 3b5de617204..e25ae7d342a 100644 --- a/Master/texmf-dist/doc/latex/nicematrix/README.md +++ b/Master/texmf-dist/doc/latex/nicematrix/README.md @@ -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@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@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`. diff --git a/Master/texmf-dist/doc/latex/nicematrix/nicematrix.pdf b/Master/texmf-dist/doc/latex/nicematrix/nicematrix.pdf Binary files differindex 4a4306c9a63..067d1339fc2 100644 --- a/Master/texmf-dist/doc/latex/nicematrix/nicematrix.pdf +++ b/Master/texmf-dist/doc/latex/nicematrix/nicematrix.pdf diff --git a/Master/texmf-dist/source/latex/nicematrix/nicematrix.dtx b/Master/texmf-dist/source/latex/nicematrix/nicematrix.dtx index 8994c044fc2..5069c020944 100644 --- a/Master/texmf-dist/source/latex/nicematrix/nicematrix.dtx +++ b/Master/texmf-dist/source/latex/nicematrix/nicematrix.dtx @@ -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 @@ version 2005/12/01 or later. \setlength{\columnseprule}{0.4pt} \usepackage{colortbl} \usepackage{arydshln} +\usepackage{footnotehyper} \parindent 0pt \DisableCrossrefs @@ -96,15 +97,18 @@ version 2005/12/01 or later. % % % \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 @@ version 2005/12/01 or later. % % \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 @@ version 2005/12/01 or later. % 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 @@ version 2005/12/01 or later. % % 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 @@ version 2005/12/01 or later. % % % \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 @@ version 2005/12/01 or later. % % \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 @@ version 2005/12/01 or later. % |\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,27 +1318,30 @@ version 2005/12/01 or later. % 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@endcentre| and |\DC@endright| as follow. % % \bigskip -% |\def\DC@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@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| -% -% |\@@_Cell:\box\z@\box\tw@ \@@_end_Cell:}| -% -% \medskip -% |\def\DC@endright{$\hfil\egroup \@@_Cell:\box\z@\box\tw@ \@@_end_Cell:}| -% +% \begin{Verbatim} +% \def\DC@endright{$\hfil\egroup ~emphase#\@@_Cell:+\box\z@\box\tw@ ~emphase#\@@_end_Cell:+} +% \end{Verbatim} +% \end{scope} +% % % % \section{Examples} @@ -1845,7 +1865,8 @@ version 2005/12/01 or later. % % \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 @@ version 2005/12/01 or later. {Several features to improve the typesetting of mathematical matrices with TikZ} % \end{macrocode} % -% The command for the treatment of the options of |\usepackage| is at the end of this package for technical reasons. +% \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 @@ version 2005/12/01 or later. % % 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 @@ version 2005/12/01 or later. % \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 @@ version 2005/12/01 or later. \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 @@ version 2005/12/01 or later. % \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 @@ version 2005/12/01 or later. create-extra-nodes .default:n = true, % \end{macrocode} % +% % \bigskip % \begin{macrocode} left-margin .dim_set:N = \l_@@_left_margin_dim, @@ -2459,6 +2485,49 @@ version 2005/12/01 or later. 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. @@ -2470,9 +2539,8 @@ version 2005/12/01 or later. % We deactivate Tikz externalization (since we use Tikz pictures with the options |overlay| and % |remember picture|, there would be errors). % \begin{macrocode} - \ifcsname tikz@library@external@loaded\endcsname - \tikzset{external/export = false} - \fi + \cs_if_exist:NT \tikz@library@external@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 @@ version 2005/12/01 or later. \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 @@ version 2005/12/01 or later. % \begin{macrocode} \cs_new_protected:Nn \@@_after_array: {\group_begin: - \ifcsname tikz@library@external@loaded\endcsname - \tikzset{external/export = false} - \fi + \cs_if_exist:NT \tikz@library@external@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 @@ version 2005/12/01 or later. % \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 @@ version 2005/12/01 or later. % \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 @@ version 2005/12/01 or later. % 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 diff --git a/Master/texmf-dist/tex/latex/nicematrix/nicematrix.sty b/Master/texmf-dist/tex/latex/nicematrix/nicematrix.sty index 2b86f50602f..f56c1921546 100644 --- a/Master/texmf-dist/tex/latex/nicematrix/nicematrix.sty +++ b/Master/texmf-dist/tex/latex/nicematrix/nicematrix.sty @@ -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@library@external@loaded\endcsname - \tikzset{external/export = false} - \fi + \cs_if_exist:NT \tikz@library@external@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@library@external@loaded\endcsname - \tikzset{external/export = false} - \fi + \cs_if_exist:NT \tikz@library@external@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 |