明示的に<blockquote>から抜け出る方法がない

  • ページ: BugTrack
  • 投稿者: reimy
  • 優先順位: 重要
  • 状態: 完了
  • カテゴリー: 本体バグ
  • 投稿日: 2002-06-28 (金) 08:24:06
  • バージョン:

メッセージ

現状では、明示的にblockquoteから抜け出る方法がないので、blockquoteの直後にプラグインを指定するとプラグインがblockquote内に置かれてしまう*1

たとえば

>引用文
#comment

とすると、#commentプラグインが展開されたタグはblockquoteの中に入ってしまいます。

>引用文~
#comment

これでも引用文からは抜け出せませんから、やはりプラグインが展開されたタグはblockquoteの中です。

>引用文
(空行)
#comment

こうするといちおうblockquoteの外側にプラグインが置けますが、この場合、空行が<p>になるため、今度はプラグインが展開されたタグは<p>の中に入ってしまいます(<p>にtext-indentやmarginを指定している場合、プラグインもインデントやマージンが実行されるのではっきりわかります)。

blockquoteの中から抜け出るための明示的な方法がないという現在の仕様の欠陥だと思います。何らかの対策が必要です。

これは下記の2つをが同じに解釈するというように現在の仕様を決めてしまったことに起因するように思えます。なんでこんな仕様にしたんだろ?

(1)

>test
test
test

(2)

>test
>test
>test

(1)のように > が行頭にない場合はblockquoteから抜け出るような仕様にしておけばよかったんでしょうが…。<p>を改行の<br>代わりに使ってしまった弊害のように思えます。

これについては、現状で非常に困ってるので 1.4 での改善をお願いします。


  • 一度使った行頭書式をキャンセルするには空行を入れなくてはならないというルールをどうにかしなくてはならないということですね。 -- kawara 2002-06-28 (金) 13:15:59
  • 現状では<ul>についても<li>以外のものも直下に置けてしまうので<li>の次の行にプラグインを置いたときに同じようなことが起きます。↓の#commentのように… -- reimy 2002-06-28 (金) 13:55:41
  • 空行を<p>に割り当てるのならば、何らかのブロック要素の解除のためのものが必要となる。空行に解除の意味を持たせるのならば、空行に<p>の機能を持たせない…のいずれかだと思います。従来のデータへの副作用を考えると、ブロック要素の解除の機能を空行以外に持たせることになるのかなあ。お尻<p>の問題とも関連しますね。 -- reimy 2002-06-28 (金) 14:07:35
  • 今日のチャットで、現在の「お尻でp」や一番上の例のblockquoteが続いてしまう問題を残した「互換スイッチ」を残した上で、一番下の(2)の構文にして、空行を<p>~</p>にして連続複数空行は一つの<p>とみなす、新モードに以降しようと思います。 -- ゆう 2002-06-29 (土) 00:06:22
  • はい、OKです。空行の次に文字データ(段落)が来る場合はその処理でいいと思います、ただ、空行の次に<ul>や<dl>、<blockquote>及びプラグインが来る場合の空行はどう処理されるのでしょう? その場合はやはり<br>に変換されるわけですよね? まさか<p><ul>~</ul></p>や<p></p><ul>~</ul>ってことはないですよね? -- reimy 2002-06-29 (土) 15:03:42
  • 空行を見付けて、</p>を出力した後で空行を読みとばし、次に来る行がブロックを成さない場合のみ<p>を付けるという事ですかねぇ。 -- seagull 2002-06-29 (土) 15:43:11
  • そうですね。ブロック要素やプラグインの直前には空行を置かない、段落の直前にのみ空行を開けるってことが徹底されるなら、そこまでする必要もないわけですけど。実際、<br>のつもりで空行を入れる人は多いですからねぇ… -- reimy 2002-06-29 (土) 16:14:02

従来は

><blockquote>
>   hogehoge
></blockquote>
><blockquote>
>   hogehoge
></blockquote>

><blockquote>
>   hogehoge
></blockquote>
><br>
><blockquote>
>   hogehoge
></blockquote>

というようなのを記述するのに

>hogehoge
~
>hogehoge

と書いたのではうまくいかないので

>hogehoge
(空行)
>hogehoge
    (出力は
    <blockquote>
       hogehoge
    </blockquote>
    <p>
    <blockquote>
       hogehoge
    </blockquote>
    )

とか

>hogehoge
>>
>hogehoge
    (出力は
    <blockquote>
       hogehoge
       <blockqopte>

       </blockquote>
       hogehoge
    </blockquote>
    )

と書いてたわけですけど、これからは

>hogehoge
(空行)
>hogehoge
    (出力は
    <blockquote>
       hogehoge
    </blockquote>
    <blockquote>
       hogehoge
    </blockquote>
    )

または

>hogehoge
~
>hogehoge
    (出力は
    <blockquote>
       hogehoge
    </blockquote>
    <br>
    <blockquote>
       hogehoge
    </blockquote>
    )

と書けばよくなるわけですね。

>hogehoge
~
>hogehoge

と書いたら

<blockquote>
   hogehoge
</blockquote>
<p><br></p>
<blockquote>
   hogehoge
</blockquote>

になっちゃのかな?

  • BugTrack/38の<blockquote>の中の処理もBugTrack/40と同じ処理でお願いします。 -- reimy 2002-06-30 (日) 03:00:28
  • コメントプラグインとulとの入れ子問題対応できたっぽいです。 -- kawara 2002-07-10 (水) 14:25:23
  • テストサイトで試してミソ。 -- kawara 2002-07-10 (水) 14:25:57
  • うまくいってますね。 -- reimy 2002-07-10 (水) 15:10:17
  • CVSで取り込んじゃったので完了にしちゃおうかな。まだ不安もあるけど…。 -- kawara 2002-07-10 (水) 15:26:48
  • 従来と表示が変わってしまうのはインラインのプラグインの場合ですね。これはインライン型プラグインをブロック型プラグインとは別の書式にしないかぎり判別できないですからねぇ。 -- reimy 2002-07-10 (水) 15:54:39
    このPukiWikiのバージョンは
    #version
    です。

というようなインライン型プラグインは、従来は

このPukiWikiのバージョンは
#version
です。

という表示だったけど、今後はブロック要素として表示されるので

このPukiWikiのバージョンは

#version

です。

と表示されますので、ご注意を。


*1 ここではわかりやすいのでプラグインを例にしていますが、プラグイン以外の要素でも同じようなことは起こります。

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2002-07-10 (水) 15:58:06
Site admin: PukiWiki Development Team

PukiWiki 1.5.2+ © 2001-2019 PukiWiki Development Team. Powered by PHP 5.6.40-0+deb8u7. HTML convert time: 0.178 sec.

OSDN