% "tascmac" document style option for tate gumi.
%
% Copyright (C) by 1993, ASCII Corporation & Impress Corporation.
%
% 2006/07/14 (ST): itembox, screen environment bug fix.
% 2002/04/01 (KN): ASCII logo macros
% 1998/11/27 (KN and FTEXers): itembox
% 1998/02/27 (KN): set \tbaselineshift in minipage environment.
%
% ascmac.sty 10/28 '88
% ASCII special macros
\newdimen\@savetbaselineshift
\newdimen\@saveybaselineshift
%
%% ASCII logo
\def\@@ASCII#1#2#3{\shortstack{#1 ASCII \\[#3]
  \fontsize{#2}{\z@}\usefont{OT1}{cmss}{m}{n}ASCII CORPORATION}}
\def\ascii{\@ifundefined{@ascii}{\font\@ascii=ascii10 scaled \magstep4}{}%
\@@ASCII\@ascii{5pt}{-6pt}}
\def\Ascii{\@ifundefined{@Ascii}{\font\@Ascii=ascii10 scaled \magstep5}{}%
\@@ASCII\@Ascii{6pt}{-7pt}}
\def\ASCII{\@ifundefined{@ASCII}{\font\@ASCII=ascii36}{}%
\@@ASCII\@ASCII{9pt}{-9pt}}
%%
%% boxnote environment
\font\@ascgrp=ascgrp
\newbox\scb@x \newbox\scscb@x
\newdimen\@bw\newbox\@nbox\newbox\@nbody
\def\boxnote{\par\vspace{\baselineskip}
\@savetbaselineshift\tbaselineshift\tbaselineshift\z@
\setbox\@nbox=\hbox{\@ascgrp\vrule width1.08pt depth35pt b\hss a\hss b}
\@whiledim \wd\@nbox<\hsize \do{
\setbox\@nbox=\hbox{\@ascgrp\unhbox\@nbox \hss a\hss b}}
\setbox\@nbox=\hbox to\hsize{\@ascgrp\unhbox\@nbox \hss a\hss b%
\vrule width1.08pt depth35pt}
\@bw=\wd\@nbox\advance\@bw -40pt
\begin{lrbox}{\@nbody}\begin{minipage}{\@bw}% (KN:1998/02/27)
  \tbaselineshift\@savetbaselineshift}%
\def\endboxnote{\end{minipage}\end{lrbox}%
\vbox{\parindent=0pt\offinterlineskip\copy\@nbox
\hbox to\wd\@nbox{\vrule width1.08pt\hfil\box\@nbody\hfil\vrule width1.08pt}
\hbox to\wd\@nbox{\vrule width1.08pt height15pt\hfil
\vrule width1.08pt height15pt}\hrule height1.08pt}}
%%
%% screen environment
\newdimen\@scw
\def\@hobox#1#2#3{\hbox to\@scw{\@oval(#3,#3)[#1]\hfil\@oval(#3,#3)[#2]}}
\def\@vrf@#1#2{\vskip#1\leaders\vrule width#2\vfil\vskip#1}
\def\screen{%
\@savetbaselineshift\tbaselineshift \tbaselineshift\z@
\@ifnextchar[{\@screen}{\@screen[0]}}
\def\@screen[#1]{\ifcase#1\def\@r{20}\def\@s{9.8pt}\def\@sx{10pt}\or
\def\@r{18}\def\@s{8.8pt}\def\@sx{9pt}\or
\def\@r{16}\def\@s{7.8pt}\def\@sx{8pt}\or
\def\@r{14}\def\@s{6.8pt}\def\@sx{7pt}\or
\def\@r{12}\def\@s{5.8pt}\def\@sx{6pt}\or
\def\@r{10}\def\@s{4.8pt}\def\@sx{5pt}\or
\def\@r{8}\def\@s{3.8pt}\def\@sx{4pt}\or
\def\@r{6}\def\@s{2.8pt}\def\@sx{3pt}\else
\def\@r{4}\def\@s{1.8pt}\def\@sx{2pt}\fi
\par\vspace{.3\baselineskip}\@scw\linewidth \advance\@scw -\@r pt
\setbox\scb@x=\hbox to\@scw\bgroup\begin{minipage}{\@scw}% (KN:1998/02/27)
  \tbaselineshift\@savetbaselineshift}%
\def\endscreen{\end{minipage}\egroup%
\setbox\scscb@x=\hbox to\linewidth{\hfil\vbox{\offinterlineskip%
\thinlines\setlength{\unitlength}{1pt}\hrule\kern\@s%
\@hobox{tl}{tr}{\@r}\kern-\@sx\box\scb@x\@hobox{bl}{br}{\@r}%
\kern-.4pt\hrule}\hfil}\dimen0=\ht\scscb@x%
\noindent\hbox to\linewidth{\hbox to.2pt{\vbox to\dimen0{\@vrf@{\@sx}{.4pt}}%
\hss}\box\scscb@x\hbox to.25pt{\hss\vbox to\dimen0{\@vrf@{\@sx}{.4pt}}}\hss}}%
%% 
%% itembox environment
%%   replace \box0 with \@iboxstr; thanks FTEXers (1998/11/27)
\newdimen\@itemh\newtoks\@iboxpos\newbox\@iboxstr
\def\@hleader{\leaders\hrule height .8pt\hfil}
\def\itembox{\@ifnextchar[{\@itembox}{\@itembox[c]}}
\def\@itembox[#1]#2{%
  \@savetbaselineshift\tbaselineshift\tbaselineshift\z@
  \par\vspace{.3\baselineskip}%
  \setbox\@iboxstr=\hbox{#2}\@itemh\ht\@iboxstr\advance\@itemh\dp\@iboxstr
  \vspace{.5\@itemh}\bgroup\@scw\linewidth
  \advance\@scw-20pt\@iboxpos={#1}%
  \setbox\scb@x=\hbox to\@scw\bgroup\begin{minipage}{\@scw}%
  \tbaselineshift\@savetbaselineshift% (KN:1998/02/27)
  \vspace*{.5\@itemh}}%
\def\enditembox{\end{minipage}\egroup%
  \setbox\scscb@x=\hbox to\linewidth{\hfil\vbox{\offinterlineskip%
  \thicklines\setlength{\unitlength}{1pt}%
  \hbox to\@scw{\if l\the\@iboxpos\else\@hleader\fi
    \space\vbox to.8pt{\vss\hbox{\box\@iboxstr}\vss}%
    \space\if r\the\@iboxpos\else \@hleader\fi}\kern9.6pt
  \@hobox{tl}{tr}{20}\kern-10pt\box\scb@x\@hobox{bl}{br}{20}%
  \kern-.8pt\hrule height.8pt}\hfil}\dimen0=\ht\scscb@x%
  \noindent\hbox to\linewidth{\hbox to.6pt{\vbox to\dimen0{\@vrf@{10pt}{.8pt}}%
  \hss}\box\scscb@x\hbox to.6pt{\hss\vbox to\dimen0{\@vrf@{10pt}{.9pt}}}%
  \hss}\egroup}
%%
%% \keytop
\def\keytop{\@ifnextchar[{\@keytop}{\@keytop[d]}}
\def\@keytop[#1]#2{\tbaselineshift\z@
{\setbox0=\hbox{\shortstack{#2}}%
\dimen0=\wd0\advance\dimen0 5pt\dimen1=\dp0\advance\dimen1 2.5pt%
\setbox\scscb@x=\hbox to\dimen0{%
\iftdir\tate\else\yoko\fi
\@scw\wd0\hfil\vtop{\offinterlineskip
\thinlines\setlength{\unitlength}{1pt}\hrule\kern2.3pt\@hobox{tl}{tr}5%
\kern-2.4pt\box0\@hobox{bl}{br}5\kern-.25pt\hrule}\hfil}\dimen0=\dp\scscb@x%
\setbox0=\vbox{\hbox{\hbox to0pt{\hss\vtop to\dimen0{\@vrf@{2.5pt}{.4pt}}}%
\box\scscb@x\hbox to.2pt{\hss\vtop to\dimen0{\@vrf@{2.5pt}{.4pt}}}}}%
\if #1c $\vcenter{\box0}$ \else \if #1t\else\if #1b\boxmaxdepth=0pt\else
\boxmaxdepth=\dimen1\fi\fi \mbox{}\vbox{\box0}\fi}}
%
%% \yen
%
% \changes{1996/03/13}{v1.1}{Append \cs{leavevmode} in
%     \cs{yen}, \cs{return}, \cs{Return} command.}
%
\def\yen{\leavevmode\hbox{\iftdir\yoko\fi
\setbox0=\hbox{Y}Y\kern-.97\wd0\vbox{\hrule height.1ex width.98\wd0
\kern.33ex\hrule height.1ex width.98\wd0\kern.45ex}}}
%
%% return-key
\def\return{\leavevmode\hbox{\iftdir\yoko\fi\@ascgrp\char"20}}
\def\Return{\leavevmode\hbox{\iftdir\yoko\fi\@ascgrp @}}
%
%% \mask & \maskbox
\newbox\@bwsp \newbox\@@bwsp\newcount\@bcal
\def\setdim@#1#2{\@bcal=#2\divide#1\@bcal\multiply#1\@bcal\advance#1 1.001#2}
\def\mask#1#2{\tbaselineshift\z@
{\setbox\@bwsp=\hbox{#1}\setbox0=\hbox{\@ascgrp#2}%
\dimen0=\wd\@bwsp\dimen1=\ht\@bwsp\advance\dimen1\dp\@bwsp\dimen2=-\dimen1
\setdim@{\dimen0}{\wd0}\setdim@{\dimen1}{\ht0}%
\setbox\@@bwsp=\hbox to\dimen0{\leaders
\vtop to\dimen1{\leaders\hbox{\@ascgrp#2}\vfil}\hfil}%
\advance\dimen2\dp\@@bwsp\divide\dimen2 2
\advance\dimen2\dp\@bwsp\boxmaxdepth=\dimen2
\setbox\@@bwsp=\vbox{\box\@@bwsp}%
\mbox{}\hbox to\wd\@@bwsp{\hbox to0pt{\box\@@bwsp\hss}\hss\unhbox\@bwsp\hss}}}
%
%  \Maskbox{width}{height}{mask_char}{pos}{rule_wid}{body}
\def\@setdim#1#2{\@bcal=#2\divide#1\@bcal\multiply#1\@bcal\advance#1 .001#2}
\def\Maskbox#1#2#3#4#5#6{{\tbaselineshift\z@
\setbox0=\hbox{\@ascgrp#3}%
\dimen0=#1\@setdim{\dimen0}{\wd0}\dimen1=#2\@setdim{\dimen1}{\ht0}%
\ifx#4c\skip0=0pt plus1fil\skip1=\skip0\fi
\ifx#4r\skip0=0pt plus1fil\skip1=0pt\fi
\ifx#4l\skip1=0pt plus1fil\skip0=0pt\fi
\hbox{\hbox to0pt{\hbox to\dimen0{\leaders\vbox to\dimen1{\leaders
\hbox{\@ascgrp#3}\vfil}\hfil}\hss}%
\vrule width#5\vbox to\dimen1{\hrule height#5\vfil
\dimen3=#5\advance\dimen0-2\dimen3\advance\dimen0 .15pt
\hbox to\dimen0{\hskip\skip0\relax#6\hskip\skip1}%
\vfil\hrule height#5}\vrule width#5}}}
\def\maskbox#1#2#3#4#5{\Maskbox{#1}{#2}{#3}{#4}{0pt}{#5}}
%
%% shadebox environment
\newdimen\shaderule\shaderule 5pt
\def\shadebox{\dimen0\linewidth \advance\dimen0-20pt 
\advance\dimen0-2\fboxrule \advance\dimen0-\shaderule
\setbox\@tempboxa=\hbox\bgroup\minipage{\dimen0}}
\def\endshadebox{\endminipage\egroup\dimen0=10pt \advance\dimen0-\fboxrule
\setbox\@tempboxa=\hbox{\kern\dimen0\unhbox\@tempboxa\kern\dimen0}%
\setbox0=\vbox{\hrule \@height \fboxrule
\hbox{\vrule \@width \fboxrule \hskip-\fboxrule
\vbox{\vskip\fboxsep \box\@tempboxa\vskip\fboxsep}%
\hskip-\fboxrule\vrule \@width \fboxrule}\hrule \@height \fboxrule}%
\dimen0=\ht0 \advance\dimen0-\shaderule
\hbox{\hbox to \shaderule{\copy0\hss}\kern 0pt
\vrule width\wd0 height0pt depth\shaderule\hskip-\shaderule
\vrule width\shaderule height\dimen0}}

