From 916b6828e77bd92bd88d57bad094c4520f0ad65c Mon Sep 17 00:00:00 2001 From: Norbert Preining Date: Wed, 30 Jun 2021 03:03:03 +0000 Subject: CTAN sync 202106300303 --- macros/latex/contrib/tagpdf/tagpdf-space.dtx | 130 ++++++++++++++++++++------- 1 file changed, 98 insertions(+), 32 deletions(-) (limited to 'macros/latex/contrib/tagpdf/tagpdf-space.dtx') diff --git a/macros/latex/contrib/tagpdf/tagpdf-space.dtx b/macros/latex/contrib/tagpdf/tagpdf-space.dtx index 55021a74d2..9ccee62c6f 100644 --- a/macros/latex/contrib/tagpdf/tagpdf-space.dtx +++ b/macros/latex/contrib/tagpdf/tagpdf-space.dtx @@ -2,7 +2,7 @@ % %% File: tagpdf-space.dtx % -% Copyright (C) 2019 Ulrike Fischer +% Copyright (C) 2019-2021 Ulrike Fischer % % It may be distributed and/or modified under the conditions of the % LaTeX Project Public License (LPPL), either version 1.3c of this @@ -21,25 +21,74 @@ % https://github.com/u-fischer/tagpdf % % for those people who are interested. -% +%<*driver> +\RequirePackage{pdfmanagement-testphase} +\DeclareDocumentMetadata{} +\makeatletter +\declare@file@substitution{doc.sty}{doc-v3beta.sty} +\makeatother +\documentclass{l3doc} +\usepackage{array,booktabs,caption} +\hypersetup{pdfauthor=Ulrike Fischer, + pdftitle=tagpdf-space module (tagpdf)} +\begin{document} + \DocInput{\jobname.dtx} +\end{document} +% % \fi +% \title{^^A +% The \pkg{tagpdf-space} module\\ Code related to real space chars ^^A +% \\ Part of the tagpdf package +% } +% +% \author{^^A +% Ulrike Fischer\thanks +% {^^A +% E-mail: +% \href{mailto:fischer@troubleshooting-tex.de} +% {fischer@troubleshooting-tex.de}^^A +% }^^A +% } % +% \date{Version 0.9, released 2021-06-29} +% \maketitle +% \begin{implementation} % \begin{macrocode} %<@@=tag> -%<*space> -\ProvidesExplPackage {tagpdf-space-code} {2021-06-14} {0.82} +%<*header> +\ProvidesExplPackage {tagpdf-space-code} {2021-06-29} {0.9} {part of tagpdf - code related to real space chars} -% luatex uses an attribute (declared in the driver file) and some luacode in tagpdf.lua -% perhaps I will split the code by engine in the future - +% +% \end{macrocode} +% \section{Code for interword spaces} +% The code is engine/backend dependant. Basically only pdftex and luatex +% support real space chars. Most of the code for luatex which uses attributes +% is in the lua code, here are only the keys. +% +% \begin{macro}{interwordspace,show-spaces} +% \begin{macrocode} +%<*package> \sys_if_engine_pdftex:T { - \pdfglyphtounicode{space}{0020} - \keys_define:nn { @@ / setup } + \sys_if_output_pdf:TF { - interwordspace .choices:nn = { true, on } { \pdfinterwordspaceon }, - interwordspace .choices:nn = { false, off }{ \pdfinterwordspaceon }, - show-spaces .bool_set:N = \l_@@_showspaces_bool + \pdfglyphtounicode{space}{0020} + \keys_define:nn { @@ / setup } + { + interwordspace .choices:nn = { true, on } { \pdfinterwordspaceon }, + interwordspace .choices:nn = { false, off }{ \pdfinterwordspaceon }, + interwordspace .default:n = true, + show-spaces .bool_set:N = \l_@@_showspaces_bool + } + } + { + \keys_define:nn { @@ / setup } + { + interwordspace .choices:nn = { true, on, false, off } + { \msg_warning:nnn {tag}{sys-no-interwordspace}{dvi} }, + interwordspace .default:n = true, + show-spaces .bool_set:N = \l_@@_showspaces_bool + } } } @@ -50,40 +99,57 @@ { interwordspace .choices:nn = { true, on } - { \directlua{ltx.@@.func.markspaceon()} }, + { + \bool_gset_true:N \g_@@_active_space_bool + \lua_now:e{ltx.@@.func.markspaceon()} + }, interwordspace .choices:nn = { false, off } - {\directlua{ltx.@@.func.markspaceoff()} }, + { + \bool_gset_false:N \g_@@_active_space_bool + \lua_now:e{ltx.@@.func.markspaceoff()} + }, + interwordspace .default:n = true, show-spaces .choice:, show-spaces / true .code:n = - {\directlua{ltx.@@.trace.showspaces=true}}, + {\lua_now:e{ltx.@@.trace.showspaces=true}}, show-spaces / false .code:n = - {\directlua{ltx.@@.trace.showspaces=nil}}, + {\lua_now:e{ltx.@@.trace.showspaces=nil}}, show-spaces .default:n = true } - - \cs_new_protected:Nn \@@_fakespace: - { - \group_begin: - \setattribute\g_@@_interwordspace_attr{1} - \setattribute\g_@@_interwordfont_attr - { - \directlua{tex.print(\the\catcodetable@latex, font.current())} - } - \skip_horizontal:n{\c_zero_skip} - \group_end: - } } \sys_if_engine_xetex:T { \keys_define:nn { @@ / setup } { - interwordspace .choices:nn = { true, on } { \msg_warning:nnn {tag}{sys-no-interwordspace}{xetex} }, - interwordspace .choices:nn = { false, off }{ \msg_warning:nnn {tag}{sys-no-interwordspace}{xetex} }, + interwordspace .choices:nn = { true, on } + { \msg_warning:nnn {tag}{sys-no-interwordspace}{xetex} }, + interwordspace .choices:nn = { false, off } + { \msg_warning:nnn {tag}{sys-no-interwordspace}{xetex} }, + interwordspace .default:n = true, show-spaces .bool_set:N = \l_@@_showspaces_bool } } - -% % \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@@_fakespace:} +% For luatex we need a command for the fake space as equivalent of the pdftex +% primitive. +% \begin{macrocode} +\sys_if_engine_luatex:T + { + \cs_new_protected:Nn \@@_fakespace: + { + \group_begin: + \lua_now:e{ltx.@@.func.fakespace()} + \skip_horizontal:n{\c_zero_skip} + \group_end: + } + } +% +% \end{macrocode} +% \end{macro} +% \end{implementation} +% \PrintIndex -- cgit v1.2.3