diff options
Diffstat (limited to 'language/japanese/BX/bxghost/bxghost-lib.sty')
-rw-r--r-- | language/japanese/BX/bxghost/bxghost-lib.sty | 143 |
1 files changed, 143 insertions, 0 deletions
diff --git a/language/japanese/BX/bxghost/bxghost-lib.sty b/language/japanese/BX/bxghost/bxghost-lib.sty new file mode 100644 index 0000000000..00a148deed --- /dev/null +++ b/language/japanese/BX/bxghost/bxghost-lib.sty @@ -0,0 +1,143 @@ +%% +%% This is file 'bxghost-lib.sty'. +%% +%% Copyright 2019-2022 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}[2022/05/20 v0.5.0] + +%% 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 {\chardef\bxqgg@engine=1 }% pTeX +\bxqgg@next\enablecjktoken{\chardef\bxqgg@engine=2 }% upTeX +\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{<text>} +\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{<text>} +\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 |