トップ 一覧 Farm 検索 ヘルプ RSS ログイン

Diary/2021-1-2の変更点

  • 追加された行はこのように表示されます。
  • 削除された行はこのように表示されます。
!plain/bibtexでの日本語文献対応
bibtexのplainで,日本語文献を列挙しようとするとあれこれ表記がおかしなことに.
とりあえず,ラストオーサーの前の and は何とかしようと,
[日本語と英語を混ぜられるようにbibtexスタイルファイルを改造しよう|https://qiita.com/HexagramNM/items/3ad757a9f5ee5d15e363] を参考に修正.
bstって,こういう文法だったんだ.

 miyo@tama:% diff -up /usr/local/texlive/2020/texmf-dist/bibtex/bst/base/plain.bst plainS.bst
 --- /usr/local/texlive/2020/texmf-dist/bibtex/bst/base/plain.bst	2010-12-14 10:20:07.000000000 +0900
 +++ plainS.bst	2021-01-02 13:19:02.460806929 +0900
 @@ -31,17 +31,19 @@ ENTRY
      type
      volume
      year
 +    isjapanese
    }
    {}
    { label }
  
 -INTEGERS { output.state before.all mid.sentence after.sentence after.block }
 +INTEGERS { output.state before.all mid.sentence after.sentence after.block japanese.flag}
  
  FUNCTION {init.state.consts}
  { #0 'before.all :=
    #1 'mid.sentence :=
    #2 'after.sentence :=
    #3 'after.block :=
 +  #0 'japanese.flag :=
  }
  
  STRINGS { s t }
 @@ -191,14 +193,26 @@ FUNCTION {format.names}
      { s nameptr "{ff~}{vv~}{ll}{, jj}" format.name$ 't :=
        nameptr #1 >
          { namesleft #1 >
 -            { ", " * t * }
 +	    { japanese.flag #0 =
 +                { ", " * t * }
 +                { "," * t * }
 +	      if$
 +	    }
              { numnames #2 >
 -                { "," * }
 -                'skip$
 +		{ japanese.flag #0 =
 +                    { ", " * }
 +                    { "," * }
 +		  if$
 +		}
 +		'skip$
                if$
                t "others" =
                  { " et~al." * }
 -                { " and " * t * }
 +		{ japanese.flag #0 =
 +                    { " and " * t * }
 +                    { "" * t * }
 +		  if$
 +		}
                if$
              }
            if$
 @@ -553,6 +567,10 @@ FUNCTION {article}
    new.block
    note output
    fin.entry
 +  isjapanese empty$
 +    {skip$}
 +    {#1 'japanese.flag :=}
 +  if$
  }
  
  FUNCTION {book}