# HG changeset patch # User ikkun # Date 1492427126 -32400 # Node ID 38b037c42c342c2a25b2eb0860259d898d462976 first commit diff -r 000000000000 -r 38b037c42c34 paper/Makefile --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/paper/Makefile Mon Apr 17 20:05:26 2017 +0900 @@ -0,0 +1,35 @@ +TARGET = sigos + +LATEX = platex +BIBTEX = pbibtex +#DVIPS = dvips +#DVIPDFM = dvipdfmx +RM = rm -f +DVIPDF=dvipdfmx -p a4 +# Option definitions +#DVIPDFMOPT = +#DVIPSOPT = -D 720 -mode esphi -O 0mm,0mm -N0 + +# Suffixes definitions +.SUFFIXES: .tex .dvi .pdf + +.tex.dvi: + $(LATEX) $< + $(BIBTEX) $(TARGET) + $(LATEX) $< + $(LATEX) $< + +.dvi.pdf: + $(DVIPDF) $(DVIPDF_OPT) $< + + +all: $(TARGET).pdf + open $(TARGET).pdf + +dvi: $(TARGET).dvi + +pdf: $(TARGET).pdf + + +clean: + rm -f *.dvi *.aux *.log *.pdf *.ps *.gz *.bbl *.blg *~ *.core diff -r 000000000000 -r 38b037c42c34 paper/dummy.tex --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/paper/dummy.tex Mon Apr 17 20:05:26 2017 +0900 @@ -0,0 +1,60 @@ +%%% jdummy.def +% +\DeclareRelationFont{JY1}{mc}{it}{}{OT1}{cmr}{it}{} +\DeclareRelationFont{JT1}{mc}{it}{}{OT1}{cmr}{it}{} +\DeclareFontShape{JY1}{mc}{m}{it}{<5> <6> <7> <8> <9> <10> sgen*min + <10.95><12><14.4><17.28><20.74><24.88> min10 + <-> min10}{} +\DeclareFontShape{JT1}{mc}{m}{it}{<5> <6> <7> <8> <9> <10> sgen*tmin + <10.95><12><14.4><17.28><20.74><24.88> tmin10 + <-> tmin10}{} +\DeclareRelationFont{JY1}{mc}{sl}{}{OT1}{cmr}{sl}{} +\DeclareRelationFont{JT1}{mc}{sl}{}{OT1}{cmr}{sl}{} +\DeclareFontShape{JY1}{mc}{m}{sl}{<5> <6> <7> <8> <9> <10> sgen*min + <10.95><12><14.4><17.28><20.74><24.88> min10 + <-> min10}{} +\DeclareFontShape{JT1}{mc}{m}{sl}{<5> <6> <7> <8> <9> <10> sgen*tmin + <10.95><12><14.4><17.28><20.74><24.88> tmin10 + <-> tmin10}{} +\DeclareRelationFont{JY1}{mc}{sc}{}{OT1}{cmr}{sc}{} +\DeclareRelationFont{JT1}{mc}{sc}{}{OT1}{cmr}{sc}{} +\DeclareFontShape{JY1}{mc}{m}{sc}{<5> <6> <7> <8> <9> <10> sgen*min + <10.95><12><14.4><17.28><20.74><24.88> min10 + <-> min10}{} +\DeclareFontShape{JT1}{mc}{m}{sc}{<5> <6> <7> <8> <9> <10> sgen*tmin + <10.95><12><14.4><17.28><20.74><24.88> tmin10 + <-> tmin10}{} +\DeclareRelationFont{JY1}{gt}{it}{}{OT1}{cmbx}{it}{} +\DeclareRelationFont{JT1}{gt}{it}{}{OT1}{cmbx}{it}{} +\DeclareFontShape{JY1}{mc}{bx}{it}{<5> <6> <7> <8> <9> <10> sgen*goth + <10.95><12><14.4><17.28><20.74><24.88> goth10 + <-> goth10}{} +\DeclareFontShape{JT1}{mc}{bx}{it}{<5> <6> <7> <8> <9> <10> sgen*tgoth + <10.95><12><14.4><17.28><20.74><24.88> tgoth10 + <-> tgoth10}{} +\DeclareRelationFont{JY1}{gt}{sl}{}{OT1}{cmbx}{sl}{} +\DeclareRelationFont{JT1}{gt}{sl}{}{OT1}{cmbx}{sl}{} +\DeclareFontShape{JY1}{mc}{bx}{sl}{<5> <6> <7> <8> <9> <10> sgen*goth + <10.95><12><14.4><17.28><20.74><24.88> goth10 + <-> goth10}{} +\DeclareFontShape{JT1}{mc}{bx}{sl}{<5> <6> <7> <8> <9> <10> sgen*tgoth + <10.95><12><14.4><17.28><20.74><24.88> tgoth10 + <-> tgoth10}{} +\DeclareRelationFont{JY1}{gt}{sc}{}{OT1}{cmbx}{sc}{} +\DeclareRelationFont{JT1}{gt}{sc}{}{OT1}{cmbx}{sc}{} +\DeclareFontShape{JY1}{mc}{bx}{sc}{<5> <6> <7> <8> <9> <10> sgen*goth + <10.95><12><14.4><17.28><20.74><24.88> goth10 + <-> goth10}{} +\DeclareFontShape{JT1}{mc}{bx}{sc}{<5> <6> <7> <8> <9> <10> sgen*tgoth + <10.95><12><14.4><17.28><20.74><24.88> tgoth10 + <-> tgoth10}{} +\DeclareRelationFont{JY1}{gt}{it}{}{OT1}{cmr}{it}{} +\DeclareRelationFont{JT1}{gt}{it}{}{OT1}{cmr}{it}{} +\DeclareFontShape{JY1}{gt}{m}{it}{<5> <6> <7> <8> <9> <10> sgen*goth + <10.95><12><14.4><17.28><20.74><24.88> goth10 + <-> goth10}{} +\DeclareFontShape{JT1}{gt}{m}{it}{<5> <6> <7> <8> <9> <10> sgen*tgoth + <10.95><12><14.4><17.28><20.74><24.88> tgoth10 + <-> tgoth10}{} +\endinput +%%%% end of jdummy.def diff -r 000000000000 -r 38b037c42c34 paper/ipsjcommon.sty --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/paper/ipsjcommon.sty Mon Apr 17 20:05:26 2017 +0900 @@ -0,0 +1,995 @@ +% Copyright (C) 1995-2007 by Hiroshi Nakashima, Yasuki Saito and +% The Editorial Board of the IPSJ Journal +% +% ipsjcommon.sty 15-Jun-07 by Hiroshi Nakashima (ver 2.12) +% (revision history deleted) +% ipsjcommon.sty 24-Apr-95 by Hiroshi Nakashima (ver 1.0) + +%%%%%% Sectioning Commands %%%%%% + +% \section: 2 rows +% others: 1 row +% +% Note that \paragraph and \subparagraph act as \subsubsubsection and +% \subsubsubsubsection resp. +% +% The form of sectioning header is; +% <1 Kanji sp> \the [`.' if \section] <1 Kanji sp> +% Nothe that <1 Kanji sp> is that of \normalsize. + +\def\section{\@startsection + {section}{1}{\@mojihaba}{\sec@aboveskip}{\sec@belowskip}{\fs@sec\bf}} +\let\ipsj@section\section % 2.04(1) +\def\subsection{\@startsection + {subsection}{2}{\@mojihaba}{\z@}{\z@}{\fs@subsec\bf}} +\def\subsubsection{\@startsection + {subsubsection}{3}{\@mojihaba}{\z@}{\z@}{\fs@subsec\bf}} +\def\paragraph{\@startsection + {paragraph}{4}{\@mojihaba}{\z@}{\z@}{\fs@subsec\bf}} +\def\subparagraph{\@startsection + {subparagraph}{5}{\@mojihaba}{\z@}{\z@}{\fs@subsec\bf}} + +\newcounter{section} +\newcounter{subsection}[section] +\newcounter{subsubsection}[subsection] +\newcounter{paragraph}[subsubsection] +\newcounter{subparagraph}[paragraph] + +\def\thesection{\arabic{section}} +\def\sec@section@postfix{.} +\def\thesubsection{\thesection.\arabic{subsection}} +\def\thesubsubsection{\thesubsection.\arabic{subsubsection}} +\def\theparagraph{\thesubsubsection.\arabic{paragraph}} +\def\thesubparagraph{\theparagraph.\arabic{subparagraph}} + +\setcounter{secnumdepth}{5} + +\def\appendix{\let\sec@sec\section + \def\section{\@startsection + {section}{1}{\@mojihaba}{\z@}{\z@}{\fs@subsec\bf}}% + \def\thesection{\appendixprefix\arabic{section}}% + \def\sec@section@postfix{\appendixpostfix}% + \stepcounter{section}\setcounter{section}{0}% + \@ifnextchar[%] + {\sec@oappendix}{\sec@xappendix}} +\def\sec@xappendix{\@ifstar{\let\section\sec@sec}% + {\sec@sec*{\ifDS@english Appendix\else\ipsj@j@app \fi}}}% 2.12(1b) +\def\sec@oappendix[#1]{\sec@sec*{\ifDS@english Appendix: \else + \ipsj@j@app\hskip\jspaceskip\fi #1}} % 2.12(1b) +\def\appendixprefix{A.} +\def\appendixpostfix{} + +\def\acknowledgment{\par + {\bf \ifDS@english Acknowledgments \else\ipsj@j@ack\fi}%% 2.12(1b) + \hskip\@mojihaba \ignorespaces} +\let\endacknowledgment\par + +\newif\ifipsj@recommendation \ipsj@recommendationfalse % 2.04(1) >> +\def\recommendation#1{\global\ipsj@recommendationtrue + \ifDS@draft\else \ra@putrcvacc\fi + \ipsj@section*{#1} +} +\def\endrecommendation{\par\vskip\baselineskip\penalty\opt@magicpenalty} + % 2.04(1) << + +% Modified \@startsection has a trick for "2-row" of \section, which must +% work even if \section appears the top of a page. The BEFORESKIP must be +% inserted with respect to the previous baseline. So, we must go back to +% the imaginary previous baseline at the top of a page. That is, we do; +% \vskip\baselineskip \vspace*{-\baselineskip} +% which resuls; +% <a> do nothing at midpage +% <b> go to the first baseline by \topskip, then go back to 0th +% baseline by \vspace*. +% The trick "\vskip-\prevdepth \prevdepth\z@" will assure exact vertical +% space even when the last line has much depth. +% +% \@startsection {NAME}{LEVEL}{INDENT}{BEFORESKIP}{AFTERSKIP}{STYLE} +\def\@startsection#1#2#3#4#5#6{\if@noskipsec \leavevmode \fi + \par \@tempskipa #4\relax + \@afterindenttrue + \ifdim\@tempskipa<\z@ \@tempskipa-\@tempskipa \@afterindentfalse\fi + \if@nobreak \everypar{}\else \addpenalty{\@secpenalty}\fi + \ifdim\@tempskipa>\z@ +% Here is the trick for \section. + \vskip-\prevdepth \prevdepth\z@ \vskip\baselineskip + \vspace*{-\baselineskip}\vskip\@tempskipa\fi + \@ifstar + {\@ssect{#3}{#4}{#5}{#6}}{\@dblarg{\@sect{#1}{#2}{#3}{#4}{#5}{#6}}}} + +% \@sect is modified to cope with `.' for \section and MOJI-DORI +% +% \@sect{NAME}{LEVEL}{INDENT}{BEFORESKIP}{AFTERSKIP}{STYLE}[TITLE]{TITLE} +\def\@sect#1#2#3#4#5#6[#7]#8{\ifnum #2>\c@secnumdepth + \def\@svsec{}\else + \refstepcounter{#1} + % 2.00(1)>> + \let\@@protect\protect \def\protect{\noexpand\protect\noexpand} + \edef\@svsec{\csname the#1\endcsname \csname sec@#1@postfix\endcsname + \hskip\@mojihaba} \let\protect\@@protect\fi % 2.00(1)<< + \@tempskipa #5\relax + \ifdim \@tempskipa<\z@ + \def\@svsechd{#6\hskip #3\relax\@svsec #8} % 2.00(1) + \else + \begingroup #6\relax + \@hangfrom{\hskip #3\relax\@svsec}% + {\interlinepenalty\@M \sec@mojidori{#8}\par}% + \endgroup + \fi \@xsect{#5}} + +% \@ssect is modified to cope with MOJI-DORI +% +% \@sect{INDENT}{BEFORESKIP}{AFTERSKIP}{STYLE}{TITLE} +\def\@ssect#1#2#3#4#5{\@tempskipa #3\relax + \ifdim \@tempskipa<\z@ \def\@svsechd{#4\hskip #1\relax #5}% + \else \begingroup #4% + \@hangfrom{\hskip #1}{\interlinepenalty\@M + \sec@mojidori{#5}\par}\endgroup + \fi \@xsect{#3}} + +%% Modify \@xsect to avoid (buggy) \clubpenalty=10000. (H.N.) +\def\@xsect#1{\@tempskipa #1\relax + \ifdim \@tempskipa<\z@ + \glboal\@nobreakfalse \global\@noskipsectrue + \everypar{\global\@noskipsecfalse \hskip-\parindent + \begingroup \@svsechd \endgroup \unskip + \hskip -#1\everypar{}}% + \else + \par \nobreak + \vskip \@tempskipa \global\@nobreaktrue + \everypar{\global\@nobreakfalse + \if@afterindent\else {\setbox0\lastbox}\fi \everypar{}} + \fi\ignorespaces} + +% Here is a trick for MOJI-DORI of sectioning tilte. The rule is; +% 2 - 4 Kanji char -> 5 Kanji char +% otherwise -> natural width +% +\def\sec@mojidori#1{\ifDS@english #1\else % 2.12(1b) + \setbox0\hbox{#1}\settowidth\@tempdimb{\ipsj@j@a}% % 2.12(1b) + \ifdim\wd0>4.5\@tempdimb #1\else + \ifdim\wd0<1.5\@tempdimb #1\else + \jintercharskip\fill \jasciikanjiskip\fill \jmathkanjiskip\fill + \leavevmode\hbox to5\@tempdimb{#1\hfil}\fi\fi\fi} + +%%%%%% List-like Environments %%%%%% +% +% LM RM LW LS LPI II +% default 2K 0 0.75K 0.25K 0 0 +% \enumerate 3K 0 3K 0 0 0 +% \Enumerate 0 0 3K 0 0 3K +% \ENUMERATE 0 0 3K 0 0 4K +% \enumerate* 1K 0 3K 0 0 2K +% \itemize 2K 0 2K 0 0 0 +% \Itemize 0 0 2K 0 0 2K +% \ITEMIZE 0 0 2K 0 0 3K +% \itemize* 1K 0 2K 0 0 1K +% \description 2K 0 0 1K 0 -1K +% \Description 0 0 0 1K 0 1K +% \DESCRIPTION 0 0 0 1K 0 2K +% \description* 1K 0 0 1K 0 0 +% \verse 3K 2K 0.75K 0.25K -1K -1K +% \quotation 2K 2K 0.75K 0.25K 1K 1K +% \quote 2K 2K 0.75K 0.25K 0 0 +% +% where LM is \leftmargin, RM is \rightmargin, LW is \labelwidth, LS is +% \labelsep, \LPI is \listparindent, II is \itemindent, and K is Kanji char +% width (\@mojihaba). +% +% All vertical space parameters, \topsep, \partopsep, \itemsep and \parsep, +% are 0pt. + +\leftmargini2\@mojihaba +\leftmarginii2\@mojihaba +\leftmarginiii2\@mojihaba +\leftmarginiv2\@mojihaba +\leftmarginv2\@mojihaba +\leftmarginvi2\@mojihaba + +\def\lst@listi{\labelsep.75\@mojihaba \labelwidth.25\@mojihaba + \rightmargin\z@ \listparindent\z@ \itemindent\z@ + \partopsep\z@ \parsep\z@ \topsep\z@ \itemsep\z@} +\def\@listi{\leftmargin\leftmargini \lst@listi} +\def\@listii{\leftmargin\leftmarginii \lst@listi} +\def\@listiii{\leftmargin\leftmarginiii \lst@listi} +\def\@listiv{\leftmargin\leftmarginiv \lst@listi} +\def\@listv{\leftmargin\leftmarginv \lst@listi} +\def\@listvi{\leftmargin\leftmarginvi \lst@listi} + +\@listi + +\def\labelenumi{(\,\theenumi\,)} +\def\theenumi{\arabic{enumi}} +\def\labelenumii{(\,\theenumii\,)} +\def\theenumii{\alph{enumii}} +\def\p@enumii{\theenumi} +\def\labelenumiii{(\,\theenumiii\,)} +\def\theenumiii{\roman{enumiii}} +\def\p@enumiii{\theenumi(\theenumii)} +\def\labelenumiv{(\,\theenumiv\,)} +\def\theenumiv{\Alph{enumiv}} +\def\p@enumiv{\p@enumiii\theenumiii} +\def\enumerate{\ifnum \@enumdepth >3 \@toodeep\else + \advance\@enumdepth \@ne + \edef\@enumctr{enum\romannumeral\the\@enumdepth} + \list{\csname label\@enumctr\endcsname}{\usecounter + {\@enumctr}\def\makelabel##1{##1\hss}% + \leftmargin3\@mojihaba \labelwidth3\@mojihaba \labelsep\z@}\fi} +\let\endenumerate\endlist + +\def\labelitemi{$\bullet$} +\def\labelitemii{\bf --} +\def\labelitemiii{$\ast$} +\def\labelitemiv{$\cdot$} +\def\itemize{\ifnum \@itemdepth >3 \@toodeep\else \advance\@itemdepth \@ne + \edef\@itemitem{labelitem\romannumeral\the\@itemdepth}% + \list{\csname\@itemitem\endcsname}{\def\makelabel##1{\hss##1\hss}% + \labelwidth2\@mojihaba \labelsep\z@}\fi} +\let\enditemize\endlist + +\def\description{\list{}{\labelwidth\z@ \labelsep\@mojihaba + \itemindent\labelsep \advance\itemindent-\leftmargin + \def\makelabel##1{\bf ##1}}} +\let\enddescription\endlist + +\let\latex@trivlist\@trivlist +\def\lst@trivlist#1#2{\leftmargin#1\relax + \itemindent\labelwidth \advance\itemindent\labelsep + \advance\itemindent#2\relax + \let\@trivlist\latex@trivlist \@trivlist} + +\def\lst@Trivlist{\def\@trivlist{\lst@trivlist\z@\z@}} +\def\Enumerate{\lst@Trivlist \enumerate} +\let\endEnumerate\endlist +\def\Itemize{\lst@Trivlist \itemize} +\let\endItemize\endlist +\def\Description{\lst@Trivlist \description} +\let\endDescription\endlist + +\def\lst@TRIVLIST{\def\@trivlist{\lst@trivlist\z@\@mojihaba}} +\def\ENUMERATE{\lst@TRIVLIST \enumerate} +\let\endENUMERATE\endlist +\def\ITEMIZE{\lst@TRIVLIST \itemize} +\let\endITEMIZE\endlist +\def\DESCRIPTION{\lst@TRIVLIST \description} +\let\endDESCRIPTION\endlist + +\def\lst@strivlist{\def\@trivlist{\lst@trivlist\@mojihaba{-\@mojihaba}}} +\@namedef{enumerate*}{\lst@strivlist \enumerate} +\@namedef{endenumerate*}{\endlist} +\@namedef{itemize*}{\lst@strivlist \itemize} +\@namedef{enditemize*}{\endlist} +\@namedef{description*}{\lst@strivlist \description} +\@namedef{enddescription*}{\endlist} + +\def\verse{\let\\=\@centercr + \list{}{\itemindent-\@mojihaba \listparindent\itemindent + \rightmargin\leftmargin \advance\leftmargin\@mojihaba}\item[]} +\let\endverse\endlist +\def\quotation{\list{}{\listparindent\@mojihaba \itemindent\listparindent + \rightmargin\leftmargin}\item[]} +\let\endquotation\endlist +\def\quote{\list{}{\rightmargin\leftmargin}\item[]} +\let\endquote\endlist + +\def\newtheorem{\@ifstar + {\theo@newtheorem{\theo@it}{\ }}{\theo@newtheorem{}{\theo@sp}}} +\def\theo@newtheorem#1#2#3{\@namedef{theo@it@#3}{#1}\@namedef{theo@sp@#3}{#2}% + \@ifnextchar[%] + {\@othm{#3}}{\@nthm{#3}}} +\def\@begintheorem#1#2{\DESCRIPTION \csname theo@it@\@currenvir\endcsname + \item[#1\csname theo@sp@\@currenvir\endcsname #2]} +\def\@opargbegintheorem#1#2#3{\DESCRIPTION + \csname theo@style@\@currenvir\endcsname + \item[#1\csname theo@sp@\@currenvir\endcsname #2\ (#3)]} +\let\@endtheorem\endlist % 1.02(2) +\ifDS@english +\let\theo@it\it \let\theo@sp\ % +\else +\let\theo@it\relax \let\theo@sp\relax +\fi + +%%%%%% Bibliography %%%%%% +% +% 1. Label format is "<nn>)". +% 2. \leftmargin 24Q (or 2K) +% 3. \labelsep is 6Q (or 0.5K) +% 4. \baselineskip is 16Q(j)/15Q(e)/normal(d) +% 5. ~ and \ is null but stretchable and (hardly) breakable. % 2.09(1) + +\def\thebibliography#1{% + \section*{\hskip-\@mojihaba\hfill\hbox{\bib@refname}\hfill\hskip\z@} + \ifDS@draft \@tempdima\@mojihaba \else\@tempdima12\@Q\fi + \list{\arabic{enumi}\rlap{%( + )}}% + {\fs@bibliography \leftmargin2\@tempdima \labelwidth\z@ + \labelsep\@tempdima \itemindent.5\@tempdima + \usecounter{enumi}\def\makelabel##1{\hss\llap{##1}}} + \def\newblock{\hskip .11em plus .33em minus .07em} + \sloppy \frenchspacing + \def\ {\hskip\z@ plus\fontdimen\thr@@\font \penalty5000\relax} + % 2.09(1) + \ifDS@english\else \ipsj@defcolonforbib \fi} % 2.12(1b)(2) + +% (removal of \bib@refname) % 2.12(1a) + +\newdimen\bib@adjustheight \bib@adjustheight-\maxdimen +\def\endthebibliography{\endlist \par \@normalsize + \@tempdima\@colht \advance\@tempdima-\@colroom + \advance\@tempdima\pagetotal \advance\@tempdima-\prevdepth + \advance\@tempdima-\topskip + \@tempdimb\@tempdima \divide\@tempdima\baselineskip + \@tempcnta\@tempdima \@tempdima\@tempcnta\baselineskip + \advance\@tempdima-\@tempdimb + \ifdim\@tempdima<\z@ \advance\@tempdima\baselineskip \fi + \vskip-\prevdepth \vskip\@tempdima \prevdepth\z@ + \bib@adjustheight\@tempdimb \advance\bib@adjustheight\@tempdima + \global\advance\bib@adjustheight\topskip + \if@firstcolumn\else\global\advance\bib@adjustheight\@M pt\fi} + + +%%%%%% Floats %%%%%% + +% You may need to change following parameters +\setcounter{topnumber}{4} +\setcounter{bottomnumber}{4} +\setcounter{totalnumber}{8} +\setcounter{dbltopnumber}{4} +\def\topfraction{.9} +\def\bottomfraction{.9} +\def\textfraction{.1} +\def\dbltopfraction{.9} +\def\floatpagefraction{.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~} +\def\fname@figures{Figs.\,} % 2.12(8)>> +\def\fname@Figures{Figures~} +\def\fname@tables{Tables~} % 2.12(8)<< +\else +\def\fname@figure{\ipsj@j@fig\fref@nobreak} % 1.06(1), 2.12(1b) +\let\fname@Figure\fname@figure +\def\fname@table{\ipsj@j@tab\fref@nobreak} % 1.06(1), 2.12(1b) +\let\fname@figures\fname@figure % 2.12(8)>> +\let\fname@Figures\fname@figure +\let\fname@tables\fname@table % 2.12(8)<< +\fi +\def\fnum@efigure{Fig.\,\thefigure} % 2.06(1) +\def\fnum@etable{Table~\thetable} + +% 1.06(3) >> +\def\figure{\let\cap@afterskip\relax \let\flt@fontsize\relax \@float{figure}} +\def\endfigure{\end@float} +\@namedef{figure*}{\let\cap@afterskip\relax \let\flt@fontsize\relax + \@dblfloat{figure}} +\@namedef{endfigure*}{\end@dblfloat} + +%% Default font for table env. is \footnotesize (H.N.) +\def\table{\let\cap@beforeskip\relax \let\flt@fontsize\fs@table + \@float{table}} +\def\endtable{\end@float} +\@namedef{table*}{\let\cap@beforeskip\relax \let\flt@fontsize\fs@table + \@dblfloat{table}} % 2.01(2) +\@namedef{endtable*}{\end@dblfloat} +% 1.06(3) << + +\let\latex@float\@float +\let\latex@dbflt\@dbflt +\def\@float{\cap@linewidth\hsize \cap@hsize\hsize \latex@float} +\def\@dbflt{\cap@linewidth.8\textwidth \cap@hsize.667\textwidth \latex@dbflt} +\let\latex@xfloat\@xfloat % 1.06(3) +\def\@xfloat#1[#2]{\latex@xfloat#1[#2]\flt@fontsize} + % 1.06(3) +\def\end@float{\flt@endfloat + \ifdim\bib@adjustheight=-\maxdimen\else + \advance\bib@adjustheight\@tempdima + \global\advance\bib@adjustheight\baselineskip \fi + \ifnum\@floatpenalty <\z@ + \@nameuse{@largefloatcheck}% % 2.00(2) + \@cons\@currlist\@currbox + \ifdim \ht\@currbox >\textheight + \ht\@currbox\textheight \fi + \ifnum\@floatpenalty < -\@Mii + \penalty -\@Miv + \@tempdima\prevdepth \vbox{} \prevdepth\@tempdima + \penalty\@floatpenalty + \else \vadjust{\penalty -\@Miv \vbox{}\penalty\@floatpenalty}\@esphack + \fi\fi} +\def\end@dblfloat{\if@twocolumn \flt@endfloat + \ifnum\@floatpenalty <\z@ \@cons\@dbldeferlist\@currbox\fi + \ifnum \@floatpenalty =-\@Mii \@esphack\fi\else\end@float\fi} +\def\flt@endfloat{\par \boxmaxdepth\dp\strutbox % 2.12(7c) + \global\@minipagefalse \@nameuse{outer@nobreak}\egroup % 2.00(2) + \@nameuse{color@endbox}\@normalsize % 2.00(2) + \@tempdima\ht\@currbox \advance\@tempdima\dp\@currbox + \divide\@tempdima\baselineskip \@tempcnta\@tempdima + \advance\@tempcnta\@ne \@tempdima\@tempcnta\baselineskip + \global\setbox\@currbox\vbox to\@tempdima{\box\@currbox\vfil}} + % 2.10(1) +% 2.12(7a,b)>> +\let\ipsj@cflb\@cflb +\let\ipsj@comflelt\@comflelt +\def\@cflb{\let\ipsj@botfigrule\botfigrule \let\botfigrule\vfil + \let\@comflelt\ipsj@comfleltbot \ipsj@cflb + \let\@comflelt\ipsj@comflelt \let\botfigrule\ipsj@botfigrule} +\def\ipsj@comfleltbot#1{% + \setbox#1\vbox to\ht#1{\vfil\unvbox#1\unskip}\ipsj@comflelt{#1}} +% 2.12(7a,b)<< + +\def\cap@beforeskip{\nointerlineskip\vskip5pt} +\def\cap@afterskip{\nointerlineskip\vskip5pt} +\long\def\@caption#1[#2]#3{\par\begingroup + \fs@caption \cap@beforeskip + \@makecaption{{\bf \csname fnum@#1\endcsname}}{\ignorespaces#3}\par + \ifDS@english \cap@afterskip \fi + \endgroup} +\def\ecaption{\@dblarg{\@ecaption\@captype}} +\long\def\@ecaption#1[#2]#3{\par + \begingroup \fs@caption + \@makecaption{\csname fnum@e#1\endcsname}{\ignorespaces #3}\par + \cap@afterskip + \endgroup} + +\newif\ifcap@sw +\newdimen\cap@linewidth +\newdimen\cap@hsize +\newcount\cap@prevgraf +\newbox\cap@box +\let\latex@label\label +\long\def\@makecaption#1#2{\begingroup \gdef\cap@label{}\let\label\@gobble + \setbox0\hbox{#1\hskip\jspaceskip} + \advance\cap@linewidth-\wd0 \advance\cap@hsize-\wd0 + \cap@makepar\cap@linewidth{#2}{\def\label##1{{% %1.03(1) + \def\protect{\noexpand\protect\noexpand} %1.03(1) + \xdef\cap@label{\cap@label\protect\label{##1}}}}} %1.03(1) + \cap@swtrue + \ifnum\cap@prevgraf=\@ne + \setbox1\vbox{\unvcopy1\cap@getbox1 + \ifhbox1 \global\setbox\cap@box\hbox{\unhbox1} + \ifdim\wd\cap@box>\cap@linewidth\else + \global\cap@swfalse \fi\fi} + \ifcap@sw\else + \cap@put{\vtop{\box\cap@box\hbox{}}} + \fi\fi + \ifcap@sw \cap@makepar\cap@hsize{#2}\relax + \ifnum\cap@prevgraf=\tw@ + \setbox1\vbox{\unvcopy1\cap@getbox2\cap@getbox3 + \ifhbox2\ifhbox3 + \setbox2\hbox{\unhbox2}\setbox3\hbox{\unhbox3} + \ifdim\wd2>\cap@hsize\else + \ifdim\wd3>\cap@hsize\else + \global\cap@swfalse + \global\setbox\cap@box\vtop{\box3\box2\hbox{}} + \fi\fi\fi\fi}\fi + \ifcap@sw \setbox1\vtop{\hsize\cap@hsize + \@parboxrestore #2\par\hbox{}}\cap@put{\box1} + \else\cap@put{\box\cap@box}\fi + \fi + \endgroup \cap@label} +\long\def\cap@makepar#1#2#3{\setbox1\vbox{\hsize#1\@parboxrestore + \rightskip\@flushglue \hfuzz\maxdimen + \exhyphenpenalty\z@ \finalhyphendemerits\z@ + \let\@@par\cap@par \let\par\cap@par \global\cap@prevgraf\z@ + #3#2\cap@par}} +\let\cap@@par\@@par +\def\cap@par{\cap@@par\global\advance\cap@prevgraf\prevgraf \prevgraf\z@} +\def\cap@put#1{\hbox to\hsize{\hss\box0#1\hss} + \vskip-\baselineskip\prevdepth\z@} +\def\cap@getbox#1{\@tempcnta10\relax\@whilenum\@tempcnta>0\do{% + \unskip\unkern\unpenalty\advance\@tempcnta\m@ne}\setbox#1\lastbox} + +\def\figref{\fref@ref\fname@figure} +\def\Figref{\fref@ref\fname@Figure} +\def\tabref{\fref@ref\fname@table} +\let\Tabref\tabref +\def\fref@ref#1{\@ifstar{\fref@sref{#1}}{\fref@iref\bf{#1}}} +\def\fref@iref#1#2#3{{\@ifundefined{fref@r@#3}% + {#1#2\fref@doref{#3}\global\@namedef{fref@r@#3}{}}{#2\fref@doref{#3}}}} +\def\fref@sref#1#2{#1\fref@doref{#2}} +\def\fref@doref#1{{\let\null\relax\ref{#1}}} % 1.06(2) +\def\fref@nobreak{\nobreak\ifASCII\else\hskip\@@jasciikanjiskip\fi} + % 1.06(1) +\def\figsref{\fref@refs\fname@figures} % 2.12(8)>> +\def\Figsref{\fref@refs\fname@Figures} +\def\tabsref{\fref@refs\fname@tables} +\let\Tabsref\tabsref +\def\fref@refs#1{\@ifstar{\fref@irefs\relax{#1}}{\fref@irefs\bf{#1}}} +\def\fref@irefs#1#2#3{\def\fref@list{#3}\@tempswafalse \@tempcnta\z@ + \@for\fref@elem:=\fref@list\do{% + \@ifundefined{fref@r@\fref@elem}{\@tempswatrue}{}% + \advance\@tempcnta\@ne}% + \ifx#1\relax \@tempswafalse\fi + \ifDS@english {\if@tempswa #1\fi #2}\let\fref@temp\relax + \else \def\fref@temp{#2}\fi + \@for\fref@elem:=\fref@list\do{% + \if@tempswa \fref@iref{#1}{\fref@temp}{\fref@elem}% + \else \fref@temp\fref@doref{\fref@elem}\fi + \advance\@tempcnta\m@ne + \ifnum\@tempcnta=\@ne \fref@and + \else\ifnum\@tempcnta>\@ne \fref@comma \fi\fi}} +\ifDS@english +\def\fref@and{ and~} +\def\fref@comma{, } +\else +\def\fref@and{\ipsj@j@comma} +\let\fref@comma\fref@and +\fi + +\ifDS@printer +\def\figures{{\bf\fname@figures}} +\def\Figures{{\bf\fname@Figures}} +\def\tables{{\bf\fname@tables}} +\let\Tables\tables +\def\Ref{\fref@iref\bf\relax} +\fi % 2.12(8)<< + +\def\fig@extraspace{3mm} %1.04(4) +\def\figspace#1{\vskip#1\vskip\fig@extraspace} %1.04(4) + +%%%%%% Footnote %%%%%% + +%% The following codes are from pfnote.sty, by H. Nakashima of Kyoto Univ., +%% to reset footnote counter at the begining of every page. (H.N.) + +% 1.04(2c)>> +\def\footnote{\@ifnextchar[%] + {\@xfootnote}{{\PF@adjustfnote \stepcounter{\@mpfn}% + \def\protect{\noexpand\protect\noexpand}% + \xdef\@thefnmark{\thempfn}}\@footnotemark\@footnotetext}} +\def\footnotemark{\@ifnextchar[%] + {\@xfootnotemark}{{\PF@adjustfnote \stepcounter{footnote}% + \def\protect{\noexpand\protect\noexpand}% + \xdef\@thefnmark{\thefootnote}}\@footnotemark}} +% 1.04(2c)<< + +\newcount\PF@fnotectr\global\PF@fnotectr=\z@ +\newcount\PF@page\global\PF@page=-\@M +\def\PF@thepage{\number\c@page} +\def\PF@adjustfnote{\global\advance\PF@fnotectr\@ne + \expandafter\ifx\csname PF@fn\number\PF@fnotectr\endcsname\relax + \global\c@footnote\z@\else + \expandafter\@tempcnta\csname PF@fn\number\PF@fnotectr\endcsname\relax + \ifnum\@tempcnta=\PF@page\else + \global\PF@page\@tempcnta \global\c@footnote\z@ \fi\fi + \@tempcnta\c@footnote \multiply\@tempcnta\@M + \advance\@tempcnta\PF@fnotectr + \if@filesw{\let\PF@thepage\relax + \xdef\@gtempa{\write\@auxout{\string\PF@fnpage + {\number\@tempcnta}{\PF@thepage}}}}% + \@gtempa\fi} +% 1.04(2a)<< + +% 1.04(2a)>> +\def\PF@fnpage#1#2{\@tempcnta#1\relax \@tempcntb\@tempcnta \divide\@tempcnta\@M + \expandafter\xdef\csname PF@fnpage#2\endcsname{\number\@tempcnta} + \multiply\@tempcnta\@M \advance\@tempcntb-\@tempcnta + \global\@namedef{PF@fn\number\@tempcntb}{#2}} +% 1.04(2a)<< +%% End of quote from pfnote.sty. (H.N.) + +\long\def\@makefntext#1{\leftskip20\@Q + \noindent\llap{\@makefnmarkforfn\hskip-\scriptspace\hskip5\@Q}#1} + % 1.04(2e) +\def\@makefnmarkstar{$\@thefnmark$} % 2.12(3) +\def\@makefnmarkdagger{$\@thefnmark$} +\def\@makefnmarkast{$\@thefnmark$} % 2.12(3) +\let\@makefnmarkforfn\@makefnmarkstar + +\def\@makefnmark{\smash{$^{\@thefnmark}$}} % 2.12(3) + % 1.04(2d) + % smashed to make it + % zero height + +\def\thefootnote{\ifnum\c@footnote>0\relax{\star}\number\c@footnote\fi} + % 2.12(3) + +%%%%%% Citation %%%%%% + +%% The following codes for \cite are from overcite.sty by D. Arseneau, but +%% modified for Trans. IPSJ (H.N.) +% O V E R C I T E . S T Y +% +% version 3.2 (Mar 1993) +% +% Compressed, sorted lists of superscript numerical citations. +% see also CITE.STY and DRFTCITE.STY +% +% Copyright (C) 1989-1993 by Donald Arseneau +% These macros may be freely transmitted, reproduced, or modified for +% non-commercial purposes provided that this notice is left intact. +% +\def\cite{\protect\@p@cite} +\def\@p@cite{\let\@citeY\@citey \@p@@cite} +\def\Cite{\protect\@p@Cite} +\def\@p@Cite{\let\@citeY\@Citey \@p@@cite} +\def\@p@@cite{\@ifnextchar[%] + {\@tempswatrue\@citex}{\@tempswafalse\@citex[]}} +\def\@citex[#1]#2{\@citeY{\@p@citen{#2}}\if@tempswa\space[#1]\fi} +\def\@citey#1{\leavevmode\unskip\kern\z@$\let\@cite@tiestyle\ipsj@j@citescript +% % 2.06(2) + % 2.12(4) + \def\@cite@punct{,}\m@th^{\hbox{\scriptsize#1}}$\spacefactor\@m} +\def\@Citey#1{\let\@cite@tiestyle\ipsj@j@citetext % 2.12(4) + % 1.04(1)>> + \ifDS@english \def\@cite@punct{,\space\penalty\@highpenalty} + \else\def\@cite@punct{\ipsj@j@comma}\fi#1\spacefactor\@m} + % 1.04(1)<< + % 2.12(1b) +\def\@p@citen#1{% + \edef\@tempa{\@ignspaftercomma,#1, \@end, }% + \edef\@tempa{\expandafter\@ignendcommas\@tempa\@end}% + \if@filesw \immediate\write\@auxout{\string\citation{\@tempa}}\fi + \@tempcntb\m@ne \let\@h@ld\relax \let\@citea\@empty + \let\@celt\relax \def\@cite@list{}% % 2.06(3) + \@for\@citeb:=\@tempa\do{\@make@cite@list}% + \def\protect{\noexpand\protect\noexpand}% + \@tempcnta\m@ne \let\@celt\@compress@cite \@cite@list + \let\protect\relax \@h@ld} +\def\@ignspaftercomma#1, {\ifx\@end#1\@empty\else + #1,\expandafter\@ignspaftercomma\fi} +\def\@ignendcommas,#1,\@end{#1} + +%( +\let\@cite@rp) +\chardef\@cite@escape`\\ +\def\@make@cite@list{% + \expandafter\let\expandafter\@B@citeB\csname b@\@citeb\endcsname + \ifx\@B@citeB\relax + \@citea {\bf ?}\@cite@rp \let\@citea\@cite@punct + \@latex@warning{Citation `\@citeb' on page \thepage\space undefined}% + % 2.00(3) + \global\@namedef{b@\@citeb}{{\bf ?}}% + \else + \ifcat \@cite@escape\ifnum\z@<0\@B@citeB \@cite@escape\else A\fi + \@tempcnta\@B@citeB \relax + \ifnum \@tempcnta>\@tempcntb + \edef\@cite@list{\@cite@list \@celt{\@B@citeB}}% + \@tempcntb\@tempcnta + \else + \edef\@cite@list{\expandafter\@sort@celt\@cite@list\@gobble @}% + \fi + \else \@citea \@B@citeB \@cite@rp \let\@citea\@cite@punct + \fi\fi} + +\def\@sort@celt#1#2{\ifx \@celt #1% parameters are \@celt {num} + \ifnum #2<\@tempcnta % number goes later in list + \@celt{#2}\expandafter\expandafter\expandafter\@sort@celt + \else \@celt{\number\@tempcnta}\@celt{#2}\fi\fi} + +\def\@compress@cite#1{\advance\@tempcnta\@ne + \ifnum #1=\@tempcnta + \ifx\@h@ld\relax \edef\@h@ld{\@citea #1\@cite@rp}% + \else \edef\@h@ld{\@cite@tie{\protect\@cite@tiestyle}% + % 2.12(4) + \penalty\@highpenalty #1\@cite@rp}\fi + \else \@h@ld \@citea #1\@cite@rp + \let\@h@ld\relax + \fi \@tempcnta#1\relax \let\@citea\@cite@punct} + +%% End of quote from overcite.sty. (H.N.) + +\def\multicite{\protect\@p@multicite} +\def\@p@multicite#1#2{\@citey{\@p@citen{#1}% + \@cite@tie\ipsj@j@citescript \@p@citen{#2}}} % 2.12(4) +\def\multiCite{\protect\@p@multiCite} +\def\@p@multiCite#1#2{\@Citey{\@p@citen{#1}\@cite@tie\relax % 2.12(4) + \penalty\@highpenalty \@p@citen{#2}}} + + +%%%%%% Box Height Adjustment and Displayed Math %%%%%% + +\newbox\adj@boxa \newbox\adj@boxb +\newdimen\adj@height +\@tempdima\baselineskip \advance\@tempdima-\topskip +\edef\adj@minaboveclearance{\the\@tempdima} +\@tempdima\baselineskip \advance\@tempdima-1ex +\edef\adj@maxaboveclearance{\the\@tempdima} + +\def\adj@setbhd#1{\setbox0\hbox{#1} % 2.12(1c)>> + \@tempdima\baselineskip \advance\@tempdima-\ht0 \advance\@tempdima\dp0 + \edef\adj@bhd{\the\@tempdima}} % 2.12(1c)<< + +% 2.01(1) >> +\def\adjustvboxheight{\ifinner \let\@tempa\relax + \let\endadjustvboxheight\relax \let\@endadjustvboxheight\relax + \else \let\@tempa\@adjustvboxheight \fi \@tempa} +\def\@adjustvboxheight{\par\penalty\z@ + \global\setbox\adj@boxa\vbox\bgroup\relax % 1.01(3) + \let\@footnotetext\@mpfootnotetext % 2.02(1) +% % 2.05(1) + \hsize\columnwidth} +% 2.01(1) << +\def\endadjustvboxheight{\adj@closebox \adj@putbox + \ifvoid\@mpfootins\else\insert\footins{\unvbox\@mpfootins}\fi +% % 2.02(1) + \global\@ignoretrue\@endparenv} +\def\adj@closebox{\egroup \normalsize \boxmaxdepth\@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} + + +%%%%%% Miscellaneous %%%%%% + +%% \doublerulesep is 1pt (H.N.) +\arraycolsep5pt \tabcolsep6pt \arrayrulewidth.4pt \doublerulesep1pt +\tabbingsep.5\@mojihaba + +\skip\@mpfootins\skip\footins +\fboxsep3pt \fboxrule.4pt + +%% We simply allow (not encourage) club and widow lines. (H.N.) +\clubpenalty\z@ \widowpenalty\z@ \displaywidowpenalty\z@ + +% The following redefinition influences \linebreak etc. +\def\sloppy{\tolerance9999\hbadness9999\hfuzz.5\p@ \vfuzz.5\p@} + +%% For heading of TBIO papers +\ifDS@TBIO % 2.11(1)>> +\def\TBIOpapercategory#1{\def\ipsj@TBIO@pcat{#1}\ignorespaces} +\def\ipsj@TBIO@pcat{original} +\def\ipsj@TBIO@pcat@original{Original Paper} +\def\ipsj@TBIO@pcat@survey{Survey Paper} +\def\ipsj@TBIO@pcat@database{Database/Software Paper} +\def\ipsj@TBIO@pcatref{\@ifundefined{ipsj@TBIO@pcat@\ipsj@TBIO@pcat}% + {\ipsj@warning{TBIO paper category \ipsj@TBIO@pcat\space is undefined.}}% + \relax + \@nameuse{ipsj@TBIO@pcat@\ipsj@TBIO@pcat}} +\fi % 2.11(1)<< + + +% 2.12(1a)>> +\let\ipsj@j@citescript\scriptsize % 2.12(4)>> +\let\ipsj@j@citetext\normalsize +\def\@cite@tie#1{\hbox{#1--}} % 2.12(4)<< +\def\bib@refname{References} +\adj@setbhd{A} + +\ifipsj@nonjp \let\next\endinput \else \let\next\relax \fi +\next + +\def\ipsj@j@a{あ} +\def\ipsj@j@app{付録} +\def\ipsj@j@ack{謝辞} +\def\ipsj@j@bib{参考文献} +\def\ipsj@j@fig{図} +\def\ipsj@j@tab{表} +\def\ipsj@j@comma{,} +\def\ipsj@j@technote{テクニカルノート} +\def\ipsj@j@invited{招待論文} +\def\ipsj@j@sigrec{研究会推薦論文} +\def\ipsj@j@talkabst{発表概要} +\def\ipsj@j@presently{現在,} +\def\ipsj@j@jipsj{情報処理学会論文誌} +\def\ipsj@j@regpaper{論文} +\def\ipsj@j@contactto{連絡先} +\def\ipsj@j@abstract{概要} +\def\ipsj@j@colon{:} +\def\ipsj@j@year{年} +\def\ipsj@j@month{月} +\def\ipsj@j@day{日} +\def\ipsj@j@lp{(} +\def\ipsj@j@rp{)} +\def\ipsj@j@edinch{担当編集委員} +\def\ipsj@j@rerec{再受付} +\def\ipsj@j@received{受付} +\def\ipsj@j@accepted{採録} +\def\ipsj@j@presented{発表} +\def\ipsj@j@member{正会員} +\def\ipsj@j@stmember{学生会員} +\def\ipsj@j@nomember{非会員} + +\ifDS@english\else \ifDS@draft\else +\sec@setskips{\ipsj@j@a} +\fi\fi + +\expandafter\let\csname c@巻数\endcsname\c@volume +\expandafter\let\csname c@号数\endcsname\c@number +\expandafter\let\csname c@月数\endcsname\c@number +\expandafter\let\csname c@年数\endcsname\c@year + +\def\ipsj@sig@PRO@j{プログラミング} +\def\ipsj@sig@TOM@j{数理モデル化と応用} +\def\ipsj@sig@TOD@j{データベース} +\def\ipsj@sig@HPS@j{ハイパフォーマンスコンピューティングシステム} +\def\ipsj@sig@CVIM@j{コンピュータビジョンとイメージメディア} +\def\ipsj@sig@ACS@j{コンピューティングシステム} % 2.09(2) + +\def\ra@nengo{平成} %% Change here when ... +\let\受付\received +\let\採録\accepted +\let\発表\presented % 2.07(7) +\let\再受付\rereceived + +\def\々{\hskip\jintercharskip\hbox to\jspaceskip{\hfil 々\hfil}%% 2.12(5) + \hskip\jintercharskip} + +\ifDS@english\else \ifDS@draft\else +{\fs@sec \@tempdima7\jspaceskip +\xdef\bib@refname{\hbox to\the\@tempdima{\jintercharskip\fill\ipsj@j@bib}}} +\adj@setbhd\ipsj@j@a +\fi\fi + +\def\ipsj@j@colon@command{{\nobreak % 2.12(2)>> + \hbox to.7\jspaceskip{:\hss}\allowbreak + \@tempdima.3\jspaceskip \hskip\@tempdima minus\@tempdima + \allowbreak + \hskip\z@ minus-\@tempdima}\ignorespaces} +\def\ipsj@defcolonforbib{\let\:\ipsj@j@colon@command} +\ifDS@printer \ipsj@defcolonforbib \fi % 2.12(2)<< + + +%%%%%% Kinsoku Parameters %%%%%% + +% 1.04(3)>> +\ifASCII +\postbreakpenalty`\`=\@M +\prebreakpenalty`'=\@M +\prebreakpenalty`)=\@M +\postbreakpenalty`(=\@M +\prebreakpenalty`]=\@M +\postbreakpenalty`[=\@M +\prebreakpenalty`\}=\@M +\postbreakpenalty`\{=\@M + +\prebreakpenalty`・=\@M +\prebreakpenalty`:=\@M +\prebreakpenalty`;=\@M +\prebreakpenalty`?=\@M +\prebreakpenalty`!=\@M + +\prebreakpenalty\jis"212D=\@M % ´ +\postbreakpenalty\jis"212E=\@M % ` +\postbreakpenalty\jis"2146=\@M % ‘ +\prebreakpenalty\jis"2147=\@M % ’ +\postbreakpenalty\jis"2148=\@M % “ +\prebreakpenalty\jis"2149=\@M % ” + +\prebreakpenalty`)=\@M +\postbreakpenalty`(=\@M +\prebreakpenalty`}=\@M +\postbreakpenalty`{=\@M +\prebreakpenalty`]=\@M +\postbreakpenalty`[=\@M +\postbreakpenalty`‘=\@M +\prebreakpenalty`’=\@M + +\postbreakpenalty\jis"214C=\@M %〔 +\prebreakpenalty\jis"214D=\@M % 〕 +\postbreakpenalty\jis"2152=\@M % 〈 +\prebreakpenalty\jis"2153=\@M % 〉 +\postbreakpenalty\jis"2154=\@M % 《 +\prebreakpenalty\jis"2155=\@M % 》 +\postbreakpenalty\jis"2156=\@M % 「 +\prebreakpenalty\jis"2157=\@M % 」 +\postbreakpenalty\jis"2158=\@M % 『 +\prebreakpenalty\jis"2159=\@M % 』 +\postbreakpenalty\jis"215A=\@M % 【 +\prebreakpenalty\jis"215B=\@M % 】 + +\prebreakpenalty`ー=\@M % 2.12(6) +\prebreakpenalty`〜=\@M % 2.12(6) + +\prebreakpenalty`ぁ=\@M +\prebreakpenalty`ぃ=\@M +\prebreakpenalty`ぅ=\@M +\prebreakpenalty`ぇ=\@M +\prebreakpenalty`ぉ=\@M +\prebreakpenalty`っ=\@M +\prebreakpenalty`ゃ=\@M +\prebreakpenalty`ゅ=\@M +\prebreakpenalty`ょ=\@M +\prebreakpenalty\jis"246E=\@M % ゎ +\prebreakpenalty`ァ=\@M +\prebreakpenalty`ィ=\@M +\prebreakpenalty`ゥ=\@M +\prebreakpenalty`ェ=\@M +\prebreakpenalty`ォ=\@M +\prebreakpenalty`ッ=\@M +\prebreakpenalty`ャ=\@M +\prebreakpenalty`ュ=\@M +\prebreakpenalty`ョ=\@M +\prebreakpenalty\jis"256E=\@M % ヮ +\prebreakpenalty\jis"2575=\@M % ヵ +\prebreakpenalty\jis"2576=\@M % ヶ + +\fi +% 1.04(3)<< +% 2.12(1a)<< diff -r 000000000000 -r 38b037c42c34 paper/ipsjdrafts.sty --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/paper/ipsjdrafts.sty Mon Apr 17 20:05:26 2017 +0900 @@ -0,0 +1,392 @@ +% Copyright (C) 1995-2007 by Hiroshi Nakashima, Yasuki Saito and +% The Editorial Board of the IPSJ Journal +% +% ipsjdrafts.sty 15-Jun-07 by Hiroshi Nakashima (ver 2.12) +% (revision history deleted) +% ipsjdrafts.sty 24-Apr-95 by Hiroshi Nakashima (ver 1.0) + +%%%%%% Fonts %%%%%% +% All font loading are removed. + +\ifipsj@nonjp\else % 2.12(1a) +\ifASCII +\let\latex@setsize\@setsize +\def\@setsize#1#2#3#4{\latex@setsize{#1}{#2}{#3}{#4}\jspaceskip1zw} + +\newcount\jfsize +\let\setjglues\relax +\let\jintercharskip\kanjiskip +\let\jasciikanjiskip\xkanjiskip +\let\jmathkanjiskip\xkanjiskip +\newdimen\jspaceskip + +\def\defjintercharskip#1#2#3#4{\@asciiwarning{\defjintercharskip}} +\def\defjasciikanjiskip#1#2#3#4{\@asciiwarning{\defjasciicharskip}} +\def\defmathkanjiskip#1#2#3#4{\@asciiwarning{\defmathcharskip}} +\def\defjspaceskip#1#2#3#4{\@asciiwarning{\defjspaceskip}} + +\def\@asciiwarning#1{\ipsj@warning{\string#1\space % 2.00(1) + is not supported in ASCII version}} + +\if@LaTeX@eN % 2.00(2)>> +\DeclareOldFontCommand{\mc}{\normalfont\mcfamily}{\mathmc} +\DeclareOldFontCommand{\gt}{\normalfont\gtfamily}{\mathgt} +\fi % 2.00(2)<< + +\def\dg{\gt} % 1.06(1) +\def\dm{\mc} % 1.06(1) + +\else % This is necessary even in 2e. +\ifx\sixdm\undefined \jfont\sixdm=dm6 \fi % 1.01(1) + % 1.06(2) +\fi \fi + +\if@LaTeX@eN % 2.00(2)>> +\DeclareOldFontCommand{\rm}{\normalfont\rmfamily}{\mathrm} +\DeclareOldFontCommand{\sf}{\normalfont\sffamily}{\mathsf} +\DeclareOldFontCommand{\tt}{\normalfont\ttfamily}{\mathtt} +\DeclareOldFontCommand{\bf}{\normalfont\bfseries}{\mathbf} +\DeclareOldFontCommand{\it}{\normalfont\itshape}{\mathit} +\DeclareOldFontCommand{\sl}{\normalfont\slshape}{\@nomath\sl} +\DeclareOldFontCommand{\sc}{\normalfont\scshape}{\@nomath\sc} +\DeclareRobustCommand*{\cal}{\@fontswitch{\relax}{\mathcal}} +\DeclareRobustCommand*{\mit}{\@fontswitch{\relax}{\mathnormal}} +\fi % 2.00(2)<< + +%%%%%% Basic Font Size Macros %%%%%% +% Nothing at all. + + +%%%%%% Font Size Macros %%%%%% + +\def\fs@setsize#1#2#3#4{\normalsize\dimen@\normalbaselineskip + \@ifstar{\@setsize{#1}{\dimen@}{#3}{#4}}% + {\@setsize{#1}{#2}{#3}{#4}}} + +% \baselineskip's are almost 1.25 times those defined in NTT jart12. + +\def\@normalsize{\@setsize\normalsize{20pt}\xiipt\@xiipt} +\def\small{\fs@setsize\small{17pt}\xipt\@xipt} +\def\footnotesize{\fs@setsize\footnotesize{14pt}\xpt\@xpt} +\def\scriptsize{\@setsize\scriptsize{11.875pt}\viiipt\@viiipt} +\def\tiny{\@setsize\tiny{8.75pt}\vipt\@vipt} +\def\large{\@setsize\large{20pt}\xivpt\@xivpt} % 1.06(3) +\def\Large{\@setsize\Large{25pt}\xviipt\@xviipt} +\def\LARGE{\@setsize\LARGE{25pt}\xxpt\@xxpt} +\let\huge\LARGE +\let\Huge\LARGE + +\if@LaTeX@e % 2.00(3)>> +\let\normalsize\@normalsize +\fi % 2.00(3)<< + +\let\fs@sec\large +\let\fs@subsec\normalsize +\let\fs@bibliography\normalsize +\let\fs@caption\normalsize +\let\fs@table\normalsize +\let\fs@footnote\footnotesize +{\tiny \xdef\fn@fontv{\ifipsj@nonjp \the\font \else % 2.12(1a) + \ifASCII \the\jfont \else \sixdm \fi\fi}} +\let\fn@fontvi\fn@fontv + +\@normalsize + +\ifipsj@nonjp\else % 2.12(1a) +\ifASCII\else % 1.06(2) >> +\ifx\setjglue\undefined\else % 2.04(1) +\def\@tempc{\edef\@tempa{\the\ja} + \edef\@tempa{\expandafter\string\@tempa} + \expandafter\@tempb\@tempa\@nil + \expandafter\defjintercharskip\csname\@tempa\endcsname} +\let\@tempd\@namedef +{\catcode`j=12\catcode`a=12\gdef\@tempb#1#2ja\@nil{\@tempd{@tempa}{#2}}} +\dg\@tempc{0pt}{1.4pt}{0.14pt} +\dm\@tempc{0pt}{1.4pt}{0.14pt} +\setjglues +\fi\fi\fi % 1.06(2) << + +\@tempdima.55\baselineskip +\edef\sec@aboveskip{\the\@tempdima} +\@tempdima.45\baselineskip +\edef\sec@belowskip{\the\@tempdima} + +\ifipsj@nonjp\else % 2.12(1a) +\if@LaTeX@e\else % 2.04(2) +\let\latex@bf\bf % 1.06(1) +\def\bf{\dg\latex@bf} % 1.06(1) +\fi\fi % 2.04(2) + + +%%%%%% Page Layout Parameters %%%%%% + +\newdimen\@mojihaba +\ifipsj@nonjp % 2.12(1a)>> + \@mojihaba11.54659pt + \let\jspaceskip\@mojihaba +\else + \@mojihaba\jspaceskip +\fi % 2.12(1a)<< + +% No heads +\headheight\z@ +\headsep\z@ + +\setbox0\hbox{$\displaystyle X^X$} +\topskip\ht0 + +% 1 page = 32 lines +\textheight31\baselineskip \advance\textheight\topskip \advance\textheight100sp + +% \topmargin is (A4height-\textheight)/2 - 1in +\topmargin296mm \advance\topmargin-\textheight \divide\topmargin\tw@ +\advance\topmargin-1in +\ifASCII\if@LaTeX@e\ifipsj@nonjp\else + \@@topmargin\topmargin \fi\fi\fi % 2.00(4),2.12(1a) + +\footskip 1.5\baselineskip + +% 1 page = 35 Kanji chars +\ifDS@english % 1.06(4) >> +\textwidth404.13048pt +\else +\textwidth35\@mojihaba +\fi % 1.06(4) << + +% \oddsidemargin is (A4width-\textwidth)/2 - 1in +\oddsidemargin210mm \advance\oddsidemargin-\textwidth \divide\oddsidemargin\tw@ +\advance\oddsidemargin-1in + +% As jart12 +\footnotesep10pt +\skip\footins 10.8pt plus 4pt minus 2pt +\def\footnoterule{\kern-3\p@ \hrule width.4\columnwidth \kern2.6\p@} + +\floatsep \baselineskip \textfloatsep \baselineskip +\intextsep \baselineskip \@maxsep \baselineskip +\dblfloatsep \baselineskip \dbltextfloatsep \baselineskip +\@dblmaxsep \baselineskip +\@fptop 0pt plus 1fil \@fpsep 0pt plus 2fil \@fpbot 0pt plus 1fil +\@dblfptop 0pt plus 1fil \@dblfpsep 0pt plus 2fil \@dblfpbot 0pt plus 1fil + +\parskip\z@ \parindent \@mojihaba +\@lowpenalty 51 \@medpenalty 151 \@highpenalty 301 +\@beginparpenalty -\@lowpenalty \@endparpenalty -\@lowpenalty +\@itempenalty -\@lowpenalty + + +%%%%%% Title and Authors %%%%%% +% +% Format of title, author names and abstract. +% +% \leftline{\LARGE <<paper-category>>} +% \vfill +% \beign{center}\LARGE\bf <Japanese title>\end{center} +% \vfill +% \begin{center}\LARGE\bf <Engilish title>\end{center} +% \vfill\vfill +% \newpage +% \large <Japanese author names> +% \vfill +% <<contact info>> +% \begin{itemize}\item[]\large <Contact address>\end{itemize} +% \vfill\vfill +% \newpage +% \normalsize <Japanese abstract> +% \normalsize <English abstract> + +\def\maketitle{\@maketitle} + +% default title header + +\def\title{\@dblarg{\@xtitle}} +\def\@xtitle[#1]#2{\gdef\@title{#2}} +\def\@title{\leavevmode\mkt@warning\title} +\long\def\author#1{\long\gdef\@author{#1}} +\def\@author{\mkt@warning\author} + +\newbox\@abstractbox + +\def\abstract{\global\let\@abstract\relax + \global\setbox\@abstractbox\vtop\bgroup} +\def\endabstract{\par\hbox{}\egroup} +\def\@abstract{\mkt@warning{abstract env}} + +%% We need English title, author name(s) and abstract. (H.N.) +%% English author names are simply ignored. +\def\etitle#1{\gdef\@etitle{#1}} +\def\@etitle{\leavevmode\mkt@warning\etitle} +\long\def\eauthor#1{} + +\newbox\@eabstractbox +\def\eabstract{\global\let\@eabstract\relax + \global\setbox\@eabstractbox\vtop\bgroup} +\let\endeabstract\endabstract +\def\@eabstract{\mkt@warning{eabstract env}} + +\ifDS@english \let\abstract\eabstract \let\@eabstract\@abstract \fi + +% Contact address is no longer required even in draft. +\def\contact{\long\def\mkt@contact} +\def\mkt@contact{} % 2.12(4) + +\def\@maketitle{\newpage\thispagestyle{empty} + \leftline{\LARGE + \ifDS@TBIO \ipsj@TBIO@pcatref % 2.11(1) + \else\ifDS@english \ifDS@technote Technical Note\else + Regular Paper\fi + \else \ifDS@technote \ipsj@j@technote % 2.12(1b) + \else \ipsj@j@regpaper\fi\fi\fi} + \vfill + \begin{center}\LARGE\bf\@title\end{center} + \ifDS@english\else + \vfill + \begin{center}\LARGE\bf\@etitle\end{center}\fi + \@thanks + \vfill\vfill +% % 2.12(4)>> +% \ifDS@anonymous\else % 2.10(1)>> +% \newpage\thispagestyle{empty} +% \begingroup\large\vspace*{\fill}\rightskip0pt plus1fil +% \parindent\z@\parskip.5\baselineskip\hangindent2em\hangafter\@ne +% \def\par{{\@@par}} +% \mkt@makeauthor +% \par\vfill +% \noindent +% \ifDS@english Contact To:\else \ipsj@j@contactto \fi% 2.12(1b) +% \endgroup +% \begin{itemize}\large\item[]\mkt@contact\end{itemize} +% \vfill\vfill +% \fi % 2.10(1)<< +% % 2.12(4)<< + \newpage \setcounter{page}{1}\def\thepage{\roman{page}} + \ifDS@english\else \@abstract \centerline{\bf \ipsj@j@abstract} +% % 2.12(1b) + \vskip-\prevdepth\vskip\baselineskip\vskip-\ht\@abstractbox + \unvbox\@abstractbox\prevdepth\z@ \fi + \centerline{\bf Abstract} + \vskip-\prevdepth \vskip\baselineskip\vskip-\ht\@eabstractbox + \@eabstract \unvbox\@eabstractbox + \newpage \def\thepage{\arabic{page}}\setcounter{page}{1}} + +\def\mkt@makeauthor{\let\member\mkt@member \let\nomember\mkt@nomember + \let\stmember\mkt@stmember + \expandafter\mkt@imakeauthor\@author\and\@nil\and} +\def\mkt@imakeauthor#1\and{\def\@tempa{#1}\ifx\@tempa\@nnil\let\next\relax + \else #1\par\let\next\mkt@imakeauthor\fi\next} + +% Macros to specify author's affiliation easily. +\ifDS@english +\def\paffilabel#1#2{\affilabel{#1}{Presently with #2}} +\else +\def\paffilabel#1#2{\affilabel{#1}{\ipsj@j@presently #2}} +\fi +% Ignore English affiliation even if given. +\def\affilabel#1#2{\@ifundefined{affi@r@#1}% + {\expandafter\xdef\csname affi@r@#1\endcsname + {\affi@cuteng#2\\\@nil}} + {\ipsj@warning{Affiliation label `#1' multiply defined}}} + % 2.00(1) +\def\affiref#1{\@ifundefined{affi@r@#1}% + {\ipsj@warning{% % 2.00(1) + Affiliation reference `#1' undefined}\hbox{(???)}} + {\setbox\@tempboxa\hbox{(\csname affi@r@#1\endcsname)}% + \@tempdima\wd\@tempboxa \advance\@tempdima2em\relax + \ifdim\@tempdima>\hsize + \newline\unhbox\@tempboxa + \else\ \box\@tempboxa\fi}} +\def\affi@cuteng#1\\#2\@nil{#1} + +% Membership of aurthor is required in draft. +\ifDS@english +\def\mkt@member#1{\ \hbox{[Regular Member\##1]}} +\def\mkt@nomember{\ \hbox{[Non Member]}} +\def\mkt@stmember#1{\ \hbox{[Student Member\##1]}} +\else +\def\mkt@member#1{\ \hbox{[\ipsj@j@member\##1]}} +\def\mkt@nomember{\ \hbox{[\ipsj@j@nomember]}} +\def\mkt@stmember#1{\ \hbox{[\ipsj@j@stmember\##1]}} +\fi + +%%%%%% Page Header and Footer %%%%%% + +\mark{{}{}} + +% The following counters are not used, but may appear. +\let\c@volpage\c@page % 2.00(5) +\def\thevolpage{\thepage} % 2.00(5) +\newcounter{volpageoffset} % You must set this to appropriate value +\newcounter{volume} % 2.12(1b)>> +\newcounter{number} +\newcounter{year} % 2.12(1b)<< + +\def\ps@plain{\let\@mkboth\@gobbletwo + \def\@oddhead{\@checklines}\let\@evenhead\@oddhead + \def\@oddfoot{\rm \hfil\thepage\hfil}\let\@evenfoot\@oddfoot} + +\def\transaction#1#2#3{} % 2.11(2) +\long\def\copyrightnotice#1{} % 2.11(2) + +% \checklines enables to draw a horizontal rule onto each baselines. + +\newif\if@checklines \@checklinesfalse +\def\checklines{\@checklinestrue} +\def\@checklines{\if@checklines \rlap{\smash{\vtop{ + \hbox{} \vskip\headsep \hrule width\textwidth\vskip-.4pt \vskip\topskip + \hrule\vskip-.4pt + \@tempcnta31\relax\@@checklines}}}\hfil\fi} +\def\@@checklines{\ifnum\@tempcnta>\z@ + \vskip\normalbaselineskip \hrule\vskip-.4pt \advance\@tempcnta\m@ne + \let\next\@@checklines\else\let\next\relax\fi\next} + +\pagestyle{plain} +\pagenumbering{arabic} + +\ifDS@english\else +\def\today{\the\year\ipsj@j@year \the\month\ipsj@j@month \the\day\ipsj@j@day} + % 2.12(1b) +\fi + + +%%%%%% Output Routine %%%%%% +% Nothing at all. + + +%%%%%% Biography %%%%%% +% Almost nothing. + +\def\received#1#2#3{} % 2.12(1b)>> +\def\accepted#1#2#3{} +\def\rereceived#1#2#3{} % 2.11(2)>> +% definition of \released is removed % 2.12(2) +\def\edInCharge#1{} % 2.11(2)<< +% % 2.12(1b)<< + +\def\biography{\let\member\@gobble \let\nomember\@gobble \let\stmember\@gobble + \ifDS@english \let\author\@gobble \fi % 2.12(3) + \let\adjust\@gobble \setbox0\vbox\bgroup + \tolerance\@M \hbadness\@M \hfuzz\maxdimen} +\def\endbiography{\egroup\setbox0\hbox{}} + + +%%%%%% Miscellaneous %%%%%% + +\raggedbottom + +\input{ipsjcommon.sty} + +% Redefine \acknowledgment to put it separately. +\newbox\ack@box +\let\@acknowledgment\acknowledgment + +\def\acknowledgment{\global\setbox\ack@box\vtop\bgroup\@acknowledgment} +\def\endacknowledgment{\par\egroup} + +% % 2.12(4)>> +%\let\id@enddocument\enddocument +%\def\enddocument{\clearpage +% \ifDS@anonymous\else \unvbox\ack@box \fi % 2.10(1) +% \id@enddocument} +% % 2.12(4)<< + +\endinput diff -r 000000000000 -r 38b037c42c34 paper/ipsjpapers.cls --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/paper/ipsjpapers.cls Mon Apr 17 20:05:26 2017 +0900 @@ -0,0 +1,16 @@ +% Copyright (C) 1995-2007 by Hiroshi Nakashima, Yasuki Saito and +% The Editorial Board of the IPSJ Journal +% +% ipsjpapers.cls 13-Mar-07 by Hiroshi Nakashima (ver 2.12) +% (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}[2007/06/15 ver 2.12] +\input{ipsjpapers.sty} +\endinput diff -r 000000000000 -r 38b037c42c34 paper/ipsjpapers.sty --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/paper/ipsjpapers.sty Mon Apr 17 20:05:26 2017 +0900 @@ -0,0 +1,1919 @@ +% Copyright (C) 1995-2007 by Hiroshi Nakashima, Yasuki Saito and +% The Editorial Board of the IPSJ Journal +% +% ipsjpapers.sty 15-Jun-07 by Hiroshi Nakashima (ver 2.12) +% (revision history deleted) +% ipsjpapers.sty 24-Apr-95 by Hiroshi Nakashima (ver 1.0) +% ipsjpapers.sty 30-Nov-93 by Hiroshi Nakashima +% ipsjpapers.sty 3-Feb-93 by Yaski Saito +% compsoft.sty 22-April-92 by Yaski Saito +% compsoft.sty 18-July-90 by Hideki Isozaki +% j-article.sty 10-Feb-89 from report.sty 16-Mar-88 + +%%%%%% LaTeX Version %%%%%% + +% 2.00(1) >> +%% \ifASCII is true if ASCII version Japanese TeX, which doesn't have +%% \jintercharskip (H.N.) +\newif\ifipsj@nonjp \ipsj@nonjpfalse % 2.12(1a) +\newif\ifASCII \ASCIIfalse +\ifx\jintercharskip\undefined \ASCIItrue +\ifx\kanjiskip\undefined \ipsj@nonjptrue % 2.12(1a) +\fi\fi +\newif\if@LaTeX@e \@LaTeX@efalse % 1.06(1) +\newif\if@LaTeX@eN \@LaTeX@eNfalse % 2.00(1) +\def\@tempa{LaTeX2e} % 1.06(1) +\ifx\fmtname\@tempa \@LaTeX@etrue % 1.06(1) +\ifx\xpt\undefined \@LaTeX@eNtrue \fi\fi % 2.00(1) +% 2.00(1) << + + + +%%%%%% Document Styles %%%%%% + +% 2.00(2) >> +\newif\ifDS@printer \DS@printerfalse +\newif\ifDS@english \DS@englishfalse +\newif\ifDS@technote \DS@technotefalse +\newif\ifDS@preface \DS@prefacefalse +\newif\ifDS@draft \DS@draftfalse +\newif\ifDS@techrep \DS@techrepfalse % 1.05(2) +\newif\ifDS@sigrecommended \DS@sigrecommendedfalse % 2.04(1) +\newif\ifDS@invited \DS@invitedfalse % 2.06(1) +\newif\ifDS@abstract \DS@abstractfalse % 2.07(7) +\newif\ifDS@private \DS@privatefalse % 2.07(8) +\newif\ifDS@anonymous \DS@anonymousfalse % 2.10(1) +\newif\ifDS@TBIO \DS@TBIOfalse % 2.11(1) +\newif\ifDS@online \DS@onlinefalse % 2.12(4a) + +\if@LaTeX@eN +\DeclareOption{printer}{\DS@printertrue} % 2.09(1) + % 2.12(2) +\DeclareOption{english}{\DS@englishtrue} +\DeclareOption{technote}{\DS@technotetrue} +\DeclareOption{preface}{\DS@prefacetrue} +\DeclareOption{draft}{\DS@drafttrue} +\DeclareOption{techrep}{\DS@techreptrue} +\DeclareOption{sigrecommended}{\DS@sigrecommendedtrue} % 2.04(1) +\DeclareOption{invited}{\DS@invitedtrue} % 2.06(1) +\DeclareOption{abstract}{\DS@abstracttrue} % 2.07(7) +\DeclareOption{private}{\DS@privatetrue} % 2.07(8) +\DeclareOption{anonymous}{\DS@anonymoustrue} % 2.10(1) +\DeclareOption{TBIO}{\DS@TBIOtrue \DS@englishtrue} % 2.11(1) +\DeclareOption{online}{\DS@onlinetrue \DS@printertrue \DS@englishtrue} + % 2.12(4a) +\DeclareOption{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.12) <15 Jun 2007>.} % 2.05(1) +\fi % \ifx + +\def\ds@printer{\relax} % 2.09(1) +\def\ds@english{\DS@englishtrue} +\def\ds@technote{\DS@technotetrue} +\def\ds@preface{\DS@prefacetrue} +\def\ds@draft{\DS@drafttrue} +\def\ds@techrep{\DS@techreptrue} % 1.05(2) +\def\ds@sigrecommended{\DS@sigrecommendedtrue} % 2.04(1) +\def\ds@invited{\DS@invitedtrue} % 2.06(1) +\def\ds@abstract{\DS@abstracttrue} % 2.07(7) +\def\ds@private{\DS@privatetrue} % 2.07(8) +\def\ds@anonymous{\DS@anonymoustrue} % 2.10(1) +\def\ds@TBIO{\DS@TBIOtrue \DS@englishtrue} % 2.11(1) +\def\ds@online{\DS@onlinetrue \DS@printertrue \DS@englishtrue} % 2.12(4a) + +% 1.04(3)>> +\def\@ptsize{0} +\@namedef{ds@11pt}{\def\@ptsize{1}} +\@namedef{ds@12pt}{\def\@ptsize{2}} +% 1.04(3)<< + +\@options +\let\ipsj@warning\@warning % 2.00(3) +\let\@latex@warning\@warning % 2.00(3) +\def\ipsj@error#1#2{\errhlp{#2}\errmessge{#1}} % 2.00(3) +\fi % \if@LaTeX@eN +% 2.00(2) << + +\ifx\@classoptionslist\undefined\else % 2.03(1) >> +\def\ipsj@draft@option{draft} +\def\ipsj@remove@draft@option{\def\@tempb{}% + \@for\@tempa:=\@classoptionslist\do{% + \ifx\@tempa\ipsj@draft@option\else + \edef\@tempb{\@tempb,\@tempa}\fi}% + \ifx\@tempb\@empty \def\@classoptionslist{}\else + \expandafter\ipsj@remove@draft@ption\@tempb\@nil\fi} +\def\ipsj@remove@draft@ption,#1\@nil{% + \def\@classoptionslist{#1}} +\ipsj@remove@draft@option +\fi % \ifx % 2.03(1) << + +\ifipsj@nonjp \DS@englishtrue \fi % 2.12(1a) + +%%%%%% Basics %%%%%% + +\newdimen\@Q \@Q=0.25mm + +\lineskip\z@ \normallineskip\z@ +\lineskiplimit\z@ \normallineskiplimit\z@ +\abovedisplayskip\z@ \belowdisplayskip\z@ +\abovedisplayshortskip\z@ \belowdisplayshortskip\z@ + +\def\baselinestretch{1} +\jot\z@ + +\ifDS@draft\def\next{\input{ipsjdrafts.sty}\endinput}\else\let\next\relax\fi +\next + +\@twosidetrue + +%%%%%% Fonts %%%%%% +% \finvedm(dg) dm5 \vpt \tiny fn-mark +% \sixdm(dg) dm6 \vipt \scriptsize +% \sevendm(dg) dm7 \vipt \footnotesize f-note, capt +% 10Q = 7.11304pt -> w(min7) = 6.73550pt +% \eightdm(dg) dm8 \viiipt \small abst, header +% 11Q = 7.82434pt -> w(min8) = 7.69772pt +% \eightdm(dg)half dm9 \ixpt \normalsize main text +% 12Q = 8.53564pt -> w(min9) = 8.65994 +% \tendm(dg) dm10 \xpt \large sec title +% 13Q = 9.24695pt -> w(min10) = 9.62216pt +% \tendm(dg)half dm10*1095 \xipt \Large author names +% 15Q =10.66956pt -> w(min10*1095) = 10.53625pt +% (\twlvdm) (dm12) \xiipt \LARGE e-title +% \twelvedm(dg)half dm12*1095 \xivpt \huge title +% min10*1440 +% 18Q =12.80347pt -> w(min10*1440) = 13.8559pt +% +% Note that cm fonts follows LaTeX standard. (e.g. \viiipt -> cmr8, etc.) + +% 2.00(4)>> +\if@LaTeX@e +\ifASCII +\def\ipsj@declare@font#1#2#3{{\fontsize{#3}{\z@}#2\selectfont % 2.00(5)>> + \edef\@tempa{\ifipsj@nonjp \the\font \else \the\jfont \fi} % 2.12(1b) + \expandafter\global\expandafter\let\expandafter#1\@tempa}} % 2.00(5)<< + +\iffalse % ASCII LaTeX2e printer settings is removed % 2.12(2a) +\else % ASCII LaTeX2e non-printer +\ifipsj@nonjp % 2.12(1b)>> +\ipsj@declare@font\fn@fontv\rmfamily\@vpt +\ipsj@declare@font\fn@fontvi\rmfamily\@vpt +\ipsj@declare@font\fn@fontvii\rmfamily\@vpt +% no declaration for \fn@fontxv % 2.12(1b)<< +\else % \ifipsj@nonjp +\ipsj@declare@font\fn@fontv\mcfamily\@vpt +\ipsj@declare@font\fn@fontvi\mcfamily\@vpt +\ipsj@declare@font\fn@fontvii\mcfamily\@vpt +\ipsj@declare@font\fn@fontxv\gtfamily\@xipt +\fi\fi %\ifipsj@nonjp\iffalse + +\else % \ifASCII = NTT LaTeX2e +\def\ipsj@declare@font#1#2#3{{\fontsize{#3}{\z@}#2\selectfont % 2.00(5) + \xdef#1{\expandafter\noexpand\csname\jf@ntn@me\endcsname}}} % 2.00(5) +\ipsj@declare@font\fn@fontv\dm\@vpt +\ipsj@declare@font\fn@fontvi\dm\@vpt +\ipsj@declare@font\fn@fontvii\dm\@vpt +\ipsj@declare@font\fn@fontxv\dg\@xipt +\fi % \ifASCII +% 2.00(4) << + +\else % \if@LaTeX@e = LaTeX 2.09 % 2.00(4) +%% Fonts for ASCII TeX. (H.N.) +\ifASCII +\iffalse % ASCII LaTeX 2.09 printer settings is removed % 2.12(2a) +\else \ifipsj@nonjp\else % 2.12(1b) +\font\fivedm min5 +\font\fivedg goth5 +\font\sixdm min6 +\font\sixdg goth6 +\font\sevendm min7 +\font\sevendg goth7 +\font\eightdm min8 +\font\eightdg goth8 +\font\eightdmhalf min9 +\font\eightdghalf goth9 +\font\tendm min10 +\font\tendg goth10 +\font\tendmhalf min10 scaled\magstephalf +\font\tendghalf goth10 scaled\magstephalf +\font\twelvedm min10 scaled\magstep1 +\font\twelvedg goth10 scaled\magstep1 +\font\twelvedmhalf min10 scaled\magstep2 +\font\twelvedghalf goth10 scaled\magstep2 +\let\fn@fontv\fivedm +\let\fn@fontvi\fivedm +\let\fn@fontvii\fivedm +\let\fn@fontxv\tendghalf + +\fi\fi % \ifipsj@nonjp\iffalse + +%% ASCII doesn't have \old@Npt. (H.N.) +\let\old@@vpt\vpt +\let\old@@vipt\vipt +\let\old@@viipt\viipt +\let\old@@viiipt\viiipt +\let\old@@ixpt\ixpt +\let\old@@xpt\xpt +\let\old@@xipt\xipt +\let\old@@xiipt\xiipt +\let\old@@xivpt\xivpt + +\ifipsj@nonjp % 2.12(1b)>> +\def\old@vpt{\old@@vpt} +\def\old@vipt{\old@@vipt} +\def\old@viipt{\old@@viipt} +\def\old@viiipt{\old@@viiipt} +\def\old@ixpt{\old@@ixpt} +\def\old@xpt{\old@@xpt} +\def\old@xipt{\old@@xipt} +\def\old@xiipt{\old@@xiipt} +\def\old@xivpt{\old@@xivpt} % 2.12(1b)<< +\else % \ifipsj@nonjp +\def\old@vpt{\old@@vpt\jspaceskip1zw\relax} +\def\old@vipt{\old@@vipt\jspaceskip1zw\relax} +\def\old@viipt{\old@@viipt\jspaceskip1zw\relax} +\def\old@viiipt{\old@@viiipt\jspaceskip1zw\relax} +\def\old@ixpt{\old@@ixpt\jspaceskip1zw\relax} +\def\old@xpt{\old@@xpt\jspaceskip1zw\relax} +\def\old@xipt{\old@@xipt\jspaceskip1zw\relax} +\def\old@xiipt{\old@@xiipt\jspaceskip1zw\relax} +\def\old@xivpt{\old@@xivpt\jspaceskip1zw\relax} +\fi % \ifipsj@nonjp + % 2.00(6) + % 1.06(2) + +%% ASCII doesn't have \dg nor \dm. (H.N.) +\ifipsj@nonjp\else % 2.12(1b) +\def\dg{\protect\pdg} +\def\dm{\protect\pdm} +%% Redefine \gt and \mc +\def\gt{\protect\pdg} +\def\mc{\protect\pdm} +\let\pdm\relax +\fi % \ifipsj@nonjp + +\else % \ifASCII +%% Fonts for NTT jTeX +%% \magstephalf and \magstep1 may cause trouble in older versions. + +\jfont\fivedm=dm5 +\jfont\fivedg=dg5 +\jfont\sixdm=dm6 +\jfont\sixdg=dg6 +\jfont\sevendm=dm7 +\jfont\sevendg=dg7 +\jfont\eightdm=dm8 +\jfont\eightdg=dg8 +\jfont\eightdmhalf=dm9 +\jfont\eightdghalf=dg9 +\jfont\tendm=dm10 +\jfont\tendg=dg10 +\jfont\tendmhalf=dm10 scaled 1095 +\jfont\tendghalf=dg10 scaled 1095 +\jfont\twelvedm=dm12 +\jfont\twelvedg=dg12 +\jfont\twelvedmhalf=dm12 scaled 1095 +\jfont\twelvedghalf=dg12 scaled 1095 +\let\fn@fontv\fivedm +\let\fn@fontvi\fivedm +\let\fn@fontvii\fivedm +\let\fn@fontxv\tendghalf + % 1.06(3) +\fi % \ifASCII +\fi % \if@LaTeX@e + +\ifx\jfsize\undefined \newcount\jfsize \fi % 1.06(2) + +\ifASCII % 1.06(3),2.00(6)>> +\ifipsj@nonjp\else % 2.12(1b) +\let\setjglues\relax +\let\jintercharskip\kanjiskip +\let\jasciikanjiskip\xkanjiskip +\let\jmathkanjiskip\xkanjiskip +\newdimen\jspaceskip + +\def\defjintercharskip#1#2#3#4{\@asciiwarning{\defjintercharskip}} +\def\defjasciikanjiskip#1#2#3#4{\@asciiwarning{\defjasciicharskip}} +\def\defmathkanjiskip#1#2#3#4{\@asciiwarning{\defmathcharskip}} +\def\defjspaceskip#1#2#3#4{\@asciiwarning{\defjspaceskip}} + +\def\@asciiwarning#1{\ipsj@warning{\string#1\space % 2.00(3) + is not supported in ASCII version}} + % 1.06(3),2.00(6)<< +\fi % \ifipsj@nonjp +\else % \ifASCII % 2.00(7)>> +\if@LaTeX@e +\ipsj@declare@font\fn@eightdmhalf\dm\@ixpt +\ipsj@declare@font\fn@eightdghalf\dg\@ixpt +\else +\def\fn@eightdmhalf{\eightdmhalf} +\def\fn@eightdghalf{\eightdghalf} +\fi % \if@LaTeX@e +\ifx\setjglues\undefined\else +\expandafter\defjintercharskip\fn@eightdmhalf{0pt}{1.4pt}{0.5pt} +\expandafter\defjintercharskip\fn@eightdghalf{0pt}{1.4pt}{0.5pt} +\expandafter\defjasciikanjiskip\fn@eightdmhalf{2pt}{1pt}{1pt} +\expandafter\defjasciikanjiskip\fn@eightdghalf{2pt}{1pt}{1pt} +\expandafter\defjmathkanjiskip\fn@eightdmhalf{2pt}{1pt}{1pt} +\expandafter\defjmathkanjiskip\fn@eightdghalf{2pt}{1pt}{1pt} +\fi % \if@LaTeX@e % 2.00(7)<< +\fi % \ifASCII % 2.00(4) + +\if@LaTeX@e % 2.00(8)>> +\if@LaTeX@eN +\DeclareOldFontCommand{\rm}{\normalfont\rmfamily}{\mathrm} +\DeclareOldFontCommand{\sf}{\normalfont\sffamily}{\mathsf} +\DeclareOldFontCommand{\tt}{\normalfont\ttfamily}{\mathtt} +\DeclareOldFontCommand{\bf}{\normalfont\bfseries}{\mathbf} +\DeclareOldFontCommand{\it}{\normalfont\itshape}{\mathit} +\DeclareOldFontCommand{\sl}{\normalfont\slshape}{\@nomath\sl} +\DeclareOldFontCommand{\sc}{\normalfont\scshape}{\@nomath\sc} +\DeclareRobustCommand*{\cal}{\@fontswitch{\relax}{\mathcal}} +\DeclareRobustCommand*{\mit}{\@fontswitch{\relax}{\mathnormal}} +\ifASCII \ifipsj@nonjp\else % 2.12(1b) +\DeclareOldFontCommand{\mc}{\normalfont\mcfamily}{\mathmc} +\DeclareOldFontCommand{\gt}{\normalfont\gtfamily}{\mathgt} +\fi\fi\fi % \ifipsj@nonjp\ifASCII\if@LaTeX@eN + +\ifASCII \ifipsj@nonjp\else % 2.12(1b) +\def\dm{\mc} +\def\dg{\gt} +\fi\fi\fi % \ifipsj@nonjp\ifASCII\if@LaTeX@e % 2.00(8)<< + +%%%%%% Basic Font Size Macros %%%%%% + +\if@LaTeX@e % 1.06(4),2.00(9),2.04(3)>> +\def\@setsize#1#2#3#4{\@setfontsize#1{#4}{#2}\ipsj@setjspaceskip} +\let\ipsj@setjspaceskip\relax % 2.12(1b)>> +\ifASCII \ifipsj@nonjp\else +\def\ipsj@setjspaceskip{\jspaceskip1zw\relax} +\fi\fi % \ifipsj@nonjp\ifASCII % 2.12(1b)<< + % 1.06(4),2.00(9),2.04(3)<< + +%% \vipt etc. are redefined to use appropriate Japanese fonts. +\else % \if@LaTeX@e % 2.00(9) +\ifipsj@nonjp\else % 2.12(1b) +\def\vpt{\old@vpt\fivedm\let\pdg\fivedg\let\pdm\fivedm\jfsize=5\relax} +\def\vipt{\old@vipt\sixdm\let\pdg\sixdg\let\pdm\sixdm\jfsize=6\relax} +\def\viipt{\old@viipt\sevendm\let\pdg\sevendg\let\pdm\sevendm\jfsize=7\relax} +\def\viiipt{\old@viiipt\eightdm\let\pdg\eightdg\let\pdm\eightdm\jfsize=8\relax} +\def\ixpt{\old@ixpt\eightdmhalf\let\pdg\eightdghalf\let\pdm\eightdmhalf + \jfsize=9\relax \@ixptboldmath} % 1.02(2) +\def\xpt{\old@xpt\tendm\let\pdg\tendg\let\pdm\tendm\jfsize=10\relax} +\def\xipt{\old@xipt\tendmhalf\let\pdg\tendghalf\let\pdm\tendmhalf\jfsize=11 + \relax} +\def\xiipt{\old@xiipt\twelvedm\let\pdg\twelvedg\let\pdm\twelvedm + \jfsize=12\relax} +\def\xivpt{\old@xivpt\twelvedmhalf\let\pdg\twelvedghalf\let\pdm\twelvedmhalf + \jfsize=14\relax} +\fi\fi % \ifipsj@nonjp\if@LaTeX@e % 2.00(9) + +\if@LaTeX@e % 1.06(5) +\let\@ixptboldmath\relax % 1.06(5) +\else % 1.06(5) +% 1.02(2) >> +\iffalse % printer setting removed % 2.12(2a) +\else +\def\@ixptboldmath{% + \def\unboldmath{\everymath{}\everydisplay{}\@nomath\unboldmath + \textfont\@ne\ninmi + \textfont\tw@\ninsy \textfont\lyfam\ninly + \@boldfalse}\@boldfalse +% 1.03(1) >> + \def\boldmath{\@ifundefined{ninmib}{\global\font\ninmib\@mbi + \global\font\ninsyb\@mbsy\relax + \global\font\ninlyb\@lasyb\relax + \@addfontinfo\@ixpt + {\def\boldmath{\everymath{\mit}\everydisplay{\mit}% + \@prtct\@nomathbold + \textfont\@ne\ninmib \textfont\tw@\ninsyb + \textfont\lyfam\ninlyb \@prtct\@boldtrue}}}{}% + \@ixpt\boldmath}} +% 1.03(1) << +\fi % \iffalse +% 1.02(2) << +\fi % \if@LaTeX@e % 1.06(5) + + +%%%%%% Font Size Macros %%%%%% + +\def\fs@setsize#1#2#3#4{\normalsize\dimen@\normalbaselineskip + \@ifstar{\@setsize{#1}{\dimen@}{#3}{#4}}% + {\@setsize{#1}{#2}{#3}{#4}}} + +% s = (3*b - (h' + d') - (h + d))/2 +% s_a = s + h' + d - b +% s_b = s + h + d' - b +\def\sec@setskips#1{\setbox0\hbox{\fs@sec\bf#1}\setbox1\hbox{#1} + \@tempdima3\baselineskip + \advance\@tempdima-\ht0 \advance\@tempdima-\dp0 + \advance\@tempdima-\ht1 \advance\@tempdima-\dp1 + \divide\@tempdima\tw@ \advance\@tempdima-\baselineskip + \@tempdimb\@tempdima + \advance\@tempdima\ht0 \advance\@tempdima\dp1 + \advance\@tempdimb\ht1 \advance\@tempdimb\dp0 + \edef\sec@aboveskip{\the\@tempdima} + \edef\sec@belowskip{\the\@tempdimb}} + +\ifDS@english +% size pt \baselineskip size \?pt \baselineskip +% \normalsize 10 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 % \ifDS@english +% 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\baselineskip20\@Q} % 2.12(7) +\let\fs@etitle\LARGE +\let\fs@title\huge + +\@normalsize + % 2.00(7) +\ifx\setjglues\undefined\else +\setjglues +\fi + +% \sec@setskips{<A of hiragana>} is moved to ipsjcommon % 2.12(1c) +\fi % \ifDS@englisth + +\if@LaTeX@e\else \ifipsj@nonjp\else % 2.00(11),2.12(1b) +\let\latex@bf\bf % 1.06(6) +\def\bf{\latex@bf \dg} % 1.06(6) +\fi\fi % 2.00(11) + + +%%%%%% Page Layout Parameters %%%%%% + +\newdimen\@mojihaba +\ifipsj@nonjp \let\jspaceskip\@mojihaba \fi % 2.12(1b) + +\ifDS@printer % 2.12(2b) >> +\voffset=-20mm +\hoffset=-14mm +\fi % 2.12(2b) << + +\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 % \if@tempswa +\topmargin 131\@Q \advance\topmargin-1in + +% \textheight = 45\baselineskip + \topskip + epsilon(100sp) +\textheight45\baselineskip \advance\textheight\topskip \advance\textheight100sp + +\ifDS@techrep % 1.05(2)>> +\textheight50\baselineskip \advance\textheight\topskip \advance\textheight100sp +\fi % \ifDS@techrep % 1.05(2)<< + +% \headsep = 28Q - \topskip +\headsep28\@Q \advance\headsep-\topskip + +% Only first page has page number (footer) at the bottom +\footskip24\@Q + +\@mojihaba12\@Q +\fi % \if@tempswa + +\columnsep30\@Q + +% \textwidth - \columnwidth = 24 * 12Q * 2 + \columnsep = 606Q +\textwidth606\@Q +\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)} + +\newif\ifipsj@trans \ipsj@transfalse % 2.12(4f) +\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@TBIO \ipsj@TBIO@pcatref % 2.11(2) + \else\ifDS@technote Technical Note + \else\ifDS@invited Invited Paper % 2.06(1) + \else\ifDS@sigrecommended % 2.04(1) + Recommended Paper % 2.04(1) + \else\ifDS@abstract % 2.07(7) + Abstract % 2.07(7) + \else\ifDS@techrep\else % 2.02(1) + Regular Paper\fi\fi\fi\fi\fi\fi}% 2.06(1) +% % 2.04(1) + \vskip32\@Q \vskip-\baselineskip \fi + \else % 2.04(1) >> + \@tempswafalse \ifDS@technote\@tempswatrue\fi + \ifDS@sigrecommended\@tempswatrue\fi + \ifDS@invited\@tempswatrue\fi % 2.06(1) + \ifDS@abstract\@tempswatrue\fi % 2.07(7) + \if@tempswa + \vskip18\@Q \vskip-\headsep + \leftline{\vbox to28\@Q{\hrule height.8pt\vss + \hbox{\hskip7\@Q \fs@type + \ifDS@technote \ipsj@j@technote % 2.12(1c)>> + \else\ifDS@invited + \ipsj@j@invited % 2.06(1) + \else\ifDS@sigrecommended + \ipsj@j@sigrec % 2.06(1) + \else \ipsj@j@talkabst % 2.07(7) + \fi\fi\fi % 2.12(1c)<< + \hskip7\@Q}\vss\hrule height.8pt}} +% % 2.04(1) << + \vskip40\@Q \vskip-\baselineskip + \else + \hbox{}\vskip60\@Q \vskip-\headsep \vskip-\baselineskip + \fi\fi + \@tempswafalse \ifDS@english\else\ifDS@preface\@tempswatrue\fi\fi + \mkt@maketitle{\fs@title\bf}\@title\title + \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{$^{\affi@thefnmark}$}}}% % 2.12(7) + \gdef\affi@thefnmark{}\leavevmode\let\+\ignorespaces + \settowidth\@tempdima{\ifipsj@nonjp x\else\ipsj@j@a \fi}% 2.12(1c) + \mkt@namewidth7\@tempdima\@tempcnta\z@ + \expandafter\mkt@countauthor\@author\and\@nil\and + \ifnum\@tempcnta=\@ne\let\mkt@anhbox\mkt@anhboxc\mkt@makesingleauthor + \else + \@tempcntb\@tempcnta \divide\@tempcntb\thr@@ + \multiply\@tempcntb\thr@@ \advance\@tempcntb-\@tempcnta + \ifnum\@tempcntb=\m@ne\relax\@tempcntb\tw@\else\@tempcntb\z@\fi + \mkt@cnta\thr@@ + \let\mkt@anhbox\mkt@anhboxl + \expandafter\mkt@makemultiauthor\@author\and\and\fi} +\def\mkt@countauthor#1\and{\def\@tempa{#1}\ifx\@tempa\@nnil\let\next\relax + \else\advance\@tempcnta\@ne \let\next\mkt@countauthor\fi\next} + +% If single author, author name has 9 KC width instead of 7. +\def\mkt@makesingleauthor{\divide\mkt@namewidth7\multiply\mkt@namewidth9\relax + \expandafter\mkt@putauthor\@author\+ \@nil} + +\def\mkt@makemultiauthor#1\and{\ifnum\@tempcnta=\z@\unskip\let\next\relax\else + \leavevmode + \advance\mkt@cnta\m@ne \advance\@tempcnta\m@ne + \ifnum\mkt@cnta=\z@\mkt@maleft{#1}\mkt@cnta\thr@@\else + \ifnum\@tempcnta=\@tempcntb\mkt@maleft{#1}\mkt@cnta\tw@\else + \mkt@putauthor#1\+ \@nil\let\mkt@anhbox\mkt@anhboxc\fi\fi + \let\next\mkt@makemultiauthor\fi\next} +\def\mkt@maleft#1{\let\mkt@anhbox\mkt@anhboxr\mkt@putauthor#1\+ \@nil + \par\let\mkt@anhbox\mkt@anhboxl} + +% Japanese author name format: +% Non Japanese : As is. +% Japanese w/o s/g delimitor : As is with warning. +% Japanese (s+g>6) : As is. +% Japanese (s+g<7) : Give 1-KC space to s/g delimitor, then insert +% infinit stretch between each character pair, assuming the +% s/g delimitor as a charcter, to make the name have 7-KC +% width. An exception is 2s + 2g case, in which s/g +% delimitor has 0 width in order to have the result +% "S_S_G_G". + +\def\mkt@putauthor#1 #2\@nil{% + \ifipsj@nonjp \mkt@anhbox{#1 #2}\else + \setbox\@tempboxa\hbox{\let\affiref\@gobble \let\mkt@warning\@gobble + \jintercharskip\z@#1#2}% + \setbox\mkt@boxa\hbox{\let\affiref\@gobble \let\mkt@warning\@gobble + \jintercharskip1cm#1#2}% + \ifdim\wd\@tempboxa=\wd\mkt@boxa \mkt@anhbox{#1 #2}\else + % probably no Kanjis + \def\@tempa{#2}\ifx\@tempa\empty % without space btwn s/g-name + {\let\affiref\@gobble \def\+{}% + \ipsj@warning{Author name #1 doesn't have a space}}% + % 2.00(3) + \mkt@anhbox{#1}\else + \mkt@getnamewidth\mkt@sname{#1}\mkt@getnamewidth\mkt@gname{#2}% + \mkt@cntb\mkt@sname \advance\mkt@cntb\mkt@gname + \ifnum\mkt@cntb>6\relax\mkt@anhbox{#1\ #2}\else + \jintercharskip\fill% + \@tempskipa\@tempdima plus2fill\relax + \ifnum\mkt@sname=\tw@ \ifnum\mkt@gname=\tw@ \@tempskipa\fill\fi\fi + \hbox to\mkt@namewidth{#1\hskip-\lastskip + \hskip\@tempskipa#2\hskip-\lastskip\@makefnmark}\fi\fi\fi + \fi + \gdef\affi@thefnmark{}\hskip\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. +% 2.12(7)>> +\newcounter{affi@footnote} \c@affi@footnote\z@ +\newcounter{affi@pfootnote} \c@affi@pfootnote\z@ +\def\affilabel{\affi@deflabels\affi@affilabel} +\def\paffilabel{\affi@deflabels\affi@paffilabel} +\def\affi@deflabels#1#2#3{{\def\protect{\noexpand\protect\noexpand}% + \let\affi@affilabel\relax \let\affi@paffilabel\relax \let\\\relax + \xdef\affi@labels{\affi@labels#1{#2}{#3}}}} +\def\affi@labels{} +\def\affi@affilabel{\begingroup \affi@label{affi@footnote}\@makefnmarkdagger} +\def\affi@paffilabel#1#2{\begingroup + \def\protect{\noexpand\protect\noexpand}% + \def\\{\noexpand\\Presently with \ignorespaces}% + \edef\@tempa{\ifDS@english Presently with \else % 1.04(1d) + \ipsj@j@presently\fi#2}% % 2.12(1c) + \affi@label{affi@pfootnote}\@makefnmarkast{#1}\@tempa} +\def\affi@label#1#2#3#4{\stepcounter{#1}% + \@ifundefined{affi@r@#3}% + {\expandafter\xdef\csname affi@r@#3\endcsname{% + \csname the#1\endcsname}}% + {\ipsj@warning{Affiliation label `#3' multiply defined}}% + % 2.00(3) + \let\affi@footnotetext\relax\let\\\relax + \def\protect{\noexpand\protect\noexpand}% + \xdef\@thanks{\@thanks + \affi@footnotetext + {\csname the#1\endcsname}{\protect#2}{#4}}\endgroup} + +\def\affiref#1{\@ifundefined{affi@r@#1}% + {\ipsj@warning{Affiliation reference `#1' undefined}% 2.00(3) + \def\@tempa{?}}% + {\def\@tempa{\csname affi@r@#1\endcsname}}% + {\def\protect{\noexpand\protect\noexpand}% + \ifx\affi@thefnmark\empty \xdef\affi@thefnmark{\@tempa}\else + \xdef\affi@thefnmark{\affi@thefnmark,\hskip\z@\@tempa}\fi}} +\def\affi@footnotetext#1#2#3{{\def\@thefnmark{#1}% + \def\@makefnmarkforfn{#2}\@footnotetext{#3}}} + +\def\theaffi@footnote{{\dagger}\number\c@affi@footnote} +\def\theaffi@pfootnote{{\ast}\number\c@affi@pfootnote} + +\def\thanks#1{\begingroup + \stepcounter{affi@pfootnote}\let\thempfn\theaffi@pfootnote + \let\@thefnmark\thempfn \@makefnmark + \let\affi@footnotetext\relax\let\\\relax + \def\protect{\noexpand\protect\noexpand}% + \xdef\@thanks{\@thanks + \affi@footnotetext{\thempfn}{\protect\@makefnmarkast}{#1}}% + \endgroup} +% 2.12(7)<< + +% \contact is necessary only for drafts. +\long\def\contact#1{} + + +%%%%%% Page Header and Footer %%%%%% + +\mark{{}{}} + +\newcounter{volpageoffset} % You must set this to appropriate value +\setcounter{volpageoffset}{1} % for each issue! +\ifDS@printer % 2.12(4d)>> +\def\LastPageNumber{\gdef\ipsj@last@page} +\fi % 2.12(4d)<< + +% 2.00(16)>> +\let\latex@document\document +\def\document{\latex@document + \ifDS@private\else + \ifDS@online \global\c@page\ipsj@olh@page % 2.12(4) + \else \global\c@page\c@volpageoffset \fi \fi} % 2.07(8) +\let\c@volpage\c@page % for backward compatibility +\def\thevolpage{\thepage} % for backward compatibility +% 2.00(16)<< + +\newcounter{volume} % 2.12(1c)>> +\newcounter{number} +\let\c@month\c@number % 2.07(4) +\newcounter{year} % 2.12(1c)<< + +\ifDS@printer % 2.12(4b)>> +\def\SetOnlineHeaderInfo#1#2#3#4{% % <vol><year><month><page>[<lastpage>] + \def\ipsj@olh@vol{#1}% + \def\ipsj@olh@year{#2}% + \def\ipsj@olh@month{#3}% + \def\ipsj@olh@page{#4}% + \@ifnextchar[%] + \ipsj@olh@setlastpage\relax} +\def\ipsj@olh@setlastpage[#1]{\def\ipsj@olh@lastpage{#1}} +\fi % 2.12(4b)<< + +% 2.07(4)>> +\ifDS@online % 2.12(4b) +\def\@thevolno{Vol.~\ipsj@olh@vol} % 2.12(4b) +\else +\def\@thevolno{Vol.~\arabic{volume}\hskip\@mojihaba No.~% % 2.12(1c)>> + \ifipsj@trans SIG\ \ipsj@sig@numa(\ipsj@sig@code\ \ipsj@sig@numb)% + \else \arabic{number}\fi} % 2.12(1c)<< +\fi +% 2.07(4)<< +% 2.00(15)>> +% 2.12(1c)(4b)>> +\def\@monthyear{% + \ifDS@online \ipsj@monthyear\ipsj@olh@month\ipsj@olh@year + \else \c@year1959 \advance\c@year\c@volume + \ipsj@monthyear\c@number\c@year \fi} +\def\ipsj@monthyear#1#2{\ifcase#1\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 \number#2} +% 2.12(1c)(4b)<< +% 2.00(15)<< + +% 2.07(2)>> +\def\transaction#1#2#3{\ipsj@transtrue + \def\ipsj@sig@code{#1}\def\ipsj@sig@numa{#2}\def\ipsj@sig@numb{#3}% + \expandafter\let\expandafter\ipsj@sig@title + \csname ipsj@sig@#1@\ifDS@english e\else j\fi\endcsname + \ifx\ipsj@sig@title\relax + \ipsj@warning{Transaction code #1 is unknown}\fi + \let\ipsj@oddhead@s\ipsj@oddhead@a + \ifDS@online\else % 2.12(4c) + \settowidth\@tempdima{% + \ipsj@ohcheck\ipsj@ohcvolno\hdr@tipsj\ipsj@ohcvolno}% + \ifdim\@tempdima>\textwidth + \let\ipsj@oddhead@s\ipsj@oddhead@b + \settowidth\@tempdima{\c@month3\relax % "Mar." is longest + \ipsj@ohcheck\ipsj@ohcvolno\hdr@tipsj\@monthyear}% + \ifdim\@tempdima>\textwidth + \let\ipsj@oddhead@s\ipsj@oddhead@c + \fi \fi \fi} + +\def\ipsj@sig@PRO@e{Programming} +\def\ipsj@sig@TOM@e{Mathematical Modeling and Its Applications} +\def\ipsj@sig@TOD@e{Databases} +\def\ipsj@sig@HPS@e{High Performance Computing Systems} +\def\ipsj@sig@CVIM@e{Computer Vision and Image Media} +\def\ipsj@sig@ACS@e{Advanced Computing Systems} % 2.09(2) +\def\ipsj@sig@TBIO@e{Bioinformatics} % 2.11(3) +\def\ipsj@sig@SLDM@e{System LSI Design Methodology} % 2.12(8) +% 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.12(9)>> +\def\ipsj@lc@Rtop{\rlap{\smash{\rule[-\headsep]{0.05mm}{10mm}% + \rule[-\headsep]{10mm}{0.05mm}}}} +\def\ipsj@lc@Ltop{\llap{\smash{\rule[-\headsep]{10mm}{0.05mm}% + \rule[-\headsep]{0.05mm}{10mm}}}} +\def\ipsj@lc@Lbot{\llap{\smash{\raisebox{-\textheight}{% + \raisebox{-\headsep}{\rule{10mm}{0.05mm}\rule[-10mm]{0.05mm}{10mm}}}}}} +\def\ipsj@lc@Rbot{\rlap{\smash{\raisebox{-\textheight}{% + \raisebox{-\headsep}{\rule[-10mm]{0.05mm}{10mm}\rule{10mm}{0.05mm}}}}}} + +\def\ps@layoutcheck{\ps@headings + \let\ipsj@lc@evenhead\@evenhead + \def\@evenhead{\ipsj@lc@Lbot \ipsj@lc@Ltop + \ipsj@lc@evenhead + \ipsj@lc@Rtop \ipsj@lc@Rbot}% + \let\ipsj@lc@oddhead\@oddhead + \def\@oddhead{\ipsj@lc@Lbot \ipsj@lc@Ltop + \ipsj@lc@oddhead + \ipsj@lc@Rtop \ipsj@lc@Rbot}% + \let\ipsj@lc@myheadings\ps@myheadings + \def\ps@myheadings{\ipsj@lc@myheadings + \let\ipsj@lc@fpoddhead\@oddhead + \def\@oddhead{\ipsj@lc@Lbot \ipsj@lc@Ltop + \ipsj@lc@fpoddhead + \ipsj@lc@Rtop \ipsj@lc@Rbot}% + \let\@evenhead\@oddhead}} +% 2.12(9)<< + +% 2.07(3)>> +\def\ipsj@oddhead@a#1#2{\hskip12\@Q \rlap{\@thevolno}\hss#1\hss + \llap{#2}\hskip12\@Q} +\def\ipsj@oddhead@b#1#2{\hskip12\@Q \@thevolno\qquad#1\hss + \llap{#2}\hskip12\@Q} +\def\ipsj@oddhead@c#1#2{\hskip12\@Q \@thevolno\hss#1\hss#2\hskip12\@Q} +\let\ipsj@oddhead@t\ipsj@oddhead@a +\let\ipsj@oddhead@s\ipsj@oddhead@a +% 2.07(3)<< + +\def\ipsj@online@trans{IPSJ Digital Courier} % 2.12(4c) +\def\ipsj@online@journal{IPSJ Digital Courier} % 2.12(4c) +% 2.02(2),2.07(4)>> +\ifDS@english +\def\hdr@tipsj{\smash{% + \ifDS@online % 2.12(4c)>> + \ifipsj@trans + \ipsj@online@trans + \else + \ipsj@online@journal\fi % 2.12(4c)<< + \else + \ifipsj@trans + IPSJ Transactions on \ipsj@sig@title + \else + IPSJ Journal\fi + \fi}} +\else +\def\hdr@tipsj{\smash{\ipsj@j@jipsj % 2.12(1c)>> + \ifipsj@trans \ipsj@j@colon \ipsj@sig@title \fi}} % 2.12(1c)<< +\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)>> + % register marks are removed % 2.12(2d) +% 1.05(2)<< + } +\def\@@checklines{\ifnum\@tempcnta>\z@ + \vskip\normalbaselineskip \hrule\vskip-.4pt \advance\@tempcnta\m@ne + \let\next\@@checklines\else\let\next\relax\fi\next} + +\pagestyle{headings} +\pagenumbering{arabic} + +\ifDS@english\else +\def\today{\the\year\ipsj@j@year \the\month\ipsj@j@month \the\day\ipsj@j@day} + % 2.12(1c) +\fi + + +%%%%%% Output Routine %%%%%% + +% To balance the final page, +% following code is borrowed from nicetwocolumn style + +% you can refrain from balancing by falsifying following switch! +%% Initial value of \if@lastpagebalancing is false. It may be turned true by +%% biography processing macros. (H.N.) + +\newif\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)<< +% % 2.12(4d)>> + \if@filesw \write\@auxout{\string\gdef\string\ipsj@lastpage + {\number\c@page}}\fi % 2.12(4d)<< + \latex@enddocument} + +\newbox\@leftcolumnfootnote \newbox\@rightcolumnfootnote +\newif\if@leftfootnoteexist \@leftfootnoteexistfalse +\newif\if@rightfootnoteexist \@rightfootnoteexistfalse +\newif\ifopt@floatexist \opt@floatexistfalse + +% 2.00(12) \color@{begin/end}group ignored +\def\enlargethispage{\ipsj@warning{\string\enlargepage is ignored}} + % 2.00(3,12) +\def\@makecol{\vbadness10000 \lineskiplimit\normallineskiplimit % 1.05(1) + \setbox\@outputbox\box\@cclv + \if@firstcolumn + \ifvoid\footins \global\@leftfootnoteexistfalse + \else + \global\@leftfootnoteexisttrue + \@tempdima\dp\footins + \global\setbox\@leftcolumnfootnote\vbox{ + \unvbox\footins\vskip-\@tempdima} + \fi + \ifx\@botlist\@empty\else\global\opt@floatexisttrue\fi + \else + \ifvoid\footins \global\@rightfootnoteexistfalse + \else + \global\@rightfootnoteexisttrue + \@tempdima\dp\footins + \global\setbox\@rightcolumnfootnote\vbox{ + \unvbox\footins \vskip-\@tempdima} + \ifx\@toplist\@empty\else\global\opt@floatexisttrue\fi + \fi + \fi + \xdef\@freelist{\@freelist\@midlist}\gdef\@midlist{}\@combinefloats + \global\maxdepth\@maxdepth} + +% 2.01(1) >> +\let\latex@vtryfc\@vtryfc +\def\@vtryfc{\if@firstcolumn \global\@leftfootnoteexistfalse + \else \global\@rightfootnoteexistfalse \fi \latex@vtryfc} +% 2.01(1) << + +% 1.01(1,2) >> +\let\latex@addtobot\@addtobot +\def\@addtobot{\latex@addtobot\global\maxdepth\@maxdepth} +\let\latex@combinefloats\@combinefloats +\def\@combinefloats{\ifx\@botlist\@empty\else \dimen@\dp\@outputbox + \setbox\@outputbox\vbox{\unvbox\@outputbox \vskip-\dimen@}\fi + \latex@combinefloats} +% 1.01(1,2) << + +\newskip\opt@baselineskip +\def\@outputdblcol{ + \if@firstcolumn \global\@firstcolumnfalse + \global\setbox\@leftcolumn\box\@outputbox + \global\opt@baselineskip\baselineskip + \else \global\@firstcolumntrue \global\opt@floatexistfalse + \global\bib@adjustheight-\maxdimen + \setbox\@leftcolumn\vbox to\@colht{\boxmaxdepth\@maxdepth % 1.01(3) + \unvbox\@leftcolumn + \if@leftfootnoteexist\vfil + \footnoterule\box\@leftcolumnfootnote\fi} + \setbox\@outputbox\vbox to\@colht{\boxmaxdepth\@maxdepth % 1.01(3) + \unvbox\@outputbox + \if@rightfootnoteexist\vfil + \footnoterule\box\@rightcolumnfootnote\fi} + \global\maxdepth\@maxdepth + \if@finalpageoutput + \if@leftfootnoteexist\else\if@rightfootnoteexist\else + \setbox\@leftcolumn\vbox{\unvbox\@leftcolumn}% + \setbox\@outputbox\vbox{\unvbox\@outputbox} + \ifdim\ht\@leftcolumn<\ht\@outputbox + \setbox\@leftcolumn\vbox to\ht\@outputbox{ + \unvbox\@leftcolumn}% + \else + \setbox\@outputbox\vbox to\ht\@leftcolumn{ + \unvbox\@outputbox}% + \fi + \fi\fi\fi + \setbox\@outputbox\vbox{\hbox to\textwidth{\hbox to\columnwidth + {\box\@leftcolumn \hss}\hfil \vrule width\columnseprule\hfil + \hbox to\columnwidth{\box\@outputbox \hss}}} + \@combinedblfloats + \@outputpage \begingroup \@dblfloatplacement \@startdblcolumn + \@whilesw\if@fcolmade \fi{\@outputpage\@startdblcolumn}% + \endgroup + \fi} + +\let\opt@outputdblcol\@outputdblcol +\chardef\opt@boxa\z@ +\chardef\opt@boxb\@ne +\chardef\opt@boxc\tw@ +\def\opt@magicpenalty{1234} +\def\opt@balanceoutputdblcol{\let\next\opt@ibalanceoutputdblcol + \if@firstcolumn \let\next\opt@outputdblcol + \else \ifopt@floatexist \opt@warning \let\next\opt@outputdblcol + \else\ifx\@deferlist\@empty\else + \opt@warning \let\next\opt@outputdblcol\fi\fi\fi + \next} +\def\opt@ibalanceoutputdblcol{% + \setbox\@leftcolumn\vbox{\unvbox\@leftcolumn + \ifnum\lastpenalty=\opt@magicpenalty\relax\else + \@tempcnta10\relax\@whilenum\@tempcnta>0\do{% + \unskip\unskip\unkern\unpenalty + \advance\@tempcnta\m@ne}\fi} + \advance\opt@baselineskip-\dp\@leftcolumn + \ifdim\dp\@leftcolumn=\z@ \ifdim\opt@baselineskip=\baselineskip + \@tempdima\ht\@leftcolumn \advance\@tempdima-\topskip + \divide\@tempdima\baselineskip + \@tempcnta\@tempdima \@tempdima\@tempcnta\baselineskip + \advance\@tempdima\topskip + \advance\@tempdima-\ht\@leftcolumn + \advance\opt@baselineskip\@tempdima \fi\fi + \advance\opt@baselineskip-\topskip + \setbox\@outputbox\vbox{\unvbox\@outputbox} + \ifdim\ht\@outputbox=\topskip \ifdim\dp\@outputbox=\z@ + \setbox\opt@boxa\vbox{\unvcopy\@outputbox\unskip + \global\setbox\opt@boxb\lastbox + \global\dimen@\lastskip} + \ifvoid\opt@boxb\else\ifdim\ht\opt@boxb=\z@ + \ifdim\dp\opt@boxb=\z@\ifdim\dimen@=\topskip + \@firstcolumntrue\fi\fi\fi\fi\fi\fi + \setbox\opt@boxa\copy\@outputbox + \setbox\@outputbox\vbox{\unvcopy\@leftcolumn + \if@firstcolumn\else + \vskip\opt@baselineskip + \penalty\interlinepenalty\unvbox\@outputbox\fi} + \@tempdima\ht\@outputbox \advance\@tempdima\topskip + \divide\@tempdima\tw@ \advance\@tempdima100sp + \splittopskip\topskip \splitmaxdepth\@maxdepth + \ifdim\bib@adjustheight<\@M pt + \opt@split\@outputbox\opt@boxb\@tempdima + \ifdim\ht\opt@boxb<\bib@adjustheight + \opt@split\@leftcolumn\opt@boxc\bib@adjustheight + \opt@split\opt@boxc\opt@boxb\@tempdima + \if@firstcolumn + \opt@adjust\opt@boxc{\unvbox\@leftcolumn} + \else\opt@adjust\opt@boxc{\ifvoid\@leftcolumn\else + \unvbox\@leftcolumn\vskip\opt@baselineskip\fi + \unvbox\opt@boxa}\fi\fi + \else + \advance\bib@adjustheight-\@M pt + \opt@split\opt@boxa\opt@boxc\bib@adjustheight + \setbox\@outputbox\vbox{\unvbox\@leftcolumn + \vskip\opt@baselineskip\unvbox\opt@boxc} + \opt@split\@outputbox\opt@boxb\@tempdima + \opt@adjust\@outputbox{\unvbox\opt@boxa} + \fi + \if@leftfootnoteexist + \setbox\opt@boxb\vbox to\@colht{\box\opt@boxb\vfill + \footnoterule\box\@leftcolumnfootnote}\fi + \if@rightfootnoteexist + \setbox\@outputbox\vbox to\@colht{\box\@outputbox\vfill + \footnoterule\box\@rightcolumnfootnote}\fi + \ifdim\ht\@outputbox>\ht\opt@boxb + \setbox\opt@boxb\vbox to\ht\@outputbox{\unvbox\opt@boxb} + \else + \setbox\@outputbox\vbox to\ht\opt@boxb{\unvbox\@outputbox} + \fi + \setbox\@outputbox\vbox{\hbox to\textwidth{\hbox to\columnwidth + {\box\opt@boxb \hss}\hfil \vrule width\columnseprule\hfil + \hbox to\columnwidth{\box\@outputbox \hss}}} + \global\@firstcolumntrue \@combinedblfloats + \@outputpage \begingroup \@dblfloatplacement \@startdblcolumn + \@whilesw\if@fcolmade \fi{\@outputpage\@startdblcolumn}\endgroup} + +\if@LaTeX@eN % 2.00(3)>> +\def\opt@warning{\ClassWarning{ipsjpapers}{% + Single column floats still remain on biography\MessageBreak + processing.\MessageBreak + Do \string\verbbiography\space for manual balcing}} +\else +\def\opt@warning{\@warning{Single column floats still remain on biography + processing.^^J\space\space\space\space\space + \space\space\space\space\space\space\space\space\space\space + Do \string\verbbiography\space for manual balancing}} +\fi % 2.00(3)<< +\def\opt@split#1#2#3{\setbox#2\vsplit#1to#3\setbox#2\vbox{\unvbox#2}} +\def\opt@adjust#1#2{\@tempdima\ht#1 \advance\@tempdima-\topskip + \@tempdimb\@tempdima \divide\@tempdima\baselineskip + \@tempcnta\@tempdima \@tempdima\@tempcnta\baselineskip + \advance\@tempdima-\@tempdimb + \ifdim\@tempdima<\z@ \advance\@tempdima\baselineskip \fi + \advance\@tempdima\baselineskip \advance\@tempdima-\dp#1 + \advance\@tempdima-\topskip + \setbox\@outputbox\vbox{\ifvoid#1\else\unvbox#1\vskip\@tempdima\fi#2}} + +\let\latex@outputpage\@outputpage +% \opt@finalgap: vertical space above the \hrule at the end of paper. +% \opt@finallinewidth: width of the \hrule at the end of paper. +\@tempdima2\baselineskip % This might be changed +\edef\opt@finalgap{\the\@tempdima} +\def\opt@finallinewidth{220\@Q} % This might be changed +\ifDS@techrep \let\opt@finallinewidth\z@ \fi % 1.05(2) + +\def\@outputpage{\if@finalpageoutput + \setbox\@outputbox\vbox{\unvbox\@outputbox} + \@tempdima\dp\@outputbox + \@tempdimb\ht\@outputbox \advance\@tempdimb\opt@finalgap\relax + \ifdim\@tempdimb>\textheight\else + \setbox\@outputbox\vbox{\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\ifipsj@nonjp\else + \@@topmargin\topmargin \fi\fi\fi % 2.00(13),2.12(1b) + \latex@outputpage} + +%%%%%% Biography %%%%%% + +% If you want to control the allocation of biographies manually, do +% \verbbiography and insert \adjust{<vertical materials>} just before +% \member (or its relatives). For example; +% \verbbiography +% \begin{biography} +% \member{...} ... +% \adjust{\protect\newpage} +% \member{...} ... +% \adjust{\protect\vspace{1.3cm}} +% \member{...} ... +% \end{biography} +% will make page break just after the biography of the 1st author, and will +% insert a vertical space of 1.3cm just after that of the 2nd. It is +% strongly recommended to \protect any control sequence in the argument of +% \adjust. + +% \received and \accepted define the dates of receipt/acceptance. +% They are put at the end of manuscript (just before biographies) by +% \ra@putrcvacc. + +% 2.12(1c)>> +% \def\ra@nengo is moved to the tail % 2.12(1c) +\ifDS@english +\def\received#1#2#3{\def\ra@received{\ra@date{#1}{#2}{#3}}\ignorespaces} +\def\accepted#1#2#3{\def\ra@accepted{\ra@date{#1}{#2}{#3}}\ignorespaces} + % 2.07(5) +% \rereceived is moved below % 2.12(5) +\def\presented#1#2#3{\def\ra@presented{\ra@date{#1}{#2}{#3}}\ignorespaces} + % 2.07(7) +\ifDS@printer % 2.12(4e)>> +\def\ReleasedToOnline#1#2#3{\ifDS@online + \def\ra@released{\ra@date{#1}{#2}{#3}}\fi} +\fi % 2.12(4e)<< +\def\ra@received{??? ??, ????} +\def\ra@accepted{??? ??, ????} +\def\ra@presented{??? ??, ????} % 2.07(7) +\def\ipsj@TOD@editor{(Editor in Charge:\quad{\it\ipsj@TOD@ename\/})} + % 2.07(6) + % 2.12(6) + +\ifDS@TBIO % 2.11(4)>> +\def\ipsj@TOD@editor{(Communicated by\quad{\it\ipsj@TOD@ename\/})}% 2.12(6) +\fi % 2.11(4)<< +\else +\def\received#1#2#3{\def\ra@received{#1&}\ignorespaces} +\def\accepted#1#2#3{\def\ra@accepted{#1&}\ignorespaces} + % 2.07(5) +% \rereceived is moved below % 2.12(5) +\def\presented#1#2#3{\def\ra@presented{#1&}\ignorespaces} % 2.07(7) +\def\ra@received{?&?&?&} +\def\ra@accepted{?&?&?&} +\def\ra@presented{?&?&?&} % 2.07(7) +\def\ipsj@TOD@editor{\ipsj@j@lp\ipsj@j@edinch + \quad\ipsj@TOD@ename\ipsj@j@rp} % 2.07(6) + % 2.08(2) + % 2.12(6) +\fi +% aliasing of \received etc. is moved to the tail. + +% 2.12(1c)<< + +\let\ra@elt\relax % 2.12(5)>> +\def\rereceived#1#2#3{\ifx\ra@rereceived\undefined + \def\ra@rereceived{\ra@elt{}{#1}{#2}{#3}}\def\ra@rerecnum{1}% + \else + \@tempcnta\ra@rerecnum \advance\@tempcnta\@ne + \edef\ra@rerecnum{\number\@tempcnta}% + \edef\ra@rereceived{\ra@rereceived + \ra@elt{(\ra@rerecnum)}{#1}{#2}{#3}}% + \fi \ignorespaces} % 2.12(5)<< + +\def\edInCharge#1{\def\ipsj@TOD@ename{#1}\ignorespaces} % 2.07(6) + +\def\ra@putrcvacc{\rightline{\vtop{\normalsize\tabskip\z@ + \ifDS@english + \llap{(Received \ra@received)} + \def\ra@elt##1##2##3##4{% % 2.12(5)>> + \llap{(Revised##1 \ra@date{##2}{##3}{##4})}} + \ifx\ra@rereceived\undefined \else \ra@rereceived \fi + % 2.12(5)<< + \llap{(Accepted \ra@accepted)} + \ifx\ra@released\undefined\else % 2.12(4e) + \llap{(Released \ra@released)}\fi % 2.12(4e) + \hbox{} + \else % 2.12(1c)>> + \def\ra@elt##1##2##3##4{##2&##3&##4&\ipsj@j@rerec##1)\cr}% + % 2.12(5) + \halign{(\ra@nengo\hskip\jasciikanjiskip + \hfil##\hfil\hskip\jasciikanjiskip \ipsj@j@year + \hskip\jasciikanjiskip& + \hfil##\hfil\hskip\jasciikanjiskip \ipsj@j@month + \hskip\jasciikanjiskip& + \hfil##\hfil\hskip\jasciikanjiskip \ipsj@j@day + &##\hfil\cr % 2.07(5)>> + \ra@received \ipsj@j@received)\cr + \ifx\ra@rereceived\undefined \else \ra@rereceived \fi + % 2.12(5) + \ra@accepted \ipsj@j@accepted)\cr\multispan3\cr}\fi}% + % 2.07(5)<< + % 2.12(1c)<< + \hskip\@mojihaba} + \nobreak\vskip-2\baselineskip\prevdepth\z@\hbox{} + \ifDS@printer \ifDS@english % 2.12(4d)>> + \ifipsj@trans + \ifDS@online \noindent \ipsj@refer@trans \par \fi + \else + \ifDS@online\else \noindent \ipsj@refer@online \par \fi + \fi \fi \fi % 2.12(4d)<< + \ifipsj@recommendation\else % 2.04(2) + \ifx\ipsj@TOD@ename\undefined\else % 2.07(6)>> + \nobreak\vskip\baselineskip + \hbox{\ipsj@TOD@editor}\fi % 2.07(6)<< + \vskip\baselineskip\penalty\opt@magicpenalty\fi}% 2.04(2) +\def\ra@date#1#2#3{\ifcase#2\or + January\or February\or March\or April\or May\or June\or + July\or August\or September\or October\or November\or December\fi + \space#3, #1} +\def\ra@jdate#1#2#3{#1&} +\def\ra@putpresented#1&{\rightline{% % 2.12(1c)>> + (\ra@nengo\hskip\jasciikanjiskip % 2.07(7)>> + #1\hskip\jasciikanjiskip \ipsj@j@year \hskip\jasciikanjiskip + #2\hskip\jasciikanjiskip \ipsj@j@month \hskip\jasciikanjiskip + #3\hskip\jasciikanjiskip \ipsj@j@day\ipsj@j@presented)}} + % 2.07(7)<< + % 2.12(1c)<< + +% 2.12(4d)>> +\def\ipsj@space{\hskip\z@ plus\fontdimen\thr@@\font \penalty5000\relax} +\def\ipsj@refer@trans{% + (Paper version of this article can be found in the IPSJ Transactions on + \csname ipsj@sig@\ipsj@sig@code @e\endcsname, + Vol.\ipsj@space\number\c@volume, + No.\ipsj@space SIG\ipsj@sig@numa\ipsj@space + (\ipsj@sig@code\ipsj@space\ipsj@sig@numb), + pp.\ipsj@space\number\c@volpageoffset--\penalty5000\relax + \ipsj@thelastpage\c@volpageoffset\ipsj@last@page.)} +\def\ipsj@refer@online{% + (Online version of this article can be found in the + IPSJ Digital Courier, + Vol.\ipsj@space\ipsj@olh@vol, + pp.\ipsj@space\ipsj@olh@page--\penalty5000\relax + \ipsj@thelastpage\ipsj@olh@page\ipsj@olh@lastpage.)} +\def\ipsj@thelastpage#1#2{\begingroup + \@tempcnta#1\relax + \ifDS@online \@tempcntb\ipsj@olh@page + \else \@tempcntb\c@volpageoffset\fi + \ifx#2\undefined + \ifx\ipsj@lastpage\undefined \def\@tempa{???}% + \else \advance\@tempcntb-\ipsj@lastpage + \advance\@tempcnta-\@tempcntb + \def\@tempa{\number\@tempcnta}% + \fi + \else \def\@tempa{#2}% + \fi + \@tempa \endgroup} +% 2.12(4d)<< + +\newbox\bio@picbox +% The following define the height and width of a picture for biography, and +% the indentation of the first 6 lines. They might be changed. +\def\bio@picheight{100\@Q} +\def\bio@picwidth{80\@Q} + +\newif\ifbio@showpicbox +\bio@showpicboxtrue +% Do \bio@showpicboxfalse if you don't want to put a frame box at the +% position for picture. +\ifDS@english +\def\bio@lineheight{9\@Q} +\def\bio@piclines{7} +\def\bio@indent{91\@Q} +\def\bio@hangafter{7} +\else +\def\bio@lineheight{8\@Q} +\def\bio@piclines{6} +\def\bio@indent{96\@Q} +\def\bio@hangafter{5} +\fi + +% \verbbiography forces verbatim output of biography (i.e. not ballanced). +\newif\ifbio@verb \bio@verbfalse +\def\verbbiography{\global\bio@verbtrue} +% The environment biography saves texts for biographies into the list of +% \inserts (for floats). +\def\biography{\ifipsj@recommendation\else\par\ra@putrcvacc\fi % 2.04(2) + \def\member{\bio@member{}{\ipsj@j@member}}% %2.12(3a)(1c)>> + \def\nomember{\bio@member{}{}}% + \def\stmember{\bio@member{}{\ipsj@j@stmember}}% + \def\xmember{\bio@member{}}% + \ifDS@printer + \def\Kmember{\bio@Kmember{\ipsj@j@member}}% + \def\Knomember{\bio@Kmember{}}% + \def\Kstmember{\bio@Kmember{\ipsj@j@stmember}} + \let\Kxmember\bio@Kmember + \fi %2.12(3a)(1c)<< + \ifDS@english \let\author\nomember % 2.12(3d)>> + \ifDS@printer \let\Kauthor\Knomember \fi + \fi % 2.12(3d)<< + \let\adjust\bio@adjust + \ifbio@showpicbox + \setbox\bio@picbox\hbox{\hbox to\z@{\vrule\hskip-0.4pt% + \vtop to\bio@picheight{\vskip\z@\hrule width\bio@picwidth + \vfil\hrule}\hskip-0.4pt\vrule\hss}} + \else + \setbox\bio@picbox\hbox{} + \fi + \@tempdima\bio@piclines\baselineskip \advance\@tempdima\bio@lineheight + \dp\bio@picbox\@tempdima + \let\bio@egroup\relax\let\+\ignorespaces\let\@elt\relax + \def\bio@list{}\global\bio@th\z@} + +\def\bio@Kmember#1#2#3{\bio@member{#3}{#1}{#2}} % 2.12(3a) +\def\bio@member#1#2#3{\bio@egroup\let\bio@egroup\bio@@egroup % 2.12(3b)>> + \@next\@currbox\@freelist\relax + {\@latexerr{Too many unprocessed floats and biographies}\@ehb}% + \def\@tempa{#3}\def\@tempb{#1}% + \global\setbox\@currbox\hbox\bgroup + \@tempswatrue + \ifx\@tempb\@empty + \ifDS@printer \@tempswafalse + \else \raise\bio@lineheight\copy\bio@picbox + \fi + \else + \setbox\@tempboxa\hbox to\z@{\vtop{\vskip\z@ + \hbox{\includegraphics + [width=\bio@picwidth,height=\bio@picheight]{#1.eps}}}% + \hss} + \dp\@tempboxa\dp\bio@picbox + \raise\bio@lineheight\box\@tempboxa + \fi % 2.12(3b)<< + \vtop\bgroup + \let\par\\ + \if@tempswa \hangindent\bio@indent\hangafter-\bio@hangafter \fi + \ifDS@english {\bf #3\ }% + \else {\bf\bio@putauthor#3\+ \@nil}% + \def\@tempb{#2}\ifx\@tempb\@empty\else % 2.12(3c) + \ipsj@j@lp#2\ipsj@j@rp\fi{\@@par}\fi % 2.12(3c)(1c) + \ignorespaces} + +% Author name format: +% S + G < 5 -> fill space between S/G (like SS__G) +% otherwise -> 1 KC space between S/G (like SS_GG) +\def\bio@putauthor#1 #2\@nil{% + \ifipsj@nonjp#1 #2\else + \setbox\@tempboxa\hbox{\jintercharskip\z@#1#2}% + \setbox\mkt@boxa\hbox{\jintercharskip1cm#1#2}% + \ifdim\wd\@tempboxa=\wd\mkt@boxa #1 #2\else + \def\@tempa{#2}\ifx\@tempa\empty + {\def\+{}\ipsj@warning{Author name #1 doesn't have a space}}% + % 2.00(3) + #1\else + \@tempdima\@mojihaba + \mkt@getnamewidth\mkt@sname{#1}\mkt@getnamewidth\mkt@gname{#2}% + \advance\mkt@sname\mkt@gname + \ifnum\mkt@sname<5\leavevmode\hbox to5\@mojihaba{#1\hfil#2}\else + #1#2\fi\fi\fi\fi} +\def\bio@@egroup{\@@par\hbox{}\egroup\egroup\@tempdima\dp\@currbox + \ifdim\@tempdima>\textheight + \ipsj@warning{Biography of \@tempa\space is too long}% 2.00(3) + \bio@verbtrue \fi + \advance\@tempdima\baselineskip\global\advance\bio@th\@tempdima + \global\dimen\@currbox\@tempdima \global\count\@currbox\z@ + {\let\protect\bio@protect\xdef\bio@list{\bio@list\@elt\@currbox}}} +\def\bio@adjust#1{\bio@egroup\let\bio@egroup\relax + \ifbio@verb {\let\protect\bio@protect\xdef\bio@list{\bio@list#1}\fi}} +\def\bio@protect{\noexpand\protect\noexpand} + +\def\endbiography{\bio@egroup \@tempswatrue + \ifx\@botlist\@empty\ifx\@deferlist\@empty \@tempswafalse \fi\fi + \ifbio@verb\else\if@tempswa \bio@verbtrue \opt@warning\fi\fi + \ifbio@verb{\let\@elt\bio@putelt \let\protect\relax \bio@list}% + \else\bio@putbio\fi} + +\newdimen\bio@colht \newdimen\bio@splitheight +\newdimen\bio@maxgap \newdimen\bio@lastgap +\newdimen\bio@th \newdimen\bio@lhA \newdimen\bio@hA \newdimen\bio@hB +\newdimen\bio@lh \newdimen\bio@rh +\newdimen\bio@tempdim +\newif\ifbio@awful +\newinsert\bio@pbox \count\bio@pbox\@ne + +\def\bio@putbio{\let\@elt\relax \let\bio@vskip\relax \allowbreak + \bio@colht\@colht \advance\bio@colht-\topskip + \advance\bio@colht\baselineskip + \@tempdima\bio@colht \advance\@tempdima-\@colroom + \advance\@tempdima\pagetotal + \if@firstcolumn + \ifdim\@tempdima>\bio@th + \global\@lastpagebalancingtrue + {\let\@elt\bio@putelt\bio@list}\vskip-\baselineskip + \else + \ifdim\pagetotal=\z@\else + \dimen\bio@pbox\@tempdima \advance\bio@th\@tempdima + \edef\bio@list{\@elt\bio@pbox\bio@list}\fi + \bio@splitheight\bio@colht \bio@splitpage + \bio@splitheight.5\bio@th + \let\bio@awfulput\bio@specialawfulput + \bio@trybalance\fi + \else \advance\@tempdima\bio@th + \ifdim\@tempdima<\bio@colht + \global\@lastpagebalancingtrue + \ifdim\pagetotal=\z@ \global\opt@baselineskip2\baselineskip\fi + {\let\@elt\bio@putelt\bio@list}\vskip-\baselineskip + \else + \let\bio@awfulput\bio@normalawfulput + \bio@splitheight\z@ \advance\@tempdima-\bio@th + \advance\bio@colht-\@tempdima \bio@splitpage + {\let\@elt\bio@putelt\bio@list}\bio@nextpage + \bio@trybalance\fi + \fi} + +\def\bio@trybalance{\bio@split + \let\bio@right\bio@rightA \let\bio@left\bio@leftA + \def\bio@rightx{}\def\bio@leftx{}% + \let\bio@hX\bio@hA \bio@balance + \let\bio@rightxA\bio@rightx \let\bio@leftxA\bio@leftx + \ifbio@awful\@tempcnta\tw@\else\@tempcnta\z@\fi + \let\bio@right\bio@rightB \let\bio@left\bio@leftB + \def\bio@rightx{}\def\bio@leftx{}% + \let\bio@hX\bio@hB \bio@balance + \let\bio@rightxB\bio@rightx \let\bio@leftxB\bio@leftx + \ifbio@awful\advance\@tempcnta\@ne\fi + \ifcase\@tempcnta + \ifdim\bio@hA<\bio@hB \bio@balanceput\bio@leftxA\bio@rightxA + \else \bio@balanceput\bio@leftxB\bio@rightxB\fi + \or \bio@balanceput\bio@leftxA\bio@rightxA + \or \bio@balanceput\bio@leftxB\bio@rightxB + \else \bio@awfulput\fi + \ifx\bio@deferred\empty\vskip-\baselineskip\let\next\relax + \else\bio@nextpage\let\next\bio@trybalance\fi\next} + +\def\bio@split{\def\bio@leftA{}\def\bio@leftB{}% + \def\bio@rightA{}\def\bio@rightB{}% + \bio@lhA\z@\@tempdimb\z@ \bio@isplit} +\def\bio@isplit{\ifx\bio@list\empty\let\next\relax\else + \bio@car\@tempdima\@currbox\bio@list + \bio@lhA\@tempdimb\advance\@tempdimb\@tempdima + \edef\bio@leftB{\bio@leftB\@elt\@currbox}% + \ifdim\@tempdimb>\bio@splitheight + \edef\bio@rightA{\@elt\@currbox\bio@list}% + \let\bio@rightB\bio@list \let\next\relax + \else\edef\bio@leftA{\bio@leftA\@elt\@currbox}\let\next\bio@isplit + \fi\fi\next} + +\def\bio@balanceput#1#2{{\let\@elt\bio@putelt\let\bio@vskip\bio@xvskip + #1\bio@newpage#2}} +\def\bio@normalawfulput{{\let\bio@vskip\@gobble \@tempcnta\z@ + \@tempdima\z@ \bio@addheight\@tempdima\bio@leftxB + \ifdim\@tempdima<\bio@colht + \@tempdima\z@ \bio@addheight\@tempdima\bio@rightxB + \ifdim\@tempdima<\bio@colht \@tempcnta\@ne + \let\@elt\bio@putelt + \bio@leftxB\bio@newpage\bio@rightxB\fi\fi + \ifnum\@tempcnta=\z@ + \@tempdima\z@ \bio@addheight\@tempdima\bio@leftxA + \ifdim\@tempdima<\bio@colht + \@tempdima\z@\bio@addheight\@tempdima\bio@rightxA + \ifdim\@tempdima<\bio@colht \@tempcnta\@ne + \let\@elt\bio@putelt + \bio@leftxA\bio@newpage\bio@rightxA\fi\fi\fi +% The following may be redundant. + \ifnum\@tempcnta=\z@ + \let\@elt\bio@putelt\bio@listsave\fi}} +\def\bio@specialawfulput{{\advance\bio@th-\dimen\bio@pbox + \ifdim\bio@th<\bio@colht\bio@newpage + \let\bio@newpage\relax\fi\bio@normalawfulput}} + +\def\bio@putelt#1{\ifnum\count#1>\z@\else\box#1 + \nobreak\vskip-2\baselineskip\prevdepth\z@\hbox{} + \vskip\baselineskip\fi} +\def\bio@xvskip#1{\vskip#1\prevdepth\z@} +\def\bio@newpage{\vskip-\baselineskip\newpage} + +\def\bio@nextpage{\bio@newpage \let\bio@list\bio@deferred + \bio@th\z@ \bio@addheight\bio@th\bio@list + \bio@colht\@colht \advance\bio@colht-\topskip + \advance\bio@colht\baselineskip + \bio@splitheight\bio@colht \bio@splitpage + \bio@splitheight.5\bio@th + \let\bio@awfulput\bio@normalawfulput} +\def\bio@splitpage{\let\bio@listsave\bio@list \bio@split + \@tempdima\bio@th \advance\@tempdima-\bio@lhA + \ifdim\@tempdima>\bio@colht + \let\bio@leftAsave\bio@leftA \bio@th\bio@lhA + \let\bio@list\bio@rightA \bio@splitheight\bio@colht + \bio@split \edef\bio@list{\bio@leftAsave\bio@leftA}% + \advance\bio@th\bio@lhA + \let\bio@deferred\bio@rightA + \else\def\bio@deferred{}\let\bio@list\bio@listsave\fi} + +% \bio@tolerablegap: maximum tolerable gap between adjacent bio's. +% \bio@tolerablestretch:maximum stretch of a column. + +\@tempdima10\baselineskip % This might be changed +\edef\bio@tolerablegap{\the\@tempdima} +\@tempdima15\baselineskip +\edef\bio@tolerablelastgap{\the\@tempdima} +\def\bio@tolerablestretch{2} % This might be changed + +\def\bio@balance{\let\@elt\relax \edef\bio@bstack{% + \@elt{{\bio@left}{\bio@right}{}{}{0pt}}} + \bio@xbalance} +\def\bio@xbalance{% + \expandafter\bio@popstack\bio@bstack\@nil + \let\bio@nextA\bio@xbalance \@tempdima\z@ + \ifx\bio@left\empty \ifx\bio@right\empty + \let\bio@nextA\bio@balanceend + \else + \bio@addheight\@tempdima\bio@right + \edef\bio@leftx{\bio@leftx\bio@vskip{\the\@tempdima}}% + \advance\bio@hX\@tempdima + \edef\bio@rightx{\bio@rightx\bio@right}\def\bio@right{}% + \bio@pushstack \fi\else + \ifx\bio@right\empty + \bio@addheight\@tempdima\bio@left + \edef\bio@rightx{\bio@rightx\bio@vskip{\the\@tempdima}}% + \advance\bio@hX\@tempdima + \edef\bio@leftx{\bio@leftx\bio@left}\def\bio@left{}% + \bio@pushstack \else + \bio@car\@tempdima\bio@leftbox\bio@left + \bio@car\@tempdimb\bio@rightbox\bio@right + \edef\bio@leftx{\bio@leftx\@elt\bio@leftbox}% + \edef\bio@rightx{\bio@rightx\@elt\bio@rightbox}% + \ifdim\@tempdima>\@tempdimb + \advance\bio@hX\@tempdima + \let\bio@da\@tempdima\let\bio@db\@tempdimb + \bio@ibalance\bio@left\bio@right\bio@leftx\bio@rightx + \else \advance\bio@hX\@tempdimb + \let\bio@da\@tempdimb\let\bio@db\@tempdima + \bio@ibalance\bio@right\bio@left\bio@rightx\bio@leftx\fi + \fi\fi\bio@nextA} +\def\bio@ibalance#1#2#3#4{\let\bio@nextB\relax + \ifx#2\empty + \advance\bio@da-\bio@db + \edef#4{#4\bio@vskip{\the\bio@da}}\bio@pushstack\else + \bio@car\bio@tempdim\@currbox#2 \advance\bio@db\bio@tempdim + \ifdim\bio@da<\bio@db + \advance\bio@db-\bio@da + \let\@tempa#3\edef#3{#3\bio@vskip{\the\bio@db}}% + \let\@tempb#4\edef#4{#4\@elt\@currbox}% + \advance\bio@hX\bio@db \bio@pushstack + \advance\bio@hX-\bio@db + \edef#2{\@elt\@currbox#2}% + \advance\bio@tempdim-\bio@db + \let#3\@tempa \edef#4{\@tempb\bio@vskip{\the\bio@tempdim}}% + \bio@pushstack + \else \edef#4{#4\@elt\@currbox}\def\bio@nextB{\bio@ibalance#1#2#3#4}% + \fi\fi\bio@nextB} +\def\bio@balanceend{\bio@awfulfalse \def\bio@bstack{}% + \bio@maxgap\z@ \bio@lastgap\z@ + \bio@checkgap\bio@leftx \bio@checkgap\bio@rightx + \ifdim\bio@maxgap>\bio@tolerablegap\relax\bio@awfultrue\fi + \ifdim\bio@lastgap>\bio@tolerablelastgap\relax\bio@awfultrue\fi + \ifdim\bio@hX>\bio@tolerablestretch\bio@splitheight\bio@awfultrue\fi + \ifdim\bio@hX>\bio@colht\bio@awfultrue\fi} +\def\bio@checkgap#1{{\@tempdima\z@ \@tempdimb\z@ \bio@tempdim\z@ + \let\@elt\bio@cgelt \let\bio@vskip\bio@cgvskip #1\relax + \ifdim\@tempdima>\bio@maxgap \global\bio@maxgap\@tempdima \fi + \ifdim\bio@tempdim>\bio@lastgap \global\bio@lastgap\bio@tempdim \fi}} +\def\bio@cgvskip#1{\advance\bio@tempdim#1\relax + \ifdim\bio@tempdim>\@tempdimb \@tempdimb\bio@tempdim\fi} +\def\bio@cgelt#1{\@tempdima\@tempdimb \bio@tempdim\z@} +\def\bio@popstack\@elt#1#2\@nil{\edef\bio@bstack{#2}\bio@ipopstack#1} +\def\bio@ipopstack#1#2#3#4#5{\def\bio@left{#1}\def\bio@right{#2}% + \def\bio@leftx{#3}\def\bio@rightx{#4}\bio@hX#5\relax} +\def\bio@pushstack{\def\bio@bstackx{}% + \expandafter\bio@ipushstack\bio@bstack\@elt\@nil} +\def\bio@ipushstack\@elt#1{\def\@tempc{#1}% + \ifx\@tempc\@nnil \edef\bio@bstack{\bio@bstackx\bio@stackelt}% + \let\bio@nextC\relax \else + \bio@iipushstack#1\fi\bio@nextC} +\def\bio@iipushstack#1#2#3#4#5{\ifdim#5>\bio@hX + \edef\bio@bstackx{\bio@bstackx\bio@stackelt + \@elt{{#1}{#2}{#3}{#4}{#5}}}% + \let\bio@nextC\bio@pushstackend\else + \edef\bio@bstackx{\bio@bstackx + \@elt{{#1}{#2}{#3}{#4}{#5}}}% + \let\bio@nextC\bio@ipushstack\fi} +\def\bio@pushstackend#1\@elt\@nil{\edef\bio@bstack{\bio@bstackx#1}} +\def\bio@stackelt{\@elt{{\bio@left}{\bio@right}{\bio@leftx}{\bio@rightx}% + {\the\bio@hX}}} +\def\bio@addheight#1#2{\def\@elt##1{\advance#1\dimen##1}#2\let\@elt\relax} +\def\bio@car#1#2#3{\expandafter\bio@icar#3\@nil#1#2#3} +\def\bio@icar\@elt#1#2\@nil#3#4#5{#3=\dimen#1\relax\def#4{#1}\def#5{#2}} + + +%%%%%% Miscellaneous %%%%%% + +\flushbottom + +\ifDS@english +\hbadness9999 \tolerance9999 +\else +\hbadness5000 \tolerance5000 +\pretolerance\m@ne +\fi + +\input{ipsjcommon.sty} + +\twocolumn + +\endinput diff -r 000000000000 -r 38b037c42c34 paper/ipsjsort.bst --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/paper/ipsjsort.bst Mon Apr 17 20:05:26 2017 +0900 @@ -0,0 +1,1285 @@ +% ipsjsort.bst 15-Jun-07 by Hiroshi Nakashima (ver 2.12) +% ipsjsort.bst 30-Jan-02 by Hiroshi Nakashima (ver 2.00) +% ipsjsort.bst 28-Dec-93 by Hiroshi Nakashima (ver 1.00) +% jssst.bst tomura@etl.go.jp (Satoru Tomura) +% BibTeX standard bibliography style `jplain' + % version 0.10 for JBibTeX versions 0.10 or later, JLaTeX version 2.09. + % by Shouichi Matsui, matsui@denken.junet + +ENTRY + { address + author + booktitle + chapter + edition + editor + howpublished + institution + journal + key + month + note + number + organization + pages + publisher + school + series + title + type + volume + year + yomi + } + {} + { label } + +INTEGERS { output.state before.all mid.sentence after.sentence after.block } + +INTEGERS { before.year } + +FUNCTION {init.state.consts} +{ #0 'before.all := + #1 'mid.sentence := + #2 'after.sentence := + #3 'after.block := + #4 'before.year := % 1.00(1) +} + +STRINGS { s t } + +FUNCTION {is.kanji} +{ is.kanji.str$ } % 1.00(2), 2.00(1) + +FUNCTION {output.nonnull} +{ 's := + output.state mid.sentence = + { duplicate$ is.kanji % 2.00(2) + { "," * write$ } + { ", " * write$ } + if$ + } + { output.state after.block = + { add.period$ write$ + newline$ + "\newblock " write$ + } + { output.state before.all = + 'write$ + { output.state before.year = % 1.00(1) + { " " * write$ } + { add.period$ " " * write$ } + if$ + } + if$ + } + if$ + mid.sentence 'output.state := + } + if$ + s +} + +FUNCTION {output} +{ duplicate$ empty$ + 'pop$ + 'output.nonnull + if$ +} + +FUNCTION {required.argument} +{ 't := + empty$ + {"Missing required argument " t * " in " * cite$ * warning$} + 'skip$ + if$ +} + +FUNCTION {required.exclusive.or.argument} +{ 't := + empty$ + { 's := + empty$ + { t " or " * s * " is missing in " * cite$ * warning$} + 'skip$ + if$ + } + { 's := + empty$ + 'skip$ + { "You can use only one of " t * " and " * s * " in " * cite$ * warning$} + if$ + } + if$ +} + +FUNCTION {required.and.or.argument} +{ 't := empty$ + { 's := empty$ + { "there's no " t * " and/or " * s * cite$ * warning$ } + 'skip$ + if$ + } + { pop$ pop$ } + if$ +} + +FUNCTION {optional.series.volume.number.argument} +{ series empty$ + { volume empty$ + { number empty$ + 'skip$ + { "there's a number but no series in " cite$ * warning$ } + if$ + } + { number empty$ + { "there's a volume but no series in " cite$ * warning$ } + { "you can use only one of volume and number in " cite$ * warning$} + if$ + } + if$ + } + { volume empty$ + { number empty$ + { "there's a series but neither volume nor number in " cite$ * warning$ } + 'skip$ + if$ + } + { number empty$ + 'skip$ + { "you can use only one of volume and number in " cite$ * warning$ } + if$ + } + if$ + } + if$ +} + +FUNCTION {output.bibitem} +{ newline$ + "\bibitem{" write$ + cite$ write$ + "}" write$ + newline$ + before.all 'output.state := +} + +FUNCTION {fin.entry} +{ add.period$ + write$ + newline$ +} + +FUNCTION {new.block} +{ output.state before.all = + 'skip$ + { after.block 'output.state := } + if$ +} + +FUNCTION {new.sentence} +{ output.state after.block = + 'skip$ + { output.state before.all = + 'skip$ + { after.sentence 'output.state := } + if$ + } + if$ +} + +FUNCTION {not} +{ { #0 } + { #1 } + if$ +} + +FUNCTION {and} +{ 'skip$ + { pop$ #0 } + if$ +} + +FUNCTION {or} +{ { pop$ #1 } + 'skip$ + if$ +} + +FUNCTION {new.block.checka} +{ empty$ + 'skip$ + 'new.block + if$ +} + +FUNCTION {new.block.checkb} +{ empty$ + swap$ empty$ + and + 'skip$ + 'new.block + if$ +} + +FUNCTION {new.sentence.checka} +{ empty$ + 'skip$ + 'new.sentence + if$ +} + +FUNCTION {new.sentence.checkb} +{ empty$ + swap$ empty$ + and + 'skip$ + 'new.sentence + if$ +} + +FUNCTION {field.or.null} +{ duplicate$ empty$ + { pop$ "" } + 'skip$ + if$ +} + +FUNCTION {emphasize} +{ duplicate$ empty$ + { pop$ "" } + { duplicate$ is.kanji + 'skip$ % 1.00(3) + { "{\em " swap$ * "}" * } % 2.00(3) + if$ + } + if$ +} + +INTEGERS { nameptr namesleft numnames } + +FUNCTION {format.names} % 1.00(4), 2.00(4) +{ 's := + #1 'nameptr := + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { s nameptr "{ff}{ll}" format.name$ duplicate$ is.kanji + { duplicate$ text.length$ #6 > + { 't := } + { pop$ s nameptr "{ff} {ll}" format.name$ 't := } + if$ + } + { pop$ s nameptr "{vv }{ll}{, jj}{, f.}" format.name$ 't := } + if$ + nameptr #1 > + { namesleft #1 > + { s is.kanji + { "," } + { ", " } + if$ + * t * } + { t "others" = + { s is.kanji + {"ほか" * } + {" et al." * } + if$ + } + { s is.kanji + {"," * t * } % put "," here for Kanji (H.N.) + {" and " * t * } + if$ + } + if$ + } + if$ + } + 't + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +FUNCTION {format.authors} +{ author empty$ + { "" } + { author format.names } + if$ +} + +FUNCTION {add.colon} % 2.00(5) +{ duplicate$ is.kanji + { "\:" * } % 2.12(1) + { ": " * } + if$ +} + +FUNCTION {format.editors.inparen} % 2.00(6) +{ editor empty$ + { "" } + { editor format.names + editor num.names$ #1 > + { editor is.kanji + {",編" * } {", eds." *} if$ + } + { editor is.kanji + {",編" *} {", ed." *} if$ + } + if$ + } + if$ +} + +FUNCTION {format.editors} +{ editor empty$ + { "" } + { editor format.names + editor num.names$ #1 > + { editor is.kanji + {"(編)" * } {"(eds.)" *} if$ % 2.00(7) + } + { editor is.kanji + {"(編)" *} {"(ed.)" *} if$ % 2.00(7) + } + if$ + } + if$ +} + +FUNCTION {n.dashify} +{ 't := + "" + { t empty$ not } + { t #1 #1 substring$ "-" = + { t #1 #2 substring$ "--" = not + { "--" * + t #2 global.max$ substring$ 't := + } + { { t #1 #1 substring$ "-" = } + { "-" * + t #2 global.max$ substring$ 't := + } + while$ + } + if$ + } + { t #1 #1 substring$ * + t #2 global.max$ substring$ 't := + } + if$ + } + while$ +} + +FUNCTION {format.date} +{ before.year 'output.state := % 1.00(1) + year empty$ + { month empty$ + { "" } + { "there's a month but no year in " cite$ * warning$ + "" % 1.00(5) + } + if$ + } + { "(" year ")" * * } % 1.00(5) + if$ +} + +FUNCTION {tie.or.space.connect} +{ duplicate$ text.length$ #3 < + { "~" } + { "\ " } % 1.00(6) + if$ + swap$ * * +} + +FUNCTION {output.volume} +{ + volume empty$ + 'skip$ + { "Vol.~" volume * output} + if$ + +} + +FUNCTION {output.number} +{ + number empty$ + 'skip$ + { "No.~" number * output} + if$ +} + +FUNCTION {output.series.volume.number} +{ series empty$ + { output.volume + output.number } + { series is.kanji + volume empty$ + number empty$ + or + and + { series " " * volume * number * output} + { series output + output.volume + output.number} + if$ + } + if$ +} + +FUNCTION {format.edition} +{ edition empty$ + { "" } + { output.state mid.sentence = + { edition "l" change.case$ " edition" * } + { edition "t" change.case$ " edition" * } + if$ + } + if$ +} + +INTEGERS { multiresult } + +FUNCTION {multi.page.check} +{ 't := + #0 'multiresult := + { multiresult not + t empty$ not + and + } + { t #1 #1 substring$ + duplicate$ "-" = + swap$ duplicate$ "," = + swap$ "+" = + or or + { #1 'multiresult := } + { t #2 global.max$ substring$ 't := } + if$ + } + while$ + multiresult +} + +FUNCTION {format.pages} % 1.00(7) +{ pages empty$ + { "" } + { pages multi.page.check + { "pp." pages n.dashify tie.or.space.connect } + { "p." pages tie.or.space.connect } + if$ + } + if$ +} + +FUNCTION {format.vol.num.pages} % 1.00(8) +{ volume empty$ + { ""} + { " Vol.~" volume * } + if$ + number empty$ + 'skip$ + { volume empty$ + { "there's a number but no volume in " cite$ * warning$ } + { "," *} + if$ + " No.~" number * * + } + if$ + pages empty$ + 'skip$ + { duplicate$ empty$ + { pop$ format.pages } + { ", " * format.pages * } + if$ + } + if$ +} + +FUNCTION {format.chapter.pages} +{ chapter empty$ + 'format.pages + { type empty$ + { "chapter" chapter tie.or.space.connect } + { type is.kanji + { chapter type tie.or.space.connect } + { type "l" change.case$ chapter tie.or.space.connect } + if$ + } + if$ + pages empty$ + 'skip$ + { ", " * format.pages * } + if$ + } + if$ +} + +FUNCTION {format.in.ed.booktitle} +{ booktitle empty$ + { "" } + { booktitle emphasize + editor empty$ + 'skip$ + { booktitle is.kanji + { "(" * format.editors.inparen * ")" *} % 2.00(6,7) + { " (" * format.editors.inparen * ")" *} % 1.00(9), 2.00(6) + if$ + } + if$ + } + if$ +} + +FUNCTION {empty.misc.check} +{ author empty$ title empty$ howpublished empty$ + month empty$ year empty$ note empty$ + and and and and and + key empty$ not and + { "all relevant fields are empty in " cite$ * warning$ } + 'skip$ + if$ +} + +FUNCTION {format.thesis.type} +{ type empty$ + 'skip$ + { pop$ + type "t" change.case$ + } + if$ +} + +FUNCTION {format.tr.number} +{ type empty$ + { title empty$ + { "Technical Report" } + { title is.kanji + { "技術報告" } + { "Technical Report" } + if$ + } + if$ + } + {type} + if$ + number empty$ + { "t" change.case$ } + { " " number * * } + if$ +} + +FUNCTION {format.article.crossref} % 2.00(8) +{ key empty$ + { journal empty$ + { "need key or journal for " cite$ * " to crossref " * crossref * + warning$ + "" + } + { journal emphasize } % 1.00(10) + if$ + } + { "In " key * } + if$ + " \cite{" * crossref * "}" * +} + +FUNCTION {format.crossref.editor} % 1.00(11) +{ editor #1 + editor is.kanji { "{ff}" } { "{vv }{ll}" } if$ + format.name$ + editor num.names$ duplicate$ + #2 > + { editor is.kanji + {pop$ "ほか" *} {pop$ " et al." * } if$ + } + { #2 < + 'skip$ + { editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" = + { editor is.kanji + {"ほか" *} {" et al." * } if$ + } + { editor is.kanji + {"・" * editor #2 "{ff}" format.name$ * } + {" and " * editor #2 "{vv }{ll}" format.name$ * } + if$ + } + if$ + } + if$ + } + if$ +} + +FUNCTION {format.book.crossref} % 2.00(8) +{ editor empty$ + editor field.or.null author field.or.null = + or + { key empty$ + { series empty$ + { "need editor, key, or series for " cite$ * " to crossref " * + crossref * warning$ + "" + } + { series emphasize } % 1.00(10) + if$ + } + { "In " key * } + if$ + } + { format.crossref.editor } + if$ + " \cite{" * crossref * "}" * + volume empty$ + { "empty volume in " cite$ * "'s crossref of " * crossref * warning$ } + { duplicate$ is.kanji { "," } { ", "} if$ * + "Vol." * volume tie.or.space.connect + } + if$ +} + +FUNCTION {format.incoll.inproc.crossref} % 2.00(8) +{ editor empty$ + editor field.or.null author field.or.null = + or + { key empty$ + { booktitle empty$ + { "need editor, key, or booktitle for " cite$ * " to crossref " * + crossref * warning$ + "" + } + { booktitle emphasize } % 1.00(10) + if$ + } + { "In " key * } + if$ + } + { format.crossref.editor } + if$ + " \cite{" * crossref * "}" * +} + +FUNCTION {article} +{ +%%%% + author "author" required.argument + title "title" required.argument + journal "journal" required.argument + year "year" required.argument +%%%% jssst + volume "volume" + number "number" + required.and.or.argument + pages "pages" required.argument +%%%% + output.bibitem + format.authors add.colon % 2.00(5) + title output + crossref missing$ + { journal emphasize output + format.vol.num.pages output % 1.00(12) + format.date output + } + { format.article.crossref output.nonnull + format.pages output + } + if$ + new.block + note output + fin.entry +} + +FUNCTION {book} +{ +%%%% + author "author" + editor "editor" + required.exclusive.or.argument + title "title" required.argument + publisher "publisher" required.argument + year "year" required.argument + optional.series.volume.number.argument +%%%% + output.bibitem + author empty$ + { format.editors} + { format.authors} + if$ + add.colon % 2.00(5) + title emphasize output + crossref missing$ + { output.series.volume.number + publisher output + address output + } + { new.block + format.book.crossref output.nonnull + } + if$ + format.edition output + format.date output + new.block + note output + fin.entry +} + +FUNCTION {booklet} +{ +%%%% + title "title" required.argument +%%%% jssst + author "author" required.argument +%%%% + output.bibitem + format.authors add.colon % 2.00(5) + title output + howpublished output + address output + format.date output + new.block + note output + fin.entry +} + +FUNCTION {inbook} +{ +%%%% + author "author" + editor "editor" + required.exclusive.or.argument + title "title" required.argument + chapter "chapter" + pages "pages" + required.and.or.argument + publisher "publisher" required.argument + year "year" required.argument + + optional.series.volume.number.argument +%%%% + output.bibitem + author empty$ + { format.editors} + { format.authors} + if$ + add.colon % 2.00(5) + title emphasize output + crossref missing$ + { output.series.volume.number + format.chapter.pages output + publisher output + } + { format.chapter.pages output + new.block + format.book.crossref output.nonnull + } + if$ + format.edition output + format.date output % 1.00(13) + new.block + note output + fin.entry +} + +FUNCTION {incollection} +{ +%%%% + author "author" required.argument + title "title" required.argument + booktitle "booktitle" required.argument + publisher "publisher" required.argument + year "year" required.argument + + optional.series.volume.number.argument +%%%% + output.bibitem + format.authors add.colon % 2.00(5) + title output + crossref missing$ + { format.in.ed.booktitle output + output.series.volume.number + publisher output + address output + format.edition output + format.chapter.pages output % 1.00(13) + format.date output + } + { format.incoll.inproc.crossref output.nonnull + format.chapter.pages output + } + if$ + new.block + note output + fin.entry +} + +FUNCTION {inproceedings} +{ +%%%% + author "author" required.argument + title "title" required.argument + year "year" required.argument + + optional.series.volume.number.argument +%%%% + output.bibitem + format.authors add.colon % 2.00(5) + title output + crossref missing$ + { format.in.ed.booktitle output + booktitle "booktitle" required.argument + output.series.volume.number + address output + organization output + publisher output + format.pages output + format.date output % 1.00(13) + } + { format.incoll.inproc.crossref output.nonnull + format.pages output + } + if$ + new.block + note output + fin.entry +} + +FUNCTION {conference} { inproceedings } + +FUNCTION {manual} +{ +%%%% + title "title" required.argument +%%%% jssst + author "author" + organization "organazaion" + required.exclusive.or.argument +%%%% + output.bibitem + author empty$ + { organization} + { format.authors} + if$ + add.colon % 2.00(5) + title emphasize output + author empty$ + 'skip$ + { organization output } + if$ + address output + format.edition output + format.date output + new.block + note output + fin.entry +} + +FUNCTION {mastersthesis} +{ +%%%% + author "author" required.argument + title "title" required.argument + school "school" required.argument + year "year" required.argument +%%%% + output.bibitem + format.authors add.colon % 2.00(5) + title output + author empty$ + { "Master's thesis" } + { author is.kanji + { "修士論文" } + { "Master's thesis" } + if$ + } + if$ + format.thesis.type output.nonnull + school output + address output + format.date output + new.block + note output + fin.entry +} + +FUNCTION {misc} +{ +%%%% +%%%% jssst + author "author" required.argument + title "title" required.argument +%%%% + output.bibitem + format.authors add.colon % 2.00(5) + title output + howpublished output + format.date output + new.block + note output + fin.entry + empty.misc.check +} + +FUNCTION {phdthesis} +{ +%%%% + author "author" required.argument + title "title" required.argument + school "school" required.argument + year "year" required.argument +%%%% + output.bibitem + format.authors add.colon % 2.00(5) + title output % 2.00(9) + author empty$ + { "PhD Thesis" } + { author is.kanji + { "博士論文" } + { "PhD Thesis" } + if$ + } + if$ + format.thesis.type output.nonnull + school output + address output + format.date output + new.block + note output + fin.entry +} + +FUNCTION {proceedings} +{ +%%%% + title "title" required.argument + year "year" required.argument + + optional.series.volume.number.argument +%%%% jssst + editor "editor" + organization "organization" + required.exclusive.or.argument +%%%% + output.bibitem + editor empty$ + { organization } + { format.editors } + if$ + add.colon % 2.00(5) + title emphasize output + output.series.volume.number + address output + editor empty$ + 'skip$ + { organization output } + if$ + publisher output + format.date output + new.block + note output + fin.entry +} + +FUNCTION {techreport} +{ +%%%% + author "author" required.argument + title "title" required.argument + institution "institution" required.argument + year "year" required.argument +%%%% + output.bibitem + format.authors add.colon % 2.00(5) + title output + format.tr.number output.nonnull + institution output + address output + format.date output + new.block + note output + fin.entry +} + +FUNCTION {unpublished} +{ +%%%% + author "author" required.argument + title "title" required.argument + note "note" required.argument +%%%% + output.bibitem + format.authors add.colon % 2.00(5) + title output + format.date output + new.block + note output + fin.entry +} + +FUNCTION {default.type} { misc } + +MACRO {jan} {"January"} + +MACRO {feb} {"February"} + +MACRO {mar} {"March"} + +MACRO {apr} {"April"} + +MACRO {may} {"May"} + +MACRO {jun} {"June"} + +MACRO {jul} {"July"} + +MACRO {aug} {"August"} + +MACRO {sep} {"September"} + +MACRO {oct} {"October"} + +MACRO {nov} {"November"} + +MACRO {dec} {"December"} + +MACRO {acmcs} {"ACM Computing Surveys"} + +MACRO {acta} {"Acta Informatica"} + +MACRO {cacm} {"Communications of the ACM"} + +MACRO {ibmjrd} {"IBM Journal of Research and Development"} + +MACRO {ibmsj} {"IBM Systems Journal"} + +MACRO {ieeese} {"IEEE Transactions on Software Engineering"} + +MACRO {ieeetc} {"IEEE Transactions on Computers"} + +MACRO {ieeetcad} + {"IEEE Transactions on Computer-Aided Design of Integrated Circuits"} + +MACRO {ipl} {"Information Processing Letters"} + +MACRO {jacm} {"Journal of the ACM"} + +MACRO {jcss} {"Journal of Computer and System Sciences"} + +MACRO {scp} {"Science of Computer Programming"} + +MACRO {sicomp} {"SIAM Journal on Computing"} + +MACRO {tocs} {"ACM Transactions on Computer Systems"} + +MACRO {tods} {"ACM Transactions on Database Systems"} + +MACRO {tog} {"ACM Transactions on Graphics"} + +MACRO {toms} {"ACM Transactions on Mathematical Software"} + +MACRO {toois} {"ACM Transactions on Office Information Systems"} + +MACRO {toplas} {"ACM Transactions on Programming Languages and Systems"} + +MACRO {tcs} {"Theoretical Computer Science"} + +READ + +FUNCTION {sortify} +{ purify$ + "l" change.case$ +} + +INTEGERS { len } + +FUNCTION {chop.word} +{ 's := + 'len := + s #1 len substring$ = + { s len #1 + global.max$ substring$ } + 's + if$ +} + +FUNCTION {sort.format.names} +{ 's := + yomi empty$ + 'skip$ + { yomi 's := } + if$ + + #1 'nameptr := + "" + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { nameptr #1 > + { " " * } + 'skip$ + if$ + s nameptr "{vv{ } }{ll{ }}{ ff{ }}{ jj{ }}" format.name$ 't := + nameptr numnames = t "others" = and + { "et al" * } + { t sortify * } + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +FUNCTION {sort.format.title} +{ 't := + "A " #2 + "An " #3 + "The " #4 t chop.word + chop.word + chop.word + sortify + #1 global.max$ substring$ +} + +FUNCTION {author.sort} +{ author empty$ + { key empty$ + { "to sort, need author or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { author sort.format.names } + if$ +} + +FUNCTION {author.editor.sort} +{ author empty$ + { editor empty$ + { key empty$ + { "to sort, need author, editor, or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { editor sort.format.names } + if$ + } + { author sort.format.names } + if$ +} + +FUNCTION {author.organization.sort} +{ author empty$ + { organization empty$ + { key empty$ + { "to sort, need author, organization, or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { "The " #4 organization chop.word sortify } + if$ + } + { author sort.format.names } + if$ +} + +FUNCTION {editor.organization.sort} +{ editor empty$ + { organization empty$ + { key empty$ + { "to sort, need editor, organization, or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { "The " #4 organization chop.word sortify } + if$ + } + { editor sort.format.names } + if$ +} + +FUNCTION {presort} +{ type$ "book" = + type$ "inbook" = + or + 'author.editor.sort + { type$ "proceedings" = + 'editor.organization.sort + { type$ "manual" = + 'author.organization.sort + 'author.sort + if$ + } + if$ + } + if$ + " " + * + year field.or.null sortify + * + " " + * + title field.or.null + sort.format.title + * + #1 entry.max$ substring$ + 'sort.key$ := +} + +ITERATE {presort} + +SORT + +STRINGS { longest.label } + +INTEGERS { number.label longest.label.width } + +FUNCTION {initialize.longest.label} +{ "" 'longest.label := + #1 'number.label := + #0 'longest.label.width := +} + +FUNCTION {longest.label.pass} +{ number.label int.to.str$ 'label := + number.label #1 + 'number.label := + label width$ longest.label.width > + { label 'longest.label := + label width$ 'longest.label.width := + } + 'skip$ + if$ +} + +EXECUTE {initialize.longest.label} + +ITERATE {longest.label.pass} + +FUNCTION {begin.bib} +{ preamble$ empty$ + 'skip$ + { preamble$ write$ newline$ } + if$ + "\begin{thebibliography}{" longest.label * "}" * write$ newline$ +} + +EXECUTE {begin.bib} + +EXECUTE {init.state.consts} + +ITERATE {call.type$} + +FUNCTION {end.bib} +{ newline$ + "\end{thebibliography}" write$ newline$ +} + +EXECUTE {end.bib} + + diff -r 000000000000 -r 38b037c42c34 paper/ipsjunsrt.bst --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/paper/ipsjunsrt.bst Mon Apr 17 20:05:26 2017 +0900 @@ -0,0 +1,1135 @@ +% ipsjunsrt.bst 15-Jun-07 by Hiroshi Nakashima (ver 2.12) +% ipsjunsrt.bst 30-Jan-02 by Hiroshi Nakashima (ver 2.00) +% ipsjunsrt.bst 28-Dec-93 by Hiroshi Nakashima (ver 1.00) +% jssst.bst tomura@etl.go.jp (Satoru Tomura) +% BibTeX standard bibliography style `jplain' + % version 0.10 for JBibTeX versions 0.10 or later, JLaTeX version 2.09. + % by Shouichi Matsui, matsui@denken.junet + +ENTRY + { address + author + booktitle + chapter + edition + editor + howpublished + institution + journal + key + month + note + number + organization + pages + publisher + school + series + title + type + volume + year + yomi + } + {} + { label } + +INTEGERS { output.state before.all mid.sentence after.sentence after.block } + +INTEGERS { before.year } + +FUNCTION {init.state.consts} +{ #0 'before.all := + #1 'mid.sentence := + #2 'after.sentence := + #3 'after.block := + #4 'before.year := % 1.00(1) +} + +STRINGS { s t } + +FUNCTION {is.kanji} +{ is.kanji.str$ } % 1.00(2), 2.00(1) + +FUNCTION {output.nonnull} +{ 's := + output.state mid.sentence = + { duplicate$ is.kanji % 2.00(2) + { "," * write$ } + { ", " * write$ } + if$ + } + { output.state after.block = + { add.period$ write$ + newline$ + "\newblock " write$ + } + { output.state before.all = + 'write$ + { output.state before.year = % 1.00(1) + { " " * write$ } + { add.period$ " " * write$ } + if$ + } + if$ + } + if$ + mid.sentence 'output.state := + } + if$ + s +} + +FUNCTION {output} +{ duplicate$ empty$ + 'pop$ + 'output.nonnull + if$ +} + +FUNCTION {required.argument} +{ 't := + empty$ + {"Missing required argument " t * " in " * cite$ * warning$} + 'skip$ + if$ +} + +FUNCTION {required.exclusive.or.argument} +{ 't := + empty$ + { 's := + empty$ + { t " or " * s * " is missing in " * cite$ * warning$} + 'skip$ + if$ + } + { 's := + empty$ + 'skip$ + { "You can use only one of " t * " and " * s * " in " * cite$ * warning$} + if$ + } + if$ +} + +FUNCTION {required.and.or.argument} +{ 't := empty$ + { 's := empty$ + { "there's no " t * " and/or " * s * cite$ * warning$ } + 'skip$ + if$ + } + { pop$ pop$ } + if$ +} + +FUNCTION {optional.series.volume.number.argument} +{ series empty$ + { volume empty$ + { number empty$ + 'skip$ + { "there's a number but no series in " cite$ * warning$ } + if$ + } + { number empty$ + { "there's a volume but no series in " cite$ * warning$ } + { "you can use only one of volume and number in " cite$ * warning$} + if$ + } + if$ + } + { volume empty$ + { number empty$ + { "there's a series but neither volume nor number in " cite$ * warning$ } + 'skip$ + if$ + } + { number empty$ + 'skip$ + { "you can use only one of volume and number in " cite$ * warning$ } + if$ + } + if$ + } + if$ +} + +FUNCTION {output.bibitem} +{ newline$ + "\bibitem{" write$ + cite$ write$ + "}" write$ + newline$ + before.all 'output.state := +} + +FUNCTION {fin.entry} +{ add.period$ + write$ + newline$ +} + +FUNCTION {new.block} +{ output.state before.all = + 'skip$ + { after.block 'output.state := } + if$ +} + +FUNCTION {new.sentence} +{ output.state after.block = + 'skip$ + { output.state before.all = + 'skip$ + { after.sentence 'output.state := } + if$ + } + if$ +} + +FUNCTION {not} +{ { #0 } + { #1 } + if$ +} + +FUNCTION {and} +{ 'skip$ + { pop$ #0 } + if$ +} + +FUNCTION {or} +{ { pop$ #1 } + 'skip$ + if$ +} + +FUNCTION {new.block.checka} +{ empty$ + 'skip$ + 'new.block + if$ +} + +FUNCTION {new.block.checkb} +{ empty$ + swap$ empty$ + and + 'skip$ + 'new.block + if$ +} + +FUNCTION {new.sentence.checka} +{ empty$ + 'skip$ + 'new.sentence + if$ +} + +FUNCTION {new.sentence.checkb} +{ empty$ + swap$ empty$ + and + 'skip$ + 'new.sentence + if$ +} + +FUNCTION {field.or.null} +{ duplicate$ empty$ + { pop$ "" } + 'skip$ + if$ +} + +FUNCTION {emphasize} +{ duplicate$ empty$ + { pop$ "" } + { duplicate$ is.kanji + 'skip$ % 1.00(3) + { "{\em " swap$ * "}" * } % 2.00(3) + if$ + } + if$ +} + +INTEGERS { nameptr namesleft numnames } + +FUNCTION {format.names} % 1.00(4), 2.00(4) +{ 's := + #1 'nameptr := + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { s nameptr "{ff}{ll}" format.name$ duplicate$ is.kanji + { duplicate$ text.length$ #6 > + { 't := } + { pop$ s nameptr "{ff} {ll}" format.name$ 't := } + if$ + } + { pop$ s nameptr "{vv }{ll}{, jj}{, f.}" format.name$ 't := } + if$ + nameptr #1 > + { namesleft #1 > + { s is.kanji + { "," } + { ", " } + if$ + * t * } + { t "others" = + { s is.kanji + {"ほか" * } + {" et al." * } + if$ + } + { s is.kanji + {"," * t * } % put "," here for Kanji (H.N.) + {" and " * t * } + if$ + } + if$ + } + if$ + } + 't + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +FUNCTION {format.authors} +{ author empty$ + { "" } + { author format.names } + if$ +} + +FUNCTION {add.colon} % 2.00(5) +{ duplicate$ is.kanji + { "\:" * } % 2.12(1) + { ": " * } + if$ +} + +FUNCTION {format.editors.inparen} % 2.00(6) +{ editor empty$ + { "" } + { editor format.names + editor num.names$ #1 > + { editor is.kanji + {",編" * } {", eds." *} if$ + } + { editor is.kanji + {",編" *} {", ed." *} if$ + } + if$ + } + if$ +} + +FUNCTION {format.editors} +{ editor empty$ + { "" } + { editor format.names + editor num.names$ #1 > + { editor is.kanji + {"(編)" * } {"(eds.)" *} if$ % 2.00(7) + } + { editor is.kanji + {"(編)" *} {"(ed.)" *} if$ % 2.00(7) + } + if$ + } + if$ +} + +FUNCTION {n.dashify} +{ 't := + "" + { t empty$ not } + { t #1 #1 substring$ "-" = + { t #1 #2 substring$ "--" = not + { "--" * + t #2 global.max$ substring$ 't := + } + { { t #1 #1 substring$ "-" = } + { "-" * + t #2 global.max$ substring$ 't := + } + while$ + } + if$ + } + { t #1 #1 substring$ * + t #2 global.max$ substring$ 't := + } + if$ + } + while$ +} + +FUNCTION {format.date} +{ before.year 'output.state := % 1.00(1) + year empty$ + { month empty$ + { "" } + { "there's a month but no year in " cite$ * warning$ + "" % 1.00(5) + } + if$ + } + { "(" year ")" * * } % 1.00(5) + if$ +} + +FUNCTION {tie.or.space.connect} +{ duplicate$ text.length$ #3 < + { "~" } + { "\ " } % 1.00(6) + if$ + swap$ * * +} + +FUNCTION {output.volume} +{ + volume empty$ + 'skip$ + { "Vol.~" volume * output} + if$ + +} + +FUNCTION {output.number} +{ + number empty$ + 'skip$ + { "No.~" number * output} + if$ +} + +FUNCTION {output.series.volume.number} +{ series empty$ + { output.volume + output.number } + { series is.kanji + volume empty$ + number empty$ + or + and + { series " " * volume * number * output} + { series output + output.volume + output.number} + if$ + } + if$ +} + +FUNCTION {format.edition} +{ edition empty$ + { "" } + { output.state mid.sentence = + { edition "l" change.case$ " edition" * } + { edition "t" change.case$ " edition" * } + if$ + } + if$ +} + +INTEGERS { multiresult } + +FUNCTION {multi.page.check} +{ 't := + #0 'multiresult := + { multiresult not + t empty$ not + and + } + { t #1 #1 substring$ + duplicate$ "-" = + swap$ duplicate$ "," = + swap$ "+" = + or or + { #1 'multiresult := } + { t #2 global.max$ substring$ 't := } + if$ + } + while$ + multiresult +} + +FUNCTION {format.pages} % 1.00(7) +{ pages empty$ + { "" } + { pages multi.page.check + { "pp." pages n.dashify tie.or.space.connect } + { "p." pages tie.or.space.connect } + if$ + } + if$ +} + +FUNCTION {format.vol.num.pages} % 1.00(8) +{ volume empty$ + { ""} + { " Vol.~" volume * } + if$ + number empty$ + 'skip$ + { volume empty$ + { "there's a number but no volume in " cite$ * warning$ } + { "," *} + if$ + " No.~" number * * + } + if$ + pages empty$ + 'skip$ + { duplicate$ empty$ + { pop$ format.pages } + { ", " * format.pages * } + if$ + } + if$ +} + +FUNCTION {format.chapter.pages} +{ chapter empty$ + 'format.pages + { type empty$ + { "chapter" chapter tie.or.space.connect } + { type is.kanji + { chapter type tie.or.space.connect } + { type "l" change.case$ chapter tie.or.space.connect } + if$ + } + if$ + pages empty$ + 'skip$ + { ", " * format.pages * } + if$ + } + if$ +} + +FUNCTION {format.in.ed.booktitle} +{ booktitle empty$ + { "" } + { booktitle emphasize + editor empty$ + 'skip$ + { booktitle is.kanji + { "(" * format.editors.inparen * ")" *} % 2.00(6,7) + { " (" * format.editors.inparen * ")" *} % 1.00(9), 2.00(6) + if$ + } + if$ + } + if$ +} + +FUNCTION {empty.misc.check} +{ author empty$ title empty$ howpublished empty$ + month empty$ year empty$ note empty$ + and and and and and + key empty$ not and + { "all relevant fields are empty in " cite$ * warning$ } + 'skip$ + if$ +} + +FUNCTION {format.thesis.type} +{ type empty$ + 'skip$ + { pop$ + type "t" change.case$ + } + if$ +} + +FUNCTION {format.tr.number} +{ type empty$ + { title empty$ + { "Technical Report" } + { title is.kanji + { "技術報告" } + { "Technical Report" } + if$ + } + if$ + } + {type} + if$ + number empty$ + { "t" change.case$ } + { " " number * * } + if$ +} + +FUNCTION {format.article.crossref} % 2.00(8) +{ key empty$ + { journal empty$ + { "need key or journal for " cite$ * " to crossref " * crossref * + warning$ + "" + } + { journal emphasize } % 1.00(10) + if$ + } + { "In " key * } + if$ + " \cite{" * crossref * "}" * +} + +FUNCTION {format.crossref.editor} % 1.00(11) +{ editor #1 + editor is.kanji { "{ff}" } { "{vv }{ll}" } if$ + format.name$ + editor num.names$ duplicate$ + #2 > + { editor is.kanji + {pop$ "ほか" *} {pop$ " et al." * } if$ + } + { #2 < + 'skip$ + { editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" = + { editor is.kanji + {"ほか" *} {" et al." * } if$ + } + { editor is.kanji + {"・" * editor #2 "{ff}" format.name$ * } + {" and " * editor #2 "{vv }{ll}" format.name$ * } + if$ + } + if$ + } + if$ + } + if$ +} + +FUNCTION {format.book.crossref} % 2.00(8) +{ editor empty$ + editor field.or.null author field.or.null = + or + { key empty$ + { series empty$ + { "need editor, key, or series for " cite$ * " to crossref " * + crossref * warning$ + "" + } + { series emphasize } % 1.00(10) + if$ + } + { "In " key * } + if$ + } + { format.crossref.editor } + if$ + " \cite{" * crossref * "}" * + volume empty$ + { "empty volume in " cite$ * "'s crossref of " * crossref * warning$ } + { duplicate$ is.kanji { "," } { ", "} if$ * + "Vol." * volume tie.or.space.connect + } + if$ +} + +FUNCTION {format.incoll.inproc.crossref} % 2.00(8) +{ editor empty$ + editor field.or.null author field.or.null = + or + { key empty$ + { booktitle empty$ + { "need editor, key, or booktitle for " cite$ * " to crossref " * + crossref * warning$ + "" + } + { booktitle emphasize } % 1.00(10) + if$ + } + { "In " key * } + if$ + } + { format.crossref.editor } + if$ + " \cite{" * crossref * "}" * +} + +FUNCTION {article} +{ +%%%% + author "author" required.argument + title "title" required.argument + journal "journal" required.argument + year "year" required.argument +%%%% jssst + volume "volume" + number "number" + required.and.or.argument + pages "pages" required.argument +%%%% + output.bibitem + format.authors add.colon % 2.00(5) + title output + crossref missing$ + { journal emphasize output + format.vol.num.pages output % 1.00(12) + format.date output + } + { format.article.crossref output.nonnull + format.pages output + } + if$ + new.block + note output + fin.entry +} + +FUNCTION {book} +{ +%%%% + author "author" + editor "editor" + required.exclusive.or.argument + title "title" required.argument + publisher "publisher" required.argument + year "year" required.argument + optional.series.volume.number.argument +%%%% + output.bibitem + author empty$ + { format.editors} + { format.authors} + if$ + add.colon % 2.00(5) + title emphasize output + crossref missing$ + { output.series.volume.number + publisher output + address output + } + { new.block + format.book.crossref output.nonnull + } + if$ + format.edition output + format.date output + new.block + note output + fin.entry +} + +FUNCTION {booklet} +{ +%%%% + title "title" required.argument +%%%% jssst + author "author" required.argument +%%%% + output.bibitem + format.authors add.colon % 2.00(5) + title output + howpublished output + address output + format.date output + new.block + note output + fin.entry +} + +FUNCTION {inbook} +{ +%%%% + author "author" + editor "editor" + required.exclusive.or.argument + title "title" required.argument + chapter "chapter" + pages "pages" + required.and.or.argument + publisher "publisher" required.argument + year "year" required.argument + + optional.series.volume.number.argument +%%%% + output.bibitem + author empty$ + { format.editors} + { format.authors} + if$ + add.colon % 2.00(5) + title emphasize output + crossref missing$ + { output.series.volume.number + format.chapter.pages output + publisher output + } + { format.chapter.pages output + new.block + format.book.crossref output.nonnull + } + if$ + format.edition output + format.date output % 1.00(13) + new.block + note output + fin.entry +} + +FUNCTION {incollection} +{ +%%%% + author "author" required.argument + title "title" required.argument + booktitle "booktitle" required.argument + publisher "publisher" required.argument + year "year" required.argument + + optional.series.volume.number.argument +%%%% + output.bibitem + format.authors add.colon % 2.00(5) + title output + crossref missing$ + { format.in.ed.booktitle output + output.series.volume.number + publisher output + address output + format.edition output + format.chapter.pages output % 1.00(13) + format.date output + } + { format.incoll.inproc.crossref output.nonnull + format.chapter.pages output + } + if$ + new.block + note output + fin.entry +} + +FUNCTION {inproceedings} +{ +%%%% + author "author" required.argument + title "title" required.argument + year "year" required.argument + + optional.series.volume.number.argument +%%%% + output.bibitem + format.authors add.colon % 2.00(5) + title output + crossref missing$ + { format.in.ed.booktitle output + booktitle "booktitle" required.argument + output.series.volume.number + address output + organization output + publisher output + format.pages output + format.date output % 1.00(13) + } + { format.incoll.inproc.crossref output.nonnull + format.pages output + } + if$ + new.block + note output + fin.entry +} + +FUNCTION {conference} { inproceedings } + +FUNCTION {manual} +{ +%%%% + title "title" required.argument +%%%% jssst + author "author" + organization "organazaion" + required.exclusive.or.argument +%%%% + output.bibitem + author empty$ + { organization} + { format.authors} + if$ + add.colon % 2.00(5) + title emphasize output + author empty$ + 'skip$ + { organization output } + if$ + address output + format.edition output + format.date output + new.block + note output + fin.entry +} + +FUNCTION {mastersthesis} +{ +%%%% + author "author" required.argument + title "title" required.argument + school "school" required.argument + year "year" required.argument +%%%% + output.bibitem + format.authors add.colon % 2.00(5) + title output + author empty$ + { "Master's thesis" } + { author is.kanji + { "修士論文" } + { "Master's thesis" } + if$ + } + if$ + format.thesis.type output.nonnull + school output + address output + format.date output + new.block + note output + fin.entry +} + +FUNCTION {misc} +{ +%%%% +%%%% jssst + author "author" required.argument + title "title" required.argument +%%%% + output.bibitem + format.authors add.colon % 2.00(5) + title output + howpublished output + format.date output + new.block + note output + fin.entry + empty.misc.check +} + +FUNCTION {phdthesis} +{ +%%%% + author "author" required.argument + title "title" required.argument + school "school" required.argument + year "year" required.argument +%%%% + output.bibitem + format.authors add.colon % 2.00(5) + title output % 2.00(9) + author empty$ + { "PhD Thesis" } + { author is.kanji + { "博士論文" } + { "PhD Thesis" } + if$ + } + if$ + format.thesis.type output.nonnull + school output + address output + format.date output + new.block + note output + fin.entry +} + +FUNCTION {proceedings} +{ +%%%% + title "title" required.argument + year "year" required.argument + + optional.series.volume.number.argument +%%%% jssst + editor "editor" + organization "organization" + required.exclusive.or.argument +%%%% + output.bibitem + editor empty$ + { organization } + { format.editors } + if$ + add.colon % 2.00(5) + title emphasize output + output.series.volume.number + address output + editor empty$ + 'skip$ + { organization output } + if$ + publisher output + format.date output + new.block + note output + fin.entry +} + +FUNCTION {techreport} +{ +%%%% + author "author" required.argument + title "title" required.argument + institution "institution" required.argument + year "year" required.argument +%%%% + output.bibitem + format.authors add.colon % 2.00(5) + title output + format.tr.number output.nonnull + institution output + address output + format.date output + new.block + note output + fin.entry +} + +FUNCTION {unpublished} +{ +%%%% + author "author" required.argument + title "title" required.argument + note "note" required.argument +%%%% + output.bibitem + format.authors add.colon % 2.00(5) + title output + format.date output + new.block + note output + fin.entry +} + +FUNCTION {default.type} { misc } + +MACRO {jan} {"January"} + +MACRO {feb} {"February"} + +MACRO {mar} {"March"} + +MACRO {apr} {"April"} + +MACRO {may} {"May"} + +MACRO {jun} {"June"} + +MACRO {jul} {"July"} + +MACRO {aug} {"August"} + +MACRO {sep} {"September"} + +MACRO {oct} {"October"} + +MACRO {nov} {"November"} + +MACRO {dec} {"December"} + +MACRO {acmcs} {"ACM Computing Surveys"} + +MACRO {acta} {"Acta Informatica"} + +MACRO {cacm} {"Communications of the ACM"} + +MACRO {ibmjrd} {"IBM Journal of Research and Development"} + +MACRO {ibmsj} {"IBM Systems Journal"} + +MACRO {ieeese} {"IEEE Transactions on Software Engineering"} + +MACRO {ieeetc} {"IEEE Transactions on Computers"} + +MACRO {ieeetcad} + {"IEEE Transactions on Computer-Aided Design of Integrated Circuits"} + +MACRO {ipl} {"Information Processing Letters"} + +MACRO {jacm} {"Journal of the ACM"} + +MACRO {jcss} {"Journal of Computer and System Sciences"} + +MACRO {scp} {"Science of Computer Programming"} + +MACRO {sicomp} {"SIAM Journal on Computing"} + +MACRO {tocs} {"ACM Transactions on Computer Systems"} + +MACRO {tods} {"ACM Transactions on Database Systems"} + +MACRO {tog} {"ACM Transactions on Graphics"} + +MACRO {toms} {"ACM Transactions on Mathematical Software"} + +MACRO {toois} {"ACM Transactions on Office Information Systems"} + +MACRO {toplas} {"ACM Transactions on Programming Languages and Systems"} + +MACRO {tcs} {"Theoretical Computer Science"} + +READ + +STRINGS { longest.label } + +INTEGERS { number.label longest.label.width } + +FUNCTION {initialize.longest.label} +{ "" 'longest.label := + #1 'number.label := + #0 'longest.label.width := +} + +FUNCTION {longest.label.pass} +{ number.label int.to.str$ 'label := + number.label #1 + 'number.label := + label width$ longest.label.width > + { label 'longest.label := + label width$ 'longest.label.width := + } + 'skip$ + if$ +} + +EXECUTE {initialize.longest.label} + +ITERATE {longest.label.pass} + +FUNCTION {begin.bib} +{ preamble$ empty$ + 'skip$ + { preamble$ write$ newline$ } + if$ + "\begin{thebibliography}{" longest.label * "}" * write$ newline$ +} + +EXECUTE {begin.bib} + +EXECUTE {init.state.consts} + +ITERATE {call.type$} + +FUNCTION {end.bib} +{ newline$ + "\end{thebibliography}" write$ newline$ +} + +EXECUTE {end.bib} + + diff -r 000000000000 -r 38b037c42c34 paper/jlisting.sty --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/paper/jlisting.sty Mon Apr 17 20:05:26 2017 +0900 @@ -0,0 +1,216 @@ +\NeedsTeXFormat{LaTeX2e} +\def\filedate{2006/02/20} +\def\fileversion{0.2} +\ProvidesPackage{jlisting}[\filedate\space\fileversion\space(Thor)] +% +\newcount\lst@nextchar +\let\lst@@ProcessSpace\lst@ProcessSpace +\def\lst@ProcessSpace#1{% + \lst@check@chartype{#1}% + \lst@@ProcessSpace + \lst@whitespacetrue} +\let\lst@@ProcessLetter\lst@ProcessLetter +\def\lst@ProcessLetter#1#2{% + \lst@check@chartype{#2}% + {\lst@@ProcessLetter{#1}}% + \relax} +\let\lst@@ProcessDigit\lst@ProcessDigit +\def\lst@ProcessDigit#1#2{% + \lst@check@chartype{#2}% + {\lst@@ProcessDigit{#1}}% + \relax} +\let\lst@@ProcessOther\lst@ProcessOther +\def\lst@ProcessOther#1#2{% + \lst@check@chartype{#2}% + {\lst@@ProcessOther{#1}}% + \relax} +\let\lst@@ProcessTabulator\lst@ProcessTabulator +\def\lst@ProcessTabulator#1{% + \lst@check@chartype{#1}% + \lst@@ProcessTabulator + \relax} +\def\lst@check@chartype#1#2#3{% + \edef\@tempa{\lst@nextchar=`\string#1\relax}% + \afterassignment\remove@to@nnil + \@tempa\@nnil + #2% + \ifnum\lst@nextchar<\@cclvi + #3% + \else + \lst@ifletter \else \lst@OutputOther \fi + \lst@whitespacefalse + \expandafter\lst@AppendJchar + \fi + #1} +\def\lst@AppendJchar#1#2{% + \lst@check@chartype{#2}% + {\advance\lst@length\@ne\lst@Append{#1}}% + \relax} +\def\lst@check@chartype@BOL#1{% + \edef\@tempa{\lst@nextchar=`\string#1\relax}% + \afterassignment\remove@to@nnil + \@tempa\@nnil + \ifnum\lst@nextchar<\@cclvi\else + \lst@whitespacefalse + \expandafter\lst@AppendJchar + \fi + #1} +\def\lst@InputListing#1{% + \begingroup + \lsthk@PreSet \gdef\lst@intname{#1}% + \expandafter\lstset\expandafter{\lst@set}% + \lsthk@DisplayStyle + \catcode\active=\active + \lst@Init\relax \let\lst@gobble\z@ + \lst@SkipToFirst + \lst@ifprint \def\lst@next{\lst@get@filecontents{#1}}% + \else \let\lst@next\@empty + \fi + \lst@next + \lst@DeInit + \endgroup} +\newread\lst@inputfile +\def\lst@get@filecontents#1{% + \let\lst@filecontents\@empty + \openin\lst@inputfile=#1\relax + \let\@lst@get@filecontents@prevline\relax + \lst@get@filecontents@loop + \closein\lst@inputfile + \lst@filecontents\empty} +\def\lst@get@filecontents@loop{% + \read\lst@inputfile to\@lst@get@filecontents@currline + \ifx\@lst@get@filecontents@prevline\relax\else + \expandafter\expandafter\expandafter\def + \expandafter\expandafter\expandafter\lst@filecontents + \expandafter\expandafter\expandafter{% + \expandafter\lst@filecontents\@lst@get@filecontents@prevline}% + \fi + \let\@lst@get@filecontents@prevline\@lst@get@filecontents@currline + \ifeof\lst@inputfile\else + \expandafter\lst@get@filecontents@loop + \fi} +%%% [$B$3$N=hM}$b!$AjEv6/0z$G$9!%(B] +\def\lst@BOLGobble{% + \ifnum\lst@gobble>\z@ + \@tempcnta\lst@gobble\relax + \expandafter\lst@BOLGobble@ + \else + \expandafter\lst@check@chartype@BOL + \fi} +\def\lst@BOLGobble@#1{% + \let\lst@next#1% + \ifx \lst@next\relax\else + \ifx \lst@next\lst@MProcessListing\else + \ifx \lst@next\lst@ProcessFormFeed\else + \ifx \lst@next\lstenv@backslash + \let\lst@next\lstenv@BOLGobble@@ + \else + \let\lst@next\lst@BOLGobble@@ + \ifx #1\lst@ProcessTabulator + \advance\@tempcnta-\lst@tabsize\relax + \ifnum\@tempcnta<\z@ + \lst@length-\@tempcnta \lst@PreGotoTabStop + \fi + \else + \edef\@tempa{\lst@nextchar=`\string#1\relax}% + \@tempa + \ifnum\lst@nextchar<\@cclvi\else + \advance\@tempcnta\m@ne + \fi + \advance\@tempcnta\m@ne + \fi + \fi \fi \fi \fi + \lst@next} +\def\lst@BOLGobble@@{% + \ifnum\@tempcnta>\z@ + \expandafter\lst@BOLGobble@ + \else + \expandafter\lst@check@chartype@BOL + \fi +} +% +% \begin{$B=$@5;v9`(B}{1.3} +% $B$A$g$C$H$7$?=$@5(B +\gdef\lst@breakProcessOther#1{\lst@ProcessOther#1} +% $B%=!<%9%3!<%IL\<!$K$*$1$kJ8;z$HHV9f$N6u$-(B +\let \l@lstlisting = \l@figure +% $B%-%c%W%7%g%s$H%=!<%9%3!<%IL\<!$KBP$9$kF|K\8lBP1~(B +\def\lstlistingname{$B%=!<%9%3!<%I(B} +\def\lstlistlistingname{$B%=!<%9%3!<%IL\<!(B} +% \end{$B=$@5;v9`(B} +\endinput +% +%#!platex +\documentclass[papersize]{jsarticle} +% Macros +\IfFileExists{dvipdfmx.def}{% + \usepackage[dvipdfmx]{color,graphicx}% +}{% + \usepackage[dvipdfm]{color,graphicx}% +} +\usepackage{listings}[2004/09/07] +\usepackage{jlisting}[2006/02/20] +\usepackage{url} +\usepackage{verbatim} + +\makeatletter +% Original Macros +\def\email#1{\gdef\@email{\texttt{#1}}} +\def\homepage#1{\gdef\@homepage{\texttt{#1}}} +\def\mac#1{\textsf{#1}} +\def\URL#1{\texttt{#1}} +\def\src#1{\texttt{#1}} + +% Dvipdfmx.def +\def\dvipdfmxDefi{http://tex.dante.jp/ok/dvipdfmx/} +\def\dvipdfmxDefii{http://ftp.ktug.or.kr/KTUG/dvipdfmx/contrib/latex/} + +\IfFileExists{dvipdfmx.def}{% + \let \IfDvipdfmxDef = \empty \relax}{% + \typeout{^^Jget dvipdfmx.def at \dvipdfmxDefi^^J + or \dvipdfmxDefii^^J}% + \def\IfDvipdfmxDef{Get \src{dvipdfmx.def} at \URL \dvipdfmxDefii \\ + or \URL \dvipdfmxDefi.}% +} + +% Author Info +\author {Th\'or Watanabe\thanks \@email \space \thanks \@homepage} +\title {\mac{jlisting.sty}\\ + ---Japanese Localized Patch File of \mac{listings}---} +\email {thor@tex.dante.jp} +\homepage {http://tex.dante.jp/typo/} +\date {2006/02/20} + +\makeatother + +\begin{document} +\maketitle +%\IfDvipdfmxDef + +\section{$B$A$g$C$H$7$?@bL@(B}% Short Description + +$B1|B<@2I';a$N7G<(HD$N!VHFMQE*$JIbF0BN!W$H$$$&0lO"$N=q$-9~$_$+$i(B +$BE>:\$7$^$7$?!#(B + +\begin{quote} + \url{http://http://cise.edu.mie-u.ac.jp/~okumura/texfaq/qa/21172.html}\\ + \url{http://http://cise.edu.mie-u.ac.jp/~okumura/texfaq/qa/21184.html}\\ + \url{http://http://cise.edu.mie-u.ac.jp/~okumura/texfaq/qa/21189.html}\\ + \url{http://http://cise.edu.mie-u.ac.jp/~okumura/texfaq/qa/21197.html} +\end{quote} + + Copyright $B$O5H1JE/H~;a$K$"$k$N$@$H;W$$$^$9!%(B + +\section{$B99?7MzNr(B}% ChageLogs + +\begin{description} + \item[ver.~0.1 (2004/03/24)] + $B$H$j$"$($:8x3+!%(B + \item[ver.~0.2 (2006/02/20)] + \verb|\lst@breakProcessOther| $BL?Na$NDj5A$NDI2C!%(B +\end{description} + +\section{$B%=!<%9%3!<%I(B} +\par\narrowbaselines +\verbatiminput{jlisting.sty} +\end{document} diff -r 000000000000 -r 38b037c42c34 paper/pic/cbc_goto.graffle --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/paper/pic/cbc_goto.graffle Mon Apr 17 20:05:26 2017 +0900 @@ -0,0 +1,1037 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> +<plist version="1.0"> +<dict> + <key>ActiveLayerIndex</key> + <integer>0</integer> + <key>ApplicationVersion</key> + <array> + <string>com.omnigroup.OmniGraffle6</string> + <string>167.2.0.244490</string> + </array> + <key>AutoAdjust</key> + <true/> + <key>BackgroundGraphic</key> + <dict> + <key>Bounds</key> + <string>{{0, 0}, {558.99997329711914, 783}}</string> + <key>Class</key> + <string>SolidGraphic</string> + <key>ID</key> + <integer>2</integer> + <key>Style</key> + <dict> + <key>stroke</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + </dict> + <key>BaseZoom</key> + <integer>0</integer> + <key>CanvasOrigin</key> + <string>{0, 0}</string> + <key>ColumnAlign</key> + <integer>1</integer> + <key>ColumnSpacing</key> + <real>36</real> + <key>CreationDate</key> + <string>2011-11-12 11:03:25 +0000</string> + <key>Creator</key> + <string>Nobuyasu Oshiro</string> + <key>DisplayScale</key> + <string>1 in = 1.00000 in</string> + <key>GraphDocumentVersion</key> + <integer>12</integer> + <key>GraphicsList</key> + <array> + <dict> + <key>Bounds</key> + <string>{{315.5, 89.625}, {45.933593999999999, 18.375}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>ID</key> + <integer>32</integer> + <key>Magnets</key> + <array> + <string>{1, 1}</string> + <string>{1, -1}</string> + <string>{-1, -1}</string> + <string>{-1, 1}</string> + <string>{0, 1}</string> + <string>{0, -1}</string> + <string>{1, 0}</string> + <string>{-1, 0}</string> + <string>{-0.5, -0.233518}</string> + <string>{-0.49144199, 0.26006298999999999}</string> + <string>{0.50711799000000002, -0.22408600000000001}</string> + <string>{0.50711799000000002, 0.26717900999999999}</string> + <string>{-0.27430999, -0.47402799000000001}</string> + <string>{0.27977999999999997, -0.47847801000000001}</string> + <string>{0.29393801000000003, 0.54304397000000004}</string> + <string>{-0.28623198999999999, 0.55380397999999997}</string> + </array> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg1252\cocoartf1348\cocoasubrtf170 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc + +\f0\fs24 \cf0 goto}</string> + <key>VerticalPad</key> + <real>0.0</real> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{315.5, 171}, {45.933593999999999, 18.375}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>ID</key> + <integer>31</integer> + <key>Magnets</key> + <array> + <string>{1, 1}</string> + <string>{1, -1}</string> + <string>{-1, -1}</string> + <string>{-1, 1}</string> + <string>{0, 1}</string> + <string>{0, -1}</string> + <string>{1, 0}</string> + <string>{-1, 0}</string> + <string>{-0.5, -0.233518}</string> + <string>{-0.49144199, 0.26006298999999999}</string> + <string>{0.50711799000000002, -0.22408600000000001}</string> + <string>{0.50711799000000002, 0.26717900999999999}</string> + <string>{-0.27430999, -0.47402799000000001}</string> + <string>{0.27977999999999997, -0.47847801000000001}</string> + <string>{0.29393801000000003, 0.54304397000000004}</string> + <string>{-0.28623198999999999, 0.55380397999999997}</string> + </array> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg1252\cocoartf1348\cocoasubrtf170 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc + +\f0\fs24 \cf0 goto}</string> + <key>VerticalPad</key> + <real>0.0</real> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{190.20312000000001, 167}, {45.933593999999999, 18.375}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>ID</key> + <integer>30</integer> + <key>Magnets</key> + <array> + <string>{1, 1}</string> + <string>{1, -1}</string> + <string>{-1, -1}</string> + <string>{-1, 1}</string> + <string>{0, 1}</string> + <string>{0, -1}</string> + <string>{1, 0}</string> + <string>{-1, 0}</string> + <string>{-0.5, -0.233518}</string> + <string>{-0.49144199, 0.26006298999999999}</string> + <string>{0.50711799000000002, -0.22408600000000001}</string> + <string>{0.50711799000000002, 0.26717900999999999}</string> + <string>{-0.27430999, -0.47402799000000001}</string> + <string>{0.27977999999999997, -0.47847801000000001}</string> + <string>{0.29393801000000003, 0.54304397000000004}</string> + <string>{-0.28623198999999999, 0.55380397999999997}</string> + </array> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg1252\cocoartf1348\cocoasubrtf170 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc + +\f0\fs24 \cf0 goto}</string> + <key>VerticalPad</key> + <real>0.0</real> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{405.93358999999998, 125}, {54, 18}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>ID</key> + <integer>29</integer> + <key>Magnets</key> + <array> + <string>{1, 1}</string> + <string>{1, -1}</string> + <string>{-1, -1}</string> + <string>{-1, 1}</string> + <string>{0, 1}</string> + <string>{0, -1}</string> + <string>{1, 0}</string> + <string>{-1, 0}</string> + <string>{-0.5, -0.233518}</string> + <string>{-0.49144199, 0.26006298999999999}</string> + <string>{0.50711799000000002, -0.22408600000000001}</string> + <string>{0.50711799000000002, 0.26717900999999999}</string> + <string>{-0.27430999, -0.47402799000000001}</string> + <string>{0.27977999999999997, -0.47847801000000001}</string> + <string>{0.29393801000000003, 0.54304397000000004}</string> + <string>{-0.28623198999999999, 0.55380397999999997}</string> + </array> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg1252\cocoartf1348\cocoasubrtf170 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc + +\f0\fs24 \cf0 goto}</string> + <key>VerticalPad</key> + <real>0.0</real> + </dict> + </dict> + <dict> + <key>AllowLabelDrop</key> + <false/> + <key>Class</key> + <string>LineGraphic</string> + <key>ID</key> + <integer>28</integer> + <key>Points</key> + <array> + <string>{412.93358999999998, 143.02043}</string> + <string>{462.43358999999998, 143}</string> + </array> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>HeadArrow</key> + <string>FilledArrow</string> + <key>HeadScale</key> + <real>1.4285709857940674</real> + <key>Legacy</key> + <true/> + <key>TailArrow</key> + <string>0</string> + <key>TailScale</key> + <real>0.5</real> + </dict> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{90, 126}, {54, 18}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>ID</key> + <integer>27</integer> + <key>Magnets</key> + <array> + <string>{1, 1}</string> + <string>{1, -1}</string> + <string>{-1, -1}</string> + <string>{-1, 1}</string> + <string>{0, 1}</string> + <string>{0, -1}</string> + <string>{1, 0}</string> + <string>{-1, 0}</string> + <string>{-0.5, -0.233518}</string> + <string>{-0.49144199, 0.26006298999999999}</string> + <string>{0.50711799000000002, -0.22408600000000001}</string> + <string>{0.50711799000000002, 0.26717900999999999}</string> + <string>{-0.27430999, -0.47402799000000001}</string> + <string>{0.27977999999999997, -0.47847801000000001}</string> + <string>{0.29393801000000003, 0.54304397000000004}</string> + <string>{-0.28623198999999999, 0.55380397999999997}</string> + </array> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg1252\cocoartf1348\cocoasubrtf170 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc + +\f0\fs24 \cf0 goto}</string> + <key>VerticalPad</key> + <real>0.0</real> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{252, 134.3125}, {45.933593999999999, 18.375}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>ID</key> + <integer>26</integer> + <key>Magnets</key> + <array> + <string>{1, 1}</string> + <string>{1, -1}</string> + <string>{-1, -1}</string> + <string>{-1, 1}</string> + <string>{0, 1}</string> + <string>{0, -1}</string> + <string>{1, 0}</string> + <string>{-1, 0}</string> + <string>{-0.5, -0.233518}</string> + <string>{-0.49144199, 0.26006298999999999}</string> + <string>{0.50711799000000002, -0.22408600000000001}</string> + <string>{0.50711799000000002, 0.26717900999999999}</string> + <string>{-0.27430999, -0.47402799000000001}</string> + <string>{0.27977999999999997, -0.47847801000000001}</string> + <string>{0.29393801000000003, 0.54304397000000004}</string> + <string>{-0.28623198999999999, 0.55380397999999997}</string> + </array> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg1252\cocoartf1348\cocoasubrtf170 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc + +\f0\fs24 \cf0 goto}</string> + <key>VerticalPad</key> + <real>0.0</real> + </dict> + </dict> + <dict> + <key>AllowLabelDrop</key> + <false/> + <key>Class</key> + <string>LineGraphic</string> + <key>Head</key> + <dict> + <key>ID</key> + <integer>3</integer> + </dict> + <key>ID</key> + <integer>23</integer> + <key>Points</key> + <array> + <string>{97, 144.03550999999999}</string> + <string>{146.49998746293761, 144.0150711098278}</string> + </array> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>HeadArrow</key> + <string>FilledArrow</string> + <key>HeadScale</key> + <real>1.4285709857940674</real> + <key>Legacy</key> + <true/> + <key>TailArrow</key> + <string>0</string> + <key>TailScale</key> + <real>0.5</real> + </dict> + </dict> + </dict> + <dict> + <key>Class</key> + <string>LineGraphic</string> + <key>Head</key> + <dict> + <key>ID</key> + <integer>5</integer> + </dict> + <key>ID</key> + <integer>11</integer> + <key>Points</key> + <array> + <string>{307.06832644961662, 99.005708590904717}</string> + <string>{348.41386755785959, 126.00973315833174}</string> + </array> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>HeadArrow</key> + <string>FilledArrow</string> + <key>Legacy</key> + <true/> + <key>LineType</key> + <integer>1</integer> + <key>TailArrow</key> + <string>0</string> + </dict> + </dict> + <key>Tail</key> + <dict> + <key>ID</key> + <integer>1</integer> + </dict> + </dict> + <dict> + <key>Class</key> + <string>LineGraphic</string> + <key>Head</key> + <dict> + <key>ID</key> + <integer>5</integer> + </dict> + <key>ID</key> + <integer>38</integer> + <key>Points</key> + <array> + <string>{307.26186045457405, 188.16336426740673}</string> + <string>{348.23813954515032, 161.83663573235037}</string> + </array> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>HeadArrow</key> + <string>FilledArrow</string> + <key>Legacy</key> + <true/> + <key>LineType</key> + <integer>1</integer> + <key>TailArrow</key> + <string>0</string> + </dict> + </dict> + <key>Tail</key> + <dict> + <key>ID</key> + <integer>34</integer> + </dict> + </dict> + <dict> + <key>Class</key> + <string>LineGraphic</string> + <key>Head</key> + <dict> + <key>ID</key> + <integer>34</integer> + </dict> + <key>ID</key> + <integer>37</integer> + <key>Points</key> + <array> + <string>{210.76185637532367, 161.83663311602177}</string> + <string>{251.73814361460188, 188.16336689285151}</string> + </array> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>HeadArrow</key> + <string>FilledArrow</string> + <key>Legacy</key> + <true/> + <key>LineType</key> + <integer>1</integer> + <key>TailArrow</key> + <string>0</string> + </dict> + </dict> + <key>Tail</key> + <dict> + <key>ID</key> + <integer>3</integer> + </dict> + </dict> + <dict> + <key>Class</key> + <string>LineGraphic</string> + <key>Head</key> + <dict> + <key>ID</key> + <integer>1</integer> + </dict> + <key>ID</key> + <integer>8</integer> + <key>Points</key> + <array> + <string>{210.56036004631343, 125.98738390291257}</string> + <string>{251.89396917594394, 98.972989609515338}</string> + </array> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>HeadArrow</key> + <string>FilledArrow</string> + <key>Legacy</key> + <true/> + <key>LineType</key> + <integer>1</integer> + <key>TailArrow</key> + <string>0</string> + </dict> + </dict> + <key>Tail</key> + <dict> + <key>ID</key> + <integer>3</integer> + </dict> + </dict> + <dict> + <key>Class</key> + <string>LineGraphic</string> + <key>Head</key> + <dict> + <key>ID</key> + <integer>34</integer> + </dict> + <key>ID</key> + <integer>36</integer> + <key>Points</key> + <array> + <string>{293.55569627859614, 106.37834050302079}</string> + <string>{315.5, 146}</string> + <string>{294.53436892560063, 180.94271845733229}</string> + </array> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>HeadArrow</key> + <string>FilledArrow</string> + <key>Legacy</key> + <true/> + <key>LineType</key> + <integer>1</integer> + <key>TailArrow</key> + <string>0</string> + </dict> + </dict> + <key>Tail</key> + <dict> + <key>ID</key> + <integer>1</integer> + </dict> + </dict> + <dict> + <key>Class</key> + <string>LineGraphic</string> + <key>Head</key> + <dict> + <key>ID</key> + <integer>1</integer> + </dict> + <key>ID</key> + <integer>35</integer> + <key>Points</key> + <array> + <string>{263.99039783562887, 181.10804590903402}</string> + <string>{239, 141}</string> + <string>{262.95578718585557, 105.50994490984354}</string> + </array> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>HeadArrow</key> + <string>FilledArrow</string> + <key>Legacy</key> + <true/> + <key>LineType</key> + <integer>1</integer> + <key>TailArrow</key> + <string>0</string> + </dict> + </dict> + <key>Tail</key> + <dict> + <key>ID</key> + <integer>34</integer> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{340, 117}, {72, 54}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>ID</key> + <integer>5</integer> + <key>Shape</key> + <string>Circle</string> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg1252\cocoartf1348\cocoasubrtf170 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc + +\f0\fs24 \cf0 code segment\ +D}</string> + <key>VerticalPad</key> + <real>0.0</real> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{243.5, 179}, {72, 54}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>ID</key> + <integer>34</integer> + <key>Shape</key> + <string>Circle</string> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg1252\cocoartf1348\cocoasubrtf170 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc + +\f0\fs24 \cf0 code segment\ +C}</string> + <key>VerticalPad</key> + <real>0.0</real> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{147, 117}, {72, 54}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>ID</key> + <integer>3</integer> + <key>Shape</key> + <string>Circle</string> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg1252\cocoartf1348\cocoasubrtf170 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc + +\f0\fs24 \cf0 code segment A}</string> + <key>VerticalPad</key> + <real>0.0</real> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{243.5, 54}, {72, 54}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>ID</key> + <integer>1</integer> + <key>Shape</key> + <string>Circle</string> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg1252\cocoartf1348\cocoasubrtf170 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc + +\f0\fs24 \cf0 code segment\ +B}</string> + <key>VerticalPad</key> + <real>0.0</real> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{197.56640999999999, 98.625}, {45.933593999999999, 18.375}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>ID</key> + <integer>25</integer> + <key>Magnets</key> + <array> + <string>{1, 1}</string> + <string>{1, -1}</string> + <string>{-1, -1}</string> + <string>{-1, 1}</string> + <string>{0, 1}</string> + <string>{0, -1}</string> + <string>{1, 0}</string> + <string>{-1, 0}</string> + <string>{-0.5, -0.233518}</string> + <string>{-0.49144199, 0.26006298999999999}</string> + <string>{0.50711799000000002, -0.22408600000000001}</string> + <string>{0.50711799000000002, 0.26717900999999999}</string> + <string>{-0.27430999, -0.47402799000000001}</string> + <string>{0.27977999999999997, -0.47847801000000001}</string> + <string>{0.29393801000000003, 0.54304397000000004}</string> + <string>{-0.28623198999999999, 0.55380397999999997}</string> + </array> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg1252\cocoartf1348\cocoasubrtf170 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc + +\f0\fs24 \cf0 goto}</string> + <key>VerticalPad</key> + <real>0.0</real> + </dict> + </dict> + </array> + <key>GridInfo</key> + <dict/> + <key>GuidesLocked</key> + <string>NO</string> + <key>GuidesVisible</key> + <string>YES</string> + <key>HPages</key> + <integer>1</integer> + <key>ImageCounter</key> + <integer>1</integer> + <key>KeepToScale</key> + <false/> + <key>Layers</key> + <array> + <dict> + <key>Lock</key> + <string>NO</string> + <key>Name</key> + <string>Layer 1</string> + <key>Print</key> + <string>YES</string> + <key>View</key> + <string>YES</string> + </dict> + </array> + <key>LayoutInfo</key> + <dict> + <key>Animate</key> + <string>NO</string> + <key>circoMinDist</key> + <real>18</real> + <key>circoSeparation</key> + <real>0.0</real> + <key>layoutEngine</key> + <string>dot</string> + <key>neatoLineLength</key> + <real>0.20000000298023224</real> + <key>neatoSeparation</key> + <real>0.0</real> + <key>twopiSeparation</key> + <real>0.0</real> + </dict> + <key>LinksVisible</key> + <string>NO</string> + <key>MagnetsVisible</key> + <string>NO</string> + <key>MasterSheets</key> + <array/> + <key>ModificationDate</key> + <string>2015-10-27 21:38:00 +0000</string> + <key>Modifier</key> + <string>Tatsuki IHA</string> + <key>NotesVisible</key> + <string>NO</string> + <key>Orientation</key> + <integer>2</integer> + <key>OriginVisible</key> + <string>NO</string> + <key>PageBreaks</key> + <string>YES</string> + <key>PrintInfo</key> + <dict> + <key>NSBottomMargin</key> + <array> + <string>float</string> + <string>41</string> + </array> + <key>NSHorizonalPagination</key> + <array> + <string>coded</string> + <string>BAtzdHJlYW10eXBlZIHoA4QBQISEhAhOU051bWJlcgCEhAdOU1ZhbHVlAISECE5TT2JqZWN0AIWEASqEhAFxlwCG</string> + </array> + <key>NSLeftMargin</key> + <array> + <string>float</string> + <string>18</string> + </array> + <key>NSPaperSize</key> + <array> + <string>size</string> + <string>{594.99997329711914, 842}</string> + </array> + <key>NSPrintReverseOrientation</key> + <array> + <string>coded</string> + <string>BAtzdHJlYW10eXBlZIHoA4QBQISEhAhOU051bWJlcgCEhAdOU1ZhbHVlAISECE5TT2JqZWN0AIWEASqEhAFxlwCG</string> + </array> + <key>NSRightMargin</key> + <array> + <string>float</string> + <string>18</string> + </array> + <key>NSTopMargin</key> + <array> + <string>float</string> + <string>18</string> + </array> + </dict> + <key>PrintOnePage</key> + <false/> + <key>ReadOnly</key> + <string>NO</string> + <key>RowAlign</key> + <integer>1</integer> + <key>RowSpacing</key> + <real>36</real> + <key>SheetTitle</key> + <string>Canvas 1</string> + <key>SmartAlignmentGuidesActive</key> + <string>YES</string> + <key>SmartDistanceGuidesActive</key> + <string>YES</string> + <key>UniqueID</key> + <integer>1</integer> + <key>UseEntirePage</key> + <false/> + <key>VPages</key> + <integer>1</integer> + <key>WindowInfo</key> + <dict> + <key>CurrentSheet</key> + <integer>0</integer> + <key>Expanded_Canvases</key> + <array/> + <key>Frame</key> + <string>{{4, -0}, {1913, 983}}</string> + <key>ShowInfo</key> + <true/> + <key>ShowRuler</key> + <true/> + <key>Sidebar</key> + <true/> + <key>SidebarWidth</key> + <integer>200</integer> + <key>TopSlabHeight</key> + <real>250</real> + <key>VisibleRegion</key> + <string>{{-420, -21}, {1399, 826}}</string> + <key>Zoom</key> + <real>1</real> + <key>ZoomValues</key> + <array> + <array> + <string>Canvas 1</string> + <real>1</real> + <real>1</real> + </array> + </array> + </dict> +</dict> +</plist> diff -r 000000000000 -r 38b037c42c34 paper/pic/cbc_goto.pdf Binary file paper/pic/cbc_goto.pdf has changed diff -r 000000000000 -r 38b037c42c34 paper/pic/codeGear_dataGear.graffle Binary file paper/pic/codeGear_dataGear.graffle has changed diff -r 000000000000 -r 38b037c42c34 paper/pic/codeGear_dataGear.pdf Binary file paper/pic/codeGear_dataGear.pdf has changed diff -r 000000000000 -r 38b037c42c34 paper/pic/codeGear_dataGear.svg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/paper/pic/codeGear_dataGear.svg Mon Apr 17 20:05:26 2017 +0900 @@ -0,0 +1,201 @@ +<?xml version="1.0" encoding="UTF-8"?> +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="535pt" height="427pt" viewBox="0 0 535 427" version="1.1"> +<defs> +<g> +<symbol overflow="visible" id="glyph0-0"> +<path style="stroke:none;" d="M 0.390625 0 L 0.390625 -8.609375 L 7.21875 -8.609375 L 7.21875 0 Z M 6.140625 -1.078125 L 6.140625 -7.53125 L 1.46875 -7.53125 L 1.46875 -1.078125 Z M 6.140625 -1.078125 "/> +</symbol> +<symbol overflow="visible" id="glyph0-1"> +<path style="stroke:none;" d="M 4.546875 -8.84375 C 5.628906 -8.84375 6.472656 -8.554688 7.078125 -7.984375 C 7.679688 -7.410156 8.015625 -6.757812 8.078125 -6.03125 L 6.9375 -6.03125 C 6.8125 -6.582031 6.554688 -7.019531 6.171875 -7.34375 C 5.785156 -7.664062 5.242188 -7.828125 4.546875 -7.828125 C 3.703125 -7.828125 3.019531 -7.53125 2.5 -6.9375 C 1.976562 -6.34375 1.71875 -5.429688 1.71875 -4.203125 C 1.71875 -3.191406 1.953125 -2.367188 2.421875 -1.734375 C 2.890625 -1.109375 3.59375 -0.796875 4.53125 -0.796875 C 5.382812 -0.796875 6.039062 -1.128906 6.5 -1.796875 C 6.726562 -2.140625 6.90625 -2.597656 7.03125 -3.171875 L 8.15625 -3.171875 C 8.0625 -2.265625 7.726562 -1.503906 7.15625 -0.890625 C 6.46875 -0.148438 5.546875 0.21875 4.390625 0.21875 C 3.390625 0.21875 2.550781 -0.0820312 1.875 -0.6875 C 0.976562 -1.488281 0.53125 -2.722656 0.53125 -4.390625 C 0.53125 -5.660156 0.863281 -6.703125 1.53125 -7.515625 C 2.257812 -8.398438 3.265625 -8.84375 4.546875 -8.84375 Z M 4.3125 -8.84375 Z M 4.3125 -8.84375 "/> +</symbol> +<symbol overflow="visible" id="glyph0-2"> +<path style="stroke:none;" d="M 3.265625 -0.6875 C 3.960938 -0.6875 4.441406 -0.945312 4.703125 -1.46875 C 4.960938 -2 5.09375 -2.585938 5.09375 -3.234375 C 5.09375 -3.828125 5 -4.304688 4.8125 -4.671875 C 4.507812 -5.242188 4 -5.53125 3.28125 -5.53125 C 2.632812 -5.53125 2.164062 -5.285156 1.875 -4.796875 C 1.582031 -4.304688 1.4375 -3.710938 1.4375 -3.015625 C 1.4375 -2.347656 1.582031 -1.789062 1.875 -1.34375 C 2.164062 -0.90625 2.628906 -0.6875 3.265625 -0.6875 Z M 3.3125 -6.453125 C 4.113281 -6.453125 4.789062 -6.179688 5.34375 -5.640625 C 5.90625 -5.109375 6.1875 -4.316406 6.1875 -3.265625 C 6.1875 -2.253906 5.941406 -1.414062 5.453125 -0.75 C 4.960938 -0.09375 4.203125 0.234375 3.171875 0.234375 C 2.304688 0.234375 1.617188 -0.0546875 1.109375 -0.640625 C 0.597656 -1.234375 0.34375 -2.019531 0.34375 -3 C 0.34375 -4.050781 0.609375 -4.890625 1.140625 -5.515625 C 1.679688 -6.140625 2.40625 -6.453125 3.3125 -6.453125 Z M 3.265625 -6.421875 Z M 3.265625 -6.421875 "/> +</symbol> +<symbol overflow="visible" id="glyph0-3"> +<path style="stroke:none;" d="M 1.4375 -3.0625 C 1.4375 -2.394531 1.578125 -1.832031 1.859375 -1.375 C 2.148438 -0.925781 2.609375 -0.703125 3.234375 -0.703125 C 3.722656 -0.703125 4.125 -0.910156 4.4375 -1.328125 C 4.757812 -1.742188 4.921875 -2.347656 4.921875 -3.140625 C 4.921875 -3.929688 4.753906 -4.515625 4.421875 -4.890625 C 4.097656 -5.273438 3.703125 -5.46875 3.234375 -5.46875 C 2.703125 -5.46875 2.269531 -5.265625 1.9375 -4.859375 C 1.601562 -4.453125 1.4375 -3.851562 1.4375 -3.0625 Z M 3.03125 -6.390625 C 3.507812 -6.390625 3.910156 -6.285156 4.234375 -6.078125 C 4.421875 -5.960938 4.632812 -5.757812 4.875 -5.46875 L 4.875 -8.640625 L 5.890625 -8.640625 L 5.890625 0 L 4.9375 0 L 4.9375 -0.875 C 4.695312 -0.488281 4.40625 -0.207031 4.0625 -0.03125 C 3.726562 0.132812 3.34375 0.21875 2.90625 0.21875 C 2.207031 0.21875 1.601562 -0.0703125 1.09375 -0.65625 C 0.582031 -1.25 0.328125 -2.03125 0.328125 -3 C 0.328125 -3.914062 0.5625 -4.707031 1.03125 -5.375 C 1.5 -6.050781 2.164062 -6.390625 3.03125 -6.390625 Z M 3.03125 -6.390625 "/> +</symbol> +<symbol overflow="visible" id="glyph0-4"> +<path style="stroke:none;" d="M 3.390625 -6.421875 C 3.835938 -6.421875 4.269531 -6.316406 4.6875 -6.109375 C 5.101562 -5.898438 5.421875 -5.628906 5.640625 -5.296875 C 5.847656 -4.972656 5.988281 -4.601562 6.0625 -4.1875 C 6.125 -3.894531 6.15625 -3.429688 6.15625 -2.796875 L 1.546875 -2.796875 C 1.566406 -2.160156 1.71875 -1.648438 2 -1.265625 C 2.28125 -0.878906 2.71875 -0.6875 3.3125 -0.6875 C 3.863281 -0.6875 4.300781 -0.867188 4.625 -1.234375 C 4.8125 -1.441406 4.945312 -1.6875 5.03125 -1.96875 L 6.0625 -1.96875 C 6.039062 -1.738281 5.953125 -1.484375 5.796875 -1.203125 C 5.640625 -0.921875 5.46875 -0.6875 5.28125 -0.5 C 4.957031 -0.1875 4.554688 0.0195312 4.078125 0.125 C 3.828125 0.1875 3.539062 0.21875 3.21875 0.21875 C 2.4375 0.21875 1.773438 -0.0625 1.234375 -0.625 C 0.691406 -1.195312 0.421875 -1.992188 0.421875 -3.015625 C 0.421875 -4.023438 0.691406 -4.84375 1.234375 -5.46875 C 1.785156 -6.101562 2.503906 -6.421875 3.390625 -6.421875 Z M 5.0625 -3.640625 C 5.019531 -4.097656 4.921875 -4.460938 4.765625 -4.734375 C 4.484375 -5.242188 4.003906 -5.5 3.328125 -5.5 C 2.835938 -5.5 2.425781 -5.320312 2.09375 -4.96875 C 1.769531 -4.625 1.597656 -4.179688 1.578125 -3.640625 Z M 3.28125 -6.421875 Z M 3.28125 -6.421875 "/> +</symbol> +<symbol overflow="visible" id="glyph0-5"> +<path style="stroke:none;" d=""/> +</symbol> +<symbol overflow="visible" id="glyph0-6"> +<path style="stroke:none;" d="M 4.640625 -8.828125 C 5.441406 -8.828125 6.140625 -8.671875 6.734375 -8.359375 C 7.585938 -7.910156 8.109375 -7.125 8.296875 -6 L 7.15625 -6 C 7.007812 -6.625 6.710938 -7.082031 6.265625 -7.375 C 5.828125 -7.664062 5.273438 -7.8125 4.609375 -7.8125 C 3.804688 -7.8125 3.132812 -7.507812 2.59375 -6.90625 C 2.050781 -6.3125 1.78125 -5.421875 1.78125 -4.234375 C 1.78125 -3.210938 2.003906 -2.378906 2.453125 -1.734375 C 2.898438 -1.097656 3.628906 -0.78125 4.640625 -0.78125 C 5.421875 -0.78125 6.066406 -1.003906 6.578125 -1.453125 C 7.085938 -1.898438 7.347656 -2.628906 7.359375 -3.640625 L 4.671875 -3.640625 L 4.671875 -4.609375 L 8.4375 -4.609375 L 8.4375 0 L 7.6875 0 L 7.40625 -1.109375 C 7.019531 -0.671875 6.671875 -0.367188 6.359375 -0.203125 C 5.847656 0.0859375 5.195312 0.234375 4.40625 0.234375 C 3.394531 0.234375 2.519531 -0.0976562 1.78125 -0.765625 C 0.976562 -1.585938 0.578125 -2.722656 0.578125 -4.171875 C 0.578125 -5.609375 0.96875 -6.753906 1.75 -7.609375 C 2.488281 -8.421875 3.453125 -8.828125 4.640625 -8.828125 Z M 4.4375 -8.84375 Z M 4.4375 -8.84375 "/> +</symbol> +<symbol overflow="visible" id="glyph0-7"> +<path style="stroke:none;" d="M 1.578125 -1.671875 C 1.578125 -1.367188 1.6875 -1.128906 1.90625 -0.953125 C 2.132812 -0.773438 2.398438 -0.6875 2.703125 -0.6875 C 3.078125 -0.6875 3.4375 -0.769531 3.78125 -0.9375 C 4.375 -1.226562 4.671875 -1.695312 4.671875 -2.34375 L 4.671875 -3.1875 C 4.535156 -3.113281 4.363281 -3.046875 4.15625 -2.984375 C 3.957031 -2.929688 3.757812 -2.894531 3.5625 -2.875 L 2.9375 -2.796875 C 2.550781 -2.742188 2.257812 -2.660156 2.0625 -2.546875 C 1.738281 -2.367188 1.578125 -2.078125 1.578125 -1.671875 Z M 4.140625 -3.796875 C 4.378906 -3.828125 4.539062 -3.929688 4.625 -4.109375 C 4.664062 -4.203125 4.6875 -4.335938 4.6875 -4.515625 C 4.6875 -4.867188 4.554688 -5.125 4.296875 -5.28125 C 4.046875 -5.445312 3.6875 -5.53125 3.21875 -5.53125 C 2.664062 -5.53125 2.273438 -5.382812 2.046875 -5.09375 C 1.910156 -4.925781 1.820312 -4.679688 1.78125 -4.359375 L 0.796875 -4.359375 C 0.816406 -5.128906 1.066406 -5.664062 1.546875 -5.96875 C 2.035156 -6.269531 2.597656 -6.421875 3.234375 -6.421875 C 3.972656 -6.421875 4.570312 -6.28125 5.03125 -6 C 5.488281 -5.71875 5.71875 -5.28125 5.71875 -4.6875 L 5.71875 -1.078125 C 5.71875 -0.972656 5.738281 -0.882812 5.78125 -0.8125 C 5.832031 -0.75 5.929688 -0.71875 6.078125 -0.71875 C 6.117188 -0.71875 6.164062 -0.71875 6.21875 -0.71875 C 6.28125 -0.726562 6.347656 -0.738281 6.421875 -0.75 L 6.421875 0.03125 C 6.253906 0.0703125 6.125 0.0976562 6.03125 0.109375 C 5.945312 0.128906 5.832031 0.140625 5.6875 0.140625 C 5.320312 0.140625 5.0625 0.0078125 4.90625 -0.25 C 4.8125 -0.382812 4.75 -0.578125 4.71875 -0.828125 C 4.5 -0.546875 4.1875 -0.300781 3.78125 -0.09375 C 3.382812 0.113281 2.945312 0.21875 2.46875 0.21875 C 1.882812 0.21875 1.40625 0.0390625 1.03125 -0.3125 C 0.664062 -0.664062 0.484375 -1.109375 0.484375 -1.640625 C 0.484375 -2.222656 0.664062 -2.675781 1.03125 -3 C 1.394531 -3.320312 1.867188 -3.519531 2.453125 -3.59375 Z M 3.265625 -6.421875 Z M 3.265625 -6.421875 "/> +</symbol> +<symbol overflow="visible" id="glyph0-8"> +<path style="stroke:none;" d="M 0.796875 -6.28125 L 1.8125 -6.28125 L 1.8125 -5.1875 C 1.882812 -5.40625 2.082031 -5.664062 2.40625 -5.96875 C 2.726562 -6.269531 3.097656 -6.421875 3.515625 -6.421875 C 3.535156 -6.421875 3.566406 -6.414062 3.609375 -6.40625 C 3.660156 -6.40625 3.742188 -6.398438 3.859375 -6.390625 L 3.859375 -5.28125 C 3.796875 -5.289062 3.738281 -5.296875 3.6875 -5.296875 C 3.632812 -5.296875 3.578125 -5.296875 3.515625 -5.296875 C 2.984375 -5.296875 2.570312 -5.125 2.28125 -4.78125 C 2 -4.445312 1.859375 -4.054688 1.859375 -3.609375 L 1.859375 0 L 0.796875 0 Z M 0.796875 -6.28125 "/> +</symbol> +<symbol overflow="visible" id="glyph0-9"> +<path style="stroke:none;" d="M 4.21875 -1 C 4.613281 -1 4.9375 -1.039062 5.1875 -1.125 C 5.644531 -1.269531 6.019531 -1.5625 6.3125 -2 C 6.539062 -2.34375 6.703125 -2.785156 6.796875 -3.328125 C 6.859375 -3.660156 6.890625 -3.960938 6.890625 -4.234375 C 6.890625 -5.304688 6.675781 -6.132812 6.25 -6.71875 C 5.832031 -7.3125 5.148438 -7.609375 4.203125 -7.609375 L 2.140625 -7.609375 L 2.140625 -1 Z M 0.96875 -8.609375 L 4.453125 -8.609375 C 5.640625 -8.609375 6.554688 -8.1875 7.203125 -7.34375 C 7.785156 -6.59375 8.078125 -5.625 8.078125 -4.4375 C 8.078125 -3.519531 7.90625 -2.691406 7.5625 -1.953125 C 6.957031 -0.648438 5.914062 0 4.4375 0 L 0.96875 0 Z M 0.96875 -8.609375 "/> +</symbol> +<symbol overflow="visible" id="glyph0-10"> +<path style="stroke:none;" d="M 0.984375 -8.03125 L 2.046875 -8.03125 L 2.046875 -6.28125 L 3.046875 -6.28125 L 3.046875 -5.421875 L 2.046875 -5.421875 L 2.046875 -1.3125 C 2.046875 -1.09375 2.125 -0.945312 2.28125 -0.875 C 2.351562 -0.832031 2.488281 -0.8125 2.6875 -0.8125 C 2.738281 -0.8125 2.789062 -0.8125 2.84375 -0.8125 C 2.90625 -0.820312 2.972656 -0.828125 3.046875 -0.828125 L 3.046875 0 C 2.929688 0.03125 2.804688 0.0507812 2.671875 0.0625 C 2.546875 0.0820312 2.40625 0.09375 2.25 0.09375 C 1.757812 0.09375 1.425781 -0.03125 1.25 -0.28125 C 1.070312 -0.53125 0.984375 -0.859375 0.984375 -1.265625 L 0.984375 -5.421875 L 0.140625 -5.421875 L 0.140625 -6.28125 L 0.984375 -6.28125 Z M 0.984375 -8.03125 "/> +</symbol> +<symbol overflow="visible" id="glyph1-0"> +<path style="stroke:none;" d="M 6.546875 -10.65625 L 1.625 -10.65625 L 1.625 -0.75 L 6.546875 -0.75 Z M 7.359375 -11.390625 L 7.359375 -0.015625 L 0.8125 -0.015625 L 0.8125 -11.390625 Z M 7.359375 -11.390625 "/> +</symbol> +<symbol overflow="visible" id="glyph1-1"> +<path style="stroke:none;" d="M 1.3125 -11.421875 L 1.3125 0 L 2.828125 0 L 2.828125 -11.421875 Z M 1.3125 -11.421875 "/> +</symbol> +<symbol overflow="visible" id="glyph1-2"> +<path style="stroke:none;" d="M 1.03125 -8.265625 L 1.03125 0 L 2.390625 0 L 2.390625 -4.671875 C 2.390625 -5.046875 2.4375 -5.390625 2.53125 -5.703125 C 2.632812 -6.015625 2.785156 -6.285156 2.984375 -6.515625 C 3.191406 -6.753906 3.445312 -6.9375 3.75 -7.0625 C 4.050781 -7.195312 4.410156 -7.265625 4.828125 -7.265625 C 5.347656 -7.265625 5.757812 -7.113281 6.0625 -6.8125 C 6.363281 -6.519531 6.515625 -6.113281 6.515625 -5.59375 L 6.515625 0 L 7.875 0 L 7.875 -5.4375 C 7.875 -5.882812 7.828125 -6.289062 7.734375 -6.65625 C 7.640625 -7.03125 7.476562 -7.347656 7.25 -7.609375 C 7.03125 -7.878906 6.738281 -8.085938 6.375 -8.234375 C 6.019531 -8.390625 5.570312 -8.46875 5.03125 -8.46875 C 3.800781 -8.46875 2.90625 -7.960938 2.34375 -6.953125 L 2.296875 -6.953125 L 2.296875 -8.265625 Z M 1.03125 -8.265625 "/> +</symbol> +<symbol overflow="visible" id="glyph1-3"> +<path style="stroke:none;" d="M 1.078125 -8.265625 L 1.078125 3.15625 L 2.4375 3.15625 L 2.4375 -1.109375 L 2.46875 -1.109375 C 2.613281 -0.859375 2.796875 -0.648438 3.015625 -0.484375 C 3.234375 -0.316406 3.460938 -0.1875 3.703125 -0.09375 C 3.953125 0 4.203125 0.0664062 4.453125 0.109375 C 4.703125 0.148438 4.929688 0.171875 5.140625 0.171875 C 5.765625 0.171875 6.3125 0.0625 6.78125 -0.15625 C 7.257812 -0.382812 7.65625 -0.691406 7.96875 -1.078125 C 8.289062 -1.460938 8.523438 -1.914062 8.671875 -2.4375 C 8.828125 -2.96875 8.90625 -3.523438 8.90625 -4.109375 C 8.90625 -4.691406 8.828125 -5.242188 8.671875 -5.765625 C 8.515625 -6.296875 8.273438 -6.757812 7.953125 -7.15625 C 7.640625 -7.5625 7.242188 -7.878906 6.765625 -8.109375 C 6.296875 -8.347656 5.742188 -8.46875 5.109375 -8.46875 C 4.523438 -8.46875 3.992188 -8.363281 3.515625 -8.15625 C 3.035156 -7.945312 2.6875 -7.613281 2.46875 -7.15625 L 2.4375 -7.15625 L 2.4375 -8.265625 Z M 7.46875 -4.203125 C 7.46875 -3.796875 7.425781 -3.398438 7.34375 -3.015625 C 7.257812 -2.640625 7.117188 -2.300781 6.921875 -2 C 6.734375 -1.695312 6.484375 -1.457031 6.171875 -1.28125 C 5.859375 -1.101562 5.460938 -1.015625 4.984375 -1.015625 C 4.515625 -1.015625 4.113281 -1.097656 3.78125 -1.265625 C 3.457031 -1.441406 3.191406 -1.675781 2.984375 -1.96875 C 2.773438 -2.257812 2.625 -2.59375 2.53125 -2.96875 C 2.4375 -3.34375 2.390625 -3.734375 2.390625 -4.140625 C 2.390625 -4.523438 2.429688 -4.90625 2.515625 -5.28125 C 2.609375 -5.65625 2.753906 -5.988281 2.953125 -6.28125 C 3.160156 -6.570312 3.421875 -6.804688 3.734375 -6.984375 C 4.054688 -7.171875 4.445312 -7.265625 4.90625 -7.265625 C 5.34375 -7.265625 5.722656 -7.175781 6.046875 -7 C 6.378906 -6.832031 6.648438 -6.601562 6.859375 -6.3125 C 7.066406 -6.03125 7.21875 -5.703125 7.3125 -5.328125 C 7.414062 -4.960938 7.46875 -4.585938 7.46875 -4.203125 Z M 7.46875 -4.203125 "/> +</symbol> +<symbol overflow="visible" id="glyph1-4"> +<path style="stroke:none;" d="M 7.875 0 L 7.875 -8.265625 L 6.515625 -8.265625 L 6.515625 -3.59375 C 6.515625 -3.226562 6.460938 -2.882812 6.359375 -2.5625 C 6.253906 -2.25 6.097656 -1.972656 5.890625 -1.734375 C 5.691406 -1.503906 5.441406 -1.328125 5.140625 -1.203125 C 4.835938 -1.078125 4.476562 -1.015625 4.0625 -1.015625 C 3.539062 -1.015625 3.128906 -1.160156 2.828125 -1.453125 C 2.535156 -1.753906 2.390625 -2.160156 2.390625 -2.671875 L 2.390625 -8.265625 L 1.03125 -8.265625 L 1.03125 -2.828125 C 1.03125 -2.378906 1.070312 -1.972656 1.15625 -1.609375 C 1.25 -1.242188 1.40625 -0.925781 1.625 -0.65625 C 1.851562 -0.382812 2.148438 -0.175781 2.515625 -0.03125 C 2.878906 0.101562 3.332031 0.171875 3.875 0.171875 C 4.476562 0.171875 5.003906 0.0507812 5.453125 -0.1875 C 5.898438 -0.425781 6.269531 -0.800781 6.5625 -1.3125 L 6.59375 -1.3125 L 6.59375 0 Z M 7.875 0 "/> +</symbol> +<symbol overflow="visible" id="glyph1-5"> +<path style="stroke:none;" d="M 2.90625 -8.265625 L 2.90625 -10.75 L 1.546875 -10.75 L 1.546875 -8.265625 L 0.140625 -8.265625 L 0.140625 -7.078125 L 1.546875 -7.078125 L 1.546875 -1.8125 C 1.546875 -1.425781 1.582031 -1.113281 1.65625 -0.875 C 1.738281 -0.644531 1.851562 -0.460938 2 -0.328125 C 2.15625 -0.203125 2.359375 -0.113281 2.609375 -0.0625 C 2.859375 -0.0195312 3.160156 0 3.515625 0 L 4.5625 0 L 4.5625 -1.203125 L 3.9375 -1.203125 C 3.71875 -1.203125 3.539062 -1.207031 3.40625 -1.21875 C 3.28125 -1.238281 3.175781 -1.273438 3.09375 -1.328125 C 3.019531 -1.378906 2.96875 -1.453125 2.9375 -1.546875 C 2.914062 -1.648438 2.90625 -1.78125 2.90625 -1.9375 L 2.90625 -7.078125 L 4.5625 -7.078125 L 4.5625 -8.265625 Z M 2.90625 -8.265625 "/> +</symbol> +<symbol overflow="visible" id="glyph1-6"> +<path style="stroke:none;" d=""/> +</symbol> +<symbol overflow="visible" id="glyph1-7"> +<path style="stroke:none;" d="M 2.765625 -1.28125 L 2.765625 -10.140625 L 5.328125 -10.140625 C 6.035156 -10.140625 6.628906 -10.039062 7.109375 -9.84375 C 7.585938 -9.644531 7.976562 -9.359375 8.28125 -8.984375 C 8.582031 -8.609375 8.800781 -8.148438 8.9375 -7.609375 C 9.070312 -7.066406 9.140625 -6.457031 9.140625 -5.78125 C 9.140625 -5.070312 9.066406 -4.46875 8.921875 -3.96875 C 8.773438 -3.476562 8.585938 -3.066406 8.359375 -2.734375 C 8.140625 -2.398438 7.890625 -2.132812 7.609375 -1.9375 C 7.328125 -1.75 7.039062 -1.601562 6.75 -1.5 C 6.457031 -1.40625 6.179688 -1.34375 5.921875 -1.3125 C 5.671875 -1.289062 5.460938 -1.28125 5.296875 -1.28125 Z M 1.25 -11.421875 L 1.25 0 L 5.171875 0 C 6.117188 0 6.9375 -0.128906 7.625 -0.390625 C 8.320312 -0.660156 8.894531 -1.046875 9.34375 -1.546875 C 9.789062 -2.054688 10.117188 -2.679688 10.328125 -3.421875 C 10.546875 -4.171875 10.65625 -5.023438 10.65625 -5.984375 C 10.65625 -7.816406 10.179688 -9.179688 9.234375 -10.078125 C 8.285156 -10.972656 6.929688 -11.421875 5.171875 -11.421875 Z M 1.25 -11.421875 "/> +</symbol> +<symbol overflow="visible" id="glyph1-8"> +<path style="stroke:none;" d="M 8.359375 -0.03125 C 8.117188 0.101562 7.789062 0.171875 7.375 0.171875 C 7.019531 0.171875 6.738281 0.0703125 6.53125 -0.125 C 6.320312 -0.320312 6.21875 -0.644531 6.21875 -1.09375 C 5.84375 -0.644531 5.40625 -0.320312 4.90625 -0.125 C 4.414062 0.0703125 3.882812 0.171875 3.3125 0.171875 C 2.9375 0.171875 2.582031 0.128906 2.25 0.046875 C 1.914062 -0.0351562 1.625 -0.164062 1.375 -0.34375 C 1.132812 -0.53125 0.941406 -0.769531 0.796875 -1.0625 C 0.648438 -1.351562 0.578125 -1.707031 0.578125 -2.125 C 0.578125 -2.59375 0.65625 -2.976562 0.8125 -3.28125 C 0.976562 -3.582031 1.191406 -3.820312 1.453125 -4 C 1.710938 -4.1875 2.007812 -4.328125 2.34375 -4.421875 C 2.675781 -4.523438 3.019531 -4.609375 3.375 -4.671875 C 3.75 -4.742188 4.101562 -4.796875 4.4375 -4.828125 C 4.769531 -4.867188 5.066406 -4.925781 5.328125 -5 C 5.585938 -5.070312 5.789062 -5.171875 5.9375 -5.296875 C 6.082031 -5.429688 6.15625 -5.628906 6.15625 -5.890625 C 6.15625 -6.191406 6.097656 -6.429688 5.984375 -6.609375 C 5.878906 -6.785156 5.738281 -6.921875 5.5625 -7.015625 C 5.382812 -7.117188 5.1875 -7.1875 4.96875 -7.21875 C 4.75 -7.25 4.53125 -7.265625 4.3125 -7.265625 C 3.738281 -7.265625 3.257812 -7.15625 2.875 -6.9375 C 2.488281 -6.71875 2.28125 -6.304688 2.25 -5.703125 L 0.890625 -5.703125 C 0.910156 -6.210938 1.015625 -6.640625 1.203125 -6.984375 C 1.398438 -7.335938 1.660156 -7.625 1.984375 -7.84375 C 2.304688 -8.0625 2.671875 -8.21875 3.078125 -8.3125 C 3.492188 -8.414062 3.9375 -8.46875 4.40625 -8.46875 C 4.769531 -8.46875 5.132812 -8.4375 5.5 -8.375 C 5.875 -8.320312 6.207031 -8.210938 6.5 -8.046875 C 6.800781 -7.890625 7.039062 -7.660156 7.21875 -7.359375 C 7.40625 -7.054688 7.5 -6.664062 7.5 -6.1875 L 7.5 -1.9375 C 7.5 -1.613281 7.515625 -1.378906 7.546875 -1.234375 C 7.585938 -1.085938 7.71875 -1.015625 7.9375 -1.015625 C 8.050781 -1.015625 8.191406 -1.039062 8.359375 -1.09375 Z M 6.140625 -4.265625 C 5.972656 -4.140625 5.75 -4.046875 5.46875 -3.984375 C 5.195312 -3.929688 4.90625 -3.882812 4.59375 -3.84375 C 4.289062 -3.8125 3.984375 -3.769531 3.671875 -3.71875 C 3.367188 -3.664062 3.09375 -3.585938 2.84375 -3.484375 C 2.601562 -3.378906 2.40625 -3.226562 2.25 -3.03125 C 2.09375 -2.832031 2.015625 -2.5625 2.015625 -2.21875 C 2.015625 -2 2.054688 -1.8125 2.140625 -1.65625 C 2.234375 -1.5 2.351562 -1.375 2.5 -1.28125 C 2.644531 -1.1875 2.8125 -1.117188 3 -1.078125 C 3.195312 -1.035156 3.398438 -1.015625 3.609375 -1.015625 C 4.054688 -1.015625 4.441406 -1.070312 4.765625 -1.1875 C 5.085938 -1.3125 5.347656 -1.46875 5.546875 -1.65625 C 5.753906 -1.84375 5.90625 -2.046875 6 -2.265625 C 6.09375 -2.484375 6.140625 -2.6875 6.140625 -2.875 Z M 6.140625 -4.265625 "/> +</symbol> +<symbol overflow="visible" id="glyph1-9"> +<path style="stroke:none;" d="M 9.796875 -1.421875 L 10.1875 0 L 11.15625 0 L 11.15625 -6.015625 L 6.140625 -6.015625 L 6.140625 -4.734375 L 9.796875 -4.734375 C 9.816406 -4.210938 9.742188 -3.722656 9.578125 -3.265625 C 9.421875 -2.816406 9.1875 -2.421875 8.875 -2.078125 C 8.5625 -1.742188 8.175781 -1.484375 7.71875 -1.296875 C 7.257812 -1.109375 6.726562 -1.015625 6.125 -1.015625 C 5.488281 -1.015625 4.925781 -1.140625 4.4375 -1.390625 C 3.957031 -1.640625 3.550781 -1.972656 3.21875 -2.390625 C 2.882812 -2.816406 2.628906 -3.300781 2.453125 -3.84375 C 2.285156 -4.394531 2.203125 -4.96875 2.203125 -5.5625 C 2.203125 -6.175781 2.273438 -6.769531 2.421875 -7.34375 C 2.578125 -7.925781 2.8125 -8.441406 3.125 -8.890625 C 3.4375 -9.347656 3.84375 -9.71875 4.34375 -10 C 4.84375 -10.28125 5.4375 -10.421875 6.125 -10.421875 C 6.550781 -10.421875 6.953125 -10.367188 7.328125 -10.265625 C 7.710938 -10.160156 8.050781 -10.003906 8.34375 -9.796875 C 8.644531 -9.597656 8.894531 -9.34375 9.09375 -9.03125 C 9.300781 -8.71875 9.441406 -8.34375 9.515625 -7.90625 L 11.046875 -7.90625 C 10.929688 -8.570312 10.726562 -9.144531 10.4375 -9.625 C 10.144531 -10.101562 9.78125 -10.492188 9.34375 -10.796875 C 8.914062 -11.109375 8.425781 -11.335938 7.875 -11.484375 C 7.332031 -11.628906 6.75 -11.703125 6.125 -11.703125 C 5.21875 -11.703125 4.425781 -11.53125 3.75 -11.1875 C 3.070312 -10.851562 2.503906 -10.398438 2.046875 -9.828125 C 1.597656 -9.265625 1.257812 -8.609375 1.03125 -7.859375 C 0.800781 -7.109375 0.6875 -6.316406 0.6875 -5.484375 C 0.6875 -4.742188 0.804688 -4.023438 1.046875 -3.328125 C 1.296875 -2.628906 1.65625 -2.015625 2.125 -1.484375 C 2.59375 -0.953125 3.160156 -0.53125 3.828125 -0.21875 C 4.503906 0.09375 5.269531 0.25 6.125 0.25 C 6.800781 0.25 7.46875 0.117188 8.125 -0.140625 C 8.789062 -0.398438 9.347656 -0.828125 9.796875 -1.421875 Z M 9.796875 -1.421875 "/> +</symbol> +<symbol overflow="visible" id="glyph1-10"> +<path style="stroke:none;" d="M 6.765625 -4.921875 L 2.015625 -4.921875 C 2.035156 -5.242188 2.101562 -5.546875 2.21875 -5.828125 C 2.34375 -6.109375 2.503906 -6.351562 2.703125 -6.5625 C 2.910156 -6.78125 3.15625 -6.953125 3.4375 -7.078125 C 3.71875 -7.203125 4.035156 -7.265625 4.390625 -7.265625 C 4.722656 -7.265625 5.03125 -7.203125 5.3125 -7.078125 C 5.601562 -6.953125 5.851562 -6.785156 6.0625 -6.578125 C 6.269531 -6.367188 6.429688 -6.117188 6.546875 -5.828125 C 6.671875 -5.546875 6.742188 -5.242188 6.765625 -4.921875 Z M 8.078125 -2.625 L 6.734375 -2.625 C 6.617188 -2.082031 6.375 -1.675781 6 -1.40625 C 5.632812 -1.144531 5.164062 -1.015625 4.59375 -1.015625 C 4.144531 -1.015625 3.753906 -1.085938 3.421875 -1.234375 C 3.085938 -1.378906 2.8125 -1.578125 2.59375 -1.828125 C 2.382812 -2.078125 2.234375 -2.363281 2.140625 -2.6875 C 2.046875 -3.019531 2.003906 -3.367188 2.015625 -3.734375 L 8.203125 -3.734375 C 8.222656 -4.234375 8.175781 -4.757812 8.0625 -5.3125 C 7.957031 -5.863281 7.757812 -6.375 7.46875 -6.84375 C 7.175781 -7.3125 6.785156 -7.695312 6.296875 -8 C 5.804688 -8.3125 5.195312 -8.46875 4.46875 -8.46875 C 3.894531 -8.46875 3.367188 -8.359375 2.890625 -8.140625 C 2.421875 -7.929688 2.015625 -7.632812 1.671875 -7.25 C 1.328125 -6.863281 1.054688 -6.410156 0.859375 -5.890625 C 0.671875 -5.367188 0.578125 -4.789062 0.578125 -4.15625 C 0.597656 -3.53125 0.691406 -2.945312 0.859375 -2.40625 C 1.023438 -1.875 1.269531 -1.414062 1.59375 -1.03125 C 1.925781 -0.65625 2.332031 -0.359375 2.8125 -0.140625 C 3.300781 0.0664062 3.878906 0.171875 4.546875 0.171875 C 5.484375 0.171875 6.257812 -0.0625 6.875 -0.53125 C 7.5 -1 7.898438 -1.695312 8.078125 -2.625 Z M 8.078125 -2.625 "/> +</symbol> +<symbol overflow="visible" id="glyph1-11"> +<path style="stroke:none;" d="M 0.96875 -8.265625 L 0.96875 0 L 2.34375 0 L 2.34375 -3.6875 C 2.34375 -4.21875 2.394531 -4.6875 2.5 -5.09375 C 2.601562 -5.507812 2.769531 -5.859375 3 -6.140625 C 3.238281 -6.429688 3.550781 -6.648438 3.9375 -6.796875 C 4.320312 -6.953125 4.785156 -7.03125 5.328125 -7.03125 L 5.328125 -8.46875 C 4.585938 -8.488281 3.976562 -8.335938 3.5 -8.015625 C 3.019531 -7.691406 2.613281 -7.195312 2.28125 -6.53125 L 2.25 -6.53125 L 2.25 -8.265625 Z M 0.96875 -8.265625 "/> +</symbol> +<symbol overflow="visible" id="glyph1-12"> +<path style="stroke:none;" d="M 2.125 -5.71875 C 2.125 -6.289062 2.195312 -6.851562 2.34375 -7.40625 C 2.5 -7.96875 2.734375 -8.472656 3.046875 -8.921875 C 3.367188 -9.367188 3.78125 -9.726562 4.28125 -10 C 4.789062 -10.28125 5.390625 -10.421875 6.078125 -10.421875 C 6.773438 -10.421875 7.375 -10.28125 7.875 -10 C 8.375 -9.726562 8.78125 -9.367188 9.09375 -8.921875 C 9.414062 -8.472656 9.648438 -7.96875 9.796875 -7.40625 C 9.953125 -6.851562 10.03125 -6.289062 10.03125 -5.71875 C 10.03125 -5.132812 9.953125 -4.5625 9.796875 -4 C 9.648438 -3.445312 9.414062 -2.945312 9.09375 -2.5 C 8.78125 -2.050781 8.375 -1.691406 7.875 -1.421875 C 7.375 -1.148438 6.773438 -1.015625 6.078125 -1.015625 C 5.390625 -1.015625 4.789062 -1.148438 4.28125 -1.421875 C 3.78125 -1.691406 3.367188 -2.050781 3.046875 -2.5 C 2.734375 -2.945312 2.5 -3.445312 2.34375 -4 C 2.195312 -4.5625 2.125 -5.132812 2.125 -5.71875 Z M 0.609375 -5.71875 C 0.609375 -4.9375 0.722656 -4.1875 0.953125 -3.46875 C 1.179688 -2.75 1.523438 -2.109375 1.984375 -1.546875 C 2.441406 -0.992188 3.007812 -0.554688 3.6875 -0.234375 C 4.375 0.0859375 5.171875 0.25 6.078125 0.25 C 6.984375 0.25 7.773438 0.0859375 8.453125 -0.234375 C 9.140625 -0.554688 9.710938 -0.992188 10.171875 -1.546875 C 10.628906 -2.109375 10.972656 -2.75 11.203125 -3.46875 C 11.429688 -4.1875 11.546875 -4.9375 11.546875 -5.71875 C 11.546875 -6.488281 11.429688 -7.234375 11.203125 -7.953125 C 10.972656 -8.679688 10.628906 -9.320312 10.171875 -9.875 C 9.710938 -10.425781 9.140625 -10.867188 8.453125 -11.203125 C 7.773438 -11.535156 6.984375 -11.703125 6.078125 -11.703125 C 5.171875 -11.703125 4.375 -11.535156 3.6875 -11.203125 C 3.007812 -10.867188 2.441406 -10.425781 1.984375 -9.875 C 1.523438 -9.320312 1.179688 -8.679688 0.953125 -7.953125 C 0.722656 -7.234375 0.609375 -6.488281 0.609375 -5.71875 Z M 0.609375 -5.71875 "/> +</symbol> +</g> +</defs> +<g id="surface1"> +<rect x="0" y="0" width="535" height="427" style="fill:rgb(100%,100%,100%);fill-opacity:1;stroke:none;"/> +<path style="fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 486 333 L 585 333 L 585 387 L 486 387 Z M 486 333 " transform="matrix(1,0,0,1,-268,-133)"/> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-1" x="238.15039" y="231"/> + <use xlink:href="#glyph0-2" x="246.81679" y="231"/> + <use xlink:href="#glyph0-3" x="253.49119" y="231"/> + <use xlink:href="#glyph0-4" x="260.16559" y="231"/> + <use xlink:href="#glyph0-5" x="266.83999" y="231"/> + <use xlink:href="#glyph0-6" x="270.17839" y="231"/> + <use xlink:href="#glyph0-4" x="279.51679" y="231"/> + <use xlink:href="#glyph0-7" x="286.19119" y="231"/> + <use xlink:href="#glyph0-8" x="292.86559" y="231"/> +</g> +<path style="fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 279 144 L 459 144 L 459 549 L 279 549 Z M 279 144 " transform="matrix(1,0,0,1,-268,-133)"/> +<path style="fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 399.5 240.589844 C 418.832031 249.375 418.832031 263.625 399.5 272.410156 C 380.171875 281.195312 348.828125 281.195312 329.5 272.410156 C 310.167969 263.625 310.167969 249.375 329.5 240.589844 C 348.828125 231.804688 380.171875 231.804688 399.5 240.589844 " transform="matrix(1,0,0,1,-268,-133)"/> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-9" x="68.82031" y="127.5"/> + <use xlink:href="#glyph0-7" x="77.48671" y="127.5"/> + <use xlink:href="#glyph0-10" x="84.16111" y="127.5"/> + <use xlink:href="#glyph0-7" x="87.49951" y="127.5"/> + <use xlink:href="#glyph0-5" x="94.17391" y="127.5"/> + <use xlink:href="#glyph0-6" x="97.51231" y="127.5"/> + <use xlink:href="#glyph0-4" x="106.85071" y="127.5"/> + <use xlink:href="#glyph0-7" x="113.52511" y="127.5"/> + <use xlink:href="#glyph0-8" x="120.19951" y="127.5"/> +</g> +<path style="fill:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 393.902344 275.011719 L 477.203125 327.453125 " transform="matrix(1,0,0,1,-268,-133)"/> +<path style="fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 483.972656 331.714844 L 478.800781 324.914062 L 475.605469 329.992188 Z M 483.972656 331.714844 " transform="matrix(1,0,0,1,-268,-133)"/> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-1" x="44.248" y="58.776001"/> + <use xlink:href="#glyph1-2" x="48.392" y="58.776001"/> + <use xlink:href="#glyph1-3" x="57.288" y="58.776001"/> + <use xlink:href="#glyph1-4" x="66.776" y="58.776001"/> + <use xlink:href="#glyph1-5" x="75.672" y="58.776001"/> + <use xlink:href="#glyph1-6" x="80.712" y="58.776001"/> + <use xlink:href="#glyph1-7" x="85.16" y="58.776001"/> + <use xlink:href="#glyph1-8" x="96.424" y="58.776001"/> + <use xlink:href="#glyph1-5" x="105.016" y="58.776001"/> + <use xlink:href="#glyph1-8" x="110.056" y="58.776001"/> + <use xlink:href="#glyph1-6" x="118.648" y="58.776001"/> + <use xlink:href="#glyph1-9" x="123.096" y="58.776001"/> + <use xlink:href="#glyph1-10" x="135.24" y="58.776001"/> + <use xlink:href="#glyph1-8" x="143.832" y="58.776001"/> + <use xlink:href="#glyph1-11" x="152.424" y="58.776001"/> +</g> +<path style="fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 399.5 339.589844 C 418.832031 348.375 418.832031 362.625 399.5 371.410156 C 380.171875 380.195312 348.828125 380.195312 329.5 371.410156 C 310.167969 362.625 310.167969 348.375 329.5 339.589844 C 348.828125 330.804688 380.171875 330.804688 399.5 339.589844 " transform="matrix(1,0,0,1,-268,-133)"/> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-9" x="68.82031" y="226.5"/> + <use xlink:href="#glyph0-7" x="77.48671" y="226.5"/> + <use xlink:href="#glyph0-10" x="84.16111" y="226.5"/> + <use xlink:href="#glyph0-7" x="87.49951" y="226.5"/> + <use xlink:href="#glyph0-5" x="94.17391" y="226.5"/> + <use xlink:href="#glyph0-6" x="97.51231" y="226.5"/> + <use xlink:href="#glyph0-4" x="106.85071" y="226.5"/> + <use xlink:href="#glyph0-7" x="113.52511" y="226.5"/> + <use xlink:href="#glyph0-8" x="120.19951" y="226.5"/> +</g> +<path style="fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 399.5 438.589844 C 418.832031 447.375 418.832031 461.625 399.5 470.410156 C 380.171875 479.195312 348.828125 479.195312 329.5 470.410156 C 310.167969 461.625 310.167969 447.375 329.5 438.589844 C 348.828125 429.804688 380.171875 429.804688 399.5 438.589844 " transform="matrix(1,0,0,1,-268,-133)"/> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-9" x="68.82031" y="325.5"/> + <use xlink:href="#glyph0-7" x="77.48671" y="325.5"/> + <use xlink:href="#glyph0-10" x="84.16111" y="325.5"/> + <use xlink:href="#glyph0-7" x="87.49951" y="325.5"/> + <use xlink:href="#glyph0-5" x="94.17391" y="325.5"/> + <use xlink:href="#glyph0-6" x="97.51231" y="325.5"/> + <use xlink:href="#glyph0-4" x="106.85071" y="325.5"/> + <use xlink:href="#glyph0-7" x="113.52511" y="325.5"/> + <use xlink:href="#glyph0-8" x="120.19951" y="325.5"/> +</g> +<path style="fill:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 414.339844 357.335938 L 475.609375 359.589844 " transform="matrix(1,0,0,1,-268,-133)"/> +<path style="fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 483.601562 359.886719 L 475.71875 356.59375 L 475.5 362.589844 Z M 483.601562 359.886719 " transform="matrix(1,0,0,1,-268,-133)"/> +<path style="fill:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 396.285156 436.84375 L 477.347656 391.808594 " transform="matrix(1,0,0,1,-268,-133)"/> +<path style="fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 484.339844 387.921875 L 475.890625 389.183594 L 478.804688 394.429688 Z M 484.339844 387.921875 " transform="matrix(1,0,0,1,-268,-133)"/> +<path style="fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 612 216 L 792 216 L 792 477 L 612 477 Z M 612 216 " transform="matrix(1,0,0,1,-268,-133)"/> +<path style="fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 732.5 303.589844 C 751.832031 312.375 751.832031 326.625 732.5 335.410156 C 713.171875 344.195312 681.828125 344.195312 662.5 335.410156 C 643.167969 326.625 643.167969 312.375 662.5 303.589844 C 681.828125 294.804688 713.171875 294.804688 732.5 303.589844 " transform="matrix(1,0,0,1,-268,-133)"/> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-9" x="401.82031" y="190.5"/> + <use xlink:href="#glyph0-7" x="410.48671" y="190.5"/> + <use xlink:href="#glyph0-10" x="417.16111" y="190.5"/> + <use xlink:href="#glyph0-7" x="420.49951" y="190.5"/> + <use xlink:href="#glyph0-5" x="427.17391" y="190.5"/> + <use xlink:href="#glyph0-6" x="430.51231" y="190.5"/> + <use xlink:href="#glyph0-4" x="439.85071" y="190.5"/> + <use xlink:href="#glyph0-7" x="446.52511" y="190.5"/> + <use xlink:href="#glyph0-8" x="453.19951" y="190.5"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-12" x="370.72" y="130.776001"/> + <use xlink:href="#glyph1-4" x="382.88" y="130.776001"/> + <use xlink:href="#glyph1-5" x="391.776" y="130.776001"/> + <use xlink:href="#glyph1-3" x="396.816" y="130.776001"/> + <use xlink:href="#glyph1-4" x="406.304" y="130.776001"/> + <use xlink:href="#glyph1-5" x="415.2" y="130.776001"/> + <use xlink:href="#glyph1-6" x="420.24" y="130.776001"/> + <use xlink:href="#glyph1-7" x="424.688" y="130.776001"/> + <use xlink:href="#glyph1-8" x="435.952" y="130.776001"/> + <use xlink:href="#glyph1-5" x="444.544" y="130.776001"/> + <use xlink:href="#glyph1-8" x="449.584" y="130.776001"/> + <use xlink:href="#glyph1-6" x="458.176" y="130.776001"/> + <use xlink:href="#glyph1-9" x="462.624" y="130.776001"/> + <use xlink:href="#glyph1-10" x="474.768" y="130.776001"/> + <use xlink:href="#glyph1-8" x="483.36" y="130.776001"/> + <use xlink:href="#glyph1-11" x="491.952" y="130.776001"/> +</g> +<path style="fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 732.5 384.589844 C 751.832031 393.375 751.832031 407.625 732.5 416.410156 C 713.171875 425.195312 681.828125 425.195312 662.5 416.410156 C 643.167969 407.625 643.167969 393.375 662.5 384.589844 C 681.828125 375.804688 713.171875 375.804688 732.5 384.589844 " transform="matrix(1,0,0,1,-268,-133)"/> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-9" x="401.82031" y="271.5"/> + <use xlink:href="#glyph0-7" x="410.48671" y="271.5"/> + <use xlink:href="#glyph0-10" x="417.16111" y="271.5"/> + <use xlink:href="#glyph0-7" x="420.49951" y="271.5"/> + <use xlink:href="#glyph0-5" x="427.17391" y="271.5"/> + <use xlink:href="#glyph0-6" x="430.51231" y="271.5"/> + <use xlink:href="#glyph0-4" x="439.85071" y="271.5"/> + <use xlink:href="#glyph0-7" x="446.52511" y="271.5"/> + <use xlink:href="#glyph0-8" x="453.19951" y="271.5"/> +</g> +<path style="fill:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 585 348.378906 L 644.3125 333.152344 " transform="matrix(1,0,0,1,-268,-133)"/> +<path style="fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 652.0625 331.164062 L 643.566406 330.246094 L 645.058594 336.058594 Z M 652.0625 331.164062 " transform="matrix(1,0,0,1,-268,-133)"/> +<path style="fill:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 585 378 L 641.980469 389.394531 " transform="matrix(1,0,0,1,-268,-133)"/> +<path style="fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 649.828125 390.964844 L 642.570312 386.453125 L 641.394531 392.339844 Z M 649.828125 390.964844 " transform="matrix(1,0,0,1,-268,-133)"/> +</g> +</svg> diff -r 000000000000 -r 38b037c42c34 paper/pic/codeGear_dataGear_dependency.graffle Binary file paper/pic/codeGear_dataGear_dependency.graffle has changed diff -r 000000000000 -r 38b037c42c34 paper/pic/codeGear_dataGear_dependency.pdf Binary file paper/pic/codeGear_dataGear_dependency.pdf has changed diff -r 000000000000 -r 38b037c42c34 paper/pic/gearsos.graffle Binary file paper/pic/gearsos.graffle has changed diff -r 000000000000 -r 38b037c42c34 paper/pic/gearsos.pdf Binary file paper/pic/gearsos.pdf has changed diff -r 000000000000 -r 38b037c42c34 paper/pic/meta_cg_dg.graffle Binary file paper/pic/meta_cg_dg.graffle has changed diff -r 000000000000 -r 38b037c42c34 paper/pic/meta_cg_dg.pdf Binary file paper/pic/meta_cg_dg.pdf has changed diff -r 000000000000 -r 38b037c42c34 paper/pic/meta_gear.graffle Binary file paper/pic/meta_gear.graffle has changed diff -r 000000000000 -r 38b037c42c34 paper/pic/meta_gear.pdf Binary file paper/pic/meta_gear.pdf has changed diff -r 000000000000 -r 38b037c42c34 paper/pic/persistent_date_tree.graffle Binary file paper/pic/persistent_date_tree.graffle has changed diff -r 000000000000 -r 38b037c42c34 paper/pic/persistent_date_tree.pdf Binary file paper/pic/persistent_date_tree.pdf has changed diff -r 000000000000 -r 38b037c42c34 paper/pic/persistent_date_tree_2.graffle Binary file paper/pic/persistent_date_tree_2.graffle has changed diff -r 000000000000 -r 38b037c42c34 paper/pic/persistent_date_tree_2.pdf Binary file paper/pic/persistent_date_tree_2.pdf has changed diff -r 000000000000 -r 38b037c42c34 paper/pic/taskManager.graffle Binary file paper/pic/taskManager.graffle has changed diff -r 000000000000 -r 38b037c42c34 paper/pic/taskManager.pdf Binary file paper/pic/taskManager.pdf has changed diff -r 000000000000 -r 38b037c42c34 paper/pic/twice_640.pdf Binary file paper/pic/twice_640.pdf has changed diff -r 000000000000 -r 38b037c42c34 paper/pic/worker.graffle Binary file paper/pic/worker.graffle has changed diff -r 000000000000 -r 38b037c42c34 paper/pic/worker.pdf Binary file paper/pic/worker.pdf has changed diff -r 000000000000 -r 38b037c42c34 paper/pic/worker.svg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/paper/pic/worker.svg Mon Apr 17 20:05:26 2017 +0900 @@ -0,0 +1,409 @@ +<?xml version="1.0" encoding="UTF-8"?> +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="901pt" height="644pt" viewBox="0 0 901 644" version="1.1"> +<defs> +<g> +<symbol overflow="visible" id="glyph0-0"> +<path style="stroke:none;" d="M 0.78125 0 L 0.78125 -17.21875 L 14.4375 -17.21875 L 14.4375 0 Z M 12.28125 -2.15625 L 12.28125 -15.0625 L 2.9375 -15.0625 L 2.9375 -2.15625 Z M 12.28125 -2.15625 "/> +</symbol> +<symbol overflow="visible" id="glyph0-1"> +<path style="stroke:none;" d="M 9.265625 -17.65625 C 10.890625 -17.65625 12.289062 -17.34375 13.46875 -16.71875 C 15.175781 -15.820312 16.222656 -14.25 16.609375 -12 L 14.296875 -12 C 14.015625 -13.257812 13.429688 -14.175781 12.546875 -14.75 C 11.671875 -15.320312 10.5625 -15.609375 9.21875 -15.609375 C 7.625 -15.609375 6.28125 -15.007812 5.1875 -13.8125 C 4.09375 -12.625 3.546875 -10.84375 3.546875 -8.46875 C 3.546875 -6.425781 3.992188 -4.757812 4.890625 -3.46875 C 5.796875 -2.1875 7.265625 -1.546875 9.296875 -1.546875 C 10.847656 -1.546875 12.132812 -1.992188 13.15625 -2.890625 C 14.175781 -3.796875 14.695312 -5.257812 14.71875 -7.28125 L 9.328125 -7.28125 L 9.328125 -9.21875 L 16.890625 -9.21875 L 16.890625 0 L 15.390625 0 L 14.828125 -2.21875 C 14.035156 -1.351562 13.335938 -0.75 12.734375 -0.40625 C 11.703125 0.164062 10.398438 0.453125 8.828125 0.453125 C 6.785156 0.453125 5.03125 -0.207031 3.5625 -1.53125 C 1.957031 -3.1875 1.15625 -5.457031 1.15625 -8.34375 C 1.15625 -11.226562 1.9375 -13.519531 3.5 -15.21875 C 4.988281 -16.84375 6.910156 -17.65625 9.265625 -17.65625 Z M 8.890625 -17.6875 Z M 8.890625 -17.6875 "/> +</symbol> +<symbol overflow="visible" id="glyph0-2"> +<path style="stroke:none;" d="M 6.78125 -12.828125 C 7.664062 -12.828125 8.523438 -12.617188 9.359375 -12.203125 C 10.203125 -11.785156 10.84375 -11.242188 11.28125 -10.578125 C 11.695312 -9.953125 11.976562 -9.21875 12.125 -8.375 C 12.25 -7.789062 12.3125 -6.867188 12.3125 -5.609375 L 3.109375 -5.609375 C 3.148438 -4.328125 3.453125 -3.300781 4.015625 -2.53125 C 4.578125 -1.769531 5.445312 -1.390625 6.625 -1.390625 C 7.726562 -1.390625 8.609375 -1.75 9.265625 -2.46875 C 9.640625 -2.894531 9.90625 -3.382812 10.0625 -3.9375 L 12.125 -3.9375 C 12.070312 -3.476562 11.890625 -2.960938 11.578125 -2.390625 C 11.273438 -1.828125 10.929688 -1.367188 10.546875 -1.015625 C 9.910156 -0.390625 9.117188 0.0351562 8.171875 0.265625 C 7.660156 0.390625 7.085938 0.453125 6.453125 0.453125 C 4.890625 0.453125 3.5625 -0.113281 2.46875 -1.25 C 1.382812 -2.394531 0.84375 -3.988281 0.84375 -6.03125 C 0.84375 -8.050781 1.390625 -9.6875 2.484375 -10.9375 C 3.578125 -12.195312 5.007812 -12.828125 6.78125 -12.828125 Z M 10.140625 -7.28125 C 10.054688 -8.195312 9.859375 -8.925781 9.546875 -9.46875 C 8.960938 -10.488281 7.992188 -11 6.640625 -11 C 5.671875 -11 4.859375 -10.644531 4.203125 -9.9375 C 3.546875 -9.238281 3.203125 -8.351562 3.171875 -7.28125 Z M 6.578125 -12.859375 Z M 6.578125 -12.859375 "/> +</symbol> +<symbol overflow="visible" id="glyph0-3"> +<path style="stroke:none;" d="M 1.96875 -16.0625 L 4.109375 -16.0625 L 4.109375 -12.546875 L 6.109375 -12.546875 L 6.109375 -10.828125 L 4.109375 -10.828125 L 4.109375 -2.640625 C 4.109375 -2.203125 4.253906 -1.910156 4.546875 -1.765625 C 4.710938 -1.671875 4.988281 -1.625 5.375 -1.625 C 5.46875 -1.625 5.570312 -1.625 5.6875 -1.625 C 5.8125 -1.632812 5.953125 -1.648438 6.109375 -1.671875 L 6.109375 0 C 5.867188 0.0703125 5.613281 0.125 5.34375 0.15625 C 5.082031 0.1875 4.800781 0.203125 4.5 0.203125 C 3.519531 0.203125 2.851562 -0.046875 2.5 -0.546875 C 2.144531 -1.054688 1.96875 -1.710938 1.96875 -2.515625 L 1.96875 -10.828125 L 0.265625 -10.828125 L 0.265625 -12.546875 L 1.96875 -12.546875 Z M 1.96875 -16.0625 "/> +</symbol> +<symbol overflow="visible" id="glyph0-4"> +<path style="stroke:none;" d=""/> +</symbol> +<symbol overflow="visible" id="glyph0-5"> +<path style="stroke:none;" d="M 14.359375 -17.21875 L 14.359375 -15.171875 L 8.5625 -15.171875 L 8.5625 0 L 6.1875 0 L 6.1875 -15.171875 L 0.390625 -15.171875 L 0.390625 -17.21875 Z M 14.359375 -17.21875 "/> +</symbol> +<symbol overflow="visible" id="glyph0-6"> +<path style="stroke:none;" d="M 3.171875 -3.34375 C 3.171875 -2.726562 3.390625 -2.242188 3.828125 -1.890625 C 4.273438 -1.546875 4.804688 -1.375 5.421875 -1.375 C 6.160156 -1.375 6.878906 -1.546875 7.578125 -1.890625 C 8.742188 -2.460938 9.328125 -3.394531 9.328125 -4.6875 L 9.328125 -6.390625 C 9.066406 -6.222656 8.734375 -6.082031 8.328125 -5.96875 C 7.921875 -5.863281 7.523438 -5.789062 7.140625 -5.75 L 5.859375 -5.578125 C 5.097656 -5.472656 4.523438 -5.3125 4.140625 -5.09375 C 3.492188 -4.726562 3.171875 -4.144531 3.171875 -3.34375 Z M 8.28125 -7.609375 C 8.757812 -7.671875 9.082031 -7.875 9.25 -8.21875 C 9.34375 -8.40625 9.390625 -8.675781 9.390625 -9.03125 C 9.390625 -9.75 9.132812 -10.269531 8.625 -10.59375 C 8.113281 -10.914062 7.378906 -11.078125 6.421875 -11.078125 C 5.316406 -11.078125 4.535156 -10.78125 4.078125 -10.1875 C 3.816406 -9.851562 3.648438 -9.363281 3.578125 -8.71875 L 1.609375 -8.71875 C 1.648438 -10.269531 2.148438 -11.347656 3.109375 -11.953125 C 4.078125 -12.554688 5.195312 -12.859375 6.46875 -12.859375 C 7.945312 -12.859375 9.144531 -12.578125 10.0625 -12.015625 C 10.976562 -11.453125 11.4375 -10.578125 11.4375 -9.390625 L 11.4375 -2.15625 C 11.4375 -1.9375 11.476562 -1.757812 11.5625 -1.625 C 11.65625 -1.5 11.847656 -1.4375 12.140625 -1.4375 C 12.234375 -1.4375 12.335938 -1.441406 12.453125 -1.453125 C 12.578125 -1.460938 12.703125 -1.476562 12.828125 -1.5 L 12.828125 0.0625 C 12.503906 0.15625 12.253906 0.210938 12.078125 0.234375 C 11.910156 0.253906 11.675781 0.265625 11.375 0.265625 C 10.65625 0.265625 10.128906 0.0078125 9.796875 -0.5 C 9.628906 -0.78125 9.507812 -1.171875 9.4375 -1.671875 C 9.007812 -1.109375 8.390625 -0.617188 7.578125 -0.203125 C 6.773438 0.210938 5.890625 0.421875 4.921875 0.421875 C 3.753906 0.421875 2.800781 0.0664062 2.0625 -0.640625 C 1.332031 -1.347656 0.96875 -2.234375 0.96875 -3.296875 C 0.96875 -4.460938 1.328125 -5.363281 2.046875 -6 C 2.773438 -6.644531 3.726562 -7.039062 4.90625 -7.1875 Z M 6.53125 -12.859375 Z M 6.53125 -12.859375 "/> +</symbol> +<symbol overflow="visible" id="glyph0-7"> +<path style="stroke:none;" d="M 2.796875 -3.9375 C 2.859375 -3.238281 3.035156 -2.703125 3.328125 -2.328125 C 3.859375 -1.640625 4.78125 -1.296875 6.09375 -1.296875 C 6.875 -1.296875 7.5625 -1.46875 8.15625 -1.8125 C 8.75 -2.15625 9.046875 -2.679688 9.046875 -3.390625 C 9.046875 -3.929688 8.804688 -4.34375 8.328125 -4.625 C 8.023438 -4.789062 7.425781 -4.988281 6.53125 -5.21875 L 4.859375 -5.640625 C 3.785156 -5.898438 2.992188 -6.195312 2.484375 -6.53125 C 1.578125 -7.101562 1.125 -7.890625 1.125 -8.890625 C 1.125 -10.078125 1.550781 -11.035156 2.40625 -11.765625 C 3.257812 -12.503906 4.410156 -12.875 5.859375 -12.875 C 7.753906 -12.875 9.117188 -12.320312 9.953125 -11.21875 C 10.472656 -10.507812 10.726562 -9.75 10.71875 -8.9375 L 8.71875 -8.9375 C 8.675781 -9.414062 8.507812 -9.851562 8.21875 -10.25 C 7.726562 -10.800781 6.890625 -11.078125 5.703125 -11.078125 C 4.898438 -11.078125 4.289062 -10.921875 3.875 -10.609375 C 3.46875 -10.304688 3.265625 -9.90625 3.265625 -9.40625 C 3.265625 -8.863281 3.535156 -8.425781 4.078125 -8.09375 C 4.390625 -7.90625 4.851562 -7.734375 5.46875 -7.578125 L 6.859375 -7.25 C 8.367188 -6.875 9.382812 -6.515625 9.90625 -6.171875 C 10.726562 -5.640625 11.140625 -4.796875 11.140625 -3.640625 C 11.140625 -2.515625 10.710938 -1.546875 9.859375 -0.734375 C 9.015625 0.078125 7.722656 0.484375 5.984375 0.484375 C 4.117188 0.484375 2.796875 0.0625 2.015625 -0.78125 C 1.242188 -1.632812 0.832031 -2.6875 0.78125 -3.9375 Z M 5.921875 -12.859375 Z M 5.921875 -12.859375 "/> +</symbol> +<symbol overflow="visible" id="glyph0-8"> +<path style="stroke:none;" d="M 1.5 -17.21875 L 3.53125 -17.21875 L 3.53125 -7.21875 L 8.9375 -12.546875 L 11.640625 -12.546875 L 6.828125 -7.859375 L 11.90625 0 L 9.21875 0 L 5.296875 -6.328125 L 3.53125 -4.71875 L 3.53125 0 L 1.5 0 Z M 1.5 -17.21875 "/> +</symbol> +<symbol overflow="visible" id="glyph0-9"> +<path style="stroke:none;" d="M 9.828125 -9.328125 C 10.921875 -9.328125 11.785156 -9.546875 12.421875 -9.984375 C 13.066406 -10.421875 13.390625 -11.210938 13.390625 -12.359375 C 13.390625 -13.578125 12.941406 -14.410156 12.046875 -14.859375 C 11.566406 -15.097656 10.929688 -15.21875 10.140625 -15.21875 L 4.4375 -15.21875 L 4.4375 -9.328125 Z M 2.109375 -17.21875 L 10.078125 -17.21875 C 11.390625 -17.21875 12.472656 -17.023438 13.328125 -16.640625 C 14.941406 -15.910156 15.75 -14.554688 15.75 -12.578125 C 15.75 -11.546875 15.535156 -10.703125 15.109375 -10.046875 C 14.679688 -9.390625 14.085938 -8.863281 13.328125 -8.46875 C 13.992188 -8.1875 14.5 -7.820312 14.84375 -7.375 C 15.1875 -6.9375 15.375 -6.21875 15.40625 -5.21875 L 15.5 -2.90625 C 15.519531 -2.25 15.570312 -1.757812 15.65625 -1.4375 C 15.800781 -0.894531 16.050781 -0.546875 16.40625 -0.390625 L 16.40625 0 L 13.546875 0 C 13.472656 -0.144531 13.410156 -0.332031 13.359375 -0.5625 C 13.316406 -0.800781 13.28125 -1.257812 13.25 -1.9375 L 13.109375 -4.8125 C 13.046875 -5.9375 12.625 -6.6875 11.84375 -7.0625 C 11.40625 -7.28125 10.707031 -7.390625 9.75 -7.390625 L 4.4375 -7.390625 L 4.4375 0 L 2.109375 0 Z M 2.109375 -17.21875 "/> +</symbol> +<symbol overflow="visible" id="glyph0-10"> +<path style="stroke:none;" d="M 2.890625 -6.125 C 2.890625 -4.78125 3.171875 -3.65625 3.734375 -2.75 C 4.304688 -1.84375 5.222656 -1.390625 6.484375 -1.390625 C 7.460938 -1.390625 8.265625 -1.8125 8.890625 -2.65625 C 9.515625 -3.5 9.828125 -4.703125 9.828125 -6.265625 C 9.828125 -7.859375 9.503906 -9.035156 8.859375 -9.796875 C 8.210938 -10.554688 7.410156 -10.9375 6.453125 -10.9375 C 5.390625 -10.9375 4.53125 -10.53125 3.875 -9.71875 C 3.21875 -8.90625 2.890625 -7.707031 2.890625 -6.125 Z M 6.0625 -12.78125 C 7.019531 -12.78125 7.820312 -12.578125 8.46875 -12.171875 C 8.84375 -11.929688 9.269531 -11.519531 9.75 -10.9375 L 9.75 -17.28125 L 11.78125 -17.28125 L 11.78125 0 L 9.875 0 L 9.875 -1.75 C 9.382812 -0.976562 8.800781 -0.414062 8.125 -0.0625 C 7.457031 0.28125 6.691406 0.453125 5.828125 0.453125 C 4.429688 0.453125 3.21875 -0.132812 2.1875 -1.3125 C 1.164062 -2.488281 0.65625 -4.054688 0.65625 -6.015625 C 0.65625 -7.835938 1.117188 -9.421875 2.046875 -10.765625 C 2.984375 -12.109375 4.320312 -12.78125 6.0625 -12.78125 Z M 6.0625 -12.78125 "/> +</symbol> +<symbol overflow="visible" id="glyph0-11"> +<path style="stroke:none;" d="M 8.4375 -2 C 9.226562 -2 9.878906 -2.078125 10.390625 -2.234375 C 11.296875 -2.546875 12.035156 -3.132812 12.609375 -4 C 13.066406 -4.695312 13.398438 -5.585938 13.609375 -6.671875 C 13.722656 -7.316406 13.78125 -7.914062 13.78125 -8.46875 C 13.78125 -10.601562 13.351562 -12.257812 12.5 -13.4375 C 11.65625 -14.625 10.296875 -15.21875 8.421875 -15.21875 L 4.28125 -15.21875 L 4.28125 -2 Z M 1.9375 -17.21875 L 8.90625 -17.21875 C 11.269531 -17.21875 13.109375 -16.378906 14.421875 -14.703125 C 15.578125 -13.179688 16.15625 -11.238281 16.15625 -8.875 C 16.15625 -7.039062 15.8125 -5.390625 15.125 -3.921875 C 13.914062 -1.304688 11.835938 0 8.890625 0 L 1.9375 0 Z M 1.9375 -17.21875 "/> +</symbol> +<symbol overflow="visible" id="glyph0-12"> +<path style="stroke:none;" d="M 2.046875 -17.21875 L 14.609375 -17.21875 L 14.609375 -15.109375 L 4.328125 -15.109375 L 4.328125 -9.875 L 13.828125 -9.875 L 13.828125 -7.890625 L 4.328125 -7.890625 L 4.328125 -2.046875 L 14.78125 -2.046875 L 14.78125 0 L 2.046875 0 Z M 8.421875 -17.21875 Z M 8.421875 -17.21875 "/> +</symbol> +<symbol overflow="visible" id="glyph0-13"> +<path style="stroke:none;" d="M 0.359375 -12.546875 L 3.078125 -12.546875 L 5.96875 -8.140625 L 8.890625 -12.546875 L 11.453125 -12.5 L 7.21875 -6.4375 L 11.640625 0 L 8.9375 0 L 5.828125 -4.71875 L 2.796875 0 L 0.125 0 L 4.546875 -6.4375 Z M 0.359375 -12.546875 "/> +</symbol> +<symbol overflow="visible" id="glyph0-14"> +<path style="stroke:none;" d="M 6.390625 -12.921875 C 7.804688 -12.921875 8.957031 -12.578125 9.84375 -11.890625 C 10.726562 -11.203125 11.257812 -10.015625 11.4375 -8.328125 L 9.390625 -8.328125 C 9.265625 -9.109375 8.976562 -9.753906 8.53125 -10.265625 C 8.082031 -10.773438 7.367188 -11.03125 6.390625 -11.03125 C 5.046875 -11.03125 4.082031 -10.375 3.5 -9.0625 C 3.125 -8.207031 2.9375 -7.15625 2.9375 -5.90625 C 2.9375 -4.644531 3.203125 -3.582031 3.734375 -2.71875 C 4.265625 -1.863281 5.101562 -1.4375 6.25 -1.4375 C 7.125 -1.4375 7.816406 -1.703125 8.328125 -2.234375 C 8.835938 -2.773438 9.191406 -3.507812 9.390625 -4.4375 L 11.4375 -4.4375 C 11.207031 -2.78125 10.625 -1.566406 9.6875 -0.796875 C 8.75 -0.0234375 7.546875 0.359375 6.078125 0.359375 C 4.441406 0.359375 3.132812 -0.238281 2.15625 -1.4375 C 1.175781 -2.632812 0.6875 -4.132812 0.6875 -5.9375 C 0.6875 -8.132812 1.222656 -9.847656 2.296875 -11.078125 C 3.367188 -12.304688 4.734375 -12.921875 6.390625 -12.921875 Z M 6.0625 -12.859375 Z M 6.0625 -12.859375 "/> +</symbol> +<symbol overflow="visible" id="glyph0-15"> +<path style="stroke:none;" d="M 2.96875 -17.21875 L 6.21875 -3.21875 L 10.109375 -17.21875 L 12.640625 -17.21875 L 16.53125 -3.21875 L 19.765625 -17.21875 L 22.328125 -17.21875 L 17.796875 0 L 15.359375 0 L 11.375 -14.28125 L 7.390625 0 L 4.9375 0 L 0.4375 -17.21875 Z M 2.96875 -17.21875 "/> +</symbol> +<symbol overflow="visible" id="glyph0-16"> +<path style="stroke:none;" d="M 1.609375 -12.546875 L 3.609375 -12.546875 L 3.609375 -10.390625 C 3.773438 -10.804688 4.175781 -11.316406 4.8125 -11.921875 C 5.457031 -12.523438 6.195312 -12.828125 7.03125 -12.828125 C 7.070312 -12.828125 7.140625 -12.820312 7.234375 -12.8125 C 7.328125 -12.8125 7.488281 -12.800781 7.71875 -12.78125 L 7.71875 -10.546875 C 7.59375 -10.566406 7.472656 -10.582031 7.359375 -10.59375 C 7.253906 -10.601562 7.140625 -10.609375 7.015625 -10.609375 C 5.953125 -10.609375 5.132812 -10.265625 4.5625 -9.578125 C 4 -8.898438 3.71875 -8.113281 3.71875 -7.21875 L 3.71875 0 L 1.609375 0 Z M 1.609375 -12.546875 "/> +</symbol> +<symbol overflow="visible" id="glyph0-17"> +<path style="stroke:none;" d="M 1.546875 -12.5 L 3.6875 -12.5 L 3.6875 0 L 1.546875 0 Z M 1.546875 -17.21875 L 3.6875 -17.21875 L 3.6875 -14.828125 L 1.546875 -14.828125 Z M 1.546875 -17.21875 "/> +</symbol> +<symbol overflow="visible" id="glyph1-0"> +<path style="stroke:none;" d="M 9.8125 -15.984375 L 2.453125 -15.984375 L 2.453125 -1.125 L 9.8125 -1.125 Z M 11.046875 -17.09375 L 11.046875 -0.03125 L 1.21875 -0.03125 L 1.21875 -17.09375 Z M 11.046875 -17.09375 "/> +</symbol> +<symbol overflow="visible" id="glyph1-1"> +<path style="stroke:none;" d="M 17.359375 0 L 21.9375 -17.140625 L 19.65625 -17.140625 L 16.171875 -2.875 L 16.125 -2.875 L 12.34375 -17.140625 L 9.859375 -17.140625 L 6.03125 -2.875 L 5.96875 -2.875 L 2.609375 -17.140625 L 0.28125 -17.140625 L 4.6875 0 L 7.0625 0 L 11.015625 -14.40625 L 11.0625 -14.40625 L 14.96875 0 Z M 17.359375 0 "/> +</symbol> +<symbol overflow="visible" id="glyph1-2"> +<path style="stroke:none;" d="M 3.03125 -6.1875 C 3.03125 -6.9375 3.128906 -7.601562 3.328125 -8.1875 C 3.523438 -8.78125 3.800781 -9.273438 4.15625 -9.671875 C 4.507812 -10.066406 4.921875 -10.367188 5.390625 -10.578125 C 5.859375 -10.785156 6.359375 -10.890625 6.890625 -10.890625 C 7.421875 -10.890625 7.921875 -10.785156 8.390625 -10.578125 C 8.859375 -10.367188 9.269531 -10.066406 9.625 -9.671875 C 9.976562 -9.273438 10.253906 -8.78125 10.453125 -8.1875 C 10.648438 -7.601562 10.75 -6.9375 10.75 -6.1875 C 10.75 -5.4375 10.648438 -4.769531 10.453125 -4.1875 C 10.253906 -3.601562 9.976562 -3.113281 9.625 -2.71875 C 9.269531 -2.332031 8.859375 -2.035156 8.390625 -1.828125 C 7.921875 -1.617188 7.421875 -1.515625 6.890625 -1.515625 C 6.359375 -1.515625 5.859375 -1.617188 5.390625 -1.828125 C 4.921875 -2.035156 4.507812 -2.332031 4.15625 -2.71875 C 3.800781 -3.113281 3.523438 -3.601562 3.328125 -4.1875 C 3.128906 -4.769531 3.03125 -5.4375 3.03125 -6.1875 Z M 0.859375 -6.1875 C 0.859375 -5.28125 0.984375 -4.429688 1.234375 -3.640625 C 1.492188 -2.859375 1.878906 -2.175781 2.390625 -1.59375 C 2.910156 -1.007812 3.546875 -0.550781 4.296875 -0.21875 C 5.046875 0.101562 5.910156 0.265625 6.890625 0.265625 C 7.878906 0.265625 8.742188 0.101562 9.484375 -0.21875 C 10.234375 -0.550781 10.863281 -1.007812 11.375 -1.59375 C 11.882812 -2.175781 12.265625 -2.859375 12.515625 -3.640625 C 12.773438 -4.429688 12.90625 -5.28125 12.90625 -6.1875 C 12.90625 -7.101562 12.773438 -7.957031 12.515625 -8.75 C 12.265625 -9.539062 11.882812 -10.226562 11.375 -10.8125 C 10.863281 -11.394531 10.234375 -11.851562 9.484375 -12.1875 C 8.742188 -12.53125 7.878906 -12.703125 6.890625 -12.703125 C 5.910156 -12.703125 5.046875 -12.53125 4.296875 -12.1875 C 3.546875 -11.851562 2.910156 -11.394531 2.390625 -10.8125 C 1.878906 -10.226562 1.492188 -9.539062 1.234375 -8.75 C 0.984375 -7.957031 0.859375 -7.101562 0.859375 -6.1875 Z M 0.859375 -6.1875 "/> +</symbol> +<symbol overflow="visible" id="glyph1-3"> +<path style="stroke:none;" d="M 1.46875 -12.40625 L 1.46875 0 L 3.5 0 L 3.5 -5.515625 C 3.5 -6.316406 3.578125 -7.023438 3.734375 -7.640625 C 3.898438 -8.253906 4.160156 -8.773438 4.515625 -9.203125 C 4.867188 -9.640625 5.332031 -9.96875 5.90625 -10.1875 C 6.476562 -10.414062 7.171875 -10.53125 7.984375 -10.53125 L 7.984375 -12.703125 C 6.890625 -12.734375 5.976562 -12.503906 5.25 -12.015625 C 4.53125 -11.535156 3.925781 -10.796875 3.4375 -9.796875 L 3.390625 -9.796875 L 3.390625 -12.40625 Z M 1.46875 -12.40625 "/> +</symbol> +<symbol overflow="visible" id="glyph1-4"> +<path style="stroke:none;" d="M 1.65625 -17.140625 L 1.65625 0 L 3.703125 0 L 3.703125 -4.703125 L 5.609375 -6.484375 L 9.859375 0 L 12.453125 0 L 7.171875 -7.890625 L 12.09375 -12.40625 L 9.359375 -12.40625 L 3.703125 -6.984375 L 3.703125 -17.140625 Z M 1.65625 -17.140625 "/> +</symbol> +<symbol overflow="visible" id="glyph1-5"> +<path style="stroke:none;" d="M 10.15625 -7.390625 L 3.03125 -7.390625 C 3.0625 -7.867188 3.160156 -8.320312 3.328125 -8.75 C 3.503906 -9.175781 3.742188 -9.546875 4.046875 -9.859375 C 4.359375 -10.179688 4.722656 -10.429688 5.140625 -10.609375 C 5.566406 -10.796875 6.046875 -10.890625 6.578125 -10.890625 C 7.085938 -10.890625 7.550781 -10.796875 7.96875 -10.609375 C 8.394531 -10.429688 8.765625 -10.1875 9.078125 -9.875 C 9.390625 -9.5625 9.640625 -9.1875 9.828125 -8.75 C 10.015625 -8.320312 10.125 -7.867188 10.15625 -7.390625 Z M 12.125 -3.9375 L 10.109375 -3.9375 C 9.929688 -3.125 9.566406 -2.515625 9.015625 -2.109375 C 8.460938 -1.710938 7.753906 -1.515625 6.890625 -1.515625 C 6.210938 -1.515625 5.625 -1.625 5.125 -1.84375 C 4.632812 -2.070312 4.226562 -2.375 3.90625 -2.75 C 3.59375 -3.125 3.363281 -3.554688 3.21875 -4.046875 C 3.070312 -4.535156 3.007812 -5.050781 3.03125 -5.59375 L 12.3125 -5.59375 C 12.34375 -6.34375 12.273438 -7.132812 12.109375 -7.96875 C 11.941406 -8.800781 11.632812 -9.566406 11.1875 -10.265625 C 10.75 -10.972656 10.164062 -11.554688 9.4375 -12.015625 C 8.71875 -12.472656 7.804688 -12.703125 6.703125 -12.703125 C 5.847656 -12.703125 5.0625 -12.539062 4.34375 -12.21875 C 3.632812 -11.894531 3.019531 -11.445312 2.5 -10.875 C 1.988281 -10.300781 1.585938 -9.617188 1.296875 -8.828125 C 1.003906 -8.046875 0.859375 -7.179688 0.859375 -6.234375 C 0.890625 -5.296875 1.03125 -4.425781 1.28125 -3.625 C 1.53125 -2.820312 1.898438 -2.132812 2.390625 -1.5625 C 2.890625 -0.988281 3.503906 -0.539062 4.234375 -0.21875 C 4.960938 0.101562 5.820312 0.265625 6.8125 0.265625 C 8.21875 0.265625 9.382812 -0.0820312 10.3125 -0.78125 C 11.25 -1.488281 11.851562 -2.539062 12.125 -3.9375 Z M 12.125 -3.9375 "/> +</symbol> +<symbol overflow="visible" id="glyph1-6"> +<path style="stroke:none;" d="M 4.15625 -8.921875 L 4.15625 -15.21875 L 8.609375 -15.21875 C 9.910156 -15.21875 10.859375 -14.945312 11.453125 -14.40625 C 12.054688 -13.875 12.359375 -13.097656 12.359375 -12.078125 C 12.359375 -11.046875 12.054688 -10.257812 11.453125 -9.71875 C 10.859375 -9.175781 9.910156 -8.910156 8.609375 -8.921875 Z M 1.875 -17.140625 L 1.875 0 L 4.15625 0 L 4.15625 -7.015625 L 9.390625 -7.015625 C 11.109375 -6.992188 12.410156 -7.429688 13.296875 -8.328125 C 14.191406 -9.222656 14.640625 -10.472656 14.640625 -12.078125 C 14.640625 -13.671875 14.191406 -14.910156 13.296875 -15.796875 C 12.410156 -16.691406 11.109375 -17.140625 9.390625 -17.140625 Z M 1.875 -17.140625 "/> +</symbol> +<symbol overflow="visible" id="glyph1-7"> +<path style="stroke:none;" d="M 2.78125 -3.90625 L 0.75 -3.90625 C 0.78125 -3.144531 0.9375 -2.492188 1.21875 -1.953125 C 1.507812 -1.421875 1.894531 -0.988281 2.375 -0.65625 C 2.851562 -0.332031 3.40625 -0.0976562 4.03125 0.046875 C 4.65625 0.191406 5.3125 0.265625 6 0.265625 C 6.625 0.265625 7.25 0.203125 7.875 0.078125 C 8.507812 -0.0351562 9.078125 -0.242188 9.578125 -0.546875 C 10.085938 -0.859375 10.5 -1.257812 10.8125 -1.75 C 11.125 -2.25 11.28125 -2.875 11.28125 -3.625 C 11.28125 -4.21875 11.160156 -4.710938 10.921875 -5.109375 C 10.691406 -5.515625 10.390625 -5.847656 10.015625 -6.109375 C 9.640625 -6.367188 9.207031 -6.578125 8.71875 -6.734375 C 8.226562 -6.898438 7.726562 -7.039062 7.21875 -7.15625 C 6.738281 -7.257812 6.257812 -7.363281 5.78125 -7.46875 C 5.300781 -7.570312 4.867188 -7.703125 4.484375 -7.859375 C 4.097656 -8.015625 3.78125 -8.207031 3.53125 -8.4375 C 3.289062 -8.664062 3.171875 -8.957031 3.171875 -9.3125 C 3.171875 -9.632812 3.25 -9.894531 3.40625 -10.09375 C 3.5625 -10.289062 3.769531 -10.445312 4.03125 -10.5625 C 4.289062 -10.6875 4.578125 -10.769531 4.890625 -10.8125 C 5.203125 -10.863281 5.507812 -10.890625 5.8125 -10.890625 C 6.144531 -10.890625 6.472656 -10.851562 6.796875 -10.78125 C 7.128906 -10.71875 7.429688 -10.601562 7.703125 -10.4375 C 7.972656 -10.28125 8.195312 -10.066406 8.375 -9.796875 C 8.550781 -9.535156 8.65625 -9.207031 8.6875 -8.8125 L 10.734375 -8.8125 C 10.679688 -9.5625 10.519531 -10.1875 10.25 -10.6875 C 9.976562 -11.195312 9.613281 -11.597656 9.15625 -11.890625 C 8.695312 -12.191406 8.171875 -12.398438 7.578125 -12.515625 C 6.992188 -12.640625 6.347656 -12.703125 5.640625 -12.703125 C 5.097656 -12.703125 4.550781 -12.628906 4 -12.484375 C 3.445312 -12.347656 2.945312 -12.140625 2.5 -11.859375 C 2.0625 -11.585938 1.703125 -11.226562 1.421875 -10.78125 C 1.148438 -10.332031 1.015625 -9.796875 1.015625 -9.171875 C 1.015625 -8.367188 1.210938 -7.742188 1.609375 -7.296875 C 2.003906 -6.847656 2.503906 -6.5 3.109375 -6.25 C 3.710938 -6 4.363281 -5.804688 5.0625 -5.671875 C 5.769531 -5.535156 6.421875 -5.382812 7.015625 -5.21875 C 7.617188 -5.050781 8.117188 -4.832031 8.515625 -4.5625 C 8.921875 -4.289062 9.125 -3.890625 9.125 -3.359375 C 9.125 -2.972656 9.023438 -2.65625 8.828125 -2.40625 C 8.640625 -2.164062 8.394531 -1.976562 8.09375 -1.84375 C 7.800781 -1.71875 7.476562 -1.628906 7.125 -1.578125 C 6.769531 -1.535156 6.4375 -1.515625 6.125 -1.515625 C 5.707031 -1.515625 5.300781 -1.550781 4.90625 -1.625 C 4.507812 -1.707031 4.15625 -1.835938 3.84375 -2.015625 C 3.539062 -2.203125 3.289062 -2.453125 3.09375 -2.765625 C 2.90625 -3.078125 2.800781 -3.457031 2.78125 -3.90625 Z M 2.78125 -3.90625 "/> +</symbol> +<symbol overflow="visible" id="glyph1-8"> +<path style="stroke:none;" d="M 3.703125 -14.640625 L 3.703125 -17.140625 L 1.65625 -17.140625 L 1.65625 -14.640625 Z M 1.65625 -12.40625 L 1.65625 0 L 3.703125 0 L 3.703125 -12.40625 Z M 1.65625 -12.40625 "/> +</symbol> +<symbol overflow="visible" id="glyph1-9"> +<path style="stroke:none;" d="M 4.375 -12.40625 L 4.375 -16.125 L 2.328125 -16.125 L 2.328125 -12.40625 L 0.21875 -12.40625 L 0.21875 -10.609375 L 2.328125 -10.609375 L 2.328125 -2.71875 C 2.328125 -2.132812 2.378906 -1.664062 2.484375 -1.3125 C 2.597656 -0.96875 2.769531 -0.695312 3 -0.5 C 3.238281 -0.3125 3.546875 -0.179688 3.921875 -0.109375 C 4.296875 -0.0351562 4.75 0 5.28125 0 L 6.84375 0 L 6.84375 -1.796875 L 5.90625 -1.796875 C 5.582031 -1.796875 5.320312 -1.804688 5.125 -1.828125 C 4.925781 -1.859375 4.769531 -1.910156 4.65625 -1.984375 C 4.539062 -2.066406 4.460938 -2.179688 4.421875 -2.328125 C 4.390625 -2.472656 4.375 -2.664062 4.375 -2.90625 L 4.375 -10.609375 L 6.84375 -10.609375 L 6.84375 -12.40625 Z M 4.375 -12.40625 "/> +</symbol> +<symbol overflow="visible" id="glyph1-10"> +<path style="stroke:none;" d="M 1.53125 -12.40625 L 1.53125 0 L 3.578125 0 L 3.578125 -7.015625 C 3.578125 -7.566406 3.648438 -8.078125 3.796875 -8.546875 C 3.953125 -9.023438 4.179688 -9.4375 4.484375 -9.78125 C 4.785156 -10.132812 5.164062 -10.40625 5.625 -10.59375 C 6.082031 -10.789062 6.625 -10.890625 7.25 -10.890625 C 8.03125 -10.890625 8.644531 -10.664062 9.09375 -10.21875 C 9.539062 -9.769531 9.765625 -9.164062 9.765625 -8.40625 L 9.765625 0 L 11.8125 0 L 11.8125 -8.15625 C 11.8125 -8.832031 11.742188 -9.445312 11.609375 -10 C 11.472656 -10.550781 11.234375 -11.023438 10.890625 -11.421875 C 10.554688 -11.828125 10.117188 -12.140625 9.578125 -12.359375 C 9.035156 -12.585938 8.351562 -12.703125 7.53125 -12.703125 C 5.695312 -12.703125 4.351562 -11.945312 3.5 -10.4375 L 3.453125 -10.4375 L 3.453125 -12.40625 Z M 1.53125 -12.40625 "/> +</symbol> +<symbol overflow="visible" id="glyph1-11"> +<path style="stroke:none;" d=""/> +</symbol> +<symbol overflow="visible" id="glyph1-12"> +<path style="stroke:none;" d="M 4.15625 -1.921875 L 4.15625 -15.21875 L 7.984375 -15.21875 C 9.046875 -15.21875 9.9375 -15.066406 10.65625 -14.765625 C 11.375 -14.472656 11.960938 -14.039062 12.421875 -13.46875 C 12.878906 -12.90625 13.207031 -12.21875 13.40625 -11.40625 C 13.601562 -10.601562 13.703125 -9.6875 13.703125 -8.65625 C 13.703125 -7.601562 13.59375 -6.703125 13.375 -5.953125 C 13.164062 -5.210938 12.890625 -4.59375 12.546875 -4.09375 C 12.210938 -3.601562 11.832031 -3.210938 11.40625 -2.921875 C 10.988281 -2.640625 10.5625 -2.421875 10.125 -2.265625 C 9.695312 -2.117188 9.289062 -2.023438 8.90625 -1.984375 C 8.519531 -1.941406 8.195312 -1.921875 7.9375 -1.921875 Z M 1.875 -17.140625 L 1.875 0 L 7.75 0 C 9.175781 0 10.410156 -0.195312 11.453125 -0.59375 C 12.492188 -1 13.347656 -1.582031 14.015625 -2.34375 C 14.691406 -3.101562 15.1875 -4.035156 15.5 -5.140625 C 15.820312 -6.253906 15.984375 -7.53125 15.984375 -8.96875 C 15.984375 -11.726562 15.269531 -13.78125 13.84375 -15.125 C 12.425781 -16.46875 10.394531 -17.140625 7.75 -17.140625 Z M 1.875 -17.140625 "/> +</symbol> +<symbol overflow="visible" id="glyph1-13"> +<path style="stroke:none;" d="M 12.53125 -0.046875 C 12.175781 0.160156 11.6875 0.265625 11.0625 0.265625 C 10.53125 0.265625 10.109375 0.117188 9.796875 -0.171875 C 9.492188 -0.472656 9.34375 -0.957031 9.34375 -1.625 C 8.78125 -0.957031 8.125 -0.472656 7.375 -0.171875 C 6.632812 0.117188 5.832031 0.265625 4.96875 0.265625 C 4.40625 0.265625 3.867188 0.195312 3.359375 0.0625 C 2.859375 -0.0625 2.425781 -0.257812 2.0625 -0.53125 C 1.695312 -0.800781 1.40625 -1.15625 1.1875 -1.59375 C 0.96875 -2.03125 0.859375 -2.5625 0.859375 -3.1875 C 0.859375 -3.894531 0.976562 -4.472656 1.21875 -4.921875 C 1.457031 -5.367188 1.773438 -5.734375 2.171875 -6.015625 C 2.566406 -6.296875 3.015625 -6.503906 3.515625 -6.640625 C 4.015625 -6.785156 4.53125 -6.910156 5.0625 -7.015625 C 5.625 -7.117188 6.15625 -7.195312 6.65625 -7.25 C 7.164062 -7.3125 7.609375 -7.394531 7.984375 -7.5 C 8.367188 -7.601562 8.671875 -7.753906 8.890625 -7.953125 C 9.117188 -8.148438 9.234375 -8.441406 9.234375 -8.828125 C 9.234375 -9.273438 9.148438 -9.632812 8.984375 -9.90625 C 8.816406 -10.175781 8.597656 -10.382812 8.328125 -10.53125 C 8.066406 -10.675781 7.769531 -10.769531 7.4375 -10.8125 C 7.113281 -10.863281 6.796875 -10.890625 6.484375 -10.890625 C 5.617188 -10.890625 4.894531 -10.722656 4.3125 -10.390625 C 3.738281 -10.066406 3.429688 -9.453125 3.390625 -8.546875 L 1.34375 -8.546875 C 1.375 -9.316406 1.53125 -9.960938 1.8125 -10.484375 C 2.101562 -11.015625 2.488281 -11.441406 2.96875 -11.765625 C 3.457031 -12.097656 4.007812 -12.335938 4.625 -12.484375 C 5.238281 -12.628906 5.894531 -12.703125 6.59375 -12.703125 C 7.15625 -12.703125 7.710938 -12.660156 8.265625 -12.578125 C 8.816406 -12.492188 9.316406 -12.328125 9.765625 -12.078125 C 10.210938 -11.835938 10.570312 -11.492188 10.84375 -11.046875 C 11.113281 -10.597656 11.25 -10.007812 11.25 -9.28125 L 11.25 -2.90625 C 11.25 -2.425781 11.273438 -2.070312 11.328125 -1.84375 C 11.390625 -1.625 11.582031 -1.515625 11.90625 -1.515625 C 12.082031 -1.515625 12.289062 -1.550781 12.53125 -1.625 Z M 9.21875 -6.40625 C 8.957031 -6.21875 8.617188 -6.078125 8.203125 -5.984375 C 7.785156 -5.898438 7.347656 -5.828125 6.890625 -5.765625 C 6.441406 -5.710938 5.984375 -5.648438 5.515625 -5.578125 C 5.054688 -5.503906 4.640625 -5.382812 4.265625 -5.21875 C 3.898438 -5.0625 3.601562 -4.835938 3.375 -4.546875 C 3.144531 -4.253906 3.03125 -3.851562 3.03125 -3.34375 C 3.03125 -3 3.097656 -2.710938 3.234375 -2.484375 C 3.367188 -2.253906 3.539062 -2.066406 3.75 -1.921875 C 3.96875 -1.773438 4.21875 -1.671875 4.5 -1.609375 C 4.789062 -1.546875 5.097656 -1.515625 5.421875 -1.515625 C 6.097656 -1.515625 6.675781 -1.601562 7.15625 -1.78125 C 7.632812 -1.96875 8.023438 -2.203125 8.328125 -2.484375 C 8.628906 -2.765625 8.851562 -3.066406 9 -3.390625 C 9.144531 -3.722656 9.21875 -4.03125 9.21875 -4.3125 Z M 9.21875 -6.40625 "/> +</symbol> +<symbol overflow="visible" id="glyph1-14"> +<path style="stroke:none;" d="M 5.765625 -15.21875 L 5.765625 0 L 8.046875 0 L 8.046875 -15.21875 L 13.75 -15.21875 L 13.75 -17.140625 L 0.046875 -17.140625 L 0.046875 -15.21875 Z M 5.765625 -15.21875 "/> +</symbol> +<symbol overflow="visible" id="glyph1-15"> +<path style="stroke:none;" d="M 10.796875 -4.890625 L 9.59375 -3.5 L 11.5 -1.984375 C 10.726562 -1.671875 9.9375 -1.515625 9.125 -1.515625 C 8.082031 -1.515625 7.179688 -1.71875 6.421875 -2.125 C 5.671875 -2.53125 5.054688 -3.066406 4.578125 -3.734375 C 4.097656 -4.410156 3.742188 -5.164062 3.515625 -6 C 3.296875 -6.84375 3.1875 -7.695312 3.1875 -8.5625 C 3.1875 -9.425781 3.296875 -10.28125 3.515625 -11.125 C 3.742188 -11.96875 4.097656 -12.722656 4.578125 -13.390625 C 5.054688 -14.066406 5.671875 -14.609375 6.421875 -15.015625 C 7.179688 -15.421875 8.082031 -15.625 9.125 -15.625 C 10.164062 -15.625 11.0625 -15.421875 11.8125 -15.015625 C 12.5625 -14.609375 13.175781 -14.066406 13.65625 -13.390625 C 14.132812 -12.722656 14.484375 -11.96875 14.703125 -11.125 C 14.929688 -10.28125 15.046875 -9.425781 15.046875 -8.5625 C 15.046875 -7.507812 14.882812 -6.5 14.5625 -5.53125 C 14.25 -4.5625 13.753906 -3.742188 13.078125 -3.078125 Z M 15.84375 1.46875 L 16.984375 0.03125 L 14.734375 -1.75 C 15.597656 -2.613281 16.242188 -3.632812 16.671875 -4.8125 C 17.109375 -6 17.328125 -7.25 17.328125 -8.5625 C 17.328125 -9.726562 17.15625 -10.851562 16.8125 -11.9375 C 16.46875 -13.019531 15.953125 -13.976562 15.265625 -14.8125 C 14.578125 -15.644531 13.71875 -16.304688 12.6875 -16.796875 C 11.664062 -17.296875 10.476562 -17.546875 9.125 -17.546875 C 7.757812 -17.546875 6.566406 -17.296875 5.546875 -16.796875 C 4.523438 -16.304688 3.664062 -15.644531 2.96875 -14.8125 C 2.28125 -13.976562 1.765625 -13.019531 1.421875 -11.9375 C 1.078125 -10.851562 0.90625 -9.726562 0.90625 -8.5625 C 0.90625 -7.394531 1.078125 -6.269531 1.421875 -5.1875 C 1.765625 -4.113281 2.28125 -3.160156 2.96875 -2.328125 C 3.664062 -1.492188 4.523438 -0.832031 5.546875 -0.34375 C 6.566406 0.144531 7.757812 0.390625 9.125 0.390625 C 10.707031 0.390625 12.070312 0.0507812 13.21875 -0.625 Z M 15.84375 1.46875 "/> +</symbol> +<symbol overflow="visible" id="glyph1-16"> +<path style="stroke:none;" d="M 11.8125 0 L 11.8125 -12.40625 L 9.765625 -12.40625 L 9.765625 -5.40625 C 9.765625 -4.84375 9.6875 -4.320312 9.53125 -3.84375 C 9.382812 -3.375 9.160156 -2.960938 8.859375 -2.609375 C 8.554688 -2.265625 8.175781 -1.992188 7.71875 -1.796875 C 7.257812 -1.609375 6.71875 -1.515625 6.09375 -1.515625 C 5.3125 -1.515625 4.695312 -1.738281 4.25 -2.1875 C 3.800781 -2.632812 3.578125 -3.242188 3.578125 -4.015625 L 3.578125 -12.40625 L 1.53125 -12.40625 L 1.53125 -4.25 C 1.53125 -3.570312 1.597656 -2.957031 1.734375 -2.40625 C 1.867188 -1.851562 2.101562 -1.378906 2.4375 -0.984375 C 2.78125 -0.585938 3.222656 -0.28125 3.765625 -0.0625 C 4.304688 0.15625 4.988281 0.265625 5.8125 0.265625 C 6.71875 0.265625 7.503906 0.0859375 8.171875 -0.265625 C 8.847656 -0.628906 9.40625 -1.195312 9.84375 -1.96875 L 9.890625 -1.96875 L 9.890625 0 Z M 11.8125 0 "/> +</symbol> +<symbol overflow="visible" id="glyph2-0"> +<path style="stroke:none;" d="M 9 -14.65625 L 2.25 -14.65625 L 2.25 -1.03125 L 9 -1.03125 Z M 10.125 -15.65625 L 10.125 -0.015625 L 1.125 -0.015625 L 1.125 -15.65625 Z M 10.125 -15.65625 "/> +</symbol> +<symbol overflow="visible" id="glyph2-1"> +<path style="stroke:none;" d="M 0.96875 -10.078125 L 2.84375 -10.078125 C 2.820312 -10.546875 2.863281 -11.007812 2.96875 -11.46875 C 3.082031 -11.9375 3.265625 -12.351562 3.515625 -12.71875 C 3.765625 -13.082031 4.082031 -13.378906 4.46875 -13.609375 C 4.863281 -13.835938 5.332031 -13.953125 5.875 -13.953125 C 6.28125 -13.953125 6.664062 -13.882812 7.03125 -13.75 C 7.40625 -13.613281 7.726562 -13.421875 8 -13.171875 C 8.269531 -12.921875 8.484375 -12.625 8.640625 -12.28125 C 8.804688 -11.9375 8.890625 -11.550781 8.890625 -11.125 C 8.890625 -10.582031 8.800781 -10.109375 8.625 -9.703125 C 8.457031 -9.296875 8.207031 -8.914062 7.875 -8.5625 C 7.550781 -8.207031 7.140625 -7.859375 6.640625 -7.515625 C 6.140625 -7.171875 5.5625 -6.789062 4.90625 -6.375 C 4.363281 -6.050781 3.84375 -5.707031 3.34375 -5.34375 C 2.84375 -4.976562 2.394531 -4.550781 2 -4.0625 C 1.601562 -3.582031 1.273438 -3.015625 1.015625 -2.359375 C 0.765625 -1.710938 0.601562 -0.925781 0.53125 0 L 10.71875 0 L 10.71875 -1.65625 L 2.703125 -1.65625 C 2.796875 -2.132812 2.984375 -2.5625 3.265625 -2.9375 C 3.554688 -3.3125 3.898438 -3.660156 4.296875 -3.984375 C 4.703125 -4.304688 5.144531 -4.609375 5.625 -4.890625 C 6.113281 -5.179688 6.597656 -5.472656 7.078125 -5.765625 C 7.566406 -6.066406 8.035156 -6.382812 8.484375 -6.71875 C 8.941406 -7.0625 9.347656 -7.441406 9.703125 -7.859375 C 10.054688 -8.273438 10.335938 -8.75 10.546875 -9.28125 C 10.765625 -9.8125 10.875 -10.421875 10.875 -11.109375 C 10.875 -11.835938 10.742188 -12.476562 10.484375 -13.03125 C 10.222656 -13.59375 9.875 -14.0625 9.4375 -14.4375 C 9 -14.8125 8.484375 -15.097656 7.890625 -15.296875 C 7.296875 -15.492188 6.660156 -15.59375 5.984375 -15.59375 C 5.160156 -15.59375 4.425781 -15.453125 3.78125 -15.171875 C 3.132812 -14.898438 2.59375 -14.515625 2.15625 -14.015625 C 1.726562 -13.523438 1.410156 -12.941406 1.203125 -12.265625 C 1.003906 -11.597656 0.925781 -10.867188 0.96875 -10.078125 Z M 0.96875 -10.078125 "/> +</symbol> +<symbol overflow="visible" id="glyph2-2"> +<path style="stroke:none;" d="M 1.828125 -2.4375 L 1.828125 0 L 4.265625 0 L 4.265625 -2.4375 Z M 1.828125 -2.4375 "/> +</symbol> +<symbol overflow="visible" id="glyph2-3"> +<path style="stroke:none;" d=""/> +</symbol> +<symbol overflow="visible" id="glyph2-4"> +<path style="stroke:none;" d="M 1.71875 -15.703125 L 1.71875 0 L 3.8125 0 L 3.8125 -6.703125 L 8.90625 -6.703125 C 9.425781 -6.703125 9.835938 -6.625 10.140625 -6.46875 C 10.453125 -6.320312 10.703125 -6.117188 10.890625 -5.859375 C 11.078125 -5.609375 11.210938 -5.304688 11.296875 -4.953125 C 11.390625 -4.609375 11.46875 -4.25 11.53125 -3.875 C 11.601562 -3.488281 11.644531 -3.097656 11.65625 -2.703125 C 11.675781 -2.304688 11.691406 -1.9375 11.703125 -1.59375 C 11.710938 -1.25 11.742188 -0.9375 11.796875 -0.65625 C 11.847656 -0.375 11.945312 -0.15625 12.09375 0 L 14.4375 0 C 14.21875 -0.257812 14.050781 -0.5625 13.9375 -0.90625 C 13.820312 -1.257812 13.734375 -1.625 13.671875 -2 C 13.617188 -2.382812 13.582031 -2.773438 13.5625 -3.171875 C 13.550781 -3.566406 13.535156 -3.953125 13.515625 -4.328125 C 13.460938 -4.710938 13.394531 -5.082031 13.3125 -5.4375 C 13.238281 -5.789062 13.113281 -6.109375 12.9375 -6.390625 C 12.769531 -6.671875 12.546875 -6.914062 12.265625 -7.125 C 11.984375 -7.332031 11.613281 -7.476562 11.15625 -7.5625 L 11.15625 -7.609375 C 12.101562 -7.878906 12.789062 -8.367188 13.21875 -9.078125 C 13.65625 -9.796875 13.875 -10.632812 13.875 -11.59375 C 13.875 -12.875 13.453125 -13.878906 12.609375 -14.609375 C 11.773438 -15.335938 10.609375 -15.703125 9.109375 -15.703125 Z M 8.15625 -8.46875 L 3.8125 -8.46875 L 3.8125 -13.953125 L 9 -13.953125 C 9.976562 -13.953125 10.6875 -13.703125 11.125 -13.203125 C 11.570312 -12.703125 11.796875 -12.054688 11.796875 -11.265625 C 11.796875 -10.691406 11.695312 -10.222656 11.5 -9.859375 C 11.300781 -9.503906 11.035156 -9.21875 10.703125 -9 C 10.367188 -8.789062 9.984375 -8.648438 9.546875 -8.578125 C 9.109375 -8.503906 8.644531 -8.46875 8.15625 -8.46875 Z M 8.15625 -8.46875 "/> +</symbol> +<symbol overflow="visible" id="glyph2-5"> +<path style="stroke:none;" d="M 9.3125 -6.78125 L 2.765625 -6.78125 C 2.796875 -7.21875 2.890625 -7.628906 3.046875 -8.015625 C 3.210938 -8.410156 3.4375 -8.753906 3.71875 -9.046875 C 4 -9.335938 4.332031 -9.566406 4.71875 -9.734375 C 5.101562 -9.898438 5.539062 -9.984375 6.03125 -9.984375 C 6.5 -9.984375 6.925781 -9.898438 7.3125 -9.734375 C 7.695312 -9.566406 8.03125 -9.335938 8.3125 -9.046875 C 8.601562 -8.765625 8.832031 -8.425781 9 -8.03125 C 9.175781 -7.632812 9.28125 -7.21875 9.3125 -6.78125 Z M 11.109375 -3.609375 L 9.265625 -3.609375 C 9.097656 -2.859375 8.757812 -2.300781 8.25 -1.9375 C 7.75 -1.570312 7.101562 -1.390625 6.3125 -1.390625 C 5.695312 -1.390625 5.160156 -1.488281 4.703125 -1.6875 C 4.253906 -1.894531 3.878906 -2.171875 3.578125 -2.515625 C 3.285156 -2.859375 3.070312 -3.253906 2.9375 -3.703125 C 2.8125 -4.148438 2.753906 -4.625 2.765625 -5.125 L 11.28125 -5.125 C 11.3125 -5.8125 11.25 -6.535156 11.09375 -7.296875 C 10.945312 -8.066406 10.671875 -8.773438 10.265625 -9.421875 C 9.859375 -10.066406 9.320312 -10.597656 8.65625 -11.015625 C 7.988281 -11.429688 7.148438 -11.640625 6.140625 -11.640625 C 5.359375 -11.640625 4.640625 -11.492188 3.984375 -11.203125 C 3.335938 -10.910156 2.773438 -10.5 2.296875 -9.96875 C 1.816406 -9.4375 1.445312 -8.8125 1.1875 -8.09375 C 0.925781 -7.375 0.796875 -6.582031 0.796875 -5.71875 C 0.828125 -4.851562 0.953125 -4.050781 1.171875 -3.3125 C 1.398438 -2.582031 1.738281 -1.953125 2.1875 -1.421875 C 2.644531 -0.898438 3.207031 -0.492188 3.875 -0.203125 C 4.550781 0.0859375 5.34375 0.234375 6.25 0.234375 C 7.539062 0.234375 8.609375 -0.0820312 9.453125 -0.71875 C 10.304688 -1.363281 10.859375 -2.328125 11.109375 -3.609375 Z M 11.109375 -3.609375 "/> +</symbol> +<symbol overflow="visible" id="glyph2-6"> +<path style="stroke:none;" d="M 11.484375 -0.046875 C 11.160156 0.140625 10.710938 0.234375 10.140625 0.234375 C 9.660156 0.234375 9.273438 0.0976562 8.984375 -0.171875 C 8.703125 -0.441406 8.5625 -0.882812 8.5625 -1.5 C 8.039062 -0.882812 7.4375 -0.441406 6.75 -0.171875 C 6.070312 0.0976562 5.335938 0.234375 4.546875 0.234375 C 4.035156 0.234375 3.546875 0.175781 3.078125 0.0625 C 2.617188 -0.0507812 2.222656 -0.234375 1.890625 -0.484375 C 1.554688 -0.734375 1.289062 -1.054688 1.09375 -1.453125 C 0.894531 -1.859375 0.796875 -2.347656 0.796875 -2.921875 C 0.796875 -3.566406 0.90625 -4.09375 1.125 -4.5 C 1.34375 -4.914062 1.628906 -5.25 1.984375 -5.5 C 2.347656 -5.757812 2.757812 -5.957031 3.21875 -6.09375 C 3.6875 -6.226562 4.160156 -6.335938 4.640625 -6.421875 C 5.148438 -6.523438 5.632812 -6.601562 6.09375 -6.65625 C 6.5625 -6.707031 6.972656 -6.78125 7.328125 -6.875 C 7.679688 -6.96875 7.957031 -7.101562 8.15625 -7.28125 C 8.363281 -7.46875 8.46875 -7.738281 8.46875 -8.09375 C 8.46875 -8.507812 8.390625 -8.835938 8.234375 -9.078125 C 8.085938 -9.328125 7.890625 -9.519531 7.640625 -9.65625 C 7.398438 -9.789062 7.128906 -9.878906 6.828125 -9.921875 C 6.523438 -9.960938 6.226562 -9.984375 5.9375 -9.984375 C 5.144531 -9.984375 4.484375 -9.832031 3.953125 -9.53125 C 3.429688 -9.238281 3.148438 -8.671875 3.109375 -7.828125 L 1.234375 -7.828125 C 1.265625 -8.535156 1.410156 -9.128906 1.671875 -9.609375 C 1.929688 -10.097656 2.28125 -10.488281 2.71875 -10.78125 C 3.164062 -11.082031 3.671875 -11.300781 4.234375 -11.4375 C 4.796875 -11.570312 5.398438 -11.640625 6.046875 -11.640625 C 6.554688 -11.640625 7.066406 -11.601562 7.578125 -11.53125 C 8.085938 -11.457031 8.546875 -11.304688 8.953125 -11.078125 C 9.359375 -10.847656 9.6875 -10.523438 9.9375 -10.109375 C 10.1875 -9.703125 10.3125 -9.171875 10.3125 -8.515625 L 10.3125 -2.65625 C 10.3125 -2.21875 10.335938 -1.894531 10.390625 -1.6875 C 10.441406 -1.488281 10.613281 -1.390625 10.90625 -1.390625 C 11.070312 -1.390625 11.265625 -1.425781 11.484375 -1.5 Z M 8.453125 -5.875 C 8.210938 -5.695312 7.898438 -5.566406 7.515625 -5.484375 C 7.140625 -5.410156 6.742188 -5.347656 6.328125 -5.296875 C 5.910156 -5.242188 5.488281 -5.179688 5.0625 -5.109375 C 4.632812 -5.046875 4.25 -4.941406 3.90625 -4.796875 C 3.570312 -4.648438 3.296875 -4.441406 3.078125 -4.171875 C 2.867188 -3.898438 2.765625 -3.53125 2.765625 -3.0625 C 2.765625 -2.75 2.828125 -2.484375 2.953125 -2.265625 C 3.078125 -2.054688 3.238281 -1.882812 3.4375 -1.75 C 3.632812 -1.625 3.863281 -1.53125 4.125 -1.46875 C 4.394531 -1.414062 4.675781 -1.390625 4.96875 -1.390625 C 5.582031 -1.390625 6.109375 -1.472656 6.546875 -1.640625 C 6.992188 -1.804688 7.351562 -2.015625 7.625 -2.265625 C 7.90625 -2.523438 8.113281 -2.804688 8.25 -3.109375 C 8.382812 -3.410156 8.453125 -3.691406 8.453125 -3.953125 Z M 8.453125 -5.875 "/> +</symbol> +<symbol overflow="visible" id="glyph2-7"> +<path style="stroke:none;" d="M 2.765625 -5.59375 C 2.765625 -6.144531 2.820312 -6.6875 2.9375 -7.21875 C 3.0625 -7.75 3.253906 -8.21875 3.515625 -8.625 C 3.785156 -9.03125 4.140625 -9.359375 4.578125 -9.609375 C 5.015625 -9.859375 5.550781 -9.984375 6.1875 -9.984375 C 6.832031 -9.984375 7.378906 -9.863281 7.828125 -9.625 C 8.285156 -9.382812 8.65625 -9.066406 8.9375 -8.671875 C 9.226562 -8.273438 9.4375 -7.816406 9.5625 -7.296875 C 9.695312 -6.773438 9.765625 -6.234375 9.765625 -5.671875 C 9.765625 -5.148438 9.703125 -4.628906 9.578125 -4.109375 C 9.453125 -3.597656 9.25 -3.140625 8.96875 -2.734375 C 8.695312 -2.335938 8.335938 -2.015625 7.890625 -1.765625 C 7.453125 -1.515625 6.921875 -1.390625 6.296875 -1.390625 C 5.691406 -1.390625 5.164062 -1.503906 4.71875 -1.734375 C 4.269531 -1.972656 3.898438 -2.289062 3.609375 -2.6875 C 3.328125 -3.082031 3.113281 -3.53125 2.96875 -4.03125 C 2.832031 -4.539062 2.765625 -5.0625 2.765625 -5.59375 Z M 11.578125 0 L 11.578125 -15.703125 L 9.703125 -15.703125 L 9.703125 -9.859375 L 9.65625 -9.859375 C 9.445312 -10.191406 9.191406 -10.472656 8.890625 -10.703125 C 8.597656 -10.929688 8.28125 -11.113281 7.9375 -11.25 C 7.601562 -11.394531 7.265625 -11.492188 6.921875 -11.546875 C 6.585938 -11.609375 6.273438 -11.640625 5.984375 -11.640625 C 5.117188 -11.640625 4.359375 -11.476562 3.703125 -11.15625 C 3.054688 -10.84375 2.515625 -10.421875 2.078125 -9.890625 C 1.648438 -9.359375 1.328125 -8.734375 1.109375 -8.015625 C 0.898438 -7.296875 0.796875 -6.53125 0.796875 -5.71875 C 0.796875 -4.914062 0.90625 -4.15625 1.125 -3.4375 C 1.34375 -2.71875 1.664062 -2.082031 2.09375 -1.53125 C 2.53125 -0.988281 3.070312 -0.554688 3.71875 -0.234375 C 4.375 0.078125 5.144531 0.234375 6.03125 0.234375 C 6.820312 0.234375 7.546875 0.0976562 8.203125 -0.171875 C 8.867188 -0.453125 9.351562 -0.910156 9.65625 -1.546875 L 9.703125 -1.546875 L 9.703125 0 Z M 11.578125 0 "/> +</symbol> +<symbol overflow="visible" id="glyph2-8"> +<path style="stroke:none;" d="M 3.8125 -1.765625 L 3.8125 -13.953125 L 7.328125 -13.953125 C 8.296875 -13.953125 9.109375 -13.816406 9.765625 -13.546875 C 10.429688 -13.273438 10.972656 -12.878906 11.390625 -12.359375 C 11.804688 -11.835938 12.101562 -11.203125 12.28125 -10.453125 C 12.46875 -9.710938 12.5625 -8.875 12.5625 -7.9375 C 12.5625 -6.96875 12.460938 -6.140625 12.265625 -5.453125 C 12.066406 -4.773438 11.8125 -4.207031 11.5 -3.75 C 11.195312 -3.300781 10.847656 -2.941406 10.453125 -2.671875 C 10.066406 -2.410156 9.675781 -2.210938 9.28125 -2.078125 C 8.882812 -1.941406 8.507812 -1.851562 8.15625 -1.8125 C 7.8125 -1.78125 7.519531 -1.765625 7.28125 -1.765625 Z M 1.71875 -15.703125 L 1.71875 0 L 7.109375 0 C 8.410156 0 9.535156 -0.179688 10.484375 -0.546875 C 11.441406 -0.910156 12.226562 -1.441406 12.84375 -2.140625 C 13.457031 -2.835938 13.910156 -3.695312 14.203125 -4.71875 C 14.503906 -5.738281 14.65625 -6.910156 14.65625 -8.234375 C 14.65625 -10.753906 14 -12.628906 12.6875 -13.859375 C 11.382812 -15.085938 9.523438 -15.703125 7.109375 -15.703125 Z M 1.71875 -15.703125 "/> +</symbol> +<symbol overflow="visible" id="glyph2-9"> +<path style="stroke:none;" d="M 4 -11.375 L 4 -14.78125 L 2.140625 -14.78125 L 2.140625 -11.375 L 0.203125 -11.375 L 0.203125 -9.71875 L 2.140625 -9.71875 L 2.140625 -2.484375 C 2.140625 -1.953125 2.1875 -1.523438 2.28125 -1.203125 C 2.382812 -0.878906 2.539062 -0.628906 2.75 -0.453125 C 2.96875 -0.285156 3.25 -0.164062 3.59375 -0.09375 C 3.9375 -0.03125 4.351562 0 4.84375 0 L 6.265625 0 L 6.265625 -1.65625 L 5.40625 -1.65625 C 5.113281 -1.65625 4.875 -1.664062 4.6875 -1.6875 C 4.507812 -1.707031 4.367188 -1.753906 4.265625 -1.828125 C 4.160156 -1.898438 4.085938 -2 4.046875 -2.125 C 4.015625 -2.257812 4 -2.4375 4 -2.65625 L 4 -9.71875 L 6.265625 -9.71875 L 6.265625 -11.375 Z M 4 -11.375 "/> +</symbol> +<symbol overflow="visible" id="glyph2-10"> +<path style="stroke:none;" d="M 13.46875 -1.953125 L 14.015625 0 L 15.328125 0 L 15.328125 -8.265625 L 8.453125 -8.265625 L 8.453125 -6.515625 L 13.46875 -6.515625 C 13.5 -5.796875 13.398438 -5.125 13.171875 -4.5 C 12.953125 -3.875 12.625 -3.328125 12.1875 -2.859375 C 11.757812 -2.398438 11.226562 -2.039062 10.59375 -1.78125 C 9.96875 -1.519531 9.242188 -1.390625 8.421875 -1.390625 C 7.546875 -1.390625 6.773438 -1.5625 6.109375 -1.90625 C 5.441406 -2.25 4.878906 -2.707031 4.421875 -3.28125 C 3.960938 -3.863281 3.613281 -4.53125 3.375 -5.28125 C 3.144531 -6.039062 3.03125 -6.832031 3.03125 -7.65625 C 3.03125 -8.488281 3.132812 -9.304688 3.34375 -10.109375 C 3.550781 -10.910156 3.867188 -11.617188 4.296875 -12.234375 C 4.734375 -12.859375 5.289062 -13.363281 5.96875 -13.75 C 6.65625 -14.132812 7.472656 -14.328125 8.421875 -14.328125 C 9.015625 -14.328125 9.570312 -14.253906 10.09375 -14.109375 C 10.613281 -13.972656 11.078125 -13.765625 11.484375 -13.484375 C 11.890625 -13.203125 12.234375 -12.84375 12.515625 -12.40625 C 12.796875 -11.976562 12.988281 -11.46875 13.09375 -10.875 L 15.1875 -10.875 C 15.03125 -11.789062 14.75 -12.578125 14.34375 -13.234375 C 13.945312 -13.890625 13.453125 -14.425781 12.859375 -14.84375 C 12.265625 -15.269531 11.585938 -15.582031 10.828125 -15.78125 C 10.078125 -15.976562 9.273438 -16.078125 8.421875 -16.078125 C 7.179688 -16.078125 6.09375 -15.847656 5.15625 -15.390625 C 4.226562 -14.929688 3.453125 -14.3125 2.828125 -13.53125 C 2.203125 -12.75 1.734375 -11.84375 1.421875 -10.8125 C 1.109375 -9.78125 0.953125 -8.691406 0.953125 -7.546875 C 0.953125 -6.515625 1.117188 -5.519531 1.453125 -4.5625 C 1.785156 -3.613281 2.273438 -2.773438 2.921875 -2.046875 C 3.566406 -1.316406 4.351562 -0.734375 5.28125 -0.296875 C 6.207031 0.140625 7.253906 0.359375 8.421875 0.359375 C 9.347656 0.359375 10.265625 0.179688 11.171875 -0.171875 C 12.085938 -0.535156 12.851562 -1.128906 13.46875 -1.953125 Z M 13.46875 -1.953125 "/> +</symbol> +<symbol overflow="visible" id="glyph2-11"> +<path style="stroke:none;" d="M 1.34375 -11.375 L 1.34375 0 L 3.21875 0 L 3.21875 -5.0625 C 3.21875 -5.789062 3.289062 -6.4375 3.4375 -7 C 3.582031 -7.570312 3.816406 -8.054688 4.140625 -8.453125 C 4.460938 -8.847656 4.882812 -9.144531 5.40625 -9.34375 C 5.9375 -9.550781 6.578125 -9.65625 7.328125 -9.65625 L 7.328125 -11.640625 C 6.316406 -11.671875 5.476562 -11.460938 4.8125 -11.015625 C 4.15625 -10.578125 3.597656 -9.894531 3.140625 -8.96875 L 3.109375 -8.96875 L 3.109375 -11.375 Z M 1.34375 -11.375 "/> +</symbol> +<symbol overflow="visible" id="glyph2-12"> +<path style="stroke:none;" d="M 4.796875 -8.90625 L 4.796875 -7.328125 C 5.148438 -7.367188 5.523438 -7.390625 5.921875 -7.390625 C 6.390625 -7.390625 6.820312 -7.328125 7.21875 -7.203125 C 7.625 -7.078125 7.972656 -6.882812 8.265625 -6.625 C 8.566406 -6.375 8.800781 -6.0625 8.96875 -5.6875 C 9.144531 -5.3125 9.234375 -4.882812 9.234375 -4.40625 C 9.234375 -3.9375 9.140625 -3.515625 8.953125 -3.140625 C 8.773438 -2.765625 8.53125 -2.445312 8.21875 -2.1875 C 7.914062 -1.925781 7.554688 -1.726562 7.140625 -1.59375 C 6.734375 -1.457031 6.304688 -1.390625 5.859375 -1.390625 C 4.785156 -1.390625 3.96875 -1.707031 3.40625 -2.34375 C 2.851562 -2.976562 2.5625 -3.800781 2.53125 -4.8125 L 0.65625 -4.8125 C 0.644531 -4.007812 0.757812 -3.289062 1 -2.65625 C 1.238281 -2.03125 1.585938 -1.5 2.046875 -1.0625 C 2.503906 -0.632812 3.050781 -0.3125 3.6875 -0.09375 C 4.332031 0.125 5.054688 0.234375 5.859375 0.234375 C 6.585938 0.234375 7.273438 0.132812 7.921875 -0.0625 C 8.578125 -0.257812 9.144531 -0.554688 9.625 -0.953125 C 10.113281 -1.347656 10.5 -1.84375 10.78125 -2.4375 C 11.070312 -3.03125 11.21875 -3.710938 11.21875 -4.484375 C 11.21875 -5.421875 10.984375 -6.234375 10.515625 -6.921875 C 10.054688 -7.617188 9.351562 -8.066406 8.40625 -8.265625 L 8.40625 -8.3125 C 9.019531 -8.59375 9.53125 -9.003906 9.9375 -9.546875 C 10.351562 -10.085938 10.5625 -10.710938 10.5625 -11.421875 C 10.5625 -12.140625 10.4375 -12.757812 10.1875 -13.28125 C 9.945312 -13.8125 9.613281 -14.242188 9.1875 -14.578125 C 8.769531 -14.921875 8.269531 -15.175781 7.6875 -15.34375 C 7.101562 -15.507812 6.476562 -15.59375 5.8125 -15.59375 C 5.03125 -15.59375 4.34375 -15.46875 3.75 -15.21875 C 3.15625 -14.96875 2.660156 -14.625 2.265625 -14.1875 C 1.867188 -13.75 1.5625 -13.222656 1.34375 -12.609375 C 1.132812 -11.992188 1.015625 -11.3125 0.984375 -10.5625 L 2.859375 -10.5625 C 2.859375 -11.007812 2.914062 -11.4375 3.03125 -11.84375 C 3.15625 -12.257812 3.335938 -12.617188 3.578125 -12.921875 C 3.816406 -13.234375 4.125 -13.484375 4.5 -13.671875 C 4.875 -13.859375 5.3125 -13.953125 5.8125 -13.953125 C 6.601562 -13.953125 7.257812 -13.738281 7.78125 -13.3125 C 8.3125 -12.894531 8.578125 -12.269531 8.578125 -11.4375 C 8.578125 -11.03125 8.492188 -10.664062 8.328125 -10.34375 C 8.171875 -10.019531 7.957031 -9.75 7.6875 -9.53125 C 7.414062 -9.320312 7.097656 -9.160156 6.734375 -9.046875 C 6.378906 -8.941406 6.003906 -8.890625 5.609375 -8.890625 L 5.21875 -8.890625 C 5.144531 -8.890625 5.070312 -8.890625 5 -8.890625 C 4.9375 -8.890625 4.867188 -8.894531 4.796875 -8.90625 Z M 4.796875 -8.90625 "/> +</symbol> +<symbol overflow="visible" id="glyph2-13"> +<path style="stroke:none;" d="M 15.90625 0 L 20.109375 -15.703125 L 18.015625 -15.703125 L 14.828125 -2.640625 L 14.78125 -2.640625 L 11.3125 -15.703125 L 9.046875 -15.703125 L 5.515625 -2.640625 L 5.484375 -2.640625 L 2.390625 -15.703125 L 0.265625 -15.703125 L 4.296875 0 L 6.46875 0 L 10.09375 -13.203125 L 10.140625 -13.203125 L 13.734375 0 Z M 15.90625 0 "/> +</symbol> +<symbol overflow="visible" id="glyph2-14"> +<path style="stroke:none;" d="M 3.390625 -13.421875 L 3.390625 -15.703125 L 1.515625 -15.703125 L 1.515625 -13.421875 Z M 1.515625 -11.375 L 1.515625 0 L 3.390625 0 L 3.390625 -11.375 Z M 1.515625 -11.375 "/> +</symbol> +<symbol overflow="visible" id="glyph2-15"> +<path style="stroke:none;" d="M 7.828125 0 L 7.828125 -15.59375 L 6.40625 -15.59375 C 6.300781 -15.007812 6.109375 -14.523438 5.828125 -14.140625 C 5.546875 -13.765625 5.203125 -13.460938 4.796875 -13.234375 C 4.398438 -13.015625 3.953125 -12.863281 3.453125 -12.78125 C 2.953125 -12.707031 2.4375 -12.671875 1.90625 -12.671875 L 1.90625 -11.171875 L 5.96875 -11.171875 L 5.96875 0 Z M 7.828125 0 "/> +</symbol> +<symbol overflow="visible" id="glyph2-16"> +<path style="stroke:none;" d="M 2.765625 -5.59375 C 2.765625 -6.144531 2.820312 -6.6875 2.9375 -7.21875 C 3.0625 -7.75 3.253906 -8.21875 3.515625 -8.625 C 3.785156 -9.03125 4.140625 -9.359375 4.578125 -9.609375 C 5.015625 -9.859375 5.550781 -9.984375 6.1875 -9.984375 C 6.832031 -9.984375 7.378906 -9.863281 7.828125 -9.625 C 8.285156 -9.382812 8.65625 -9.066406 8.9375 -8.671875 C 9.226562 -8.273438 9.4375 -7.816406 9.5625 -7.296875 C 9.695312 -6.773438 9.765625 -6.234375 9.765625 -5.671875 C 9.765625 -5.148438 9.703125 -4.628906 9.578125 -4.109375 C 9.453125 -3.597656 9.25 -3.140625 8.96875 -2.734375 C 8.695312 -2.335938 8.335938 -2.015625 7.890625 -1.765625 C 7.453125 -1.515625 6.921875 -1.390625 6.296875 -1.390625 C 5.691406 -1.390625 5.164062 -1.503906 4.71875 -1.734375 C 4.269531 -1.972656 3.898438 -2.289062 3.609375 -2.6875 C 3.328125 -3.082031 3.113281 -3.53125 2.96875 -4.03125 C 2.832031 -4.539062 2.765625 -5.0625 2.765625 -5.59375 Z M 11.578125 4.328125 L 11.578125 -11.375 L 9.703125 -11.375 L 9.703125 -9.859375 L 9.65625 -9.859375 C 9.445312 -10.191406 9.191406 -10.472656 8.890625 -10.703125 C 8.597656 -10.929688 8.28125 -11.113281 7.9375 -11.25 C 7.601562 -11.394531 7.265625 -11.492188 6.921875 -11.546875 C 6.585938 -11.609375 6.273438 -11.640625 5.984375 -11.640625 C 5.117188 -11.640625 4.359375 -11.476562 3.703125 -11.15625 C 3.054688 -10.84375 2.515625 -10.421875 2.078125 -9.890625 C 1.648438 -9.359375 1.328125 -8.734375 1.109375 -8.015625 C 0.898438 -7.296875 0.796875 -6.53125 0.796875 -5.71875 C 0.796875 -4.914062 0.90625 -4.15625 1.125 -3.4375 C 1.34375 -2.71875 1.664062 -2.082031 2.09375 -1.53125 C 2.53125 -0.988281 3.070312 -0.554688 3.71875 -0.234375 C 4.375 0.078125 5.144531 0.234375 6.03125 0.234375 C 6.820312 0.234375 7.546875 0.0976562 8.203125 -0.171875 C 8.867188 -0.453125 9.351562 -0.910156 9.65625 -1.546875 L 9.703125 -1.546875 L 9.703125 4.328125 Z M 11.578125 4.328125 "/> +</symbol> +<symbol overflow="visible" id="glyph2-17"> +<path style="stroke:none;" d="M 10.828125 0 L 10.828125 -11.375 L 8.953125 -11.375 L 8.953125 -4.953125 C 8.953125 -4.441406 8.878906 -3.96875 8.734375 -3.53125 C 8.597656 -3.09375 8.390625 -2.710938 8.109375 -2.390625 C 7.835938 -2.066406 7.492188 -1.816406 7.078125 -1.640625 C 6.660156 -1.472656 6.164062 -1.390625 5.59375 -1.390625 C 4.875 -1.390625 4.304688 -1.59375 3.890625 -2 C 3.484375 -2.414062 3.28125 -2.972656 3.28125 -3.671875 L 3.28125 -11.375 L 1.40625 -11.375 L 1.40625 -3.890625 C 1.40625 -3.273438 1.46875 -2.710938 1.59375 -2.203125 C 1.71875 -1.703125 1.929688 -1.269531 2.234375 -0.90625 C 2.546875 -0.539062 2.953125 -0.257812 3.453125 -0.0625 C 3.953125 0.132812 4.578125 0.234375 5.328125 0.234375 C 6.160156 0.234375 6.882812 0.0703125 7.5 -0.25 C 8.113281 -0.582031 8.617188 -1.097656 9.015625 -1.796875 L 9.0625 -1.796875 L 9.0625 0 Z M 10.828125 0 "/> +</symbol> +<symbol overflow="visible" id="glyph2-18"> +<path style="stroke:none;" d="M 5.28125 -13.953125 L 5.28125 0 L 7.375 0 L 7.375 -13.953125 L 12.609375 -13.953125 L 12.609375 -15.703125 L 0.046875 -15.703125 L 0.046875 -13.953125 Z M 5.28125 -13.953125 "/> +</symbol> +<symbol overflow="visible" id="glyph2-19"> +<path style="stroke:none;" d="M 2.546875 -3.59375 L 0.6875 -3.59375 C 0.707031 -2.882812 0.847656 -2.285156 1.109375 -1.796875 C 1.378906 -1.304688 1.734375 -0.910156 2.171875 -0.609375 C 2.617188 -0.304688 3.125 -0.09375 3.6875 0.03125 C 4.257812 0.164062 4.863281 0.234375 5.5 0.234375 C 6.070312 0.234375 6.644531 0.175781 7.21875 0.0625 C 7.800781 -0.0390625 8.320312 -0.226562 8.78125 -0.5 C 9.25 -0.78125 9.625 -1.144531 9.90625 -1.59375 C 10.195312 -2.050781 10.34375 -2.628906 10.34375 -3.328125 C 10.34375 -3.867188 10.234375 -4.320312 10.015625 -4.6875 C 9.804688 -5.050781 9.53125 -5.351562 9.1875 -5.59375 C 8.84375 -5.84375 8.445312 -6.039062 8 -6.1875 C 7.550781 -6.332031 7.09375 -6.457031 6.625 -6.5625 C 6.1875 -6.65625 5.742188 -6.75 5.296875 -6.84375 C 4.859375 -6.945312 4.460938 -7.066406 4.109375 -7.203125 C 3.765625 -7.335938 3.476562 -7.507812 3.25 -7.71875 C 3.019531 -7.9375 2.90625 -8.207031 2.90625 -8.53125 C 2.90625 -8.820312 2.976562 -9.0625 3.125 -9.25 C 3.269531 -9.4375 3.457031 -9.582031 3.6875 -9.6875 C 3.925781 -9.800781 4.1875 -9.878906 4.46875 -9.921875 C 4.757812 -9.960938 5.046875 -9.984375 5.328125 -9.984375 C 5.628906 -9.984375 5.929688 -9.953125 6.234375 -9.890625 C 6.535156 -9.828125 6.8125 -9.71875 7.0625 -9.5625 C 7.3125 -9.414062 7.515625 -9.222656 7.671875 -8.984375 C 7.835938 -8.742188 7.9375 -8.441406 7.96875 -8.078125 L 9.828125 -8.078125 C 9.785156 -8.765625 9.640625 -9.335938 9.390625 -9.796875 C 9.140625 -10.265625 8.804688 -10.632812 8.390625 -10.90625 C 7.972656 -11.175781 7.492188 -11.363281 6.953125 -11.46875 C 6.410156 -11.582031 5.816406 -11.640625 5.171875 -11.640625 C 4.671875 -11.640625 4.164062 -11.578125 3.65625 -11.453125 C 3.15625 -11.328125 2.703125 -11.132812 2.296875 -10.875 C 1.890625 -10.625 1.554688 -10.289062 1.296875 -9.875 C 1.046875 -9.46875 0.921875 -8.976562 0.921875 -8.40625 C 0.921875 -7.664062 1.101562 -7.09375 1.46875 -6.6875 C 1.84375 -6.28125 2.300781 -5.960938 2.84375 -5.734375 C 3.394531 -5.503906 3.992188 -5.328125 4.640625 -5.203125 C 5.285156 -5.078125 5.882812 -4.9375 6.4375 -4.78125 C 6.988281 -4.625 7.445312 -4.421875 7.8125 -4.171875 C 8.175781 -3.929688 8.359375 -3.566406 8.359375 -3.078125 C 8.359375 -2.722656 8.269531 -2.429688 8.09375 -2.203125 C 7.914062 -1.984375 7.691406 -1.8125 7.421875 -1.6875 C 7.148438 -1.570312 6.851562 -1.492188 6.53125 -1.453125 C 6.207031 -1.410156 5.898438 -1.390625 5.609375 -1.390625 C 5.222656 -1.390625 4.847656 -1.425781 4.484375 -1.5 C 4.128906 -1.570312 3.8125 -1.691406 3.53125 -1.859375 C 3.25 -2.023438 3.019531 -2.25 2.84375 -2.53125 C 2.664062 -2.820312 2.566406 -3.175781 2.546875 -3.59375 Z M 2.546875 -3.59375 "/> +</symbol> +<symbol overflow="visible" id="glyph2-20"> +<path style="stroke:none;" d="M 1.515625 -15.703125 L 1.515625 0 L 3.390625 0 L 3.390625 -4.3125 L 5.140625 -5.9375 L 9.046875 0 L 11.421875 0 L 6.578125 -7.234375 L 11.09375 -11.375 L 8.578125 -11.375 L 3.390625 -6.40625 L 3.390625 -15.703125 Z M 1.515625 -15.703125 "/> +</symbol> +</g> +</defs> +<g id="surface1"> +<rect x="0" y="0" width="901" height="644" style="fill:rgb(100%,100%,100%);fill-opacity:1;stroke:none;"/> +<path style="fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 669.667969 694.078125 L 915 694.078125 L 915 311.34375 L 669.667969 311.34375 Z M 669.667969 694.078125 " transform="matrix(1,0,0,1,-25,-125)"/> +<path style="fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 654.332031 725.972656 L 899.667969 725.972656 L 899.667969 343.238281 L 654.332031 343.238281 Z M 654.332031 725.972656 " transform="matrix(1,0,0,1,-25,-125)"/> +<path style="fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 639 757.867188 L 884.332031 757.867188 L 884.332031 375.132812 L 639 375.132812 Z M 639 757.867188 " transform="matrix(1,0,0,1,-25,-125)"/> +<path style="fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 820.15625 407.25 C 850.617188 419.359375 850.617188 438.992188 820.15625 451.101562 C 789.695312 463.210938 740.304688 463.210938 709.84375 451.101562 C 679.382812 438.992188 679.382812 419.359375 709.84375 407.25 C 740.304688 395.140625 789.695312 395.140625 820.15625 407.25 " transform="matrix(1,0,0,1,-25,-125)"/> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-1" x="692.86133" y="312.6765"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-2" x="711.52853" y="312.6765"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-3" x="724.87733" y="312.6765"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-4" x="731.54453" y="312.6765"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-5" x="737.79173" y="312.6765"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-6" x="749.79173" y="312.6765"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-7" x="763.14053" y="312.6765"/> + <use xlink:href="#glyph0-8" x="775.14053" y="312.6765"/> +</g> +<path style="fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 820.15625 494.074219 C 850.617188 506.183594 850.617188 525.816406 820.15625 537.925781 C 789.695312 550.035156 740.304688 550.035156 709.84375 537.925781 C 679.382812 525.816406 679.382812 506.183594 709.84375 494.074219 C 740.304688 481.964844 789.695312 481.964844 820.15625 494.074219 " transform="matrix(1,0,0,1,-25,-125)"/> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-9" x="682.63086" y="399.5"/> + <use xlink:href="#glyph0-2" x="699.96366" y="399.5"/> + <use xlink:href="#glyph0-6" x="713.31246" y="399.5"/> + <use xlink:href="#glyph0-10" x="726.66126" y="399.5"/> + <use xlink:href="#glyph0-4" x="740.01006" y="399.5"/> + <use xlink:href="#glyph0-11" x="746.68686" y="399.5"/> + <use xlink:href="#glyph0-6" x="764.01966" y="399.5"/> + <use xlink:href="#glyph0-3" x="777.36846" y="399.5"/> + <use xlink:href="#glyph0-6" x="784.04526" y="399.5"/> +</g> +<path style="fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 820.15625 580.898438 C 850.617188 593.007812 850.617188 612.640625 820.15625 624.75 C 789.695312 636.859375 740.304688 636.859375 709.84375 624.75 C 679.382812 612.640625 679.382812 593.007812 709.84375 580.898438 C 740.304688 568.789062 789.695312 568.789062 820.15625 580.898438 " transform="matrix(1,0,0,1,-25,-125)"/> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-12" x="685.52539" y="486.3235"/> + <use xlink:href="#glyph0-13" x="701.53339" y="486.3235"/> + <use xlink:href="#glyph0-2" x="713.53339" y="486.3235"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-14" x="726.88219" y="486.3235"/> + <use xlink:href="#glyph0-4" x="738.88219" y="486.3235"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-5" x="745.12939" y="486.3235"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-6" x="757.12939" y="486.3235"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-7" x="770.47819" y="486.3235"/> + <use xlink:href="#glyph0-8" x="782.47819" y="486.3235"/> +</g> +<path style="fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 820.15625 667.722656 C 850.617188 679.832031 850.617188 699.464844 820.15625 711.574219 C 789.695312 723.683594 740.304688 723.683594 709.84375 711.574219 C 679.382812 699.464844 679.382812 679.832031 709.84375 667.722656 C 740.304688 655.609375 789.695312 655.609375 820.15625 667.722656 " transform="matrix(1,0,0,1,-25,-125)"/> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-15" x="683.5332" y="573.14706"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-16" x="705.7644" y="573.14706"/> + <use xlink:href="#glyph0-17" x="713.7564" y="573.14706"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-3" x="719.0892" y="573.14706"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-2" x="725.7564" y="573.14706"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-4" x="739.1052" y="573.14706"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-11" x="745.7724" y="573.14706"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-6" x="763.1052" y="573.14706"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-3" x="776.454" y="573.14706"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-6" x="783.1212" y="573.14706"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-1" x="720.43663" y="174.336301"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-2" x="741.29263" y="174.336301"/> + <use xlink:href="#glyph1-3" x="755.06863" y="174.336301"/> + <use xlink:href="#glyph1-4" x="763.06063" y="174.336301"/> + <use xlink:href="#glyph1-5" x="775.51663" y="174.336301"/> + <use xlink:href="#glyph1-3" x="788.40463" y="174.336301"/> +</g> +<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 765 460.683594 L 765 472.984375 L 765 472.191406 L 765 475.191406 " transform="matrix(1,0,0,1,-25,-125)"/> +<path style="fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 765 481.191406 L 768.601562 471.589844 L 765 475.191406 L 761.398438 471.589844 Z M 765 481.191406 " transform="matrix(1,0,0,1,-25,-125)"/> +<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 765 547.507812 L 765 559.808594 L 765 559.015625 L 765 562.015625 " transform="matrix(1,0,0,1,-25,-125)"/> +<path style="fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 765 568.015625 L 768.601562 558.414062 L 765 562.015625 L 761.398438 558.414062 Z M 765 568.015625 " transform="matrix(1,0,0,1,-25,-125)"/> +<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 765 634.332031 L 765 646.632812 L 765 645.839844 L 765 648.839844 " transform="matrix(1,0,0,1,-25,-125)"/> +<path style="fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 765 654.839844 L 768.601562 645.238281 L 765 648.839844 L 761.398438 645.238281 Z M 765 654.839844 " transform="matrix(1,0,0,1,-25,-125)"/> +<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 842.480469 684.605469 L 862.4375 684.605469 L 862.4375 435.378906 L 843.300781 435.378906 " transform="matrix(1,0,0,1,-25,-125)"/> +<path style="fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 837.300781 435.378906 L 846.898438 438.976562 L 843.300781 435.378906 L 846.898438 431.777344 Z M 837.300781 435.378906 " transform="matrix(1,0,0,1,-25,-125)"/> +<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 387 522 L 673.664062 517.449219 " transform="matrix(1,0,0,1,-25,-125)"/> +<path style="fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 683.261719 517.296875 L 673.605469 513.851562 L 673.71875 521.050781 Z M 683.261719 517.296875 " transform="matrix(1,0,0,1,-25,-125)"/> +<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 399.898438 692.886719 L 686.519531 690.34375 " transform="matrix(1,0,0,1,-25,-125)"/> +<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;" d="M 365.300781 567.972656 L 374.929688 571.484375 L 374.867188 564.285156 Z M 365.300781 567.972656 "/> +<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 390.300781 692.96875 L 399.929688 696.484375 L 399.867188 689.285156 Z M 390.300781 692.96875 " transform="matrix(1,0,0,1,-25,-125)"/> +<path style="fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 134 676.265625 L 294 676.265625 L 294 569.949219 L 134 569.949219 Z M 134 676.265625 " transform="matrix(1,0,0,1,-25,-125)"/> +<path style="fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 124 685.125 L 284 685.125 L 284 578.808594 L 124 578.808594 Z M 124 685.125 " transform="matrix(1,0,0,1,-25,-125)"/> +<path style="fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 114 693.984375 L 390 693.984375 L 390 507.933594 L 114 507.933594 Z M 114 693.984375 " transform="matrix(1,0,0,1,-25,-125)"/> +<path style="fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 110 701.070312 L 270 701.070312 L 270 594.757812 L 110 594.757812 Z M 110 701.070312 " transform="matrix(1,0,0,1,-25,-125)"/> +<path style="fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 100 709.929688 L 260 709.929688 L 260 603.617188 L 100 603.617188 Z M 100 709.929688 " transform="matrix(1,0,0,1,-25,-125)"/> +<path style="fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 90 718.789062 L 366 718.789062 L 366 532.738281 L 90 532.738281 Z M 90 718.789062 " transform="matrix(1,0,0,1,-25,-125)"/> +<path style="fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 244.714844 550.816406 C 252.035156 558.382812 252.035156 570.648438 244.714844 578.210938 C 237.390625 585.777344 225.519531 585.777344 218.199219 578.210938 C 210.878906 570.648438 210.878906 558.382812 218.199219 550.816406 C 225.519531 543.25 237.390625 543.25 244.714844 550.816406 " transform="matrix(1,0,0,1,-25,-125)"/> +<path style="fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 201.132812 610.835938 C 208.457031 618.402344 208.457031 630.667969 201.132812 638.234375 C 193.8125 645.796875 181.941406 645.796875 174.621094 638.234375 C 167.296875 630.667969 167.296875 618.402344 174.621094 610.835938 C 181.941406 603.273438 193.8125 603.273438 201.132812 610.835938 " transform="matrix(1,0,0,1,-25,-125)"/> +<path style="fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 288.507812 610.835938 C 295.832031 618.402344 295.832031 630.667969 288.507812 638.234375 C 281.1875 645.796875 269.316406 645.796875 261.996094 638.234375 C 254.671875 630.667969 254.671875 618.402344 261.996094 610.835938 C 269.316406 603.273438 281.1875 603.273438 288.507812 610.835938 " transform="matrix(1,0,0,1,-25,-125)"/> +<path style="fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 170.003906 670.355469 C 177.328125 677.921875 177.328125 690.1875 170.003906 697.75 C 162.683594 705.316406 150.8125 705.316406 143.492188 697.75 C 136.167969 690.1875 136.167969 677.921875 143.492188 670.355469 C 150.8125 662.789062 162.683594 662.789062 170.003906 670.355469 " transform="matrix(1,0,0,1,-25,-125)"/> +<path style="fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 224.480469 670.355469 C 231.804688 677.921875 231.804688 690.1875 224.480469 697.75 C 217.160156 705.316406 205.289062 705.316406 197.96875 697.75 C 190.644531 690.1875 190.644531 677.921875 197.96875 670.355469 C 205.289062 662.789062 217.160156 662.789062 224.480469 670.355469 " transform="matrix(1,0,0,1,-25,-125)"/> +<path style="fill:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 220.203125 580.011719 L 199.128906 609.039062 " transform="matrix(1,0,0,1,-25,-125)"/> +<path style="fill:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 242.746094 579.984375 L 263.964844 609.066406 " transform="matrix(1,0,0,1,-25,-125)"/> +<path style="fill:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 178.960938 641.582031 L 165.664062 667.007812 " transform="matrix(1,0,0,1,-25,-125)"/> +<path style="fill:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 194.921875 642.492188 L 204.179688 666.097656 " transform="matrix(1,0,0,1,-25,-125)"/> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-6" x="118.204" y="372.336301"/> + <use xlink:href="#glyph1-5" x="133.756" y="372.336301"/> + <use xlink:href="#glyph1-3" x="146.644" y="372.336301"/> + <use xlink:href="#glyph1-7" x="154.636" y="372.336301"/> + <use xlink:href="#glyph1-8" x="166.636" y="372.336301"/> + <use xlink:href="#glyph1-7" x="171.964" y="372.336301"/> + <use xlink:href="#glyph1-9" x="183.964" y="372.336301"/> + <use xlink:href="#glyph1-5" x="191.524" y="372.336301"/> + <use xlink:href="#glyph1-10" x="204.412" y="372.336301"/> + <use xlink:href="#glyph1-9" x="217.756" y="372.336301"/> + <use xlink:href="#glyph1-11" x="225.316" y="372.336301"/> + <use xlink:href="#glyph1-12" x="231.988" y="372.336301"/> + <use xlink:href="#glyph1-13" x="248.884" y="372.336301"/> + <use xlink:href="#glyph1-9" x="261.772" y="372.336301"/> + <use xlink:href="#glyph1-13" x="269.332" y="372.336301"/> + <use xlink:href="#glyph1-11" x="282.22" y="372.336301"/> + <use xlink:href="#glyph1-14" x="288.892" y="372.336301"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-3" x="300.46" y="372.336301"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-5" x="308.02" y="372.336301"/> + <use xlink:href="#glyph1-5" x="320.908" y="372.336301"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph2-1" x="387.9935" y="390.192001"/> + <use xlink:href="#glyph2-2" x="400.2255" y="390.192001"/> + <use xlink:href="#glyph2-3" x="406.3415" y="390.192001"/> + <use xlink:href="#glyph2-4" x="412.4575" y="390.192001"/> + <use xlink:href="#glyph2-5" x="427.5275" y="390.192001"/> + <use xlink:href="#glyph2-6" x="439.3415" y="390.192001"/> + <use xlink:href="#glyph2-7" x="451.1555" y="390.192001"/> + <use xlink:href="#glyph2-3" x="464.2015" y="390.192001"/> + <use xlink:href="#glyph2-8" x="470.3175" y="390.192001"/> + <use xlink:href="#glyph2-6" x="485.8055" y="390.192001"/> + <use xlink:href="#glyph2-9" x="497.6195" y="390.192001"/> + <use xlink:href="#glyph2-6" x="504.5495" y="390.192001"/> + <use xlink:href="#glyph2-3" x="516.3635" y="390.192001"/> + <use xlink:href="#glyph2-10" x="522.4795" y="390.192001"/> + <use xlink:href="#glyph2-5" x="539.1775" y="390.192001"/> + <use xlink:href="#glyph2-6" x="550.9915" y="390.192001"/> + <use xlink:href="#glyph2-11" x="562.8055" y="390.192001"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph2-12" x="388.0548" y="549.192001"/> + <use xlink:href="#glyph2-2" x="400.2868" y="549.192001"/> + <use xlink:href="#glyph2-3" x="406.4028" y="549.192001"/> + <use xlink:href="#glyph2-13" x="412.5188" y="549.192001"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph2-11" x="432.4948" y="549.192001"/> + <use xlink:href="#glyph2-14" x="439.8208" y="549.192001"/> + <use xlink:href="#glyph2-9" x="444.7048" y="549.192001"/> + <use xlink:href="#glyph2-5" x="451.6348" y="549.192001"/> + <use xlink:href="#glyph2-3" x="463.4488" y="549.192001"/> + <use xlink:href="#glyph2-8" x="469.5648" y="549.192001"/> + <use xlink:href="#glyph2-6" x="485.0528" y="549.192001"/> + <use xlink:href="#glyph2-9" x="496.8668" y="549.192001"/> + <use xlink:href="#glyph2-6" x="503.7968" y="549.192001"/> + <use xlink:href="#glyph2-3" x="515.6108" y="549.192001"/> + <use xlink:href="#glyph2-10" x="521.7268" y="549.192001"/> + <use xlink:href="#glyph2-5" x="538.4248" y="549.192001"/> + <use xlink:href="#glyph2-6" x="550.2388" y="549.192001"/> + <use xlink:href="#glyph2-11" x="562.0528" y="549.192001"/> +</g> +<path style="fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 36 175.386719 L 144 175.386719 L 144 225 L 36 225 Z M 36 175.386719 " transform="matrix(1,0,0,1,-25,-125)"/> +<path style="fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 144 175.386719 L 252 175.386719 L 252 225 L 144 225 Z M 144 175.386719 " transform="matrix(1,0,0,1,-25,-125)"/> +<path style="fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 252 175.386719 L 360 175.386719 L 360 225 L 252 225 Z M 252 175.386719 " transform="matrix(1,0,0,1,-25,-125)"/> +<path style="fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 360 175.386719 L 468 175.386719 L 468 225 L 360 225 Z M 360 175.386719 " transform="matrix(1,0,0,1,-25,-125)"/> +<path style="fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 468 175.386719 L 576 175.386719 L 576 225 L 468 225 Z M 468 175.386719 " transform="matrix(1,0,0,1,-25,-125)"/> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-14" x="221.42" y="38.378301"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-13" x="232.532" y="38.378301"/> + <use xlink:href="#glyph1-7" x="245.42" y="38.378301"/> + <use xlink:href="#glyph1-4" x="257.42" y="38.378301"/> + <use xlink:href="#glyph1-15" x="269.876" y="38.378301"/> + <use xlink:href="#glyph1-16" x="288.116" y="38.378301"/> + <use xlink:href="#glyph1-5" x="301.46" y="38.378301"/> + <use xlink:href="#glyph1-16" x="314.348" y="38.378301"/> + <use xlink:href="#glyph1-5" x="327.692" y="38.378301"/> +</g> +<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 468 225 L 714.902344 394.734375 " transform="matrix(1,0,0,1,-25,-125)"/> +<path style="fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 722.8125 400.171875 L 716.941406 391.769531 L 712.863281 397.703125 Z M 722.8125 400.171875 " transform="matrix(1,0,0,1,-25,-125)"/> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph2-15" x="512.281" y="144.192001"/> + <use xlink:href="#glyph2-2" x="524.513" y="144.192001"/> + <use xlink:href="#glyph2-3" x="530.629" y="144.192001"/> + <use xlink:href="#glyph2-8" x="536.745" y="144.192001"/> + <use xlink:href="#glyph2-5" x="552.233" y="144.192001"/> + <use xlink:href="#glyph2-16" x="564.047" y="144.192001"/> + <use xlink:href="#glyph2-17" x="577.093" y="144.192001"/> + <use xlink:href="#glyph2-5" x="589.325" y="144.192001"/> + <use xlink:href="#glyph2-17" x="601.139" y="144.192001"/> + <use xlink:href="#glyph2-5" x="613.371" y="144.192001"/> + <use xlink:href="#glyph2-3" x="625.185" y="144.192001"/> + <use xlink:href="#glyph2-18" x="631.301" y="144.192001"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph2-6" x="641.487" y="144.192001"/> + <use xlink:href="#glyph2-19" x="653.301" y="144.192001"/> + <use xlink:href="#glyph2-20" x="664.301" y="144.192001"/> +</g> +</g> +</svg> diff -r 000000000000 -r 38b037c42c34 paper/sigos.aux --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/paper/sigos.aux Mon Apr 17 20:05:26 2017 +0900 @@ -0,0 +1,29 @@ +\relax +\citation{cerium} +\citation{gears} +\citation{alice} +\citation{segment} +\citation{cbc-lola} +\newlabel{fig:cbc_goto}{{1}{2}} +\newlabel{fig:gearsos}{{2}{3}} +\newlabel{src:context}{{1}{3}} +\@writefile{lol}{\contentsline {lstlisting}{\numberline {1}Context}{3}} +\newlabel{src:initContext}{{2}{3}} +\@writefile{lol}{\contentsline {lstlisting}{\numberline {2}initContext}{3}} +\newlabel{src:sync_enqueue}{{3}{4}} +\@writefile{lol}{\contentsline {lstlisting}{\numberline {3}Enqueue}{4}} +\newlabel{fig:persistent_data_tree}{{3}{5}} +\newlabel{src:sync_dequeue}{{4}{5}} +\@writefile{lol}{\contentsline {lstlisting}{\numberline {4}GetTask}{5}} +\newlabel{src:twice}{{5}{5}} +\@writefile{lol}{\contentsline {lstlisting}{\numberline {5}Twice}{5}} +\newlabel{table:result}{{1}{6}} +\newlabel{fig:result}{{4}{6}} +\citation{opencl} +\citation{cuda} +\newlabel{openmp}{{6}{7}} +\@writefile{lol}{\contentsline {lstlisting}{\numberline {6}OpenMP}{7}} +\citation{*} +\bibstyle{ipsjunsrt} +\bibdata{sigos} +\gdef\ipsj@lastpage{8} diff -r 000000000000 -r 38b037c42c34 paper/sigos.bib --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/paper/sigos.bib Mon Apr 17 20:05:26 2017 +0900 @@ -0,0 +1,56 @@ +@article{ + cerium, + author = "宮國 渡 and 河野 真治 and 神里 晃 and 杉山 千秋", + title = "Cell 用の Fine-grain Task Manager の実装", + journal = "情報処理学会 システムソフトウェアとオペレーティング・システム研究会(OS)", + month = "April", + year = 2008 +} + +@article{ + alice, + author = "照屋 のぞみ and 河野 真治", + title = "分散フレームワークAliceのPC画面配信システムへの応用", + journal = "第57回プログラミング・シンポジウム", + month = "Jan", + year = 2016 +} + +@article{ + segment, + author = "河野 真治 and 杉本 優", + title = "Code Segment と Data Segment によるプログラミング手法", + journal = "第54回プログラミング・シンポジウム", + month = "Jan", + year = 2013 +} + + +@manual{opencl, +author = "{Aaftab Munshi, Khronos OpenCL Working Group}", +title ="{The OpenCL Specification Version 1.0}", +year = 2007 +} + +@misc{cuda, + title = "{CUDA}", + howpublished = "{https://developer.nvidia.com/category/zone/cuda-zone/}" +} + +@article{ + gears, + author = "小久保 翔平 and 伊波 立樹 and 河野 真治", + title = "Monad に基づくメタ計算を基本とする Gears OS の設計", + journal = "情報処理学会システムソフトウェアとオペレーティング・システム研究会(OS)", + month = "May", + year = 2015 +} + +@article{ + cbc-lola, + author = "Kaito TOKKMORI and Shinji KONO", + title = "Implementing Continuation based language in LLVM and Clang", + journal = "LOLA 2015", + month = "July", + year = 2015 +} diff -r 000000000000 -r 38b037c42c34 paper/sigos.dvi Binary file paper/sigos.dvi has changed diff -r 000000000000 -r 38b037c42c34 paper/sigos.log --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/paper/sigos.log Mon Apr 17 20:05:26 2017 +0900 @@ -0,0 +1,358 @@ +This is e-pTeX, Version 3.14159265-p3.6-141210-2.6 (utf8.euc) (TeX Live 2015) (preloaded format=platex 2015.11.28) 12 APR 2017 19:51 +entering extended mode + restricted \write18 enabled. + %&-line parsing enabled. +**sigos.tex +(./sigos.tex +pLaTeX2e <2006/11/10> (based on LaTeX2e <2015/01/01> patch level 0) +Babel <3.9l> and hyphenation patterns for 79 languages loaded. +(./ipsjpapers.cls +Document Class: ipsjpapers 2007/06/15 ver 2.12 +(./ipsjpapers.sty +\old@latex@skip=\skip41 +\@Q=\dimen118 +\jfsize=\count81 +\jspaceskip=\dimen119 +\@mojihaba=\dimen120 +LaTeX Font Info: External font `cmex10' loaded for size +(Font) <9> on input line 546. +LaTeX Font Info: External font `cmex10' loaded for size +(Font) <6> on input line 546. +LaTeX Font Info: External font `cmex10' loaded for size +(Font) <5> on input line 546. +\@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@affi@pfootnote=\count87 +\c@volpageoffset=\count88 +\c@volume=\count89 +\c@number=\count90 +\c@year=\count91 +\@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=\count92 +\c@subsection=\count93 +\c@subsubsection=\count94 +\c@paragraph=\count95 +\c@subparagraph=\count96 +\bib@adjustheight=\dimen135 +\c@figure=\count97 +\c@table=\count98 +\cap@linewidth=\dimen136 +\cap@hsize=\dimen137 +\cap@prevgraf=\count99 +\cap@box=\box48 +\PF@fnotectr=\count100 +\PF@page=\count101 +\adj@boxa=\box49 +\adj@boxb=\box50 +\adj@height=\dimen138 +\adj@deadcycle=\count102 +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 880. +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 880. +))) +(/usr/local/texlive/2015/texmf-dist/tex/latex/graphics/graphicx.sty +Package: graphicx 2014/10/28 v1.0g Enhanced LaTeX Graphics (DPC,SPQR) + +(/usr/local/texlive/2015/texmf-dist/tex/latex/graphics/keyval.sty +Package: keyval 2014/10/28 v1.15 key=value parser (DPC) +\KV@toks@=\toks15 +) +(/usr/local/texlive/2015/texmf-dist/tex/latex/graphics/graphics.sty +Package: graphics 2014/10/28 v1.0p Standard LaTeX Graphics (DPC,SPQR) + +(/usr/local/texlive/2015/texmf-dist/tex/latex/graphics/trig.sty +Package: trig 1999/03/16 v1.09 sin cos tan (DPC) +) +(/usr/local/texlive/2015/texmf-dist/tex/latex/latexconfig/graphics.cfg +File: graphics.cfg 2010/04/23 v1.9 graphics configuration of TeX Live +) +Package graphics Info: Driver file: dvipdfmx.def on input line 94. + +(/usr/local/texlive/2015/texmf-dist/tex/latex/dvipdfmx-def/dvipdfmx.def +File: dvipdfmx.def 2015/03/26 v4.04 LaTeX color/graphics driver for dvipdfmx (T +eX Live/ChoF) +)) +\Gin@req@height=\dimen139 +\Gin@req@width=\dimen140 +) +(/usr/local/texlive/2015/texmf-dist/tex/latex/url/url.sty +\Urlmuskip=\muskip10 +Package: url 2013/09/16 ver 3.4 Verb mode for urls, etc. +) +(/usr/local/texlive/2015/texmf-dist/tex/latex/listings/listings.sty +\lst@mode=\count103 +\lst@gtempboxa=\box51 +\lst@token=\toks16 +\lst@length=\count104 +\lst@currlwidth=\dimen141 +\lst@column=\count105 +\lst@pos=\count106 +\lst@lostspace=\dimen142 +\lst@width=\dimen143 +\lst@newlines=\count107 +\lst@lineno=\count108 +\abovecaptionskip=\skip43 +\belowcaptionskip=\skip44 +\lst@maxwidth=\dimen144 + +(/usr/local/texlive/2015/texmf-dist/tex/latex/listings/lstmisc.sty +File: lstmisc.sty 2014/09/06 1.5e (Carsten Heinz) +\c@lstnumber=\count109 +\lst@skipnumbers=\count110 +\lst@framebox=\box52 +) +(/usr/local/texlive/2015/texmf-dist/tex/latex/listings/listings.cfg +File: listings.cfg 2014/09/06 1.5e listings configuration +)) +Package: listings 2014/09/06 1.5e (Carsten Heinz) + +(./jlisting.sty +Package: jlisting 2006/02/20 0.2 (Thor) +\lst@nextchar=\count111 +\lst@inputfile=\read1 +) +(/usr/local/texlive/2015/texmf-dist/tex/latex/enumitem/enumitem.sty +Package: enumitem 2011/09/28 v3.5.2 Customized lists +\labelindent=\skip45 +\enit@outerparindent=\dimen145 +\enit@toks=\toks17 +\enit@inbox=\box53 +\enitdp@description=\count112 +) +(/usr/local/texlive/2015/texmf-dist/tex/latex/listings/lstlang1.sty +File: lstlang1.sty 2014/09/06 1.5e listings language file +) +(/usr/local/texlive/2015/texmf-dist/tex/latex/listings/lstmisc.sty +File: lstmisc.sty 2014/09/06 1.5e (Carsten Heinz) +) +(./dummy.tex) +No file sigos.aux. +\openout1 = `sigos.aux'. + +LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 35. +LaTeX Font Info: ... okay on input line 35. +LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 35. +LaTeX Font Info: ... okay on input line 35. +LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 35. +LaTeX Font Info: ... okay on input line 35. +LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 35. +LaTeX Font Info: ... okay on input line 35. +LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 35. +LaTeX Font Info: ... okay on input line 35. +LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 35. +LaTeX Font Info: ... okay on input line 35. +LaTeX Font Info: Checking defaults for JY1/mc/m/n on input line 35. +LaTeX Font Info: ... okay on input line 35. +LaTeX Font Info: Checking defaults for JT1/mc/m/n on input line 35. +LaTeX Font Info: ... okay on input line 35. +\c@lstlisting=\count113 +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 86. +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 86. +LaTeX Font Info: External font `cmex10' loaded for size +(Font) <10.95> on input line 86. +LaTeX Font Info: External font `cmex10' loaded for size +(Font) <8> on input line 86. +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 86. +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 86. +LaTeX Font Info: External font `cmex10' loaded for size +(Font) <7> on input line 86. +LaTeX Font Info: Font shape `JT1/mc/bx/n' in size <6> not available +(Font) Font shape `JT1/gt/m/n' tried instead on input line 101. +LaTeX Font Info: Font shape `JY1/mc/bx/n' in size <6> not available +(Font) Font shape `JY1/gt/m/n' tried instead on input line 101. + +LaTeX Warning: Citation `cerium' on page 1 undefined on input line 101. + + +LaTeX Warning: Citation `gears' on page 1 undefined on input line 107. + +[1 + + +] + +LaTeX Warning: Citation `alice' on page 2 undefined on input line 127. + + +LaTeX Warning: Citation `segment' on page 2 undefined on input line 127. + + +LaTeX Warning: Citation `cbc-lola' on page 2 undefined on input line 144. + +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 151. +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 151. + +LaTeX Warning: Reference `fig:cbc_goto' on page 2 undefined on input line 151. + +File: ./pic/cbc_goto.pdf Graphic file (type pdf) +<./pic/cbc_goto.pdf> +LaTeX Font Info: Font shape `JT1/mc/bx/n' in size <7> not available +(Font) Font shape `JT1/gt/m/n' tried instead on input line 161. +LaTeX Font Info: Font shape `JY1/mc/bx/n' in size <7> not available +(Font) Font shape `JY1/gt/m/n' tried instead on input line 161. + + +LaTeX Warning: Reference `fig:gearsos' on page 2 undefined on input line 187. + +File: ./pic/gearsos.pdf Graphic file (type pdf) +<./pic/gearsos.pdf> [2] + +LaTeX Warning: Reference `src:context' on page 3 undefined on input line 205. + + +LaTeX Warning: Reference `src:initContext' on page 3 undefined on input line 20 +5. + +LaTeX Font Info: Font shape `OT1/cmtt/bx/n' in size <7> not available +(Font) Font shape `OT1/cmtt/m/n' tried instead on input line 207. + +Overfull \hbox (69.5623pt too wide) in paragraph at lines 207--207 +[]\OT1/cmr/m/n/9 Context + [] + +[3] +Overfull \hbox (83.43721pt too wide) in paragraph at lines 208--208 +[]\OT1/cmr/m/n/9 initContext + [] + + +LaTeX Warning: Reference `src:context' on page 4 undefined on input line 210. + + +LaTeX Warning: Reference `src:initContext' on page 4 undefined on input line 21 +0. + + +LaTeX Warning: Reference `src:context' on page 4 undefined on input line 213. + + +LaTeX Warning: Reference `src:initContext' on page 4 undefined on input line 21 +8. + + +LaTeX Warning: Reference `src:context' on page 4 undefined on input line 218. + + +LaTeX Warning: Reference `src:context' on page 4 undefined on input line 219. + + +LaTeX Warning: Reference `src:context' on page 4 undefined on input line 227. + + +LaTeX Warning: Reference `src:sync_enqueue' on page 4 undefined on input line 2 +49. + + +LaTeX Warning: Reference `src:sync_enqueue' on page 4 undefined on input line 2 +50. + + +Overfull \hbox (72.00601pt too wide) in paragraph at lines 252--252 +[]\OT1/cmr/m/n/9 Enqueue + [] + + +LaTeX Warning: Reference `fig:persistent_data_tree' on page 4 undefined on inpu +t line 257. + +[4] +File: ./pic/persistent_date_tree.pdf Graphic file (type pdf) + <./pic/persistent_date_tree.pdf> +Overfull \hbox (22.76657pt too wide) in paragraph at lines 262--263 + [] + [] + + +LaTeX Warning: Reference `src:sync_dequeue' on page 5 undefined on input line 2 +92. + + +Overfull \hbox (71.21924pt too wide) in paragraph at lines 295--295 +[]\OT1/cmr/m/n/9 GetTask + [] + + +LaTeX Warning: Reference `src:twice' on page 5 undefined on input line 314. + +[5] +Overfull \hbox (61.34013pt too wide) in paragraph at lines 316--316 +[]\OT1/cmr/m/n/9 Twice + [] + + +LaTeX Warning: Reference `table:result' on page 6 undefined on input line 331. + + +LaTeX Warning: Reference `fig:result' on page 6 undefined on input line 331. + +File: pic/twice_640.pdf Graphic file (type pdf) +<pic/twice_640.pdf> [6] + +LaTeX Warning: Citation `opencl' on page 7 undefined on input line 419. + + +LaTeX Warning: Citation `cuda' on page 7 undefined on input line 419. + + +LaTeX Warning: Reference `openmp' on page 7 undefined on input line 432. + + +Overfull \hbox (73.79974pt too wide) in paragraph at lines 434--434 +[]\OT1/cmr/m/n/9 OpenMP + [] + +[7] +No file sigos.bbl. +[8 + +] (./sigos.aux) + +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: + 3139 strings out of 493777 + 42589 string characters out of 6151333 + 329154 words of memory out of 5000000 + 6615 multiletter control sequences out of 15000+600000 + 18431 words of font info for 72 fonts, out of 8000000 for 9000 + 929 hyphenation exceptions out of 8191 + 30i,10n,49p,546b,1569s stack positions out of 5000i,500n,10000p,200000b,80000s + +Output written on sigos.dvi (8 pages, 67756 bytes). diff -r 000000000000 -r 38b037c42c34 paper/sigos.pdf Binary file paper/sigos.pdf has changed diff -r 000000000000 -r 38b037c42c34 paper/sigos.tex --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/paper/sigos.tex Mon Apr 17 20:05:26 2017 +0900 @@ -0,0 +1,490 @@ +\documentclass[techrep]{ipsjpapers} +\usepackage[dvipdfmx]{graphicx} +\usepackage{url} +\usepackage{listings,jlisting} +\usepackage{enumitem} + +\lstset{ + language=C, + tabsize=2, + frame=single, + basicstyle={\ttfamily\footnotesize},% + identifierstyle={\footnotesize},% + commentstyle={\footnotesize\itshape},% + keywordstyle={\footnotesize\bfseries},% + ndkeywordstyle={\footnotesize},% + stringstyle={\footnotesize\ttfamily}, + breaklines=true, + captionpos=b, + columns=[l]{fullflexible},% + xrightmargin=0zw,% + xleftmargin=1zw,% + aboveskip=1zw, + numberstyle={\scriptsize},% + stepnumber=1, + numbersep=0.5zw,% + lineskip=-0.5ex, +} +\renewcommand{\lstlistingname}{Code} + +\input{dummy.tex} %% Font + +% ユーザが定義したマクロなど. +\makeatletter + +\begin{document} + +% 和文表題 +\title{Gears OS における並列処理} +% 英文表題 +\etitle{} + +% 所属ラベルの定義 +\affilabel{1}{琉球大学大学院理工学研究科情報工学専攻 \\Interdisciplinary Information Engineering, Graduate School of Engineering and Science, University of the Ryukyus.} +\affilabel{2}{琉球大学工学部情報工学科\\Information Engineering, University of the Ryukyus.} + +% 和文著者名 +\author{ + 東恩納 琢偉\affiref{1} + \and + 伊波 立樹 \affiref{2} + \and + 河野 真治\affiref{2} +} + +% 英文著者名 +\eauthor{ + Takui HIGASHIONNA\affiref{1} + \and + Tatsuki IHA\affiref{2} + \and + Shinji KONO\affiref{2} +} + +% 連絡先(投稿時に必要.製版用では無視される.) +\contact{東恩納 琢偉\\ + 〒903-0213 沖縄県西原町千原1番地\\ + 琉球大学工学部情報工学科\\ + TEL: (098)895-2221\qquad FAX: (098)895-8727\\ + email: ikkun@cr.ie.u-ryukyu.ac.jp} + +% 和文概要 +\begin{abstract} + Gears OS は継続を中心とした言語で記述されており、メタ計算をノーマルレベルと分けて記述することができる。並列処理はメタ計算によって記述されており、CbC自体には並列処理の機能はない。Gears OS のプログラムはCode Gear とData Gear の集まりであるinterfaceによって行われる。Gears OSでのスレッドはinterfaceの集合で出来ており、code gear data gearを接続するcontextというmeta data gear を持つ。 並行実行する場合は新しくcontextを生成し、それを時分割または、物理的なCPUに割り当てることによって実現される。 つまり、contextそのものがスレッドとなる。 + + Gears OSでの同期機構はdata gear を待ち合わせることによって行われる。例えば、GPU上で実行する場合は必要なdata gearをGPU内部に転送し、それらが揃った時点で並列実行される。data gear の待ち合わせはメモリ上のdata gearのmeta data gear に待ち合わせ用のキューを作ることによって行われる。キューにはGears OSのスレッドつまりcontext meta data gearが入る。 + +本論文ではGears OSでの並列処理の構成方法について述べる。並列処理をメタレベルで行うことにより、並列処理で重要なチューニングや性能測定あるいはデバッグをメタ計算を切り替えることにより、ノーマルレベルの計算を変更する +ことなく行うことができることを示す。 +\end{abstract} + +% 英文概要 +\begin{eabstract} +\end{eabstract} + +% 表題などの出力 +\maketitle + +% 本文はここから始まる + +% Introduce +\section{Gears OS} +CPU の処理速度の向上のためクロック周波数の増加は発熱や消費電力の増大により難しくなっている。 +そのため、クロック周波数を上げる代わりに CPU のコア数を増やす傾向にある。 +マルチコア CPU の性能を発揮するには、処理をできるだけ並列化しなければならない。 +また、PC の処理性能を上げるためにマルチコア CPU 以外にも GPU や CPU と GPU を複合したヘテロジニアスなプロセッサが登場している。 +並列処理をする上でこれらのリソースを無視することができない。 +しかし、これらのプロセッサで性能を出すためにはこれらのアーキテクチャに合わせた並列プログラミングが必要になる。 +並列プログラミングフレームワークではこれらのプロセッサを抽象化し、CPU と同等に扱えるようにすることも求められる。 +本研究では Cerium を開発して得られた知見を元にこれらの性質を持つ並列プログラミングフレームワークとして Gears OS の設計・実装を行う。 + +Cerium\cite{cerium} は本研究室で開発していた並列プログラミングフレームワークである。 +Cerium では Task と呼ばれる分割されたプログラムを依存関係に沿って実行することで並列実行を可能にする。 +Cerium では依存関係を Task 間で設定するが、本来 Task はデータに依存するもので Task 間の依存関係ではデータの依存関係を保証することができない。 +また、Task には汎用ポインタとしてデータの受け渡しを行うため、型情報がない。 +そのため、汎用ポインタをキャストして利用するしか無く、型の検査を行う事ができない。 + +Gears OS\cite{gears} は Code Gear と Data Gear によって構成される。 +Code Gear は処理の単位、Data Gear はデータの単位となる。 +Gears OS では Code/Data Gear を用いて記述することでプログラム全体の並列度を高めて、効率的に並列処理することが可能になることを目的とする。 +また、Gears OS の実装自体が Code/Data Gear を用いたプログラミングの指針となるように実装する。 +Gears OS における Task は実行する Code Gear と実行に必要な Input Data Gear, 出力される Output Data Gear の組で表現される。 +Input/Output Data Gear によって依存関係が決定し、それに沿って並列実行する。 +依存関係の解決などの Meta Computation の実行は Meta Code Gear で行われる。 +Meta Code Gear は Code Gear に対応しており、 Code Gear が実行した後にそれに対応した Meta Code Gear が実行される。 +本論文ではGears OS のプロトタイプとして Data Gear を管理する Persistent Data Tree, Task を管理する TaskQueue, 並列処理を行う Worker を実装し、簡単な例題を用いて Gears OS の評価を行う。 + +\section{Code Gear と Data Gear} +Gears OS はプログラムの単位として Gear を用いる。 +Gear は並列実行の単位、データの分割、Gear 間の接続等になる。 + +Code Gear はプログラムの処理そのものである。 +Code Gear は任意の数の Input Data Gear を参照し、 処理が完了すると任意の数の Output Data Gear に書き込む。 +Code Gear は接続された Data Gear 以外には参照を行わない。 + +Data Gear は Data そのものを表しており、int や文字列などの Primitive Data Type が入っている。 + +Code Gear、 Data Gear は 本研究室で開発されている Alice\cite{alice} で使われている単位である Code Segment、 Data Segment\cite{segment} にそれぞれ対応する。 + +Gears OS では Code Gear と Input / Output Data Gear の対応から依存関係を解決し、 Code Gear の並列実行を可能とする。 + +Gear の特徴として処理やデータの構造が Code Gear、 Data Gear に閉じていることにある。 +これにより、実行時間、メモリ使用量などを予想可能なものにする事が可能になる。 + +\section{Meta Computation} +Gears OS では通常の処理を Computation、 Computation のための Computation を Meta Computation として扱う。 +Meta Computation の例として並列処理の依存関係の解決や、 OS が行うネットワーク管理、メモリ管理等の資源制御などが挙げられる。 + +Gears OS では Meta Computation を Meta Code Gear、 Meta Data Gear で表現する。 +Meta Code Gear は通常の Code Gear 直後に遷移され、 Meta Computation を実行する。 +Meta Computation の実行後は通常の Code Gear で指定した Code Gear を実行する。 +つまり Code Gear の実行後は何かしらの Meta Code Gear を実行する。 + +\section{Continuation based C} +Gears OS の実装は本研究室で開発している CbC(Continuation based C)\cite{cbc-lola}を用いて行う。 +CbC は処理を Code Segment を用いて記述することを基本としているため、 Gears OS の Code Gear を記述するのに適している。 + +CbC のプログラムでは C の関数の代わりに Code Segment を用いてい処理を記述している。 Code Segment は C の関数と異なり戻り値を持たない。 +Code Segment の宣言は C の関数の構文と同様に行い、 型に \_\_code を使うことで宣言できる。 + +Code Segment から Code Segment への移動は goto の後に Code Segment 名と引数を並べた記述するという構文を用いて行う。 +この goto による処理の遷移を継続と呼ぶ。 図\ref{fig:cbc_goto} は Code Segment 間の継続関係を表している。 + +C では関数呼び出しを行うたび、関数の引数の値がスタックに積まれていくが、Code Segment では戻り値を持たないため、スタックに値を積んでいく必要がなくスタックを変更する必要が無い。 +このようなスタックに値を積まない継続、つまり呼び出し元の環境を持たない継続を軽量継続と呼ぶ。 +軽量継続により、並列化、ループ制御、関数コールとスタックの操作を意識した最適化がソースコードレベルで行えるようにする。 + +\begin{figure}[ht] + \begin{center} + \includegraphics[width=70mm]{./pic/cbc_goto.pdf} + \end{center} + \caption{gotoによる Code Segment 間の接続} + \label{fig:cbc_goto} +\end{figure} + +\section{CbC での Gears OS の構文サポート} +CbC は Gears OS の構文のサポートを行う。 + +Gesrs OS では Contextという接続可能な Data Gear のリストからデータを取り出して処理行う。 +しかし、 Context を直接扱うのはセキュリティ上好ましくない。 +そこで Gears OS では Context から必要なデータを取り出して Code Gear に接続する stub を定義する。 +stub は Code Gear から推論することが可能のため、 CbC は自動的に stub の生成を行う。 + +また、Code Gear の遷移には Meta computation を行うために Meta Code Gear を挟む。 +CbC では Meta Code Gear への接続も自動的に行うようにする。 + +\section{Gears OS の構成} +Gears OS は以下の要素で構成される。 + +\begin{itemize} + \item Context + \item TaskQueue + \item TaskManager + \item Persistent Data Tree + \item Worker +\end{itemize} + +図\ref{fig:gearsos} に Gears OS の構成図を示す。 + +\begin{figure}[ht] + \begin{center} + \includegraphics[width=70mm]{./pic/gearsos.pdf} + \end{center} + \caption{Gears OS の構成図} + \label{fig:gearsos} +\end{figure} + +\section{Context} +Context は接続可能な Code/Data Gear のリスト、TaskQueue へのポインタ、 Persistent Data Tree へのポインタ、 Temporal Data Gear のためのメモリ空間等を持っている Meta Data Gear である。 +Gears OS では必要な Code/Data Gear に参照したい場合、このContext を通す必要がある。 + +メインとなる Context と Worker 用 Context があり、 TaskQueue と Persistent Data Tree は共有される。 +Temporal Data Gear のためのメモリ空間は Context 毎に異なり、互いに干渉することはない。 +Worker 間の相互作用は Persistent Data Tree への読み書きのみで行う。 + +Code \ref{src:context}, Code \ref{src:initContext} に実際の Context の定義と生成を示す。 + +\lstinputlisting[label=src:context, caption=Context]{./src/context.h} +\lstinputlisting[label=src:initContext, caption=initContext]{./src/context.c} + +Code \ref{src:context}, Code \ref{src:initContext} は以下の事を定義している。 + +\paragraph* {Code Gear の名前とポインタのリスト} +Code Gear の名前とポインタの対応は Code \ref{src:context} の enum Codeと 関数ポインタによって表現される。 +実際に Code Gear に接続する際は enum Code を指定することで接続を行う。 +これにより、実行時のルーチンなどを動的に変更することが可能となる。 + +\paragraph* {Data Gear の Allocation 用の情報} +Context の生成時(Code \ref{src:initContext})、 Allocation 用に Code \ref{src:context} の ALLOCATE\_SIZE 分の領域を確保する。 +Context にはその領域へのポインタとサイズが格納されている(Code \ref{src:context}の struct Context 内の heap, heapLimit)。 +実際に Allocation する際は heap を 必要な Data Gear のサイズに応じてインクリメントすることで Data Gear の Allocation を実現する。 + +\paragraph* {Data Gear へのポインタ} +Context には Allocation 等で生成した Data Gear へのポインタが格納されている。 +Code Gear は Context を通して Data Gear へアクセスする。 + +\paragraph* {Data Gear に格納される Data Type の情報} +Data Gear は Code \ref{src:context} の union Data と その中の struct によって表現される。 +Context には Data Gear の Data Type の情報が格納されている。 +この情報から確保される Data Gear のサイズなどを決定する。 + +\section{TaskQueue} +Gears OS における Task Queue は Synchronized Queue で実現される。 +メインとなる Context と Worker 用 の Context で共有され、 Worker が TaskQueue から Task を取得し、実行することで並列処理を行う。 + +Gears OS の Queue は Queue を表す Data Gear と List を表現する Element という名前の Data Gear を組み合わせて表現する。 +Queue を表す Data Gear には List 構造の先頭の Element を指す first, 末尾の Element を指す last, Element の個数を示す count が格納される。 +Element を表す Data Gear は、Task を示す task、 次の Element を示す next が格納される。 + +Queue に対して操作を行う場合、 Queue 自体の Data Gear を書き換える。 +Task を 挿入する場合、 新しく Element を生成し、 Queue の last から List 構造の末尾に新しい Element を追加し、 Queue の last を書き換える。 +Task を 取得する場合、 Queue の first から List 構造を最初の要素を取り出し、 取り出した要素の次の要素の参照を Queue の first に書き込む。 + +Gears OS の TaskQueue はマルチスレッドでの操作を想定しているため、データの一貫性を保証する必要がある。 +そのため、データの一貫性を並列実行時でも保証するために Compare and Swap(CAS) を利用して Queue の操作を行っている。 +CAS はデータの比較・置換をアトミックに行う命令である。 +メモリからデータの読みだし、変更、メモリへのデータの書き出しという一連の処理を CAS を利用することで処理の間に他のスレッドがメモリに変更を加えないことを保証することができる。 +CAS に失敗した場合は置換を行わず、再びデータの呼び出しから始める。 + +Code \ref{src:sync_enqueue} に CAS を使用した Task 挿入を示している。 +Code \ref{src:sync_enqueue} は 2つのCode Gear を定義しており、 putQueue3 は Queue に要素がある場合、 putQueue4 は Queue に要素がない場合の Task 挿入を示している。 + +\lstinputlisting[label=src:sync_enqueue, caption=Enqueue]{./src/sync_enqueue.c} + +\section{Persistent Data Tree} +Gears OS は Persistent Data Gear の管理に木構造を用いる。 +この木構造は非破壊的で構成される。 +非破壊木構造とは図\ref{fig:persistent_data_tree}のように一度構築した木構造を破壊すること無く新しい木構造を構築することで、木構造を編集する方法である。 +非破壊木構造は木構造を書き換えることなく編集を行うため、読み書きを平行して行うことが可能である。 + +\begin{figure}[ht] + \begin{center} + \includegraphics[width=80mm]{./pic/persistent_date_tree.pdf} + \end{center} + \caption{木構造の非破壊的編集} + \label{fig:persistent_data_tree} +\end{figure} + +Gears OS では Data Tree として木構造を利用する。 +その場合、普通に木構造を構築するだけでは偏った木構造が構築される可能性がある。 +最悪なケースでは線形リストになり、計算量が O(n) となる。 + +そのため、挿入・削除・検索における処理時間を保証するため Red-Black Tree を用いて木構造の平衡性を保証する。 +Red-Black Tree は通常の二分探索木としての条件の他に以下の条件を持つ。 + +\begin{itemize} + \item 各ノードは赤または黒の色を持つ。 + \item ルートの色は黒である。 + \item 赤ノードは2つの黒ノードを子として持つ(赤ノードが続くことはない)。 + \item ルートから最下位ノードへのパスに含まれる黒ノードの数はどの最下位ノードでも一定である。 +\end{itemize} + +これらの条件によってルートから最も遠い最下位ノードへのパスの長さはルートから最も近い最下位ノードへのパスの長さの2倍に収まることが保証される。 + +\section{Worker} +Worker は TaskQueue から Task を取得し、実行する。 +Task には実行する Code Gear と実行に必要な Code Gear の key が格納されている。 +実行に必要な Code Gear は Persistent Data Tree から key を使って取得する。 + +各 Worker は個別の Context を参照しており、 メモリ空間も独立しているのでメモリを確保する処理で他の Thread を止めることはない。 +ただし、Persistent Data Tree への書き出しは競合する可能性があるので CAS を利用してデータの一貫性を保証する必要がある。 + +Worker が TaskQueue から Task の取得を行う Code Gear を Code \ref{src:sync_dequeue} に示す。 +Task Queue から取得した Task から実行する Code Gear と必要な Data Gear の key を Worker Context に書き込むことで実行される。 + +\lstinputlisting[label=src:sync_dequeue, caption=GetTask]{./src/sync_dequeue.c} + +Worker から取得された Task の Code Gear は並列実行される。 +並列実行される Code Gear と言っても他の Code Gear と同じである。 +これは Gears OS 自体が Code Gear によって構成されていることに起因する。 +つまり、 Gears OS を利用して書かれたプログラムで定義されている Code Gear に依存関係がないとき、全て並列に実行することができる。 + +\section{TaskManager} +Gears OS の TaskManager は WaitTaskQueue に入っている Task の依存関係を解決する。 +Task には Input/Output Data Gear の情報が格納されている。 +Input Data Gear は Task に必要な Data Gear で揃ったら Task は実行可能な状態になる。 +Output Data Gear は Task が Persistent Data Tree に書き出す Data Gear である。 +この Input と Output の関係が依存関係となる。 +TaskManager は Persistent Data Tree を監視しており、WaitTaskQueue に入っている Task の Input Data Gear が揃っているのを確認したら実行可能な Task として AcitiveTaskQueue へ移動させる。 + +\section{プロトタイプの動作} +Gears OS の評価として依存関係のない例題の並列実行を行った。 + +今回使用した例題は Twice という整数配列を2倍にする例題である。 +Code \ref{src:twice} に Twice の処理を行う Code Gear を示す。 + +\lstinputlisting[label=src:twice, caption=Twice]{./src/twice.c} + +以下に今回の処理の流れを示す。 + +\begin{itemize} + \item 配列サイズを元に index, alignment, 配列へのポインタを持つ Data Gear に分割。 + \item Data Gear を Persistent Data Tree に挿入。 + \item 実行する Code Gear(Twice) と実行に必要な Data Gear への key を持つ Task を生成。 + \item 生成した Task を TaskQueue に挿入。 + \item Worker の起動。 + \item Worker が TaskQueue から Task を取得。 + \item 取得した Task を元に必要な Data Gear を Persistent Data Tree から取得。 + \item 並列の処理される Code Gear(Twice) を実行。 +\end{itemize} + +要素数$2^{17}$*1000 のデータを640個の Task に分割し、コア数を変更して測定を行った結果を表\ref{table:result}、図\ref{fig:result}に示す。 + +\begin{table}[ht] + \begin{center} + \small + \begin{tabular}[htpb]{|c||c|c|c|} + \hline + Processor & Time(ms) \\ + \hline + \hline + 1 CPU & 1315 \\ + \hline + 2 CPUs & 689 \\ + \hline + 4 CPUs & 366 \\ + \hline + 8 CPUs & 189 \\ + \hline + 12 CPUs & 111 \\ + \hline + \end{tabular} + \caption{要素数$2^{17}$*1000 のデータに対する Twice} + \label{table:result} + \end{center} +\end{table} + +\begin{figure}[ht] + \begin{center} + \includegraphics[width=70mm]{pic/twice_640.pdf} + \end{center} + \caption{要素数$2^{17}$*1000 のデータに対する Twice} + \label{fig:result} +\end{figure} + +結果から、 1 CPU と 12 CPU で約 11.8 倍の速度向上が見られた。 +しかし、 タスクの粒度が小さすぎると CAS の失敗が多くなり、性能がでないことがある。 +Code Gear には実行時間を予想可能なものにするという特徴があるため、タスクが最適な粒度なのかを検査する機能が必要になると考えられる。 + +\section{比較} +本章では今回設計・実装した Gears OS と既存の並列フレームワークとの比較を行う。 +また、Gears OS は以下のような性質を有している。 + +\begin{itemize} + \item リソース管理 \\ + Context 毎に異なるメモリ空間を持ち、それを管理する。 + Meta Code Gear, Meta Data Gear を用いてネットワーク管理、並行制御等を行う。 + \item 処理の効率化 \\ + 依存関係のない Code Gear は並列実行することが可能である。 + また、Code Gear 自体が処理の最小単位となっており Code Gear を利用してプログラムを記述するとプログラム全体の並列度を高めることに繋がる。 + \item プロセッサ利用の抽象化 \\ + Multi Core CPU, GPU を同等の実行機構で実行可能である。 +\end{itemize} + +これらの性質を有する Gears OS はオペレーティングシステムであると言えるので既存の OS との比較も行う。 + +\paragraph*{Cerium} +\begin{itemize} + \item 依存関係 \\ + Cerium では Task 間で依存関係を設定する。 + Task の途中でデータが破損しても完了を TaskManager に通知し、依存関係を解決して次の Task が実行される。 + これではデータの正しさを保証することができない。 + + Gears OS では Task に Input/Output Data Gear を設定することで Input と Output の関係から依存関係を決定する。 + TaskManager は Persistent Data Tree を監視し、必要な Data Gear が揃っていることを確認すると依存関係を解決する。 + \item データの型情報 \\ + Cerium では Task にデータを引き渡すとき汎用ポインタを用いる。 + このときデータの型情報が落ちるので Task の組み合わせが型的に安全なのか保証することができない。 + + Gears OS では型情報を持つ分割されたデータとして Data Gear を定義し、Data Gear 単位でデータを Task に引き渡す。 + Data Gear を型シグネチャとして Task の組み合わせが正しいことを保証する。 + \item Allocator \\ + Cerium では Thread 間で Allocator を共有している。 + ある Thread がメモリ確保を行うとその間、他の Thread はメモリを確保することができず並列度が低下する。 + + Gears OS では Thraed ごとに Context を割り当てる。 + Context は独立したメモリ空間を持つので他の Thread と干渉することないメモリの確保を行うことができる。 + \item 並列処理との相性 \\ + Cerium はオブジェクト指向言語である C++ で実装されている。 + オブジェクト指向は保守性と再利用性を高めるためにカプセル化とポリモフィズムを重視する。 + オブジェクトの状態によって振る舞いが変わるため参照透過な処理でなくなり並列処理との相性が悪い。 + + Gears OS は本研究で開発している CbC を用いて実装する。 + CbC は Code Segment という単位でプログラムを記述する。 + Code Segment はスタックに値を積まない軽量継続を用いて他の Code Segment に遷移する。 + この軽量継続により並列化、ループ制御などを意識した最適化がソースコードレベルで行うことができる。 +\end{itemize} + +\paragraph*{OpenCL/CUDA} +OpenCL\cite{opencl}/CUDA\cite{cuda} では並列処理に用いる関数を kernel として定義する。 +OpenCL では CommandQueue, CUDA では Stream という命令キューに命令を発行することで GPU を利用することができる。 +命令キューは発行された順番通りに命令が実行されることが保証されている。 +複数の命令キューを準備して、各命令キューに命令を発行することで命令を並列に実行することができる。 +命令キュー単位で依存関係を設定することができる。 +つまり、命令キューに入っている最後の命令次第でデータを待っているのか kernel の実行を待っているのか変わるので依存関係の記述が複雑になる。 +データは kernel の引数の定義に型変換され渡される。 +データ転送の際には型情報が落として渡す必要があり、型を意識したプログラミングが必要になる。 + +一方、Gears OS ではデータによって依存関係が決定する。 +また、データを Data Segment という単位で分割して管理しており型情報を保ったままデータの受け渡しを行うことができる。 + +\paragraph*{OpenMP} +OpenMP ではループ制御構文の前にアノテーションを付ける(Code \ref{openmp})ことでコンパイラが解釈し、スレッド処理を行うように変換して並列処理を行う。 + +\lstinputlisting[label=openmp, caption=OpenMP]{src/openmp.c} + +他の並列化手法に比べて既存のコードに対する変更が少なくて済む。 +しかし、この方法ではプログラム全体の並列度が上がらずアムダールの法則により性能向上が頭打ちになる。 + +一方、Gears OS では初めから Code Gear, Data Gear という単位でプログラムを分割して記述するのでプログラム全体の並列度を高めることができる。 + +\paragraph*{従来の OS} +従来の OS が行ってきたネットワーク管理、メモリ管理、平行制御などのメタな部分を Gears OS では Meta Code/Data Gear として定義する。 +通常の Code Gear から必要な制御を推論し、Meta Code Gear を接続することで従来の OS が行ってきた制御を提供する。 +このメタ計算は関数型言語で用いられる Monad に基づいて実現する。 +\section{まとめ} +本論文では Code Gear、 Data Gear によって構成される Gears OS のプロトタイプの設計、実装を行った。 + +Code Gear は処理、 Data Gear はデータの単位である。 +Code Gear は戻り値を持たないので、関数呼び出しのようにスタックに値を積む必要がなく、スタックは変更されない。 +そのため並列化、ループ制御、関数コールとスタックの操作を意識した最適化をソースコードレベルで行える。 +また、プログラム Code/Data Gear に分割して記述することで並列度を高めることができる。 + +Gears OS の基本的な機能として、 TaskQueue, Persistent Data Tree, Workerの実装を Code/Data Gear に基づいて行った。 +Gears OS では Context というデータ構造に Code/Data Gear のリスト、 TaskQueue へのポインタ Persistent Data Tree へのポインタ、Temporal Data Gear を確保するためのメモリ空間などがある。 +Context はスレッド毎に存在し、それぞれが異なる Context を参照している。 +TaskQueue は並列処理される Task を管理する。 +TaskQueue はすべての Context で共有され、マルチスレッドで動作する必要がある。 +そのためデータの一貫性を保つために Compare and Swap(CAS) を用いた実装を行った。 +Persistent Data Tree は 並列処理 での Data Gearの管理を行う。 +そのためすべての Context で共有される。 +Persistent Data Tree は非破壊木構造で構成することで読み書きのを平行して行う事が可能となった。 +また、Red-Black Tree アルゴリズムを用いて実装することで木の平衡性が保たれる。 +Worker は TaskQueue から Task を取り出し、 Persistent Data Tree から Data Gear を取得し、 Task 内の Code Gear の並列実行を行う。 +また、個別の Context を参照しているので、メモリ空間が独立しており、メモリを確保する処理で他の Worker を止めることはない。 + +今後の課題として、 依存関係のある並列処理の実現、 GPU などのプロセッサ等での実行、 デバック手法、 型検査が上げられる。 + +今回の例題では Twice を用いて並列処理の性能を示したが、 Twice は依存関係のない並列処理である。 +本来、並列処理には依存関係が存在するため、 複雑な並列処理でも安定した実行ができることを依存関係がある並列処理の例題を作成し、評価する必要がある。 + +Gears OS 上でマルチコア CPU を用いた実行を可能にしたが、 GPU などの他のプロセッサを演算に用いることができない。 +そのため、 Data Gear 等のデータを GPU などの各プロセッサにマッピングするための機構を用意する必要がある。 + +Gears OS は 関数呼び出しではなく、スタックを積まない軽量継続を使用して実装されているため、スタックトレースが見えず、従来のデバック手法が使えない。 +そのため、Gears OS 用の 新しい デバック手法を考案する必要がある。 +Gears OS は Context から Data Gear の情報を取得できるため、そこから今の状況を把握することができる。 +その性質から、 Context を見ることができるコードを Meta Code Gear に入れることで、 Code Gear を止めて Data Gear の状況を見ることが可能となる。 +しかし、この方法では並列で動いている Code Gear に対しては綺麗にデバック出来ない。 +そのため、並列処理でのデバック手法も考案する必要がある。 + +また、型情報を残すために Data Gear を定義しているが、 Data Gear の型情報を検査していない。 +プログラムの正しさを保証するために Data Gear の型情報を検査するシステムを 実装する必要がある。 +% GPU の方も書く +% debug 手法 + +\nocite{*} +\bibliographystyle{ipsjunsrt} +\bibliography{sigos} + +\end{document} diff -r 000000000000 -r 38b037c42c34 paper/src/context.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/paper/src/context.c Mon Apr 17 20:05:26 2017 +0900 @@ -0,0 +1,37 @@ +#include <stdlib.h> + +#include "context.h" + +extern __code code1_stub(struct Context*); +extern __code code2_stub(struct Context*); +extern __code code3_stub(struct Context*); + +__code initContext(struct Context* context) { + context->heapLimit = sizeof(union Data)*ALLOCATE_SIZE; + context->code = (__code(**) (struct Context*)) NEWN(ALLOCATE_SIZE, void*); + context->data = NEWN(ALLOCATE_SIZE, union Data*); + context->heapStart = NEWN(context->heapLimit, char); + context->heap = context->heapStart; + + context->codeNum = Code3; + + context->code[Code1] = code1_stub; + context->code[Code2] = code2_stub; + context->code[Code3] = code3_stub; + + struct Worker* worker = ALLOC_DATA(context, Worker); + worker->num = 0; + worker->contexts = 0; + + struct Allocate* allocate = ALLOC_DATA(context, Allocate); + allocate->size = 0; + + struct Tree* tree = ALLOC_DATA(context, Tree); + tree->root = 0; + + struct Node* node = ALLOC_DATA(context, Node); + node->key = 0; + node->value = 0; + node->left = 0; + node->right = 0; +} diff -r 000000000000 -r 38b037c42c34 paper/src/context.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/paper/src/context.h Mon Apr 17 20:05:26 2017 +0900 @@ -0,0 +1,58 @@ +/* define context */ + +#define ALLOCATE_SIZE 20000000 +#define NEWN(n, type) (type*)(calloc(n, sizeof(type))) +#define ALLOC_DATA(context, dseg) ({ context->data[dseg] = context->heap; context->heap += sizeof(struct dseg); (struct dseg *)context->data[dseg]; }) + +enum Code { + Code1, + Code2, + Code3, +}; + +enum UniqueData { + Allocate, + Tree, + Queue, + Worker, +}; + +struct Context { + enum Code next; + int codeNum; + __code (**code) (struct Context*); + void* heapStart; + void* heap; + long heapLimit; + pthread_t thread; + int thread_num; + int dataNum; + union Data **data; +}; + +union Data { + struct Worker { + int num; + struct Context* contexts; + } worker; + struct Tree { + struct Node* root; + } tree; + struct Node { + // need to tree + enum Code next; + int key; // comparable data segment + union Data* value; + struct Node* left; + struct Node* right; + // need to balancing + enum Color { + Red, + Black, + } color; + } node; + struct Allocate { + enum Code next; + long size; + } allocate; +}; diff -r 000000000000 -r 38b037c42c34 paper/src/openmp.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/paper/src/openmp.c Mon Apr 17 20:05:26 2017 +0900 @@ -0,0 +1,4 @@ +#pragma omp parallel for +for(int i=0;i<N;i++) { + // Processing +} diff -r 000000000000 -r 38b037c42c34 paper/src/sync_dequeue.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/paper/src/sync_dequeue.c Mon Apr 17 20:05:26 2017 +0900 @@ -0,0 +1,20 @@ +// Dequeue +__code getQueue(struct Context* context, struct Queue* queue, struct Node* node) { + if (queue->first == 0) + return; + + struct Element* first = queue->first; + if (__sync_bool_compare_and_swap(&queue->first, first, first->next)) { + queue->count--; + + context->next = GetQueue; + stack_push(context->code_stack, &context->next); + + context->next = first->task->code; + node->key = first->task->key; + + goto meta(context, Get); + } else { + goto meta(context, GetQueue); + } +} diff -r 000000000000 -r 38b037c42c34 paper/src/sync_enqueue.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/paper/src/sync_enqueue.c Mon Apr 17 20:05:26 2017 +0900 @@ -0,0 +1,25 @@ +// Enqueue(normal) +__code putQueue3(struct Context* context, struct Queue* queue, struct Element* new_element) { + struct Element* last = queue->last; + + if (__sync_bool_compare_and_swap(&queue->last, last, new_element)) { + last->next = new_element; + queue->count++; + + goto meta(context, context->next); + } else { + goto meta(context, PutQueue3); + } +} + +// Enqueue(nothing element) +__code putQueue4(struct Context* context, struct Queue* queue, struct Element* new_element) { + if (__sync_bool_compare_and_swap(&queue->first, 0, new_element)) { + queue->last = new_element; + queue->count++; + + goto meta(context, context->next); + } else { + goto meta(context, PutQueue3); + } +} diff -r 000000000000 -r 38b037c42c34 paper/src/twice.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/paper/src/twice.c Mon Apr 17 20:05:26 2017 +0900 @@ -0,0 +1,16 @@ +// Twice +__code twice(struct Context* context, struct LoopCounter* loopCounter, int index, int alignment, int* array) { + int i = loopCounter->i; + + if (i < alignment) { + array[i+index*alignment] = array[i+index*alignment]*2; + loopCounter->i++; + + goto meta(context, Twice); + } + + loopCounter->i = 0; + + stack_pop(context->code_stack, &context->next); + goto meta(context, context->next); +} diff -r 000000000000 -r 38b037c42c34 sigos.aux diff -r 000000000000 -r 38b037c42c34 sigos.log --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sigos.log Mon Apr 17 20:05:26 2017 +0900 @@ -0,0 +1,122 @@ +This is e-pTeX, Version 3.14159265-p3.6-141210-2.6 (utf8.euc) (TeX Live 2015) (preloaded format=platex 2015.11.28) 12 APR 2017 19:35 +entering extended mode + restricted \write18 enabled. + %&-line parsing enabled. +**sigos.tex +(./sigos.tex +pLaTeX2e <2006/11/10> (based on LaTeX2e <2015/01/01> patch level 0) +Babel <3.9l> and hyphenation patterns for 79 languages loaded. + +! LaTeX Error: File `ipsjpapers.cls' not found. + +Type X to quit or <RETURN> to proceed, +or enter new name. (Default extension: cls) + +Enter file name: +(/usr/local/texlive/2015/texmf-dist/tex/latex/graphics/graphicx.sty +Package: graphicx 2014/10/28 v1.0g Enhanced LaTeX Graphics (DPC,SPQR) + +(/usr/local/texlive/2015/texmf-dist/tex/latex/graphics/keyval.sty +Package: keyval 2014/10/28 v1.15 key=value parser (DPC) +\KV@toks@=\toks15 +) +(/usr/local/texlive/2015/texmf-dist/tex/latex/graphics/graphics.sty +Package: graphics 2014/10/28 v1.0p Standard LaTeX Graphics (DPC,SPQR) + +(/usr/local/texlive/2015/texmf-dist/tex/latex/graphics/trig.sty +Package: trig 1999/03/16 v1.09 sin cos tan (DPC) +) +(/usr/local/texlive/2015/texmf-dist/tex/latex/latexconfig/graphics.cfg +File: graphics.cfg 2010/04/23 v1.9 graphics configuration of TeX Live +) +Package graphics Info: Driver file: dvipdfmx.def on input line 94. + +(/usr/local/texlive/2015/texmf-dist/tex/latex/dvipdfmx-def/dvipdfmx.def +File: dvipdfmx.def 2015/03/26 v4.04 LaTeX color/graphics driver for dvipdfmx (T +eX Live/ChoF) +)) +\Gin@req@height=\dimen118 +\Gin@req@width=\dimen119 +) +(/usr/local/texlive/2015/texmf-dist/tex/latex/url/url.sty +\Urlmuskip=\muskip10 +Package: url 2013/09/16 ver 3.4 Verb mode for urls, etc. +) +(/usr/local/texlive/2015/texmf-dist/tex/latex/listings/listings.sty +\lst@mode=\count81 +\lst@gtempboxa=\box41 +\lst@token=\toks16 +\lst@length=\count82 +\lst@currlwidth=\dimen120 +\lst@column=\count83 +\lst@pos=\count84 +\lst@lostspace=\dimen121 +\lst@width=\dimen122 +\lst@newlines=\count85 +\lst@lineno=\count86 +\abovecaptionskip=\skip41 +\belowcaptionskip=\skip42 +\lst@maxwidth=\dimen123 + +(/usr/local/texlive/2015/texmf-dist/tex/latex/listings/lstmisc.sty +File: lstmisc.sty 2014/09/06 1.5e (Carsten Heinz) +\c@lstnumber=\count87 +\lst@skipnumbers=\count88 +\lst@framebox=\box42 +) +(/usr/local/texlive/2015/texmf-dist/tex/latex/listings/listings.cfg +File: listings.cfg 2014/09/06 1.5e listings configuration +)) +Package: listings 2014/09/06 1.5e (Carsten Heinz) + + +! LaTeX Error: File `jlisting.sty' not found. + +Type X to quit or <RETURN> to proceed, +or enter new name. (Default extension: sty) + +Enter file name: +(/usr/local/texlive/2015/texmf-dist/tex/latex/enumitem/enumitem.sty +Package: enumitem 2011/09/28 v3.5.2 Customized lists +\labelindent=\skip43 +\enit@outerparindent=\dimen124 +\enit@toks=\toks17 +\enit@inbox=\box43 +\enitdp@description=\count89 + + +! LaTeX Error: Environment description undefined. + +See the LaTeX manual or LaTeX Companion for explanation. +Type H <return> for immediate help. + ... + +l.1587 \renewenvironment{description} + [1][] +? +) (/usr/local/texlive/2015/texmf-dist/tex/latex/listings/lstlang1.sty +File: lstlang1.sty 2014/09/06 1.5e listings language file +) +(/usr/local/texlive/2015/texmf-dist/tex/latex/listings/lstmisc.sty +File: lstmisc.sty 2014/09/06 1.5e (Carsten Heinz) +) + +! LaTeX Error: File `dummy.tex' not found. + +Type X to quit or <RETURN> to proceed, +or enter new name. (Default extension: tex) + +Enter file name: +(./sigos.aux) +\openout1 = `sigos.aux'. + +LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 35. +LaTeX Font Info: ... okay on input line 35. +LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 35. +LaTeX Font Info: ... okay on input line 35. +LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 35. +LaTeX Font Info: ... okay on input line 35. +LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 35. +LaTeX Font Info: ... okay on input line 35. +LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 35. +LaTeX Fo \ No newline at end of file diff -r 000000000000 -r 38b037c42c34 sigos.tex~ --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sigos.tex~ Mon Apr 17 20:05:26 2017 +0900 @@ -0,0 +1,490 @@ +\documentclass[techrep]{ipsjpapers} +\usepackage[dvipdfmx]{graphicx} +\usepackage{url} +\usepackage{listings,jlisting} +\usepackage{enumitem} + +\lstset{ + language=C, + tabsize=2, + frame=single, + basicstyle={\ttfamily\footnotesize},% + identifierstyle={\footnotesize},% + commentstyle={\footnotesize\itshape},% + keywordstyle={\footnotesize\bfseries},% + ndkeywordstyle={\footnotesize},% + stringstyle={\footnotesize\ttfamily}, + breaklines=true, + captionpos=b, + columns=[l]{fullflexible},% + xrightmargin=0zw,% + xleftmargin=1zw,% + aboveskip=1zw, + numberstyle={\scriptsize},% + stepnumber=1, + numbersep=0.5zw,% + lineskip=-0.5ex, +} +\renewcommand{\lstlistingname}{Code} + +\input{dummy.tex} %% Font + +% ユーザが定義したマクロなど. +\makeatletter + +\begin{document} + +% 和文表題 +\title{Code Gear、 Data Gear に基づく OS のプロトタイプ} +% 英文表題 +\etitle{} + +% 所属ラベルの定義 +\affilabel{1}{琉球大学大学院理工学研究科情報工学専攻 \\Interdisciplinary Information Engineering, Graduate School of Engineering and Science, University of the Ryukyus.} +\affilabel{2}{琉球大学工学部情報工学科\\Information Engineering, University of the Ryukyus.} + +% 和文著者名 +\author{ + 伊波 立樹\affiref{1} + \and + 東恩納 琢偉 \affiref{2} + \and + 河野 真治\affiref{2} +} + +% 英文著者名 +\eauthor{ + Tatsuki IHA\affiref{1} + \and + Takui HIGASHIONNA\affiref{2} + \and + Shinji KONO\affiref{2} +} + +% 連絡先(投稿時に必要.製版用では無視される.) +\contact{伊波 立樹\\ + 〒903-0213 沖縄県西原町千原1番地\\ + 琉球大学工学部情報工学科\\ + TEL: (098)895-2221\qquad FAX: (098)895-8727\\ + email: innparusu@cr.ie.u-ryukyu.ac.jp} + +% 和文概要 +\begin{abstract} + 当研究室では 処理の単位を Code Gear、 データの単位を Data Gear を用いて並列実行を行う Gears OS を開発している + Gears OS では 並列実行をするための Task を Code Gear と Data Gear の組で表現する。 + Task の依存関係は Code Gear を実行するために必要なInput Data Gear と Code Gearで作られる Output Data Gear によって決定し、それにそって並列実行を行う。 + 依存関係の解決などの Meta Computation の実行は Meta Code Gear で行われる。 + Meta Code Gear は Code Gear に対応しており、 Code Gear が実行した後にそれに対応した Meta Code Gear が実行される。 + 本論文ではGears OS のプロトタイプとして並列処理機構を設計し、 CbC(Continuation based C) で実装する。 +\end{abstract} + +% 英文概要 +\begin{eabstract} +\end{eabstract} + +% 表題などの出力 +\maketitle + +% 本文はここから始まる + +% Introduce +\section{Gears OS} +CPU の処理速度の向上のためクロック周波数の増加は発熱や消費電力の増大により難しくなっている。 +そのため、クロック周波数を上げる代わりに CPU のコア数を増やす傾向にある。 +マルチコア CPU の性能を発揮するには、処理をできるだけ並列化しなければならない。 +また、PC の処理性能を上げるためにマルチコア CPU 以外にも GPU や CPU と GPU を複合したヘテロジニアスなプロセッサが登場している。 +並列処理をする上でこれらのリソースを無視することができない。 +しかし、これらのプロセッサで性能を出すためにはこれらのアーキテクチャに合わせた並列プログラミングが必要になる。 +並列プログラミングフレームワークではこれらのプロセッサを抽象化し、CPU と同等に扱えるようにすることも求められる。 +本研究では Cerium を開発して得られた知見を元にこれらの性質を持つ並列プログラミングフレームワークとして Gears OS の設計・実装を行う。 + +Cerium\cite{cerium} は本研究室で開発していた並列プログラミングフレームワークである。 +Cerium では Task と呼ばれる分割されたプログラムを依存関係に沿って実行することで並列実行を可能にする。 +Cerium では依存関係を Task 間で設定するが、本来 Task はデータに依存するもので Task 間の依存関係ではデータの依存関係を保証することができない。 +また、Task には汎用ポインタとしてデータの受け渡しを行うため、型情報がない。 +そのため、汎用ポインタをキャストして利用するしか無く、型の検査を行う事ができない。 + +Gears OS\cite{gears} は Code Gear と Data Gear によって構成される。 +Code Gear は処理の単位、Data Gear はデータの単位となる。 +Gears OS では Code/Data Gear を用いて記述することでプログラム全体の並列度を高めて、効率的に並列処理することが可能になることを目的とする。 +また、Gears OS の実装自体が Code/Data Gear を用いたプログラミングの指針となるように実装する。 +Gears OS における Task は実行する Code Gear と実行に必要な Input Data Gear, 出力される Output Data Gear の組で表現される。 +Input/Output Data Gear によって依存関係が決定し、それに沿って並列実行する。 +依存関係の解決などの Meta Computation の実行は Meta Code Gear で行われる。 +Meta Code Gear は Code Gear に対応しており、 Code Gear が実行した後にそれに対応した Meta Code Gear が実行される。 +本論文ではGears OS のプロトタイプとして Data Gear を管理する Persistent Data Tree, Task を管理する TaskQueue, 並列処理を行う Worker を実装し、簡単な例題を用いて Gears OS の評価を行う。 + +\section{Code Gear と Data Gear} +Gears OS はプログラムの単位として Gear を用いる。 +Gear は並列実行の単位、データの分割、Gear 間の接続等になる。 + +Code Gear はプログラムの処理そのものである。 +Code Gear は任意の数の Input Data Gear を参照し、 処理が完了すると任意の数の Output Data Gear に書き込む。 +Code Gear は接続された Data Gear 以外には参照を行わない。 + +Data Gear は Data そのものを表しており、int や文字列などの Primitive Data Type が入っている。 + +Code Gear、 Data Gear は 本研究室で開発されている Alice\cite{alice} で使われている単位である Code Segment、 Data Segment\cite{segment} にそれぞれ対応する。 + +Gears OS では Code Gear と Input / Output Data Gear の対応から依存関係を解決し、 Code Gear の並列実行を可能とする。 + +Gear の特徴として処理やデータの構造が Code Gear、 Data Gear に閉じていることにある。 +これにより、実行時間、メモリ使用量などを予想可能なものにする事が可能になる。 + +\section{Meta Computation} +Gears OS では通常の処理を Computation、 Computation のための Computation を Meta Computation として扱う。 +Meta Computation の例として並列処理の依存関係の解決や、 OS が行うネットワーク管理、メモリ管理等の資源制御などが挙げられる。 + +Gears OS では Meta Computation を Meta Code Gear、 Meta Data Gear で表現する。 +Meta Code Gear は通常の Code Gear 直後に遷移され、 Meta Computation を実行する。 +Meta Computation の実行後は通常の Code Gear で指定した Code Gear を実行する。 +つまり Code Gear の実行後は何かしらの Meta Code Gear を実行する。 + +\section{Continuation based C} +Gears OS の実装は本研究室で開発している CbC(Continuation based C)\cite{cbc-lola}を用いて行う。 +CbC は処理を Code Segment を用いて記述することを基本としているため、 Gears OS の Code Gear を記述するのに適している。 + +CbC のプログラムでは C の関数の代わりに Code Segment を用いてい処理を記述している。 Code Segment は C の関数と異なり戻り値を持たない。 +Code Segment の宣言は C の関数の構文と同様に行い、 型に \_\_code を使うことで宣言できる。 + +Code Segment から Code Segment への移動は goto の後に Code Segment 名と引数を並べた記述するという構文を用いて行う。 +この goto による処理の遷移を継続と呼ぶ。 図\ref{fig:cbc_goto} は Code Segment 間の継続関係を表している。 + +C では関数呼び出しを行うたび、関数の引数の値がスタックに積まれていくが、Code Segment では戻り値を持たないため、スタックに値を積んでいく必要がなくスタックを変更する必要が無い。 +このようなスタックに値を積まない継続、つまり呼び出し元の環境を持たない継続を軽量継続と呼ぶ。 +軽量継続により、並列化、ループ制御、関数コールとスタックの操作を意識した最適化がソースコードレベルで行えるようにする。 + +\begin{figure}[ht] + \begin{center} + \includegraphics[width=70mm]{./pic/cbc_goto.pdf} + \end{center} + \caption{gotoによる Code Segment 間の接続} + \label{fig:cbc_goto} +\end{figure} + +\section{CbC での Gears OS の構文サポート} +CbC は Gears OS の構文のサポートを行う。 + +Gesrs OS では Contextという接続可能な Data Gear のリストからデータを取り出して処理行う。 +しかし、 Context を直接扱うのはセキュリティ上好ましくない。 +そこで Gears OS では Context から必要なデータを取り出して Code Gear に接続する stub を定義する。 +stub は Code Gear から推論することが可能のため、 CbC は自動的に stub の生成を行う。 + +また、Code Gear の遷移には Meta computation を行うために Meta Code Gear を挟む。 +CbC では Meta Code Gear への接続も自動的に行うようにする。 + +\section{Gears OS の構成} +Gears OS は以下の要素で構成される。 + +\begin{itemize} + \item Context + \item TaskQueue + \item TaskManager + \item Persistent Data Tree + \item Worker +\end{itemize} + +図\ref{fig:gearsos} に Gears OS の構成図を示す。 + +\begin{figure}[ht] + \begin{center} + \includegraphics[width=70mm]{./pic/gearsos.pdf} + \end{center} + \caption{Gears OS の構成図} + \label{fig:gearsos} +\end{figure} + +\section{Context} +Context は接続可能な Code/Data Gear のリスト、TaskQueue へのポインタ、 Persistent Data Tree へのポインタ、 Temporal Data Gear のためのメモリ空間等を持っている Meta Data Gear である。 +Gears OS では必要な Code/Data Gear に参照したい場合、このContext を通す必要がある。 + +メインとなる Context と Worker 用 Context があり、 TaskQueue と Persistent Data Tree は共有される。 +Temporal Data Gear のためのメモリ空間は Context 毎に異なり、互いに干渉することはない。 +Worker 間の相互作用は Persistent Data Tree への読み書きのみで行う。 + +Code \ref{src:context}, Code \ref{src:initContext} に実際の Context の定義と生成を示す。 + +\lstinputlisting[label=src:context, caption=Context]{./src/context.h} +\lstinputlisting[label=src:initContext, caption=initContext]{./src/context.c} + +Code \ref{src:context}, Code \ref{src:initContext} は以下の事を定義している。 + +\paragraph* {Code Gear の名前とポインタのリスト} +Code Gear の名前とポインタの対応は Code \ref{src:context} の enum Codeと 関数ポインタによって表現される。 +実際に Code Gear に接続する際は enum Code を指定することで接続を行う。 +これにより、実行時のルーチンなどを動的に変更することが可能となる。 + +\paragraph* {Data Gear の Allocation 用の情報} +Context の生成時(Code \ref{src:initContext})、 Allocation 用に Code \ref{src:context} の ALLOCATE\_SIZE 分の領域を確保する。 +Context にはその領域へのポインタとサイズが格納されている(Code \ref{src:context}の struct Context 内の heap, heapLimit)。 +実際に Allocation する際は heap を 必要な Data Gear のサイズに応じてインクリメントすることで Data Gear の Allocation を実現する。 + +\paragraph* {Data Gear へのポインタ} +Context には Allocation 等で生成した Data Gear へのポインタが格納されている。 +Code Gear は Context を通して Data Gear へアクセスする。 + +\paragraph* {Data Gear に格納される Data Type の情報} +Data Gear は Code \ref{src:context} の union Data と その中の struct によって表現される。 +Context には Data Gear の Data Type の情報が格納されている。 +この情報から確保される Data Gear のサイズなどを決定する。 + +\section{TaskQueue} +Gears OS における Task Queue は Synchronized Queue で実現される。 +メインとなる Context と Worker 用 の Context で共有され、 Worker が TaskQueue から Task を取得し、実行することで並列処理を行う。 + +Gears OS の Queue は Queue を表す Data Gear と List を表現する Element という名前の Data Gear を組み合わせて表現する。 +Queue を表す Data Gear には List 構造の先頭の Element を指す first, 末尾の Element を指す last, Element の個数を示す count が格納される。 +Element を表す Data Gear は、Task を示す task、 次の Element を示す next が格納される。 + +Queue に対して操作を行う場合、 Queue 自体の Data Gear を書き換える。 +Task を 挿入する場合、 新しく Element を生成し、 Queue の last から List 構造の末尾に新しい Element を追加し、 Queue の last を書き換える。 +Task を 取得する場合、 Queue の first から List 構造を最初の要素を取り出し、 取り出した要素の次の要素の参照を Queue の first に書き込む。 + +Gears OS の TaskQueue はマルチスレッドでの操作を想定しているため、データの一貫性を保証する必要がある。 +そのため、データの一貫性を並列実行時でも保証するために Compare and Swap(CAS) を利用して Queue の操作を行っている。 +CAS はデータの比較・置換をアトミックに行う命令である。 +メモリからデータの読みだし、変更、メモリへのデータの書き出しという一連の処理を CAS を利用することで処理の間に他のスレッドがメモリに変更を加えないことを保証することができる。 +CAS に失敗した場合は置換を行わず、再びデータの呼び出しから始める。 + +Code \ref{src:sync_enqueue} に CAS を使用した Task 挿入を示している。 +Code \ref{src:sync_enqueue} は 2つのCode Gear を定義しており、 putQueue3 は Queue に要素がある場合、 putQueue4 は Queue に要素がない場合の Task 挿入を示している。 + +\lstinputlisting[label=src:sync_enqueue, caption=Enqueue]{./src/sync_enqueue.c} + +\section{Persistent Data Tree} +Gears OS は Persistent Data Gear の管理に木構造を用いる。 +この木構造は非破壊的で構成される。 +非破壊木構造とは図\ref{fig:persistent_data_tree}のように一度構築した木構造を破壊すること無く新しい木構造を構築することで、木構造を編集する方法である。 +非破壊木構造は木構造を書き換えることなく編集を行うため、読み書きを平行して行うことが可能である。 + +\begin{figure}[ht] + \begin{center} + \includegraphics[width=80mm]{./pic/persistent_date_tree.pdf} + \end{center} + \caption{木構造の非破壊的編集} + \label{fig:persistent_data_tree} +\end{figure} + +Gears OS では Data Tree として木構造を利用する。 +その場合、普通に木構造を構築するだけでは偏った木構造が構築される可能性がある。 +最悪なケースでは線形リストになり、計算量が O(n) となる。 + +そのため、挿入・削除・検索における処理時間を保証するため Red-Black Tree を用いて木構造の平衡性を保証する。 +Red-Black Tree は通常の二分探索木としての条件の他に以下の条件を持つ。 + +\begin{itemize} + \item 各ノードは赤または黒の色を持つ。 + \item ルートの色は黒である。 + \item 赤ノードは2つの黒ノードを子として持つ(赤ノードが続くことはない)。 + \item ルートから最下位ノードへのパスに含まれる黒ノードの数はどの最下位ノードでも一定である。 +\end{itemize} + +これらの条件によってルートから最も遠い最下位ノードへのパスの長さはルートから最も近い最下位ノードへのパスの長さの2倍に収まることが保証される。 + +\section{Worker} +Worker は TaskQueue から Task を取得し、実行する。 +Task には実行する Code Gear と実行に必要な Code Gear の key が格納されている。 +実行に必要な Code Gear は Persistent Data Tree から key を使って取得する。 + +各 Worker は個別の Context を参照しており、 メモリ空間も独立しているのでメモリを確保する処理で他の Thread を止めることはない。 +ただし、Persistent Data Tree への書き出しは競合する可能性があるので CAS を利用してデータの一貫性を保証する必要がある。 + +Worker が TaskQueue から Task の取得を行う Code Gear を Code \ref{src:sync_dequeue} に示す。 +Task Queue から取得した Task から実行する Code Gear と必要な Data Gear の key を Worker Context に書き込むことで実行される。 + +\lstinputlisting[label=src:sync_dequeue, caption=GetTask]{./src/sync_dequeue.c} + +Worker から取得された Task の Code Gear は並列実行される。 +並列実行される Code Gear と言っても他の Code Gear と同じである。 +これは Gears OS 自体が Code Gear によって構成されていることに起因する。 +つまり、 Gears OS を利用して書かれたプログラムで定義されている Code Gear に依存関係がないとき、全て並列に実行することができる。 + +\section{TaskManager} +Gears OS の TaskManager は WaitTaskQueue に入っている Task の依存関係を解決する。 +Task には Input/Output Data Gear の情報が格納されている。 +Input Data Gear は Task に必要な Data Gear で揃ったら Task は実行可能な状態になる。 +Output Data Gear は Task が Persistent Data Tree に書き出す Data Gear である。 +この Input と Output の関係が依存関係となる。 +TaskManager は Persistent Data Tree を監視しており、WaitTaskQueue に入っている Task の Input Data Gear が揃っているのを確認したら実行可能な Task として AcitiveTaskQueue へ移動させる。 + +\section{プロトタイプの動作} +Gears OS の評価として依存関係のない例題の並列実行を行った。 + +今回使用した例題は Twice という整数配列を2倍にする例題である。 +Code \ref{src:twice} に Twice の処理を行う Code Gear を示す。 + +\lstinputlisting[label=src:twice, caption=Twice]{./src/twice.c} + +以下に今回の処理の流れを示す。 + +\begin{itemize} + \item 配列サイズを元に index, alignment, 配列へのポインタを持つ Data Gear に分割。 + \item Data Gear を Persistent Data Tree に挿入。 + \item 実行する Code Gear(Twice) と実行に必要な Data Gear への key を持つ Task を生成。 + \item 生成した Task を TaskQueue に挿入。 + \item Worker の起動。 + \item Worker が TaskQueue から Task を取得。 + \item 取得した Task を元に必要な Data Gear を Persistent Data Tree から取得。 + \item 並列の処理される Code Gear(Twice) を実行。 +\end{itemize} + +要素数$2^{17}$*1000 のデータを640個の Task に分割し、コア数を変更して測定を行った結果を表\ref{table:result}、図\ref{fig:result}に示す。 + +\begin{table}[ht] + \begin{center} + \small + \begin{tabular}[htpb]{|c||c|c|c|} + \hline + Processor & Time(ms) \\ + \hline + \hline + 1 CPU & 1315 \\ + \hline + 2 CPUs & 689 \\ + \hline + 4 CPUs & 366 \\ + \hline + 8 CPUs & 189 \\ + \hline + 12 CPUs & 111 \\ + \hline + \end{tabular} + \caption{要素数$2^{17}$*1000 のデータに対する Twice} + \label{table:result} + \end{center} +\end{table} + +\begin{figure}[ht] + \begin{center} + \includegraphics[width=70mm]{pic/twice_640.pdf} + \end{center} + \caption{要素数$2^{17}$*1000 のデータに対する Twice} + \label{fig:result} +\end{figure} + +結果から、 1 CPU と 12 CPU で約 11.8 倍の速度向上が見られた。 +しかし、 タスクの粒度が小さすぎると CAS の失敗が多くなり、性能がでないことがある。 +Code Gear には実行時間を予想可能なものにするという特徴があるため、タスクが最適な粒度なのかを検査する機能が必要になると考えられる。 + +\section{比較} +本章では今回設計・実装した Gears OS と既存の並列フレームワークとの比較を行う。 +また、Gears OS は以下のような性質を有している。 + +\begin{itemize} + \item リソース管理 \\ + Context 毎に異なるメモリ空間を持ち、それを管理する。 + Meta Code Gear, Meta Data Gear を用いてネットワーク管理、並行制御等を行う。 + \item 処理の効率化 \\ + 依存関係のない Code Gear は並列実行することが可能である。 + また、Code Gear 自体が処理の最小単位となっており Code Gear を利用してプログラムを記述するとプログラム全体の並列度を高めることに繋がる。 + \item プロセッサ利用の抽象化 \\ + Multi Core CPU, GPU を同等の実行機構で実行可能である。 +\end{itemize} + +これらの性質を有する Gears OS はオペレーティングシステムであると言えるので既存の OS との比較も行う。 + +\paragraph*{Cerium} +\begin{itemize} + \item 依存関係 \\ + Cerium では Task 間で依存関係を設定する。 + Task の途中でデータが破損しても完了を TaskManager に通知し、依存関係を解決して次の Task が実行される。 + これではデータの正しさを保証することができない。 + + Gears OS では Task に Input/Output Data Gear を設定することで Input と Output の関係から依存関係を決定する。 + TaskManager は Persistent Data Tree を監視し、必要な Data Gear が揃っていることを確認すると依存関係を解決する。 + \item データの型情報 \\ + Cerium では Task にデータを引き渡すとき汎用ポインタを用いる。 + このときデータの型情報が落ちるので Task の組み合わせが型的に安全なのか保証することができない。 + + Gears OS では型情報を持つ分割されたデータとして Data Gear を定義し、Data Gear 単位でデータを Task に引き渡す。 + Data Gear を型シグネチャとして Task の組み合わせが正しいことを保証する。 + \item Allocator \\ + Cerium では Thread 間で Allocator を共有している。 + ある Thread がメモリ確保を行うとその間、他の Thread はメモリを確保することができず並列度が低下する。 + + Gears OS では Thraed ごとに Context を割り当てる。 + Context は独立したメモリ空間を持つので他の Thread と干渉することないメモリの確保を行うことができる。 + \item 並列処理との相性 \\ + Cerium はオブジェクト指向言語である C++ で実装されている。 + オブジェクト指向は保守性と再利用性を高めるためにカプセル化とポリモフィズムを重視する。 + オブジェクトの状態によって振る舞いが変わるため参照透過な処理でなくなり並列処理との相性が悪い。 + + Gears OS は本研究で開発している CbC を用いて実装する。 + CbC は Code Segment という単位でプログラムを記述する。 + Code Segment はスタックに値を積まない軽量継続を用いて他の Code Segment に遷移する。 + この軽量継続により並列化、ループ制御などを意識した最適化がソースコードレベルで行うことができる。 +\end{itemize} + +\paragraph*{OpenCL/CUDA} +OpenCL\cite{opencl}/CUDA\cite{cuda} では並列処理に用いる関数を kernel として定義する。 +OpenCL では CommandQueue, CUDA では Stream という命令キューに命令を発行することで GPU を利用することができる。 +命令キューは発行された順番通りに命令が実行されることが保証されている。 +複数の命令キューを準備して、各命令キューに命令を発行することで命令を並列に実行することができる。 +命令キュー単位で依存関係を設定することができる。 +つまり、命令キューに入っている最後の命令次第でデータを待っているのか kernel の実行を待っているのか変わるので依存関係の記述が複雑になる。 +データは kernel の引数の定義に型変換され渡される。 +データ転送の際には型情報が落として渡す必要があり、型を意識したプログラミングが必要になる。 + +一方、Gears OS ではデータによって依存関係が決定する。 +また、データを Data Segment という単位で分割して管理しており型情報を保ったままデータの受け渡しを行うことができる。 + +\paragraph*{OpenMP} +OpenMP ではループ制御構文の前にアノテーションを付ける(Code \ref{openmp})ことでコンパイラが解釈し、スレッド処理を行うように変換して並列処理を行う。 + +\lstinputlisting[label=openmp, caption=OpenMP]{src/openmp.c} + +他の並列化手法に比べて既存のコードに対する変更が少なくて済む。 +しかし、この方法ではプログラム全体の並列度が上がらずアムダールの法則により性能向上が頭打ちになる。 + +一方、Gears OS では初めから Code Gear, Data Gear という単位でプログラムを分割して記述するのでプログラム全体の並列度を高めることができる。 + +\paragraph*{従来の OS} +従来の OS が行ってきたネットワーク管理、メモリ管理、平行制御などのメタな部分を Gears OS では Meta Code/Data Gear として定義する。 +通常の Code Gear から必要な制御を推論し、Meta Code Gear を接続することで従来の OS が行ってきた制御を提供する。 +このメタ計算は関数型言語で用いられる Monad に基づいて実現する。 +\section{まとめ} +本論文では Code Gear、 Data Gear によって構成される Gears OS のプロトタイプの設計、実装を行った。 + +Code Gear は処理、 Data Gear はデータの単位である。 +Code Gear は戻り値を持たないので、関数呼び出しのようにスタックに値を積む必要がなく、スタックは変更されない。 +そのため並列化、ループ制御、関数コールとスタックの操作を意識した最適化をソースコードレベルで行える。 +また、プログラム Code/Data Gear に分割して記述することで並列度を高めることができる。 + +Gears OS の基本的な機能として、 TaskQueue, Persistent Data Tree, Workerの実装を Code/Data Gear に基づいて行った。 +Gears OS では Context というデータ構造に Code/Data Gear のリスト、 TaskQueue へのポインタ Persistent Data Tree へのポインタ、Temporal Data Gear を確保するためのメモリ空間などがある。 +Context はスレッド毎に存在し、それぞれが異なる Context を参照している。 +TaskQueue は並列処理される Task を管理する。 +TaskQueue はすべての Context で共有され、マルチスレッドで動作する必要がある。 +そのためデータの一貫性を保つために Compare and Swap(CAS) を用いた実装を行った。 +Persistent Data Tree は 並列処理 での Data Gearの管理を行う。 +そのためすべての Context で共有される。 +Persistent Data Tree は非破壊木構造で構成することで読み書きのを平行して行う事が可能となった。 +また、Red-Black Tree アルゴリズムを用いて実装することで木の平衡性が保たれる。 +Worker は TaskQueue から Task を取り出し、 Persistent Data Tree から Data Gear を取得し、 Task 内の Code Gear の並列実行を行う。 +また、個別の Context を参照しているので、メモリ空間が独立しており、メモリを確保する処理で他の Worker を止めることはない。 + +今後の課題として、 依存関係のある並列処理の実現、 GPU などのプロセッサ等での実行、 デバック手法、 型検査が上げられる。 + +今回の例題では Twice を用いて並列処理の性能を示したが、 Twice は依存関係のない並列処理である。 +本来、並列処理には依存関係が存在するため、 複雑な並列処理でも安定した実行ができることを依存関係がある並列処理の例題を作成し、評価する必要がある。 + +Gears OS 上でマルチコア CPU を用いた実行を可能にしたが、 GPU などの他のプロセッサを演算に用いることができない。 +そのため、 Data Gear 等のデータを GPU などの各プロセッサにマッピングするための機構を用意する必要がある。 + +Gears OS は 関数呼び出しではなく、スタックを積まない軽量継続を使用して実装されているため、スタックトレースが見えず、従来のデバック手法が使えない。 +そのため、Gears OS 用の 新しい デバック手法を考案する必要がある。 +Gears OS は Context から Data Gear の情報を取得できるため、そこから今の状況を把握することができる。 +その性質から、 Context を見ることができるコードを Meta Code Gear に入れることで、 Code Gear を止めて Data Gear の状況を見ることが可能となる。 +しかし、この方法では並列で動いている Code Gear に対しては綺麗にデバック出来ない。 +そのため、並列処理でのデバック手法も考案する必要がある。 + +また、型情報を残すために Data Gear を定義しているが、 Data Gear の型情報を検査していない。 +プログラムの正しさを保証するために Data Gear の型情報を検査するシステムを 実装する必要がある。 +% GPU の方も書く +% debug 手法 + +\nocite{*} +\bibliographystyle{ipsjunsrt} +\bibliography{sigos} + +\end{document}