%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Bibliography Style `authyear.bst' % Ken Urai, December 3, 1998. Ver. 1.24 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % 藤田 眞作 氏の _audate2.bst を修正・カスタマイズ. % % データベースの and others エントリーが処理できていないバグを修正. % タイトルを日本語文献は『』付きで,英語論文はコンマ付き二重引用で出力. % 引用 option (頁,章など)との区切りをセミコロンにする. % 複数著者の文章中での参照形式を,日本人の場合のみ中ドット区切りに変更. % 文献表で各項目は負のインデントを持って著者 - 年代で始まる. % 経済学の論文用 Reference を作成. % chapterbib.sty 互換. % % 同一バージョンの authyear.sty (藤田氏の audate2.sty に浦井が手を加えた % もの) と組み合わせて用いること. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ENTRY { address author booktitle chapter edition editor howpublished institution journal key month note number organization pages publisher school series title type volume year yomi ayear%特許のための二次文献 (抄録誌) 用 anumber%特許のための二次文献 (抄録誌) 用 } {is.kanji.entry} { label extra.label sort.label } INTEGERS { output.state before.all mid.sentence after.sentence after.block } INTEGERS { after.cln after.semicln after.space } FUNCTION {init.state.consts} { #0 'before.all := #1 'mid.sentence := #2 'after.sentence := #3 'after.block := #4 'after.cln := #5 'after.semicln := #6 'after.space := } STRINGS { s t } FUNCTION {output.nonnull} { 's := output.state mid.sentence = { ", " * write$ } { output.state after.space = { " " * write$ } {output.state after.semicln = { "; " * write$ } {output.state after.cln = { ": " * write$ } { output.state after.block = { add.period$ write$ newline$ "\newblock " write$ } { output.state before.all = 'write$ { add.period$ " " * write$ } if$ after.space 'output.state := } if$ after.space 'output.state := } if$ after.space 'output.state := } if$ after.space 'output.state := } if$ after.space 'output.state := } if$ s } FUNCTION {output} { duplicate$ empty$ 'pop$ 'output.nonnull if$ } FUNCTION {output.check} { 't := duplicate$ empty$ { pop$ "empty " t * " in " * cite$ * warning$ } 'output.nonnull if$ } FUNCTION {fin.entry} { add.period$ write$ } FUNCTION {new.block} { output.state before.all = 'skip$ { after.block 'output.state := } if$ } FUNCTION {space.block} { output.state before.all = 'skip$ { after.space 'output.state := } if$ } FUNCTION {semicln.block} { output.state before.all = 'skip$ { after.semicln 'output.state := } if$ } FUNCTION {cln.block} { output.state before.all = 'skip$ { after.cln 'output.state := } if$ } FUNCTION {comma.block} { output.state before.all = 'skip$ { mid.sentence '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$ "" } { "{\em " swap$ * "}" * } if$ } FUNCTION {emphasizes} { duplicate$ empty$ { pop$ "" } { "{\em " swap$ * "} " * } if$ } FUNCTION {doublequote} { duplicate$ empty$ { pop$ "" } { "{``" swap$ * "\char'42}" * } if$ } FUNCTION {kakko} { duplicate$ empty$ { pop$ "" } { "{『" swap$ * "』}" * } if$ } FUNCTION {kakkodoublequote.commawithin} { duplicate$ empty$ { pop$ "" } { is.kanji.entry { "{『" swap$ * "』}" * } { "{``" swap$ * ",\char'42}" * } if$ } if$ } FUNCTION {spaceputa} { duplicate$ empty$ { pop$ "" } { "" swap$ * " " * } if$ } INTEGERS { nameptr namesleft numnames } %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % jBibTeXの仕様に揃えます.英語と日本語で書き方が逆になるので, % 若干混乱を招くかもしれません. % ・ 日本語の姓は,jBibTeXでは特殊な取り方をしています. % (正) 藤田 眞作 (半角の空白をいれる) % (誤) 藤田,眞作 あるいは 眞作 藤田 (この指定はなさそうですが) % ・ 英語の姓は,BibTeX本来の取り方をしています. % (正) Shinsaku Fujita または Fujita, Shinsaku % (誤) Fujita Shinsaku %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % 複数著者の文献の文章中での参照出力形式を,「および」から「・」に, % 「ほか」から「他」に変更.(Ken) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% FUNCTION {format.keylabel} { 's := s is.kanji.str$ {s #1 "{ff}" format.name$} {s #1 "{vv~}{ll}" format.name$} if$ s num.names$ duplicate$ #2 > { s is.kanji.str$ {pop$ "・他" * } {pop$ " et~al." * } if$ } { #2 < 'skip$ { s #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" = { s is.kanji.str$ {"・他" * } {" et~al." * } if$ } { s is.kanji.str$ { "・" * s #2 "{ff}" format.name$ * } { " and " * s #2 "{vv~}{ll}" format.name$ * } if$ } if$ } if$ } if$ } FUNCTION {format.bibkey} { author empty$ { editor empty$ {""} {"" editor format.keylabel * ", " * year * } if$ } {"" author format.keylabel * ", " * year * } if$ } %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % \bibitem命令のオプション引数を入れるために新設 % 旧output.bibitem関数を変更 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% FUNCTION {output.bibitema} { newline$ "\bibitem[" write$ % mid.sentence 'output.state := } FUNCTION {output.bibitemb} { "]" write$ "{" write$ cite$ write$ "}" write$ newline$ "" before.all 'output.state := } FUNCTION {output.bibitem} { output.bibitema format.bibkey write$ output.bibitemb} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % jBibTeXの仕様に揃えます.英語と日本語で書き方が逆になるので, % 若干混乱を招くかもしれません. % (正)藤田 眞作 (誤)藤田,眞作 % (正)Shinsaku Fujita または Fujita, Shinsaku (誤)Fujita Shinsaku %%%%%%%%%%%%%%%%%%%%%%% % 文献表において and others がきちんと処理されない不具合を修正. % (Ken Urai) %%%%%%%%%%%%%%%%%%%%%%% FUNCTION {format.names} { 's := #1 'nameptr := s num.names$ 'numnames := numnames 'namesleft := { namesleft #0 > } { s nameptr "{ff}{ll}" format.name$ is.kanji.str$ {s nameptr "{ff}{ ll}" format.name$ 't :=} {s nameptr "{vv~}{ll, }{f.}{, jj}" format.name$ 't :=} % {s nameptr "{f.~}{vv~}{ll}{, jj}" format.name$ 't :=} if$ nameptr #1 > { namesleft #1 > { s is.kanji.str$ { "・" * t * } { ", " * t * } if$ } { numnames #2 > { "" * } 'skip$ if$ % t #1 "{ff}{ll}" format.name$ "others" = %デバッグ用 t "others, " = % t は {ll, } となるので,こうしないとだめ. { s is.kanji.str$ {"・他" * } {" et~al." * } if$ } { s is.kanji.str$ {"・" * t * } { numnames #2 = {" and " * t * } {", and " * t * } if$ } if$ } if$ } if$ } 't if$ nameptr #1 + 'nameptr := namesleft #1 - 'namesleft := } while$ } FUNCTION {format.authors} { author empty$ { "" } { author format.names } if$ } FUNCTION {format.editors} { editor empty$ { "" } { editor format.names editor num.names$ #1 > { editor is.kanji.str$ {" 編" * } {" ed" * } if$ } { editor is.kanji.str$ {" 編" *} {" ed" * } if$ } if$ } if$ } FUNCTION {format.title} { title empty$ { "" } { title "t" change.case$ } if$ } FUNCTION {format.title.incoll} { title empty$ { "" } { title } 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} { year empty$ { month empty$ { "" } { "there's a month but no year in " cite$ * warning$ month } if$ } { month empty$ { "(" year * ")" * } { "(" year * ")" * } if$ } if$ } FUNCTION {format.date.pat} { ayear empty$ { month empty$ { "" } { "there's a month but no year in " cite$ * warning$ month } if$ } { month empty$ { "(" ayear * ")" * } { "(" ayear * ")" * } if$ } if$ } FUNCTION {format.btitle} { title emphasize } FUNCTION {format.kakkobtitle} { is.kanji.entry {title kakko} {title emphasize} if$ } FUNCTION {format.proctitle} { booktitle emphasize } FUNCTION {tie.or.space.connect} { duplicate$ text.length$ #3 < { "~" } { " " } if$ swap$ * * } FUNCTION {either.or.check} { empty$ 'pop$ { "can't use both " swap$ * " fields in " * cite$ * warning$ } if$ } FUNCTION {format.bbvolume} { volume empty$ { "" } { volume is.kanji.str$ { volume } { is.kanji.entry {"第" volume * "巻" *} {"vol." volume tie.or.space.connect} if$ } if$ series empty$ 'skip$ { series is.kanji.str$ { volume empty$ {series swap$ * } {series ", " * swap$ * } if$ } { " of " * series emphasize * } if$ } if$ "volume and number" number either.or.check } if$ } FUNCTION {format.bvolume} { volume empty$ { "" } { volume is.kanji.str$ { volume } { is.kanji.entry {"第" volume * "巻" *} {"Vol." volume tie.or.space.connect} if$ } if$ series empty$ 'skip$ { series is.kanji.str$ { volume empty$ {series swap$ * } {series ", " * swap$ * } if$ } { " of " * series emphasize * } if$ } if$ "volume and number" number either.or.check } if$ } FUNCTION {format.number.series} { volume empty$ { after.semicln 'output.state := number empty$ { series field.or.null } { number is.kanji.str$ { number } { output.state after.space = { "no." } { "No." } if$ number tie.or.space.connect } if$ series empty$ { "there's a number but no series in " cite$ * warning$ } { series is.kanji.str$ { series ", " * swap$ * } { " In " * series * } if$ } if$ } if$ } { "" } if$ } FUNCTION {format.edition} { edition empty$ { "" } { edition is.kanji.str$ { edition } { is.kanji.entry {"第" edition * "版" *} { output.state mid.sentence = { edition "l" change.case$ " edn." * } { edition "t" change.case$ " edn." * } if$ } if$ } 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} { 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} { volume field.or.null emphasize number empty$ 'skip$ { "(" number * ")" * * volume empty$ { "there's a number but no volume in " cite$ * warning$ } 'skip$ if$ } if$ pages empty$ 'skip$ { duplicate$ empty$ { "" * pages n.dashify * } { ", " * pages n.dashify * } if$ } if$ } FUNCTION {format.vol.num.pagess} { volume field.or.null emphasize anumber empty$ 'skip$ { "(" anumber * ")" * * volume empty$ { "there's an anumber but no volume in " cite$ * warning$ } 'skip$ if$ } if$ pages empty$ 'skip$ { duplicate$ empty$ { "" * pages n.dashify * } { ", " * pages n.dashify * } if$ } if$ } FUNCTION {format.chapter.pages} { chapter empty$ 'format.pages { type empty$ { chapter is.kanji.str$ { "" } { is.kanji.entry {"章"} {"Chapter"} if$ } if$ } { type "l" change.case$ } if$ chapter is.kanji.str$ not is.kanji.entry and {"第" chapter * swap$ *} { chapter is.kanji.str$ {chapter *} {chapter tie.or.space.connect} if$ } if$ pages empty$ 'skip$ { ", " * format.pages * } if$ } if$ } FUNCTION {format.in.ed.booktitle} { booktitle empty$ { "" } { editor empty$ { booktitle is.kanji.str$ {"[" booktitle emphasize * "]" *} {"in " booktitle emphasize * ", " } if$ } { booktitle is.kanji.str$ {"[" booktitle emphasize * " ~(" * format.editors * ")] " *} {"in " booktitle emphasize * ", ~(" * format.editors * ") " *} 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$ { "Technical Report" } 'type if$ number empty$ 'skip$ { " No.~" * number *} if$ } FUNCTION {format.pub.addr} { publisher empty$ {""} { "" address empty$ { " " * publisher *} { " " * publisher * ", " * address *} if$ } if$ } FUNCTION {article}%% 論文の出力形式を変更. { output.bibitem format.authors "author" output.check format.date "year" output.check cln.block%%コロンで区切る. %% format.title output title kakkodoublequote.commawithin "title" output.check%% 『』``,''付き. %% space.block%%スペースで区切る. journal emphasizes "journal" output.check format.vol.num.pages output new.block note output fin.entry } FUNCTION {book}%% 本の出力形式を変更. { output.bibitem author empty$ { format.editors "author and editor" output.check } { format.authors output.nonnull} if$ format.date "year" output.check cln.block%% コロンで区切る. %space.block format.kakkobtitle "title" output.check %% space.block%% スペースで区切る. format.edition output space.block format.bbvolume output title is.kanji.str$ {space.block} {new.block} if$ format.pub.addr output new.block note output fin.entry } FUNCTION {booklet} { output.bibitem format.authors output new.block format.title "title" output.check howpublished address new.block.checkb howpublished output address output format.date output new.block note output fin.entry } FUNCTION {inbook} { output.bibitem author empty$ 'skip$ { format.authors output.nonnull } if$ format.date "year" output.check cln.block%% もと new.block title kakkodoublequote.commawithin "title" output.check%% 『』``,''付き. format.in.ed.booktitle "booktitle" output.check format.edition output new.block format.bbvolume output format.chapter.pages "chapter and pages" output.check comma.block%% もと無し。 format.pub.addr output new.block note output fin.entry } FUNCTION {incollection}%% 論文集中の文献の出力形式. { output.bibitem format.authors "author" output.check format.date "year" output.check cln.block%%コロンで区切る.もと new.block title kakkodoublequote.commawithin "title" output.check%% 『』``,''付き. %% format.title.incoll "title" output.check %% space.block format.in.ed.booktitle "booktitle" output.check format.edition "edition" output.check %% output や,無しではエラー出る. comma.block%% もとなし format.bbvolume output comma.block%% もとなし format.chapter.pages "chapter and pages" output.check comma.block format.pub.addr output new.block note output fin.entry } FUNCTION {inproceedings} { output.bibitem format.authors "author" output.check format.date "year" output.check new.block title kakkodoublequote.commawithin "title" output.check%% 『』``,''付き. %% format.title.incoll "title" output.check %% space.block format.in.ed.booktitle "booktitle" output.check format.bbvolume output format.chapter.pages "chapter and pages" output.check comma.block organization output format.pub.addr output new.block note output fin.entry } FUNCTION {conference} { inproceedings } FUNCTION {manual} { output.bibitem author empty$ { organization empty$ 'skip$ { organization output.nonnull address output } if$ } { format.authors output.nonnull } if$ new.block format.btitle "title" output.check author empty$ { organization empty$ { address new.block.checka address output } 'skip$ if$ } { organization address new.block.checkb organization output address output } if$ format.edition output format.date output new.block note output fin.entry } FUNCTION {mastersthesis} { output.bibitem format.authors "author" output.check format.date "year" output.check new.block "Master Thesis" format.thesis.type output.nonnull comma.block school "school" output.check new.block note output fin.entry } FUNCTION {misc} { output.bibitem format.authors output format.date "year" output.check cln.block title howpublished new.block.checkb format.title output howpublished new.block.checka howpublished output %format.date output %semicln.block new.block note output fin.entry empty.misc.check } FUNCTION {phdthesis} { output.bibitem format.authors "author" output.check format.date "year" output.check new.block "Ph.D. Thesis" format.thesis.type output.nonnull comma.block school "school" output.check new.block note output fin.entry } FUNCTION {proceedings} { output.bibitem author empty$ { "" } { format.authors output.nonnull} if$ format.date "year" output.check new.block booktitle field.or.null "booktitle" output.check new.block organization output comma.block publisher "publisher" output.check comma.block address output comma.block format.chapter.pages "chapter and pages" output.check new.block note output fin.entry } FUNCTION {techreport}%% Discussion Paper 等の出力形式 { output.bibitem format.authors "author" output.check format.date "year" output.check cln.block title kakkodoublequote.commawithin "title" output.check%%『』``,''付き. %% semicln.block%% format.tr.number output.nonnull comma.block institution "institution" output.check comma.block address output new.block note output fin.entry } FUNCTION {unpublished}%% mimeo の出力形式 { output.bibitem format.authors "author" output.check format.date "year" output.check cln.block title kakkodoublequote.commawithin "title" output.check%%『』``,''付き. note "note" output.check fin.entry } FUNCTION {format.pt.number} { type empty$ { "Patent" } 'type if$ number empty$ { "t" change.case$ } { number tie.or.space.connect } if$ } FUNCTION{format.pt.num.year} { "" format.pt.number * "/" * year * } FUNCTION {patent} { output.bibitem format.authors "author" output.check format.date "year" output.check new.block format.pt.number output.nonnull comma.block note output fin.entry } FUNCTION {patentabst} { output.bibitem format.authors "author" output.check format.date "year" output.check new.block format.pt.number output.nonnull comma.block journal emphasizes "journal" output.check space.block format.date.pat "year" output.check format.vol.num.pagess output comma.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 {acr} {"Acc. Chem. Res."} MACRO {ascand} {"Acta Chem. Scand."} MACRO {ahung} {"Acta Chim. Hung."} MACRO {acrys} {"Acta Cristallogr."} MACRO {ach} {"Angew. Chem."} MACRO {acheng} {"Angew. Chem. Int. Ed. Engl."} MACRO {ajc} {"Aust. J. Chem."} MACRO {bba} {"Biochim. Biophys. Acta"} MACRO {bcsj} {"Bull. Chem. Soc. Jpn."} MACRO {bscb} {"Bull. Soc. Chim. Belg."} MACRO {bscf} {"Bull. Soc. Chim. Fr."} MACRO {cjc} {"Can. J. Chem."} MACRO {ca} {"Chem. Abstr."} MACRO {cb} {"Chem. Ber."} MACRO {cc} {"Chem. Commun."} MACRO {cen} {"Chem. Eng. News"} MACRO {ci} {"Chem. Ind. (London)"} MACRO {cl} {"Chem. Lett."} MACRO {cpb} {"Chem. Pharm. Bull."} MACRO {cp} {"Chem. Phys."} MACRO {cpl} {"Chem. Phys. Lett."} MACRO {cr} {"C. R. S{\'{e}}ances Acad. Sci."} MACRO {febs} {"FEBS Lett."} MACRO {gci} {"Gazz. Chim. Ital."} MACRO {hca} {"Helv. Chim. Acta"} MACRO {ic} {"Inorg. Chem."} MACRO {ica} {"Inorg. Chim. Acta"} MACRO {ijqc} {"Int. J. Quantum Chem."} MACRO {ijc} {"Isr. J. Chem."} MACRO {jacs} {"J. Am. Chem. Soc."} MACRO {jbc} {"J. Biol. Chem."} MACRO {jce} {"J. Chem. Educ."} MACRO {jced} {"J. Chem. Eng. Data"} MACRO {jcscc} {"J. Chem. Soc., Chem. Commun."} MACRO {jcsdt} {"J. Chem. Soc., Dalton Trans."} MACRO {jcsft} {"J. Chem. Soc., Faraday Trans."} MACRO {jcspti} {"J. Chem. Soc., Perkin Trans. I"} MACRO {jcsptii} {"J. Chem. Soc., Perkin Trans. II"} MACRO {jomc} {"J. Organomet. Chem."} MACRO {joc} {"J. Org. Chem."} MACRO {jmc} {"J. Math. Chem."} MACRO {jmedc} {"J. Med. Chem."} MACRO {jps} {"J. Phys. Chem."} MACRO {lac} {"Liebigs Ann. Chem."} MACRO {os} {"Org. Synth."} MACRO {or} {"Org. React."} MACRO {pac} {"Pure Appl. Chem."} MACRO {tet} {"Tetrahedron"} MACRO {tl} {"Tetrahedron Lett."} MACRO {tca} {"Theor. Chim. Acta"} MACRO {tfs} {"Trans. Faraday Soc."} READ FUNCTION {set.is.kanji.entry} { author field.or.null is.kanji.str$ title field.or.null is.kanji.str$ or editor field.or.null is.kanji.str$ or journal field.or.null is.kanji.str$ or booktitle field.or.null is.kanji.str$ or series field.or.null is.kanji.str$ or 'is.kanji.entry := } ITERATE {set.is.kanji.entry} 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$ } %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % jBibTeXのjplainスタイルでは,yomiのフィールドは,姓と名の間に空白を % 入れずに入力することを前提にしているようです.一方で,藤田眞作氏の % _autdateスタイルは,authorフィールドと同様に,振り仮名をandで繋いで % 行く仕様です.ただしひらがな入力を前提としているようで,ローマ字で % yomi入力してある場合姓と名の間に空白を入れるとソートに大失敗します. % ローマ字でyomiを入れる場合,姓と名の間には空白を入れない様に注意し % ましょう. % % (例) author="神谷 和也 and 浦井 憲" のとき、 % % yomi="KamiyaKazuyaUraiKen", %  あるいは % yomi="KamiyaKazuya and UraiKen", % % ソートのキーは著者名のフルラベルを作るのと同じ要領(藤田氏_audate2 % スタイル)です.ちなみに,藤田氏の_audate1.bstではこれと異なって, % ソートはラベルを作る要領で,単名,二名,三名以上にわけて生じたラベ % ルをキーにしているそうです.藤田氏の_audate2.bstには,and othersが % 処理できないという不具合がありましたが,ここでは修正済みです.(Ken) %%%%%%%%%%%%%%%%%%%%%%%%%%%% FUNCTION {sort.format.names} { 's := yomi empty$ 'skip$ { yomi 's := } if$ %{ 's := #1 'nameptr := s num.names$ 'numnames := numnames 'namesleft := { namesleft #0 > } { s nameptr "{ff}{ll}" format.name$ is.kanji.str$ {s nameptr "{ff}{ ll}" format.name$ 't :=} {s nameptr "{vv~}{ll, }{f.}{, jj}" format.name$ 't :=} if$ nameptr #1 > { namesleft #1 > { " " * t * } { numnames #2 > { "" * } 'skip$ if$ % t #1 "{ff}{ll}" format.name$ "others" = %デバッグ用 t "others, " = % t は {ll, } となるので,こうしないとだめ. { s is.kanji.str$ {"他" * } {" et~al." * } if$ } { s is.kanji.str$ {" " * t * } { numnames #2 = {" " * t * } {" " * t * } if$ } if$ } if$ } if$ } 't 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{punctuation} { "%%%%%%%%%%「著者-年代」形式の文献リスト%%%%%%%%%%%%%%%%%" write$ newline$ "% 文献リストはラベルなしで出力されます.このリストは %" write$ newline$ "% オプションスタイルファイル authyear.sty と組み合わ %" write$ newline$ "% せて使ってください.(Ver.1.24 以降推奨) %" write$ newline$ "%                           %" write$ newline$ "% もちろん以下を手書きで修正することによって参考文献 %" write$ newline$ "% 表における出力形式に直接変更を加える事もできます. %" write$ newline$ "% ( \bibitem 命令行の {} 内には手を付けないこと.) %" write$ newline$ "%                           %" write$ newline$ "% 例えば Smale (1974) が二つ以上あるときなどは,手書 %" write$ newline$ "% きで Smale (1974a) と Smale (1974b) のようにしてし %" write$ newline$ "% まい,\bibitem 行の [] 内にも同様の修正を施すこと %" write$ newline$ "% の方が(独自に authyear.bst の修正を試みるよりも) %" write$ newline$ "% ずっと現実的でしょう. %" write$ newline$ "%            %" write$ newline$ "% (Ken Urai, December 3, 1998. Ver. 1.24) %" write$ newline$ "%%%%%%%%%%%%%%%%%%%%%%Bibliography%%%%%%%%%%%%%%%%%%%%%%" write$ newline$ } EXECUTE {punctuation} 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}