TiddlyWiki5の目次の順番を指定したい(別の方法)¶
Jeremyさんから、フィルタを指定しなくても良い方法を教えていただきました。
それでは解決しない場合に参考にしてください。
アルファベット順に読ませたいわけではない¶
TiddlyWiki5の目次マクロ(toc)を使うと、タグ付けされたTiddlerの目次が自動的にできあがって便利なのですが、アルファベット順に並べられてしまいます。例えばこんな感じ。
読ませたい順番になるようにタイトルを付けるのは至難の業ですし、例えばタイトルに番号を振るのもどうかと思いますね。
そこで、目次マクロで表示させる項目の順番を指定してみます。
目次の各項の順番を指定する¶
tocマクロの1つ目の引数はタグですが、2つ目の引数はフィルタです。そこで、listフィルタを2つ目の引数に指定してみます。
listフィールドの作成¶
まず、目次の順番のlistを作ります。
目次マクロ(toc)を記述するTiddlerにlistフィールドを作って、その中に目次の順番を書いてください。Tiddlerを編集する状態にすると、下の方にフィールドを入れる項目があります。
field nameのところにlistと入力し、field valueのところにタイトルを順番に入力します。タイトルは、スペースで区切ります。ここではC B Aと入れてみます。
入力したら、「add」ボタンを押して確定します。
目次マクロ(toc)の記入¶
tocマクロにlistフィルタを指定します。
<<toc "タグ名" "list[]">>
という様に入力します。
そうするとこのように目次が "C B A" の順番になります。
階層がある場合¶
"A"の下にあった"alpha"と"beta"が消えてしまいました。これでは使い勝手が悪いので、下の階層も表示できるようにします。
"A"というTiddlerにlistフィールドを作って、その中に下の階層の項目を指定します。
そうすると、下の階層まで表示されました。
タイトルにスペースが含まれる場合¶
listフィールドの区切りがスペースなので、スペースを含むタイトルの場合は分割されてしまいます。その場合、タイトルを[[]]で囲みます。
例えば、"C"の下位に"foo"と"bar"と"ぴよ ぴよ"というTiddlerを置くとします。"ぴよ"と"ぴよ"の間にスペースがあるので、listフィールドに"foo ぴよ ぴよ bar"と指定すると、"ぴよ ぴよ"というタイトルが目次では分割されてしまいます。
そこで、"C"のlistフィールドでは、"ぴよ ぴよ"を[[ぴよ ぴよ]]という風に2重の角括弧で括って指定します。
そうすると、次のようにスペースを含むタイトルが分割されずに目次に表示されます。
2重角括弧を、例えば1重とか片側だけとかいうふうに中途半端に指定すると、エラーを起こして復帰できなくなることがありますので、使う際に注意してください。(私は中途半端状態で自動保存してしまって、ファイル捨てる羽目になりました。)
表示例は、TiddlyWiki5.1.7 FireFox34 Windows8.1です。