プラグインは、Ruby そのものです。tDiary 等と同じ考え方です。ただし、
ということで、いわゆるセキュリティー関係については何も考慮していません。 *1
プラグインの設置は以下の2つの方法がある
単純に、 ho.rb スクリプトが置かれているフォルダに plugin フォルダがあれば その中の *.rb を無条件に読み込む。 一般的には、ho.rb は、TaskPrize インストールフォルダ下にあるユーザーフォルダのScriptフォルダになります。
わざわざエディタを起動してプラグインを作成するのが面倒な場合があります。 そんな時には、プロジェクトファイルのトップフォルダに %plugin% という文書を作成して、 その文書にスクリプトを作成してください。 plugin フォルダの後に読み込むので、書き換えも可能となります。
プラグインのテストを実行する。
・{{'<br>'}}
・・単純に htmlを埋め込むことを期待している
・{{sumi "取り消しプラグイン"}} どんな感じ?
・・%plugin%文書にいれたプラグイン
・{{rb "漢字","かんじ"}}
・・%plugin%文書にいれたプラグイン
プラグインは、一応、どこにあっても使えるようになっています。
よって、単語展開を容易に行えると思います。
ただし、プラグインのネストは出来ませんので注意してください。
*1 というか、そもそも、それに値するスキルを持ち合わせていない(^^;)
各種プラグインを作成していると、文書の先頭や末尾に色々と情報を付加したくなります。 しかし、いちいち本文に
{{plugin}}
と記述するのは面倒です。
ということで、
この2つの変数は、直接 ho.rb に埋め込んであります。 よって、何らかのプラグインの結果を埋め込みたい場合には、 下記のように定義することで結果を埋め込めます。
@doc_header = <<EOT
<div class="doc_header">#{@navi} <small>#{@doc_navi}</small></div>
#{plugin1}
#{plugin2}
#{plugin3}
EOT
@doc_footer = <<EOT
#{plugin4}
#{plugin5}
#{plugin6}
<div class="doc_footer">#{@navi}</div>
EOT
文書中のプラグインとの連携を行うようなプラグインでも、 それなりに可能なようになっています。
具体的な例は、fnプラグインを参照願います。
いわゆる <pre> 〜</pre> 出力する方法はいくつかあります。 また、この <pre> を行う場合には
かどうかを意識しておく必要があります。
SunokoDocの如く、 基本的にはHikiDocです。しかし行頭インデントを可能にしている関係上、 Wiki の特徴である、 行頭スペース は <pre> するということは出来ません。 よって、<pre> したい場合には、明示的に <<< 〜 >>> で挟む必要があります。
テキスト
<<< SunokoDocはHikiDocとほぼ同じです。 しかし、行頭スペースによる <pre> はできません。 >>>
表示
SunokoDocはHikiDocとほぼ同じです。 しかし、行頭スペースによる <pre> はできません。
プラグイン
{{pre 'text'}}
を用意してあります。これを用いることでも <pre> は可能です。
テキスト
{{pre 'SunokoDocはHikiDocとほぼ同じです。
しかし、行頭スペースによる <pre> はできません。'}}
表示
SunokoDocはHikiDocとほぼ同じです。 しかし、行頭スペースによる <pre> はできません。
プラグインは複数行に渡って書くことが可能です。
プラグインは複数行に渡って記述することが可能なので、 あまり必要性は感じないかもしれませんが、 Rubyのヒアドキュメントを用いた方法も可能です。
テキスト
{{pre <<PRE
SunokoDocはHikiDocとほぼ同じです。
しかし、行頭スペースによる <pre> はできません。
PRE}}
表示
SunokoDocはHikiDocとほぼ同じです。 しかし、行頭スペースによる <pre> はできません。
基本的には前出の SunokoDoc と同じです。 ただし、HikiDoc の方がより柔軟に作成可能です
一般的にWiki記法の場合、行頭スペースにて <pre> を判断しています。 HikiDoc ではそれに加えて、行頭タブでも <pre> 可能となっています。
<<<
行頭にタブがあります
これは2行目です
>>>
行頭にタブがあります
これは2行目です
プラグインを用いた方法では両者に大きな違いが発生します。 HikiDoc は、行頭スペースを1つみて判断しています。よって、複数ある場合には、 <pre>中でもスペースが有効になります。 対し、SunokoDoc では、通常の文章に行頭空白を許可している関係で、 そこまで賢いルーチンで作成してありません。複数のスペースがあっても、 表示される <pre> は、全て先頭に詰まって表示される場合があります。
テキスト
{{pre <<PRE
SunokoDocはHikiDocとほぼ同じです。
しかし、行頭スペースによる <pre> はできません。
PRE}}
HikiDocの場合の表示
SunokoDocはHikiDocとほぼ同じです。
しかし、行頭スペースによる <pre> はできません。
SunokoDocの場合の表示
SunokoDocはHikiDocとほぼ同じです。 しかし、行頭スペースによる <pre> はできません。
このように先頭が詰まってしまいます。
★よって、SunokoDocでは <<< >>> で挟む方法を推奨します。
ソースコメントより引用
# {{toc('item_id', level, doc }}
# item:目次のトップレベルとなる TPZ の message_id
# itemを省略した場合、html 出力の選択されているアイテム全て
# デフォルトは nil
# level:item以下、どの階層までの目次を作成するかを指定
# itemと同階層のアイテムは level = 1 とする。
# level = 0 の場合は、item 以下全てのアイテムの目次を作成
# level = 1 の場合は、item と同階層のアイテムのみの目次を作成。
# 具体的には子(children)アイテムのみ。
# 自分自身のアイテムは目次化されない。
# また、システム変数 @folderprint_all は無視する。
# doc:文書も目次に入れるかの判定
# doc = false 文書は目次に入れない(デフォルト)
# doc = true 文書も目次に入れる
#
# {{doctoc}} とすればその文書内のみの目次を作成。
# 文書内では、<h1>〜<h6>を見出しにする。
#
#
#
# 2008030511585008827@1214510797115.TPZ
# 数字部の長さは一定していないので、正規表現は以下とする
# /[\d]{15,}@[\d]{10,}\.TPZ/
#
システム変数 @folderprint_all によりその出力は異なります。 これは、html出力するアイテムと同じパラメータを使用しているためです。 出力されるアイテムがないのに目次だけあるのは不自然なために、あえてそのようにしています。
TaskPrizeの大きな特徴として、アイテムごとに文書を複数持つことが出来ます。 この文書も目次に列記することが可能です。 具体的には toc プラグインの doc パラメータにより制御を行います。
選択されているアイテムのみを出力する場合。
タイトルのみの目次
{{toc}}
タイトルのみの目次
文書を含めた目次
{{toc '',0,true}}
文書を含めた目次
例えば、章毎の目次を各章のトップに書きたい場合を考えます。 そういう場合を想定しています。
このアイテムを指定した場合
{{toc "#{@ItemMessageId}",0,true}}
このアイテムを指定した場合
システム変数 @ItemMessageId ではなく、直接、TPZのメッセージIDを指定しても良い。
{{toc "2008031017045104360@1214510797115.TPZ",0,true}}
プロジェクト全体の出力は、システム変数 @folderprint_all で制御できますが、 全体としてはフォルダ以下も出力したいが、あるところでの目次は、 同階層のアイテムだけを出力したい、という場合は以下で可能です。
親アイテムを指定した場合
{{toc "#{@ParentMessageId}",1,true}}
親アイテムを指定した場合
文書内のみの目次を作ります。文書内では、<h1>〜<h6>を見出しにします。
目次
{{doctoc}}
目次
@doc_header に記述しておくことも可能
@doc_header = <<EOT
<div class="doc_header">#{@navi} <small>#{@doc_navi}</small></div>
#{doctoc}
EOT
目次を作る際に、TaskPrize のメッセージIDを使用しています。 通常、このメッセージID をTaskPrizeの文書でクリックすると、そのアイテムにジャンプします。 当然、HtmlOut_For_TPZ で作成している文書でもそうしたい、というのが人情。
しかし、下記注意のこと。
[[目次2|#2008030517223207530@1214510797115.TPZ]]
というリンクにしたのではだめっぽい。メールが開いちゃうよ(^^;)
[[目次3|#<2008030517223207530@1214510797115.TPZ>]]
とすると問題ない。。。しかし今度はhtmlの変換後、うまくない
ということで、以下としています。
[[目次3|#(2008030517223207530@1214510797115.TPZ)]]
message_id を 括弧 ( ) で囲っています。
また、文書や、文書内見出しは以下で可能です。
[[文書|#(2008030517223207530@1214510797115.TPZ).1]]
最後の .1 が、doc.index です。 よって、一旦リンクを作成してから文書を移動するとずれるので注意してください。
[[文書内見出し|#(2008030517223207530@1214510797115.TPZ).1.h13]]
文書内見出しは、最後の h13 です。この h の後の番号は連番です。 HtmlOut_For_TPZ を実行した時点で決定されます。
なお、toc を使用しなくても、標準で name 属性を アイテム、文書 につけていま す。なので、プラグイン等で自由にリンク操作が可能となっています。
いわゆる脚注プラグイン。プラグインとしては
の3つで成り立っています。
脚注プラグイン本体。この fn にて脚注を作成します。 mark に何かしら指定すれば、それが適用されます。
fn で溜め込んだ脚注を書き出します。 fn_put が書かれた位置に、それ以前にfnで書かれた脚注を書き出します。
プラグインを2つに分けることで、どうしても、fn_put を忘れてしまいます。 ということで、もしも本文中に fn_put が無かった場合の対策として以下を行っておくと幸せになれます。
%doc_conf% にて @doc_footer を以下のように定義。
@doc_footer = <<EOT
#{fn_put_forget}
<div class="doc_footer">#{@navi}</div>
EOT
以下の例を参照。
脚注テスト1
{{fn "テスト1"}}
脚注テスト1
{{fn "テスト2"}}
脚注テスト1
{{fn "テスト3","脚注"}}
{{fn_put}}
脚注テスト2
{{fn "テスト4"}}
脚注テスト2
{{fn "テスト5"}}
脚注テスト2
{{fn "テスト6"}}
{{fn_put}}
脚注テスト1 *1
脚注テスト1 *2
脚注テスト1 脚注3
脚注テスト2 *1
脚注テスト2 *2
脚注テスト2 *3
スタイルシートを適宜埋め込んであります。 参考まで。
/* footnote */
div.body span.footnote {
vertical-align: super;
font-size: 70%;
}
div.footnote {
font-size: 75%;
border-style: solid;
border-color: #ddf;
border-width: 1px 0px 0px 0px;
padding: 1em 3em 1em 3em;
margin : 2em 3em 1em 3em;
}
p.footnote {
margin: 0.5em;
padding: 0em;
text-indent : -1.5em;
}
いわゆるイメージプラグイン。画像等のリンクに使用します。
select_image_link ファイルリンクを取得し、Wiki記法変換する で入力された形式を html に変換することを目的にしています。
{{image 'images/1.JPG','1.JPG','1.JPG','photo'}}
上記を
<img class="photo" src="images/1.JPG" alt="alt 1.JPG" title="title 1.jpg">
と変換するようにする。
[[Google|http://www.google.co.jp/]]
これは、通常のリンクそのもの よって、通常の画像リンクを作成したい場合、画像のurlリンクを行っておけばリンク可能。
[[http___sunoko.s33.xrea.com_x_HtmlOut_for_TPZ_images_1.JPG|http://sunoko.s33.xrea.com/x/HtmlOut_for_TPZ/images/1.JPG]]