summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-format.dtx
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/source/latex/l3experimental/l3str/l3str-format.dtx')
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3str/l3str-format.dtx431
1 files changed, 217 insertions, 214 deletions
diff --git a/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-format.dtx b/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-format.dtx
index 8075162f725..4118358ac5c 100644
--- a/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-format.dtx
+++ b/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-format.dtx
@@ -27,7 +27,6 @@
\documentclass[full]{l3doc}
\usepackage{amsmath}
\begin{document}
- \tableofcontents
\DocInput{\jobname.dtx}
\end{document}
%</driver>
@@ -47,7 +46,7 @@
% }^^A
% }
%
-% \date{Released 2018/03/05}
+% \date{Released 2018-04-30}
%
% \maketitle
%
@@ -158,12 +157,12 @@
% \end{macrocode}
%
% \begin{macrocode}
-%<@@=str_format>
+%<@@=str>
% \end{macrocode}
%
% \begin{macrocode}
%<*package>
-\ProvidesExplPackage{l3str-format}{2018/03/05}{}
+\ProvidesExplPackage{l3str-format}{2018-04-30}{}
{L3 Experimental string formatting}
%</package>
% \end{macrocode}
@@ -185,11 +184,11 @@
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}[EXP]{\@@_if_digit:NTF}
+% \begin{macro}[EXP]{\@@_format_if_digit:NTF}
% Here we expect |#1| to be a character with category other, or
-% \cs{s__stop}.
+% \cs{s_stop}.
% \begin{macrocode}
-\prg_new_conditional:Npnn \@@_if_digit:N #1 { TF }
+\prg_new_conditional:Npnn \@@_format_if_digit:N #1 { TF }
{
\if_int_compare:w 9 < 1 #1 \exp_stop_f:
\prg_return_true: \else: \prg_return_false: \fi:
@@ -198,32 +197,32 @@
% \end{macro}
%
% \begin{macro}[EXP]
-% {\@@_put:nw, \@@_put:ow, \@@_put:fw}
-% Put |#1| after an \cs{s__stop} delimiter.
+% {\@@_format_put:nw, \@@_format_put:ow, \@@_format_put:fw}
+% Put |#1| after an \cs{s_stop} delimiter.
% \begin{macrocode}
-\cs_new:Npn \@@_put:nw #1 #2 \s__stop { #2 \s__stop #1 }
-\cs_generate_variant:Nn \@@_put:nw { o , f }
+\cs_new:Npn \@@_format_put:nw #1 #2 \s_stop { #2 \s_stop #1 }
+\cs_generate_variant:Nn \@@_format_put:nw { o , f }
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}[EXP, TF]{\@@_if_in:nN}
-% \begin{macro}[EXP]{\@@_if_in_aux:NN}
-% A copy of \cs{__str_if_contains_char:nNTF} to avoid relying on
+% \begin{macro}[EXP, TF]{\@@_format_if_in:nN}
+% \begin{macro}[EXP]{\@@_format_if_in_aux:NN}
+% A copy of \cs{@@_if_contains_char:nNTF} to avoid relying on
% this weird internal string function.
% \begin{macrocode}
-\prg_new_conditional:Npnn \@@_if_in:nN #1#2 { TF }
+\prg_new_conditional:Npnn \@@_format_if_in:nN #1#2 { TF }
{
- \@@_if_in_aux:NN #2 #1
- { #2 \prg_return_false: \exp_after:wN \__prg_break: \else: }
- \__prg_break_point:
+ \@@_format_if_in_aux:NN #2 #1
+ { #2 \prg_return_false: \exp_after:wN \prg_break: \else: }
+ \prg_break_point:
}
-\cs_new:Npn \@@_if_in_aux:NN #1#2
+\cs_new:Npn \@@_format_if_in_aux:NN #1#2
{
\if_charcode:w #1 #2
\prg_return_true:
- \exp_after:wN \__prg_break:
+ \exp_after:wN \prg_break:
\fi:
- \@@_if_in_aux:NN #1
+ \@@_format_if_in_aux:NN #1
}
% \end{macrocode}
% \end{macro}
@@ -231,17 +230,17 @@
%
% \subsection{Parsing a format specification}
%
-% \begin{macro}[EXP]{\@@_parse:n}
+% \begin{macro}[EXP]{\@@_format_parse:n}
% \begin{macro}[EXP]
% {
-% \@@_parse_auxi:NN,
-% \@@_parse_auxii:nN,
-% \@@_parse_auxiii:nN,
-% \@@_parse_auxiv:nwN,
-% \@@_parse_auxv:nN,
-% \@@_parse_auxvi:nwN,
-% \@@_parse_auxvii:nN,
-% \@@_parse_end:nwn,
+% \@@_format_parse_auxi:NN,
+% \@@_format_parse_auxii:nN,
+% \@@_format_parse_auxiii:nN,
+% \@@_format_parse_auxiv:nwN,
+% \@@_format_parse_auxv:nN,
+% \@@_format_parse_auxvi:nwN,
+% \@@_format_parse_auxvii:nN,
+% \@@_format_parse_end:nwn,
% }
% The goal is to parse
% \begin{equation*}
@@ -249,59 +248,59 @@
% [\meta{sign}] [\meta{width}] [.\meta{precision}] [\meta{style}]
% \end{equation*}
% \begin{macrocode}
-\cs_new:Npn \@@_parse:n #1
+\cs_new:Npn \@@_format_parse:n #1
{
- \exp_last_unbraced:Nf \@@_parse_auxi:NN
- \__str_to_other:n {#1} \s__stop \s__stop {#1}
+ \exp_last_unbraced:Nf \@@_format_parse_auxi:NN
+ { \__kernel_str_to_other:n {#1} } \s_stop \s_stop {#1}
}
-\cs_new:Npx \@@_parse_auxi:NN #1#2
+\cs_new:Npx \@@_format_parse_auxi:NN #1#2
{
- \exp_not:N \@@_if_in:nNTF { < > = ^ } #2
- { \exp_not:N \@@_parse_auxiii:nN { #1 #2 } }
+ \exp_not:N \@@_format_if_in:nNTF { < > = ^ } #2
+ { \exp_not:N \@@_format_parse_auxiii:nN { #1 #2 } }
{
- \exp_not:N \@@_parse_auxii:nN
+ \exp_not:N \@@_format_parse_auxii:nN
{ \c_catcode_other_space_tl } #1 #2
}
}
-\cs_new:Npn \@@_parse_auxii:nN #1#2
+\cs_new:Npn \@@_format_parse_auxii:nN #1#2
{
- \@@_if_in:nNTF { < > = ^ } #2
- { \@@_parse_auxiii:nN { #1 #2 } }
- { \@@_parse_auxiii:nN { #1 ? } #2 }
+ \@@_format_if_in:nNTF { < > = ^ } #2
+ { \@@_format_parse_auxiii:nN { #1 #2 } }
+ { \@@_format_parse_auxiii:nN { #1 ? } #2 }
}
-\cs_new:Npx \@@_parse_auxiii:nN #1#2
+\cs_new:Npx \@@_format_parse_auxiii:nN #1#2
{
- \exp_not:N \@@_if_in:nNTF
+ \exp_not:N \@@_format_if_in:nNTF
{ + - \c_catcode_other_space_tl }
#2
- { \exp_not:N \@@_parse_auxiv:nwN { #1 #2 } ; }
- { \exp_not:N \@@_parse_auxiv:nwN { #1 ? } ; #2 }
+ { \exp_not:N \@@_format_parse_auxiv:nwN { #1 #2 } ; }
+ { \exp_not:N \@@_format_parse_auxiv:nwN { #1 ? } ; #2 }
}
-\cs_new:Npn \@@_parse_auxiv:nwN #1#2; #3
+\cs_new:Npn \@@_format_parse_auxiv:nwN #1#2; #3
{
- \@@_if_digit:NTF #3
- { \@@_parse_auxiv:nwN {#1} #2 #3 ; }
- { \@@_parse_auxv:nN { #1 {#2} } #3 }
+ \@@_format_if_digit:NTF #3
+ { \@@_format_parse_auxiv:nwN {#1} #2 #3 ; }
+ { \@@_format_parse_auxv:nN { #1 {#2} } #3 }
}
-\cs_new:Npn \@@_parse_auxv:nN #1#2
+\cs_new:Npn \@@_format_parse_auxv:nN #1#2
{
\token_if_eq_charcode:NNTF . #2
- { \@@_parse_auxvi:nwN {#1} 0 ; }
- { \@@_parse_auxvii:nN { #1 { } } #2 }
+ { \@@_format_parse_auxvi:nwN {#1} 0 ; }
+ { \@@_format_parse_auxvii:nN { #1 { } } #2 }
}
-\cs_new:Npn \@@_parse_auxvi:nwN #1#2; #3
+\cs_new:Npn \@@_format_parse_auxvi:nwN #1#2; #3
{
- \@@_if_digit:NTF #3
- { \@@_parse_auxvi:nwN {#1} #2 #3 ; }
- { \@@_parse_auxvii:nN { #1 {#2} } #3 }
+ \@@_format_if_digit:NTF #3
+ { \@@_format_parse_auxvi:nwN {#1} #2 #3 ; }
+ { \@@_format_parse_auxvii:nN { #1 {#2} } #3 }
}
-\cs_new:Npn \@@_parse_auxvii:nN #1#2
+\cs_new:Npn \@@_format_parse_auxvii:nN #1#2
{
- \token_if_eq_meaning:NNTF \s__stop #2
- { \@@_parse_end:nwn { #1 ? } #2 }
- { \@@_parse_end:nwn { #1 #2 } }
+ \token_if_eq_meaning:NNTF \s_stop #2
+ { \@@_format_parse_end:nwn { #1 ? } #2 }
+ { \@@_format_parse_end:nwn { #1 #2 } }
}
-\cs_new:Npn \@@_parse_end:nwn #1 #2 \s__stop \s__stop #3
+\cs_new:Npn \@@_format_parse_end:nwn #1 #2 \s_stop \s_stop #3
{
\tl_if_empty:nF {#2}
{ \__kernel_msg_expandable_error:nnn { str } { invalid-format } {#3} }
@@ -323,40 +322,40 @@
% padding between the \meta{sign} and the \meta{body}, hence the need to
% keep those separate.
%
-% \begin{macro}[EXP]{\@@_align_<:nnnN}
+% \begin{macro}[EXP]{\@@_format_align_<:nnnN}
% \begin{quote}
-% \cs{@@_align_<:nnnN} \Arg{body} \Arg{sign} \Arg{width}
+% \cs{@@_format_align_<:nnnN} \Arg{body} \Arg{sign} \Arg{width}
% \meta{fill}
% \end{quote}
% Aligning \enquote{\meta{sign} \meta{body}} to the left
% entails appending |#4| the correct number of times. Then convert
% the result to a string.
% \begin{macrocode}
-\cs_new:cpn { @@_align_<:nnnN } #1#2#3#4
+\cs_new:cpn { @@_format_align_<:nnnN } #1#2#3#4
{
\use:nf { #2 #1 }
{
\prg_replicate:nn
- { \int_max:nn { #3 - \__str_count:n { #2 #1 } } { 0 } }
+ { \int_max:nn { #3 - \@@_count:n { #2 #1 } } { 0 } }
{#4}
}
}
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}[EXP]{\@@_align_>:nnnN}
+% \begin{macro}[EXP]{\@@_format_align_>:nnnN}
% \begin{quote}
-% \cs{@@_align_>:nnnN} \Arg{body} \Arg{sign} \Arg{width}
+% \cs{@@_format_align_>:nnnN} \Arg{body} \Arg{sign} \Arg{width}
% \meta{fill}
% \end{quote}
% Aligning an \enquote{\meta{sign} \meta{body}} to the right
% entails prepending |#4| the correct number of times. Then convert
% the result to a string.
% \begin{macrocode}
-\cs_new:cpn { @@_align_>:nnnN } #1#2#3#4
+\cs_new:cpn { @@_format_align_>:nnnN } #1#2#3#4
{
\prg_replicate:nn
- { \int_max:nn { #3 - \__str_count:n { #2 #1 } } { 0 } }
+ { \int_max:nn { #3 - \@@_count:n { #2 #1 } } { 0 } }
{#4}
#2 #1
}
@@ -364,9 +363,9 @@
% \end{macro}
%
% \begingroup\catcode`\^=12
-% \begin{macro}[EXP]{\@@_align_^:nnnN}
+% \begin{macro}[EXP]{\@@_format_align_^:nnnN}
% \begin{quote}
-% \cs{@@_align_^:nnnN} \Arg{body} \Arg{sign} \Arg{width}
+% \cs{@@_format_align_^:nnnN} \Arg{body} \Arg{sign} \Arg{width}
% \meta{fill}
% \end{quote}
% Centering \enquote{\meta{sign} \meta{body}} entails
@@ -374,14 +373,14 @@
% number of |#4| to be added is odd, we add one more after than
% before.
% \begin{macrocode}
-\cs_new:cpn { @@_align_^:nnnN } #1#2#3#4
+\cs_new:cpn { @@_format_align_^:nnnN } #1#2#3#4
{
\use:fnf
{
\prg_replicate:nn
{
\int_max:nn { 0 }
- { #3 - \__str_count:n { #2 #1 } - 1 }
+ { #3 - \@@_count:n { #2 #1 } - 1 }
/ 2
}
{#4}
@@ -391,7 +390,7 @@
\prg_replicate:nn
{
\int_max:nn { 0 }
- { #3 - \__str_count:n { #2 #1 } }
+ { #3 - \@@_count:n { #2 #1 } }
/ 2
}
{#4}
@@ -401,21 +400,21 @@
% \end{macro}
% \endgroup
%
-% \begin{macro}[EXP]{\@@_align_=:nnnN}
+% \begin{macro}[EXP]{\@@_format_align_=:nnnN}
% \begin{quote}
-% \cs{@@_align_=:nnnN} \Arg{body} \Arg{sign} \Arg{width}
+% \cs{@@_format_align_=:nnnN} \Arg{body} \Arg{sign} \Arg{width}
% \meta{fill}
% \end{quote}
% The special numeric alignment |=| means that we insert the
% appropriate number of copies of |#4| between the \meta{sign} and the
% \meta{body}. Then convert the result to a string.
% \begin{macrocode}
-\cs_new:cpn { @@_align_=:nnnN } #1#2#3#4
+\cs_new:cpn { @@_format_align_=:nnnN } #1#2#3#4
{
\use:nf {#2}
{
\prg_replicate:nn
- { \int_max:nn { #3 - \__str_count:n { #2 #1 } } { 0 } }
+ { \int_max:nn { #3 - \@@_count:n { #2 #1 } } { 0 } }
{#4}
}
#1
@@ -427,7 +426,7 @@
% \subsection{Formatting token lists}
%
% \begin{macro}[EXP]{\tl_format:Nn, \tl_format:cn, \tl_format:nn}
-% Call \cs{@@_tl:NNNnnNn} to read the parsed \meta{format
+% Call \cs{@@_format_tl:NNNnnNn} to read the parsed \meta{format
% specification}. Then convert the result to a string.
% \begin{macrocode}
\cs_new:Npn \tl_format:Nn { \exp_args:No \tl_format:nn }
@@ -436,52 +435,52 @@
{
\tl_to_str:f
{
- \exp_last_unbraced:Nf \@@_tl:NNNnnNn
- { \@@_parse:n {#2} }
+ \exp_last_unbraced:Nf \@@_format_tl:NNNnnNn
+ { \@@_format_parse:n {#2} }
{#1}
}
}
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}[EXP]{\@@_tl:NNNnnNn}
+% \begin{macro}[EXP]{\@@_format_tl:NNNnnNn}
% \begin{quote}
-% \cs{@@_tl:NNNnnNn} \meta{fill} \meta{alignment} \meta{sign}
+% \cs{@@_format_tl:NNNnnNn} \meta{fill} \meta{alignment} \meta{sign}
% \Arg{width} \Arg{precision} \meta{style} \Arg{token list}
% \end{quote}
% First check that the \meta{alignment} is not |=|, and set the
% default alignment |?| to |<|. Place the modified information after
-% a trailing \cs{s__stop} for later retrieval. Then check that there
+% a trailing \cs{s_stop} for later retrieval. Then check that there
% was no \meta{sign}. The width will be useful later, store it after
-% \cs{s__stop}. Afterwards, store the precision, and the function
-% \cs{__str_range:nnn} that will be used to extract the first
+% \cs{s_stop}. Afterwards, store the precision, and the function
+% \cs{@@_range:nnn} that will be used to extract the first
% |#5| characters of the string.
% There is a need to use the internal function, as otherwise
% leading spaces would get stripped by |f|-expansion. Finally, check
% that the \meta{style} is |?| or |s|.
% \begin{macrocode}
-\cs_new:Npn \@@_tl:NNNnnNn #1#2#3#4#5#6
+\cs_new:Npn \@@_format_tl:NNNnnNn #1#2#3#4#5#6
{
\token_if_eq_charcode:NNTF #2 =
{
\__kernel_msg_expandable_error:nnnn
{ str } { invalid-align-format } {#2} {tl}
- \@@_put:nw { #1 < }
+ \@@_format_put:nw { #1 < }
}
{
\token_if_eq_charcode:NNTF #2 ?
- { \@@_put:nw { #1 < } }
- { \@@_put:nw { #1 #2 } }
+ { \@@_format_put:nw { #1 < } }
+ { \@@_format_put:nw { #1 #2 } }
}
\token_if_eq_charcode:NNF #3 ?
{
\__kernel_msg_expandable_error:nnnn
{ str } { invalid-sign-format } {#3} {tl}
}
- \@@_put:nw { {#4} }
+ \@@_format_put:nw { {#4} }
\tl_if_empty:nTF {#5}
- { \@@_put:nw { \__str_range:nnn { {1} {-1} } } }
- { \@@_put:nw { \__str_range:nnn { {1} {#5} } } }
+ { \@@_format_put:nw { \@@_range:nnn { {1} {-1} } } }
+ { \@@_format_put:nw { \@@_range:nnn { {1} {#5} } } }
\token_if_eq_charcode:NNF #6 s
{
\token_if_eq_charcode:NNF #6 ?
@@ -490,15 +489,15 @@
{ str } { invalid-style-format } {#6} {tl}
}
}
- \@@_tl_s:NNnnNNn
- \s__stop
+ \@@_format_tl_s:NNnnNNn
+ \s_stop
}
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}[EXP]{\@@_tl_s:NNnnNNn}
+% \begin{macro}[EXP]{\@@_format_tl_s:NNnnNNn}
% \begin{quote}
-% \cs{@@_tl_s:NNnnNNn} \cs{s__stop} \meta{function}
+% \cs{@@_format_tl_s:NNnnNNn} \cs{s_stop} \meta{function}
% \Arg{arguments} \Arg{width} \meta{fill} \meta{alignment}
% \Arg{token list}
% \end{quote}
@@ -506,13 +505,13 @@
% that |f|-expanding \meta{function} \Arg{other string}
% \meta{arguments} yields the piece of the \meta{other string} that we
% want to output. The \meta{other string} is built from the
-% \meta{token list} by |f|-expanding \cs{__str_to_other:n}.
+% \meta{token list} by |f|-expanding \cs{__kernel_str_to_other:n}.
% \begin{macrocode}
-\cs_new:Npn \@@_tl_s:NNnnNNn #1#2#3#4#5#6#7
+\cs_new:Npn \@@_format_tl_s:NNnnNNn #1#2#3#4#5#6#7
{
\exp_args:Nc \exp_args:Nf
- { @@_align_#6:nnnN }
- { \exp_args:Nf #2 { \__str_to_other:n {#7} } #3 }
+ { @@_format_align_#6:nnnN }
+ { \exp_args:Nf #2 { \__kernel_str_to_other:n {#7} } #3 }
{ }
{#4} #5
}
@@ -530,32 +529,32 @@
{
\tl_to_str:f
{
- \@@_seq:ff
+ \@@_format_seq:ff
{ \exp_after:wN \use_i:nn \exp_after:wN \exp_stop_f: #1 }
- { \@@_parse:n {#2} }
+ { \@@_format_parse:n {#2} }
}
}
\cs_generate_variant:Nn \seq_format:Nn { c }
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}[EXP]{\@@_seq:nn, \@@_seq:ff}
+% \begin{macro}[EXP]{\@@_format_seq:nn, \@@_format_seq:ff}
% The first argument is the contents of a \texttt{seq} variable. The
% second is a parsed \meta{format specification}. Set up the loop.
% \begin{macrocode}
-\cs_new:Npn \@@_seq:nn #1#2
+\cs_new:Npn \@@_format_seq:nn #1#2
{
- \@@_seq_loop:nnNn { } {#2}
+ \@@_format_seq_loop:nnNn { } {#2}
#1
- { ? \@@_seq_end:w } { }
+ { ? \@@_format_seq_end:w } { }
}
-\cs_generate_variant:Nn \@@_seq:nn { ff }
+\cs_generate_variant:Nn \@@_format_seq:nn { ff }
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}[EXP]{\@@_seq_loop:nnNn}
+% \begin{macro}[EXP]{\@@_format_seq_loop:nnNn}
% \begin{quote}
-% \cs{@@_seq_loop:nnNn} \Arg{done} \Arg{parsed format}
+% \cs{@@_format_seq_loop:nnNn} \Arg{done} \Arg{parsed format}
% \cs{__seq_item:n} \Arg{item}
% \end{quote}
% The first argument is the result of formatting the items read so
@@ -563,81 +562,81 @@
% until we reach the end of the sequence, where |\use_none:n #3| ends
% the loop.
% \begin{macrocode}
-\cs_new:Npn \@@_seq_loop:nnNn #1#2#3#4
+\cs_new:Npn \@@_format_seq_loop:nnNn #1#2#3#4
{
\use_none:n #3
- \exp_args:Nf \@@_seq_loop:nnNn
- { \use:nf {#1} { \@@_tl:NNNnnNn #2 {#4} } }
+ \exp_args:Nf \@@_format_seq_loop:nnNn
+ { \use:nf {#1} { \@@_format_tl:NNNnnNn #2 {#4} } }
{#2}
}
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}[EXP]{\@@_seq_end:w}
+% \begin{macro}[EXP]{\@@_format_seq_end:w}
% Pick the right piece in the loop above.
% \begin{macrocode}
-\cs_new:Npn \@@_seq_end:w #1#2#3#4 { \use_ii:nnn #3 }
+\cs_new:Npn \@@_format_seq_end:w #1#2#3#4 { \use_ii:nnn #3 }
% \end{macrocode}
% \end{macro}
%
% \subsection{Formatting integers}
%
% \begin{macro}[EXP]{\int_format:nn}
-% Evaluate the first argument and feed it to \cs{@@_int:nn}.
+% Evaluate the first argument and feed it to \cs{@@_format_int:nn}.
% \begin{macrocode}
\cs_new:Npn \int_format:nn #1
- { \exp_args:Nf \@@_int:nn { \int_eval:n {#1} } }
+ { \exp_args:Nf \@@_format_int:nn { \int_eval:n {#1} } }
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}[EXP]{\@@_int:nn}
+% \begin{macro}[EXP]{\@@_format_int:nn}
% Parse the \meta{format specification} and feed it to
-% \cs{@@_int:NNNnnNn}. Then convert the result to a string
+% \cs{@@_format_int:NNNnnNn}. Then convert the result to a string
% \begin{macrocode}
-\cs_new:Npn \@@_int:nn #1#2
+\cs_new:Npn \@@_format_int:nn #1#2
{
\tl_to_str:f
{
- \exp_last_unbraced:Nf \@@_int:NNNnnNn
- { \@@_parse:n {#2} }
+ \exp_last_unbraced:Nf \@@_format_int:NNNnnNn
+ { \@@_format_parse:n {#2} }
{#1}
}
}
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}[EXP]{\@@_int:NNNnnNn}
+% \begin{macro}[EXP]{\@@_format_int:NNNnnNn}
% \begin{quote}
-% \cs{@@_int:NNNnnNn} \meta{fill} \meta{alignment}
+% \cs{@@_format_int:NNNnnNn} \meta{fill} \meta{alignment}
% \meta{sign} \Arg{width} \Arg{precision} \meta{style} \Arg{integer}
% \end{quote}
% First set the
% default alignment |?| to |>|. Place the modified information after
-% a trailing \cs{s__stop} for later retrieval. Then check the
+% a trailing \cs{s_stop} for later retrieval. Then check the
% \meta{sign}: if the integer is negative, always put~|-|. Otherwise,
% if the format's \meta{sign} is |~|, put a space (with category
% \enquote{other}); if it is~|+| put |+|; if it is |-| (default), put
% nothing, represented as a brace group. The width |#4| will be
-% useful later, store it after \cs{s__stop}. Afterwards, check that
+% useful later, store it after \cs{s_stop}. Afterwards, check that
% the \meta{precision} was absent. Finally, dispatch depending on the
% \meta{style}.
% \begin{macrocode}
-\cs_new:Npn \@@_int:NNNnnNn #1#2#3#4#5#6#7
+\cs_new:Npn \@@_format_int:NNNnnNn #1#2#3#4#5#6#7
{
\token_if_eq_charcode:NNTF #2 ?
- { \@@_put:nw { #1 > } }
- { \@@_put:nw { #1 #2 } }
+ { \@@_format_put:nw { #1 > } }
+ { \@@_format_put:nw { #1 #2 } }
\int_compare:nNnTF {#7} < 0
- { \@@_put:nw { - } }
+ { \@@_format_put:nw { - } }
{
\str_case:nnF {#3}
{
- { ~ } { \@@_put:ow { \c_catcode_other_space_tl } }
- { + } { \@@_put:nw { + } }
+ { ~ } { \@@_format_put:ow { \c_catcode_other_space_tl } }
+ { + } { \@@_format_put:nw { + } }
}
- { \@@_put:nw { { } } }
+ { \@@_format_put:nw { { } } }
}
- \@@_put:nw { {#4} }
+ \@@_format_put:nw { {#4} }
\tl_if_empty:nF {#5}
{
\__kernel_msg_expandable_error:nnnn
@@ -645,25 +644,25 @@
}
\str_case:nnF {#6}
{
- { ? } { \@@_int:NwnnNNn \use:n }
- { d } { \@@_int:NwnnNNn \use:n }
- { b } { \@@_int:NwnnNNn \int_to_bin:n }
- { o } { \@@_int:NwnnNNn \int_to_oct:n }
- { X } { \@@_int:NwnnNNn \int_to_Hex:n }
+ { ? } { \@@_format_int:NwnnNNn \use:n }
+ { d } { \@@_format_int:NwnnNNn \use:n }
+ { b } { \@@_format_int:NwnnNNn \int_to_bin:n }
+ { o } { \@@_format_int:NwnnNNn \int_to_oct:n }
+ { X } { \@@_format_int:NwnnNNn \int_to_Hex:n }
}
{
\__kernel_msg_expandable_error:nnnn
{ str } { invalid-style-format } {#6} { int }
- \@@_int:NwnnNNn \use:n
+ \@@_format_int:NwnnNNn \use:n
}
- \s__stop {#7}
+ \s_stop {#7}
}
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}[EXP]{\@@_int:NwnnNNn}
+% \begin{macro}[EXP]{\@@_format_int:NwnnNNn}
% \begin{quote}
-% \cs{@@_int:NwnnNNn} \meta{function} \cs{s__stop}
+% \cs{@@_format_int:NwnnNNn} \meta{function} \cs{s_stop}
% \Arg{width} \Arg{sign} \meta{fill} \meta{alignment} \Arg{integer}
% \end{quote}
% Use the |format_align| function corresponding to the
@@ -676,115 +675,115 @@
% \item the \meta{fill} character.
% \end{itemize}
% \begin{macrocode}
-\cs_new:Npn \@@_int:NwnnNNn #1#2 \s__stop #3#4#5#6#7
+\cs_new:Npn \@@_format_int:NwnnNNn #1#2 \s_stop #3#4#5#6#7
{
\exp_args:Nc \exp_args:Nf
- { @@_align_#6:nnnN }
+ { @@_format_align_#6:nnnN }
{ #1 { \int_abs:n {#7} } }
{#4}
{#3} #5
}
% \end{macrocode}
-% ^^A todo: note similarity with \@@_tl_s:NNnnNNn
+% ^^A todo: note similarity with \@@_format_tl_s:NNnnNNn
% \end{macro}
%
% \subsection{Formatting floating points}
%
% \begin{macro}[EXP]{\fp_format:nn}
% Evaluate the first argument to an internal floating point number, and
-% feed it to \cs{@@_fp:nn}.
+% feed it to \cs{@@_format_fp:nn}.
% \begin{macrocode}
\cs_new:Npn \fp_format:nn #1
- { \exp_args:Nf \@@_fp:nn { \__fp_parse:n {#1} } }
+ { \exp_args:Nf \@@_format_fp:nn { \__fp_parse:n {#1} } }
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}[EXP]{\@@_fp:nn}
+% \begin{macro}[EXP]{\@@_format_fp:nn}
% Parse the \meta{format specification} and feed it to
-% \cs{@@_fp:NNNnnNn}. Then convert the result to a string
+% \cs{@@_format_fp:NNNnnNn}. Then convert the result to a string
% \begin{macrocode}
-\cs_new:Npn \@@_fp:nn #1#2
+\cs_new:Npn \@@_format_fp:nn #1#2
{
\tl_to_str:f
{
- \exp_last_unbraced:Nf \@@_fp:NNNnnNw
- { \@@_parse:n {#2} }
+ \exp_last_unbraced:Nf \@@_format_fp:NNNnnNw
+ { \@@_format_parse:n {#2} }
#1
}
}
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}[EXP]{\@@_fp:NNNnnNw}
+% \begin{macro}[EXP]{\@@_format_fp:NNNnnNw}
% \begin{quote}
-% \cs{@@_fp:NNNnnNw} \meta{fill} \meta{alignment}
+% \cs{@@_format_fp:NNNnnNw} \meta{fill} \meta{alignment}
% \meta{format sign} \Arg{width} \Arg{precision} \meta{style}
% \cs{s__fp} \cs{__fp_chk:w} \meta{fp type} \meta{fp sign} \meta{fp
% body} |;|
% \end{quote}
% First set the default alignment |?| to |>|. Place the modified
-% information after a trailing \cs{s__stop} for later retrieval. Then
+% information after a trailing \cs{s_stop} for later retrieval. Then
% check the \meta{format sign} and the \meta{fp sign}: if the floating
% point is negative, always put~|-|. Otherwise (including
% \texttt{nan}), if the format's \meta{sign} is |~|, put a space (with
% category \enquote{other}); if it is~|+| put |+|; if it is |-|
% (default), put nothing, represented as a brace group. The width
-% |#4| will be useful later, store it after \cs{s__stop}. Afterwards,
+% |#4| will be useful later, store it after \cs{s_stop}. Afterwards,
% check the \meta{precision}: if it was not given, replace it by $6$
% (default precision). Finally, dispatch depending on the
% \meta{style}.
% \begin{macrocode}
-\cs_new:Npn \@@_fp:NNNnnNw
+\cs_new:Npn \@@_format_fp:NNNnnNw
#1#2#3#4#5#6 \s__fp \__fp_chk:w #7 #8
{
\token_if_eq_charcode:NNTF #2 ?
- { \@@_put:nw { #1 > } }
- { \@@_put:nw { #1 #2 } }
+ { \@@_format_put:nw { #1 > } }
+ { \@@_format_put:nw { #1 #2 } }
\token_if_eq_meaning:NNTF 2 #8
- { \@@_put:nw { - } }
+ { \@@_format_put:nw { - } }
{
\str_case:nnF {#3}
{
- { ~ } { \@@_put:ow { \c_catcode_other_space_tl } }
- { + } { \@@_put:nw { + } }
+ { ~ } { \@@_format_put:ow { \c_catcode_other_space_tl } }
+ { + } { \@@_format_put:nw { + } }
}
- { \@@_put:nw { { } } }
+ { \@@_format_put:nw { { } } }
}
- \@@_put:nw { {#4} }
+ \@@_format_put:nw { {#4} }
\tl_if_empty:nTF {#5}
- { \@@_put:nw { { 6} } }
- { \@@_put:nw { {#5} } }
+ { \@@_format_put:nw { { 6} } }
+ { \@@_format_put:nw { {#5} } }
\str_case:nnF {#6}
{
- { e } { \@@_fp:wnnnNNw \@@_fp_e:wn }
- { f } { \@@_fp:wnnnNNw \@@_fp_f:wn }
- { g } { \@@_fp:wnnnNNw \@@_fp_g:wn }
- { ? } { \@@_fp:wnnnNNw \@@_fp_g:wn }
+ { e } { \@@_format_fp:wnnnNNw \@@_format_fp_e:wn }
+ { f } { \@@_format_fp:wnnnNNw \@@_format_fp_f:wn }
+ { g } { \@@_format_fp:wnnnNNw \@@_format_fp_g:wn }
+ { ? } { \@@_format_fp:wnnnNNw \@@_format_fp_g:wn }
}
{
\__kernel_msg_expandable_error:nnnn
{ str } { invalid-style-format } {#6} { fp }
- \@@_fp:wnnnNNw \@@_fp_g:wn
+ \@@_format_fp:wnnnNNw \@@_format_fp_g:wn
}
- \s__stop
+ \s_stop
\s__fp \__fp_chk:w #7 #8
}
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}[EXP]{\@@_fp:wnnnNNw}
+% \begin{macro}[EXP]{\@@_format_fp:wnnnNNw}
% \begin{quote}
-% \cs{@@_fp:wnnnNNw} \meta{formatting function} \cs{s__stop}
+% \cs{@@_format_fp:wnnnNNw} \meta{formatting function} \cs{s_stop}
% \Arg{precision} \Arg{width} \Arg{sign} \meta{fill}
% \meta{alignment} \cs{s__fp} \cs{__fp_chk:w} \meta{fp type}
% \meta{fp sign} \meta{fp body} |;|
% \end{quote}
% \begin{macrocode}
-\cs_new:Npn \@@_fp:wnnnNNw
- #1 \s__stop #2 #3 #4 #5#6 #7 ;
+\cs_new:Npn \@@_format_fp:wnnnNNw
+ #1 \s_stop #2 #3 #4 #5#6 #7 ;
{
\exp_args:Nc \exp_args:Nf
- { @@_align_#6:nnnN }
+ { @@_format_align_#6:nnnN }
{ #1 #7 ; {#2} }
{#4}
{#3} #5
@@ -792,22 +791,22 @@
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}[EXP]{\@@_fp_round:wn}
+% \begin{macro}[EXP]{\@@_format_fp_round:wn}
% Round the given floating point (not its absolute value, to play
% nicely with unusual rounding modes).
% \begin{macrocode}
-\cs_new:Npn \@@_fp_round:wn #1 ; #2
+\cs_new:Npn \@@_format_fp_round:wn #1 ; #2
{ \__fp_parse:n { round ( #1; , #2 - \__fp_exponent:w #1; ) } }
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}[EXP]{\@@_fp_e:wn}
-% \begin{macro}[EXP]{\@@_fp_e_aux:wn}
+% \begin{macro}[EXP]{\@@_format_fp_e:wn}
+% \begin{macro}[EXP]{\@@_format_fp_e_aux:wn}
% With the |e| type, first filter out special cases. In the normal
% case, round to |#4+1| significant figures (one before the decimal
% separator, |#4| after).
% \begin{macrocode}
-\cs_new:Npn \@@_fp_e:wn \s__fp \__fp_chk:w #1#2#3 ; #4
+\cs_new:Npn \@@_format_fp_e:wn \s__fp \__fp_chk:w #1#2#3 ; #4
{
\int_case:nnF {#1}
{
@@ -816,38 +815,38 @@
{ 3 } { nan }
}
{
- \exp_last_unbraced:Nf \@@_fp_e_aux:wn
- \@@_fp_round:wn \s__fp \__fp_chk:w #1#2#3 ; { #4 + 1 }
+ \exp_last_unbraced:Nf \@@_format_fp_e_aux:wn
+ { \@@_format_fp_round:wn \s__fp \__fp_chk:w #1#2#3 ; { #4 + 1 } }
{#4}
}
}
-\cs_new:Npn \@@_fp_e_aux:wn
+\cs_new:Npn \@@_format_fp_e_aux:wn
\s__fp \__fp_chk:w #1#2 #3 #4#5#6#7 ; #8
{
- \@@_put:fw { \int_eval:n { #3 - 1 } }
- \@@_put:nw { e }
+ \@@_format_put:fw { \int_eval:n { #3 - 1 } }
+ \@@_format_put:nw { e }
\int_compare:nNnTF {#8} > \c__fp_prec_int
{
- \@@_put:fw { \prg_replicate:nn { #8 - \c__fp_prec_int + 1 } {0} }
- \@@_put:fw { \use_none:n #4#5#6#7 }
+ \@@_format_put:fw { \prg_replicate:nn { #8 - \c__fp_prec_int + 1 } {0} }
+ \@@_format_put:fw { \use_none:n #4#5#6#7 }
}
{
- \@@_put:fw
+ \@@_format_put:fw
{ \str_range:nnn { #4#5#6#7 0 } { 2 } { #8 + 1 } }
}
- \@@_put:fw { \use_i:nnnn #4 . }
- \use_none:n \s__stop
+ \@@_format_put:fw { \use_i:nnnn #4 . }
+ \use_none:n \s_stop
}
% \end{macrocode}
% \end{macro}
% \end{macro}
%
-% \begin{macro}[EXP]{\@@_fp_f:wn}
-% \begin{macro}[EXP]{\@@_fp_f_aux:wwwn}
+% \begin{macro}[EXP]{\@@_format_fp_f:wn}
+% \begin{macro}[EXP]{\@@_format_fp_f_aux:wwwn}
% With the |f| type, first filter out special cases. In the normal
% case, round to |#4| (absolute) decimal places.
% \begin{macrocode}
-\cs_new:Npn \@@_fp_f:wn \s__fp \__fp_chk:w #1#2#3 ; #4
+\cs_new:Npn \@@_format_fp_f:wn \s__fp \__fp_chk:w #1#2#3 ; #4
{
\int_case:nnF {#1}
{
@@ -856,26 +855,28 @@
{3} { nan }
}
{
- \exp_last_unbraced:Nf \@@_fp_f_aux:wwwn
- \fp_to_decimal:n
- { abs ( round ( \s__fp \__fp_chk:w #1#2#3 ; , #4 ) ) }
+ \exp_last_unbraced:Nf \@@_format_fp_f_aux:wwwn
+ {
+ \fp_to_decimal:n
+ { abs ( round ( \s__fp \__fp_chk:w #1#2#3 ; , #4 ) ) }
+ }
. . ;
{#4}
}
}
-\cs_new:Npn \@@_fp_f_aux:wwwn #1 . #2 . #3 ; #4
+\cs_new:Npn \@@_format_fp_f_aux:wwwn #1 . #2 . #3 ; #4
{
\use:nf
{ #1 . #2 }
- { \prg_replicate:nn { #4 - \__str_count:n {#2} } {0} }
+ { \prg_replicate:nn { #4 - \@@_count:n {#2} } {0} }
}
% \end{macrocode}
% \end{macro}
% \end{macro}
%
-% \begin{macro}[EXP]{\@@_fp_g:wn}
-% \begin{macro}[EXP]{\@@_fp_g_aux:wn}
-% \begin{macro}[EXP]{\@@_fp_to_scientific:n, \@@_fp_trim:w}
+% \begin{macro}[EXP]{\@@_format_fp_g:wn}
+% \begin{macro}[EXP]{\@@_format_fp_g_aux:wn}
+% \begin{macro}[EXP]{\@@_format_fp_to_scientific:n, \@@_format_fp_trim:w}
% With the |g| type, first filter out special cases. In the normal
% case, round to |#4| significant figures, then test the exponent: if
% $-4\leq \meta{exponent} < \meta{precision}$, use the presentation
@@ -886,7 +887,7 @@
% \cs{fp_to_decimal:n} and \cs{fp_to_scientific:n}, acting on the
% (absolute value of the) rounded value.
% \begin{macrocode}
-\cs_new:Npn \@@_fp_g:wn \s__fp \__fp_chk:w #1#2 ; #3
+\cs_new:Npn \@@_format_fp_g:wn \s__fp \__fp_chk:w #1#2 ; #3
{
\int_case:nnF {#1}
{
@@ -895,29 +896,31 @@
{3} { nan }
}
{
- \exp_last_unbraced:Nf \@@_fp_g_aux:wn
- \@@_fp_round:wn \s__fp \__fp_chk:w #1#2 ;
- { \int_max:nn {1} {#3} }
+ \exp_last_unbraced:Nf \@@_format_fp_g_aux:wn
+ {
+ \@@_format_fp_round:wn \s__fp \__fp_chk:w #1#2 ;
+ { \int_max:nn {1} {#3} }
+ }
{ \int_max:nn {1} {#3} }
}
}
-\cs_new:Npn \@@_fp_g_aux:wn #1; #2
+\cs_new:Npn \@@_format_fp_g_aux:wn #1; #2
{
\int_compare:nNnTF { \__fp_exponent:w #1; } < { -3 }
- { \@@_to_scientific:n }
+ { \@@_format_to_scientific:n }
{
\int_compare:nNnTF { \__fp_exponent:w #1; } > {#2}
- { \@@_to_scientific:n }
+ { \@@_format_to_scientific:n }
{ \fp_to_decimal:n }
}
{ \__fp_set_sign_o:w 0 #1; @ \prg_do_nothing: }
}
-\cs_new:Npn \@@_to_scientific:n
+\cs_new:Npn \@@_format_to_scientific:n
{
- \exp_after:wN \@@_fp_trim:w
+ \exp_after:wN \@@_format_fp_trim:w
\exp:w \exp_end_continue_f:w \fp_to_scientific:n
}
-\cs_new:Npn \@@_fp_trim:w #1 e { \__fp_trim_zeros:w #1 ; e }
+\cs_new:Npn \@@_format_fp_trim:w #1 e { \__fp_trim_zeros:w #1 ; e }
% \end{macrocode}
% \end{macro}
% \end{macro}