bstファイルの修正について

bstファイルの修正について

- Ryo Akasaka の投稿
返信数: 2
お世話になります.bstファイルの修正について質問させて下さい.
いま投稿しようとしているジャーナルの書式に合わせてunsrt.bstを修正しています.

いろいろ修正して,論文リストが

O Nielsen, M Javadi, M Sulbaek Andersen, M Hurley, T Wallington, R Singh, Chem. Phys.Lett., 439, 18, (2007).

のように表示されるところまでは出来ました.ただ,投稿規定によると,

O Nielsen, M Javadi, M Sulbaek Andersen, M Hurley, T Wallington, R Singh, Chem. Phys.Lett. 439, 18 (2007).

のように,ジャーナル名の後のカンマとボリュームの後のカンマは不要です.
これを実現するにはunsrt.bstのどの部分を書き換えればよいのでしょうか.
BibTeXのバージョンは "0.99d (TeX Live 2020/W32TeX)" と表示されています.
OSはWindows 10です.

どうぞ宜しくお願い致します.
Ryo Akasaka への返信

Re: bstファイルの修正について

- 和田 勇 の投稿

論文などを投稿したことがないので誤解している箇所があるかもしれませんが、ご了承ください。

素人感覚では、投稿先で unsrt.bst をもとにしたものを提供しているのではと思いますが ....

誰も答えないので、トライアンドエラーで以下のように unsrt.bst の article に関するところを改造を試みてみました。

ポイントは、ジャーナルの後のカンマを取り除くため、関数 output.nonnull に書かれている 「", "」を「" "」に変更した関数を作成しました。

また ボリュームの後のカンマは、最終的に output,nonnull を利用して生成されているので、上記作成した関数を利用するような関数を作成しました。

その上で、関数 article で上記作成した関数を利用するよう改造してみました。

利用したソースはhttps://blog.wtsnjp.com/2019/08/08/bibstalin/ に掲載された bibstalin1.bib と bibtest.tex を利用して検証してみました。

  • bibstalin1.bib
       @article{kuroyuki,
         author = {Kuroyuki, Daruma},
         title = {Snowmen conquer the world},
         journal = {Journal of Snowmen},
         year = 2019,
       }

       @article{duck,
         author = {Duck, Taro},
         title = {Hisroty of the duck revolution},
         journal = {Ducks Communication},
         year = 1986,
       }

       @article{yuki,
         author = {Yuki, Daruma},
         title = {Variety of font glyphs for snowmen},
         journal = {Journal of Snowmen},
         year = 2016,
       }

       @article{Nielsen,
         author = {O Nielsen},
         journal = {Chem. Phys.Lett.},
         page = { 439},
         volume = { 18},
         year = { (2007) },
       }
   
  • bibtest.tex

    \documentclass[a4paper]{article}
    \begin{document}
    \bibliographystyle{unsrt}
    \nocite{*}
    \bibliography{bibstalin1}
    \end{document}
    
  • 修正イメージ

    --- /usr/local/texlive/2021/texmf-dist/bibtex/bst/base/unsrt.bst
    +++ unsrt.bst
    @@ -66,6 +66,26 @@
       if$
       s
     }
    +FUNCTION {output.nonnullNONEcomma}
    +{ 's :=
    +  output.state mid.sentence =
    +    { " " * write$ }
    +    { output.state after.block =
    +        { add.period$ write$
    +          newline$
    +          "\newblock " write$
    +        }
    +        { output.state before.all =
    +            'write$
    +            { add.period$ " " * write$ }
    +          if$
    +        }
    +      if$
    +      mid.sentence 'output.state :=
    +    }
    +  if$
    +  s
    +}
    
     FUNCTION {output}
     { duplicate$ empty$
    @@ -81,6 +101,13 @@
         'output.nonnull
       if$
     }
    +FUNCTION {output.checkNONEcomma}
    +{ 't :=
    +  duplicate$ empty$
    +    { pop$ "empty " t * " in " * cite$ * warning$ }
    +    'output.nonnullNONEcomma
    +  if$
    +}
    
     FUNCTION {output.bibitem}
     { newline$
    @@ -542,8 +569,8 @@
       new.block
       crossref missing$
         { journal emphasize "journal" output.check
    -      format.vol.num.pages output
    -      format.date "year" output.check
    +      format.vol.num.pages output.nonnullNONEcomma
    +      format.date "year" output.checkNONEcomma
         }
         { format.article.crossref output.nonnull
           format.pages output
    
和田 勇 への返信

Re: bstファイルの修正について

- Ryo Akasaka の投稿
詳しいご説明を頂き,誠にありがとうございます.
早速試してみます.

今後ともどうぞ宜しくお願い致します.