3911\if j\jsEngine
■共通命令の実装
3912\def\bxjs@apply@kanjiskip{%
3913 \kanjiskip\@tempskipa}
3914\def\bxjs@apply@xkanjiskip{%
3915 \xkanjiskip\@tempskipa}
\jaJaCharのサブマクロ。
3916\def\bxjs@jachar#1{%
3917 \bxjs@jachar@a#1....\@nil}
3918\def\bxjs@jachar@a#1#2#3#4#5\@nil{%
引数が単一トークンなら和文文字トークンが得られたと見なしてそれをそのまま出力する。
3919 \ifx.#2#1%
引数が複数トークンの場合は、UTF-8 のバイト列であると見なし、そのスカラー値を
\@tempcntaに代入する。
3920 \else\ifx.#3%
3921 \@tempcnta`#1 \multiply\@tempcnta64
3922 \advance\@tempcnta`#2 \advance\@tempcnta-"3080
3923 \bxjs@jachar@b
3924 \else\ifx.#4%
3925 \@tempcnta`#1 \multiply\@tempcnta64
3926 \advance\@tempcnta`#2 \multiply\@tempcnta64
3927 \advance\@tempcnta`#3 \advance\@tempcnta-"E2080
3928 \bxjs@jachar@b
3929 \else
3930 \@tempcnta`#1 \multiply\@tempcnta64
3931 \advance\@tempcnta`#2 \multiply\@tempcnta64
3932 \advance\@tempcnta`#3 \multiply\@tempcnta64
3933 \advance\@tempcnta`#4 \advance\@tempcnta-"3C82080
3934 \bxjs@jachar@b
3935 \fi\fi\fi}
符号値が\@tempcnta の和文文字を出力する処理。
3936\ifjsWithupTeX
3937 \def\bxjs@jachar@b{\kchar\@tempcnta}
3938\else
3939 \def\bxjs@jachar@b{%
3940 \ifx\bxUInt\@undefined\else
3941 \bxUInt{\@tempcnta}%
3942 \fi}
3943\fi
和欧文間空白の命令\jathinspaceの実装。
3944\ifbxjs@jaspace@cmd
3945 \def\jathinspace{\hskip\xkanjiskip}
3946\fi
■jis2004 パ ラ メ タ pxchfon と pxbabel で は2004JIS を 指 定 す る オ プ シ ョ ン の 名 が prefer2004jisである。
3947\ifbxjs@jp@jismmiv
3948 \PassOptionsToPackage{prefer2004jis}{pxchfon}
3949 \PassOptionsToPackage{prefer2004jis}{pxbabel}
3950\fi
■和文フォント指定の扱い pTEXは既定で kanji-config-updmap の設定に従うため、
\jsJaFont が auto の場合は何もする必要がない。無指定でも auto でもない場合は、
\jsJaFontをオプションにして pxchfonパッケージを読み込む。ここで、和文ドライバパ ラメタfont が指定されいる場合は、その値をpxchfonのオプションに追加する。
3951\let\bxjs@jafont@paren\@firstofone
3952\let\bxjs@tmpa\jsJaFont
3953\ifx\bxjs@tmpa\bxjs@@auto
3954 \let\bxjs@tmpa\@empty
3955\else\ifx\bxjs@tmpa\bxjs@@noEmbed
3956 \def\bxjs@tmpa{noembed}
3957\fi\fi
3958\bxjs@resolve@jafont@paren\bxjs@tmpa
3959\edef\bxjs@tmpa{\bxjs@catopt\bxjs@tmpa\bxjs@jp@font}
3960\ifx\bxjs@tmpa\@empty\else
3961 \edef\bxjs@next{%
3962 \noexpand\RequirePackage[\bxjs@tmpa]{pxchfon}[2010/05/12]% v0.5
3963 }\bxjs@next
3964\fi
137
■otfパッケージ対策 インストールされているotfパッケージが scale オプションに対 応している場合はscale=(\jsScaleの値)を事前に otfに渡す。
※scale対応は1.7b6版[2013/11/17]から。
※otf.sty の中に「\RequirePackage{keyval}」の行が存在するかにより判定している。
(もっといい方法はないのか……。)
3965\begingroup
3966 \global\let\bxjs@g@tmpa\relax
3967 \catcode`\|=0 \catcode`\\=12
3968 |def|bxjs@tmpdo#1|@nil{%
3969 |bxjs@tmpdo@a#1|@nil\RequirePackage|@nnil}%
3970 |def|bxjs@tmpdo@a#1\RequirePackage#2|@nnil{%
3971 |ifx$#1$|bxjs@tmpdo@b#2|@nil keyval|@nnil |fi}%
3972 |catcode`|\=0 \catcode`\|=12
3973 \def\bxjs@tmpdo@b#1keyval#2\@nnil{%
3974 \ifx$#2$\else
3975 \xdef\bxjs@g@tmpa{%
3976 \noexpand\PassOptionsToPackage{scale=\jsScale}{otf}}%
3977 \fi}
3978\@firstofone{%
3979 \catcode10=12 \endlinechar\m@ne
3980 \let\do\@makeother \dospecials \catcode32=10
3981 \openin\@inputcheck=otf.sty\relax
3982 \@tempswatrue
3983 \loop\if@tempswa
3984 \ifeof\@inputcheck \@tempswafalse \fi
3985 \if@tempswa
3986 \read\@inputcheck to\bxjs@next
3987 \expandafter\bxjs@tmpdo\bxjs@next\@nil
3988 \fi
3989 \repeat
3990 \closein\@inputcheck
3991\endgroup}
3992\bxjs@g@tmpa
■hyperref対策 unicodeにしてはいけない。
3993\ifbxjs@hyperref@enc
3994 \bxjs@check@hyperref@unicode{false}
3995\fi
tounicodespecial命令を出力する。
3996\if \ifx\bxjs@driver@given\bxjs@driver@@dvipdfmx T%
3997 \else\ifjsWithpTeXng T\else F\fi\fi T%
3998 \ifnum\jis"2121="A1A1 %euc
3999 \bxjs@urgent@special{pdf:tounicode EUC-UCS2}
4000 \else\ifnum\jis"2121="8140 %sjis
4001 \bxjs@urgent@special{pdf:tounicode 90ms-RKSJ-UCS2}
4002 \else\ifnum\jis"2121="3000 %uptex
4003 \ifbxjs@bigcode
4004 \bxjs@urgent@special{pdf:tounicode UTF8-UTF16}
4005 \PassOptionsToPackage{bigcode}{pxjahyper}
4006 \else
4007 \bxjs@urgent@special{pdf:tounicode UTF8-UCS2}
4008 \fi
4009 \fi\fi\fi
4010 \let\bxToUnicodeSpecialDone=t
4011\fi
■和文数式ファミリ 和文数式ファミリは既定で有効とする。すなわちenablejfam=false 以外の場合は@enablejfamを真にする。
4012\ifx f\bxjs@enablejfam\else
4013 \@enablejfamtrue
4014\fi
実際に和文用の数式ファミリの設定を行う。
4015\if@enablejfam
4016 \DeclareSymbolFont{mincho}{\jsc@JYn}{mc}{m}{n}
4017 \DeclareSymbolFontAlphabet{\mathmc}{mincho}
4018 \SetSymbolFont{mincho}{bold}{\jsc@JYn}{gt}{m}{n}
4019 \jfam\symmincho
4020 \DeclareMathAlphabet{\mathgt}{\jsc@JYn}{gt}{m}{n}
4021 \g@addto@macro\bxjs@begin@document@hook{%
4022 \ifx\reDeclareMathAlphabet\@undefined\else
4023 \reDeclareMathAlphabet{\mathrm}{\@mathrm}{\@mathmc}%
4024 \reDeclareMathAlphabet{\mathbf}{\@mathbf}{\@mathgt}%
4025 \reDeclareMathAlphabet{\mathsf}{\@mathsf}{\@mathgt}%
4026 \fi}
4027\fi