
[1] 

>
:B 列 (B sequence):
[[大文字]] [CODE(SGML)[[[B]]]] の連続した文字列。
[[短縮参照]]として割り当てられた[[文字列]]の中で、
その[[文字]] [CODE(SGML)[B]] の個数以上の長さを持つ[[空白列]]を意味する。
([[JIS X 4151]]‐1992 3. (217))

[6]
B 列・空白列に関係する規定:
- [[JIS X 4151]]-1992
-- 3. [CITE[(61) 空白列(blank sequence)]]
-- 3. [CITE[(217) B列(B sequence)]]
-- [CITE[表4 規格参照区切り子集合(短縮参照)]]
-- [CITE[8.6.5 空白列を含む短縮参照]]
-- [CITE[8.6.6 名前文字]]
-- [CITE[9.1.2 引数表記]]
-- [CITE[10.5 短縮参照対応表宣言]]
-- [CITE[12.4.5 命名方法]]
-- [CITE[12.4.6.2 短縮参照区切り子]]
-- 参考4 [CITE[2.3.2 タイプライタの打けん—短縮参照対応表の定義]]

[2] >>1 [Q[連続した]]とありますが、[[JIS X 4151]] 8.6.5 の通り、一個の [CODE(SGML)["B"]] でも一個以上の[[空白]]を示すものとして扱います。

[3] 例えば、[CODE(SGML)[SHORTREF SGMLREF "ABC"]] などとやると、[[短縮参照区切り子]]としてマッチするのは [CODE(SGML)["ABC"]] でなく [CODE(SGML)["A C"]] ということになるわけです。

[4] >>3 ここで当然の疑問なのですが、区切り子として [CODE(SGML)["ABC"]] をマッチさせたい場合にはどうすればよいのでしょう。[[文字参照]]で [CODE[SHORTREF SGMLREF "A&#66;C"]] などとしても意味がないわけですが…。

[5]
[CODE(SGML)[[[NAMECASE]] [[GENERAL]] YES]]
のときは、 [SAMP(SGML)["AbC"]] と指定すればよいのではないでしょうか。
[CODE(SGML)[NO]] のときは・・・。
([[名無しさん]])

[7] >>5 ここでの [CODE(SGML)[B]] 文字自体が[[規格参照]]の短縮参照区切り子ですので、[CODE(SGML)[[[NAMECASE]] [[GENERAL]] YES]] の時は、[CODE(SGML)[SHORTREF SGMLREF "AbC"]] = [CODE(SGML)[SHORTREF SGMLREF "ABC"]] と解釈されて、やはり [CODE(SGML)["A C"]] などがマッチすることになります。(この場合は、小文字の b をマッチさせることも不可能な気が…)

[8]
>>5 と書いたのは、 12.4.6.2 の [Q[短縮参照区切り子の引数表記は、 B 列を 1 個含んでいてもよい。]]
より、 [CODE(SGML)[B]] が B 列であるかの判断は引数表記内の表記で決定されるのかもしれないと考えたからです。
但し、この解釈は >>1 の定義とややずれがあります。
この解釈だと他にもつじつまがあわないところが出てくるかもしれません。

[9]
ところで、 12.4.6.2 には[Q[短縮参照区切り子は、その引数表記を解釈して得た文字列を具象構文での短縮参照区切り子として割り当てる。]]
とも書かれています。大文字化が行われるとは書いてありません。
[Q[解釈]]というのは参照の置換のことでしょう。
次の 12.4.7 [CITE[予約名使用]] も同じで、大文字化するとは明記されていません。

12.4.5 [CITE[命名方法]]には、[Q[[CODE(SGML)[NAMECASE]]: 大文字への代替を行うかどうか指定する。[INS[(略)]] [CODE(SGML)[GENERAL]] はその他の名前、名前字句、数字句及び区切り子に対する指定を行う。]]
と書いてあります。この規定に従って同じ SGML 宣言内の区切り子の定義まで大文字化してしまってよいのかは、
よくわかりません。なお、 8.3 [CITE[名前]]では、[CODE(ABNF)[名前]]などが
[CODE(SGML)[NAMECASE]] の影響を受けると明記されています。

ということは、区切り子は引数表記内で大文字で定義しないと、
[Q[[CODE(SGML)[GENERAL YES]] と指定してある場合、区切り子機能に割り当ててある名前文字は、区切り子の認知に関する限り、その大文字に代替して扱う。]]
[SRC[JIS X 4151‐1992 8.6.6]] ので、使えないことになります。
HTML 4 の SGML 宣言には [SAMP(SGML)["&#x"]] が出てきますが、
こちらは大文字化されないので、一致することはありません。

やっぱりこの解釈はいけません。

[10]
>>9 の 8.6.6 の引用部の[Q[区切り子の認知に関する限り]]から、
B 列であるかの判定では大文字化が行われないのでは、
という仮説も立ててみましたが、 8.6 は認知に関する規定ですし、
無理があるでしょうか。

結局、短縮参照区切り子に [CODE(SGML)[B]] を含めるのは不可能?


[11]
B 列は引数表記内に1つだけ書けて、他に制限が無いようなので、
[SAMP(SGML)["B,b"]] は [CODE(SGML)[NAMECASE GENERAL YES]] でも合法? (規格のバグだろうけど。)
([[名無しさん]])

