# グループ

グループを用いると、ディスク上のファイルをディレクトリやサブディレクトリを使って整理するように、BibTeXデータベースをツリー状に構造化することができます。ファイルツリーと違うところは、大きく2つあります。

- ファイルは、常に唯一のディレクトリ内に属しますが、項目は二つ以上のグループに属することができます。
- グループは、特定の基準を設けて内容を動的に制御することができます。これらの基準に一致する新規項目は、自動的にグループに加えられます。このような機能は、通常のファイルシステムにはありませんが、電子メールクライアントの中には、同様の機能を持つものがあります(ThunderbirdやOperaなど)。

グループを選択すると、当該グループに属する項目が表示されます。複数のグループを選択すると、現在の設定の状態によって、どれかのグループに属する項目が表示されるか(論理和)、すべてのグループに属する項目が表示されます(論理積)。これらはすべて下記に詳細に説明します。

グループの定義はデータベース毎に為されます。これは、`.bib`ファイル内の`@COMMENT`ブロックに保存され、全ユーザーに共有されます(将来のJabRefではユーザー毎のグループがサポートされるかもしれません)。

## 制御盤

グループ制御盤は、画面左側のサイド・ペーンに表示されます。`CTRL-SHIFT-G`を押すか、ツールバーのグループボタンを押すことで入切することができます。制御盤にはいくつかのボタンがありますが、ほとんどの機能はコンテクストメニュー(「右クリック」)でもアクセスできます。ドラッグ&ドロップもサポートされています。

## いくつかの簡単な例

わたしは…

### …グループを作成して、いくつかの項目を割り当てたいのです

グループ制御盤が表示されていることを確認します。新規グループボタンを押し、新しいグループの名称を入力、他の値はすべて既定値にしたままでOKボタンを押します。そのグループに所属させたい項目群を選択して、そのグループへドラッグ&ドロップするか、コンテクストメニュー中のグループに追加オプションを選択します。最後に、そのグループを選択して、内容を表示させます(いま所属させた項目が表示されるはずです)。

### …`keywords`フィールドを使用して項目をグループ分けしたいのです

グループ制御盤が表示されていることを確認します。新規グループボタンを押し、新しいグループの名称を入力、オプションを「フィールド中のキーワードを検索して動的にグループ化」に設定します。検索するキーワードを入力してOKボタンを押します。最後に、そのグループを選択して、内容を表示させます(`keywords`フィールドに指定したキーワードが入っている項目すべてが表示されるはずです)。

### …自由型検索表現を使ってグループを定義したいのです

グループ制御盤が表示されていることを確認します。新規グループボタンを押し、新しいグループの名称を入力、オプションを「自由型検索表現で動的にグループ化」に設定します。「検索表現」に`author=smith`のように入力し(`smith`はデータベース中の実際の名前に置き換えてください)、OKボタンを押します。最後に、そのグループを選択して、内容を表示させます(`author`フィールドに指定した名前が入っている項目すべてが表示されるはずです)。

### …複数のグループを連結したいのです

上述の方法などを使って、2つのグループを作成します。設定ボタンを押して、論理和が選択されていることを確認します。それから2つのグループを選択します。2つのグループのうちどちらかに属している項目がすべて表示されます。設定をもう一度押し、論理積を選択します。すると、両方のグループの属している項目のみが表示されます(全く表示されないかもしれませんし、両方のグループが同じ項目を含んでいる場合には全く同じ項目が表示されます)。

### …重複のあるグループを識別したいのです

JabRefでは、現在選択しているグループと重複部分があるグループ(すなわち、そのうち少なくとも1つの項目が現在選択しているグループにも含まれているもの)を簡単に見つけることができます。設定を押して、「重複のあるグループを着色」オプションを有効にします。そして、他のグループと重複しているグループを選択すると、他のグループの方が着色されます。

## グループの型

JabRefには、以下の4つのグループ型があります。

1. 全項目グループは、名称が示すとおり、全ての項目を含んでいて、常に存在し、編集したり削除したりすることはできません。
2. 静的グループは、ディスク上のディレクトリと同様の働きを示し、明示的に割り当てた項目のみを含みます。
3. キーワード検索に基づく動的グループには、特定のBibTeXフィールド(例えば`keywords`)に特定のキーワード(例えば`electrical`)が含まれる項目が含まれます。この方法では、項目を手動で割り当てる必要はなく、データベースに既存の情報を使用します。もしデータベース中の全ての項目が、`keywords`フィールドに適切なキーワードが収録されているならば、このグループ型を用いるのがもっとも良い方法でしょう。
4. 自由型検索表現に基づく動的グループには、指定した検索表現に一致する項目が含まれます。検索表現は、サイド・ペーンの検索パネルと同一の文法を用います。この文法は、論理演算子(`AND`・`OR`・`NOT`)をサポートし、検索対象として1つ以上のBibTeXフィールドを指定することができるので、キーワード検索よりも柔軟なグループ定義を行うことができます(例：`author=smith and title=electrical`)。

作成したグループは、上記の後ろ3つの型のいずれかになります。グループをダブルクリックして現れるグループ編集ダイアログでは、選択もしくは編集したグループの定義の説明が、簡便な言葉で表示されます。

## グループの構造およびグループの作成と削除

ディレクトリと同様に、グループはツリー状に体系化することができます。この時、全項目グループがルート(ツリーの起点)になります。グループを右クリックすれば、選択したグループと同じ階層かそれよりも下層に、新しいグループを追加することができます。新規グループボタンを押せば、現在選択されているグループの状態に関わらず、全項目グループ配下に、新しい下層グループを加えることができます。コンテキストメニューを使えば、グループや下層グループを削除したり、下層グループをアルファベット順に整序したり、グループをツリー内の別の場所に移動したりすることができます。後者は、ドラッグ&ドロップでも行えるようになっていますが、グループ内の下層グループの順序を変更することはサポートされません。

取り消しと再実行は、編集全てにおいてサポートされています。

### 静的グループ

静的グループは、項目を明示的に割り当てることによってのみ、作成することができます。静的グループを作成した後、それに割り当てる項目を選択し、ドラッグ&ドロップか主要表のコンテクストメニューを用いて割り当てを行ってください。静的グループから項目を削除するには、項目を選択して、主要表のコンテクストメニューを使ってください。設定できるオプションはありません。

このグループ化法は、全項目が一意的なBibTeX鍵を持っていることを前提としています。BibTeX鍵の欠損や重複がある場合は、それらの項目を割り当てても、後のセッションで正しく呼び出されません。

### 動的グループ

動的グループの中身は、論理条件によって定義されます。この条件に合致する項目のみがグループに含まれることになります。この方法は、データベース自身に含まれる情報を用い、データベースが変更されると、常に動的に更新されます。

下記の2つの条件型を使用することができます。

フィールド中のキーワードを検索
  この方法は、特定のBibTeXフィールド(例えば`keywords`)に、特定の検索語(例えば`electrical`)が含まれる項目をグループ化します。当然ながら、この方法が機能するためには、すべての項目にグループ化用フィールドが存在しているとともに、その内容が正確でなくてはなりません。上記の用例を用いると、electricalに関係する全ての項目をグループ化することになります。あるいは、`author`フィールドを使用すると、著者毎にグループ化することができます。検索は、平文でも正規表現でも行うことができます。前者の場合は、グループ化用フィールドの内容に、手動で検索語を追加したり削除したりするだけで、項目を追加したり削除したりすることができます。この方法は、`keywords`フィールドや他の自己定義フィールドでは意味を成しますが、`author`や`year`のようなフィールドでは、明らかに意味を成しません。
自由型検索表現を使用
  これは上記と同様ですが、単独フィールドを単独検索語で検索するのではなく、検索表現文法を使用することができます。これは、論理演算子(`AND`・`OR`・`NOT`)をサポートし、複数のBibTeXフィールドを検索することができます。例えば、`keywords=regression and not keywords=linear`という検索表現は、非線形回帰に関係した項目をグループ化します。

グループ表示において、動的グループは、既定値でイタリック体で表示されます。この表示は、設定(オプション→設定→グループ→「動的グループをイタリック体で表示」チェックボックス)で、止めることができます。

### 階層コンテクスト

既定値では、グループは、グループツリー中で他の階層から独立したものと解され、該当するグループの内容のみが表示されます。しかしながら、特に動的グループを使用している際には、上層グループを絞り込む形の下層グループを定義することが便利なことがあり、この場合、下層グループとその上層グループの両方に属する項目が表示されます。例えば、`distribution`というキーワードを持つ項目を集めた上層グループと、この上層グループを絞り込む`gauss`というキーワードを持つ項目を集めた下層グループを作成したとしましょう。この下層グループを選択すると、両方の条件を満たす項目、すなわちガウス分布に関連した項目が表示されます。さらに、この上層グループを`laplace`で絞り込む下層グループを追加すると、元のグループ化を簡単に拡張することができます。グループツリー中では、絞り込みグループは、専用アイコンで表されます(この表示は設定で切ることができます)。

絞り込みグループの逆は、下層グループを取り込む形のグループで、グループ自身の項目だけでなく、その下層グループの項目も表示されるものです。グループツリー中で、この型のグループは、専用アイコンで表されます(この表示は設定で切ることができます)。

## グループ項目の表示と複数グループの結合

グループを選択すると、当該グループに含まれる項目を着色して、設定次第では(設定ボタンをクリックすれば変更できます)、それらを一覧の最上部に移動したり選択したり(あるいは両方)します。これらのオプションは、通常検索で使用されるものと同一です。

複数のグループを選択すると、設定に依存して、それらの中身の和集合(結び)もしくは積集合(交わり)が表示されます。これを用いると、複数の条件を簡単に結びつけることができます。例えば、非常に重要な項目すべてに割り当てた`最重要`という静的グループがある時、他のどのグループにおいても、そのグループと`最重要`グループ両方を選択することで、そのグループ内の最重要項目を表示することができます(この時、設定で論理積が選択されている必要があります)。

## グループと検索

選択したグループの内容が表示されている時には、通常検索機能を使って、これらの内容内部での検索を行うことができます。

## 重複のあるグループを着色表示

設定ボタンを押すと、重複のあるグループを着色表示するオプションがあります。一つ以上のグループを選択した上で、これを有効にすると、現在選択されているグループに含まれている項目を少なくとも一つ含むグループは、すべて着色表示されます。これを使うと、グループ間の項目に重複があるかどうかを簡単に確かめることができます。例えば、これから読もうと思っている項目をすべて含む`読む予定`というグループを作成したとします。すると、どのグループを選択したとしても、そのグループに読む予定の項目があるときには、`読む予定`グループが着色表示されるようになります。

## 選択したグループに新規項目を割り当てる

設定ボタンでは、新規項目を選択したグループに自動的に割り当てるオプションも提供します。一つ以上のグループを選択した上で、これを有効にすると、作成した新規項目はすべて、選択したグループに割り当てられるようになります。これは、メニューボタンから作成した項目に対しても、クリップボードから貼り付けた項目に対しても動作します。本オプションは、「オプション→設定→グループ」メニューからでも有効化ないし無効化することができます。

## 熟練者向け機能

前述のグループ化の概念をマスターしたならば、下記の熟練者向け機能が便利であることに気づかれるかもしれません。

### 動的グループを自動生成

データベースのグループを自動生成ボタンをクリックすると、使用中のデータベースに適切なグループの組を簡単に作ることができます。この機能は、ユーザーが選んだ特定のフィールド中に収められているすべての単語を収集して、単語毎にグループを生成します。これは、例えば、使用中のデータベースの全項目に適切なキーワードが収められている場合に便利です。`keywords`フィールドに基づいてグループを自動生成すれば、グループの基本となる組を、手間をかけることなく手に入れることができます。

また、例えばキーワードを区切るコンマなど、特定の文字を無視するよう指定することもできます。コンマは単語間の区切りとして扱われ、単語の一部としては解されません。このステップは、`laplace distribution`のような複合キーワードが、単一の意味論的単位として認識されるために重要です(このオプションを完全な単語を削除するために使うことはできません。代わりに、グループを自動的に生成させた後に、要らないグループを手動で削除してください)。

### グループの表示を更新

更新ボタンは、現在選択しているグループを、項目表に反映させて更新するためのものです。これは通常自動的に行われますが、稀に手動更新が必要になることがあります(例えば、グループに関連した取り消しや再実行)。

### 絞り込みグループと取り込みグループの両立

絞り込みグループが、下層グループ(絞り込みグループと同階層の兄弟)を取り込むグループの下層グループになっている場合、これらの同階層兄弟は、絞り込みグループを選択したときには無視されます。