diff options
Diffstat (limited to 'language/chinese/CJK/cjk-4.8.5/texinput/CJKfntef.sty')
-rw-r--r-- | language/chinese/CJK/cjk-4.8.5/texinput/CJKfntef.sty | 509 |
1 files changed, 509 insertions, 0 deletions
diff --git a/language/chinese/CJK/cjk-4.8.5/texinput/CJKfntef.sty b/language/chinese/CJK/cjk-4.8.5/texinput/CJKfntef.sty new file mode 100644 index 0000000000..045380abdf --- /dev/null +++ b/language/chinese/CJK/cjk-4.8.5/texinput/CJKfntef.sty @@ -0,0 +1,509 @@ +% This is the file CJKfntef.sty of the CJK package +% extending CJKulem.sty with more font effects +% +% created by Wenchang Sun <sunwch@hotmail.com> +% Werner Lemberg <wl@gnu.org> +% +% Version 4.8.5 (16-Oct-2021) +% +% Macros: +% \CJKunderdot{...} +% \CJKunderline[*]{...} +% \CJKunderdblline[*]{...} +% \CJKunderwave[*]{...} +% \CJKsout[*]{...} +% \CJKxout[*]{...} +% \varCJKunderline +% \CJKunderanyline +% \CJKunderanysymbol +% +% The following nesting combinations are allowed: +% +% \CJKunderdot{...\CJKunderline[*]{...}...} +% \CJKunderdot{...\CJKunderdblline[*]{...}...} +% \CJKunderdot{...\CJKunderwave[*]{...}...} +% \CJKunderdot{...\CJKsout[*]{...}...} +% \CJKunderdot{...\CJKxout[*]{...}...} +% +% \CJKunderline[*]{...\CJKunderdot{...}...} +% \CJKunderdblline[*]{...\CJKunderdot{...}...} +% \CJKunderwave[*]{...\CJKunderdot{...}...} +% \CJKsout[*]{...\CJKunderdot{...}...} +% \CJKxout[*]{...\CJKunderdot{...}...} +% +% Environment: +% CJKfilltwosides +% +% +% Here an example which shows how to use \CJKunderanysymbol. +% +% \def\varCJKunderdot{% +% \CJKunderanysymbol{0.5em}{$\cdot$}% +% } +% + +% Copyright (C) 1994-2021 Werner Lemberg <wl@gnu.org> +% +% This program is free software; you can redistribute it and/or modify +% it under the terms of the GNU General Public License as published by +% the Free Software Foundation; either version 2 of the License, or +% (at your option) any later version. +% +% This program is distributed in the hope that it will be useful, +% but WITHOUT ANY WARRANTY; without even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +% GNU General Public License for more details. +% +% You should have received a copy of the GNU General Public License +% along with this program in doc/COPYING; if not, write to the Free +% Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, +% MA 02110-1301 USA + +\NeedsTeXFormat{LaTeX2e}[1998/06/01] +\def\fileversion{4.8.5} +\def\filedate{2021/10/16} +\ProvidesPackage{CJKfntef}[\filedate\space\fileversion] + +\RequirePackage{CJK} +\RequirePackage{CJKulem} + + +\endlinechar \m@ne + + +\ifx\CJKpunctsymbol\undefined + \PackageWarning{CJKfntef}{ + You need to download the last version of the CJK package\MessageBreak + to keep CJK punctuation from being underdotted} + \let\CJKpunctsymbol\CJKsymbol +\fi + + +\newskip\CJK@fntefSkip +\newcount\CJK@nest +\newdimen\CJK@fntefDimen +\newbox\CJK@underdotBox +\newbox\CJK@ULbox + +\newif\ifCJK@UL@ +\CJK@UL@false +\newif\ifCJK@sxout@ +\CJK@sxout@false + + +\newcommand{\CJKunderdotbasesep}{0.05em} +\newcommand{\CJKunderdotsep}{0.04em} +\newcommand{\CJKunderlinebasesep}{0.20em} +\newcommand{\CJKunderlinesep}{0.07em} +\newcommand{\CJKunderdbllinebasesep}{0.20em} +\newcommand{\CJKunderdbllinesep}{0.17em} +\newcommand{\CJKunderwavebasesep}{0.20em} +\newcommand{\CJKunderwavesep}{0.00em} +\newcommand{\CJKsoutheight}{0.35em} + +\let\CJKf@global\global + +\ifx\color\undefined + \def\CJKunderdotcolor{} + \def\CJKunderwavecolor{} + \def\CJKunderlinecolor{} + \def\CJKunderdbllinecolor{} + \def\CJKsoutcolor{} + \def\CJKxoutcolor{} +\else + \def\CJKunderdotcolor{\color{red}} + \def\CJKunderwavecolor{\color{blue}} + \def\CJKunderlinecolor{\color{blue}} + \def\CJKunderdbllinecolor{\color{blue}} + \def\CJKsoutcolor{\color{red}} + \def\CJKxoutcolor{\color{blue}} +\fi + + +% +% \CJKunderdot: +% Add a dot under every CJK non-punctuation character. The dot position +% can be controlled by redefining \CJKunderdotsep (for nesting) and +% \CJKunderdotbasesep. +% +% The dot color can be changed by redefining \CJKunderdotcolor. +% +\def\CJK@underdotSkip{\z@} + +\def\CJK@preUnderdot{ + \ifnum\CJK@nest = \z@ + \CJKf@global\advance\CJK@fntefSkip \CJKunderdotbasesep + \fi + \CJKf@global\advance\CJK@nest \@ne + + \xdef\CJK@underdotSkip{\the\CJK@fntefSkip} + \CJKf@global\advance\CJK@fntefSkip \CJKunderdotsep + + \CJKf@global\setbox\CJK@underdotBox\hbox{{ + \CJKunderdotcolor + {$\cdot$}}} + \CJKf@global\advance\CJK@fntefSkip \ht\CJK@underdotBox + \CJKf@global\advance\CJK@fntefSkip \dp\CJK@underdotBox} + +\def\CJK@postUnderdot{ + \CJKf@global\advance\CJK@fntefSkip -\CJKunderdotsep + \CJKf@global\advance\CJK@fntefSkip -\ht\CJK@underdotBox + \CJKf@global\advance\CJK@fntefSkip -\dp\CJK@underdotBox + \CJKf@global\def\CJK@underdotSkip{\z@} + + \CJKf@global\advance\CJK@nest \m@ne + \ifnum\CJK@nest = \z@ + \CJKf@global\advance\CJK@fntefSkip -\CJKunderdotbasesep + \fi} + + +\ifcsname XeTeXinterchartokenstate\endcsname + \def\XeTeX@CJKfntef@hook{ + \XeTeXinterchartokenstate=0} +\else + \let\XeTeX@CJKfntef@hook\relax +\fi + +\newcommand{\CJKunderdot}[1]{ + \CJK@preUnderdot + + \CJKf@global\let\CJK@underdotSymbol \CJKsymbol + \CJKf@global\def\CJKsymbol##1{ + \CJK@underdotSymbol{##1} + + \settowidth\CJK@fntefDimen{{ + \XeTeX@CJKfntef@hook + \CJK@underdotSymbol{##1}}} + \leavevmode + \rlap{ + \vbox to \z@ { + \vskip\CJK@underdotSkip + \hbox to \z@ { + \hskip -\CJK@fntefDimen + \hss + \copy\CJK@underdotBox + \hss} + \vss}}} + #1 + \CJKf@global\let\CJKsymbol \CJK@underdotSymbol + + \CJK@postUnderdot + \ignorespaces} + + +% +% Auxiliary macros needed by \CJKunderline and friends. +% +\def\UL@CJKpunctnobreakglue{ + \ifx\ \LA@space + \LA@CJKglue + \else + \egroup + \UL@stop + \UL@start + \bgroup + \fi} + +\def\CJK@fntefSave{ + \CJKf@global\let\UL@UL@CJKnobreakglue \UL@CJKnobreakglue + \CJKf@global\let\UL@CJKsymbol \CJKsymbol + \CJKf@global\let\UL@CJKpunctsymbol \CJKpunctsymbol} + +\def\CJK@fntefRestore{ + \CJKf@global\let\UL@CJKnobreakglue \UL@UL@CJKnobreakglue + \CJKf@global\let\CJKsymbol \UL@CJKsymbol + \CJKf@global\let\CJKpunctsymbol \UL@CJKpunctsymbol} + +\def\CJK@preUL{ + \ifCJK@UL@ + \PackageError{CJKfntef} + {Nesting error} + {Nesting \string\CJKunderwave[*], \string\CJKunderline[*], + \string\CJKsout[*], \string\CJKxout[*],\MessageBreak + or \string\CJKunderdblline[*] is not supported.} + \else + \CJKf@global\CJK@UL@true + \fi + \ifCJK@sxout@ + \CJKf@global\def\CJK@ULskip{\z@} + \else + \ifnum\CJK@nest = \z@ + \CJKf@global\advance\CJK@fntefSkip \CJK@ULbasesep + \fi + \CJKf@global\advance\CJK@nest \@ne + + \CJKf@global\advance\CJK@fntefSkip \ht\CJK@ULbox + \CJKf@global\advance\CJK@fntefSkip \dp\CJK@ULbox + + \xdef\CJK@ULskip{\the\CJK@fntefSkip} + \CJKf@global\advance\CJK@fntefSkip \CJK@ULsep + \fi} + +\def\CJK@postUL{ + \CJKf@global\CJK@UL@false + + \ifCJK@sxout@ + \CJKf@global\CJK@sxout@false + \else + \CJKf@global\advance\CJK@fntefSkip -\CJK@ULsep + \CJKf@global\advance\CJK@fntefSkip -\ht\CJK@ULbox + \CJKf@global\advance\CJK@fntefSkip -\dp\CJK@ULbox + + \CJKf@global\advance\CJK@nest \m@ne + \ifnum\CJK@nest = \z@ + \CJKf@global\advance\CJK@fntefSkip -\CJK@ULbasesep + \fi + \fi} + +\def\CJK@UL{ + \CJK@preUL + \CJK@fntefSave + + \CJKf@global\let\UL@CJKnobreakglue \UL@CJKpunctnobreakglue + \CJKf@global\def\CJKsymbol{ + \CJKf@global\def\UL@leadtype{\leaders\copy\ULC@box} + \UL@CJKsymbol} + \CJKf@global\def\CJKpunctsymbol{ + \CJKf@global\def\UL@leadtype{} + \UL@CJKpunctsymbol} + + \bgroup + \markoverwith{ + \lower\CJK@ULskip\copy\CJK@ULbox} + \aftergroup\CJK@fntefRestore + \aftergroup\CJK@postUL + \ULon} + +\def\CJK@@UL{ + \CJK@preUL + \bgroup + \markoverwith{ + \lower\CJK@ULskip\copy\CJK@ULbox} + \aftergroup\CJK@postUL + \ULon} + + +% +% \CJKunderwave*: +% The same as \uwave except that the wavy line is colored (you can change +% the color by redefining \CJKunderwavecolor), and the position can be +% controlled by redefining \CJKunderwavesep (for nesting) and +% \CJKunderwavebasesep. +% +% \CJKunderwave: +% The same as \CJKunderwave* but ignoring CJK punctuation characters. +% +\newcommand{\CJKunderwave}{ + \CJKf@global\let\CJK@ULsep \CJKunderwavesep + \CJKf@global\let\CJK@ULbasesep \CJKunderwavebasesep + \CJKf@global\setbox\CJK@ULbox\hbox{{ + \CJKunderwavecolor + \sixly + \char 58}} + + \@ifstar\CJK@@UL\CJK@UL} + + +% +% \CJKunderline*: +% The same as \uline except that the line is colored (you can change the +% color by redefining \CJKunderlinecolor), and the position can be +% controlled by redefining \CJKunderlinesep (for nesting) and +% \CJKunderlinebasesep. +% +% \CJKunderline: +% The same as \CJKunderline* but ignoring CJK punctuation characters. +% +\newcommand{\CJKunderline}{ + \CJKf@global\let\CJK@ULsep \CJKunderlinesep + \CJKf@global\let\CJK@ULbasesep \CJKunderlinebasesep + \CJKf@global\setbox\CJK@ULbox\hbox{{ + \CJKunderlinecolor + \vtop{\hrule \@height \ULthickness \@width .2em}}} + + \@ifstar\CJK@@UL\CJK@UL} + + +% +% \CJKunderdblline[*]: +% The same as \CJKunderline[*] except that two lines are used for +% underlining. +% +\newcommand{\CJKunderdblline}{ + \CJKf@global\let\CJK@ULsep \CJKunderdbllinesep + \CJKf@global\let\CJK@ULbasesep \CJKunderdbllinebasesep + + \CJKf@global\setbox\CJK@ULbox\hbox{{ + \CJKunderdbllinecolor + \vtop{ + \kern -.07em + \hrule \@height\ULthickness \@width .2em + \kern 1.1\p@ + \hrule}}} + + \@ifstar\CJK@@UL\CJK@UL} + + +% +% \CJKsout*: +% The same as \sout except that the line is colored (you can change the +% color by redefining \CJKsoutcolor), and the position can be controlled +% by redefining \CJKsoutheight. +% +% \CJKsout: +% The same as \CJKsout* but ignoring CJK punctuation characters. +% +\def\CJKsout{ + \CJKf@global\CJK@sxout@true + \CJKf@global\setbox\CJK@ULbox\hbox{{ + \CJKsoutcolor + \vtop{ + \kern -\CJKsoutheight + \hrule \@height\ULthickness \@width .2em}}} + + \@ifstar\CJK@@UL\CJK@UL} + + +% +% \CJKxout*: +% The same as \xout except using colored `/' (you can change the color +% by redefining \CJKxoutcolor). +% +% \CJKxout: +% The same as \CJKxout* but ignoring CJK punctuation characters. +% +\def\CJKxout{ + \CJKf@global\CJK@sxout@true + \CJKf@global\setbox\CJK@ULbox\hbox{{ + \kern -0.1em + {\CJKxoutcolor $/$} + \kern -0.1em}} + + \@ifstar\CJK@@UL\CJK@UL} + + +% +% CJKfilltwosides environment: +% Align CJK characters to fill two sides. +% +% Usage: +% \begin{CJKfilltwosides}{width} +% first line \\ +% second line \\ +% ... \\ +% last line +% \end{CJKfilltwosides} +% +\newif\ifCJK@fillbegin@ +\CJKf@global\CJK@fillbegin@false +\newif\ifCJK@filltwosides@ +\CJKf@global\CJK@filltwosides@false + +\newenvironment{CJKfilltwosides}[1]{ + \leavevmode + \vbox\bgroup + \CJKf@global\CJK@filltwosides@true + \CJKf@global\let\CJK@filltwosidesSymbol \CJKsymbol + + \def\CJK@ftscr{ + \egroup + \CJKf@global\CJK@fillbegin@false + \hbox to #1\bgroup + \ignorespaces} + + \let\\ \CJK@ftscr + + \def\CJKsymbol##1{ + \ifCJK@fillbegin@ + \hfill + \CJK@filltwosidesSymbol{##1} + \else + \CJK@filltwosidesSymbol{##1} + \CJKf@global\CJK@fillbegin@true + \fi} + + \hbox to #1\bgroup + \ignorespaces + }{ + \egroup + \egroup + + \CJKf@global\let\CJKsymbol \CJK@filltwosidesSymbol + \CJKf@global\CJK@fillbegin@false + \CJKf@global\CJK@filltwosides@false} + + +% +% \varCJKunderline: +% The same as \CJKunderline but leaving spaces between two consecutive +% \varCJKunderline calls. The separation on the left and right can be +% controlled by redefining \CJKulineleftskip and \CJKulinerightskip, +% respectively. +% +\def\CJKulineleftskip{0.2em} +\def\CJKulinerightskip{0.2em} + +\def\varCJKunderline#1{ + {\null + \hskip\CJKulineleftskip} + \CJKunderline{ + {\hskip-\CJKulineleftskip} + #1 + {\hskip-\CJKulinerightskip}} + {\hskip\CJKulinerightskip}} + + +% +% \CJKunderanyline: +% The same as \varCJKunderline but using a user-defined underline shape. +% The first argument gives the distance to the baseline, the second +% argument the object used for underlining. +% +\def\CJK@underanyline#1#2{ + \setbox\UL@box\hbox{{#2}} + \bgroup\markoverwith{\lower #1\copy\UL@box}\ULon} + +\def\CJKunderanyline#1#2#3{ + {\null + \hskip\CJKulineleftskip} + \CJK@underanyline{#1}{#2}{ + {\hskip-\CJKulineleftskip} + #3 + {\hskip-\CJKulinerightskip}} + {\hskip\CJKulinerightskip}} + + +% +% \CJKunderanysymbol: +% The same as \CJKunderdot but using a user-defined underline shape. +% The first argument gives the distance to the baseline, the second +% argument the object used for `underdotting'. +% +\newdimen\CJK@underanyskip + +\def\CJKunderanysymbol#1#2#3{{ + \CJK@underanyskip #1\relax + \setbox\CJK@underdotBox\hbox{{#2}} + \CJKf@global\let\CJK@underanysymbol\CJKsymbol + \CJKf@global\def\CJK@fntefglue{ + \CJKf@global\let\CJK@fntefglue\CJKglue} + \CJKf@global\def\CJKsymbol##1{ + \CJK@fntefglue + \CJK@underanysymbol{##1} + \leavevmode + \rlap{ + \lower \CJK@underanyskip + \hbox to \z@ { + \hskip -1em + \hss + \copy\CJK@underdotBox + \hss} + \hskip -1em} + \ignorespaces} + #3 + \CJKf@global\let\CJKsymbol\CJK@underanysymbol}} + + +\endlinechar `\^^M + +\endinput |