%% %% This is file 'pxbabel.sty'. %% %% Copyright (c) 2008-2023 Takayuki YATO (aka. "ZR") %% GitHub: https://github.com/zr-tex8r %% Twitter: @zr_tex8r %% %% This package is distributed under the MIT License. %% %% package declaration \NeedsTeXFormat{pLaTeX2e} \ProvidesPackage{pxbabel}[2023/02/25 v1.4 PX Babel interface for CJK] \def\pxbb@pkgname{pxbabel} %--------------------------------------- general %% packages \RequirePackage{pxbase} \RequirePackage{ifptex} \safecaret \bxPrepareSetKeysSafe %% error messages \bxSetModuleName\pxbb@pkgname \bxPreamble\def\pxbb@warn@nocjk{% \PackageWarningNoLine\pxbb@pkgname {No multi-CJK support found, font switch disabled\MessageBreak (I need upTeX-extension or otf package with `multi')}} \bxPreamble\def\pxbb@err@noldf#1{% \PackageError\pxbb@pkgname {Language definition file #1.ldf not found}% {Maybe you misspelled the language option?\MessageBreak\@ehc}} \bxPreamble\def\pxbb@err@nomnl{% \PackageError\pxbb@pkgname {Main language is not specified}% {Here 'japanese' is assumed.\MessageBreak\@ehc}} \bxPreamble\def\pxbb@warn@jafam#1{% \PackageWarningNoLine\pxbb@pkgname {!!!!!!!!!!!!!!! IMPORTANT NOTICE !!!!!!!!!!!!!!!\MessageBreak Default Japanese family names have been changed\MessageBreak after this package was loaded. The functionality\MessageBreak of the package may be corrupted!\MessageBreak \if t#1% (You must load 'otf' package before this package.)\MessageBreak \fi !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!}} \bxPreamble\def\pxbb@err@ivval#1#2{% \PackageError\pxbb@pkgname {Invalid value for '#1': #2}% {\@eha}} %--------------------------------------- Processing package options %% \pxbb@cjk@langid@list % The list of all CJK language ids. \bxPreamble\def\pxbb@cjk@langid@list{% japanese,korean,schinese,tchinese% } %% \pxbb@lang@load@list % The list of language options to be loaded. \bxPreamble\let\pxbb@lang@load@list\@empty %% \pxbb@set@lang@spec{}{[+]} \bxPreamble\def\pxbb@set@lang@spec#1#2{% \edef\pxbb@args{#2}% \expandafter\pxbb@set@lang@spec@a\pxbb@args\@nil{#1}} \bxPreamble\def\pxbb@set@lang@spec@a#1#2\@nil#3{% \bxIf{+#1}% {\csdef{pxbb@langname/#3}{#2}% \appto\pxbb@lang@load@list{,#2}}% {\csdef{pxbb@langname/#3}{#1#2}}} %% keyval settings % (=[+]) \bxForEachIn\pxbb@cjk@langid@list\do{% \define@key{pxbabel}{#1}{\pxbb@set@lang@spec{#1}{##1}}% \pxbb@set@lang@spec{#1}{#1}} % (main=) \bxPreamble\let\pxbb@main@lang\relax \define@key{pxbabel}{main}{\def\pxbb@main@lang{#1}} % (caption=) \bxPreamble\def\pxbb@caption@lang{default} \define@key{pxbabel}{caption}{\def\pxbb@caption@lang{#1}} %% option handling \DeclareOption{switchcaption}{% \def\pxbb@caption@lang{switch}} \DeclareOption{noswitchcaption}{% \def\pxbb@caption@lang{default}} \newbool{pxbb@switchfont}\pxbb@switchfonttrue \DeclareOption{switchfont}{\pxbb@switchfonttrue} \DeclareOption{noswitchfont}{\pxbb@switchfontfalse} \newbool{pxbb@prefermmivjis} \DeclareOption{prefer2004jis}{\pxbb@prefermmivjistrue} \DeclareOption{noprefer2004jis}{\pxbb@prefermmivjisfalse} \DeclareOption{jis2004}{\pxbb@prefermmivjistrue} \DeclareOption{nojis2004}{\pxbb@prefermmivjisfalse} \newbool{pxbb@stdjaencoding} \bxIfExpToEqualX{\mcdefault}{mc}{}{\pxbb@stdjaencodingtrue}% default \DeclareOption{stdjaencoding}{\pxbb@stdjaencodingtrue} \DeclareOption{nostdjaencoding}{\pxbb@stdjaencodingfalse} \newbool{pxbb@patchutfcmds} \DeclareOption{patchutfcmds}{\pxbb@patchutfcmdstrue} \DeclareOption{nopatchutfcmds}{\pxbb@patchutfcmdsfalse} \chardef\pxbb@deluxemulti@@false=0 \chardef\pxbb@deluxemulti@@old=1 \chardef\pxbb@deluxemulti@@new=2 \chardef\pxbb@deluxemulti@@true=2 \chardef\pxbb@deluxemulti\pxbb@deluxemulti@@false \define@key{pxbabel}{deluxemulti}[true]{% \bxIfcsdef{pxbb@deluxemulti@@#1}{% \letcs\pxbb@deluxemulti{pxbb@deluxemulti@@#1}% }{\pxbb@err@ivval{deluxemulti}{#1}}} \DeclareOption{nodeluxemulti}{% \chardef\pxbb@deluxemulti\pxbb@deluxemulti@@false} \DeclareOption{forcedeluxemulti}{% \chardef\pxbb@deluxemulti\pxbb@deluxemulti@@old} \DeclareOption{noforcedeluxemulti}{% \chardef\pxbb@deluxemulti\pxbb@deluxemulti@@false} % (, +) \bxPreamble\let\pxbb@last@lang\relax \bxForEachIn\pxbb@cjk@langid@list\do{% \DeclareOption{#1}{% \pxbb@set@lang@spec{#1}{#1}% \def\pxbb@last@lang{#1}}% \DeclareOption{+#1}{% \pxbb@set@lang@spec{#1}{+#1}% \def\pxbb@last@lang{#1}}} % (options processed by keyval) \DeclareOption*{% \bxWithArgExpd{\CurrentOption}\do{% \bxSetKeysSafe{pxbabel}{#1}% \bxIfx{\bxRestKeys\@empty}{}% {\appto\pxbb@lang@load@list{,#1}% \def\pxbb@last@lang{#1}}}} \ProcessOptions* \bxChompComma\pxbb@lang@load@list %% 'triv' language check table \bxForEachIn\pxbb@cjk@langid@list\do{% \cslet{pxbb@triv/\@nameuse{pxbb@langname/#1}}{t}} \bxForEachIn\pxbb@lang@load@list\do{% \csundef{pxbb@triv/#1}} %--------------------------------------- Resolving settings %% \ifpxbb@otf %% \ifpxbb@otfmulti \newbool{pxbb@otf} \newbool{pxbb@otfmulti} \@ifpackageloaded{otf}{\pxbb@otftrue}{} \@ifpackageloaded{mlutf}{\pxbb@otfmultitrue}{} %% \ifpxbb@otfdeluxe \newbool{pxbb@otfdeluxe} \@ifpackagewith{otf}{deluxe}{\pxbb@otfdeluxetrue}{} %% \ifpxbb@babel \newbool{pxbb@babel} \@ifpackageloaded{babel}{\pxbb@babeltrue}{} %% environment check % The feature 'switchfont' requires multi-CJK support. \ifpxbb@switchfont \ifpxbb@otfmulti\else \ifnativeupTeX\else \pxbb@warn@nocjk \pxbb@switchfontfalse \fi\fi\fi % Check if 'patchutfcmds' is available. \ifpxbb@patchutfcmds \PackageWarningNoLine\pxbb@pkgname {Option 'patchutfcmds' is abolished} \fi % Check if 'deluxemulti' is available. \ifnum\pxbb@deluxemulti=\pxbb@deluxemulti@@false\else \ifnativeupTeX\else \PackageWarningNoLine\pxbb@pkgname {Option 'forcedeluxemulti' is invalid, since\MessageBreak the engine is not upLaTeX} \let\pxbb@deluxemulti\pxbb@deluxemulti@@false \fi \ifpxbb@otfmulti\else \PackageWarningNoLine\pxbb@pkgname {Option 'forcedeluxemulti' is invalid, since\MessageBreak package 'otf' is not loaded with 'multi'} \let\pxbb@deluxemulti\pxbb@deluxemulti@@false \fi \fi %% resolve the expected main language \ifundef\pxbb@main@lang{%then % if 'main' is not specified \ifbool{pxbb@babel}% % in separate loading, main is unchanged {\let\pxbb@main@lang\bbl@main@language}% % in lumped loading, main is the one specified last {\let\pxbb@main@lang\pxbb@last@lang}% }{} % if main is unknown, complain \ifx\pxbb@main@lang\relax \pxbb@err@nomnl \letcs\pxbb@main@lang{pxbb@langname/japanese} \fi %% resolve the caption language setting \bxIfExpToEqual{\pxbb@caption@lang}{auto}{%then % if 'caption=auto' is given \bxIfcsundef{pxbb@triv/\pxbb@main@lang} % if main is not triv then caption=switch {\def\pxbb@caption@lang{switch}}% % if main is triv then caption=default {\def\pxbb@caption@lang{default}}% }{} \ifx t\bxUseDebug \def\pxbb@bool#1{\ifbool{#1}{yes}{no}} \bxForEachIn\pxbb@cjk@langid@list\do{% \bxDebug{#1 = \@nameuse{pxbb@langname/#1}}} \bxDebug{main = \pxbb@main@lang} \bxDebug{caption = \pxbb@caption@lang} \bxDebug{switchfont = \pxbb@bool{pxbb@switchfont}} \bxDebug{load-list = \pxbb@lang@load@list} \bxDebug{last = \pxbb@last@lang} \bxDebug{babel = \pxbb@bool{pxbb@babel}} \bxDebug{otfmulti = \pxbb@bool{pxbb@otfmulti}} \fi %--------------------------------------- lumped loading \ifpxbb@babel\else %% load Babel \let\pxbb@tmpa\pxbb@lang@load@list \ifx\pxbb@tmpa\@empty \def\pxbb@tmpa{english}\fi \edef\pxbb@tmpa{% \noexpand\RequirePackage[\pxbb@tmpa]{babel}% }\pxbb@tmpa \fi %--------------------------------------- separate loading \ifpxbb@babel %% \pxbb@g@add@lang@proc \bxPreamble\let\pxbb@g@add@lang@proc\@empty \begingroup %% remove languages that are already loaded \let\pxbb@tmpa\@empty \bxForEachIn\pxbb@lang@load@list\do{% \bxIfcsundef{date#1}{\appto\pxbb@tmpa{,#1}}{}} \bxChompComma\pxbb@tmpa \let\pxbb@lang@load@list\pxbb@tmpa \bxDebug{\pxbb@lang@load@list} %% if some language should be added... \ifx\pxbb@lang@load@list\@empty\else \ifdef\bbl@load@language{% \PackageWarning\pxbb@pkgname {Some languages need to be added. Note that the\MessageBreak process of addition is unreliable}% }{%else \PackageError\pxbb@pkgname {Some languages need to be added, but the addition\MessageBreak is not supported because Babel in use is too old}% {The languages to be added will be ignored.\MessageBreak \@ehc}} \fi %% build \pxbb@g@add@lang@proc \bxForEachIn\pxbb@lang@load@list\do{% \csdef{pxbb@use/#1}{t}} \def\pxbb@babel@alias#1#2{% \bxIfcsundef{pxbb@use/#1}{}{%else % if the real name is available, then ok \IfFileExists{#1.ldf}{}{%else \csdef{pxbb@bbl@opt/#1}{\bbl@load@language{#2}}}}} \def\pxbb@babel@load@proc#1{% \bxIfcsundef{pxbb@use/#1}{\@gobble}{%else \csdef{pxbb@bbl@opt/#1}}} % the alias list \pxbb@babel@alias{acadian}{frenchb} \pxbb@babel@alias{afrikaans}{dutch} \pxbb@babel@alias{american}{english} \pxbb@babel@alias{australian}{english} \pxbb@babel@alias{austrian}{germanb} \pxbb@babel@alias{bahasa}{bahasai} \pxbb@babel@alias{bahasai}{bahasai} \pxbb@babel@alias{bahasam}{bahasam} \pxbb@babel@alias{brazil}{portuges} \pxbb@babel@alias{brazilian}{portuges} \pxbb@babel@alias{british}{english} \pxbb@babel@alias{canadian}{english} \pxbb@babel@alias{canadien}{frenchb} \pxbb@babel@alias{francais}{frenchb} \pxbb@babel@alias{french}{frenchb} \pxbb@babel@alias{german}{germanb} \pxbb@babel@alias{hungarian}{magyar} \pxbb@babel@alias{indon}{bahasai} \pxbb@babel@alias{indonesian}{bahasai} \pxbb@babel@alias{lowersorbian}{lsorbian} \pxbb@babel@alias{malay}{bahasam} \pxbb@babel@alias{melayu}{bahasam} \pxbb@babel@alias{meyalu}{bahasam} \pxbb@babel@alias{naustrian}{ngermanb} \pxbb@babel@alias{newzealand}{english} \pxbb@babel@alias{ngerman}{ngermanb} \pxbb@babel@alias{nynorsk}{norsk} \pxbb@babel@alias{portuguese}{portuges} \pxbb@babel@alias{russian}{russianb} \pxbb@babel@alias{UKenglish}{english} \pxbb@babel@alias{ukrainian}{ukraineb} \pxbb@babel@alias{uppersorbian}{usorbian} \pxbb@babel@alias{USenglish}{english} \pxbb@babel@load@proc{hebrew}{% \input{rlbabel.def}\bbl@load@language{hebrew}} \pxbb@babel@load@proc{polutonikogreek}{% \bbl@load@language{greek}\languageattribute{greek}{polutoniko}} %% load addtional languages \bxForEachIn\pxbb@lang@load@list\do{% \gappto\pxbb@g@add@lang@proc{\def\CurrentOption{#1}}% \bxIfcsundef{pxbb@bbl@opt/#1}% {\gappto\pxbb@g@add@lang@proc{\bbl@load@language{#1}}}% {\letcs\pxbb@tmpa{pxbb@bbl@opt/#1}% \xappto\pxbb@g@add@lang@proc{\expandonce{\pxbb@tmpa}}}} \gappto\pxbb@g@add@lang@proc{\let\CurrentOption\@empty} \endgroup % dispatch \pxbb@g@add@lang@proc \fi %--------------------------------------- post-load process %% declare 'triv' languages \bxForEachIn\pxbb@cjk@langid@list\do{% \bxWithArgFullExpd{\@nameuse{pxbb@langname/#1}}\do{% \bxIfcsundefX{date##1}{\bxTrivLangDef{##1}}{}}} \ifundef\datecjkmulti{\bxTrivLangDef{cjkmulti}}{} %% set main language \setmainlanguage{\pxbb@main@lang} %% set caption language \bxIfExpToEqual{\pxbb@caption@lang}{switch}{}%else {\bxProvideCaptionLanguage{\pxbb@caption@lang}} %--------------------------------------- Adding font switch to 'extra's \ifpxbb@otfmulti %----<*otfmulti> %% add \UTF switch to Babel \extras \ifpxbb@switchfont \bxPreamble\def\pxbb@addtoextras@otf#1{% \pxbb@addtoextras@otf@a{\bxCsuseX{pxbb@langname/#1}}} \bxPreamble\def\pxbb@addtoextras@otf@a#1#2{% \csappto{extras#1}{\babel@save\UTF \let\UTF#2}} \pxbb@addtoextras@otf{korean}{\UTFK} \pxbb@addtoextras@otf{schinese}{\UTFC} \pxbb@addtoextras@otf{tchinese}{\UTFT} \pxbb@addtoextras@otf@a{cjkmulti}{\UTFM} \fi % pxbb@switchfont %%<*> \pxUTFJ/\UTFJ \let\pxUTFJ\UTF \AtBeginDocument{% \providecommand*\UTFJ{\pxUTFJ}} \fi %---- \ifnativeupTeX %----<*upTeX> %% preparations \bxRequireDefinition{pxbasenc} \pxBDHookEncSwitchOTF \pxEncSwitchOTF %% declarations for upTeX standatd CJK fonts \pxDeclareBasicCJKEncoding{J20}{J30}% UniJIS \pxDeclareBasicCJKFamily{J20}{!upjpnrm-h}{!upjpngt-h}{*gt}{*gt} \pxDeclareBasicCJKFamily{J30}{!upjpnrm-v}{!upjpngt-v}{*gt}{*gt} \pxDeclareBasicCJKEncoding{J21}{J31}% UniKS \pxDeclareBasicCJKFamily{J21}{!upkorrm-h}{!upkorgt-h}{*gt}{*gt} \pxDeclareBasicCJKFamily{J31}{!upkorrm-v}{!upkorgt-v}{*gt}{*gt} \pxDeclareBasicCJKEncoding{J22}{J32}% UniGB \pxDeclareBasicCJKFamily{J22}{!upschrm-h}{!upschgt-h}{*gt}{*gt} \pxDeclareBasicCJKFamily{J32}{!upschrm-v}{!upschgt-v}{*gt}{*gt} \pxDeclareBasicCJKEncoding{J23}{J33}% UniCNS \pxDeclareBasicCJKFamily{J23}{!uptchrm-h}{!uptchgt-h}{*gt}{*gt} \pxDeclareBasicCJKFamily{J33}{!uptchrm-v}{!uptchgt-v}{*gt}{*gt} \pxDeclareBasicCJKEncoding{J24}{J34}% UniJIS2004 \pxDeclareBasicCJKFamily{J24}{!upjpnrm-h}{!upjpngt-h}{*gt}{*gt} \pxDeclareBasicCJKFamily{J34}{!upjpnrm-v}{!upjpngt-v}{*gt}{*gt} \begingroup \let\pxForceFontDeclaration=f \bxForEachIn{J20,J30,J21,J31,J22,J32,J23,J33,J24,J34}\do{% \pxDeclareExtraCJKFamily{#1}{\mcdefault}{*mc}{*mc}% \pxDeclareExtraCJKFamily{#1}{\gtdefault}{*gt}{*gt}} \endgroup %% declarations for upTeX + otf deluxe CJK fonts \ifpxbb@otfdeluxe % UniJIS \pxDeclareBasicCJKShape{J20}{hmc}{l}{!upnmlminl-h} \pxDeclareBasicCJKShape{J20}{hmc}{m}{!upnmlminr-h} \pxDeclareBasicCJKShape{J20}{hmc}{bx}{!upnmlminb-h} \pxDeclareBasicCJKShape{J20}{hgt}{m}{!upnmlgothr-h} \pxDeclareBasicCJKShape{J20}{hgt}{bx}{!upnmlgothb-h} \pxDeclareBasicCJKShape{J20}{hgt}{eb}{!upnmlgotheb-h} \pxDeclareKanjiFamily{J20}{mg} \pxDeclareBasicCJKShape{J20}{mg}{m}{!upnmlmgothr-h} \pxDeclareBasicCJKShape{J30}{hmc}{l}{!upnmlminl-v} \pxDeclareBasicCJKShape{J30}{hmc}{m}{!upnmlminr-v} \pxDeclareBasicCJKShape{J30}{hmc}{bx}{!upnmlminb-v} \pxDeclareBasicCJKShape{J30}{hgt}{m}{!upnmlgothr-v} \pxDeclareBasicCJKShape{J30}{hgt}{bx}{!upnmlgothb-v} \pxDeclareBasicCJKShape{J30}{hgt}{eb}{!upnmlgotheb-v} \pxDeclareKanjiFamily{J30}{mg} \pxDeclareBasicCJKShape{J30}{mg}{m}{!upnmlmgothr-v} % UniJIS2004 \pxDeclareBasicCJKShape{J24}{hmc}{l}{!upnmlminln-h} \pxDeclareBasicCJKShape{J24}{hmc}{m}{!upnmlminrn-h} \pxDeclareBasicCJKShape{J24}{hmc}{bx}{!upnmlminbn-h} \pxDeclareBasicCJKShape{J24}{hgt}{m}{!upnmlgothrn-h} \pxDeclareBasicCJKShape{J24}{hgt}{bx}{!upnmlgothbn-h} \pxDeclareBasicCJKShape{J24}{hgt}{eb}{!upnmlgothebn-h} \pxDeclareKanjiFamily{J24}{mg} \pxDeclareBasicCJKShape{J24}{mg}{m}{!upnmlmgothrn-h} \pxDeclareBasicCJKShape{J34}{hmc}{l}{!upnmlminln-v} \pxDeclareBasicCJKShape{J34}{hmc}{m}{!upnmlminrn-v} \pxDeclareBasicCJKShape{J34}{hmc}{bx}{!upnmlminbn-v} \pxDeclareBasicCJKShape{J34}{hgt}{m}{!upnmlgothrn-v} \pxDeclareBasicCJKShape{J34}{hgt}{bx}{!upnmlgothbn-v} \pxDeclareBasicCJKShape{J34}{hgt}{eb}{!upnmlgothebn-v} \pxDeclareKanjiFamily{J34}{mg} \pxDeclareBasicCJKShape{J34}{mg}{m}{!upnmlmgothrn-v} \ifnum\pxbb@deluxemulti=\pxbb@deluxemulti@@old % UniKS \pxDeclareBasicCJKShape{J21}{hmc}{l}{!utfkml--h} \pxDeclareBasicCJKShape{J21}{hmc}{m}{!utfkmr--h} \pxDeclareBasicCJKShape{J21}{hmc}{bx}{!utfkmb--h} \pxDeclareBasicCJKShape{J21}{hgt}{m}{!utfkgr--h} \pxDeclareBasicCJKShape{J21}{hgt}{bx}{!utfkgb--h} \pxDeclareBasicCJKShape{J21}{hgt}{eb}{!utfkge--h} \pxDeclareKanjiFamily{J21}{mg} \pxDeclareBasicCJKShape{J21}{mg}{m}{!utfkmgr--h} \pxDeclareBasicCJKShape{J31}{hmc}{l}{!utfkml--v} \pxDeclareBasicCJKShape{J31}{hmc}{m}{!utfkmr--v} \pxDeclareBasicCJKShape{J31}{hmc}{bx}{!utfkmb--v} \pxDeclareBasicCJKShape{J31}{hgt}{m}{!utfkgr--v} \pxDeclareBasicCJKShape{J31}{hgt}{bx}{!utfkgb--v} \pxDeclareBasicCJKShape{J31}{hgt}{eb}{!utfkge--v} \pxDeclareKanjiFamily{J31}{mg} \pxDeclareBasicCJKShape{J31}{mg}{m}{!utfkmgr--v} % UniGB \pxDeclareBasicCJKShape{J22}{hmc}{l}{!utfcml--h} \pxDeclareBasicCJKShape{J22}{hmc}{m}{!utfcmr--h} \pxDeclareBasicCJKShape{J22}{hmc}{bx}{!utfcmb--h} \pxDeclareBasicCJKShape{J22}{hgt}{m}{!utfcgr--h} \pxDeclareBasicCJKShape{J22}{hgt}{bx}{!utfcgb--h} \pxDeclareBasicCJKShape{J22}{hgt}{eb}{!utfcge--h} \pxDeclareKanjiFamily{J22}{mg} \pxDeclareBasicCJKShape{J22}{mg}{m}{!utfcmgr--h} \pxDeclareBasicCJKShape{J32}{hmc}{l}{!utfcml--v} \pxDeclareBasicCJKShape{J32}{hmc}{m}{!utfcmr--v} \pxDeclareBasicCJKShape{J32}{hmc}{bx}{!utfcmb--v} \pxDeclareBasicCJKShape{J32}{hgt}{m}{!utfcgr--v} \pxDeclareBasicCJKShape{J32}{hgt}{bx}{!utfcgb--v} \pxDeclareBasicCJKShape{J32}{hgt}{eb}{!utfcge--v} \pxDeclareKanjiFamily{J32}{mg} \pxDeclareBasicCJKShape{J32}{mg}{m}{!utfcmgr--v} % UniCNS \pxDeclareBasicCJKShape{J23}{hmc}{l}{!utftml--h} \pxDeclareBasicCJKShape{J23}{hmc}{m}{!utftmr--h} \pxDeclareBasicCJKShape{J23}{hmc}{bx}{!utftmb--h} \pxDeclareBasicCJKShape{J23}{hgt}{m}{!utftgr--h} \pxDeclareBasicCJKShape{J23}{hgt}{bx}{!utftgb--h} \pxDeclareBasicCJKShape{J23}{hgt}{eb}{!utftge--h} \pxDeclareKanjiFamily{J23}{mg} \pxDeclareBasicCJKShape{J23}{mg}{m}{!utftmgr--h} \pxDeclareBasicCJKShape{J33}{hmc}{l}{!utftml--v} \pxDeclareBasicCJKShape{J33}{hmc}{m}{!utftmr--v} \pxDeclareBasicCJKShape{J33}{hmc}{bx}{!utftmb--v} \pxDeclareBasicCJKShape{J33}{hgt}{m}{!utftgr--v} \pxDeclareBasicCJKShape{J33}{hgt}{bx}{!utftgb--v} \pxDeclareBasicCJKShape{J33}{hgt}{eb}{!utftge--v} \pxDeclareKanjiFamily{J33}{mg} \pxDeclareBasicCJKShape{J33}{mg}{m}{!utftmgr--v} \else\ifnum\pxbb@deluxemulti=\pxbb@deluxemulti@@new % UniKS \pxDeclareBasicCJKShape{J21}{hmc}{l}{!upnmkorminl-h} \pxDeclareBasicCJKShape{J21}{hmc}{m}{!upnmkorminr-h} \pxDeclareBasicCJKShape{J21}{hmc}{bx}{!upnmkorminb-h} \pxDeclareBasicCJKShape{J21}{hgt}{m}{!upnmkorgothr-h} \pxDeclareBasicCJKShape{J21}{hgt}{bx}{!upnmkorgothb-h} \pxDeclareBasicCJKShape{J21}{hgt}{eb}{!upnmkorgotheb-h} \pxDeclareKanjiFamily{J21}{mg} \pxDeclareBasicCJKShape{J21}{mg}{m}{!upnmkormgothr-h} \pxDeclareBasicCJKShape{J31}{hmc}{l}{!upnmkorminl-v} \pxDeclareBasicCJKShape{J31}{hmc}{m}{!upnmkorminr-v} \pxDeclareBasicCJKShape{J31}{hmc}{bx}{!upnmkorminb-v} \pxDeclareBasicCJKShape{J31}{hgt}{m}{!upnmkorgothr-v} \pxDeclareBasicCJKShape{J31}{hgt}{bx}{!upnmkorgothb-v} \pxDeclareBasicCJKShape{J31}{hgt}{eb}{!upnmkorgotheb-v} \pxDeclareKanjiFamily{J31}{mg} \pxDeclareBasicCJKShape{J31}{mg}{m}{!upnmkormgothr-v} % UniGB \pxDeclareBasicCJKShape{J22}{hmc}{l}{!upnmschminl-h} \pxDeclareBasicCJKShape{J22}{hmc}{m}{!upnmschminr-h} \pxDeclareBasicCJKShape{J22}{hmc}{bx}{!upnmschminb-h} \pxDeclareBasicCJKShape{J22}{hgt}{m}{!upnmschgothr-h} \pxDeclareBasicCJKShape{J22}{hgt}{bx}{!upnmschgothb-h} \pxDeclareBasicCJKShape{J22}{hgt}{eb}{!upnmschgotheb-h} \pxDeclareKanjiFamily{J22}{mg} \pxDeclareBasicCJKShape{J22}{mg}{m}{!upnmschmgothr-h} \pxDeclareBasicCJKShape{J32}{hmc}{l}{!upnmschminl-v} \pxDeclareBasicCJKShape{J32}{hmc}{m}{!upnmschminr-v} \pxDeclareBasicCJKShape{J32}{hmc}{bx}{!upnmschminb-v} \pxDeclareBasicCJKShape{J32}{hgt}{m}{!upnmschgothr-v} \pxDeclareBasicCJKShape{J32}{hgt}{bx}{!upnmschgothb-v} \pxDeclareBasicCJKShape{J32}{hgt}{eb}{!upnmschgotheb-v} \pxDeclareKanjiFamily{J32}{mg} \pxDeclareBasicCJKShape{J32}{mg}{m}{!upnmschmgothr-v} % UniCNS \pxDeclareBasicCJKShape{J23}{hmc}{l}{!upnmtchminl-h} \pxDeclareBasicCJKShape{J23}{hmc}{m}{!upnmtchminr-h} \pxDeclareBasicCJKShape{J23}{hmc}{bx}{!upnmtchminb-h} \pxDeclareBasicCJKShape{J23}{hgt}{m}{!upnmtchgothr-h} \pxDeclareBasicCJKShape{J23}{hgt}{bx}{!upnmtchgothb-h} \pxDeclareBasicCJKShape{J23}{hgt}{eb}{!upnmtchgotheb-h} \pxDeclareKanjiFamily{J23}{mg} \pxDeclareBasicCJKShape{J23}{mg}{m}{!upnmtchmgothr-h} \pxDeclareBasicCJKShape{J33}{hmc}{l}{!upnmtchminl-v} \pxDeclareBasicCJKShape{J33}{hmc}{m}{!upnmtchminr-v} \pxDeclareBasicCJKShape{J33}{hmc}{bx}{!upnmtchminb-v} \pxDeclareBasicCJKShape{J33}{hgt}{m}{!upnmtchgothr-v} \pxDeclareBasicCJKShape{J33}{hgt}{bx}{!upnmtchgothb-v} \pxDeclareBasicCJKShape{J33}{hgt}{eb}{!upnmtchgotheb-v} \pxDeclareKanjiFamily{J33}{mg} \pxDeclareBasicCJKShape{J33}{mg}{m}{!upnmtchmgothr-v} \fi\fi % pxbb@deluxemulti \fi % pxbb@otfdeluxe %--------------------------------------- add font switch to Babel \extras \ifpxbb@switchfont %% \pxbb@set@full@ja@enc % Sets to \pxbb@ful@ja@enc the destination encoding. \bxForEachIn{J20,J24}\do{% all full japanese encodings \csdef{pxbb@is@fje/#1}{t}} \edef\pxbb@dflt@ja@enc{% default full japanese encoding \ifbool{pxbb@stdjaencoding}{\cy@encoding}{%else \ifbool{pxbb@prefermmivjis}{J24}{J20}}} \def\pxbb@set@full@ja@enc{% \edef\pxbb@full@ja@enc{% \bxIfcsundefX{pxbb@is@fje/\cy@encoding}% {\pxbb@dflt@ja@enc}{\cy@encoding}}} %% \pxbb@addtoextras \bxPreamble\def\pxbb@addtoextras#1#2#3{% \edef\pxbb@arg{{\@nameuse{pxbb@langname/#1}}% \if t#2{\noexpand\pxbb@full@ja@enc}{\noexpand\@undefined}% \else{#3}{t}\fi}% \expandafter\pxbb@addtoextras@a\pxbb@arg} \bxPreamble\def\pxbb@addtoextras@a#1#2#3{% \csappto{extras#1}{% \pxbb@set@full@ja@enc \let\pxInNonJaLanguage=#3% \let\pxbb@org@encoding\cy@encoding \long\def\kanjiencodingdefault{#2}% \kanjiencoding{#2}\selectfont}% \csappto{noextras#1}{% \let\pxInNonJaLanguage\@undefined \long\def\kanjiencodingdefault{\pxbb@org@encoding}% \kanjiencoding{\pxbb@org@encoding}\selectfont}} \pxbb@addtoextras{japanese}{t}{} \pxbb@addtoextras{korean}{f}{J21} \pxbb@addtoextras{schinese}{f}{J22} \pxbb@addtoextras{tchinese}{f}{J23} \fi % pxbb@switchfont \fi %---- %--------------------------------------- Other user commands %%<*> \cjklanguagename{} % Expands to the babel language name for . \newcommand*\cjklanguagename[1]{% \@nameuse{pxbb@langname/#1}} %--------------------------------------- integrity check %% check if \mcdefault is not changed \let\pxbb@tunc@mcdefault\mcdefault \AtBeginDocument{% \bxIfExpToEqualX\pxbb@tunc@mcdefault\mcdefault{}{%else \bxIfExpToEqualX\mcdefault{hmc}% {\pxbb@warn@jafam{t}}% {\pxbb@warn@jafam{f}}}} %--------------------------------------- all done \endinput % % Roman, H Gothic, H Roman, V Gothic, H : metric encod. % ------------ ------------ ------------ ------------ : ------ -------- % umin10 ugoth10 utmin10 utgoth10 : min10 JIS-old % ujis ujisg ujis-v ujisg-v : jis JIS-old % ujisn ujisng ujisn-v ujisng-v : jisn JIS-old % * urml ugbm urmlv ugbmv : RAW JIS-old % upjisr-h upjisg-h upjisr-v upjisg-v : upjpn JIS-bmp % upjisr-hq upjisg-hq : upjpn JIS-old % upjpnrm-h upjpngt-h upjpnrm-v upjpngt-v : upjpn JIS-full % * uprml upgbm uprmlv upgmbv : RAW JIS-bmp % * uprmlq upgbmq : RAW JIS-old % upkorrm-h upkorgt-h upkorrm-v upkorgt-v : upkor KS % * uphysmjm-h uphygt-h uphysmjm-v uphygt-v : RAW KS % upschrm-h upschgt-h upschrm-v upschgt-v : upsch GB % * upstsl-h upstht-h upstsl-v upstht-v : RAW GB % uptchrm-h uptchgt-h uptchrm-v uptchgt-v : uptch CNS % * upmsl-h upmhm-h upmsl-v upmhm-v : RAW CNS %% EOF