summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/latex/unicode-math/um-code-opening.dtx
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/source/latex/unicode-math/um-code-opening.dtx')
-rw-r--r--Master/texmf-dist/source/latex/unicode-math/um-code-opening.dtx162
1 files changed, 148 insertions, 14 deletions
diff --git a/Master/texmf-dist/source/latex/unicode-math/um-code-opening.dtx b/Master/texmf-dist/source/latex/unicode-math/um-code-opening.dtx
index 0f681f52dee..95ef8dd2450 100644
--- a/Master/texmf-dist/source/latex/unicode-math/um-code-opening.dtx
+++ b/Master/texmf-dist/source/latex/unicode-math/um-code-opening.dtx
@@ -1,4 +1,5 @@
%%^^A%% um-code-opening.dtx -- part of UNICODE-MATH <wspr.io/unicode-math>
+%%^^A%% Assorted initialisation tasks, including some low-level function definitions.
% \section{Start of the package code}
%
@@ -31,7 +32,18 @@
% For \pkg{fontspec}:
% \begin{macrocode}
\cs_generate_variant:Nn \fontspec_set_family:Nnn {Nx}
-\cs_generate_variant:Nn \fontspec_set_fontface:NNnn {NNx}
+\cs_generate_variant:Nn \prop_get:NnNTF {cx}
+\cs_generate_variant:Nn \tl_if_eq:nnF {o}
+% \end{macrocode}
+%
+%
+% \subsection{Low level commands}
+%
+% \begin{macrocode}
+\cs_set_eq:NN \@@_group_begin: \group_begin:
+\cs_set_eq:NN \@@_group_end: \group_end:
+\cs_set_eq:NN \@@_group_begin_frozen: \@@_group_begin:
+\cs_set_eq:NN \@@_group_end_frozen: \@@_group_end:
% \end{macrocode}
%
%
@@ -52,6 +64,16 @@
% \end{macrocode}
% \end{macro}
%
+% \begin{macro}{\@@_fontface_gset_eq:NN}
+% \begin{macrocode}
+\cs_set_protected:Nn \@@_fontface_gset_eq:NN
+ {
+ \tex_global:D \tex_let:D #1 #2
+ }
+\cs_generate_variant:Nn \@@_fontface_gset_eq:NN {NV,cV}
+% \end{macrocode}
+% \end{macro}
+%
% \subsubsection{Mathcode and friends}
%
% \begin{macro}{\@@_set_mathcode:nnnn}
@@ -133,43 +155,64 @@
% \begin{macrocode}
\cs_new:Nn \@@_char_gmake_mathactive:N
{
- \global\mathcode `#1 = "8000 \scan_stop:
+ \tex_global:D \tex_mathcode:D `#1 = "8000 \scan_stop:
}
+% \end{macrocode}
+% \begin{macrocode}
\cs_new:Nn \@@_char_gmake_mathactive:n
{
- \global\mathcode #1 = "8000 \scan_stop:
+ \tex_global:D \tex_mathcode:D \int_eval:n {#1} = "8000 \scan_stop:
}
% \end{macrocode}
% \end{macro}
% \end{macro}
%
+% \begin{macro}{\@@_mathactive_remap:nn}
+% Makes |#1| math-active and defines its meaning to be |#2|.
+% This is a global operation.
+% \begin{macrocode}
+\cs_new:Nn \@@_mathactive_remap:nn
+ {
+ \group_begin:
+ \cs_set_protected:Npn \@@_tmp: {#2}
+ \@@_char_gmake_mathactive:n {#1}
+ \char_gset_active_eq:nN {#1} \@@_tmp:
+ \group_end:
+ }
+% \end{macrocode}
+%
% \subsubsection{Font parameters}
%
-% \begin{macro}{\@@_copy_fontparam:nnn}
+% \begin{macro}{\@@_copy_fontdimen:nnN}
% \begin{macrocode}
-\cs_new:Nn \@@_copy_fontparam:nnn
+\cs_new:Nn \@@_copy_fontdimen:nnN
{
- \fontdimen #1 \font = \@@_get_fontparam:nn {#2} {#3}
+ \fontdimen #1 \font = \the \fontdimen #2 #3 \relax
}
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{\@@_zero_fontparam:n}
+% \begin{macro}{\@@_zero_fontdimen:n}
% \begin{macrocode}
-\cs_new:Nn \@@_zero_fontparam:n
+\cs_new:Nn \@@_zero_fontdimen:n
{
\fontdimen #1 \font = 0pt\relax
}
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{\@@_get_fontparam:nn}
+% \begin{macro}{\@@_fontdimen_from_param:Nnn}
+% This function extracts the math font dimen \verb|#3| from the font \verb|#1|
+% and sets fontdimen \verb|#2| of the same font to that value.
+%
+% Use \XeTeX's fontdimen approach because it's tidy. We don't need bells and whistles here.
% \begin{macrocode}
-\cs_new:Nn \@@_get_fontparam:nn
+%<*LU>
+\cs_new_protected:Nn \@@_fontdimen_from_param:nn
{
-%<XE> \the\fontdimen#1\l_@@_font\relax
-%<LU> \directlua{fontspec.mathfontdimen("l_@@_font","#2")}
+ \fontdimen #1 \font = \directlua{fontspec.mathfontdimen(font.current(),"#2")}\relax
}
+%</LU>
% \end{macrocode}
% \end{macro}
%
@@ -188,7 +231,7 @@
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}[TF]{\@@_usv_if_exist:nn}
+% \begin{macro}{\@@_usv_if_exist:nnTF}
% \begin{macrocode}
\prg_new_conditional:Nnn \@@_usv_if_exist:nn {T,F,TF}
{
@@ -225,12 +268,103 @@
}
% \end{macrocode}
%
+%
+% \subsection{Wrappers for message functions}
+%
+% Messages themselves are defined in \secref{codemsg}.
+%
+% \begin{macrocode}
+\cs_new:Npn \@@_error:n { \msg_error:nn {unicode-math} }
+\cs_new:Npn \@@_error:nx { \msg_error:nnx {unicode-math} }
+\cs_new:Npn \@@_warning:n { \msg_warning:nn {unicode-math} }
+\cs_new:Npn \@@_warning:nnn { \msg_warning:nnxx {unicode-math} }
+\cs_new:Npn \@@_log:n { \msg_log:nn {unicode-math} }
+\cs_new:Npn \@@_log:nx { \msg_log:nnx {unicode-math} }
+% \end{macrocode}
+%
+% \begin{macrocode}
+\cs_generate_variant:Nn \msg_new:nnn {nnx}
+\cs_generate_variant:Nn \msg_new:nnnn {nnxx}
+\cs_new:Nn \@@_msg_new:nn { \msg_new:nnx {unicode-math} {#1} { \tl_trim_spaces:n {#2} } }
+% \end{macrocode}
+%
+%
% \begin{macrocode}
%</package>
% \end{macrocode}
\endinput
+
+% \subsection{Sow/reap}
+%
+% This might make it into the kernel; not sure.
+% Not actually used yet in the package!
+%
+% \begin{macro}{\__@@_sow_item:Nn}
+% Helper variables for constructing \verb|c|-type arguments.
+% \begin{macrocode}
+\cs_new:Nn \__@@_sow_item:Nn { l___sow___ \token_to_str:N #1 ___ #2 ___tl }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\__@@_sow_int:N}
+% Helper variables for constructing \verb|c|-type arguments.
+% \begin{macrocode}
+\cs_new:Nn \__@@_sow_int:N { l___sow___ \token_to_str:N #1 ___int }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_sow_prepare:N}
+% \begin{macrocode}
+\cs_new:Nn \@@_sow_prepare:N
+ {
+ \tl_clear:N #1
+ \int_zero_new:c { \__@@_sow_int:N #1 }
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_sow:Nn}
+% \begin{macrocode}
+\cs_new:Nn \@@_sow:Nn
+ {
+ \int_incr:c { \__@@_sow_int:N #1 }
+ \tl_clear_new:c
+ {
+ \__@@_sow_item:Nn #1
+ { \int_use:c { \__@@_sow_int:N #1 } }
+ }
+ \tl_set:cn
+ {
+ \__@@_sow_item:Nn #1
+ { \int_use:c { \__@@_sow_int:N #1 } }
+ }
+ { #2 }
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_sow_reap:N}
+% \begin{macrocode}
+\cs_new:Nn \@@_sow_reap:N
+ {
+ \cs_set:Npn \__@@_sow_tmp:n ##1
+ {
+ \exp_not:v { \__@@_sow_item:Nn #1 {##1} }
+ }
+ \tl_set:Nx #1
+ {
+ \int_step_function:nnnN {1} {1}
+ { \int_use:c { \__@@_sow_int:N #1 } }
+ \__@@_sow_tmp:n
+ }
+
+ }
+% \end{macrocode}
+% \end{macro}
+
+
% /©
%
% ------------------------------------------------
@@ -240,7 +374,7 @@
% the conditions of the LaTeX Project Public License, version 1.3c or higher
% (your choice): <http://www.latex-project.org/lppl/>.
% ------------------------------------------------
-% Copyright 2006-2017 Will Robertson, LPPL "maintainer"
+% Copyright 2006-2018 Will Robertson, LPPL "maintainer"
% Copyright 2010-2017 Philipp Stephani
% Copyright 2011-2017 Joseph Wright
% Copyright 2012-2015 Khaled Hosny