#author("2018-09-21T20:49:44+09:00","default:kanateko0404","kanateko0404")
*追加プラグイン/contentsx [#i86d8828]
#contentsx

*説明 [#b25f9fa6]

ページの目次を作成するプラグインです。

**本体組み込み #contents との違い [#k9cb86b6]
-設置行以降の見出しのみリストする機能
-MenuBar に設置しても有効
-見出しレベル指定機能
-表示件数指定機能
-正規表現による見出しのフィルタ機能
-正規表現による見出しの除外フィルタ機能
-キャッシュ機能
-リンク形態指定機能(リンクしないなど)
-固定アンカ必須

*書式 [#jcb5f796]
 #contentsx(オプション)

option=bool なオプションは共通して、 option, option=true, option=on でそのオプションが有効になり、option=false, option=off で無効になります。

-fromhere=bool
--#contentsx がある行以降の見出しのみをリストする。デフォルトで有効。~
備考:page オプションで別ページを指定した場合は強制的に off になります。

-include=bool
--#include プラグインで取り込んでいるページとその見出しも扱う。
デフォルトで有効。

-hierarchy=bool
--階層的表示。デフォルトで有効。

-compact=bool
--リストのレベルを詰める。デフォルトで有効。[[使用例>#ac62520e]]参照のこと。

-num=数字
--表示件数指定。正数は前からN件目、負数は後ろからN件目の意味。~
num=1:10 で先頭1件目から10件目までの意味。num=-10:-1 で後ろ10件目から後ろ1件目までの意味。num=2: で先頭2件目から最後までの意味。~
//((num=:10 と書くこともできる。num=10:1 も同義。)) ((num=-10: と同義。num=-1:-10 とも書いても同じ。))~
num=5+2 で先頭5件目から、そこから2件先まで(5,6,7)の意味。~
//((num=5-2 で先頭5件目から、そこから2件前まで(3,4,5)の意味。))((さらに num=(1,3,5+2) のような表記も可能。))

-depth=数字
--見出しレベル限定。数字の指定は num と同じ書式。includeページタイトルはレベル0になる。
compact=on,off に関わらず絶対値指定。

-except=正規表現
--リストしない見出しを正規表現にて指定。~
ヒント: [[ereg>http://php.s3.to/man/function.ereg.html]] で判定を行います。
except=Test|sample → Test または sample を含む見出しを除く。

-filter=正規表現
--リストする見出しを正規表現で限定する。~
ヒント: [[ereg>http://php.s3.to/man/function.ereg.html]] で判定を行います。

-link=on|off|anchor|page
--リンク形態指定。デフォルトは on。~
on は現在ページへは link=anchor、page オプションで別ページが指定されていた場合 link=page。~
anchor は強制的にアンカーのみ使用。~
page は強制的にページ名も含めたリンク。~
off はリンクしない。~
ヒント: link=anchor で include したページに対してもページ内アンカーによるリンクを貼れます。include にはもともと対応していますが、類似のものにも対応できると思います。link=page はついでです。

-page=ページ名
--見出しリストを行うページを指定。デフォルトはカレントページ。

-cache=on|off|reset
--キャッシュの利用。デフォルトで有効。reset でキャッシュの強制再作成。

**動作例 [#ac62520e]
次のような「とあるページ」があったとします。
 **AA
 #contentsx
 *B
 ***BBB
 **BC
 #include(別のページ)
 *D

「別のページ」の内容は次のとおりだったとします。
 *1
 #contentsx
 **11

「とあるページ」の #contetnsx が変更されると思ってください。
----
まず参考に #contents
 #contents
-AA
-B
---BBB
--BC
-D
----
#contentsx のデフォルト動作
 #contentsx // == #contentsx(include,fromhere,compact,hierarchy)
-B
--BBB
--BC
-別のページ
--1
---11
-D
----
 #contentsx(include=off,fromhere=off,compact=off,hierarchy=off)
-AA
-B
-BBB
-BC
-D
----
 #contentsx(include=off,fromhere=off,compact=off,hierarchy) // 以下 hierarchy 略
--AA
-B
---BBB
--BC
-D
----
 #contentsx(include=off,fromhere=off,compact) // compact
-AA (<-注目)
-B
--BBB (<-注目)
--BC
-D

完全に #contents と同じものはないが、compact としてはこの挙動が正解だと思っている(#contents の場合は先頭要素だけが compact されている)。
----
 #contentsx(include=off,fromhere,compact=off) // fromhere
-B
---BBB
--BC
-D
----
 #contentsx(include,fromhere=off,compact=off) // include
---AA
--B
---BBB (表現できない。もう1段下がる)
---BC
-別のページ
--1
---11
--D

include がある場合、全体的に1段階下がる。
----
 #contentsx(depth=1:2,compact=false)
--B
---BC
--1
---11
--D

include が depth=0
----
 #contentsx(depth=1:2) // compact
-B
--BC
-1
--11
-D
----
 #contentsx(depth=1:2,filter=B)
-B
--BC
----
 #contentsx(depth=1:2,except=B)
-1
--11
-D
----
 #contentsx(depth=1:2,except=B,num=1:2)
-1
--11
----
 #contentsx(page=別のページ)
-1
--11