% tatesuji.sty % by Shinsaku Fujita % Copyright (C) S. Fujita (1999, 2009). All rights reserved. % Version 1.00 1999/12/17 % Version 1.00a 2009/10/01 Bug Fix % Version 1.00b 2009/10/04 Bug Fix % % 作成者: 藤田眞作 % fujitas@chem.kit.ac.jp % % 藤田眞作著「入門・縦横文書術」所載 % %\typeout{Option Style `tatesuji.sty' by S. Fujita} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %\def\j@urnalname{tatesuji} %\def\versi@ndate{December 17, 1999} %\def\versi@nno{ver1.00} %\def\copyrighth@lder{SF} % Shinsaku Fujita %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \def\j@urnalname{tatesuji} \def\versi@ndate{October 4, 2009} \def\versi@nno{ver1.00b} \def\copyrighth@lder{SF} % Shinsaku Fujita %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \typeout{Option Style `\j@urnalname' (\versi@nno) <\versi@ndate>\space [\copyrighth@lder]} \typeout{藤田眞作著「入門・縦横文書術」所載} % % pLaTeXe vs LaTeX % \@ifundefined{tbaselineshift} {\tbaselineshift=0pt}{} % % \kanjiが廃止されているので,あらたに作成 % 2009/10/04 by S. Fujita % \newcount\TEMPcntA \def\kanji{\afterassignment\@@kanji\TEMPcntA=} \def\@@kanji{\iftdir\expandafter\kansuji\the\TEMPcntA \else \the\TEMPcntA\fi} % %四桁の数字を単位語付の和数字に直す。 % 1998 ---> 千九百九十八 %ただし、\ketaspectrueのときは、 % 1998 ---> 一千九百九十八 %横組のときは、アラビア数字をそのまま出力 % by Shinsaku Fujita 1999/12/5 % Bug fix 2009/10/1 \ifcase#2 \ifmukozero... 空白を入れる S. Fujita % Bug fix 2009/10/4 アルゴリズム変更 \ifallzero, \ifjoizero S. Fujita % \newif\ifallzero \allzerofalse \newif\ifjoizero \joizerofalse \newif\ifmukozero \mukozerofalse \def\yonketa#1#2#3#4\@nil{% \allzerofalse \TEMPcntA=#1 \advance\TEMPcntA by#2 \advance\TEMPcntA by#3 \advance\TEMPcntA by#4 \ifnum\TEMPcntA=0\relax \global\allzerotrue \else \global\allzerofalse\fi \iftdir%縦組 \ifcase#1\relax\or\ifketaspec 一千\else 千\fi\else\kanji#1 千\fi \ifcase#2\relax\or 百\else\kanji#2 百\fi \ifcase#3\relax\or 十\else\kanji#3 十\fi \ifcase#4\relax\else\kanji#4\fi \else%横組 \joizerofalse\global\mukozerofalse \ifcase#1 \joizerotrue \else#1\joizerofalse\fi \ifcase#2 \ifjoizero \joizerotrue \else#2\joizerofalse\fi \else#2\joizerofalse\fi \ifcase#3 \ifjoizero \joizerotrue \else#3\joizerofalse\fi \else#3\joizerofalse\fi \ifcase#4 \ifjoizero \joizerotrue \else#4\joizerofalse\fi \else #4\joizerofalse\fi \fi } % %四桁の数字を単位語付の領収書用数字に直す。 % 1998 ---> 壱千九百九拾八 %ただし、\ketaspectrueのときも同じ %横組のときは、アラビア数字をそのまま出力 % by Shinsaku Fujita 1999/12/5 % Bug fix 2009/10/1 \ifcase#2 \ifmukozero... 空白を入れる S. Fujita % Bug fix 2009/10/4 アルゴリズム変更 \ifallzero, \ifjoizero S. Fujita % %\def\ryoshuyon#1#2#3#4/{\iftdir%縦組 \def\ryoshuyon#1#2#3#4\@nil{% \allzerofalse \TEMPcntA=#1 \advance\TEMPcntA by#2 \advance\TEMPcntA by#3 \advance\TEMPcntA by#4 \ifnum\TEMPcntA=0\relax \global\allzerotrue \else \global\allzerofalse\fi \iftdir%縦組 \ifcase#1\relax \or 壱千\or 弐千\or 参千\else\kanji#1 千\fi \ifcase#2\relax \or 壱百\or 弐百\or 参百\else\kanji#2 百\fi \ifcase#3\relax \or 壱拾\or 弐拾\or 参拾\else\kanji#3 拾\fi \ifcase#4\relax \or 壱\or 弐\or 参\else\kanji#4\fi \else%横組 \joizerofalse\global\mukozerofalse \ifcase#1 \joizerotrue \else#1\joizerofalse\fi \ifcase#2 \ifjoizero \joizerotrue \else#2\joizerofalse\fi \else#2\joizerofalse\fi \ifcase#3 \ifjoizero \joizerotrue \else#3\joizerofalse\fi \else#3\joizerofalse\fi \ifcase#4 \ifjoizero \joizerotrue \else#4\joizerofalse\fi \else #4\joizerofalse\fi \fi } % %四桁の数字を和数字に直す。 % 1998 ---> 一九九八 %横組のときは、アラビア数字をそのまま出力 % by Shinsaku Fujita 1999/12/5 % \let\susihenkan=\kanji%置き換えておく %\def\y@nketa#1#2#3#4/{% \def\y@nketa#1#2#3#4\@nil{% \ifcase#1 \ifmukozero\else\relax\susihenkan#1\fi \else\susihenkan#1\global\mukozerofalse\fi \ifcase#2 \ifmukozero\else\relax\susihenkan#2\fi \else\susihenkan#2\global\mukozerofalse\fi \ifcase#3 \ifmukozero\else\relax\susihenkan#3\fi \else\susihenkan#3\global\mukozerofalse\global\mukozerofalse\fi \susihenkan#4\global\mukozerofalse} % %三桁の数字を和数字に直す。 % 998 ---> 九九八 %横組のときは、アラビア数字をそのまま出力 % by Shinsaku Fujita 1999/12/5 % %\def\s@nketa#1#2#3/{% \def\s@nketa#1#2#3\@nil{% \ifcase#1 \ifmukozero\else\relax\susihenkan#1\fi%\relaxがないとだめ???? \else\susihenkan#1\global\mukozerofalse\fi \ifcase#2 \ifmukozero\else\relax\susihenkan#2\fi \else\susihenkan#2\global\mukozerofalse\fi \susihenkan#3\global\mukozerofalse} % %単位語と位取りの点 % by Shinsaku Fujita 1999/12/5 % \def\temptanni{ \kern-1zw{% \hbox to1zw{\hss\footnotesize\rensuji{禾\kern-.4zw 予}\hss}}\kern-1zw } % \def\@tanni#1{\ifcase#1 \or 万\or 億\or 兆\or 京\or 垓\or \temptanni\or%%%%禾予 穣\or 溝\or 澗\or 正\or 載\or 極\fi} \def\t@nni#1{\ifcase#1\else\iftdir\hbox to0.5zw{、\hss}\else \hbox{,}\fi\fi} \def\t@@nni#1{\ifcase#1\else\hbox{,}\fi} % %カウンターとスイッチ % by Shinsaku Fujita 1999/12/5 % \newcount\@tempcntc \newcount\ketasuu \newif\ifketaspec \ketaspecfalse % % \tatesuji命令 % [0] 十五、単位語付 % [1] 一五、単位語付 % [2] 一五、単位語付、ただし、一千万、一千億など一をいれる % [3] 三桁区切り % [4] 四桁区切り % [5] 領収書 % [6] 縦組でも三桁区切りのアラビア数字 % [8] 縦組でも四桁区切りのアラビア数字 % by Shinsaku Fujita 1999/12/5 % Bug fix 2009/10/4 アルゴリズム変更 \ifallzeroにより % 0000のときに単位語を削除する.S. Fujita % \def\tatesuji{\@ifnextchar[{\t@tesuji}{\t@tesuji[0]}} \def\t@tesuji[#1]#2{\ifcase#1\relax \ketasuu=4 \let\@susi=\yonketa \let\tanni=\@tanni \or \ketasuu=4 \let\@susi=\y@nketa \let\tanni=\@tanni \or \ketaspectrue \ketasuu=4 \let\@susi=\yonketa \let\tanni=\@tanni \or \ketasuu=3 \let\@susi=\s@nketa \let\tanni=\t@nni \or \ketasuu=4 \let\@susi=\y@nketa \let\tanni=\t@nni \or \ketasuu=4 \let\@susi=\ryoshuyon \let\tanni=\@tanni \or \ketasuu=3 \let\susihenkan=\relax \let\@susi=\s@nketa \let\tanni=\t@@nni \or%%% \or \ketasuu=4 \let\susihenkan=\relax \let\@susi=\y@nketa \let\tanni=\t@@nni \else \ketasuu=4 \let\@susi=\y@nketa \let\tanni=\t@nni\fi \@tempcnta=0\relax\def\commadel{,}% \@tfor\member:=#2\do{\ifx\member\commadel\else \global\advance\@tempcnta by1\fi}% \@tempcntb=\@tempcnta \divide\@tempcnta by\ketasuu \@tempcntc=\@tempcnta \multiply\@tempcnta by\ketasuu \advance\@tempcntb -\@tempcnta \@tempcnta=0 \ifnum\ketasuu=4\relax \ifcase\@tempcntb\relax \@tempcnta=0 \edef\tempbbb{}\advance\@tempcntc by-1\relax \global\mukozerofalse \or\@tempcnta=3 \edef\tempbbb{000}\global\mukozerotrue \or\@tempcnta=2 \edef\tempbbb{00}\global\mukozerotrue \or\@tempcnta=1 \edef\tempbbb{0}\global\mukozerotrue\fi \else\ifcase\@tempcntb\relax \@tempcnta=0 \edef\tempbbb{}\advance\@tempcntc by-1\relax \global\mukozerofalse \or\@tempcnta=2 \edef\tempbbb{00}\global\mukozerotrue \or\@tempcnta=1 \edef\tempbbb{0}\global\mukozerotrue\fi\fi %\@tfor\member:=#2\do{% \expandafter\@tfor\expandafter\member\expandafter:% \expandafter=#2\do{% \ifx\member\commadel\else \advance\@tempcnta by1\relax \ifnum\@tempcnta<\ketasuu \edef\tempbbb{\tempbbb\member}% \else\ifnum\@tempcnta=\ketasuu\relax \edef\tempbbb{\tempbbb\member}% \expandafter\@susi\tempbbb\@nil\relax \ifallzero\else\tanni{\@tempcntc}\fi%2009/10/4 by S. Fujita \advance\@tempcntc by-1\relax \edef\tempbbb{}% \@tempcnta=0\relax \fi\fi\fi}} % % \Tatesuji命令 % \tatesuji命令をカウンター出力命令としたもの % オプション引数の機能は同じ % \def\Tatesuji{\@ifnextchar[{\T@tesuji}{\T@tesuji[0]}} \def\T@tesuji[#1]#2{% \edef\tempaaa{\the\csname c@#2\endcsname}% \expandafter\t@tesuji\expandafter[\expandafter#1% \expandafter]\expandafter{\tempaaa}} %% %% \@@tatesuji %% \tatesuji命令をページカウンター出力命令とした内部命令 %% オプション引数はとらない %% 不調につきコメントアウト %% %\newcount\@tempcntd %\def\@@tatesuji#1\@nil{% %\ketasuu=4 \let\@susi=\yonketa \let\tanni=\@tanni %\@tempcntd=#1 \edef\tempkkk{\the\@tempcntd}% %\@tempcnta=0\relax %\expandafter\@tfor\expandafter\member\expandafter:% %\expandafter=\tempkkk\do{\global\advance\@tempcnta by1\relax}% %\@tempcntb=\@tempcnta %\divide\@tempcnta by\ketasuu %\@tempcntc=\@tempcnta %\multiply\@tempcnta by\ketasuu %\advance\@tempcntb -\@tempcnta %\@tempcnta=0 %\ifnum\ketasuu=4\relax %\ifcase\@tempcntb %\@tempcnta=0\edef\tempbbb{}\advance\@tempcntc by-1\relax %\mukozerofalse %\or\@tempcnta=3\edef\tempbbb{000}\mukozerotrue %\or\@tempcnta=2\edef\tempbbb{00}\mukozerotrue %\or\@tempcnta=1\edef\tempbbb{0}\mukozerotrue\fi %\else\ifcase\@tempcntb %\@tempcnta=0\edef\tempbbb{}\advance\@tempcntc by-1\relax %\mukozerofalse %\or\@tempcnta=2\edef\tempbbb{00}\mukozerotrue %\or\@tempcnta=1\edef\tempbbb{0}\mukozerotrue\fi\fi %\expandafter\@tfor\expandafter\member\expandafter:% %\expandafter=\tempkkk\do{% %\advance\@tempcnta by1\relax %\ifnum\@tempcnta<\ketasuu %\edef\tempbbb{\tempbbb\member}% %\else\ifnum\@tempcnta=\ketasuu\relax %\edef\tempbbb{\tempbbb\member}% %%\expandafter\@susi\tempbbb/\relax %\expandafter\@susi\tempbbb\@nil\relax %\tanni{\@tempcntc}\advance\@tempcntc by-1\relax %\edef\tempbbb{}% %\@tempcnta=0\relax\fi\fi}} %% %% \@Tatesuji命令 %% \tatesuji命令をページカウンター出力命令としたもの %% オプション引数はとらない %% 不調につきコメントアウト %% %\def\@Tatesuji#1{\@@tatesuji#1\@nil} % %西暦縦横変換 by S. Fujita 1999/12/5 % \seireki1999/11/2/--->一九九九年一一月二日 % \def\seireki#1/#2/#3/{% \kanji#1年\kanji#2月\kanji#3日} % %西暦縦横変換 by S. Fujita 1999/12/5 % \SeiReki1999/11/2/--->一九九九年十一月二日 % \def\futaketa#1#2/{\ifcase#1 \or\relax\else\kanji#1\fi 十% \ifcase#2 \else\kanji#2\fi} \def\futaketacheck#1{\@tempcnta=0\relax \@tfor\member:=#1\do{\global\advance\@tempcnta by1}% \ifcase\@tempcnta 0?\typeout{Month empty: no such cases}% \or \kanji#1% \or \expandafter\futaketa#1/\relax \or ??\typeout{Month too large: no such cases}\fi} \def\SeiReki#1/#2/#3/{\iftdir\kanji#1年\futaketacheck{#2}月 \futaketacheck{#3}日\else#1年#2月#3日\fi} % %和暦縦横変換 by S. Fujita 1999/12/5 % \hizuke11/11/2/--->平成一一年一一月二日 % \def\hizuke{\@ifnextchar [{\@hizuke}{\@hizuke[平成]}} \def\@hizuke[#1]#2/#3/#4/{\def\tempaaa{#2}\def\tempbbb{元}% #1\ifx\tempaaa\tempbbb#2\else\rensuji{#2}\fi 年\rensuji{#3}月\rensuji{#4}日} % %和暦縦横変換 by S. Fujita 1999/12/5 % \Hizuke11/11/2/--->平成十一年十一月二日 % \def\Hizuke{\@ifnextchar [{\@Hizuke}{\@Hizuke[平成]}} \def\@Hizuke[#1]#2/#3/#4/{\def\tempaaa{#2}\def\tempbbb{元}% #1\ifx\tempaaa\tempbbb #2年\else\iftdir\futaketacheck{#2}年\else#2年\fi\fi \iftdir\futaketacheck{#3}月 \futaketacheck{#4}日\else#3月#4日\fi} % % 西暦和暦変換 by S. Fujita 1999/12/5 % \Wareki1999/11/2/--->平成十一年十一月二日 % \def\@Wareki#1/#2/#3/{% \ifcase#1 \or 元年 \else\iftdir\futaketacheck{#1}年\else#1年\fi\fi \iftdir\futaketacheck{#2}月 \futaketacheck{#3}日\else#2月#3日\fi} \def\Wareki#1/#2/#3/{\@tempcnta=#1 \ifnum\@tempcnta>1988\advance\@tempcnta by -1988\relax 平成\expandafter\@Wareki\the\@tempcnta/#2/#3/\relax \else\ifnum\@tempcnta>1925\advance\@tempcnta by -1925\relax 昭和\expandafter\@Wareki\the\@tempcnta/#2/#3/\relax \else \ifnum\@tempcnta>1911\advance\@tempcnta by -1911\relax 大正\expandafter\@Wareki\the\@tempcnta/#2/#3/\relax \else\ifnum\@tempcnta>1867\advance\@tempcnta by -1867\relax 明治\expandafter\@Wareki\the\@tempcnta/#2/#3/\relax \else \expandafter\SeiReki\the\@tempcnta/#2/#3/ \fi\fi\fi\fi} % % 連数字縦並び % 「続\LaTeX2e階梯・縦組編」第21章末尾所載 % \def\rensujiwake#1{\@tfor\member:=#1\do{% \expandafter\rensuji{\member}\hskip-\rensujiskip}% \hskip\rensujiskip} \endinput