%% %% This is file 'pxjahyper-ajm.def'. %% %% Copyright (c) 2012-2024 Takayuki YATO (aka. "ZR") %% GitHub: https://github.com/zr-tex8r %% Twitter: @zr_tex8r %% %% This package is distributed under the MIT License. %% %% 縺薙�繝輔ぃ繧、繝ォ縺ッ譌・譛ャ隱樊枚蟄励r蜷ォ縺ソ縺セ縺�. %% package declaration \NeedsTeXFormat{pLaTeX2e} \ProvidesFile{pxjahyper-ajm.def}[2024/08/25 v1.5] %% avoid multiple loading \csname pxjahyperajmLoaded\endcsname \def\pxjahyperajmLoaded{\endinput} %% force UTF-8 \ifx\epTeXinputencoding\@undefined\else \epTeXinputencoding utf8 \fi %--------------------------------------- general % Note: Here 'etoolbox' is already loaded. %% check engine \ifx\numexpr\@undefined \endinput \fi %% \pxhy@macro@name@list % The \do-list of the name of macros to be redefined. \let\pxhy@macro@name@list\@empty %% \pxhy@ : the prefix \def\pxhy@{pxhy@aj@@} %% \pxhy@cond@both\ifXXX...\fi\ifYYY...\fi{<yes>}{<no>} % Checks whether \ifXXX and \ifYYY both hold. \@gobbletwo\if\if\@gobbletwo\if\if \def\pxhy@cond@both#1\fi#2\fi{% \pxhy@cond{\if #1#2T\else F\fi\else F\fi T}\fi } %% \pxhy@if@plus{<varient>}{<normal>} % Expands to <varient> if followed by +, otherwise to <normal>. \def\pxhy@if@plus#1#2#3{% #3=next-arg \expandafter\pxhy@if@plus@a\detokenize{#3}@{#1}+@{#2{#3}}\pxhy@mk } \def\pxhy@if@plus@a#1+@#2#3\pxhy@mk{#2} %% \pxhy@shift{<x>}{<y>} % Expands to \pxhy@fast@CID with the value of x+y. \def\pxhy@shift#1#2{% \expandafter\pxhy@shift@a\the\numexpr(#1)+(#2)\pxhy@mk } \def\pxhy@shift@a#1\pxhy@mk{% \pxhy@fast@CID{#1}% } %% \pxhy@numeral{<number>} % Expands to the Western numeral. \def\pxhy@numeral#1{% \expandafter\pxhy@numeral@a\number#1\pxhy@mk }% \pxhy@mk ensures termination \def\pxhy@numeral@a#1\pxhy@mk{#1} %% \pxhy@two@digits{<number>} % Expands to the Western numeral. \def\pxhy@two@digits#1{% \expandafter\pxhy@two@digits@a\number#1\pxhy@mk }% \pxhy@mk ensures termination \def\pxhy@two@digits@a#1\pxhy@mk{% \ifnum#1<10 0\fi #1% } %--------------------------------------- kanji numerals %% \pxhy@kdigit{<digit>} \def\pxhy@kdigit#1{% \ifcase#1縲Ⅸor 荳\or 莠圭or 荳噂or 蝗媾or 莠能or 蜈ュ\or 荳ソor 蜈ォ\or 荵拿fi } %% \pxhy@each@digit{<number>}\CScont % Expands to \CScont{<ten-digit>}{<one-digit>}. \def\pxhy@each@digit#1#2{% \ifnum#1>\m@ne \ifnum#1<100 \expandafter\pxhy@each@digit@a\number#1..\pxhy@mk{#2}% \fi\fi } \def\pxhy@each@digit@a#1#2#3\pxhy@mk#4{% \if.#2#40#1\else#4#1#2\fi } %% \pxhy@knumeral{<number>} % Expands to the kanji numeral according to Japanese reading. \def\pxhy@knumeral#1{% \pxhy@each@digit{#1}\pxhy@knumeral@a } \def\pxhy@knumeral@a#1#2{% \ifnum#1#2=\z@ \pxhy@kdigit0% \else \ifcase#1 \or 蜊―else \pxhy@kdigit#1蜊―fi \ifcase#2 \else \pxhy@kdigit#2\fi \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{% % invoke the redefinitions \def\do#1{\expandafter\let\csname aj#1\expandafter\endcsname \csname \pxhy@#1\endcsname}% \pxhy@macro@name@list } %======================================= % Macro Definitions \begingroup % entering a big group %--------------------------------------- helpers %% prepare \pxhy@forcecjktoken{0} %% shorthands \catcode`\`=\active \let`\noexpand \def\@{\unexpanded} \def\@@{\expandonce} \def\CID{\pxhy@CID} %% \#{<number-expr>} % Expands to the value of the expression. \def\##1{\the\numexpr#1\relax\space} %% \pxhy@def{<macro-name>}... \def\pxhy@def#1{\csxdef{\pxhy@#1}} %% \pxhy@DeclareMacro{<macro-name>}...{<body>} % Declares (with \xdef) the pdfstring version of the aj-macro % \[aj<macro-name>]. \def\pxhy@DeclareMacro#1{% \xappto\pxhy@macro@name@list{`\do{#1}}% \pxhy@def{#1}% } %% \pxhy@DeclareMacroVar{<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@DeclareMacroVar#1{% \xappto\pxhy@macro@name@list{`\do{#1}}% \edef\pxhy@next{{\@nameuse{\pxhy@#1}}% {\@nameuse{\pxhy@#1@N}}{\@nameuse{\pxhy@#1@V}}}% \expandafter\pxhy@decl@macro@var@a\pxhy@next } \def\pxhy@decl@macro@var@a#1#2#3#4#{% \gdef#1{\pxhy@if@star#3#2}% \toks@{\xdef#3#4}\def\pxhy@next{\the\toks@}% \afterassignment\pxhy@next \xdef#2#4% } %% \pxhy@DeclareAlias{<name1>}{<name2>} % Defines an alies. \def\pxhy@DeclareAlias#1#2{% \xappto\pxhy@macro@name@list{`\do{#1}}% \global\csletcs{\pxhy@#1}{\pxhy@#2}% } %% \pxhy@range{<ob-value>}{<limit>/<value>,...} % Expands to the code of a range switch. \def\pxhy@range#1#2{% \pxhy@range@a{#1}#2/#1,*/*,\pxhy@mk } \def\pxhy@range@a#1#2/#3,#4\pxhy@mk{% \ifstrempty{#4}{#1}{%else `\ifnum##1<\#{#2}#1% `\else\pxhy@range@a{#3}#4\pxhy@mk`\fi}% } %% \pxhy@rshift{<limit>/<shift>,...} % \pxhy@shift with a range switch. \def\pxhy@rshift#1{% \pxhy@shift{##1}{\pxhy@range{-1000}{#1}}% } %% \pxhy@twirange{<shift1>}{<shift2>} % Special kind of range switch, used in \ajKaku etc. \def\pxhy@twirange#1#2{% `\ifnum##1<\#{0}`\else`\ifnum##1<\#{10}\pxhy@shift{##1*2}{#1}% `\else`\ifnum##1<\#{101}\pxhy@shift{##1}{#2}% `\fi`\fi`\fi } %% \pxhy@fallback{<lbound>}{<fb-lbound>}{<ubound>}{<normal>}{<fallback>} \def\pxhy@fallback#1#2#3#4#5{% `\ifnum##1<\#{#1}`\else`\ifnum##1>\#{#3}`\else \ifnum\#{#1}=\#{#2}#5% \else `\ifnum##1<\#{#2}#4`\else#5`\fi \fi `\fi`\fi } %% freeze 'em \let\UTF\relax \let\pxhy@CID\relax \let\pxhy@fast@CID\relax \let\pxhy@if@star\relax \let\pxhy@if@plus\relax \let\pxhy@shift\relax \let\pxhy@numeral\relax \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". % Here a text command is "string-OK" if both: % - fully expandable, and % - comprised only of "Unicode-OK" glyphs. % Here a glyph is "unicode-OK" if either: % - representable as a single Unicode character, or % - well-substituted with a single Unicode character. % When the original definition of an aj-macro command is not string-OK % (marked as <!>), then the command must be redefeind. %%<!> \ajTsumesuji<var>{<string>} %%<!> \ajTsumesuji*{<string>} % Simply expands to the string. \pxhy@DeclareMacroVar{Tsumesuji}#1#2{#2}{} % \ajTsumesuji* takes only one argument. \pxhy@def{Tsumesuji@V}#1{#1} %----------------------- % Enclosed letters % None of the aj-macros for enclosed letters are fully expandable, % so they all must be redefined. % The glyphs for enclosed alphabet and kana letters are Unicode-OK % (\ajMaruKata{1} is U+32d0(繼�), and \ajMaruHira{1} fallbacks to plain % 縺� letter), but some of those for enclosed numbers are not Unicode-OK % (\ajMaru{51} does not have a good fallback), and thus should give an % alternative fallback string (\ajMaru{51}竊停�51窶�). % Note: for some enclosed numbers, glyphs with different enclosure are % used as fallback (e.g. \ajKuroMaru{21}竊停懊苑)窶�. %%<!> \ajMaru[*]{<number>} \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}}% }{%V \pxhy@fallback{0}{0}{100}{% \pxhy@rshift{0/10234,10/7554,21/8070,22/8080,32/10212,101}% }{`\ajMaru{#1}}% } %%<!> \ajKuroMaru[*]{<number>} \pxhy@DeclareCCMacroVar{KuroMaru}#1{%N \pxhy@fallback{0}{21}{100}{% \pxhy@rshift{0/10503,1/8285,10/10504,101}% }{`\ajMaru{#1}}% }{%V \pxhy@fallback{0}{0}{100}{% \pxhy@rshift{0/10504,101}% }{`\ajKuroMaru{#1}}% } %%<!> \ajKaku[*]{<number>} \pxhy@DeclareCCMacroVar{Kaku}#1{%N \pxhy@fallback{0}{0}{100}{% \pxhy@twirange{10764}{10774}% }{`\ajMaru{#1}}% }{%V \pxhy@fallback{0}{0}{100}{% \pxhy@twirange{10765}{10774}% }{`\ajMaru{#1}}% } %%<!> \ajKuroKaku[*]{<number>} \pxhy@DeclareCCMacroVar{KuroKaku}#1{%N \pxhy@fallback{0}{0}{100}{% \pxhy@twirange{11037}{11047}% }{`\ajMaru{#1}}% }{%V \pxhy@fallback{0}{0}{100}{% \pxhy@twirange{11038}{11047}% }{`\ajMaru{#1}}% } %%<!> \ajMaruKaku[*]{<number>} \pxhy@DeclareCCMacroVar{MaruKaku}#1{%N \pxhy@fallback{0}{0}{100}{% \pxhy@twirange{11307}{11317}% }{`\ajMaru{#1}}% }{%V \pxhy@fallback{0}{0}{100}{% `\ajMaru{#1}%fallback \pxhy@twirange{11308}{11317}% }{`\ajMaru{#1}}% } %%<!> \ajKuroMaruKaku[*]{<number>} \pxhy@DeclareCCMacroVar{KuroMaruKaku}#1{%N \pxhy@fallback{0}{0}{100}{% \pxhy@twirange{11576}{11586}% }{`\ajMaru{#1}}% }{%V \pxhy@fallback{0}{0}{100}{% \pxhy@twirange{11577}{11586}% }{`\ajMaru{#1}}% } %%<!> \ajKakko[*]{<number>} \pxhy@DeclareCCMacroVar{Kakko}#1{%N \pxhy@fallback{0}{21}{100}{% \pxhy@rshift{0/8227,1/8070,21/9873,101}% }{(\pxhy@numeral{#1})}% }{%V \pxhy@fallback{0}{0}{100}{% \pxhy@rshift{0/9884,10/8070,21/9873,101}% }{`\ajKakko{#1}}% } %%<!> \ajRoman[*]{<number>} \pxhy@DeclareCCMacroVar{Roman}#1{%N \pxhy@fallback{1}{13}{15}{% \pxhy@rshift{1/7574,11/8214,13/8282,16}% }{`\@Roman{#1}}% }{%V \pxhy@fallback{1}{1}{15}{% \pxhy@rshift{1/7574,4/9879,5/7574,11/8214,13/8282,16}% }{`\ifnum#1=\#{4}IIII`\else`\ajRoman{#1}`\fi}% } %%<!> \ajroman{<number>} \pxhy@DeclareCCMacro{roman}#1{% \pxhy@fallback{1}{13}{15}{% \pxhy@rshift{1/8091,11/8287,16}% }{`\@roman{#1}}% } %%<!> \ajPeriod{<number>} \pxhy@DeclareCCMacro{Period}#1{% \pxhy@fallback{0}{1}{11}{% 0.% }{\pxhy@rshift{0/8061,10/20577,12}}% } %%<!> \ajKakkoYobi{<number>} \pxhy@DeclareCCMacro{KakkoYobi}#1{\pxhy@rshift{1/8196,10}} %%<!> \ajKakkoroman{<number>} \pxhy@DeclareCCMacro{Kakkoroman}#1{% \pxhy@fallback{1}{1}{15}{% \pxhy@rshift{1/9973,16}% }{(`\ajroman{#1})}% } %%<!> \ajKakkoRoman{<number>} \pxhy@DeclareCCMacro{KakkoRoman}#1{% \pxhy@fallback{1}{1}{15}{% \pxhy@rshift{1/9988,16}% }{(`\ajRoman{#1})}% } %%<!> \ajKakkoalph{<number>} \pxhy@DeclareCCMacro{Kakkoalph}#1{\pxhy@rshift{1/8111,27}} %%<!> \ajKakkoAlph{<number>} \pxhy@DeclareCCMacro{KakkoAlph}#1{\pxhy@rshift{1/10003,27}} %%<!> \ajKakkoHira{<number>} \pxhy@DeclareCCMacro{KakkoHira}#1{% \pxhy@fallback{1}{1}{48}{% \pxhy@rshift{1/10029,49}% }{(\pxhy@rshift{1/10029,49})}% with parens } %%<!> \ajKakkoKata{<number>} \pxhy@DeclareCCMacro{KakkoKata}#1{% \pxhy@fallback{1}{1}{48}{% \pxhy@rshift{1/10077,49}% }{(\pxhy@rshift{1/10077,49})}% with parens } %%<!> \ajKakkoKansuji{<number>} \pxhy@DeclareCCMacro{KakkoKansuji}#1{% \pxhy@fallback{1}{11}{20}{% \pxhy@rshift{1/10125,21}% }{(\pxhy@knumeral{#1})}% } %%<!> \ajMaruKansuji{<number>} \pxhy@DeclareCCMacro{MaruKansuji}#1{\pxhy@rshift{1/10460,11}} %%<!> \ajMarualph{<number>} \pxhy@DeclareCCMacro{Marualph}#1{\pxhy@rshift{1/10312,27}} %%<!> \ajMaruAlph{<number>} \pxhy@DeclareCCMacro{MaruAlph}#1{\pxhy@rshift{1/10338,27}} %%<!> \ajMaruHira{<number>} \pxhy@DeclareCCMacro{MaruHira}#1{\pxhy@rshift{1/10364,49}} %%<!> \ajMaruKata{<number>} \pxhy@DeclareCCMacro{MaruKata}#1{\pxhy@rshift{1/10412,49}} %%<!> \ajMaruYobi{<number>} \pxhy@DeclareCCMacro{MaruYobi}#1{% \pxhy@rshift{1/10470,8/10484,9/10478,10}% } %%<!> \ajKuroMarualph{<number>} : Fallback. \pxhy@DeclareCCMacro{KuroMarualph}#1{`\ajMarualph{#1}} %%<!> \ajKuroMaruAlph{<number>} \pxhy@DeclareCCMacro{KuroMaruAlph}#1{\pxhy@rshift{1/10630,27}} %%<!> \ajKuroMaruHira{<number>} : Fallback. \pxhy@DeclareCCMacro{KuroMaruHira}#1{`\ajMaruHira{#1}} %%<!> \ajKuroMaruKata{<number>} : Fallback. \pxhy@DeclareCCMacro{KuroMaruKata}#1{`\ajMaruKata{#1}} %%<!> \ajKuroMaruYobi{<number>} : Fallback. % fallback to \ajKakuYobi, which is simpler. \pxhy@DeclareCCMacro{KuroMaruYobi}#1{`\ajKakuYobi{#1}} %%<!> \ajKakualph{<number>} : Fallback. \pxhy@DeclareCCMacro{Kakualph}#1{`\ajMarualph{#1}} %%<!> \ajKakuAlph{<number>} \pxhy@DeclareCCMacro{KakuAlph}#1{\pxhy@rshift{1/10900,27}} %%<!> \ajKakuHira{<number>} : Fallback. \pxhy@DeclareCCMacro{KakuHira}#1{`\ajMaruHira{#1}} %%<!> \ajKakuKata{<number>} : Fallback. \pxhy@DeclareCCMacro{KakuKata}#1{`\ajMaruKata{#1}} %%<!> \ajKakuYobi{<number>} \pxhy@DeclareCCMacro{KakuYobi}#1{\pxhy@rshift{1/11022,8}} %%<!> \ajKuroKakualph{<number>} : Fallback. \pxhy@DeclareCCMacro{KuroKakualph}#1{`\ajMarualph{#1}} %%<!> \ajKuroKakuAlph{<number>} \pxhy@DeclareCCMacro{KuroKakuAlph}#1{\pxhy@rshift{1/11173,27}} %%<!> \ajKuroKakuHira{<number>} : Fallback. \pxhy@DeclareCCMacro{KuroKakuHira}#1{`\ajMaruHira{#1}} %%<!> \ajKuroKakuKata{<number>} : Fallback. \pxhy@DeclareCCMacro{KuroKakuKata}#1{`\ajMaruKata{#1}} %%<!> \ajKuroKakuYobi{<number>} : Fallback. \pxhy@DeclareCCMacro{KuroKakuYobi}#1{`\ajKakuYobi{#1}} %%<!> \ajMaruKakualph{<number>} : Fallback. \pxhy@DeclareCCMacro{MaruKakualph}#1{`\ajMarualph{#1}} %%<!> \ajMaruKakuAlph{<number>} \pxhy@DeclareCCMacro{MaruKakuAlph}#1{\pxhy@rshift{1/11443,27}} %%<!> \ajMaruKakuHira{<number>} : Fallback. \pxhy@DeclareCCMacro{MaruKakuHira}#1{`\ajMaruHira{#1}} %%<!> \ajMaruKakuKata{<number>} : Fallback. \pxhy@DeclareCCMacro{MaruKakuKata}#1{`\ajMaruKata{#1}} %%<!> \ajMaruKakuYobi{<number>} : Fallback. \pxhy@DeclareCCMacro{MaruKakuYobi}#1{`\ajKakuYobi{#1}} %%<!> \ajKuroMaruKakualph{<number>} : Fallback. \pxhy@DeclareCCMacro{KuroMaruKakualph}#1{`\ajMarualph{#1}} %%<!> \ajKuroMaruKakuAlph{<number>} \pxhy@DeclareCCMacro{KuroMaruKakuAlph}#1{\pxhy@rshift{1/11712,27}} %%<!> \ajKuroMaruKakuHira{<number>} : Fallback. \pxhy@DeclareCCMacro{KuroMaruKakuHira}#1{`\ajMaruHira{#1}} %%<!> \ajKuroMaruKakuKata{<number>} : Fallback. \pxhy@DeclareCCMacro{KuroMaruKakuKata}#1{`\ajMaruKata{#1}} %%<!> \ajKuroMaruKakuYobi{<number>} : Fallback. \pxhy@DeclareCCMacro{KuroMaruKakuYobi}#1{`\ajKakuYobi{#1}} %%<!> \ajNijuMaru{<number>} \pxhy@DeclareCCMacro{NijuMaru}#1{\pxhy@rshift{1/16222,11}} %%<!> \ajRecycle{<number>} \pxhy@DeclareCCMacro{Recycle}#1{\pxhy@rshift{0/16314,12}} %%<!> \ajHasenKakuAlph{<number>} \pxhy@DeclareCCMacro{HasenKakuAlph}#1{\pxhy@rshift{1/20496,7}} %%<!> \ajCross{<number>} \pxhy@DeclareCCMacro{Cross}#1{% \pxhy@fallback{0}{0}{9}{% \pxhy@rshift{0/20523,10}% }{\pxhy@numeral{#1}\UTF{00D7}}% } %%<!> \ajSlanted[*]{<number>} \pxhy@DeclareCCMacroVar{Slanted}#1{%N \pxhy@fallback{0}{0}{59}{% \pxhy@rshift{0/9460,10/20589,60}% }{\pxhy@numeral{#1}}% }{%V \pxhy@fallback{0}{0}{59}{% \pxhy@rshift{0/20589,60}% }{\pxhy@two@digits{#1}}% } %%<!> \ajApostrophe{<number>} %%<!> \ajYear{<number>} (alias) \pxhy@DeclareCCMacro{Apostrophe}#1{% \pxhy@fallback{0}{0}{99}{% \pxhy@rshift{0/20649,100}% }{\UTF{2019}\pxhy@two@digits{#1}}% } \pxhy@DeclareAlias{Year}{Apostrophe} %%<!> \ajSquareMark[*]{<number>} % Note: +-variant is unsupported. \pxhy@DeclareCCMacroVar{SquareMark}#1{%N \pxhy@rshift{1/12229,13}% }{%V \pxhy@rshift{1/12241,10}% } %%<!> \ajHishi{<number>} \pxhy@DeclareCCMacro{Hishi}#1{\pxhy@rshift{1/12256,5}} \pxhy@finish@declare@cc@macros %----------------------- % The choice of numerals (Western or kanji) depends on the rendering % of the original definition in yoko direction. %%<!> \ajTsumekakko{<number>} %%<!> \ajTumekakko{<number>} (alias) % Expands to "(number)". \pxhy@DeclareMacro{Tsumekakko}#1{% (\pxhy@numeral{#1})% } \pxhy@DeclareAlias{Tumekakko}{Tsumekakko} %%<!> \ajNenrei<var>{<number>} \pxhy@DeclareMacro{Nenrei}#1{% `\csname pxhy@ajNenrei/`\number#1`\endcsname } \csgdef{pxhy@ajNenrei/1}#1{% (\pxhy@numeral{#1}\ifnum#1<10 縺、\fi)% } \csgdef{pxhy@ajNenrei/2}#1{% (\pxhy@numeral{#1}謇�)% } \csgdef{pxhy@ajNenrei/3}#1{% FIXME: the original is right? (\pxhy@each@digit{#1}{\pxhy@knumeral@varA 縺、})% } \csgdef{pxhy@ajNenrei/4}#1{% (\pxhy@knumeral{#1}謇�)% } %%<!> \ajnenrei<var>{<number>} \pxhy@DeclareMacro{nenrei}#1{% `\csname pxhy@ajnenrei/`\number#1`\endcsname } \csgdef{pxhy@ajnenrei/1}#1{% (\pxhy@each@digit{#1}{\pxhy@knumeral@varA 縺、})% } \csgdef{pxhy@ajnenrei/2}#1{% (\pxhy@each@digit{#1}{\pxhy@knumeral@varB 謇閤)% } \csgdef{pxhy@ajnenrei/3}#1{% FIXME: the original is right? (\pxhy@each@digit{#1}{\pxhy@knumeral@varA 繝м)% } \csgdef{pxhy@ajnenrei/4}#1{% (\pxhy@each@digit{#1}{\pxhy@knumeral@varB 繧ウ})% } %%<!> \ajKosu{<number>} \pxhy@DeclareMacro{Kosu}#1{% `\ajnenrei4{#1}% } %% some special kanji numeral forms \gdef\pxhy@knumeral@varA#1#2#3{%<tsu><ten><one> % 8竊貞�縺、, 10竊剃ク縲�, 16竊剃ク蜈ュ, 20竊剃コ後�, 32竊剃ク我コ� \if0#2\pxhy@kdigit#3#1\else\pxhy@kdigit#2\pxhy@kdigit#3\fi } \gdef\pxhy@knumeral@varB#1#2#3{%<counter><ten><one> % 8竊貞�謇�, 10竊貞香謇�, 16竊貞香蜈ュ, 20竊剃コ悟香, 32竊剃ク我コ� \ifcase#2 #2#1% \or 蜊―ifcase#3 #1\else \pxhy@kdigit#3\fi \else \pxhy@kdigit#2\ifcase#3 蜊―else \pxhy@kdigit#3\fi \fi } %%<!> \ajFrac[*]{<numerator>}{<denominator>} \pxhy@DeclareMacroVar{Frac}#1#2{%N `\pxhy@ajFrac{\pxhy@numeral{#1}}{\pxhy@numeral{#2}}% }{%V `\pxhy@ajFrac{\pxhy@numeral{#1}}{\pxhy@numeral{#2}}% } \gdef\pxhy@ajFrac#1#2{% \ifcsdef{pxhy@ucs@frac/#1/#2}{% \csuse{pxhy@ucs@frac/#1/#2}% }{#1/#2}% } %% \[pxhy@ucs@frac/<n>/<d>] % Alternative definitions for fractions. \def\do#1#2{\csgdef{pxhy@ucs@frac/#1}{\UTF{#2}}} \do{1/4}{00BC} \do{1/2}{00BD} \do{3/4}{00BE} \do{1/7}{2150} \do{1/9}{2151} \do{1/10}{2152} \do{1/3}{2153} \do{2/3}{2154} \do{1/5}{2155} \do{2/5}{2156} \do{3/5}{2157} \do{4/5}{2158} \do{1/6}{2159} \do{5/6}{215A} \do{1/8}{215B} \do{3/8}{215C} \do{5/8}{215D} \do{7/8}{215E} \do{0/3}{2189} %%<!> \aj蜊願ァ畜<string>} % Simply expands to the string. \pxhy@DeclareMacro{蜊願ァ筑#1{% `\ifpxhy@ajhankaku@chars `\pxhy@ajHankaku{#1}% `\else #1% `\fi } \gdef\pxhy@ajHankaku#1{% \pxhy@ajHankaku@a#1\pxhy@end } \gdef\pxhy@ajHankaku@a#1{% \pxhy@cond\ifx#1\pxhy@end\fi{}{%else \ifcsdef{pxhy@ucs@hw/#1}{\csuse{pxhy@ucs@hw/#1}}{#1}% \pxhy@ajHankaku@a}% } \def\pxhy@next#1{% \pxhy@cond\ifx#1\pxhy@end\fi{}{%else \csxdef{pxhy@ucs@hw/#1}{\UTF{\expandafter\pxhy@FFhex\meaning\x;}}% \chardef\y=\numexpr\x+1\relax \let\x\y \pxhy@next}% } \def\pxhy@FFhex#1"#2;{FF#2} \chardef\x="61 \pxhy@next 縲ゅ後阪√�繝イ繧。繧」繧・繧ァ繧ゥ繝」繝・繝ァ繝��繧「繧、繧ヲ繧ィ繧ェ繧ォ繧ュ繧ッ繧ア% 繧ウ繧オ繧キ繧ケ繧サ繧ス繧ソ繝√ヤ繝�ヨ繝翫ル繝後ロ繝弱ワ繝偵ヵ繝倥�繝槭Α繝�繝。% 繝「繝、繝ヲ繝ィ繝ゥ繝ェ繝ォ繝ャ繝ュ繝ッ繝ウ繧帙�\pxhy@end \csgdef{pxhy@ucs@hw/縲}{\space} %%<OK> \笳� / \笳� / \笆。 / \笆� / \笳� / \笳� % Expands to \ajLig{} or \@ajNumber. % \@ajNumber{CMD}{<n>} seems to expand to \ajCMD{<n>}. %%<OK> \笆ウ / \笆ス / \繧� / \繧� / \�� % Expands to \ajLig{}. %%<OK> \ajPICT{<name>} % Expands to \CID{}. %%<OK> \ajArrow{<name>} % Expands to \CID{}. %%<!> \ajKunten{<name>} % \ajKunten{?} (for single letters) expands to \CID{} and is string-OK. % \ajKunten{?�怡, \ajKunten{��?}a and \ajKunten{?繝ャ} need to be % redefined. \@tfor\x:={荳}{荳笠{逕イ}{螟ゥ}\do{% ?繝ャ \pxhy@DeclareMacro{險鍋せ\x 繝ャ}{`\ajKunten{\x}`\ajKunten{繝ャ}}% } \@tfor\x:={莠迎{荳厭{蝗孺{荳ュ}{荳急{荵凩{荳凩{荳±{蝨ー}{莠コ}\do{% ?�� ��? \pxhy@DeclareMacro{險鍋せ\x �怡{`\ajKunten{\x}\UTF{2013}}% \pxhy@DeclareMacro{險鍋せ�彌x }{`\ajKunten{\x}\UTF{2013}}% } \pxhy@DeclareMacro{險鍋せ縲�怡{\UTF{2013}}% \pxhy@DeclareMacro{險鍋せ�懊}{\UTF{2013}}% %%<OK> \ajVar{<name>} % Expands to \CID{} or \UTF{}. %%<!> \ajLeader % Redefined to expand to two instances of the leader character. \pxhy@DeclareMacro{Leader}{% `\pxhy@ajLeader } \gdef\pxhy@ajLeader#1{% \pxhy@cond\ifx[#1\fi{\pxhy@ajLeader@a}{\pxhy@ajLeader@a]{#1}}% } \gdef\pxhy@ajLeader@a#1]#2{% \pxhy@shift{12214}{#2*2}\pxhy@shift{12214}{#2*2}% } %%<!> \ajQuote % Redefined to be fully-expandable. \pxhy@DeclareMacro{Quote}{% `\pxhy@ajQuote } \gdef\pxhy@ajQuote#1#2{% \CID{\ifcase#1\or670\or672\or674\or676\or678\or680\or682\or 684\or686\or688\or690\or7608\or12125\or12127\or12129\or 12131\or12171\or16197\fi}% #2% \CID{\ifcase#1\or671\or673\or675\or677\or679\or681\or683\or 685\or687\or689\or691\or7609\or12126\or12128\or12130\or 12132\or12172\or16198\fi}% } %%<OK> Miscenallneous \ajXxx symbols % Most of them are string-OK; The exceptions are below. %% ad-hoc redefinitions \pxhy@DeclareMacro{DKunoji}{\UTF{3032}} \pxhy@DeclareMacro{DKunojiwithBou}{\UTF{3032}} \pxhy@DeclareMacro{Kunoji}{\UTF{3031}} \pxhy@DeclareMacro{KunojiwithBou}{\UTF{3031}} \pxhy@DeclareMacro{Yusuriten}{\CID{16193}} \pxhy@DeclareMacro{varNinoji}{\CID{12107}} %---------------------- % The \ajLig command %% \[pxhy@uok/<lig>] % If defined, then \ajLig{<lig>} is Unicode-OK. % Note: Baware of unification. For example, \ajLig{No.} and \ajLig{No} % can both be kind of U+2116(邃�), but probably \ajLig{AM} cannot be % kind of U+33C2(繽�). \@tfor\x:=% {!!}{!!*}{!*}{!?}{!?*}{'S}{?!}{??}{F}{FAX}{GB}{HP}{Hz}{JIS}{K.K.}{KB}% {MB}{No.}{No}{PR}{TEL}{Tel}{a.m.}{a/c}{c/o}{cal}{cc}{cm}{cm2}{cm3}{dB}% {dl}{dl*}{euro}{g}{hPa}{in}{kcal}{kg}{kl}{kl*}{km}{km2}{km3}{l}{l*}{m}% {m2}{m3}{mb}{mg}{mho}{microg}{microm}{micros}{ml}{ml*}{mm}{mm2}{mm3}{ms}% {ns}{p.m.}{pH}{ppm}{ps}{tel}{tm}{笳⑨V}{笳⑭V}{笳⑮ews}{笳⑳S}{繧医j}% {繧「繝代�繝�}{繧「繝ォ繝輔ぃ}{繧「繝ウ繝壹い}{繧「繝シ繝ォ*}{繧「繝シ繝ォ}{繧、繝九Φ繧ー}{繧、繝ウ繝±% {繧、繝ウ繝�*}{繧ヲ繧ゥ繝ウ}{繧ィ繧ケ繧ッ繝シ繝厭{繧ィ繝シ繧ォ繝シ}{繧ェ繝ウ繧ケ}{繧ェ繝シ繝�}{繧ォ繧、繝ェ}% {繧ォ繝ゥ繝�ヨ}{繧ォ繝ュ繝ェ繝シ}{繧ャ繝ュ繝ウ}{繧ャ繝ウ繝栲{繧ュ繝・繝ェ繝シ}{繧ュ繝ュ}{繧ュ繝ュ繧ー繝ゥ繝�}% {繧ュ繝ュ繝。繝シ繝医Ν}{繧ュ繝ュ繝ッ繝�ヨ}{繧ョ繧ャ}{繧ョ繝九�}{繧ョ繝ォ繝繝シ}{繧ッ繝ォ繧シ繧、繝ュ}{繧ッ繝ュ繝シ繝閤% {繧ー繝ゥ繝�}{繧ー繝ゥ繝�*}{繧ー繝ゥ繝�繝医Φ}{繧ア繝シ繧ケ}{繧ウ繝�}{繧ウ繝ォ繝笠{繧ウ繝シ繝掵{繧ウ繝シ繝�*}% {繧オ繧、繧ッ繝ォ}{繧オ繝ウ繝√�繝�}{繧キ繝ェ繝ウ繧ー}{繧サ繝ウ繝±{繧サ繝ウ繝�*}{繧サ繝ウ繝�}{繧サ繝ウ繝�*}% {繝繝シ繧ケ}{繝�す}{繝医Φ}{繝峨Ν}{繝翫ヮ}{繝弱ャ繝�}{繝上う繝м{繝上う繝�*}{繝舌�繝ャ繝ォ}% {繝代�繧サ繝ウ繝�}{繝薙Ν}{繝斐い繧ケ繝医Ν}{繝斐け繝ォ}{繝斐さ}{繝輔ぃ繝ゥ繝�ラ}{繝輔ぅ繝シ繝�}% {繝輔Λ繝ウ}{繝悶ャ繧キ繧ァ繝ォ}{繝倥け繧ソ繝シ繝ォ}{繝倥Ν繝м{繝倥Ν繝�*}{繝吶�繧ソ}{繝壹た}{繝壹ル繝筑% {繝壹Φ繧ケ}{繝壹�繧ク}{繝壹�繧ク*}{繝帙Φ}{繝帙�繝ォ}{繝帙�繝ウ}{繝帙�繝ウ*}{繝懊Ν繝�}% {繝昴う繝ウ繝�}{繝昴Φ繝厭{繝槭う繧ッ繝ュ}{繝槭う繝ォ}{繝槭ャ繝殉{繝槭Ν繧ッ}{繝槭Φ繧キ繝ァ繝ウ}% {繝溘け繝ュ繝ウ}{繝溘Μ}{繝溘Μ繝舌�繝ォ}{繝。繧ャ}{繝。繧ャ繝医Φ}{繝。繝シ繝医Ν}{繝、繝シ繝厭{繝、繝シ繝�*}% {繝、繝シ繝ォ}{繝ヲ繧「繝ウ}{繝ェ繝�ヨ繝ォ}{繝ェ繝ゥ}{繝ォ繝斐�}{繝ォ繝シ繝悶Ν}{繝ャ繝�}{繝ャ繝ウ繝医ご繝ウ}% {繝ッ繝�ヨ}{繝ッ繝�ヨ*}{莉、蜥迎{蜊�}{螟ァ豁」}{蟷ウ謌図{譏取イサ}{譏ュ蜥迎{譬ェ蠑丈シ夂、セ}% \do{\global\cslet{pxhy@uok/\x}{t}} % Note: Ligatures no*, euro*, mho*, ohm* are bad (proportional). %% \[pxhy@uokh/<char>] % If defined, then \ajLig{<char>?} is Unicode-OK, where '?' is % an arbitrary single character. \@tfor\x:=% {笆�}{笆。}{笆ウ}{笆ス}{笳�}{笳�}{笳急{笳殉 \do{\global\cslet{pxhy@uokh/\x}{t}} %% ad-hoc redefinitions \def\do#1#2{\pxhy@DeclareMacro{Lig#1}{#2}% \global\cslet{pxhy@uok/#1}{t}} \do{縺��}{\UTF{3094}} \do{縺九�}{縺欺UTF{309A}} \do{縺阪�}{縺構UTF{309A}} \do{縺上�}{縺十UTF{309A}} \do{縺代�}{縺曾UTF{309A}} \do{縺薙�}{縺貼UTF{309A}} \do{繧ォ繧怡{繧ォ\UTF{309A}} \do{繧ュ繧怡{繧ュ\UTF{309A}} \do{繧ッ繧怡{繧ッ\UTF{309A}} \do{繧ア繧怡{繧ア\UTF{309A}} \do{繧ウ繧怡{繧ウ\UTF{309A}} \do{繧サ繧怡{繧サ\UTF{309A}} \do{繝��}{繝ЫUTF{309A}} \do{繝医�}{繝�\UTF{309A}} \do{繝ッ繧孺{\UTF{30F7}} \do{繝ー繧孺{\UTF{30F8}} \do{繝ア繧孺{\UTF{30F9}} \do{繝イ繧孺{\UTF{30FA}} \do{蟆上°}{\UTF{3095}} \do{蟆上¢}{\UTF{3096}} \do{蟆上%}{縺党% fallback \do{蟆上け}{\UTF{31F0}} \do{蟆上さ}{繧ウ}% fallback \do{蟆上す}{\UTF{31F1}} \do{蟆上せ}{\UTF{31F2}} \do{蟆上ヨ}{\UTF{31F3}} \do{蟆上レ}{\UTF{31F4}} \do{蟆上ワ}{\UTF{31F5}} \do{蟆上ヲ}{\UTF{31F6}} \do{蟆上ヵ}{\UTF{31F7}} \do{蟆上�}{\UTF{31F7}\UTF{309A}} \do{蟆上�}{\UTF{31F8}} \do{蟆上�}{\UTF{31F9}} \do{蟆上Β}{\UTF{31FA}} \do{蟆上Λ}{\UTF{31FB}} \do{蟆上Μ}{\UTF{31FC}} \do{蟆上Ν}{\UTF{31FD}} \do{蟆上Ξ}{\UTF{31FE}} \do{蟆上Ο}{\UTF{31FF}} %% redefine \ajLig \pxhy@DeclareMacro{Lig}#1{% % use \csname, to full-expand the argument \@{\expandafter\pxhy@uok@ajlig\csname}ajLig#1\@{\endcsname}% } \gdef\pxhy@uok@ajlig#1{% \expandafter\pxhy@uok@ajlig@a\string#1\pxhy@mk#1% } \begingroup\catcode96=12 \lccode`\?=`\g \lowercase{\endgroup \gdef\pxhy@uok@ajlig@a#1?#2\pxhy@mk}{% \pxhy@uok@ajlig@b{#2}% } \gdef\pxhy@uok@ajlig@b#1#2{%{NAME}\ajNAME % undefined name comes empty \ifundef{#2}{}{%else % if Unicode-OK then do it \ifcsdef{pxhy@uok/#1}{#2}{%else \pxhy@if@uok@head{#1}{#2}{%else \pxhy@drop@trail@star{#1}% }% }% }% } %% \pxhy@if@uok@head{<string>}{<yes>}{<no>} \gdef\pxhy@if@uok@head#1{% \pxhy@if@uok@head@a#1@...\pxhy@mk } \gdef\pxhy@if@uok@head@a#1#2#3#4#5\pxhy@mk{% \pxhy@cond\ifx#3@\fi{% two-letter \ifcsdef{pxhy@uokh/#1}% }{\pxhy@cond\ifx#4@\fi{% three-letter \pxhy@cond@both\ifx#1(\fi\ifx#3)\fi{\@firstoftwo}{%else \pxhy@cond@both\ifx#1笆。\fi\ifx#2:\fi }% }{\@secondoftwo}}% } %% \pxhy@drop@trail@star{<string>} \gdef\pxhy@drop@trail@star#1{% \pxhy@drop@trail@star@a#1\pxhy@mk*\pxhy@mk\pxhy@end{#1}% } \gdef\pxhy@drop@trail@star@a#1*\pxhy@mk#2\pxhy@end#3{% \ifstrempty{#2}{#3}{#1}% } %--------------------------------------- done \endgroup %======================================= \endinput %% EOF