You are here: Editor project page > Composer リストを編集する規則

Composer リストを編集する規則

ユーザーインターフェース

選択時とツールバー使用についての規則

このドキュメントでは、赤い縦線  | を用いてキャレッ ト ( 省略された選択 ) を示し、赤い大括弧を用いて [ テキストを取り囲んで選択範囲を示す ] ことにします。
リスト、リスト項目またはリストの属性を、作成し、または変更する目的のためには、ある 1 つのリスト項目を「選択」したときにふつ うのテキストまたはオブジェクトの選択がタグの境界内になければなりません。この規則は別の「ブロック」または「段落」 コンテナ要素、例えば P 、 DIV 、 H1 、 H2 などについても用いられます。 BR タグは「ブロック」を境界付けるとも考えられます。 ( 少なくともメール作成の規則では。もし P と DIV だけを用いて段落を定義するならば、このことがウェブ作成規則では変更になるかもしれません。 )

ツールバーのフィードバック
太字、斜体、そして下線のテキストスタイルボタンに関しては、リストボタンの状態が、選択についてと、ボタンをクリックしたときにどのような動作が生じる かを、ユーザーに教えてくれます。
一般的な規則は: 1 つのボタンを押し下げて表示するときは、選択全体が 1 つのリスト種類の内側に入ります。 このことには選択 が省略された事例--ちょうどキャレットがページの中にあるように--も含まれます。 この規則は選択したリスト項目より上の最も近いリストだけに適用されます。もし選択が中黒のリストの内側であれば、けれどそのリストが数字のリストの子で ある場合には、数字のリストがセットされるように考慮するわけではありません。さもなければ、複雑なリストが複数レベルで構成されていれば、ユーザーと コードの双方にとって物凄く混乱させるものとなるでしょう!そのため、どちらかの選択を押し下げた場合に、片方の、でなければもう一方のリストボタンが、 表示できるようにならなければなりません:
or

リストのツールバーボタンをクリックしたときに生じることについての一般的な規則

  1. 押し下げられていないボタンをクリックしたとき:
    1. 選択した段落がリスト項目でなければ、それぞれの段落をリスト項目にします。
      選択した範囲に既に存在するリスト項目が含まれていれば、新規の項目は隣接するリストにマージされ、そうでなければ新規のリストが作成されます。段落の前 後に隣接しているリストがあれば、前のリストにマージされます。
      「隣接」という定義はやりにくいかもしれません:最も単純な形では、それらは同じ親をもつ兄弟であれば 1 つのリストが別のブロックに隣接します。 <br> が間に入ると、他のブロック規則によっては問題になるかもしれません。ブロックを定義するために 1 つの <br> が使われると、それぞれの間のコンテントが分離したリスト項目になってしまうのです。コンテントが 1 つもなければ、そのためのリスト項目を作るべきではありません。
    2. 選択したリスト項目については、その親のリスト種類がツールバーボタンの種類と異なる場合には、選択したリスト項目をリストから除去 します。そして:
      1. 子の項目がリストノードから全て除去されるとそのリストを削除します ( インデントのために使っていた親のノード全てから子がなくなります ) 。
      2. 除去した項目に隣接する、望ましい種類のリストが全くない場合には、親のリストを新規に作成します。
      3. 望ましい種類の隣接したリストが 1 つでもある場合には、そのリストの前後に既に存在する兄弟のリストに挿入することによって、どちらの側にその隣接するリストが発見されたかに左右されます が、そのリストにマージします。これを行うために新規のリストノードを作る必要があることもあります。例えば :
      4. もし、リスト項目を移動しても移動前と同じインデントレベルにしておく必要があれば、リストノードを余分にまるごと作成する ようにします。
    3. 選択されたリスト項目については、その親がツールバーボタンと同じリスト種類であれば、何も行いません。
  2. 押し下げられているボタンをクリックしたときには、選択した項目全てをリストから除去するべきです。.
    質問 :
  3. 既に存在するテキストおよび / またはオブジェクトに選択がまたがる場合、それらは選択範囲で囲まれたリスト項目(複数)が作成または除去され た後にもまだ選択されていなければなりません。

ここでは、具体的な事例を述べています。注意したほうがよいのは、「〜をクリックする」という規則は各リスト種類に応じた異なる動作を含んでいることを意 味するわけではなく、むしろクリックされたボタンが選択範囲の中で同じ種類かそれとも異なるかによって何が発生するかを示しています。これらの事例は、 LI の子を必要とするという HTML 規則 を共有している OL または UL リストの為のものだけです。 DL リスト種類 へ、または、から切り替えた際にみられる複雑な事例は下で検討しています。

選択の事例 ツールバーへのフィードバック 〜をクリックする
〜をクリックする
A. 空白行にあるキャレット :
|
  • |
  1. |
B. 段落 1 つを選択 :

これ [ は 1 つの段落です。 ]

  • これ [ は 1 つの段落です。 ]
  1. これ [ は 1 つの段落です。 ]
C. 段落1 つ以上を選択 :

これ [ は 1 つの段落です。
これは 2 つ目の段落です ]

  • これ [ は 1 つの段落です。
  • これは 2 つ目の段落です ]
  1. これ [ は 1 つの段落です。
  2. これは 2 つ目の段落です。 ]

D. リスト 1 つの内側のリスト項目 1 つを選択 :
  1. | 目 1
  2. 項目 2
選択した項目のリスト種類を変更します
 ( 新規のリストを作成します ) :
  • | 目 1
  1. 項目 2
項目をリストから除去します

| 目 1

  1. 項目 2
E. 異なる種類のサブリストの内側で項目 1 つを選択 :
  • 中黒のリスト
    1. [ 数字の ] サブリスト
選択した項目のリスト種類を変更します
( 新規のリストを作成します ) :
  • 中黒のリスト
    • [ 数字の ] サブリスト
選択された項目をリストから除去します
  • 中黒のリスト
[ 数字の ] サブリスト
F. 全てのリスト項目を 1 つのリスト内で選択 :
  1. [ 目 1
  2. ] 目 2
リスト種類を変更します 
( 新規のリストを作成します ) :
  • [ 目 1
  • ] 目 2
全ての項目をリストから削除します ( リストを削除します ) :

[ 目 1
] 目 2

G.   1 つのリストの内側で 2 つの項目を選択、 2 つ目のリスト ( サブリスト ) の内側で 1 つの項目を選択。
2 つのリストを選択、両方とも同じ種類。
  • 項目 [1
  • 項目 2
    • サブ項目 ] 1
    • サブ項目 2
選択された項目を除去します。 ( 新規にリストを作成してインデントレベルを保ちます ) :

項目 [1
項目 2
サブ項目 ] 1

    • サブ項目 2
選択された項目のリスト種類を変更します ( 中黒の項目が別のリストの内部にあることに注意してください ) :
  1. 項目 [1
  2. 項目 2
    1. サブ項目 ] 1
    • サブ項目 2
H.  1 つの項目を 1 つのリストの内側で選択、1 つの項目を2 つ目のリスト ( サブリスト ) の内側で選択、それぞれ異なるリスト種類。
  • 項目 1
  • [ 項目 2
    1. サブ項目 ] 1
    2. サブ項目 2
 2 つ目に選択した項目のみのリスト種類を変更します。 ( 新規リストを作成します ) :
  • 項目 1
  • [項目 2
    • サブ項目] 1
    1. サブ項目 2
 1 つ目に選択した項目のみのリスト種類を変更します ( 新規リストを作成します ) :
  • 項目 1
  1. [項目 2
    1. サブ項目] 1
    2. サブ項目 2
I. 1 つのリスト項目とリストを選択、さらにもう 1 つのリストでない段落を選択 :
  • 項目 1
  • [項目 2
通常]の段落。
リストでない段落を新規項目としてリストへと移動します :
  • 項目 1
  • [項目 2
  • 通常]の段落
リストでない段落を新規項目としてリストへと移動します :
  1. 項目 1
  2. [項目 2
  3. 通常] の段落
J. 2 つのリストの間に 1 つの段落 :
  • 項目 1
  • [目 2
通常の段落
  • 項目] a
  • 項目 b
リストでない段落をリストにマージして、 2 つ目のリストを 1 つ目のリストにマージします :
  • 項目 1
  • [目 2
  • 通常の段落
  • 項目] a
  • 項目 b
リストでない段落を新規の数字のリストにマージします :
  • 項目 1
  1. [目 2
  2. 通常の段落
  3. 項目] a
  • 項目 b
J. 2 つの異なるリスト種類の間に 1 つの段落 :
  • 項目 1
  • [目 2
通常の段落
  1. 項目] a
  2. 項目 b
リストでない段落を 1 つ目の項目と 2 つ目のリストから得られた項目の両方にマージします :
  • 項目 1
  • [目 2
  • 通常の段落
  • 項目] a
  1. 項目 b
1 つ目のリストから項目を移動して、一方ではリストでない段落を 2 つ目のリストにマージします :
  • 項目 1
  1. [目 2
  2. 通常の段落
  3. 項目] a
  4. 項目 b

備考 :
これらの規則は 4.x の動作とは異なっています。 4.x では概して無茶苦茶で時代遅れなので、時間をかけてその違いを詳しく述べるには値しません!特に大きな違いを述べるとすれば 4.x では、選択がリスト項目のちょうど上に乗っていれば、別のリスト種類に切り替えるとそのリスト全体を新規のリスト種類に変更します。これは現在の計画では リストプロパティダイアログを使ってリスト種類を変更したときのみに生じます。
これらの規則を設計した後で、私は MS Word 97 を検証して、ただ 1 つの例外を除けば、非常に似通っているということを発見しました。
この仕様では、リスト項目を 1 つの種類からもう 1 つの種類に変更するとき、既に存在するインデントレベルを保存しようとします。多くの場合、このことはより良い動作にみえますが、もっと複雑な選択の事例 にみられるいくつかの奇妙なリストを出力することもあります。
例えば、上の表の G を見てください。最初の操作では、レベル 1 の項目は 1 つもないのに、インデントが 2 レベルなされた項目が残されます。 そして 2 つ目の操作では、別々のリストにあるのに、数字の項目と中黒の項目が同じレベルに混在しているのが表れています。  MS Word では常に、その種類がレベル 1 に達するあらゆる道が変更されても、全てのリスト項目に対して「アウトデント(インデントから全て抜け出ることを)」します。そうした方がもっと究極的な 解決策になるようにみえます。

定義リスト

定義リストは DL リストノードから成り立っていて、子要素は、通常対になっている「定義用語」 (DT) と「定義記述」 (DD) に配分されます。見た目には、 DT は単純に左マージンに寄せて左そろえになっていて、 DD コンテントはインデントします。通常、 OL や UL リストと組み合わせた複数レベルのインデントは行なわれません。

ユーザーインターフェース :

  1. リストプロパティダイアログで、既に存在しているリストまたはリストでない段落は単純な DL リストに変換することができます。
  2. ツールバーの段落スタイルコンボボックスで、または 書式 | 段落 メニュー項目を用いて、選択したブロックを DT または DD リスト項目に変換することができます。


選択されたリストまたは段落を DL リストに変換するための規則 :

  1. 選択の頂点ブロック(共通ブロック親ノード)を突き止めます。
  2. 新規 DL リストノードをこのノードの直前に挿入して、またはもっと深いレベルに分割して HTML ブロックのコンテナシップ規則に、言い換えると、 DL 子ノードを受け入れることができるブロックの親に対して従います。
  3. 選択した全ての段落と LI ノードを DD/DT ノードに変換します。
  4. 現在、空になっている全ての OL および / または UL リスト ( かつては移動したノードの親 ) を削除します。

1 つの DL リスト をより単純な 1 つの OL または UL リストに変換するための規則:

  1. 選択した中にあるそれぞれの DL 要素につき、 1 つの OL または UL 要素を作成してそれを置換します。これを既に存在する DL の前に、上に述べたように挿入します。
  2. それぞれの DL の内側で : それぞれの DT と DL 要素につき、 1 つの LI 要素を作成してコンテントを DT/DD から LI の中へ移動して、それが新規の OL/UL の中に挿入されるようにします。
cmanske@netscape.com