4162\else\if l\jsEngine
143
■LuaTEX-jaパッケージの読込 luatexjaとともにluatexja-fontspecパッケージを読 み込む。
luatexjaは自前の\zw(これは実際の現在和文フォントに基づく値を返す)を定義する ので、\zwの定義を消しておく。なお、レイアウト定義の「全角幅」は「規定」に基づく
\jsZwであることに注意が必要。
※1.0b版から「graphicsパッケージにpdftex オプションを渡す」処理を行っていたが、
1.4版で廃止された。
4163\let\zw\@undefined
4164\RequirePackage{luatexja}
4165\edef\bxjs@next{%
4166 \noexpand\RequirePackage[scale=\jsScale]{luatexja-fontspec}[2015/08/26]%
4167}\bxjs@next
フォント代替の明示的定義。
4168\DeclareFontShape{JY3}{mc}{m}{it}{<->ssub*mc/m/n}{}
4169\DeclareFontShape{JY3}{mc}{m}{sl}{<->ssub*mc/m/n}{}
4170\DeclareFontShape{JY3}{mc}{m}{sc}{<->ssub*mc/m/n}{}
4171\DeclareFontShape{JY3}{gt}{m}{it}{<->ssub*gt/m/n}{}
4172\DeclareFontShape{JY3}{gt}{m}{sl}{<->ssub*gt/m/n}{}
4173\DeclareFontShape{JY3}{mc}{bx}{it}{<->ssub*gt/m/n}{}
4174\DeclareFontShape{JY3}{mc}{bx}{sl}{<->ssub*gt/m/n}{}
4175\DeclareFontShape{JY3}{gt}{bx}{it}{<->ssub*gt/m/n}{}
4176\DeclareFontShape{JY3}{gt}{bx}{sl}{<->ssub*gt/m/n}{}
4177\DeclareFontShape{JY3}{mc}{b}{n}{<->ssub*mc/bx/n}{}
4178\DeclareFontShape{JY3}{mc}{b}{it}{<->ssub*mc/bx/n}{}
4179\DeclareFontShape{JY3}{mc}{b}{sl}{<->ssub*mc/bx/n}{}
4180\DeclareFontShape{JY3}{gt}{b}{n}{<->ssub*gt/bx/n}{}
4181\DeclareFontShape{JY3}{gt}{b}{it}{<->ssub*gt/bx/n}{}
4182\DeclareFontShape{JY3}{gt}{b}{sl}{<->ssub*gt/bx/n}{}
4183\DeclareFontShape{JT3}{mc}{m}{it}{<->ssub*mc/m/n}{}
4184\DeclareFontShape{JT3}{mc}{m}{sl}{<->ssub*mc/m/n}{}
4185\DeclareFontShape{JT3}{mc}{m}{sc}{<->ssub*mc/m/n}{}
4186\DeclareFontShape{JT3}{gt}{m}{it}{<->ssub*gt/m/n}{}
4187\DeclareFontShape{JT3}{gt}{m}{sl}{<->ssub*gt/m/n}{}
4188\DeclareFontShape{JT3}{mc}{bx}{it}{<->ssub*gt/m/n}{}
4189\DeclareFontShape{JT3}{mc}{bx}{sl}{<->ssub*gt/m/n}{}
4190\DeclareFontShape{JT3}{gt}{bx}{it}{<->ssub*gt/m/n}{}
4191\DeclareFontShape{JT3}{gt}{bx}{sl}{<->ssub*gt/m/n}{}
4192\DeclareFontShape{JT3}{mc}{b}{n}{<->ssub*mc/bx/n}{}
4193\DeclareFontShape{JT3}{mc}{b}{it}{<->ssub*mc/bx/n}{}
4194\DeclareFontShape{JT3}{mc}{b}{sl}{<->ssub*mc/bx/n}{}
4195\DeclareFontShape{JT3}{gt}{b}{n}{<->ssub*gt/bx/n}{}
4196\DeclareFontShape{JT3}{gt}{b}{it}{<->ssub*gt/bx/n}{}
4197\DeclareFontShape{JT3}{gt}{b}{sl}{<->ssub*gt/bx/n}{}
■和 文 フ ォ ン ト 定 義 \jsJaFont が 指 定 さ れ た 場 合 は、 そ の 値 を オ プ シ ョ ン と し て luatexja-presetを読み込む。非指定の場合は、luatexja-presetパッケージのipaex
オプション(IPAexフォント使用)と等価な設定を用いる(luatexja-presetは読み込ま ない)。
4198\bxjs@adjust@jafont{t}
4199\ifx\bxjs@tmpa\bxjs@@noEmbed
4200 \def\bxjs@tmpa{noembed}
4201\fi
4202\let\bxjs@jafont@paren\@gobble
4203\bxjs@resolve@jafont@paren\bxjs@tmpa
4204\edef\bxjs@tmpa{\bxjs@catopt\bxjs@tmpa\bxjs@jp@font}
4205\ifx\bxjs@tmpa\@empty
4206 \defaultjfontfeatures{ Kerning=Off }
4207 \setmainjfont[BoldFont=IPAexGothic,JFM=ujis]{IPAexMincho}
4208 \setsansjfont[BoldFont=IPAexGothic,JFM=ujis]{IPAexGothic}
4209\else
4210 \edef\bxjs@next{%
4211 \noexpand\RequirePackage[\bxjs@tmpa]{luatexja-preset}%
4212 }\bxjs@next
4213\fi
欧文総称フォント命令で和文フォントが連動するように修正する。その他の和文フォント 関係の定義を行う。
4214\DeclareRobustCommand\rmfamily
4215 {\not@math@alphabet\rmfamily\mathrm
4216 \romanfamily\rmdefault\kanjifamily\mcdefault\selectfont}
4217\DeclareRobustCommand\sffamily
4218 {\not@math@alphabet\sffamily\mathsf
4219 \romanfamily\sfdefault\kanjifamily\gtdefault\selectfont}
4220\DeclareRobustCommand\ttfamily
4221 {\not@math@alphabet\ttfamily\mathtt
4222 \romanfamily\ttdefault\kanjifamily\gtdefault\selectfont}
4223\g@addto@macro\bxjs@begin@document@hook{%
4224 \reDeclareMathAlphabet{\mathrm}{\mathrm}{\mathmc}
4225 \reDeclareMathAlphabet{\mathbf}{\mathbf}{\mathgt}%
4226 \reDeclareMathAlphabet{\mathsf}{\mathsf}{\mathgt}}%
4227\bxjs@if@sf@default{%
4228 \renewcommand\kanjifamilydefault{\gtdefault}}
■和文パラメタの設定
4229% 次の3つは既定値の通り
4230%\ltjsetparameter{prebreakpenalty={`’,10000}}
4231%\ltjsetparameter{postbreakpenalty={`“,10000}}
4232%\ltjsetparameter{prebreakpenalty={`”,10000}}
4233\ltjsetparameter{jaxspmode={`!,1}}
4234\ltjsetparameter{jaxspmode={`〒,2}}
4235\ltjsetparameter{alxspmode={`+,3}}
4236\ltjsetparameter{alxspmode={`\%,3}}
■段落頭でのグルー挿入禁止 基本的に現状のltjs*クラスの処理に合わせる。
145
※\jsInhibitGlueAtParTopは使わない。
\ltjfakeparbegin 現在のLuaTEX-jaで定義されているマクロで、段落中で段落冒頭用の処理を発動する。未
定義である場合にに備えて同等のものを用意する。
4237\ifx\ltjfakeparbegin\@undefined
4238 \protected\def\ltjfakeparbegin{%
4239 \ifhmode
4240 \relax\directlua{%
4241 luatexja.jfmglue.create_beginpar_node()}}
4242 \fi}
4243\fi
ltjs*クラスの定義と同等になるようにパッチを当てる。
4244\unless\ifnum\bxjs@everyparhook=\bxjs@everyparhook@none
4245\begingroup
4246 \let\%\@percentchar \def\@#1{[[\detokenize{#1}]]}
4247 \@gobble\if\def\bxjs@tmpa{\@{\everypar{}\fi}}
4248 \ifnum\bxjs@everyparhook=\bxjs@everyparhook@compat
4249 \@gobble\if\def\bxjs@tmpa{\@{\everypar{\everyparhook}\fi}}\fi
4250 \directlua{
4251 local function patchcmd(cs, code, from, to)
4252 tex.sprint(code:gsub(from:gsub("\%W", "\%\%\%0"), "\%0"..to)
4253 :gsub("macro:", \@\gdef..cs, 1):gsub("->", "{", 1).."}")
4254 end
4255 patchcmd(\@\@xsect, [[\meaning\@xsect]],
4256 \@{\hskip-\@tempskipa}, \@\ltjfakeparbegin)
4257 patchcmd(\@\@item, [[\meaning\@item]],
4258 \bxjs@tmpa, \@\ltjfakeparbegin)}
4259\endgroup
4260\fi
■hyperref対策 unicodeにするべき。
※1.6c版より、固定ではなく既定設定+検証に切り替えた。
4261\ifbxjs@hyperref@enc
4262 \PassOptionsToPackage{unicode}{hyperref}
4263 \bxjs@check@hyperref@unicode{true}
4264\fi
■共通命令の実装
4265\protected\def\autospacing{%
4266 \ltjsetparameter{autospacing=true}}
4267\protected\def\noautospacing{%
4268 \ltjsetparameter{autospacing=false}}
4269\protected\def\autoxspacing{%
4270 \ltjsetparameter{autoxspacing=true}}
4271\protected\def\noautoxspacing{%
4272 \ltjsetparameter{autoxspacing=false}}
4273\def\bxjs@apply@kanjiskip{%
4274 \ltjsetparameter{kanjiskip={\@tempskipa}}}
4275\def\bxjs@apply@xkanjiskip{%
4276 \ltjsetparameter{xkanjiskip={\@tempskipa}}}
\jacharのサブマクロの実装。
4277\def\bxjs@jachar#1{%
4278 \ltjjachar`#1\relax}
\jathinspaceの実装。
4279\ifbxjs@jaspace@cmd
4280 \protected\def\jathinspace{%
4281 \hskip\ltjgetparameter{xkanjiskip}\relax}
4282\fi
■和文数式ファミリ LuaTEX-jaでは和文数式ファミリは常に有効で、既にこの時点で必要 な設定は済んでいる。従って@enablejfamは常に真になる。
4283\ifx f\bxjs@enablejfam
4284 \ClassWarningNoLine\bxjs@clsname
4285 {You cannot use 'enablejfam=false', since the\MessageBreak
4286 LuaTeX-ja always provides Japanese math families}
4287\fi