%% %% This is file 'bxghost-lib.sty'. %% %% Copyright 2019-2023 Takuto Asakura (wtsnjp) %% GitHub: https://github.com/wtsnjp %% Twitter: @wtsnjp %% %% This package is distributed under the MIT License. %% %% package declaration \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{bxghost-lib}[2023/02/26 v0.5.1] %% preparations \def\bxqgg@pkgname{bxghost} \def\bxqgg@warn{\PackageWarningNoLine\bxqgg@pkgname} %--------------------------------------- general %% \bxqgg@engine : engine type \def\bxqgg@next#1#2{% \edef\bxqgg@tmpa{\string#1}\edef\bxqgg@tmpb{\meaning#1}% \ifx\bxqgg@tmpa\bxqgg@tmpb #2\fi} \chardef\bxqgg@engine=0 % other TeX \bxqgg@next\kanjiskip{% \ifnum\jis"2121="3000 \chardef\bxqgg@engine=2 % upTeX \else \chardef\bxqgg@engine=1 % pTeX \fi} \bxqgg@next\luatexversion{\chardef\bxqgg@engine=3 }% LuaTeX \bxqgg@next\XeTeXversion {\chardef\bxqgg@engine=4 }% XeTeX %--------------------------------------- not supported engine \ifnum\bxqgg@engine=\z@ \bxqgg@warn{This engine is not supported, sorry} \expandafter\endinput \fi %--------------------------------------- load LuaTeX-ja \ifnum\bxqgg@engine=\thr@@ \RequirePackage{luatexja} \@ifpackageloaded{luatexja-adjust}{}{% \RequirePackage{luatexja-adjust}\ltjdisableadjust} \fi %--------------------------------------- eghostguarded % use an arbitrary font available in T1 encoding \font\bxqgg@TI=ec-lmr10 at 1.23456pt \chardef\bxqgg@cwm=23 % compwordmark (in T1) % allow xkanjiskip around % Note: for XeTeX, xeCJK will handle nicely. We have nothing to do :) \ifcase\bxqgg@engine \or % pTeX \xspcode\bxqgg@cwm=3\relax \or % upTeX \xspcode\bxqgg@cwm=3\relax \or % LuaTeX \ltjsetparameter{alxspmode={\bxqgg@cwm,3}} \fi %%<*> \eghostguarded{} \newcommand*\eghostguarded{% \ifmmode \expandafter\@firstofone \else \expandafter\bxqgg@eghostguarded@a \fi } \def\bxqgg@eghostguarded@a#1{% \bxqgg@eghost #1\bxqgg@eghost} \def\bxqgg@eghost{\bgroup \bxqgg@TI\bxqgg@cwm\egroup} %--------------------------------------- jghostguarded %% \bxqgg@fwsp: a zenkaku space (U+3000) \begingroup \ifnum\bxqgg@engine<\thr@@ % (u)pTeX \kansujichar\@ne=\jis"2121\relax \xdef\bxqgg@fwsp{\kansuji\@ne} \else % others \lccode`\Z="3000\relax \lowercase{\xdef\bxqgg@fwsp{Z}} \fi \endgroup % make sure to use a font whose zenkaku space is class zero \let\bxqgg@jafont\relax \ifcase\bxqgg@engine \or % pTeX \DeclareFontFamily{JY1}{bxqgg}{} \DeclareFontFamily{JT1}{bxqgg}{} \DeclareFontShape{JY1}{bxqgg}{m}{n}{<->s*[0.961]jis}{} \DeclareFontShape{JT1}{bxqgg}{m}{n}{<->s*[0.961]tmin10}{} \def\bxqgg@jafont{\usekanji{\k@encoding}{bxqgg}{m}{n}} \or % upTeX \DeclareFontFamily{JY2}{bxqgg}{} \DeclareFontFamily{JT2}{bxqgg}{} \DeclareFontShape{JY2}{bxqgg}{m}{n}{<->s*[0.92469]upjisr-h}{} \DeclareFontShape{JT2}{bxqgg}{m}{n}{<->s*[0.92469]upjisr-v}{} \def\bxqgg@jafont{\usekanji{\k@encoding}{bxqgg}{m}{n}} \fi %% \bxqgg@kern@m@ne@zw: a negative zenkaku width kern \ifnum\bxqgg@engine<\thr@@ % (u)pTeX knows the unit `zw' \def\bxqgg@kern@m@ne@zw{\kern-1zw\relax} \else % for other engines, we use \zw instead \def\bxqgg@kern@m@ne@zw{\kern-1\zw\relax} \fi %%<*> \jghostguarded{} \newcommand*\jghostguarded{% \ifmmode \expandafter\@firstofone \else \expandafter\bxqgg@jghostguarded@a \fi } \edef\bxqgg@jghostguarded@a#1{% \bgroup \noexpand\bxqgg@jafont \bxqgg@fwsp\bxqgg@kern@m@ne@zw \egroup #1% \bgroup \noexpand\bxqgg@jafont \bxqgg@kern@m@ne@zw\bxqgg@fwsp \egroup } % better definition for LuaTeX-ja (20220211.0 or later) \ifnum\bxqgg@engine=\thr@@ % LuaTeX \ifx\ltjghostbeforejachar\@undefined\else \def\bxqgg@jghostguarded@a#1{% \ltjghostbeforejachar #1\ltjghostafterjachar } \fi \fi %--------------------------------------- all done \endinput %% EOF