diff options
author | Karl Berry <karl@freefriends.org> | 2017-12-07 23:16:26 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2017-12-07 23:16:26 +0000 |
commit | 1fed4553e07e0372e12d6a1ac32f29b3c7a2a538 (patch) | |
tree | 1cbfce535eaa4ad401f88e70d29998b9ffe4d2ec /Master/texmf-dist/source/latex/l3experimental | |
parent | a1e3748b2a855f1a0c875df7f9585e1a01c44d9a (diff) |
l3experimental+l3build (7dec17)
git-svn-id: svn://tug.org/texlive/trunk@46013 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source/latex/l3experimental')
8 files changed, 227 insertions, 225 deletions
diff --git a/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-convert.dtx b/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-convert.dtx index b5ed855d6e8..ddc962cb6fc 100644 --- a/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-convert.dtx +++ b/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-convert.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 "l3experimental bundle" (The Work in LPPL) % and all files in that bundle must be distributed together. @@ -47,7 +47,7 @@ % }^^A % } % -% \date{Released 2017/11/14} +% \date{Released 2017/12/05} % % \maketitle % @@ -252,7 +252,7 @@ % \end{macrocode} % % \begin{macrocode} -\ProvidesExplPackage{l3str-convert}{2017/11/14}{} +\ProvidesExplPackage{l3str-convert}{2017/12/05}{} {L3 Experimental string encoding conversions} % \end{macrocode} % @@ -260,7 +260,7 @@ % % \subsubsection{A function unrelated to strings} % -% \begin{macro}[EXP,aux]{\use_ii_i:nn} +% \begin{macro}[EXP]{\use_ii_i:nn} % A function used to swap its arguments. % \begin{macrocode} \cs_if_exist:NF \use_ii_i:nn @@ -356,8 +356,8 @@ % % \begin{macro}[EXP]{\@@_if_contains_char:NNT, \@@_if_contains_char:NNTF} % \begin{macro}[EXP]{\@@_if_contains_char:nNTF} -% \begin{macro}[EXP,aux]{\@@_if_contains_char_aux:NN} -% \begin{macro}[EXP,aux]{\@@_if_contains_char_true:} +% \begin{macro}[EXP]{\@@_if_contains_char_aux:NN} +% \begin{macro}[EXP]{\@@_if_contains_char_true:} % \begin{syntax} % \cs{@@_if_contains_char:nNTF} \Arg{token list} \meta{char} % \end{syntax} @@ -396,7 +396,7 @@ % \end{macro} % \end{macro} % -% \begin{macro}[aux, rEXP]{\@@_octal_use:NTF} +% \begin{macro}[rEXP]{\@@_octal_use:NTF} % \begin{syntax} % \cs{@@_octal_use:NTF} \meta{token} \Arg{true code} \Arg{false code} % \end{syntax} @@ -424,7 +424,7 @@ % \end{macrocode} % \end{macro} % -% \begin{macro}[aux, rEXP]{\@@_hexadecimal_use:NTF} +% \begin{macro}[rEXP]{\@@_hexadecimal_use:NTF} % \TeX{} detects uppercase hexadecimal digits for us (see % \cs{@@_octal_use:NTF}), but not the lowercase letters, which we % need to detect and replace by their uppercase counterpart. @@ -482,11 +482,11 @@ % \end{variable} % \end{variable} % -% \begin{macro}[int, EXP]{\@@_output_byte:n} -% \begin{macro}[int, EXP]{\@@_output_byte:w} -% \begin{macro}[int, EXP]{\@@_output_hexadecimal:n} -% \begin{macro}[int, EXP]{\@@_output_hexadecimal:w} -% \begin{macro}[int, EXP]{\@@_output_end:} +% \begin{macro}[EXP]{\@@_output_byte:n} +% \begin{macro}[EXP]{\@@_output_byte:w} +% \begin{macro}[EXP]{\@@_output_hexadecimal:n} +% \begin{macro}[EXP]{\@@_output_hexadecimal:w} +% \begin{macro}[EXP]{\@@_output_end:} % Those functions must be used carefully: feeding them a value outside % the range $[-1,255]$ will attempt to use the undefined token list % variable \cs{c_@@_byte_\meta{number}_tl}. Assuming that the @@ -520,9 +520,9 @@ % \end{macro} % \end{macro} % -% \begin{macro}[int, rEXP]{\@@_output_byte_pair_be:n} -% \begin{macro}[int, rEXP]{\@@_output_byte_pair_le:n} -% \begin{macro}[aux, rEXP]{\@@_output_byte_pair:nnN} +% \begin{macro}[rEXP]{\@@_output_byte_pair_be:n} +% \begin{macro}[rEXP]{\@@_output_byte_pair_le:n} +% \begin{macro}[rEXP]{\@@_output_byte_pair:nnN} % Convert a number in the range $[0,65535]$ to a pair of bytes, either % big-endian or little-endian. % \begin{macrocode} @@ -550,7 +550,7 @@ % \subsubsection{Mapping functions for conversions} % % \begin{macro}{\@@_convert_gmap:N} -% \begin{macro}[aux, rEXP]{\@@_convert_gmap_loop:NN} +% \begin{macro}[rEXP]{\@@_convert_gmap_loop:NN} % This maps the function |#1| over all characters in % \cs{g_@@_result_tl}, which should be a byte string in most cases, % sometimes a native string. @@ -576,7 +576,7 @@ % \end{macro} % % \begin{macro}{\@@_convert_gmap_internal:N} -% \begin{macro}[aux, rEXP]{\@@_convert_gmap_internal_loop:Nw} +% \begin{macro}[rEXP]{\@@_convert_gmap_internal_loop:Nw} % This maps the function |#1| over all character codes in % \cs{g_@@_result_tl}, which must be in the internal representation. % \begin{macrocode} @@ -602,8 +602,8 @@ % % \subsubsection{Error-reporting during conversion} % -% \begin{macro}[int]{\@@_if_flag_error:nnx} -% \begin{macro}[aux]{\@@_if_flag_no_error:nnx} +% \begin{macro}{\@@_if_flag_error:nnx} +% \begin{macro}{\@@_if_flag_no_error:nnx} % When converting using the function \cs{str_set_convert:Nnnn}, errors % should be reported to the user after each step in the % conversion. Errors are signalled by raising some flag (typically @@ -626,7 +626,7 @@ % \end{macro} % \end{macro} % -% \begin{macro}[int, rEXP]{\@@_if_flag_times:nT} +% \begin{macro}[rEXP]{\@@_if_flag_times:nT} % At the end of each conversion step, we raise all relevant errors as % one error message, built on the fly. The height of each flag % indicates how many times a given error was encountered. This @@ -673,7 +673,7 @@ % % \begin{macro}{\str_set_convert:Nnnn, \str_gset_convert:Nnnn} % \begin{macro}[TF]{\str_set_convert:Nnnn, \str_gset_convert:Nnnn} -% \begin{macro}[aux]{\@@_convert:nNNnnn} +% \begin{macro}{\@@_convert:nNNnnn} % The input string is stored in \cs{g_@@_result_tl}, then we: % unescape and decode; encode and escape; exit the group and store the % result in the user's variable. The various conversion functions all @@ -725,8 +725,8 @@ % \end{macro} % \end{macro} % -% \begin{macro}[aux]{\@@_convert:wwwnn} -% \begin{macro}[aux]{\@@_convert:NNnNN} +% \begin{macro}{\@@_convert:wwwnn} +% \begin{macro}{\@@_convert:NNnNN} % The task of \cs{@@_convert:wwwnn} is to split % \meta{encoding}/\meta{escaping} pairs into their components, |#1| % and |#2|. Calls to \cs{@@_convert:nnn} ensure that the @@ -771,8 +771,8 @@ % \end{macro} % \end{macro} % -% \begin{macro}[aux]{\@@_convert:nnn} -% \begin{macro}[aux]{\@@_convert:nnnn} +% \begin{macro}{\@@_convert:nnn} +% \begin{macro}{\@@_convert:nnnn} % The arguments of \cs{@@_convert:nnn} are: \texttt{enc} or % \texttt{esc}, used to build filenames, the type of the conversion % (unescape, decode, encode, escape), and the encoding or escaping @@ -848,8 +848,8 @@ % \end{macro} % \end{macro} % -% \begin{macro}[int, rEXP]{\@@_convert_lowercase_alphanum:n} -% \begin{macro}[aux, rEXP]{\@@_convert_lowercase_alphanum_loop:N} +% \begin{macro}[rEXP]{\@@_convert_lowercase_alphanum:n} +% \begin{macro}[rEXP]{\@@_convert_lowercase_alphanum_loop:N} % This function keeps only letters and digits, with upper case letters % converted to lower case. % \begin{macrocode} @@ -883,7 +883,7 @@ % \end{macro} % \end{macro} % -% \begin{macro}[int]{\@@_load_catcodes:} +% \begin{macro}{\@@_load_catcodes:} % Since encoding files may be loaded at arbitrary places in a \TeX{} % document, including within verbatim mode, we set the catcodes of all % characters appearing in any encoding definition file. @@ -916,8 +916,8 @@ % needed. By default, on input any non-byte is filtered out, while the % output simply consists in letting bytes through. % -% \begin{macro}[int, rEXP]{\@@_filter_bytes:n} -% \begin{macro}[aux, rEXP]{\@@_filter_bytes_aux:N} +% \begin{macro}[rEXP]{\@@_filter_bytes:n} +% \begin{macro}[rEXP]{\@@_filter_bytes_aux:N} % In the case of 8-bit engines, every character is a byte. For % Unicode-aware engines, test the character code; non-bytes cause us % to raise the flag \texttt{str_byte}. Spaces have already been given @@ -951,8 +951,8 @@ % \end{macro} % \end{macro} % -% \begin{macro}[int]{\@@_convert_unescape_:} -% \begin{macro}[int]{\@@_convert_unescape_bytes:} +% \begin{macro}{\@@_convert_unescape_:} +% \begin{macro}{\@@_convert_unescape_bytes:} % The simplest unescaping method removes non-bytes from % \cs{g_@@_result_tl}. % \begin{macrocode} @@ -976,8 +976,8 @@ % \end{macro} % \end{macro} % -% \begin{macro}[int]{\@@_convert_escape_:} -% \begin{macro}[int]{\@@_convert_escape_bytes:} +% \begin{macro}{\@@_convert_escape_:} +% \begin{macro}{\@@_convert_escape_bytes:} % The simplest form of escape leaves the bytes from the previous step % of the conversion unchanged. % \begin{macrocode} @@ -989,8 +989,8 @@ % % \subsubsection{Native strings} % -% \begin{macro}[int]{\@@_convert_decode_:} -% \begin{macro}[aux, rEXP]{\@@_decode_native_char:N} +% \begin{macro}{\@@_convert_decode_:} +% \begin{macro}[rEXP]{\@@_decode_native_char:N} % Convert each character to its character code, one at a time. % \begin{macrocode} \cs_new_protected:Npn \@@_convert_decode_: @@ -1001,7 +1001,7 @@ % \end{macro} % \end{macro} % -% \begin{macro}[int]{\@@_convert_encode_:} +% \begin{macro}{\@@_convert_encode_:} % The conversion from an internal string to native character tokens is % very different in pdf\TeX{} and in other engines. For Unicode-aware % engines, we need the definitions to be read when the null byte has @@ -1015,9 +1015,9 @@ \sys_if_engine_xetex_p: } % \end{macrocode} -% \begin{macro}[aux]{\@@_encode_native_loop:w} -% \begin{macro}[aux]{\@@_encode_native_flush:} -% \begin{macro}[aux, rEXP]{\@@_encode_native_filter:N} +% \begin{macro}{\@@_encode_native_loop:w} +% \begin{macro}{\@@_encode_native_flush:} +% \begin{macro}[rEXP]{\@@_encode_native_filter:N} % In Unicode-aware engines, since building particular characters % cannot be done expandably in \TeX{}, we cannot hope to get a % linear-time function. However, we get quite close using the @@ -1049,7 +1049,7 @@ } } % \end{macrocode} -% \begin{macro}[aux, EXP]{\@@_encode_native_char:n} +% \begin{macro}[EXP]{\@@_encode_native_char:n} % Since pdf\TeX{} only supports 8-bit characters, and we have a table % of all bytes, the conversion can be done in linear time within an % \texttt{x}-expanding assignment. Look out for character codes larger @@ -1094,15 +1094,15 @@ % % \subsubsection{\texttt{clist}} % -% \begin{macro}[int]{\@@_convert_decode_clist:} -% \begin{macro}[aux, rEXP]{\@@_decode_clist_char:n} +% \begin{macro}{\@@_convert_decode_clist:} +% \begin{macro}[rEXP]{\@@_decode_clist_char:n} % Convert each integer to the internal form. We first turn % \cs{g_@@_result_tl} into a clist variable, as this avoids problems % with leading or trailing commas. % \begin{macrocode} \cs_new_protected:Npn \@@_convert_decode_clist: { - \clist_set:No \g_@@_result_tl \g_@@_result_tl + \clist_gset:No \g_@@_result_tl \g_@@_result_tl \tl_gset:Nx \g_@@_result_tl { \exp_args:No \clist_map_function:nN @@ -1115,8 +1115,8 @@ % \end{macro} % \end{macro} % -% \begin{macro}[int]{\@@_convert_encode_clist:} -% \begin{macro}[aux, rEXP]{\@@_encode_clist_char:n} +% \begin{macro}{\@@_convert_encode_clist:} +% \begin{macro}[rEXP]{\@@_encode_clist_char:n} % Convert the internal list of character codes to a comma-list of % character codes. The first line produces a comma-list with a % leading comma, removed in the next step (this also works in the @@ -1151,7 +1151,7 @@ % All the 8-bit encodings which \pkg{l3str} supports rely on the same % internal functions. % -% \begin{macro}[int]{\@@_declare_eight_bit_encoding:nnn} +% \begin{macro}{\@@_declare_eight_bit_encoding:nnn} % \begin{syntax} % \cs{@@_declare_eight_bit_encoding:nnn} \Arg{name} \Arg{mapping} \Arg{missing} % \end{syntax} @@ -1183,10 +1183,10 @@ % \end{macrocode} % \end{macro} % -% \begin{macro}[int]{\@@_convert_decode_eight_bit:n} -% \begin{macro}[aux]{\@@_decode_eight_bit_load:nn} -% \begin{macro}[aux]{\@@_decode_eight_bit_load_missing:n} -% \begin{macro}[aux, EXP]{\@@_decode_eight_bit_char:N} +% \begin{macro}{\@@_convert_decode_eight_bit:n} +% \begin{macro}{\@@_decode_eight_bit_load:nn} +% \begin{macro}{\@@_decode_eight_bit_load_missing:n} +% \begin{macro}[EXP]{\@@_decode_eight_bit_char:N} %^^A todo: document % \begin{macrocode} \cs_new_protected:Npn \@@_convert_decode_eight_bit:n #1 @@ -1241,10 +1241,10 @@ % \end{macro} % \end{macro} % -% \begin{macro}[int]{\@@_convert_encode_eight_bit:n} -% \begin{macro}[aux]{\@@_encode_eight_bit_load:nn} -% \begin{macro}[aux, rEXP]{\@@_encode_eight_bit_char:n} -% \begin{macro}[aux, rEXP]{\@@_encode_eight_bit_char_aux:n} +% \begin{macro}{\@@_convert_encode_eight_bit:n} +% \begin{macro}{\@@_encode_eight_bit_load:nn} +% \begin{macro}[rEXP]{\@@_encode_eight_bit_char:n} +% \begin{macro}[rEXP]{\@@_encode_eight_bit_char_aux:n} %^^A todo: document % \begin{macrocode} \cs_new_protected:Npn \@@_convert_encode_eight_bit:n #1 @@ -1385,9 +1385,9 @@ % % \subsubsection{Unescape methods} % -% \begin{macro}[int]{\@@_convert_unescape_hex:} -% \begin{macro}[aux, rEXP]{\@@_unescape_hex_auxi:N} -% \begin{macro}[aux, rEXP]{\@@_unescape_hex_auxii:N} +% \begin{macro}{\@@_convert_unescape_hex:} +% \begin{macro}[rEXP]{\@@_unescape_hex_auxi:N} +% \begin{macro}[rEXP]{\@@_unescape_hex_auxii:N} % Take chars two by two, and interpret each pair as the hexadecimal % code for a byte. Anything else than hexadecimal digits is ignored, % raising the flag. A string which contains an odd number of @@ -1447,10 +1447,10 @@ % \end{macro} % \end{macro} % -% \begin{macro}[int]{\@@_convert_unescape_name:} -% \begin{macro}[aux, rEXP]{\@@_unescape_name_loop:wNN} -% \begin{macro}[int]{\@@_convert_unescape_url:} -% \begin{macro}[aux, rEXP]{\@@_unescape_url_loop:wNN} +% \begin{macro}{\@@_convert_unescape_name:} +% \begin{macro}[rEXP]{\@@_unescape_name_loop:wNN} +% \begin{macro}{\@@_convert_unescape_url:} +% \begin{macro}[rEXP]{\@@_unescape_url_loop:wNN} % The \cs{@@_convert_unescape_name:} function replaces each % occurrence of |#| followed by two hexadecimal digits in % \cs{g_@@_result_tl} by the corresponding byte. The \texttt{url} @@ -1534,10 +1534,10 @@ % \end{macro} % \end{macro} % -% \begin{macro}[int]{\@@_convert_unescape_string:} -% \begin{macro}[aux, rEXP]{\@@_unescape_string_newlines:wN} -% \begin{macro}[aux, rEXP]{\@@_unescape_string_loop:wNNN} -% \begin{macro}[aux, rEXP]{\@@_unescape_string_repeat:NNNNNN} +% \begin{macro}{\@@_convert_unescape_string:} +% \begin{macro}[rEXP]{\@@_unescape_string_newlines:wN} +% \begin{macro}[rEXP]{\@@_unescape_string_loop:wNNN} +% \begin{macro}[rEXP]{\@@_unescape_string_repeat:NNNNNN} % The \texttt{string} escaping is somewhat similar to the % \texttt{name} and \texttt{url} escapings, with escape character |\|. % The first step is to convert all three line endings, |^^J|, |^^M|, @@ -1560,14 +1560,12 @@ % If followed by an end-of-line character, the backslash and the % end-of-line are ignored. If followed by anything else, the backslash % is ignored, raising the error flag. -%^^A Be paranoid: \tex_lowercase:D is unsafe. % \begin{macrocode} %<*string> \group_begin: - \char_set_lccode:nn {`\*} {`\\} \char_set_catcode_other:N \^^J \char_set_catcode_other:N \^^M - \tex_lowercase:D + \cs_set_protected:Npn \@@_tmp:w #1 { \cs_new_protected:Npn \@@_convert_unescape_string: { @@ -1584,15 +1582,17 @@ \tl_gset:Nx \g_@@_result_tl { \exp_after:wN \@@_unescape_string_loop:wNNN - \g_@@_result_tl * ?? { ? \__prg_break: } + \g_@@_result_tl #1 ?? { ? \__prg_break: } \__prg_break_point: } \@@_if_flag_error:nnx { str_byte } { non-byte } { string } \@@_if_flag_error:nnx { str_error } { unescape-string } { } \group_end: } - \cs_new:Npn \@@_unescape_string_loop:wNNN #1 *#2#3#4 } + \exp_args:No \@@_tmp:w { \c_backslash_str } + \exp_last_unbraced:NNNNo + \cs_new:Npn \@@_unescape_string_loop:wNNN #1 \c_backslash_str #2#3#4 { \@@_filter_bytes:n {#1} \use_none:n #4 @@ -1662,8 +1662,8 @@ % Currently, none of the escape methods can lead to errors, assuming % that their input is made out of bytes. % -% \begin{macro}[int]{\@@_convert_escape_hex:} -% \begin{macro}[aux, rEXP]{\@@_escape_hex_char:N} +% \begin{macro}{\@@_convert_escape_hex:} +% \begin{macro}[rEXP]{\@@_escape_hex_char:N} % Loop and convert each byte to hexadecimal. % \begin{macrocode} %<*hex> @@ -1676,9 +1676,9 @@ % \end{macro} % \end{macro} % -% \begin{macro}[int]{\@@_convert_escape_name:} -% \begin{macro}[aux, rEXP]{\@@_escape_name_char:N} -% \begin{macro}[aux, rEXP]{\@@_if_escape_name:NTF} +% \begin{macro}{\@@_convert_escape_name:} +% \begin{macro}[rEXP]{\@@_escape_name_char:N} +% \begin{macro}[rEXP]{\@@_if_escape_name:NTF} % \begin{variable}{\c_@@_escape_name_str} % \begin{variable}{\c_@@_escape_name_not_str} % For each byte, test whether it should be output as is, or be @@ -1720,9 +1720,9 @@ % \end{macro} % \end{macro} % -% \begin{macro}[int]{\@@_convert_escape_string:} -% \begin{macro}[aux, rEXP]{\@@_escape_string_char:N} -% \begin{macro}[aux, rEXP]{\@@_if_escape_string:NTF} +% \begin{macro}{\@@_convert_escape_string:} +% \begin{macro}[rEXP]{\@@_escape_string_char:N} +% \begin{macro}[rEXP]{\@@_if_escape_string:NTF} % \begin{variable}{\c_@@_escape_string_str} % Any character below (and including) space, and any character above % (and including) \texttt{del}, are converted to octal. One backslash @@ -1768,9 +1768,9 @@ % \end{macro} % \end{macro} % -% \begin{macro}[int]{\@@_convert_escape_url:} -% \begin{macro}[aux, rEXP]{\@@_escape_url_char:N} -% \begin{macro}[aux, rEXP]{\@@_if_escape_url:NTF} +% \begin{macro}{\@@_convert_escape_url:} +% \begin{macro}[rEXP]{\@@_escape_url_char:N} +% \begin{macro}[rEXP]{\@@_if_escape_url:NTF} % This function is similar to \cs{@@_convert_escape_name:}, escaping % different characters. % \begin{macrocode} @@ -1820,9 +1820,9 @@ %<*utf8> % \end{macrocode} % -% \begin{macro}[int]{\@@_convert_encode_utf8:} -% \begin{macro}[aux, rEXP]{\@@_encode_utf_viii_char:n} -% \begin{macro}[aux, rEXP]{\@@_encode_utf_viii_loop:wwnnw} +% \begin{macro}{\@@_convert_encode_utf8:} +% \begin{macro}[rEXP]{\@@_encode_utf_viii_char:n} +% \begin{macro}[rEXP]{\@@_encode_utf_viii_loop:wwnnw} % Loop through the internal string, and convert each character to its % \textsc{utf-8} representation. The representation is built from the % right-most (least significant) byte to the left-most (most @@ -1967,14 +1967,14 @@ % \end{macrocode} % \end{variable} % -% \begin{macro}[int]{\@@_convert_decode_utf8:} -% \begin{macro}[aux, rEXP] +% \begin{macro}{\@@_convert_decode_utf8:} +% \begin{macro}[rEXP] % { % \@@_decode_utf_viii_start:N, % \@@_decode_utf_viii_continuation:wwN, % \@@_decode_utf_viii_aux:wNnnwN % } -% \begin{macro}[aux, rEXP] +% \begin{macro}[rEXP] % {\@@_decode_utf_viii_overflow:w, \@@_decode_utf_viii_end:} % Decoding is significantly harder than encoding. As before, lower % some flags, which are tested at the end (in bulk, to trigger at most @@ -2148,13 +2148,13 @@ \char_set_catcode_other:N \^^ff % \end{macrocode} % -% \begin{macro}[int] +% \begin{macro} % { % \@@_convert_encode_utf16: , % \@@_convert_encode_utf16be: , % \@@_convert_encode_utf16le: , % } -% \begin{macro}[aux, rEXP] +% \begin{macro}[rEXP] % { % \@@_encode_utf_xvi_aux:N , % \@@_encode_utf_xvi_char:n , @@ -2285,13 +2285,13 @@ % \end{macrocode} % \end{variable} % -% \begin{macro}[int] +% \begin{macro} % { % \@@_convert_decode_utf16: , % \@@_convert_decode_utf16be: , % \@@_convert_decode_utf16le: , % } -% \begin{macro}[aux]{\@@_decode_utf_xvi_bom:NN, \@@_decode_utf_xvi:Nw} +% \begin{macro}{\@@_decode_utf_xvi_bom:NN, \@@_decode_utf_xvi:Nw} % As for \textsc{utf-8}, decoding \textsc{utf-16} is harder than % encoding it. If the endianness is unknown, check the first two % bytes: if those are \hexnum{FE} and \hexnum{FF} in either order, @@ -2346,13 +2346,13 @@ % \end{macro} % \end{macro} % -% \begin{macro}[aux, rEXP] +% \begin{macro}[rEXP] % { % \@@_decode_utf_xvi_pair:NN , % \@@_decode_utf_xvi_quad:NNwNN , % \@@_decode_utf_xvi_pair_end:Nw , % } -% \begin{macro}[aux, rEXP] +% \begin{macro}[rEXP] % { % \@@_decode_utf_xvi_error:nNN , % \@@_decode_utf_xvi_extra:NNw , @@ -2474,13 +2474,13 @@ \char_set_catcode_other:N \^^ff % \end{macrocode} % -% \begin{macro}[int] +% \begin{macro} % { % \@@_convert_encode_utf32: , % \@@_convert_encode_utf32be: , % \@@_convert_encode_utf32le: , % } -% \begin{macro}[aux, rEXP] +% \begin{macro}[rEXP] % { % \@@_encode_utf_xxxii_be:n , % \@@_encode_utf_xxxii_be_aux:nn , @@ -2563,15 +2563,15 @@ % \end{macrocode} % \end{variable} % -% \begin{macro}[int] +% \begin{macro} % { % \@@_convert_decode_utf32: , % \@@_convert_decode_utf32be: , % \@@_convert_decode_utf32le: , % } -% \begin{macro}[aux] +% \begin{macro} % {\@@_decode_utf_xxxii_bom:NNNN, \@@_decode_utf_xxxii:Nw} -% \begin{macro}[aux, rEXP] +% \begin{macro}[rEXP] % {\@@_decode_utf_xxxii_loop:NNNN, \@@_decode_utf_xxxii_end:w} % % The structure is similar to \textsc{utf-16} decoding functions. If 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 3aba3e72e7f..19803a88d63 100644 --- a/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-format.dtx +++ b/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-format.dtx @@ -1,13 +1,13 @@ % \iffalse meta-comment % -%% File: l3str-format.dtx Copyright (C) 2012-2013,2015-2017 The LaTeX3 Project +%% File: l3str-format.dtx Copyright (C) 2012-2017 The LaTeX3 Project % % It may be distributed and/or modified under the conditions of the % LaTeX Project Public License (LPPL), either version 1.3c of this % 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 "l3experimental bundle" (The Work in LPPL) % and all files in that bundle must be distributed together. @@ -47,7 +47,7 @@ % }^^A % } % -% \date{Released 2017/11/14} +% \date{Released 2017/12/05} % % \maketitle % @@ -163,15 +163,14 @@ % % \begin{macrocode} %<*package> -\ProvidesExplPackage{l3str-format}{2017/11/14}{} +\ProvidesExplPackage{l3str-format}{2017/12/05}{} {L3 Experimental string formatting} -\RequirePackage{l3str} %</package> % \end{macrocode} % % \subsection{Helpers} % -% \begin{macro}[aux, EXP]{\use:nf, \use:fnf} +% \begin{macro}[EXP]{\use:nf, \use:fnf} % A simple variant. % \begin{macrocode} \cs_generate_variant:Nn \use:nn { nf } @@ -179,14 +178,14 @@ % \end{macrocode} % \end{macro} % -% \begin{macro}[aux, EXP]{\tl_to_str:f} +% \begin{macro}[EXP]{\tl_to_str:f} % A simple variant. % \begin{macrocode} \cs_generate_variant:Nn \tl_to_str:n { f } % \end{macrocode} % \end{macro} % -% \begin{macro}[aux, EXP]{\@@_if_digit:NTF} +% \begin{macro}[EXP]{\@@_if_digit:NTF} % Here we expect |#1| to be a character with category other, or % \cs{s__stop}. % \begin{macrocode} @@ -198,7 +197,7 @@ % \end{macrocode} % \end{macro} % -% \begin{macro}[aux, EXP] +% \begin{macro}[EXP] % {\@@_put:nw, \@@_put:ow, \@@_put:fw} % Put |#1| after an \cs{s__stop} delimiter. % \begin{macrocode} @@ -207,8 +206,8 @@ % \end{macrocode} % \end{macro} % -% \begin{macro}[aux, EXP, TF]{\@@_if_in:nN} -% \begin{macro}[aux, EXP]{\@@_if_in_aux:NN} +% \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 % this weird internal string function. % \begin{macrocode} @@ -232,8 +231,8 @@ % % \subsection{Parsing a format specification} % -% \begin{macro}[aux, EXP]{\@@_parse:n} -% \begin{macro}[aux, EXP] +% \begin{macro}[EXP]{\@@_parse:n} +% \begin{macro}[EXP] % { % \@@_parse_auxi:NN, % \@@_parse_auxii:nN, @@ -324,7 +323,7 @@ % padding between the \meta{sign} and the \meta{body}, hence the need to % keep those separate. % -% \begin{macro}[aux, EXP]{\@@_align_<:nnnN} +% \begin{macro}[EXP]{\@@_align_<:nnnN} % \begin{quote} % \cs{@@_align_<:nnnN} \Arg{body} \Arg{sign} \Arg{width} % \meta{fill} @@ -345,7 +344,7 @@ % \end{macrocode} % \end{macro} % -% \begin{macro}[aux, EXP]{\@@_align_>:nnnN} +% \begin{macro}[EXP]{\@@_align_>:nnnN} % \begin{quote} % \cs{@@_align_>:nnnN} \Arg{body} \Arg{sign} \Arg{width} % \meta{fill} @@ -365,7 +364,7 @@ % \end{macro} % % \begingroup\catcode`\^=12 -% \begin{macro}[aux, EXP]{\@@_align_^:nnnN} +% \begin{macro}[EXP]{\@@_align_^:nnnN} % \begin{quote} % \cs{@@_align_^:nnnN} \Arg{body} \Arg{sign} \Arg{width} % \meta{fill} @@ -402,7 +401,7 @@ % \end{macro} % \endgroup % -% \begin{macro}[aux, EXP]{\@@_align_=:nnnN} +% \begin{macro}[EXP]{\@@_align_=:nnnN} % \begin{quote} % \cs{@@_align_=:nnnN} \Arg{body} \Arg{sign} \Arg{width} % \meta{fill} @@ -445,7 +444,7 @@ % \end{macrocode} % \end{macro} % -% \begin{macro}[aux, EXP]{\@@_tl:NNNnnNn} +% \begin{macro}[EXP]{\@@_tl:NNNnnNn} % \begin{quote} % \cs{@@_tl:NNNnnNn} \meta{fill} \meta{alignment} \meta{sign} % \Arg{width} \Arg{precision} \meta{style} \Arg{token list} @@ -497,7 +496,7 @@ % \end{macrocode} % \end{macro} % -% \begin{macro}[aux, EXP]{\@@_tl_s:NNnnNNn} +% \begin{macro}[EXP]{\@@_tl_s:NNnnNNn} % \begin{quote} % \cs{@@_tl_s:NNnnNNn} \cs{s__stop} \meta{function} % \Arg{arguments} \Arg{width} \meta{fill} \meta{alignment} @@ -540,7 +539,7 @@ % \end{macrocode} % \end{macro} % -% \begin{macro}[aux, EXP]{\@@_seq:nn, \@@_seq:ff} +% \begin{macro}[EXP]{\@@_seq:nn, \@@_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} @@ -554,7 +553,7 @@ % \end{macrocode} % \end{macro} % -% \begin{macro}[aux, EXP]{\@@_seq_loop:nnNn} +% \begin{macro}[EXP]{\@@_seq_loop:nnNn} % \begin{quote} % \cs{@@_seq_loop:nnNn} \Arg{done} \Arg{parsed format} % \cs{__seq_item:n} \Arg{item} @@ -574,7 +573,7 @@ % \end{macrocode} % \end{macro} % -% \begin{macro}[aux, EXP]{\@@_seq_end:w} +% \begin{macro}[EXP]{\@@_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 } @@ -591,7 +590,7 @@ % \end{macrocode} % \end{macro} % -% \begin{macro}[aux, EXP]{\@@_int:nn} +% \begin{macro}[EXP]{\@@_int:nn} % Parse the \meta{format specification} and feed it to % \cs{@@_int:NNNnnNn}. Then convert the result to a string % \begin{macrocode} @@ -607,7 +606,7 @@ % \end{macrocode} % \end{macro} % -% \begin{macro}[aux, EXP]{\@@_int:NNNnnNn} +% \begin{macro}[EXP]{\@@_int:NNNnnNn} % \begin{quote} % \cs{@@_int:NNNnnNn} \meta{fill} \meta{alignment} % \meta{sign} \Arg{width} \Arg{precision} \meta{style} \Arg{integer} @@ -662,7 +661,7 @@ % \end{macrocode} % \end{macro} % -% \begin{macro}[aux, EXP]{\@@_int:NwnnNNn} +% \begin{macro}[EXP]{\@@_int:NwnnNNn} % \begin{quote} % \cs{@@_int:NwnnNNn} \meta{function} \cs{s__stop} % \Arg{width} \Arg{sign} \meta{fill} \meta{alignment} \Arg{integer} @@ -700,7 +699,7 @@ % \end{macrocode} % \end{macro} % -% \begin{macro}[aux, EXP]{\@@_fp:nn} +% \begin{macro}[EXP]{\@@_fp:nn} % Parse the \meta{format specification} and feed it to % \cs{@@_fp:NNNnnNn}. Then convert the result to a string % \begin{macrocode} @@ -716,7 +715,7 @@ % \end{macrocode} % \end{macro} % -% \begin{macro}[aux, EXP]{\@@_fp:NNNnnNw} +% \begin{macro}[EXP]{\@@_fp:NNNnnNw} % \begin{quote} % \cs{@@_fp:NNNnnNw} \meta{fill} \meta{alignment} % \meta{format sign} \Arg{width} \Arg{precision} \meta{style} @@ -773,7 +772,7 @@ % \end{macrocode} % \end{macro} % -% \begin{macro}[aux, EXP]{\@@_fp:wnnnNNw} +% \begin{macro}[EXP]{\@@_fp:wnnnNNw} % \begin{quote} % \cs{@@_fp:wnnnNNw} \meta{formatting function} \cs{s__stop} % \Arg{precision} \Arg{width} \Arg{sign} \meta{fill} @@ -793,7 +792,7 @@ % \end{macrocode} % \end{macro} % -% \begin{macro}[aux, EXP]{\@@_fp_round:wn} +% \begin{macro}[EXP]{\@@_fp_round:wn} % Round the given floating point (not its absolute value, to play % nicely with unusual rounding modes). % \begin{macrocode} @@ -802,8 +801,8 @@ % \end{macrocode} % \end{macro} % -% \begin{macro}[aux, EXP]{\@@_fp_e:wn} -% \begin{macro}[aux, EXP]{\@@_fp_e_aux:wn} +% \begin{macro}[EXP]{\@@_fp_e:wn} +% \begin{macro}[EXP]{\@@_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). @@ -839,13 +838,12 @@ \@@_put:fw { \use_i:nnnn #4 . } \use_none:n \s__stop } - } % \end{macrocode} % \end{macro} % \end{macro} % -% \begin{macro}[aux, EXP]{\@@_fp_f:wn} -% \begin{macro}[aux, EXP]{\@@_fp_f_aux:wwwn} +% \begin{macro}[EXP]{\@@_fp_f:wn} +% \begin{macro}[EXP]{\@@_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} @@ -875,9 +873,9 @@ % \end{macro} % \end{macro} % -% \begin{macro}[aux, EXP]{\@@_fp_g:wn} -% \begin{macro}[aux, EXP]{\@@_fp_g_aux:wn} -% \begin{macro}[aux, EXP]{\@@_fp_to_scientific:n, \@@_fp_trim:w} +% \begin{macro}[EXP]{\@@_fp_g:wn} +% \begin{macro}[EXP]{\@@_fp_g_aux:wn} +% \begin{macro}[EXP]{\@@_fp_to_scientific:n, \@@_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 diff --git a/Master/texmf-dist/source/latex/l3experimental/l3str/l3str.ins b/Master/texmf-dist/source/latex/l3experimental/l3str/l3str.ins index 2f2ed04c016..944541e77b7 100644 --- a/Master/texmf-dist/source/latex/l3experimental/l3str/l3str.ins +++ b/Master/texmf-dist/source/latex/l3experimental/l3str/l3str.ins @@ -1,6 +1,6 @@ \iffalse meta-comment -File l3str.ins Copyright (C) 2011,2013,2015-2017 The LaTeX3 Project +File l3str.ins Copyright (C) 2011-2017 The LaTeX3 Project It may be distributed and/or modified under the conditions of the LaTeX Project Public License (LPPL), either version 1.3c of this diff --git a/Master/texmf-dist/source/latex/l3experimental/xcoffins/xcoffins.dtx b/Master/texmf-dist/source/latex/l3experimental/xcoffins/xcoffins.dtx index 8197c78ed52..0165c9d0aa5 100644 --- a/Master/texmf-dist/source/latex/l3experimental/xcoffins/xcoffins.dtx +++ b/Master/texmf-dist/source/latex/l3experimental/xcoffins/xcoffins.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 "l3experimental bundle" (The Work in LPPL) % and all files in that bundle must be distributed together. @@ -54,7 +54,7 @@ % }^^A % } % -% \date{Released 2017/11/14} +% \date{Released 2017/12/05} % % \maketitle % @@ -673,7 +673,7 @@ % \end{macrocode} % % \begin{macrocode} -\ProvidesExplPackage{xcoffins}{2017/11/14}{} +\ProvidesExplPackage{xcoffins}{2017/12/05}{} {L3 Experimental design level coffins} % \end{macrocode} % @@ -723,7 +723,7 @@ % % \begin{macro}{\@@_design_names:N} % \begin{variable}{\Height, \Depth, \Width, \TotalHeight} -% \begin{variable}[int] +% \begin{variable} % {\l_@@_height_dim, \l_@@_depth_dim, \l_@@_width_dim, \l_@@_totalheight_dim} % Sets up design-level names for the various coffin dimensions. These are % not defined outside of this scope, and are dimensions so that they work @@ -894,7 +894,7 @@ \NewDocumentCommand \CoffinHeight { m } { \coffin_ht:N #1 } \NewDocumentCommand \CoffinTotalHeight { m } - { \__dim_eval:w \coffin_ht:N #1 + \coffin_dp:N #1 \__dim_eval_end: } + { \__dim_eval:n { \coffin_ht:N #1 + \coffin_dp:N #1 } } \NewDocumentCommand \CoffinWidth { m } { \coffin_wd:N #1 } % \end{macrocode} diff --git a/Master/texmf-dist/source/latex/l3experimental/xcoffins/xcoffins.ins b/Master/texmf-dist/source/latex/l3experimental/xcoffins/xcoffins.ins index c3791a3ebd6..9b70480da4c 100644 --- a/Master/texmf-dist/source/latex/l3experimental/xcoffins/xcoffins.ins +++ b/Master/texmf-dist/source/latex/l3experimental/xcoffins/xcoffins.ins @@ -1,6 +1,6 @@ \iffalse meta-comment -File xcoffins.ins Copyright (C) 2010,2011,2016 The LaTeX3 Project +File xcoffins.ins Copyright (C) 2010,2011,2012,2016,2017 The LaTeX3 Project It may be distributed and/or modified under the conditions of the LaTeX Project Public License (LPPL), either version 1.3c of this @@ -32,7 +32,7 @@ license information is placed in the derived files. \preamble -Copyright (C) 2010-2016 The LaTeX3 Project +Copyright (C) 2010-2017 The LaTeX3 Project It may be distributed and/or modified under the conditions of the LaTeX Project Public License (LPPL), either version 1.3c of diff --git a/Master/texmf-dist/source/latex/l3experimental/xgalley/l3galley.dtx b/Master/texmf-dist/source/latex/l3experimental/xgalley/l3galley.dtx index 643347818cf..dea566a0c17 100644 --- a/Master/texmf-dist/source/latex/l3experimental/xgalley/l3galley.dtx +++ b/Master/texmf-dist/source/latex/l3experimental/xgalley/l3galley.dtx @@ -8,7 +8,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 "l3experimental bundle" (The Work in LPPL) % and all files in that bundle must be distributed together. @@ -24,8 +24,8 @@ %<*driver|package> % The version of expl3 required is tested as early as possible, as % some really old versions do not define \ProvidesExplPackage. -\RequirePackage{expl3}[2017/11/14] -%<package>\@ifpackagelater{expl3}{2017/11/14} +\RequirePackage{expl3}[2017/12/05] +%<package>\@ifpackagelater{expl3}{2017/12/05} %<package> {} %<package> {% %<package> \PackageError{l3galley}{Support package l3kernel too old} @@ -59,7 +59,7 @@ % }^^A % } % -% \date{Released 2017/11/14} +% \date{Released 2017/12/05} % % \maketitle % @@ -685,7 +685,7 @@ % % \begin{macrocode} %<*package> -\ProvidesExplPackage{l3galley}{2017/11/14}{} +\ProvidesExplPackage{l3galley}{2017/12/05}{} {L3 Experimental galley code} %</package> % \end{macrocode} @@ -1111,7 +1111,7 @@ % \end{macro} % % \begin{macro}{\galley_level:} -% \begin{macro}[aux]{\@@_level_end:} +% \begin{macro}{\@@_level_end:} % Galley levels are created by saving all of the current global % settings, starting a group then initialising both the local and global % variables. @@ -1152,9 +1152,9 @@ % \end{variable} % % \begin{macro}{\galley_par:} -% \begin{macro}[aux]{\@@_par_auxi:, \@@_par_auxii:, \@@_par_auxiii:} -% \begin{macro}[aux]{\@@_par_aux:N} -% \begin{macro}[int]{\@@_par_update_cutout:} +% \begin{macro}{\@@_par_auxi:, \@@_par_auxii:, \@@_par_auxiii:} +% \begin{macro}{\@@_par_aux:N} +% \begin{macro}{\@@_par_update_cutout:} % The idea here is to expand the next token in exactly the same way as \TeX{} % would do anyway. The \texttt{f}-type expansion will ignore any protection, % but will stop at a scan marker. Thus the code can test for an @@ -1315,8 +1315,8 @@ % \subsection{Display levels} % % \begin{macro}{\galley_display_begin:, \galley_display_end:} -% \begin{macro}[aux]{\@@_display_penalty:N, \@@_display_vspace:N} -% \begin{macro}[aux]{\@@_display_par_setup:, \@@_display_par:} +% \begin{macro}{\@@_display_penalty:N, \@@_display_vspace:N} +% \begin{macro}{\@@_display_par_setup:, \@@_display_par:} % Display items within the galley are a bit like galley levels: they % may have different paragraph settings to the main part of the galley. % On the other hand, unlike independent galleys they should inherit the @@ -1497,7 +1497,7 @@ % \end{verbatim} % and so anything applied here must be done globally. % -% \begin{macro}[int]{\@@_start_paragraph_common:N} +% \begin{macro}{\@@_start_paragraph_common:N} % Share some code between all types of paragraph start. % The routine at the start of a paragraph starts by removing any % (empty) indent box from the vertical list. As there may be vertical @@ -1520,7 +1520,7 @@ % \end{macrocode} % \end{macro} % -% \begin{macro}[int]{\@@_start_paragraph_std:} +% \begin{macro}{\@@_start_paragraph_std:} % After dealign with the common items, the horizontal mode items can be % tidied up before sorting out any items which have been set on a % single-paragraph basis. @@ -1534,8 +1534,8 @@ % \end{macrocode} % \end{macro} % -% \begin{macro}[int]{\@@_start_paragraph_first:} -% \begin{macro}[aux]{\@@_insert_vspace_first:} +% \begin{macro}{\@@_start_paragraph_first:} +% \begin{macro}{\@@_insert_vspace_first:} % For the very first paragraph in a galley, the code needs to avoid % adding any unnecessary vertical items at the top as it will interfere with % vertical positioning in \cs{tex_vtop:D}. That requirement also means we @@ -1560,7 +1560,7 @@ % \end{macro} % \end{macro} % -% \begin{macro}[int]{\@@_insert_vertical_items} +% \begin{macro}{\@@_insert_vertical_items} % The aim here is to insert the vertical items such that they attach to % the correct place. This function is used as part of the \cs{tex_everypar:D} % mechanism, meaning that the immediately-preceding item on the vertical @@ -1584,7 +1584,7 @@ } { \tex_penalty:D - \__int_eval:w \g_@@_interpar_penalty_user_tl \__int_eval_end: + \__int_eval:n { \g_@@_interpar_penalty_user_tl } \tl_gclear:N \g_@@_interpar_penalty_user_tl } \bool_gset_false:N \g_galley_no_break_next_bool @@ -1598,7 +1598,7 @@ % \end{macrocode} % \end{macro} % -% \begin{macro}[int]{\@@_insert_horizontal_items:} +% \begin{macro}{\@@_insert_horizontal_items:} % Horizontal mode objects start with the whatsits for the next paragraph. An % indent is then included if the removed box was not void. % \begin{macrocode} @@ -1618,7 +1618,7 @@ % \end{macrocode} % \end{macro} % -% \begin{macro}[int]{\@@_restore_running_parameters:} +% \begin{macro}{\@@_restore_running_parameters:} % Restoring the ongoing parameters just means using the token list % variable in which the appropriate assignments are stored. The % list can then be cleared. @@ -1703,7 +1703,7 @@ % \end{macrocode} % \end{macro} % -% \begin{macro}[int]{\@@_parshape_set:nnnN} +% \begin{macro}{\@@_parshape_set:nnnN} % Setting the paragraph shape starts by converting the two input lists into % sequences. The shape is then set using a mapping with allowance for the % unaltered lines and the possibility of resuming the measure. The unaltered @@ -1738,8 +1738,8 @@ % handling from the measure and shape. % % \begin{macro}{\galley_cutout_left:nn, \galley_cutout_right:nn} -% \begin{macro}[aux]{\@@_cutout:nnn} -% \begin{macro}[int]{\@@_cutout:NN, \@@_cutout:cN, \@@_cutout:Nc} +% \begin{macro}{\@@_cutout:nnn} +% \begin{macro}{\@@_cutout:NN, \@@_cutout:cN, \@@_cutout:Nc} % Setting up cutouts on the two sides of the paragraph is more or less % the same idea with one or two very specific points of difference. As such, % the two interface functions both use the same implementation. @@ -1798,17 +1798,17 @@ % % \subsection{Setting the primitive paragraph shape} % -% \begin{macro}[int]{\@@_parshape_set:} -% \begin{macro}[aux] +% \begin{macro}{\@@_parshape_set:} +% \begin{macro} % { % \@@_parshape_set_margins:, % \@@_parshape_set_indents:, % \@@_parshape_set_cutouts: % } -% \begin{macro}[aux]{\@@_parshape_set_indents:NN} -% \begin{macro}[aux, rEXP]{\@@_parshape_set_indents:nn} -% \begin{macro}[aux]{\@@_parshape_set_cutouts:n} -% \begin{macro}[aux]{\@@_parshape_set_cutouts:N} +% \begin{macro}{\@@_parshape_set_indents:NN} +% \begin{macro}[rEXP]{\@@_parshape_set_indents:nn} +% \begin{macro}{\@@_parshape_set_cutouts:n} +% \begin{macro}{\@@_parshape_set_cutouts:N} % The real paragraph shape (\cs{tex_parshape:D}) is set whenever any % of the conceptual elements (margins, measure, cutouts) are set and % potentially at the end of a paragraph in the cases where a single-paragraph @@ -1863,18 +1863,15 @@ \cs_new_protected:Npn \@@_parshape_set_indents:NN #1#2 { \tex_parshape:D - \__int_eval:w - \int_min:nn { \seq_count:N #1 } { \seq_count:N #2 } - \__int_eval_end: + \__int_eval:n + { \int_min:nn { \seq_count:N #1 } { \seq_count:N #2 } } \seq_mapthread_function:NNN #1 #2 \@@_parshape_set_indents:nn } \cs_new:Npn \@@_parshape_set_indents:nn #1#2 { - \__dim_eval:w \l_galley_total_left_margin_dim + ( #1 ) \__dim_eval_end: - \__dim_eval:w - \l_galley_text_width_dim - ( ( #1 ) + ( #2 ) ) - \__dim_eval_end: + \__dim_eval:n { \l_galley_total_left_margin_dim + #1 } + \__dim_eval:n { \l_galley_text_width_dim - ( #1 + #2 ) } } % \end{macrocode} % Calculating cutouts is by far the most complex operation here. The @@ -2217,7 +2214,7 @@ % \galley_widow_penalties_set:V, % \galley_widow_penalties_set:v % } -% \begin{macro}[aux]{\@@_set_aux:n} +% \begin{macro}{\@@_set_aux:n} % By far the easiest penalties to deal with are those for widows. These % work exactly as the names imply, with the display version only used % immediately before display math, and the standard penalty used at the end @@ -2228,7 +2225,7 @@ \cs_new_protected:Npn \galley_display_widow_penalties_set:n #1 { \etex_displaywidowpenalties:D - \__int_eval:w \clist_count:n {#1} + 1 \__int_eval_end: + \__int_eval:n { \clist_count:n {#1} + 1 } \clist_map_function:nN {#1} \@@_set_aux:n 0 \exp_stop_f: } @@ -2236,7 +2233,7 @@ \cs_new_protected:Npn \galley_widow_penalties_set:n #1 { \etex_widowpenalties:D - \__int_eval:w \clist_count:n {#1} + 1 \__int_eval_end: + \__int_eval:n { \clist_count:n {#1} + 1 } \clist_map_function:nN {#1} \@@_set_aux:n 0 \exp_stop_f: } @@ -2287,7 +2284,7 @@ \cs_new_protected:Npn \galley_display_club_penalties_set:n #1 { \etex_clubpenalties:D - \__int_eval:w \clist_count:n {#1} + 1 \__int_eval_end: + \__int_eval:n { \clist_count:n {#1} + 1 } \clist_map_function:nN {#1} \@@_set_aux:n 0 \exp_stop_f: \@@_calc_interline_penalties: @@ -2297,8 +2294,8 @@ % \end{macro} % % \begin{macro}{\galley_interline_penalty_set:n} -% \begin{macro}[aux]{\@@_set_interline_penalty:nn} -% \begin{macro}[aux] +% \begin{macro}{\@@_set_interline_penalty:nn} +% \begin{macro} % { % \@@_set_interline_penalty_auxi:n, % \@@_set_interline_penalty_auxii:n @@ -2310,22 +2307,22 @@ % generic build system is invoked (in case the % \cs{etex_interlinepenalties:D} has accidentally been cleared). % \begin{macrocode} -\__debug_patch_args:nNNpn { { (#1) } } \cs_new_protected:Npn \galley_interline_penalty_set:n #1 { \int_compare:nNnTF { \etex_interlinepenalties:D 0 } = 0 { - \etex_interlinepenalties:D 1 = \__int_eval:w #1 \__int_eval_end: + \etex_interlinepenalties:D 1 = \__int_eval:n {#1} \@@_calc_interline_penalties: } { \cs_set:Npn \@@_set_interline_penalty_auxii:n ##1 { - \__int_eval:w - \etex_interlinepenalties:D ##1 - - \etex_interlinepenalties:D \etex_interlinepenalties:D 0 - + #1 - \__int_eval_end: + \__int_eval:n + { + \etex_interlinepenalties:D ##1 + - \etex_interlinepenalties:D \etex_interlinepenalties:D 0 + + #1 + } } \exp_args:Nf \@@_set_interline_penalty:nn { \clist_count:N \l_galley_line_penalties_clist } {#1} @@ -2340,19 +2337,19 @@ \int_step_function:nnnN { #1 + 1 } { 1 } { \etex_interlinepenalties:D 0 - 1 } \@@_set_interline_penalty_auxii:n - \__int_eval:w #2 \__int_eval_end: + \__int_eval:n {#2} } \cs_new:Npn \@@_set_interline_penalty_auxi:n #1 - { \etex_interlinepenalties:D \__int_eval:w #1 \__int_eval_end: } + { \etex_interlinepenalties:D \__int_eval:n {#1} } \cs_new:Npn \@@_set_interline_penalty_auxii:n #1 { } % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % -% \begin{macro}[int]{\@@_calc_interline_penalties:} -% \begin{macro}[aux]{\@@_calc_interline_penalties:nn} -% \begin{macro}[aux] +% \begin{macro}{\@@_calc_interline_penalties:} +% \begin{macro}{\@@_calc_interline_penalties:nn} +% \begin{macro} % { % \@@_calc_interline_penalties_auxi:n, % \@@_calc_interline_penalties_auxii:n @@ -2395,19 +2392,21 @@ } \cs_new:Npn \@@_calc_interline_penalties_auxi:n #1 { - \__int_eval:w + \__int_eval:n + { \clist_item:Nn \l_galley_line_penalties_clist {#1} - + 0 \clist_item:Nn \l_galley_club_penalties_clist {#1} - - \etex_clubpenalties:D #1 ~ - \__int_eval_end: + + 0 \clist_item:Nn \l_galley_club_penalties_clist {#1} + - \etex_clubpenalties:D #1 ~ + } } \cs_new:Npn \@@_calc_interline_penalties_auxii:n #1 { - \__int_eval:w + \__int_eval:n + { \etex_interlinepenalties:D \etex_interlinepenalties:D 0 \exp_stop_f: - + 0 \clist_item:Nn \l_galley_club_penalties_clist {#1} - - \etex_clubpenalties:D #1 ~ - \__int_eval_end: + + 0 \clist_item:Nn \l_galley_club_penalties_clist {#1} + - \etex_clubpenalties:D #1 ~ + } } % \end{macrocode} % \end{macro} @@ -2422,7 +2421,7 @@ % \galley_save_display_widow_penalties:N, % \galley_save_widow_penalties:N % } -% \begin{macro}[aux] +% \begin{macro} % { % \@@_save_display_club_penalties:n, % \@@_save_display_widow_penalties:n, @@ -2450,7 +2449,7 @@ } } \cs_new:Npn \@@_save_display_club_penalties:n #1 - { \__int_value:w \etex_clubpenalties:D \__int_eval:w #1 \__int_eval_end: , } + { \__int_value:w \etex_clubpenalties:D \__int_eval:n {#1} , } \cs_new_protected:Npn \galley_save_display_widow_penalties:N #1 { \clist_set:Nx #1 @@ -2463,7 +2462,7 @@ \cs_new:Npn \@@_save_display_widow_penalties:n #1 { \__int_value:w \etex_displaywidowpenalties:D - \__int_eval:w #1 \__int_eval_end: , + \__int_eval:n {#1} , } \cs_new_protected:Npn \galley_save_widow_penalties:N #1 { @@ -2475,7 +2474,7 @@ } } \cs_new:Npn \@@_save_widow_penalties:n #1 - { \__int_value:w \etex_widowpenalties:D \__int_eval:w #1 \__int_eval_end: , } + { \__int_value:w \etex_widowpenalties:D \__int_eval:n {#1} , } % \end{macrocode} % This one is not an array, but is stored in a primitive, so there is % a simple conversion. The general interline penalty is always the diff --git a/Master/texmf-dist/source/latex/l3experimental/xgalley/xgalley.dtx b/Master/texmf-dist/source/latex/l3experimental/xgalley/xgalley.dtx index 8f4344592fd..b8b07b405b5 100644 --- a/Master/texmf-dist/source/latex/l3experimental/xgalley/xgalley.dtx +++ b/Master/texmf-dist/source/latex/l3experimental/xgalley/xgalley.dtx @@ -8,7 +8,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 "l3experimental bundle" (The Work in LPPL) % and all files in that bundle must be distributed together. @@ -45,7 +45,7 @@ % }^^A % } % -% \date{Released 2017/11/14} +% \date{Released 2017/12/05} % % \maketitle % @@ -732,7 +732,7 @@ % \end{macrocode} % % \begin{macrocode} -\ProvidesExplPackage{xgalley}{2017/11/14}{} +\ProvidesExplPackage{xgalley}{2017/12/05}{} {L3 Experimental galley} \RequirePackage{xparse,xtemplate,l3galley} % \end{macrocode} @@ -1402,6 +1402,7 @@ % \end{macrocode} % A bit more complex for the array penalties. Although the interface here % does not expose the arrays, it is necessary to correctly save them. +% We suspend debugging to allow an assignment to a constant. % \begin{macrocode} \seq_map_inline:Nn \c_@@_parbreak_multi_seq { @@ -1417,16 +1418,20 @@ } } } -\seq_new:N \c_@@_parbreak_multi_seq -\seq_gput_right:Nn \c_@@_parbreak_multi_seq { club_penalties } -\seq_gput_right:Nn \c_@@_parbreak_multi_seq { display_club_penalties } -\seq_gput_right:Nn \c_@@_parbreak_multi_seq { display_widow_penalties } -\seq_gput_right:Nn \c_@@_parbreak_multi_seq { widow_penalties } -\seq_new:N \c_@@_parbreak_single_seq -\seq_gput_right:Nn \c_@@_parbreak_single_seq { parbreak_badness } -\seq_gput_right:Nn \c_@@_parbreak_single_seq { broken_penalty } -\seq_gput_right:Nn \c_@@_parbreak_single_seq { post_display_penalty } -\seq_gput_right:Nn \c_@@_parbreak_single_seq { pre_display_penalty } +\seq_const_from_clist:Nn \c_@@_parbreak_multi_seq + { + club_penalties , + display_club_penalties , + display_widow_penalties , + widow_penalties , + } +\seq_const_from_clist:Nn \c_@@_parbreak_single_seq + { + parbreak_badness , + broken_penalty , + post_display_penalty , + pre_display_penalty , + } % \end{macrocode} % \end{variable} % \begin{macrocode} diff --git a/Master/texmf-dist/source/latex/l3experimental/xgalley/xgalley.ins b/Master/texmf-dist/source/latex/l3experimental/xgalley/xgalley.ins index 1d10cd47277..5ef421779d4 100644 --- a/Master/texmf-dist/source/latex/l3experimental/xgalley/xgalley.ins +++ b/Master/texmf-dist/source/latex/l3experimental/xgalley/xgalley.ins @@ -1,6 +1,6 @@ \iffalse meta-comment -File xgalley.ins Copyright (C) 2010-2012,2016 The LaTeX3 Project +File xgalley.ins Copyright (C) 2010-2012,2016,2017 The LaTeX3 Project It may be distributed and/or modified under the conditions of the LaTeX Project Public License (LPPL), either version 1.3c of this @@ -32,7 +32,7 @@ license information is placed in the derived files. \preamble -Copyright (C) 2010-2016 The LaTeX3 Project +Copyright (C) 2010-2017 The LaTeX3 Project It may be distributed and/or modified under the conditions of the LaTeX Project Public License (LPPL), either version 1.3c of |