%% -*- coding: iso-2022-jp; mode: yatex; -*- %% %% C I T A R E. S T Y %% %% スラヴ学研究者論文用文献引用マクロ %% %% 2006(c) isao yasuda, All Rights Reserved. %% %% History %% ------- %% 2006.01.28 v 1.0 新規作成 %% 2006.10.08 v 1.0 公開向け調整 %% 2006.10.18 v 1.1 jpdefault オプション.Babel 必須を廃止. %% 2007.02.25 v 1.2 citbsize カーニングサイズ. %% %% Caution %% ------- %% 最新版 http://yasuda.homeip.net/archives/citare-1.x.{zip,tar.gz} %% %% $Id: citare.sty,v 1.14 2007/02/27 16:02:09 isao Exp $ %% \ProvidesFile{citare.sty}% \ProvidesPackage{citare}[2006/10/18 V1.1; Citation for Slavonic philologists, isao yasuda.] % option \DeclareOption{opcit}{\def\opcitopt{}}% % op.cit.出力 \DeclareOption{authorrm}{\def\authorrm{}}% % 著者名を立体で出力 \DeclareOption{jpdefault}{\def\jpdefault{}}%% 日本語で一貫させる \ProcessOptions% % \@bibitem 再定義 \def\@lbibitem[#1]#2#3{\item[\@biblabel{#1}\hfill]% \if@filesw{% \let\protect\noexpand\toks@{#3}% 書誌事項(#3)をトークンに格納 \immediate\write\@auxout{\string\bibcite{#2}{\the\toks@}}}#3% \fi% \ignorespaces% }% \def\@bibitem#1#2{\item% \if@filesw{% \let\protect\noexpand\toks@{#2}% 書誌事項(#2)をトークンに格納 \immediate\write\@auxout{\string\bibcite{#1}{\the\toks@}}}#2% \fi% \ignorespaces% }% % ユーザ再定義可能マクロ \def\ibid{\textit{ibid.}} % 英語/フランス語 \def\opcit{\textit{op.\,cit.}}% 英語/フランス語 \def\ebd{ebd.} % ドイツ語 ebd. \def\aao{a.a.O.} % ドイツ語 am angefurt en Orie \def\zenkeisho{前掲書} % 日本語 \def\dousho{同書} % 日本語 \def\tamzhe{\CYRT\cyra\cyrm{} \cyrzh\cyre{}} % ロシア語 Tam zhe \def\ukazan{\CYRC\cyri\cyrt.\,\cyrs\cyro\cyrch.}% ロシア語 Cit. sochinenie % Babel ロード言語チェック \newif\ifde@% \newif\ifru@% \newif\ifjp@% \def\de@check{% \expandafter\ifx\csname dategerman\endcsname\relax\de@false% \else\iflanguage{german}{\de@true}{\de@false}% \fi% }% \def\ru@check{% \expandafter\ifx\csname daterussian\endcsname\relax\ru@false% \else\iflanguage{russian}{\ru@true}{\ru@false}% \fi% }% \def\jp@check{% \expandafter\ifx\csname datejapanese\endcsname\relax% \expandafter\ifx\csname datenippon\endcsname\relax% \jp@false% \else% \iflanguage{nippon}{\jp@true}{\jp@false}% \fi% \else% \iflanguage{japanese}{\jp@true}{\jp@false}% \fi% }% % ibid, opcit 代入 \def\@ibid{% % ibid.言語による切替え \ifx\jpdefault\@undefined% \de@check\ifde@\ebd% % ドイツ語 \else\ru@check\ifru@\tamzhe% % ロシア語 \else\jp@check\ifjp@\dousho% % 日本語 \else\ibid% % その他 \fi\fi\fi% \else\dousho\fi% % jpdefault指定時日本語 }% \def\@opcit{% % op.cit.言語による切替え \ifx\jpdefault\@undefined% \de@check\ifde@\aao% % ドイツ語 \else\ru@check\ifru@\ukazan% % ロシア語 \else\jp@check\ifjp@\zenkeisho% % 日本語 \else\opcit% % その他 \fi\fi\fi% \else\zenkeisho\fi% % jpdefault指定時日本語 }% % 内部マクロ \def\bibauthor#1{\xdef\@authorname{#1}#1}% 著者名格納 \def\@authorname{init} \edef\w@cited{\@empty} % 直前の引用文献キーのワーク \edef\lst@cited{\@empty} % 引用文献キーリスト \edef\athr@cited{\@empty} % 著者キー-著者名リスト \edef\@citelst{\@empty} % 引用文献キー \def\@fpair#1@ksep@#2@asep@{#1}% 著者キー分離 \def\@lpair#1@ksep@#2@asep@{#2}% 著者名分離 \def\add@athr@list#1#2{% 著者キー-著者名リスト追加 \edef\@wkey{#1@ksep@#2@asep@}% \@tempcnta=0% \expandafter\@for\expandafter\key@list\expandafter:% \expandafter=\athr@cited\do{% \ifx\@wkey\key@list\advance\@tempcnta by 1\fi% }% \ifnum\@tempcnta>0% \else% \xdef\aw@list{\athr@cited} \ifx\aw@list\@empty% \xdef\athr@cited{#1@ksep@#2@asep@}% \else% \xdef\athr@cited{#1@ksep@#2@asep@,\aw@list}% \fi% \fi% }% \def\get@athr@name#1{% 著者名を著者キー-著者名リストより取得 \edef\@parm{#1}% \expandafter\@for\expandafter\athr@key@pair\expandafter:% \expandafter=\athr@cited\do{% \edef\athr@key{\expandafter\@fpair\athr@key@pair}% \edef\athr@name{\expandafter\@lpair\athr@key@pair}% \ifx\@parm\athr@key% \athr@name% \fi% }% }% % 引用文献出力 \newdimen\citbsize \citbsize=0em% カーニングサイズ(デフォルト0) \def\full@out#1#2{% \xdef\a@wk{\@empty}% \@cite{% \@for\@citeb:=#2\do{% \@citea\def\@citea{,\penalty\@m\ }% \edef\@citeb{\expandafter\@firstofone\@citeb\@empty}% \if@filesw\immediate\write\@auxout{\string\citation{\@citeb}}\fi% \@ifundefined{b@\@citeb}% {\mbox{\reset@font\bfseries ?}\G@refundefinedtrue% \@latex@warning{% Citation `\@citeb' on page \thepage \space undefined}}% {\csname b@\@citeb\endcsname\nobreak\kern\citbsize}% }% }{#1}% }% % 文献出力で , の前で改行しない. \newdimen\comma@hang% \setbox0=\hbox{,}% \comma@hang=\wd0% \newdimen\comma@hangsp% \setbox0=\hbox{~}% \comma@hangsp=\wd0% \advance\comma@hangsp-\comma@hang \def\@comma{% \penalty10000\hbox{,}\kern-\comma@hang\kern\comma@hang\hskip\comma@hangsp% }% % redefine \@citex \newif\if@cit \def\@citex[#1]#2{% \leavevmode% \let\@citea\@empty% \def\w@buff{#2}% キーを \w@buff にセット \ifx\w@buff\w@cited% 直前の引用文献のキーと比較 \xdef\a@wk{\@empty}% \@cite{\@ibid}{#1}% 直前の引用が同じ時 ibid. 出力 \@cittrue% \else% \ifx\opcitopt\@undefined% \full@out{#1}{#2}% \@citfalse% \else% % 引用文献キーリストに登録されていたら op.cit. 出力 \@tempcnta=0% \expandafter\@for\expandafter\@citelst\expandafter:% \expandafter=\lst@cited\do{% \ifx\w@buff\@citelst\@tempcnta=1\fi% }% \ifnum\@tempcnta>0% 引用文献キーリストにエントリあり % ひとつ前の引用が同じ時 op.cit. 出力 \xdef\a@wk{\noexpand\get@athr@name{\w@buff}, }% \@cite{\@opcit}{#1} \@cittrue% \else% \full@out{#1}{#2}% \@citfalse% \fi% \fi% \fi% \if@cit\else\add@athr@list{\w@buff}{\@authorname}\fi% \@citfalse% \xdef\lst@cited{\w@buff,\lst@cited}% 引用文献キーリスト追加 \xdef\w@cited{\w@buff}% 直前引用文献キー更新 }% \def\@cite#1#2{% \ifx\authorrm\@undefined\textit{\a@wk}\else\a@wk\fi% #1\ifx\@empty#2\else\if@tempswa \kern0pt\@comma{} #2\kern-.04em\fi\fi% }% \def\cit@rm{roman}% \def\setcitface#1{% \def\cit@pr{#1} \ifx\cit@pr\cit@rm\def\authorrm{}% \else\let\authorrm=\@undefined\fi% }% \endinput %% %% 0.はじめに %% %% 本マクロ・パッケージは作者が自分の論文を書くために作成したものである. %% ロシア語の他日本語,ドイツ語,英語文献を引用することを考慮した. %% 詳細は添付ドキュメント citare.pdf を参照のこと. %% 本マクロ・パッケージは無保証である. %% %% %% 1.機能 %% %% (1)文科系論文に見られる引用文献マナーを自動化する.脚注にかつ文献名全体を %% 表示することができる. %% (2)同一文献が連続して引用された場合,「ibid.」出力を行う. %% (3)当該文献が直前より前に引用された場合,「著者名, op cit.」出力を行う. %% (opcit オプション指定のときのみ) %% (4)当該文献がはじめて引用された場合「著者名, 文献名」全体の出力を行う. %% (5)Babel 選択言語に応じて ibid., op cit. の内容は以下のとおりである. %% ibid. %% - ドイツ語: ebd. (ローマン) \ebd %% - ロシア語: Tam zhe (ローマン) \tamzhe %% - 日本語: 同書 (明朝) \dousho %% - その他: ibid. (イタリック) \ibid %% op cit. %% - ドイツ語: a.a.O. (ローマン) \aao %% - ロシア語: Cit. soq.(ローマン) \ukazan %% - 日本語: 前掲書 (明朝) \zenkeisho %% - その他: op. cit. (イタリック) \opcit %% (6)ibid., op cit. 出力内容を変更したいときは上記各言語右にしるした命令を %% \def または \renewcommand で再定義する. %% 例 ロシア語 op cit.を Cit. soq.から Ukazan. soq.に変更する: %% \def\ukazan{Ukazan. soq.} %% %% %% 2.使い方 %% %% (1)パッケージオプション %% %% プリアンブルに \usepackage[