changeset 0:58c6244a184d

programming symposium
author e095732 <e095732@ie.u-ryukyu.ac.jp>
date Thu, 15 Nov 2012 19:20:01 +0900
parents
children 608e032b0320
files Paper/bibsample.bib Paper/ebibsample.bib Paper/ipsjcommon.sty Paper/ipsjdrafts.sty Paper/ipsjpapers.cls Paper/ipsjpapers.sty Paper/ipsjsort.bst Paper/ipsjunsrt.bst Paper/sugi-prosym.aux Paper/sugi-prosym.dvi Paper/sugi-prosym.log Paper/sugi-prosym.pdf Paper/sugi-prosym.tex
diffstat 13 files changed, 387 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/bibsample.bib	Thu Nov 15 19:20:01 2012 +0900
@@ -0,0 +1,1 @@
+@book{total,
	author =	"伊藤 和人",
	yomi =		"Kazuto Itoh",
	title =		"{\LaTeX} トータルガイド",
	publisher =	"秀和システムトレーディング",
	year =		1991}
@book{latex,
	author =	"Leslie Lamport",
	title =		"A Document Preparation System {\LaTeX} User's Guide
			 \& Reference Manual",
	publisher = 	"Addison Wesley",
	address = 	"Reading, Massachusetts",
	year =		1986,
	note =		"(Cooke, E., et al.訳:文書処理システム {\LaTeX}," #
			"アスキー出版局 (1990))"}
@book{nodera,
	author =	"野寺 隆志",
	yomi =		"Takashi Nodera",
	title = 	"楽々 {\LaTeX}", 
	publisher =	"共立出版",
	year =		1990}
@book{okumura,
	author =	"奥村 晴彦",
	yomi =		"Haruhiko Okudera",
	title =		"{\LaTeX} 美文書作成入門",
	publisher =	"技術評論社",
	year =		1991}
@article{article1,
	author =	"桜井 貴文",
	yomi =		"Sakurai, Takafumi",
	title =		"直観主義論理と型理論",
	journal =	"情報処理",
	volume =	30,
	number =	6,
	pages =		"626--634",
	year =		1989}
@article{article2,
	author =	"野口 健一郎 and 大谷 真",
	yomi =		"Noguchi, K and Ohtani, M",
	title =		"OSIの実現とその課題",
	journal =	"情報処理",
	volume =	31,
	number =	9,
	pages =		"1235-1244",
	year =		1990}
@article{article3,
	author =	"Ssss Itoh and Nnnn Goto",
	title =		"An Adaptive Noiseless Coding for Sources with Big
			 Alphabet Size",
	journal =	"Trans. IEICE",
	volume =	"E74",
	number =	9,
	pages =		"2495--2503",
	year =		1991,
	month =		sep}
@article{article4,
	author =	"田中 {正次} and 村松 茂 and 山下 茂",
	yomi =		"Tanaka, S and Muramatsu, S and Yamashita, S",
	title =		"9段数7次陽的Runge-Kutta法の最適化について",
	journal =	"情報処理学会論文誌",
	volume =	33,
	number =	12,
	pages =		"1512--1526",
	year =		1992}
@article{article5,
	author =	"K. Abrahamson and N. Dadoun and " #
			"D. G. Kirkpatrick and T. Przytycka",
	title =		"A Simple Parallel Tree Contraction Algorithm",
	journal =	"J. Algorithms",
	volume =	10,
	number =	2,
	pages =		"287--302",
	year =		1989}
@article{article6,
	author =	"田中 {正次} and others",
	title =		"9段数7次陽的Runge-Kutta法の次数条件式の解について",
	journal =	"情報処理学会論文誌",
	volume =	33,
	number =	12,
	pages =		"1506--1511",
	year =		1992}

@book{book1,
	author =	"J. D. Foley and others",
	title =		"Computer Graphics --- Principles and Practice",
	series =	"System Programming Series",
	publisher =	"Addison-Wesley",
	address =	"Reading, Massachusetts",
	edition =	"2nd",
	year =		1990}
@book{book2,
	author =	"千葉 則茂 and 村岡 一信",
	yomi =		"Chiba, N. and Muraoka, K.",
	title =		"レイトレーシングCG入門",
	series =	"Information {\&} Computing",
	volume =	46,
	publisher =	"サイエンス社",
	year =		1990}
@book{book3,
	author =	"Chang, C. L. and Lee, R. C. T.",
	title =		"Symbolic Logic and Mechanical Theorem Proving",
	publisher =	"Academic Press",
	address =	"New York",
	year =		1973,
	note =		"(長尾真,辻井潤一訳: " #
			"計算機による定理の自動証明, " #
			"日本コンピュータ協会 (1983))"}
@booklet{booklet1,
	author =	"新世代コンピュータ技術開発機構",
	title =		"第五世代コンピュータプロジェクトの概要",
	howpublished =	"{FGCS'92}にて配布",
	year =		1992}

@inbook{inbook1,
	author =	"Knuth, D. E.",
	title =		"Fundamental Algorithms",
	series =	"Art of Computer Programming",
	volume =	1,
	chapter =	2,
	pages =		"371--381",
	publisher =	"Addison-Wesley",
	address =	"Reading, Massachusetts",
	edition =	"2nd",
	year =		1973}

@incollection{incollection1,
	author =	"Schwartz, Aaaa Jjjj",
	title =		"Subdividing B{\'e}zier Curves and Surfaces",
	booktitle =	"Geometric Modeling: Algorithms and New Trends",
	editor =	"Farin, G. E.",
	publisher =	"SIAM",
	address =	"Philadelphia",
	pages =		"55--66",
	year =		1987}

@inproceedings{inproceedings1,
	author =	"Baraff, D",
	title =		"Curved Surfaces and Coherence for Non-penetrating
			 Rigid Body Simulation",
	booktitle =	"SIGGRAPH '90 Proceedings",
	pages =		"19--28",
	editor =	"Beach, R. J.",
	address =	"Dallas, Texas",
	organization =	"ACM",
	publisher =	"Addison-Wesley",
	year =		1990}

@manual{manual1,
	organization =	"Adobe Systems Inc.",
	title =		"PostScript Language Reference Manual",
	publisher =	"Addison-Wesley",
	address =	"Reading, Massachusetts",
	year =		1985}

@mastersthesis{mastersthesis1,
	author =	"山下 義行",
	yomi =		"Yamashita, Y",
	title =		"文脈自由文法への否定の導入",
	school =	"筑波大学大学院工学研究科",
	year =		1989}


@misc{misc1,
	author =	"斉藤 康己 and 中島 浩",
	title =		"{{\tt ipsjpapers.sty}}",
	note =		"(情報処理学会論文誌用スタイルファイル," #
			"論文著者に配布)",
	year =		1995}

@phdthesis{phdthesis1,
	author =	"Weihl, W.",
	title =		"Specification and Implementation of
			 Atomic Data Types",
	school =	"MIT",
	address =	"Boston",
	year =		1984}

@proceedings{proceedings1,
	title =		"Proc. Intl. Conf. on Fifth Generation Computer
			 Systems",
	organization =	"Institute for New Generation Computer Technology",
	volume =	1,
	year =		1992}

@techreport{techreport1,
	author =	"Ihsakat Aredon",
	title =		"{\TeX} 独稽古",
	type =		"Seminar on Mathematical Sciences",
	number =	13,
	institution =	"Department of Mathematics, Keio University",
	address =	"Yokohama",
	year =		1989}

@unpublished{unpublished,
	author =	"情報処理学会論文誌編集委員会",
	title =		"{\LaTeX}による論文作成のガイド(第1版)",
	note =		"(論文著者に配布)",
	year =		1995}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/ebibsample.bib	Thu Nov 15 19:20:01 2012 +0900
@@ -0,0 +1,1 @@
+@book{companion,
	author =	"Michael Goossens and Frank Mittelbach and
			 Alexander Samarin",
	title =		"The LaTeX Companion",
	publisher =	"Addison Wesley",
	address =	"Reading, Massachusetts",
	year =		1993}
@book{latex,
	author =	"Leslie Lamport",
	title =		"A Document Preparation System {\LaTeX} User's Guide
			 \& Reference Manual",
	publisher = 	"Addison Wesley",
	address = 	"Reading, Massachusetts",
	year =		1986}
@article{article1,
	author =	"Ssss Itoh and Nnnn Goto",
	title =		"An Adaptive Noiseless Coding for Sources with Big
			 Alphabet Size",
	journal =	"Trans. IEICE",
	volume =	"E74",
	number =	9,
	pages =		"2495--2503",
	year =		1991,
	month =		sep}
@article{article2,
	author =	"K. Abrahamson and N. Dadoun and " #
			"D. G. Kirkpatrick and T. Przytycka",
	title =		"A Simple Parallel Tree Contraction Algorithm",
	journal =	"J. Algorithms",
	volume =	10,
	number =	2,
	pages =		"287--302",
	year =		1989}

@book{book1,
	author =	"J. D. Foley and others",
	title =		"Computer Graphics --- Principles and Practice",
	series =	"System Programming Series",
	publisher =	"Addison-Wesley",
	address =	"Reading, Massachusetts",
	edition =	"2nd",
	year =		1990}
@book{book2,
	author =	"Chang, C. L. and Lee, R. C. T.",
	title =		"Symbolic Logic and Mechanical Theorem Proving",
	publisher =	"Academic Press",
	address =	"New York",
	year =		1973}

@booklet{booklet1,
	author =	"{Institute for New Generation Computer Technology}",
	title =		"Overview of the Fifth Generation Computer Project",
	howpublished =	"distributed in {FGCS'92}",
	year =		1992,
	note =		"(in Japanese)"}

@inbook{inbook1,
	author =	"Knuth, D. E.",
	title =		"Fundamental Algorithms",
	series =	"Art of Computer Programming",
	volume =	1,
	chapter =	2,
	pages =		"371--381",
	publisher =	"Addison-Wesley",
	address =	"Reading, Massachusetts",
	edition =	"2nd",
	year =		1973}

@incollection{incollection1,
	author =	"Schwartz, Aaaa Jjjj",
	title =		"Subdividing B{\'e}zier Curves and Surfaces",
	booktitle =	"Geometric Modeling: Algorithms and New Trends",
	editor =	"Farin, G. E.",
	publisher =	"SIAM",
	address =	"Philadelphia",
	pages =		"55--66",
	year =		1987}

@inproceedings{inproceedings1,
	author =	"Baraff, D",
	title =		"Curved Surfaces and Coherence for Non-penetrating
			 Rigid Body Simulation",
	booktitle =	"SIGGRAPH '90 Proceedings",
	pages =		"19--28",
	editor =	"Beach, R. J.",
	address =	"Dallas, Texas",
	organization =	"ACM",
	publisher =	"Addison-Wesley",
	year =		1990}

@manual{manual1,
	organization =	"Adobe Systems Inc.",
	title =		"PostScript Language Reference Manual",
	publisher =	"Addison-Wesley",
	address =	"Reading, Massachusetts",
	year =		1985}

@mastersthesis{mastersthesis1,
	author =	"Kazuhiro Ohno",
	title =		"Efficient Message Communication of Concurrent Logic
			 Programming Language KL1 Based on Static Analysis",
	school =	"Dept. Information Science, Kyoto University",
	year =		1995}

@misc{misc1,
	author =	"Yasuki Saito and Hiroshi Nakashima",
	title =		"{{\tt ipsjpapers.sty}}",
	note =		"(Style file for Trans. IPSJ distributed to authors.)",
	year =		1995}

@phdthesis{phdthesis1,
	author =	"Weihl, W.",
	title =		"Specification and Implementation of
			 Atomic Data Types",
	school =	"MIT",
	address =	"Boston",
	year =		1984}

@proceedings{proceedings1,
	title =		"Proc. Intl. Conf. on Fifth Generation Computer
			 Systems",
	organization =	"Institute for New Generation Computer Technology",
	volume =	1,
	year =		1992}

@techreport{WarD:WAM-1,
	author =	"David H. D. Warren",
	title =		"An Abstract {Prolog} Instruction Set",
	type =		"Technical Report",
	number =	309,
	institution =	"Artificial Intelligence Center, SRI International",
	year =		1983,
	month =		oct}

@unpublished{unpublished,
	author =	"{Editorial Board of Trans. IPSJ}",
	title =		"How to Typeset Your Papers in {\LaTeX} (Version 1)",
	note =		"(distributed to authors)",
	year =		1995}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/ipsjcommon.sty	Thu Nov 15 19:20:01 2012 +0900
@@ -0,0 +1,1 @@
+% Copyright (C) 1995,1996,1997,1998,1999,2000,2001
%			by Hiroshi Nakashima, Yasuki Saito and
%                          The Editorial Board of the IPSJ Journal
%
% ipsjcommon.sty 15-May-01 by Hiroshi Nakashima (ver 2.08)
% (revision history deleted)
% ipsjcommon.sty 24-Apr-95 by Hiroshi Nakashima (ver 1.0)

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

% \section:	2行取り
% others:	1行取り
%
% 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 付録\fi}}}
\def\sec@oappendix[#1]{\sec@sec*{\ifDS@english Appendix: \else
	付録\hskip\jspaceskip\fi #1}}
\def\appendixprefix{A.}
\def\appendixpostfix{}

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

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

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

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

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

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

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

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

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

\@listi

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

\prebreakpenalty`・=\@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
\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)<<

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

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

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

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

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

\endinput
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/ipsjdrafts.sty	Thu Nov 15 19:20:01 2012 +0900
@@ -0,0 +1,1 @@
+% Copyright (C) 1995,1996,1997,1998,1999,2000,2001
%			by Hiroshi Nakashima, Yasuki Saito and
%                          The Editorial Board of the IPSJ Journal
%
% ipsjdrafts.sty  5-Jun-00 by Hiroshi Nakashima (ver 2.07)
% (revision history deleted)
% ipsjdrafts.sty 24-Apr-95 by Hiroshi Nakashima (ver 1.0)

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

\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

\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{\ifASCII \the\jfont \else \sixdm \fi}}
\let\fn@fontvi\fn@fontv

\@normalsize 

\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								% 1.06(2) <<

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

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

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

\newdimen\@mojihaba
\@mojihaba\jspaceskip

% 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\@@topmargin\topmargin\fi\fi			% 2.00(4)

\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 論文}
%	\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
%	連絡先
%	\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 required in draft.
\def\contact{\long\def\mkt@contact}
\def\mkt@contact{\leavevmode\mkt@warning\contact}

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

\def\@maketitle{\newpage\thispagestyle{empty}
	\leftline{\LARGE
		\ifDS@english \ifDS@technote Technical Note\else
			Regular Paper\fi
		\else \ifDS@technote テクニカルノート\else 論文\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
	\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 連絡先\fi
	\endgroup
	\begin{itemize}\large\item[]\mkt@contact\end{itemize}
	\vfill\vfill\newpage \setcounter{page}{1}\def\thepage{\roman{page}}
	\ifDS@english\else \@abstract \centerline{\bf 概要}
		\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}{現在 #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{[正会員\##1]}}
\def\mkt@nomember{\ \hbox{[非会員]}}
\def\mkt@stmember#1{\ \hbox{[学生会員\##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}\expandafter\let\csname c@巻数\endcsname\c@volume
\newcounter{number}\expandafter\let\csname c@号数\endcsname\c@number
\newcounter{year}\expandafter\let\csname c@年数\endcsname\c@year

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

% \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 年 \the\month 月 \the\day 日}
\fi

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

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

\def\受付#1#2#3{}\let\received\受付
\def\採録#1#2#3{}\let\accepted\採録

\def\biography{\let\member\@gobble \let\nomember\@gobble \let\stmember\@gobble
	\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}

\let\id@enddocument\enddocument
\def\enddocument{\clearpage \unvbox\ack@box \id@enddocument}

\endinput
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/ipsjpapers.cls	Thu Nov 15 19:20:01 2012 +0900
@@ -0,0 +1,1 @@
+% Copyright (C) 1995,1996,1997,1998,1999,2000,2001
%			by Hiroshi Nakashima, Yasuki Saito and
%                          The Editorial Board of the IPSJ Journal
%
% ipsjpapers.cls 15-May-01 by Hiroshi Nakashima (ver 2.08)
% (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}[2001/05/01 ver 2.08]
\input{ipsjpapers.sty}
\endinput
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/ipsjpapers.sty	Thu Nov 15 19:20:01 2012 +0900
@@ -0,0 +1,1 @@
+% Copyright (C) 1995,1996,1997,1998,1999,2000,2001
%			by Hiroshi Nakashima, Yasuki Saito and
%                          The Editorial Board of the IPSJ Journal
%
% ipsjpapers.sty 15-May-01 by Hiroshi Nakashima (ver 2.08)
% (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\ifASCII \ASCIIfalse
\ifx\jintercharskip\undefined\ASCIItrue\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)

\if@LaTeX@eN
\DeclareOption{printer}{\DS@printertrue}
\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{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 2.08) <15 May 2001>.}	% 2.05(1)
\fi

\def\ds@printer{\DS@printertrue}
\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)

% 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
% 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								% 2.03(1) <<

%%%%%% 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{\the\jfont}
	\expandafter\global\expandafter\let\expandafter#1\@tempa}}  % 2.00(5)<<

\ifDS@printer	% ASCII LaTeX2e printer
\DeclareFontShape{JY1}{mc}{m}{n}{%
	<5>	sfixed*	[5.175]	min5	% 7Q/w5 = 4.97922/4.81108=1.035
	<6>	sfixed*	[5.916]	min6	% 8Q/w6 = 5.69055/5.77328=0.986
	<7>	sfixed*	[7.392]	min7	%10Q/w7 = 7.11304/6.73550=1.056
	<8>	sfixed*	[8.128]	min8	%11Q/w8 = 7.82434/7.69772=1.016
	<9>	sfixed*	[8.872]	min8	%12Q/w8 = 8.53564/7.69772=1.109
	<10>	sfixed*	[9.610]	min10	%13Q/w10= 9.24695/9.62216=0.961
	<10.95>	sfixed*	[11.09]	min10	%15Q/w10=10.66956/9.62216=1.109
	<12>	sfixed*	[11.83]	min10	%16Q/w10=11.38110/9.62216=1.183
	<14.4>	sfixed*	[13.31]	min10	%18Q/w10=12.80347/9.62216=1.331
}{}
\DeclareFontShape{JY1}{gt}{m}{n}{%
	<5>	sfixed*	[5.175]	goth5	% 7Q/w5 = 4.97922/4.81108=1.035
	<6>	sfixed*	[5.916]	goth6	% 8Q/w6 = 5.69055/5.77328=0.986
	<7>	sfixed*	[7.392]	goth7	%10Q/w7 = 7.11304/6.73550=1.056
	<8>	sfixed*	[8.128]	goth8	%11Q/w8 = 7.82434/7.69772=1.016
	<9>	sfixed*	[8.872]	goth8	%12Q/w8 = 8.53564/7.69772=1.109
	<10>	sfixed*	[9.610]	goth10	%13Q/w10= 9.24695/9.62216=0.961
	<10.95>	sfixed*	[11.09]	goth10	%15Q/w10=10.66956/9.62216=1.109
	<12>	sfixed*	[11.83]	goth10	%16Q/w10=11.38110/9.62216=1.183
	<14.4>	sfixed*	[13.31]	goth10	%18Q/w10=12.80347/9.62216=1.331
}{}

\ipsj@declare@font\fn@fontvii\mcfamily\@vpt

%% The following fonts are out of NFSS scheme
\font\fn@fontv		min5	scaled739	% 5Q/w5 = 3.55658/4.81108=0.739
\font\fn@fontvi		min5	scaled887	% 6Q/w5 = 4.26790/4.81108=0.887
\font\fn@fontxv		goth10  scaled1035	%14Q/w10= 9.95846/9.62216=1.035

\else		% ASCII LaTeX2e non-printer
\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

\else		% 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
% 2.00(4) <<

\else		% LaTeX 2.09					% 2.00(4)
%% Fonts for ASCII TeX. (H.N.)
\ifASCII
\ifDS@printer
\font\fn@fontv		min5	scaled739	% 5Q/w5 = 3.55658/4.81108=0.739
\font\fn@fontvi		min5	scaled887	% 6Q/w5 = 4.26790/4.81108=0.887
\font\fivedm		min5	scaled1035	% 7Q/w5 = 4.97922/4.81108=1.035
\font\fivedg		goth5	scaled1035
\font\sixdm		min6	scaled986	% 8Q/w6 = 5.69055/5.77328=0.986
\font\sixdg		goth6	scaled986
\font\sevendm		min7	scaled1056	%10Q/w7 = 7.11304/6.73550=1.056
\font\sevendg		goth7	scaled1056
\font\eightdm		min8	scaled1016	%11Q/w8 = 7.82434/7.69772=1.016
\font\eightdg		goth8	scaled1016
\font\eightdmhalf	min8	scaled1109	%12Q/w8 = 8.53564/7.69772=1.109
\font\eightdghalf	goth8	scaled1109
\font\tendm		min10	scaled961	%13Q/w10= 9.24695/9.62216=0.961
\font\tendg		goth10  scaled961
\font\fn@fontxv		goth10  scaled1035	%14Q/w10= 9.95846/9.62216=1.035
\font\tendmhalf		min10	scaled1109	%15Q/w10=10.66956/9.62216=1.109
\font\tendghalf		goth10	scaled1109
\font\twelvedm		min10	scaled1183	%16Q/w10=11.38110/9.62216=1.183
\font\twelvedg		goth10	scaled1183
\font\twelvedmhalf	min10	scaled1331	%18Q/w10=12.80347/9.62216=1.331
\font\twelvedghalf	goth10	scaled1331
\let\fn@fontvii\fivedm

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

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

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

								% 2.00(6)
								% 1.06(2)

%% ASCII doesn't have \dg nor \dm. (H.N.)
\def\dg{\protect\pdg}
\def\dm{\protect\pdm}
%% Redefine \gt and \mc
\def\gt{\protect\pdg}
\def\mc{\protect\pdm}
\let\pdm\relax

\else
%% 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
\fi

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

\ifASCII						% 1.06(3),2.00(6)>>
\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)<<
\else								% 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
\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								% 2.00(7)<<
\fi								% 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
\DeclareOldFontCommand{\mc}{\normalfont\mcfamily}{\mathmc}
\DeclareOldFontCommand{\gt}{\normalfont\gtfamily}{\mathgt}
\fi\fi
\ifASCII
\def\dm{\mc}
\def\dg{\gt}
\fi\fi								% 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}
\ifASCII
\def\ipsj@setjspaceskip{\jspaceskip1zw\relax}
\else
\let\ipsj@setjspaceskip\relax
\fi						% 1.06(4),2.00(9),2.04(3)<<

%% \vipt etc. are redefined to use appropriate Japanese fonts.
\else								% 2.00(9)
\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								% 2.00(9)

\if@LaTeX@e							% 1.06(5)
\let\@ixptboldmath\relax					% 1.06(5)
\else								% 1.06(5)
% 1.02(2) >>
\ifDS@printer
\def\@ixptboldmath{%
	\def\unboldmath{\everymath{}\everydisplay{}\@nomath\unboldmath
		\textfont\@ne\ninmi 
		\textfont\tw@\ninsy \textfont\lyfam\ninly
		\@boldfalse}\@boldfalse
	\def\boldmath{\@ifundefined{ninmib}{%
		\global\font\ninmib\@mbi\@ptscale9\relax
		\global\font\ninsyb\@mbsy\@ptscale9\relax
		\global\font\ninlyb\@lasyb\@ptscale9\relax
		\@addfontinfo\@ixpt
			{\def\boldmath{\everymath{\mit}\everydisplay{\mit}%
				\@prtct\@nomathbold
				\textfont\@ne\ninmib \textfont\tw@\ninsyb 
				\textfont\lyfam\ninlyb \@prtct\@boldtrue}}}{}%
	\@ixpt\boldmath}}
\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
% 1.02(2) <<
\fi								% 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	16Q		  \large	11	18Q (*)
% \small	 9	15Q		  \Large	12	22Q
% \footnotesize	 8	13Q		  \LARGE	14	26Q (*)
% \scriptsize	 6	8pt (*)		  \huge		18	30Q (*)
% \tiny		 5	6pt (*)		  \Huge		18	30Q (*)
% * : not measured

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

\ifDS@techrep							% 1.05(2)>>
\def\@normalsize{\@setsize\normalsize{17\@Q}\xpt\@xpt}
\fi								% 1.05(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
% size		pt	\baselineskip	  size		\?pt	\baselineskip
% \normalsize	 9	19Q		  \large	10	19Q
% \small	 8	14Q		  \Large	11	22Q
% \footnotesize	 7	14Q		  \LARGE	12	18Q
% \scriptsize	 6	8pt (*)		  \huge		14	26Q
% \tiny		 5	6pt (*)		  \Huge		14	26Q
% * : not measured

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

\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\baselineskip15\@Q}
\let\fs@etitle\LARGE
\let\fs@title\huge

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

\sec@setskips{あ}

\fi

\if@LaTeX@e\else						% 2.00(11)
\let\latex@bf\bf						% 1.06(6)
\def\bf{\latex@bf \dg}						% 1.06(6)
\fi								% 2.00(11)

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

\newdimen\@mojihaba

\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

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

% \headsep = 24Q - \topskip
\headsep28\@Q \advance\headsep-\topskip				% 2.02(2)

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

\@mojihaba13\@Q

\else
\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								% 1.05(2)<<

% \headsep = 28Q - \topskip
\headsep28\@Q \advance\headsep-\topskip

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

\@mojihaba12\@Q
\fi

\columnsep30\@Q

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

\oddsidemargin210mm \advance\oddsidemargin-\textwidth \divide\oddsidemargin\tw@
\advance\oddsidemargin-1in \evensidemargin\oddsidemargin

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

\def\maketitle{\let\ipsj@oddhead@t\ipsj@oddhead@a
	\ifipsj@trans
	    \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
	\par\twocolumn[\@maketitle]\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}

\newbox\@abstractbox
%% Introduce \@titlewidth because we now use this dimen repeatedly. (H.N.)
%% \@titlewidth = 44 * 11Q = 484Q
\newdimen\@titlewidth \@titlewidth 484\@Q

\def\abstract{\global\let\@abstract\relax
	\global\setbox\@abstractbox\hbox\bgroup
		\begin{minipage}[b]{\@titlewidth}\fs@abst\parindent11\@Q}
\def\endabstract{\end{minipage}\egroup}
\def\@abstract{\mkt@warning{abstract env}}

%% We need English title, author name(s) and abstract. (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\@eabstractbox
\def\eabstract{\global\let\@eabstract\relax
	\global\setbox\@eabstractbox\hbox\bgroup
		\begin{minipage}[b]{\@titlewidth}\fs@eabst\parindent11\@Q}
\let\endeabstract\endabstract
\def\@eabstract{\mkt@warning{eabstract env}}

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

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

\newdimen\mkt@prevdepth
\newbox\mkt@titlebox
\def\@maketitle{\setbox\mkt@titlebox\vbox{
	\ifDS@english \ifDS@preface
		\hbox{}\vskip60\@Q \vskip-\headsep \vskip-\baselineskip
	\else
		\hbox{}\vskip26\@Q \vskip-\headsep \vskip-\baselineskip
		\leftline{\fs@type\it
			\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}	% 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	テクニカルノート%
                                \else\ifDS@invited 招待論文%    % 2.06(1)
				\else\ifDS@sigrecommended
					研究会推薦論文		% 2.06(1)
				\else 発表概要\fi\fi\fi		% 2.07(7)
				\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
% 1.04(1a) >>
	\ifnum\c@affi@footnote>\thr@@
		\let\theaffi@footnote\theaffi@footnotemany \fi
	\c@affi@footnote\z@
% 1.04(1a) <<
	\affi@labels
	\ifDS@english\else
	\vskip-\mkt@prevdepth \nointerlineskip\vskip32\@Q
	\centerline{\vbox{\centering\hsize\@titlewidth\fs@author
		\mkt@makeauthor}}
	\ifDS@preface\else
	\vskip-\prevdepth \nointerlineskip\vskip32\@Q
	\centerline{\@abstract\box\@abstractbox}
	\vskip-\prevdepth \nointerlineskip\vskip34\@Q
	\mkt@maketitle{\fs@etitle\bf}\@etitle\etitle
	\fi\fi
	\if@tempswa\else
	\vskip-\mkt@prevdepth \nointerlineskip\vskip28\@Q
	\centerline{\vbox{\centering\hsize\@titlewidth\fs@eauthor\sc
		\mkt@makeeauthor}}
	\fi
	\ifDS@preface\else
	\vskip-\prevdepth \nointerlineskip\vskip28\@Q
	\centerline{\@eabstract\box\@eabstractbox}
	\fi
	\vskip-\prevdepth \nointerlineskip\vskip25\@Q}
	\@tempdimb\ht\mkt@titlebox \advance\@tempdimb\dp\mkt@titlebox
	\@tempcnta\@tempdimb \@tempcntb\baselineskip
	\divide\@tempcnta\@tempcntb \@tempdima\@tempcnta\baselineskip
	\advance\@tempdima-\@tempdimb
	\box\mkt@titlebox
	\ifdim\@tempdima=\z@\else\advance\@tempdima\baselineskip
		\vskip\@tempdima\fi}

%% \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\textwidth\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{\fn@fontvii$^{\affi@thefnmark}$}}}%
	\gdef\affi@thefnmark{}\leavevmode\let\+\ignorespaces
	\settowidth\@tempdima{あ}\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".

\def\mkt@putauthor#1 #2\@nil{%
	\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\@tempskipa#2\@makefnmark}\fi\fi\fi
	\gdef\affi@thefnmark{}\hskip\columnsep}

% 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.
\newcounter{affi@footnote} \c@affi@footnote\z@
\def\affilabel{\stepcounter{affi@footnote}\affi@deflabels\affi@affilabel}
								% 1.04(1a)
\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
	\def\@mpfn{affi@footnote}\def\thempfn{\theaffi@footnote}%
	\def\affi@fnmark{\protect\@makefnmarkdagger}%
	\affi@label}
\def\affi@paffilabel#1#2{\begingroup\PF@adjustfnote
	\def\affi@fnmark{\protect\@makefnmarkstar}%
	\def\protect{\noexpand\protect\noexpand}%
	\def\\{\noexpand\\Presently with \ignorespaces}%
	\edef\@tempa{\ifDS@english Presently with \else 現在,\fi#2}% 1.04(1d)
	\affi@label{#1}{\@tempa}}
\def\affi@label#1#2{\stepcounter{\@mpfn}%
	\@ifundefined{affi@r@#1}%
		{\expandafter\xdef\csname affi@r@#1\endcsname{\thempfn}}
		{\ipsj@warning{Affiliation label `#1' multiply defined}}%
								% 2.00(3)
	\let\affi@footnotetext\relax\let\\\relax
	\def\protect{\noexpand\protect\noexpand}%
	\xdef\@thanks{\@thanks
		\affi@footnotetext{\thempfn}{\affi@fnmark}{#2}}\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}}%
	\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}}}

% 1.04(1b)>>
\def\theaffi@footnote{\ifcase\c@affi@footnote\or
	{\dagger}\or {\dagger}{\dagger}\or {\dagger}{\dagger}{\dagger}\fi}
								% 1.04(1c)
\def\theaffi@footnotemany{{\dagger}\number\c@affi@footnote}
% 1.04(1b)<<

\def\thanks#1{\begingroup
	\def\@makefnmark{\smash{\hbox{\fn@fontvii$^{\@thefnmark}$}}}%
	\footnotemark
	\let\affi@footnotetext\relax\let\\\relax
	\def\protect{\noexpand\protect\noexpand}%
	\xdef\@thanks{\@thanks
		\affi@footnotetext{\thempfn}{\protect\@makefnmarkstar}{#1}}%
	\endgroup}

% \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!

% 2.00(16)>>
\let\latex@document\document
\def\document{\latex@document
	\ifDS@private\else \global\c@page\c@volpageoffset \fi}	% 2.07(8)
\let\c@volpage\c@page		% for backward compatibility
\def\thevolpage{\thepage}	% for backward compatibility
% 2.00(16)<<

\newcounter{volume}\expandafter\let\csname c@巻数\endcsname\c@volume
\newcounter{number}\expandafter\let\csname c@号数\endcsname\c@number
\let\c@month\c@number \expandafter\let\csname c@月数\endcsname\c@number
								% 2.07(4)
\newcounter{year}\expandafter\let\csname c@年数\endcsname\c@year

% 2.07(4)>>
\def\@thevolno{Vol.~\arabic{巻数}\hskip\@mojihaba No.~%
	\ifipsj@trans SIG\ \ipsj@sig@numa(\ipsj@sig@code\ \ipsj@sig@numb)%
	\else \arabic{号数}\fi}
% 2.07(4)<<
% 2.00(15)>>
\def\@monthyear{\ifcase\value{号数}\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
	\hskip.5\@mojihaba \setcounter{年数}{1959}%
	\addtocounter{年数}{\value{巻数}}\arabic{年数}}
% 2.00(15)<<

% 2.07(2)>>
\newif\ifipsj@trans \ipsj@transfalse
\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
	\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}

\def\ipsj@sig@PRO@j{プログラミング}
\def\ipsj@sig@PRO@e{Programming}
\def\ipsj@sig@TOM@j{数理モデル化と応用}
\def\ipsj@sig@TOM@e{Mathematical Modeling and Its Applications}
\def\ipsj@sig@TOD@j{データベース}
\def\ipsj@sig@TOD@e{Databases}
\def\ipsj@sig@HPS@j{ハイパフォーマンスコンピューティングシステム}
\def\ipsj@sig@HPS@e{High Performance Computing Systems}
\def\ipsj@sig@CVIM@j{コンピュータビジョンとイメージメディア}
\def\ipsj@sig@CVIM@e{Computer Vision and Image Media}
% 2.07(2)<<

\def\copyrightnotice{\long\def\ipsj@cnotice}

% 1.05(2)>>
\ifDS@techrep
\def\ps@headings{\let\@mkboth\markboth
	\def\@oddhead{\@checklines\hss}\let\@evenhead\@oddhead
	\def\@oddfoot{}\def\@evenfoot{}}
\let\ps@myheadings\ps@headings

\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
% 1.05(2)<<
\def\ps@headings{\let\@mkboth\markboth
	\def\@oddfoot{}
	\def\@evenfoot{}
	\def\@evenhead{\fs@header \@checklines
		\hskip12\@Q\rlap{\thepage}\hss			% 2.07(3)
		\hdr@tipsj\hss\llap{\@monthyear}\hskip12\@Q}
	\def\@oddhead{\fs@header \@checklines
		\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
		\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								% 1.05(2)
								% 2.07(8)
% 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)<<

% 2.02(2),2.07(4)>>
\ifDS@english
\def\hdr@tipsj{\smash{%
	\ifipsj@trans
		IPSJ Transactions on \ipsj@sig@title
	\else
		IPSJ Journal\fi}}
\else
\def\hdr@tipsj{\smash{情報処理学会論文誌%
	\ifipsj@trans :\ipsj@sig@title\fi}}
\fi
% 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@techrep\@tempcnta50\else				% 1.05(2)
	\ifDS@english\@tempcnta53\else\@tempcnta45\fi\fi	% 1.05(2)
	\relax\@@checklines}}}\fi
	\ifDS@english\@tempcnta-7\else\@tempcnta\z@\fi\relax
% 1.05(2)>>
	\@tempswafalse
	\ifDS@printer \@tempswatrue \fi \ifDS@techrep \@tempswatrue \fi
	\if@tempswa \unitlength\@Q \begin{picture}(0,0)(0,\@tempcnta)
		\put(-61,63){\begin{picture}(0,0)
			\put(-10,0){\line(-1,0){30}}
			\put(0,10){\line(0,1){30}}\end{picture}}
		\put(667,63){\begin{picture}(0,0)
			\put(10,0){\line(1,0){30}}
			\put(0,10){\line(0,1){30}}\end{picture}}
		\put(-61,-965){\begin{picture}(0,0)
			\put(-10,0){\line(-1,0){30}}
			\put(0,-10){\line(0,-1){30}}
			\ifDS@techrep
			\put(0,-10){\makebox(728,0)[t]{\thepage}}\fi
			\end{picture}}
% 1.05(2)<<
		\put(667,-965){\begin{picture}(0,0)
			\put(10,0){\line(1,0){30}}
			\put(0,-10){\line(0,-1){30}}\end{picture}}
		\end{picture}\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{headings}
\pagenumbering{arabic}

\ifDS@english\else
\def\today{\the\year 年 \the\month 月 \the\day 日}
\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\if@lastpagebalancing \@lastpagebalancingfalse
\newif\if@finalpageoutput \@finalpageoutputfalse
% incorporate balanced output to \enddocument
\let\latex@enddocument\enddocument
\def\enddocument{\@finalpageoutputtrue
	\if@lastpagebalancing
		\global\let\@outputdblcol\opt@balanceoutputdblcol\fi
	\ifDS@preface
		\global\let\@outputdblcol\opt@balanceoutputdblcol\fi
	\ifDS@abstract						% 2.07(7)>>
		\hbox{}\newpage
		\ifDS@english	\rightline{(Presented \ra@presented)}
		\else		\expandafter\ra@putpresented\ra@presented \fi
		\fi						% 2.07(7)<<
	\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{\unvbox\@outputbox\vskip-\@tempdima
		\nointerlineskip\vbox to\z@{\vskip\opt@finalgap
			\hbox to\textwidth{\hss
			\vrule height0.4pt width\opt@finallinewidth\hss}
		\vss}}\fi\fi
	\ifASCII\if@LaTeX@e \@@topmargin\topmargin \fi\fi	    % 2.00(13)
	\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.

% \受付 and \採録 define the dates of receipt/acceptance.  They are put at
% the end of manuscript (just before biographies) by ra@putrcvacc.
\def\ra@nengo{平成}	%% Change here when ...
\ifDS@english
\def\受付#1#2#3{\def\ra@received{\ra@date{#1}{#2}{#3}}\ignorespaces}
\def\採録#1#2#3{\def\ra@accepted{\ra@date{#1}{#2}{#3}}\ignorespaces}
\def\再受付#1#2#3{\def\ra@rereceived{\ra@date{#1}{#2}{#3}}\ignorespaces}
								% 2.07(5)
\def\発表#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: {\it\ipsj@TOD@ename})}	% 2.07(6)
\else
\def\受付#1#2#3{\def\ra@received{#1&#2&#3&}\ignorespaces}
\def\採録#1#2#3{\def\ra@accepted{#1&#2&#3&}\ignorespaces}
\def\再受付#1#2#3{\def\ra@rereceived{#1&#2&#3&}\ignorespaces}	% 2.07(5)
\def\発表#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@TOD@ename )}	% 2.07(6)
								% 2.08(2)
\fi
\let\received\受付
\let\accepted\採録
\let\rereceived\再受付						% 2.07(5)
\let\presented\発表						% 2.07(7)

\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)}
	    \ifx\ra@rereceived\undefined\else
		\llap{(Revised \ra@rereceived)}\fi
	    \llap{(Accepted \ra@accepted)}\hbox{}
	\else
	    \halign{(\ra@nengo\hskip\jasciikanjiskip
		\hfil##\hfil\hskip\jasciikanjiskip 年\hskip\jasciikanjiskip&
		\hfil##\hfil\hskip\jasciikanjiskip 月\hskip\jasciikanjiskip&
		\hfil##\hfil\hskip\jasciikanjiskip 日&##\hfil\cr% 2.07(5)>>
		\ra@received 受付)\cr
		\ifx\ra@rereceived\undefined\else \ra@rereceived 再受付)\cr\fi
		\ra@accepted 採録)\cr\multispan3\cr}\fi}%
								% 2.07(5)<<
	\hskip\@mojihaba}
	\nobreak\vskip-2\baselineskip\prevdepth\z@\hbox{}
	\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@putpresented#1&#2&#3&{\rightline{%
	(\ra@nengo\hskip\jasciikanjiskip			% 2.07(7)>>
	#1\hskip\jasciikanjiskip 年\hskip\jasciikanjiskip
	#2\hskip\jasciikanjiskip 月\hskip\jasciikanjiskip
	#3\hskip\jasciikanjiskip 日発表)}}			% 2.07(7)<<

\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{(正会員)}}\def\nomember{\bio@member{}}
	\def\stmember{\bio@member{(学生会員)}}\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@member#1#2{\bio@egroup\let\bio@egroup\bio@@egroup
	\@next\@currbox\@freelist\relax
		{\@latexerr{Too many unprocessed floats and biographies}\@ehb}%
	\def\@tempa{#2}%
	\global\setbox\@currbox\hbox\bgroup
	    \raise\bio@lineheight\copy\bio@picbox
	    \vtop\bgroup
		\let\par\\
		\hangindent\bio@indent\hangafter-\bio@hangafter
		\ifDS@english {\bf #2\ }%
		\else {\bf\bio@putauthor#2\+ \@nil}#1{\@@par}\fi\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{%
	\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}
\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/Paper/ipsjsort.bst	Thu Nov 15 19:20:01 2012 +0900
@@ -0,0 +1,1 @@
+% ipsjsort.bst nakasima@kuis.kyoto-u.ac.jp (Hiroshi Nakashima)
% 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 :=	% year doesn't follows "," nor ".". (H.N.)
}

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 =
% year doesn't follows "," nor ".". (H.N.)
		{ " " * 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 {is.kanji}
%%%{ #1 text.prefix$ chr.to.int$ #127 > }
%%%{ #1 #1 substring$ chr.to.int$ #127 > }
%%%{ purify$ #1 text.prefix$ chr.to.int$ #127 >}
{ is.kanji.str$ }

FUNCTION {emphasize}
{ duplicate$ empty$
    { pop$ "" }
    { duplicate$ is.kanji
        'skip$
        { "{\em " swap$ * "\/}" * }
      if$
    }
  if$
}

INTEGERS { nameptr namesleft numnames }

FUNCTION {format.names}
{ 's :=
  #1 'nameptr :=
  s num.names$ 'numnames :=
  numnames 'namesleft :=
    { namesleft #0 > }
    { s nameptr
        s nameptr "{ll}" format.name$ is.kanji
           { "{ff}{vv}{ll}" }
           { "{vv }{ll}{, jj}{, f.}" }
        if$
      format.name$ 't :=
      nameptr #1 >
	{ namesleft #1 >
	    { ", " * t * }
	    {
%	      numnames #2 >
%		{ "," * }
%		'skip$
%	      if$
% Don't put "," before "and" (H.N.)
%
%	      numnames #3 <
%		{ t is.kanji
%		    {"," * "" *} 'skip$ if$
%		}
%		'skip$
%    	      if$
% Don't put "," before "ほか" (H.N.)
%
	      t "others" =
		{ s is.kanji
			{"ほか" * }
			{" et al." * }
		      if$
                }
		{ s is.kanji
%			{" " * t * }
			{", " * 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 {format.editors}
{ editor empty$
    { "" }
    { editor format.names
      editor num.names$ #1 >
	{ editor is.kanji
		{"(編)" * } %%{", editors" * } if$
                            {"(eds.)" *} if$
	}
	{ editor is.kanji
		{"(編)" *}  %%{", editor" * } if$
                            {"(ed.)" *} if$
	}
      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 :=	% year doesn't follows "," nor ".". (H.N.)
  year empty$
    { month empty$
	{ "" }
	{ "there's a month but no year in " cite$ * warning$
%	  month			% no worth to put month only. (H.N.)
          ""
	}
      if$
    }
%   { month empty$
%	'year
%	{ month " " * year * }
%     if$
%   }
% month is not printed even if it is given. (H.N.)
%
    { "(" year ")" * * }	% year is surrounded by parens. (H.N.)
  if$
}

FUNCTION {tie.or.space.connect}
{ duplicate$ text.length$ #3 <
    { "~" }
    { "\ " }
  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}
{ pages empty$
    { "" }
    { pages multi.page.check
%	{ "pp.~" pages n.dashify tie.or.space.connect }
%	{ "pp.~" pages tie.or.space.connect }
% '~' might be add by tie.or.space.connect. (H.N.)
% "p." is probably better for single page reference (H.N.)
	{ "pp." pages n.dashify tie.or.space.connect }
	{ "p." pages tie.or.space.connect }
      if$
    }
  if$
}

% This function is replaced by format.vol.num.pages (H.N.)
%FUNCTION {format.volume.number.year.pages}
%{ volume empty$
%    { number empty$
%        { year empty$
%             { "" }
%             { "(" year * ")" * }
%          if$}
%        { year empty$
%             { "No.~" number * }
%             { "No.~" number * "(" * year * ")" * }
%         if$}
%      if$}
%    { number empty$
%        { year empty$
%             { "Vol.~" volume * }
%             { "Vol.~" volume * "(" * year * ")" * }
%          if$}
%        { year empty$
%             {"Vol.~" volume * "," * "No.~" * number * }
%             {"Vol.~" volume * "," * "No.~" * number * "(" * year * ")" * }
%         if$}
%      if$}
%   if$
%  pages empty$
%    'skip$
%    { duplicate$ empty$
%	{ pop$ format.pages }
%	{ "," * " pp.~" * pages n.dashify * }
%      if$
%    }
%  if$
%}

FUNCTION {format.vol.num.pages}
{ 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 * }
% tieing "pp." and the first page will be too hard for a narrow column. (H.N.)
      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$
    { "" }
    { editor empty$
	{ booktitle is.kanji
	    { " " booktitle emphasize * }
	    { " " booktitle emphasize * }
	  if$
	}
	{ booktitle is.kanji
%	    { booktitle emphasize "(" * format.editors * ")" *}
%	    { booktitle emphasize "(" * format.editors * ")" *}
% awful without leading space (H.N.)
	    { booktitle emphasize " (" * format.editors * ")" *}
	    { booktitle emphasize " (" * format.editors * ")" *}
	  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
            { "技術報告" }
            { "Technical Report" }
          if$
        }
      if$
    }
    {type}
  if$
  number empty$
    { "t" change.case$ }
    { number tie.or.space.connect }
  if$
}

FUNCTION {format.article.crossref}
{ key empty$
    { journal empty$
	{ "need key or journal for " cite$ * " to crossref " * crossref *
	  warning$
	  ""
	}
	{ "In " journal emphasize * }
      if$
    }
    { "In " key * }
  if$
  " \cite{" * crossref * "}" *
}

FUNCTION {format.crossref.editor}
{ editor #1 "{vv }{ll}" 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
		{" " * editor #2 "{vv }{ll}" format.name$ * }
		{" and " * editor #2 "{vv }{ll}" format.name$ * }
	      if$
	    }
	  if$
	}
      if$
    }
  if$
}

FUNCTION {format.book.crossref}
{ volume empty$
    { "empty volume in " cite$ * "'s crossref of " * crossref * warning$
      title is.kanji
	{"  "} {"In "} if$
    }
    { "Volume" volume tie.or.space.connect
      " of " *
    }
  if$
  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 }
	  if$
	}
	{ key * }
      if$
    }
    { format.crossref.editor * }
  if$
  " \cite{" * crossref * "}" *
}

FUNCTION {format.incoll.inproc.crossref}
{ 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 is.kanji
		booktitle
		{"In " booktitle emphasize * }
	       if$
	    }
	  if$
	}
	{ "In " key * }
      if$
    }
    { title is.kanji
	{" " format.crossref.editor * }
	{"In " format.crossref.editor * }
      if$
    }
  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 ": " *
  title output
  crossref missing$
    { journal emphasize output
%     format.volume.number.year.pages output
% date is always at the end. (H.N.)
      format.vol.num.pages output
      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$
  ": " *
  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  ": " *
  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$
  ": " *
  title emphasize output
  crossref missing$
    { output.series.volume.number
      publisher output
    }
    { format.chapter.pages output
      new.block
      format.book.crossref output.nonnull
    }
  if$
  format.edition output
% format.date output
  format.chapter.pages output
  format.date output		% date is always at the end. (H.N.)
  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 ": " *
  title output
  crossref missing$
    { format.in.ed.booktitle output
      output.series.volume.number
      publisher output
      address output
      format.edition output
      format.chapter.pages output	% date is always at the end. (H.N.)
      format.date output
    }
    { format.incoll.inproc.crossref output.nonnull
      format.chapter.pages output
    }
  if$
% format.chapter.pages output
  new.block
  note output
  fin.entry
}

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

  optional.series.volume.number.argument
%%%%
  output.bibitem 
  format.authors ": " *
  title output
  crossref missing$
    { format.in.ed.booktitle output
      output.series.volume.number
      address output
      organization output
      publisher output
%     format.date output
      format.pages output
      format.date output	% date is always at the end. (H.N.)
    }
    { 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$
  ": " *
  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 ": " *
  title output
  author empty$
    { "Master's thesis" }
    { author is.kanji
        { "修士論文" }  
        { "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 
  ": " *
  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 ": " *
  title emphasize output
  author empty$
    { "PhD Thesis" }
    { author is.kanji
        { "博士論文" }
        { "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$
  ": " *
  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  ": " *
  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 ": " *
  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/Paper/ipsjunsrt.bst	Thu Nov 15 19:20:01 2012 +0900
@@ -0,0 +1,1 @@
+% ipsjsort.bst nakasima@kuis.kyoto-u.ac.jp (Hiroshi Nakashima)
% 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 :=	% year doesn't follows "," nor ".". (H.N.)
}

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 =
% year doesn't follows "," nor ".". (H.N.)
		{ " " * 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 {is.kanji}
%%%{ #1 text.prefix$ chr.to.int$ #127 > }
%%%{ #1 #1 substring$ chr.to.int$ #127 > }
%%%{ purify$ #1 text.prefix$ chr.to.int$ #127 >}
{ is.kanji.str$ }

FUNCTION {emphasize}
{ duplicate$ empty$
    { pop$ "" }
    { duplicate$ is.kanji
        'skip$
        { "{\em " swap$ * "\/}" * }
      if$
    }
  if$
}

INTEGERS { nameptr namesleft numnames }

FUNCTION {format.names}
{ 's :=
  #1 'nameptr :=
  s num.names$ 'numnames :=
  numnames 'namesleft :=
    { namesleft #0 > }
    { s nameptr
        s nameptr "{ll}" format.name$ is.kanji
           { "{ff}{vv}{ll}" }
           { "{vv }{ll}{, jj}{, f.}" }
        if$
      format.name$ 't :=
      nameptr #1 >
	{ namesleft #1 >
	    { ", " * t * }
	    {
%	      numnames #2 >
%		{ "," * }
%		'skip$
%	      if$
% Don't put "," before "and" (H.N.)
%
%	      numnames #3 <
%		{ t is.kanji
%		    {"," * "" *} 'skip$ if$
%		}
%		'skip$
%    	      if$
% Don't put "," before "ほか" (H.N.)
%
	      t "others" =
		{ s is.kanji
			{"ほか" * }
			{" et al." * }
		      if$
                }
		{ s is.kanji
%			{" " * t * }
			{", " * 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 {format.editors}
{ editor empty$
    { "" }
    { editor format.names
      editor num.names$ #1 >
	{ editor is.kanji
		{"(編)" * } %%{", editors" * } if$
                            {"(eds.)" *} if$
	}
	{ editor is.kanji
		{"(編)" *}  %%{", editor" * } if$
                            {"(ed.)" *} if$
	}
      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 :=	% year doesn't follows "," nor ".". (H.N.)
  year empty$
    { month empty$
	{ "" }
	{ "there's a month but no year in " cite$ * warning$
%	  month			% no worth to put month only. (H.N.)
          ""
	}
      if$
    }
%   { month empty$
%	'year
%	{ month " " * year * }
%     if$
%   }
% month is not printed even if it is given. (H.N.)
%
    { "(" year ")" * * }	% year is surrounded by parens. (H.N.)
  if$
}

FUNCTION {tie.or.space.connect}
{ duplicate$ text.length$ #3 <
    { "~" }
    { "\ " }
  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}
{ pages empty$
    { "" }
    { pages multi.page.check
%	{ "pp.~" pages n.dashify tie.or.space.connect }
%	{ "pp.~" pages tie.or.space.connect }
% '~' might be add by tie.or.space.connect. (H.N.)
% "p." is probably better for single page reference (H.N.)
	{ "pp." pages n.dashify tie.or.space.connect }
	{ "p." pages tie.or.space.connect }
      if$
    }
  if$
}

% This function is replaced by format.vol.num.pages (H.N.)
%FUNCTION {format.volume.number.year.pages}
%{ volume empty$
%    { number empty$
%        { year empty$
%             { "" }
%             { "(" year * ")" * }
%          if$}
%        { year empty$
%             { "No.~" number * }
%             { "No.~" number * "(" * year * ")" * }
%         if$}
%      if$}
%    { number empty$
%        { year empty$
%             { "Vol.~" volume * }
%             { "Vol.~" volume * "(" * year * ")" * }
%          if$}
%        { year empty$
%             {"Vol.~" volume * "," * "No.~" * number * }
%             {"Vol.~" volume * "," * "No.~" * number * "(" * year * ")" * }
%         if$}
%      if$}
%   if$
%  pages empty$
%    'skip$
%    { duplicate$ empty$
%	{ pop$ format.pages }
%	{ "," * " pp.~" * pages n.dashify * }
%      if$
%    }
%  if$
%}

FUNCTION {format.vol.num.pages}
{ 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 * }
% tieing "pp." and the first page will be too hard for a narrow column. (H.N.)
      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$
    { "" }
    { editor empty$
	{ booktitle is.kanji
	    { " " booktitle emphasize * }
	    { " " booktitle emphasize * }
	  if$
	}
	{ booktitle is.kanji
%	    { booktitle emphasize "(" * format.editors * ")" *}
%	    { booktitle emphasize "(" * format.editors * ")" *}
% awful without leading space (H.N.)
	    { booktitle emphasize " (" * format.editors * ")" *}
	    { booktitle emphasize " (" * format.editors * ")" *}
	  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
            { "技術報告" }
            { "Technical Report" }
          if$
        }
      if$
    }
    {type}
  if$
  number empty$
    { "t" change.case$ }
    { number tie.or.space.connect }
  if$
}

FUNCTION {format.article.crossref}
{ key empty$
    { journal empty$
	{ "need key or journal for " cite$ * " to crossref " * crossref *
	  warning$
	  ""
	}
	{ "In " journal emphasize * }
      if$
    }
    { "In " key * }
  if$
  " \cite{" * crossref * "}" *
}

FUNCTION {format.crossref.editor}
{ editor #1 "{vv }{ll}" 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
		{" " * editor #2 "{vv }{ll}" format.name$ * }
		{" and " * editor #2 "{vv }{ll}" format.name$ * }
	      if$
	    }
	  if$
	}
      if$
    }
  if$
}

FUNCTION {format.book.crossref}
{ volume empty$
    { "empty volume in " cite$ * "'s crossref of " * crossref * warning$
      title is.kanji
	{"  "} {"In "} if$
    }
    { "Volume" volume tie.or.space.connect
      " of " *
    }
  if$
  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 }
	  if$
	}
	{ key * }
      if$
    }
    { format.crossref.editor * }
  if$
  " \cite{" * crossref * "}" *
}

FUNCTION {format.incoll.inproc.crossref}
{ 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 is.kanji
		booktitle
		{"In " booktitle emphasize * }
	       if$
	    }
	  if$
	}
	{ "In " key * }
      if$
    }
    { title is.kanji
	{" " format.crossref.editor * }
	{"In " format.crossref.editor * }
      if$
    }
  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 ": " *
  title output
  crossref missing$
    { journal emphasize output
%     format.volume.number.year.pages output
% date is always at the end. (H.N.)
      format.vol.num.pages output
      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$
  ": " *
  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  ": " *
  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$
  ": " *
  title emphasize output
  crossref missing$
    { output.series.volume.number
      publisher output
    }
    { format.chapter.pages output
      new.block
      format.book.crossref output.nonnull
    }
  if$
  format.edition output
% format.date output
  format.chapter.pages output
  format.date output		% date is always at the end. (H.N.)
  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 ": " *
  title output
  crossref missing$
    { format.in.ed.booktitle output
      output.series.volume.number
      publisher output
      address output
      format.edition output
      format.chapter.pages output	% date is always at the end. (H.N.)
      format.date output
    }
    { format.incoll.inproc.crossref output.nonnull
      format.chapter.pages output
    }
  if$
% format.chapter.pages output
  new.block
  note output
  fin.entry
}

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

  optional.series.volume.number.argument
%%%%
  output.bibitem 
  format.authors ": " *
  title output
  crossref missing$
    { format.in.ed.booktitle output
      output.series.volume.number
      address output
      organization output
      publisher output
%     format.date output
      format.pages output
      format.date output	% date is always at the end. (H.N.)
    }
    { 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$
  ": " *
  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 ": " *
  title output
  author empty$
    { "Master's thesis" }
    { author is.kanji
        { "修士論文" }  
        { "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 
  ": " *
  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 ": " *
  title emphasize output
  author empty$
    { "PhD Thesis" }
    { author is.kanji
        { "博士論文" }
        { "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$
  ": " *
  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  ": " *
  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 ": " *
  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/Paper/sugi-prosym.aux	Thu Nov 15 19:20:01 2012 +0900
@@ -0,0 +1,4 @@
+\relax 
+\newlabel{sec:ITEM}{{2}{1}}
+\newlabel{sec:Enum}{{3}{3}}
+\newlabel{sec:item}{{3}{3}}
Binary file Paper/sugi-prosym.dvi has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/sugi-prosym.log	Thu Nov 15 19:20:01 2012 +0900
@@ -0,0 +1,179 @@
+This is pTeX, Version 3.141592-p3.1.10 (sjis) (Web2C 7.5.4) (format=platex 2009.8.28)  15 NOV 2012 19:15
+**sugi-prosym.tex
+(./sugi-prosym.tex
+pLaTeX2e <2006/11/10>+0 (based on LaTeX2e <2003/12/01> patch level 0)
+(./ipsjpapers.cls
+Document Class: ipsjpapers 2001/05/01 ver 2.08
+(./ipsjpapers.sty
+\old@latex@skip=\skip41
+\@Q=\dimen118
+\jfsize=\count81
+\jspaceskip=\dimen119
+LaTeX Font Info:    Font shape `JT1/mc/bx/n' in size <10> not available
+(Font)              Font shape `JT1/gt/m/n' tried instead on input line 553.
+LaTeX Font Info:    Font shape `JY1/mc/bx/n' in size <10> not available
+(Font)              Font shape `JY1/gt/m/n' tried instead on input line 553.
+\@mojihaba=\dimen120
+LaTeX Font Info:    External font `cmex10' loaded for size
+(Font)              <9> on input line 570.
+LaTeX Font Info:    External font `cmex10' loaded for size
+(Font)              <6> on input line 570.
+LaTeX Font Info:    External font `cmex10' loaded for size
+(Font)              <5> on input line 570.
+\@abstractbox=\box41
+\@titlewidth=\dimen121
+\@eabstractbox=\box42
+\mkt@prevdepth=\dimen122
+\mkt@titlebox=\box43
+\mkt@cnta=\count82
+\mkt@cntb=\count83
+\mkt@sname=\count84
+\mkt@gname=\count85
+\mkt@boxa=\box44
+\mkt@namewidth=\dimen123
+\c@affi@footnote=\count86
+\c@volpageoffset=\count87
+\c@volume=\count88
+\c@number=\count89
+\c@year=\count90
+\@leftcolumnfootnote=\box45
+\@rightcolumnfootnote=\box46
+\opt@baselineskip=\skip42
+\bio@picbox=\box47
+\bio@colht=\dimen124
+\bio@splitheight=\dimen125
+\bio@maxgap=\dimen126
+\bio@lastgap=\dimen127
+\bio@th=\dimen128
+\bio@lhA=\dimen129
+\bio@hA=\dimen130
+\bio@hB=\dimen131
+\bio@lh=\dimen132
+\bio@rh=\dimen133
+\bio@tempdim=\dimen134
+\bio@pbox=\insert233
+ (./ipsjcommon.sty
+\c@section=\count91
+\c@subsection=\count92
+\c@subsubsection=\count93
+\c@paragraph=\count94
+\c@subparagraph=\count95
+\bib@adjustheight=\dimen135
+\c@figure=\count96
+\c@table=\count97
+\cap@linewidth=\dimen136
+\cap@hsize=\dimen137
+\cap@prevgraf=\count98
+\cap@box=\box48
+\PF@fnotectr=\count99
+\PF@page=\count100
+\adj@boxa=\box49
+\adj@boxb=\box50
+\adj@height=\dimen138
+\adj@deadcycle=\count101
+)))
+No file sugi-prosym.aux.
+\openout1 = `sugi-prosym.aux'.
+
+LaTeX Font Info:    Checking defaults for OML/cmm/m/it on input line 31.
+LaTeX Font Info:    ... okay on input line 31.
+LaTeX Font Info:    Checking defaults for T1/cmr/m/n on input line 31.
+LaTeX Font Info:    ... okay on input line 31.
+LaTeX Font Info:    Checking defaults for OT1/cmr/m/n on input line 31.
+LaTeX Font Info:    ... okay on input line 31.
+LaTeX Font Info:    Checking defaults for OMS/cmsy/m/n on input line 31.
+LaTeX Font Info:    ... okay on input line 31.
+LaTeX Font Info:    Checking defaults for OMX/cmex/m/n on input line 31.
+LaTeX Font Info:    ... okay on input line 31.
+LaTeX Font Info:    Checking defaults for U/cmr/m/n on input line 31.
+LaTeX Font Info:    ... okay on input line 31.
+LaTeX Font Info:    Checking defaults for JY1/mc/m/n on input line 31.
+LaTeX Font Info:    ... okay on input line 31.
+LaTeX Font Info:    Checking defaults for JT1/mc/m/n on input line 31.
+LaTeX Font Info:    ... okay on input line 31.
+LaTeX Font Info:    Font shape `JT1/mc/bx/n' in size <14.4> not available
+(Font)              Font shape `JT1/gt/m/n' tried instead on input line 66.
+LaTeX Font Info:    Font shape `JY1/mc/bx/n' in size <14.4> not available
+(Font)              Font shape `JY1/gt/m/n' tried instead on input line 66.
+
+Class ipsjpapers Warning: \title is too wide. Break line(s) by \\ on input line
+ 66.
+
+LaTeX Font Info:    External font `cmex10' loaded for size
+(Font)              <10.95> on input line 66.
+LaTeX Font Info:    External font `cmex10' loaded for size
+(Font)              <8> on input line 66.
+LaTeX Font Info:    Font shape `JT1/mc/bx/n' in size <12> not available
+(Font)              Font shape `JT1/gt/m/n' tried instead on input line 66.
+LaTeX Font Info:    Font shape `JY1/mc/bx/n' in size <12> not available
+(Font)              Font shape `JY1/gt/m/n' tried instead on input line 66.
+
+LaTeX Font Warning: Font shape `JT1/mc/m/sc' undefined
+(Font)              using `JT1/mc/m/n' instead on input line 66.
+
+
+LaTeX Font Warning: Font shape `JY1/mc/m/sc' undefined
+(Font)              using `JY1/mc/m/n' instead on input line 66.
+
+LaTeX Font Info:    External font `cmex10' loaded for size
+(Font)              <7> on input line 66.
+LaTeX Font Info:    Font shape `JT1/mc/bx/n' in size <9> not available
+(Font)              Font shape `JT1/gt/m/n' tried instead on input line 80.
+LaTeX Font Info:    Font shape `JY1/mc/bx/n' in size <9> not available
+(Font)              Font shape `JY1/gt/m/n' tried instead on input line 80.
+[1
+
+
+]
+Overfull \hbox (1.21362pt too wide) in paragraph at lines 100--101
+[]\OT1/cmtt/m/n/9 void peek(Receiver receiver, String key,
+ []
+
+
+Overfull \hbox (1.21362pt too wide) in paragraph at lines 101--102
+[]\OT1/cmtt/m/n/9 void take(Receiver receiver, String key,
+ []
+
+
+LaTeX Warning: Reference `fig:put' on page 2 undefined on input line 108.
+
+
+LaTeX Warning: Reference `fig:update' on page 2 undefined on input line 114.
+
+
+LaTeX Warning: Reference `fig:peek' on page 2 undefined on input line 120.
+
+
+LaTeX Warning: Reference `fig:take' on page 2 undefined on input line 127.
+
+
+Overfull \hbox (10.66351pt too wide) in paragraph at lines 146--147
+[]\OT1/cmtt/m/n/9 void setKey(String managerKey, String key,
+ []
+
+
+Overfull \hbox (10.66351pt too wide) in paragraph at lines 155--156
+[]\OT1/cmtt/m/n/9 void update(String managerKey, String key,
+ []
+
+[2] [3] (./sugi-prosym.aux)
+
+LaTeX Font Warning: Some font shapes were not available, defaults substituted.
+
+
+LaTeX Warning: There were undefined references.
+
+
+LaTeX Warning: Label(s) may have changed. Rerun to get cross-references right.
+
+ ) 
+Here is how much of TeX's memory you used:
+ 759 strings out of 94681
+ 8537 string characters out of 1174652
+ 63756 words of memory out of 1500000
+ 4109 multiletter control sequences out of 10000+50000
+ 17294 words of font info for 67 fonts, out of 1200000 for 2000
+ 566 hyphenation exceptions out of 8191
+ 30i,10n,22p,353b,380s stack positions out of 5000i,500n,6000p,200000b,5000s
+
+Output written on sugi-prosym.dvi (3 pages, 18720 bytes).
Binary file Paper/sugi-prosym.pdf has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/sugi-prosym.tex	Thu Nov 15 19:20:01 2012 +0900
@@ -0,0 +1,196 @@
+\documentclass[private]{ipsjpapers}
+% 巻数,号数などの設定
+%\setcounter{巻数}{41}
+%\setcounter{号数}{6}
+%\setcounter{volpageoffset}{1234}
+%\受付{12}{2}{4}
+%\採録{12}{5}{11}
+
+% ユーザが定義したマクロなど.
+\makeatletter
+\let\@ARRAY\@array \def\@array{\def\<{\inhibitglue}\@ARRAY}
+\def\<{\(\langle\)}
+\def\>{\(\rangle\)}
+\def\|{\verb|}
+\def\Underline{\setbox0\hbox\bgroup\let\\\endUnderline}
+\def\endUnderline{\vphantom{y}\egroup\smash{\underline{\box0}}\\}
+\def\LATEX{\iLATEX\Large}
+\def\LATEx{\iLATEX\normalsize}
+\def\LATex{\iLATEX\small}
+\def\iLATEX#1{L\kern-.36em\raise.3ex\hbox{#1\bf A}\kern-.15em
+    T\kern-.1667em\lower.7ex\hbox{E}\kern-.125emX}
+\def\LATEXe{\ifx\LaTeXe\undefined \LaTeX 2e\else\LaTeXe\fi}
+\def\LATExe{\ifx\LaTeXe\undefined \iLATEX\scriptsize 2e\else\LaTeXe\fi}
+\def\Quote{\list{}{}\item[]}
+\let\endQuote\endlist
+\def\TT{\if@LaTeX@e\tt\fi}
+\def\CS#1{\if@LaTeX@e\tt\expandafter\string\csname#1\endcsname\else
+	$\backslash$#1\fi}
+
+%\checklines	% 行送りを確認する時に使用
+\begin{document}%{
+% 和文表題
+\title[Code Segment と Data Segment によるプログラミング手法]%
+{Code Segment と Data Segment によるプログラミング手法 }
+% 英文表題
+\etitle{How to Programming with Code Segment and Data Segment}
+% 所属ラベルの定義
+\affilabel{URYUKYU}{琉球大学\\University of the Ryukyu}
+% 和文著者名
+\author{河野 真治\affiref{URYUKYU}\member{19841765}\and
+	杉本 優\affiref{URYUKYU}\nomember}
+
+	
+% 英文著者名
+\eauthor{Shinji Kono\affiref{URYUKYU}\and
+Yu Sugimoto\affiref{URYUKYU}}
+
+
+% 連絡先(投稿時に必要.製版用では無視される.)
+\contact{杉本 優\\
+	〒903-0213 沖縄県中頭郡西原町字千原1番地\\
+	琉球大学 情報工学科\\
+        TEL: (098)895-8723\qquad FAX: (098)895-8727\\
+	email: sugi@cr.ie.u-ryukyu.ac.jp}
+
+% 和文概要
+\begin{abstract}
+本研究室では分散プログラミングにおいて、データをData Segment、タスクをCode Segmentという単位に分割して記述する方法を提唱している。
+しかし、前述した方法をプログラマーが一から記述することは大変である。そこで、本研究室で分散ネットフレームワーク Alice を作成した。本論文では実際にAliceを用いてCode Segment と Data Segment によるプログラミング手法の例を示す。
+\end{abstract}
+% 英文概要
+\begin{eabstract}
+\end{eabstract}
+
+% 表題などの出力
+\maketitle
+
+%}{
+
+% 本文はここから始まる
+\section{歴史的経緯}
+本研究室では、並列タスク管理フレームワークCeriumの管理を行なっているが、その設計と実装を行うにあたり、並列プログラミングと分散プログラミング
+は本質的には同じことを行なっていることが分かった。特にヘテロジーニアスマルチコアであり、ローカルストアをそれぞれのコアが持っているというCell の特異な環境は、分散プログラミング環境と告示している。それらを踏まえて、Ceriumのタスク管理手法を分散に応用できないかと考えた。
+
+
+Ceriumに置いても、タスクとそれの入出力データの取り扱いは難しい課題である。データを操作するAPIを考えて、タスクを自然に記述し、効率良く実行する方法を考えてきた。そこで考えられた手法が、データをDataSegment、タスクをCodeSegmentという単位に分割して記述する方法である。
+%}{
+
+\section{分散ネットフレームワークAlice}\label{sec:ITEM}
+\subsection{Aliceとは}
+Aliceは本研究室の卒業生である赤嶺一樹氏が、本研究室で開発を行なっている並列タスク管理フレームワーク Cerium と先行研究である Federated Linda の開発を通して得られた知見を生かされている。
+Federated Linda の設計はシングルスレッドで行われている。しかし、近年ではマルチコアのマシンが主流となっている。将来的にはメニーコアのマシンが主流になってくると考えられるそのような背景を踏まえてAliceはマルチスレッド向けに設計されている。
+
+AliceはData SegmentとCode Segmentという単位でデータと処理を細かく分割し、それぞれの依存関係を記述して分散プログラムを作成する。また、他のマシンとの接続トポロジーの構成の機能も有しているのでユーザーはトポロジー構成後の処理を記述するだけでよい。
+%}{
+\subsection{Data Segment}
+AliceではData Semgnetをデータベースとして利用している。KeyValueStoreで実装されており、キーごとにリストを持っている。Data Segment APIを用いることで、リストにデータを追加、削除を適宜行うことができる。
+
+\subsubsection{Data Segment Manager}
+大量のData Segmentを管理するのがData Segment Managerである。Data Segment Managerは文字列のキーでData Segmentを整理する。各キーごとにキュー構造を持っている。それらをData Segment APIを用いて操作する。
+データの読み出し("peek" または "take")時に、希望のデータがなかった場合、ブロッキングを行う機能を持つ。
+しかし、ブロッキングといってもそこで同期するわけではない。
+非同期でデータを通信する。
+そのため、 "peek" と "take" は他の API とは違い、レスポンスが発生する。
+\subsubsection{Data Segment API}
+表番号)が用意されているData Segment APIである。これらを用いてデータの送受信を行う。
+\begin{itemize}
+\item {\ttfamily void put(String key, Value val)}
+\item {\ttfamily void update(String key, Value val)}
+\item {\ttfamily void peek(Receiver receiver, String key, int id)}
+\item {\ttfamily void take(Receiver receiver, String key, int id)}
+\end{itemize}
+
+\subsubsection*{"put"}
+"put" はデータを追加するための API である。
+
+"put" は受け取ったデータ val を Data Segment 内のキューに対してエンキューする。
+この時、キーごとに重複しない連番の ID を受け取った順に振る。(図 \ref{fig:put})
+\subsubsection*{"update"}
+"update" はデータを置き換えるための API である。
+
+"update" はキューの先頭にあるデータをひとつだけ削除する。
+その後は "put" と同じく、 受け取ったデータ val を Data Segment 内のキューに対してエンキューする。
+この時、キーごとに重複しない連番の ID を受け取った順に振る。(図 \ref{fig:update})
+\subsubsection*{"peek"}
+"peek" はデータを読み込むための API である。
+
+"peek" は前回読み込んだデータの id を引数で指定する。省略した場合は、 0 が id として渡される。
+id よりも値の大きい id のデータがキューに含まれていれば、そのデータを receiver に返す。
+もし id 以下のデータしか無いならば、データの更新が前回の "peek" 発行時から更新が無いものと考え、リストに格納されて保留される。(図 \ref{fig:peek})
+
+"take" や "update" によりデータの更新があれば、 "peek" が直ちに実行される。
+\subsubsection*{"take"}
+"take" もデータを読み込むための API である。
+基本的な id に関する部分は "peek" と同じである。
+
+"peek" との決定的な違いは、読み込まれたデータは Data Segment 内のキューから取り除かれるということである。(図 \ref{fig:take})
+
+
+\subsection{Code Segment}
+Code Segmentはタスクのことである。Code Segmentをユーザーが記述するときに、Code Segment 内で使用するData Segment を記述し、依存関係を作る。依存関係により、実行される順番が一意に決まる。実際に使用するData Segment はCode Segmentの入出力に相当する。それぞれ、Input Data Segment、Output Data Segmentとする。
+\subsubsection{Code Segmentの実行方法}
+Code Semgnetを実行するためにはStart Code SegmentというCode Segmentを実行させる必要がある。
+Start Code SegmentはどのData Segmentにも依存しない。つまりInput Data Segmentを持たない。このCode Segmentをmainメソッド内でnewし、executeメソッドを呼ぶことで実行を開始させることができる。
+
+
+\subsubsection{Code Segmentの記述方法}
+Code Segmentをユーザーが記述する際にはCodeSegmentを継承して記述する。そのCodeSegmentはInputDataSegmentManagerとOutputDataSegmentManagerを利用することができる。
+\subsubsection*{InputDataSegmentManager}
+InputDataSegmentManagerはCode Segmentのidsというフィールドを用いてアクセスする。
+\begin{itemize}
+\item {\ttfamily Receiver create(CommandType type)}
+\end{itemize}
+createでコマンドが実行された際に取得されるData Segmentが格納される受け皿を作る。引数にはCommandTypeが取られ、指定できるCommandTypeはPEEKまたはTAKEである。
+\begin{itemize}
+\item {\ttfamily void setKey(String managerKey, String key, int id)}
+\end{itemize}
+setKeyメソッドにより、どこのData Segmentのあるkeyに対してpeekまたはtakeコマンドを実行させるかを指定することができる。
+コマンドの結果がレスポンスとして届き次第Code Segmentは実行される。
+\subsubsection*{OutputDataSegmentManager}
+OutputDataSegmentManagerはCode Segmentのodsというフィールドを用いてアクセスする。
+OutPutDataSegmentManagerは"put"または"update"を実行することができる。
+\begin{itemize}
+\item {\ttfamily void put(String managerKey, String key, \\ Value val)}
+\item {\ttfamily void update(String managerKey, String key, Value val)}
+\end{itemize}
+
+\subsection{Topology Manager}
+TopologyManagerはAlice同士の接続トポロジーを管理する。TopologyManager関連の通信処理はCode Segmentで実装してある。
+TopologyManagerはトポロジーファイルを読み込み、参加を表明したクライアント(以下、Topology Node)に接続するべきクライアントのIPアドレスやポート番号、接続名を送り、トポロジーファイルに記述された通りにトポロジーを作成する。
+
+\subsection{Topology Managerの設定ファイル}
+Topology Managerはトポロジーファイルを読み込むが、トポロジーファイル自体はDOT Languageという言語で記述される。
+DOT Languageとはプレーンテキストを用いて、データ構造としてのグラフを表現するための、データ記述言語の一種である。このDOT Languageのグラフを利用して、クライアント間の接続を表現する。DOT Languageファイルはdotコマンドを用いて、グラフの画像ファイルを出力することができるので、記述したトポロジーが正しいことを可視化して確認することができる。
+
+クライアント間の接続にはlabelを用いて名前が割り振られており、この接続名を用いてユーザーはData Segment Managerにアクセスすることができる。
+前述したReceiver にsetKeyを行う際、odsでputまたはupdateする際の引数のmanagerKeyがこれにあたる。
+
+\subsection{Topology Managerの使用方法}
+Topology Nodeを起動する際にコマンドライン引数としてTopology ManagerのIPアドレスとポート番号を指定をする。
+そしてmain関数内でTopologyNodeをnewを行えば良い。
+TopologyNodeの第一引数は Alice デーモンの設定オブジェクト、第二引数はStart Code Segmentである。
+ここで指定した、Start Code Segmentがトポロジーが完成した後実行される。
+
+%}{
+\section{ゲームの例題}\label{sec:Enum}\label{sec:item}
+\subsection{水族館}
+今回作成した例題は水族館である。複数のクライアントのディスプレイを複数の魚が移動していくものである。魚は画面の端まで移動すると自分の画面上からは消え、別のクライアントの画面の端から魚が出てくる。また、魚のうち一匹はクライアントが直接操作することができる。トポロジーはTopologyManagerによりツリー状に構成してある。
+\subsection{データの伝搬}
+
+\begin{enumerate}
+\item ユーザーが魚を操作するまたはCode Segmentにより魚の座標が更新される。
+\item 画面に表示させるためのSetLocation (Code Segment)が実行され実際に魚のオブジェクトにセットされ画面に反映される。
+\item Update(Code Segment)にFishPosition(魚の座標データ)が渡される。
+\item Updateにlist(送信者リスト)が渡される。
+\item Updateが実行され、listを元にデータが送信される。ただし、この時にFishPositionには送信元情報が付加されているので、送信元には送信されない。
+\item 各clientで2 - 4が実行される。
+\end{enumerate}
+
+\section{評価}
+
+
+\section{まとめと今後の課題}
+
+
+\end{document}