1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128
|
\documentclass{article}
\usepackage{CJK}
\begin{document}
\begin{CJK*}{GBK}{song}
\makeatletter
\pagestyle{empty}
\def\puncts{ۣݣ}
\bgroup
\catcode`\%=11
\catcode`\{=11
\catcode`\}=11
\catcode`\(=1
\catcode`\)=2
\catcode`\#=11
\gdef\sharp(#)
\global\def\percent(%)
\global\def\lbrace({)
\global\def\rbrace(})
\egroup
\newwrite\fdrubisha
\newwrite\fdspa
\newread\fdin
\def\makefile@rubisha{
\immediate\openout\fdrubisha=rubisha.tex\relax
\immediate\write\fdrubisha{\string\documentclass{article}}
\immediate\write\fdrubisha{\string\usepackage{CJK} }
\immediate\write\fdrubisha{\string\textwidth 200pt }
\immediate\write\fdrubisha{\string\textheight 200pt }
\immediate\write\fdrubisha{\string\begin{document} }
\immediate\write\fdrubisha{\string\begin{CJK*}{GBK}{song}}
\immediate\write\fdrubisha{\string\makeatletter }
\immediate\write\fdrubisha{\string\pagestyle{empty} }
\immediate\write\fdrubisha{\string\def\string\punctlist\sharp1\sharp2\lbrace
\sharp1\sharp2\string\rule{0.5pt}{40pt}\string\newpage}
\immediate\write\fdrubisha{\string\rule{0.5pt}{20pt}\sharp1\sharp2\string\newpage}
\immediate\write\fdrubisha{\string\@ifnextchar[{\string\xeCJK@gobble@a}{\string\punctlist}\rbrace}
\immediate\write\fdrubisha{}
\immediate\write\fdrubisha{\string\def\string\xeCJK@gobble@a[]{} }
\immediate\write\fdrubisha{}
\immediate\write\fdrubisha{\string\CJKfamily{\CJKpunct@family}}
\immediate\write\fdrubisha{\string\fontsize{100pt}{120pt}\string\selectfont}
{
\let\protect\@unexpandable@protect
\immediate\write\fdrubisha{\string\punctlist\space\puncts []}
}
\immediate\write\fdrubisha{\string\newpage }
\immediate\write\fdrubisha{\string\end{CJK*} }
\immediate\write\fdrubisha{\string\end{document}}
\immediate\closeout\fdrubisha\relax}
\newcount\cnta
\newcount\cntb
\newcommand{\CJKpunctsetfamily}[1]{
\edef\CJKpunct@family{#1}
\makefile@rubisha
\immediate\write18{pdflatex rubisha}
\immediate\write18{\ghostscript}
\epstobbox
}
\catcode`\%=11\relax
\def\epstobbox{
\cntb=0
\def\CJKpunctspaces{}
\immediate\openin\fdin=rubishb.tex\relax
\ifeof\fdin
\@latex@error{setpunct: file rubishb.tex not found}{}\relax
\fi
\loop
\getxyspace
\edef\CJKpunctspaces{\CJKpunctspaces\temp@xspace,}
\getxyspace
\edef\CJKpunctspaces{\CJKpunctspaces\temp@xspace,}
\advance\cntb 1
\ifnum\cntb<35\repeat
\immediate\closein\fdin
\immediate\write\fdspa{\string\def\string\CJKpunct@\CJKpunct@family
@spaces{\CJKpunctspaces,,}\string\relax}}
\def\getxyspace{
\read\fdin to\tempa
\edef\:{\tempa}
\expandafter\getleftupdimen\: {} %%BoundingBox: 1 1 0 0 \relax
\ifnum\temp@xwidth<0\relax
\read\fdin to\tempa
\edef\:{\tempa}
\expandafter\getleftupdimen\: {} %%BoundingBox: 1 1 0 0 \relax
\fi
\ifnum\temp@xwidth<1
\@latex@error{error in setting punct bbox \tempa}{}\relax
\fi
\cnta=-\temp@xwidth\relax
\advance\cnta 100\relax
\ifnum\cnta<0
\cnta=0\relax
\fi
\edef\temp@xspace{\the\cnta}}
\long\def\getleftupdimen#1%%BoundingBox: #2 #3 #4 #5 {
\cnta=#4\relax
\advance\cnta -#2\relax
\edef\temp@xwidth{\the\cnta}
\cnta=#5\relax
\advance\cnta -#3\relax
\edef\temp@yheight{\the\cnta}
\gobblerest}
\long\def\gobblerest#1\relax{}
\immediate\openout\fdspa=CJKpunct.spa\relax
\setpunctfamilies
\immediate\closeout\fdspa
\end{CJK*}
\end{document}
|