OSDN Git Service

Started to write lltjext.sty (↔ plext.sty); tabular/array, minipage, \parbox, \pbox.
[luatex-ja/luatexja.git] / src / lltjext.sty
1 %
2 % lltjext.sty: derived from plext.sty in pLaTeX.
3 %
4 \NeedsTeXFormat{LaTeX2e}
5 \ProvidesPackage{lltjext}
6    [2014/07/26 v1.2-ltj-1 ...]
7
8 \newif\if@rotsw
9 \def\array{\let\@acol\@arrayacol \let\@classz\@arrayclassz
10  \let\@classiv\@arrayclassiv
11  \let\\\@arraycr\let\@halignto\@empty\X@tabarray}
12 \def\tabular{\let\@halignto\@empty\X@tabular}
13 \@namedef{tabular*}{\@ifnextchar<%>
14    {\@stabular}{\@stabular<Z>}}
15 \def\X@tabarray{\@ifnextchar<%>
16    {\p@tabarray}{\p@tabarray<Z>}}
17 \def\X@tabular{\@ifnextchar<%>
18    {\p@tabular}{\p@tabular<Z>}}
19 \def\@stabular<#1>#2{\def\@halignto{to#2}\p@tabular<#1>}
20 \def\p@tabular<#1>{\leavevmode \hbox \bgroup $\let\@acol\@tabacol
21    \let\@classz\@tabclassz
22    \let\@classiv\@tabclassiv \let\\\@tabularcr\p@tabarray<#1>}
23 \def\p@tabarray<#1>{\m@th\@ifnextchar[%]
24    {\p@array<#1>}{\p@array<#1>[c]}}
25
26 \def\p@array<#1>[#2]#3{%
27   \let\box@dir\relax
28   \if #1z\relax
29     \ifnum\ltjgetparameter{direction}=3 \relax
30       \let\box@dir\utod\@tempcnta=\zstrutbox
31     \fi
32   \else
33     \if #1y\relax
34        \let\box@dir\yoko\@tempcnta=\strutbox
35     \else\if #1t\relax
36        \let\box@dir\tate\@tempcnta=\tstrutbox
37     \else\if #1d\relax
38        \let\box@dir\dtou\@tempcnta=\dstrutbox
39     \else\if #1u\relax
40        \let\box@dir\utod\@tempcnta=\zstrutbox
41     \fi\fi\fi\fi
42   \fi
43   \ifx\box@dir\relax
44     \ifcase\ltjgetparameter{direction}
45        \or   \let\box@dir\dtou\@tempcnta=\dstrutbox% dtou
46        \or\or\let\box@dir\tate\@tempcnta=\tstrutbox% tate
47        \or   \let\box@dir\yoko\@tempcnta=\strutbox% yoko
48        \else \let\box@dir\utod\@tempcnta=\zstrutbox% utod
49     \fi
50   \fi
51   \setbox\@arstrutbox\hbox{%
52     \box@dir
53     \vrule\@height\arraystretch\ltjgetht\@tempcnta
54           \@depth\arraystretch\ltjgetdp\@tempcnta \@width\z@}%
55   \fork@array@option<#1>[#2]%
56   \@mkpream{#3}\edef\@preamble{\ialign \noexpand\@halignto
57   \bgroup \tabskip\z@skip \@arstrut \@preamble \tabskip\z@skip \cr}%
58   \let\@startpbox\@@startpbox \let\@endpbox\@@endpbox
59   \let\tabularnewline\\%
60   \@begin@alignbox\bgroup\box@dir\adjustbaseline
61     \let\par\@empty
62     \let\@sharp##\let\protect\relax
63     \lineskip\z@skip\baselineskip\z@skip\@preamble}
64 \def\endarray{\crcr\egroup\egroup\@end@alignbox}
65 \def\endtabular{\crcr\egroup\egroup\@end@alignbox$\egroup}
66 \expandafter \let \csname endtabular*\endcsname = \endtabular
67 \def\fork@array@option<#1>[#2]{%
68 \ifnum\ltjgetparameter{direction}=4 % yoko
69   \ifx\box@dir\yoko
70     \if #2t\relax
71        \let\@begin@alignbox\vtop
72        \let\@end@alignbox\relax
73     \else\if #2b\relax
74        \let\@begin@alignbox\vbox
75        \let\@end@alignbox\relax
76     \else
77        \let\@begin@alignbox\vcenter
78        \let\@end@alignbox\relax
79     \fi\fi
80   \else
81     \if #2t\relax
82        \def\@begin@alignbox{\vtop\bgroup\kern\z@\vbox}%
83        \def\@end@alignbox{\egroup}%
84     \else\if #2b\relax
85        \let\@begin@alignbox\vbox
86        \let\@end@alignbox\relax
87     \else
88        \let\@begin@alignbox\vcenter
89        \let\@end@alignbox\relax
90     \fi\fi
91   \fi
92 \else\ifnum\ltjgetparameter{direction}=1 % dtou
93   \ifx\box@dir\yoko
94     \if #2t\relax
95        \def\@begin@alignbox{\vtop\bgroup\kern\z@\vbox}%
96        \def\@end@alignbox{\egroup}%
97     \else\if #2b\relax
98        \let\@begin@alignbox\vbox
99        \let\@end@alignbox\relax
100     \else
101       \let\@begin@alignbox\vcenter
102         \let\@end@alignbox\relax
103     \fi\fi
104   \else\ifx\box@dir\dtou
105     \if #2t\relax
106        \let\@begin@alignbox\vtop
107        \let\@end@alignbox\relax
108     \else\if #2b\relax
109        \let\@begin@alignbox\vbox
110        \let\@end@alignbox\relax
111     \else
112        \let\@begin@alignbox\vcenter
113        \let\@end@alignbox\relax
114     \fi\fi
115   \else % 180 度回転→vtop, vbox を入れ替える
116     \if #2t\relax
117        \let\@begin@alignbox\vbox %%% !!!
118        \let\@end@alignbox\relax
119     \else\if #2b\relax
120        \let\@begin@alignbox\vtop %%% !!!
121        \let\@end@alignbox\relax
122     \else
123        \let\@begin@alignbox\vcenter
124        \let\@end@alignbox\relax
125     \fi\fi
126   \fi\fi
127 \else % tate, utod
128   \ifx\box@dir\yoko
129     \if #2t\relax
130       \def\@begin@alignbox{\vtop\bgroup\kern\z@\vbox}%
131       \def\@end@alignbox{\egroup}%
132     \else\if #2b\relax
133       \def\@begin@alignbox{\vbox\bgroup\vbox}%
134       \def\@end@alignbox{\kern\z@\egroup}%
135     \else
136       \let\@begin@alignbox\vcenter
137       \let\@end@alignbox\relax
138     \fi\fi
139   \else\ifx\box@dir\dtou % 180 度回転→vtop, vbox を入れ替える
140     \if #2t\relax
141       \let\@begin@alignbox\vbox %%% !!!
142       \let\@end@alignbox\relax
143     \else\if #2b\relax
144       \let\@begin@alignbox\vtop %%% !!!
145       \let\@end@alignbox\relax
146     \else
147       \let\@begin@alignbox\vcenter
148       \let\@end@alignbox\relax
149     \fi\fi
150   \else
151     \if #2t\relax
152        \let\@begin@alignbox\vtop
153        \let\@end@alignbox\relax
154     \else\if #2b\relax
155        \let\@begin@alignbox\vbox
156        \let\@end@alignbox\relax
157     \else
158        \let\@begin@alignbox\vcenter
159        \let\@end@alignbox\relax
160     \fi\fi
161   \fi\fi
162 \fi\fi%
163 }
164 \newbox\@floatbox
165 \newdimen\floatwidth
166 \newdimen\floatheight
167 \newdimen\floatruletick \floatruletick=0.4pt
168 \newdimen\captionfloatsep \captionfloatsep=10pt
169 \def\caption@dir{Z}
170 \let\captiondir\relax
171 \newdimen\captionwidth \captionwidth\z@
172 \def\caption@posa{Z}
173 \def\caption@posb{Z}
174 \newbox\@captionbox
175 \def\captionfontsetup{\normalfont\normalsize}
176 \def\layoutfloat{\@ifnextchar(%)
177    {\X@layoutfloat}{\X@layoutfloat(-5\p@,-5\p@)}}
178 \def\X@layoutfloat(#1,#2){\@ifnextchar[%]
179    {\@layoutfloat(#1,#2)}{\@layoutfloat(#1,#2)[c]}}
180 \long\def\@layoutfloat(#1,#2)[#3]#4{%
181   \setbox\z@\hbox{#4}%
182   \floatwidth=#1 \floatheight=#2 \edef\float@pos{#3}%
183   \ifdim\floatwidth<\z@
184      \floatwidth\wd\z@\floatruletick\z@
185   \fi
186   \ifdim\floatheight<\z@
187      \floatheight\ht\z@\advance\floatheight\dp\z@\relax
188      \floatruletick\z@
189   \fi
190   \setbox\@floatbox\vbox to\floatheight{\offinterlineskip
191     \hrule width\floatwidth height\floatruletick depth\z@
192     \vss\hbox to\floatwidth{%
193       \vrule width\floatruletick height\floatheight depth\z@
194       \hss\vbox to\floatheight{\hsize\floatwidth\vss#4\vss}\hss
195       \vrule width\floatruletick height\floatheight depth\z@
196     }\hrule width\floatwidth height\floatruletick depth\z@}}
197 \def\DeclareLayoutCaption#1<#2>(#3)[#4#5]{%
198   \expandafter
199   \ifx\csname #1@layoutcaption\endcsname\relax \else
200     \@latex@info{Redeclaring capiton layout setting of '#1'}%
201   \fi
202   \expandafter
203   \gdef\csname #1@layoutcaption\endcsname{%
204      \if Z\caption@dir\def\caption@dir{#2}\fi
205      \ifdim\captionwidth=\z@ \captionwidth=#3\relax\fi
206      \if Z\caption@posa\def\caption@posa{#4}\fi
207      \if Z\caption@posb\def\caption@posb{#5}\fi}}
208 \@onlypreamble\DeclareLayoutCaption
209 \DeclareLayoutCaption{figure}<y>(.8\linewidth)[cd]
210 \DeclareLayoutCaption{table}<y>(.8\linewidth)[cu]
211 \def\layoutcaption{\def\caption@dir{Z}\captionwidth\z@
212   \def\caption@posa{Z}\def\caption@posb{Z}%
213   \@ifnextchar<\X@layoutcaption{%
214     \@ifnextchar(\@ilayoutcaption{%
215       \@ifnextchar[\@iilayoutcaption\relax}}}
216 \def\X@layoutcaption<#1>{\def\caption@dir{#1}%
217   \@ifnextchar(\@ilayoutcaption{%
218     \@ifnextchar[\@iilayoutcaption\relax}}
219 \def\@ilayoutcaption(#1){\setlength\captionwidth{#1}%
220   \@ifnextchar[{\@iilayoutcaption}{\relax}}
221 \def\@iilayoutcaption[#1#2]{%
222   \def\caption@posa{#1}\def\caption@posb{#2}}
223 \def\pcaption{\refstepcounter\@captype \@dblarg{\@pcaption\@captype}}
224 \long\def\@pcaption#1[#2]#3{%
225   \addcontentsline{\csname ext@#1\endcsname}{#1}{%
226     \protect\numberline{\csname the#1\endcsname}{\ignorespaces#2}}%
227   \ifvoid\@floatbox
228      \latex@error{Use with `\protect\layoutfloat'.}\@eha
229   \fi
230   \make@pcaptionbox{#3}%
231   \@pboxswfalse
232   \setbox\@tempboxa\vbox{\hbox to\hsize{\if l\float@pos\else\hss\fi
233     \if l\caption@posb\box\@captionbox\kern\captionfloatsep\fi
234     \if t\caption@posa\vtop
235     \else\if b\caption@posa\vbox
236     \else\ifmmode\vcenter \else\@pboxswtrue $\vcenter \fi\fi\fi
237     {\if u\caption@posb\box\@captionbox\kern\captionfloatsep\fi
238      \unvbox\@floatbox
239      \if d\caption@posb\kern\captionfloatsep\box\@captionbox\fi}%
240     \if r\caption@posb\kern\captionfloatsep\box\@captionbox\fi
241     \if@pboxsw \m@th$\fi \if r\float@pos\else\hss\fi}}%
242   \par\vskip.25\baselineskip
243   \box\@tempboxa}
244 \def\make@pcaptionbox#1{%
245   \expandafter
246   \ifx\csname\@captype @layoutcaption\endcsname\relax
247      \@latex@warning{Default caption layout of `\@captype' unknown.}%
248        \def\caption@dir{Z}\captionwidth\z@
249        \def\caption@posa{Z}\def\caption@posb{Z}%
250   \else
251      \csname \@captype @layoutcaption\endcsname
252   \fi
253   \@tempswafalse
254   % tempswa\hline 基本組の組方向とキャプションの組方向が直交するか?
255   \if y\caption@dir \let\captiondir\yoko
256     \ifodd\ltjgetparameter{direction}\@tempswatrue\fi
257   \else\if z\caption@dir \let\captiondir\relax
258     \ifnum\ltjgetparameter{direction}=3 \let\captiondir\utod\fi
259   \else\if d\caption@dir \let\captiondir\dtou
260     \ifeven\ltjgetparameter{direction}\@tempswatrue\fi
261   \else\if u\caption@dir \let\captiondir\utod
262     \ifeven\ltjgetparameter{direction}\@tempswatrue\fi
263   \else\let\captiondir\tate
264     \ifeven\ltjgetparameter{direction}\@tempswatrue\fi
265   \fi\fi\fi\fi% t -> tate
266   \setbox0\hbox{\hbox{\captiondir
267      \captionfontsetup\parindent\z@\inhibitglue
268      \csname fnum@\@captype\endcsname\char\euc"A1A1\relax#1}}%
269   \if@tempswa \@tempdima\ltjgetht0 \else\@tempdima\ltjgetwd0 \fi
270   \ifdim\@tempdima>\captionwidth \@tempdima\captionwidth \fi
271   \@pboxswfalse
272   \setbox0\hbox{%
273     \if u\caption@posb\vbox
274     \else\if d\caption@posb\vbox
275     \else\if t\caption@posa\vtop
276     \else\if b\caption@posa\vbox
277     \else\ifmmode\vcenter\else\@pboxswtrue $\vcenter\fi
278     \fi\fi\fi\fi
279     {\hsize\@tempdima\kern\z@
280     \vbox{\captiondir\hsize\@tempdima
281       \captionfontsetup\parindent\z@\inhibitglue
282       \csname fnum@\@captype\endcsname\char\euc"A1A1\relax#1}\kern\z@
283     }\if@pboxsw \m@th$\fi}%
284   \let\to@captionboxwidth\relax
285   \if l\caption@posb \else\if r\caption@posb\else
286   \def\to@captionboxwidth{to\floatwidth}\fi\fi
287   \setbox\@captionbox\hbox\to@captionboxwidth{%
288      \if t\caption@posa\else\hss\fi
289      \unhbox0\relax
290      \if b\caption@posa\else\hss\fi}}
291 \def\minipage{\@ifnextchar<%>
292    {\X@minipage}{\X@minipage<Z>}}
293 \def\X@minipage<#1>{\@ifnextchar[%]
294    {\@iminipage<#1>}{\@iiiminipage<#1>{c}\@empty[s]}}
295 \def\@iminipage<#1>[#2]{\@ifnextchar[%]
296    {\@iiminipage<#1>{#2}}{\@iiiminipage<#1>{#2}\@empty[s]}}
297 \def\@iiminipage<#1>#2[#3]{\@ifnextchar[%]
298    {\@iiiminipage<#1>{#2}{#3}}{\@iiiminipage<#1>{#2}{#3}[#2]}}
299 \def\@iiiminipage<#1>#2#3[#4]#5{%
300   \leavevmode\bgroup
301   \setlength\@tempdima{#5}%
302   \def\@mpargs{<#1>{#2}{#3}[#4]{#5}}%
303   \let\box@dir\relax
304   \if #1z\relax
305     \ifnum\ltjgetparameter{direction}=3\relax
306       \let\box@dir\utod
307     \fi
308   \else
309     \if #1y\relax     \let\box@dir\yoko
310     \else\if #1t\relax\let\box@dir\tate
311     \else\if #1d\relax\let\box@dir\dtou
312     \else\if #1u\relax\let\box@dir\utod
313     \fi\fi\fi\fi
314   \fi
315   \ifx\box@dir\relax
316     \ifcase\ltjgetparameter{direction}\relax
317        \or   \let\box@dir\dtou
318        \or\or\let\box@dir\tate
319        \or   \let\box@dir\yoko
320        \else \let\box@dir\utod
321     \fi
322   \fi
323   \setbox\@tempboxa\vbox\bgroup\box@dir
324     \adjustbaseline
325     \color@begingroup
326       \hsize\@tempdima
327       \textwidth\hsize \columnwidth\hsize
328       \@parboxrestore
329       \def\@mpfn{mpfootnote}\def\thempfn{\thempfootnote}%
330       \c@mpfootnote\z@
331       \let\@footnotetext\@mpfootnotetext
332       \let\@listdepth\@mplistdepth \@mplistdepth\z@
333       \@minipagerestore
334       \global\@minipagetrue %% \global added 24 May 89
335       \everypar{\global\@minipagefalse\everypar{}}}
336 \def\endminipage{%
337     \par
338     \unskip
339     \ifvoid\@mpfootins\else
340       \vskip\skip\@mpfootins
341       \normalcolor
342       \footnoterule
343       \unvbox\@mpfootins
344     \fi
345     \global\@minipagefalse   %% added 24 May 89
346   \color@endgroup
347   \egroup
348   \expandafter\@iiiparbox\@mpargs{\unvbox\@tempboxa}\egroup}
349 \def\parbox{\@ifnextchar<%>
350    {\X@parbox}{\X@parbox<Z>}}
351 \def\X@parbox<#1>{\@ifnextchar[%]
352    {\@iparbox<#1>}{\@iiiparbox<#1>{c}\@empty[s]}}
353 \def\@iparbox<#1>[#2]{\@ifnextchar[%]
354    {\@iiparbox<#1>{#2}}{\@iiiparbox<#1>{#2}\@empty[s]}}
355 \def\@iiparbox<#1>#2[#3]{\@ifnextchar[%]%
356    {\@iiiparbox<#1>{#2}{#3}}{\@iiiparbox<#1>{#2}{#3}[#2]}}
357 \long\def\@iiiparbox<#1>#2#3[#4]#5#6{%
358   \leavevmode\bgroup
359   \setlength\@tempdima{#5}%
360   \fork@parbox@option<#1>[#2]%
361   \@begin@tempboxa\vbox{\box@dir
362     \hsize\@tempdima\@parboxrestore\adjustbaseline#6\endgraf}%
363     \ifx\@empty#3\relax\else
364       \setlength\@tempdimb{#3}%
365       \def\@parboxto{to\@tempdimb}%
366     \fi
367     \@begin@parbox\@parboxto{\box@dir\adjustbaseline
368        \let\hss\vss\let\unhbox\unvbox
369        \csname bm@#4\endcsname}\@end@parbox
370   \@end@tempboxa\egroup}
371 \def\fork@parbox@option<#1>[#2]{%
372   \let\box@dir\relax
373   \if #1z\relax
374     \ifnum\ltjgetparameter{direction}=3\relax
375       \let\box@dir\utod
376     \fi
377   \else
378     \if #1y\relax     \let\box@dir\yoko
379     \else\if #1t\relax\let\box@dir\tate
380     \else\if #1d\relax\let\box@dir\dtou
381     \else\if #1u\relax\let\box@dir\utod
382     \fi\fi\fi\fi
383   \fi
384   \ifx\box@dir\relax
385     \ifcase\ltjgetparameter{direction}\relax
386        \or   \let\box@dir\dtou
387        \or\or\let\box@dir\tate
388        \or   \let\box@dir\yoko
389        \else \let\box@dir\utod
390     \fi
391   \fi
392 %%% now almost same as \fork@array@option
393 \ifnum\ltjgetparameter{direction}=4 % yoko
394   \ifx\box@dir\yoko
395     \if #2t\relax
396        \let\@begin@parbox\vtop
397        \let\@end@parbox\relax
398     \else\if #2b\relax
399        \let\@begin@parbox\vbox
400        \let\@end@parbox\relax
401     \else
402       \def\@begin@parbox{$\vcenter}%
403       \def\@end@parbox{\m@th$}%
404     \fi\fi
405   \else
406     \if #2t\relax
407        \def\@begin@parbox{\vtop\bgroup\kern\z@\vbox}%
408        \def\@end@parbox{\egroup}%
409     \else\if #2b\relax
410        \let\@begin@parbox\vbox
411        \let\@end@parbox\relax
412     \else
413       \def\@begin@parbox{$\vcenter}%
414       \def\@end@parbox{\m@th$}%
415     \fi\fi
416   \fi
417 \else\ifnum\ltjgetparameter{direction}=1 % dtou
418   \ifx\box@dir\yoko
419     \if #2t\relax
420        \def\@begin@parbox{\vtop\bgroup\kern\z@\vbox}
421        \def\@end@parbox{\egroup}
422     \else\if #2b\relax
423        \let\@begin@parbox\vbox
424        \let\@end@parbox\relax
425     \else
426       \def\@begin@parbox{$\vcenter}%
427       \def\@end@parbox{\m@th$}%
428     \fi\fi
429   \else\ifx\box@dir\dtou
430     \if #2t\relax
431        \let\@begin@parbox\vtop
432        \let\@end@parbox\relax
433     \else\if #2b\relax
434        \let\@begin@parbox\vbox
435        \let\@end@parbox\relax
436     \else
437       \def\@begin@parbox{$\vcenter}%
438       \def\@end@parbox{\m@th$}%
439     \fi\fi
440   \else % 180 度回転→vtop, vbox を入れ替える
441     \if #2t\relax
442        \let\@begin@parbox\vbox %%% !!!
443        \let\@end@parbox\relax
444     \else\if #2b\relax
445        \let\@begin@parbox\vtop %%% !!!
446        \let\@end@parbox\relax
447     \else
448       \def\@begin@parbox{$\vcenter}%
449       \def\@end@parbox{\m@th$}%
450     \fi\fi
451   \fi\fi
452 \else % tate, utod
453   \ifx\box@dir\yoko
454     \if #2t\relax
455       \def\@begin@parbox{\vtop\bgroup\kern\z@\vbox}%
456       \def\@end@parbox{\egroup}%
457     \else\if #2b\relax
458       \def\@begin@parbox{\vbox\bgroup\vbox}%
459       \def\@end@parbox{\kern\z@\egroup}%
460     \else
461       \def\@begin@parbox{$\vcenter}%
462       \def\@end@parbox{\m@th$}%
463     \fi\fi
464   \else\ifx\box@dir\dtou % 180 度回転→vtop, vbox を入れ替える
465     \if #2t\relax
466       \let\@begin@parbox\vbox %%% !!!
467       \let\@end@parbox\relax
468     \else\if #2b\relax
469       \let\@begin@parbox\vtop %%% !!!
470       \let\@end@parbox\relax
471     \else
472       \def\@begin@parbox{$\vcenter}%
473       \def\@end@parbox{\m@th$}%
474     \fi\fi
475   \else
476     \if #2t\relax
477        \let\@begin@parbox\vtop
478        \let\@end@parbox\relax
479     \else\if #2b\relax
480        \let\@begin@parbox\vbox
481        \let\@end@parbox\relax
482     \else
483       \def\@begin@parbox{$\vcenter}%
484       \def\@end@parbox{\m@th$}%
485     \fi\fi
486   \fi\fi
487 \fi\fi%
488 }
489 \def\pbox{\leavevmode\@ifnextchar<{\X@makePbox}{\X@makePbox<Z>}}
490 \def\X@makePbox<#1>{%
491   \@ifnextchar[{\@imakePbox<#1>}{\@imakePbox<#1>[-5\p@]}}
492 \def\@imakePbox<#1>[#2]{\@ifnextchar[%]
493   {\@iimakePbox<#1>{#2}}{\@iimakePbox<#1>{#2}[c]}}
494 \def\@iimakePbox<#1>#2[#3]#4{%
495   \bgroup\let\box@dir\relax
496   \if #1z\relax
497     \ifnum\ltjgetparameter{direction}=3 \relax
498       \let\box@dir\utod
499     \fi
500   \else
501     \if #1y\relax     \let\box@dir\yoko
502     \else\if #1t\relax\let\box@dir\tate
503     \else\if #1d\relax\let\box@dir\dtou
504     \else\if #1u\relax\let\box@dir\utod
505     \fi\fi\fi\fi
506   \fi
507   \ifx\box@dir\relax
508     \ifcase\ltjgetparameter{direction}
509        \or   \let\box@dir\dtou
510        \or\or\let\box@dir\tate
511        \or   \let\box@dir\yoko
512        \else \let\box@dir\utod
513     \fi
514   \fi
515     \ifdim #2 <\z@ \hbox{\box@dir#4}\else
516     \hbox to#2{\box@dir
517                \if #3l\relax\else\hss\fi
518                #4\relax
519                \if #3r\relax\else\hss\fi}\fi\egroup}
520 \def\picture{\@ifnextchar<%>
521    {\X@picture}{\X@picture<Z>}}
522 \def\X@picture<#1>(#2,#3){\@ifnextchar(%)
523    {\@@picture<#1>(#2,#3)}{\@@picture<#1>(#2,#3)(0,0)}}
524 \newdimen\save@ybaselineshift
525 \newdimen\save@tbaselineshift
526 \newdimen\@picwd
527 \def\@@picture<#1>(#2,#3)(#4,#5){%
528   \save@ybaselineshift\ybaselineshift
529   \save@tbaselineshift\tbaselineshift
530   \iftdir
531     \if#1y\let\box@dir\yoko
532       \@picwd=#3\unitlength \@picht=#2\unitlength
533       \@tempdima=#5\unitlength \@tempdimb=#4\unitlength
534     \else\let\box@dir\tate
535       \@picwd=#2\unitlength \@picht=#3\unitlength
536       \@tempdima=#4\unitlength \@tempdimb=#5\unitlength
537     \fi
538   \else
539     \if#1t\let\box@dir\tate
540       \@picwd=#3\unitlength \@picht=#2\unitlength
541       \@tempdima=#5\unitlength \@tempdimb=#4\unitlength
542     \else\let\box@dir\yoko
543       \@picwd=#2\unitlength \@picht=#3\unitlength
544       \@tempdima=#4\unitlength \@tempdimb=#5\unitlength
545     \fi
546   \fi
547   \setbox\@picbox\hbox to\@picwd\bgroup\box@dir
548   \hskip-\@tempdima\lower\@tempdimb\hbox\bgroup
549   \ybaselineshift\z@ \tbaselineshift\z@
550   \ignorespaces}
551 \def\endpicture{%
552   \egroup\hss\egroup
553   \ht\@picbox\@picht \wd\@picbox\@picwd \dp\@picbox\z@
554   \mbox{\box\@picbox}%
555   \ybaselineshift\save@ybaselineshift
556   \tbaselineshift\save@tbaselineshift}
557 \let\org@put\put
558 \def\put{\ybaselineshift\z@\tbaselineshift\z@\org@put}
559 \let\org@line\line
560 \def\line{\ybaselineshift\z@\tbaselineshift\z@\org@line}
561 \let\org@vector\vector
562 \def\vector{\ybaselineshift\z@\tbaselineshift\z@\org@vector}
563 \let\org@dashbox\dashbox
564 \def\dashbox{\ybaselineshift\z@\tbaselineshift\z@\org@dashbox}
565 \let\org@oval\oval
566 \def\oval{\ybaselineshift\z@\tbaselineshift\z@\org@oval}
567 \let\org@circle\circle
568 \def\circle{\ybaselineshift\z@\tbaselineshift\z@\org@circle}
569 \newif\ifnot@advanceline
570 \newskip\rensujiskip
571 \rensujiskip=0.25\chs plus.25\zw minus.25\zw
572 \DeclareRobustCommand\rensuji{%
573   \@ifstar{\not@advancelinetrue\@rensuji}{\@rensuji}}
574 \def\@rensuji{\@ifnextchar[{\@@rensuji}{\@@rensuji[c]}}
575 \def\@@rensuji[#1]#2{\ifydir\hbox{#2}\else
576   \hskip\rensujiskip
577   \ifvmode\leavevmode\fi
578   \ifnot@advanceline\not@advancelinefalse\else
579     \setbox\z@\hbox{\yoko#2}%
580     \@tempdima\ht\z@ \advance\@tempdima\dp\z@
581     \if #1c\relax\vrule\@width\z@ \@height.5\@tempdima \@depth.5\@tempdima
582     \else\if #1r\relax\vrule\@width\z@\@height\z@ \@depth\@tempdima
583     \else\vrule\@width\z@ \@height\@tempdima \@depth\z@
584     \fi\fi
585   \fi
586   \if #1c\relax\hbox to1zw{\yoko\hss#2\hss}%
587   \else\if #1r\relax\vbox{\hbox to1zw{\yoko\hss#2}}%
588   \else\vtop{\hbox to1zw{\yoko#2\hss}}%
589   \fi\fi
590   \hskip\rensujiskip
591 \fi}
592 \let\Rensuji\rensuji
593 \let\prensuji\rensuji
594 \def\Kanji#1{\expandafter\@Kanji\csname c@#1\endcsname}
595 \def\@Kanji#1{\expandafter\kansuji\number #1}
596 \def\kanji{\iftdir\expandafter\kansuji\fi}
597 \def\boutenchar{\char\euc"A1A2}
598 \def\bou#1{\ifvmode\leavevmode\fi\@bou#1\end}
599 \def\@bou#1{%
600   \ifx#1\end \let\next=\relax
601   \else
602     \iftdir\if@rotsw
603       \hbox to\z@{\vbox to\z@{\boxmaxdepth\maxdimen
604         \vss\moveleft-0.2zw\hbox{\boutenchar}\nointerlineskip
605         \hbox{\char\euc"A1A1}}\hss}\nobreak#1\relax
606     \else
607       \hbox to\z@{\vbox to\z@{\boxmaxdepth\maxdimen
608         \vss\moveleft0.2zw\hbox{\yoko\boutenchar}\nointerlineskip
609         \hbox{\char\euc"A1A1}}\hss}\nobreak#1\relax
610     \fi\else
611       \hbox to\z@{\vbox to\z@{%
612         \vss\moveleft-0.2zw\hbox{\yoko\boutenchar}\nointerlineskip
613         \hbox{\char\euc"A1A1}}\hss}\nobreak#1\relax
614     \fi
615     \let\next=\@bou
616   \fi\next}
617 \def\kasen#1{%
618   \ifydir\underline{#1}%
619   \else\if@rotsw\underline{#1}\else
620     \setbox\z@\hbox{#1}\leavevmode\raise.7zw
621     \hbox to\z@{\vrule\@width\wd\z@ \@depth\z@ \@height.4\p@\hss}%
622     \box\z@
623   \fi\fi}
624 \def\@eqnnum{{\reset@font\rmfamily \normalcolor
625   \iftdir\raise.25zh\hbox{\yoko(\theequation)}%
626   \else (\theequation)\fi}}
627 \def\@thecounter#1{\noexpand\rensuji{\noexpand\arabic{#1}}}
628 \def\@thmcounter#1{\noexpand\rensuji{\noexpand\arabic{#1}}}
629 \endinput
630 %%
631 %% End of file `plext.sty'.