% sfseikyu.sty 
% by Shinsaku Fujita 
% Copyright (C) S. Fujita (2000). All rights reserved. 
% Version 1.00 2000/01/05
%
%  作成者: 藤田眞作
%          fujitas@chem.kit.ac.jp
%
%   藤田眞作著「入門・縦横文書術」所載
%
%\typeout{Option Style `sfseikyu.sty' by S. Fujita}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\def\j@urnalname{sfseikyu}
\def\versi@ndate{January 5, 2000}
\def\versi@nno{ver1.00}
\def\copyrighth@lder{SF} % Shinsaku Fujita
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\typeout{Option Style `\j@urnalname' (\versi@nno) <\versi@ndate>\space 
[\copyrighth@lder]}
\typeout{藤田眞作著「入門・縦横文書術」所載}
%
\@ifundefined{tatesuji}{\input{tatesuji.sty}}{}
% From chemist.sty by Shinsaku Fujita
\def\yen{\leavevmode\hbox{\setbox0=\hbox{Y}%
\setbox1=\vbox{\hrule height.05\ht0 width.96\wd0%
\kern.18\ht0\hrule height.05\ht0 width.96\wd0}%
\setbox1=\hbox to\wd0{\raise.3\ht0\box1\hss}%
{\ooalign{\hfil\box1\hfil\crcr\box0}}}}
%
% カウンター
%
\newcount\seikyuitem
\newcount\kingaku
\newcount\@tempcntc
\newcount\@tempcntd
\newcount\@tempcnte
\newcount\@tempcntf
\seikyuitem=0
\kingaku=0
%
% 文字の大きさ
%
\let\daijisize=\LARGE
\let\atenasize=\Large
%
% 品目
%
\def\hinmoku#1#2#3#4{\advance\seikyuitem by1%品目の種類数
%%%\global\advance\kingaku by#4
\def\tempaaa{}%
\@tfor\member:=#4\do{\edef\tempccc{,}%コンマは除く
\ifx\member\tempccc\relax\else\edef\tempaaa{\tempaaa\member}\fi}%
\@tempcntf=\tempaaa 
\global\advance\kingaku by\@tempcntf%累積金額
%\the\kingaku AAAAA
\expandafter\gdef\csname\the\seikyuitem item\endcsname{#1}%
\expandafter\gdef\csname\the\seikyuitem num\endcsname{#2}%
\expandafter\gdef\csname\the\seikyuitem @\endcsname{#3}%
\expandafter\gdef\csname\the\seikyuitem price\endcsname{#4}}
%
% 項目
%
\def\kokyaku#1{\gdef\@kokyaku{#1}}
\def\zenkaku{\char\jis"2121}
\def\seikyusha#1{\gdef\@seikyusha{#1}}
\def\seikyujusho#1{\gdef\@seikyujusho{#1}}
\def\seikyutel#1{\gdef\@seikyutel{#1}}
\def\seikyubango#1{\gdef\@seikyubango{#1}}
\def\yubinbango#1{\gdef\@yubinbango{#1}}
\seikyujusho{〒0123-4444 京都市〇△区△□町000番地}
\seikyusha{藤田 眞作}
\seikyutel{333-444-5555}
\yubinbango{1111-0000}
\seikyubango{}
%
% 消費税計算
%
\newif\ifshohizeisw \shohizeiswtrue
%
% 三桁ごとに区切る
%
\def\sanketakugiri#1\@nil{\@tempcntc=0\relax
%\expandafter\@tfor\expandafter\member\expandafter:%
%\expandafter=#1\do{\edef\tempccc{,}%
\@tfor\member:=#1\do{\edef\tempccc{,}%
\ifx\member\tempccc\relax\else\advance\@tempcntc by1\fi}
\@tempcntd=\@tempcntc\relax
\divide\@tempcntd by3\relax
\chardef\@maxtemp=\@tempcntd
\multiply\@tempcntd by3\relax
\advance\@tempcntc by-\@tempcntd \relax%剰余mod3
\@tempcntd=0\relax
\ifnum\@tempcntc=0\relax
\@tempcnte=2\relax\else
\@tempcnte=1\relax\fi
%\expandafter\@tfor\expandafter\member\expandafter:%
%\expandafter=#1\do{%
\@tfor\member:=#1\do{%
\edef\tempccc{,}%
\ifx\member\tempccc\relax\else
\advance\@tempcntd by1
\member%
\ifnum\@tempcnte>\@maxtemp\relax\else
\ifnum\@tempcntc>0\relax
\ifnum\@tempcntd=\@tempcntc\relax ,\relax
\advance\@tempcnte by1
\@tempcntd=0\relax
\@tempcntc=0\relax\fi
\else
\ifnum\@tempcntd=3 ,\relax\@tempcntd=0\relax
\advance\@tempcnte by1\relax
\fi\fi\fi\fi}}
%
% 枠と共に出力
%
\unitlength=1mm
\long\def\seikyushowaku{%
\par
\noindent
\@tempcnta=0
\@tempcntb=0
\begin{picture}(160,140)(0,0)
\put(60,130){\line(1,0){40}}
\put(60,130){\makebox(40,6){\daijisize\bf 請\zenkaku 求\zenkaku 書}}
\put(110,118){\makebox(50,5)[rb]{%
\ifx\@date\empty 平成 ~~ 年 ~~ 月 ~~ 日\else\@date\fi}}
\put(0,112){\makebox(42,6)[lb]{\atenasize \@kokyaku}}
\put(42,112){\makebox(8,6)[rb]{\atenasize\bf 様}}
\put(0,112){\line(1,0){50}}
\thicklines
\put(10,100){\line(1,0){140}}
\put(10,94){\line(1,0){140}}
%\put(10,16){\line(1,0){140}}
%\put(10,22){\line(1,0){140}}
\thinlines
%\multiput(10,88)(0,-6){11}{\line(1,0){140}}
\multiput(10,88)(0,-6){9}{\line(1,0){140}}
%\put(89,100){\line(0,-1){84}}
%\put(107,100){\line(0,-1){84}}
%\put(125,100){\line(0,-1){84}}
\put(10,94){%
\makebox(80,6){\strut 品\zenkaku\zenkaku\zenkaku\zenkaku 目}%
\makebox(15,6){\strut 数\zenkaku 量}\makebox(2,6){}%
\makebox(17,6){\strut 単\zenkaku 価}\makebox(2,6){}%
\makebox(23,6){\strut 金\zenkaku 額}}
\ifnum\seikyuitem>10\relax
\typeout{Seikyusho: Two Many Items}
\put(10,90){\strut 請求書の品目が10種類を越えています。}
\else
\loop%品目を指定された数だけループで出力
\advance\@tempcnta by1
\@tempcntb=-\@tempcnta \multiply\@tempcntb by6\relax%
\advance\@tempcntb by94\relax
%\put(10,88){%
\put(10,\the\@tempcntb){%
\makebox(6,6)[r]{\strut%
\footnotesize\it \the\@tempcnta.}%
\makebox(4,6){}%
\makebox(70,6)[l]{\strut%
\expandafter\csname\the\@tempcnta item\endcsname}%
\makebox(15,6)[r]{\strut%
\expandafter\csname\the\@tempcnta num\endcsname}%
\makebox(2,6){}%
\makebox(17,6)[r]{\strut%
\edef\tempbbb{\expandafter\csname\the\@tempcnta @\endcsname}%
\expandafter\sanketakugiri\tempbbb\@nil}%
\makebox(2,6){}%
\makebox(23,6)[r]{\strut%
\edef\tempbbb{\expandafter\csname\the\@tempcnta price\endcsname}%
\expandafter\sanketakugiri\tempbbb\@nil}}
\ifnum\@tempcnta<\seikyuitem \repeat%ループの終わり
\fi
%区切りを重ね書き
\ifnum\seikyuitem>10\relax\else
\thicklines
\put(10,\the\@tempcntb){\line(1,0){140}}
\thinlines
\fi
%合計
\typeout{Seikyusho: Total\space=\space\the\kingaku}%
\advance\@tempcnta by1
\@tempcntb=-\@tempcnta \multiply\@tempcntb by6\relax%
\advance\@tempcntb by94\relax
\ifnum\seikyuitem>10\relax\else
\put(10,\the\@tempcntb){%
\makebox(80,6){\strut 合\zenkaku\zenkaku\zenkaku\zenkaku 計}%
\makebox(15,6){\strut}\makebox(2,6){}%
\makebox(17,6){\strut}\makebox(2,6){}%
\makebox(23,6)[r]{\strut\edef\tempbbb{\the\kingaku}%
\expandafter\sanketakugiri\tempbbb\@nil}}\fi
%消費税5%
\ifshohizeisw
\@tempcntc=\kingaku \multiply\@tempcntc by5\relax
\divide\@tempcntc by100\relax
\typeout{Seikyusho: Tax\space=\space\the\@tempcntc}%
\advance\@tempcnta by1
\@tempcntb=-\@tempcnta \multiply\@tempcntb by6\relax%
\advance\@tempcntb by94\relax
\ifnum\seikyuitem>10\relax\else
%\ifshohizeisw%% bug fix: moved to line 192, 2002/04/30
\put(10,\the\@tempcntb){%
\makebox(80,6){\strut 消\hskip1.5zw 費\hskip1.5zw 税
\hbox to0pt{~~(5\%)\hss}}%
\makebox(15,6){\strut}\makebox(2,6){}%
\makebox(17,6){\strut}\makebox(2,6){}%
\makebox(23,6)[r]{\strut\edef\tempbbb{\the\@tempcntc}%
\expandafter\sanketakugiri\tempbbb\@nil}}\fi\fi
%
% 項目が9以上のときは、行を増やす。ただし、上限10項目
%
\ifnum\@tempcnta<11
\thicklines
\put(10,28){\line(1,0){140}}
\put(10,34){\line(1,0){140}}
\thinlines
\put(89,100){\line(0,-1){72}}
\put(107,100){\line(0,-1){72}}
\put(125,100){\line(0,-1){72}}
\else
\thicklines
\put(10,16){\line(1,0){140}}
\put(10,22){\line(1,0){140}}
\thinlines
\put(89,100){\line(0,-1){84}}
\put(107,100){\line(0,-1){84}}
\put(125,100){\line(0,-1){84}}
\multiput(10,34)(0,-6){2}{\line(1,0){140}}
\fi
%
% 請求額
%
\advance\@tempcntc by\kingaku
\typeout{Seikyusho: Account\space=\space\the\@tempcntc}%
\ifnum\@tempcnta<11
\put(10,28){%
\makebox(80,6){\strut 請\hskip1.5zw 求\hskip1.5zw 額}%
\makebox(15,6){\strut}\makebox(2,6){}%
\makebox(17,6){\strut}\makebox(2,6){}%
\ifnum\seikyuitem>10\relax\else
\makebox(23,6)[r]{\strut\edef\tempbbb{\the\@tempcntc}%
\yen\kern-.2zw\expandafter\sanketakugiri\tempbbb\@nil}\fi}
\ifx\@seikyubango\empty\else
\put(10,22){%
\makebox(150,6)[l]{(\small 請求番号\@seikyubango)}}\fi
\put(10,16){\strut 上記の通りご請求申し上げます。}
\put(90,14){\makebox(70,6)[lb]{\atenasize \@seikyusha
\hskip2zw{\footnotesize 印}{\kern-.8zw$\bigcirc$}}}
\put(94,8){\makebox(60,6)[lb]{\footnotesize 〒\@yubinbango}}
\put(94,4){\makebox(60,6)[lb]{\footnotesize \@seikyujusho}}
\put(94,0){\makebox(60,6)[lb]{\footnotesize 電話\@seikyutel}}
\else
\put(10,16){%
\makebox(80,6){\strut 請\hskip1.5zw 求\hskip1.5zw 額}%
\makebox(15,6){\strut}\makebox(2,6){}%
\makebox(17,6){\strut}\makebox(2,6){}%
\makebox(23,6)[r]{\strut\edef\tempbbb{\the\@tempcntc}%
\yen\kern-.2zw\expandafter\sanketakugiri\tempbbb\@nil}}
\ifx\@seikyubango\empty\else
\put(10,10){%
\makebox(150,6)[l]{(\small 請求番号\@seikyubango)}}\fi
\put(10,4){\strut 上記の通りご請求申し上げます。}
\put(90,2){\makebox(70,6)[lb]{\atenasize \@seikyusha
\hskip2zw{\footnotesize 印}{\kern-.8zw$\bigcirc$}}}
\put(94,-4){\makebox(60,6)[lb]{\footnotesize 〒\@yubinbango}}
\put(94,-8){\makebox(60,6)[lb]{\footnotesize \@seikyujusho}}
\put(94,-12){\makebox(60,6)[lb]{\footnotesize 電話\@seikyutel}}
\fi
\end{picture}}
\endinput
%
%以下は実例
%
\documentclass[a4j]{jarticle}
\usepackage{sfseikyu}

\textwidth=16cm
\oddsidemargin=-0.1cm
\pagestyle{empty}

\begin{document}
%\shohizeiswfalse
%%%デフォルトは消費税を計算\shohizeitrue
\seikyubango{0123}
\date{平成12年1月5日}
%\date{}%年月日を出力しない。
%\dateを指定しないと処理日の日付
\kokyaku{四井五菱株式会社}
\hinmoku{化学者・生化学者のための\LaTeX }{1冊}{4800}{4800}
\hinmoku{\LaTeX まくろの八衢}{1冊}{2330}{2330}
\hinmoku{\LaTeX 本づくりの八衢}{1冊}{3107}{3107}
\hinmoku{\LaTeX2e 階梯}{1冊}{2718}{2718}
\hinmoku{続\LaTeX2e 階梯・縦組編}{1冊}{3500}{3500}
\hinmoku{XyMTeX---Typesetting$\cdots$}{1冊}{5500}{5500}
%\hinmoku{書籍g}{1冊}{1800}{1800}
%\hinmoku{書籍h}{3冊}{500}{1500}
%\hinmoku{雑誌a}{1冊}{1000}{1000}
%\hinmoku{雑誌b}{1冊}{800}{800}
%\hinmoku{俗悪雑誌j}{1冊}{500}{5000}%11項目以上はエラー
\yubinbango{0123-4444}
\seikyujusho{京都市〇△区△□町000番地}
\seikyusha{藤　田　眞　作}
\seikyutel{333-444-5555}
\seikyushowaku
\end{document}
