\input miniltx \def\settowidth#1#2{% \setbox\@tempboxa\hbox{{#2}}#1\wd\@tempboxa \setbox\@tempboxa\box\voidb@x} \endlinechar \m@ne \newif\ifxeCJK@checksingle \newif\ifxeCJK@space@ \def\xeCJK@patch#1#2#3{ \edef#1{\unexpanded{#2}\unexpanded\expandafter{#1}\unexpanded{#3}}} \def\makexeCJKactive{\XeTeXinterchartokenstate=1\relax} \def\makexeCJKinactive{\XeTeXinterchartokenstate=0\relax} \makexeCJKactive \def\xeCJKsetcharclass#1#2#3{ \@tempcnta=#1 \loop \XeTeXcharclass \@tempcnta #3\relax \advance\@tempcnta 1\relax \unless\ifnum\the\@tempcnta>#2 \repeat \xeCJK@setpunctcharclass} \def\xeCJK@prePunct#1#2{\xeCJK@setPunct{2}{#1}{#2}} \def\xeCJK@postPunct#1#2{\xeCJK@setPunct{3}{#1}{#2}} \def\xeCJK@setPunct#1#2#3{ \def\xeCJK@class{#1} \@tempcnta "#2\relax \multiply\@tempcnta 256\relax \xeCJK@setPunct@#3,,} \def\xeCJK@setPunct@#1,{ \edef\xeCJK@temp{#1}% \unless\ifx\xeCJK@temp\@empty \@tempcntb "#1\relax \advance\@tempcntb\@tempcnta\relax \XeTeXcharclass \@tempcntb=\xeCJK@class\relax \def\xeCJK@temp{\xeCJK@setPunct@} \fi \xeCJK@temp} \def\xeCJK@setpunctcharclass{ \xeCJK@prePunct{20}{18,1C} \xeCJK@postPunct{20}{19,1D,14,26} \xeCJK@postPunct{25}{00} \xeCJK@prePunct{30}{08,0A,0C,0E,10,12,14,16,18,1A,1D,1F,36} \xeCJK@postPunct{30}{01,02,05,06,09,0B,0D,0F,11,15,17,19,1B,1E, 41,43,45,47,49,63,83,85,87,8E, 9B,9C,9D,9E,A1,A3,A5,A7,A9,C3,E3,E5,E7,EE,F5,F6,FB,FC,FD,FE} \xeCJK@prePunct {FE}{59,5B,5D,5F,60,69,6B} \xeCJK@postPunct{FE}{50,51,52,54,55,56,57,5A,5C,5E,6A} \xeCJK@prePunct {FF}{03,04,08,20,3B,5B,E0,E1,E5,E6} \xeCJK@postPunct{FF}{01,05,09,0C,0E,1A,1B,1F,3D,5D, 61,63,64,65,67,68,69,6A,6B,6C,6D,6E,6F,70,9E,9F} \xeCJK@setPunct{1}{0}{B7} \xeCJK@setPunct{4}{0}{28,2D,5B,60,7B} \xeCJK@setPunct{5}{0}{21,22,25,27,29,2C,2E,3A,3B,3F,5D,7D}} \xeCJKsetcharclass{"1100}{"11FF}{1} \xeCJKsetcharclass{"2E80}{"2EFF}{1} \xeCJKsetcharclass{"2F00}{"2FDF}{1} \xeCJKsetcharclass{"2FF0}{"2FFF}{1} \xeCJKsetcharclass{"3000}{"303F}{1} \xeCJKsetcharclass{"3040}{"309F}{1} \xeCJKsetcharclass{"30A0}{"30FF}{1} \xeCJKsetcharclass{"3100}{"312F}{1} \xeCJKsetcharclass{"3130}{"318F}{1} \xeCJKsetcharclass{"3190}{"319F}{1} \xeCJKsetcharclass{"31A0}{"31BF}{1} \xeCJKsetcharclass{"31C0}{"31EF}{1} \xeCJKsetcharclass{"31F0}{"31FF}{1} \xeCJKsetcharclass{"3200}{"32FF}{1} \xeCJKsetcharclass{"3300}{"33FF}{1} \xeCJKsetcharclass{"3400}{"4DBF}{1} \xeCJKsetcharclass{"4E00}{"9FFF}{1} \xeCJKsetcharclass{"A000}{"A4CF}{1} \xeCJKsetcharclass{"AC00}{"D7AF}{1} \xeCJKsetcharclass{"F900}{"FAFF}{1} \xeCJKsetcharclass{"FE30}{"FE4F}{1} \xeCJKsetcharclass{"FF00}{"FFEF}{1} \xeCJKsetcharclass{"20000}{"2A6DF}{1} \xeCJKsetcharclass{"2A700}{"2B73F}{1} \xeCJKsetcharclass{"2B740}{"2B81F}{1} \xeCJKsetcharclass{"2F800}{"2FA1F}{1} \def\CJK@stop{\CJK@stop} \def\normalspacedchars#1{ \xeCJK@setnormalspacedchar#1\CJK@stop} \def\xeCJK@setnormalspacedchar#1{ \unless\ifx#1\CJK@stop \XeTeXcharclass`#1=6 \expandafter\xeCJK@setnormalspacedchar \fi} \normalspacedchars{/} \XeTeXinterchartoks 1 0{\egroup\CJKecglue} \XeTeXinterchartoks 1 1{\xeCJK@i@i} \XeTeXinterchartoks 1 2{\xeCJK@i@ii} \XeTeXinterchartoks 1 3{\xeCJK@i@iii} \XeTeXinterchartoks 1 4{\egroup\CJKecglue} \XeTeXinterchartoks 1 5{\egroup} \XeTeXinterchartoks 1 255{\xeCJK@i@cclv} \XeTeXinterchartoks 2 0{\xeCJK@ii@} \XeTeXinterchartoks 2 1{\xeCJK@ii@i} \XeTeXinterchartoks 2 2{\xeCJK@ii@ii} \XeTeXinterchartoks 2 3{\xeCJK@ii@iii} \XeTeXinterchartoks 2 4{\xeCJK@ii@iv} \XeTeXinterchartoks 2 5{\xeCJK@ii@v} \XeTeXinterchartoks 2 255{\xeCJK@ii@cclv} \XeTeXinterchartoks 3 0{\xeCJK@iii@} \XeTeXinterchartoks 3 1{\xeCJK@iii@i} \XeTeXinterchartoks 3 2{\xeCJK@iii@ii} \XeTeXinterchartoks 3 3{\xeCJK@iii@iii} \XeTeXinterchartoks 3 4{\xeCJK@iii@iv} \XeTeXinterchartoks 3 5{\xeCJK@iii@v} \XeTeXinterchartoks 3 255{\xeCJK@iii@cclv} \XeTeXinterchartoks 0 1{\xeCJK@@i} \XeTeXinterchartoks 0 2{\xeCJK@@ii} \XeTeXinterchartoks 0 3{\xeCJK@@iii} \XeTeXinterchartoks 0 255{\xeCJK@@cclv} \XeTeXinterchartoks 4 1{\xeCJK@iv@i} \XeTeXinterchartoks 4 2{\xeCJK@iv@ii} \XeTeXinterchartoks 4 3{\xeCJK@iv@iii} \XeTeXinterchartoks 5 1{\xeCJK@v@i} \XeTeXinterchartoks 5 2{\xeCJK@v@ii} \XeTeXinterchartoks 5 3{\xeCJK@v@iii} \XeTeXinterchartoks 5 255{\xeCJK@v@cclv} \XeTeXinterchartoks 255 0{\xeCJK@cclv@} \XeTeXinterchartoks 255 1{\xeCJK@cclv@i} \XeTeXinterchartoks 255 2{\xeCJK@cclv@ii} \XeTeXinterchartoks 255 3{\xeCJK@cclv@iii} \XeTeXinterchartoks 255 4{\xeCJK@cclv@iv} \XeTeXinterchartoks 255 6{\xeCJK@cclv@vi} \XeTeXinterchartoks 1 6{\xeCJK@i@vi} \XeTeXinterchartoks 2 6{\xeCJK@ii@vi} \XeTeXinterchartoks 3 6{\xeCJK@iii@vi} \XeTeXinterchartoks 6 1{\xeCJK@vi@i} \XeTeXinterchartoks 6 2{\xeCJK@vi@ii} \XeTeXinterchartoks 6 3{\xeCJK@vi@iii} \XeTeXinterchartoks 6 255{\xeCJK@vi@cclv} \def\xeCJK@vi@i{ \bgroup \xeCJK@emptyCJKtoks \xeCJK@setfont \CJKsymbol} \def\xeCJK@i@vi{ \egroup} \let\xeCJK@ii@vi \xeCJK@i@vi \let\xeCJK@iii@vi\xeCJK@i@vi \let\xeCJK@vi@ii \xeCJK@vi@i \let\xeCJK@vi@iii\xeCJK@vi@i \def\xeCJK@i@i{ \CJKglue \CJKsymbol} \let\xeCJK@i@i@save\xeCJK@i@i \def\xeCJK@i@ii#1{ \xeCJK@punctrule{#1}{l} \hskip \csname xeCJK\xeCJK@punctstyle\xeCJK@bboxname @lglue@#1\endcsname plus 0.1em minus 0.1 em \xeCJK@setprepunct{#1}} \def\xeCJK@i@iii#1{ \xeCJK@punctrule{#1}{r} \ifcsname xeCJK@specialpunct#1\endcsname \CJKglue % breakable \else \nobreak \fi \xdef\xeCJK@lastpunct{#1} \CJKpunctsymbol{#1}} \def\xeCJK@setprepunct#1{ \edef\xeCJK@lastpunct{#1} \vrule width \csname xeCJK\xeCJK@punctstyle\xeCJK@bboxname @lrule@#1\endcsname depth \z@ height \z@ \CJKpunctsymbol{#1}} \def\xeCJK@i@cclv{ \egroup {\xeCJK@CJKkern} \xeCJK@ignorespaces} \def\xeCJK@ii@i{ \nobreak \CJKsymbol} \def\xeCJK@ii@ii#1{ \nobreak \xeCJK@punctrule{#1}{l} \xeCJK@setkern{\xeCJK@lastpunct}{#1} \kern \csname xeCJK\xeCJK@punctstyle\xeCJK@bboxname @kern\xeCJK@lastpunct#1\endcsname \xeCJK@setprepunct{#1}} \def\xeCJK@ii@iii#1{ \nobreak \xeCJK@punctrule{#1}{r} \xeCJK@setkern{\xeCJK@lastpunct}{#1} \kern \csname xeCJK\xeCJK@punctstyle\xeCJK@bboxname @kern\xeCJK@lastpunct#1\endcsname \nobreak \edef\xeCJK@lastpunct{#1} \CJKpunctsymbol{#1}} \def\xeCJK@ii@{ \nobreak \egroup} \let\xeCJK@ii@iv\xeCJK@ii@ \let\xeCJK@ii@v\xeCJK@ii@ \def\xeCJK@ii@cclv{ \nobreak \egroup \ignorespaces} \def\xeCJK@iii@{ \xeCJK@afterpostpunct \egroup} \def\xeCJK@iii@i{ \xeCJK@afterpostpunct \CJKsymbol} \def\xeCJK@iii@ii#1{ \vrule width \csname xeCJK\xeCJK@punctstyle\xeCJK@bboxname @rrule@\xeCJK@lastpunct\endcsname depth \z@ height \z@ \xeCJK@punctrule{#1}{l} \xeCJK@setkern{\xeCJK@lastpunct}{#1} \kern \csname xeCJK\xeCJK@punctstyle\xeCJK@bboxname @kern\xeCJK@lastpunct#1\endcsname \xeCJKpunctnobreak \xeCJK@setprepunct{#1}} \def\xeCJK@iii@iii#1{ \vrule width \csname xeCJK\xeCJK@punctstyle\xeCJK@bboxname @rrule@\xeCJK@lastpunct\endcsname depth \z@ height \z@ \xeCJK@punctrule{#1}{r} \xeCJK@setkern{\xeCJK@lastpunct}{#1} \kern \csname xeCJK\xeCJK@punctstyle\xeCJK@bboxname @kern\xeCJK@lastpunct#1\endcsname \nobreak \edef\xeCJK@lastpunct{#1} \CJKpunctsymbol{#1}} \def\xeCJK@iii@iv{ \xeCJK@afterpostpunct \egroup} \def\xeCJK@afterpostpunct{ \vrule width \csname xeCJK\xeCJK@punctstyle\xeCJK@bboxname @rrule@\xeCJK@lastpunct\endcsname depth \z@ height \z@ \hskip \csname xeCJK\xeCJK@punctstyle\xeCJK@bboxname @rglue@\xeCJK@lastpunct\endcsname plus 0.1em minus 0.1 em} \let\xeCJK@iii@v\xeCJK@iii@iv \def\xeCJK@iii@cclv{ \xeCJK@afterpostpunct \egroup \ignorespaces} \def\xeCJK@@i{ \CJKecglue \bgroup \xeCJK@setfont \xeCJK@emptyCJKtoks \CJKsymbol} \def\xeCJK@@ii{ \bgroup \xeCJK@setfont \XeTeXinterchartoks 0 2{\relax} \xeCJK@emptyCJKtoks \xeCJK@i@ii} \def\xeCJK@@iii{ \bgroup \xeCJK@setfont \XeTeXinterchartoks 0 3{\relax} \xeCJK@emptyCJKtoks \xeCJK@i@iii} \def\xeCJK@iv@i{ \bgroup \xeCJK@setfont \XeTeXinterchartoks 4 1{\relax} \xeCJK@emptyCJKtoks \CJKsymbol} \def\xeCJK@iv@ii{ \bgroup \xeCJK@setfont \XeTeXinterchartoks 4 2{\relax} \xeCJK@emptyCJKtoks \xeCJK@i@ii} \def\xeCJK@iv@iii{ \bgroup \xeCJK@setfont \XeTeXinterchartoks 4 3{\relax} \xeCJK@emptyCJKtoks \xeCJK@i@iii} \def\xeCJK@v@i{ \CJKecglue \bgroup \xeCJK@setfont \xeCJK@emptyCJKtoks \CJKsymbol} \def\xeCJK@v@ii{ \bgroup \xeCJK@setfont \XeTeXinterchartoks 5 2{\relax} \xeCJK@emptyCJKtoks \xeCJK@i@ii} \def\xeCJK@v@iii{ \bgroup \xeCJK@setfont \XeTeXinterchartoks 5 3{\relax} \xeCJK@emptyCJKtoks \xeCJK@i@iii} \def\xeCJK@emptyCJKtoks{ \XeTeXinterchartoks 255 1{\relax} \XeTeXinterchartoks 255 2{\relax} \XeTeXinterchartoks 255 3{\relax}} \def\xeCJK@@cclv{ \futurelet\xeCJK@nexttoken\xeCJK@zz@cclv} \def\xeCJK@zz@cclv{ \ifx\xeCJK@nexttoken\@sptoken {\xeCJK@spkern} \else {\xeCJK@zerokern} \fi} \let\xeCJK@v@cclv\xeCJK@@cclv \let\xeCJK@vi@cclv\xeCJK@@cclv \def\xeCJK@cclv@{ \ifnum\lastkern=\@ne \CJKecglue \fi} \let\xeCJK@cclv@iv\xeCJK@cclv@ \let\xeCJK@cclv@vi\xeCJK@cclv@ \def\xeCJK@cclv@i{{ \ifnum\lastkern=\@ne \CJKglue \else \ifnum\lastkern=\xeCJK@four \CJKecglue \else \ifnum\lastnodetype=\xeCJK@ten \CJKecglue \else \ifnum\lastnodetype=\xeCJK@eleven \settowidth\@tempdima\@sptoken \ifdim\lastskip=\@tempdima \@tempskipa=\lastskip \unskip \ifnum\lastkern=\tw@ \CJKecglue \else \ifnum\lastnodetype=\xeCJK@ten \CJKecglue \else \ifnum\lastkern=\xeCJK@four \CJKecglue \else \hskip\@tempskipa \fi\fi\fi\fi\fi\fi\fi\fi} \bgroup \xeCJK@emptyCJKtoks \xeCJK@setfont \CJKsymbol} \def\xeCJK@cclv@ii{ \bgroup \xeCJK@emptyCJKtoks \xeCJK@setfont \xeCJK@i@ii} \def\xeCJK@cclv@iii{ \bgroup \xeCJK@emptyCJKtoks \xeCJK@setfont \xeCJK@i@iii} \def\CJKglue{\hskip \z@ \@plus .08\baselineskip} \def\CJK@nobreakglue{\nobreak\CJKglue\nobreak} \edef\xeCJK@CJKkern{\kern -1sp\kern 1sp} \edef\xeCJK@spkern{\kern -2sp\kern 2sp} \edef\xeCJK@zerokern{\kern -4sp\kern 4sp} \chardef\xeCJK@four=4 \chardef\xeCJK@ten=10 \chardef\xeCJK@eleven=11 \def\CJKspace{\let\xeCJK@ignorespaces\@empty} \def\CJKnospace{\def\xeCJK@ignorespaces{\xeCJK@@ignorespaces}} \ifxeCJK@space@ \CJKspace \else \CJKnospace \fi \def\xeCJK@@ignorespaces{ \futurelet\xeCJK@nexttoken\xeCJK@checknext} \def\xeCJK@checknext{ \ifx\xeCJK@nexttoken\@sptoken \expandafter\xeCJK@@checknext \else \ifx $\xeCJK@nexttoken \CJKecglue \fi \fi} { \def\:{\xeCJK@@checknext} \global\expandafter\def\: {\futurelet\@let@token\xeCJK@@@checknext} } \def\xeCJK@@@checknext{ \ifx $\@let@token \CJKecglue \else \if\relax\noexpand\@let@token \unless\ifx\@let@token\xeCJK@par \CJKecglue \fi \fi \fi \let\xeCJK@nexttoken\relax} \def\xeCJKenablechecksingle{\def\xeCJK@i@i{\xeCJK@checksingle}} \def\xeCJKdisablechecksingle{\let\xeCJK@i@i\xeCJK@i@i@save} \ifxeCJK@checksingle \AtEndOfPackage{\xeCJKenablechecksingle} \fi \def\xeCJK@checksingle#1{ \def\xeCJK@setcurrentchar@i{ \CJKglue \CJKsymbol{#1}} \def\xeCJK@setcurrentnobreakchar@i{ \CJKsymbol{#1}} \futurelet\@let@token\xeCJK@@checksingle} \def\xeCJK@@checksingle{ \ifcat 。\noexpand\@let@token \expandafter\xeCJK@@@checksingle \else \expandafter\xeCJK@setcurrentchar@i \fi} \def\xeCJK@@@checksingle#1{ \def\xeCJK@setcurrentchar@ii{ \xeCJK@setcurrentchar@i #1} \def\xeCJK@setcurrentchar@ii@s{ \xeCJK@setcurrentchar@i #1 } \def\xeCJK@setcurrentnobreakchar@ii{ \xeCJK@setcurrentnobreakchar@i #1} \futurelet\@let@token\xeCJK@@@@checksingle} \def\xeCJK@@@@checksingle{ \ifx\@let@token\@sptoken \expandafter\xeCJK@checkpar \else \expandafter\xeCJK@setcurrentchar@ii \fi} \let\xeCJK@par\par \def\xeCJK@checkpar{ \@ifnextchar\xeCJK@par{\xeCJK@setcurrentnobreakchar@ii}{\xeCJK@setcurrentchar@ii@s}} \def\xeCJKsetecglue#1{ \def\CJK@ecglue{#1} \let\CJKecglue\CJK@ecglue} \let\CJKsetecglue\xeCJKsetecglue \CJKsetecglue{ } \def\xeCJKallowbreakbetweenpuncts{ \def\xeCJKpunctnobreak{ \hskip \z@\relax}} \def\xeCJKnobreakbetweenpuncts{ \let\xeCJKpunctnobreak\nobreak} \xeCJKnobreakbetweenpuncts \let\xeCJK@itcorr\/ \def\/{% \relax \ifnum\lastkern=4 % \unkern\unkern \fi \xeCJK@itcorr} \let\@@italiccorr=\/ \newcount\xeCJK@cnta \newcount\xeCJK@cntb \newcount\xeCJK@cntc \newcount\xeCJK@cntd \newcount\xeCJK@cnte \newdimen\xeCJK@dima \newif\ifxeCJK@dokerning \def\xeCJK@punctrule#1#2{ \xdef\xeCJK@bboxname{\xeCJK@fontname} \unless\ifcsname xeCJK\xeCJK@punctstyle\xeCJK@bboxname @#2rule@#1\endcsname \unless\ifcsname xeCJK@\xeCJK@bboxname @lspace@#1\endcsname {\xeCJK@setfont\xeCJK@setpunctbounds{#1}} \fi \xeCJK@dokerningtrue \ifnum\xeCJK@punctstyle=\xeCJK@ps@plain\relax \xeCJK@dokerningfalse \else \ifcsname xeCJK@specialpunct#1\endcsname \xeCJK@dokerningfalse \fi \fi \ifxeCJK@dokerning \xeCJK@cnta=\csname xeCJK@\xeCJK@bboxname @#2space@#1\endcsname\relax \xeCJK@cntc=\xeCJK@cnta \ifcase\xeCJK@punctstyle % hangmobanjiao \or % quanjiao \or % banjiao \advance\xeCJK@cntc -50\relax \or % kaiming \ifcsname xeCJK@kaiming#1\endcsname \advance\xeCJK@cntc -20\relax \else \advance\xeCJK@cntc -50\relax \fi \or % CCT \ifcsname xeCJK@kaiming#1\endcsname \advance\xeCJK@cntc -20\relax \else \advance\xeCJK@cntc -30\relax \fi \fi \xeCJK@cntd=\xeCJK@cntc \ifnum\xeCJK@cntc<0\relax \xeCJK@cntc=0\relax \fi \else \xeCJK@cnta=0\relax \xeCJK@cntc=0\relax \xeCJK@cntd=0\relax \fi \xeCJK@numtodim{\xeCJK@cnta} \expandafter\xdef\csname xeCJK\xeCJK@punctstyle\xeCJK@bboxname @#2rule@#1\endcsname{ -\xeCJK@temp em} \xeCJK@numtodim{\xeCJK@cntc} \expandafter\xdef\csname xeCJK\xeCJK@punctstyle\xeCJK@bboxname @#2glue@#1\endcsname{ \xeCJK@temp em} \expandafter\xdef\csname xeCJK\xeCJK@punctstyle\xeCJK@bboxname @#2oglue@#1\endcsname{ \the\xeCJK@cntd} \fi} \def\xeCJK@numtodim#1{ \xeCJK@cnte=#1\relax \ifnum\the\xeCJK@cnte<100\relax \def\xeCJK@temp{0} \else \advance\xeCJK@cnte -100\relax \def\xeCJK@temp{1} \fi \ifnum\the\xeCJK@cnte<10 \edef\xeCJK@temp{\xeCJK@temp.0\the\xeCJK@cnte} \else \edef\xeCJK@temp{\xeCJK@temp.\the\xeCJK@cnte} \fi} \expandafter\def\csname xeCJK@kaiming.\endcsname{} \expandafter\def\csname xeCJK@kaiming。\endcsname{} \expandafter\def\csname xeCJK@kaiming?\endcsname{} \expandafter\def\csname xeCJK@kaiming!\endcsname{} \expandafter\def\csname xeCJK@specialpunct—\endcsname{}% U+2014 \expandafter\def\csname xeCJK@specialpunct─\endcsname{}% U+2500 \expandafter\def\csname xeCJK@specialpunct…\endcsname{} \def\xeCJK@setkern#1#2{ \unless\ifcsname xeCJK\xeCJK@punctstyle\xeCJK@bboxname @kern#1#2\endcsname \xeCJK@cnta=0\relax \ifcsname xeCJK\xeCJK@punctstyle\xeCJK@bboxname @roglue@#1\endcsname \advance\xeCJK@cnta\csname xeCJK\xeCJK@punctstyle\xeCJK@bboxname @roglue@#1\endcsname \fi \ifcsname xeCJK\xeCJK@punctstyle\xeCJK@bboxname @loglue@#2\endcsname \advance\xeCJK@cnta\csname xeCJK\xeCJK@punctstyle\xeCJK@bboxname @loglue@#2\endcsname \fi \relax \ifcase\xeCJK@punctstyle % hangmobanjiao \or % quanjiao \advance\xeCJK@cnta -50\relax \or % banjiao \advance\xeCJK@cnta -50\relax \or % kaiming \advance\xeCJK@cnta -50\relax \or % CCT \advance\xeCJK@cnta -50\relax \fi \ifnum\xeCJK@cnta<0\relax \xeCJK@cnta=0\relax \fi \xeCJK@numtodim{\xeCJK@cnta} \expandafter\xdef\csname xeCJK\xeCJK@punctstyle\xeCJK@bboxname @kern#1#2\endcsname{ \xeCJK@temp em} \fi} \def\xeCJKsetkern#1#2#3{ \xdef\xeCJK@bboxname{\xeCJK@fontname} \expandafter\xdef\csname xeCJK\xeCJK@punctstyle\xeCJK@bboxname @kern#1#2\endcsname{#3}} \def\punctstyle#1{ \ifcsname xeCJK@ps@#1\endcsname \edef\xeCJK@punctstyle{\csname xeCJK@ps@#1\endcsname} \ifnum\xeCJK@punctstyle=\xeCJK@ps@plain\relax \xeCJKallowbreakbetweenpuncts \fi \else \PackageWarning{xeCJK}{Punctstyle #1\space is not defined.} \fi} \def\xeCJK@ps@hangmobanjiao{0} \def\xeCJK@ps@marginkerning{0} \def\xeCJK@ps@quanjiao{1} \def\xeCJK@ps@fullwidth{1} \def\xeCJK@ps@banjiao{2} \def\xeCJK@ps@halfwidth{2} \def\xeCJK@ps@kaiming{3} \def\xeCJK@ps@mixedwidth{3} \def\xeCJK@ps@CCT{4} \def\xeCJK@ps@plain{5} \punctstyle{quanjiao} \def\xeCJKplainchr{\punctstyle{plain}} \def\xeCJK@sidespace{10} \def\xeCJK@getglyphbounds#1{ \xeCJK@cnta=\number\XeTeXglyphbounds #1 \xeCJK@gid \xeCJK@dima 1em\relax \xeCJK@cntb=\number\xeCJK@dima \multiply\xeCJK@cnta 100\relax \divide\xeCJK@cnta\xeCJK@cntb \advance\xeCJK@cnta -15\relax \edef\xeCJK@temp{\the\xeCJK@cnta} \ifnum\xeCJK@temp<0\relax \def\xeCJK@temp{0} \fi} \def\xeCJK@setpunctbounds#1{ \edef\xeCJK@gid{\the\XeTeXcharglyph`#1} \xeCJK@getglyphbounds{1} \expandafter\xdef\csname xeCJK@\xeCJK@bboxname @lspace@#1\endcsname{ \xeCJK@temp} \xeCJK@getglyphbounds{3} \expandafter\xdef\csname xeCJK@\xeCJK@bboxname @rspace@#1\endcsname{ \xeCJK@temp} \ifcsname xeCJK@specialpunct#1\endcsname \unless\ifx#1… \xeCJK@cnta=\number\XeTeXglyphbounds 1 \xeCJK@gid \advance\xeCJK@cnta\number\XeTeXglyphbounds 3 \xeCJK@gid \xeCJK@dima 1em\relax \xeCJK@cntb=\number\xeCJK@dima \multiply\xeCJK@cnta 100\relax \divide\xeCJK@cnta\xeCJK@cntb \advance\xeCJK@cnta 1\relax \ifnum\xeCJK@cnta>9 \edef\xeCJK@temp{-0.\the\xeCJK@cnta em} \else \ifnum\xeCJK@cnta>1 \edef\xeCJK@temp{-0.0\the\xeCJK@cnta em} \else \edef\xeCJK@temp{-0.01 em} \fi \fi \xeCJK@cnta=0 \loop \global\expandafter\edef\csname xeCJK\the\xeCJK@cnta\xeCJK@bboxname @kern#1#1\endcsname{\xeCJK@temp} \advance \xeCJK@cnta 1\relax \ifnum\xeCJK@cnta<6\repeat \fi \fi} \unless\ifcsname XeTeXglyphbounds\endcsname \PackageError{xeCJK}{\string\XeTeXglyphbounds \space not defined.^^J You have to update XeTeX to the version 0.9995.0 or later}{} \fi \def\CJKsymbol#1{#1} \def\CJKpunctsymbol#1{#1} % For pure plain TeX \def\xeCJK@setfont{\CJKfont} \def\xeCJK@fontname{\fontname\CJKfont} \def\CJKfont{\errmessage{xeCJK Error: You must define \noexpand\CJKfont first}} \endlinechar=`\^^M \resetatcatcode \endinput % vim:ft=plaintex