diff options
Diffstat (limited to 'Master/texmf-dist/tex/platex/pxjahyper')
4 files changed, 375 insertions, 129 deletions
diff --git a/Master/texmf-dist/tex/platex/pxjahyper/pxjahyper-ajm.def b/Master/texmf-dist/tex/platex/pxjahyper/pxjahyper-ajm.def index 331dcd32f22..803a78c2cd5 100644 --- a/Master/texmf-dist/tex/platex/pxjahyper/pxjahyper-ajm.def +++ b/Master/texmf-dist/tex/platex/pxjahyper/pxjahyper-ajm.def @@ -1,7 +1,7 @@ %% %% This is file 'pxjahyper-ajm.def'. %% -%% Copyright (c) 2012-2023 Takayuki YATO (aka. "ZR") +%% Copyright (c) 2012-2024 Takayuki YATO (aka. "ZR") %% GitHub: https://github.com/zr-tex8r %% Twitter: @zr_tex8r %% @@ -11,7 +11,7 @@ %% package declaration \NeedsTeXFormat{pLaTeX2e} -\ProvidesFile{pxjahyper-ajm.def}[2023/03/01 v1.3] +\ProvidesFile{pxjahyper-ajm.def}[2024/08/25 v1.5] %% avoid multiple loading \csname pxjahyperajmLoaded\endcsname @@ -104,6 +104,12 @@ \fi } +%% \pxhy@cc@anchor@string{<macro-name>}{<number>} +% Expands to "anchor-string form" of a CC macro. +\def\pxhy@cc@anchor@string#1#2{% + \pxjahyperBadCharacter{aj#1+\number#2}% +} + %--------------------------------------- \pdfstringdef hook \pdfstringdefDisableCommands{% @@ -209,6 +215,45 @@ \let\pxhy@two@digits\relax \let\pxhy@knumeral\relax +%--------------------------------------- for counter commands + +%% \pxhy@cc@macro@name@list +\let\pxhy@cc@macro@name@list\@empty + +%% \pxhy@DeclareCCMacro{<macro-name>}...{<body>} +\def\pxhy@DeclareCCMacro#1{% + \eappto\pxhy@cc@macro@name@list{`\do{#1}}% + \pxhy@DeclareMacro{#1}% +} + +%% \pxhy@DeclareCCMacroVar{<macro-name>}...{<body-n>}{<body-v>} +% Variant of \pxhy@DeclareMacro, where the *-variant of the macro +% is declared. The parameter '...' will be shared with both forms. +\def\pxhy@DeclareCCMacroVar#1{% + \eappto\pxhy@cc@macro@name@list{`\do{#1@N}`\do{#1@V}}% + \pxhy@DeclareMacroVar{#1}% +} + +%% \pxhy@finish@declare@cc@macros +% Must be invoked after all CC macros are defined. +\def\pxhy@finish@declare@cc@macros{% + \let\do\pxhy@amend@cc@macro + \pxhy@cc@macro@name@list + \let\pxhy@cc@macro@name@list\@empty +} + +%% \pxhy@amend@cc@macro{<macro-name>} +\def\pxhy@amend@cc@macro#1{% + \expandafter\pxhy@amend@cc@macro@a + \csname\pxhy@#1\expandafter\endcsname + \csname\pxhy@#1@A\expandafter\endcsname + \csname\pxhy@#1@D\endcsname{#1}% +} +\def\pxhy@amend@cc@macro@a#1#2#3#4{% + \gdef#2{\pxhy@cc@anchor@string{#4}}% + \global\let#3#1% + \gdef#1{\pxhy@if@in@anchor#2#3}% +} %--------------------------------------- the redefinitions % A text command invoked in PDF-sttings must be "string-OK". @@ -242,7 +287,7 @@ % used as fallback (e.g. \ajKuroMaru{21}→“㉑)”. %%<!> \ajMaru[*]{<number>} -\pxhy@DeclareMacroVar{Maru}#1{%N +\pxhy@DeclareCCMacroVar{Maru}#1{%N \pxhy@fallback{0}{51}{100}{% \pxhy@rshift{0/8224,1/7554,21/8070,22/8080,32/10212,101}% }{\pxhy@numeral{#1}}% @@ -252,7 +297,7 @@ }{`\ajMaru{#1}}% } %%<!> \ajKuroMaru[*]{<number>} -\pxhy@DeclareMacroVar{KuroMaru}#1{%N +\pxhy@DeclareCCMacroVar{KuroMaru}#1{%N \pxhy@fallback{0}{21}{100}{% \pxhy@rshift{0/10503,1/8285,10/10504,101}% }{`\ajMaru{#1}}% @@ -262,7 +307,7 @@ }{`\ajKuroMaru{#1}}% } %%<!> \ajKaku[*]{<number>} -\pxhy@DeclareMacroVar{Kaku}#1{%N +\pxhy@DeclareCCMacroVar{Kaku}#1{%N \pxhy@fallback{0}{0}{100}{% \pxhy@twirange{10764}{10774}% }{`\ajMaru{#1}}% @@ -272,7 +317,7 @@ }{`\ajMaru{#1}}% } %%<!> \ajKuroKaku[*]{<number>} -\pxhy@DeclareMacroVar{KuroKaku}#1{%N +\pxhy@DeclareCCMacroVar{KuroKaku}#1{%N \pxhy@fallback{0}{0}{100}{% \pxhy@twirange{11037}{11047}% }{`\ajMaru{#1}}% @@ -282,7 +327,7 @@ }{`\ajMaru{#1}}% } %%<!> \ajMaruKaku[*]{<number>} -\pxhy@DeclareMacroVar{MaruKaku}#1{%N +\pxhy@DeclareCCMacroVar{MaruKaku}#1{%N \pxhy@fallback{0}{0}{100}{% \pxhy@twirange{11307}{11317}% }{`\ajMaru{#1}}% @@ -293,7 +338,7 @@ }{`\ajMaru{#1}}% } %%<!> \ajKuroMaruKaku[*]{<number>} -\pxhy@DeclareMacroVar{KuroMaruKaku}#1{%N +\pxhy@DeclareCCMacroVar{KuroMaruKaku}#1{%N \pxhy@fallback{0}{0}{100}{% \pxhy@twirange{11576}{11586}% }{`\ajMaru{#1}}% @@ -303,7 +348,7 @@ }{`\ajMaru{#1}}% } %%<!> \ajKakko[*]{<number>} -\pxhy@DeclareMacroVar{Kakko}#1{%N +\pxhy@DeclareCCMacroVar{Kakko}#1{%N \pxhy@fallback{0}{21}{100}{% \pxhy@rshift{0/8227,1/8070,21/9873,101}% }{(\pxhy@numeral{#1})}% @@ -313,7 +358,7 @@ }{`\ajKakko{#1}}% } %%<!> \ajRoman[*]{<number>} -\pxhy@DeclareMacroVar{Roman}#1{%N +\pxhy@DeclareCCMacroVar{Roman}#1{%N \pxhy@fallback{1}{13}{15}{% \pxhy@rshift{1/7574,11/8214,13/8282,16}% }{`\@Roman{#1}}% @@ -323,132 +368,132 @@ }{`\ifnum#1=\#{4}IIII`\else`\ajRoman{#1}`\fi}% } %%<!> \ajroman{<number>} -\pxhy@DeclareMacro{roman}#1{% +\pxhy@DeclareCCMacro{roman}#1{% \pxhy@fallback{1}{13}{15}{% \pxhy@rshift{1/8091,11/8287,16}% }{`\@roman{#1}}% } %%<!> \ajPeriod{<number>} -\pxhy@DeclareMacro{Period}#1{% +\pxhy@DeclareCCMacro{Period}#1{% \pxhy@fallback{0}{1}{11}{% 0.% }{\pxhy@rshift{0/8061,10/20577,12}}% } %%<!> \ajKakkoYobi{<number>} -\pxhy@DeclareMacro{KakkoYobi}#1{\pxhy@rshift{1/8196,10}} +\pxhy@DeclareCCMacro{KakkoYobi}#1{\pxhy@rshift{1/8196,10}} %%<!> \ajKakkoroman{<number>} -\pxhy@DeclareMacro{Kakkoroman}#1{% +\pxhy@DeclareCCMacro{Kakkoroman}#1{% \pxhy@fallback{1}{1}{15}{% \pxhy@rshift{1/9973,16}% }{(`\ajroman{#1})}% } %%<!> \ajKakkoRoman{<number>} -\pxhy@DeclareMacro{KakkoRoman}#1{% +\pxhy@DeclareCCMacro{KakkoRoman}#1{% \pxhy@fallback{1}{1}{15}{% \pxhy@rshift{1/9988,16}% }{(`\ajRoman{#1})}% } %%<!> \ajKakkoalph{<number>} -\pxhy@DeclareMacro{Kakkoalph}#1{\pxhy@rshift{1/8111,27}} +\pxhy@DeclareCCMacro{Kakkoalph}#1{\pxhy@rshift{1/8111,27}} %%<!> \ajKakkoAlph{<number>} -\pxhy@DeclareMacro{KakkoAlph}#1{\pxhy@rshift{1/10003,27}} +\pxhy@DeclareCCMacro{KakkoAlph}#1{\pxhy@rshift{1/10003,27}} %%<!> \ajKakkoHira{<number>} -\pxhy@DeclareMacro{KakkoHira}#1{% +\pxhy@DeclareCCMacro{KakkoHira}#1{% \pxhy@fallback{1}{1}{48}{% \pxhy@rshift{1/10029,49}% }{(\pxhy@rshift{1/10029,49})}% with parens } %%<!> \ajKakkoKata{<number>} -\pxhy@DeclareMacro{KakkoKata}#1{% +\pxhy@DeclareCCMacro{KakkoKata}#1{% \pxhy@fallback{1}{1}{48}{% \pxhy@rshift{1/10077,49}% }{(\pxhy@rshift{1/10077,49})}% with parens } %%<!> \ajKakkoKansuji{<number>} -\pxhy@DeclareMacro{KakkoKansuji}#1{% +\pxhy@DeclareCCMacro{KakkoKansuji}#1{% \pxhy@fallback{1}{11}{20}{% \pxhy@rshift{1/10125,21}% }{(\pxhy@knumeral{#1})}% } %%<!> \ajMaruKansuji{<number>} -\pxhy@DeclareMacro{MaruKansuji}#1{\pxhy@rshift{1/10460,11}} +\pxhy@DeclareCCMacro{MaruKansuji}#1{\pxhy@rshift{1/10460,11}} %%<!> \ajMarualph{<number>} -\pxhy@DeclareMacro{Marualph}#1{\pxhy@rshift{1/10312,27}} +\pxhy@DeclareCCMacro{Marualph}#1{\pxhy@rshift{1/10312,27}} %%<!> \ajMaruAlph{<number>} -\pxhy@DeclareMacro{MaruAlph}#1{\pxhy@rshift{1/10338,27}} +\pxhy@DeclareCCMacro{MaruAlph}#1{\pxhy@rshift{1/10338,27}} %%<!> \ajMaruHira{<number>} -\pxhy@DeclareMacro{MaruHira}#1{\pxhy@rshift{1/10364,49}} +\pxhy@DeclareCCMacro{MaruHira}#1{\pxhy@rshift{1/10364,49}} %%<!> \ajMaruKata{<number>} -\pxhy@DeclareMacro{MaruKata}#1{\pxhy@rshift{1/10412,49}} +\pxhy@DeclareCCMacro{MaruKata}#1{\pxhy@rshift{1/10412,49}} %%<!> \ajMaruYobi{<number>} -\pxhy@DeclareMacro{MaruYobi}#1{% +\pxhy@DeclareCCMacro{MaruYobi}#1{% \pxhy@rshift{1/10470,8/10484,9/10478,10}% } %%<!> \ajKuroMarualph{<number>} : Fallback. -\pxhy@DeclareMacro{KuroMarualph}#1{`\ajMarualph{#1}} +\pxhy@DeclareCCMacro{KuroMarualph}#1{`\ajMarualph{#1}} %%<!> \ajKuroMaruAlph{<number>} -\pxhy@DeclareMacro{KuroMaruAlph}#1{\pxhy@rshift{1/10630,27}} +\pxhy@DeclareCCMacro{KuroMaruAlph}#1{\pxhy@rshift{1/10630,27}} %%<!> \ajKuroMaruHira{<number>} : Fallback. -\pxhy@DeclareMacro{KuroMaruHira}#1{`\ajMaruHira{#1}} +\pxhy@DeclareCCMacro{KuroMaruHira}#1{`\ajMaruHira{#1}} %%<!> \ajKuroMaruKata{<number>} : Fallback. -\pxhy@DeclareMacro{KuroMaruKata}#1{`\ajMaruKata{#1}} +\pxhy@DeclareCCMacro{KuroMaruKata}#1{`\ajMaruKata{#1}} %%<!> \ajKuroMaruYobi{<number>} : Fallback. % fallback to \ajKakuYobi, which is simpler. -\pxhy@DeclareMacro{KuroMaruYobi}#1{`\ajKakuYobi{#1}} +\pxhy@DeclareCCMacro{KuroMaruYobi}#1{`\ajKakuYobi{#1}} %%<!> \ajKakualph{<number>} : Fallback. -\pxhy@DeclareMacro{Kakualph}#1{`\ajMarualph{#1}} +\pxhy@DeclareCCMacro{Kakualph}#1{`\ajMarualph{#1}} %%<!> \ajKakuAlph{<number>} -\pxhy@DeclareMacro{KakuAlph}#1{\pxhy@rshift{1/10900,27}} +\pxhy@DeclareCCMacro{KakuAlph}#1{\pxhy@rshift{1/10900,27}} %%<!> \ajKakuHira{<number>} : Fallback. -\pxhy@DeclareMacro{KakuHira}#1{`\ajMaruHira{#1}} +\pxhy@DeclareCCMacro{KakuHira}#1{`\ajMaruHira{#1}} %%<!> \ajKakuKata{<number>} : Fallback. -\pxhy@DeclareMacro{KakuKata}#1{`\ajMaruKata{#1}} +\pxhy@DeclareCCMacro{KakuKata}#1{`\ajMaruKata{#1}} %%<!> \ajKakuYobi{<number>} -\pxhy@DeclareMacro{KakuYobi}#1{\pxhy@rshift{1/11022,8}} +\pxhy@DeclareCCMacro{KakuYobi}#1{\pxhy@rshift{1/11022,8}} %%<!> \ajKuroKakualph{<number>} : Fallback. -\pxhy@DeclareMacro{KuroKakualph}#1{`\ajMarualph{#1}} +\pxhy@DeclareCCMacro{KuroKakualph}#1{`\ajMarualph{#1}} %%<!> \ajKuroKakuAlph{<number>} -\pxhy@DeclareMacro{KuroKakuAlph}#1{\pxhy@rshift{1/11173,27}} +\pxhy@DeclareCCMacro{KuroKakuAlph}#1{\pxhy@rshift{1/11173,27}} %%<!> \ajKuroKakuHira{<number>} : Fallback. -\pxhy@DeclareMacro{KuroKakuHira}#1{`\ajMaruHira{#1}} +\pxhy@DeclareCCMacro{KuroKakuHira}#1{`\ajMaruHira{#1}} %%<!> \ajKuroKakuKata{<number>} : Fallback. -\pxhy@DeclareMacro{KuroKakuKata}#1{`\ajMaruKata{#1}} +\pxhy@DeclareCCMacro{KuroKakuKata}#1{`\ajMaruKata{#1}} %%<!> \ajKuroKakuYobi{<number>} : Fallback. -\pxhy@DeclareMacro{KuroKakuYobi}#1{`\ajKakuYobi{#1}} +\pxhy@DeclareCCMacro{KuroKakuYobi}#1{`\ajKakuYobi{#1}} %%<!> \ajMaruKakualph{<number>} : Fallback. -\pxhy@DeclareMacro{MaruKakualph}#1{`\ajMarualph{#1}} +\pxhy@DeclareCCMacro{MaruKakualph}#1{`\ajMarualph{#1}} %%<!> \ajMaruKakuAlph{<number>} -\pxhy@DeclareMacro{MaruKakuAlph}#1{\pxhy@rshift{1/11443,27}} +\pxhy@DeclareCCMacro{MaruKakuAlph}#1{\pxhy@rshift{1/11443,27}} %%<!> \ajMaruKakuHira{<number>} : Fallback. -\pxhy@DeclareMacro{MaruKakuHira}#1{`\ajMaruHira{#1}} +\pxhy@DeclareCCMacro{MaruKakuHira}#1{`\ajMaruHira{#1}} %%<!> \ajMaruKakuKata{<number>} : Fallback. -\pxhy@DeclareMacro{MaruKakuKata}#1{`\ajMaruKata{#1}} +\pxhy@DeclareCCMacro{MaruKakuKata}#1{`\ajMaruKata{#1}} %%<!> \ajMaruKakuYobi{<number>} : Fallback. -\pxhy@DeclareMacro{MaruKakuYobi}#1{`\ajKakuYobi{#1}} +\pxhy@DeclareCCMacro{MaruKakuYobi}#1{`\ajKakuYobi{#1}} %%<!> \ajKuroMaruKakualph{<number>} : Fallback. -\pxhy@DeclareMacro{KuroMaruKakualph}#1{`\ajMarualph{#1}} +\pxhy@DeclareCCMacro{KuroMaruKakualph}#1{`\ajMarualph{#1}} %%<!> \ajKuroMaruKakuAlph{<number>} -\pxhy@DeclareMacro{KuroMaruKakuAlph}#1{\pxhy@rshift{1/11712,27}} +\pxhy@DeclareCCMacro{KuroMaruKakuAlph}#1{\pxhy@rshift{1/11712,27}} %%<!> \ajKuroMaruKakuHira{<number>} : Fallback. -\pxhy@DeclareMacro{KuroMaruKakuHira}#1{`\ajMaruHira{#1}} +\pxhy@DeclareCCMacro{KuroMaruKakuHira}#1{`\ajMaruHira{#1}} %%<!> \ajKuroMaruKakuKata{<number>} : Fallback. -\pxhy@DeclareMacro{KuroMaruKakuKata}#1{`\ajMaruKata{#1}} +\pxhy@DeclareCCMacro{KuroMaruKakuKata}#1{`\ajMaruKata{#1}} %%<!> \ajKuroMaruKakuYobi{<number>} : Fallback. -\pxhy@DeclareMacro{KuroMaruKakuYobi}#1{`\ajKakuYobi{#1}} +\pxhy@DeclareCCMacro{KuroMaruKakuYobi}#1{`\ajKakuYobi{#1}} %%<!> \ajNijuMaru{<number>} -\pxhy@DeclareMacro{NijuMaru}#1{\pxhy@rshift{1/16222,11}} +\pxhy@DeclareCCMacro{NijuMaru}#1{\pxhy@rshift{1/16222,11}} %%<!> \ajRecycle{<number>} -\pxhy@DeclareMacro{Recycle}#1{\pxhy@rshift{0/16314,12}} +\pxhy@DeclareCCMacro{Recycle}#1{\pxhy@rshift{0/16314,12}} %%<!> \ajHasenKakuAlph{<number>} -\pxhy@DeclareMacro{HasenKakuAlph}#1{\pxhy@rshift{1/20496,7}} +\pxhy@DeclareCCMacro{HasenKakuAlph}#1{\pxhy@rshift{1/20496,7}} %%<!> \ajCross{<number>} -\pxhy@DeclareMacro{Cross}#1{% +\pxhy@DeclareCCMacro{Cross}#1{% \pxhy@fallback{0}{0}{9}{% \pxhy@rshift{0/20523,10}% }{\pxhy@numeral{#1}\UTF{00D7}}% } %%<!> \ajSlanted[*]{<number>} -\pxhy@DeclareMacroVar{Slanted}#1{%N +\pxhy@DeclareCCMacroVar{Slanted}#1{%N \pxhy@fallback{0}{0}{59}{% \pxhy@rshift{0/9460,10/20589,60}% }{\pxhy@numeral{#1}}% @@ -459,7 +504,7 @@ } %%<!> \ajApostrophe{<number>} %%<!> \ajYear{<number>} (alias) -\pxhy@DeclareMacro{Apostrophe}#1{% +\pxhy@DeclareCCMacro{Apostrophe}#1{% \pxhy@fallback{0}{0}{99}{% \pxhy@rshift{0/20649,100}% }{\UTF{2019}\pxhy@two@digits{#1}}% @@ -467,13 +512,15 @@ \pxhy@DeclareAlias{Year}{Apostrophe} %%<!> \ajSquareMark[*]{<number>} % Note: +-variant is unsupported. -\pxhy@DeclareMacroVar{SquareMark}#1{%N +\pxhy@DeclareCCMacroVar{SquareMark}#1{%N \pxhy@rshift{1/12229,13}% }{%V \pxhy@rshift{1/12241,10}% } %%<!> \ajHishi{<number>} -\pxhy@DeclareMacro{Hishi}#1{\pxhy@rshift{1/12256,5}} +\pxhy@DeclareCCMacro{Hishi}#1{\pxhy@rshift{1/12256,5}} + +\pxhy@finish@declare@cc@macros %----------------------- diff --git a/Master/texmf-dist/tex/platex/pxjahyper/pxjahyper-enc.sty b/Master/texmf-dist/tex/platex/pxjahyper/pxjahyper-enc.sty index 2d730c51511..e64fa701cb4 100644 --- a/Master/texmf-dist/tex/platex/pxjahyper/pxjahyper-enc.sty +++ b/Master/texmf-dist/tex/platex/pxjahyper/pxjahyper-enc.sty @@ -1,7 +1,7 @@ %% %% This is file 'pxjahyper-enc.sty'. %% -%% Copyright (c) 2012-2023 Takayuki YATO (aka. "ZR") +%% Copyright (c) 2012-2024 Takayuki YATO (aka. "ZR") %% GitHub: https://github.com/zr-tex8r %% Twitter: @zr_tex8r %% @@ -10,7 +10,7 @@ %% package declaration \NeedsTeXFormat{pLaTeX2e} -\ProvidesPackage{pxjahyper-enc}[2023/03/01 v1.3] +\ProvidesPackage{pxjahyper-enc}[2024/08/25 v1.5] \def\pxhe@pkgname{pxjahyper-enc} \providecommand{\bxDebug}[1]{} diff --git a/Master/texmf-dist/tex/platex/pxjahyper/pxjahyper-uni.def b/Master/texmf-dist/tex/platex/pxjahyper/pxjahyper-uni.def index 4ce0174a9e2..88ea2241c0c 100644 --- a/Master/texmf-dist/tex/platex/pxjahyper/pxjahyper-uni.def +++ b/Master/texmf-dist/tex/platex/pxjahyper/pxjahyper-uni.def @@ -1,7 +1,7 @@ %% %% This is file 'pxjahyper-uni.def'. %% -%% Copyright (c) 2012-2023 Takayuki YATO (aka. "ZR") +%% Copyright (c) 2012-2024 Takayuki YATO (aka. "ZR") %% GitHub: https://github.com/zr-tex8r %% Twitter: @zr_tex8r %% @@ -10,7 +10,7 @@ %% package declaration \NeedsTeXFormat{pLaTeX2e} -\ProvidesFile{pxjahyper-uni.def}[2023/03/01 v1.3] +\ProvidesFile{pxjahyper-uni.def}[2024/08/25 v1.5] \providecommand{\bxDebug}[1]{} %--------------------------------------- environment check diff --git a/Master/texmf-dist/tex/platex/pxjahyper/pxjahyper.sty b/Master/texmf-dist/tex/platex/pxjahyper/pxjahyper.sty index 9c3652b29f1..8be4a409e80 100644 --- a/Master/texmf-dist/tex/platex/pxjahyper/pxjahyper.sty +++ b/Master/texmf-dist/tex/platex/pxjahyper/pxjahyper.sty @@ -1,7 +1,7 @@ %% %% This is file 'pxjahyper.sty'. %% -%% Copyright (c) 2012-2023 Takayuki YATO (aka. "ZR") +%% Copyright (c) 2012-2024 Takayuki YATO (aka. "ZR") %% GitHub: https://github.com/zr-tex8r %% Twitter: @zr_tex8r %% @@ -10,7 +10,7 @@ %% package declaration \NeedsTeXFormat{pLaTeX2e} -\ProvidesPackage{pxjahyper}[2023/03/01 v1.3] +\ProvidesPackage{pxjahyper}[2024/08/25 v1.5] \def\pxhy@pkgname{pxjahyper} \providecommand{\bxDebug}[1]{} @@ -51,16 +51,21 @@ \newif\ifpxhy@otfmacros \newif\ifpxhy@Uchar@avail \newif\ifpxhy@ucs@avail +\newif\ifpxhy@toucs@avail \let\pxhy@jsclasses@name\relax \newif\ifpxhy@jlreq@cls \newif\ifpxhy@fallback@geta +\newif\ifpxhy@fallback@warn +\newif\ifpxhy@fallback@cidm \newif\ifpxhy@extjis@map \newif\ifpxhy@extjis@use \newif\ifpxhy@ajhankaku@chars %%<*> \pxjahypersetup{<key>=<value>,...} -\newcommand*\pxjahypersetup{% - \setkeys{\pxhy@pkgname}% +\@ifdefinable\pxjahypersetup{% + \DeclareRobustCommand*\pxjahypersetup{% + \setkeys{\pxhy@pkgname}% + }% } %% \pxhy@handle@key{<key>}{<value>}{<name>} \def\pxhy@handle@key#1#2#3{% @@ -91,7 +96,7 @@ \DeclareOption{resetdvidriver}{% \let\pxhy@driver\@undefined } -\DeclareOption{autodvidriver}{% +\DeclareOption{autodvidriver}{% DEPRECATED \let\pxhy@driver\@undefined } \DeclareOption{auto}{% DEPRECATED @@ -171,14 +176,15 @@ \DeclareOption{nootfmacros}{% \pxhy@otfmacrosfalse } -\DeclareOption{fallback-geta}{% +\DeclareOption{fallback-geta}{% DEPRECATED \pxjahypersetup{fallback=geta}% } -\DeclareOption{fallback-delete}{% +\DeclareOption{fallback-delete}{% DEPRECATED \pxjahypersetup{fallback=delete}% } -\DeclareOption{force-unicode}{% - \let\pxhy@force@unicode=t +\DeclareOption{force-unicode}{% DEPRECATED + \PackageWarningNoLine\pxhy@pkgname + {'force-unicode' is DEPRECATED and ignored}% } \DeclareOption{disable-Ux}{% for debug \let\pxhy@disable@Ux=t @@ -194,6 +200,16 @@ } \let\pxhy@kv@fallback@@geta\pxhy@fallback@getatrue \let\pxhy@kv@fallback@@delete\pxhy@fallback@getafalse +% 'fallback-warn=<bool>' +\pxhy@fallback@warntrue +\define@key{\pxhy@pkgname}{fallback-warn}[true]{% + \pxhy@handle@key{fallback-warn}{#1}{fallback@warn#1}% +} +% 'fallback-cidm=<bool>' +\pxhy@fallback@cidmtrue +\define@key{\pxhy@pkgname}{fallback-cidm}[true]{% + \pxhy@handle@key{fallback-cidm}{#1}{fallback@cidm#1}% +} % 'extjis=<bool>' \pxhy@extjis@usetrue \define@key{\pxhy@pkgname}{extjis}[true]{% @@ -289,6 +305,8 @@ \pxhy@check\Uchar{\pxhy@Uchar@availtrue} %% pxhy@ucs@avail switch \pxhy@check\ucs{\pxhy@ucs@availtrue} +%% pxhy@toucs@avail switch +\pxhy@check\toucs{\pxhy@toucs@availtrue} %% pxhy@extjis@map switch % Note that 'tounicode' is necessary. @@ -311,6 +329,8 @@ \@ifl@t@r\fmtversion{2021/11/15}{% \chardef\pxhy@hook@system=2 }{\@ifl@t@r\fmtversion{2020/02/02}{% + % NB. We need to support this intermediate version, because + % the hook order matters here. \chardef\pxhy@hook@system=1 }{}} @@ -328,16 +348,25 @@ \pxhy@uniescapetrue \fi\fi -% hyperref 'unicode' is allowed only on upLaTeX. -\ifnum0\ifpxhy@hy@unicode\ifpxhy@uptex\else - \ifx t\pxhy@force@unicode\else1\fi\fi\fi>\z@ -% \PackageWarningNoLine\pxhy@pkgname -% {The support for the hyperref 'unicode' mode\MessageBreak -% on the pTeX engine is currently experimental}% -\fi +%% \pxhy@if@really@unicode{<true>}{<false>} +% Tests if hyperref unicode-mode is *currently* in effect. +% (Assuming unicode-mode is enabled by the settings.) +\let\pxhy@if@really@unicode\@undefined + +% hyperref 'unicode' mode \ifpxhy@hy@unicode \pxhy@uniescapefalse %\pxhy@otfutftrue + % placed at the top of the hook + \AtEndOfPackage{\ltx@GlobalPrependToMacro\pdfstringdefPreHook{% + \ifx\ifpdfstringunicode\@undefined + \ifHy@unicode \let\pxhy@if@really@unicode\@firstoftwo + \else \let\pxhy@if@really@unicode\@secondoftwo + \fi + \else % '\ifpdfstringunicode' is provided by hyperref + \let\pxhy@if@really@unicode\ifpdfstringunicode + \fi + }} \fi % otfcid requrires otfutf. \ifpxhy@otfutf \else \ifpxhy@otfcid @@ -429,8 +458,7 @@ pxhy@fallback@geta = \ifpxhy@fallback@geta true\else false\fi^^J% \fi %% \pxhy@geta : GETA MARK -\pxhy@get@jchar{\jis"222E} -\let\pxhy@geta\pxhy@jchar +\pxhy@let@jchar@jc\pxhy@geta{222E} %% \pxhy@print@geta \def\pxhy@print@geta{% @@ -472,12 +500,42 @@ pxhy@fallback@geta = \ifpxhy@fallback@geta true\else false\fi^^J% #1\expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi } +%% \pxhy@ifempty{<text>}{<true>}{<false>} +\def\pxhy@ifempty#1{% + \pxhy@cond\ifx\pxhy@mt#1\pxhy@mt\fi +} + +%% \pxhy@E\newrobustcmd*\CS... +% Does \newrobustcmd* if etoolbox is available; +% does \DeclareRobustCommand* otherwise. +\def\pxhy@E\newrobustcmd*#1{% + \def\pxhy@next{\providecommand*\pxhy@next}% + \@ifdefinable#1{\def\pxhy@next{\DeclareRobustCommand*#1}}% + \pxhy@next +} + +%% \pxhy@read@num{<text>}\CScont +\def\pxhy@read@num#1{% + \expandafter\pxhy@read@num@a\number#1\pxhy@mk#1\pxhy@mk#1\pxhy@mk +} +\def\pxhy@read@num@a#1#2\pxhy@mk{% + \expandafter\pxhy@read@num@b\romannumeral\if-#1\else-\fi +} +\def\pxhy@read@num@b#1\pxhy@mk#2\pxhy@mk{% + \expandafter\pxhy@read@num@c\number\pxhy@ifempty{#1}{#2}{}\pxhy@mk +} +\def\pxhy@read@num@c#1\pxhy@mk#2{% + \pxhy@cond\ifnum#1<\z@\fi{#2{0}}{#2{#1}}% +} + %--------------------------------------- Helpers (e-TeX) \ifpxhy@etex %% packages \ifpxhy@etoolbox \RequirePackage{etoolbox}[2011/01/03]%v2.1 + \robustify\pxjahypersetup + \let\pxhy@E\relax \fi %% \pxhy@if@star{<varient>}{<normal>} @@ -709,7 +767,7 @@ pxhy@fallback@geta = \ifpxhy@fallback@geta true\else false\fi^^J% \pxhy@cond \ifpxhy@utfXVI \fi{% \pxhy@uchex@big#1"000000\pxhy@end }{%else - \pxhy@uchex@out{#1}% + \pxhy@uchex@out@pre{#1}% }% }{%else \pxhy@uchex@small#1"0000\pxhy@end @@ -719,7 +777,7 @@ pxhy@fallback@geta = \ifpxhy@fallback@geta true\else false\fi^^J% \pxhy@uchex@small@a#1#2#3#4#5\pxhy@end } \def\pxhy@uchex@small@a#1"#2\pxhy@end{% - \pxhy@uchex@out{#2#1}% + \pxhy@uchex@out@pre{#2#1}% } \def\pxhy@uchex@big#1#2#3#4#5#6#7#8\pxhy@end{% \pxhy@uchex@big@a#1#2#3#4#5#6#7\pxhy@end @@ -741,18 +799,93 @@ pxhy@fallback@geta = \ifpxhy@fallback@geta true\else false\fi^^J% \csname pxhy@qh/3#6\endcsname } \def\pxhy@uchex@big@d#1#2#3#4#5\pxhy@end{% - \pxhy@uchex@out{D#1#2#3}% - \pxhy@uchex@out{D#4#5}% + \pxhy@uchex@out@pre{D#1#2#3}% + \pxhy@uchex@out@pre{D#4#5}% } \edef\pxhy@uchex@error{% - \noexpand\pxhy@uchex@out{\pxhy@uc@REPL}% + \noexpand\pxhy@uchex@out@pre{\pxhy@uc@REPL}% +} +\def\pxhy@uchex@out@pre#1{% + \pxhy@if@in@anchor{% then Unicode does not work + \pxjahyperBadCharacter{U+#1}% + }{%else + \pxhy@uchex@out{#1}% + }% +} + +%--------------------------------------- Unavailable characters + +%%<+> \pxjahyperBadCharacter{<label>} +\newcommand*\pxjahyperBadCharacter[1]{% + \pxhy@if@in@anchor{% + #1;% label is output as-is + }{%else + \ifpxhy@fallback@warn + % issue a warning + \pxhy@bad@character@a{#1}% + \fi + \pxhy@print@geta + }% +} +\def\pxhy@bad@character@a#1{% + % Here the control sequence with name <label> is supposed to be + % undefined. This token is intentionally left in the stream. + % Then this unknown token will be detected by the hyperref process + % and cause it to issue an warning + % "Token not allowed in a PDF string (... removing `\<label>'". + \expandafter\ifx\csname<#1>\endcsname\relax + \csname<#1>\endcsname + % If the token should be defined, it is replaced for safety. + \else \csname pxhy@<#1>\endcsname + \fi +} + +%% \pxhy@fallback@num{<prefix>}<fast>{<number>} +% Makes a bad character with label '<prefix><number>', after parsing +% the given number input. +\def\pxhy@fallback@num#1#2#3{% + \if \ifpxhy@fallback@warn T\else \pxhy@if@in@anchor{T}{F}\fi T% + \if t#2% + \expandafter\pxhy@fallback@num@a\expandafter{\number#3}{#1}% + \else + \pxhy@read@num{#3}\pxhy@fallback@num@a{#1}% + \fi + \else + \pxjahyperBadCharacter{}% + \fi } +\def\pxhy@fallback@num@a#1#2{% + \pxjahyperBadCharacter{#2#1}% +} + +%--------------------------------------- Stuffs for anchor strings + +% Sometimes \pdfstringdef is invoked to form anchor strings. +% There "unicode-mode" of hyperref is temporarily disabled; +% moreover, ToUnicode specials are not applied to such strings. +% Consequently, only ASCII characters can be used there. +% Anchor strings are for identification and not presentation; +% so special fallback for special characters are needed. + +%% \pxhy@if@in@anchor{<true>}{<false>} +% Tests if we are inside anchors. +\let\pxhy@if@in@anchor\@secondoftwo +\ifx\Hy@PageAnchorSlide\@undefined\else + % We resort to some heuristics.... + \g@addto@macro\Hy@PageAnchorSlide{% + \let\pxhy@if@in@anchor\@firstoftwo + } +\fi %--------------------------------------- Hooks to pdfstringdef %% variables \let\pxhy@str\relax +%%<+> \Ux{<hex>} +% (This is a dummy declaration.) +\ifodd\z@ \providecommand*\Ux[1]{} \fi + %% \pxhy@Ux % The definition of \Ux in PDF strings. \let\pxhy@Ux\@undefined @@ -760,16 +893,22 @@ pxhy@fallback@geta = \ifpxhy@fallback@geta true\else false\fi^^J% \ifpxhy@hy@unicode %<*unicode> %% \pxhy@Ux + % In hyperref "unicode" mode, \unichar is used. \def\pxhy@Ux{\pxhy@uchex}% \pxhy@utfXVIfalse \def\pxhy@uchex@out#1{% - \unichar{"#1}% + \pxhy@if@really@unicode{% + \unichar{"#1}% + }{%else % something wrong! + \pxjahyperBadCharacter{U+#1}% + }% } \else\ifpxhy@Uchar@avail %<*Uchar> \ifpxhy@uptex %% \pxhy@Ux + % On upTeX with \Uchar, \Uchar is used. \def\pxhy@Ux{\pxhy@uchex} \pxhy@utfXVIfalse \def\pxhy@uchex@out#1{\Uchar"#1 } @@ -777,29 +916,31 @@ pxhy@fallback@geta = \ifpxhy@fallback@geta true\else false\fi^^J% \else\ifpxhy@ucs@avail %% \pxhy@Ux + % On pTeX with \Uchar and \ucs, we convert the Unicode value to + % an internal-code value (using \ucs) and apply \Uchar to it. \def\pxhy@Ux{\pxhy@uchex} \pxhy@utfXVIfalse \def\pxhy@uchex@out#1{% \expandafter\pxhy@uchex@out@a\ucs"#1\pxhy@mk{#1}% } \chardef\pxhy@max@asc="7F - \def\pxhy@uchex@out@a#1\pxhy@mk#2{% - \ifnum#1<\z@ - \ifnum"#2>\pxhy@max@asc + \def\pxhy@uchex@out@a#1\pxhy@mk#2{% #1:internal #2:Unicode + \ifnum#1<\z@ % not in internal (or JIS) + \ifnum"#2>\pxhy@max@asc % not ASCII \ifpxhy@extjis@use + % try special conversion \expandafter\pxhy@uchex@out@b\csname pxhy@uc/\number"#2\endcsname{#2}% \else \pxhy@uchex@out@b\relax{#2}% \fi - \else \Uchar"#2 + \else \Uchar"#2 % ASCII \fi - \else \Uchar#1 + \else \Uchar#1 % in internal-code \fi } - \def\pxhy@uchex@out@b#1#2{% - \ifx#1\relax - \@nameuse{U+#2}% - \pxhy@print@geta + \def\pxhy@uchex@out@b#1#2{% #2:Unicode + \ifx#1\relax % not supported + \pxjahyperBadCharacter{U+#2}% \else #1% \fi } @@ -808,6 +949,9 @@ pxhy@fallback@geta = \ifpxhy@fallback@geta true\else false\fi^^J% \else\ifpxhy@uptex %<*upTeX> %% \pxhy@Ux + % On upTeX without \Uchar, we convert the Unicode value to a ja-char + % token using \pxhy@get@jchar, which is not fully expandable. + % So we need \pdfstringdefPostHook. \def\pxhy@Ux{\pxhy@uchex}% \pxhy@utfXVIfalse @@ -912,7 +1056,7 @@ pxhy@fallback@geta = \ifpxhy@fallback@geta true\else false\fi^^J% \fi %--------------------------------------- Fix for high-byte protection -\ifpxhy@etex +\ifpxhy@hy@unicode\else \ifpxhy@etex \begingroup % Check for high-byte protection. \catcode"EF=\active \catcode`\^=7 @@ -949,7 +1093,7 @@ pxhy@fallback@geta = \ifpxhy@fallback@geta true\else false\fi^^J% \fi \endgroup -\fi +\fi\fi %--------------------------------------- Support for 'otfutf' \ifpxhy@otfutf @@ -960,8 +1104,7 @@ pxhy@fallback@geta = \ifpxhy@fallback@geta true\else false\fi^^J% \def\pxhy@UTF{\pxhy@uchex} \pxhy@utfXVIfalse \def\pxhy@uchex@out#1{% - \@nameuse{U+#1}% issue a warning - \pxhy@print@geta + \pxjahyperBadCharacter{U+#1}% } \else \let\pxhy@UTF\pxhy@Ux @@ -999,26 +1142,22 @@ pxhy@fallback@geta = \ifpxhy@fallback@geta true\else false\fi^^J% %% \pxhy@CID{<cid>} \def\pxhy@CID#1{% - \expandafter\expandafter\expandafter\pxhy@cid@aux - \bxjaCidToUcsHex{#1}\pxhy@mk{\pxhy@xdetokenize{#1}}% + \pxhy@triexpandafter\pxhy@cid@aux\bxjaCidToUcsHex{#1}@f{#1}% } %% \pxhy@fast@CID{<cid>} \def\pxhy@fast@CID#1{% - \expandafter\expandafter\expandafter\pxhy@cid@aux - \bxjaFastCidToUcsHex{#1}\pxhy@mk{\number#1}% + \pxhy@triexpandafter\pxhy@cid@aux\bxjaFastCidToUcsHex{#1}@t{#1}% } \ifx\pxhy@Ux\@undefined - \def\pxhy@cid@aux#1\pxhy@mk#2{% - \@nameuse{CID+#2}% issue a warning - \pxhy@print@geta + \def\pxhy@cid@aux#1@#2#3{% + \pxhy@fallback@num{CID+}#2{#3}% } \else -\def\pxhy@cid@aux#1\pxhy@mk#2{% +\def\pxhy@cid@aux#1@#2#3{% \ifnum"#1>\z@ \pxhy@Ux{#1}% \else - \@nameuse{CID+#2}% - \pxhy@print@geta + \pxhy@fallback@num{CID+}#2{#3}% \fi } \fi @@ -1059,11 +1198,30 @@ pxhy@fallback@geta = \ifpxhy@fallback@geta true\else false\fi^^J% \fi } +%% \pxhy@CIDC{<cid>} / \pxhy@CIDK{<cid>} / \pxhy@CIDT{<cid>} +\def\pxhy@CIDC{\pxhy@fallback@num{CIDC+}f} +\def\pxhy@CIDK{\pxhy@fallback@num{CIDK+}f} +\def\pxhy@CIDT{\pxhy@fallback@num{CIDT+}f} + +%% \pxhy@dispatch@fallback@cidm +\@onlypreamble\pxhy@dispatch@fallback@cidm +\def\pxhy@dispatch@fallback@cidm{% + \global\let\pxhy@dispatch@fallback@cidm\relax + \ltx@GlobalPrependToMacro\pdfstringdefPreHook{% + \ifpxhy@fallback@cidm + \let\CIDC\pxhy@CIDC + \let\CIDK\pxhy@CIDK + \let\CIDT\pxhy@CIDT + \fi + }% +} + %% enable hooks \pxhy@hook@after@package{otf}{\pxhy@dispatch@otfcid} \ifpxhy@otfmacros \pxhy@hook@after@package{ajmacros}{\pxhy@dispatch@otfmacros} \fi +\pxhy@hook@after@package{mlcid}{\pxhy@dispatch@fallback@cidm} \fi %--------------------------------------- Extended JIS mapping @@ -1160,7 +1318,8 @@ pxhy@fallback@geta = \ifpxhy@fallback@geta true\else false\fi^^J% %%<+> \pxDeclarePdfTextCommand{\CS}{<jis>}{<ucs>} \@onlypreamble\pxDeclarePdfTextCommand -\newcommand*\pxDeclarePdfTextCommand[3]{% +\pxhy@E\newrobustcmd*\pxDeclarePdfTextCommand[3]{% + \pxhy@prepare@txtcmd#1% \pxhy@decl@pdf@tc{#2}{#3}% {\DeclareTextCommand{#1}{\pxhy@pdfenc}}% {\pxhy@revoke@pdf@tc{#1}}% @@ -1168,7 +1327,8 @@ pxhy@fallback@geta = \ifpxhy@fallback@geta true\else false\fi^^J% %%<+> \pxDeclarePdfTextComposite{\CS}{<arg>}{<jis>}{<ucs>} \@onlypreamble\pxDeclarePdfTextComposite -\newcommand*\pxDeclarePdfTextComposite[4]{% +\pxhy@E\newrobustcmd*\pxDeclarePdfTextComposite[4]{% + \pxhy@prepare@txtcmd#1% \pxhy@decl@pdf@tc{#3}{#4}% {\DeclareTextCompositeCommand{#1}{\pxhy@pdfenc}{#2}}% {\pxhy@revoke@pdf@tcc{#1}{#2}}% @@ -1202,8 +1362,8 @@ pxhy@fallback@geta = \ifpxhy@fallback@geta true\else false\fi^^J% %% \pxhy@decl@pdf@tc \@onlypreamble\pxhy@decl@pdf@tc \def\pxhy@decl@pdf@tc#1#2{% - \edef\pxhy@next{{#1}{\ifx\pxhy@mt#2\pxhy@mt FFFD\else#2\fi}}% - \expandafter\pxhy@get@body\pxhy@next + \edef\pxhy@next{{#1}{#2}}% + \uppercase\expandafter{\expandafter\pxhy@get@body\pxhy@next}% \ifx\pxhy@body\@undefined \let\pxhy@next\@secondoftwo \else @@ -1217,21 +1377,60 @@ pxhy@fallback@geta = \ifpxhy@fallback@geta true\else false\fi^^J% #2{#1}% } +%% \pxhy@prepare@txtcmd\CS +% If \CS is defined and not an encoding-aware command, +% let \[?\CS] be equivalent to \CS, so that doing +% \DeclareTextCommand\CS... will keep the original meaning of \CS. +\@onlypreamble\pxhy@prepare@txtcmd +\def\pxhy@next#1#2\pxhy@end{%#1='\',#2='cmd' + \def\pxhy@prepare@txtcmd##1{% + \ifx##1\@undefined\else + \def\pxhy@tmpb{\pxhy@prepare@txtcmd@c##1}% + \expandafter\pxhy@prepare@txtcmd@a\meaning##1{}->#1 \pxhy@end + \fi + }% + \def\pxhy@prepare@txtcmd@a##1->#1##2 ##3\pxhy@end{% + \pxhy@prepare@txtcmd@b##2_{}-#2_\pxhy@end + }% + \def\pxhy@prepare@txtcmd@b##1-#2_##2\pxhy@end{% + % if not an encoding-aware command... + \ifx\pxhy@mt##2\pxhy@mt \pxhy@tmpb \fi + }% +}\expandafter\pxhy@next\string\cmd\pxhy@end +\def\pxhy@prepare@txtcmd@c#1{% + \expandafter\let\csname?\string#1\endcsname#1% +} + %% \pxhy@get@body{<jis>}{<ucs>} \@onlypreamble\pxhy@get@body +\@onlypreamble\pxhy@get@body@a +\def\pxhy@get@body#1#2{% + \edef\pxhy@next{% + {\ifx\pxhy@mt#1\pxhy@mt -1\else \jis"#1\fi}% + {\ifx\pxhy@mt#2\pxhy@mt + \ifx\pxhy@mt#1\pxhy@mt -1% + \else\ifpxhy@uptex \jis"#1% + \else\ifpxhy@toucs@avail \toucs\jis"#1% + \else -1\fi\fi\fi + \else \number"#2% + \fi}}% + \expandafter\pxhy@get@body@a\pxhy@next +} \ifpxhy@uptex %<*upTeX> - \def\pxhy@get@body#1#2{% - \pxhy@get@jchar{\ucs"#2}% + \def\pxhy@get@body@a#1#2{% + \pxhy@get@jchar{\ifnum#2<\z@ "FFFD\else#2\fi}% \let\pxhy@body\pxhy@jchar }% \else\ifpxhy@hy@unicode %<*unicode> - \def\pxhy@get@body#1#2{% - \def\pxhy@body{\unichar{"#2}}% + \def\pxhy@get@body@a#1#2{% + \edef\pxhy@body{% + \noexpand\unichar{\ifnum#2<\z@ "FFFD\else#2\fi}}% }% \else\ifpxhy@uniescape %<*uniescape> \def\pxhy@get@body#1#2{% \ifx\pxhy@mt#1\pxhy@mt - \def\pxhy@body{\0x#2}% + \edef\pxhy@body{\noexpand\0x% + \ifx\pxhy@mt#2\pxhy@mt FFFD\else#2\fi}% \else \pxhy@get@jchar{\jis"#1}% \let\pxhy@body\pxhy@jchar @@ -1239,14 +1438,14 @@ pxhy@fallback@geta = \ifpxhy@fallback@geta true\else false\fi^^J% }% \else %<*!> \chardef\pxhy@cc@jis@only=1 - \def\pxhy@get@body#1#2{% - \ifx\pxhy@mt#1\pxhy@mt - \let\pxhy@body\@undefined - \else - \pxhy@get@jchar{\jis"#1}% - \let\pxhy@body\pxhy@jchar - \fi - }% + \def\pxhy@get@body@a#1#2{% + \ifnum#1<\z@ + \let\pxhy@body\@undefined + \else + \pxhy@get@jchar{#1}% + \let\pxhy@body\pxhy@jchar + \fi + }% \fi\fi\fi %</> %%%%%%%%%%%%%%%%%%%% the definitions @@ -1695,14 +1894,14 @@ pxhy@fallback@geta = \ifpxhy@fallback@geta true\else false\fi^^J% %% register to 'disable' list \ltx@GlobalPrependToMacro\pdfstringdefPreHook{\pxhy@disable@tc@commands} -\else %<*!textcmd> +\else %<*!charcmds> \@onlypreamble\pxDeclarePdfTextCommand \newcommand*\pxDeclarePdfTextCommand[3]{} \@onlypreamble\pxDeclarePdfTextComposite \newcommand*\pxDeclarePdfTextComposite[4]{} -\fi %</textcmd> +\fi %</charcmds> %--------------------------------------- Enable hyperref unicode \ifpxhy@hy@unicode |