view Paper/ipsjcommon.sty @ 0:58c6244a184d

programming symposium
author e095732 <e095732@ie.u-ryukyu.ac.jp>
date Thu, 15 Nov 2012 19:20:01 +0900
parents
children 88a77b2c92ea
line wrap: on
line source

% Copyright (C) 1995,1996,1997,1998,1999,2000,2001
%			by Hiroshi Nakashima, Yasuki Saito and
%                          The Editorial Board of the IPSJ Journal
%
% ipsjcommon.sty 15-May-01 by Hiroshi Nakashima (ver 2.08)
% (revision history deleted)
% ipsjcommon.sty 24-Apr-95 by Hiroshi Nakashima (ver 1.0)

%%%%%% Sectioning Commands %%%%%%

% \section:	2s
% others:	1s
%
% Note that \paragraph and \subparagraph act as \subsubsubsection and
% \subsubsubsubsection resp.
%
% The form of sectioning header is;
%	<1 Kanji sp> \the<sect-command> [`.' if \section] <1 Kanji sp> <title>
% Nothe that <1 Kanji sp> is that of \normalsize.

\def\section{\@startsection
	{section}{1}{\@mojihaba}{\sec@aboveskip}{\sec@belowskip}{\fs@sec\bf}}
\let\ipsj@section\section					% 2.04(1)
\def\subsection{\@startsection
	{subsection}{2}{\@mojihaba}{\z@}{\z@}{\fs@subsec\bf}}
\def\subsubsection{\@startsection
	{subsubsection}{3}{\@mojihaba}{\z@}{\z@}{\fs@subsec\bf}}
\def\paragraph{\@startsection
	{paragraph}{4}{\@mojihaba}{\z@}{\z@}{\fs@subsec\bf}}
\def\subparagraph{\@startsection
	{subparagraph}{5}{\@mojihaba}{\z@}{\z@}{\fs@subsec\bf}}

\newcounter{section}
\newcounter{subsection}[section]
\newcounter{subsubsection}[subsection]
\newcounter{paragraph}[subsubsection]
\newcounter{subparagraph}[paragraph]

\def\thesection{\arabic{section}}
\def\sec@section@postfix{.}
\def\thesubsection{\thesection.\arabic{subsection}}
\def\thesubsubsection{\thesubsection.\arabic{subsubsection}}
\def\theparagraph{\thesubsubsection.\arabic{paragraph}}
\def\thesubparagraph{\theparagraph.\arabic{subparagraph}}

\setcounter{secnumdepth}{5}

\def\appendix{\let\sec@sec\section
	\def\section{\@startsection
		{section}{1}{\@mojihaba}{\z@}{\z@}{\fs@subsec\bf}}%
	\def\thesection{\appendixprefix\arabic{section}}%
	\def\sec@section@postfix{\appendixpostfix}%
	\stepcounter{section}\setcounter{section}{0}%
	\@ifnextchar[%]
		     {\sec@oappendix}{\sec@xappendix}}
\def\sec@xappendix{\@ifstar{\let\section\sec@sec}%
	{\sec@sec*{\ifDS@english Appendix\else t^\fi}}}
\def\sec@oappendix[#1]{\sec@sec*{\ifDS@english Appendix: \else
	t^\hskip\jspaceskip\fi #1}}
\def\appendixprefix{A.}
\def\appendixpostfix{}

\def\acknowledgment{\par
	{\bf \ifDS@english Acknowledgments\else ӎ\fi}\hskip\@mojihaba
	\ignorespaces}
\let\endacknowledgment\par

\newif\ifipsj@recommendation \ipsj@recommendationfalse		% 2.04(1) >>
\def\recommendation#1{\global\ipsj@recommendationtrue
	\ifDS@draft\else \ra@putrcvacc\fi
	\ipsj@section*{#1}
}
\def\endrecommendation{\par\vskip\baselineskip\penalty\opt@magicpenalty}
								% 2.04(1) <<

% Modified \@startsection has a trick for 2s of \section, which must
% work even if \section appears the top of a page.  The BEFORESKIP must be
% inserted with respect to the previous baseline.  So, we must go back to
% the imaginary previous baseline at the top of a page.  That is, we do;
%	\vskip\baselineskip \vspace*{-\baselineskip}
% which resuls;
% 	<a> do nothing at midpage
%	<b> go to the first baseline by \topskip, then go back to 0th
%	    baseline by \vspace*.
% The trick "\vskip-\prevdepth \prevdepth\z@" will assure exact vertical
% space even when the last line has much depth.
%
% \@startsection {NAME}{LEVEL}{INDENT}{BEFORESKIP}{AFTERSKIP}{STYLE}
\def\@startsection#1#2#3#4#5#6{\if@noskipsec \leavevmode \fi
	\par \@tempskipa #4\relax
	\@afterindenttrue
	\ifdim\@tempskipa<\z@ \@tempskipa-\@tempskipa \@afterindentfalse\fi
	\if@nobreak \everypar{}\else \addpenalty{\@secpenalty}\fi
	\ifdim\@tempskipa>\z@
% Here is the trick for \section.
		\vskip-\prevdepth \prevdepth\z@ \vskip\baselineskip
		\vspace*{-\baselineskip}\vskip\@tempskipa\fi
	\@ifstar
	{\@ssect{#3}{#4}{#5}{#6}}{\@dblarg{\@sect{#1}{#2}{#3}{#4}{#5}{#6}}}}

% \@sect is modified to cope with `.' for \section and 
%
% \@sect{NAME}{LEVEL}{INDENT}{BEFORESKIP}{AFTERSKIP}{STYLE}[TITLE]{TITLE}
\def\@sect#1#2#3#4#5#6[#7]#8{\ifnum #2>\c@secnumdepth
	\def\@svsec{}\else 
	\refstepcounter{#1}
								% 2.00(1)>>
	\let\@@protect\protect \def\protect{\noexpand\protect\noexpand}
	\edef\@svsec{\csname the#1\endcsname \csname sec@#1@postfix\endcsname
		\hskip\@mojihaba} \let\protect\@@protect\fi	% 2.00(1)<<
	\@tempskipa #5\relax
	\ifdim \@tempskipa<\z@ 
        	\def\@svsechd{#6\hskip #3\relax\@svsec #8}	% 2.00(1)
	\else
        	\begingroup #6\relax
		\@hangfrom{\hskip #3\relax\@svsec}%
			{\interlinepenalty\@M \sec@mojidori{#8}\par}%
		\endgroup
	\fi \@xsect{#5}}

% \@ssect is modified to cope with 
%
% \@sect{INDENT}{BEFORESKIP}{AFTERSKIP}{STYLE}{TITLE}
\def\@ssect#1#2#3#4#5{\@tempskipa #3\relax
	\ifdim \@tempskipa<\z@ \def\@svsechd{#4\hskip #1\relax #5}%
	\else \begingroup #4%
		\@hangfrom{\hskip #1}{\interlinepenalty\@M
			\sec@mojidori{#5}\par}\endgroup
	\fi \@xsect{#3}}

%% Modify \@xsect to avoid (buggy) \clubpenalty=10000. (H.N.)
\def\@xsect#1{\@tempskipa #1\relax
	\ifdim \@tempskipa<\z@
		\glboal\@nobreakfalse \global\@noskipsectrue
		\everypar{\global\@noskipsecfalse \hskip-\parindent
			\begingroup \@svsechd \endgroup \unskip
			\hskip -#1\everypar{}}%
	\else
		\par \nobreak
		\vskip \@tempskipa \global\@nobreaktrue
		\everypar{\global\@nobreakfalse
			\if@afterindent\else {\setbox0\lastbox}\fi \everypar{}}
	\fi\ignorespaces}

% Here is a trick for  of sectioning tilte.  The rule is;
%	2 - 4 Kanji char -> 5 Kanji char
%	otherwise    -> natural width
%
\def\sec@mojidori#1{\setbox0\hbox{#1}\settowidth\@tempdimb{}%
	\ifdim\wd0>4.5\@tempdimb #1\else
	\ifdim\wd0<1.5\@tempdimb #1\else
	\jintercharskip\fill \jasciikanjiskip\fill \jmathkanjiskip\fill
	\leavevmode\hbox to5\@tempdimb{#1\hfil}\fi\fi}

%%%%%% List-like Environments %%%%%%
%
%		LM	RM	LW	LS	LPI	II
% default	2K	0	0.75K	0.25K	0	0
% \enumerate	3K	0	3K	0	0	0
% \Enumerate	0	0	3K	0	0	3K
% \ENUMERATE	0	0	3K	0	0	4K
% \enumerate*	1K	0	3K	0	0	2K
% \itemize	2K	0	2K	0	0	0
% \Itemize	0	0	2K	0	0	2K
% \ITEMIZE	0	0	2K	0	0	3K
% \itemize*	1K	0	2K	0	0	1K
% \description	2K	0	0	1K	0	-1K
% \Description	0	0	0	1K	0	1K
% \DESCRIPTION	0	0	0	1K	0	2K
% \description*	1K	0	0	1K	0	0
% \verse	3K	2K	0.75K	0.25K	-1K	-1K
% \quotation	2K	2K	0.75K	0.25K	1K	1K
% \quote	2K	2K	0.75K	0.25K	0	0
%
% where LM is \leftmargin, RM is \rightmargin, LW is \labelwidth, LS is
% \labelsep, \LPI is \listparindent, II is \itemindent, and K is Kanji char
% width (\@mojihaba).
%
% All vertical space parameters, \topsep, \partopsep, \itemsep and \parsep,
% are 0pt.

\leftmargini2\@mojihaba
\leftmarginii2\@mojihaba
\leftmarginiii2\@mojihaba
\leftmarginiv2\@mojihaba
\leftmarginv2\@mojihaba
\leftmarginvi2\@mojihaba

\def\lst@listi{\labelsep.75\@mojihaba \labelwidth.25\@mojihaba
	\rightmargin\z@ \listparindent\z@ \itemindent\z@
	\partopsep\z@ \parsep\z@ \topsep\z@ \itemsep\z@}
\def\@listi{\leftmargin\leftmargini \lst@listi}
\def\@listii{\leftmargin\leftmarginii \lst@listi}
\def\@listiii{\leftmargin\leftmarginiii \lst@listi}
\def\@listiv{\leftmargin\leftmarginiv \lst@listi}
\def\@listv{\leftmargin\leftmarginv \lst@listi}
\def\@listvi{\leftmargin\leftmarginvi \lst@listi}

\@listi

\def\labelenumi{(\,\theenumi\,)} 
\def\theenumi{\arabic{enumi}} 
\def\labelenumii{(\,\theenumii\,)}
\def\theenumii{\alph{enumii}}
\def\p@enumii{\theenumi}
\def\labelenumiii{(\,\theenumiii\,)}
\def\theenumiii{\roman{enumiii}}
\def\p@enumiii{\theenumi(\theenumii)}
\def\labelenumiv{(\,\theenumiv\,)}
\def\theenumiv{\Alph{enumiv}}
\def\p@enumiv{\p@enumiii\theenumiii}
\def\enumerate{\ifnum \@enumdepth >3 \@toodeep\else
	\advance\@enumdepth \@ne 
	\edef\@enumctr{enum\romannumeral\the\@enumdepth}
	\list{\csname label\@enumctr\endcsname}{\usecounter
		{\@enumctr}\def\makelabel##1{##1\hss}%
		\leftmargin3\@mojihaba \labelwidth3\@mojihaba \labelsep\z@}\fi}
\let\endenumerate\endlist

\def\labelitemi{$\bullet$}
\def\labelitemii{\bf --}
\def\labelitemiii{$\ast$}
\def\labelitemiv{$\cdot$}
\def\itemize{\ifnum \@itemdepth >3 \@toodeep\else \advance\@itemdepth \@ne
	\edef\@itemitem{labelitem\romannumeral\the\@itemdepth}%
	\list{\csname\@itemitem\endcsname}{\def\makelabel##1{\hss##1\hss}%
		\labelwidth2\@mojihaba \labelsep\z@}\fi}
\let\enditemize\endlist

\def\description{\list{}{\labelwidth\z@ \labelsep\@mojihaba
	\itemindent\labelsep \advance\itemindent-\leftmargin
	\def\makelabel##1{\bf ##1}}}
\let\enddescription\endlist

\let\latex@trivlist\@trivlist
\def\lst@trivlist#1#2{\leftmargin#1\relax
	\itemindent\labelwidth \advance\itemindent\labelsep
	\advance\itemindent#2\relax
	\let\@trivlist\latex@trivlist \@trivlist}

\def\lst@Trivlist{\def\@trivlist{\lst@trivlist\z@\z@}}
\def\Enumerate{\lst@Trivlist \enumerate}
\let\endEnumerate\endlist
\def\Itemize{\lst@Trivlist \itemize}
\let\endItemize\endlist
\def\Description{\lst@Trivlist \description}
\let\endDescription\endlist

\def\lst@TRIVLIST{\def\@trivlist{\lst@trivlist\z@\@mojihaba}}
\def\ENUMERATE{\lst@TRIVLIST \enumerate}
\let\endENUMERATE\endlist
\def\ITEMIZE{\lst@TRIVLIST \itemize}
\let\endITEMIZE\endlist
\def\DESCRIPTION{\lst@TRIVLIST \description}
\let\endDESCRIPTION\endlist

\def\lst@strivlist{\def\@trivlist{\lst@trivlist\@mojihaba{-\@mojihaba}}}
\@namedef{enumerate*}{\lst@strivlist \enumerate}
\@namedef{endenumerate*}{\endlist}
\@namedef{itemize*}{\lst@strivlist \itemize}
\@namedef{enditemize*}{\endlist}
\@namedef{description*}{\lst@strivlist \description}
\@namedef{enddescription*}{\endlist}

\def\verse{\let\\=\@centercr 
	\list{}{\itemindent-\@mojihaba \listparindent\itemindent 
	\rightmargin\leftmargin \advance\leftmargin\@mojihaba}\item[]}
\let\endverse\endlist
\def\quotation{\list{}{\listparindent\@mojihaba	\itemindent\listparindent
	\rightmargin\leftmargin}\item[]}
\let\endquotation\endlist
\def\quote{\list{}{\rightmargin\leftmargin}\item[]}
\let\endquote\endlist

\def\newtheorem{\@ifstar
	{\theo@newtheorem{\theo@it}{\ }}{\theo@newtheorem{}{\theo@sp}}}
\def\theo@newtheorem#1#2#3{\@namedef{theo@it@#3}{#1}\@namedef{theo@sp@#3}{#2}%
	\@ifnextchar[%]
		     {\@othm{#3}}{\@nthm{#3}}}
\def\@begintheorem#1#2{\DESCRIPTION \csname theo@it@\@currenvir\endcsname
	\item[#1\csname theo@sp@\@currenvir\endcsname #2]}
\def\@opargbegintheorem#1#2#3{\DESCRIPTION
	\csname theo@style@\@currenvir\endcsname
	\item[#1\csname theo@sp@\@currenvir\endcsname #2\ (#3)]}
\let\@endtheorem\endlist					% 1.02(2)
\ifDS@english
\let\theo@it\it \let\theo@sp\ %
\else
\let\theo@it\relax \let\theo@sp\relax
\fi

%%%%%% Bibliography %%%%%%
%
% 1. Label format is "<nn>)".
% 2. \leftmargin 24Q (or 2K)
% 3. \labelsep is 6Q (or 0.5K)
% 4. \baselineskip is 16Q(j)/15Q(e)/normal(d)
% 5. ~ and \ can be shrunk to 0pt.

\def\thebibliography#1{%
	\section*{\hskip-\@mojihaba\hfill\hbox{\bib@refname}\hfill\hskip\z@}
	\ifDS@draft \@tempdima\@mojihaba \else\@tempdima12\@Q\fi
	\list{\arabic{enumi}\rlap{%(
			   	  )}}%
	     {\fs@bibliography \leftmargin2\@tempdima \labelwidth\z@
		\labelsep\@tempdima \itemindent.5\@tempdima
		\usecounter{enumi}\def\makelabel##1{\hss\llap{##1}}}
	\def\newblock{\hskip .11em plus .33em minus .07em}
	\sloppy \frenchspacing
	\def\ {\hskip\fontdimen\tw@\font plus\fontdimen\thr@@\font
			minus\fontdimen\tw@\font\relax}}
\ifDS@english
\def\bib@refname{References}
\else
{\fs@sec \@tempdima7\jspaceskip
\xdef\bib@refname{\hbox to\the\@tempdima{\jintercharskip\fill Ql}}}
\fi
\newdimen\bib@adjustheight \bib@adjustheight-\maxdimen
\def\endthebibliography{\endlist \par \@normalsize
	\@tempdima\@colht \advance\@tempdima-\@colroom
	\advance\@tempdima\pagetotal \advance\@tempdima-\prevdepth
	\advance\@tempdima-\topskip
	\@tempdimb\@tempdima \divide\@tempdima\baselineskip
	\@tempcnta\@tempdima \@tempdima\@tempcnta\baselineskip
	\advance\@tempdima-\@tempdimb
	\ifdim\@tempdima<\z@ \advance\@tempdima\baselineskip \fi
	\vskip-\prevdepth \vskip\@tempdima \prevdepth\z@
	\bib@adjustheight\@tempdimb \advance\bib@adjustheight\@tempdima
	\global\advance\bib@adjustheight\topskip
	\if@firstcolumn\else\global\advance\bib@adjustheight\@M pt\fi}


%%%%%% Floats %%%%%%

% You may need to change following parameters
\setcounter{topnumber}{4}
\setcounter{bottomnumber}{4}
\setcounter{totalnumber}{8}
\setcounter{dbltopnumber}{4}
\def\topfraction{.9}
\def\bottomfraction{.9}
\def\textfraction{.1}
\def\dbltopfraction{.9}
\def\floatpagefraction{.9}
\def\dblfloatpagefraction{.9}

\newcounter{figure}
\newcounter{table}
\def\thefigure{\@arabic\c@figure}
\def\thetable{\@arabic\c@table}
\def\fps@figure{tbp}
\def\fps@table{tbp}
\def\ftype@figure{1}
\def\ftype@table{2}
\def\fnum@figure{\fname@figure\thefigure}
\def\fnum@table{\fname@table\thetable}
\ifDS@english
\def\fname@figure{Fig.\,}					% 2.06(1)
\def\fname@Figure{Figure~}
\def\fname@table{Table~}
\else
\def\fname@figure{}\fref@nobreak}				% 1.06(1)
\let\fname@Figure\fname@figure
\def\fname@table{\\fref@nobreak}				% 1.06(1)
\fi
\def\fnum@efigure{Fig.\,\thefigure}				% 2.06(1)
\def\fnum@etable{Table~\thetable}

% 1.06(3) >>
\def\figure{\let\cap@afterskip\relax \let\flt@fontsize\relax \@float{figure}}
\def\endfigure{\end@float}
\@namedef{figure*}{\let\cap@afterskip\relax \let\flt@fontsize\relax
	\@dblfloat{figure}}
\@namedef{endfigure*}{\end@dblfloat}

%% Default font for table env. is \footnotesize (H.N.)
\def\table{\let\cap@beforeskip\relax \let\flt@fontsize\fs@table
	\@float{table}}
\def\endtable{\end@float}
\@namedef{table*}{\let\cap@beforeskip\relax \let\flt@fontsize\fs@table
	\@dblfloat{table}}					% 2.01(2)
\@namedef{endtable*}{\end@dblfloat}
% 1.06(3) <<

\let\latex@float\@float
\let\latex@dbflt\@dbflt
\def\@float{\cap@linewidth\hsize \cap@hsize\hsize \latex@float}
\def\@dbflt{\cap@linewidth.8\textwidth \cap@hsize.667\textwidth \latex@dbflt}
\let\latex@xfloat\@xfloat					% 1.06(3)
\def\@xfloat#1[#2]{\latex@xfloat#1[#2]\flt@fontsize}
								% 1.06(3)
\def\end@float{\flt@endfloat
	\ifdim\bib@adjustheight=-\maxdimen\else
		\advance\bib@adjustheight\@tempdima
		\global\advance\bib@adjustheight\baselineskip \fi
	\ifnum\@floatpenalty <\z@
		\@nameuse{@largefloatcheck}%			% 2.00(2)
		\@cons\@currlist\@currbox
	\ifdim \ht\@currbox >\textheight 
		\ht\@currbox\textheight \fi
	\ifnum\@floatpenalty < -\@Mii 
        	\penalty -\@Miv 
		\@tempdima\prevdepth \vbox{} \prevdepth\@tempdima
		\penalty\@floatpenalty
	\else \vadjust{\penalty -\@Miv \vbox{}\penalty\@floatpenalty}\@esphack
	\fi\fi}
\def\end@dblfloat{\if@twocolumn \flt@endfloat
	\ifnum\@floatpenalty <\z@ \@cons\@dbldeferlist\@currbox\fi
	\ifnum \@floatpenalty =-\@Mii \@esphack\fi\else\end@float\fi}
\def\flt@endfloat{\par \vskip\z@
	\global\@minipagefalse \@nameuse{outer@nobreak}\egroup	% 2.00(2)
	\@nameuse{color@endbox}\@normalsize			% 2.00(2)
	\@tempdima\ht\@currbox \advance\@tempdima\dp\@currbox
	\divide\@tempdima\baselineskip \@tempcnta\@tempdima
	\advance\@tempcnta\@ne \@tempdima\@tempcnta\baselineskip
	\global\setbox\@currbox\vbox to\@tempdima{\vfil\box\@currbox\vfil}}

\def\cap@beforeskip{\nointerlineskip\vskip5pt}
\def\cap@afterskip{\nointerlineskip\vskip5pt}
\long\def\@caption#1[#2]#3{\par\begingroup
	\fs@caption \cap@beforeskip
	\@makecaption{{\bf \csname fnum@#1\endcsname}}{\ignorespaces#3}\par
	\ifDS@english \cap@afterskip \fi
	\endgroup}
\def\ecaption{\@dblarg{\@ecaption\@captype}}
\long\def\@ecaption#1[#2]#3{\par
	\begingroup \fs@caption
	\@makecaption{\csname fnum@e#1\endcsname}{\ignorespaces #3}\par
	\cap@afterskip
	\endgroup}

\newif\ifcap@sw
\newdimen\cap@linewidth
\newdimen\cap@hsize
\newcount\cap@prevgraf
\newbox\cap@box
\let\latex@label\label
\long\def\@makecaption#1#2{\begingroup \gdef\cap@label{}\let\label\@gobble
	\setbox0\hbox{#1\hskip\jspaceskip}
	\advance\cap@linewidth-\wd0 \advance\cap@hsize-\wd0
	\cap@makepar\cap@linewidth{#2}{\def\label##1{{%		    %1.03(1)
		\def\protect{\noexpand\protect\noexpand}	    %1.03(1)
		\xdef\cap@label{\cap@label\protect\label{##1}}}}}   %1.03(1)
	\cap@swtrue
	\ifnum\cap@prevgraf=\@ne
		\setbox1\vbox{\unvcopy1\cap@getbox1
			\ifhbox1 \global\setbox\cap@box\hbox{\unhbox1}
			\ifdim\wd\cap@box>\cap@linewidth\else
				\global\cap@swfalse \fi\fi}
		\ifcap@sw\else
			\cap@put{\vtop{\box\cap@box\hbox{}}}
		\fi\fi
	\ifcap@sw \cap@makepar\cap@hsize{#2}\relax
	\ifnum\cap@prevgraf=\tw@
		\setbox1\vbox{\unvcopy1\cap@getbox2\cap@getbox3
			\ifhbox2\ifhbox3
				\setbox2\hbox{\unhbox2}\setbox3\hbox{\unhbox3}
				\ifdim\wd2>\cap@hsize\else
				\ifdim\wd3>\cap@hsize\else
				\global\cap@swfalse
				\global\setbox\cap@box\vtop{\box3\box2\hbox{}}
				\fi\fi\fi\fi}\fi
	\ifcap@sw \setbox1\vtop{\hsize\cap@hsize
		\@parboxrestore #2\par\hbox{}}\cap@put{\box1}
	\else\cap@put{\box\cap@box}\fi
	\fi
	\endgroup \cap@label}
\long\def\cap@makepar#1#2#3{\setbox1\vbox{\hsize#1\@parboxrestore
	\rightskip\@flushglue \hfuzz\maxdimen
	\exhyphenpenalty\z@ \finalhyphendemerits\z@
	\let\@@par\cap@par \let\par\cap@par \global\cap@prevgraf\z@
	#3#2\cap@par}}
\let\cap@@par\@@par
\def\cap@par{\cap@@par\global\advance\cap@prevgraf\prevgraf \prevgraf\z@}
\def\cap@put#1{\hbox to\hsize{\hss\box0#1\hss}
	\vskip-\baselineskip\prevdepth\z@}
\def\cap@getbox#1{\@tempcnta10\relax\@whilenum\@tempcnta>0\do{%
	\unskip\unkern\unpenalty\advance\@tempcnta\m@ne}\setbox#1\lastbox}

\def\figref{\fref@ref\fname@figure}
\def\Figref{\fref@ref\fname@Figure}
\def\tabref{\fref@ref\fname@table}
\let\Tabref\tabref
\def\fref@ref#1{\@ifstar{\fref@sref{#1}}{\fref@iref\bf{#1}}}
\def\fref@iref#1#2#3{{\@ifundefined{fref@r@#3}%
	{#1#2\fref@doref{#3}\global\@namedef{fref@r@#3}{}}{#2\fref@doref{#3}}}}
\def\fref@sref#1#2{#1\fref@doref{#2}}
\def\fref@doref#1{{\let\null\relax\ref{#1}}}			% 1.06(2)
\def\fref@nobreak{\nobreak\ifASCII\else\hskip\@@jasciikanjiskip\fi}
								% 1.06(1)

\def\fig@extraspace{3mm}					%1.04(4)
\def\figspace#1{\vskip#1\vskip\fig@extraspace}			%1.04(4)

%%%%%% Footnote %%%%%%

%% The following codes are from pfnote.sty, by H. Nakashima of Kyoto Univ.,
%% to reset footnote counter at the begining of every page. (H.N.)

% 1.04(2c)>>
\def\footnote{\@ifnextchar[%]
	{\@xfootnote}{{\PF@adjustfnote \stepcounter{\@mpfn}%
		\xdef\@thefnmark{\thempfn}}\@footnotemark\@footnotetext}}
\def\footnotemark{\@ifnextchar[%]
	{\@xfootnotemark}{{\PF@adjustfnote \stepcounter{footnote}%
		\xdef\@thefnmark{\thefootnote}}\@footnotemark}}
% 1.04(2c)<<

\newcount\PF@fnotectr\global\PF@fnotectr=\z@
\newcount\PF@page\global\PF@page=-\@M
\def\PF@thepage{\number\c@page}
\def\PF@adjustfnote{\global\advance\PF@fnotectr\@ne
	\expandafter\ifx\csname PF@fn\number\PF@fnotectr\endcsname\relax
		\global\c@footnote\z@\else
	\expandafter\@tempcnta\csname PF@fn\number\PF@fnotectr\endcsname\relax
	\ifnum\@tempcnta=\PF@page\else
		\global\PF@page\@tempcnta \global\c@footnote\z@ \fi\fi
% 1.04(2a)>>
	\expandafter\ifx\csname PF@fnpage\number\PF@page\endcsname\relax \else
	\expandafter\@tempcnta\csname PF@fnpage\number\PF@page\endcsname\relax
								% 2.00(4)>>
	\ifnum\@tempcnta>\tw@ \global\let\thefootnote\thefootnotemany
	\else \global\let\thefootnote\thefootnoteord \fi\fi	% 2.00(4)<<
	\@tempcnta\c@footnote \multiply\@tempcnta\@M
	\advance\@tempcnta\PF@fnotectr
	\if@filesw{\let\PF@thepage\relax
		\xdef\@gtempa{\write\@auxout{\string\PF@fnpage
		{\number\@tempcnta}{\PF@thepage}}}}%
		\@gtempa\fi}
% 1.04(2a)<<

% 1.04(2a)>>
\def\PF@fnpage#1#2{\@tempcnta#1\relax \@tempcntb\@tempcnta \divide\@tempcnta\@M
	\expandafter\xdef\csname PF@fnpage#2\endcsname{\number\@tempcnta}
	\multiply\@tempcnta\@M \advance\@tempcntb-\@tempcnta	
	\global\@namedef{PF@fn\number\@tempcntb}{#2}}
% 1.04(2a)<<
%% End of quote from pfnote.sty. (H.N.)

\long\def\@makefntext#1{\leftskip20\@Q
	\noindent\llap{\@makefnmarkforfn\hskip-\scriptspace\hskip5\@Q}#1}
								% 1.04(2e)
\def\@makefnmarkstar{$^{\hbox{\tiny\fn@fontv\@thefnmark}}$}	% 1.04(2d)
\def\@makefnmarkdagger{$\@thefnmark$}
\let\@makefnmarkforfn\@makefnmarkstar

\def\@makefnmark{\smash{\hbox{\scriptsize\fn@fontvi$^{\@thefnmark}$}}}
								% 1.04(2d)
						% smashed to make it
						% zero height

%% Awful definition of \thefootnote to put subsequent 's. (H.N.)
\def\thefootnote{\leavevmode\hbox{%
	\ifcase\c@footnote\or \or \or \else \thefootnotemany\fi}}
								% 1.04(2b)
\def\thefootnotemany{\hbox{\hskip\z@\number\c@footnote}}	% 1.04(2b)
								% 2.05(3)
\let\thefootnoteord\thefootnote


%%%%%% Citation %%%%%%

%% The following codes for \cite are from overcite.sty by D. Arseneau, but
%% modified for Trans. IPSJ (H.N.)
%     O V E R C I T E . S T Y
%
%     version 3.2  (Mar 1993)
%
%     Compressed, sorted lists of superscript numerical citations.
%     see also CITE.STY and DRFTCITE.STY
%
%     Copyright (C) 1989-1993 by Donald Arseneau
%     These macros may be freely transmitted, reproduced, or modified for
%     non-commercial purposes provided that this notice is left intact.
%
\def\cite{\protect\@p@cite}
\def\@p@cite{\let\@citeY\@citey \@p@@cite}
\def\Cite{\protect\@p@Cite}
\def\@p@Cite{\let\@citeY\@Citey \@p@@cite}
\def\@p@@cite{\@ifnextchar[%]
		          {\@tempswatrue\@citex}{\@tempswafalse\@citex[]}}
\def\@citex[#1]#2{\@citeY{\@p@citen{#2}}\if@tempswa\space[#1]\fi}
\def\@citey#1{\leavevmode\unskip\kern\z@$\let\@cite@tiestyle\scriptstyle
%     								% 2.06(2)
	\def\@cite@punct{,}\m@th^{\hbox{\scriptsize#1}}$\spacefactor\@m}
\def\@Citey#1{\let\@cite@tiestyle\textstyle
	\ifDS@english \def\@cite@punct{,\space\penalty\@highpenalty}%1.04(1)
	\else\def\@cite@punct{C}\fi#1\spacefactor\@m}		    %1.04(1)

\def\@p@citen#1{%
	\edef\@tempa{\@ignspaftercomma,#1, \@end, }%
	\edef\@tempa{\expandafter\@ignendcommas\@tempa\@end}%
	\if@filesw \immediate\write\@auxout{\string\citation{\@tempa}}\fi
	\@tempcntb\m@ne \let\@h@ld\relax \let\@citea\@empty
	\let\@celt\relax \def\@cite@list{}%			% 2.06(3)
	\@for\@citeb:=\@tempa\do{\@make@cite@list}%
	\@tempcnta\m@ne \let\@celt\@compress@cite \@cite@list
	\@h@ld}
\def\@ignspaftercomma#1, {\ifx\@end#1\@empty\else
	#1,\expandafter\@ignspaftercomma\fi}
\def\@ignendcommas,#1,\@end{#1}

%(
\let\@cite@rp)
\chardef\@cite@escape`\\
\def\@make@cite@list{%
    \expandafter\let\expandafter\@B@citeB\csname b@\@citeb\endcsname
    \ifx\@B@citeB\relax
	\@citea {\bf ?}\@cite@rp \let\@citea\@cite@punct
	\@latex@warning{Citation `\@citeb' on page \thepage\space undefined}%
								% 2.00(3)
	\global\@namedef{b@\@citeb}{{\bf ?}}%
    \else
	\ifcat \@cite@escape\ifnum\z@<0\@B@citeB \@cite@escape\else A\fi
	    \@tempcnta\@B@citeB \relax
	    \ifnum \@tempcnta>\@tempcntb
		\edef\@cite@list{\@cite@list \@celt{\@B@citeB}}%
		\@tempcntb\@tempcnta
	     \else
		\edef\@cite@list{\expandafter\@sort@celt\@cite@list\@gobble @}%
		\fi
	\else \@citea \@B@citeB \@cite@rp \let\@citea\@cite@punct
    \fi\fi}

\def\@sort@celt#1#2{\ifx \@celt #1% parameters are \@celt {num}
	\ifnum #2<\@tempcnta % number goes later in list
	    \@celt{#2}\expandafter\expandafter\expandafter\@sort@celt
	\else \@celt{\number\@tempcnta}\@celt{#2}\fi\fi}

\def\@compress@cite#1{\advance\@tempcnta\@ne
	\ifnum #1=\@tempcnta
		\ifx\@h@ld\relax \edef\@h@ld{\@citea #1\@cite@rp}%
		\else \edef\@h@ld{\hbox{$\@cite@tiestyle\sim$}%
			\penalty\@highpenalty #1\@cite@rp}\fi
	\else \@h@ld \@citea #1\@cite@rp
		\let\@h@ld\relax
	\fi \@tempcnta#1\relax \let\@citea\@cite@punct}

%% End of quote from overcite.sty. (H.N.)

\def\multicite{\protect\@p@multicite}
\def\@p@multicite#1#2{\@citey{\@p@citen{#1}$\scriptstyle\sim$\@p@citen{#2}}}
\def\multiCite{\protect\@p@multiCite}
\def\@p@multiCite#1#2{\@Citey{\@p@citen{#1}$\sim$\penalty\@highpenalty
	\@p@citen{#2}}}


%%%%%% Box Height Adjustment and Displayed Math %%%%%%

\newbox\adj@boxa \newbox\adj@boxb
\newdimen\adj@height
\@tempdima\baselineskip \advance\@tempdima-\topskip
\edef\adj@minaboveclearance{\the\@tempdima}
\@tempdima\baselineskip \advance\@tempdima-1ex
\edef\adj@maxaboveclearance{\the\@tempdima}
\ifDS@english
\setbox0\hbox{A}
\else
\setbox0\hbox{}
\fi
\@tempdima\baselineskip \advance\@tempdima-\ht0 \advance\@tempdima\dp0
\edef\adj@bhd{\the\@tempdima}

% 2.01(1) >>
\def\adjustvboxheight{\ifinner \let\@tempa\relax
	\let\endadjustvboxheight\relax \let\@endadjustvboxheight\relax
	\else \let\@tempa\@adjustvboxheight \fi \@tempa}
\def\@adjustvboxheight{\par\penalty\z@
	\global\setbox\adj@boxa\vbox\bgroup\relax		% 1.01(3)
	\let\@footnotetext\@mpfootnotetext			% 2.02(1)
%								% 2.05(1)
	\hsize\columnwidth}
% 2.01(1) <<
\def\endadjustvboxheight{\adj@closebox \adj@putbox
	\ifvoid\@mpfootins\else\insert\footins{\unvbox\@mpfootins}\fi
%								% 2.02(1)
	\global\@ignoretrue\@endparenv}
\def\adj@closebox{\egroup \normalsize \boxmaxdepth\@maxdepth	% 1.01(1,3)
	\setbox\adj@boxa\vbox{\unvbox\adj@boxa}			% 1.01(3)
	\adj@height\ht\adj@boxa
	\advance\adj@height\adj@minaboveclearance\relax
	\@tempdima\adj@height \divide\adj@height\baselineskip
	\@tempcnta\adj@height \adj@height\@tempcnta\baselineskip
	\ifdim\adj@height<\@tempdima \advance\adj@height\baselineskip\fi}
\def\adj@putbox{\vskip-\prevdepth \prevdepth\z@ \vskip\baselineskip
	\vspace*{-\baselineskip}\advance\@tempdima-\adj@height
	\@tempdima-\@tempdima \advance\@tempdima\adj@minaboveclearance\relax
	\@tempdimb\dp\adj@boxa
	\ifdim\@tempdima>\adj@maxaboveclearance\relax
		\advance\@tempdima-\@tempdimb \advance\@tempdima\adj@bhd\relax
		\divide\@tempdima\tw@
		\vbox to\adj@height{\vskip\@tempdima \box\adj@boxa \vss}
	\else	\vbox to\adj@height{\vfil\box\adj@boxa\vskip-\@tempdimb}\fi}

\newcount\adj@deadcycle
\@namedef{adjustvboxheight*}{\adjustvboxheight}
\@namedef{endadjustvboxheight*}{\@endadjustvboxheight}
\def\@endadjustvboxheight{\global\adj@deadcycle10\relax
	\@iendadjustvboxheight
	\ifvoid\@mpfootins\else\insert\footins{\unvbox\@mpfootins}\fi
%								% 2.05(2)
	\global\@ignoretrue\@endparenv}
\def\@iendadjustvboxheight{\adj@closebox
	\ifnum\adj@deadcycle<\@ne
	\ipsj@error{I cannot adjust too tall/deep box}{\@ehd}\fi    % 2.00(3)
	\global\advance\adj@deadcycle\m@ne
	\ifdim\pagegoal=\maxdimen
		\@tempdimb\@colht \advance\@tempdimb-\topskip
		\advance\@tempdimb\baselineskip
	\else \@tempdimb\pagegoal
		\advance\@tempdimb-\pagetotal \advance\@tempdimb-\pagedepth
		\advance\@tempdimb\prevdepth \fi		% 1.01(4a)
	\let\next\relax
	\ifdim\adj@height<\@tempdimb \adj@putbox \else
	\ifdim\adj@height=\@tempdimb \adj@putbox \else
	\divide\@tempdimb\baselineskip \@tempcnta\@tempdimb	% 1.01(4b)>>
	\@tempdimb\@tempcnta\baselineskip
	\advance\@tempdimb-\adj@minaboveclearance\relax		% 1.01(4b)<<
	\setbox\adj@boxa\vbox{\allowbreak\unvbox\adj@boxa}
	\vbadness\@M \splittopskip\z@ \splitmaxdepth\@maxdepth	%1.01(1)
	\setbox\@tempboxa\vsplit\adj@boxa to\@tempdimb
	\setbox\adj@boxb\copy\adj@boxa
	\setbox\@tempboxa\vbox{\unvbox\@tempboxa}
	\@tempdimb\ht\@tempboxa \advance\@tempdimb\dp\@tempboxa
	\ifdim\@tempdimb>\z@
		\setbox\adj@boxa\vbox\bgroup\unvbox\@tempboxa
		\adj@closebox \adj@putbox \newpage
	\else \newpage \fi
	\setbox\adj@boxa\vbox\bgroup\unvbox\adj@boxb
	\let\next\@iendadjustvboxheight \fi\fi \next}

\def\adj@eqindent{2\@mojihaba}
\def\[{\adjustvboxheight\advance\@totalleftmargin\adj@eqindent\relax
	\hbox to\hsize\bgroup\hskip\@totalleftmargin$\displaystyle}
\def\]{$\hfill\egroup\endadjustvboxheight\@doendpe\ignorespaces} % 2.03(1)
\def\equation{\refstepcounter{equation}\[}
\def\endequation{\hfill\@eqnnum$\egroup\endadjustvboxheight}
\def\theequation{\arabic{equation}}
\def\@eqnnum{{\rm (\theequation)\hskip\@mojihaba}} 

\def\adj@eqnlineskip{3pt}
\def\adj@eqnlineskiplimit{2pt}
\def\eqnarray{\futurelet\@tempa\adj@eqnarray}
\def\adj@eqnarray{\ifx\@tempa[%]
	\let\next\adj@ieqnarray\else\let\next\adj@xeqnarray\fi\next}
\def\adj@ieqnarray[#1]{\@ifundefined{adj@xeqnarray#1}%
	{\ipsj@warning{Unknown eqnarray option `#1'}\adj@xeqnarray}% 2.00(3)
	{\@nameuse{adj@xeqnarray#1}}}
\def\adj@xeqnarray{\adjustvboxheight
	\advance\@totalleftmargin\adj@eqindent\relax
	\stepcounter{equation}\let\@currentlabel=\theequation
	\global\@eqnswtrue
	\global\@eqcnt\z@\tabskip\z@\let\\=\@eqncr
	\lineskip\adj@eqnlineskip \lineskiplimit\adj@eqnlineskiplimit \jot\z@
	\halign to \hsize\bgroup\@eqnsel\hskip\@totalleftmargin
		\hfil$\displaystyle{##}$&\global\@eqcnt\@ne	% 1.01(2)
		\hfil$\displaystyle{}\mathrel{##}{}$\hfil
		&\global\@eqcnt\tw@ $\displaystyle{##}$\hfil
		\tabskip\@centering&\llap{##}\tabskip\z@\cr}
\def\adj@xeqnarrays{\let\endadjustvboxheight\@endadjustvboxheight
	\adj@xeqnarray}
\@namedef{adj@xeqnarrays!}{\par\let\adjustvboxheight\relax
	\let\endadjustvboxheight\relax \adj@xeqnarray}
\def\endeqnarray{\@@eqncr \egroup \global\advance\c@equation\m@ne
	\endadjustvboxheight}


%%%%%% Kinsoku Parameters %%%%%%

% 1.04(3)>>
\ifASCII
\postbreakpenalty`\`=\@M
\prebreakpenalty`'=\@M
\prebreakpenalty`)=\@M
\postbreakpenalty`(=\@M
\prebreakpenalty`]=\@M
\postbreakpenalty`[=\@M
\prebreakpenalty`\}=\@M
\postbreakpenalty`\{=\@M

\prebreakpenalty`E=\@M
\prebreakpenalty`F=\@M
\prebreakpenalty`G=\@M
\prebreakpenalty`H=\@M
\prebreakpenalty`I=\@M

\prebreakpenalty\jis"212D=\@M		% L
\postbreakpenalty\jis"212E=\@M		% M
\postbreakpenalty\jis"2146=\@M		% e
\prebreakpenalty\jis"2147=\@M		% f
\postbreakpenalty\jis"2148=\@M		% g
\prebreakpenalty\jis"2149=\@M		% h

\prebreakpenalty`j=\@M
\postbreakpenalty`i=\@M
\prebreakpenalty`p=\@M
\postbreakpenalty`o=\@M
\prebreakpenalty`n=\@M
\postbreakpenalty`m=\@M
\postbreakpenalty`e=\@M
\prebreakpenalty`f=\@M

\postbreakpenalty\jis"214C=\@M		%k
\prebreakpenalty\jis"214D=\@M		% l
\postbreakpenalty\jis"2152=\@M		% q
\prebreakpenalty\jis"2153=\@M		% r
\postbreakpenalty\jis"2154=\@M		% s
\prebreakpenalty\jis"2155=\@M		% t
\postbreakpenalty\jis"2156=\@M		% u
\prebreakpenalty\jis"2157=\@M		% v
\postbreakpenalty\jis"2158=\@M		% w
\prebreakpenalty\jis"2159=\@M		% x
\postbreakpenalty\jis"215A=\@M		% y
\prebreakpenalty\jis"215B=\@M		% z

\prebreakpenalty`=\@M
\prebreakpenalty`=\@M
\prebreakpenalty`=\@M
\prebreakpenalty`=\@M
\prebreakpenalty`=\@M
\prebreakpenalty`=\@M
\prebreakpenalty`=\@M
\prebreakpenalty`=\@M
\prebreakpenalty`=\@M
\prebreakpenalty\jis"246E=\@M		% 
\prebreakpenalty`@=\@M
\prebreakpenalty`B=\@M
\prebreakpenalty`D=\@M
\prebreakpenalty`F=\@M
\prebreakpenalty`H=\@M
\prebreakpenalty`b=\@M
\prebreakpenalty`=\@M
\prebreakpenalty`=\@M
\prebreakpenalty`=\@M
\prebreakpenalty\jis"256E=\@M		% 
\prebreakpenalty\jis"2575=\@M		% 
\prebreakpenalty\jis"2576=\@M		% 

\fi
% 1.04(3)<<


%%%%%% Miscellaneous %%%%%%

%% \doublerulesep is 1pt (H.N.)
\arraycolsep5pt \tabcolsep6pt \arrayrulewidth.4pt \doublerulesep1pt 
\tabbingsep.5\@mojihaba

\skip\@mpfootins\skip\footins
\fboxsep3pt \fboxrule.4pt 

%% We simply allow (not encourage) club and widow lines. (H.N.)
\clubpenalty\z@ \widowpenalty\z@ \displaywidowpenalty\z@

% The following redefinition influences \linebreak etc.
\def\sloppy{\tolerance9999\hbadness9999\hfuzz.5\p@ \vfuzz.5\p@}

\endinput