書式相談スレ
(Res: 17)
問題なさげだったので立てました。
@wikiのマニュアルは記述が少なくて肝心のところが手探りじゃないとわからなかったりするので、ノウハウの普及などにご活用ください。
……とりあえず、翻訳箇所報告スレでの話題の大本だった半角スペース問題、今更ながらちょっと確認してみましたら、@wikiの変換の問題ですね。
{[リンクA>@wiki内のページ名]]とか&link(リンクB){外部URL}だと普通に無改行で<a>タグを作るんですが、
> ここに[[リンクC>外部URL]]を表示します。
だとなぜか
> ここに<a href="外部URL" rel="nofollow">
>リンクC
>
></a>を表示します。
と変換されます。インライン要素中の改行は空白文字に置き換えるのがhtml規則なので、謎の半角スペースが生じることになります。
太字などはさらに謎で、&b(){}、&bold(){}、''~''で全部変換が違い、
> &b(){ここ}と&bold(){ここ}と''ここ''を太字にします。
は
> <b>ここ</b>と
><span style="font-weight: bold;"><!--@@@@@-->ここ</span>
>と<strong>
>ここ
>
></strong>を太字にします。
に変換されます。余計な改行を挟んでいる後ろ2つが置き換えられた半角スペースを生やすのはリンクと同じです。
wikiで変換後のhtmlソースの可読性にこだわる意味はあまりないですし、ソースの可読性のために表示を犠牲にするのは本末転倒なので、この件はとりあえず@wikiに不具合報告してみます。
割とどうでもいい内容かもですが、
[[~]] でリンクを張る際、リンク先が複数のページをマージしている場合、その一番上へのリンクを張って#でマーカ指定すればそこに飛びます。
例:以下はいずれもOKです
[[技能の詳細/1#Intimidate]]
[[技能の詳細#Intimidate]]
[[呪文/は行/は~ひいと#Beast-Shape-I]]
[[呪文/は行#Beast-Shape-I]]
まとめたページに飛ぶ方が記述量が減るし、いちいち細分化された
ページの名前を覚えなくていいので、結構手が抜けます。
# 既出ならご容赦下さい。
編集モードだと「プレビュー」ってボタンが下に設置されて、押すと自分がやった編集へと更新されたらどう表示されるかが見れて便利なのですが、
実はなんと実際の表示とは異なる結果が表示されます。
&link(いろは&i(){にほへ}とちり){http...paizo..../pathfinderRPG/prd/...}は実際に更新すると「にほへ」はイタリック体で表示されますが、
「プレビュー」で見ると「<i>にほへ</i>」と“文字で”括っているのが見れます。
それ見て「@wikiは何考えてるのかわからんなあ」と思いながら&link()の範囲を狭めたりと改悪してましたが、実際には訂正不要でした。
そんな私の改悪箇所に気付いたら直してくださって構いません。
UE/魔法の武器と防具/特定の魔法の鎧と盾で試しに導入してみた表の背景色の偶奇行指定ですが、気づいた問題を@wikiに送ったら対応してもらえました。
問題なさそうなので、暇ができたら他の表にもちょこちょこ適用してみようかと思います。
とりあえず Core の表を一通り縞々にしてみました。
グレーの度合いは本家 PRD が#000000の5%を指定しているので、255×0.05=12.75より、#FFFFFFから RGB それぞれ13くらい引いときゃよかろうという考えのもと#F2F2F2F2としています。
#table_zebraプラグインについて、気をつけなきゃいけないこともいくつかわかりましたので以下列挙。
(1)見出し行指定
見出し行指定色は<th>タグに適用されます。見かけ上は同じ表示になりますが
|アイテム|市価|h
とか
|~アイテム|~市価|
には適用されますが
|CENTER:&b(){アイテム}|CENTER:&b(){市価}|
には適用されません。手間も余計にかかるので、見出し行が複数あるテーブル以外は2値指定で済ませるのが無難です。
(2)複数ページのマージ
#include系のプラグインを使用して複数のページをマージする場合、すべてページのすべてのテーブルIDが互いに独立している必要があります。まぁ、これはアンカ名とかも同じですが。
んで、ちゃんと ID をバラバラにしても、マージしたページでは#table_zebraプラグインの動作が怪しくなります。
このプラグインはテーブルそれ自体には手を加えず、指定した値をカスタムデータ属性に持つ<div>タグに置き換わります。その後、javascript で値を読み取って CSS を動的に指定することで背景色を変更するのですが、この<script>タグが</html>の直前にあります。サーバ側の動作は想像するしかないですが、たぶん、#include系のプラグインは<div id="wikibody" class="box">の中身あたりを切り張りしているんでしょう。この<script>タグが出力されない場合があります(ときどきちゃんと出てくることもあるので、キャッシュやタイミングの問題かもしれないですが)。
あれこれ悩みましたが、親ページに#table_zebraタグがあれば確実に処理されるので、次のような記述を加えておくことにしました。
#divclass(hidden){
|dummy|
#table_zebra(000,#fff,#fff)
}
.hidden は @wiki のデフォルトの CSS に含まれているクラスで display : none; とだけ指定されてます。これで見た目に影響を及ぼさないようにダミーの表を仕込むことができました。今のところ問題はなさそうです。
うわぁ。実体参照がひどいことになってる。
<と>はそれぞれ<と>のつもりでお読みください。申し訳ないです……
atwikiが仕様変更したのか、atwiki形式で
&spanid(あいでぃーめい){表示単語}
と記述した見出しの一部が
「id名は半角英数字で入力してください。」
と表示されてるようです。
現在「id名は半角英数字で入力してください。」と表示されてる見出しのあるページ
ttp://www29●atwiki.jp/prdj/pages/353.html
353.htmlと同じ書式なのに正常に表示されているページ
ttp://www29●atwiki.jp/prdj/pages/1078.html
上の2つは書式が同じなのに表示結果が違うのですが、ハイフン記号すら不正な文字と見做してるってことなんですかねえ
>>8
W3C確認してみました。
ttp://www●w3.org/TR/REC-html40/types.html#type-name
>ID and NAME tokens must begin with a letter ([A-Za-z]) and may be followed by any number of letters, digits ([0-9]), hyphens ("-"), underscores ("_"), colons (":"), and periods (".").
ということなので、ID名にハイフンは使用可能なはずですから、@wikiの実装ミスの可能性が高そうです。とりあえず問い合わせてみます。
>>9 長月 圭さん
どうもありがとうございます。
何やらハイフンがなくてさえ「id名は半角英数字で入力してください。」と表示されてるページを見つけたのですが、この見出しと1078.htmlの違いは「行の最後までの文字を{}で括っているか」になるのでしょうかね。分かりませんが。
ttp://www29●atwiki.jp/prdj/pages/1240.html
>>10
追加で問い合わせました。完全に半角英数字で指定したidなのにエラー吐くとなると、さすがに何かしらの修正はしてくれると思います。
エラー吐く条件はよくわからなくなりましたが、まぁなんとかしてくれるでしょう、たぶん。
>>11
多謝です。
&spanid(あいでぃーめい){表示単語}
を
&aname(あいでぃーめい)以降文章
に変えればエラー吐かなくなったようなので、当座気付いたところはそう直そうかと思います。
遅レスですがスレ立てありがとうございます。
&link(){}
についてなのですが、
()の中身にまた(~)が入ってると、表示がおかしくなってしまうみたいですね。
対策としては[[]]の形式のままにしておく、中身の半角カッコ()を全角カッコ()にする、省略してよさそうなら(~)を削る、などがあると思いますが…
レム・レイさんとかは既にお気付きかと思いますが、一応ここにもわかりやすく記録しておきます。
atwikiのページ内アンカー中で&i(){}を使うと正しく表示されないようです。
&link_anchor(ki-pool){&i(){気}蓄積(魔法)}
と書いても「気」はイタリック体にならず、
&i(){気}蓄積(魔法)
と文字で表示されてしまいます。
仕方がないためatwikiで
&i(){&link_anchor(ki-pool){気}}&link_anchor(ki-pool){蓄積(魔法)}
と記述しています
もうすぐスレッドは消えるようですが、&link(言葉1){リンク先}の(言葉1)に
&small(){言葉2}を入れると正しく表示できないため、
逆の入れ子にする必要があることが分かったので一応ここに書き込みます