TRIOSに連動した文献データベーススクリプト

www.kameda-lab.org , 2007/04/20

はじめに

最近、筑波大ではTRIOSデータベースが 公用化(≒入れないと待遇が不利になる)されました。 その割にはTRIOSデータベースへの入力はインターフェースが悪くて大変 (かつ 出力形式が私の趣味に合わない) ので、一念発起してフィルタを書きました。

(作成に意外に時間がかかってしまいました‥。Unixユーザで無い人はここでさようならです。 一応cygwinでも動きますが。開発は主にcygwin上でしたし。)

基本的には、手元でテキストのマスターファイルを保有しておいて、 そこからhtmlファイル(4種類)を吐き出したり、 再編集用のテキストファイル(Excel向けとテキストエディタ向けの2種類)を吐き出したり、 TRIOS入力画面に対する補助ファイルを吐き出したりします。

私のほかにユーザがいるかどうかかなり微妙ですが、まあ1人でもいれば大学全体で 効率は2倍になったということで良しとしましょう(どういう計算だか‥笑)。


インデックス

  1. 説明書
  2. ファイル群
  3. 作者による実際の使用例(少しアレンジしてあります)

説明書

基本的にtrios-README.txtと同じです。
2007/04/18, kameda[at]iit.tsukuba.ac.jp (shift_jis-dos)

■■■■■■
 更新情報
■■■■■■

2007/04/18
  trios-manager05.awk
    クラス別のとき最後に年号を入れるようにしました。
  trios-html.bash
    trios-manager05.awkを呼び出すようにしました。
2007/04/09 Final-Beta-1
  公開してみたり。

●●●●●●●
 ファイル群
●●●●●●●

実行にはgawkとnkfが必要です。
以下のファイルをダウンロードしましょう。

・なにかしらの文献データファイル
  Excelとかで作りましょう。
  作成方法は下記の
	◆Tab-separated-text (*-tab.txt)
  参照。

・index_date-e.tmpl
・index_date-j.tmpl
・index_class-e.tmpl
・index_class-j.tmpl

・trios-html.bash
・trios-manager04.awk
・trios-cutter.awk

●●●●●●●
 やってみる
●●●●●●●

(1) Excelでhoge-pubdb.xlsを編集する
(2) Excelで「名前を付けて保存⇒ファイルの種類:テキスト(タブ区切り)」として、
    hoge-pubdb-tab.txtを作成
(3) ./trios-html.bash a-FirstFamily t-TitleString hoge-pubdb-tab.txt
(4) 下記trios-html.bashの<出力>の7ファイルが出来ているはず。

(5) 例えばpub-*-tab.txtをExcelで読み込んで編集。
(6) (2)と同じようにまた?-tab.txtを生成。
(7) (3)と同じように生成。
これで更新OK.

(5') pub-*-edt.txtをemacsで編集。
(6') (5')で編集したファイルを(3)と同じように実行。
こちらでも更新OK.

★★★★★★★★★★★★★★★★★★★★★★
★ trios-html.bash
★★★★★★★★★★★★★★★★★★★★★★

<概要>
全てのhtmlファイルやテキストファイルなどを
1つの文献データベースファイルから生成する。

<オプション>
下記 trios-manager04.awk の
  ▼著者フォーマット(html出力時)
  ▼題名フォーマット(html出力時)
に対応。ただし、それぞれ"a-", "t-"を前に付ける。
例:FirstFamily, TitleString形式を望むなら
  trios-html.bash a-FirstFamily t-TitleString pubdb-tab.txt

<入力>
下記 trios-manager04.awk の
  ▼入力として受け付けるファイルフォーマット
に対応。nkfを内部で実行するので、文字コードは
任意でよい。
ファイル名が*-edt.txtかそうでないかで入力モードを自動切換えする。

<出力>
index_date-e.html
index_date-j.html
index_class-e.html
index_class-j.html
pub-YYYYMMDD-hhmmss-edt.txt
pub-YYYYMMDD-hhmmss-tab.txt
pub-YYYYMMDD-hhmmss-tri.txt

※いずれもshift_jis-dos。
※*.htmlは*.tmplから生成される。
 __TRIOS_DATE__には日付が、__TRIOS_DATA__の部分には
  trios-manager04.awkのhtmlモードの出力結果が挿入される。

★★★★★★★★★★★★★★★★★★★★★★
★ trios-manager04.awk (ないしそれ以降)
★★★★★★★★★★★★★★★★★★★★★★

<オプション>
・説明の先頭に*があるのがdefault。
・gawkではオプションの指定の仕方は
   trios-manager04.awk -v imode=tab -v omode=html pubdb-tab.txt
 のようになる。
・ファイル出力は常に標準出力。

▼入力として受け付けるファイルフォーマット(euc-japan-unix):
imode   説明                         ファイル名推奨規則
tab     *Tab-separated-text          (*-tab.txt)
text    Editable-text                (*-edt.txt)

▼出力できるファイルフォーマット(euc-japan-unix):
omode   説明                         ファイル名推奨規則
html    *HTML                        (*.html)
tab     Tab-separated-text           (*-tab.txt)
trios   Tab-separated-text-for-TRIOS (*-tri.txt)
text    Editable-text                (*-edt.txt)

▼言語:
key     説明
en      *英語
jp      日本語
※あくまで「発表の場(会議・論文誌)で英語が公用語かどうか」を示す。
※国内発表だが原稿が英語のような場合は、key=jpとし、URL(YK_URM参照)に「英語」と注釈して対応。

▼著者フォーマット(html出力時)
aformat         説明
ORIGINAL        *原論文表記(YK_NamePattern参照)に従う
FirstFamily     例:Yoshinari Kameda
FirstFAMILY     例:Yoshinari KAMEDA
FAMILYFirst     例:KAMEDA Yoshinari
FamilyF.        例:Kameda Y.
※ミドルネームがあればいずれも氏と名の間に入る。

▼題名フォーマット(html出力時)
tformat         説明
ORIGINAL        *原論文表記(YK_TITLE-en参照)に従う
TitleString     例:Image Processing Algorithm
TITLESTRING     例:IMAGE PROCESSING ALGORITHM
Titlestring     例:Image processing algorithm

▼ソート基準
key     説明
date    *逆時間順[html,tab,trios,text]
type    論文の型(YK_TYPE参照)[html]、何もしない[tab,trios,text]

<ファイルの形式>

◆Tab-separated-text (*-tab.txt)

・Excelから出力するには
 「名前を付けて保存⇒ファイルの種類:テキスト(タブ区切り)」
・Excelで読み込むには
 「ファイルを開く⇒ファイルの種類:テキスト」
 のあと、テキストファイルウィザード中で「列のデータ形式」をすべて「文字列」扱いにしておくのがよい。

・先頭行は TAG を記述、2行目以降の各行が論文1つに対応。
・TAGの出現順(列)に意味はないので、見易さ優先で並べ替えても支障ない。
・必須TAGは "YK_*" 。
・必須では無いが入力推奨TAG は "YL_*" 。
・他にどのようなTAGも増やすことができる。

・各行で該当する入力が無い場合は、タブで飛ばしておく。

YK_TYPE
                        TRIOS論文上での扱い
  選択可能なラベル      備考    学内種別        ReaD用種別      言語種別        査読
  ---------------       ------------------------------------------------------------
  TAG_PAPER_E                   原著論文        学術雑誌        英語            有
  TAG_ICONF_EVAL                国際会議Proc.   学術雑誌        英語            有
  TAG_ICONF_NONE                国際会議Proc.   その他          英語            無
  TAG_PAPER_J                   原著論文        学術雑誌        日本語          有
  TAG_LETTER_J                  原著論文        学術雑誌        日本語          有
  TAG_ORAL_RESEARCH             口頭発表        その他          日本語          無
  TAG_ORAL_NATIONAL             口頭発表        その他          日本語          無
  TAG_MISC              記事等  その他          その他          日本語          無
  TAG_NONE              紀要等  学内紀要等      大学研究所紀要  日本語          無
  TAG_BOOK_J            非論文                                  日本語
  TAG_PRIZE             非論文                                  日本語
  TAG_PATENT            非論文                                  日本語

YK_LANG
  "E"ないし"J"。
  ほぼYK_TYPEの言語種別で特定されるので自由度は0かも。
  このTAGが"E"だと、YK_AU*-*-jp, YK_TITLE-jp,YK_TAKEN-BOOK-jpは英語表記側から自動生成されるので利用されない。
  (YK_VENUE-jpは必要である‥やめてもいいんだけど。ToDo)

YK_INTERNAL
  ここに1バイト以上あると、html/triosでは表示されない。(tab/textでは表示される。)

YK_TRIOS
  TRIOSへの投入修了かどうかのメモにどうぞ。

YK_SELECT
  1バイト以上あればTRIOS向け出力時に「公開対象とする」と表記される。

YK_NamePattern
  原著での英語の著者名表記方法。
  trios-manager04.awkの"aformat"の項の"ORIGINAL"以外のいずれかをラベルとして選択。

YK_AU{1-20}-{1-3}-{en,jp}
  氏名。
  最初の1-20は第1著者〜第20著者まで対応。必要な分だけ用意すればよい。
  次の1-3は、1:family name, 2:middle name(例:"S."), 3:first name。
  enは英語、jpは日本語。英語時は大文字小文字関係ない(自動フォーマットするため)。

YK_TITLE-{en,jp}
  論文題名。
  YK_LANGが"E"のときはYK_TITLE-jpは不要。
  tformatがORIGINALになると、YK_TITLE-enをそのまま用いる。
  tformatがORIGINAL以外のときは、YK_TITLE-enを加工して用いる。

YK_TAKEN-BOOK-{en,jp}
  雑誌名。
  YK_LANGが"E"のときはYK_TAKEN-BOOK-jpは不要。

YL_TAKEN-BOOK-ID
  ISBN番号など。

YK_TAKEN-PUBLISHER-{en,jp}
  出版社。
  TRIOS時には用いる。
  html時には利用されない。(ToDo)

YK_TAKEN-VOL / YK_TAKEN-NO
  巻 / 号

YK_TAKEN-PP
  ページ番号ないしページ数。

YK_TAKEN-ID
  当該雑誌上での論文を特定する番号。
  YK_TAKEN-PPがない場合、こちらで代用する(html/trios時)。

YK_DATE
  発表日(YYYY/MM/DD)。国際会議なら登壇日。
  論文のソートキーになるので注意。

YK_VENUE-{en,jp}
  発表場所と期間。
  論文誌の場合は空にしておくこと(html時に自動的に非表示になる)。

YK_{URL,URM}-{1-7}
  html出力時にYK_URLで示すアンカーを、YK_URMのラベルで表記する。
  和英の区別がないので、YK_URMは英語で表記すること。

YL_MISC-{1-15}
  メモ用。html/trios時には利用されない。

◆Tab-separated-text-for-TRIOS (*-tri.txt)

・TRIOS入力に最適。
・このファイルをExcelで読み込んでおいて、TRIOS入力画面と並べると入力が速い。

◆HTML (*.html)

・論文リストの部分だけなので、HTMLとして完全にするには
  trios-html.bash / trios-cutter.awk
  を参照のこと。

◆Editable-text (*-edt.txt)
・Tab-separated-textと同じ内容を縦に並べている。
・テキストエディタで編集しやすい。
・PUB_DB_RECORD_BEGINの次の行からPUB_DB_RECORD_ENDの前の行までが1つのレコード。
・レコード中でも空行と#で始まる行は無視される。
・レコード中に1語だけの行があるとTAG扱いされて登録されるので注意。
・レコード中に2語以上あると、1語目をTAGとし、残り全てがそのデータとなる。
・レコードとレコードの間に何を書いても無視される。



★★★★★★★★★★★★★★★★★★★★★★
★ trios-cutter.awk
★★★★★★★★★★★★★★★★★★★★★★

<概要>
*.tmplを標準入力に取る。
trios-manager04.awkのhtmlモードの出力結果ファイル名をpubdbとして受ける。
実行すると、*.tmpl中で
  __TRIOS_DATE__  には日付挿入
  __TRIOS_DATA__  にはpubdbを挿入
する。結果は標準出力に出され、euc-japan-unixである。



ファイル群

マニュアル。 実行ファイルなど。 文献データベースファイルの例。 HTMLファイルのテンプレート。 以下は
$ ./trios-html.bash t-TitleString a-FirstFamily hoge-pubdb-tab.txt
を実行してできるの生成ファイルの例。
2007 (c) これも一種の現実逃避な kameda [at] iit.tsukuba.ac.jp