From e0c6872cf40896c7be36b11dcc744620f10adf1d Mon Sep 17 00:00:00 2001 From: Norbert Preining Date: Mon, 2 Sep 2019 13:46:59 +0900 Subject: Initial commit --- language/japanese/pxbase/upkcat.sty | 79 +++++++++++++++++++++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100644 language/japanese/pxbase/upkcat.sty (limited to 'language/japanese/pxbase/upkcat.sty') diff --git a/language/japanese/pxbase/upkcat.sty b/language/japanese/pxbase/upkcat.sty new file mode 100644 index 0000000000..a97cbde36d --- /dev/null +++ b/language/japanese/pxbase/upkcat.sty @@ -0,0 +1,79 @@ +%% +%% This is file 'upkcat.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. +%% + +% Note: This package supports both upLaTeX and plain upTeX. + +%% avoid multiple loading +\csname\if11upkcatstyLoaded\fi\endcsname +%% code guards +\edef\x{\catcode32=\the\catcode32% +\catcode43=\the\catcode43\catcode45=\the\catcode45% +\catcode46=\the\catcode46\catcode47=\the\catcode47% +\catcode60=\the\catcode60\catcode63=\the\catcode63% +\catcode64=\the\catcode64\catcode96=\the\catcode96% +\endlinechar=\the\endlinechar\relax} +\catcode32=10\relax\endlinechar=13\relax +\catcode43=12 \catcode45=12 % <+><-> +\catcode46=12 \catcode47=12 % <.> +\catcode60=12 \catcode63=12 % <<> +\catcode64=11 \catcode96=12 % <@><`> +\edef\pxkq@restore@codes{\x\let\noexpand\pxkq@restore@codes\relax} +%% check for LaTeX +\ifx\RequirePackage\@undefined %<*!LaTeX> + \long\def\x#1\ProvidesPackage#2[#3]{\immediate\write-1{Package: #2 #3}} + \expandafter\x +\else %<*LaTeX> + \RequirePackage{ifuptex}[2008/03/14]\RequireupTeX +\fi % + +%% package declaration +\NeedsTeXFormat{pLaTeX2e} +\ProvidesPackage{upkcat}[2017/06/19 v1.1a safe kcatcode access] + +%--------------------------------------- main + +%%<*> \getkcatcode{} +\def\getkcatcode#1{\pxkq@getcp{#1}% + \edef\thekcatcode{\the\kcatcode\pxkq@cp}} +%%<*> \setkcatcode{}{} +\def\setkcatcode#1#2{\pxkq@getcp{#1}\kcatcode\pxkq@cp#2} +\newcount\pxkq@cp \newif\ifpxkq@ok +\def\pxkq@getcp#1{\pxkq@getcp@a#1\relax\relax} +\def\pxkq@nxt#1#2#3#4#5{\pxkq@cp#1\loop + {\lccode`\?\pxkq@cp \advance\pxkq@cp-#3% + \lowercase{\expandafter\xdef\csname pxkq@#4?\endcsname}{#5}}% + \advance\pxkq@cp\@ne \ifnum\pxkq@cp<#2\repeat} +\pxkq@nxt{240}{248}{240}l{\pxkq@cp\the\pxkq@cp\noexpand\pxkq@da} +\pxkq@nxt{224}{240}{224}l{\pxkq@cp\the\pxkq@cp\noexpand\pxkq@ca} +\pxkq@nxt{194}{224}{192}l{\pxkq@cp\the\pxkq@cp\noexpand\pxkq@ba} +\pxkq@nxt{128}{192}{128}t{\advance\pxkq@cp\the\pxkq@cp\noexpand\pxkq@oktrue} +\def\pxkq@getcp@a#1{\pxkq@cp`#1\relax\pxkq@chkk#1% + \ifpxkq@ok \let\pxkq@nxt\pxkq@end \else + \expandafter\let\expandafter\pxkq@nxt\csname pxkq@l\string#1\endcsname + \ifx\pxkq@nxt\relax \let\pxkq@nxt\pxkq@err \fi + \fi \pxkq@nxt} +\def\pxkq@stp#1#2{\multiply\pxkq@cp64\pxkq@okfalse + \csname pxkq@t\string#2\endcsname + \ifpxkq@ok \expandafter#1\else \expandafter\pxkq@err \fi} +\def\pxkq@end#1\relax{} +\def\pxkq@ba{\pxkq@stp\pxkq@end}\def\pxkq@ca{\pxkq@stp\pxkq@cb} +\def\pxkq@cb{\pxkq@stp\pxkq@end}\def\pxkq@da{\pxkq@stp\pxkq@db} +\def\pxkq@db{\pxkq@stp\pxkq@dc}\def\pxkq@dc{\pxkq@stp\pxkq@end} +\begingroup\lccode`8=`k\lccode`9=`a \lowercase{\endgroup + \def\pxkq@chkk#1{\pxkq@okfalse\expandafter\pxkq@chkk@a\meaning#189\@nil} + \def\pxkq@chkk@a#189#2\@nil{\ifcat @#1@\pxkq@oktrue\fi}} +\def\pxkq@err#1\relax{\errhelp{I regard it as U+FFFF}% + \errmessage{Corrupted UTF-8 bytes}\pxkq@cp65535\relax} +%\def\pxkq@end#1\relax{\showthe\pxkq@cp} + +%--------------------------------------- all done +\pxkq@restore@codes +\endinput +%% EOF -- cgit v1.2.3