2013年9月27日金曜日

amsalphaでの文献表にURLを表示させる

個人用の数学メモをLaTeXで作成していて,文献は別に文献ファイルをbibtexで作成している.論文,書籍の書誌情報は,MathSciNetからbibtex形式でダウンロードできる.

メモの参照文献一覧は,amsalphaの形式にしているが,不満はURLが表示されないことである.DOIのURLが表示されれば,dviファイル(やPDFファイル)のURLをクリックすると当該論文にアクセスできて便利である.

次のようにすれば良い.手っ取り早く,amsalpha.bstを書き換え(追記し)てしまうことにする.

以下末尾までを例えば zz.txt というファイルに書き込み,amsalpha.bst と同じディレクトリに置いて,

> cp amsalpha.bst amsalpha.bst.bak # 念の為バックアップを作る
> patch < zz.txt

とする(行頭の > はプロンプトのつもり.ドルマークにするとMathJaxが処理してしまうので).これで amsalpha.bst が書き換えられたので,後はいつもどおりに platex, pbibtex で文書を作成すれば良い.bibtexのデータにurlがあれば,それが参考文献欄に印字されるはずである.

DOIを経由して論文雑誌にアクセスする以外に,例えば arXiv から入手したプレプリントならそのURLを,あるいは,Dropbox においたファイルならばそのファイルのURLを貼るなど(DropboxのFAQ「リンクの取得」を参照),応用があると思う.

追記(2013/09/28):

  • 前提として,プリアンブルでの usepackage{url} が必要です
  • ほとんど同じ修正を施した,amsplain-url.bst というファイルが公開されているようです


*** /usr/share/texlive/texmf-dist/bibtex/bst/amscls/amsalpha.bst        2009-09-11 02:11:21.000000000 +0900
--- ./amsalpha.bst      2013-09-27 17:47:45.000000000 +0900
***************
*** 106,111 ****
--- 106,112 ----
      series
      title
      type
+     url
      volume
      year
    }
***************
*** 728,733 ****
--- 729,745 ----
    " \cite{" * crossref * "}" *
  }

+ %% format.url
+ FUNCTION {format.url}
+ { url empty$
+     { "" }
+     {
+       "\url{" url * "}" *
+     }
+   if$
+ }
+
+
  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

  % The main functions for each entry type.
***************
*** 750,755 ****
--- 762,768 ----
    if$
    format.language *
    note output
+   format.url output
    fin.entry
  }

***************
*** 777,782 ****
--- 790,796 ----
    format.date "year" output.check
    format.language *
    note output
+   format.url output
    fin.entry
  }

***************
*** 788,793 ****
--- 802,808 ----
    address output
    format.date output
    note output
+   format.url output
    fin.entry
  }

***************
*** 817,822 ****
--- 832,838 ----
    format.date "year" output.check
    format.language *
    note output
+   format.url output
    fin.entry
  }

***************
*** 838,843 ****
--- 854,860 ----
    note output
    format.book.pages output
    format.language *
+   format.url output
    fin.entry
  }

***************
*** 858,863 ****
--- 875,881 ----
    note output
    format.book.pages output
    format.language *
+   format.url output
    fin.entry
  }

***************
*** 889,894 ****
--- 907,913 ----

0 件のコメント: