forked from nushio3/formura
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy patheclbkbox.sty
81 lines (69 loc) · 2.28 KB
/
eclbkbox.sty
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
% eclbkbox.sty by Hideki Isozaki, 1992
% Date: May 28, 1993
\newbox\bk@bxb
\newbox\bk@bxa
\newif\if@bkcont
\newif\ifbkcount
\newcount\bk@lcnt
\def\breakboxskip{2pt}
\def\breakboxparindent{1.8em}
\def\breakbox{\vskip\breakboxskip\relax
\setbox\bk@bxb\vbox\bgroup
\advance\linewidth -2\fboxrule
\advance\linewidth -2\fboxsep
\hsize\linewidth\@parboxrestore
\parindent\breakboxparindent\relax}
% \@tempdimb: amount of vertical skip
% between the first line (\bk@bxa) and the rest (\bk@bxb)
\def\bk@split{%
\@tempdimb\ht\bk@bxb % height of original box
\advance\@tempdimb\dp\bk@bxb
\setbox\bk@bxa\vsplit\bk@bxb to\z@ % split it
\setbox\bk@bxa\vbox{\unvbox\bk@bxa}% recover height & depth of \bk@bxa
\setbox\@tempboxa\vbox{\copy\bk@bxa\copy\bk@bxb}% naive concatenation
\advance\@tempdimb-\ht\@tempboxa
\advance\@tempdimb-\dp\@tempboxa}% gap between two boxes
% \@tempdima: height of the first line (\bk@bxa) + fboxsep
\def\bk@addfsepht{%
\setbox\bk@bxa\vbox{\vskip\fboxsep\box\bk@bxa}}
\def\bk@addskipht{%
\setbox\bk@bxa\vbox{\vskip\@tempdimb\box\bk@bxa}}
% \@tempdima: depth of the first line (\bk@bxa) + fboxsep
\def\bk@addfsepdp{%
\@tempdima\dp\bk@bxa
\advance\@tempdima\fboxsep
\dp\bk@bxa\@tempdima}
% \@tempdima: depth of the first line (\bk@bxa) + vertical skip
\def\bk@addskipdp{%
\@tempdima\dp\bk@bxa
\advance\@tempdima\@tempdimb
\dp\bk@bxa\@tempdima}
\def\bk@line{%
\hbox to \linewidth{\ifbkcount\smash{\llap{\the\bk@lcnt\ }}\fi
\vrule \@width\fboxrule\hskip\fboxsep
\box\bk@bxa\hfil
\hskip\fboxsep\vrule \@width\fboxrule}}
\def\endbreakbox{\egroup
\ifhmode\par\fi{\noindent\bk@lcnt\@ne
\@bkconttrue\baselineskip\z@\lineskiplimit\z@
\lineskip\z@\vfuzz\maxdimen
\bk@split\bk@addfsepht\bk@addskipdp
\ifvoid\bk@bxb % Only one line
\def\bk@fstln{\bk@addfsepdp
\vbox{\hrule\@height\fboxrule\bk@line\hrule\@height\fboxrule}}%
\else % More than one line
\def\bk@fstln{\vbox{\hrule\@height\fboxrule\bk@line}\hfil
\advance\bk@lcnt\@ne
\loop
\bk@split\bk@addskipdp\leavevmode
\ifvoid\bk@bxb % The last line
\@bkcontfalse\bk@addfsepdp
\vtop{\bk@line\hrule\@height\fboxrule}%
\else % 2,...,(n-1)
\bk@line
\fi
\hfil\advance\bk@lcnt\@ne
\if@bkcont\repeat}%
\fi
\leavevmode\bk@fstln\par}\vskip\breakboxskip\relax}
\bkcountfalse