summaryrefslogtreecommitdiff
path: root/language/japanese/BX/bxbase/zxbase.sty
diff options
context:
space:
mode:
Diffstat (limited to 'language/japanese/BX/bxbase/zxbase.sty')
-rw-r--r--language/japanese/BX/bxbase/zxbase.sty149
1 files changed, 149 insertions, 0 deletions
diff --git a/language/japanese/BX/bxbase/zxbase.sty b/language/japanese/BX/bxbase/zxbase.sty
new file mode 100644
index 0000000000..4d5b2baef3
--- /dev/null
+++ b/language/japanese/BX/bxbase/zxbase.sty
@@ -0,0 +1,149 @@
+%%
+%% This is file 'zxbase.sty'.
+%%
+%% Copyright (c) 2017 Takayuki YATO (aka. "ZR")
+%% GitHub: https://github.com/zr-tex8r
+%% Twitter: @zr_tex8r
+%%
+%% This package is distributed under the MIT License.
+%%
+
+%% package declaration
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{zxbase}[2017/05/29 v1.1]
+\RequirePackage{ifxetex}
+\RequireXeTeX
+
+%% preparations
+\RequirePackage{bxbase}
+\def\zx@pkgname{zxbase}
+
+%--------------------------------------- generic family detection
+
+%%<+> \zxSpecFamily / \zxRMFamily / \zxSFFamily / \zxTTFamily
+% The constants signifying each generic family.
+% These values can be considered as fixed, so you can say i.e.
+% "\ifnum\zxGFFlag<\zxSFFamily <non-sans> \else <sans> \fi"
+\chardef\zxSpecFamily=0
+\chardef\zxRMFamily=1
+\chardef\zxSFFamily=2
+\chardef\zxTTFamily=3
+
+%% \zx@set@genfamflag
+% A patch to be inserted to \selectfont. This makes \selectfont
+% set a right \zx..Family constant to \zxGFFlag.
+\def\zx@set@genfamflag{%
+ \zx@set@gff@get\zx@curfam\f@family
+ \let\zxGFFlag\zxSpecFamily
+ \zx@set@gff@match\ttdefault\zxTTFamily
+ \zx@set@gff@match\sfdefault\zxSFFamily
+ \zx@set@gff@match\rmdefault\zxRMFamily}
+\def\zx@set@gff@get#1#2{%
+ \expandafter\let\expandafter#1\csname
+ zf@family@fontname#2\endcsname
+ \ifx#1\relax \edef#1{#2}\fi}
+\def\zx@set@gff@match#1#2{%
+ \zx@set@gff@get\zx@genfam#1%
+ \ifx\zx@genfam\zx@curfam \let\zxGFFlag#2\fi}
+
+%%<+> \zxBDHookGenFamFlag
+\def\zxBDHookGenFamFlag{\zx@bdhook@genfamflag@do}
+\@onlypreamble\zx@bdhook@genfamflag@do
+\def\zx@bdhook@genfamflag@do{%
+ \expandafter\zx@bdhook@genfamflag@a\csname selectfont \endcsname
+ \let\zx@bdhook@genfamflag@do\relax}
+\@onlypreamble\zx@bdhook@genfamflag@a
+\def\zx@bdhook@genfamflag@a#1{%
+ \expandafter\def\expandafter#1\expandafter{%
+ \expandafter\zx@set@genfamflag#1}}
+
+%--------------------------------------- forge pTeX primitives
+% It is not totally safe, but is required so as to make
+% the 'ajmacros' package work.
+
+%%<+> \zxBDHookForgepTeXDir
+\def\zxBDHookForgepTeXDir{\zx@bdhook@forgeptexdir@do}
+\@onlypreamble\zx@bdhook@forgeptexdir@do
+\def\zx@bdhook@forgeptexdir@do{%
+ \zx@letconstif{ydir}{true}\zx@letconstif{tdir}{false}%
+ \ifx\yoko\@undefined \let\yoko\relax \fi
+ \ifx\tate\@undefined \let\tate\relax \fi
+}
+\def\zx@letconstif#1#2{%
+ \ifcsname if#1\endcsname\else
+ \expandafter\let\csname if#1\expandafter\endcsname
+ \csname if#2\endcsname \fi}
+
+%--------------------------------------- load pLaTeX packages
+
+%%<+> switch 'zxPPInUTFEight'
+\newif\ifzxPPInUTFEight
+
+%% variables
+\newif\ifzx@jisenc
+
+%% errors
+\def\zx@err@ukenc#1{\PackageError\zx@pkgname
+ {File '#1' is in unknown encoding}%
+ {The file must be encoded in ISO-2022-JP or UTF-8.}}
+
+%%<+> \zxRequirepLaTeXPackage{<package>}
+\@onlypreamble\zxRequirepLaTeXPackage
+\def\zxRequirepLaTeXPackage#1{%
+ \ifzxPPInUTFEight \zx@jisencfalse
+ \else \zx@checkjisorutfeight{#1.\@pkgextension}%
+ \ifcase\zx@joru \zx@err@ukenc{#1.\@pkgextension}\or
+ \zx@jisenctrue \else \zx@jisencfalse \fi
+ \fi
+ \let\NeedsTeXFormat\zx@mute@NeedsTeXFormat
+ \ifzx@jisenc \XeTeXdefaultencoding ISO-2022-JP\relax \fi
+ \RequirePackage{#1}\relax
+ \ifzx@jisenc \XeTeXdefaultencoding auto\relax \fi
+ \let\NeedsTeXFormat\zx@org@NeedsTeXFormat
+}
+
+%% \zx@mute@NeedsTeXFormat
+\def\zx@mute@NeedsTeXFormat#1{\@ifnextchar[{\zx@mute@ntf@a}{\relax}}
+\def\zx@mute@ntf@a[#1]{\relax}
+\let\zx@org@NeedsTeXFormat\NeedsTeXFormat
+
+%% \zx@checkjisorutfeight{<file>}
+% Decides whether <file> is encoded in JIS or UTF-8 and sets to \zx@joru.
+% 0:binary; 1:JIS; 2:UTF-8; 3:US-ASCII
+\def\zx@checkjisorutfeight#1{%
+ \begingroup
+ \XeTeXdefaultencoding bytes\relax
+ \let\zx@c@ctl=f\def\zx@found@ctl{\let\zx@c@ctl=t}%
+ \let\zx@c@esc=f\def\zx@found@esc{\let\zx@c@esc=t}%
+ \let\zx@c@high=f\def\zx@found@high{\let\zx@c@high=t}%
+ \zx@make@activelet{0}{32}\zx@found@ctl
+ \zx@make@ignorable{32}{127}%
+ \zx@make@activelet{127}{128}\zx@found@ctl
+ \zx@make@activelet{128}{256}\zx@found@high
+ \zx@make@activelet{27}{28}\zx@found@esc
+ \catcode13=5 \catcode32=10 \catcode9=10 \catcode`\~=9
+ \@@input"#1"\relax
+ \if t\zx@c@ctl \global\chardef\zx@g@joru0
+ \else\if t\zx@c@esc \global\chardef\zx@g@joru1
+ \else\if t\zx@c@high \global\chardef\zx@g@joru2
+ \else \global\chardef\zx@g@joru3 \fi\fi\fi
+ \XeTeXdefaultencoding auto\relax
+ \endgroup
+ \let\zx@joru\zx@g@joru}
+\def\zx@make@activelet#1#2#3{%
+ \catcode`\~=\active \let\zx@tmpx=#3\relax
+ \@tempcnta#1\relax\loop
+ \catcode\@tempcnta\active \lccode`\~=\@tempcnta
+ \lowercase{\let~\zx@tmpx}%
+ \advance\@tempcnta\@ne \ifnum\@tempcnta<#2 \repeat}
+\def\zx@make@ignorable#1#2{%
+ \@tempcnta#1\relax\loop \catcode\@tempcnta9
+ \advance\@tempcnta\@ne \ifnum\@tempcnta<#2 \repeat}
+
+%%<*> \platexpackagesinunicode
+\@onlypreamble\platexpackagesinunicode
+\newcommand*\platexpackagesinunicode{\zxPPInUTFEighttrue}
+
+%--------------------------------------- all done
+\endinput
+%% EOF