/***\n\n!~AutoCloseMessagePlugin - 時限メッセージダイアログ\n\n''説明''\n~TiddlyWikiで保存したり検索したときに右上に出るダイアログ風の\nポップアップは意外と邪魔になるものです。どうせ定型的な内容だし、\nそれをクリックするような状況もほとんどないので数秒たったら自動的に\n消えるようなプラグインを作成しました。\n\n''インストール''\n この記事の内容をペースト、systemConfigタグを付けて保存、リロード。\n 全てのメッセージダイアログが3秒で消えるようになります。\n {{{timeout: 3000}}}の箇所を変更すると消えるまでの時間を設定できます。\n\n----\n''ソースコード''\n***/\n//{{{\nconfig.autoCloseMessage = {\n timeout: 3000\n};\n\njavascript:(\n function() {\n var orig_displayMessage = displayMessage;\n displayMessage = hook_displayMessage;\n\n function hook_displayMessage(text,linkText) {\n orig_displayMessage(text,linkText);\n setTimeout("clearMessage()", config.autoCloseMessage.timeout);\n }\n }\n)();\n//}}}
//{{{\n// Box\n// 文字列に囲み線をつける\nconfig.macros.box = {};\nconfig.macros.box.handler = function(place,macroName,params)\n{\n var e = createTiddlyElement(place,"span",null,null,params[0]);\n e.style["border"] = "1px solid #000";\n e.style["padding"] = "0.2em 1em 0.2em 1em";\n}\n//}}}
箇条書きやテーブルの中で改行するための{{{<<br>>}}}マクロはVersion2.1.0以降推奨されなくなりました。以下のように{{{<br>}}}タグを使用してください。\n\n!書式\n{{{<br>}}}\n!使用例\n{{{\n*箇条書きの<br>改行\n}}}\n*箇条書きの<br>改行\n
この記事は[[HaloscanMacro|HaloscanMacro - コメント/トラックバック機能]]で実現したコメント/トラックバック機能のテスト用ページです。自由に書き込みテストをしてください。\n\n日本語は使えたり使えなかったり微妙。\n\n<<haloscan comments>> <<haloscan trackbacks>>\n
TopPage
<<list tag FAQ_ FAQ一覧>>
\n!概要\nCSSのグラデーション装飾を簡易的に設定します。\n!書式\n{{{<<gradient 方向 色1 色2 ……>>装飾対象文字列>>}}}\n\n 方向: ''vert''(縦方向に色変化)または''horiz''(横方向に色変化)を指定\n 色: #rrggbb形式で指定\n!使用例\n{{{\n|<<gradient vert #ffffff #ffdddd #ff8888>>グラデーション<br>効果の例>>|\n<<gradient horiz #ff8888 #ffff88 #88ff88 #88ffff #8888ff #ff88ff>>虹色>>\n}}}\n|<<gradient vert #ffffff #ffdddd #ff8888>>グラデーション<br>効果の例>>|\n<<gradient horiz #ff8888 #ffff88 #88ff88 #88ffff #8888ff #ff88ff>>虹色>>\n
\n!機能\nTiddlyWikiをサーバ上に置いたとき、擬似的にコメントやトラックバックを実現するマクロ。ただし日本語タイトルの記事にはコメント/トラックバックが付けられないようです。\n\nコメント/トラックバック機能のホスティングサービスを提供している[[HaloScan|http://www.haloscan.com/load/]]にアカウントを作成(無料)して利用します。\n\nテスト用ページを用意しました。試用する場合はこちらをご利用ください。\nCommentTest\n\n!マクロ配布元\nhttp://xthost.info/bram/HaloscanMacro.html\n\n
//{{{\n// HelloMacro\n// 画面に文字列を出力する\nconfig.macros.hello = {};\nconfig.macros.hello.handler = function(place,macroName,params)\n{\n createTiddlyText(place, 'Hello World!');\n}\n//}}}
TiddlyWikiは、ブラウザとHTMLファイル1個だけあれば他には何も必要ないため、インストールというほどの操作はありませんが、ここではTiddlyWikiをダウンロードしてから自分用に設定するための手順を説明します。\n\n!1.公式サイトから最新版をダウンロード\n#以下の公式サイトにブラウザでアクセスします。<br>http://www.tiddlywiki.com/\n#左のメニューから''~DownloadSoftware''を選択します\n#開いた記事の中ほどにある''this link to empty.html''を@@右クリックして保存@@します。<br>「ファイル」メニューの「名前をつけて保存」では正しく保存されません。\n!2.ファイルの配置\nダウンロードしたファイルはオリジナル版としてとっておいて、そのコピーを書き込み用に使います。empty.htmlのコピーを作成して適当なフォルダ(例.c:\swiki)に置いてください。\n\n使用ブラウザがIEの場合、ファイルのプロパティを表示し、セキュリティ:「ブロックの解除」ボタンを押してください。解除しないと更新時に内容を保存することができません([[更新内容が保存できない(IEその1)]]参照)。\n\n使用ブラウザがFirefoxの場合、このとき日本語ファイル名や日本語を含むフォルダ(\nWindowsのマイドキュメントやデスクトップを含む)を使用すると更新時に内容を保存することができません。(解決方法は[[更新内容が保存できない(Firefox)]]参照)\n!3.ブラウザで開く\nファイルをブラウザで開きます。\n''~GettingStarted''という記事があらかじめ開かれていると思います。\n!4.カスタマイズその1\n自分用のTiddlyWikiにするために以下の変更を行います。\n\n最初に''~GettingStarted''の最下段のテキストボックスに自分の名前を記入します。これはcookieに保存され、記事を書き込むときの署名に使用されます。\n\n次に''~GettingStarted''からリンクされている以下のシステム設定用記事を編集します。\n*''~SiteTitle''と''~SiteSubtitle'':ページ最上部やタイトルバーに表示されるタイトルとサブタイトル。\n\n次に右側の''options''をクリックしてオプションウィンドウを開きます。\n*安全のため''~SaveBackups''にチェックしてバックアップをとるようにします。<br>後述のバックアップフォルダを指定することで最新版とバックアップファイルとを別のフォルダにおくことができます。\n*''~AutoSave''にチェックすると、記事の更新のたびにバックアップをとります。ファイルがどんどん増え続けますが、私はこの機能を有効にしています。\n*''~EnableAnimations''は「アニメーション表現の有効/無効」です。重くなるので外しておくのがお勧めです。\n*''~AdvancedOptions''をクリックすると詳細オプション設定画面が開きます。\n詳細オプション設定画面では、以下の設定がお勧めです。\n*''~ConfirmBeforeDeleting''は「削除前に確認する」です。安全のためにチェックしておきます。\n*最下段のテキストボックスはバックアップ保存用フォルダです。ここに「''.\sbackup''」等と書いておくと最新版とは別の場所にバックアップがとられます。バックアップ保存用フォルダはあらかじめ作成しておいてください。\n!5.最初の記事の作成\n右側のメニューから''new tiddler''をクリックすると記事編集画面が表示されます。上段にタイトル。中段に本文を記述します。また、下段はカテゴリー名(タグ名)入力欄です。ここにキーワードを入れておくと後で整理しやすくなります。\n\n内容が書けたら''done''をクリックして更新します。''~AutoSave''を無効にしている場合、この更新はメモリ上に書かれるだけでファイルにはまだ保存されていません。適当なタイミングで右メニューの''save changes''をクリックしてファイルに保存してください。\n\n!6.カスタマイズその2\n記事が増えてきたら、もう一度''~GettingStarted''を開き、以下のシステム設定用記事を編集します。\n*''~MainMenu'': 左側のメインメニュー。よく使う記事へのリンクを記述します。\n*''~DefaultTiddlers'': TiddlyWikiを開いたときに最初に表示する記事(複数指定可)。\n
/***\n|''Name:''|JapaneseTranslation|\n|''Description:''|Japanese translation of TiddlyWiki messages<br>based on [[here|http://hsj.jp/works/2005/08/08/tiddlywiki_1.html]]|\n|''Version:''|1.0.1|\n|''Date:''|Nov 15, 2006|\n|''Source:''|http://www.geocities.jp/wikistyle/#JapaneseTranslation|\n|''Author:''|style|\n|''License:''|BSD open source license|\n|''~CoreVersion:''|2.1.0|\n|''Browser:''||\n***/\n\n//{{{\nif (config.options.txtUserName == "YourName")\n merge(config.options,{txtUserName: "名無しさん"});\n\nmerge(config.messages,{\n customConfigError: "プラグインロード中にエラーが発生しました。PluginManagerを参照してください",\n pluginError: "Error: %0",\n pluginDisabled: "'systemConfigDisable'タグにより無効に設定されています",\n pluginForced: "'systemConfigForce'タグにより強制的に有効になっています",\n pluginVersionError: "このプラグインを実行するためには新しいバージョンのTiddlyWikiが必要です",\n nothingSelected: "先に対象を選択してください",\n savedSnapshotError: "このTiddlyWikiファイルは正しく保存されていません。http://www.tiddlywiki.com/#DownloadSoftware を参照してください",\n subtitleUnknown: "(不明)",\n undefinedTiddlerToolTip: "'%0'という記事はありません",\n shadowedTiddlerToolTip: "'%0'という記事はありませんが、システム用に予約されています",\n tiddlerLinkTooltip: "%0 - %1, %2",\n externalLinkTooltip: "(外部リンク) %0",\n noTags: "タグの設定されていない記事",\n notFileUrlError: "セーブ機能はローカルのTiddlyWikiファイルに対してのみ使用できます",\n cantSaveError: "セーブに失敗しました。このブラウザが対応していないか(Firefox推奨)、ファイルのパス名に使用できない文字が含まれています",\n invalidFileError: "元のファイル '%0' は正常なTiddlyWikiのファイルではありません",\n backupSaved: "バックアップファイルを保存しました",\n backupFailed: "バックアップファイルの保存に失敗しました",\n rssSaved: "RSSフィードを保存しまし",\n rssFailed: "RSSフィードの保存に失敗しました",\n emptySaved: "空のテンプレートファイルを保存しました",\n emptyFailed: "空のテンプレートファイルの保存に失敗しました",\n mainSaved: "TiddlyWikiファイルを保存しました",\n mainFailed: "TiddlyWikiファイルの保存に失敗しました。修正内容は保存されていません",\n macroError: "マクロ実行時エラー: <<%0>>",\n macroErrorDetails: "マクロ実行中にエラーが発生しました。<<%0>>:\sn%1",\n missingMacro: "そのようなマクロはありません",\n overwriteWarning: "'%0'という記事はすでに存在します。OKを選択すると上書きします",\n unsavedChangesWarning: "警告! 保存されていない変更が存在します。\sn\snOKを選択:保存\snCancelを選択:編集内容を破棄",\n confirmExit: "--------------------------------\sn\sn変更が保存されていません。このまま終了すると変更内容が失われます\sn\sn--------------------------------",\n saveInstructions: "SaveChanges", // このタイトルのtiddlerを用意しておくと保存失敗時に自動的に表示される\n unsupportedTWFormat: "TiddlyWikiでサポートされていないフォーマットです '%0'",\n tiddlerSaveError: "セーブ時にエラーが発生しました '%0'",\n tiddlerLoadError: "ロード時にエラーが発生しました '%0'",\n wrongSaveFormat: "ストレージフォーマットはセーブできません '%0'. 標準フォーマットを使用してください",\n invalidFieldName: "不正なフィールド名です %0",\n fieldCannotBeChanged: "フィールド '%0' は変更できません"});\n\nmerge(config.messages.messageClose,{\n text: "閉じる",\n tooltip: "このメッセージエリアを閉じます"});\n\nconfig.messages.dates.months = ["1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月","12月"];\nconfig.messages.dates.days = ["日", "月", "火", "水", "木", "金", "土"];\nconfig.messages.dates.shortMonths = ["1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月","12月"];\nconfig.messages.dates.shortDays = ["日", "月", "火", "水", "木", "金", "土"];\n\nmerge(config.views.wikified.tag,{\n labelNoTags: "タグはありません",\n labelTags: "タグ: ",\n openTag: "タグ '%0' を開く",\n tooltip: "タグ'%0'の関連記事を表示します",\n openAllText: "全て開く",\n openAllTooltip: "これらの記事をすべて開きます",\n popupNone: "タグ'%0'はこれ以外の記事には設定されていません"});\n\nmerge(config.views.wikified,{\n defaultText: "'%0'は存在しません。ダブルクリックで作成できます",\n defaultModifier: "(未定義)",\n shadowModifier: "(システム)",\n createdPrompt: "作成日"});\n\nmerge(config.views.editor,{\n tagPrompt: "下段にはスペース区切りでタグ名を入力します。スペースを含むタグ名は[[括弧で 囲みます]]。また、既存タグ名からの選択も可能です。»",\n defaultText: "'%0'の内容を入力してください"});\n\nmerge(config.views.editor.tagChooser,{\n text: "タグ",\n tooltip: "既存のタグから追加するものを選択してください",\n popupNone: "タグが設定されていません",\n tagTooltip: "タグ'%0'を追加します"});\n\nmerge(config.macros.search,{\n label: "検索",\n prompt: "このTiddlyWiki内を検索します",\n accessKey: "F",\n successMsg: "%0 件見つかりました。- %1",\n failureMsg: "%0 に該当する記事はありません"});\n\nmerge(config.macros.tagging,{\n label: "タグ",\n labelNotTag: "タグなし",\n tooltip: "タグ'%0'のついた記事一覧"});\n\nmerge(config.macros.timeline,{\n dateFormat: "YYYY年MM月DD日"});\n\nmerge(config.macros.allTags,{\n tooltip: "タグ'%0'のついた記事を全て表示します",\n noTags: "タグが設定されていません"});\n\nconfig.macros.list.all.prompt = "アルファベット順の記事一覧";\nconfig.macros.list.missing.prompt = "存在しない記事一覧";\nconfig.macros.list.orphans.prompt = "リンクされていない記事一覧";\nconfig.macros.list.shadowed.prompt = "システム設定用記事一覧";\n\nmerge(config.macros.closeAll,{\n label: "全て閉じる",\n prompt: "編集中以外の全ての記事を閉じます"});\n\nmerge(config.macros.permaview,{\n label: "ビューのURL",\n prompt: "現在の表示状態を示すURLをアドレス欄に表示します"});\n\nmerge(config.macros.saveChanges,{\n label: "保存",\n prompt: "すべての記事を保存します",\n accessKey: "S"});\n\nmerge(config.macros.newTiddler,{\n label: "新規作成",\n prompt: "新しい記事を作成します",\n title: "新規記事",\n accessKey: "N"});\n\nmerge(config.macros.newJournal,{\n label: "新規日記",\n prompt: "新しい記事を現在の日付をタイトルとして作成します",\n accessKey: "J"});\n\nmerge(config.macros.plugins,{\n skippedText: "(無効:追加後にリロードされていません)",\n noPluginText: "プラグインがひとつもインストールされていません",\n confirmDeleteText: "本当にこれらの記事を削除しますか?:\sn\sn%0",\n listViewTemplate : {\n columns: [\n {name: 'Selected', field: 'Selected', rowName: 'title', type: 'Selector'},\n {name: 'Title', field: 'title', tiddlerLink: 'title', title: "タイトル", type: 'TiddlerLink'},\n {name: 'Forced', field: 'forced', title: "強制ロード", tag: 'systemConfigForce', type: 'TagCheckbox'},\n {name: 'Disabled', field: 'disabled', title: "無効", tag: 'systemConfigDisable', type: 'TagCheckbox'},\n {name: 'Executed', field: 'executed', title: "ロード", type: 'Boolean', trueText: "済", falseText: "未"},\n {name: 'Error', field: 'error', title: "ロード結果", type: 'Boolean', trueText: "Error", falseText: "OK"},\n {name: 'Log', field: 'log', title: "説明", type: 'StringList'}\n ],\n rowClasses: [\n {className: 'error', field: 'error'},\n {className: 'warning', field: 'warning'}\n ],\n actions: [\n {caption: "(処理の選択)", name: ''},\n {caption: "指定記事からsystemConfigタグを削除", name: 'remove'},\n {caption: "指定記事を永久に削除", name: 'delete'}\n ]}\n });\n\nmerge(config.macros.refreshDisplay,{\n label: "再描画",\n prompt: "TiddlyWiki画面を再描画します"\n });\n\nmerge(config.macros.importTiddlers,{\n defaultPath: "http://www.tiddlywiki.com/index.html",\n fetchLabel: "記事一覧取得",\n fetchPrompt: "指定したTiddlyWikiファイルから記事一覧を取得します",\n fetchError: "記事一覧取得処理中にエラーが発生しました",\n confirmOverwriteText: "記事の内容を上書きしますか?:\sn\sn%0",\n wizardTitle: "記事のインポート",\n step1: "ステップ1: インポート元TiddlyWikiファイルの指定",\n step1prompt: "URLまたはパス名の入力: ",\n step1promptFile: "またはファイル参照: ",\n step1promptFeeds: "または定義済フィードから選択: ",\n step1feedPrompt: "(選択)",\n step2: "ステップ2: TiddlyWikiファイルの読み込み",\n step2Text: "ファイルを読み込んでいます。しばらくお待ちください: %0",\n step3: "ステップ3: インポート対象記事の選択",\n step4: "%0 個の記事がインポートされました",\n step5: "インポート完了",\n listViewTemplate: {\n columns: [\n {name: 'Selected', field: 'Selected', rowName: 'title', type: 'Selector'},\n {name: 'Title', field: 'title', title: "タイトル", type: 'String'},\n {name: 'Snippet', field: 'text', title: "内容", type: 'String'},\n {name: 'Tags', field: 'tags', title: "タグ", type: 'Tags'}\n ],\n rowClasses: [\n ],\n actions: [\n {caption: "(処理の選択)", name: ''},\n {caption: "マークした記事をインポートする", name: 'import'}\n ]}\n });\n\nmerge(config.commands.closeTiddler,{\n text: "閉じる",\n tooltip: "この記事を閉じます"});\n\nmerge(config.commands.closeOthers,{\n text: "他を閉じる",\n tooltip: "この記事以外を全て閉じます"});\n\nmerge(config.commands.editTiddler,{\n text: "編集",\n tooltip: "この記事を編集します",\n readOnlyText: "表示",\n readOnlyTooltip: "この記事のソースを表示します"});\n\nmerge(config.commands.saveTiddler,{\n text: "決定",\n tooltip: "編集内容を確定します"});\n\nmerge(config.commands.cancelTiddler,{\n text: "取消",\n tooltip: "編集内容を破棄します",\n warning: "編集内容を破棄しますか '%0'?",\n readOnlyText: "終了",\n readOnlyTooltip: "通常表示に戻ります"});\n\nmerge(config.commands.deleteTiddler,{\n text: "削除",\n tooltip: "この記事を削除します",\n warning: "本当にこの記事を削除しますか '%0'?"});\n\nmerge(config.commands.permalink,{\n text: "記事のURL",\n tooltip: "この記事を示すURLをアドレス欄に表示します"});\n\nmerge(config.commands.references,{\n text: "リンク元",\n tooltip: "この記事にリンクしている記事一覧を表示します",\n popupNone: "リンクされていません"});\n\nmerge(config.commands.jump,{\n text: "ジャンプ",\n tooltip: "表示中の他の記事へ移動します"});\n\nmerge(config.shadowTiddlers,{\n DefaultTiddlers: "GettingStarted",\n MainMenu: "GettingStarted",\n SiteTitle: "My TiddlyWiki",\n SiteSubtitle: "a reusable non-linear personal web notebook",\n SiteUrl: "http://www.tiddlywiki.com/",\n GettingStarted: "TiddlyWikiを開始するためには、まず以下のシステム設定用記事を編集してください:\sn*SiteTitleとSiteSubtitle: このページのタイトル、サブタイトル。また、セーブ後はブラウザのタイトルバーにも表示されます。\sn*MainMenu: 通常左側に表示されるメインメニュー\sn*DefaultTiddlers: このTiddlyWikiを開いたときに最初に表示する記事。\sn署名として使用するあなたの名前を入力してください:<<option txtUserName>>",\n SideBarOptions: "<<search>><<closeAll>><<permaview>><<newTiddler>><<newJournal 'YYYY年MM月DD日'>><<saveChanges>><<slider chkSliderOptionsPanel OptionsPanel '設定 »' 'Change TiddlyWiki advanced options'>>",\n OptionsPanel: "これらのインタフェース設定はご使用のブラウザ内に保存されます。\sn\sn署名として使用するあなたの名前をWikiWord形式(例 JoeBloggs)で入力してください。\sn\sn<<option txtUserName>>\sn<<option chkSaveBackups>> バックアップ取得\sn<<option chkAutoSave>> 自動保存\sn<<option chkRegExpSearch>> 正規表現による検索\sn<<option chkCaseSensitiveSearch>> 英文字大小区別検索\sn<<option chkAnimate>> アニメーション\sn\sn----\sn[[詳細設定|AdvancedOptions]]\sn[[プラグインマネージャ|PluginManager]]\sn[[記事のインポート|ImportTiddlers]]",\n AdvancedOptions: "<<option chkGenerateAnRssFeed>> RSSフィード生成\sn<<option chkOpenInNewWindow>> 新しいウィンドウでリンクを開く\sn<<option chkSaveEmptyTemplate>> 空のテンプレートファイル(empty.html)を保存する\sn<<option chkToggleLinks>> 既に開いている記事をクリックした時に閉じる\sn^^(Ctrl+クリック等のキーアサインを変更します)^^\sn<<option chkHttpReadOnly>> HTTP経由でのアクセス時に編集機能を隠す\sn<<option chkForceMinorUpdate>> マイナーチェンジモードをデフォルトとする\sn^^(Shift+'決定'やCtrl-Shift-Enterのキーアサインを変更します)^^\sn<<option chkConfirmDelete>> 削除前に確認する\sn記事編集エディットボックスの高さ: <<option txtMaxEditRows>>\snバックアップ保存用フォルダ: <<option txtBackupFolder>>\sn<<option chkInsertTabs>> タブキーをタブ文字入力用に使用する(デフォルトではフィールド移動)",\n SideBarTabs: "<<tabs txtMainTab '更新順' '更新順に表示する' TabTimeline '全て' '全ての記事一覧' TabAll 'タグ' 'タグ一覧' TabTags 'その他' 'その他の記事' TabMore>>",\n TabTimeline: "<<timeline>>",\n TabAll: "<<list all>>",\n TabTags: "<<allTags>>",\n TabMore: "<<tabs txtMoreTab '未定義' 'リンクされているが存在しない記事一覧' TabMoreMissing '未参照' 'どこからもリンクされていない記事一覧' TabMoreOrphans 'システム' 'システム設定用記事一覧' TabMoreShadowed>>",\n TabMoreMissing: "<<list missing>>",\n TabMoreOrphans: "<<list orphans>>",\n TabMoreShadowed: "<<list shadowed>>",\n PluginManager: "<<plugins>>",\n ImportTiddlers: "<<importTiddlers>>"});\n\n//-----------------------------------------\n\nmerge(config.shadowTiddlers, {\n ViewTemplate: "<!--{{{-->\sn<div class='toolbar' macro='toolbar closeTiddler closeOthers +editTiddler permalink references jump'></div>\sn<div class='title' macro='view title'></div>\sn<div class='subtitle'><span macro='view modifier link'></span>, <span macro='view modified date [[YYYY年0MM月0DD日]]'></span> (<span macro='message views.wikified.createdPrompt'></span> <span macro='view created date [[YYYY年0MM月0DD日]]'></span>)</div>\sn<div class='tagging' macro='tagging'></div>\sn<div class='tagged' macro='tags'></div>\sn<div class='viewer' macro='view text wikified'></div>\sn<div class='tagClear'></div>\sn<!--}}}-->"});\n\n//}}}\n
\n!公式サイト(英語)\n(一般)\n~TiddlyWiki\n http://www.tiddlywiki.com/\n~TiddlyWiki Google Group\n http://groups-beta.google.com/group/TiddlyWiki\n(開発)\n~TiddlyWiki.org\n http://trac.tiddlywiki.org/tiddlywiki\n~TiddlyWikiDev Google Group\n http://groups-beta.google.com/group/TiddlyWikiDev\n\n!Tips(英語)\n~TiddlyWikiTips.com\n http://tiddlywikitips.com/\n\n!日本語解説サイト\n~TiddlyWikiのススメ\n http://hsj.jp/junknews/archives/tiddlywiki_susume.html\n~MemoWiki\n http://flow.dip.jp/mt/archives/u/twmemo.html\n~TiddlyWiki\n http://watcher.moe-nifty.com/memo/2005/09/tiddlywiki__f8c6.html\n素敵な~TiddlyWiki - カスタマイズノート 第2版\n http://www.potto.client.jp/\n~TiddlyWiki関連リンク集:パンパでガウチョ\n http://blog.livedoor.jp/kyorecoba/archives/26481931.html\n各種メモ - tsupo の第5のメモ\n http://www.na.rim.or.jp/~tsupo/wiki/\n~WikiSample\n http://www1.tcnet.ne.jp/leo/Files/TiddlyWiki/TiddlyWiki.html\n\n!その他\nフリー画像素材 ~EyesPic\n http://eyes-art.com/pic/\n このサイトの画像はこちらの素材を使用させていただいています。
//{{{\n// ListTag\n// FAQ作成等に便利なタグ指定リスト作成マクロ\n//\n// {{{<<list tag FAQ FAQ一覧>>}}}と書くと、「FAQ」タグのついたtiddlerのタイトル一覧を表示する\n//\nconfig.macros.list.tag = {};\nconfig.macros.list.org_handler = config.macros.list.handler;\nconfig.macros.list.handler = function(place,macroName,params)\n{\n var type = params[0] ? params[0] : "all";\n if (type == "tag") {\n this[type].prompt = params[2];\n }\n config.macros.list.org_handler(place,macroName,params);\n}\n\nconfig.macros.list.tag.handler = function(params) { \n return store.getTaggedTiddlers(params[1], "title");\n};\n//}}}
\n!説明\n引数で指定したタグがついた記事を一覧表示します。\nFAQの目次作成を自動化したくて作りました。\n!書式\n{{{\n<<list tag タグ名 タイトル>>\n}}}\n!使用例\n{{{\n<<list tag 組込マクロ 組込マクロ一覧>>\n}}}\n<<list tag 組込マクロ 組込マクロ一覧>>\n!ソース\n<<tiddler ListTagMacro>>
//{{{\n// MDump (Macro Dump)\n// マクロが出力するHTMLソースの表示\nconfig.macros.mdump = {};\nconfig.macros.mdump.handler = function(place,macroName,params)\n{\n var w = document.createElement('span');\n var m = config.macros[params[0]];\n\n if (m && m.handler) {\n m.handler(w, params[0], params.slice(1));\n\n var text = w.innerHTML;\n text = text.replace(/</g,"\sr<");\n text = text.replace(/>/g,">\sr");\n text = text.replace(/^\sr+/gm,"");\n if(config.browser.isIE)\n text = text.replace(/\sn/gm,"\sr");\n\n createTiddlyElement(place,"pre",null,null,text);\n }\n}\n//}}}
\n!概要\nマクロとはTiddlyWikiの機能拡張方法のひとつで、{{{<<マクロ名 引数>>}}}という書式で利用することができるものです。\n!組込マクロ\nTiddlyWikiは、あらかじめ多くのマクロが用意されており、記事のツールバー、サイドメニュー、タブ表示などはマクロで実現されています。またユーザが利用できるマクロとして以下のようなものが用意されています。\n<<list tag 組込マクロ 組込マクロ>>\n!自作マクロ他\nその他にもこのサイトで利用している追加用マクロを紹介します。\n<<list tag Macro_ 自作マクロ他>>\n!マクロ作成ガイド\nマクロを作成する場合は、以下の解説記事を参考にしてください。\n<<list tag Macro作成 マクロ作成ガイド>>\n参考:[[セーフモード]]
[[TopPage]]\n[[TiddlyWikiとは|TiddlyWiki]]\n[[インストール方法|Install]]\n[[書式]]\n[[Tips]]\n[[FAQ]]\n[[マクロ|Macro]]\n[[ショートカットキー|ショートカットキー一覧]]\n[[リンク|Link]]\n\n^^[[RSSについて|RSS]]^^\n\n^^TiddlyWiki version <<version>>^^\n© 2006 [[osmosoft|http://www.osmosoft.com]]\n
/***\n\n!~MontaMethodMacro - もんたメソッド\n''説明''\n最近、読んだ本や勉強した内容をTiddlyWikiにメモとして残して\nおくことが多くなりました。こうしたメモに対して「もんたメソッド」が\n使えると記憶に残りやすいのではないかと思って作りました。\n\n''もんたメソッドとは''\nプレゼンテーションにおいて、あらかじめテキストの\n一部を<<monta "隠しておき">>(←クリックしてください)、後から\n見せることによって$$内容を強調$$する技法。\n\n$$とある有名司会者がこの手法を多用して分かりやすく\n飽きさせない説明を得意とすること$$に由来する。\n\n(参考)\nhttp://d.hatena.ne.jp/keyword/%A4%E2%A4%F3%A4%BF%A5%E1%A5%BD%A5%C3%A5%C9?kid=113456\n\n''インストール''\n この記事の内容をペースト、systemConfigタグを付けて保存、リロード。\n\n''書式''\n  &#60;&#60;monta "テキスト"&#62;&#62;\n または\n  &#36;&#36;テキスト&#36;&#36;\n\n----\n''ソースコード''\n***/\n//{{{\nconfig.macros.monta = {\n showColor: "#000088",\n showBgColor: "",\n hideColor: "#ddcc55"\n};\n\nconfig.macros.monta.handler = function(place,macroName,params,wikifier)\n{\n var e = createTiddlyElement(place, 'span', null, null, params[0]);\n this.init(e);\n};\n\nconfig.macros.monta.onClick = function(tgt)\n{\n if (!tgt) {\n var event = window.event;\n tgt = resolveTarget(event);\n }\n\n var m = config.macros.monta;\n if (tgt.getAttribute("param") == "show") {\n tgt.style.color = m.hideColor;\n tgt.style.backgroundColor = m.hideColor;\n tgt.setAttribute("param", "hide");\n } else {\n tgt.style.color = m.showColor;\n tgt.style.backgroundColor = m.showBgColor;\n tgt.setAttribute("param", "show");\n }\n\n return false;\n};\n\nconfig.macros.monta.init = function(e)\n{\n var m = config.macros.monta;\n\n e.onclick = config.macros.monta.onClick;\n e.setAttribute("onClick","config.macros.monta.onClick(this);");\n e.setAttribute("param","hide");\n e.style.color = m.hideColor;\n e.style.backgroundColor = m.hideColor;\n};\n\nconfig.formatters.push(\n{\n name: "monta",\n match: "\s\s$\s\s$",\n terminator: "\s\s$\s\s$",\n handler: function(w)\n {\n var e = createTiddlyElement(w.output, 'span');\n w.subWikify(e, this.terminator);\n config.macros.monta.init(e);\n }\n});\n\n//}}}\n
/***\n|!Name|TWSaveSJPathPatch|\n|!Created by|Zephyr (FURUKAWA, Masashi)|\n|!Location|http://flow.dip.jp/mt/archives/u/twmemo.html#TWSaveSJPathPatch|\n|!Version|0.1.0|\n|!Requires|~TW2.0.5-|\n\n!説明(Description)\nTiddlyWikiの保存Path名に全角を使用した際、Windows上のFirefoxで保存できない現象へのパッチ・プラグインです。\nTiddlyWikiのバージョン2.0.5以降が必要です。\nIt's a patch plugin for TiddlyWiki saving problem when using 2-byte character path name on Firefox in Windows.\nIt's requires TiddlyWiki version 2.0.5 or later.\n\n!使い方(Usage)\n新しいtiddlerに、このtiddlerの内容をコピーし、タグに'systemConfig'を付けて保存し、再読み込みします。\nMake new tiddler, copy this contents, put a tag 'systemConfig', save and reload.\n\n!履歴(History)\n* 2006 Apr 22, version 0.1.0 test release\n\n!注意(Notes)\nこのパッチは日本語WindowsとFirefoxの環境以外では意味ありません。\nThis patch have an effect only for Firefox and Windows/Japanese environment.\n\n!参考(References)\n[[XULPlanet.com: Interface Reference - nsIUTF8ConverterService|http://xulplanet.com/references/xpcomref/ifaces/nsIUTF8ConverterService.html]]\n[[XulPlanet-JP: XUL チュートリアル - XPCOM インターフェース|http://xul-app.hp.infoseek.co.jp/xultu-janit/xpcom.html]]\nand TiddlyWiki source code.\n\n!Code\n***/\n/*{{{*/\njavascript:(\n function() {\n if (window.netscape) {\n var orig_getLocalPath = getLocalPath;\n getLocalPath = hook_getLocalPath;\n }\n\n function hook_getLocalPath(originalPath) {\n return orig_getLocalPath(mozConvertSJISURIToUTF8(originalPath));\n }\n\n function mozConvertSJISURIToUTF8(s) {\n if (window.netscape == undefined)\n return s;\n try {\n netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");\n }\n catch(e) {\n return s;\n }\n var cvtsv = Components.classes["@mozilla.org/intl/utf8converterservice;1"].getService(Components.interfaces.nsIUTF8ConverterService);\n var u = cvtsv.convertURISpecToUTF8(s, "Shift_JIS");\n return u;\n }\n }\n)();\n/*}}}*/\n
/* change "YourName" to your Haloscan account name */\nconfig.macros.haloscan = {account: "wikistyle", baseURL: "http://www.haloscan.com/load/"};\n\nvar haloscanLoaded = 0;\nconfig.macros.haloscan.load = function ()\n{\n if (haloscanLoaded == 1)\n return;\n \n account = config.macros.haloscan.account;\n if (!account || (account == "YourName"))\n account = store.getTiddlerText("SiteTitle");\n \n var el = document.createElement('script');\n el.language = 'JavaScript'; \n el.type = 'text/javascript'; \n el.src = config.macros.haloscan.baseURL + account;\n document.documentElement.childNodes[0].appendChild(el);\n \n haloscanLoaded = 1;\n}\nconfig.macros.haloscan.load();\n\n/* this totally clobbers document.write, i hope that's ok */\nvar safeWrite = function(s)\n{\n document.written = s;\n return s;\n};\ndocument.write = safeWrite;\n\nconfig.macros.haloscan.refreshDefaultTiddlers = function ()\n{\n var start = store.getTiddlerText("DefaultTiddlers");\n if (start)\n {\n var titles = start.readBracketedList();\n for (var t=titles.length-1; t>=0; t--)\n story.refreshTiddler(titles[t], DEFAULT_VIEW_TEMPLATE, 1);\n }\n}\n\nvar haloscanRefreshed = 0;\nconfig.macros.haloscan.handler = function (place, macroName, params, wikifier, paramString, tiddler)\n{\n if (typeof HaloScan == 'undefined')\n {\n if (haloscanRefreshed == 0)\n {\n setTimeout("config.macros.haloscan.refreshDefaultTiddlers()", 1);\n haloscanRefreshed = 1;\n }\n return;\n }\n \n var id = story.findContainingTiddler(place).id.substr(7);\n var hs_search = new RegExp('\s\sW','gi');\n id = id.replace(hs_search,"_");\n \n account = config.macros.haloscan.account;\n if (!account || (account == "YourName"))\n account = store.getTiddlerText("SiteTitle");\n \n var haloscanError = function (msg)\n {\n createTiddlyError(place, config.messages.macroError.format(["HaloscanMacro"]), config.messages.macroErrorDetails.format(["HaloscanMacro", msg]));\n }\n \n if (params.length == 1)\n {\n if (params[0] == "comments")\n {\n postCount(id);\n commentsLabel = document.written;\n commentsPrompt = "Comments on this tiddler";\n var commentsHandler = function(e) { HaloScan(id); return false; };\n var commentsButton = createTiddlyButton(place, commentsLabel, commentsPrompt, commentsHandler);\n }\n else if (params[0] == "trackbacks")\n {\n postCountTB(id);\n trackbacksLabel = document.written;\n trackbacksPrompt = "Trackbacks for this tiddler";\n var trackbacksHandler = function(e) { HaloScanTB(id); return false; };\n var trackbackButton = createTiddlyButton(place, trackbacksLabel, trackbacksPrompt, trackbacksHandler);\n }\n else\n haloscanError("unknown parameter: " + params[0]);\n }\n else if (params.length == 0)\n haloscanError("missing parameter");\n else\n haloscanError("bad parameter count");\n}\n
これらの設定はご使用のブラウザ内に保存されます。\n\n署名として使用するあなたの名前をWikiWord形式(例 JoeBloggs)で入力してください。\n\n<<option txtUserName>>\n<<option chkSaveBackups>> バックアップ取得\n<<option chkAutoSave>> 自動保存\n<<option chkRegExpSearch>> 正規表現による検索\n<<option chkCaseSensitiveSearch>> 英文字大小区別検索\n<<option chkAnimate>> アニメーション\n\n<<saveMyEmpty>>\n\n[[詳細な設定|AdvancedOptions]]
<div class='header' macro='gradient vert #4fb #082'>\n<div class='headerShadow'>\n<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;\n<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>\n</div>\n<div class='headerForeground'>\n<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;\n<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>\n</div>\n</div>\n<div id='mainMenu' refresh='content' tiddler='MainMenu'></div>\n<div id='sidebar'>\n<div id='sidebarOptions' refresh='content' tiddler='SideBarOptions'></div>\n<div id='sidebarTabs' refresh='content' force='true' tiddler='SideBarTabs'></div>\n</div>\n<div id='displayArea'>\n<div id='messageArea'></div>\n<div id='tiddlerDisplay'></div>\n</div>
/***\n\n ~PortableOptionsPlugin - ファイルごとに設定を記録するプラグイン\n\n''説明''\n ~TiddlyWikiのオプション設定はCookieに保存されます。これはこれで\n 便利なのですが、以下のような問題もあります。\n ・同一PC上のローカル~TiddlyWikiファイルはすべて同じ設定になってしまう\n ・~TiddlyWikiファイルを持ち運んで別のPCで使用したとき設定が引き継がれない\n\n そこでローカルファイルの場合Cookieへの保存/読込関数をフックして、\n Cookieの代わりにTiddlerに設定を記録するプラグインを作成しました。\n\n このプラグインをインストールすると「Cookies」という名前の設定保存用Tiddler\n が作成され、次回の起動時からはそこから設定が読み込まれるようになります。\n オプションを変更するたびに設定保存用Tiddlerの内容が自動更新されます。\n\n 注.\n ・httpプロトコル経由で開いているファイルは通常通りCookieに設定が保存されます\n ・設定保存用Tiddlerが自動更新されても変更フラグは立ちません\n ・設定保存用Tiddlerが自動更新されても更新日は変更されません\n\n''インストール''\n この記事の内容をペースト、systemConfigタグを付けて保存、リロード。\n***/\n//{{{\nconfig.portableOptions = {\n setModifyFlag: false,\n updateModifyDate: false,\n title: "Cookies"\n};\n\njavascript:(\n function() {\n if (window.location.protocol == "file:") {\n loadOptionsCookie = loadOptionsPortableCookie;\n saveOptionCookie = saveOptionPortableCookie;\n loadOptionsCookie();\n }\n\n function loadOptionsPortableCookie()\n {\n if(safeMode)\n return;\n var cookies;\n if (!store.tiddlerExists(config.portableOptions.title)) {\n saveOptionPortableCookie();\n }\n cookies = store.getTiddlerText(config.portableOptions.title).split(";\sn");\n\n for(var c=0; c<cookies.length; c++)\n {\n var p = cookies[c].indexOf("=");\n if(p != -1)\n {\n var name = cookies[c].substr(0,p).trim();\n var value = cookies[c].substr(p+1).trim();\n switch(name.substr(0,3))\n {\n case "txt":\n config.options[name] = unescape(value);\n break;\n case "chk":\n config.options[name] = value == "true";\n break;\n }\n }\n }\n }\n\n function saveOptionPortableCookie(name)\n {\n if(safeMode)\n return;\n\n var cookies;\n if (store.tiddlerExists(config.portableOptions.title))\n cookies = store.getTiddlerText(config.portableOptions.title).split(";\sn");\n else\n cookies = document.cookie.split(";");\n\n if (name) {\n var c = name + "=";\n switch(name.substr(0,3)) {\n case "txt":\n c += escape(config.options[name].toString());\n break;\n case "chk":\n c += config.options[name] ? "true" : "false";\n break;\n }\n for (var i=0; i<cookies.length; i++) {\n var p = cookies[i].indexOf("=");\n if(p != -1) {\n var key = cookies[i].substr(0,p).trim();\n if (key == name) {\n cookies.splice(i, 1);\n break;\n }\n }\n }\n cookies.push(c);\n }\n\n var text = cookies.join(";\sn");\n var modified = config.portableOptions.updateModifyDate ? new Date() : undefined;\n saveTiddlerWithoutNotify(config.portableOptions.title, config.portableOptions.title,\n text, config.options.txtUserName, modified);\n }\n\n function saveTiddlerWithoutNotify(title,newTitle,newBody,modifier,modified,tags)\n {\n var tiddler = store.fetchTiddler(title);\n var created;\n if(tiddler)\n {\n created = tiddler.created; // preserve created date\n store.deleteTiddler(title);\n }\n else\n {\n tiddler = new Tiddler();\n created = modified;\n }\n tiddler.set(newTitle,newBody,modifier,modified,tags,created);\n store.addTiddler(tiddler);\n if (config.portableOptions.setModifyFlag)\n store.setDirty(true);\n return tiddler;\n }\n\n }\n\n)();\n\n//}}}\n
このサイトのRSSフィードは以下の場所にありますが、日本語タイトルの記事に対応していないため、あまり使い物になりません。更新あり/なしの判定だけなら使えます。\n\nhttp://www.geocities.jp/wikistyle/index.xml
/***\n使用方法\n#新規Tiddlerに、このTiddlerの内容をペースト\n#systemConfigタグをつけて保存してからリロード\n#以下の置換設定フォームに、検索文字列、置換文字列を入力してExecuteボタンを押す\n----\n<<replaceTag>>\n----\n注.\n*オートセーブを有効にしていても、一括置換実行後の変更内容は''自動保存されません''。安全のためにそのような仕様にしています。置換が想定どおりに行われていることを十分確認の上、save changesで明示的に保存してください。置換に失敗していたら、リロードすることで置換前の状態に戻ります。\n*検索は完全一致で行います。「Wiki」で検索しても「~TiddlyWiki」タグはマッチしません。正規表現//regex//を指定した場合も''^''//regex//''$''のように先頭記号と終端記号を付加してから検索を行います。部分一致で検索すると予期せぬ置換をしてしまう可能性が高いため、このような仕様にしています。\n*正規表現では、置換後文字列に$1、$2、$3 ...が使用できます。\n  例\n   検索文字列: {{{NG([0-9][0-9])}}}\n   置換文字列: {{{OK$1}}}\n     の場合、以下のように置換される\n   置換前タグ: {{{NG01 NG02 NG03}}}\n   置換後タグ: {{{OK01 OK02 OK03}}}\n***/\n\n//{{{\nconfig.macros.replaceTag = {};\n\nconfig.macros.replaceTag.handler = function(place,macroName,params)\n{\n var input;\n\n createTiddlyText(place, "Search: ");\n var input = document.createElement("input");\n input.setAttribute("param","src");\n input.size = 20;\n place.appendChild(input);\n createTiddlyElement(place, "br");\n\n createTiddlyText(place, "Replace: ");\n input = document.createElement("input");\n input.setAttribute("param","dst");\n input.size = 20;\n place.appendChild(input);\n createTiddlyElement(place, "br");\n\n createTiddlyText(place, "Regular Expression: ");\n input = document.createElement("input");\n input.setAttribute("type","checkbox");\n input.setAttribute("param","regex");\n place.appendChild(input);\n createTiddlyElement(place, "br");\n createTiddlyElement(place, "br");\n\n btn = createTiddlyButton(place, "Execute", "start replace tag strings", this.onClick);\n\n}\n\nconfig.macros.replaceTag.onClick = function()\n{\n var srcStr = "";\n var dstStr = "";\n var isRegex = false;\n\n var children = this.parentNode.getElementsByTagName("input")\n for (var t=0; t<children.length; t++) {\n var type = children[t].getAttribute("param");\n if (type == "src")\n srcStr = children[t].value;\n else if (type == "dst")\n dstStr = children[t].value;\n else if (type == "regex")\n if (children[t].checked)\n isRegex = true;\n }\n\n if ((srcStr != "") && (dstStr != "")) {\n var cnt;\n if (isRegex)\n cnt = config.macros.replaceTag.executeReplaceRegex(srcStr, dstStr);\n else\n cnt = config.macros.replaceTag.executeReplace(srcStr, dstStr);\n alert(String(cnt) + " tiddlers replaced. Save changes if you need.");\n }\n}\n\nconfig.macros.replaceTag.executeReplace = function(srcStr, dstStr)\n{\n var cnt = 0;\n store.forEachTiddler(function(title,tiddler) {\n var tiddlerTags = tiddler.tags ? tiddler.tags : [];\n if ((p = tiddlerTags.find(srcStr)) != null) {\n tiddlerTags.splice(p, 1, dstStr);\n tiddler.set(null, null, null, null, tiddlerTags);\n cnt++;\n }\n });\n return cnt;\n}\n\nconfig.macros.replaceTag.executeReplaceRegex = function(srcRegex, dstStr)\n{\n var cnt = 0;\n store.forEachTiddler(function(title,tiddler) {\n for(var t=0; t<tiddler.tags.length; t++) {\n if(tiddler.tags[t].match(srcRegex)) {\n tiddler.tags[t] = eval('tiddler.tags[t].replace(/^' + srcRegex + '$/,"' + dstStr + '");');\n tiddler.set(null, null, null, null, tiddler.tags);\n cnt++;\n }\n }\n });\n return cnt;\n}\n//}}}\n
//{{{\nconfig.macros.saveMyEmpty = {\n tag: "myEmpty",\n filename: "myempty.html",\n label: "設定済み空ファイル保存",\n prompt: "設定済み空ファイルを保存する",\n message: "設定済み空ファイルを保存しました"\n};\n\nconfig.macros.saveMyEmpty.handler = function(place)\n{\n if (!readOnly)\n createTiddlyButton(place,this.label,this.prompt,this.onClick,null,null,null);\n}\n\nconfig.macros.saveMyEmpty.onClick = function(e)\n{\n saveMyEmpty();\n return false;\n}\n\nfunction taggedTiddlersAsHtml()\n{\n var savedTiddlers = [];\n var tiddlers = store.reverseLookup("tags", config.macros.saveMyEmpty.tag, true, "title");\n for (var t = 0; t < tiddlers.length; t++)\n savedTiddlers.push(tiddlers[t].saveToDiv());\n return savedTiddlers.join("\sn");\n}\n\nfunction saveMyEmpty()\n{\n clearMessage();\n // Get the URL of the document\n var originalPath = document.location.toString();\n // Check we were loaded from a file URL\n if(originalPath.substr(0,5) != "file:")\n {\n alert(config.messages.notFileUrlError);\n if(store.tiddlerExists(config.messages.saveInstructions))\n displayTiddler(null,config.messages.saveInstructions);\n return;\n }\n var localPath = getLocalPath(originalPath);\n // Load the original file\n var original = loadFile(localPath);\n if(original == null)\n {\n alert(config.messages.cantSaveError);\n if(store.tiddlerExists(config.messages.saveInstructions))\n displayTiddler(null,config.messages.saveInstructions);\n return;\n }\n // Locate the storeArea div's\n var posOpeningDiv = original.indexOf(startSaveArea);\n var posClosingDiv = original.lastIndexOf(endSaveArea);\n if((posOpeningDiv == -1) || (posClosingDiv == -1))\n {\n alert(config.messages.invalidFileError.format([localPath]));\n return;\n }\n // Save new file\n var emptyPath,p;\n if((p = localPath.lastIndexOf("/")) != -1)\n emptyPath = localPath.substr(0,p) + "/" + config.macros.saveMyEmpty.filename;\n else if((p = localPath.lastIndexOf("\s\s")) != -1)\n emptyPath = localPath.substr(0,p) + "\s\s" + config.macros.saveMyEmpty.filename;\n else\n emptyPath = localPath + "." + config.macros.saveMyEmpty.filename;\n\n var revised = original.substr(0,posOpeningDiv + startSaveArea.length) + \n convertUnicodeToUTF8(taggedTiddlersAsHtml()) + "\sn\st\st" +\n original.substr(posClosingDiv);\n var newSiteTitle = convertUnicodeToUTF8((wikifyPlain("SiteTitle") + " - " + wikifyPlain("SiteSubtitle")).htmlEncode());\n revised = revised.replaceChunk("<title"+">","</title"+">"," " + newSiteTitle + " ");\n revised = revised.replaceChunk("<!--PRE-HEAD-START--"+">","<!--PRE-HEAD-END--"+">","\sn" + store.getTiddlerText("MarkupPreHead","") + "\sn");\n revised = revised.replaceChunk("<!--POST-HEAD-START--"+">","<!--POST-HEAD-END--"+">","\sn" + store.getTiddlerText("MarkupPostHead","") + "\sn");\n revised = revised.replaceChunk("<!--PRE-BODY-START--"+">","<!--PRE-BODY-END--"+">","\sn" + store.getTiddlerText("MarkupPreBody","") + "\sn");\n revised = revised.replaceChunk("<!--POST-BODY-START--"+">","<!--POST-BODY-END--"+">","\sn" + store.getTiddlerText("MarkupPostBody","") + "\sn");\n var save = saveFile(emptyPath,revised);\n if(save)\n {\n displayMessage(config.macros.saveMyEmpty.message,"file://" + emptyPath);\n store.setDirty(false);\n }\n else\n alert(config.messages.mainFailed);\n}\n//}}}\n
\n!説明\nAdvancedOptionsには、empty.htmlを保存するオプションがありますが、これで保存されるファイルはダウンロードしたときと同じ全くtiddlerがない状態のHTMLファイルであり、自分でカスタマイズした内容は反映されていません。そこで、レイアウト、配色、各種基本プラグイン等といった、カスタマイズ項目のみを含んだ状態の空ファイルを保存するマクロを作成しました。このマクロを使うことで、はじめから自分用に使いやすい状態に設定されているテンプレートファイルを生成することができます。\n\n!使用方法\n#SaveMyEmptyMacroを新規tiddlerにペーストして「systemConfig」タグを付加します\n#マクロを有効にするために、保存してから一度リロードします\n#設定済み空ファイルに保存したいtiddlerに「myEmpty」のタグを付加します。PageTemplate、StyleSheetColors、StyleSheetLayout、[[日本語化パッチ|Opt02:日本語メッセージ]]などのtiddlerに付加するのがお勧めです\n#以下のようにして設定済み空ファイル保存ボタンを設置します。設置場所はMainMenu、SideBarOptions、OptionsPanelあたりがお勧めです<br>{{{<<saveMyEmpty>>}}}\n#設定済み空ファイル保存ボタンを押すと、元ファイルと同じフォルダにmyempty.htmlというファイルが作成されます\n\n注.本機能は、ローカル使用の場合のみ有効です\n!ソース\nSaveMyEmptyMacro\n\nやっていることはsaveChanges()の変更保存処理とほぼ同じです。allTiddlersAsHtmlで全tiddlerを取得する代わりに、指定タグのtiddlerのみ取得するtaggedTiddlersAsHtml関数を作って置き換えました。\n
/***\n  ~ShowMyTiddlersPlugin - 自分の作成した記事のみ表示\n    2006.09.26 Version 1.0\n\n''説明''\nプラグインを多く導入していると、更新順表示タブ等でそれらと自分の作成した記事が混ざって視認性が悪くなってしまいます。そのため、修正者名が「設定」の署名と同じ記事のみ一覧表示するプラグインを作成しました。これにより表示が変わる箇所は以下の通りです。\n*更新順タブ\n*全てタブ\n*タグタブ\n*その他-未定義タブ\n*その他-見参照タブ\n\n''インストール''\nこの内容を~TIddlyWikiの新規記事にペースト。systemConfigタグをつけて保存。リロード。\n***/\n//{{{\nlookupMyTiddlers = function(list)\n{\n var newList = [];\n\n for (var i = 0; i < list.length; i++)\n if (list[i].modifier == config.options.txtUserName)\n newList.push(list[i]);\n return newList;\n\n}\n\n// 全て\nconfig.macros.list.all.handler = function(params)\n{\n var tiddlers = store.reverseLookup("tags","excludeLists",false,"title");\n tiddlers = lookupMyTiddlers(tiddlers);\n return tiddlers;\n}\n\n// その他 - 未定義\nTiddlyWiki.prototype.getMissingLinks = function(sortField)\n{\n var results = [];\n this.forEachTiddler(function (title,tiddler) {\n if (tiddler.modifier != config.options.txtUserName)\n return;\n if(tiddler.tags.find("systemConfig") == null && tiddler.tags.find("excludeMissing") == null)\n for(var n=0; n<tiddler.links.length;n++)\n {\n var link = tiddler.links[n];\n if(this.fetchTiddler(link) == null && !this.isShadowTiddler(link))\n results.pushUnique(link);\n }\n });\n results.sort();\n return results;\n}\n\n// その他 - 未参照\nTiddlyWiki.prototype.getOrphans = function()\n{\n var results = [];\n this.forEachTiddler(function (title,tiddler) {\n if (tiddler.modifier != config.options.txtUserName)\n return;\n if(this.getReferringTiddlers(title).length == 0 && !tiddler.isTagged("excludeLists"))\n results.push(title);\n });\n results.sort();\n return results;\n}\n\n// 更新順\nconfig.macros.timeline.handler = function(place,macroName,params)\n{\n var field = params[0] ? params[0] : "modified";\n var tiddlers = store.reverseLookup("tags","excludeLists",false,field);\n\n tiddlers = lookupMyTiddlers(tiddlers);\n\n var lastDay = "";\n var last = params[1] ? tiddlers.length-Math.min(tiddlers.length,parseInt(params[1])) : 0;\n for(var t=tiddlers.length-1; t>=last; t--)\n {\n var tiddler = tiddlers[t];\n var theDay = tiddler[field].convertToLocalYYYYMMDDHHMM().substr(0,8);\n if(theDay != lastDay)\n {\n var theDateList = document.createElement("ul");\n place.appendChild(theDateList);\n createTiddlyElement(theDateList,"li",null,"listTitle",tiddler[field].formatString(this.dateFormat));\n lastDay = theDay;\n }\n var theDateListItem = createTiddlyElement(theDateList,"li",null,"listLink",null);\n theDateListItem.appendChild(createTiddlyLink(place,tiddler.title,true));\n }\n}\n\n// タグ\nconfig.macros.allTags.handler = function(place,macroName,params)\n{\n var tags = store.myGetTags();\n var theDateList = createTiddlyElement(place,"ul",null,null,null);\n if(tags.length == 0)\n createTiddlyElement(theDateList,"li",null,"listTitle",this.noTags);\n for(var t=0; t<tags.length; t++)\n {\n var theListItem =createTiddlyElement(theDateList,"li",null,null,null);\n var theTag = createTiddlyButton(theListItem,tags[t][0] + " (" + tags[t][1] + ")",this.tooltip.format([tags[t][0]]),myOnClickTag);\n theTag.setAttribute("tag",tags[t][0]);\n }\n}\n\nTiddlyWiki.prototype.myGetTags = function()\n{\n var results = [];\n this.forEachTiddler(function(title,tiddler) {\n if (tiddler.modifier != config.options.txtUserName)\n return;\n for(var g=0; g<tiddler.tags.length; g++)\n {\n var tag = tiddler.tags[g];\n var f = false;\n for(var c=0; c<results.length; c++)\n if(results[c][0] == tag)\n {\n f = true;\n results[c][1]++;\n }\n if(!f)\n results.push([tag,1]);\n }\n });\n results.sort(function (a,b) {if(a[0].toLowerCase() == b[0].toLowerCase()) return(0); else return (a[0].toLowerCase() < b[0].toLowerCase()) ? -1 : +1; });\n return results;\n}\n\n// Event handler for clicking on a tiddler tag\nfunction myOnClickTag(e)\n{\n if (!e) var e = window.event;\n var theTarget = resolveTarget(e);\n var popup = Popup.create(this);\n var tag = this.getAttribute("tag");\n var title = this.getAttribute("tiddler");\n if(popup && tag)\n {\n var tagged = store.getTaggedTiddlers(tag);\n tagged = lookupMyTiddlers(tagged);\n var titles = [];\n var li,r;\n for(r=0;r<tagged.length;r++)\n if(tagged[r].title != title)\n titles.push(tagged[r].title);\n var lingo = config.views.wikified.tag;\n if(titles.length > 0)\n {\n var openAll = createTiddlyButton(createTiddlyElement(popup,"li"),lingo.openAllText.format([tag]),lingo.openAllTooltip,onClickTagOpenAll);\n openAll.setAttribute("tag",tag);\n createTiddlyElement(createTiddlyElement(popup,"li"),"hr");\n for(r=0; r<titles.length; r++)\n {\n createTiddlyLink(createTiddlyElement(popup,"li"),titles[r],true);\n }\n }\n else\n createTiddlyText(createTiddlyElement(popup,"li",null,"disabled"),lingo.popupNone.format([tag]));\n createTiddlyElement(createTiddlyElement(popup,"li"),"hr");\n var h = createTiddlyLink(createTiddlyElement(popup,"li"),tag,false);\n createTiddlyText(h,lingo.openTag.format([tag]));\n }\n Popup.show(popup,false);\n e.cancelBubble = true;\n if (e.stopPropagation) e.stopPropagation();\n return(false);\n}\n\n\n//}}}
/***\n\n ~SingleTiddlerModePlugin - 単一記事表示モードプラグイン\n\n!説明\n 記事を開くとそれまで開いていた記事が閉じて、常に一つの\n 記事しか開かないモードです。以下のような記述をAdvancedOptions\n あたりに書いておくと、このモードのON/OFFが切り替えられます。\n\n {{{<<option chkSingleTiddlerMode>> Single Tiddler Mode}}}\n\n''インストール''\n この記事の内容をペースト、systemConfigタグを付けて保存、リロード。\n***/\n//{{{\nif (config.options.chkSingleTiddlerMode == undefined)\n config.options.chkSingleTiddlerMode = true;\n\njavascript:(\n function() {\n if (config.options.chkSingleTiddlerMode) {\n Story.prototype.org_displayTiddler = Story.prototype.displayTiddler;\n Story.prototype.displayTiddler = closeAndDisplayTiddler;\n }\n\n function closeAndDisplayTiddler(srcElement,title,template,animate,slowly)\n {\n if (config.options.chkSingleTiddlerMode)\n story.closeAllTiddlers();\n story.org_displayTiddler(srcElement,title,template,animate,slowly);\n }\n\n }\n\n)();\n\n//}}}\n
Tips, Macros and FAQ
~TiddlyWiki Style
http://www.geocities.jp/wikistyle/
SiteUrlにはTiddlyWiki自身のURLを指定しますが、このURLはRSSフィードを出力したときにその中に埋め込まれます。それ以外の処理ではまったく使用されないので、RSSフィード出力機能を利用しないのであれば、とくに設定する必要はありません。\n\nデフォルトでは、http://www.tiddlywiki.com/ になっているため、TiddlyWikiをRSSフィード付でサーバ上に公開する場合は必ず設定するようにしてください。\n
\n!概要\nスライダーマクロは[[TiddlerMacro - 他記事の引用]]と同様に他の記事の内容をインラインで表示しますが、スライダーの場合は表示内容を折りたたみ/展開できるという特徴があります。サイドバーの「設定」で使用されています。\n!書式\n{{{\n<<slider cookieName tiddlerTitle sliderTitle tooltipText>>\n}}}\n|!引数|!意味|\n|cookieName|折りたたみ/展開の状態をcookieとして保存するための名前。他のcookieと重複せず、先頭に「chk」がついた名前にする必要があります|\n|tiddlerTitle|引用する記事のタイトル|\n|sliderTitle|スライダーの表示名|\n|tooltipText|スライダーのツールチップ文字列|\n\n!使用例\n{{{\n<<slider chkSampleSlider MainMenu "メニュー" "メインメニュー内容表示">>\n}}}\n<<slider chkSampleSlider MainMenu "メニュー" "メインメニュー内容表示">>\n
\n!概要\nスパークライン(簡易グラフ)を表示します。[[スパークライン|http://www.edwardtufte.com/bboard/q-and-a-fetch-msg?msg_id=0001OR&topic_id=1]]とは、エール大学名誉教授で、グラフィックを情報伝達に利用することの第一人者である、エドワード・タフティが発明した表記方法だそうです。\n文字と同じ高さなのでグラフを文章に埋め込めるのが特徴です。\n!書式\n{{{<<sparkline データ1 データ2 データ3 ……>>}}}\n\nデータ部には数字を指定します。\nグラフの高さは文字の高さと同じ、幅は指定したデータ数に依存します。\nグラフのスケールは指定できません。縦軸は必ず0~データの最大値となります。\n!使用例\n{{{\nそうはいってもこのグラフ<<sparkline 10 5 8 12 7 9 12 17 20 16 10 12 14 17 12>> はどういったシチュエーションで使えばよいのだろうか?\n}}}\nそうはいってもこのグラフ<<sparkline 10 5 8 12 7 9 12 17 20 16 10 12 14 17 12>> はどういったシチュエーションで使えばよいのだろうか?\n
/***\nCSSカスタマイズ\n***/\n/*{{{*/\nh1,h2,h3,h4,h5 {\n padding-top: 0.3em;\n}\n\n.headerShadow {\n padding: 2.0em 0em 0.7em 1em;\n}\n\n.headerForeground {\n padding: 2.0em 0em 0.7em 1em;\n}\n\n\n.siteTitle {\n font-size: 3.0em;\n}\n\n.siteSubtitle {\n font-size: 1.2em;\n}\n\n.subtitle {\n font-size: 0.9em;\n}\n/*}}}*/\n\n/*{{{*/\nbody {\n background: #efc;\n}\n\nh1,h2,h3,h4,h5 {\n color: #fff;\n background: #4a7;\n}\n\n.button {\n border: 0px;\n}\n\n.header {\n background: #084;\n}\n\n.shadow .title {\n color: #fff;\n}\n\n.title {\n color: #fff;\n background: #084;\n}\n\n.viewer th {\n background: #996;\n}\n\n.viewer pre {\n border: 1px solid #6a6;\n background: #cfc;\n}\n\n.viewer thead td {\n background: #8d8;\n}\n/*}}}*/\n\n/*{{{*/\n.viewer thead td {\n background: #8d8;\n}\n\n.viewer tfoot td {\n background: #bd6;\n}\n\n.MyStyle {\n background: #aff;\n}\n/*}}}*/\n
//{{{\n// TDump (Tiddler Dump)\n// 指定tiddlerのHTMLソース表示\nconfig.macros.tdump = {};\nconfig.macros.tdump.handler = function(place,macroName,params)\n{\n var w = document.createElement('span');\n config.macros.tiddler.handler(w, 'tiddler', [params[0]], null, params[0]);\n\n var text = w.firstChild.innerHTML;\n text = text.replace(/</g,"\sn<");\n text = text.replace(/>/g,">\sn");\n text = text.replace(/^\sn+/gm,"");\n if(config.browser.isIE)\n text = text.replace(/\sn/gm,"\sr");\n\n createTiddlyElement(place,"pre",null,null,text);\n}\n//}}}
<<timeline modified 15>>
\n!概要\n他の記事の内容をインラインで表示します。\n!書式\n{{{<<tiddler タイトル>>}}}\n!使用例\n{{{\n<<tiddler SiteTitle>>\n><<tiddler MainMenu>>\n}}}\n<<tiddler SiteTitle>>\n><<tiddler MainMenu>>
<<list tag introduction_ Contents>>
/***\n\n  __TiddlyWikiの記法を~PukiWikiっぽくするプラグイン__ 2006.10.04 Version 0.91\n\n''説明''<br>~TiddlyWikiとサーバ型Wikiの両方を使用する場合、両者の記法の違いによって混乱する人が多いようです。そのため、~TiddlyWikiの記法を''~PukiWiki''( http://pukiwiki.sourceforge.jp/ )っぽくするプラグインを作ってみました。\n細かい部分は全然違うので、まったく違和感なく使用できるというわけにはいきませんが、少しでも混乱が減るのではないでしょうか。\n\n''注''<br>他の表示系プラグインを併用している場合、表示が乱れることがあります。\n\n''対応済み記法''\n|!要素|!書式|!本来の~TiddlyWiki書式^^*1^^|\n|見出し |{{{ *, **, *** }}}|{{{ !, !!, !!! }}}|\n|並列リスト |{{{ -, --, --- }}}|{{{ *, **, *** }}}|\n|番号付リスト |{{{ +, ++, +++ }}}|{{{ #, ##, ### }}}|\n|リンク |{{{ [[URL]] }}}| (同じ) |\n|別名リンク |{{{ [[サイト名:URL]] }}}|{{{ [[サイト名|URL]] }}}|\n|画像 |{{{ &ref(画像URL) }}}|{{{ [img[画像URL]] }}}|\n|引用 |{{{ >, >>, >>> }}}| (同じ) |\n|水平線 |{{{ ---- }}}| (同じ) |\n|強調 |{{{ ''強調'' }}}| (同じ) |\n|斜体 |{{{ '''斜体''' }}}|{{{ //斜体// }}}|\n|取消線 |{{{ %%取消線%% }}}|{{{ --取消線-- }}}|\n|文字色 |{{{ &color(文字色){文字列} }}}|{{{ @@color:文字色;文字列@@ }}}|\n|背景色 |{{{ &color(文字色,背景色){文字列} }}}|{{{ @@color:文字色;background-color:背景色;文字列@@ }}}|\n|文字サイズ |{{{ &size(サイズ){文字列} }}}|{{{ @@font-size:サイズ;文字列@@ }}}|\n|コメント |{{{ //コメント }}}|{{{ /%コメント%/ }}}|\n|改行^^*2^^ |{{{ &br; }}}| (ソースで改行) |\n|段落^^*3^^ |{{{ 空行 }}}| (なし) |\n\n *1 本来の書式も有効のまま残しているものもあります<br> *2 システム設定用記事の表示が乱れるのを避けるため~ShadowTiddlerには本来の改行ルールが適用されます<br> *3 改行文字を2個出力することで代用しています\n\n''未対応記法''\n|!要素|!書式|\n|((注釈))|未対応。~TiddlyWikiに対応する機能がありません|\n|テーブル|~TiddlyWiki記法に従います|\n\n''インストール''<br> この内容を~TIddlyWikiの新規記事にペースト。systemConfigタグをつけて保存。リロード。\n\n***/\n{{{\nvar pukiFormatters = [\n{\n name: "heading",\n match: "^\s\s*{1,5}"\n},\n{\n name: "list",\n match: "^(?:(?:\s\s-{1,3})|(?:\s\s++))",\n lookahead: "^(?:(\s\s-{1,3})|(\s\s++))"\n},\n{\n name: "prettyLink",\n match: "\s\s[\s\s[",\n lookahead: "\s\s[\s\s[([^\s\s|\s\s]]*?)(?:(\s\s]\s\s])|(:(.*?)\s\s]\s\s]))",\n terminator: ":"\n},\n{\n name: "strikeByChar",\n match: "%%",\n terminator: "%%"\n},\n{\n name: "boldByChar",\n match: "''",\n lookahead: "''[^'].*''",\n terminator: "''"\n},\n{\n name: "italicByChar",\n match: "'''",\n terminator: "'''"\n},\n{\n name: "htmlEntitiesEncoding",\n match: "&#?[a-zA-Z0-9]{2,8};",\n handler: function(w)\n {\n if (w.matchText == "&br;") {\n createTiddlyElement(w.output,"br");\n } else {\n var e = createTiddlyElement(w.output,"span");\n e.innerHTML = w.matchText ;\n }\n }\n},\n{\n name: "lineBreak",\n match: "\s\sn\s\sn",\n handler: function(w)\n {\n createTiddlyElement(w.output,"br");\n createTiddlyElement(w.output,"br");\n }\n}\n];\n\n\nvar additionalPukiFormatters = [\n{\n name: "lineBreak2",\n match: "\s\sn",\n handler: function(w)\n {\n if (store.isShadowTiddler(w.tiddler.title))\n createTiddlyElement(w.output,"br");\n }\n},\n{\n name: "commentByLine",\n match: "//",\n lookahead: "//.*\s\sn",\n handler: function(w)\n {\n var lookaheadRegExp = new RegExp(this.lookahead,"g");\n lookaheadRegExp.lastIndex = w.matchStart;\n var lookaheadMatch = lookaheadRegExp.exec(w.source)\n if(lookaheadMatch && lookaheadMatch.index == w.matchStart)\n w.nextMatch = lookaheadMatch.index + lookaheadMatch[0].length;\n }\n},\n{\n name: "pukiImage",\n match: "&ref\s\s(",\n lookahead: "&ref\s\s(([^\s\s)]+)\s\s)",\n handler: function(w)\n {\n var lookaheadRegExp = new RegExp(this.lookahead,"g");\n lookaheadRegExp.lastIndex = w.matchStart;\n var lookaheadMatch = lookaheadRegExp.exec(w.source)\n if(lookaheadMatch && lookaheadMatch.index == w.matchStart) {\n var e = createTiddlyElement(w.output,"img");\n e.src = lookaheadMatch[1];\n w.nextMatch = lookaheadMatch.index + lookaheadMatch[0].length;\n }\n }\n},\n{\n name: "pukiColor",\n match: "&color\s\s(",\n lookahead: "&color\s\s(([^\s\s)]+)\s\s)\s\s{((?:.|\s\sn)*?)\s\s}",\n terminator: "\s\s}",\n handler: function(w)\n {\n var lookaheadRegExp = new RegExp(this.lookahead,"mg");\n lookaheadRegExp.lastIndex = w.matchStart;\n var lookaheadMatch = lookaheadRegExp.exec(w.source)\n if(lookaheadMatch && lookaheadMatch.index == w.matchStart) {\n var e = createTiddlyElement(w.output,"span");\n var col = lookaheadMatch[1].split(/\ss*,\ss*/);\n e.style.color = col[0];\n if (col.length >= 2)\n e.style.background = col[1];\n w.nextMatch += lookaheadMatch[1].length + 2;\n w.subWikify(e,this.terminator);\n }\n }\n},\n{\n name: "pukiSize",\n match: "&size\s\s(",\n lookahead: "&size\s\s(([^\s\s)]+)\s\s)\s\s{((?:.|\s\sn)*?)\s\s}",\n terminator: "\s\s}",\n handler: function(w)\n {\n var lookaheadRegExp = new RegExp(this.lookahead,"mg");\n lookaheadRegExp.lastIndex = w.matchStart;\n var lookaheadMatch = lookaheadRegExp.exec(w.source)\n if(lookaheadMatch && lookaheadMatch.index == w.matchStart) {\n var e = createTiddlyElement(w.output,"span");\n e.style.fontSize = lookaheadMatch[1];\n w.nextMatch += lookaheadMatch[1].length + 2;\n w.subWikify(e,this.terminator);\n }\n }\n}\n];\n\n// config.formatter配列の記法変更\nvar posBold;\nvar posItalic;\nfor (var i=0; i<config.formatters.length; i++) {\n for (var j=0; j<pukiFormatters.length; j++) {\n if (config.formatters[i].name == "boldByChar")\n posBold = i;\n if (config.formatters[i].name == "italicByChar")\n posItalic = i;\n if (config.formatters[i].name == pukiFormatters[j].name) {\n config.formatters[i].match = pukiFormatters[j].match;\n if (pukiFormatters[j]["lookahead"] != undefined)\n config.formatters[i].lookahead = pukiFormatters[j].lookahead;\n if (pukiFormatters[j]["terminator"] != undefined)\n config.formatters[i].terminator = pukiFormatters[j].terminator;\n if (pukiFormatters[j]["handler"] != undefined)\n config.formatters[i].handler = pukiFormatters[j].handler;\n }\n }\n}\n\n// boldとitalicの優先度入れ替え\nvar w = config.formatters[posBold];\nconfig.formatters[posBold] = config.formatters[posItalic];\nconfig.formatters[posItalic] = w;\n\n// config.formatter配列へ記法追加\nfor (var i=0; i<additionalPukiFormatters.length; i++)\n config.formatters.push(additionalPukiFormatters[i]);\n\n}}}\n\n
<<list tag Tips_ Tips>>
\n!概要\n今日の日付を表示します。\n!書式\n{{{<<today>>}}}または{{{<<today 日付書式>>}}}\n|!日付書式|!意味|h\n|YYYY|西暦の4桁表記|\n|YY|西暦の2桁表記|\n|wYYYY|~ISO-8601対応週ベース年の4桁表記|\n|wYY|~ISO-8601対応週ベース年の2桁表記|\n|MMM|月名(本サイトでは[[和名|JapaneseTranslation]]にカスタマイズ)|\n|mmm|月名の短縮表記(本サイトでは[[和名|JapaneseTranslation]]でMMMと同じ表記)|\n|0MM|月の2桁数字表記|\n|MM|月の1~2桁数字表記|\n|DDD|曜日(本サイトでは[[和名|JapaneseTranslation]]にカスタマイズ)|\n|ddd|曜日の短縮表記(本サイトでは[[和名|JapaneseTranslation]]でDDDと同じ表記)|\n|0DD|日の2桁数字表記|\n|~DDth|日を1st, 2nd, 3rd, 4th,……形式で表記|\n|DD|日の1~2桁数字表記|\n|0hh|時の2桁表記|\n|hh|時の1~2桁表記|\n|0hh12|時の2桁表記(12時間制)|\n|hh12|時の1~2桁表記(12時間制)|\n|AM<br>PM|午前/午後表記(大文字)|\n|am<br>pm|午前/午後表記(小文字)|\n|0mm|分の2桁表記|\n|mm|分の1~2桁表記|\n|0ss|秒の2桁表記|\n|ss|秒の1~2桁表記|\n!使用例\n{{{\n<<today>>\n<<today "YYYY年0MM月0DD日(DDD)">>\n<<today "YY/MM/DD 0hh:0mm:0ss">>\n<<today "YYYY MMM DDth">>\n<<today "hh12:0mm am">>\n}}}\n<<today>>\n<<today "YYYY年0MM月0DD日(DDD)">>\n<<today "YY/MM/DD 0hh:0mm:0ss">>\n<<today "YYYY MMM DDth">>\n<<today "hh12:0mm am">>\n
TiddlyWikiについていろいろ書いていきます。\n\n本サイトで使用する用語は、できるだけ分かりやすい日本語に訳すようにしています。tiddlerのことは「記事」、tagは文脈によって「タグ」または「カテゴリー」と表記しています。\n\n2006.10.6\nver2.1.xにアップグレードしました。内容も2.1.x対応に更新しています。\n\n2006.7.2\nTiddlyWikiでGTDを実装してみました。\n [[GTD Style Wiki|http://www.geocities.jp/wikistyle/gtd/]]\n [[LifeHackLife(blog)|http://blogstyle.seesaa.net/]]\n\n\n2006.6.21\n<<list tag Macro_ 自作マクロたまってきました>>
\n!概要\nTiddlyWikiのバージョン番号を表示します。\n!書式\n{{{<<version>>}}}\n!使用例\n{{{\n<<version>>\n}}}\n<<version>>\n
<!--{{{-->\n<div class='toolbar' macro='toolbar -closeTiddler closeOthers +editTiddler permalink references jump'></div>\n<div class='grad' macro='gradient vert #4fb #082'><div class='title' macro='view title'></div></div>\n<div class='subtitle'><span macro='view modifier link'></span>, <span macro='view modified date [[YYYY年0MM月0DD日]]'></span> (作成日 <span macro='view created date [[YYYY年0MM月0DD日]]'></span>)</div>\n<div class='tagging' macro='tagging'></div>\n<div class='tagged' macro='tags'></div>\n<div class='viewer' macro='view text wikified'></div>\n<div class='tagClear'></div>\n<!--}}}-->
年月日がタイトルになった記事のこと。これによりTiddlyWikiをblog風に使うことができます。このサイトでは「日記」と表記しています。
現在表示中の他の記事へのリンクのこと。長文の記事を複数開いているようなときに使うといいかも。このサイトでは「ジャンプ」と表記しています。\n
「その記事に直接リンクするためのURL」のこと。単一の記事が表示されるURLがブラウザのアドレスバーに表示されます。このサイトでは「記事のURL」と表記しています。\n\nただし、日本語タイトルの記事の場合、環境によっては正しく表示されないこともあるようです。また英語タイトルでも、Donut等のタブブラウザでは対応していないことがあります。\n\n複数の記事を開いた状態を示すURLを表示する方法は、[[permaview|permaviewって何?]]参照。
「現在の表示状態を示すURL」のこと。現在4個の記事を開いているとしたら、その4個の記事を開いた状態を再現するURLがブラウザのアドレス欄に表示されます。このサイトでは「ビューのURL」と表記しています。\n\nただし、日本語タイトルの記事の場合、環境によっては正しく表示されないこともあるようです。また英語タイトルでも、Donut等のタブブラウザでは対応していないことがあります。\n\n記事それぞれのURLを表示する方法は、[[permalink|permalinkって何?]]参照。
その記事にリンクしている記事へのリンクのこと。このサイトでは「リンク元」と表記しています。
記事につけるカテゴリー名。\n\nblog等で「カテゴリー」、「タグ」などと呼ばれている機能と同じです。\n記事には複数のタグ名をつけることができます。記事にタグを付けると同じタグ名が付けられた記事へ移動したり、あるタグ名の付いた記事をすべて開くといった操作が可能になります。\n\nTiddlyWikiの場合、タグ自体もひとつの記事として実現されており、タグ名をタイトルとした記事に説明を記述したり、さらにタグにタグを付けることもできます。\n\nタグの設定方法は、編集テキストエリアの下にあるテキストボックスにタグ名を記述します。
それぞれの記事のこと。日本語のblogなどで紹介されるときもそのままtiddlerと書かれることも多いですが、このサイトでは「記事」と表記しています。\n\nTiddlyWikiでは、レイアウト、配色、その他システム設定やマクロといった機能もtiddlerで実現しており、特定のタイトルのtiddlerの内容を編集することで、ソースコードを変更せずにカスタマイズが可能となっています。\n\n
~HaloscanMacroを使えば、サーバ上に置いたTiddlyWikiにコメント/トラックバック機能を追加することができます。ただし日本語タイトルの記事にはコメント/トラックバックが付けられないようです。\n詳細は以下の記事を参照してください。\n[[HaloscanMacro - コメント/トラックバック機能]]\n\nテスト用ページを用意しました。試用する場合はこちらをご利用ください。\nCommentTest\n
記事を頻繁に更新しているとサイドメニューのTimelineタブ(最近更新した記事一覧)の内容が非常に長くなってしまいます。その場合、TabTimelineの内容を編集することで表示数を限定することができます。(Ver 2.0.7以降)\n\n変更前\n{{{\n<<timeline>>\n}}}\n\n変更後\n{{{\n<<timeline modified 15>>\n}}}\n第1引数はmodified(更新日時でソート)またはcreated(作成日時でソート)を指定します。第2引数は表示数で、この場合最大15件表示します。
\n通常画面\n|!Win|!Mac|!処理|\n|Alt+F|Ctrl+F|検索(検索ボックスにカーソルを移動する)|\n|Alt+S|Ctrl+S|保存|\n|Alt+N|Ctrl+N|新規作成|\n|Alt+J|Ctrl+J|新規日記|\n|>|記事をダブルクリック|記事編集(厳密には「メニューのデフォルト処理(''太字''の項目)を実行する」という操作です)|\n|>|記事へのリンクをCtrl+クリック|記事を開く/閉じるのトグル動作|\n\n\n編集画面\n|!ショートカット|!処理|!備考|\n|Ctrl+Enter|変更確定|ただしAdvancedOptionsの「マイナーアップデートモードをデフォルトとする」オプションを有効にすると、これらのキーアサインが逆になります|\n|Shift+Ctrl+Enter<br>(Shift+doneボタン)|マイナーアップデート(日付を更新せずに記事を保存)|~|\n|Esc|変更破棄||\n|タイトルをダブルクリック|変更確定|タイトル部分など、記事エリアのエディットボックス以外をダブルクリックすると、デフォルト処理の「変更確定」が実行されます|\n\n検索ボックス\n|!ショートカット|!処理|\n|Esc|検索キーワードクリア|\n
\n!カスタマイズした設定を1箇所にまとめる方法\nStyleSheetLayoutやStyleSheetColorsはサイズが大きいため、一部だけカスタマイズしようとしても管理が大変です。その場合、変更対象部分だけStyleSheetにコピーしてカスタマイズすると便利です。両方に異なる設定があるときはStyleSheetの設定が優先されます。\n\n!カスタマイズした設定を数箇所に分割する方法\n上記の方法でも、StyleSheetのサイズが大きくなっていくと、それはそれで管理が大変になってきます。その場合以下のようなプラグインを作成すれば、任意の記事にカテゴリーごとに分割してスタイルシート設定を記述することができるようになります。\n##「スタイルシートその1」「スタイルシートその2」というタイトルで記事を作成。それぞれにスタイルシート設定を記述する\n##「追加スタイルシートプラグイン」等のタイトルの記事を作成、以下の内容を記述する\n##systemConfigタグをつけて保存、リロード\n{{{\nstore.addNotification("スタイルシートその1", refreshStyles);\nstore.addNotification("スタイルシートその2", refreshStyles);\n}}}\n※複数の記事に異なる設定がある場合、後にaddNotificationされた方が優先されます
一時的にプラグインを外して起動したい時などのためにセーフモードが用意されています(Ver2.0.7以降)。セーフモードで起動すると、マクロ/プラグイン(systemConfigタグ)の実行と、cookieの読み書きが禁止されます。\nただし組込マクロおよびユーザ定義のスタイルシートとHTMLテンプレートは無効になりません。\n\n!書式\n//URL//''#start:safe''\n\n!例\nfile:///C:/wiki/tiddlywiki.html#start:safe
\n!現象\nブラウザにIEを使っていると、TiddlyWikiファイルを開いたときに「@@background-color:#ff0000;color:#ffffff;This page requires ~JavaScript to function properly@@」という警告画面が出ることがあります。「セキュリティ保護のため~」と書いてある警告バーをクリックすると使えるようになりますが、次回開くとまた警告画面が出てしまいます。\n\n!!解決法\n「ツール」→「インターネットオプション」→「詳細設定」→「セキュリティ」→「マイ コンピュータのファイルでのアクティブ コンテンツの実行を許可する」にチェックします。\n
記事に対してささいな変更を行ったときなど、更新順表示でわざわざ一番上にきてほしくないことがあります。こういった場合、編集画面でシフトキーを押しながらdoneボタン(またはShift+Ctrl+Enter)を押すと、アップデート日付が更新されません。\n\nただしAdvancedOptionsの「マイナーアップデートモードをデフォルトとする(Treat edits as ~MinorChanges by preserving date and time)」オプションを有効にするとキーアサインが逆になり、Shift+doneが通常更新、doneがマイナーアップデートとなります。\n\n参考:[[ショートカットキー一覧]]
[[マクロ|Macro]]とプラグインは、どちらもTiddlyWikiを拡張するための機能であり、JavaScriptで記述されて、systemConfigタグが付加された特殊な記事のことです。\n\nマクロの方は、記事の中に{{{<<マクロ名 引数>>}}}という形式で記述することで呼び出されます。そのためマクロは規定に従ったインタフェースを実装した一種のプラグインといえます。\n\n一方、プラグインの中には既存処理のパッチのようにユーザが特に呼び出しを意識しなくても機能するように作られているものもあります。
はじめに、画面に「Hello World!」と表示するだけの簡単なマクロhelloを作成します。\nマクロの作成にはJavaScriptとDOM(Document Object Model) の知識が必要です。\n\n!1.マクロ用記事の作成\nマクロ用の新規記事を作成して「systemConfig」タグを付加します。systemConfigが付加された記事はJavaScriptプログラムとして、起動時に実行されます。この記事に以降の内容を書いていくことになります。\n\n!2.マクロの登録\nconfig.macros.マクロ名 にはマクロの属性を設定します。これによりTiddlyWikiはマクロの存在を認識します。多くのマクロでは属性を使用しないため、ここには空リストを登録することがよくあります。\n>config.macros.''hello'' = {};\n\n!3.処理本体を記述\n次にconfig.macros.マクロ名.handler にマクロの本体を記述します。function(place,macroName,params) の引数形式はどのマクロでも共通です\n>config.macros.''hello''.handler = function(place,macroName,params)\n\n|!引数|!意味|!例 &#60;&#60;hello text1 text2 text3&#62;&#62;の場合|\n|place|親ノード|マクロを記述したエレメント|\n|macroName|マクロ名|'hello'|\n|params|マクロの引数|params[0]='text1'<br>params[1]='text2'<br>params[2]='text3'|\n\n文字列の出力にはdocument.write()は使用しません。DOM的に、テキストノードを作成(document.createTextNode)して親ノードにぶら下げる(appendChild)ことで、tiddler内に文字列が表示されます。TiddlyWikiではそのための関数createTiddlyTextが用意されているのでこれを使うことにします。\n>{\n>createTiddlyText(place, 'Hello World!');\n>}\n\n|!関数|>|''createTiddlyText''(theParent,theText)|\n|!処理|>|親ノードにテキストを追加する|\n|!引数|theParent|親ノード|\n|~|theText|追加する文字列|\n\n!4.マクロの読み込み\nマクロが作成できたら、その内容を読み込んで実行する必要があります。読み込む処理は起動時に行われるため、一度保存してリロードします。\n\n!ソースと実行例\n''ソース'' [[HelloMacro|HelloMacro - Hello Worldの表示]]\n<<tiddler "HelloMacro - Hello Worldの表示">>\n\n''使用方法''\n{{{\n<<hello>>\n}}}\n\n''実行例''\n<<hello>>\n\n----\n次:[[マクロの作り方2 - BoxMacro]]\n
次に、文字列に定型的な装飾(囲み線)を付加するためのマクロboxを作成します。\n文字列を装飾するためには、指定した文字列をSPANタグで囲み、SPANタグにスタイル定義を追加します。\n\n!マクロの登録\nboxマクロは属性を使用しないので、マクロの登録方法は[[hello|マクロの作り方1 - HelloMacro]]と同様です。\n>config.macros.''box'' = {};\n\n!処理本体を記述\nハンドラも同じように宣言します。\n>config.macros.''box''.handler = function(place,macroName,params)\n\nタグを作成するには、createTiddlyElement関数を使用します。また、作成したタグにスタイル定義を追加するためにstyle属性を使用します。\n<<<\n{\n var e = createTiddlyElement(place,"span",null,null,params[0]);\n e.style["border"] = "1px solid #000";\n e.style["padding"] = "0.2em 1em 0.2em 1em";\n}\n<<<\n\n|!関数|>|''createTiddlyElement''(theParent,theElement,theID,theClass,theText)|\n|!処理|>|親ノードにエレメントを追加する|\n|!引数|theParent|親ノード|\n|~|theElement|追加するタグ名|\n|~|theID|ID属性(省略可)|\n|~|the Class|クラス属性(省略可)|\n|~|theText|タグの内側に記述するテキスト(省略可)|\n\n!ソースと実行例\n''ソース'' [[BoxMacro|BoxMacro - 文字列に囲み線をつける]]\n<<tiddler "BoxMacro - 文字列に囲み線をつける"">>\n\n''使用方法''\n{{{\n<<box "box macro sample">>\n}}}\n\n''実行例''\n<<box "box macro sample">>\n\n----\n前:[[マクロの作り方1 - HelloMacro]] 次:[[マクロの作り方3 - MDumpMacro]]
既存マクロを解析したり自作マクロを作っていると、そのマクロが出力するHTMLソースを見たくなることがよくあります。動的に生成されるHTMLソースはJavaScriptデバッガ等を使えば見ることができると思いますが、ここでは手軽にソース表示をマクロで実現してみます。\n\n!マクロの登録\n登録はいつもの通りです。\n>config.macros.''mdump'' = {};\n\n!処理本体を記述\nハンドラも同じように宣言します。\n>config.macros.''mdump''.handler = function(place,macroName,params)\n\n第1引数で指定されたマクロ名を探し、マクロが存在していればハンドラを実行します。ハンドラに渡す引数としては、params.slice(1)としてマクロ自身の第2引数以降を渡しています。\n<<<\nconfig.macros.mdump.handler = function(place,macroName,params)\n{\n var w = document.createElement('span');\n var m = config.macros[params[0]];\n\n if (m && m.handler) {\n m.handler(w, params[0], params.slice(1));\n<<<\n\nマクロが出力したテキストを成型(タグごとに改行)しておきます。IEの場合、改行文字は\snではなく\srになります。\n<<<\n var text = w.innerHTML;\n text = text.replace(/</g,"\sn<");\n text = text.replace(/>/g,">\sn");\n text = text.replace(/^\sn+/gm,"");\n if(config.browser.isIE)\n text = text.replace(/\sn/gm,"\sr");\n<<<\n\n最後にPREタグを生成して、タグの内側に成型されたテキストを設定します。\n<<<\n createTiddlyElement(place,"pre",null,null,text);\n }\n}\n<<<\n\n!ソースと実行例\n''ソース'' [[MDumpMacro|MDumpMacro - マクロが出力するHTMLソースの表示]]\n<<tiddler "MDumpMacro - マクロが出力するHTMLソースの表示">>\n\n''使用方法''\n{{{\n<<mdump today "YYYY/0MM/0DD">>\n}}}\n\n''実行例''\n<<mdump today "YYYY/0MM/0DD">>\n\n!備考\nこれに似たような処理で、tiddlerのHTMLソースを表示するマクロも作成しました。ソースの取得には、他のtiddlerを引用するtiddlerマクロのハンドラを利用しています。\n\n''ソース'' [[TDumpMacro|TDumpMacro - 指定tiddlerのHTMLソース表示]]\n<<tiddler "TDumpMacro - 指定tiddlerのHTMLソース表示">>\n\n''使用方法''\n引数として、ソース表示したいtiddlerのタイトルを指定します。\n{{{\n<<tdump Tips>>\n}}}\n\n''実行例''\n<<tdump Tips>>\n\n----\n前:[[マクロの作り方2 - BoxMacro]]\n
メッセージやメニューを日本語化するには、システム設定用の記事(「systemConfig」というタグのついた記事)を作成し、そこにメッセージカスタマイズ変数定義を記述します。\n\n本サイトの[[日本語化設定|Opt02:日本語メッセージ]]を参考にしてください。これは以下のサイトの記事をベースにVer2.0.6用に変更したものです。\n''ささやかなる実験場の開発室(HSJ.jp) - 続・~TiddlyWikiのメッセージを日本語化してみる。''\nhttp://hsj.jp/works/archives/001471.html\n\n2006.04.20追記\n以下のサイトでver 2.0.8対応版が公開されたのでこちらを使うのもお勧めです。\n''~MemoWiki - ~JapaneseTranslation''\nhttp://flow.dip.jp/mt/archives/u/twmemo.html#JapaneseTranslation\n\n!注意\n日本語化するときに、上記のように設定用記事を使うのではなく、オリジナルファイルのメッセージを直接書き換える方法もあります。しかしながら直接日本語メッセージを書くと、ブラウザがIEの場合、書き込み時に文字化けが発生して、最悪の場合は記事の内容を全て失う可能性があります。ご注意ください。\n記事として記述すると、IEの書き込み時には日本語をエンコードしてからファイルを保存するため、文字化けすることがありません。
カスタマイズ機能を使うことにより、メニューやメッセージを日本語化することができます(このサイトのように)。詳しくは以下の記事を参照してください。\n\n[[メッセージ日本語化]]
Version2.1.0以降のTiddlyWikiでは定義型リストがサポートされました。\n__記述例__\n{{{\n;定義型リスト\n:このように「項目名」と「説明」からなるリストが定義型リストです\n}}}\n__表示例__\n;定義型リスト\n:このように「項目名」と「説明」からなるリストが定義型リストです\n
たぶんWindows版限定Tips。\n\n2006.04.24追記\n[[更新内容が保存できない(Firefox)]]も参照してください。\n!現象\nTiddlyWikiのオリジナル版では、ファイルを日本語ファイル名にしたり、「デスクトップ」等の日本語ディレクトリに置いた場合に保存することができません。\n\n!原因\n保存するファイル名を取得する処理で、document.location.toString()を使っていますが、日本語ファイル名の場合、このメソッドはSJISエンコードされた文字列が返されます(例.「デスクトップ」が「%83f%83X%83N%83g%83b%83v」のようになる)。そのためセーブ前にこの文字列をデコードする必要があります。\n\n!解決法\n1.作業用ディレクトリにempty.htmlを用意する\nこのときはまだ日本語対応していないため、c:\stmp等の英数字のみのディレクトリに置きます。またファイル名もまだempty.htmlのままにしておいてください。\n\n2.[[日本語文字コード変換JavaScriptライブラリ ecl.js|http://nurucom-archives.hp.infoseek.co.jp/digital/escape-codec-library.html]]をダウンロード\necl.jsは、JavaScriptだけで漢字コード変換やエンコード/デコードを実現してしまう、スゴいライブラリです。\n\n3.新規tiddlerを作成\n ''タイトル:'' 任意(例.「ecl.js」)\n ''内容:'' ecl.jsの内容をペースト\n ''タグ:'' systemConfig\n\n4.save changeを実行してからTiddlyWikiを終了する\n\n5.保存したTiddlyWikiファイルをエディタで開き、セーブファイル名取得処理にSJISデコード関数を追加する。UTF-8対応のエディタを使用してください。がんばればメモ帳でもできるかもしれません。\n修正前(saveChanges()関数 3380行目付近)\n{{{\n var originalPath = document.location.toString();\n}}}\n修正後\n{{{\n var originalPath = UnescapeSJIS(document.location.toString());\n}}}\n\n6.移動、リネーム\n以上の作業で日本語ファイル名対応は完了です。自分の好きな日本語ファイル名にリネームしたり、日本語ディレクトリに移動して使ってください。\n\n!備考\necl.jsはtiddlerとせずに、以下のように外部ファイルとしてインクルードすることも可能です。\n修正前(41行目付近)\n{{{\n<title>TiddlyWiki - a reusable non-linear personal web notebook</title>\n<script type="text/javascript">\n}}}\n修正後\n{{{\n<title>TiddlyWiki - a reusable non-linear personal web notebook</title>\n<script type="text/javascript" src="ecl.js"></script>\n<script type="text/javascript">\n}}}\nこの方法の場合、TiddlyWikiの売りのひとつである「単一ファイル」ではなくなってしまうので、先に述べた方法の方がお勧めです。\n\n!確認環境\n|!OS|!ブラウザ|\n|~WindowsXP ~SP2|~IE6.0SP2, Firefox1.0.7|\n|Windows2000|~IE6.0SP2, Firefox1.0.7|\n
JavaScriptは言語仕様としてファイルへの出力機能を持っておらず、TiddlyWikiではかなり裏技的な実装で保存機能を実現しています。そのため様々な条件によって保存できない場合があります。\n\n※以下はWindows(2000/XP)でのみ確認しています。Macの事情は分かりません。\n!原因:日本語パス名問題\nFirefoxの場合、ファイルを日本語ファイル名にしたり、「デスクトップ」等の日本語ディレクトリに置いた場合、そのままでは保存することができません。\n!解決法\n以下のいずれかの対策で保存できるようになります。\n\n''その1''\nZephyrさん作の~TWSaveSJPathPatchプラグインを使用する。お勧め。\nhttp://flow.dip.jp/mt/archives/u/twmemo.html#TWSaveSJPathPatch\n\n''その2''\n[[日本語ファイル名対応]]参照。\n!詳細解説\n保存するファイル名を取得する処理で、document.location.toString()を使っていますが、日本語ファイル名の場合、この関数はSJISエンコードされた文字列が返されます(例.「デスクトップ」が「%83f%83X%83N%83g%83b%83v」のようになる)。そのためフックをかます等して文字列をデコードする必要があります。
JavaScriptは言語仕様としてファイルへの出力機能を持っておらず、TiddlyWikiではかなり裏技的な実装で保存機能を実現しています。そのため様々な条件によって保存できない場合があります。\n\n※以下はWindows(2000/XP)でのみ確認しています。Macの事情は分かりません。\n!原因:ファイルアクセスブロック\nファイルのアイコンを右クリックしてプロパティを表示すると、下の方に以下のような表示が出ることがあります。このようなブロックされたTiddlyWikiファイルは保存できません。\n<<<\nセキュリティ:\nこのファイルは他のコンピュータから取得したものです。このコンピュータを保護するため、このファイルへのアクセスはブロックされる可能性があります。\n<<<\n!解決法\n#公式サイトからダウンロードした等、ファイルが信頼できるものであれば、プロパティ画面の「ブロックの解除」ボタンを押してブロックを解除します。<br><br>\n#「ブロックの解除」を実行すると、今度はファイルを開くたびに「@@background-color:#ff0000;color:#ffffff;This page requires ~JavaScript to function properly@@」という警告画面が出ることがあります。その場合「ツール」→「インターネットオプション」→「詳細設定」→「セキュリティ」→「マイ コンピュータのファイルでのアクティブ コンテンツの実行を許可する」にチェックすると警告画面は出なくなります。\n
JavaScriptは言語仕様としてファイルへの出力機能を持っておらず、TiddlyWikiではかなり裏技的な実装で保存機能を実現しています。そのため様々な条件によって保存できない場合があります。\n\n※以下はWindows(2000/XP)でのみ確認しています。Macの事情は分かりません。\n!原因:バックアップフォルダなしエラー\nバックアップ取得(~SaveBackups)を有効にして、詳細な設定(AdvancedOptions)でバックアップ先(Folder name for backup files)を指定している場合、そのフォルダが存在していないと保存できません。\n!解決法\nバックアップ先フォルダをあらかじめ作成しておきます。\n
~JavaScriptは言語仕様としてファイルへの出力機能を持っておらず、TiddlyWikiではかなり裏技的な実装で保存機能を実現しています。そのため様々な条件によって保存できない場合があります。\n\n※以下は~WindowsXPでのみ確認しています。Macの事情は分かりません。\n!注\nOperaの場合、以下の設定を行って保存できるようになっても、うちの環境では(Pen4 2.4GHz)CPU負荷がフルになって保存処理に30秒以上かかってしまいます。Java環境のチューニングでなんとかなるのかどうか不明です。\n!原因:Javaセキュリティ設定\nOperaではJava実行環境のセキュリティ設定によりTiddlyWikiファイルのファイル書き込みが許可されるようになっていないと保存することができません。\n!解決法\n以下のような内容のファイルを作成し、ホームディレクトリ(Windowsの場合、C:\sDocuments and Settings\sユーザ名\s)に「{{{.java.policy}}}」というファイル名で保存する。\n・ファイルの文字コードは必ず@@~UTF-8@@とする\n・バックアップファイルを別フォルダに保存するよう設定している場合は、そのフォルダも記述する\n{{{\ngrant codeBase "file:/c:/tiddlywiki.html" {\n permission java.io.FilePermission "c:\s\s*", "read,write";\n permission java.io.FilePermission "c:\s\sbkup\s\s*", "read,write";\n};\n\ngrant codeBase "file:/c:/Documents and Settings/myname/デスクトップ/tiddlywiki.html" {\n permission java.io.FilePermission "c:\s\sDocuments and Settings\s\smyname\s\sデスクトップ\s\s*", "read,write";\n};\n}}}\n
\n [[書式一覧]]\n<<list tag フォーマット 書式>>
\n!一般\n|!項目|!記法|\n|リンク|{{{WikiWord}}}<br>{{{file:|http:|https:|mailto:|ftp:}}}<br>{{{[[リンク先]]}}}<br>{{{[[表示文字列|リンク先]]}}}|\n|リンク抑止|{{{~WikiWord}}}|\n|リスト|{{{*、**、***}}}|\n|番号付リスト|{{{#、##、###}}}|\n|定義型リスト|{{{;定義}}}<br>{{{:説明}}}|\n|見出し|{{{!見出し1、!!見出し2、!!!見出し3}}}|\n|水平線|{{{----}}}|\n|等幅表示|&#123;&#123;&#123; ~ &#125;&#125;&#125; ソース表示用<br>/*&#123;&#123;&#123;*/ ~ /*&#125;&#125;&#125;*/ CSS用<br>&#47;&#47;&#123;&#123;&#123; ~ &#47;&#47;&#125;&#125;&#125; プラグイン用<br><!&#45;&#45;&#45;&#123;&#123;&#123;&#45;&#45;&#45;> ~ <!&#45;&#45;&#45;&#125;&#125;&#125;&#45;&#45;&#45;> テンプレート用|\n|引用|{{{>、>>、>>>}}}<br>{{{<<< ~ <<<}}}|\n|画像|{{{[img[title|filename]]}}}<br>{{{[img[filename]]}}}<br>{{{[img[title|filename][link]]}}}<br>{{{[img[filename][link]]}}}<br>{{{[<img[filename]]}}} 左フローティング<br>{{{[>img[filename]]}}} 右フローティング|\n|埋め込みHTML|{{{<html> ~ </html>}}}|\n|コメント|{{{/% ~ %/}}}|\n|プラグイン用コメント|{{{/*** ~ ***/}}}|\n|テンプレート用コメント|{{{<!--- ~ --->}}}|\n\n!文字装飾\n|!項目|!記法|\n|''ボールド'' |{{{''ボールド''}}} |\n|--取り消し線-- |{{{--取り消し線--}}}<br>(Ver2.1.0以降{{{==テキスト==}}}形式は廃止)|\n|__アンダーライン__ |{{{__アンダーライン__}}} (_を2個ずつ両側に書く) |\n|//イタリック// |{{{//イタリック//}}} |\n|上付き文字: 2^^3^^=8 |{{{2^^3^^=8}}} |\n|下付き文字: a~~ij~~ = -a~~ji~~ |{{{a~~ij~~ = -a~~ji~~}}} |\n|@@ハイライト@@ |{{{@@ハイライト@@}}} |\n|CSS直接指定: @@color:green;例:文字緑@@|{{{@@color:green;例:文字緑@@}}}|\n|CSSクラス名指定:<br>{{marked{例:markedクラス指定}}}|&#123;marked&#123;例:markedクラス指定&#125;&#125;&#125;|\n\n!テーブル\n|!項目|!記法|\n|通常項目||項目||\n|タイトル||!タイトル||\n|右結合||>||\n|上結合||~||\n|位置指定|右、左、または両方にスペース|\n|キャプション||c|\n|ヘッダ||h|\n|フッタ||f|\n|スタイル指定||k|\n|背景色||bgcolor(#88FFFF):項目||\n
\n!Wikiコメント\n文字列を''&#47;&#37;'' ~ ''&#37;&#47;''で囲むと、その内側にある文はコメント行として閲覧画面に表示されません。編集画面では表示されるので、ちょっとしたメモや作成中の文章を書いておくのに便利です。\n\n__記述例__\n{{{\nここに/% コメントが %/あります\n}}}\n__表示例__\n\nここに/% コメントが %/あります\n\n!プラグインコメント\nプラグインやマクロ定義に説明文等を書く場合、JavaScriptのコメント文(&#47;&#42;、&#47;&#47;)にしてプログラムとして解釈されないようにする必要があります。このときコメント指定文字列として&#47;&#42;&#42;&#42; ~ &#42;&#42;&#42;&#47;を使うと、コメント指定文字列が表示上隠されて読みやすくなります。コメント文にはWiki記法が使用できます。\n\n__記述例__\n{{{\n/***\n|!マクロ名|~SampleMacro|\n|!説明|サンプルのソースです|\n***/\n//{{{\nconfig.macros.sample = {};\n//}}}\n}}}\n__表示例__\n/***\n|!マクロ名|~SampleMacro|\n|!説明|サンプルのソースです|\n***/\n//{{{\nconfig.macros.sample = {};\n//}}}\n\n\n!テンプレートコメント\nテンプレート定義に説明文等を書く場合、HTMLのコメント文(<!&#45;&#45; &#45;&#45;>)にしてHTMLとして解釈されないようにする必要があります。このとき''<!&#45;&#45;&#45;'' ~ ''&#45;&#45;&#45;>''のようにハイフンを3個書いて、さらにコメント指定文字列を独立した行にすると、コメント指定文字列が表示上隠されて読みやすくなります。コメント文にはWiki記法が使用できます。\n\n__記述例__\n{{{\n<!---\n|!テンプレート名|~EditTemplate|\n|!説明|編集用テンプレートのサンプルです|\n--->\n<!--{{{-->\n<div class='toolbar' macro='toolbar +saveTiddler'></div>\n<div class='title' macro='view title'></div>\n<!--}}}-->\n}}}\n__表示例__\n<!---\n|!テンプレート名|~EditTemplate|\n|!説明|編集用テンプレートのサンプルです|\n--->\n<!--{{{-->\n<div class='toolbar' macro='toolbar +saveTiddler'></div>\n<div class='title' macro='view title'></div>\n<!--}}}-->\n
\n!テーブル作成\n''|'' で文字列を囲むとテーブルになります。\n{{{\n|r1c1|r1c2|\n|r2c1|r2c2|\n}}}\n|r1c1|r1c2|\n|r2c1|r2c2|\n\n!タイトル行\n文字列の先頭に ''!'' をつけると<th>のタイトル行になります。\n{{{\n|!r1c1|!r1c2|\n|r2c1|r2c2|\n}}}\n|!r1c1|!r1c2|\n|r2c1|r2c2|\n\n!結合\n''>'' のみのカラムはcolspanとなり、右隣のカラムと結合されます。\n{{{\n|>|r1c2|\n|r2c1|r2c2|\n}}}\n|>|r1c2|\n|r2c1|r2c2|\n\n''~'' のみのカラムはrowspanとなり、上のカラムと結合されます。\n{{{\n|r1c1|r1c2|\n|~|r2c2|\n}}}\n|r1c1|r1c2|\n|~|r2c2|\n\n!右詰、左詰、中央揃え\n文字を右の「|」に隣接させて左側に1個以上のスペースを入れると右詰。\n文字を左の「|」に隣接させて左側に1個以上のスペースを入れると左詰。\n文字の両側に1個以上のスペースを入れると中央揃えとなります。\n{{{\n|!サンプル|\n| 右|\n|左 |\n| 中 |\n}}}\n|!サンプル|\n| 右|\n|左 |\n| 中 |\n\n!背景色\n''bgcolor(色指定):''で背景色が指定できます。色はRGB指定でも色名指定でも可能です。\n{{{\n|bgcolor(#88FFFF):r1c1|bgcolor(white):r1c2|\n}}}\n|bgcolor(#88FFFF):r1c1|bgcolor(white):r1c2|\n\n!キャプション\n''|''文字列''|c'' という行を書くと表のキャプションとなります。キャプションを表の先頭行に書いた場合は上に、それ以外の場合は下に表示されます。\n{{{\n|表1.例|c\n|r1c1|r1c2|\n|r2c1|r2c2|\n}}}\n|表1.例|c\n|r1c1|r1c2|\n|r2c1|r2c2|\n{{{\n|r1c1|r1c2|\n|表2.例|c\n|r2c1|r2c2|\n}}}\n|r1c1|r1c2|\n|表2.例|c\n|r2c1|r2c2|\n\n!ヘッダ、フッタとスタイルシート\n行末に''h''をつけると<thead>グループになります。先頭行に表示され、thead\nのスタイルシートが適用されます。\n行末に''f''をつけると<tfoot>グループになります。最終行に表示され、tfoot\nのスタイルシートが適用されます。\n行末に何もつけない場合は<tbody>グループです。通常通り表示されます。\n''|''CSSクラス名''|k'' という行を書くと、<tbody>グループに適用するスタイルシートを変更することができます。\n{{{\n|h1|h2|h\n|f1|f2|f\n|r1c1|r1c2|\n|r2c1|r2c2|\n\n|h1|h2|h\n|f1|f2|f\n|r1c1|r1c2|\n|r2c1|r2c2|\n|MyStyle|k\n}}}\n|h1|h2|h\n|f1|f2|f\n|r1c1|r1c2|\n|r2c1|r2c2|\n\n|h1|h2|h\n|f1|f2|f\n|r1c1|r1c2|\n|r2c1|r2c2|\n|MyStyle|k\n\nなおこのサイトでは、上の説明のために以下のようにスタイルシートを定義しています。\n{{{\n.viewer thead td { background: #8d8; }\n.viewer tfoot td { background: #bd6; }\n.MyStyle { background: #aff; }\n}}}
\n!並列リスト\n{{{\n*アスタリスクを1個\n*行頭に書くとリストになります\n**リストを入れ子にする場合は\n**2個のアスタリスクを行頭に書きます\n***さらに深いレベルのリストは\n***3個のアスタリスクを使います\n}}}\n*アスタリスクを1個\n*行頭に書くとリストになります\n**リストを入れ子にする場合は\n**2個のアスタリスクを行頭に書きます\n***さらに深いレベルのリストは\n***3個のアスタリスクを使います\n*並列リストの他に\n*順序付きりストもあります\n\n!順序付きりスト\n{{{\n#行頭に''#''を1個書くと\n#自動的にリストとなり\n#連番が付与されます\n##リストを入れ子にする場合は\n##それぞれの項目の\n##行頭に2個の''#''を書きます\n#1個の''#''に戻した場合は\n#順序付リストは元の\n#レベルに戻ります\n}}}\n#行頭に''#''を1個書くと\n#自動的にリストとなり\n#連番が付与されます\n##リストを入れ子にする場合は\n##それぞれの項目の\n##行頭に2個の''#''を書きます\n#1個の''#''に戻した場合は\n#順序付リストは元の\n#レベルに戻ります\n\n!定義型リスト\nTiddlyWikiでは<dl><dt><dd>の定義型リストはなぜかサポートされていません。どうしても使いたい場合は、以下のようにHTMLを直接書くこともできますが、やっぱりいまいちですね。\n{{{\n<html>\n<dl>\n <dt>定義型リスト</dt>\n <dd>このように「項目名」と「説明」からなるリストが定義型リストです</dd>\n</dl>\n</html>\n}}}\n<html>\n<dl>\n <dt>定義型リスト</dt>\n <dd>このように「項目名」と「説明」からなるリストが定義型リストです</dd>\n</dl>\n</html>\n
\n!自動リンク\n<html>file:、http:、https:、mailto:、ftp:</html>等で始まる単語はURLとして外部リンクになります。\n{{{\n http://www.geocities.jp/wikistyle/\n}}}\n http://www.geocities.jp/wikistyle/\n\nWikiワード(WikiWordのような形式の文字列)は内部リンクになります。厳密には、3文字以上の英数字で、大文字から始まり、大文字が2個以上使用されている文字列がWikiワードとして定義されています。\n{{{\n TopPage\n}}}\n TopPage\n\n!自動リンクの抑止\nWikiワードの自動リンクを抑止したい場合は、先頭に ''~'' をつけます。\n{{{\n ~TopPage\n}}}\n ~TopPage\n\n!明示的リンク\nURLやWikiワード以外の文字列をリンクにしたい場合は&#91;&#91;文字列&#93;&#93;と記述します。\n{{{\n Tips\n [[Tips]]\n}}}\n Tips\n [[Tips]]\n\nリンク先とは別の文字列でリンクしたい場合は&#91;&#91;表示文字列|リンク先&#93;&#93;と記述します。\n{{{\n [[トップページ|TopPage]]\n [[TiddlyWiki Style|http://www.geocities.jp/wikistyle/]]\n}}}\n [[トップページ|TopPage]]\n [[TiddlyWiki Style|http://www.geocities.jp/wikistyle/]]\n\n!フォルダへのリンク\nフォルダに対するリンクは以下のように記述します。しかしながら日本語フォルダ名に対応していなかったり、セキュリティポリシーによっては開かなかったりで使い勝手はいまいちです。\n|!フォルダ|!書式|\n|Windowsネットワークフォルダ|file://///server/share/folder/path/name|\n|Windowsローカルフォルダ|file:///c:/folder/path/name|\n|Unixフォルダ|file:///folder/path/name|\n
\n!~WikiWordの自動リンク抑止\n自動リンクされてしまう文字列は先頭に''~''をつけることでリンクを抑止できます。\n{{{\n~WikiWord\n}}}\n~WikiWord\n\n!&#123;&#123;&#123; &#125;&#125;&#125;によるエスケープ\n&#123;&#123;&#123; &#125;&#125;&#125;で囲むとWiki整形機能の一部を無効にすることができます。\n{{{\n{{{ [[リンクの抑止]] }}}\n}}}\n{{{ [[リンクの抑止]] }}}\n\n!HTMLタグによるエスケープ\n&#60;HTML&#62;&#60;/HTML&#62;で囲むことでもWiki整形機能の一部を無効にすることができます。\n{{{\n<html>[[リンクの抑止]]</html>\n}}}\n<html>[[リンクの抑止]]</html>\n\n!文字コード指定によるエスケープ\n一番強力なエスケープ方法は、文字コードで記号を書くことです。\n{{{\n&#91;&#91;リンクの抑止&#93;&#93;\n}}}\n&#91;&#91;リンクの抑止&#93;&#93;\n\n|!記号|!文字コード表記|\n| &#33; |&amp;#33;|\n| &#35; |&amp;#35;|\n| &#38; |&amp;#38;|\n| &#39; |&amp;#39;|\n| &#42; |&amp;#42;|\n| &#45; |&amp;#45;|\n| &#47; |&amp;#47;|\n| &#60; |&amp;#60;|\n| &#62; |&amp;#62;|\n| &#91; |&amp;#91;|\n| &#93; |&amp;#93;|\n| &#123; |&amp;#123;|\n| &#125; |&amp;#125;|\n| &#126; |&amp;#126;|\n
{{{<HTML></HTML>}}}の間に任意のHTMLタグを記述することができます。\n{{{\n<html>\n<dl>\n <dt>サンプル</dt>\n <dd>HTML本来の整形機能が使えます</dd>\n</dl>\n</html>\n}}}\n<html>\n<dl>\n <dt>サンプル</dt>\n <dd>HTML本来の整形機能が使えます</dd>\n</dl>\n</html>
\n!行指定\n行頭に''>''をつけると引用文(<blockquote>タグ)になります。引用レベルは''>''の数で指定します。\n{{{\n>レベル1\n>レベル1\n>>レベル2\n>>>レベル3\n>>>レベル3\n>>レベル2\n>レベル1\n}}}\n>レベル1\n>レベル1\n>>レベル2\n>>>レベル3\n>>>レベル3\n>>レベル2\n>レベル1\n\n!ブロック指定\n''&#60;&#60;&#60;''だけの行を書くとブロック指定の意味となり、次の''&#60;&#60;&#60;''までが引用文となります。引用レベルの指定はできません。\n{{{\n<<<\nこのテキストが\nすべて引用文\nとして表示\nされます。\n<<<\n}}}\n<<<\nこのテキストが\nすべて引用文\nとして表示\nされます。\n<<<\n
以下のような文字装飾が使用できます。\n\n| !効果 | !書式 |h\n| ''ボールド'' | {{{''ボールド''}}} |\n| --取り消し線-- | {{{--取り消し線--}}} |\n| __アンダーライン__ | {{{__アンダーライン__}}} (_を2個ずつ両側に書く) |\n| //イタリック// | {{{//イタリック//}}} |\n| 上付き文字: 2^^3^^=8 | {{{2^^3^^=8}}} |\n| 下付き文字: a~~ij~~ = -a~~ji~~ | {{{a~~ij~~ = -a~~ji~~}}} |\n| @@ハイライト@@ | {{{@@ハイライト@@}}} |\n\n!CSS直接指定\nハイライトと同様の書式でCSSのスタイル定義を書くこともできます。\n{{{\n@@color:green;文字緑@@\n@@background-color:#ff0000;color:#ffffff;背景赤@@\n@@text-shadow:black 3px 3px 8px;font-size:18pt;display:block;margin:1em 1em 1em 1em;padding: 0.3em 1em 0em 1em;border:1px solid black;CSS スタイルが指定できます@@\n}}}\n@@color:green;文字緑@@\n@@background-color:#ff0000;color:#ffffff;背景赤@@\n@@text-shadow:black 3px 3px 8px;font-size:18pt;display:block;margin:1em 1em 1em 1em;padding: 0.3em 1em 0em 1em;border:1px solid black;CSS スタイルが指定できます@@\n\n旧バージョンの互換性のために以下の書式も受け付けます。\n{{{\n@@bgcolor(#ff0000):color(#ffffff):背景赤@@\n}}}\n@@bgcolor(#ff0000):color(#ffffff):背景赤@@\n
4つのマイナス記号を書くと水平線になります。\n{{{\n文章を区切りたいときに\n----\n使用します。\n}}}\n文章を区切りたいときに\n----\n使用します。\n
画像を貼り付けるときは以下のように指定します。\n\n ''&#91;'' 配置 ''img &#91;'' タイトル ''|'' ファイルネーム ''&#93;&#91;'' リンク ''&#93;&#93;''\n\nこのうち、ファイルネーム以外は任意に省略可能です。以下に例を示します。\n\n!通常画像\n{{{\n[img[tanuki.jpg]]\n}}}\n[img[tanuki.jpg]]\n\n!タイトル付画像(TITLE属性)\n{{{\n[img[タヌキ|tanuki.jpg]]カーソルをあてるとタイトルを表示します。\n}}}\n[img[タヌキ|tanuki.jpg]]カーソルをあてるとタイトルを表示します。\n\n!リンク付画像\n{{{\n[img[tanuki.jpg][TopPage]]クリックするとトップページが開きます。\n}}}\n[img[tanuki.jpg][TopPage]]クリックするとトップページが開きます。\n\n!タイトル、リンク付画像\n{{{\n[img[タヌキ|tanuki.jpg][TopPage]]タイトルとリンクの両方指定。\n}}}\n[img[タヌキ|tanuki.jpg][TopPage]]タイトルとリンクの両方指定。\n\n!配置指定(ALIGN属性)\n{{{\nこのように''img''の前に[<img[tanuki.jpg]]''<''記号をつけたときは左側に画像がフローティングされて表示されます。フローティングされた画像を文章の中に貼ると、テキストが画像を回り込んで配置されます。\n<html><br clear="all"></html>\n''img''の前に''>''記号つけた場合、[>img[tanuki.jpg]]こんどは右側に画像がフローティングされて表示されます。テキストの回り込みを解除するためにここでは<br>タグを使っています。\n}}}\nこのように''img''の前に[<img[tanuki.jpg]]''<''記号をつけたときは左側に画像がフローティングされて表示されます。フローティングされた画像を文章の中に貼ると、テキストが画像を回り込んで配置されます。\n<html><br clear="all"></html>\n''img''の前に''>''記号つけた場合、[>img[tanuki.jpg]]こんどは右側に画像がフローティングされて表示されます。テキストの回り込みを解除するためにここでは<br>タグを使っています。
''&#123;&#123;&#123;''と''&#125;&#125;&#125;''で囲むと等幅フォント(<pre>タグ)で表示されるのでソースコードを示すような場合に便利です。またWikiの整形も抑止されます。\n\n!単語指定\n行の中で使用するとその部分だけ等幅で表示されます。\n__記述例__\n{{{\n行の中で{{{Monospaced Text}}}のように使用します。\n}}}\n__表示例__\n行の中で{{{Monospaced Text}}}のように使用します。\n\n!ブロック指定\n以下のようにブロック単位で指定すると枠で囲まれて表示されます。\n__記述例__\n//{{{\n{{{\n printf("Hello, world!");\n return 0;\n}}}\n//}}}\n__表示例__\n{{{\n printf("Hello, world!");\n return 0;\n}}}\n!ブロック指定(CSS用)\nStyleSheetColorsのようなCSS定義記事も''&#123;&#123;&#123; &#125;&#125;&#125;''で囲むと見やすく表示されますが、このとき以下のようにCSSのコメント形式''/* */''を使ってブロック指定をCSSとして解釈されないようにする必要があります。\n__記述例__\n{{{\n/*{{{*/\n.title {\n color: #fff;\n background: #084;\n}\n/*}}}*/\n}}}\n__表示例__\n/*{{{*/\n.title {\n color: #fff;\n background: #084;\n}\n/*}}}*/\n\n!ブロック指定(プラグイン用)\nプラグインやマクロ定義の記事も同様に、JavaScriptのコメント形式''&#47;/''を使ってブロック指定をJavaScriptとして解釈されないようにする必要があります。\n__記述例__\n{{{\n//{{{\nconfig.macros.list.tag = {};\nconfig.macros.list.tag.handler = function(params)\n{ return store.getTaggedTiddlers(params[1], "title"); }\n//}}}\n}}}\n__表示例__\n//{{{\nconfig.macros.list.tag = {};\nconfig.macros.list.tag.handler = function(params)\n{ return store.getTaggedTiddlers(params[1], "title"); }\n//}}}\n\n※CSS用のブロック指定( ''/*&#123;&#123;&#123;*/'' )も、JavaScriptのコメント形式なので、こちらを使うこともできます。\n!ブロック指定(テンプレート用)\nViewTemplateのようなレイアウト定義テンプレート記事も同様に、HTMLのコメント形式''<!&#45;&#45; &#45;&#45;>''を使ってブロック指定をHTMLとして解釈されないようにする必要があります。\n__記述例__\n{{{\n<!--{{{-->\n<div class='tagging' macro='tagging'></div>\n<div class='tagged' macro='tags'></div>\n<div class='viewer' macro='view text wikified'></div>\n<div class='tagClear'></div>\n<!--}}}-->\n}}}\n__表示例__\n<!--{{{-->\n<div class='tagging' macro='tagging'></div>\n<div class='tagged' macro='tags'></div>\n<div class='viewer' macro='view text wikified'></div>\n<div class='tagClear'></div>\n<!--}}}-->\n\n!注\n''&#123;&#123;&#123; &#125;&#125;&#125;''自身を等幅ブロックの中に表示する場合は、''&#47;/&#123;&#123;&#123; &#47;/&#125;&#125;&#125;''など別のブロック指定記号を使います。\n
行頭に''!''をつけると見出し(<h1>~<h5>タグ)になります。見出しレベルは''!''の数で指定します。\n{{{\n!見出し1\n!!見出し2\n!!!見出し3\n!!!!見出し4\n!!!!!見出し5\n}}}\n!見出し1\n!!見出し2\n!!!見出し3\n!!!!見出し4\n!!!!!見出し5\n
記事がまったく書かれていない状態のファイルを保存するには以下のようにします。\n\nAdvancedOptionsの「空のテンプレートファイル(empty.html)を保存する(~SaveEmptyTemplate)」オプションを有効にすると、TiddlyWiki本体の保存時に毎回empty.htmlも出力されるようになります。\n\nカスタマイズ等、一部の記事を残した形で空ファイルを出力する方法は、[[SaveMyEmptyMacro - 設定済み空ファイルの保存]]を参照してください。
箇条書きやテーブルで改行する場合は{{{<br>}}}タグを使用します。Version2.1.0より前のバージョンでは[[Brマクロ|BrMacro - 改行]]が使用されていましたが、現在では推奨されていません。\n\n!使用例\n{{{\n*箇条書きで\n普通に改行した場合\n*Brタグで<br>改行した場合\n}}}\n*箇条書きで\n普通に改行した場合\n*Brタグで<br>改行した場合\n
URLの後ろにパラメータを与えることでTiddlyWiki起動時の動作を指定することができます。\n\n!書式\n#URL''@@color:blue;#@@''記事タイトル\n#URL''@@color:blue;#@@''cmd''@@color:blue;:@@''arg\n#URL''@@color:blue;#@@''cmd1''@@color:blue;:@@''arg1 cmd2''@@color:blue;:@@''arg2 ...\n※2、3の書式はVer2.0.7以降のみ有効です\n※日本語のパラメータはブラウザによっては使用できません\n\n!例\nhttp://www.geocities.jp/wikistyle/#SiteTitle\nhttp://www.geocities.jp/wikistyle/#open:SiteTitle\n[[http://www.geocities.jp/wikistyle/#open:SiteTitle open:SiteSubtitle|http://www.geocities.jp/wikistyle/#open:SiteTitle%20open:SiteSubtitle]]\nhttp://www.geocities.jp/wikistyle/#open:SiteTitle%20open:SiteSubtitle\n\n!コマンド一覧\n|!コマンド|!引数|!意味|\n|(省略)|記事タイトル|指定されたタイトルの記事を開きます|\n|''open''|記事タイトル|指定されたタイトルの記事を開きます|\n|''story''|記事リストタイトル|指定されたタイトルの記事リストに書かれた各記事を開きます|\n|''search''|検索キー|検索キーにマッチする記事を表示します|\n|''searchRegExp''|検索キー|正規表現の検索キーにマッチする記事を表示します|\n|''tag''|タグ名|指定されたタグ名がついた記事を表示します|\n|''newJournal''|日付書式|指定された[[日付書式|TodayMacro - 日付表示]]で日記を新規作成します|\n|''newTiddler''|タイトル|指定されたタイトルで記事を新規作成します|\n|''start''|''safe''|TiddlyWikiを[[セーフモード]]で起動します|\n
\n!説明\nTiddlyWikiは、サーバを必要としないローカルWikiシステムです。最大の特長は、「単一のファイルだけでできている」という点にあり、ロジックもユーザインタフェースもコンテンツも、すべてたったひとつのファイルに含まれています。\nそのためTiddlyWikiは、テキストファイルの気軽さと、Wikiサーバの便利さの両方を兼ね備えています。\n\nローカルWikiとはいうものの、そのファイルをサーバにアップロードして、インターネット経由で見ることもできます(書き込みは不可)。このサイトもTiddlyWikiで作られています。\n\nオープンソースライセンスのソフトウェアであり、誰でも自由にダウンロードして使うことができます。\n!公式サイト\n~TiddlyWiki a reusable non-linear personal web notebook\nhttp://www.tiddlywiki.com/\n!公式サイトの紹介文\n公式サイトに載っている作者自身による紹介文を翻訳してみました。\n<<<\n''~TiddlyWikiとは''\nTiddlyWikiはブログに似て、小さな独立した記事から構成されています。しかしそれは時系列的に読むよりもハイパーリンクをたどって読むのに適しています。いうなれば個々のコンテンツが有機的にリンクした非連続的なブログです。\n私はTiddlyWikiが新しい記述メディアとなり、独自の記述スタイルを形成することを望んでいます。\n\n''主な機能''\n初期状態のTiddlyWikiには以下のような機能があります。\n*Windows、Mac、Linux上のほとんどのブラウザで表示が可能\n*以下のブラウザでは保存機能の使用が可能\n**Firefox (Windows, OS X)\n**~InternetExplorer (Windows)\n**Opera (全OS)\n**Safari、Camino (OS X)\n**Minimo (Nokia 770)\n*各種書式整形機能([[等幅フォント表示|書式:等幅フォント表示]]、[[文字装飾|書式:文字装飾]]、[[非Wikiワードのリンク|書式:リンク]]、[[Wikiワードのエスケープ|書式:各種エスケープ]]、[[明示的リンク|書式:リンク]]、[[見出し|書式:見出し]]、[[並列リスト、順序付リスト|書式:リスト]]、[[テーブル|書式:テーブル]]、 [[引用文|書式:引用文]]、 [[水平線|書式:水平線]]、およびスタイルシート設定)\n*多くのインタフェースオプション(RSSフィード生成、バックアップ、オートセーブ等)\n*ショートカットキー機能(~Ctrl-Enterで編集終了、ESCでキャンセル等)\n*[[インラインHTML|書式:埋め込みHTML]]\n*[[画像の貼り付け|書式:画像]]\n*マクロ機能による豊富な表現力([[グラデーション|GradientMacro - グラデーション装飾]]、[[スパークライン|SparklineMacro - 簡易グラフ表示]]等)\n*利用しやすいオープンソースライセンス\n*カスタムスタイルシートによりCSSレイアウトの変更が可能\n*URLに起動パラメータを指定することにより起動時の処理を制御可能\n*各国語への翻訳版(中国語、フランス語、ドイツ語、スペイン語、ポルトガル語等)\nTiddlyWikiのコミュニティは、各種プラグインや改変によってこれらの基本機能の拡張をおこなってきました。\n<<<\n\n----\n次:[[2.TiddlyWikiのできることできないこと]]
/***\n\n!日本語2文字検索プラグイン\nTiddlyWikiの検索機能では、あまりにも大量の記事がヒットするのを防止するため2文字以下の単語は検索対象にならないように制限されています。しかしバイト数ではなく文字数を数えているため、日本語の文字も2文字制限がかかり、たとえば「起動」のような単語を検索することができません。\n\nそこで2文字の文字列場合は先頭の文字種を判断して、日本語(マルチバイト文字)であれば検索を実行するプラグインを作成しました。(オリジナルのconfig.macros.search.onKeyPress関数に1行追加しただけです)\n\n新規記事にこの内容をペーストし、systemConfigタグをつけて保存後、リロードすることで利用できます。\n***/\n//{{{\nconfig.macros.search.onKeyPress = function(e)\n{\n if (!e) var e = window.event;\n switch(e.keyCode)\n {\n case 27:\n this.value = "";\n clearMessage();\n break;\n }\n if ((this.value.length > 2)\n || ((this.value.length == 2) && this.value.isMultiByteStr()))\n {\n if(this.value != this.getAttribute("lastSearchText"))\n {\n if(config.macros.search.timeout)\n clearTimeout(config.macros.search.timeout);\n var txt = this;\n config.macros.search.timeout = setTimeout(function() {config.macros.search.doSearch(txt);},500);\n }\n }\n else\n {\n if(config.macros.search.timeout)\n clearTimeout(config.macros.search.timeout);\n }\n}\n\nString.prototype.isMultiByteStr = function()\n{\n return escape(this.charAt(0)).length >= 4;\n}\n//}}}
\n!できること\n*個人用のメモ、備忘録など情報整理に適しています\n*強力な検索機能を持っています。正規表現やインクリメンタル検索も可能です。\n*new journal機能で日付をタイトルとすれば、blog的に使うこともできます。\n*TiddlyWikiファイルをウェブサーバ上に置いて公開することもできます。このとき当然ながらブラウザでの編集はできなくなるので、「HTTP経由のアクセスの場合編集メニューを出さない」というオプションがあります。\n*サイト名、初期表示ページ、配色、レイアウト等のカスタマイズはソースコードを変更しなくても、記事を編集することで可能です。\n*多くのマクロやプラグインが公開されているため、それらを組み込んで(記事にペーストする)、機能拡張することができます。\n*さらにJavaScriptのソースコードを解析する能力があれば、自分でマクロやプラグインを作成することもできます。\n!できないこと\n*サーバ型Wikiの特徴である「複数人で更新する」という目的にはあまり向いていません。ファイル共有をすればできますが、排他制御をしていないため誰かの修正を他の人が上書きして消してしまうおそれがあります。\n*トラックバックやコメントの機能はありません。(マクロを使えば擬似的に実現可能です。[[コメント/トラックバック機能の実現]]を参照してください)\n\n----\n前:[[1.はじめに]] 次:[[3.TiddlyWikiはここがすごい!]]\n
\n!サーバ不要のWiki\nサーバ型Wikiの複雑な機能をHTMLファイル内のJavaScriptだけで実現しています。そのためWikiの操作性と単一ファイルの携帯性が最大の特長です。これにより非常に強力なパーソナル情報ツールとなっています。\n*イベントの予定、欲しい物リスト、読んだ本の感想など、ちょっとしたメモを備忘録的に残す\n*ネットで公開しない日記をblog形式で書く\n*TipsやFAQを少しずつ蓄積する\n*USBメモリに入れて外出先でもメモや資料として使用する(Wiki on a stickと言われています)\n整理できないメモやリストがどんどんたまってしまう人は、この手帳よりも検索性に優れ、付箋紙よりも整理しやすく、Wikiサーバよりも手軽なTiddlyWikiをぜひ試してみてください。\n\n!柔軟なカスタマイズ\nメニューにもOptionsがありますが、それ以外にも見た目や操作性のかなりの部分をカスタマイズできます。\nカスタマイズ機能のほとんどがtiddler(記事)で提供されていて、たとえばSiteTitleという記事の内容を変更するとページのタイトルが変更される、というように操作はきわめてスマートです。\n\n----\n前:[[2.TiddlyWikiのできることできないこと]]