diff options
Diffstat (limited to 'Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx')
-rw-r--r-- | Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx | 173 |
1 files changed, 86 insertions, 87 deletions
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx index 2a1d9fb0ddf..8b3157fa376 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx @@ -7,7 +7,7 @@ % license or (at your option) any later version. The latest version % of this license is in the file % -% http://www.latex-project.org/lppl.txt +% https://www.latex-project.org/lppl.txt % % This file is part of the "l3kernel bundle" (The Work in LPPL) % and all files in that bundle must be distributed together. @@ -21,7 +21,7 @@ % for those people who are interested. % %<*driver> -\documentclass[full]{l3doc} +\documentclass[full,kernel]{l3doc} \begin{document} \DocInput{\jobname.dtx} \end{document} @@ -38,7 +38,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2017/11/14} +% \date{Released 2017/12/05} % % \maketitle % @@ -65,7 +65,7 @@ % (almost) right the first time. Let us first describe our goal, then % discuss the design precisely before writing any code. % -% \begin{macro}[EXP, int]{\@@_parse:n} +% \begin{macro}[EXP]{\@@_parse:n} % \begin{syntax} % \cs{@@_parse:n} \Arg{fpexpr} % \end{syntax} @@ -563,7 +563,7 @@ % % \subsection{Main auxiliary functions} % -% \begin{macro}[rEXP, aux]{\@@_parse_operand:Nw} +% \begin{macro}[rEXP]{\@@_parse_operand:Nw} % \begin{syntax} % \cs{exp:w} \cs{@@_parse_operand:Nw} \meta{precedence} \cs{@@_parse_expand:w} % \end{syntax} @@ -577,7 +577,7 @@ % \enquote{\ttfamily\ldots{}} start just after the \meta{operation}. % \end{macro} % -% \begin{macro}[EXP, aux]{\@@_parse_infix_+:N} +% \begin{macro}[EXP]{\@@_parse_infix_+:N} % \begin{syntax} % \cs{@@_parse_infix_+:N} \meta{precedence} \ldots{} % \end{syntax} @@ -594,7 +594,7 @@ % A similar function exists for each infix operator. % \end{macro} % -% \begin{macro}[EXP, aux]{\@@_parse_one:Nw} +% \begin{macro}[EXP]{\@@_parse_one:Nw} % \begin{syntax} % \cs{@@_parse_one:Nw} \meta{precedence} \ldots{} % \end{syntax} @@ -615,7 +615,7 @@ % % \subsection{Helpers} % -% \begin{macro}[aux, rEXP]{\@@_parse_expand:w} +% \begin{macro}[rEXP]{\@@_parse_expand:w} % \begin{syntax} % \cs{exp:w} \cs{@@_parse_expand:w} \meta{tokens} % \end{syntax} @@ -628,7 +628,7 @@ % \end{macrocode} % \end{macro} % -% \begin{macro}[aux, EXP]{\@@_parse_return_semicolon:w} +% \begin{macro}[EXP]{\@@_parse_return_semicolon:w} % This very odd function swaps its position with the following % \cs{fi:} and removes \cs{@@_parse_expand:w} normally responsible for % expansion. That turns out to be useful. @@ -638,7 +638,7 @@ % \end{macrocode} % \end{macro} % -% \begin{macro}[aux, EXP]{\@@_type_from_scan:N, \@@_type_from_scan:w} +% \begin{macro}[EXP]{\@@_type_from_scan:N, \@@_type_from_scan:w} % \begin{syntax} % \cs{@@_type_from_scan:N} \meta{token} % \end{syntax} @@ -661,7 +661,7 @@ % \end{macrocode} % \end{macro} % -% \begin{macro}[rEXP, aux] +% \begin{macro}[rEXP] % { % \@@_parse_digits_vii:N , % \@@_parse_digits_vi:N , @@ -714,7 +714,7 @@ % % \subsection{Parsing one number} % -% \begin{macro}[aux, EXP]{\@@_parse_one:Nw} +% \begin{macro}[EXP]{\@@_parse_one:Nw} % This function finds one number, and packs the symbol which follows % in an \cs[no-index]{@@_parse_infix_\ldots{}} csname. % |#1|~is the previous \meta{precedence}, @@ -754,7 +754,7 @@ % \end{macrocode} % \end{macro} % -% \begin{macro}[aux, EXP] +% \begin{macro}[EXP] % { % \@@_parse_one_fp:NN, % \@@_exp_after_mark_f:nw, @@ -826,7 +826,7 @@ % \end{macrocode} % \end{macro} % -% \begin{macro}[aux, EXP] +% \begin{macro}[EXP] % { % \@@_parse_one_register:NN, % \@@_parse_one_register_aux:Nw, @@ -881,15 +881,14 @@ . \tl_to_str:n { pt } ; \exp_not:N \@@_parse_one_register_int:www \exp_not:N \q_stop } -\use:x - { - \cs_new:Npn \exp_not:N \@@_parse_one_register_auxii:wwwNw - ##1 . ##2 \tl_to_str:n { pt } ##3 ; ##4##5 \exp_not:N \q_stop - { ##4 ##1.##2; } - \cs_new:Npn \exp_not:N \@@_parse_one_register_mu:www - ##1 \tl_to_str:n { mu } ; ##2 ; - { \exp_not:N \@@_parse_one_register_dim:ww ##1 ; } - } +\exp_args:Nno \use:nn + { \cs_new:Npn \@@_parse_one_register_auxii:wwwNw #1 . #2 } + { \tl_to_str:n { pt } #3 ; #4#5 \q_stop } + { #4 #1.#2; } +\exp_args:Nno \use:nn + { \cs_new:Npn \@@_parse_one_register_mu:www #1 } + { \tl_to_str:n { mu } ; #2 ; } + { \@@_parse_one_register_dim:ww #1 ; } \cs_new:Npn \@@_parse_one_register_int:www #1; #2.; #3; { \@@_parse:n { #1 e #3 } } \cs_new:Npn \@@_parse_one_register_dim:ww #1; #2; @@ -922,7 +921,7 @@ % \end{macrocode} % \end{macro} % -% \begin{macro}[aux, EXP]{\@@_parse_one_digit:NN} +% \begin{macro}[EXP]{\@@_parse_one_digit:NN} % A digit marks the beginning of an explicit floating point number. % Once the number is found, we catch the case of overflow and % underflow with \cs{@@_sanitize:wN}, then @@ -942,7 +941,7 @@ % \end{macrocode} % \end{macro} % -% \begin{macro}[aux, EXP]{\@@_parse_one_other:NN} +% \begin{macro}[EXP]{\@@_parse_one_other:NN} % For this function, |#2|~is a character token which is not a digit. % If it is an \textsc{ascii} letter, \cs{@@_parse_letters:N} beyond this one and give % the result to \cs{@@_parse_word:Nw}. Otherwise, the character is @@ -975,8 +974,8 @@ % \end{macrocode} % \end{macro} % -% \begin{macro}[aux, EXP]{\@@_parse_word:Nw} -% \begin{macro}[aux, rEXP]{\@@_parse_letters:N} +% \begin{macro}[EXP]{\@@_parse_word:Nw} +% \begin{macro}[rEXP]{\@@_parse_letters:N} % Finding letters is a simple recursion. Once \cs{@@_parse_letters:N} % has done its job, we try to build a control sequence from the % word~|#2|. If it is a known word, then the corresponding action is @@ -1028,7 +1027,7 @@ % \end{macro} % \end{macro} % -% \begin{macro}[aux, EXP] +% \begin{macro}[EXP] % {\@@_parse_prefix:NNN, \@@_parse_prefix_unknown:NNN} % For this function, |#1|~is the previous \meta{precedence}, |#2|~is % the operator just seen, and |#3|~is a control sequence which @@ -1077,7 +1076,7 @@ % set of functions |\__fp_parse_small|\ldots{} Once the significand is % read, read the exponent if |e|~is present. % -% \begin{macro}[aux, rEXP]{\@@_parse_trim_zeros:N, \@@_parse_trim_end:w} +% \begin{macro}[rEXP]{\@@_parse_trim_zeros:N, \@@_parse_trim_end:w} % This function expects an already expanded token. It removes any % leading zero, then distinguishes three cases: if the first non-zero % token is a digit, then call \cs{@@_parse_large:N} (the significand @@ -1114,7 +1113,7 @@ % \end{macrocode} % \end{macro} % -% \begin{macro}[aux, rEXP] +% \begin{macro}[rEXP] % {\@@_parse_strim_zeros:N, \@@_parse_strim_end:w} % If we have removed all digits until a period (or if the body started % with a period), then enter the \enquote{\texttt{small_trim}} loop @@ -1147,7 +1146,7 @@ % \end{macrocode} % \end{macro} % -% \begin{macro}[aux, EXP]{\@@_parse_zero:} +% \begin{macro}[EXP]{\@@_parse_zero:} % After reading a significand of~$0$, find any exponent, then put a % sign of~|1| for \cs{@@_sanitize:wN}, which removes everything % and leaves an exact zero. @@ -1162,7 +1161,7 @@ % % \subsubsection{Number: small significand} % -% \begin{macro}[aux, rEXP]{\@@_parse_small:N} +% \begin{macro}[rEXP]{\@@_parse_small:N} % This function is called after we have passed the decimal separator % and removed all leading zeros from the significand. It is followed % by a non-zero digit (with any catcode). The goal is to read up to @@ -1188,7 +1187,7 @@ % \end{macrocode} % \end{macro} % -% \begin{macro}[aux, rEXP]{\@@_parse_small_leading:wwNN} +% \begin{macro}[rEXP]{\@@_parse_small_leading:wwNN} % \begin{syntax} % \cs{@@_parse_small_leading:wwNN} |1| \meta{digits} |;| \meta{zeros} |;| \meta{number~of~zeros} % \end{syntax} @@ -1222,7 +1221,7 @@ % \end{macrocode} % \end{macro} % -% \begin{macro}[aux, rEXP]{\@@_parse_small_trailing:wwNN} +% \begin{macro}[rEXP]{\@@_parse_small_trailing:wwNN} % \begin{syntax} % \cs{@@_parse_small_trailing:wwNN} |1| \meta{digits} |;| \meta{zeros} |;| \meta{number~of~zeros} \meta{next~token} % \end{syntax} @@ -1250,7 +1249,7 @@ % \end{macrocode} % \end{macro} % -% \begin{macro}[aux, rEXP] +% \begin{macro}[rEXP] % { % \@@_parse_pack_trailing:NNNNNNww , % \@@_parse_pack_leading:NNNNNww , @@ -1296,7 +1295,7 @@ % run out of digits, and branch to the appropriate \texttt{parse_small} % function in those cases. % -% \begin{macro}[aux, EXP]{\@@_parse_large:N} +% \begin{macro}[EXP]{\@@_parse_large:N} % This function is followed by the first non-zero digit of a % \enquote{large} significand ($\geq 1$). It is called within an % integer expression for the exponent. Grab up to $7$~more digits, @@ -1312,7 +1311,7 @@ % \end{macrocode} % \end{macro} % -% \begin{macro}[aux, rEXP]{\@@_parse_large_leading:wwNN} +% \begin{macro}[rEXP]{\@@_parse_large_leading:wwNN} % \begin{syntax} % \cs{@@_parse_large_leading:wwNN} |1| \meta{digits} |;| \meta{zeros} |;| \meta{number~of~zeros} \meta{next~token} % \end{syntax} @@ -1360,7 +1359,7 @@ % \end{macrocode} % \end{macro} % -% \begin{macro}[aux, EXP]{\@@_parse_large_trailing:wwNN} +% \begin{macro}[EXP]{\@@_parse_large_trailing:wwNN} % \begin{syntax} % \cs{@@_parse_large_trailing:wwNN} |1| \meta{digits} |;| \meta{zeros} |;| \meta{number~of~zeros} \meta{next~token} % \end{syntax} @@ -1411,7 +1410,7 @@ % % \subsubsection{Number: beyond 16 digits, rounding} % -% \begin{macro}[aux, rEXP]{\@@_parse_round_loop:N, \@@_parse_round_up:N} +% \begin{macro}[rEXP]{\@@_parse_round_loop:N, \@@_parse_round_up:N} % This loop is called when rounding a number (whether the mantissa is % small or large). It should appear in an integer expression. This % function reads digits one by one, until reaching a non-digit, and @@ -1451,7 +1450,7 @@ % \end{macrocode} % \end{macro} % -% \begin{macro}[aux, rEXP]{\@@_parse_round_after:wN} +% \begin{macro}[rEXP]{\@@_parse_round_after:wN} % After the loop \cs{@@_parse_round_loop:N}, this function fetches an % exponent with \cs{@@_parse_exponent:N}, and combines it with the % number of digits counted by \cs{@@_parse_round_loop:N}. At the same @@ -1466,7 +1465,7 @@ % \end{macrocode} % \end{macro} % -% \begin{macro}[aux, rEXP] +% \begin{macro}[rEXP] % {\@@_parse_small_round:NN, \@@_parse_round_after:wN} % Here, |#1|~is the digit that we are currently rounding (we only care % whether it is even or odd). If |#2|~is not a digit, then fetch an @@ -1503,7 +1502,7 @@ % \end{macro} % % -% \begin{macro}[aux, rEXP] +% \begin{macro}[rEXP] % { % \@@_parse_large_round:NN, % \@@_parse_large_round_test:NN, @@ -1598,7 +1597,7 @@ % token ahead is |e|. Then we expand (and possibly unpack) the second % token. % -% \begin{macro}[aux, rEXP]{\@@_parse_exponent:Nw} +% \begin{macro}[rEXP]{\@@_parse_exponent:Nw} % This auxiliary is convenient to smuggle some material through % \cs{fi:} ending conditional processing. We place those \cs{fi:} % (argument~|#2|) at a very odd place because this allows us to insert @@ -1612,7 +1611,7 @@ % \end{macrocode} % \end{macro} % -% \begin{macro}[aux, rEXP] +% \begin{macro}[rEXP] % {\@@_parse_exponent:N, \@@_parse_exponent_aux:N} % This function should be called within an \cs{__int_value:w} % expansion (or within an integer expression). It leaves digits of the @@ -1647,7 +1646,7 @@ % \end{macrocode} % \end{macro} % -% \begin{macro}[aux, rEXP]{\@@_parse_exponent_sign:N} +% \begin{macro}[rEXP]{\@@_parse_exponent_sign:N} % Read signs one by one (if there is any). % \begin{macrocode} \cs_new:Npn \@@_parse_exponent_sign:N #1 @@ -1663,7 +1662,7 @@ % \end{macrocode} % \end{macro} % -% \begin{macro}[aux, rEXP]{\@@_parse_exponent_body:N} +% \begin{macro}[rEXP]{\@@_parse_exponent_body:N} % An exponent can be an explicit integer (most common case), or % various other things (most of which are invalid). % \begin{macrocode} @@ -1686,7 +1685,7 @@ % \end{macrocode} % \end{macro} % -% \begin{macro}[aux, rEXP]{\@@_parse_exponent_digits:N} +% \begin{macro}[rEXP]{\@@_parse_exponent_digits:N} % Read digits one by one, and leave them behind in the input stream. % When finding a non-digit, stop, and insert a semicolon. Note that % we do not check for overflow of the exponent, hence there can be a @@ -1708,7 +1707,7 @@ % \end{macrocode} % \end{macro} % -% \begin{macro}[aux, rEXP]{\@@_parse_exponent_keep:NTF} +% \begin{macro}[rEXP]{\@@_parse_exponent_keep:NTF} % This is the last building block for parsing exponents. The % argument~|#1| is already fully expanded, and neither |+| nor~|-| nor % a digit. It can be: @@ -1765,14 +1764,14 @@ % % \subsubsection{Prefix operators} % -% \begin{macro}[EXP, aux]{\@@_parse_prefix_+:Nw} +% \begin{macro}[EXP]{\@@_parse_prefix_+:Nw} % A unary~|+| does nothing: we should continue looking for a number. % \begin{macrocode} \cs_new_eq:cN { @@_parse_prefix_+:Nw } \@@_parse_one:Nw % \end{macrocode} % \end{macro} % -% \begin{macro}[aux, EXP]{\@@_parse_apply_unary:NNNwN} +% \begin{macro}[EXP]{\@@_parse_apply_unary:NNNwN} % Here, |#1| is a precedence, |#2| is some extra data used by some % functions, |#3| is \emph{e.g.}, \cs{@@_sin_o:w}, and expands once % after the calculation, |#4| is the operand, and |#5| is a @@ -1790,7 +1789,7 @@ % \end{macrocode} % \end{macro} % -% \begin{macro}[EXP, aux]{\@@_parse_prefix_-:Nw, \@@_parse_prefix_!:Nw} +% \begin{macro}[EXP]{\@@_parse_prefix_-:Nw, \@@_parse_prefix_!:Nw} % The unary~|-| and boolean not are harder: we parse the operand using % a precedence equal to the maximum of the previous precedence~|##1| % and the precedence \cs{c_@@_prec_not_int} of the unary operator, then call @@ -1819,7 +1818,7 @@ % \end{macrocode} % \end{macro} % -% \begin{macro}[EXP, aux]{\@@_parse_prefix_.:Nw} +% \begin{macro}[EXP]{\@@_parse_prefix_.:Nw} % Numbers which start with a decimal separator (a~period) end up here. % Of course, we do not look for an operand, but for the rest of the % number. This function is very similar to \cs{@@_parse_one_digit:NN} @@ -1838,7 +1837,7 @@ % \end{macrocode} % \end{macro} % -% \begin{macro}[aux, EXP] +% \begin{macro}[EXP] % {\@@_parse_prefix_(:Nw, \@@_parse_lparen_after:NwN} % The left parenthesis is treated as a unary prefix operator because % it appears in exactly the same settings. Commas are allowed if @@ -1884,7 +1883,7 @@ % \end{macrocode} % \end{macro} % -% \begin{macro}[aux, EXP]{\@@_parse_prefix_):Nw} +% \begin{macro}[EXP]{\@@_parse_prefix_):Nw} % The right parenthesis can appear as unary prefixes when arguments of % a multi-argument function end with a comma, or when there is no % argument, as in |max(1,2,)| or in |rand()|. In single-argument @@ -1905,7 +1904,7 @@ % % \subsubsection{Constants} % -% \begin{macro}[aux, EXP] +% \begin{macro}[EXP] % { % \@@_parse_word_inf:N , \@@_parse_word_nan:N , % \@@_parse_word_pi:N , \@@_parse_word_deg:N , @@ -1929,7 +1928,7 @@ % \end{macrocode} % \end{macro} % -% \begin{macro}[aux, EXP] +% \begin{macro}[EXP] % { % \@@_parse_caseless_inf:N, % \@@_parse_caseless_infinity:N, @@ -1944,7 +1943,7 @@ % \end{macrocode} % \end{macro} % -% \begin{macro}[aux, EXP] +% \begin{macro}[EXP] % { % \@@_parse_word_pt:N , \@@_parse_word_in:N , % \@@_parse_word_pc:N , \@@_parse_word_cm:N , \@@_parse_word_mm:N , @@ -1977,7 +1976,7 @@ % \end{macrocode} % \end{macro} % -% \begin{macro}[aux, EXP]{\@@_parse_word_em:N, \@@_parse_word_ex:N} +% \begin{macro}[EXP]{\@@_parse_word_em:N, \@@_parse_word_ex:N} % The font-dependent units |em| and |ex| must be evaluated on the fly. % We reuse an auxiliary of \cs{dim_to_fp:n}. % \begin{macrocode} @@ -1998,7 +1997,7 @@ % % ^^A begin[todo] % -% \begin{macro}[aux, EXP] +% \begin{macro}[EXP] % {\@@_parse_unary_function:NNN, \@@_parse_function:NNN} % \begin{macrocode} \cs_new:Npn \@@_parse_unary_function:NNN #1#2#3 @@ -2024,8 +2023,8 @@ % % \subsection{Main functions} % -% \begin{macro}[int, EXP]{\@@_parse:n} -% \begin{macro}[aux, EXP]{\@@_parse_after:ww} +% \begin{macro}[EXP]{\@@_parse:n} +% \begin{macro}[EXP]{\@@_parse_after:ww} % Start an \cs{exp:w} expansion so that \cs{@@_parse:n} expands % in two steps. The \cs{@@_parse_operand:Nw} function performs % computations until reaching an operation with precedence @@ -2053,7 +2052,7 @@ % \end{macro} % \end{macro} % -% \begin{macro}[int, EXP]{\@@_parse_o:n} +% \begin{macro}[EXP]{\@@_parse_o:n} % ^^A todo: optimize, comment, make it work for arrays. % \begin{macrocode} \cs_new:Npn \@@_parse_o:n #1 @@ -2065,8 +2064,8 @@ % \end{macrocode} % \end{macro} % -% \begin{macro}[aux, EXP]{\@@_parse_operand:Nw} -% \begin{macro}[aux, EXP]{\@@_parse_continue:NwN} +% \begin{macro}[EXP]{\@@_parse_operand:Nw} +% \begin{macro}[EXP]{\@@_parse_continue:NwN} % This is just a shorthand which sets up both \cs{@@_parse_continue:NwN} % and \cs{@@_parse_one:Nw} with the same precedence. Note the % trailing \cs{exp:w}. @@ -2086,7 +2085,7 @@ % \end{macro} % \end{macro} % -% \begin{macro}[aux, EXP]{\@@_parse_apply_binary:NwNwN} +% \begin{macro}[EXP]{\@@_parse_apply_binary:NwNwN} % Receives \meta{precedence} \meta{operand_1} |@| \meta{operation} % \meta{operand_2} |@| \meta{infix command}. Builds the appropriate % call to the \meta{operation}~|#3|. @@ -2105,7 +2104,7 @@ % % \subsection{Infix operators} % -% \begin{macro}[aux, EXP]{\@@_parse_infix_after_operand:NwN} +% \begin{macro}[EXP]{\@@_parse_infix_after_operand:NwN} % \begin{macrocode} \cs_new:Npn \@@_parse_infix_after_operand:NwN #1 #2; { @@ -2164,7 +2163,7 @@ % % \subsubsection{Closing parentheses and commas} % -% \begin{macro}[aux, EXP]{\@@_parse_infix_mark:NNN} +% \begin{macro}[EXP]{\@@_parse_infix_mark:NNN} % As an infix operator, \cs{s_@@_mark} means that the next % token~(|#3|) has already gone through \cs{@@_parse_infix:NN} and % should be provided the precedence~|#1|. The scan mark~|#2| is @@ -2174,7 +2173,7 @@ % \end{macrocode} % \end{macro} % -% \begin{macro}[aux, EXP]{\@@_parse_infix_end:N} +% \begin{macro}[EXP]{\@@_parse_infix_end:N} % This one is a little bit odd: force every previous operator to end, % regardless of the precedence. % \begin{macrocode} @@ -2183,7 +2182,7 @@ % \end{macrocode} % \end{macro} % -% \begin{macro}[aux, EXP]+\@@_parse_infix_):N+ +% \begin{macro}[EXP]+\@@_parse_infix_):N+ % This is very similar to \cs{@@_parse_infix_end:N}, complaining about % an extra closing parenthesis if the previous operator was the % beginning of the expression. @@ -2208,9 +2207,9 @@ % \end{macrocode} % \end{macro} % -% \begin{macro}[aux, verb, EXP]{\__fp_parse_infix_,:N} -% \begin{macro}[aux, EXP]{\@@_parse_infix_comma:w, \@@_parse_infix_comma_error:w} -% \begin{macro}[aux, verb, EXP]{\__fp_,_o:ww} +% \begin{macro}[verb, EXP]{\__fp_parse_infix_,:N} +% \begin{macro}[EXP]{\@@_parse_infix_comma:w, \@@_parse_infix_comma_error:w} +% \begin{macro}[verb, EXP]{\__fp_,_o:ww} % \cs{@@_,_o:ww} is a complicated way of replacing any number of % floating point arguments by \texttt{nan}. % \begin{macrocode} @@ -2264,13 +2263,13 @@ % % \subsubsection{Usual infix operators} % -% \begin{macro}[aux, EXP] +% \begin{macro}[EXP] % { % \@@_parse_infix_+:N, \@@_parse_infix_-:N, % \@@_parse_infix_/:N, \@@_parse_infix_mul:N, % \@@_parse_infix_and:N, \@@_parse_infix_or:N, % } -% \begin{macro}[aux, EXP]+\@@_parse_infix_^:N+ +% \begin{macro}[EXP]+\@@_parse_infix_^:N+ % As described in the \enquote{work plan}, each infix operator has an % associated |\..._infix_...| function, a computing function, and % precedence, given as arguments to \cs{@@_tmp:w}. Using the general @@ -2316,7 +2315,7 @@ % % \subsubsection{Juxtaposition} % -% \begin{macro}[aux, EXP]+\@@_parse_infix_(:N+ +% \begin{macro}[EXP]+\@@_parse_infix_(:N+ % When an opening parenthesis appears where we expect an infix % operator, we compute the product of the previous operand and the % contents of the parentheses using \cs{@@_parse_infix_juxtapose:N}. @@ -2327,7 +2326,7 @@ % \end{macro} % % ^^A todo: can |...(1,2,3)pt| really occur? If not, simplify. -% \begin{macro}[aux, EXP] +% \begin{macro}[EXP] % {\@@_parse_infix_juxtapose:N, \@@_parse_apply_juxtapose:NwwN} % Juxtaposition follows the same scheme as other binary operations, % but calls \cs{@@_parse_apply_juxtapose:NwwN} rather than directly @@ -2366,7 +2365,7 @@ % % \subsubsection{Multi-character cases} % -% \begin{macro}[aux, EXP]{\@@_parse_infix_*:N} +% \begin{macro}[EXP]{\@@_parse_infix_*:N} % \begin{macrocode} \cs_set_protected:Npn \@@_tmp:w #1 { @@ -2386,8 +2385,8 @@ % \end{macrocode} % \end{macro} % -% \begin{macro}[aux, EXP]+\@@_parse_infix_|:Nw+ -% \begin{macro}[aux, EXP]+\@@_parse_infix_&:Nw+ +% \begin{macro}[EXP]+\@@_parse_infix_|:Nw+ +% \begin{macro}[EXP]+\@@_parse_infix_&:Nw+ % \begin{macrocode} \cs_set_protected:Npn \@@_tmp:w #1#2#3 { @@ -2412,7 +2411,7 @@ % % \subsubsection{Ternary operator} % -% \begin{macro}[aux, EXP]{\@@_parse_infix_?:N, \@@_parse_infix_::N} +% \begin{macro}[EXP]{\@@_parse_infix_?:N, \@@_parse_infix_::N} % \begin{macrocode} \cs_set_protected:Npn \@@_tmp:w #1#2#3#4 { @@ -2445,12 +2444,12 @@ % % \subsubsection{Comparisons} % -% \begin{macro}[aux, EXP] +% \begin{macro}[EXP] % { % \@@_parse_infix_<:N, \@@_parse_infix_=:N, % \@@_parse_infix_>:N, \@@_parse_infix_!:N % } -% \begin{macro}[aux, EXP] +% \begin{macro}[EXP] % { % \@@_parse_excl_error:, % \@@_parse_compare:NNNNNNN, @@ -2573,7 +2572,7 @@ % % \subsection{Candidate: defining new \pkg{l3fp} functions} % -% \begin{macro}[EXP,int]{\fp_function:Nw} +% \begin{macro}[EXP]{\fp_function:Nw} % Parse the argument of the function~|#1| using % \cs{@@_parse_operand:Nw} with a precedence of~$16$, and pass the % function and argument to \cs{@@_function_apply:nw}. @@ -2588,9 +2587,9 @@ % \end{macrocode} % \end{macro} % -% \begin{macro}[int]{\fp_new_function:Npn} -% \begin{macro}[aux]{\@@_new_function:NNnnn, \@@_new_function:Ncfnn} -% \begin{macro}[aux]{\@@_function_args:Nwn} +% \begin{macro}{\fp_new_function:Npn} +% \begin{macro}{\@@_new_function:NNnnn, \@@_new_function:Ncfnn} +% \begin{macro}{\@@_function_args:Nwn} % Save the code provided by the user in the control sequence % |\__fp_user_#1|. Define |#1| to call \cs{@@_function_apply:nw} % after parsing one operand using \cs{@@_parse_operand:Nw} with @@ -2639,7 +2638,7 @@ % \end{macro} % \end{macro} % -% \begin{macro}[aux, EXP] +% \begin{macro}[EXP] % { % \@@_function_apply:nw, % \@@_function_store:wwNwnn, |