changeset 1:d8e18a6472a6

first
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Sat, 21 Mar 2009 19:15:03 +0900
parents
children 2e9c39a11d33
files federated-linda.ind ipsjcommon.sty ipsjdrafts.sty ipsjpapers.cls ipsjpapers.sty ipsjsort-e.bst ipsjsort.bst ipsjunsrt-e.bst ipsjunsrt.bst linda-sigos.mm sigos.tex
diffstat 11 files changed, 162 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/federated-linda.ind	Sat Mar 21 19:15:03 2009 +0900
@@ -0,0 +1,4 @@
+-title: 連邦型Lindaによる分散アルゴリズムをデバッグするためのメタプロトコル
+
+--author: 赤嶺悠太, 小野雅俊, 河野真治
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ipsjcommon.sty	Sat Mar 21 19:15:03 2009 +0900
@@ -0,0 +1,1 @@
+% Copyright (C) 1995-2008 by Hiroshi Nakashima, Yasuki Saito and
%                            The Editorial Board of the IPSJ Journal
%
% ipsjcommon.sty 29-Dec-08 by Hiroshi Nakashima (ver 3.01)
% (revision history deleted)
% ipsjcommon.sty 24-Apr-95 by Hiroshi Nakashima (ver 1.0)

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

% \section:	2 rows
% others:	1 row
%
% 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\ipsj@j@app \fi}}}% 2.12(1b)
\def\sec@oappendix[#1]{\sec@sec*{\ifDS@english Appendix: \else
	\ipsj@j@app\hskip\jspaceskip\fi #1}}			% 2.12(1b)
\def\appendixprefix{A.}
\def\appendixpostfix{}

\def\acknowledgment{\par
	{\bf \ifDS@english Acknowledgments \else\ipsj@j@ack\fi}%% 2.12(1b)
	\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 "2-row" 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 MOJI-DORI
%
% \@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 MOJI-DORI
%
% \@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 MOJI-DORI of sectioning tilte.  The rule is;
%	2 - 4 Kanji char -> 5 Kanji char
%	otherwise    -> natural width
%
\def\sec@mojidori#1{\ifDS@english #1\else			% 2.12(1b)
	\setbox0\hbox{#1}\settowidth\@tempdimb{\ipsj@j@a}%	% 2.12(1b)
	\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\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 \ is null but stretchable and (hardly) breakable.	% 2.09(1)

\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\z@ plus\fontdimen\thr@@\font \penalty5000\relax}
								% 2.09(1)
	\ifDS@english\else \ipsj@defcolonforbib \fi}		% 2.12(1b)(2)

% (removal of \bib@refname)					% 2.12(1a)

\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{.6}					% 3.00(1)
\def\dblfloatpagefraction{.6}					% 3.00(1)

\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~}
\def\fname@figures{Figs.\,}					% 2.12(8)>>
\def\fname@Figures{Figures~}
\def\fname@tables{Tables~}					% 2.12(8)<<
\else
\def\fname@figure{\ipsj@j@fig\fref@nobreak}		% 1.06(1), 2.12(1b)
\let\fname@Figure\fname@figure
\def\fname@table{\ipsj@j@tab\fref@nobreak}		% 1.06(1), 2.12(1b)
\let\fname@figures\fname@figure					% 2.12(8)>>
\let\fname@Figures\fname@figure
\let\fname@tables\fname@table					% 2.12(8)<<
\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 \boxmaxdepth\dp\strutbox			% 2.12(7c)
	\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{\box\@currbox\vfil}}
								% 2.10(1)
% 2.12(7a,b)>>
\let\ipsj@cflb\@cflb
\let\ipsj@comflelt\@comflelt
\def\@cflb{\let\ipsj@botfigrule\botfigrule \let\botfigrule\vfil 
	\let\@comflelt\ipsj@comfleltbot \ipsj@cflb
	\let\@comflelt\ipsj@comflelt \let\botfigrule\ipsj@botfigrule}
\def\ipsj@comfleltbot#1{%
	\setbox#1\vbox to\ht#1{\vfil\unvbox#1\unskip}%
	\setbox#1\vbox to\ht#1{\@tempdima\dp#1\unvbox#1\vskip-\@tempdima}%
								% 3.00(4)
	\ipsj@comflelt{#1}}
% 2.12(7a,b)<<

\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}

\let\ipsj@iiiminipage\@iiiminipage				% 3.01(2)>>
\def\@iiiminipage#1#2[#3]#4{\ipsj@iiiminipage{#1}{#2}[#3]{#4}%
	\cap@linewidth\hsize \cap@hsize\hsize}
\def\CaptionType{\def\@captype}					% 3.01(2)<<

\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\figsref{\fref@refs\fname@figures}				% 2.12(8)>>
\def\Figsref{\fref@refs\fname@Figures}
\def\tabsref{\fref@refs\fname@tables}
\let\Tabsref\tabsref
\def\fref@refs#1{\@ifstar{\fref@irefs\relax{#1}}{\fref@irefs\bf{#1}}}
\def\fref@irefs#1#2#3{\def\fref@list{#3}\@tempswafalse \@tempcnta\z@
	\@for\fref@elem:=\fref@list\do{%
		\@ifundefined{fref@r@\fref@elem}{\@tempswatrue}{}%
		\advance\@tempcnta\@ne}%
	\ifx#1\relax \@tempswafalse\fi
	\ifDS@english {\if@tempswa #1\fi #2}\let\fref@temp\relax
	\else \def\fref@temp{#2}\fi
	\@for\fref@elem:=\fref@list\do{%
		\if@tempswa \fref@iref{#1}{\fref@temp}{\fref@elem}%
		\else \fref@temp\fref@doref{\fref@elem}\fi
		\advance\@tempcnta\m@ne
		\ifnum\@tempcnta=\@ne \fref@and
		\else\ifnum\@tempcnta>\@ne \fref@comma \fi\fi}}
\ifDS@english
\def\fref@and{ and~}
\def\fref@comma{, }
\else
\def\fref@and{\ipsj@j@comma}
\let\fref@comma\fref@and
\fi

\ifDS@printer
\def\figures{{\bf\fname@figures}}
\def\Figures{{\bf\fname@Figures}}
\def\tables{{\bf\fname@tables}}
\let\Tables\tables
\def\Ref{\fref@iref\bf\relax}
\fi								% 2.12(8)<<

\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}%
		\def\protect{\noexpand\protect\noexpand}%
		\xdef\@thefnmark{\thempfn}}\@footnotemark\@footnotetext}}
\def\footnotemark{\@ifnextchar[%]
	{\@xfootnotemark}{{\PF@adjustfnote \stepcounter{footnote}%
		\def\protect{\noexpand\protect\noexpand}%
		\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
	\@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{$\@thefnmark$}				% 2.12(3)
\def\@makefnmarkdagger{$\@thefnmark$}
\def\@makefnmarkast{$\@thefnmark$}				% 2.12(3)
\let\@makefnmarkforfn\@makefnmarkstar

\def\@makefnmark{\smash{$^{\@thefnmark}$}}			% 2.12(3)
								% 1.04(2d)
						% smashed to make it
						% zero height

\def\thefootnote{\ifnum\c@footnote>0\relax{\star}\number\c@footnote\fi}
								% 2.12(3)

%%%%%% 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\ipsj@j@citescript
%     								% 2.06(2)
								% 2.12(4)
	\def\@cite@punct{,}\m@th^{\hbox{\scriptsize#1}}$\spacefactor\@m}
\def\@Citey#1{\let\@cite@tiestyle\ipsj@j@citetext		% 2.12(4)
								% 1.04(1)>>
	\ifDS@english \def\@cite@punct{,\space\penalty\@highpenalty}%
								% 2.13(1)
	\else\def\@cite@punct{\ipsj@j@comma}\fi#1\spacefactor\@m}
								% 1.04(1)<<
								% 2.12(1b)
\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}%
	\def\protect{\noexpand\protect\noexpand}%
	\@tempcnta\m@ne \let\@celt\@compress@cite \@cite@list
	\let\protect\relax \@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{\@cite@tie{\protect\@cite@tiestyle}%
								% 2.12(4)
			\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}%
	\@cite@tie\ipsj@j@citescript \@p@citen{#2}}}		% 2.12(4)
\def\multiCite{\protect\@p@multiCite}
\def\@p@multiCite#1#2{\@Citey{\@p@citen{#1}\@cite@tie\relax	% 2.12(4)
	\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}

\def\adj@setbhd#1{\setbox0\hbox{#1}				% 2.12(1c)>>
	\@tempdima\baselineskip \advance\@tempdima-\ht0 \advance\@tempdima\dp0
	\edef\adj@bhd{\the\@tempdima}}				% 2.12(1c)<<

% 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\dp\strutbox			% 1.01(1,3), 2.13(2)
	\advance\boxmaxdepth-1pt				% 2.13(2)
	\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}


%%%%%% 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@}

%% For heading of TBIO papers
\ifDS@TBIO							% 2.11(1)>>
\def\TBIOpapercategory#1{\def\ipsj@TBIO@pcat{#1}\ignorespaces}
\def\ipsj@TBIO@pcat{original}
\def\ipsj@TBIO@pcat@original{Original Paper}
\def\ipsj@TBIO@pcat@survey{Survey Paper}
\def\ipsj@TBIO@pcat@database{Database/Software Paper}
\def\ipsj@TBIO@pcatref{\@ifundefined{ipsj@TBIO@pcat@\ipsj@TBIO@pcat}%
    {\ipsj@warning{TBIO paper category \ipsj@TBIO@pcat\space is undefined.}}%
    \relax
  \@nameuse{ipsj@TBIO@pcat@\ipsj@TBIO@pcat}}
\fi								% 2.11(1)<<


% 2.12(1a)>>
\let\ipsj@j@citescript\scriptsize				% 2.12(4)>>
\let\ipsj@j@citetext\normalsize
\def\@cite@tie#1{\hbox{#1--}}					% 2.12(4)<<
\def\bib@refname{References}
\adj@setbhd{A}

\ifipsj@nonjp \let\next\endinput \else \let\next\relax \fi
\next

\def\ipsj@j@a{あ}
\def\ipsj@j@app{付録}
\def\ipsj@j@ack{謝辞}
\def\ipsj@j@bib{参考文献}
\def\ipsj@j@fig{図}
\def\ipsj@j@tab{表}
\def\ipsj@j@comma{,}
\def\ipsj@j@technote{テクニカルノート}
\def\ipsj@j@invited{招待論文}
\def\ipsj@j@sigrec{推薦論文}					% 2.13 (3)
\def\ipsj@j@talkabst{発表概要}
\def\ipsj@j@presently{現在,}
\def\ipsj@j@jipsj{情報処理学会論文誌}
\def\ipsj@j@regpaper{論文}
\def\ipsj@j@contactto{連絡先}
\def\ipsj@j@abstract{概要}
\def\ipsj@j@colon{:}
\def\ipsj@j@year{年}
\def\ipsj@j@month{月}
\def\ipsj@j@day{日}
\def\ipsj@j@lp{(}
\def\ipsj@j@rp{)}
\def\ipsj@j@edinch{担当編集委員}
\def\ipsj@j@rerec{再受付}
\def\ipsj@j@received{受付}
\def\ipsj@j@accepted{採録}
\def\ipsj@j@released{掲載}					% 3.00(3)
\def\ipsj@j@presented{発表}
\def\ipsj@j@member{正会員}
\def\ipsj@j@stmember{学生会員}
\def\ipsj@j@nomember{非会員}
\def\ipsj@j@techrep{情報処理学会研究報告}			% 3.01(1)

\ifDS@english\else \ifDS@draft\else
\sec@setskips{\ipsj@j@a}
\fi\fi

\expandafter\let\csname c@巻数\endcsname\c@volume
\expandafter\let\csname c@号数\endcsname\c@number
\expandafter\let\csname c@月数\endcsname\c@month		% 3.00(2)
\expandafter\let\csname c@年数\endcsname\c@year

\def\ipsj@sig@PRO@j{プログラミング}
\def\ipsj@sig@TOM@j{数理モデル化と応用}
\def\ipsj@sig@TOD@j{データベース}
\def\ipsj@sig@HPS@j{ハイパフォーマンスコンピューティングシステム}
\def\ipsj@sig@CVIM@j{コンピュータビジョンとイメージメディア}
\def\ipsj@sig@ACS@j{コンピューティングシステム}			% 2.09(2)

\def\ra@nengo{平成}	%% Change here when ...
\let\受付\received
\let\採録\accepted
\let\発表\presented						% 2.07(7)
\let\再受付\rereceived

\def\々{\hskip\jintercharskip\hbox to\jspaceskip{\hfil 々\hfil}%% 2.12(5)
	\hskip\jintercharskip}

\ifDS@english\else \ifDS@draft\else
{\fs@sec \@tempdima7\jspaceskip
\xdef\bib@refname{\hbox to\the\@tempdima{\jintercharskip\fill\ipsj@j@bib}}}
\adj@setbhd\ipsj@j@a
\fi\fi

\def\ipsj@j@colon@command{{\nobreak				% 2.12(2)>>
	\hbox to.7\jspaceskip{:\hss}\allowbreak
	\@tempdima.3\jspaceskip \hskip\@tempdima minus\@tempdima
	\allowbreak
	\hskip\z@ minus-\@tempdima}\ignorespaces}
\def\ipsj@defcolonforbib{\let\:\ipsj@j@colon@command}
\ifDS@printer \ipsj@defcolonforbib \fi				% 2.12(2)<<

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

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

\prebreakpenalty`・=\@M
\prebreakpenalty`:=\@M
\prebreakpenalty`;=\@M
\prebreakpenalty`?=\@M
\prebreakpenalty`!=\@M

\prebreakpenalty\jis"212D=\@M		% ´
\postbreakpenalty\jis"212E=\@M		% `
\postbreakpenalty\jis"2146=\@M		% ‘
\prebreakpenalty\jis"2147=\@M		% ’
\postbreakpenalty\jis"2148=\@M		% “
\prebreakpenalty\jis"2149=\@M		% ”

\prebreakpenalty`)=\@M
\postbreakpenalty`(=\@M
\prebreakpenalty`}=\@M
\postbreakpenalty`{=\@M
\prebreakpenalty`]=\@M
\postbreakpenalty`[=\@M
\postbreakpenalty`‘=\@M
\prebreakpenalty`’=\@M

\postbreakpenalty\jis"214C=\@M		%〔
\prebreakpenalty\jis"214D=\@M		% 〕
\postbreakpenalty\jis"2152=\@M		% 〈
\prebreakpenalty\jis"2153=\@M		% 〉
\postbreakpenalty\jis"2154=\@M		% 《
\prebreakpenalty\jis"2155=\@M		% 》
\postbreakpenalty\jis"2156=\@M		% 「
\prebreakpenalty\jis"2157=\@M		% 」
\postbreakpenalty\jis"2158=\@M		% 『
\prebreakpenalty\jis"2159=\@M		% 』
\postbreakpenalty\jis"215A=\@M		% 【
\prebreakpenalty\jis"215B=\@M		% 】

\prebreakpenalty`ー=\@M						% 2.12(6)
\prebreakpenalty`〜=\@M						% 2.12(6)

\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`ィ=\@M
\prebreakpenalty`ゥ=\@M
\prebreakpenalty`ェ=\@M
\prebreakpenalty`ォ=\@M
\prebreakpenalty`ッ=\@M
\prebreakpenalty`ャ=\@M
\prebreakpenalty`ュ=\@M
\prebreakpenalty`ョ=\@M
\prebreakpenalty\jis"256E=\@M		% ヮ
\prebreakpenalty\jis"2575=\@M		% ヵ
\prebreakpenalty\jis"2576=\@M		% ヶ

\fi
% 1.04(3)<<
% 2.12(1a)<<
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ipsjdrafts.sty	Sat Mar 21 19:15:03 2009 +0900
@@ -0,0 +1,1 @@
+% Copyright (C) 1995-2007 by Hiroshi Nakashima, Yasuki Saito and
%                            The Editorial Board of the IPSJ Journal
%
% ipsjdrafts.sty 15-Jun-07 by Hiroshi Nakashima (ver 2.12)
% (revision history deleted)
% ipsjdrafts.sty 24-Apr-95 by Hiroshi Nakashima (ver 1.0)

%%%%%% Fonts %%%%%%
% All font loading are removed.

\ifipsj@nonjp\else						% 2.12(1a)
\ifASCII
\let\latex@setsize\@setsize
\def\@setsize#1#2#3#4{\latex@setsize{#1}{#2}{#3}{#4}\jspaceskip1zw}

\newcount\jfsize
\let\setjglues\relax
\let\jintercharskip\kanjiskip
\let\jasciikanjiskip\xkanjiskip
\let\jmathkanjiskip\xkanjiskip
\newdimen\jspaceskip

\def\defjintercharskip#1#2#3#4{\@asciiwarning{\defjintercharskip}}
\def\defjasciikanjiskip#1#2#3#4{\@asciiwarning{\defjasciicharskip}}
\def\defmathkanjiskip#1#2#3#4{\@asciiwarning{\defmathcharskip}}
\def\defjspaceskip#1#2#3#4{\@asciiwarning{\defjspaceskip}}

\def\@asciiwarning#1{\ipsj@warning{\string#1\space		% 2.00(1)
	is not supported in ASCII version}}

\if@LaTeX@eN							% 2.00(2)>>
\DeclareOldFontCommand{\mc}{\normalfont\mcfamily}{\mathmc}
\DeclareOldFontCommand{\gt}{\normalfont\gtfamily}{\mathgt}
\fi								% 2.00(2)<<

\def\dg{\gt}							% 1.06(1)
\def\dm{\mc}							% 1.06(1)

\else	% This is necessary even in 2e.
\ifx\sixdm\undefined \jfont\sixdm=dm6 \fi			% 1.01(1)
								% 1.06(2)
\fi \fi

\if@LaTeX@eN							% 2.00(2)>>
\DeclareOldFontCommand{\rm}{\normalfont\rmfamily}{\mathrm}
\DeclareOldFontCommand{\sf}{\normalfont\sffamily}{\mathsf}
\DeclareOldFontCommand{\tt}{\normalfont\ttfamily}{\mathtt}
\DeclareOldFontCommand{\bf}{\normalfont\bfseries}{\mathbf}
\DeclareOldFontCommand{\it}{\normalfont\itshape}{\mathit}
\DeclareOldFontCommand{\sl}{\normalfont\slshape}{\@nomath\sl}
\DeclareOldFontCommand{\sc}{\normalfont\scshape}{\@nomath\sc}
\DeclareRobustCommand*{\cal}{\@fontswitch{\relax}{\mathcal}}
\DeclareRobustCommand*{\mit}{\@fontswitch{\relax}{\mathnormal}}
\fi								% 2.00(2)<<

%%%%%% Basic Font Size Macros %%%%%%
% Nothing at all.


%%%%%% Font Size Macros %%%%%%

\def\fs@setsize#1#2#3#4{\normalsize\dimen@\normalbaselineskip
	\@ifstar{\@setsize{#1}{\dimen@}{#3}{#4}}%
		{\@setsize{#1}{#2}{#3}{#4}}}

% \baselineskip's are almost 1.25 times those defined in NTT jart12.

\def\@normalsize{\@setsize\normalsize{20pt}\xiipt\@xiipt}
\def\small{\fs@setsize\small{17pt}\xipt\@xipt}
\def\footnotesize{\fs@setsize\footnotesize{14pt}\xpt\@xpt}
\def\scriptsize{\@setsize\scriptsize{11.875pt}\viiipt\@viiipt}
\def\tiny{\@setsize\tiny{8.75pt}\vipt\@vipt}
\def\large{\@setsize\large{20pt}\xivpt\@xivpt}			% 1.06(3)
\def\Large{\@setsize\Large{25pt}\xviipt\@xviipt}
\def\LARGE{\@setsize\LARGE{25pt}\xxpt\@xxpt}
\let\huge\LARGE
\let\Huge\LARGE

\if@LaTeX@e							% 2.00(3)>>
\let\normalsize\@normalsize
\fi								% 2.00(3)<<

\let\fs@sec\large
\let\fs@subsec\normalsize
\let\fs@bibliography\normalsize
\let\fs@caption\normalsize
\let\fs@table\normalsize
\let\fs@footnote\footnotesize
{\tiny \xdef\fn@fontv{\ifipsj@nonjp \the\font \else		% 2.12(1a)
	\ifASCII \the\jfont \else \sixdm \fi\fi}}
\let\fn@fontvi\fn@fontv

\@normalsize 

\ifipsj@nonjp\else						% 2.12(1a)
\ifASCII\else							% 1.06(2) >>
\ifx\setjglue\undefined\else					% 2.04(1)
\def\@tempc{\edef\@tempa{\the\ja}
	\edef\@tempa{\expandafter\string\@tempa}
	\expandafter\@tempb\@tempa\@nil
	\expandafter\defjintercharskip\csname\@tempa\endcsname}
\let\@tempd\@namedef
{\catcode`j=12\catcode`a=12\gdef\@tempb#1#2ja\@nil{\@tempd{@tempa}{#2}}}
\dg\@tempc{0pt}{1.4pt}{0.14pt}
\dm\@tempc{0pt}{1.4pt}{0.14pt}
\setjglues
\fi\fi\fi							% 1.06(2) <<

\@tempdima.55\baselineskip
\edef\sec@aboveskip{\the\@tempdima}
\@tempdima.45\baselineskip
\edef\sec@belowskip{\the\@tempdima}

\ifipsj@nonjp\else						% 2.12(1a)
\if@LaTeX@e\else						% 2.04(2)
\let\latex@bf\bf						% 1.06(1)
\def\bf{\dg\latex@bf}						% 1.06(1)
\fi\fi								% 2.04(2)


%%%%%% Page Layout Parameters %%%%%%

\newdimen\@mojihaba
\ifipsj@nonjp							% 2.12(1a)>>
	\@mojihaba11.54659pt
	\let\jspaceskip\@mojihaba
\else
	\@mojihaba\jspaceskip
\fi								% 2.12(1a)<<

% No heads
\headheight\z@
\headsep\z@

\setbox0\hbox{$\displaystyle X^X$}
\topskip\ht0

% 1 page = 32 lines
\textheight31\baselineskip \advance\textheight\topskip \advance\textheight100sp

% \topmargin is (A4height-\textheight)/2 - 1in
\topmargin296mm \advance\topmargin-\textheight \divide\topmargin\tw@
\advance\topmargin-1in
\ifASCII\if@LaTeX@e\ifipsj@nonjp\else
	\@@topmargin\topmargin \fi\fi\fi		% 2.00(4),2.12(1a)

\footskip 1.5\baselineskip

% 1 page = 35 Kanji chars
\ifDS@english							% 1.06(4) >>
\textwidth404.13048pt
\else
\textwidth35\@mojihaba
\fi								% 1.06(4) <<

% \oddsidemargin is (A4width-\textwidth)/2 - 1in
\oddsidemargin210mm \advance\oddsidemargin-\textwidth \divide\oddsidemargin\tw@
\advance\oddsidemargin-1in

% As jart12
\footnotesep10pt
\skip\footins 10.8pt plus 4pt minus 2pt 
\def\footnoterule{\kern-3\p@ \hrule width.4\columnwidth \kern2.6\p@}

\floatsep \baselineskip \textfloatsep \baselineskip 
\intextsep \baselineskip \@maxsep \baselineskip
\dblfloatsep \baselineskip \dbltextfloatsep \baselineskip
\@dblmaxsep \baselineskip
\@fptop 0pt plus 1fil \@fpsep 0pt plus 2fil \@fpbot 0pt plus 1fil 
\@dblfptop 0pt plus 1fil \@dblfpsep 0pt plus 2fil \@dblfpbot 0pt plus 1fil

\parskip\z@ \parindent \@mojihaba
\@lowpenalty 51 \@medpenalty 151 \@highpenalty 301 
\@beginparpenalty -\@lowpenalty \@endparpenalty -\@lowpenalty
\@itempenalty -\@lowpenalty 


%%%%%% Title and Authors %%%%%%
%
% Format of title, author names and abstract.
%
%	\leftline{\LARGE <<paper-category>>}
%	\vfill
%	\beign{center}\LARGE\bf <Japanese title>\end{center}
%	\vfill
%	\begin{center}\LARGE\bf <Engilish title>\end{center}
%	\vfill\vfill
%	\newpage
%	\large <Japanese author names>
%	\vfill
%	<<contact info>>
%	\begin{itemize}\item[]\large <Contact address>\end{itemize}
%	\vfill\vfill
%	\newpage
%	\normalsize <Japanese abstract>
%	\normalsize <English abstract>

\def\maketitle{\@maketitle}

% default title header

\def\title{\@dblarg{\@xtitle}}
\def\@xtitle[#1]#2{\gdef\@title{#2}}
\def\@title{\leavevmode\mkt@warning\title}
\long\def\author#1{\long\gdef\@author{#1}}
\def\@author{\mkt@warning\author}

\newbox\@abstractbox

\def\abstract{\global\let\@abstract\relax
	\global\setbox\@abstractbox\vtop\bgroup}
\def\endabstract{\par\hbox{}\egroup}
\def\@abstract{\mkt@warning{abstract env}}

%% We need English title, author name(s) and abstract. (H.N.)
%% English author names are simply ignored.
\def\etitle#1{\gdef\@etitle{#1}}
\def\@etitle{\leavevmode\mkt@warning\etitle}
\long\def\eauthor#1{}

\newbox\@eabstractbox
\def\eabstract{\global\let\@eabstract\relax
	\global\setbox\@eabstractbox\vtop\bgroup}
\let\endeabstract\endabstract
\def\@eabstract{\mkt@warning{eabstract env}}

\ifDS@english \let\abstract\eabstract \let\@eabstract\@abstract \fi

% Contact address is no longer required even in draft.
\def\contact{\long\def\mkt@contact}
\def\mkt@contact{}						% 2.12(4)

\def\@maketitle{\newpage\thispagestyle{empty}
	\leftline{\LARGE
		\ifDS@TBIO \ipsj@TBIO@pcatref			% 2.11(1)
		\else\ifDS@english \ifDS@technote Technical Note\else
			Regular Paper\fi
		\else \ifDS@technote \ipsj@j@technote		% 2.12(1b)
			       \else \ipsj@j@regpaper\fi\fi\fi}
	\vfill
	\begin{center}\LARGE\bf\@title\end{center}
	\ifDS@english\else 
		\vfill
		\begin{center}\LARGE\bf\@etitle\end{center}\fi
	\@thanks
	\vfill\vfill
%								% 2.12(4)>>
%	\ifDS@anonymous\else					% 2.10(1)>>
%	    \newpage\thispagestyle{empty}
%	    \begingroup\large\vspace*{\fill}\rightskip0pt plus1fil
%	    \parindent\z@\parskip.5\baselineskip\hangindent2em\hangafter\@ne
%	    \def\par{{\@@par}}
%	    \mkt@makeauthor
%	    \par\vfill
%	    \noindent
%	    \ifDS@english Contact To:\else \ipsj@j@contactto \fi% 2.12(1b)
%	    \endgroup
%	    \begin{itemize}\large\item[]\mkt@contact\end{itemize}
%	    \vfill\vfill
%	\fi							% 2.10(1)<<
%								% 2.12(4)<<
	\newpage \setcounter{page}{1}\def\thepage{\roman{page}}
	\ifDS@english\else \@abstract \centerline{\bf \ipsj@j@abstract}
%								% 2.12(1b)
		\vskip-\prevdepth\vskip\baselineskip\vskip-\ht\@abstractbox
		\unvbox\@abstractbox\prevdepth\z@ \fi
	\centerline{\bf Abstract}
	\vskip-\prevdepth \vskip\baselineskip\vskip-\ht\@eabstractbox
	\@eabstract \unvbox\@eabstractbox
	\newpage \def\thepage{\arabic{page}}\setcounter{page}{1}}

\def\mkt@makeauthor{\let\member\mkt@member \let\nomember\mkt@nomember
	\let\stmember\mkt@stmember
	\expandafter\mkt@imakeauthor\@author\and\@nil\and}
\def\mkt@imakeauthor#1\and{\def\@tempa{#1}\ifx\@tempa\@nnil\let\next\relax
	\else #1\par\let\next\mkt@imakeauthor\fi\next}

% Macros to specify author's affiliation easily.
\ifDS@english
\def\paffilabel#1#2{\affilabel{#1}{Presently with #2}}
\else
\def\paffilabel#1#2{\affilabel{#1}{\ipsj@j@presently #2}}
\fi
% Ignore English affiliation even if given.
\def\affilabel#1#2{\@ifundefined{affi@r@#1}%
		{\expandafter\xdef\csname affi@r@#1\endcsname
			{\affi@cuteng#2\\\@nil}}
		{\ipsj@warning{Affiliation label `#1' multiply defined}}}
								% 2.00(1)
\def\affiref#1{\@ifundefined{affi@r@#1}%
		{\ipsj@warning{%				% 2.00(1)
			Affiliation reference `#1' undefined}\hbox{(???)}}
		{\setbox\@tempboxa\hbox{(\csname affi@r@#1\endcsname)}%
			\@tempdima\wd\@tempboxa \advance\@tempdima2em\relax
			\ifdim\@tempdima>\hsize
				\newline\unhbox\@tempboxa
			\else\ \box\@tempboxa\fi}}
\def\affi@cuteng#1\\#2\@nil{#1}

% Membership of aurthor is required in draft.
\ifDS@english
\def\mkt@member#1{\ \hbox{[Regular Member\##1]}}
\def\mkt@nomember{\ \hbox{[Non Member]}}
\def\mkt@stmember#1{\ \hbox{[Student Member\##1]}}
\else
\def\mkt@member#1{\ \hbox{[\ipsj@j@member\##1]}}
\def\mkt@nomember{\ \hbox{[\ipsj@j@nomember]}}
\def\mkt@stmember#1{\ \hbox{[\ipsj@j@stmember\##1]}}
\fi

%%%%%% Page Header and Footer %%%%%% 

\mark{{}{}} 

% The following counters are not used, but may appear.
\let\c@volpage\c@page						% 2.00(5)
\def\thevolpage{\thepage}					% 2.00(5)
\newcounter{volpageoffset} % You must set this to appropriate value
\newcounter{volume}						% 2.12(1b)>>
\newcounter{number}
\newcounter{year}						% 2.12(1b)<<

\def\ps@plain{\let\@mkboth\@gobbletwo
	\def\@oddhead{\@checklines}\let\@evenhead\@oddhead
	\def\@oddfoot{\rm \hfil\thepage\hfil}\let\@evenfoot\@oddfoot}

\def\transaction#1#2#3{}					% 2.11(2)
\long\def\copyrightnotice#1{}					% 2.11(2)

% \checklines enables to draw a horizontal rule onto each baselines.

\newif\if@checklines \@checklinesfalse
\def\checklines{\@checklinestrue}
\def\@checklines{\if@checklines \rlap{\smash{\vtop{
	\hbox{} \vskip\headsep \hrule width\textwidth\vskip-.4pt \vskip\topskip
	\hrule\vskip-.4pt
	\@tempcnta31\relax\@@checklines}}}\hfil\fi}
\def\@@checklines{\ifnum\@tempcnta>\z@
	\vskip\normalbaselineskip \hrule\vskip-.4pt \advance\@tempcnta\m@ne
	\let\next\@@checklines\else\let\next\relax\fi\next}

\pagestyle{plain}
\pagenumbering{arabic}

\ifDS@english\else
\def\today{\the\year\ipsj@j@year \the\month\ipsj@j@month \the\day\ipsj@j@day}
								% 2.12(1b)
\fi


%%%%%% Output Routine %%%%%%
% Nothing at all.


%%%%%% Biography %%%%%%
% Almost nothing.

\def\received#1#2#3{}						% 2.12(1b)>>
\def\accepted#1#2#3{}
\def\rereceived#1#2#3{}						% 2.11(2)>>
% definition of \released is removed				% 2.12(2)
\def\edInCharge#1{}						% 2.11(2)<<
%								% 2.12(1b)<<

\def\biography{\let\member\@gobble \let\nomember\@gobble \let\stmember\@gobble
	\ifDS@english \let\author\@gobble \fi			% 2.12(3)
	\let\adjust\@gobble \setbox0\vbox\bgroup
	\tolerance\@M \hbadness\@M \hfuzz\maxdimen}
\def\endbiography{\egroup\setbox0\hbox{}}

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

\raggedbottom

\input{ipsjcommon.sty}

% Redefine \acknowledgment to put it separately.
\newbox\ack@box
\let\@acknowledgment\acknowledgment

\def\acknowledgment{\global\setbox\ack@box\vtop\bgroup\@acknowledgment}
\def\endacknowledgment{\par\egroup}

%								% 2.12(4)>>
%\let\id@enddocument\enddocument
%\def\enddocument{\clearpage
%	\ifDS@anonymous\else \unvbox\ack@box \fi		% 2.10(1)
%	\id@enddocument}
%								% 2.12(4)<<

\endinput
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ipsjpapers.cls	Sat Mar 21 19:15:03 2009 +0900
@@ -0,0 +1,1 @@
+% Copyright (C) 1995-2008 by Hiroshi Nakashima, Yasuki Saito and
%                            The Editorial Board of the IPSJ Journal
%
% ipsjpapers.cls 29-Dec-08 by Hiroshi Nakashima (ver 3.01)
% (revision history deleted)
% ipsjpapers.cls  1-Apr-96 by Hiroshi Nakashima (ver 2.00)

\ifx\pfmtname\undefined
\NeedsTeXFormat{LaTeX2e}
\else
\NeedsTeXFormat{pLaTeX2e}
\fi

\ProvidesClass{ipsjpapers}[2008/12/29 ver 3.01]
\input{ipsjpapers.sty}
\endinput
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ipsjpapers.sty	Sat Mar 21 19:15:03 2009 +0900
@@ -0,0 +1,1 @@
+% Copyright (C) 1995-2008 by Hiroshi Nakashima, Yasuki Saito and
%                            The Editorial Board of the IPSJ Journal
%
% ipsjpapers.sty 29-Dec-08 by Hiroshi Nakashima (ver 3.01)
% (revision history deleted)
% ipsjpapers.sty 24-Apr-95 by Hiroshi Nakashima (ver 1.0)
% ipsjpapers.sty 30-Nov-93 by Hiroshi Nakashima
% ipsjpapers.sty 3-Feb-93 by Yaski Saito
% compsoft.sty 22-April-92 by Yaski Saito
% compsoft.sty 18-July-90 by Hideki Isozaki 
% j-article.sty 10-Feb-89 from report.sty 16-Mar-88

%%%%%% LaTeX Version %%%%%%

% 2.00(1) >>
%% \ifASCII is true if ASCII version Japanese TeX, which doesn't have
%% \jintercharskip (H.N.)
\newif\ifipsj@nonjp \ipsj@nonjpfalse				% 2.12(1a)
\newif\ifASCII \ASCIIfalse
\ifx\jintercharskip\undefined \ASCIItrue
\ifx\kanjiskip\undefined \ipsj@nonjptrue			% 2.12(1a)
\fi\fi
\newif\if@LaTeX@e \@LaTeX@efalse				% 1.06(1)
\newif\if@LaTeX@eN \@LaTeX@eNfalse				% 2.00(1)
\def\@tempa{LaTeX2e}						% 1.06(1)
\ifx\fmtname\@tempa \@LaTeX@etrue				% 1.06(1)
\ifx\xpt\undefined \@LaTeX@eNtrue \fi\fi			% 2.00(1)
% 2.00(1) <<



%%%%%% Document Styles %%%%%%

% 2.00(2) >>
\newif\ifDS@printer \DS@printerfalse
\newif\ifDS@english \DS@englishfalse
\newif\ifDS@technote \DS@technotefalse
\newif\ifDS@preface \DS@prefacefalse
\newif\ifDS@draft \DS@draftfalse
\newif\ifDS@techrep \DS@techrepfalse				% 1.05(2)
\newif\ifDS@sigrecommended \DS@sigrecommendedfalse		% 2.04(1)
\newif\ifDS@invited \DS@invitedfalse				% 2.06(1)
\newif\ifDS@abstract \DS@abstractfalse				% 2.07(7)
\newif\ifDS@private \DS@privatefalse				% 2.07(8)
\newif\ifDS@anonymous \DS@anonymousfalse			% 2.10(1)
\newif\ifDS@TBIO \DS@TBIOfalse					% 2.11(1)
\newif\ifDS@online \DS@onlinefalse				% 2.12(4a)
\newif\ifDS@landscape \DS@landscapetrue				% 3.00(1)
								% 3.01(1)

\if@LaTeX@eN
\DeclareOption{printer}{\DS@printertrue}			% 2.09(1)
								% 2.12(2)
\DeclareOption{english}{\DS@englishtrue}
\DeclareOption{technote}{\DS@technotetrue}
\DeclareOption{preface}{\DS@prefacetrue}
\DeclareOption{draft}{\DS@drafttrue}
\DeclareOption{techrep}{\DS@techreptrue}
\DeclareOption{sigrecommended}{\DS@sigrecommendedtrue}		% 2.04(1)
\DeclareOption{invited}{\DS@invitedtrue}			% 2.06(1)
\DeclareOption{abstract}{\DS@abstracttrue}			% 2.07(7)
\DeclareOption{private}{\DS@privatetrue}			% 2.07(8)
\DeclareOption{anonymous}{\DS@anonymoustrue}			% 2.10(1)
\DeclareOption{TBIO}{\DS@TBIOtrue \DS@englishtrue}		% 2.11(1)
\DeclareOption{online}{\DS@onlinetrue \DS@printertrue \DS@englishtrue}
								% 2.12(4a)
\DeclareOption{landscape}{\DS@landscapetrue}			% 3.00(1)
\DeclareOption{portrait}{\DS@landscapefalse}			% 3.00(1)
\DeclareOption{10pt}{\def\@ptsize{0}}
\DeclareOption{11pt}{\def\@ptsize{1}}
\DeclareOption{12pt}{\def\@ptsize{2}}
\ExecuteOptions{10pt}
\ProcessOptions
\def\ipsj@warning{\ClassWarning{ipsjpapers}}			% 2.00(3)
\def\ipsj@error{\ClassError{ipsjpapers}}			% 2.00(3)
\newskip \old@latex@skip					% 2.00(14)
\let\@maxsep\old@latex@skip					% 2.00(14)
\let\@dblmaxsep\old@latex@skip					% 2.00(14)

\else
\expandafter\ifx\csname ver@ipsjpapers.cls\endcsname\relax
\typeout{Document Style `ipsjpapers' (ver 3.01) <29 Dec 2008>.}	% 2.05(1)
\fi % \ifx

\def\ds@printer{\relax}						% 2.09(1)
\def\ds@english{\DS@englishtrue}
\def\ds@technote{\DS@technotetrue}
\def\ds@preface{\DS@prefacetrue}
\def\ds@draft{\DS@drafttrue}
\def\ds@techrep{\DS@techreptrue}				% 1.05(2)
\def\ds@sigrecommended{\DS@sigrecommendedtrue}			% 2.04(1)
\def\ds@invited{\DS@invitedtrue}				% 2.06(1)
\def\ds@abstract{\DS@abstracttrue}				% 2.07(7)
\def\ds@private{\DS@privatetrue}				% 2.07(8)
\def\ds@anonymous{\DS@anonymoustrue}				% 2.10(1)
\def\ds@TBIO{\DS@TBIOtrue \DS@englishtrue}			% 2.11(1)
\def\ds@online{\DS@onlinetrue \DS@printertrue \DS@englishtrue}	% 2.12(4a)
\def\ds@landscape{\DS@landscapetrue}				% 3.00(1)
\def\ds@portrait{\DS@landscapefalse}				% 3.00(1)

% 1.04(3)>>
\def\@ptsize{0}
\@namedef{ds@11pt}{\def\@ptsize{1}}
\@namedef{ds@12pt}{\def\@ptsize{2}} 
% 1.04(3)<<

\@options
\let\ipsj@warning\@warning					% 2.00(3)
\let\@latex@warning\@warning					% 2.00(3)
\def\ipsj@error#1#2{\errhlp{#2}\errmessge{#1}}			% 2.00(3)
\fi % \if@LaTeX@eN
% 2.00(2) <<

\ifx\@classoptionslist\undefined\else				% 2.03(1) >>
\def\ipsj@draft@option{draft}
\def\ipsj@remove@draft@option{\def\@tempb{}%
	\@for\@tempa:=\@classoptionslist\do{%
		\ifx\@tempa\ipsj@draft@option\else
		\edef\@tempb{\@tempb,\@tempa}\fi}%
	\ifx\@tempb\@empty \def\@classoptionslist{}\else
	\expandafter\ipsj@remove@draft@ption\@tempb\@nil\fi}
\def\ipsj@remove@draft@ption,#1\@nil{%
	\def\@classoptionslist{#1}}
\ipsj@remove@draft@option
\fi % \ifx							% 2.03(1) <<

\ifipsj@nonjp \DS@englishtrue \fi				% 2.12(1a)

%%%%%% Basics %%%%%%

\newdimen\@Q \@Q=0.25mm

\lineskip\z@ \normallineskip\z@ 
\lineskiplimit\z@ \normallineskiplimit\z@
\abovedisplayskip\z@ \belowdisplayskip\z@
\abovedisplayshortskip\z@ \belowdisplayshortskip\z@

\def\baselinestretch{1}
\jot\z@ 

\ifDS@draft\def\next{\input{ipsjdrafts.sty}\endinput}\else\let\next\relax\fi
\next

\@twosidetrue

%%%%%% Fonts %%%%%%
% \finvedm(dg)		dm5		\vpt	\tiny		fn-mark
% \sixdm(dg)		dm6		\vipt	\scriptsize
% \sevendm(dg)		dm7		\vipt	\footnotesize	f-note, capt
%	10Q = 7.11304pt -> w(min7) = 6.73550pt
% \eightdm(dg)		dm8		\viiipt	\small		abst, header
%	11Q = 7.82434pt -> w(min8) = 7.69772pt
% \eightdm(dg)half	dm9		\ixpt	\normalsize	main text
%	12Q = 8.53564pt -> w(min9) = 8.65994
% \tendm(dg)		dm10		\xpt	\large		sec title
%	13Q = 9.24695pt -> w(min10) = 9.62216pt
% \tendm(dg)half	dm10*1095	\xipt	\Large		author names
%	15Q =10.66956pt -> w(min10*1095) = 10.53625pt
% (\twlvdm)		(dm12)		\xiipt	\LARGE		e-title
% \twelvedm(dg)half	dm12*1095	\xivpt	\huge		title
%			min10*1440
%	18Q =12.80347pt -> w(min10*1440) = 13.8559pt
%
% Note that cm fonts follows LaTeX standard. (e.g. \viiipt -> cmr8, etc.)

% 2.00(4)>>
\if@LaTeX@e
\ifASCII
\def\ipsj@declare@font#1#2#3{{\fontsize{#3}{\z@}#2\selectfont	    % 2.00(5)>>
	\edef\@tempa{\ifipsj@nonjp \the\font \else \the\jfont \fi}  % 2.12(1b)
	\expandafter\global\expandafter\let\expandafter#1\@tempa}}  % 2.00(5)<<

\iffalse	% ASCII LaTeX2e printer settings is removed	% 2.12(2a)
\else		% ASCII LaTeX2e non-printer
\ifipsj@nonjp							% 2.12(1b)>>
\ipsj@declare@font\fn@fontv\rmfamily\@vpt
\ipsj@declare@font\fn@fontvi\rmfamily\@vpt
\ipsj@declare@font\fn@fontvii\rmfamily\@vpt
% no declaration for \fn@fontxv					% 2.12(1b)<<
\else % \ifipsj@nonjp
\ipsj@declare@font\fn@fontv\mcfamily\@vpt
\ipsj@declare@font\fn@fontvi\mcfamily\@vpt
\ipsj@declare@font\fn@fontvii\mcfamily\@vpt
\ipsj@declare@font\fn@fontxv\gtfamily\@xipt
\fi\fi %\ifipsj@nonjp\iffalse

\else % \ifASCII = NTT LaTeX2e
\def\ipsj@declare@font#1#2#3{{\fontsize{#3}{\z@}#2\selectfont	    % 2.00(5)
	\xdef#1{\expandafter\noexpand\csname\jf@ntn@me\endcsname}}} % 2.00(5)
\ipsj@declare@font\fn@fontv\dm\@vpt
\ipsj@declare@font\fn@fontvi\dm\@vpt
\ipsj@declare@font\fn@fontvii\dm\@vpt
\ipsj@declare@font\fn@fontxv\dg\@xipt
\fi % \ifASCII
% 2.00(4) <<

\else % \if@LaTeX@e = LaTeX 2.09				% 2.00(4)
%% Fonts for ASCII TeX. (H.N.)
\ifASCII
\iffalse	% ASCII LaTeX 2.09 printer settings is removed	% 2.12(2a)
\else \ifipsj@nonjp\else					% 2.12(1b)
\font\fivedm		min5
\font\fivedg		goth5
\font\sixdm		min6
\font\sixdg		goth6
\font\sevendm		min7
\font\sevendg		goth7
\font\eightdm		min8
\font\eightdg		goth8
\font\eightdmhalf	min9
\font\eightdghalf	goth9
\font\tendm		min10
\font\tendg		goth10
\font\tendmhalf		min10 scaled\magstephalf
\font\tendghalf		goth10 scaled\magstephalf
\font\twelvedm		min10 scaled\magstep1
\font\twelvedg		goth10 scaled\magstep1
\font\twelvedmhalf	min10 scaled\magstep2
\font\twelvedghalf	goth10 scaled\magstep2
\let\fn@fontv\fivedm
\let\fn@fontvi\fivedm
\let\fn@fontvii\fivedm
\let\fn@fontxv\tendghalf

\fi\fi % \ifipsj@nonjp\iffalse

%% ASCII doesn't have \old@Npt. (H.N.)
\let\old@@vpt\vpt
\let\old@@vipt\vipt
\let\old@@viipt\viipt
\let\old@@viiipt\viiipt
\let\old@@ixpt\ixpt
\let\old@@xpt\xpt
\let\old@@xipt\xipt
\let\old@@xiipt\xiipt
\let\old@@xivpt\xivpt

\ifipsj@nonjp							% 2.12(1b)>>
\def\old@vpt{\old@@vpt}
\def\old@vipt{\old@@vipt}
\def\old@viipt{\old@@viipt}
\def\old@viiipt{\old@@viiipt}
\def\old@ixpt{\old@@ixpt}
\def\old@xpt{\old@@xpt}
\def\old@xipt{\old@@xipt}
\def\old@xiipt{\old@@xiipt}
\def\old@xivpt{\old@@xivpt}					% 2.12(1b)<<
\else % \ifipsj@nonjp
\def\old@vpt{\old@@vpt\jspaceskip1zw\relax}
\def\old@vipt{\old@@vipt\jspaceskip1zw\relax}
\def\old@viipt{\old@@viipt\jspaceskip1zw\relax}
\def\old@viiipt{\old@@viiipt\jspaceskip1zw\relax}
\def\old@ixpt{\old@@ixpt\jspaceskip1zw\relax}
\def\old@xpt{\old@@xpt\jspaceskip1zw\relax}
\def\old@xipt{\old@@xipt\jspaceskip1zw\relax}
\def\old@xiipt{\old@@xiipt\jspaceskip1zw\relax}
\def\old@xivpt{\old@@xivpt\jspaceskip1zw\relax}
\fi % \ifipsj@nonjp
								% 2.00(6)
								% 1.06(2)

%% ASCII doesn't have \dg nor \dm. (H.N.)
\ifipsj@nonjp\else						% 2.12(1b)
\def\dg{\protect\pdg}
\def\dm{\protect\pdm}
%% Redefine \gt and \mc
\def\gt{\protect\pdg}
\def\mc{\protect\pdm}
\let\pdm\relax
\fi % \ifipsj@nonjp

\else % \ifASCII
%% Fonts for NTT jTeX
%% \magstephalf and \magstep1 may cause trouble in older versions.

\jfont\fivedm=dm5
\jfont\fivedg=dg5
\jfont\sixdm=dm6
\jfont\sixdg=dg6
\jfont\sevendm=dm7
\jfont\sevendg=dg7
\jfont\eightdm=dm8
\jfont\eightdg=dg8
\jfont\eightdmhalf=dm9
\jfont\eightdghalf=dg9
\jfont\tendm=dm10
\jfont\tendg=dg10
\jfont\tendmhalf=dm10 scaled 1095
\jfont\tendghalf=dg10 scaled 1095
\jfont\twelvedm=dm12
\jfont\twelvedg=dg12
\jfont\twelvedmhalf=dm12 scaled 1095
\jfont\twelvedghalf=dg12 scaled 1095
\let\fn@fontv\fivedm
\let\fn@fontvi\fivedm
\let\fn@fontvii\fivedm
\let\fn@fontxv\tendghalf
								% 1.06(3)
\fi % \ifASCII
\fi % \if@LaTeX@e

\ifx\jfsize\undefined \newcount\jfsize \fi			% 1.06(2)

\ifASCII						% 1.06(3),2.00(6)>>
\ifipsj@nonjp\else						% 2.12(1b)
\let\setjglues\relax
\let\jintercharskip\kanjiskip
\let\jasciikanjiskip\xkanjiskip
\let\jmathkanjiskip\xkanjiskip
\newdimen\jspaceskip

\def\defjintercharskip#1#2#3#4{\@asciiwarning{\defjintercharskip}}
\def\defjasciikanjiskip#1#2#3#4{\@asciiwarning{\defjasciicharskip}}
\def\defmathkanjiskip#1#2#3#4{\@asciiwarning{\defmathcharskip}}
\def\defjspaceskip#1#2#3#4{\@asciiwarning{\defjspaceskip}}
							
\def\@asciiwarning#1{\ipsj@warning{\string#1\space		% 2.00(3)
	is not supported in ASCII version}}
							% 1.06(3),2.00(6)<<
\fi % \ifipsj@nonjp
\else % \ifASCII						% 2.00(7)>>
\if@LaTeX@e
\ipsj@declare@font\fn@eightdmhalf\dm\@ixpt
\ipsj@declare@font\fn@eightdghalf\dg\@ixpt
\else
\def\fn@eightdmhalf{\eightdmhalf}
\def\fn@eightdghalf{\eightdghalf}
\fi % \if@LaTeX@e
\ifx\setjglues\undefined\else
\expandafter\defjintercharskip\fn@eightdmhalf{0pt}{1.4pt}{0.5pt}
\expandafter\defjintercharskip\fn@eightdghalf{0pt}{1.4pt}{0.5pt}
\expandafter\defjasciikanjiskip\fn@eightdmhalf{2pt}{1pt}{1pt}
\expandafter\defjasciikanjiskip\fn@eightdghalf{2pt}{1pt}{1pt}
\expandafter\defjmathkanjiskip\fn@eightdmhalf{2pt}{1pt}{1pt}
\expandafter\defjmathkanjiskip\fn@eightdghalf{2pt}{1pt}{1pt}
\fi % \if@LaTeX@e						% 2.00(7)<<
\fi % \ifASCII							% 2.00(4)

\if@LaTeX@e							% 2.00(8)>>
\if@LaTeX@eN
\DeclareOldFontCommand{\rm}{\normalfont\rmfamily}{\mathrm}
\DeclareOldFontCommand{\sf}{\normalfont\sffamily}{\mathsf}
\DeclareOldFontCommand{\tt}{\normalfont\ttfamily}{\mathtt}
\DeclareOldFontCommand{\bf}{\normalfont\bfseries}{\mathbf}
\DeclareOldFontCommand{\it}{\normalfont\itshape}{\mathit}
\DeclareOldFontCommand{\sl}{\normalfont\slshape}{\@nomath\sl}
\DeclareOldFontCommand{\sc}{\normalfont\scshape}{\@nomath\sc}
\DeclareRobustCommand*{\cal}{\@fontswitch{\relax}{\mathcal}}
\DeclareRobustCommand*{\mit}{\@fontswitch{\relax}{\mathnormal}}
\ifASCII \ifipsj@nonjp\else					% 2.12(1b)
\DeclareOldFontCommand{\mc}{\normalfont\mcfamily}{\mathmc}
\DeclareOldFontCommand{\gt}{\normalfont\gtfamily}{\mathgt}
\fi\fi\fi % \ifipsj@nonjp\ifASCII\if@LaTeX@eN

\ifASCII \ifipsj@nonjp\else					% 2.12(1b)
\def\dm{\mc}
\def\dg{\gt}
\fi\fi\fi % \ifipsj@nonjp\ifASCII\if@LaTeX@e			% 2.00(8)<<

%%%%%% Basic Font Size Macros %%%%%%

\if@LaTeX@e					% 1.06(4),2.00(9),2.04(3)>>
\def\@setsize#1#2#3#4{\@setfontsize#1{#4}{#2}\ipsj@setjspaceskip}
\let\ipsj@setjspaceskip\relax			% 2.12(1b)>>
\ifASCII \ifipsj@nonjp\else
\def\ipsj@setjspaceskip{\jspaceskip1zw\relax}
\fi\fi % \ifipsj@nonjp\ifASCII			% 2.12(1b)<<
						% 1.06(4),2.00(9),2.04(3)<<

%% \vipt etc. are redefined to use appropriate Japanese fonts.
\else % \if@LaTeX@e						% 2.00(9)
\ifipsj@nonjp\else						% 2.12(1b)
\def\vpt{\old@vpt\fivedm\let\pdg\fivedg\let\pdm\fivedm\jfsize=5\relax}
\def\vipt{\old@vipt\sixdm\let\pdg\sixdg\let\pdm\sixdm\jfsize=6\relax}
\def\viipt{\old@viipt\sevendm\let\pdg\sevendg\let\pdm\sevendm\jfsize=7\relax}
\def\viiipt{\old@viiipt\eightdm\let\pdg\eightdg\let\pdm\eightdm\jfsize=8\relax}
\def\ixpt{\old@ixpt\eightdmhalf\let\pdg\eightdghalf\let\pdm\eightdmhalf
	\jfsize=9\relax \@ixptboldmath}				% 1.02(2)
\def\xpt{\old@xpt\tendm\let\pdg\tendg\let\pdm\tendm\jfsize=10\relax}
\def\xipt{\old@xipt\tendmhalf\let\pdg\tendghalf\let\pdm\tendmhalf\jfsize=11
	\relax}
\def\xiipt{\old@xiipt\twelvedm\let\pdg\twelvedg\let\pdm\twelvedm
	\jfsize=12\relax}
\def\xivpt{\old@xivpt\twelvedmhalf\let\pdg\twelvedghalf\let\pdm\twelvedmhalf
	\jfsize=14\relax}
\fi\fi % \ifipsj@nonjp\if@LaTeX@e				% 2.00(9)

\if@LaTeX@e							% 1.06(5)
\let\@ixptboldmath\relax					% 1.06(5)
\else								% 1.06(5)
% 1.02(2) >>
\iffalse	% printer setting removed			% 2.12(2a)
\else
\def\@ixptboldmath{%
	\def\unboldmath{\everymath{}\everydisplay{}\@nomath\unboldmath
		\textfont\@ne\ninmi 
		\textfont\tw@\ninsy \textfont\lyfam\ninly
		\@boldfalse}\@boldfalse
% 1.03(1) >>
	\def\boldmath{\@ifundefined{ninmib}{\global\font\ninmib\@mbi 
		\global\font\ninsyb\@mbsy\relax
		\global\font\ninlyb\@lasyb\relax
		\@addfontinfo\@ixpt
			{\def\boldmath{\everymath{\mit}\everydisplay{\mit}%
				\@prtct\@nomathbold
				\textfont\@ne\ninmib \textfont\tw@\ninsyb 
				\textfont\lyfam\ninlyb \@prtct\@boldtrue}}}{}%
	\@ixpt\boldmath}}
% 1.03(1) <<
\fi % \iffalse
% 1.02(2) <<
\fi % \if@LaTeX@e						% 1.06(5)


%%%%%% Font Size Macros %%%%%%

\def\fs@setsize#1#2#3#4{\normalsize\dimen@\normalbaselineskip
	\@ifstar{\@setsize{#1}{\dimen@}{#3}{#4}}%
		{\@setsize{#1}{#2}{#3}{#4}}}

% s = (3*b - (h' + d') - (h + d))/2
% s_a = s + h' + d - b
% s_b = s + h + d' - b
\def\sec@setskips#1{\setbox0\hbox{\fs@sec\bf#1}\setbox1\hbox{#1}
	\@tempdima3\baselineskip
	\advance\@tempdima-\ht0 \advance\@tempdima-\dp0
	\advance\@tempdima-\ht1 \advance\@tempdima-\dp1
	\divide\@tempdima\tw@ \advance\@tempdima-\baselineskip
	\@tempdimb\@tempdima
	\advance\@tempdima\ht0 \advance\@tempdima\dp1
	\advance\@tempdimb\ht1 \advance\@tempdimb\dp0
	\edef\sec@aboveskip{\the\@tempdima}
	\edef\sec@belowskip{\the\@tempdimb}}

\ifDS@english
% size		pt	\baselineskip	  size		\?pt	\baselineskip
% \normalsize	10	19/16Q		  \large	11	19/18Q (*)
% \small	 9	15Q		  \Large	12	22Q
% \footnotesize	 8	13Q		  \LARGE	14	26Q (*)
% \scriptsize	 6/7	8pt (*)		  \huge		18	30Q (*)
% \tiny		 5	6pt (*)		  \Huge		18	30Q (*)
% * : not measured

\ifDS@landscape							% 3.00(2)>>
\def\@normalsize{\@setsize\normalsize{19\@Q}\xpt\@xpt}
\def\small{\fs@setsize\small{15\@Q}\ixpt\@ixpt}
\def\footnotesize{\fs@setsize\footnotesize{13\@Q}\viiipt\@viiipt}
\def\scriptsize{\@setsize\scriptsize{8pt}\vipt\@vipt}
\def\tiny{\@setsize\tiny{6pt}\vpt\@vpt}
\def\large{\@setsize\large{19\@Q}\xipt\@xipt}
\def\Large{\@setsize\Large{22\@Q}\xiipt\@xiipt}
\def\LARGE{\@setsize\LARGE{26\@Q}\xivpt\@xivpt}
\def\huge{\@setsize\Huge{30\@Q}\xviipt\@xviipt}
\let\Huge\huge

\else % \ifDS@landscape						% 3.00(2)<<
\def\@normalsize{\@setsize\normalsize{16\@Q}\xpt\@xpt}
\def\small{\fs@setsize\small{15\@Q}\ixpt\@ixpt}
\def\footnotesize{\fs@setsize\footnotesize{13\@Q}\viiipt\@viiipt}
\def\scriptsize{\@setsize\scriptsize{8pt}\viipt\@viipt}
\def\tiny{\@setsize\tiny{6pt}\vpt\@vpt}
\def\large{\@setsize\large{18\@Q}\xipt\@xipt}			% 3.00(3)
\def\Large{\@setsize\Large{22\@Q}\xiipt\@xiipt}			% 3.00(3)
\def\LARGE{\@setsize\LARGE{26\@Q}\xivpt\@xivpt}
\def\huge{\@setsize\Huge{30\@Q}\xviipt\@xviipt}
\let\Huge\huge

\ifDS@techrep							% 1.05(2)>>
\def\@normalsize{\@setsize\normalsize{17\@Q}\xpt\@xpt}
\fi								% 1.05(2)<<
\fi % \ifDS@landscape						% 3.00(2)

\if@LaTeX@e							% 2.00(10)>>
\let\normalsize\@normalsize
\fi								% 2.00(10)<<

\let\fs@footnote\footnotesize
\let\fs@caption\footnotesize
\let\fs@table\footnotesize
\let\fs@eabst\footnotesize
\let\fs@header\footnotesize
\let\fs@footer\footnotesize
\let\fs@bibliography\small
\let\fs@subsec\normalsize
\let\fs@sec\normalsize
\let\fs@type\large
\let\fs@eauthor\large
\let\fs@title\Large

\@normalsize

\sec@setskips{A}

\else % \ifDS@english
% size		pt	\baselineskip	  size		\?pt	\baselineskip
% \normalsize	 9	20/19Q		  \large	10	20/19Q
% \small	 8	15/14Q		  \Large	11	22Q
% \footnotesize	 7	14Q		  \LARGE	12	20/18Q
% \scriptsize	 6	8pt (*)		  \huge		14	26Q
% \tiny		 5	6pt (*)		  \Huge		14	26Q
% * : not measured

\ifDS@landscape							% 3.00(2)>>
\def\@normalsize{\@setsize\normalsize{20\@Q}\ixpt\@ixpt}
\def\small{\fs@setsize\small{15\@Q}\viiipt\@viiipt}
\def\footnotesize{\fs@setsize\footnotesize{14\@Q}\viipt\@viipt}
\def\scriptsize{\@setsize\scriptsize{8pt}\vipt\@vipt}
\def\tiny{\@setsize\tiny{6pt}\vpt\@vpt}
\def\large{\@setsize\large{20\@Q}\xpt\@xpt}
\def\Large{\@setsize\Large{22\@Q}\xipt\@xipt}
\def\LARGE{\@setsize\LARGE{20\@Q}\xiipt\@xiipt}
\def\huge{\@setsize\Huge{26\@Q}\xivpt\@xivpt}
\let\Huge\huge

\else % \ifDS@landscape						% 3.00(2)<<
\def\@normalsize{\@setsize\normalsize{19\@Q}\ixpt\@ixpt}
\def\small{\fs@setsize\small{14\@Q}\viiipt\@viiipt}
\def\footnotesize{\fs@setsize\footnotesize{14\@Q}\viipt\@viipt}
\def\scriptsize{\@setsize\scriptsize{8pt}\vipt\@vipt}
\def\tiny{\@setsize\tiny{6pt}\vpt\@vpt}
\def\large{\@setsize\large{19\@Q}\xpt\@xpt}
\def\Large{\@setsize\Large{22\@Q}\xipt\@xipt}
\def\LARGE{\@setsize\LARGE{18\@Q}\xiipt\@xiipt}
\def\huge{\@setsize\Huge{26\@Q}\xivpt\@xivpt}
\let\Huge\huge

\ifDS@techrep							% 1.05(2)>>
\def\@normalsize{\@setsize\normalsize{17\@Q}\ixpt\@ixpt}
\fi								% 1.05(2)<<
\fi % \ifDS@landscape						% 3.00(2)

\if@LaTeX@e							% 2.00(10)>>
\let\normalsize\@normalsize
\fi								% 2.00(10)<<

\let\fs@footnote\footnotesize
\let\fs@caption\footnotesize
\let\fs@table\footnotesize
\let\fs@abst\small
\def\fs@eabst{\small\baselineskip13\@Q}
\let\fs@header\small
\let\fs@footer\small
\let\fs@subsec\normalsize
\def\fs@bibliography{\normalsize\baselineskip16\@Q}
\let\fs@sec\large
\let\fs@type\fn@fontxv
\let\fs@author\Large
\def\fs@eauthor{\Large\baselineskip20\@Q}			% 2.12(7)
\let\fs@etitle\LARGE
\let\fs@title\huge

\@normalsize 
								% 2.00(7)
\ifx\setjglues\undefined\else
\setjglues
\fi

% \sec@setskips{<A of hiragana>} is moved to ipsjcommon		% 2.12(1c)
\fi % \ifDS@englisth

\if@LaTeX@e\else \ifipsj@nonjp\else			% 2.00(11),2.12(1b)
\let\latex@bf\bf						% 1.06(6)
\def\bf{\latex@bf \dg}						% 1.06(6)
\fi\fi								% 2.00(11)


%%%%%% Page Layout Parameters %%%%%%

\newdimen\@mojihaba
\ifipsj@nonjp \let\jspaceskip\@mojihaba	\fi			% 2.12(1b)

\ifDS@printer							% 2.12(2b) >>
\ifDS@landscape							% 3.00(4)>>
\voffset=0mm
\hoffset=0mm
\else								% 3.00(4)<<
\voffset=-20mm
\hoffset=-14mm
\fi\fi								% 2.12(2b) <<
								% 3.00(4)
\headheight 12\@Q

% We want to allow a line containing $\displaystyle X^X$ to be a first line.
\setbox0\hbox{$\displaystyle X^X$}
\topskip\ht0

\ifdim\maxdepth<\dp\strutbox \maxdepth\dp\strutbox \@maxdepth\maxdepth\fi

% \headsep = 28Q - \topskip
\headsep28\@Q \advance\headsep-\topskip				% 2.02(2)
								% 3.00(5)
\columnseprule0pt						% 3.00(5)

\ifDS@landscape							% 3.00(6)>>
\ifDS@english
\textheight32\baselineskip \advance\textheight\topskip \advance\textheight100sp
\else
\textheight30\baselineskip \advance\textheight\topskip \advance\textheight100sp
\fi
\@mojihaba12\@Q
\topmargin 80\@Q \advance\topmargin-1in

\textwidth296mm \advance\textwidth-160\@Q
\oddsidemargin296mm \advance\oddsidemargin-\textwidth \divide\oddsidemargin\tw@
\advance\oddsidemargin-1in \evensidemargin\oddsidemargin
\columnsep40\@Q
\footskip50\@Q

\else % \DS@landscape						% 3.00(6)<<
\@tempswafalse							% 1.05(2)>>
\ifDS@english \ifDS@techrep \else \@tempswatrue \fi\fi
\if@tempswa							% 1.05(2)<<
\topmargin 138\@Q \advance\topmargin-1in

% \textheight = 53\baselineskip + \topskip + epsilon(100sp)
\textheight53\baselineskip \advance\textheight\topskip \advance\textheight100sp

% Only first page has page number (footer) at the bottom
\footskip 27\@Q

\@mojihaba13\@Q

\else % \if@tempswa
\topmargin 131\@Q \advance\topmargin-1in

% \textheight = 45\baselineskip + \topskip + epsilon(100sp)
\textheight45\baselineskip \advance\textheight\topskip \advance\textheight100sp

\ifDS@techrep							% 1.05(2)>>
\textheight50\baselineskip \advance\textheight\topskip \advance\textheight100sp
\fi % \ifDS@techrep						% 1.05(2)<<

% Only first page has page number (footer) at the bottom
\footskip24\@Q

\@mojihaba12\@Q
\fi % \if@tempswa

\columnsep30\@Q

% \textwidth - \columnwidth = 24 * 12Q * 2 + \columnsep = 606Q
\textwidth606\@Q

\oddsidemargin210mm \advance\oddsidemargin-\textwidth \divide\oddsidemargin\tw@
\advance\oddsidemargin-1in \evensidemargin\oddsidemargin
\fi % \ifDS@landscape						% 3.00(6)

\skip\footins\baselineskip \advance\skip\footins-.5\@mojihaba
% \footnotesep = \baselineskip - depth(\strutbox)
{\fs@footnote
	\footnotesep\baselineskip
	\global\advance\footnotesep-\dp\strutbox}

\def\footnoterule{{\fs@footnote\kern-\dp\strutbox \hrule \kern-.4\p@
	\kern\dp\strutbox}}

\floatsep \baselineskip \textfloatsep \baselineskip 
\intextsep \baselineskip \@maxsep \baselineskip
\dblfloatsep \baselineskip \dbltextfloatsep \baselineskip
\@dblmaxsep \baselineskip
\@fptop 0pt plus 1fil \@fpsep 0pt plus 2fil \@fpbot 0pt plus 1fil 
\@dblfptop 0pt plus 1fil \@dblfpsep 0pt plus 2fil \@dblfpbot 0pt plus 1fil

\parskip\z@ \parindent\@mojihaba
\@lowpenalty 51 \@medpenalty 151 \@highpenalty 301 
\@beginparpenalty -\@lowpenalty \@endparpenalty -\@lowpenalty
\@itempenalty -\@lowpenalty 


%%%%%% Title and Authors %%%%%%
%
% Format of title, author names and abstract.
%
%	\huge\bf <Japanese title>
%	\vskip 32Q
%	\Large <Japanese author names>
%	\vskip 32Q
%	\small <Japanese abstract>
%	\vskip 34Q
%	\LARGE\bf <English title>
%	\vskip 28Q
%	\Large\sc <English author names>
%	\vskip 28Q
%	\small <English abstract>
%	\vskip 25Q

% 2.07(3)>>
\def\ipsj@ohcheck#1#2#3{\fs@header\hskip12\@Q#1\qquad#2\qquad#3\hskip12\@Q}
\def\ipsj@ohcvolno{Vol.~00\hskip12\@Q No.~SIG\ 00(\ipsj@sig@code\ 00)}

\newif\ifipsj@trans \ipsj@transfalse				% 2.12(4f)
\def\maketitle{\let\ipsj@oddhead@t\ipsj@oddhead@a
	\ifDS@landscape						% 3.00(8h)>>
	    \settowidth\@tempdima{\fs@header
		\hskip12\@Q 0000\hskip12\@Q\@titlestring\hskip12\@Q}
	    \ifdim\@tempdima>\textwidth
		\ipsj@warning{%					% 2.00(3)
		\string\title\space for headding is too wide}%
	    \fi
	\else\ifipsj@trans					% 3.00(8h)<<
	    \settowidth\@tempdima{%
		\ipsj@ohcheck\ipsj@ohcvolno\@titlestring\ipsj@ohcvolno}%
	    \ifdim\@tempdima>\textwidth
		\let\ipsj@oddhead@t\ipsj@oddhead@b
		\settowidth\@tempdima{%
		    \ipsj@ohcheck\ipsj@ohcvolno\@titlestring{000}}%
		\ifdim\@tempdima>\textwidth
			\ipsj@warning{%				% 2.00(3)
			\string\title\space for headding is too wide}%
	    \fi \fi
	\else
	    \settowidth\@tempdima{\fs@header
		\hskip12\@Q Vol.~00\hskip12\@Q No.~00\qquad\@titlestring\qquad
		Vol.~00\hskip12\@Q No.~00\hskip12\@Q}
	    \ifdim\@tempdima>\textwidth
		\ipsj@warning{%					% 2.00(3)
		\string\title\space for headding is too wide}%
	\fi \fi \fi						% 3.00(8h)
	\par
	\ifDS@landscape \@maketitle \else \twocolumn[\@maketitle]\fi
								% 3.00(7b)
	\thispagestyle{myheadings}\@thanks}
% 2.07(3)<<

% default title header

\def\title{\@dblarg{\@xtitle}}
\def\@xtitle[#1]#2{\gdef\@title{#2}%
	{\def\protect{\noexpand\protect\noexpand}%
		\ifDS@english\def\\{\unskip\ \ignorespaces}%
		\else\def\\{\unskip\ignorespaces}\fi
		\xdef\@titlestring{#1}}}			% 2.07(3)

\def\@title{\mkt@warning\title}\def\@titlestring{}
\long\def\author#1{\long\gdef\@author{#1}}
\def\@author{\mkt@warning\author}

%% We need English title, author name(s). (H.N.)
\def\etitle#1{\gdef\@etitle{#1}}
\def\@etitle{\mkt@warning\etitle}
\long\def\eauthor#1{\long\gdef\@eauthor{#1}}
\def\@eauthor{\mkt@warning\eauthor}

\newbox\@abstractbox						% 3.00(7a)>>
\newbox\@eabstractbox
%% Introduce \@titlewidth because we now use this dimen repeatedly. (H.N.)
%% \@titlewidth = landscape ? .4 * \textwidth : 44 * 11Q = 484Q
\newdimen\@titlewidth
\@titlewidth\ifDS@landscape.4\textwidth\else 484\@Q\fi

\def\ipsj@abstract#1#2#3{\global\let#1\relax
	\global\setbox#2\hbox\bgroup
		\unitlength\ifDS@landscape\columnwidth\else\textwidth\fi
		\advance\unitlength-\@titlewidth
		\divide\unitlength\tw@ \advance\@titlewidth\unitlength
		\begin{minipage}[b]{\@titlewidth}#3\parindent11\@Q
			\leftskip\unitlength}
\def\ipsj@endabstract#1{\end{minipage}\egroup
	\setbox0\vbox{\unhbox#1\global\setbox#1\lastbox}}

\def\abstract{\ipsj@abstract\@abstract\@abstractbox\fs@abst}
\def\eabstract{\ipsj@abstract\@eabstract\@eabstractbox\fs@eabst}
\def\endabstract{\ipsj@endabstract\@abstractbox}
\def\endeabstract{\ipsj@endabstract\@eabstractbox}

\def\@abstract{\mkt@warning{abstract env}}
\def\@eabstract{\mkt@warning{eabstract env}}

\ifDS@english
\let\author\eauthor \let\abstract\eabstract \let\endabstract\endeabstract
\let\@eauthor\@author \let\@eabstract\@abstract
\fi								% 3.00(7a)<<

\def\mkt@warning#1{\ipsj@warning{Missing \string#1}}		% 2.00(3)

\newdimen\mkt@prevdepth
\newbox\mkt@titlebox
\def\@maketitle{\begin{adjustvboxheight*}			% 3.00(7c)
	\ifDS@english \ifDS@preface
		\hbox{}\vskip60\@Q \vskip-\headsep \vskip-\baselineskip
	\else
		\hbox{}\vskip26\@Q \vskip-\headsep \vskip-\baselineskip
		\leftline{\fs@type\it
		  	\ifDS@TBIO \ipsj@TBIO@pcatref		% 2.11(2)
			\else\ifDS@technote Technical Note
                        \else\ifDS@invited Invited Paper        % 2.06(1)
			\else\ifDS@sigrecommended		% 2.04(1)
				Recommended Paper		% 2.04(1)
			\else\ifDS@abstract			% 2.07(7)
				Abstract			% 2.07(7)
			\else\ifDS@techrep\else			% 2.02(1)
				Regular Paper\fi\fi\fi\fi\fi\fi}% 2.06(1)
%								% 2.04(1)
		\vskip32\@Q \vskip-\baselineskip \fi
	\else							% 2.04(1) >>
	\@tempswafalse	\ifDS@technote\@tempswatrue\fi
			\ifDS@sigrecommended\@tempswatrue\fi
                        \ifDS@invited\@tempswatrue\fi           % 2.06(1)
			\ifDS@abstract\@tempswatrue\fi		% 2.07(7)
	\if@tempswa
		\vskip18\@Q \vskip-\headsep
		\leftline{\vbox to28\@Q{\hrule height.8pt\vss
			\hbox{\hskip7\@Q \fs@type
				\ifDS@technote \ipsj@j@technote	% 2.12(1c)>>
                                \else\ifDS@invited
					\ipsj@j@invited		% 2.06(1)
				\else\ifDS@sigrecommended
					\ipsj@j@sigrec		% 2.06(1)
				\else \ipsj@j@talkabst		% 2.07(7)
				\fi\fi\fi			% 2.12(1c)<<
				\hskip7\@Q}\vss\hrule height.8pt}}
%								% 2.04(1) <<
		\vskip40\@Q \vskip-\baselineskip
	\else
		\hbox{}\vskip60\@Q \vskip-\headsep \vskip-\baselineskip
	\fi\fi
	\@tempswafalse \ifDS@english\else\ifDS@preface\@tempswatrue\fi\fi
	\mkt@maketitle{\fs@title\bf}\@title\title \nobreak	% 3.00(7e)
	\affi@labels
	\ifDS@english\else
	\vskip-\mkt@prevdepth \nointerlineskip\vskip32\@Q
	\centerline{\vbox{\centering\hsize\@titlewidth\fs@author
		\mkt@makeauthor}}\nobreak			% 3.00(7e)
	\ifDS@preface\else
	\vskip-\prevdepth \nointerlineskip\vskip32\@Q
	\@tempdima\dp\@abstractbox				% 3.00(7d)>>
	\@abstract \unvbox\@abstractbox
	\vskip-\@tempdima \nointerlineskip\vskip34\@Q
	\mkt@maketitle{\fs@etitle\bf}\@etitle\etitle \nobreak	% 3.00(7e)<<
	\fi\fi
	\if@tempswa\else
	\vskip-\mkt@prevdepth \nointerlineskip\vskip28\@Q
	\centerline{\vbox{\centering\hsize\@titlewidth\fs@eauthor\sc
		\mkt@makeeauthor}}\nobreak			% 3.00(7e)
	\fi
	\vskip-\prevdepth					% 3.00(7d)>>
	\ifDS@preface\else
	\nointerlineskip\vskip28\@Q
	\@tempdima\dp\@eabstractbox
	\@eabstract\unvbox\@eabstractbox
	\vskip-\@tempdima
	\fi
	\nointerlineskip\vskip25\@Q
	\end{adjustvboxheight*}}				% 3.00(7c)<<

%% \mkt@maketitle puts Japanese/English title, whose lines should be
%% properly broken with \\ by the user.  The result is flushed to left, then
%% centered with respect to the longest line. (H.N.)
\def\mkt@maketitle#1#2#3{\setbox\@tempboxa\vtop{
	\def\\{\unskip\egroup\hbox\bgroup\ignorespaces}
		#1\hbox\bgroup#2\unskip\egroup
		\global\mkt@prevdepth\prevdepth}
	\@tempdima\ifDS@landscape\columnwidth\else\textwidth\fi
	\advance\@tempdima-4\@mojihaba
	\ifdim\wd\@tempboxa>\@tempdima
		\ipsj@warning{%					% 2.00(3)
			\string#3 is too wide. Break line(s) by \string\\}\fi
	\centerline{\box\@tempboxa}}

% Assignment of Japanese author names to lines:
% 1 -> 1, 2 -> 2, 3 -> 3, 4 -> 2+2, 5 -> 3+2, 6 -> 3+3, 7 -> 3+2+2, 8 -> 3+3+2,
% ...
% Rule for N authors (N > 2, q := N div 3)
%	N mod 3 = 0 -> 3 * q
%	N mod 3 = 1 -> 3 * (q - 2) + 2 + 2
%	N mod 3 = 2 -> 3 * (q - 1) + 2

\newcount\mkt@cnta\newcount\mkt@cntb
\newcount\mkt@sname\newcount\mkt@gname
\newbox\mkt@boxa
\newdimen\mkt@namewidth
\def\mkt@makeauthor{\let\member\@gobble \let\nomember\relax
	\let\stmember\@gobble	% Those are not necessary in final manuscript.
	\def\@makefnmark{\smash{\rlap{$^{\affi@thefnmark}$}}}%	% 2.12(7)
	\gdef\affi@thefnmark{}\leavevmode\let\+\ignorespaces
	\settowidth\@tempdima{\ifipsj@nonjp x\else\ipsj@j@a \fi}% 2.12(1c)
	\mkt@namewidth7\@tempdima\@tempcnta\z@
	\expandafter\mkt@countauthor\@author\and\@nil\and
	\ifnum\@tempcnta=\@ne\let\mkt@anhbox\mkt@anhboxc\mkt@makesingleauthor
	\else
		\@tempcntb\@tempcnta \divide\@tempcntb\thr@@
		\multiply\@tempcntb\thr@@ \advance\@tempcntb-\@tempcnta
		\ifnum\@tempcntb=\m@ne\relax\@tempcntb\tw@\else\@tempcntb\z@\fi
		\mkt@cnta\thr@@
		\let\mkt@anhbox\mkt@anhboxl
		\expandafter\mkt@makemultiauthor\@author\and\and\fi}
\def\mkt@countauthor#1\and{\def\@tempa{#1}\ifx\@tempa\@nnil\let\next\relax
	\else\advance\@tempcnta\@ne \let\next\mkt@countauthor\fi\next}

% If single author, author name has 9 KC width instead of 7.
\def\mkt@makesingleauthor{\divide\mkt@namewidth7\multiply\mkt@namewidth9\relax
	\expandafter\mkt@putauthor\@author\+ \@nil}

\def\mkt@makemultiauthor#1\and{\ifnum\@tempcnta=\z@\unskip\let\next\relax\else
	\leavevmode
	\advance\mkt@cnta\m@ne \advance\@tempcnta\m@ne
	\ifnum\mkt@cnta=\z@\mkt@maleft{#1}\mkt@cnta\thr@@\else
	\ifnum\@tempcnta=\@tempcntb\mkt@maleft{#1}\mkt@cnta\tw@\else
	\mkt@putauthor#1\+ \@nil\let\mkt@anhbox\mkt@anhboxc\fi\fi
	\let\next\mkt@makemultiauthor\fi\next}
\def\mkt@maleft#1{\let\mkt@anhbox\mkt@anhboxr\mkt@putauthor#1\+ \@nil
	\par\let\mkt@anhbox\mkt@anhboxl}

% Japanese author name format:
%	Non Japanese : As is.
%	Japanese w/o s/g delimitor : As is with warning.
%	Japanese (s+g>6) : As is.
%	Japanese (s+g<7) : Give 1-KC space to s/g delimitor, then insert
%		infinit stretch between each character pair, assuming the
%		s/g delimitor as a charcter, to make the name have 7-KC
%		width.   An exception is 2s + 2g case, in which s/g
%		delimitor has 0 width in order to have the result
%		"S_S_G_G".

\newdimen\InterAuthorSkip \InterAuthorSkip\columnsep		% 2.13(1)
\def\mkt@putauthor#1 #2\@nil{%
	\ifipsj@nonjp \mkt@anhbox{#1 #2}\else
	\setbox\@tempboxa\hbox{\let\affiref\@gobble \let\mkt@warning\@gobble
		\jintercharskip\z@#1#2}%
	\setbox\mkt@boxa\hbox{\let\affiref\@gobble \let\mkt@warning\@gobble
		\jintercharskip1cm#1#2}%
	\ifdim\wd\@tempboxa=\wd\mkt@boxa \mkt@anhbox{#1 #2}\else
						% probably no Kanjis
	\def\@tempa{#2}\ifx\@tempa\empty	% without space btwn s/g-name
		{\let\affiref\@gobble \def\+{}%
			\ipsj@warning{Author name #1 doesn't have a space}}%
								% 2.00(3)
		\mkt@anhbox{#1}\else
	\mkt@getnamewidth\mkt@sname{#1}\mkt@getnamewidth\mkt@gname{#2}%
	\mkt@cntb\mkt@sname \advance\mkt@cntb\mkt@gname
	\ifnum\mkt@cntb>6\relax\mkt@anhbox{#1\ #2}\else
	\jintercharskip\fill%
	\@tempskipa\@tempdima plus2fill\relax
	\ifnum\mkt@sname=\tw@ \ifnum\mkt@gname=\tw@ \@tempskipa\fill\fi\fi
	\hbox to\mkt@namewidth{#1\hskip-\lastskip
		\hskip\@tempskipa#2\hskip-\lastskip\@makefnmark}\fi\fi\fi
	\fi
	\gdef\affi@thefnmark{}\hskip\InterAuthorSkip}		% 2.13(1)

% When an author name is formatted "as is", the following macros are used
% according to their position (left, right, or center).
\def\mkt@anhboxl#1{\hbox to\mkt@namewidth{\hss#1\@makefnmark}}
\def\mkt@anhboxr#1{\hbox to\mkt@namewidth{#1\@makefnmark\hss}}
\def\mkt@anhboxc#1{\setbox\@tempboxa\hbox{#1\@makefnmark}%
	\ifdim\wd\@tempboxa>\mkt@namewidth\box\@tempboxa
	\else\hbox to\mkt@namewidth{\hss\box\@tempboxa\hss}\fi}	% 2.08(1)

\def\mkt@getnamewidth#1#2{\setbox\@tempboxa\hbox{\let\affiref\@gobble#2}%
	\@tempdimb\wd\@tempboxa
	\advance\@tempdimb.5\@tempdima #1\@tempdimb \mkt@cntb\@tempdima
	\divide#1\mkt@cntb}

% English author name format
%	1 -> <name-1>^*
%	2 -> <name-1>^* and~<name-2>^*
%	3 or more -> <name-1>,^* <name-2>,^* ... <name-n-1>^* and~<name-n>^*
% (be careful the position of comma).
%
% No special tricks for assignment names to line.  Names are simply put in a
% \centering paragraph.

\def\mkt@makeeauthor{\let\member\@gobble \let\nomember\relax
	\let\stmember\@gobble	% Those are not necessary in final manuscript.
	\leavevmode\let\mkt@and\relax\gdef\affi@thefnmark{}%
	\def\@thefnmark{\affi@thefnmark}%
	\expandafter\mkt@imakeeauthor\@eauthor\and\@nil\and}
\def\mkt@imakeeauthor#1\and#2\and{\def\@tempa{#2}\ifx\@tempa\@nnil
		#1\@makefnmark\let\next\relax
	\else
		\def\@tempb{#1}\def\next{\mkt@iimakeeauthor#2\and}%
	\fi\next}
\def\mkt@iimakeeauthor#1\and{\def\@tempa{#1}\ifx\@tempa\@nnil
		\@makefnmark\ {\rm{and}~}\gdef\affi@thefnmark{}\hbox{\@tempb}%
		\@makefnmark\let\next\relax
	\else
		\mkt@and\hbox{\@tempb}\let\mkt@and\mkt@andmid
		\let\next\mkt@iimakeeauthor
	\fi\def\@tempb{#1}\next}
\def\mkt@andmid{,\@makefnmark\ \gdef\affi@thefnmark{}}

% Macros to specify author's affiliation easily.
% 2.12(7)>>
\newcounter{affi@footnote} \c@affi@footnote\z@
\newcounter{affi@pfootnote} \c@affi@pfootnote\z@
\def\affilabel{\affi@deflabels\affi@affilabel}
\def\paffilabel{\affi@deflabels\affi@paffilabel}
\def\affi@deflabels#1#2#3{{\def\protect{\noexpand\protect\noexpand}%
	\let\affi@affilabel\relax \let\affi@paffilabel\relax \let\\\relax
	\xdef\affi@labels{\affi@labels#1{#2}{#3}}}}
\def\affi@labels{}
\def\affi@affilabel{\begingroup \affi@label{affi@footnote}\@makefnmarkdagger}
\def\affi@paffilabel#1#2{\begingroup
	\def\protect{\noexpand\protect\noexpand}%
	\def\\{\noexpand\\Presently with \ignorespaces}%
	\edef\@tempa{\ifDS@english Presently with \else		% 1.04(1d)
		\ipsj@j@presently\fi#2}%			% 2.12(1c)
	\affi@label{affi@pfootnote}\@makefnmarkast{#1}\@tempa}
\def\affi@label#1#2#3#4{\stepcounter{#1}%
	\@ifundefined{affi@r@#3}%
		{\expandafter\xdef\csname affi@r@#3\endcsname{%
			\csname the#1\endcsname}}%
		{\ipsj@warning{Affiliation label `#3' multiply defined}}%
								% 2.00(3)
	\let\affi@footnotetext\relax\let\\\relax
	\def\protect{\noexpand\protect\noexpand}%
	\xdef\@thanks{\@thanks
		\affi@footnotetext
			{\csname the#1\endcsname}{\protect#2}{#4}}\endgroup}

\def\affiref#1{\@ifundefined{affi@r@#1}%
		{\ipsj@warning{Affiliation reference `#1' undefined}% 2.00(3)
			\def\@tempa{?}}%
		{\def\@tempa{\csname affi@r@#1\endcsname}}%
	{\def\protect{\noexpand\protect\noexpand}%
	\ifx\affi@thefnmark\empty \xdef\affi@thefnmark{\@tempa}\else
	\xdef\affi@thefnmark{\affi@thefnmark,\hskip\z@\@tempa}\fi}}
\def\affi@footnotetext#1#2#3{{\def\@thefnmark{#1}%
	\def\@makefnmarkforfn{#2}\@footnotetext{#3}}}

\def\theaffi@footnote{{\dagger}\number\c@affi@footnote}
\def\theaffi@pfootnote{{\ast}\number\c@affi@pfootnote}

\def\thanks#1{\begingroup
	\stepcounter{affi@pfootnote}\let\thempfn\theaffi@pfootnote
	\let\@thefnmark\thempfn \@makefnmark
	\let\affi@footnotetext\relax\let\\\relax
	\def\protect{\noexpand\protect\noexpand}%
	\xdef\@thanks{\@thanks
		\affi@footnotetext{\thempfn}{\protect\@makefnmarkast}{#1}}%
	\endgroup}
% 2.12(7)<<

% \contact is necessary only for drafts.
\long\def\contact#1{}


%%%%%% Page Header and Footer %%%%%% 

\mark{{}{}} 

\newcounter{volpageoffset} % You must set this to appropriate value
\setcounter{volpageoffset}{1} % for each issue!
\ifDS@printer							% 2.12(4d)>>
\def\LastPageNumber{\gdef\ipsj@last@page}
\fi								% 2.12(4d)<<

% 2.00(16)>>
\let\latex@document\document
\def\document{\latex@document
	\ifDS@landscape\ifDS@techrep\ifnum\c@year<\z@		% 3.01(5c)<<
		\ipsj@warning{Publication year should be given by \string
			\setcounter{year}{<yyyy>}}%
		\c@year\year \fi\fi\fi				% 3.01(5c)>>
	\ifDS@private\else
	\ifDS@online \global\c@page\ipsj@olh@page		% 2.12(4)
	\else \global\c@page\c@volpageoffset \fi \fi}		% 2.07(8)
\let\c@volpage\c@page		% for backward compatibility
\def\thevolpage{\thepage}	% for backward compatibility
% 2.00(16)<<

								% 2.12(1c)>>
\newcounter{volume} \c@volume\z@				% 3.00(8a)>>
\newcounter{number} \c@number\z@
\newcounter{month} \c@month\m@ne
\newcounter{year} \c@year\m@ne					% 3.00(8a)<<
								% 2.12(1c)<<

\ifDS@printer							% 2.12(4b)>>
\def\SetOnlineHeaderInfo#1#2#3#4{%	% <vol><year><month><page>[<lastpage>]
	\def\ipsj@olh@vol{#1}%
	\def\ipsj@olh@year{#2}%
	\def\ipsj@olh@month{#3}%
	\def\ipsj@olh@page{#4}%
	\@ifnextchar[%]
		\ipsj@olh@setlastpage\relax}
\def\ipsj@olh@setlastpage[#1]{\def\ipsj@olh@lastpage{#1}}
\fi								% 2.12(4b)<<

% 2.07(4)>>
\ifDS@online							% 2.12(4b)
\def\@thevolno{Vol.~\ipsj@olh@vol}				% 2.12(4b)
\else\ifDS@landscape						% 3.00(8b)>>
\def\@thevolno{Vol.~\arabic{volume}%
	\ifnum\c@number>\z@ \hskip\@mojihaba No.~\arabic{number}\fi}
\else								% 3.00(8b)<<
\def\@thevolno{Vol.~\arabic{volume}\hskip\@mojihaba No.~%	% 2.12(1c)>>
	\ifipsj@trans SIG\ \ipsj@sig@numa(\ipsj@sig@code\ \ipsj@sig@numb)%
	\else \arabic{number}\fi}				% 2.12(1c)<<
\fi \fi								% 3.00(8b)
% 2.07(4)<<
% 2.00(15)>>
% 2.12(1c)(4b)>>
% 3.00(8c)>>
\def\ipsj@year{%
	\ifDS@online \ipsj@olh@year
	\else \ifnum\c@year<\z@
		\c@year1959 \advance\c@year\c@volume \fi
	\number\c@year
	\fi}
\def\ipsj@month{{%
	\@tempcnta\ifDS@online\ipsj@olh@month \else
		\ifnum\c@month<\z@ \c@number \else \c@month \fi \fi \relax
	\ifcase\@tempcnta???\or Jan.\or Feb.\or Mar.\or Apr.\or May\or
		June\or July\or Aug.\or Sep.\or Oct.\or Nov.\or Dec.\else
		???\fi}}
\def\@monthyear{\ipsj@month \hskip.5\@mojihaba \ipsj@year}
% 2.12(1c)(4b)<<
% 2.00(15)<<
% 3.00(8c)<<

% 2.07(2)>>
\newif\ifipsj@etrans \ipsj@etransfalse				% 3.00(10)
\ifDS@landscape							% 3.00(8d)>>
\def\ipsj@setcounter#1#2{\afterassignment\ipsj@isetcounter #1=0#2\relax}
\def\ipsj@isetcounter#1\relax{}
\def\transaction#1#2#3{\ipsj@transtrue
	\def\ipsj@sig@code{#1}
	\ipsj@setcounter\c@volume{#2}\ipsj@setcounter\c@number{#3}%
	\expandafter\let\expandafter\ipsj@sig@title
		\csname ipsj@sig@#1@\ifDS@english e\else j\fi\endcsname
	\ifx\ipsj@sig@title\relax
		\ipsj@warning{Transaction code #1 is unknown}%
	\else \@ifundefined{ipsj@sig@#1@j}{\ipsj@etranstrue}{}%	% 3.00(10)
	\fi
	\ifnum\c@year<\z@
		\expandafter\c@year\expandafter0\csname
			ipsj@sig@#1@baseyear\endcsname\relax
		\ifnum\c@year=\z@ \c@year2008\fi
		\advance\c@year\c@volume \advance\c@year\m@ne
	\fi}
\else								% 3.00(8d)<<
\def\transaction#1#2#3{\ipsj@transtrue
	\def\ipsj@sig@code{#1}\def\ipsj@sig@numa{#2}\def\ipsj@sig@numb{#3}%
	\expandafter\let\expandafter\ipsj@sig@title
		\csname ipsj@sig@#1@\ifDS@english e\else j\fi\endcsname
	\ifx\ipsj@sig@title\relax
		\ipsj@warning{Transaction code #1 is unknown}\fi
	\let\ipsj@oddhead@s\ipsj@oddhead@a
	\ifDS@online\else					% 2.12(4c)
	\settowidth\@tempdima{%
	    \ipsj@ohcheck\ipsj@ohcvolno\hdr@tipsj\ipsj@ohcvolno}%
	\ifdim\@tempdima>\textwidth
	    \let\ipsj@oddhead@s\ipsj@oddhead@b
	    \settowidth\@tempdima{\c@month3\relax	% "Mar." is longest
		\ipsj@ohcheck\ipsj@ohcvolno\hdr@tipsj\@monthyear}%
	    \ifdim\@tempdima>\textwidth
		\let\ipsj@oddhead@s\ipsj@oddhead@c
	\fi \fi \fi}
\fi								% 3.00(8d)
\def\ipsj@sig@PRO@e{Programming}
\def\ipsj@sig@TOM@e{Mathematical Modeling and Its Applications}
\def\ipsj@sig@TOD@e{Databases}
\def\ipsj@sig@HPS@e{High Performance Computing Systems}
\def\ipsj@sig@CVIM@e{Computer Vision and Image Media}
\def\ipsj@sig@ACS@e{Advanced Computing Systems}			% 2.09(2)
\def\ipsj@sig@TBIO@e{Bioinformatics}				% 2.11(3)
\def\ipsj@sig@SLDM@e{System LSI Design Methodology}		% 2.12(8)
\def\ipsj@sig@CVA@e{Computer Vision and Applications}		% 3.00(9)
% if Vol.1 of CVA is published in 2009 (rather than 2008) do the following.
%\def\ipsj@sig@CVA@baseyear{2009}
% 2.07(2)<<

\def\copyrightnotice{\long\def\ipsj@cnotice}
\def\ipsj@rightfoot{\copyright\space\ipsj@year\space		% 3.01(5b)>>
	Information Processing Society of Japan\hskip12\@Q}	% 3.01(2)
								% 3.01(5b)<<

% 1.05(2)>>
\let\ipsj@ordspace\ %						% 3.00(8i)
\ifDS@techrep
\ifDS@landscape							% 3.01(5a)>>
\def\TechrepVolNoDate#1#2#3{\def\ipsj@techrep@volno{#1\ No.\ #2}%
	\def\ipsj@techrep@date{#3}}
\def\ps@headings{\let\@mkboth\markboth
	\def\@oddhead{\fs@header \@checklines \let\ \ipsj@ordspace
		\hskip12\@Q
		\smash{\vbox{\normalbaselines
		  	\ifDS@english\else \hbox{\ipsj@j@techrep} \fi
			\hbox{IPSJ SIG Technical Report}}}%
		\hss
		\smash{\vbox{\normalbaselines
			\llap{\@nameuse{ipsj@techrep@volno}}
			\llap{\@nameuse{ipsj@techrep@date}}}}%
		\hskip12\@Q}%
	\let\@evenhead\@oddhead
	\def\@oddfoot{\fs@header \hss \thepage \hss \llap{\ipsj@rightfoot}}%
	\let\@evenfoot\@oddfoot}
\let\ps@myheadings\ps@headings
\else								% 3.01(5a)<<
\def\ps@headings{\let\@mkboth\markboth
	\def\@oddhead{\@checklines\hss}\let\@evenhead\@oddhead
	\def\@oddfoot{}\def\@evenfoot{}}
\let\ps@myheadings\ps@headings
\fi % \ifDS@landscape						% 3.01(5a)

\else\ifDS@private						% 2.07(8)>>
\def\ps@headings{\let\@mkboth\markboth
	\def\@oddhead{\@checklines\hfil\thepage\hskip12\@Q}%
	\def\@evenhead{\@checklines\hskip12\@Q\thepage\hfil}
	\def\@oddfoot{}\def\@evenfoot{}}
\def\ps@myheadings{\ps@headings
	\def\@oddhead{\@checklines
		\smash{\parbox[b]{.75\textwidth}{\@nameuse{ipsj@cnotice}}}%
		\hfil\thepage\hskip12\@Q}%
	\let\@evenhead\@oddhead}
								% 2.07(8)<<
\else\ifDS@landscape						% 3.00(8)>>
\def\ipsj@leftfoot{\let\ \ipsj@ordspace
	\hskip12\@Q
	\hdr@tipsj \hskip12\@Q
	\@thevolno \hskip12\@Q
	\@tempcnta\ifDS@online\ipsj@olh@page\else\c@volpageoffset\fi\relax
	\ipsj@thelastpage\@tempcnta\ipsj@last@page		% 3.00(11)
	\ (\@monthyear)}
\def\ps@headings{\let\@mkboth\markboth
	\def\@oddfoot{\fs@header \ipsj@leftfoot \hss \ipsj@rightfoot}
	\def\@oddhead{\fs@header \@checklines
		\hskip12\@Q\phantom{0000}\llap{\thepage}%
		\hskip12\@Q\@titlestring\hss}
	\let\@evenfoot\@oddfoot
	\let\@evenhead\@oddhead
	\def\sectionmark##1{}\def\subsectionmark##1{}}
\def\ps@myheadings{\let\@mkboth\@gobbletwo
	\def\@oddhead{\fs@header \@checklines \ipsj@leftfoot \hss}
	\def\@oddfoot{\fs@header \hskip12\@Q \phantom{0000}\llap{\thepage}\hss
		\ipsj@rightfoot}
	\let\@evenhead\@oddhead
	\let\@evenfoot\@oddfoot
	\def\sectionmark##1{}\def\subsectionmark##1{}}
\else								% 3.00(8)<<
% 1.05(2)<<
\def\ps@headings{\let\@mkboth\markboth
	\def\@oddfoot{}
	\def\@evenfoot{}
	\def\@evenhead{\fs@header \@checklines
		\let\ipsj@ordspace\ %				% 3.00(8i)
		\hskip12\@Q\rlap{\thepage}\hss			% 2.07(3)
		\hdr@tipsj\hss\llap{\@monthyear}\hskip12\@Q}
	\def\@oddhead{\fs@header \@checklines
		\let\ipsj@ordspace\ %				% 3.00(8i)
		\ipsj@oddhead@t\@titlestring\thepage}		% 2.07(3)
	\def\sectionmark##1{}\def\subsectionmark##1{}}

\def\ps@myheadings{\let\@mkboth\@gobbletwo
	\def\@oddhead{\fs@header \@checklines
		\let\ipsj@ordspace\ %				% 3.00(8i)
		\ipsj@oddhead@s\hdr@tipsj\@monthyear}		% 2.07(3)
	\def\@oddfoot{\fs@footer\hfil\thepage\hfil}
	\let\@evenhead\@oddhead
	\let\@evenfoot\@oddfoot
	\def\sectionmark##1{}\def\subsectionmark##1{}}
\fi\fi\fi							% 1.05(2)
								% 2.07(8)
								% 3.00(8)

% 2.12(9)>>
\def\ipsj@lc@Rtop{\rlap{\smash{\rule[-\headsep]{0.05mm}{10mm}%
	\rule[-\headsep]{10mm}{0.05mm}}}}
\def\ipsj@lc@Ltop{\llap{\smash{\rule[-\headsep]{10mm}{0.05mm}%
	\rule[-\headsep]{0.05mm}{10mm}}}}
\def\ipsj@lc@Lbot{\llap{\smash{\raisebox{-\textheight}{%
	\raisebox{-\headsep}{\rule{10mm}{0.05mm}\rule[-10mm]{0.05mm}{10mm}}}}}}
\def\ipsj@lc@Rbot{\rlap{\smash{\raisebox{-\textheight}{%
	\raisebox{-\headsep}{\rule[-10mm]{0.05mm}{10mm}\rule{10mm}{0.05mm}}}}}}

\def\ps@layoutcheck{\ps@headings
	\let\ipsj@lc@evenhead\@evenhead
	\def\@evenhead{\ipsj@lc@Lbot \ipsj@lc@Ltop
		\ipsj@lc@evenhead
		\ipsj@lc@Rtop \ipsj@lc@Rbot}%
	\let\ipsj@lc@oddhead\@oddhead
	\def\@oddhead{\ipsj@lc@Lbot \ipsj@lc@Ltop
		\ipsj@lc@oddhead
		\ipsj@lc@Rtop \ipsj@lc@Rbot}%
	\let\ipsj@lc@myheadings\ps@myheadings
	\def\ps@myheadings{\ipsj@lc@myheadings
		\let\ipsj@lc@fpoddhead\@oddhead
		\def\@oddhead{\ipsj@lc@Lbot \ipsj@lc@Ltop
			\ipsj@lc@fpoddhead
			\ipsj@lc@Rtop \ipsj@lc@Rbot}%
		\let\@evenhead\@oddhead}}
% 2.12(9)<<

% 2.07(3)>>
\def\ipsj@oddhead@a#1#2{\hskip12\@Q \rlap{\@thevolno}\hss#1\hss
	\llap{#2}\hskip12\@Q}
\def\ipsj@oddhead@b#1#2{\hskip12\@Q \@thevolno\qquad#1\hss
	\llap{#2}\hskip12\@Q}
\def\ipsj@oddhead@c#1#2{\hskip12\@Q \@thevolno\hss#1\hss#2\hskip12\@Q}
\let\ipsj@oddhead@t\ipsj@oddhead@a
\let\ipsj@oddhead@s\ipsj@oddhead@a
% 2.07(3)<<

\ifDS@landscape							% 3.00(8e)>>
\def\ipsj@online@trans{IPSJ Online Transactions}
\def\ipsj@online@journal{Journal of Information Processing}
\else								% 3.00(8e)<<
\def\ipsj@online@trans{IPSJ Digital Courier}			% 2.12(4c)
\def\ipsj@online@journal{IPSJ Digital Courier}			% 2.12(4c)
\fi								% 3.00(8e)
% 2.02(2),2.07(4)>>
\ifDS@english
\def\hdr@tipsj{\smash{%
	\ifDS@online						% 2.12(4c)>>
		\ifipsj@trans
			\ipsj@online@trans
		\else
			\ipsj@online@journal\fi			% 2.12(4c)<<
	\else
		\ifipsj@trans
			IPSJ Transactions on \ipsj@sig@title
		\else
			IPSJ Journal\fi
	\fi}}
\else
\def\ipsj@trans@delimitor{%					% 3.00(8f)
	\ifDS@landscape\hskip\jspaceskip\else\ipsj@j@colon\fi}	% 3.00(8f)
\def\hdr@tipsj{\smash{\ipsj@j@jipsj				% 2.12(1c)>>
	\ifipsj@trans\ipsj@trans@delimitor\ipsj@sig@title\fi}}	% 3.00(8f)
\fi								% 2.12(1c)<<
% 2.02(2),2.07(4)<<

% \checklines enables to draw a horizontal rule onto each baselines.

\newif\if@checklines \@checklinesfalse
\def\checklines{\@checklinestrue}
\def\@checklines{\if@checklines \rlap{\smash{\vtop{\normalsize
	\hbox{} \vskip\headsep \hrule width\textwidth\vskip-.4pt \vskip\topskip
	\hrule\vskip-.4pt
	\ifDS@landscape						% 3.00(6)>>
	\ifDS@english\@tempcnta32\else\@tempcnta30\fi		
	\else
	\ifDS@techrep\@tempcnta50\else				% 1.05(2)
	\ifDS@english\@tempcnta53\else\@tempcnta45\fi\fi	% 1.05(2)
	\fi							% 3.00(6)<<
	\relax\@@checklines}}}\fi
% 1.05(2)>>
	% register marks are removed				% 2.12(2d)
% 1.05(2)<<
	}
\def\@@checklines{\ifnum\@tempcnta>\z@
	\vskip\normalbaselineskip \hrule\vskip-.4pt \advance\@tempcnta\m@ne
	\let\next\@@checklines\else\let\next\relax\fi\next}

\pagestyle{headings}
\pagenumbering{arabic}

\ifDS@english\else
\def\today{\the\year\ipsj@j@year \the\month\ipsj@j@month \the\day\ipsj@j@day}
								% 2.12(1c)
\fi


%%%%%% Output Routine %%%%%%

% To balance the final page,
% following code is borrowed from nicetwocolumn style

% you can refrain from balancing by falsifying following switch!
%% Initial value of \if@lastpagebalancing is false.  It may be turned true by
%% biography processing macros. (H.N.)

\newif\ifipsj@lastpagebalancing \ipsj@lastpagebalancingtrue	% 3.00(12)>>
\def\LastPageBalancing{\ipsj@lastpagebalancingtrue}
\def\LastPageUnbalancing{\ipsj@lastpagebalancingfalse \verbbiography}
								% 3.00(12)<<
\newif\if@lastpagebalancing \@lastpagebalancingfalse
\newif\if@finalpageoutput \@finalpageoutputfalse
% incorporate balanced output to \enddocument
\let\latex@enddocument\enddocument
\def\enddocument{\@finalpageoutputtrue
	\ifipsj@lastpagebalancing				% 3.00(12)
	\if@lastpagebalancing
		\global\let\@outputdblcol\opt@balanceoutputdblcol\fi
	\ifDS@preface
		\global\let\@outputdblcol\opt@balanceoutputdblcol\fi
	\fi							% 3.00(12)
	\ifDS@abstract						% 2.07(7)>>
		\ifDS@landscape\else \hbox{}\newpage \fi	% 3.01(3a)
		\ifDS@english	\rightline{(Presented \ra@presented)}
		\else		\expandafter\ra@putpresented\ra@presented \fi
		\fi						% 2.07(7)<<
%								% 2.12(4d)>>
	\if@filesw \write\@auxout{\string\gdef\string\ipsj@lastpage
		{\number\c@page}}\fi				% 2.12(4d)<<
	\latex@enddocument}

\newbox\@leftcolumnfootnote \newbox\@rightcolumnfootnote
\newif\if@leftfootnoteexist \@leftfootnoteexistfalse 
\newif\if@rightfootnoteexist \@rightfootnoteexistfalse
\newif\ifopt@floatexist \opt@floatexistfalse

% 2.00(12) \color@{begin/end}group ignored
\def\enlargethispage{\ipsj@warning{\string\enlargepage is ignored}}
								% 2.00(3,12)
\def\@makecol{\vbadness10000 \lineskiplimit\normallineskiplimit	% 1.05(1)
	\setbox\@outputbox\box\@cclv
	\if@firstcolumn
		\ifvoid\footins \global\@leftfootnoteexistfalse
		\else
			\global\@leftfootnoteexisttrue
			\@tempdima\dp\footins
			\global\setbox\@leftcolumnfootnote\vbox{
				\unvbox\footins\vskip-\@tempdima}
		\fi
		\ifx\@botlist\@empty\else\global\opt@floatexisttrue\fi
	\else
		\ifvoid\footins \global\@rightfootnoteexistfalse
		\else
			\global\@rightfootnoteexisttrue
			\@tempdima\dp\footins
			\global\setbox\@rightcolumnfootnote\vbox{
				\unvbox\footins	\vskip-\@tempdima}
		\ifx\@toplist\@empty\else\global\opt@floatexisttrue\fi
		\fi
	\fi
	\xdef\@freelist{\@freelist\@midlist}\gdef\@midlist{}\@combinefloats
	\global\maxdepth\@maxdepth}

% 2.01(1) >>
\let\latex@vtryfc\@vtryfc
\def\@vtryfc{\if@firstcolumn \global\@leftfootnoteexistfalse
	\else \global\@rightfootnoteexistfalse \fi \latex@vtryfc}
% 2.01(1) <<

% 1.01(1,2) >>
\let\latex@addtobot\@addtobot
\def\@addtobot{\latex@addtobot\global\maxdepth\@maxdepth}
\let\latex@combinefloats\@combinefloats
\def\@combinefloats{\ifx\@botlist\@empty\else \dimen@\dp\@outputbox
	\setbox\@outputbox\vbox{\unvbox\@outputbox \vskip-\dimen@}\fi
	\latex@combinefloats}
% 1.01(1,2) <<

\newskip\opt@baselineskip
\def\@outputdblcol{
	\if@firstcolumn \global\@firstcolumnfalse
		\global\setbox\@leftcolumn\box\@outputbox
		\global\opt@baselineskip\baselineskip
	\else \global\@firstcolumntrue \global\opt@floatexistfalse
	\global\bib@adjustheight-\maxdimen
	\setbox\@leftcolumn\vbox to\@colht{\boxmaxdepth\@maxdepth   % 1.01(3)
		\unvbox\@leftcolumn
		\if@leftfootnoteexist\vfil
			\footnoterule\box\@leftcolumnfootnote\fi}
	\setbox\@outputbox\vbox to\@colht{\boxmaxdepth\@maxdepth    % 1.01(3)
		\unvbox\@outputbox
		\if@rightfootnoteexist\vfil
			\footnoterule\box\@rightcolumnfootnote\fi}
	\global\maxdepth\@maxdepth
	\if@finalpageoutput
	\if@leftfootnoteexist\else\if@rightfootnoteexist\else
		\setbox\@leftcolumn\vbox{\unvbox\@leftcolumn}%
		\setbox\@outputbox\vbox{\unvbox\@outputbox}
		\ifdim\ht\@leftcolumn<\ht\@outputbox
			\setbox\@leftcolumn\vbox to\ht\@outputbox{
				\unvbox\@leftcolumn}%
		\else
			\setbox\@outputbox\vbox to\ht\@leftcolumn{
				\unvbox\@outputbox}%
		\fi
	\fi\fi\fi
	\setbox\@outputbox\vbox{\hbox to\textwidth{\hbox to\columnwidth
		{\box\@leftcolumn \hss}\hfil \vrule width\columnseprule\hfil
		\hbox to\columnwidth{\box\@outputbox \hss}}}
	\@combinedblfloats
	\@outputpage \begingroup \@dblfloatplacement \@startdblcolumn
	\@whilesw\if@fcolmade \fi{\@outputpage\@startdblcolumn}%
	\endgroup
	\fi}

\let\opt@outputdblcol\@outputdblcol
\chardef\opt@boxa\z@
\chardef\opt@boxb\@ne
\chardef\opt@boxc\tw@
\def\opt@magicpenalty{1234}
\def\opt@balanceoutputdblcol{\let\next\opt@ibalanceoutputdblcol
	\if@firstcolumn \let\next\opt@outputdblcol
	\else	\ifopt@floatexist \opt@warning \let\next\opt@outputdblcol
		\else\ifx\@deferlist\@empty\else
			\opt@warning \let\next\opt@outputdblcol\fi\fi\fi
	\next}
\def\opt@ibalanceoutputdblcol{%
	\setbox\@leftcolumn\vbox{\unvbox\@leftcolumn
		\ifnum\lastpenalty=\opt@magicpenalty\relax\else
		\@tempcnta10\relax\@whilenum\@tempcnta>0\do{%
			\unskip\unskip\unkern\unpenalty
			\advance\@tempcnta\m@ne}\fi}
	\advance\opt@baselineskip-\dp\@leftcolumn
	\ifdim\dp\@leftcolumn=\z@ \ifdim\opt@baselineskip=\baselineskip
		\@tempdima\ht\@leftcolumn \advance\@tempdima-\topskip
		\divide\@tempdima\baselineskip
		\@tempcnta\@tempdima \@tempdima\@tempcnta\baselineskip
		\advance\@tempdima\topskip
		\advance\@tempdima-\ht\@leftcolumn
		\advance\opt@baselineskip\@tempdima \fi\fi
	\advance\opt@baselineskip-\topskip
	\setbox\@outputbox\vbox{\unvbox\@outputbox}
	\ifdim\ht\@outputbox=\topskip \ifdim\dp\@outputbox=\z@
	\setbox\opt@boxa\vbox{\unvcopy\@outputbox\unskip
		\global\setbox\opt@boxb\lastbox
		\global\dimen@\lastskip}
	\ifvoid\opt@boxb\else\ifdim\ht\opt@boxb=\z@
		\ifdim\dp\opt@boxb=\z@\ifdim\dimen@=\topskip
		\@firstcolumntrue\fi\fi\fi\fi\fi\fi
	\setbox\opt@boxa\copy\@outputbox
	\setbox\@outputbox\vbox{\unvcopy\@leftcolumn
		\if@firstcolumn\else
		\vskip\opt@baselineskip
		\penalty\interlinepenalty\unvbox\@outputbox\fi}
	\@tempdima\ht\@outputbox \advance\@tempdima\topskip
	\divide\@tempdima\tw@ \advance\@tempdima100sp
	\splittopskip\topskip \splitmaxdepth\@maxdepth
	\ifdim\bib@adjustheight<\@M pt
		\opt@split\@outputbox\opt@boxb\@tempdima
		\ifdim\ht\opt@boxb<\bib@adjustheight
			\opt@split\@leftcolumn\opt@boxc\bib@adjustheight
			\opt@split\opt@boxc\opt@boxb\@tempdima
			\if@firstcolumn
				\opt@adjust\opt@boxc{\unvbox\@leftcolumn}
			\else\opt@adjust\opt@boxc{\ifvoid\@leftcolumn\else
				\unvbox\@leftcolumn\vskip\opt@baselineskip\fi
				\unvbox\opt@boxa}\fi\fi
	\else
		\advance\bib@adjustheight-\@M pt
		\opt@split\opt@boxa\opt@boxc\bib@adjustheight
		\setbox\@outputbox\vbox{\unvbox\@leftcolumn
			\vskip\opt@baselineskip\unvbox\opt@boxc}
		\opt@split\@outputbox\opt@boxb\@tempdima
		\opt@adjust\@outputbox{\unvbox\opt@boxa}
	\fi
	\if@leftfootnoteexist
		\setbox\opt@boxb\vbox to\@colht{\box\opt@boxb\vfill
			\footnoterule\box\@leftcolumnfootnote}\fi
	\if@rightfootnoteexist
		\setbox\@outputbox\vbox to\@colht{\box\@outputbox\vfill
			\footnoterule\box\@rightcolumnfootnote}\fi
	\ifdim\ht\@outputbox>\ht\opt@boxb
		\setbox\opt@boxb\vbox to\ht\@outputbox{\unvbox\opt@boxb}
	\else
		\setbox\@outputbox\vbox to\ht\opt@boxb{\unvbox\@outputbox}
	\fi
	\setbox\@outputbox\vbox{\hbox to\textwidth{\hbox to\columnwidth
		{\box\opt@boxb \hss}\hfil \vrule width\columnseprule\hfil
		\hbox to\columnwidth{\box\@outputbox \hss}}}
	\global\@firstcolumntrue \@combinedblfloats
	\@outputpage \begingroup \@dblfloatplacement \@startdblcolumn
	\@whilesw\if@fcolmade \fi{\@outputpage\@startdblcolumn}\endgroup}

\if@LaTeX@eN							% 2.00(3)>>
\def\opt@warning{\ClassWarning{ipsjpapers}{%
	Single column floats still remain on biography\MessageBreak
	processing.\MessageBreak
	Do \string\verbbiography\space for manual balcing}}
\else
\def\opt@warning{\@warning{Single column floats still remain on biography
	processing.^^J\space\space\space\space\space
	\space\space\space\space\space\space\space\space\space\space
	Do \string\verbbiography\space for manual balancing}}
\fi								% 2.00(3)<<
\def\opt@split#1#2#3{\setbox#2\vsplit#1to#3\setbox#2\vbox{\unvbox#2}}
\def\opt@adjust#1#2{\@tempdima\ht#1 \advance\@tempdima-\topskip
	\@tempdimb\@tempdima \divide\@tempdima\baselineskip
	\@tempcnta\@tempdima \@tempdima\@tempcnta\baselineskip
	\advance\@tempdima-\@tempdimb
	\ifdim\@tempdima<\z@ \advance\@tempdima\baselineskip \fi
	\advance\@tempdima\baselineskip \advance\@tempdima-\dp#1 
	\advance\@tempdima-\topskip
	\setbox\@outputbox\vbox{\ifvoid#1\else\unvbox#1\vskip\@tempdima\fi#2}}

\let\latex@outputpage\@outputpage
% \opt@finalgap:	vertical space above the \hrule at the end of paper.
% \opt@finallinewidth:	width of the \hrule at the end of paper.
\@tempdima2\baselineskip		% This might be changed
\edef\opt@finalgap{\the\@tempdima}
\def\opt@finallinewidth{220\@Q}		% This might be changed
\ifDS@techrep \let\opt@finallinewidth\z@ \fi			% 1.05(2)

\def\@outputpage{\if@finalpageoutput
	\setbox\@outputbox\vbox{\unvbox\@outputbox}
	\@tempdima\dp\@outputbox
	\@tempdimb\ht\@outputbox \advance\@tempdimb\opt@finalgap\relax
	\ifdim\@tempdimb>\textheight\else
	\setbox\@outputbox\vbox to\textheight{
		\unvbox\@outputbox\vskip-\@tempdima
		\nointerlineskip\vbox to\z@{\vskip\opt@finalgap
			\hbox to\textwidth{\hss
			\vrule height0.4pt width\opt@finallinewidth\hss}
		\vss}\vfil}\fi\fi
	\ifASCII\if@LaTeX@e\ifipsj@nonjp\else
		\@@topmargin\topmargin \fi\fi\fi	    % 2.00(13),2.12(1b)
	\latex@outputpage}

%%%%%% Biography %%%%%%

% If you want to control the allocation of biographies manually, do
% \verbbiography and insert \adjust{<vertical materials>} just before
% \member (or its relatives).  For example;
% 	\verbbiography
%	\begin{biography}
%	\member{...} ...
%	\adjust{\protect\newpage}
%	\member{...} ...
%	\adjust{\protect\vspace{1.3cm}}
%	\member{...} ...
%	\end{biography}
% will make page break just after the biography of the 1st author, and will
% insert a vertical space of 1.3cm just after that of the 2nd.  It is
% strongly recommended to \protect any control sequence in the argument of
% \adjust.

% \received and \accepted define the dates of receipt/acceptance.
% They are put at the end of manuscript (just before biographies) by
% \ra@putrcvacc.

% 2.12(1c)>>
% \def\ra@nengo is moved to the tail				% 2.12(1c)
\ifDS@english
\def\received#1#2#3{\def\ra@received{\ra@date{#1}{#2}{#3}}\ignorespaces}
\def\accepted#1#2#3{\def\ra@accepted{\ra@date{#1}{#2}{#3}}\ignorespaces}
								% 2.07(5)
% \rereceived is moved below					% 2.12(5)
\def\presented#1#2#3{\def\ra@presented{\ra@date{#1}{#2}{#3}}\ignorespaces}
								% 2.07(7)
\def\ra@received{??? ??, ????}
\def\ra@accepted{??? ??, ????}
\def\ra@presented{??? ??, ????}					% 2.07(7)
\def\ipsj@TOD@editor{(Editor in Charge:\quad{\it\ipsj@TOD@ename\/})}
								% 2.07(6)
								% 2.12(6)

\ifDS@TBIO							% 2.11(4)>>
\def\ipsj@TOD@editor{(Communicated by\quad{\it\ipsj@TOD@ename\/})}% 2.12(6)
\fi								% 2.11(4)<<
\else
\def\received#1#2#3{\def\ra@received{#1&#2&#3&}\ignorespaces}
\def\accepted#1#2#3{\def\ra@accepted{#1&#2&#3&}\ignorespaces}
								% 2.07(5)
% \rereceived is moved below					% 2.12(5)
\def\presented#1#2#3{\def\ra@presented{#1&#2&#3&}\ignorespaces}	% 2.07(7)
\def\ra@received{?&?&?&}
\def\ra@accepted{?&?&?&}
\def\ra@presented{?&?&?&}					% 2.07(7)
\def\ipsj@TOD@editor{\ipsj@j@lp\ipsj@j@edinch
	\quad\ipsj@TOD@ename\ipsj@j@rp}				% 2.07(6)
								% 2.08(2)
								% 2.12(6)
\fi

\ifDS@printer							% 2.12(4e)>>
\def\ReleasedToOnline{\@tempswafalse				% 3.00(10)>>
	\@ifstar{\@tempswatrue\ipsj@reltool}{\ipsj@reltool}}
\def\ipsj@reltool#1#2#3{
	\ifDS@online \@tempswatrue \fi
	\ifipsj@etrans \@tempswatrue \fi
	\if@tempswa
		\ifDS@english \def\ra@released{\ra@date{#1}{#2}{#3}}
		\else \def\ra@released{#1&#2&#3&}
	\fi\fi}							% 3.00(10)<<
\fi								% 2.12(4e)<<
% aliasing of \received etc. is moved to the tail.

% 2.12(1c)<<

\let\ra@elt\relax						% 2.12(5)>>
\def\rereceived#1#2#3{\ifx\ra@rereceived\undefined
		\def\ra@rereceived{\ra@elt{}{#1}{#2}{#3}}\def\ra@rerecnum{1}%
	\else
		\@tempcnta\ra@rerecnum \advance\@tempcnta\@ne
		\edef\ra@rerecnum{\number\@tempcnta}%
		\edef\ra@rereceived{\ra@rereceived
			\ra@elt{(\ra@rerecnum)}{#1}{#2}{#3}}%
	\fi \ignorespaces}					% 2.12(5)<<

\def\edInCharge#1{\def\ipsj@TOD@ename{#1}\ignorespaces}		% 2.07(6)

\def\ra@putrcvacc{\rightline{\vtop{\normalsize\tabskip\z@
	\ifDS@english
	    \llap{(Received \ra@received)}
	    \def\ra@elt##1##2##3##4{%				% 2.12(5)>>
		\llap{(Revised##1 \ra@date{##2}{##3}{##4})}}
	    \ifx\ra@rereceived\undefined \else \ra@rereceived \fi
								% 2.12(5)<<    
	    \llap{(Accepted \ra@accepted)}
	    \ifx\ra@released\undefined\else			% 2.12(4e)
		\llap{(Released \ra@released)}\fi		% 2.12(4e)
	    \hbox{}
	\else							% 2.12(1c)>>
	    \def\ra@elt##1##2##3##4{##2&##3&##4&\ipsj@j@rerec##1)\cr}%
								% 2.12(5)
	    \halign{(\ra@nengo\hskip\jasciikanjiskip
		\hfil##\hfil\hskip\jasciikanjiskip \ipsj@j@year
			\hskip\jasciikanjiskip&
		\hfil##\hfil\hskip\jasciikanjiskip \ipsj@j@month
			\hskip\jasciikanjiskip&
		\hfil##\hfil\hskip\jasciikanjiskip \ipsj@j@day
			&##\hfil\cr				% 2.07(5)>>
		\ra@received \ipsj@j@received)\cr
		\ifx\ra@rereceived\undefined \else \ra@rereceived \fi
								% 2.12(5)
		\ra@accepted \ipsj@j@accepted)\cr
		\ifx\ra@released\undefined\else			% 3.00(10)
			\ra@released \ipsj@j@released)\cr \fi	% 3.00(10)
		\multispan3\cr}\fi}%
								% 2.07(5)<<
								% 2.12(1c)<<
	\hskip\@mojihaba}
	\nobreak\vskip-2\baselineskip\prevdepth\z@\hbox{}
	\ifDS@printer \ifDS@english				% 2.12(4d)>>
		\ifipsj@trans
			\ifDS@online \noindent \ipsj@refer@trans \par \fi
		\else
			\ifDS@online\else \noindent \ipsj@refer@online \par \fi
	\fi \fi \fi						% 2.12(4d)<<
	\ifipsj@recommendation\else				% 2.04(2)
		\ifx\ipsj@TOD@ename\undefined\else		% 2.07(6)>>
			\nobreak\vskip\baselineskip
			\hbox{\ipsj@TOD@editor}\fi		% 2.07(6)<<
		\vskip\baselineskip\penalty\opt@magicpenalty\fi}% 2.04(2)
\def\ra@date#1#2#3{\ifcase#2\or
	January\or February\or March\or April\or May\or June\or
	July\or August\or September\or October\or November\or December\fi
	\space#3, #1}
\def\ra@jdate#1#2#3{#1&#2&#3&}
\def\ra@putpresented#1&#2&#3&{\rightline{%			% 2.12(1c)>>
	\ipsj@j@lp\ra@nengo\hskip\jasciikanjiskip		% 2.07(7)>>
								% 2.13(3)
	#1\hskip\jasciikanjiskip \ipsj@j@year \hskip\jasciikanjiskip
	#2\hskip\jasciikanjiskip \ipsj@j@month \hskip\jasciikanjiskip
	#3\hskip\jasciikanjiskip \ipsj@j@day\ipsj@j@presented\ipsj@j@rp}}
								% 3.01(3b)
								% 2.07(7)<<
								% 2.13(3)
								% 2.12(1c)<<

% 2.12(4d)>>
\def\ipsj@space{\hskip\z@ plus\fontdimen\thr@@\font \penalty5000\relax}
\ifDS@landscape							% 3.00(8b,g)>>
\def\ipsj@refer@trans{%
	(Original version of this article can be found in the IPSJ
	Transactions on
	\csname ipsj@sig@\ipsj@sig@code @e\endcsname,
	Vol.\ipsj@space \number\c@volume,
	No.\ipsj@space \number\c@number,
	pp.\ipsj@space
	\ipsj@thelastpage\c@volpageoffset\ipsj@last@page.)}	% 3.00(11)
\else								% 3.00(8b,g)<<
\def\ipsj@refer@trans{%
	(Paper version of this article can be found in the IPSJ Transactions on
	\csname ipsj@sig@\ipsj@sig@code @e\endcsname,
	Vol.\ipsj@space\number\c@volume,
	No.\ipsj@space SIG\ipsj@sig@numa\ipsj@space
	(\ipsj@sig@code\ipsj@space\ipsj@sig@numb),
	pp.\ipsj@space
	\ipsj@thelastpage\c@volpageoffset\ipsj@last@page.)}	% 3.00(11)
\fi
\def\ipsj@refer@online{%
	(\ifDS@landscape Original\else Online\fi\space		% 3.00(8g)>>
	version of this article can be found in the
	\ipsj@online@journal\space				% 3.00(8g)<<
	Vol.\ipsj@space\ipsj@olh@vol,
	pp.\ipsj@space
	\ipsj@thelastpage\ipsj@olh@page\ipsj@olh@lastpage.)}	% 3.00(11)
\def\ipsj@thelastpage#1#2{\begingroup
	\@tempcnta#1\relax \edef\@tempb{\number#1}%		% 3.00(11)
	\ifDS@online \@tempcntb\ipsj@olh@page
	\else \@tempcntb\c@volpageoffset\fi
	\ifx#2\undefined
		\ifx\ipsj@lastpage\undefined \def\@tempa{0}%	% 3.00(11)
		\else \advance\@tempcntb-\ipsj@lastpage
			\advance\@tempcnta-\@tempcntb
			\def\@tempa{\number\@tempcnta}%
		\fi
	\else \def\@tempa{#2}%
	\fi
							% 3.00(11),3.01(4)>>
	\ifnum\@tempa=\z@ \def\@tempc{\ipsj@thepage\@tempb--\penalty5000???}%
	\else\ifnum\@tempa=\@tempb \def\@tempc{\ipsj@thepage\@tempa}\relax
	\else \def\@tempc{\ipsj@thepage\@tempb--\penalty5000\relax
		\ipsj@thepage\@tempa}%
	\fi\fi
	\@tempc \endgroup}				% 3.00(11),3.01(4)<<
% 2.12(4d)<<
\def\ipsj@thepage#1{{\c@page#1\relax \xdef\ipsj@thep{\thepage}}\ipsj@thep}
								% 3.01(4)
\newbox\bio@picbox
% The following define the height and width of a picture for biography, and
% the indentation of the first 6 lines.  They might be changed.
\def\bio@picheight{100\@Q}
\def\bio@picwidth{80\@Q}

\newif\ifbio@showpicbox
\bio@showpicboxtrue
% Do \bio@showpicboxfalse if you don't want to put a frame box at the
% position for picture.
\ifDS@english
\def\bio@lineheight{9\@Q}
\def\bio@piclines{7}
\def\bio@indent{91\@Q}
\def\bio@hangafter{7}
\else
\def\bio@lineheight{8\@Q}
\def\bio@piclines{6}
\def\bio@indent{96\@Q}
\def\bio@hangafter{5}
\fi

% \verbbiography forces verbatim output of biography (i.e. not ballanced).
\newif\ifbio@verb \bio@verbfalse
\def\verbbiography{\global\bio@verbtrue}
% The environment biography saves texts for biographies into the list of
% \inserts (for floats).
\def\biography{\ifipsj@recommendation\else\par\ra@putrcvacc\fi	% 2.04(2)
	\def\member{\bio@member{}{\ipsj@j@member}}%		%2.12(3a)(1c)>>
	\def\nomember{\bio@member{}{}}%
	\def\stmember{\bio@member{}{\ipsj@j@stmember}}%
	\def\xmember{\bio@member{}}%
	\ifDS@printer
		\def\Kmember{\bio@Kmember{\ipsj@j@member}}%
		\def\Knomember{\bio@Kmember{}}%
		\def\Kstmember{\bio@Kmember{\ipsj@j@stmember}}%
		\let\Kxmember\bio@Kmember
	\fi							%2.12(3a)(1c)<<
	\ifDS@english \let\author\nomember			% 2.12(3d)>>
		\ifDS@printer \let\Kauthor\Knomember \fi
	\fi							% 2.12(3d)<<
	\let\adjust\bio@adjust
	\ifbio@showpicbox
	\setbox\bio@picbox\hbox{\hbox to\z@{\vrule\hskip-0.4pt%
		\vtop to\bio@picheight{\vskip\z@\hrule width\bio@picwidth
			\vfil\hrule}\hskip-0.4pt\vrule\hss}}%
	\else
	\setbox\bio@picbox\hbox{}%
	\fi
	\@tempdima\bio@piclines\baselineskip \advance\@tempdima\bio@lineheight
	\dp\bio@picbox\@tempdima
	\let\bio@egroup\relax\let\+\ignorespaces\let\@elt\relax
	\def\bio@list{}\global\bio@th\z@}

\def\bio@Kmember#1#2#3{\bio@member{#3}{#1}{#2}}			% 2.12(3a)
\def\bio@member#1#2#3{\bio@egroup\let\bio@egroup\bio@@egroup	% 2.12(3b)>>
	\@next\@currbox\@freelist\relax
		{\@latexerr{Too many unprocessed floats and biographies}\@ehb}%
	\def\@tempa{#3}\def\@tempb{#1}%
	\global\setbox\@currbox\hbox\bgroup
	    \@tempswatrue
	    \ifx\@tempb\@empty
		\ifDS@printer \@tempswafalse
		\else \raise\bio@lineheight\copy\bio@picbox
		\fi
	    \else
		\setbox\@tempboxa\hbox to\z@{\vtop{\vskip\z@
		    \hbox{\includegraphics
			[width=\bio@picwidth,height=\bio@picheight]{#1.eps}}}%
		    \hss}%					% 2.13(2)
		\dp\@tempboxa\dp\bio@picbox
		\raise\bio@lineheight\box\@tempboxa
	    \fi							% 2.12(3b)<<
	    \vtop\bgroup
		\let\par\\
		\if@tempswa \hangindent\bio@indent\hangafter-\bio@hangafter \fi
		\ifDS@english {\bf #3\ }%
		\else {\bf\bio@putauthor#3\+ \@nil}%
			\def\@tempb{#2}\ifx\@tempb\@empty\else	% 2.12(3c)
			\ipsj@j@lp#2\ipsj@j@rp\fi{\@@par}\fi	% 2.12(3c)(1c)
	\ignorespaces}

% Author name format:
%	S + G < 5 -> fill space between S/G (like SS__G)
%	otherwise -> 1 KC space between S/G (like SS_GG)
\def\bio@putauthor#1 #2\@nil{%
	\ifipsj@nonjp#1 #2\else
	\setbox\@tempboxa\hbox{\jintercharskip\z@#1#2}%
	\setbox\mkt@boxa\hbox{\jintercharskip1cm#1#2}%
	\ifdim\wd\@tempboxa=\wd\mkt@boxa #1 #2\else
	\def\@tempa{#2}\ifx\@tempa\empty
		{\def\+{}\ipsj@warning{Author name #1 doesn't have a space}}%
								% 2.00(3)
		#1\else
	\@tempdima\@mojihaba
	\mkt@getnamewidth\mkt@sname{#1}\mkt@getnamewidth\mkt@gname{#2}%
	\advance\mkt@sname\mkt@gname
	\ifnum\mkt@sname<5\leavevmode\hbox to5\@mojihaba{#1\hfil#2}\else
		#1#2\fi\fi\fi\fi}
\def\bio@@egroup{\@@par\hbox{}\egroup\egroup\@tempdima\dp\@currbox
	\ifdim\@tempdima>\textheight
		\ipsj@warning{Biography of \@tempa\space is too long}% 2.00(3)
		\bio@verbtrue \fi
	\advance\@tempdima\baselineskip\global\advance\bio@th\@tempdima
	\global\dimen\@currbox\@tempdima \global\count\@currbox\z@
	{\let\protect\bio@protect\xdef\bio@list{\bio@list\@elt\@currbox}}}
\def\bio@adjust#1{\bio@egroup\let\bio@egroup\relax
	\ifbio@verb {\let\protect\bio@protect\xdef\bio@list{\bio@list#1}\fi}}
\def\bio@protect{\noexpand\protect\noexpand}

\def\endbiography{\bio@egroup \@tempswatrue
	\ifx\@botlist\@empty\ifx\@deferlist\@empty \@tempswafalse \fi\fi
	\ifbio@verb\else\if@tempswa \bio@verbtrue \opt@warning\fi\fi
	\ifbio@verb{\let\@elt\bio@putelt \let\protect\relax \bio@list}%
	\else\bio@putbio\fi}

\newdimen\bio@colht \newdimen\bio@splitheight
\newdimen\bio@maxgap \newdimen\bio@lastgap
\newdimen\bio@th \newdimen\bio@lhA \newdimen\bio@hA \newdimen\bio@hB
\newdimen\bio@lh \newdimen\bio@rh
\newdimen\bio@tempdim
\newif\ifbio@awful
\newinsert\bio@pbox \count\bio@pbox\@ne

\def\bio@putbio{\let\@elt\relax \let\bio@vskip\relax \allowbreak
	\bio@colht\@colht \advance\bio@colht-\topskip
	\advance\bio@colht\baselineskip
	\@tempdima\bio@colht \advance\@tempdima-\@colroom
	\advance\@tempdima\pagetotal
	\if@firstcolumn
	    \ifdim\@tempdima>\bio@th
		\global\@lastpagebalancingtrue
		{\let\@elt\bio@putelt\bio@list}\vskip-\baselineskip
	    \else
		\ifdim\pagetotal=\z@\else
			\dimen\bio@pbox\@tempdima \advance\bio@th\@tempdima
			\edef\bio@list{\@elt\bio@pbox\bio@list}\fi
		\bio@splitheight\bio@colht \bio@splitpage
		\bio@splitheight.5\bio@th
		\let\bio@awfulput\bio@specialawfulput
		\bio@trybalance\fi
	\else \advance\@tempdima\bio@th
	    \ifdim\@tempdima<\bio@colht
		\global\@lastpagebalancingtrue
		\ifdim\pagetotal=\z@ \global\opt@baselineskip2\baselineskip\fi
		{\let\@elt\bio@putelt\bio@list}\vskip-\baselineskip
	    \else
		\let\bio@awfulput\bio@normalawfulput
		\bio@splitheight\z@ \advance\@tempdima-\bio@th
		\advance\bio@colht-\@tempdima \bio@splitpage
		{\let\@elt\bio@putelt\bio@list}\bio@nextpage
		\bio@trybalance\fi
	\fi}

\def\bio@trybalance{\bio@split 
	\let\bio@right\bio@rightA \let\bio@left\bio@leftA
		\def\bio@rightx{}\def\bio@leftx{}%
		\let\bio@hX\bio@hA \bio@balance
		\let\bio@rightxA\bio@rightx \let\bio@leftxA\bio@leftx
	\ifbio@awful\@tempcnta\tw@\else\@tempcnta\z@\fi
	\let\bio@right\bio@rightB \let\bio@left\bio@leftB
		\def\bio@rightx{}\def\bio@leftx{}%
		\let\bio@hX\bio@hB \bio@balance
		\let\bio@rightxB\bio@rightx \let\bio@leftxB\bio@leftx
	\ifbio@awful\advance\@tempcnta\@ne\fi
	\ifcase\@tempcnta
		\ifdim\bio@hA<\bio@hB \bio@balanceput\bio@leftxA\bio@rightxA
		\else \bio@balanceput\bio@leftxB\bio@rightxB\fi
	\or \bio@balanceput\bio@leftxA\bio@rightxA
	\or \bio@balanceput\bio@leftxB\bio@rightxB
	\else \bio@awfulput\fi
	\ifx\bio@deferred\empty\vskip-\baselineskip\let\next\relax
	\else\bio@nextpage\let\next\bio@trybalance\fi\next}

\def\bio@split{\def\bio@leftA{}\def\bio@leftB{}%
	\def\bio@rightA{}\def\bio@rightB{}%
	\bio@lhA\z@\@tempdimb\z@ \bio@isplit}
\def\bio@isplit{\ifx\bio@list\empty\let\next\relax\else
	\bio@car\@tempdima\@currbox\bio@list
	\bio@lhA\@tempdimb\advance\@tempdimb\@tempdima
	\edef\bio@leftB{\bio@leftB\@elt\@currbox}%
	\ifdim\@tempdimb>\bio@splitheight
		\edef\bio@rightA{\@elt\@currbox\bio@list}%
		\let\bio@rightB\bio@list \let\next\relax
	\else\edef\bio@leftA{\bio@leftA\@elt\@currbox}\let\next\bio@isplit
	\fi\fi\next}

\def\bio@balanceput#1#2{{\let\@elt\bio@putelt\let\bio@vskip\bio@xvskip
	#1\bio@newpage#2}}
\def\bio@normalawfulput{{\let\bio@vskip\@gobble \@tempcnta\z@ 
	\@tempdima\z@ \bio@addheight\@tempdima\bio@leftxB
	\ifdim\@tempdima<\bio@colht
		\@tempdima\z@ \bio@addheight\@tempdima\bio@rightxB
		\ifdim\@tempdima<\bio@colht \@tempcnta\@ne
			\let\@elt\bio@putelt
			\bio@leftxB\bio@newpage\bio@rightxB\fi\fi
	\ifnum\@tempcnta=\z@
		\@tempdima\z@ \bio@addheight\@tempdima\bio@leftxA
		\ifdim\@tempdima<\bio@colht
			\@tempdima\z@\bio@addheight\@tempdima\bio@rightxA
			\ifdim\@tempdima<\bio@colht \@tempcnta\@ne
				\let\@elt\bio@putelt
				\bio@leftxA\bio@newpage\bio@rightxA\fi\fi\fi
% The following may be redundant.
	\ifnum\@tempcnta=\z@
		\let\@elt\bio@putelt\bio@listsave\fi}}
\def\bio@specialawfulput{{\advance\bio@th-\dimen\bio@pbox
	\ifdim\bio@th<\bio@colht\bio@newpage
	\let\bio@newpage\relax\fi\bio@normalawfulput}}

\def\bio@putelt#1{\ifnum\count#1>\z@\else\box#1
	\nobreak\vskip-2\baselineskip\prevdepth\z@\hbox{}
	\vskip\baselineskip\fi}
\def\bio@xvskip#1{\vskip#1\prevdepth\z@}
\def\bio@newpage{\vskip-\baselineskip\newpage}

\def\bio@nextpage{\bio@newpage \let\bio@list\bio@deferred
	\bio@th\z@ \bio@addheight\bio@th\bio@list
	\bio@colht\@colht \advance\bio@colht-\topskip
	\advance\bio@colht\baselineskip
	\bio@splitheight\bio@colht \bio@splitpage
	\bio@splitheight.5\bio@th
	\let\bio@awfulput\bio@normalawfulput}
\def\bio@splitpage{\let\bio@listsave\bio@list \bio@split
	\@tempdima\bio@th \advance\@tempdima-\bio@lhA
	\ifdim\@tempdima>\bio@colht
		\let\bio@leftAsave\bio@leftA \bio@th\bio@lhA
		\let\bio@list\bio@rightA \bio@splitheight\bio@colht
		\bio@split \edef\bio@list{\bio@leftAsave\bio@leftA}%
		\advance\bio@th\bio@lhA
		\let\bio@deferred\bio@rightA
	\else\def\bio@deferred{}\let\bio@list\bio@listsave\fi}

% \bio@tolerablegap:	maximum tolerable gap between adjacent bio's.
% \bio@tolerablestretch:maximum stretch of a column.

\@tempdima10\baselineskip		% This might be changed
\edef\bio@tolerablegap{\the\@tempdima}
\@tempdima15\baselineskip
\edef\bio@tolerablelastgap{\the\@tempdima}
\def\bio@tolerablestretch{2}		% This might be changed

\def\bio@balance{\let\@elt\relax \edef\bio@bstack{%
		\@elt{{\bio@left}{\bio@right}{}{}{0pt}}}
	\bio@xbalance}
\def\bio@xbalance{%
	\expandafter\bio@popstack\bio@bstack\@nil
	\let\bio@nextA\bio@xbalance \@tempdima\z@
	\ifx\bio@left\empty \ifx\bio@right\empty
		\let\bio@nextA\bio@balanceend
	\else
		\bio@addheight\@tempdima\bio@right
		\edef\bio@leftx{\bio@leftx\bio@vskip{\the\@tempdima}}%
		\advance\bio@hX\@tempdima
		\edef\bio@rightx{\bio@rightx\bio@right}\def\bio@right{}%
		\bio@pushstack \fi\else
	\ifx\bio@right\empty
		\bio@addheight\@tempdima\bio@left
		\edef\bio@rightx{\bio@rightx\bio@vskip{\the\@tempdima}}%
		\advance\bio@hX\@tempdima
		\edef\bio@leftx{\bio@leftx\bio@left}\def\bio@left{}%
		\bio@pushstack \else
	\bio@car\@tempdima\bio@leftbox\bio@left
	\bio@car\@tempdimb\bio@rightbox\bio@right
	\edef\bio@leftx{\bio@leftx\@elt\bio@leftbox}%
	\edef\bio@rightx{\bio@rightx\@elt\bio@rightbox}%
	\ifdim\@tempdima>\@tempdimb
		\advance\bio@hX\@tempdima
		\let\bio@da\@tempdima\let\bio@db\@tempdimb
		\bio@ibalance\bio@left\bio@right\bio@leftx\bio@rightx
	\else	\advance\bio@hX\@tempdimb
		\let\bio@da\@tempdimb\let\bio@db\@tempdima
		\bio@ibalance\bio@right\bio@left\bio@rightx\bio@leftx\fi
	\fi\fi\bio@nextA}
\def\bio@ibalance#1#2#3#4{\let\bio@nextB\relax
	\ifx#2\empty 
		\advance\bio@da-\bio@db
		\edef#4{#4\bio@vskip{\the\bio@da}}\bio@pushstack\else
	\bio@car\bio@tempdim\@currbox#2 \advance\bio@db\bio@tempdim
	\ifdim\bio@da<\bio@db
		\advance\bio@db-\bio@da
		\let\@tempa#3\edef#3{#3\bio@vskip{\the\bio@db}}%
		\let\@tempb#4\edef#4{#4\@elt\@currbox}%
		\advance\bio@hX\bio@db \bio@pushstack
		\advance\bio@hX-\bio@db
		\edef#2{\@elt\@currbox#2}%
		\advance\bio@tempdim-\bio@db
		\let#3\@tempa \edef#4{\@tempb\bio@vskip{\the\bio@tempdim}}%
		\bio@pushstack
	\else \edef#4{#4\@elt\@currbox}\def\bio@nextB{\bio@ibalance#1#2#3#4}%
	\fi\fi\bio@nextB}
\def\bio@balanceend{\bio@awfulfalse \def\bio@bstack{}%
	\bio@maxgap\z@ \bio@lastgap\z@
	\bio@checkgap\bio@leftx \bio@checkgap\bio@rightx
	\ifdim\bio@maxgap>\bio@tolerablegap\relax\bio@awfultrue\fi
	\ifdim\bio@lastgap>\bio@tolerablelastgap\relax\bio@awfultrue\fi
	\ifdim\bio@hX>\bio@tolerablestretch\bio@splitheight\bio@awfultrue\fi
	\ifdim\bio@hX>\bio@colht\bio@awfultrue\fi}
\def\bio@checkgap#1{{\@tempdima\z@ \@tempdimb\z@ \bio@tempdim\z@
	\let\@elt\bio@cgelt \let\bio@vskip\bio@cgvskip #1\relax
	\ifdim\@tempdima>\bio@maxgap \global\bio@maxgap\@tempdima \fi
	\ifdim\bio@tempdim>\bio@lastgap \global\bio@lastgap\bio@tempdim \fi}}
\def\bio@cgvskip#1{\advance\bio@tempdim#1\relax
	\ifdim\bio@tempdim>\@tempdimb \@tempdimb\bio@tempdim\fi}
\def\bio@cgelt#1{\@tempdima\@tempdimb \bio@tempdim\z@}
\def\bio@popstack\@elt#1#2\@nil{\edef\bio@bstack{#2}\bio@ipopstack#1}
\def\bio@ipopstack#1#2#3#4#5{\def\bio@left{#1}\def\bio@right{#2}%
	\def\bio@leftx{#3}\def\bio@rightx{#4}\bio@hX#5\relax}
\def\bio@pushstack{\def\bio@bstackx{}%
	\expandafter\bio@ipushstack\bio@bstack\@elt\@nil}
\def\bio@ipushstack\@elt#1{\def\@tempc{#1}%
	\ifx\@tempc\@nnil \edef\bio@bstack{\bio@bstackx\bio@stackelt}%
		\let\bio@nextC\relax \else
	\bio@iipushstack#1\fi\bio@nextC}
\def\bio@iipushstack#1#2#3#4#5{\ifdim#5>\bio@hX
	\edef\bio@bstackx{\bio@bstackx\bio@stackelt
		\@elt{{#1}{#2}{#3}{#4}{#5}}}%
		\let\bio@nextC\bio@pushstackend\else
	\edef\bio@bstackx{\bio@bstackx
		\@elt{{#1}{#2}{#3}{#4}{#5}}}%
		\let\bio@nextC\bio@ipushstack\fi}
\def\bio@pushstackend#1\@elt\@nil{\edef\bio@bstack{\bio@bstackx#1}}
\def\bio@stackelt{\@elt{{\bio@left}{\bio@right}{\bio@leftx}{\bio@rightx}%
	{\the\bio@hX}}}
\def\bio@addheight#1#2{\def\@elt##1{\advance#1\dimen##1}#2\let\@elt\relax}
\def\bio@car#1#2#3{\expandafter\bio@icar#3\@nil#1#2#3}
\def\bio@icar\@elt#1#2\@nil#3#4#5{#3=\dimen#1\relax\def#4{#1}\def#5{#2}}

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

\flushbottom

\ifDS@english
\hbadness9999 \tolerance9999
\else
\hbadness5000 \tolerance5000
\pretolerance\m@ne
\fi

\input{ipsjcommon.sty}

\twocolumn

\endinput
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ipsjsort-e.bst	Sat Mar 21 19:15:03 2009 +0900
@@ -0,0 +1,1 @@
+% ipsjsort-e.bst 15-Jun-07 by Hiroshi Nakashima (ver 2.12)
% ipsjsort.bst 30-Jan-02 by Hiroshi Nakashima (ver 2.00)
% ipsjsort.bst 28-Dec-93 by Hiroshi Nakashima (ver 1.00)
% jssst.bst tomura@etl.go.jp (Satoru Tomura)
% BibTeX standard bibliography style `jplain'
	% version 0.10 for JBibTeX versions 0.10 or later, JLaTeX version 2.09.
	% by Shouichi Matsui, matsui@denken.junet

ENTRY
  { address
    author
    booktitle
    chapter
    edition
    editor
    howpublished
    institution
    journal
    key
    month
    note
    number
    organization
    pages
    publisher
    school
    series
    title
    type
    volume
    year
  }
  {}
  { label }

INTEGERS { output.state before.all mid.sentence after.sentence after.block }

INTEGERS { before.year }

FUNCTION {init.state.consts}
{ #0 'before.all :=
  #1 'mid.sentence :=
  #2 'after.sentence :=
  #3 'after.block :=
  #4 'before.year :=					% 1.00(1)
}

STRINGS { s t }

FUNCTION {output.nonnull}
{ 's :=
  output.state mid.sentence =
    { ", " * write$ }
    { output.state after.block =
	{ add.period$ write$
	  newline$
	  "\newblock " write$
	}
	{ output.state before.all =
	    'write$
	    { output.state before.year =		% 1.00(1)
		{ " " * write$ }
		{ add.period$ " " * write$ }
	      if$
	    }
	  if$
	}
      if$
      mid.sentence 'output.state :=
    }
  if$
  s
}

FUNCTION {output}
{ duplicate$ empty$
    'pop$
    'output.nonnull
  if$
}

FUNCTION {required.argument}
{ 't :=
  empty$
    {"Missing required argument " t * " in " * cite$ * warning$}
    'skip$
  if$
}

FUNCTION {required.exclusive.or.argument}
{ 't :=
  empty$
    { 's := 
      empty$
        { t " or " * s * " is missing in " * cite$ * warning$}
        'skip$
      if$
    }
    { 's :=
      empty$
        'skip$
        { "You can use only one of " t * " and " * s * " in " * cite$ * warning$}
      if$
    }
  if$
}

FUNCTION {required.and.or.argument}
{ 't := empty$
     { 's := empty$
         { "there's no " t * " and/or " * s * cite$ * warning$ }
         'skip$
       if$
     }
     { pop$ pop$ }
  if$
}

FUNCTION {optional.series.volume.number.argument}
{ series empty$
    { volume empty$
        { number empty$
            'skip$
            { "there's a number but no series in " cite$ * warning$ }
          if$
        }
        { number empty$
            { "there's a volume but no series in " cite$ * warning$ }
            { "you can use only one of volume and number in " cite$ * warning$}
          if$
        }
     if$
    }
    { volume empty$
        { number empty$
            { "there's a series but neither volume nor number in " cite$ * warning$ }
            'skip$
          if$
        }
        { number empty$
            'skip$
            { "you can use only one of volume and number in " cite$ * warning$ }
          if$
        }
     if$
   }
   if$
}            

FUNCTION {output.bibitem}
{ newline$
  "\bibitem{" write$
  cite$ write$
  "}" write$
  newline$
  before.all 'output.state :=
}

FUNCTION {fin.entry}
{ add.period$
  write$
  newline$
}

FUNCTION {new.block}
{ output.state before.all =
    'skip$
    { after.block 'output.state := }
  if$
}

FUNCTION {new.sentence}
{ output.state after.block =
    'skip$
    { output.state before.all =
	'skip$
	{ after.sentence 'output.state := }
      if$
    }
  if$
}

FUNCTION {not}
{   { #0 }
    { #1 }
  if$
}

FUNCTION {and}
{   'skip$
    { pop$ #0 }
  if$
}

FUNCTION {or}
{   { pop$ #1 }
    'skip$
  if$
}

FUNCTION {new.block.checka}
{ empty$
    'skip$
    'new.block
  if$
}

FUNCTION {new.block.checkb}
{ empty$
  swap$ empty$
  and
    'skip$
    'new.block
  if$
}

FUNCTION {new.sentence.checka}
{ empty$
    'skip$
    'new.sentence
  if$
}

FUNCTION {new.sentence.checkb}
{ empty$
  swap$ empty$
  and
    'skip$
    'new.sentence
  if$
}

FUNCTION {field.or.null}
{ duplicate$ empty$
    { pop$ "" }
    'skip$
  if$
}

FUNCTION {emphasize}
{ duplicate$ empty$
    { pop$ "" }
    { "{\em " swap$ * "}" * }
  if$
}

INTEGERS { nameptr namesleft numnames }

FUNCTION {format.names}					% 1.00(4), 2.00(4)
{ 's :=
  #1 'nameptr :=
  s num.names$ 'numnames :=
  numnames 'namesleft :=
    { namesleft #0 > }
    { s nameptr "{vv }{ll}{, jj}{, f.}" format.name$ 't :=
      nameptr #1 >
	{ namesleft #1 >
	    { ", " * t * }
	    { t "others" =
		{" et al." * }
		{" and " * t * }
	      if$
	    }
	  if$
	}
	't
      if$
      nameptr #1 + 'nameptr :=
      namesleft #1 - 'namesleft :=
    }
  while$
}

FUNCTION {format.authors}
{ author empty$
    { "" }
    { author format.names }
  if$
}

FUNCTION {add.colon}					% 2.00(5)
{ ": " *
}

FUNCTION {format.editors.inparen}			% 2.00(6)
{ editor empty$
    { "" }
    { editor format.names
      editor num.names$ #1 >
	{", eds." *}
	{", ed." *}
      if$
    }
  if$
}

FUNCTION {format.editors}
{ editor empty$
    { "" }
    { editor format.names
      editor num.names$ #1 >
	{"(eds.)" *}
	{"(ed.)" *}
      if$
    }
  if$
}

FUNCTION {n.dashify}
{ 't :=
  ""
    { t empty$ not }
    { t #1 #1 substring$ "-" =
	{ t #1 #2 substring$ "--" = not
	    { "--" *
	      t #2 global.max$ substring$ 't :=
	    }
	    {   { t #1 #1 substring$ "-" = }
		{ "-" *
		  t #2 global.max$ substring$ 't :=
		}
	      while$
	    }
	  if$
	}
	{ t #1 #1 substring$ *
	  t #2 global.max$ substring$ 't :=
	}
      if$
    }
  while$
}

FUNCTION {format.date}
{ before.year 'output.state :=				% 1.00(1)
  year empty$
    { month empty$
	{ "" }
	{ "there's a month but no year in " cite$ * warning$
          ""						% 1.00(5)
	}
      if$
    }
    { "(" year ")" * * }				% 1.00(5)
  if$
}

FUNCTION {tie.or.space.connect}
{ duplicate$ text.length$ #3 <
    { "~" }
    { "\ " }						% 1.00(6)
  if$
  swap$ * *
}

FUNCTION {output.volume}
{ 
  volume empty$
    'skip$
    { "Vol.~" volume * output}
  if$

}

FUNCTION {output.number}
{
  number empty$
    'skip$
    { "No.~" number * output}
  if$
}

FUNCTION {output.series.volume.number}
{ series empty$
    { output.volume
      output.number }
    { series output
      output.volume
      output.number }
 if$
}

FUNCTION {format.edition}
{ edition empty$
    { "" }
    { output.state mid.sentence =
	{ edition "l" change.case$ " edition" * }
	{ edition "t" change.case$ " edition" * }
      if$
    }
  if$
}

INTEGERS { multiresult }

FUNCTION {multi.page.check}
{ 't :=
  #0 'multiresult :=
    { multiresult not
      t empty$ not
      and
    }
    { t #1 #1 substring$
      duplicate$ "-" =
      swap$ duplicate$ "," =
      swap$ "+" =
      or or
	{ #1 'multiresult := }
	{ t #2 global.max$ substring$ 't := }
      if$
    }
  while$
  multiresult
}

FUNCTION {format.pages}					% 1.00(7)
{ pages empty$
    { "" }
    { pages multi.page.check
	{ "pp." pages n.dashify tie.or.space.connect }
	{ "p." pages tie.or.space.connect }
      if$
    }
  if$
}

FUNCTION {format.vol.num.pages}				% 1.00(8)
{ volume empty$
  { ""}
  { " Vol.~" volume * }
  if$ 
  number empty$
    'skip$
    { volume empty$
	{ "there's a number but no volume in " cite$ * warning$ }
	{ "," *}
      if$
      " No.~" number * *
    }
  if$
  pages empty$
    'skip$
    { duplicate$ empty$
	{ pop$ format.pages }
	{ ", " * format.pages * }
      if$
    }
  if$
}

FUNCTION {format.chapter.pages}
{ chapter empty$
    'format.pages
    { type empty$
	{ "chapter" chapter tie.or.space.connect }
        { type "l" change.case$ chapter tie.or.space.connect }
      if$
      pages empty$
	'skip$
	{ ", " * format.pages * }
      if$
    }
  if$
}

FUNCTION {format.in.ed.booktitle}
{ booktitle empty$
    { "" }
    { booktitle emphasize
      editor empty$
	'skip$
	{ " (" * format.editors.inparen * ")" *}	% 1.00(9), 2.00(6)
      if$
    }
  if$
}

FUNCTION {empty.misc.check}
{ author empty$ title empty$ howpublished empty$
  month empty$ year empty$ note empty$
  and and and and and
  key empty$ not and
    { "all relevant fields are empty in " cite$ * warning$ }
    'skip$
  if$
}

FUNCTION {format.thesis.type}
{ type empty$
    'skip$
    { pop$
      type "t" change.case$
    }
  if$
}

FUNCTION {format.tr.number}
{ type empty$
    { "Technical Report" }
    {type}
  if$
  number empty$
    { "t" change.case$ }
    { " " number * * }
  if$
}

FUNCTION {format.article.crossref}			% 2.00(8)
{ key empty$
    { journal empty$
	{ "need key or journal for " cite$ * " to crossref " * crossref *
	  warning$
	  ""
	}
	{ journal emphasize }				% 1.00(10)
      if$
    }
    { "In " key * }
  if$
  " \cite{" * crossref * "}" *
}

FUNCTION {format.crossref.editor}			% 1.00(11)
{ editor #1 "{vv }{ll}" format.name$
  editor num.names$ duplicate$
  #2 >
    {pop$ " et al." * }
    { #2 <
	'skip$
	{ editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
	    {" et al." * }
	    {" and " * editor #2 "{vv }{ll}" format.name$ * }
	  if$
	}
      if$
    }
  if$
}

FUNCTION {format.book.crossref}				% 2.00(8)
{ editor empty$
  editor field.or.null author field.or.null =
  or
    { key empty$
	{ series empty$
	    { "need editor, key, or series for " cite$ * " to crossref " *
	      crossref * warning$
	      ""
	    }
	    { series emphasize }			% 1.00(10)
	  if$
	}
	{ "In " key * }
      if$
    }
    { format.crossref.editor }
  if$
  " \cite{" * crossref * "}" *
  volume empty$
    { "empty volume in " cite$ * "'s crossref of " * crossref * warning$ }
    { * "Vol." * volume tie.or.space.connect }
  if$
}

FUNCTION {format.incoll.inproc.crossref}		% 2.00(8)
{ editor empty$
  editor field.or.null author field.or.null =
  or
    { key empty$
	{ booktitle empty$
	    { "need editor, key, or booktitle for " cite$ * " to crossref " *
	      crossref * warning$
	      ""
	    }
	    { booktitle emphasize }			% 1.00(10)
	  if$
	}
	{ "In " key * }
      if$
    }
    { format.crossref.editor }
  if$
  " \cite{" * crossref * "}" *
}

FUNCTION {article}
{ 
%%%%
  author  "author"  required.argument
  title   "title"   required.argument
  journal "journal" required.argument
  year    "year"    required.argument
%%%% jssst
  volume  "volume"  
  number  "number"  
     required.and.or.argument
  pages   "pages"   required.argument
%%%%
  output.bibitem 
  format.authors add.colon				% 2.00(5)
  title output
  crossref missing$
    { journal emphasize output
      format.vol.num.pages output			% 1.00(12)
      format.date output
    }
    { format.article.crossref output.nonnull
      format.pages output
    }
  if$
  new.block
  note output
  fin.entry
}

FUNCTION {book}
{ 
%%%%
  author  "author"
  editor  "editor"
    required.exclusive.or.argument
  title   "title"  required.argument
  publisher "publisher" required.argument
  year    "year" required.argument
  optional.series.volume.number.argument
%%%%
  output.bibitem
  author empty$
    { format.editors}
    { format.authors}
  if$
  add.colon						% 2.00(5)
  title emphasize output
  crossref missing$
    { output.series.volume.number
      publisher output
      address output
    }
    { new.block
      format.book.crossref output.nonnull
    }
  if$
  format.edition output
  format.date output
  new.block
  note output
  fin.entry
}

FUNCTION {booklet}
{
%%%%
  title   "title"   required.argument
%%%% jssst
  author  "author"  required.argument
%%%%
  output.bibitem
  format.authors add.colon				% 2.00(5)
  title output
  howpublished output
  address output
  format.date output
  new.block
  note output
  fin.entry
}

FUNCTION {inbook}
{ 
%%%%
  author  "author"
  editor  "editor"
     required.exclusive.or.argument
  title   "title"  required.argument
  chapter "chapter"
  pages   "pages"
     required.and.or.argument
  publisher  "publisher" required.argument
  year       "year"      required.argument

  optional.series.volume.number.argument
%%%%
  output.bibitem 
  author empty$
    { format.editors}
    { format.authors}
  if$
  add.colon						% 2.00(5)
  title emphasize output
  crossref missing$
    { output.series.volume.number
      format.chapter.pages output
      publisher output
    }
    { format.chapter.pages output
      new.block
      format.book.crossref output.nonnull
    }
  if$
  format.edition output
  format.date output					% 1.00(13)
  new.block
  note output
  fin.entry
}

FUNCTION {incollection}
{
%%%%
  author    "author"    required.argument
  title     "title"     required.argument
  booktitle "booktitle" required.argument
  publisher "publisher" required.argument
  year      "year"      required.argument

  optional.series.volume.number.argument
%%%%
  output.bibitem
  format.authors add.colon				% 2.00(5)
  title output
  crossref missing$
    { format.in.ed.booktitle output
      output.series.volume.number
      publisher output
      address output
      format.edition output
      format.chapter.pages output			% 1.00(13)
      format.date output
    }
    { format.incoll.inproc.crossref output.nonnull
      format.chapter.pages output
    }
  if$
  new.block
  note output
  fin.entry
}

FUNCTION {inproceedings}
{
%%%%
  author    "author"    required.argument
  title     "title"     required.argument
  year      "year"      required.argument

  optional.series.volume.number.argument
%%%%
  output.bibitem 
  format.authors add.colon				% 2.00(5)
  title output
  crossref missing$
    { format.in.ed.booktitle output
      booktitle "booktitle" required.argument
      output.series.volume.number
      address output
      organization output
      publisher output
      format.pages output
      format.date output				% 1.00(13)
    }
    { format.incoll.inproc.crossref output.nonnull
      format.pages output
    }
  if$
  new.block
  note output
  fin.entry
}

FUNCTION {conference} { inproceedings }

FUNCTION {manual}
{	
%%%%
  title   "title"    required.argument
%%%% jssst
  author   "author"
  organization "organazaion"
     required.exclusive.or.argument
%%%%
  output.bibitem
  author empty$
    { organization}
    { format.authors}
  if$
  add.colon						% 2.00(5)
  title emphasize output
  author empty$
    'skip$
    { organization output }
  if$
  address output
  format.edition output
  format.date output
  new.block
  note output
  fin.entry
}

FUNCTION {mastersthesis}
{
%%%%
  author   "author"  required.argument
  title    "title"   required.argument
  school   "school"  required.argument
  year     "year"    required.argument
%%%%
  output.bibitem
  format.authors add.colon				% 2.00(5)
  title output
  "Master's thesis"
  format.thesis.type output.nonnull
  school output
  address output
  format.date output
  new.block
  note output
  fin.entry
}

FUNCTION {misc}
{
%%%%
%%%% jssst
  author "author" required.argument
  title  "title"  required.argument
%%%%
  output.bibitem
  format.authors add.colon				% 2.00(5)
  title output
  howpublished output
  format.date output
  new.block
  note output
  fin.entry
  empty.misc.check
}

FUNCTION {phdthesis}
{
%%%%
  author   "author"  required.argument
  title    "title"   required.argument
  school   "school"  required.argument
  year     "year"    required.argument
%%%%
  output.bibitem 
  format.authors add.colon				% 2.00(5)
  title output						% 2.00(9)
  "PhD Thesis"
  format.thesis.type output.nonnull
  school output
  address output
  format.date output
  new.block
  note output
  fin.entry
}

FUNCTION {proceedings}
{
%%%%
  title  "title"  required.argument
  year   "year"   required.argument

  optional.series.volume.number.argument
%%%% jssst
  editor  "editor"
  organization "organization"
      required.exclusive.or.argument 
%%%%
  output.bibitem 
  editor empty$
    { organization }
    { format.editors }
  if$
  add.colon						% 2.00(5)
  title emphasize output
  output.series.volume.number
  address output
  editor empty$
    'skip$
    { organization output }
  if$
  publisher output
  format.date output
  new.block
  note output
  fin.entry
}

FUNCTION {techreport}
{
%%%%
  author   "author"   required.argument
  title    "title"    required.argument
  institution "institution" required.argument
  year     "year"     required.argument
%%%%
  output.bibitem
  format.authors add.colon				% 2.00(5)
  title output
  format.tr.number output.nonnull
  institution output
  address output
  format.date output
  new.block
  note output
  fin.entry
}

FUNCTION {unpublished}
{
%%%%
  author   "author"   required.argument
  title    "title"    required.argument
  note     "note"     required.argument
%%%%
  output.bibitem
  format.authors add.colon				% 2.00(5)
  title output
  format.date output
  new.block
  note output
  fin.entry
}

FUNCTION {default.type} { misc }

MACRO {jan} {"January"}

MACRO {feb} {"February"}

MACRO {mar} {"March"}

MACRO {apr} {"April"}

MACRO {may} {"May"}

MACRO {jun} {"June"}

MACRO {jul} {"July"}

MACRO {aug} {"August"}

MACRO {sep} {"September"}

MACRO {oct} {"October"}

MACRO {nov} {"November"}

MACRO {dec} {"December"}

MACRO {acmcs} {"ACM Computing Surveys"}

MACRO {acta} {"Acta Informatica"}

MACRO {cacm} {"Communications of the ACM"}

MACRO {ibmjrd} {"IBM Journal of Research and Development"}

MACRO {ibmsj} {"IBM Systems Journal"}

MACRO {ieeese} {"IEEE Transactions on Software Engineering"}

MACRO {ieeetc} {"IEEE Transactions on Computers"}

MACRO {ieeetcad}
 {"IEEE Transactions on Computer-Aided Design of Integrated Circuits"}

MACRO {ipl} {"Information Processing Letters"}

MACRO {jacm} {"Journal of the ACM"}

MACRO {jcss} {"Journal of Computer and System Sciences"}

MACRO {scp} {"Science of Computer Programming"}

MACRO {sicomp} {"SIAM Journal on Computing"}

MACRO {tocs} {"ACM Transactions on Computer Systems"}

MACRO {tods} {"ACM Transactions on Database Systems"}

MACRO {tog} {"ACM Transactions on Graphics"}

MACRO {toms} {"ACM Transactions on Mathematical Software"}

MACRO {toois} {"ACM Transactions on Office Information Systems"}

MACRO {toplas} {"ACM Transactions on Programming Languages and Systems"}

MACRO {tcs} {"Theoretical Computer Science"}

READ

FUNCTION {sortify}
{ purify$
  "l" change.case$
}

INTEGERS { len }

FUNCTION {chop.word}
{ 's :=
  'len :=
  s #1 len substring$ =
    { s len #1 + global.max$ substring$ }
    's
  if$
}

FUNCTION {sort.format.names}
{ 's :=
  #1 'nameptr :=
  ""
  s num.names$ 'numnames :=
  numnames 'namesleft :=
    { namesleft #0 > }
    { nameptr #1 >
	{ "   " * }
	'skip$
      if$
      s nameptr "{vv{ } }{ll{ }}{  ff{ }}{  jj{ }}" format.name$ 't :=
      nameptr numnames = t "others" = and
	{ "et al" * }
	{ t sortify * }
      if$
      nameptr #1 + 'nameptr :=
      namesleft #1 - 'namesleft :=
    }
  while$
}

FUNCTION {sort.format.title}
{ 't :=
  "A " #2
    "An " #3
      "The " #4 t chop.word
    chop.word
  chop.word
  sortify
  #1 global.max$ substring$
}

FUNCTION {author.sort}
{ author empty$
    { key empty$
	{ "to sort, need author or key in " cite$ * warning$
	  ""
	}
	{ key sortify }
      if$
    }
    { author sort.format.names }
  if$
}

FUNCTION {author.editor.sort}
{ author empty$
    { editor empty$
	{ key empty$
	    { "to sort, need author, editor, or key in " cite$ * warning$
	      ""
	    }
	    { key sortify }
	  if$
	}
	{ editor sort.format.names }
      if$
    }
    { author sort.format.names }
  if$
}

FUNCTION {author.organization.sort}
{ author empty$
    { organization empty$
	{ key empty$
	    { "to sort, need author, organization, or key in " cite$ * warning$
	      ""
	    }
	    { key sortify }
	  if$
	}
	{ "The " #4 organization chop.word sortify }
      if$
    }
    { author sort.format.names }
  if$
}

FUNCTION {editor.organization.sort}
{ editor empty$
    { organization empty$
	{ key empty$
	    { "to sort, need editor, organization, or key in " cite$ * warning$
	      ""
	    }
	    { key sortify }
	  if$
	}
	{ "The " #4 organization chop.word sortify }
      if$
    }
    { editor sort.format.names }
  if$
}

FUNCTION {presort}
{ type$ "book" =
  type$ "inbook" =
  or
    'author.editor.sort
    { type$ "proceedings" =
	'editor.organization.sort
	{ type$ "manual" =
	    'author.organization.sort
	    'author.sort
	  if$
	}
      if$
    }
  if$
  "    "
  *
  year field.or.null sortify
  *
  "    "
  *
  title field.or.null
  sort.format.title
  *
  #1 entry.max$ substring$
  'sort.key$ :=
}

ITERATE {presort}

SORT

STRINGS { longest.label }

INTEGERS { number.label longest.label.width }

FUNCTION {initialize.longest.label}
{ "" 'longest.label :=
  #1 'number.label :=
  #0 'longest.label.width :=
}

FUNCTION {longest.label.pass}
{ number.label int.to.str$ 'label :=
  number.label #1 + 'number.label :=
  label width$ longest.label.width >
    { label 'longest.label :=
      label width$ 'longest.label.width :=
    }
    'skip$
  if$
}

EXECUTE {initialize.longest.label}

ITERATE {longest.label.pass}

FUNCTION {begin.bib}
{ preamble$ empty$
    'skip$
    { preamble$ write$ newline$ }
  if$
  "\begin{thebibliography}{"  longest.label  * "}" * write$ newline$
}

EXECUTE {begin.bib}

EXECUTE {init.state.consts}

ITERATE {call.type$}

FUNCTION {end.bib}
{ newline$
  "\end{thebibliography}" write$ newline$
}

EXECUTE {end.bib}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ipsjsort.bst	Sat Mar 21 19:15:03 2009 +0900
@@ -0,0 +1,1 @@
+% ipsjsort.bst 15-Jun-07 by Hiroshi Nakashima (ver 2.12)
% ipsjsort.bst 30-Jan-02 by Hiroshi Nakashima (ver 2.00)
% ipsjsort.bst 28-Dec-93 by Hiroshi Nakashima (ver 1.00)
% jssst.bst tomura@etl.go.jp (Satoru Tomura)
% BibTeX standard bibliography style `jplain'
	% version 0.10 for JBibTeX versions 0.10 or later, JLaTeX version 2.09.
	% by Shouichi Matsui, matsui@denken.junet

ENTRY
  { address
    author
    booktitle
    chapter
    edition
    editor
    howpublished
    institution
    journal
    key
    month
    note
    number
    organization
    pages
    publisher
    school
    series
    title
    type
    volume
    year
    yomi
  }
  {}
  { label }

INTEGERS { output.state before.all mid.sentence after.sentence after.block }

INTEGERS { before.year }

FUNCTION {init.state.consts}
{ #0 'before.all :=
  #1 'mid.sentence :=
  #2 'after.sentence :=
  #3 'after.block :=
  #4 'before.year :=					% 1.00(1)
}

STRINGS { s t }

FUNCTION {is.kanji}
{ is.kanji.str$ }					% 1.00(2), 2.00(1)

FUNCTION {output.nonnull}
{ 's :=
  output.state mid.sentence =
    { duplicate$ is.kanji				% 2.00(2)
	{ "C" * write$ }
	{ ", " * write$ }
      if$
    }
    { output.state after.block =
	{ add.period$ write$
	  newline$
	  "\newblock " write$
	}
	{ output.state before.all =
	    'write$
	    { output.state before.year =		% 1.00(1)
		{ " " * write$ }
		{ add.period$ " " * write$ }
	      if$
	    }
	  if$
	}
      if$
      mid.sentence 'output.state :=
    }
  if$
  s
}

FUNCTION {output}
{ duplicate$ empty$
    'pop$
    'output.nonnull
  if$
}

FUNCTION {required.argument}
{ 't :=
  empty$
    {"Missing required argument " t * " in " * cite$ * warning$}
    'skip$
  if$
}

FUNCTION {required.exclusive.or.argument}
{ 't :=
  empty$
    { 's := 
      empty$
        { t " or " * s * " is missing in " * cite$ * warning$}
        'skip$
      if$
    }
    { 's :=
      empty$
        'skip$
        { "You can use only one of " t * " and " * s * " in " * cite$ * warning$}
      if$
    }
  if$
}

FUNCTION {required.and.or.argument}
{ 't := empty$
     { 's := empty$
         { "there's no " t * " and/or " * s * cite$ * warning$ }
         'skip$
       if$
     }
     { pop$ pop$ }
  if$
}

FUNCTION {optional.series.volume.number.argument}
{ series empty$
    { volume empty$
        { number empty$
            'skip$
            { "there's a number but no series in " cite$ * warning$ }
          if$
        }
        { number empty$
            { "there's a volume but no series in " cite$ * warning$ }
            { "you can use only one of volume and number in " cite$ * warning$}
          if$
        }
     if$
    }
    { volume empty$
        { number empty$
            { "there's a series but neither volume nor number in " cite$ * warning$ }
            'skip$
          if$
        }
        { number empty$
            'skip$
            { "you can use only one of volume and number in " cite$ * warning$ }
          if$
        }
     if$
   }
   if$
}            

FUNCTION {output.bibitem}
{ newline$
  "\bibitem{" write$
  cite$ write$
  "}" write$
  newline$
  before.all 'output.state :=
}

FUNCTION {fin.entry}
{ add.period$
  write$
  newline$
}

FUNCTION {new.block}
{ output.state before.all =
    'skip$
    { after.block 'output.state := }
  if$
}

FUNCTION {new.sentence}
{ output.state after.block =
    'skip$
    { output.state before.all =
	'skip$
	{ after.sentence 'output.state := }
      if$
    }
  if$
}

FUNCTION {not}
{   { #0 }
    { #1 }
  if$
}

FUNCTION {and}
{   'skip$
    { pop$ #0 }
  if$
}

FUNCTION {or}
{   { pop$ #1 }
    'skip$
  if$
}

FUNCTION {new.block.checka}
{ empty$
    'skip$
    'new.block
  if$
}

FUNCTION {new.block.checkb}
{ empty$
  swap$ empty$
  and
    'skip$
    'new.block
  if$
}

FUNCTION {new.sentence.checka}
{ empty$
    'skip$
    'new.sentence
  if$
}

FUNCTION {new.sentence.checkb}
{ empty$
  swap$ empty$
  and
    'skip$
    'new.sentence
  if$
}

FUNCTION {field.or.null}
{ duplicate$ empty$
    { pop$ "" }
    'skip$
  if$
}

FUNCTION {emphasize}
{ duplicate$ empty$
    { pop$ "" }
    { duplicate$ is.kanji
        'skip$						% 1.00(3)
        { "{\em " swap$ * "}" * }			% 2.00(3)
      if$
    }
  if$
}

INTEGERS { nameptr namesleft numnames }

FUNCTION {format.names}					% 1.00(4), 2.00(4)
{ 's :=
  #1 'nameptr :=
  s num.names$ 'numnames :=
  numnames 'namesleft :=
    { namesleft #0 > }
    { s nameptr "{ff}{ll}" format.name$ duplicate$ is.kanji
	{ duplicate$ text.length$ #6 >
	    { 't := }
	    { pop$ s nameptr "{ff}@{ll}" format.name$ 't := }
	  if$
	}
        { pop$ s nameptr "{vv }{ll}{, jj}{, f.}" format.name$ 't := }
      if$
      nameptr #1 >
	{ namesleft #1 >
	    { s is.kanji
		{ "C" }
		{ ", " }
	      if$
	      * t * }
	    { t "others" =
		{ s is.kanji
			{"ق" * }
			{" et al." * }
		      if$
                }
		{ s is.kanji
			{"C" * t * }	% put "," here for Kanji (H.N.)
			{" and " * t * }
	     	      if$
		}
	      if$
	    }
	  if$
	}
	't
      if$
      nameptr #1 + 'nameptr :=
      namesleft #1 - 'namesleft :=
    }
  while$
}

FUNCTION {format.authors}
{ author empty$
    { "" }
    { author format.names }
  if$
}

FUNCTION {add.colon}					% 2.00(5)
{ duplicate$ is.kanji
    { "\F" * }						% 2.12(1)
    { ": " * }
  if$
}

FUNCTION {format.editors.inparen}			% 2.00(6)
{ editor empty$
    { "" }
    { editor format.names
      editor num.names$ #1 >
	{ editor is.kanji
		{"C" * } {", eds." *} if$
	}
	{ editor is.kanji
		{"C" *}  {", ed." *} if$
	}
      if$
    }
  if$
}

FUNCTION {format.editors}
{ editor empty$
    { "" }
    { editor format.names
      editor num.names$ #1 >
	{ editor is.kanji
		{"iҁj" * } {"(eds.)" *} if$		% 2.00(7)
	}
	{ editor is.kanji
		{"iҁj" *}  {"(ed.)" *} if$		% 2.00(7)
	}
      if$
    }
  if$
}

FUNCTION {n.dashify}
{ 't :=
  ""
    { t empty$ not }
    { t #1 #1 substring$ "-" =
	{ t #1 #2 substring$ "--" = not
	    { "--" *
	      t #2 global.max$ substring$ 't :=
	    }
	    {   { t #1 #1 substring$ "-" = }
		{ "-" *
		  t #2 global.max$ substring$ 't :=
		}
	      while$
	    }
	  if$
	}
	{ t #1 #1 substring$ *
	  t #2 global.max$ substring$ 't :=
	}
      if$
    }
  while$
}

FUNCTION {format.date}
{ before.year 'output.state :=				% 1.00(1)
  year empty$
    { month empty$
	{ "" }
	{ "there's a month but no year in " cite$ * warning$
          ""						% 1.00(5)
	}
      if$
    }
    { "(" year ")" * * }				% 1.00(5)
  if$
}

FUNCTION {tie.or.space.connect}
{ duplicate$ text.length$ #3 <
    { "~" }
    { "\ " }						% 1.00(6)
  if$
  swap$ * *
}

FUNCTION {output.volume}
{ 
  volume empty$
    'skip$
    { "Vol.~" volume * output}
  if$

}

FUNCTION {output.number}
{
  number empty$
    'skip$
    { "No.~" number * output}
  if$
}

FUNCTION {output.series.volume.number}
{ series empty$
    { output.volume
      output.number }
    { series is.kanji
      volume empty$
      number empty$
      or
      and
        { series " " * volume * number * output}
        { series output
          output.volume
          output.number}
      if$
   }
 if$
}

FUNCTION {format.edition}
{ edition empty$
    { "" }
    { output.state mid.sentence =
	{ edition "l" change.case$ " edition" * }
	{ edition "t" change.case$ " edition" * }
      if$
    }
  if$
}

INTEGERS { multiresult }

FUNCTION {multi.page.check}
{ 't :=
  #0 'multiresult :=
    { multiresult not
      t empty$ not
      and
    }
    { t #1 #1 substring$
      duplicate$ "-" =
      swap$ duplicate$ "," =
      swap$ "+" =
      or or
	{ #1 'multiresult := }
	{ t #2 global.max$ substring$ 't := }
      if$
    }
  while$
  multiresult
}

FUNCTION {format.pages}					% 1.00(7)
{ pages empty$
    { "" }
    { pages multi.page.check
	{ "pp." pages n.dashify tie.or.space.connect }
	{ "p." pages tie.or.space.connect }
      if$
    }
  if$
}

FUNCTION {format.vol.num.pages}				% 1.00(8)
{ volume empty$
  { ""}
  { " Vol.~" volume * }
  if$ 
  number empty$
    'skip$
    { volume empty$
	{ "there's a number but no volume in " cite$ * warning$ }
	{ "," *}
      if$
      " No.~" number * *
    }
  if$
  pages empty$
    'skip$
    { duplicate$ empty$
	{ pop$ format.pages }
	{ ", " * format.pages * }
      if$
    }
  if$
}

FUNCTION {format.chapter.pages}
{ chapter empty$
    'format.pages
    { type empty$
	{ "chapter" chapter tie.or.space.connect }
        { type is.kanji 
             { chapter type tie.or.space.connect }
             { type "l" change.case$ chapter tie.or.space.connect }
          if$
        }
      if$
      pages empty$
	'skip$
	{ ", " * format.pages * }
      if$
    }
  if$
}

FUNCTION {format.in.ed.booktitle}
{ booktitle empty$
    { "" }
    { booktitle emphasize
      editor empty$
	'skip$
	{ booktitle is.kanji
	    { "i" * format.editors.inparen * "j" *}	% 2.00(6,7)
	    { " (" * format.editors.inparen * ")" *}	% 1.00(9), 2.00(6)
	  if$
	}
      if$
    }
  if$
}

FUNCTION {empty.misc.check}
{ author empty$ title empty$ howpublished empty$
  month empty$ year empty$ note empty$
  and and and and and
  key empty$ not and
    { "all relevant fields are empty in " cite$ * warning$ }
    'skip$
  if$
}

FUNCTION {format.thesis.type}
{ type empty$
    'skip$
    { pop$
      type "t" change.case$
    }
  if$
}

FUNCTION {format.tr.number}
{ type empty$
    { title empty$
        { "Technical Report" }
        { title is.kanji
            { "Zp" }
            { "Technical Report" }
          if$
        }
      if$
    }
    {type}
  if$
  number empty$
    { "t" change.case$ }
    { " " number * * }
  if$
}

FUNCTION {format.article.crossref}			% 2.00(8)
{ key empty$
    { journal empty$
	{ "need key or journal for " cite$ * " to crossref " * crossref *
	  warning$
	  ""
	}
	{ journal emphasize }				% 1.00(10)
      if$
    }
    { "In " key * }
  if$
  " \cite{" * crossref * "}" *
}

FUNCTION {format.crossref.editor}			% 1.00(11)
{ editor #1
  editor is.kanji { "{ff}" } { "{vv }{ll}" } if$
  format.name$
  editor num.names$ duplicate$
  #2 >
    { editor is.kanji
	  {pop$ "ق" *} {pop$ " et al." * } if$
    }
    { #2 <
	'skip$
	{ editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
	    { editor is.kanji
		{"ق" *} {" et al." * } if$
	    }
	    { editor is.kanji
		{"E" * editor #2 "{ff}" format.name$ * }
		{" and " * editor #2 "{vv }{ll}" format.name$ * }
	      if$
	    }
	  if$
	}
      if$
    }
  if$
}

FUNCTION {format.book.crossref}				% 2.00(8)
{ editor empty$
  editor field.or.null author field.or.null =
  or
    { key empty$
	{ series empty$
	    { "need editor, key, or series for " cite$ * " to crossref " *
	      crossref * warning$
	      ""
	    }
	    { series emphasize }			% 1.00(10)
	  if$
	}
	{ "In " key * }
      if$
    }
    { format.crossref.editor }
  if$
  " \cite{" * crossref * "}" *
  volume empty$
    { "empty volume in " cite$ * "'s crossref of " * crossref * warning$ }
    { duplicate$ is.kanji { "C" } { ", "} if$ *
      "Vol." * volume tie.or.space.connect
    }
  if$
}

FUNCTION {format.incoll.inproc.crossref}		% 2.00(8)
{ editor empty$
  editor field.or.null author field.or.null =
  or
    { key empty$
	{ booktitle empty$
	    { "need editor, key, or booktitle for " cite$ * " to crossref " *
	      crossref * warning$
	      ""
	    }
	    { booktitle emphasize }			% 1.00(10)
	  if$
	}
	{ "In " key * }
      if$
    }
    { format.crossref.editor }
  if$
  " \cite{" * crossref * "}" *
}

FUNCTION {article}
{ 
%%%%
  author  "author"  required.argument
  title   "title"   required.argument
  journal "journal" required.argument
  year    "year"    required.argument
%%%% jssst
  volume  "volume"  
  number  "number"  
     required.and.or.argument
  pages   "pages"   required.argument
%%%%
  output.bibitem 
  format.authors add.colon				% 2.00(5)
  title output
  crossref missing$
    { journal emphasize output
      format.vol.num.pages output			% 1.00(12)
      format.date output
    }
    { format.article.crossref output.nonnull
      format.pages output
    }
  if$
  new.block
  note output
  fin.entry
}

FUNCTION {book}
{ 
%%%%
  author  "author"
  editor  "editor"
    required.exclusive.or.argument
  title   "title"  required.argument
  publisher "publisher" required.argument
  year    "year" required.argument
  optional.series.volume.number.argument
%%%%
  output.bibitem
  author empty$
    { format.editors}
    { format.authors}
  if$
  add.colon						% 2.00(5)
  title emphasize output
  crossref missing$
    { output.series.volume.number
      publisher output
      address output
    }
    { new.block
      format.book.crossref output.nonnull
    }
  if$
  format.edition output
  format.date output
  new.block
  note output
  fin.entry
}

FUNCTION {booklet}
{
%%%%
  title   "title"   required.argument
%%%% jssst
  author  "author"  required.argument
%%%%
  output.bibitem
  format.authors add.colon				% 2.00(5)
  title output
  howpublished output
  address output
  format.date output
  new.block
  note output
  fin.entry
}

FUNCTION {inbook}
{ 
%%%%
  author  "author"
  editor  "editor"
     required.exclusive.or.argument
  title   "title"  required.argument
  chapter "chapter"
  pages   "pages"
     required.and.or.argument
  publisher  "publisher" required.argument
  year       "year"      required.argument

  optional.series.volume.number.argument
%%%%
  output.bibitem 
  author empty$
    { format.editors}
    { format.authors}
  if$
  add.colon						% 2.00(5)
  title emphasize output
  crossref missing$
    { output.series.volume.number
      format.chapter.pages output
      publisher output
    }
    { format.chapter.pages output
      new.block
      format.book.crossref output.nonnull
    }
  if$
  format.edition output
  format.date output					% 1.00(13)
  new.block
  note output
  fin.entry
}

FUNCTION {incollection}
{
%%%%
  author    "author"    required.argument
  title     "title"     required.argument
  booktitle "booktitle" required.argument
  publisher "publisher" required.argument
  year      "year"      required.argument

  optional.series.volume.number.argument
%%%%
  output.bibitem
  format.authors add.colon				% 2.00(5)
  title output
  crossref missing$
    { format.in.ed.booktitle output
      output.series.volume.number
      publisher output
      address output
      format.edition output
      format.chapter.pages output			% 1.00(13)
      format.date output
    }
    { format.incoll.inproc.crossref output.nonnull
      format.chapter.pages output
    }
  if$
  new.block
  note output
  fin.entry
}

FUNCTION {inproceedings}
{
%%%%
  author    "author"    required.argument
  title     "title"     required.argument
  year      "year"      required.argument

  optional.series.volume.number.argument
%%%%
  output.bibitem 
  format.authors add.colon				% 2.00(5)
  title output
  crossref missing$
    { format.in.ed.booktitle output
      booktitle "booktitle" required.argument
      output.series.volume.number
      address output
      organization output
      publisher output
      format.pages output
      format.date output				% 1.00(13)
    }
    { format.incoll.inproc.crossref output.nonnull
      format.pages output
    }
  if$
  new.block
  note output
  fin.entry
}

FUNCTION {conference} { inproceedings }

FUNCTION {manual}
{	
%%%%
  title   "title"    required.argument
%%%% jssst
  author   "author"
  organization "organazaion"
     required.exclusive.or.argument
%%%%
  output.bibitem
  author empty$
    { organization}
    { format.authors}
  if$
  add.colon						% 2.00(5)
  title emphasize output
  author empty$
    'skip$
    { organization output }
  if$
  address output
  format.edition output
  format.date output
  new.block
  note output
  fin.entry
}

FUNCTION {mastersthesis}
{
%%%%
  author   "author"  required.argument
  title    "title"   required.argument
  school   "school"  required.argument
  year     "year"    required.argument
%%%%
  output.bibitem
  format.authors add.colon				% 2.00(5)
  title output
  author empty$
    { "Master's thesis" }
    { author is.kanji
        { "Cm_" }  
        { "Master's thesis" }
      if$
    }
  if$
  format.thesis.type output.nonnull
  school output
  address output
  format.date output
  new.block
  note output
  fin.entry
}

FUNCTION {misc}
{
%%%%
%%%% jssst
  author "author" required.argument
  title  "title"  required.argument
%%%%
  output.bibitem
  format.authors add.colon				% 2.00(5)
  title output
  howpublished output
  format.date output
  new.block
  note output
  fin.entry
  empty.misc.check
}

FUNCTION {phdthesis}
{
%%%%
  author   "author"  required.argument
  title    "title"   required.argument
  school   "school"  required.argument
  year     "year"    required.argument
%%%%
  output.bibitem 
  format.authors add.colon				% 2.00(5)
  title output						% 2.00(9)
  author empty$
    { "PhD Thesis" }
    { author is.kanji
        { "m_" }
        { "PhD Thesis" }
      if$
    }
  if$
  format.thesis.type output.nonnull
  school output
  address output
  format.date output
  new.block
  note output
  fin.entry
}

FUNCTION {proceedings}
{
%%%%
  title  "title"  required.argument
  year   "year"   required.argument

  optional.series.volume.number.argument
%%%% jssst
  editor  "editor"
  organization "organization"
      required.exclusive.or.argument 
%%%%
  output.bibitem 
  editor empty$
    { organization }
    { format.editors }
  if$
  add.colon						% 2.00(5)
  title emphasize output
  output.series.volume.number
  address output
  editor empty$
    'skip$
    { organization output }
  if$
  publisher output
  format.date output
  new.block
  note output
  fin.entry
}

FUNCTION {techreport}
{
%%%%
  author   "author"   required.argument
  title    "title"    required.argument
  institution "institution" required.argument
  year     "year"     required.argument
%%%%
  output.bibitem
  format.authors add.colon				% 2.00(5)
  title output
  format.tr.number output.nonnull
  institution output
  address output
  format.date output
  new.block
  note output
  fin.entry
}

FUNCTION {unpublished}
{
%%%%
  author   "author"   required.argument
  title    "title"    required.argument
  note     "note"     required.argument
%%%%
  output.bibitem
  format.authors add.colon				% 2.00(5)
  title output
  format.date output
  new.block
  note output
  fin.entry
}

FUNCTION {default.type} { misc }

MACRO {jan} {"January"}

MACRO {feb} {"February"}

MACRO {mar} {"March"}

MACRO {apr} {"April"}

MACRO {may} {"May"}

MACRO {jun} {"June"}

MACRO {jul} {"July"}

MACRO {aug} {"August"}

MACRO {sep} {"September"}

MACRO {oct} {"October"}

MACRO {nov} {"November"}

MACRO {dec} {"December"}

MACRO {acmcs} {"ACM Computing Surveys"}

MACRO {acta} {"Acta Informatica"}

MACRO {cacm} {"Communications of the ACM"}

MACRO {ibmjrd} {"IBM Journal of Research and Development"}

MACRO {ibmsj} {"IBM Systems Journal"}

MACRO {ieeese} {"IEEE Transactions on Software Engineering"}

MACRO {ieeetc} {"IEEE Transactions on Computers"}

MACRO {ieeetcad}
 {"IEEE Transactions on Computer-Aided Design of Integrated Circuits"}

MACRO {ipl} {"Information Processing Letters"}

MACRO {jacm} {"Journal of the ACM"}

MACRO {jcss} {"Journal of Computer and System Sciences"}

MACRO {scp} {"Science of Computer Programming"}

MACRO {sicomp} {"SIAM Journal on Computing"}

MACRO {tocs} {"ACM Transactions on Computer Systems"}

MACRO {tods} {"ACM Transactions on Database Systems"}

MACRO {tog} {"ACM Transactions on Graphics"}

MACRO {toms} {"ACM Transactions on Mathematical Software"}

MACRO {toois} {"ACM Transactions on Office Information Systems"}

MACRO {toplas} {"ACM Transactions on Programming Languages and Systems"}

MACRO {tcs} {"Theoretical Computer Science"}

READ

FUNCTION {sortify}
{ purify$
  "l" change.case$
}

INTEGERS { len }

FUNCTION {chop.word}
{ 's :=
  'len :=
  s #1 len substring$ =
    { s len #1 + global.max$ substring$ }
    's
  if$
}

FUNCTION {sort.format.names}
{ 's :=
  yomi empty$
     'skip$
     { yomi 's := }
  if$

  #1 'nameptr :=
  ""
  s num.names$ 'numnames :=
  numnames 'namesleft :=
    { namesleft #0 > }
    { nameptr #1 >
	{ "   " * }
	'skip$
      if$
      s nameptr "{vv{ } }{ll{ }}{  ff{ }}{  jj{ }}" format.name$ 't :=
      nameptr numnames = t "others" = and
	{ "et al" * }
	{ t sortify * }
      if$
      nameptr #1 + 'nameptr :=
      namesleft #1 - 'namesleft :=
    }
  while$
}

FUNCTION {sort.format.title}
{ 't :=
  "A " #2
    "An " #3
      "The " #4 t chop.word
    chop.word
  chop.word
  sortify
  #1 global.max$ substring$
}

FUNCTION {author.sort}
{ author empty$
    { key empty$
	{ "to sort, need author or key in " cite$ * warning$
	  ""
	}
	{ key sortify }
      if$
    }
    { author sort.format.names }
  if$
}

FUNCTION {author.editor.sort}
{ author empty$
    { editor empty$
	{ key empty$
	    { "to sort, need author, editor, or key in " cite$ * warning$
	      ""
	    }
	    { key sortify }
	  if$
	}
	{ editor sort.format.names }
      if$
    }
    { author sort.format.names }
  if$
}

FUNCTION {author.organization.sort}
{ author empty$
    { organization empty$
	{ key empty$
	    { "to sort, need author, organization, or key in " cite$ * warning$
	      ""
	    }
	    { key sortify }
	  if$
	}
	{ "The " #4 organization chop.word sortify }
      if$
    }
    { author sort.format.names }
  if$
}

FUNCTION {editor.organization.sort}
{ editor empty$
    { organization empty$
	{ key empty$
	    { "to sort, need editor, organization, or key in " cite$ * warning$
	      ""
	    }
	    { key sortify }
	  if$
	}
	{ "The " #4 organization chop.word sortify }
      if$
    }
    { editor sort.format.names }
  if$
}

FUNCTION {presort}
{ type$ "book" =
  type$ "inbook" =
  or
    'author.editor.sort
    { type$ "proceedings" =
	'editor.organization.sort
	{ type$ "manual" =
	    'author.organization.sort
	    'author.sort
	  if$
	}
      if$
    }
  if$
  "    "
  *
  year field.or.null sortify
  *
  "    "
  *
  title field.or.null
  sort.format.title
  *
  #1 entry.max$ substring$
  'sort.key$ :=
}

ITERATE {presort}

SORT

STRINGS { longest.label }

INTEGERS { number.label longest.label.width }

FUNCTION {initialize.longest.label}
{ "" 'longest.label :=
  #1 'number.label :=
  #0 'longest.label.width :=
}

FUNCTION {longest.label.pass}
{ number.label int.to.str$ 'label :=
  number.label #1 + 'number.label :=
  label width$ longest.label.width >
    { label 'longest.label :=
      label width$ 'longest.label.width :=
    }
    'skip$
  if$
}

EXECUTE {initialize.longest.label}

ITERATE {longest.label.pass}

FUNCTION {begin.bib}
{ preamble$ empty$
    'skip$
    { preamble$ write$ newline$ }
  if$
  "\begin{thebibliography}{"  longest.label  * "}" * write$ newline$
}

EXECUTE {begin.bib}

EXECUTE {init.state.consts}

ITERATE {call.type$}

FUNCTION {end.bib}
{ newline$
  "\end{thebibliography}" write$ newline$
}

EXECUTE {end.bib}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ipsjunsrt-e.bst	Sat Mar 21 19:15:03 2009 +0900
@@ -0,0 +1,1 @@
+% ipsjsort-e.bst 15-Jun-07 by Hiroshi Nakashima (ver 2.12)
% ipsjsort.bst 30-Jan-02 by Hiroshi Nakashima (ver 2.00)
% ipsjsort.bst 28-Dec-93 by Hiroshi Nakashima (ver 1.00)
% jssst.bst tomura@etl.go.jp (Satoru Tomura)
% BibTeX standard bibliography style `jplain'
	% version 0.10 for JBibTeX versions 0.10 or later, JLaTeX version 2.09.
	% by Shouichi Matsui, matsui@denken.junet

ENTRY
  { address
    author
    booktitle
    chapter
    edition
    editor
    howpublished
    institution
    journal
    key
    month
    note
    number
    organization
    pages
    publisher
    school
    series
    title
    type
    volume
    year
  }
  {}
  { label }

INTEGERS { output.state before.all mid.sentence after.sentence after.block }

INTEGERS { before.year }

FUNCTION {init.state.consts}
{ #0 'before.all :=
  #1 'mid.sentence :=
  #2 'after.sentence :=
  #3 'after.block :=
  #4 'before.year :=					% 1.00(1)
}

STRINGS { s t }

FUNCTION {output.nonnull}
{ 's :=
  output.state mid.sentence =
    { ", " * write$ }
    { output.state after.block =
	{ add.period$ write$
	  newline$
	  "\newblock " write$
	}
	{ output.state before.all =
	    'write$
	    { output.state before.year =		% 1.00(1)
		{ " " * write$ }
		{ add.period$ " " * write$ }
	      if$
	    }
	  if$
	}
      if$
      mid.sentence 'output.state :=
    }
  if$
  s
}

FUNCTION {output}
{ duplicate$ empty$
    'pop$
    'output.nonnull
  if$
}

FUNCTION {required.argument}
{ 't :=
  empty$
    {"Missing required argument " t * " in " * cite$ * warning$}
    'skip$
  if$
}

FUNCTION {required.exclusive.or.argument}
{ 't :=
  empty$
    { 's := 
      empty$
        { t " or " * s * " is missing in " * cite$ * warning$}
        'skip$
      if$
    }
    { 's :=
      empty$
        'skip$
        { "You can use only one of " t * " and " * s * " in " * cite$ * warning$}
      if$
    }
  if$
}

FUNCTION {required.and.or.argument}
{ 't := empty$
     { 's := empty$
         { "there's no " t * " and/or " * s * cite$ * warning$ }
         'skip$
       if$
     }
     { pop$ pop$ }
  if$
}

FUNCTION {optional.series.volume.number.argument}
{ series empty$
    { volume empty$
        { number empty$
            'skip$
            { "there's a number but no series in " cite$ * warning$ }
          if$
        }
        { number empty$
            { "there's a volume but no series in " cite$ * warning$ }
            { "you can use only one of volume and number in " cite$ * warning$}
          if$
        }
     if$
    }
    { volume empty$
        { number empty$
            { "there's a series but neither volume nor number in " cite$ * warning$ }
            'skip$
          if$
        }
        { number empty$
            'skip$
            { "you can use only one of volume and number in " cite$ * warning$ }
          if$
        }
     if$
   }
   if$
}            

FUNCTION {output.bibitem}
{ newline$
  "\bibitem{" write$
  cite$ write$
  "}" write$
  newline$
  before.all 'output.state :=
}

FUNCTION {fin.entry}
{ add.period$
  write$
  newline$
}

FUNCTION {new.block}
{ output.state before.all =
    'skip$
    { after.block 'output.state := }
  if$
}

FUNCTION {new.sentence}
{ output.state after.block =
    'skip$
    { output.state before.all =
	'skip$
	{ after.sentence 'output.state := }
      if$
    }
  if$
}

FUNCTION {not}
{   { #0 }
    { #1 }
  if$
}

FUNCTION {and}
{   'skip$
    { pop$ #0 }
  if$
}

FUNCTION {or}
{   { pop$ #1 }
    'skip$
  if$
}

FUNCTION {new.block.checka}
{ empty$
    'skip$
    'new.block
  if$
}

FUNCTION {new.block.checkb}
{ empty$
  swap$ empty$
  and
    'skip$
    'new.block
  if$
}

FUNCTION {new.sentence.checka}
{ empty$
    'skip$
    'new.sentence
  if$
}

FUNCTION {new.sentence.checkb}
{ empty$
  swap$ empty$
  and
    'skip$
    'new.sentence
  if$
}

FUNCTION {field.or.null}
{ duplicate$ empty$
    { pop$ "" }
    'skip$
  if$
}

FUNCTION {emphasize}
{ duplicate$ empty$
    { pop$ "" }
    { "{\em " swap$ * "}" * }
  if$
}

INTEGERS { nameptr namesleft numnames }

FUNCTION {format.names}					% 1.00(4), 2.00(4)
{ 's :=
  #1 'nameptr :=
  s num.names$ 'numnames :=
  numnames 'namesleft :=
    { namesleft #0 > }
    { s nameptr "{vv }{ll}{, jj}{, f.}" format.name$ 't :=
      nameptr #1 >
	{ namesleft #1 >
	    { ", " * t * }
	    { t "others" =
		{" et al." * }
		{" and " * t * }
	      if$
	    }
	  if$
	}
	't
      if$
      nameptr #1 + 'nameptr :=
      namesleft #1 - 'namesleft :=
    }
  while$
}

FUNCTION {format.authors}
{ author empty$
    { "" }
    { author format.names }
  if$
}

FUNCTION {add.colon}					% 2.00(5)
{ ": " *
}

FUNCTION {format.editors.inparen}			% 2.00(6)
{ editor empty$
    { "" }
    { editor format.names
      editor num.names$ #1 >
	{", eds." *}
	{", ed." *}
      if$
    }
  if$
}

FUNCTION {format.editors}
{ editor empty$
    { "" }
    { editor format.names
      editor num.names$ #1 >
	{"(eds.)" *}
	{"(ed.)" *}
      if$
    }
  if$
}

FUNCTION {n.dashify}
{ 't :=
  ""
    { t empty$ not }
    { t #1 #1 substring$ "-" =
	{ t #1 #2 substring$ "--" = not
	    { "--" *
	      t #2 global.max$ substring$ 't :=
	    }
	    {   { t #1 #1 substring$ "-" = }
		{ "-" *
		  t #2 global.max$ substring$ 't :=
		}
	      while$
	    }
	  if$
	}
	{ t #1 #1 substring$ *
	  t #2 global.max$ substring$ 't :=
	}
      if$
    }
  while$
}

FUNCTION {format.date}
{ before.year 'output.state :=				% 1.00(1)
  year empty$
    { month empty$
	{ "" }
	{ "there's a month but no year in " cite$ * warning$
          ""						% 1.00(5)
	}
      if$
    }
    { "(" year ")" * * }				% 1.00(5)
  if$
}

FUNCTION {tie.or.space.connect}
{ duplicate$ text.length$ #3 <
    { "~" }
    { "\ " }						% 1.00(6)
  if$
  swap$ * *
}

FUNCTION {output.volume}
{ 
  volume empty$
    'skip$
    { "Vol.~" volume * output}
  if$

}

FUNCTION {output.number}
{
  number empty$
    'skip$
    { "No.~" number * output}
  if$
}

FUNCTION {output.series.volume.number}
{ series empty$
    { output.volume
      output.number }
    { series output
      output.volume
      output.number }
 if$
}

FUNCTION {format.edition}
{ edition empty$
    { "" }
    { output.state mid.sentence =
	{ edition "l" change.case$ " edition" * }
	{ edition "t" change.case$ " edition" * }
      if$
    }
  if$
}

INTEGERS { multiresult }

FUNCTION {multi.page.check}
{ 't :=
  #0 'multiresult :=
    { multiresult not
      t empty$ not
      and
    }
    { t #1 #1 substring$
      duplicate$ "-" =
      swap$ duplicate$ "," =
      swap$ "+" =
      or or
	{ #1 'multiresult := }
	{ t #2 global.max$ substring$ 't := }
      if$
    }
  while$
  multiresult
}

FUNCTION {format.pages}					% 1.00(7)
{ pages empty$
    { "" }
    { pages multi.page.check
	{ "pp." pages n.dashify tie.or.space.connect }
	{ "p." pages tie.or.space.connect }
      if$
    }
  if$
}

FUNCTION {format.vol.num.pages}				% 1.00(8)
{ volume empty$
  { ""}
  { " Vol.~" volume * }
  if$ 
  number empty$
    'skip$
    { volume empty$
	{ "there's a number but no volume in " cite$ * warning$ }
	{ "," *}
      if$
      " No.~" number * *
    }
  if$
  pages empty$
    'skip$
    { duplicate$ empty$
	{ pop$ format.pages }
	{ ", " * format.pages * }
      if$
    }
  if$
}

FUNCTION {format.chapter.pages}
{ chapter empty$
    'format.pages
    { type empty$
	{ "chapter" chapter tie.or.space.connect }
        { type "l" change.case$ chapter tie.or.space.connect }
      if$
      pages empty$
	'skip$
	{ ", " * format.pages * }
      if$
    }
  if$
}

FUNCTION {format.in.ed.booktitle}
{ booktitle empty$
    { "" }
    { booktitle emphasize
      editor empty$
	'skip$
	{ " (" * format.editors.inparen * ")" *}	% 1.00(9), 2.00(6)
      if$
    }
  if$
}

FUNCTION {empty.misc.check}
{ author empty$ title empty$ howpublished empty$
  month empty$ year empty$ note empty$
  and and and and and
  key empty$ not and
    { "all relevant fields are empty in " cite$ * warning$ }
    'skip$
  if$
}

FUNCTION {format.thesis.type}
{ type empty$
    'skip$
    { pop$
      type "t" change.case$
    }
  if$
}

FUNCTION {format.tr.number}
{ type empty$
    { "Technical Report" }
    {type}
  if$
  number empty$
    { "t" change.case$ }
    { " " number * * }
  if$
}

FUNCTION {format.article.crossref}			% 2.00(8)
{ key empty$
    { journal empty$
	{ "need key or journal for " cite$ * " to crossref " * crossref *
	  warning$
	  ""
	}
	{ journal emphasize }				% 1.00(10)
      if$
    }
    { "In " key * }
  if$
  " \cite{" * crossref * "}" *
}

FUNCTION {format.crossref.editor}			% 1.00(11)
{ editor #1 "{vv }{ll}" format.name$
  editor num.names$ duplicate$
  #2 >
    {pop$ " et al." * }
    { #2 <
	'skip$
	{ editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
	    {" et al." * }
	    {" and " * editor #2 "{vv }{ll}" format.name$ * }
	  if$
	}
      if$
    }
  if$
}

FUNCTION {format.book.crossref}				% 2.00(8)
{ editor empty$
  editor field.or.null author field.or.null =
  or
    { key empty$
	{ series empty$
	    { "need editor, key, or series for " cite$ * " to crossref " *
	      crossref * warning$
	      ""
	    }
	    { series emphasize }			% 1.00(10)
	  if$
	}
	{ "In " key * }
      if$
    }
    { format.crossref.editor }
  if$
  " \cite{" * crossref * "}" *
  volume empty$
    { "empty volume in " cite$ * "'s crossref of " * crossref * warning$ }
    { * "Vol." * volume tie.or.space.connect }
  if$
}

FUNCTION {format.incoll.inproc.crossref}		% 2.00(8)
{ editor empty$
  editor field.or.null author field.or.null =
  or
    { key empty$
	{ booktitle empty$
	    { "need editor, key, or booktitle for " cite$ * " to crossref " *
	      crossref * warning$
	      ""
	    }
	    { booktitle emphasize }			% 1.00(10)
	  if$
	}
	{ "In " key * }
      if$
    }
    { format.crossref.editor }
  if$
  " \cite{" * crossref * "}" *
}

FUNCTION {article}
{ 
%%%%
  author  "author"  required.argument
  title   "title"   required.argument
  journal "journal" required.argument
  year    "year"    required.argument
%%%% jssst
  volume  "volume"  
  number  "number"  
     required.and.or.argument
  pages   "pages"   required.argument
%%%%
  output.bibitem 
  format.authors add.colon				% 2.00(5)
  title output
  crossref missing$
    { journal emphasize output
      format.vol.num.pages output			% 1.00(12)
      format.date output
    }
    { format.article.crossref output.nonnull
      format.pages output
    }
  if$
  new.block
  note output
  fin.entry
}

FUNCTION {book}
{ 
%%%%
  author  "author"
  editor  "editor"
    required.exclusive.or.argument
  title   "title"  required.argument
  publisher "publisher" required.argument
  year    "year" required.argument
  optional.series.volume.number.argument
%%%%
  output.bibitem
  author empty$
    { format.editors}
    { format.authors}
  if$
  add.colon						% 2.00(5)
  title emphasize output
  crossref missing$
    { output.series.volume.number
      publisher output
      address output
    }
    { new.block
      format.book.crossref output.nonnull
    }
  if$
  format.edition output
  format.date output
  new.block
  note output
  fin.entry
}

FUNCTION {booklet}
{
%%%%
  title   "title"   required.argument
%%%% jssst
  author  "author"  required.argument
%%%%
  output.bibitem
  format.authors add.colon				% 2.00(5)
  title output
  howpublished output
  address output
  format.date output
  new.block
  note output
  fin.entry
}

FUNCTION {inbook}
{ 
%%%%
  author  "author"
  editor  "editor"
     required.exclusive.or.argument
  title   "title"  required.argument
  chapter "chapter"
  pages   "pages"
     required.and.or.argument
  publisher  "publisher" required.argument
  year       "year"      required.argument

  optional.series.volume.number.argument
%%%%
  output.bibitem 
  author empty$
    { format.editors}
    { format.authors}
  if$
  add.colon						% 2.00(5)
  title emphasize output
  crossref missing$
    { output.series.volume.number
      format.chapter.pages output
      publisher output
    }
    { format.chapter.pages output
      new.block
      format.book.crossref output.nonnull
    }
  if$
  format.edition output
  format.date output					% 1.00(13)
  new.block
  note output
  fin.entry
}

FUNCTION {incollection}
{
%%%%
  author    "author"    required.argument
  title     "title"     required.argument
  booktitle "booktitle" required.argument
  publisher "publisher" required.argument
  year      "year"      required.argument

  optional.series.volume.number.argument
%%%%
  output.bibitem
  format.authors add.colon				% 2.00(5)
  title output
  crossref missing$
    { format.in.ed.booktitle output
      output.series.volume.number
      publisher output
      address output
      format.edition output
      format.chapter.pages output			% 1.00(13)
      format.date output
    }
    { format.incoll.inproc.crossref output.nonnull
      format.chapter.pages output
    }
  if$
  new.block
  note output
  fin.entry
}

FUNCTION {inproceedings}
{
%%%%
  author    "author"    required.argument
  title     "title"     required.argument
  year      "year"      required.argument

  optional.series.volume.number.argument
%%%%
  output.bibitem 
  format.authors add.colon				% 2.00(5)
  title output
  crossref missing$
    { format.in.ed.booktitle output
      booktitle "booktitle" required.argument
      output.series.volume.number
      address output
      organization output
      publisher output
      format.pages output
      format.date output				% 1.00(13)
    }
    { format.incoll.inproc.crossref output.nonnull
      format.pages output
    }
  if$
  new.block
  note output
  fin.entry
}

FUNCTION {conference} { inproceedings }

FUNCTION {manual}
{	
%%%%
  title   "title"    required.argument
%%%% jssst
  author   "author"
  organization "organazaion"
     required.exclusive.or.argument
%%%%
  output.bibitem
  author empty$
    { organization}
    { format.authors}
  if$
  add.colon						% 2.00(5)
  title emphasize output
  author empty$
    'skip$
    { organization output }
  if$
  address output
  format.edition output
  format.date output
  new.block
  note output
  fin.entry
}

FUNCTION {mastersthesis}
{
%%%%
  author   "author"  required.argument
  title    "title"   required.argument
  school   "school"  required.argument
  year     "year"    required.argument
%%%%
  output.bibitem
  format.authors add.colon				% 2.00(5)
  title output
  "Master's thesis"
  format.thesis.type output.nonnull
  school output
  address output
  format.date output
  new.block
  note output
  fin.entry
}

FUNCTION {misc}
{
%%%%
%%%% jssst
  author "author" required.argument
  title  "title"  required.argument
%%%%
  output.bibitem
  format.authors add.colon				% 2.00(5)
  title output
  howpublished output
  format.date output
  new.block
  note output
  fin.entry
  empty.misc.check
}

FUNCTION {phdthesis}
{
%%%%
  author   "author"  required.argument
  title    "title"   required.argument
  school   "school"  required.argument
  year     "year"    required.argument
%%%%
  output.bibitem 
  format.authors add.colon				% 2.00(5)
  title output						% 2.00(9)
  "PhD Thesis"
  format.thesis.type output.nonnull
  school output
  address output
  format.date output
  new.block
  note output
  fin.entry
}

FUNCTION {proceedings}
{
%%%%
  title  "title"  required.argument
  year   "year"   required.argument

  optional.series.volume.number.argument
%%%% jssst
  editor  "editor"
  organization "organization"
      required.exclusive.or.argument 
%%%%
  output.bibitem 
  editor empty$
    { organization }
    { format.editors }
  if$
  add.colon						% 2.00(5)
  title emphasize output
  output.series.volume.number
  address output
  editor empty$
    'skip$
    { organization output }
  if$
  publisher output
  format.date output
  new.block
  note output
  fin.entry
}

FUNCTION {techreport}
{
%%%%
  author   "author"   required.argument
  title    "title"    required.argument
  institution "institution" required.argument
  year     "year"     required.argument
%%%%
  output.bibitem
  format.authors add.colon				% 2.00(5)
  title output
  format.tr.number output.nonnull
  institution output
  address output
  format.date output
  new.block
  note output
  fin.entry
}

FUNCTION {unpublished}
{
%%%%
  author   "author"   required.argument
  title    "title"    required.argument
  note     "note"     required.argument
%%%%
  output.bibitem
  format.authors add.colon				% 2.00(5)
  title output
  format.date output
  new.block
  note output
  fin.entry
}

FUNCTION {default.type} { misc }

MACRO {jan} {"January"}

MACRO {feb} {"February"}

MACRO {mar} {"March"}

MACRO {apr} {"April"}

MACRO {may} {"May"}

MACRO {jun} {"June"}

MACRO {jul} {"July"}

MACRO {aug} {"August"}

MACRO {sep} {"September"}

MACRO {oct} {"October"}

MACRO {nov} {"November"}

MACRO {dec} {"December"}

MACRO {acmcs} {"ACM Computing Surveys"}

MACRO {acta} {"Acta Informatica"}

MACRO {cacm} {"Communications of the ACM"}

MACRO {ibmjrd} {"IBM Journal of Research and Development"}

MACRO {ibmsj} {"IBM Systems Journal"}

MACRO {ieeese} {"IEEE Transactions on Software Engineering"}

MACRO {ieeetc} {"IEEE Transactions on Computers"}

MACRO {ieeetcad}
 {"IEEE Transactions on Computer-Aided Design of Integrated Circuits"}

MACRO {ipl} {"Information Processing Letters"}

MACRO {jacm} {"Journal of the ACM"}

MACRO {jcss} {"Journal of Computer and System Sciences"}

MACRO {scp} {"Science of Computer Programming"}

MACRO {sicomp} {"SIAM Journal on Computing"}

MACRO {tocs} {"ACM Transactions on Computer Systems"}

MACRO {tods} {"ACM Transactions on Database Systems"}

MACRO {tog} {"ACM Transactions on Graphics"}

MACRO {toms} {"ACM Transactions on Mathematical Software"}

MACRO {toois} {"ACM Transactions on Office Information Systems"}

MACRO {toplas} {"ACM Transactions on Programming Languages and Systems"}

MACRO {tcs} {"Theoretical Computer Science"}

READ

STRINGS { longest.label }

INTEGERS { number.label longest.label.width }

FUNCTION {initialize.longest.label}
{ "" 'longest.label :=
  #1 'number.label :=
  #0 'longest.label.width :=
}

FUNCTION {longest.label.pass}
{ number.label int.to.str$ 'label :=
  number.label #1 + 'number.label :=
  label width$ longest.label.width >
    { label 'longest.label :=
      label width$ 'longest.label.width :=
    }
    'skip$
  if$
}

EXECUTE {initialize.longest.label}

ITERATE {longest.label.pass}

FUNCTION {begin.bib}
{ preamble$ empty$
    'skip$
    { preamble$ write$ newline$ }
  if$
  "\begin{thebibliography}{"  longest.label  * "}" * write$ newline$
}

EXECUTE {begin.bib}

EXECUTE {init.state.consts}

ITERATE {call.type$}

FUNCTION {end.bib}
{ newline$
  "\end{thebibliography}" write$ newline$
}

EXECUTE {end.bib}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ipsjunsrt.bst	Sat Mar 21 19:15:03 2009 +0900
@@ -0,0 +1,1 @@
+% ipsjunsrt.bst 15-Jun-07 by Hiroshi Nakashima (ver 2.12)
% ipsjunsrt.bst 30-Jan-02 by Hiroshi Nakashima (ver 2.00)
% ipsjunsrt.bst 28-Dec-93 by Hiroshi Nakashima (ver 1.00)
% jssst.bst tomura@etl.go.jp (Satoru Tomura)
% BibTeX standard bibliography style `jplain'
	% version 0.10 for JBibTeX versions 0.10 or later, JLaTeX version 2.09.
	% by Shouichi Matsui, matsui@denken.junet

ENTRY
  { address
    author
    booktitle
    chapter
    edition
    editor
    howpublished
    institution
    journal
    key
    month
    note
    number
    organization
    pages
    publisher
    school
    series
    title
    type
    volume
    year
    yomi
  }
  {}
  { label }

INTEGERS { output.state before.all mid.sentence after.sentence after.block }

INTEGERS { before.year }

FUNCTION {init.state.consts}
{ #0 'before.all :=
  #1 'mid.sentence :=
  #2 'after.sentence :=
  #3 'after.block :=
  #4 'before.year :=					% 1.00(1)
}

STRINGS { s t }

FUNCTION {is.kanji}
{ is.kanji.str$ }					% 1.00(2), 2.00(1)

FUNCTION {output.nonnull}
{ 's :=
  output.state mid.sentence =
    { duplicate$ is.kanji				% 2.00(2)
	{ "C" * write$ }
	{ ", " * write$ }
      if$
    }
    { output.state after.block =
	{ add.period$ write$
	  newline$
	  "\newblock " write$
	}
	{ output.state before.all =
	    'write$
	    { output.state before.year =		% 1.00(1)
		{ " " * write$ }
		{ add.period$ " " * write$ }
	      if$
	    }
	  if$
	}
      if$
      mid.sentence 'output.state :=
    }
  if$
  s
}

FUNCTION {output}
{ duplicate$ empty$
    'pop$
    'output.nonnull
  if$
}

FUNCTION {required.argument}
{ 't :=
  empty$
    {"Missing required argument " t * " in " * cite$ * warning$}
    'skip$
  if$
}

FUNCTION {required.exclusive.or.argument}
{ 't :=
  empty$
    { 's := 
      empty$
        { t " or " * s * " is missing in " * cite$ * warning$}
        'skip$
      if$
    }
    { 's :=
      empty$
        'skip$
        { "You can use only one of " t * " and " * s * " in " * cite$ * warning$}
      if$
    }
  if$
}

FUNCTION {required.and.or.argument}
{ 't := empty$
     { 's := empty$
         { "there's no " t * " and/or " * s * cite$ * warning$ }
         'skip$
       if$
     }
     { pop$ pop$ }
  if$
}

FUNCTION {optional.series.volume.number.argument}
{ series empty$
    { volume empty$
        { number empty$
            'skip$
            { "there's a number but no series in " cite$ * warning$ }
          if$
        }
        { number empty$
            { "there's a volume but no series in " cite$ * warning$ }
            { "you can use only one of volume and number in " cite$ * warning$}
          if$
        }
     if$
    }
    { volume empty$
        { number empty$
            { "there's a series but neither volume nor number in " cite$ * warning$ }
            'skip$
          if$
        }
        { number empty$
            'skip$
            { "you can use only one of volume and number in " cite$ * warning$ }
          if$
        }
     if$
   }
   if$
}            

FUNCTION {output.bibitem}
{ newline$
  "\bibitem{" write$
  cite$ write$
  "}" write$
  newline$
  before.all 'output.state :=
}

FUNCTION {fin.entry}
{ add.period$
  write$
  newline$
}

FUNCTION {new.block}
{ output.state before.all =
    'skip$
    { after.block 'output.state := }
  if$
}

FUNCTION {new.sentence}
{ output.state after.block =
    'skip$
    { output.state before.all =
	'skip$
	{ after.sentence 'output.state := }
      if$
    }
  if$
}

FUNCTION {not}
{   { #0 }
    { #1 }
  if$
}

FUNCTION {and}
{   'skip$
    { pop$ #0 }
  if$
}

FUNCTION {or}
{   { pop$ #1 }
    'skip$
  if$
}

FUNCTION {new.block.checka}
{ empty$
    'skip$
    'new.block
  if$
}

FUNCTION {new.block.checkb}
{ empty$
  swap$ empty$
  and
    'skip$
    'new.block
  if$
}

FUNCTION {new.sentence.checka}
{ empty$
    'skip$
    'new.sentence
  if$
}

FUNCTION {new.sentence.checkb}
{ empty$
  swap$ empty$
  and
    'skip$
    'new.sentence
  if$
}

FUNCTION {field.or.null}
{ duplicate$ empty$
    { pop$ "" }
    'skip$
  if$
}

FUNCTION {emphasize}
{ duplicate$ empty$
    { pop$ "" }
    { duplicate$ is.kanji
        'skip$						% 1.00(3)
        { "{\em " swap$ * "}" * }			% 2.00(3)
      if$
    }
  if$
}

INTEGERS { nameptr namesleft numnames }

FUNCTION {format.names}					% 1.00(4), 2.00(4)
{ 's :=
  #1 'nameptr :=
  s num.names$ 'numnames :=
  numnames 'namesleft :=
    { namesleft #0 > }
    { s nameptr "{ff}{ll}" format.name$ duplicate$ is.kanji
	{ duplicate$ text.length$ #6 >
	    { 't := }
	    { pop$ s nameptr "{ff}@{ll}" format.name$ 't := }
	  if$
	}
        { pop$ s nameptr "{vv }{ll}{, jj}{, f.}" format.name$ 't := }
      if$
      nameptr #1 >
	{ namesleft #1 >
	    { s is.kanji
		{ "C" }
		{ ", " }
	      if$
	      * t * }
	    { t "others" =
		{ s is.kanji
			{"ق" * }
			{" et al." * }
		      if$
                }
		{ s is.kanji
			{"C" * t * }	% put "," here for Kanji (H.N.)
			{" and " * t * }
	     	      if$
		}
	      if$
	    }
	  if$
	}
	't
      if$
      nameptr #1 + 'nameptr :=
      namesleft #1 - 'namesleft :=
    }
  while$
}

FUNCTION {format.authors}
{ author empty$
    { "" }
    { author format.names }
  if$
}

FUNCTION {add.colon}					% 2.00(5)
{ duplicate$ is.kanji
    { "\F" * }						% 2.12(1)
    { ": " * }
  if$
}

FUNCTION {format.editors.inparen}			% 2.00(6)
{ editor empty$
    { "" }
    { editor format.names
      editor num.names$ #1 >
	{ editor is.kanji
		{"C" * } {", eds." *} if$
	}
	{ editor is.kanji
		{"C" *}  {", ed." *} if$
	}
      if$
    }
  if$
}

FUNCTION {format.editors}
{ editor empty$
    { "" }
    { editor format.names
      editor num.names$ #1 >
	{ editor is.kanji
		{"iҁj" * } {"(eds.)" *} if$		% 2.00(7)
	}
	{ editor is.kanji
		{"iҁj" *}  {"(ed.)" *} if$		% 2.00(7)
	}
      if$
    }
  if$
}

FUNCTION {n.dashify}
{ 't :=
  ""
    { t empty$ not }
    { t #1 #1 substring$ "-" =
	{ t #1 #2 substring$ "--" = not
	    { "--" *
	      t #2 global.max$ substring$ 't :=
	    }
	    {   { t #1 #1 substring$ "-" = }
		{ "-" *
		  t #2 global.max$ substring$ 't :=
		}
	      while$
	    }
	  if$
	}
	{ t #1 #1 substring$ *
	  t #2 global.max$ substring$ 't :=
	}
      if$
    }
  while$
}

FUNCTION {format.date}
{ before.year 'output.state :=				% 1.00(1)
  year empty$
    { month empty$
	{ "" }
	{ "there's a month but no year in " cite$ * warning$
          ""						% 1.00(5)
	}
      if$
    }
    { "(" year ")" * * }				% 1.00(5)
  if$
}

FUNCTION {tie.or.space.connect}
{ duplicate$ text.length$ #3 <
    { "~" }
    { "\ " }						% 1.00(6)
  if$
  swap$ * *
}

FUNCTION {output.volume}
{ 
  volume empty$
    'skip$
    { "Vol.~" volume * output}
  if$

}

FUNCTION {output.number}
{
  number empty$
    'skip$
    { "No.~" number * output}
  if$
}

FUNCTION {output.series.volume.number}
{ series empty$
    { output.volume
      output.number }
    { series is.kanji
      volume empty$
      number empty$
      or
      and
        { series " " * volume * number * output}
        { series output
          output.volume
          output.number}
      if$
   }
 if$
}

FUNCTION {format.edition}
{ edition empty$
    { "" }
    { output.state mid.sentence =
	{ edition "l" change.case$ " edition" * }
	{ edition "t" change.case$ " edition" * }
      if$
    }
  if$
}

INTEGERS { multiresult }

FUNCTION {multi.page.check}
{ 't :=
  #0 'multiresult :=
    { multiresult not
      t empty$ not
      and
    }
    { t #1 #1 substring$
      duplicate$ "-" =
      swap$ duplicate$ "," =
      swap$ "+" =
      or or
	{ #1 'multiresult := }
	{ t #2 global.max$ substring$ 't := }
      if$
    }
  while$
  multiresult
}

FUNCTION {format.pages}					% 1.00(7)
{ pages empty$
    { "" }
    { pages multi.page.check
	{ "pp." pages n.dashify tie.or.space.connect }
	{ "p." pages tie.or.space.connect }
      if$
    }
  if$
}

FUNCTION {format.vol.num.pages}				% 1.00(8)
{ volume empty$
  { ""}
  { " Vol.~" volume * }
  if$ 
  number empty$
    'skip$
    { volume empty$
	{ "there's a number but no volume in " cite$ * warning$ }
	{ "," *}
      if$
      " No.~" number * *
    }
  if$
  pages empty$
    'skip$
    { duplicate$ empty$
	{ pop$ format.pages }
	{ ", " * format.pages * }
      if$
    }
  if$
}

FUNCTION {format.chapter.pages}
{ chapter empty$
    'format.pages
    { type empty$
	{ "chapter" chapter tie.or.space.connect }
        { type is.kanji 
             { chapter type tie.or.space.connect }
             { type "l" change.case$ chapter tie.or.space.connect }
          if$
        }
      if$
      pages empty$
	'skip$
	{ ", " * format.pages * }
      if$
    }
  if$
}

FUNCTION {format.in.ed.booktitle}
{ booktitle empty$
    { "" }
    { booktitle emphasize
      editor empty$
	'skip$
	{ booktitle is.kanji
	    { "i" * format.editors.inparen * "j" *}	% 2.00(6,7)
	    { " (" * format.editors.inparen * ")" *}	% 1.00(9), 2.00(6)
	  if$
	}
      if$
    }
  if$
}

FUNCTION {empty.misc.check}
{ author empty$ title empty$ howpublished empty$
  month empty$ year empty$ note empty$
  and and and and and
  key empty$ not and
    { "all relevant fields are empty in " cite$ * warning$ }
    'skip$
  if$
}

FUNCTION {format.thesis.type}
{ type empty$
    'skip$
    { pop$
      type "t" change.case$
    }
  if$
}

FUNCTION {format.tr.number}
{ type empty$
    { title empty$
        { "Technical Report" }
        { title is.kanji
            { "Zp" }
            { "Technical Report" }
          if$
        }
      if$
    }
    {type}
  if$
  number empty$
    { "t" change.case$ }
    { " " number * * }
  if$
}

FUNCTION {format.article.crossref}			% 2.00(8)
{ key empty$
    { journal empty$
	{ "need key or journal for " cite$ * " to crossref " * crossref *
	  warning$
	  ""
	}
	{ journal emphasize }				% 1.00(10)
      if$
    }
    { "In " key * }
  if$
  " \cite{" * crossref * "}" *
}

FUNCTION {format.crossref.editor}			% 1.00(11)
{ editor #1
  editor is.kanji { "{ff}" } { "{vv }{ll}" } if$
  format.name$
  editor num.names$ duplicate$
  #2 >
    { editor is.kanji
	  {pop$ "ق" *} {pop$ " et al." * } if$
    }
    { #2 <
	'skip$
	{ editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
	    { editor is.kanji
		{"ق" *} {" et al." * } if$
	    }
	    { editor is.kanji
		{"E" * editor #2 "{ff}" format.name$ * }
		{" and " * editor #2 "{vv }{ll}" format.name$ * }
	      if$
	    }
	  if$
	}
      if$
    }
  if$
}

FUNCTION {format.book.crossref}				% 2.00(8)
{ editor empty$
  editor field.or.null author field.or.null =
  or
    { key empty$
	{ series empty$
	    { "need editor, key, or series for " cite$ * " to crossref " *
	      crossref * warning$
	      ""
	    }
	    { series emphasize }			% 1.00(10)
	  if$
	}
	{ "In " key * }
      if$
    }
    { format.crossref.editor }
  if$
  " \cite{" * crossref * "}" *
  volume empty$
    { "empty volume in " cite$ * "'s crossref of " * crossref * warning$ }
    { duplicate$ is.kanji { "C" } { ", "} if$ *
      "Vol." * volume tie.or.space.connect
    }
  if$
}

FUNCTION {format.incoll.inproc.crossref}		% 2.00(8)
{ editor empty$
  editor field.or.null author field.or.null =
  or
    { key empty$
	{ booktitle empty$
	    { "need editor, key, or booktitle for " cite$ * " to crossref " *
	      crossref * warning$
	      ""
	    }
	    { booktitle emphasize }			% 1.00(10)
	  if$
	}
	{ "In " key * }
      if$
    }
    { format.crossref.editor }
  if$
  " \cite{" * crossref * "}" *
}

FUNCTION {article}
{ 
%%%%
  author  "author"  required.argument
  title   "title"   required.argument
  journal "journal" required.argument
  year    "year"    required.argument
%%%% jssst
  volume  "volume"  
  number  "number"  
     required.and.or.argument
  pages   "pages"   required.argument
%%%%
  output.bibitem 
  format.authors add.colon				% 2.00(5)
  title output
  crossref missing$
    { journal emphasize output
      format.vol.num.pages output			% 1.00(12)
      format.date output
    }
    { format.article.crossref output.nonnull
      format.pages output
    }
  if$
  new.block
  note output
  fin.entry
}

FUNCTION {book}
{ 
%%%%
  author  "author"
  editor  "editor"
    required.exclusive.or.argument
  title   "title"  required.argument
  publisher "publisher" required.argument
  year    "year" required.argument
  optional.series.volume.number.argument
%%%%
  output.bibitem
  author empty$
    { format.editors}
    { format.authors}
  if$
  add.colon						% 2.00(5)
  title emphasize output
  crossref missing$
    { output.series.volume.number
      publisher output
      address output
    }
    { new.block
      format.book.crossref output.nonnull
    }
  if$
  format.edition output
  format.date output
  new.block
  note output
  fin.entry
}

FUNCTION {booklet}
{
%%%%
  title   "title"   required.argument
%%%% jssst
  author  "author"  required.argument
%%%%
  output.bibitem
  format.authors add.colon				% 2.00(5)
  title output
  howpublished output
  address output
  format.date output
  new.block
  note output
  fin.entry
}

FUNCTION {inbook}
{ 
%%%%
  author  "author"
  editor  "editor"
     required.exclusive.or.argument
  title   "title"  required.argument
  chapter "chapter"
  pages   "pages"
     required.and.or.argument
  publisher  "publisher" required.argument
  year       "year"      required.argument

  optional.series.volume.number.argument
%%%%
  output.bibitem 
  author empty$
    { format.editors}
    { format.authors}
  if$
  add.colon						% 2.00(5)
  title emphasize output
  crossref missing$
    { output.series.volume.number
      format.chapter.pages output
      publisher output
    }
    { format.chapter.pages output
      new.block
      format.book.crossref output.nonnull
    }
  if$
  format.edition output
  format.date output					% 1.00(13)
  new.block
  note output
  fin.entry
}

FUNCTION {incollection}
{
%%%%
  author    "author"    required.argument
  title     "title"     required.argument
  booktitle "booktitle" required.argument
  publisher "publisher" required.argument
  year      "year"      required.argument

  optional.series.volume.number.argument
%%%%
  output.bibitem
  format.authors add.colon				% 2.00(5)
  title output
  crossref missing$
    { format.in.ed.booktitle output
      output.series.volume.number
      publisher output
      address output
      format.edition output
      format.chapter.pages output			% 1.00(13)
      format.date output
    }
    { format.incoll.inproc.crossref output.nonnull
      format.chapter.pages output
    }
  if$
  new.block
  note output
  fin.entry
}

FUNCTION {inproceedings}
{
%%%%
  author    "author"    required.argument
  title     "title"     required.argument
  year      "year"      required.argument

  optional.series.volume.number.argument
%%%%
  output.bibitem 
  format.authors add.colon				% 2.00(5)
  title output
  crossref missing$
    { format.in.ed.booktitle output
      booktitle "booktitle" required.argument
      output.series.volume.number
      address output
      organization output
      publisher output
      format.pages output
      format.date output				% 1.00(13)
    }
    { format.incoll.inproc.crossref output.nonnull
      format.pages output
    }
  if$
  new.block
  note output
  fin.entry
}

FUNCTION {conference} { inproceedings }

FUNCTION {manual}
{	
%%%%
  title   "title"    required.argument
%%%% jssst
  author   "author"
  organization "organazaion"
     required.exclusive.or.argument
%%%%
  output.bibitem
  author empty$
    { organization}
    { format.authors}
  if$
  add.colon						% 2.00(5)
  title emphasize output
  author empty$
    'skip$
    { organization output }
  if$
  address output
  format.edition output
  format.date output
  new.block
  note output
  fin.entry
}

FUNCTION {mastersthesis}
{
%%%%
  author   "author"  required.argument
  title    "title"   required.argument
  school   "school"  required.argument
  year     "year"    required.argument
%%%%
  output.bibitem
  format.authors add.colon				% 2.00(5)
  title output
  author empty$
    { "Master's thesis" }
    { author is.kanji
        { "Cm_" }  
        { "Master's thesis" }
      if$
    }
  if$
  format.thesis.type output.nonnull
  school output
  address output
  format.date output
  new.block
  note output
  fin.entry
}

FUNCTION {misc}
{
%%%%
%%%% jssst
  author "author" required.argument
  title  "title"  required.argument
%%%%
  output.bibitem
  format.authors add.colon				% 2.00(5)
  title output
  howpublished output
  format.date output
  new.block
  note output
  fin.entry
  empty.misc.check
}

FUNCTION {phdthesis}
{
%%%%
  author   "author"  required.argument
  title    "title"   required.argument
  school   "school"  required.argument
  year     "year"    required.argument
%%%%
  output.bibitem 
  format.authors add.colon				% 2.00(5)
  title output						% 2.00(9)
  author empty$
    { "PhD Thesis" }
    { author is.kanji
        { "m_" }
        { "PhD Thesis" }
      if$
    }
  if$
  format.thesis.type output.nonnull
  school output
  address output
  format.date output
  new.block
  note output
  fin.entry
}

FUNCTION {proceedings}
{
%%%%
  title  "title"  required.argument
  year   "year"   required.argument

  optional.series.volume.number.argument
%%%% jssst
  editor  "editor"
  organization "organization"
      required.exclusive.or.argument 
%%%%
  output.bibitem 
  editor empty$
    { organization }
    { format.editors }
  if$
  add.colon						% 2.00(5)
  title emphasize output
  output.series.volume.number
  address output
  editor empty$
    'skip$
    { organization output }
  if$
  publisher output
  format.date output
  new.block
  note output
  fin.entry
}

FUNCTION {techreport}
{
%%%%
  author   "author"   required.argument
  title    "title"    required.argument
  institution "institution" required.argument
  year     "year"     required.argument
%%%%
  output.bibitem
  format.authors add.colon				% 2.00(5)
  title output
  format.tr.number output.nonnull
  institution output
  address output
  format.date output
  new.block
  note output
  fin.entry
}

FUNCTION {unpublished}
{
%%%%
  author   "author"   required.argument
  title    "title"    required.argument
  note     "note"     required.argument
%%%%
  output.bibitem
  format.authors add.colon				% 2.00(5)
  title output
  format.date output
  new.block
  note output
  fin.entry
}

FUNCTION {default.type} { misc }

MACRO {jan} {"January"}

MACRO {feb} {"February"}

MACRO {mar} {"March"}

MACRO {apr} {"April"}

MACRO {may} {"May"}

MACRO {jun} {"June"}

MACRO {jul} {"July"}

MACRO {aug} {"August"}

MACRO {sep} {"September"}

MACRO {oct} {"October"}

MACRO {nov} {"November"}

MACRO {dec} {"December"}

MACRO {acmcs} {"ACM Computing Surveys"}

MACRO {acta} {"Acta Informatica"}

MACRO {cacm} {"Communications of the ACM"}

MACRO {ibmjrd} {"IBM Journal of Research and Development"}

MACRO {ibmsj} {"IBM Systems Journal"}

MACRO {ieeese} {"IEEE Transactions on Software Engineering"}

MACRO {ieeetc} {"IEEE Transactions on Computers"}

MACRO {ieeetcad}
 {"IEEE Transactions on Computer-Aided Design of Integrated Circuits"}

MACRO {ipl} {"Information Processing Letters"}

MACRO {jacm} {"Journal of the ACM"}

MACRO {jcss} {"Journal of Computer and System Sciences"}

MACRO {scp} {"Science of Computer Programming"}

MACRO {sicomp} {"SIAM Journal on Computing"}

MACRO {tocs} {"ACM Transactions on Computer Systems"}

MACRO {tods} {"ACM Transactions on Database Systems"}

MACRO {tog} {"ACM Transactions on Graphics"}

MACRO {toms} {"ACM Transactions on Mathematical Software"}

MACRO {toois} {"ACM Transactions on Office Information Systems"}

MACRO {toplas} {"ACM Transactions on Programming Languages and Systems"}

MACRO {tcs} {"Theoretical Computer Science"}

READ

STRINGS { longest.label }

INTEGERS { number.label longest.label.width }

FUNCTION {initialize.longest.label}
{ "" 'longest.label :=
  #1 'number.label :=
  #0 'longest.label.width :=
}

FUNCTION {longest.label.pass}
{ number.label int.to.str$ 'label :=
  number.label #1 + 'number.label :=
  label width$ longest.label.width >
    { label 'longest.label :=
      label width$ 'longest.label.width :=
    }
    'skip$
  if$
}

EXECUTE {initialize.longest.label}

ITERATE {longest.label.pass}

FUNCTION {begin.bib}
{ preamble$ empty$
    'skip$
    { preamble$ write$ newline$ }
  if$
  "\begin{thebibliography}{"  longest.label  * "}" * write$ newline$
}

EXECUTE {begin.bib}

EXECUTE {init.state.consts}

ITERATE {call.type$}

FUNCTION {end.bib}
{ newline$
  "\end{thebibliography}" write$ newline$
}

EXECUTE {end.bib}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/linda-sigos.mm	Sat Mar 21 19:15:03 2009 +0900
@@ -0,0 +1,64 @@
+<map version="0.8.0">
+<!-- To view this file, download free mind mapping software FreeMind from http://freemind.sourceforge.net -->
+<node CREATED="1237626454149" ID="Freemind_Link_595012943" MODIFIED="1237626564702" TEXT="Meta Protocol for Federated Linda">
+<node CREATED="1237626571436" ID="_" MODIFIED="1237626577261" POSITION="right" TEXT="Federated Linda">
+<node CREATED="1237626583170" ID="Freemind_Link_348223592" MODIFIED="1237626598389" TEXT="in/out/rd"/>
+<node CREATED="1237626600146" ID="Freemind_Link_1802133687" MODIFIED="1237626605413" TEXT="asynchronous"/>
+<node CREATED="1237626769303" ID="Freemind_Link_1010430147" MODIFIED="1237626773988" TEXT="single threaded server"/>
+</node>
+<node CREATED="1237627126385" ID="Freemind_Link_229563083" MODIFIED="1237627129208" POSITION="right" TEXT="Type">
+<node CREATED="1237627129889" ID="Freemind_Link_1944023566" MODIFIED="1237627131157" TEXT="type 1"/>
+<node CREATED="1237627131785" ID="Freemind_Link_792345372" MODIFIED="1237627132828" TEXT="type 2"/>
+<node CREATED="1237627133425" ID="Freemind_Link_1256508474" MODIFIED="1237627134453" TEXT="type 3"/>
+</node>
+<node CREATED="1237626715808" ID="Freemind_Link_73805803" MODIFIED="1237626727763" POSITION="right" TEXT="Protocol Engine">
+<node CREATED="1237626728335" ID="Freemind_Link_534087848" MODIFIED="1237626741940" TEXT="outside of federated linda"/>
+</node>
+<node CREATED="1237626707056" ID="Freemind_Link_605366385" MODIFIED="1237626713651" POSITION="right" TEXT="MetaEngine">
+<node CREATED="1237626747127" ID="Freemind_Link_485247683" MODIFIED="1237626753651" TEXT="inside of federated linda"/>
+<node CREATED="1237626757567" ID="Freemind_Link_112711309" MODIFIED="1237626767171" TEXT="Part of federated linda main loop"/>
+</node>
+<node CREATED="1237627204338" ID="Freemind_Link_782444126" MODIFIED="1237627206614" POSITION="right" TEXT="comparison"/>
+<node CREATED="1237626926067" ID="Freemind_Link_1608247025" MODIFIED="1237626930062" POSITION="left" TEXT="target">
+<node CREATED="1237626938067" ID="Freemind_Link_460890202" MODIFIED="1237626946438" TEXT="distributed service"/>
+<node CREATED="1237626949922" ID="Freemind_Link_202224954" MODIFIED="1237626954454" TEXT="Overlay network"/>
+<node CREATED="1237626930466" ID="Freemind_Link_486035786" MODIFIED="1237626934686" TEXT="compact routing"/>
+</node>
+<node CREATED="1237627012915" ID="Freemind_Link_248177001" MODIFIED="1237627072669" POSITION="left" TEXT=" distributed programming methodology">
+<node CREATED="1237627021811" ID="Freemind_Link_430821126" MODIFIED="1237627057510" TEXT="stateless protocol engine"/>
+<node CREATED="1237627076434" ID="Freemind_Link_970475367" MODIFIED="1237627083893" TEXT="tuple space state"/>
+<node CREATED="1237627086650" ID="Freemind_Link_327029184" MODIFIED="1237627091461" TEXT="communication state"/>
+</node>
+<node CREATED="1237626611497" ID="Freemind_Link_1201415993" MODIFIED="1237626614117" POSITION="left" TEXT="debug">
+<node CREATED="1237626614874" ID="Freemind_Link_284798478" MODIFIED="1237626621797" TEXT="token ring"/>
+<node CREATED="1237626622945" ID="Freemind_Link_722460586" MODIFIED="1237626626165" TEXT="snapshot">
+<node CREATED="1237626639833" ID="Freemind_Link_1643581589" MODIFIED="1237626642709" TEXT="restartable"/>
+<node CREATED="1237626645457" ID="Freemind_Link_999195046" MODIFIED="1237626650437" TEXT="non restartable"/>
+</node>
+<node CREATED="1237627154753" ID="Freemind_Link_182961846" MODIFIED="1237627159156" TEXT="peeking tuple">
+<node CREATED="1237627161752" ID="Freemind_Link_1867370648" MODIFIED="1237627169972" TEXT="aggregate"/>
+<node CREATED="1237627171384" ID="Freemind_Link_1614411077" MODIFIED="1237627174772" TEXT="set operation"/>
+</node>
+<node CREATED="1237627189923" ID="Freemind_Link_1577931318" MODIFIED="1237627195046" TEXT="dead lock detection"/>
+<node CREATED="1237626626881" ID="Freemind_Link_713901390" MODIFIED="1237626634701" TEXT="start/stop"/>
+<node CREATED="1237626655345" ID="Freemind_Link_205386074" MODIFIED="1237626657581" TEXT="trigger"/>
+<node CREATED="1237626892811" ID="Freemind_Link_243753535" MODIFIED="1237626893814" TEXT="log">
+<node CREATED="1237626895171" ID="Freemind_Link_661382334" MODIFIED="1237626899382" TEXT="stored data"/>
+</node>
+</node>
+<node CREATED="1237626971218" ID="Freemind_Link_1874460934" MODIFIED="1237626973637" POSITION="left" TEXT="simulation">
+<node CREATED="1237626974009" ID="Freemind_Link_1236805566" MODIFIED="1237626977669" TEXT="on PC cluster"/>
+<node CREATED="1237626979634" ID="Freemind_Link_778996911" MODIFIED="1237626984245" TEXT="on real environment"/>
+</node>
+<node CREATED="1237626815042" ID="Freemind_Link_499297897" MODIFIED="1237626818813" POSITION="left" TEXT="scalability">
+<node CREATED="1237626819258" ID="Freemind_Link_714439094" MODIFIED="1237626824654" TEXT="ring is not scalable"/>
+</node>
+<node CREATED="1237626835218" ID="Freemind_Link_691131042" MODIFIED="1237626840885" POSITION="left" TEXT="observablility">
+<node CREATED="1237626908235" ID="Freemind_Link_450891366" MODIFIED="1237626913870" TEXT="not all the detail"/>
+</node>
+<node CREATED="1237626844929" ID="Freemind_Link_1610201815" MODIFIED="1237626861639" POSITION="left" TEXT="Interference">
+<node CREATED="1237626873123" ID="Freemind_Link_534667375" MODIFIED="1237626880055" TEXT="small number of packet"/>
+<node CREATED="1237626880475" ID="Freemind_Link_505857153" MODIFIED="1237626884519" TEXT="small size of packet"/>
+</node>
+</node>
+</map>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sigos.tex	Sat Mar 21 19:15:03 2009 +0900
@@ -0,0 +1,86 @@
+\documentclass[techrep]{ipsjpapers}
+\usepackage[dvipdfm]{graphicx}
+\usepackage{url}
+
+% \input{dummy.tex} %% Font 
+
+% ユーザが定義したマクロなど.
+\makeatletter
+
+\begin{document}
+
+% 和文表題
+\title{Cell Task Manager Cerium のSPU内データ管理}
+% 英文表題
+\etitle{}
+
+% 所属ラベルの定義
+\affilabel{1}{琉球大学理工学研究科情報工学専攻 \\Interdisciplinary Infomation Engineering, Graduate School of Engineering and Science, University of the Ryukyus.}
+\affilabel{2}{琉球大学工学部情報工学科\\Infomation Engineering, University of the Ryukyus.}
+\affilabel{3}{琉球大学理工学研究科情報工学専攻 \\Interdisciplinary Infomation Engineering, Graduate School of Engineering and Science, University of the Ryukyus.}
+\affilabel{4}{琉球大学工学部情報工学科\\Infomation Engineering, University of the Ryukyus.}
+
+% 和文著者名
+\author{
+  多賀野海人\affiref{4}\and
+  宮國 渡\affiref{1}\and
+  河野 真治\affiref{2}\and
+  小林佑亮\affiref{4}
+}
+
+% 英文著者名
+\eauthor{
+  Kaito TAGANO\affiref{4}\and
+  Wataru MIYAGUNI\affiref{1}\and
+  Shinji KONO\affiref{2}\and
+  Yusuke KOBAYASHI\affiref{4}
+}
+
+% 連絡先(投稿時に必要.製版用では無視される.)
+\contact{多賀野 海人\\
+        〒903-0213 沖縄県西原町千原1番地\\
+	琉球大学工学部情報工学科\\
+        TEL: (098)895-2221\qquad FAX: (098)895-8727\\
+        email: gongo@cr.ie.u-ryukyu.ac.jp} 
+
+% 和文概要
+\begin{abstract}
+PlayStation 3 では、
+搭載されている Linux を用いてゲームを開発することができるが、
+GPU の詳細が公開されていないため、
+Frame Buffer 上に描画する必要がある。
+Frame Buffer 上の描画は非常に低速である。
+本研究では Cell 用の Task Manager を実装し、
+Frame Buffer 上で高速な 3D Graphics Renderer を開発する。
+\end{abstract}
+% 英文概要
+\begin{eabstract}
+In PS3, the game can be developed by using installed Linux.
+However, because details of GPU are unpublished,
+it is necessary to draw on Frame Buffer. 
+Drawing on Frame Buffer is very low-speed. 
+In this research, we implement Task Manager for Cell and
+develop 3D Graphics Renderer high-speed on Frame Buffer. 
+\end{eabstract}
+
+% 表題などの出力
+\maketitle
+
+% 本文はここから始まる
+
+\input{introduction}   % 研究目的
+\input{cell}           % Cell
+\input{cerium}         % Cerium
+\input{texture}        % 開発過程
+\input{compare}        % 評価と考察
+\input{conclusion}     % まとめ
+
+\nocite{kono}
+\nocite{libspe2}
+\bibliographystyle{ipsjunsrt}
+\bibliography{sigos}
+
+%\input{bibliography}   % 参考文献
+
+
+\end{document}