summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/latex/l3kernel/l3sys.dtx
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/source/latex/l3kernel/l3sys.dtx')
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3sys.dtx122
1 files changed, 52 insertions, 70 deletions
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3sys.dtx b/Master/texmf-dist/source/latex/l3kernel/l3sys.dtx
index 01842fa73f4..21a8aed75c5 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3sys.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3sys.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-%% File: l3sys.dtx Copyright (C) 2015-2017 The LaTeX3 Project
+%% File: l3sys.dtx Copyright (C) 2015-2018 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
@@ -29,7 +29,7 @@
% \fi
%
% \title{^^A
-% The \pkg{l3sys} package\\System/runtime functions^^A
+% The \pkg{l3sys} package: System/runtime functions^^A
% }
%
% \author{^^A
@@ -41,7 +41,7 @@
% }^^A
% }
%
-% \date{Released 2018/03/05}
+% \date{Released 2018-04-30}
%
% \maketitle
%
@@ -134,6 +134,10 @@
%<*initex|package>
% \end{macrocode}
%
+% \begin{macrocode}
+%<@@=sys>
+% \end{macrocode}
+%
% \subsection{The name of the job}
%
% \begin{variable}{\c_sys_jobname_str}
@@ -178,6 +182,29 @@
%
% \subsection{Detecting the engine}
%
+% \begin{macro}{\@@_const:nn}
+% Set the |T|, |F|, |TF|, |p| forms of |#1| to be constants equal to
+% the result of evaluating the boolean expression~|#2|.
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_const:nn #1#2
+ {
+ \bool_if:nTF {#2}
+ {
+ \cs_new_eq:cN { #1 :T } \use:n
+ \cs_new_eq:cN { #1 :F } \use_none:n
+ \cs_new_eq:cN { #1 :TF } \use_i:nn
+ \cs_new_eq:cN { #1 _p: } \c_true_bool
+ }
+ {
+ \cs_new_eq:cN { #1 :T } \use_none:n
+ \cs_new_eq:cN { #1 :F } \use:n
+ \cs_new_eq:cN { #1 :TF } \use_ii:nn
+ \cs_new_eq:cN { #1 _p: } \c_false_bool
+ }
+ }
+% \end{macrocode}
+% \end{macro}
+%
% \begin{macro}[pTF, EXP]
% {
% \sys_if_engine_luatex:,
@@ -193,56 +220,24 @@
% or |-kanji-internal=euc| effective makes it more like \pTeX{}. In those
% cases we therefore report \pTeX{} rather than \upTeX{}.
% \begin{macrocode}
-\clist_map_inline:nn { lua , pdf , p , up , xe }
- {
- \cs_new_eq:cN { sys_if_engine_ #1 tex:T } \use_none:n
- \cs_new_eq:cN { sys_if_engine_ #1 tex:F } \use:n
- \cs_new_eq:cN { sys_if_engine_ #1 tex:TF } \use_ii:nn
- \cs_new_eq:cN { sys_if_engine_ #1 tex_p: } \c_false_bool
- }
-\cs_if_exist:NT \luatex_luatexversion:D
+\str_const:Nx \c_sys_engine_str
{
- \cs_gset_eq:NN \sys_if_engine_luatex:T \use:n
- \cs_gset_eq:NN \sys_if_engine_luatex:F \use_none:n
- \cs_gset_eq:NN \sys_if_engine_luatex:TF \use_i:nn
- \cs_gset_eq:NN \sys_if_engine_luatex_p: \c_true_bool
- \str_const:Nn \c_sys_engine_str { luatex }
- }
-\cs_if_exist:NT \pdftex_pdftexversion:D
- {
- \cs_gset_eq:NN \sys_if_engine_pdftex:T \use:n
- \cs_gset_eq:NN \sys_if_engine_pdftex:F \use_none:n
- \cs_gset_eq:NN \sys_if_engine_pdftex:TF \use_i:nn
- \cs_gset_eq:NN \sys_if_engine_pdftex_p: \c_true_bool
- \str_const:Nn \c_sys_engine_str { pdftex }
- }
-\cs_if_exist:NT \ptex_kanjiskip:D
- {
- \bool_lazy_and:nnTF
- { \cs_if_exist_p:N \uptex_disablecjktoken:D }
- { \int_compare_p:nNn { \ptex_jis:D "2121 } = { "3000 } }
- {
- \cs_gset_eq:NN \sys_if_engine_uptex:T \use:n
- \cs_gset_eq:NN \sys_if_engine_uptex:F \use_none:n
- \cs_gset_eq:NN \sys_if_engine_uptex:TF \use_i:nn
- \cs_gset_eq:NN \sys_if_engine_uptex_p: \c_true_bool
- \str_const:Nn \c_sys_engine_str { uptex }
- }
+ \cs_if_exist:NT \luatex_luatexversion:D { luatex }
+ \cs_if_exist:NT \pdftex_pdftexversion:D { pdftex }
+ \cs_if_exist:NT \ptex_kanjiskip:D
{
- \cs_gset_eq:NN \sys_if_engine_ptex:T \use:n
- \cs_gset_eq:NN \sys_if_engine_ptex:F \use_none:n
- \cs_gset_eq:NN \sys_if_engine_ptex:TF \use_i:nn
- \cs_gset_eq:NN \sys_if_engine_ptex_p: \c_true_bool
- \str_const:Nn \c_sys_engine_str { ptex }
+ \bool_lazy_and:nnTF
+ { \cs_if_exist_p:N \uptex_disablecjktoken:D }
+ { \int_compare_p:nNn { \ptex_jis:D "2121 } = { "3000 } }
+ { uptex }
+ { ptex }
}
+ \cs_if_exist:NT \xetex_XeTeXversion:D { xetex }
}
-\cs_if_exist:NT \xetex_XeTeXversion:D
+\tl_map_inline:nn { { luatex } { pdftex } { ptex } { uptex } { xetex } }
{
- \cs_gset_eq:NN \sys_if_engine_xetex:T \use:n
- \cs_gset_eq:NN \sys_if_engine_xetex:F \use_none:n
- \cs_gset_eq:NN \sys_if_engine_xetex:TF \use_i:nn
- \cs_gset_eq:NN \sys_if_engine_xetex_p: \c_true_bool
- \str_const:Nn \c_sys_engine_str { xetex }
+ \@@_const:nn { sys_if_engine_ #1 }
+ { \str_if_eq_x_p:nn \c_sys_engine_str {#1} }
}
% \end{macrocode}
% \end{variable}
@@ -258,30 +253,17 @@
% \begin{variable}{\c_sys_output_str}
% This is a simple enough concept: the two views here are complementary.
% \begin{macrocode}
-\int_compare:nNnTF
- { \cs_if_exist_use:NF \pdftex_pdfoutput:D { 0 } } > { 0 }
- {
- \cs_new_eq:NN \sys_if_output_dvi:T \use_none:n
- \cs_new_eq:NN \sys_if_output_dvi:F \use:n
- \cs_new_eq:NN \sys_if_output_dvi:TF \use_ii:nn
- \cs_new_eq:NN \sys_if_output_dvi_p: \c_false_bool
- \cs_new_eq:NN \sys_if_output_pdf:T \use:n
- \cs_new_eq:NN \sys_if_output_pdf:F \use_none:n
- \cs_new_eq:NN \sys_if_output_pdf:TF \use_i:nn
- \cs_new_eq:NN \sys_if_output_pdf_p: \c_true_bool
- \str_const:Nn \c_sys_output_str { pdf }
- }
+\str_const:Nx \c_sys_output_str
{
- \cs_new_eq:NN \sys_if_output_dvi:T \use:n
- \cs_new_eq:NN \sys_if_output_dvi:F \use_none:n
- \cs_new_eq:NN \sys_if_output_dvi:TF \use_i:nn
- \cs_new_eq:NN \sys_if_output_dvi_p: \c_true_bool
- \cs_new_eq:NN \sys_if_output_pdf:T \use_none:n
- \cs_new_eq:NN \sys_if_output_pdf:F \use:n
- \cs_new_eq:NN \sys_if_output_pdf:TF \use_ii:nn
- \cs_new_eq:NN \sys_if_output_pdf_p: \c_false_bool
- \str_const:Nn \c_sys_output_str { dvi }
+ \int_compare:nNnTF
+ { \cs_if_exist_use:NF \pdftex_pdfoutput:D { 0 } } > { 0 }
+ { pdf }
+ { dvi }
}
+\@@_const:nn { sys_if_output_dvi }
+ { \str_if_eq_x_p:nn \c_sys_output_str { dvi } }
+\@@_const:nn { sys_if_output_pdf }
+ { \str_if_eq_x_p:nn \c_sys_output_str { pdf } }
% \end{macrocode}
% \end{variable}
% \end{macro}