% shiika.sty (version 1.02) by Shinsaku Fujita 2000/09/10
% shiika.sty (version 1.01) by Shinsaku Fujita 2000/02/12
% shiika.sty (version 1.00) by Shinsaku Fujita 1998/08/30
% Copyright (C) 1998, 2000, 2002 by Shinsaku Fujita, All rights reserved. 
%
%  縦書における「詩歌」環境
%
%  作成者: 藤田眞作
%          fujitas@chem.kit.ac.jp
%
%   藤田眞作著「続LaTeX2e階梯・縦書編」所載
%
%   version 1.02
%   2002/9/10 by Shinsaku Fujita
%   二行目以降の字下げを可変に
%   引数<ハング>を追加．
%
%   version 1.01
%   2000/2/12 by Shinsaku Fujita
%   字下げを可変に
%
%   藤田眞作著「入門・縦横文書術」所載
%
%   無保証
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%\def\j@urnalname{shiika}
%\def\versi@ndate{August 30, 1998}
%\def\versi@nno{ver1.00}
%\def\copyrighth@lder{SF} % Shinsaku Fujita
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%\def\j@urnalname{shiika}
%\def\versi@ndate{February 12, 2000}
%\def\versi@nno{ver1.01}
%\def\copyrighth@lder{S. Fujita} % Shinsaku Fujita
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\def\j@urnalname{shiika}
\def\versi@ndate{September 10, 2002}
\def\versi@nno{ver1.02}
\def\copyrighth@lder{S. Fujita} % Shinsaku Fujita
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\typeout{Option Style `\j@urnalname' (\versi@nno) <\versi@ndate>\space 
[\copyrighth@lder]}
\typeout{藤田眞作著「続LaTeX2e階梯・縦書編」所載}
\typeout{藤田眞作著「入門・縦横文書術」所載}
%
% 詩歌環境
% \begin{shiika}[字下げ](字間)<ハング>
%   字下げは詩全体を下げる．デフォルトで2字分
%   (字間がデフォルト四分アキになります)
%   ハングはに二行以降の字下げ．デフォルトは2zw
% \end{shiika}
%
\newif\if@kotobagaki \@kotobagakifalse
\def\shiika{\@ifnextchar[{\@shiika}{\@shiika[2zw]}}
\def\@shiika[#1]{\@ifnextchar({\@shiik@[#1]}{\@shiik@[#1](0.25zw)}}
\def\@shiik@[#1](#2){\@ifnextchar<{\@shiik@@[#1](#2)}{\@shiik@@[#1](#2)<2zw>}}
\def\@shiik@@[#1](#2)<#3>{\begingroup\let\\\@normalcr
   \par%念のため\kanjiskipの影響が及ばないように指定
   \list{}{%
    \kanjiskip=#2 plus 0.01zw minus 0.01zw
    \xkanjiskip=\kanjiskip
    \itemsep=\z@ \topsep=\z@ \parsep=\z@
    \leftmargin=#1\relax
		\@tempdimb=#1%詞書用に保存
%%		\advance\leftmargin by2zw
		\advance\leftmargin by#3
    \dimen0=#3\relax
    \dimen1=1zw\relax
    \@tempcnta=\dimen0\relax
    \@tempcntb=\dimen1\relax
    \divide\@tempcnta by\@tempcntb
%%		\@tempdima=#2 \multiply\@tempdima by2\relax
		\@tempdima=#2 \multiply\@tempdima by\@tempcnta\relax
		\advance\leftmargin by\@tempdima
%%		\itemindent=-2zw
		\itemindent=-#3\relax
    \advance\itemindent by-\@tempdima
    \listparindent=\itemindent
    \rightmargin=0zw}\item\relax\@kotobagakitrue}
\def\endshiika{\par\endgroup\endlist}
%
% 詞書(shiika環境の外側で用いる)
% \kotobagaki{詞書}{作者名}
%   詞書の最終行の末端と作者名の間に空白
%
\def\kotobagaki#1#2{%
{\leftskip 3zw\relax%            %左余白(縦組では上余白)
\rightskip 2zw%                  %右余白(縦組では下余白)
\parfillskip -\rightskip%        %右余白に等しくはみ出しの埋め草
\parindent 1zw\relax%            %段落冒頭の字下げ
\setbox0=\hbox{#2}%              %
\dimen0=\wd0\advance\dimen0 by1zw
\leavevmode%                     %垂直モードから脱出
\null\nobreak\hskip -\leftskip%  %左余白の分を戻ってから、出力開始
{#1}\nobreak\hfill\nobreak%      %#1を出力してから、#2を下寄せ 
\hbox to\dimen0{\hss#2}\par}}
%
% 詞書(shiika環境の内側で用いる)
% \kotobagakI{詞書}{作者名}
%   詞書の最終行の末端と作者名の間に空白
%
\def\kotobagakI#1#2{%shiika環境の内部でのみ使用
\if@kotobagaki\else\item\relax\fi\@kotobagakifalse
{\kanjiskip=0pt plus0.01zw minus0.01zw
\let\xkanjiskip=\kanjiskip
\leftskip=-\leftmargin%          %左余白(縦組では上余白)
\rightskip 2zw%                  %右余白(縦組では下余白)
\parfillskip -\rightskip%        %右余白に等しくはみ出しの埋め草
\parindent 1zw\relax%            %段落冒頭の字下げ
\setbox0=\hbox{#2}%              %
\dimen0=\wd0\advance\dimen0 by1zw
\leavevmode%                     %垂直モードから脱出
\null\nobreak\hskip -\leftskip%  %左余白の分を戻ってから、出力開始
\hskip1zw\hskip-\@tempdimb% shiika環境より受け取り
{#1}\nobreak\hfill\nobreak%      %#1を出力してから、#2を下寄せ 
\hbox to\dimen0{\hss#2}\par}}
%
% 詞書(shiika環境の外側で用いる)
% \dottedkotobagaki{詞書}{作者名}
%   詞書の最終行の末端と作者名の間に点線
%
\def\dottedkotobagaki#1#2{%shiika環境の内部でのみ使用
{\leftskip 3zw\relax%            %左余白(縦組では上余白)
\rightskip 2zw%                  %右余白(縦組では下余白)
\parfillskip -\rightskip%        %右余白に等しくはみ出しの埋め草
\parindent 1zw\relax%            %段落冒頭の字下げ
\setbox0=\hbox{#2}%              %
\dimen0=\wd0\advance\dimen0 by.5zw
\leavevmode%                     %垂直モードから脱出
\null\nobreak\hskip -\leftskip%  %左余白の分を戻ってから、出力開始
{#1}\nobreak%                    %#1を出力
\hskip.5zw\nobreak
\leaders\hbox to.333334zw{\hss\raise.26zh\hbox{.}\hss}\hfill
\nobreak%      
\hbox to\dimen0{\hss#2}\par}}%       %点線出力ののち#2を下寄せ  
%
% 詞書(shiika環境の内側で用いる)
% \dottedkotobagakI{詞書}{作者名}
%   詞書の最終行の末端と作者名の間に点線
%
\def\dottedkotobagakI#1#2{%
\if@kotobagaki\else\item\relax\fi\@kotobagakifalse
{\kanjiskip=0pt plus0.01zw minus0.01zw
\let\xkanjiskip=\kanjiskip
\leftskip=-\leftmargin%          %左余白(縦組では上余白)
\rightskip 2zw%                  %右余白(縦組では下余白)
\parfillskip -\rightskip%        %右余白に等しくはみ出しの埋め草
\parindent 1zw\relax%            %段落冒頭の字下げ
\setbox0=\hbox{#2}%              %
\dimen0=\wd0\advance\dimen0 by.5zw
\leavevmode%                     %垂直モードから脱出
\null\nobreak\hskip -\leftskip%  %左余白の分を戻ってから、出力開始
\hskip1zw\hskip-\@tempdimb% shiika環境より受け取り
{#1}\nobreak%                    %#1を出力
\hskip.5zw\nobreak
\leaders\hbox to.333334zw{\hss\raise.26zh\hbox{.}\hss}\hfill
\nobreak%      
\hbox to\dimen0{\hss#2}\par}}%       %点線出力ののち#2を下寄せ  
%
% 詞書
% \dashkotobagaki{詞書}{作者名}
%   詞書の最終行の末端と作者名の間に棒線
%
\def\dashkotobagaki#1#2{%
{\leftskip 3zw\relax%            %左余白(縦組では上余白)
\rightskip 2zw%                  %右余白(縦組では下余白)
\parfillskip -\rightskip%        %右余白に等しくはみ出しの埋め草
\parindent 1zw\relax%            %段落冒頭の字下げ
\setbox0=\hbox{#2}%              %
\dimen0=\wd0\advance\dimen0 by.5zw
\leavevmode%                     %垂直モードから脱出
\null\nobreak\hskip -\leftskip%  %左余白の分を戻ってから、出力開始
{#1}\nobreak%                    %#1を出力
\hskip.5zw\nobreak
\hrulefill%                       %棒線出力
\nobreak%      
\hbox to\dimen0{\hss#2}\par}}%    %#2を下寄せ  
%
% 詞書(索引項目としても使える)
% \dottedsakuin{詞書}{作者名}
%   詞書の最終行の末端と作者名の間に空白
%   \dottedkotobagakiとはパラメーターが異なる
%
\def\dottedsakuin#1#2{%
{\leftskip 1zw\relax%            %左余白(縦組では上余白)
\rightskip 2zw%                  %右余白(縦組では下余白)
\parfillskip -\rightskip%        %右余白に等しくはみ出しの埋め草
\parindent 0zw\relax%            %段落冒頭の字下げ
\setbox0=\hbox{#2}%              %
\dimen0=\wd0\advance\dimen0 by.25zw
\leavevmode%                     %垂直モードから脱出
\null\nobreak\hskip -\leftskip%  %左余白の分を戻ってから、出力開始
{#1}\nobreak%                    %#1を出力
\hskip.25zw\nobreak
\leaders\hbox to.333334zw{\hss\raise.26zh\hbox{.}\hss}\hfill
\nobreak\hbox to\dimen0{\hss#2}\par}}%点線出力ののち#2を下寄せ  
%
% TeXbookの\signedと空きのパラメーターが違うだけ
%
\def\jsigned#1{{\unskip\nobreak\hfil\penalty50
\hskip2zw\null\nobreak\hfil #1\parfillskip=0pt
\finalhyphendemerits=0 \par}}
%
% 和歌列挙環境
%
% 書式: 
%  \begin{wakarekkyo}[和歌字間](作者字間)<字下げ,字上げ>
%   和歌 & 作者名 \cr
%  \end{wakarekkyo}
%
%
\def\wakarekkyo{\@ifnextchar[%]
 {\@wakarekkyo}{\@wakarekkyo[.25zw]}}
\def\@wakarekkyo[#1]{\@ifnextchar(%)
 {\@w@karekkyo[#1]}{\@w@karekkyo[#1](0.25zw)}}
\def\@w@karekkyo[#1](#2){\@ifnextchar<%>
 {\@w@k@rekkyo[#1](#2)}{\@w@k@rekkyo[#1](#2)<2zw,1zw>}}
\def\@w@k@rekkyo[#1](#2)<#3,#4>{\tabskip=0pt
\def\tempa{#3}\def\tempb{#4}%
\halign to \hsize\bgroup\tabskip=0pt\relax
\ifx\tempa\empty\relax\hskip2zw\else\hskip#3\fi
\hbox{\kanjiskip=#1 plus 0.01zw minus 0.01zw
\let\xkanjiskip=\kanjiskip
##\unskip}\hfil\tabskip=\@centering&\tabskip=0pt
\hbox{\kanjiskip=#2 plus 0.01zw minus 0.01zw
\let\xkanjiskip=\kanjiskip
##\unskip}\hfil\ifx\tempb\empty\hskip1zw\else\hskip#4\fi
\tabskip=0pt\crcr}
\def\end@w@k@rekkyo{\egroup}
\let\end@w@karekkyo=\end@w@k@rekkyo
\let\end@wakarekkyo=\end@w@karekkyo
\let\endwakarekkyo=\end@wakarekkyo
%
% 和歌環境用の詞書
%
\def\kotobagakiRage{1zw}
\def\kotobagakiR#1#2{\noalign{#1\jsigned{#2%
\hspace*{\kotobagakiRage}}}}
%
% 和歌番号環境
%
% 書式: 
%  \begin{wakabango}[和歌字間](作者字間)<字下げ,字上げ>
%   和歌 & 作者名 \cr
%  \end{wakabongo}
%
\newcounter{wakano}
\def\thewakano{\Kanji{wakano}}
\def\wakabango{\@ifnextchar[%]
 {\@wakabango}{\@wakabango[.25zw]}}
\def\@wakabango[#1]{\@ifnextchar(%)
 {\@w@kabango[#1]}{\@w@kabango[#1](0.25zw)}}
\def\@w@kabango[#1](#2){\@ifnextchar<%>
 {\@w@k@bango[#1](#2)}{\@w@k@bango[#1](#2)<2zw,1zw>}}
\def\@w@k@bango[#1](#2)<#3,#4>{\tabskip=0pt
\def\tempa{#3}\def\tempb{#4}%
\halign to\hsize\bgroup\tabskip=0pt\relax
\refstepcounter{wakano}%
%\ifx\tempa\empty\relax\hskip2zw\else\hskip#3\fi
\ifx\tempa\empty\relax\@tempdima=2zw\else\@tempdima=#3\fi
\hskip\@tempdima
\hbox to0pt{\hss\hbox to\@tempdima{%
 \scriptsize\rensuji{\arabic{wakano}}\hss}}%
{\hbox{\kanjiskip=#1 plus 0.01zw minus 0.01zw
\let\xkanjiskip=\kanjiskip
##\unskip}\hfil}\tabskip=\@centering&\tabskip=0pt
{\hbox{\kanjiskip=#2 plus 0.01zw minus 0.01zw
\let\xkanjiskip=\kanjiskip
##\unskip}\hfil}\ifx\tempb\empty\hskip1zw\else\hskip#4\fi
\tabskip=0pt\crcr}
\def\end@w@k@bango{\egroup}
\let\end@w@kabango=\end@w@k@bango
\let\end@wakabango=\end@w@kabango
\let\endwakabango=\end@wakabango
\endinput
