Welcome to TiddlyWiki created by Jeremy Ruston, Copyright © 2007 UnaMesa Association
A (materiális) ekvivalencia igazságtáblázata:
| $\equiv$ | 0 | 1 |
| 0 | 1 | 0 |
| 1 | 0 | 1 |
*Tipikus természetes nyelvi alakja: ... akkor és csak akkor, ha ...
*Legyen $A,B\in Form$. $(A\equiv B)$ kiolvasása:
**$A$ akkor és csak akkor, ha $B$.
**$A$ ekvivalens $B$(-vel).
**$A$ materiálisan ekvivalens $B$(-vel).
*A materiális jelzőt gyakran elhagyjuk. Szerepeltetését pusztán az indokolja, hogy megkülönböztessük a (materiális) ekvivalencia műveletét a logikai ekvivalencia relációjától.
!!A (materiális) ekvivalencia tulajdonságai
*$\models (A\equiv A)$
*$\models \neg(A\equiv \neg A)$
*Kommutatív: $(A\equiv B)\Leftrightarrow (B\equiv A)$
*Asszociatív: $(A\equiv (B\equiv C))\Leftrightarrow ((A\equiv B)\equiv C)$
!!Definíció (bevezető szabály)
${\Gamma , A\vdash B\quad \Gamma , B\vdash A}\over{\Gamma \vdash A\equiv B}$
!!Definíció (alkalmazó szabályok)
${\Gamma \vdash A\quad \Gamma \vdash A\equiv B}\over{\Gamma \vdash B}\qquad {\Gamma \vdash B\quad \Gamma \vdash A\equiv B}\over{\Gamma \vdash A}$
!!!Megjegyzés
*Kétoldali disztributivitás:
*$(A\vee(B\wedge C))\Leftrightarrow ((A\vee B)\wedge(A\vee C))$ (A diszjunkció disztributív a konjunkcióra nézve.)
*$(A\wedge(B\vee C))\Leftrightarrow ((A\wedge B)\vee(A\wedge C))$ (A konjunkció disztributiv a diszjunkcióra nézve.)
*Elnyelési tulajdonság:
**$(A\wedge(B\vee A))\Leftrightarrow A$
**$(A\vee(B\wedge A))\Leftrightarrow A$
*De Morgan törvények
**Mit állítunk akkor, amikor egy konjunkciót tagadunk?
***$\neg(A\wedge B)\Leftrightarrow (\neg A\vee \neg B)$
**Mit állítunk akkor amikor egy diszjunkció tagadunk?
***$\neg(A\vee B)\Leftrightarrow (\neg A\wedge \neg B)$
**A De Morgan törvények azt fejezik ki, hogy a konjunkció és a diszjunkció egymás duálisai.
*A második De Morgan törvény bizonyítása
| $A$ | $B$ | $\neg A$ | $\neg B$ | $(\neg A\wedge\neg B)$ | $(A\vee B)$ | $\neg(A\vee B)$ |
| 0 | 0 | 1 | 1 | 1 | 0 | 1 |
| 0 | 1 | 1 | 0 | 0 | 1 | 0 |
| 1 | 0 | 0 | 1 | 0 | 1 | 0 |
| 1 | 1 | 0 | 0 | 0 | 1 | 0 |
!Arisztotelész(Kr.e. 384-322)
@@font-family:"Arial";
* A bizonyító érvelés:
**az érvelések során le lehet (és le kell) választani a [[premisszák|Premissza]] igazságát és a következtetés helyességét. A bizonyító érvelések megítélésénél az utóbbi vizsgálata történik meg.
* Az ellentmondás elve:
**"A legbiztosabb alapelv ... ez: lehetetlen, hogy egy és ugyanaz a valami ugyanakkor, ugyanabban a tekintetben ... vonatkozzék is valamire, meg nem is." (1005b19-23)
*A kizárt harmadik elve:
**"Az ellentmondás két tagja között nem állhat fenn semmi közbeeső, hanem mindenről mindent vagy állítani vagy tagadni kell." (1011b 23-24)@@
{{fourcolumns{
<<allTags>>
}}}
<<tiddler [[IntroTreeview]]>>
<html><span style="padding-right:0.15em;" macro='monkeyTagger status'></span> </html>
text/plain
.txt .text .js .vbs .asp .cgi .pl
----
text/html
.htm .html .hta .htx .mht
----
text/comma-separated-values
.csv
----
text/javascript
.js
----
text/css
.css
----
text/xml
.xml .xsl .xslt
----
image/gif
.gif
----
image/jpeg
.jpg .jpe .jpeg
----
image/png
.png
----
image/bmp
.bmp
----
image/tiff
.tif .tiff
----
audio/basic
.au .snd
----
audio/wav
.wav
----
audio/x-pn-realaudio
.ra .rm .ram
----
audio/x-midi
.mid .midi
----
audio/mp3
.mp3
----
audio/m3u
.m3u
----
video/x-ms-asf
.asf
----
video/avi
.avi
----
video/mpeg
.mpg .mpeg
----
video/quicktime
.qt .mov .qtvr
----
application/pdf
.pdf
----
application/rtf
.rtf
----
application/postscript
.ai .eps .ps
----
application/wordperfect
.wpd
----
application/mswrite
.wri
----
application/msexcel
.xls .xls3 .xls4 .xls5 .xlw
----
application/msword
.doc
----
application/mspowerpoint
.ppt .pps
----
application/x-director
.swa
----
application/x-shockwave-flash
.swf
----
application/x-zip-compressed
.zip
----
application/x-gzip
.gz
----
application/x-rar-compressed
.rar
----
application/octet-stream
.com .exe .dll .ocx
----
application/java-archive
.jar
/***
|Name|AttachFilePlugin|
|Source|http://www.TiddlyTools.com/#AttachFilePlugin|
|Documentation|http://www.TiddlyTools.com/#AttachFilePluginInfo|
|Version|3.9.0|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|plugin|
|Requires|AttachFilePluginFormatters, AttachFileMIMETypes|
|Overrides||
|Description|Store binary files as base64-encoded tiddlers with fallback links for separate local and/or remote file storage|
Store or link binary files (such as jpg, gif, pdf or even mp3) within your TiddlyWiki document and then use them as images or links from within your tiddler content.
> Important note: As of version 3.6.0, in order to //render// images and other binary attachments created with this plugin, you must also install [[AttachFilePluginFormatters]], which extends the behavior of the TiddlyWiki core formatters for embedded images ({{{[img[tooltip|image]]}}}), linked embedded images ({{{[img[tooltip|image][link]]}}}), and external/"pretty" links ({{{[[label|link]]}}}), so that these formatter will process references to attachment tiddlers as if a normal file reference had been provided. |
!!!!!Documentation
>see [[AttachFilePluginInfo]]
!!!!!Inline interface (live)
>see [[AttachFile]] (shadow tiddler)
><<tiddler AttachFile>>
!!!!!Revisions
<<<
2008.07.21 [3.9.0] Fixup for FireFox 3: use HTML with separate text+button control instead of type='file' control
|please see [[AttachFilePluginInfo]] for additional revision details|
2005.07.20 [1.0.0] Initial Release
<<<
!!!!!Code
***/
// // version
//{{{
version.extensions.AttachFilePlugin= {major: 3, minor: 9, revision: 0, date: new Date(2008,7,21)};
// shadow tiddler
config.shadowTiddlers.AttachFile="<<attach inline>>";
// add 'attach' backstage task (insert before built-in 'importTask')
if (config.tasks) { // for TW2.2b or above
config.tasks.attachTask = {
text: "attach",
tooltip: "Attach a binary file as a tiddler",
content: "<<attach inline>>"
}
config.backstageTasks.splice(config.backstageTasks.indexOf("importTask"),0,"attachTask");
}
config.macros.attach = {
// // lingo
//{{{
label: "attach file",
tooltip: "Attach a file to this document",
linkTooltip: "Attachment: ",
typeList: "AttachFileMIMETypes",
titlePrompt: " enter tiddler title...",
MIMEPrompt: "<option value=''>select MIME type...</option><option value='editlist'>[edit list...]</option>",
localPrompt: " enter local path/filename...",
URLPrompt: " enter remote URL...",
tiddlerErr: "Please enter a tiddler title",
sourceErr: "Please enter a source path/filename",
storageErr: "Please select a storage method: embedded, local or remote",
MIMEErr: "Unrecognized file format. Please select a MIME type",
localErr: "Please enter a local path/filename",
URLErr: "Please enter a remote URL",
fileErr: "Invalid path/file or file not found",
sourceReport: "| source file:|{{{%0}}}|\n",
nosourceReport: "| source file:|//none//|\n",
dateReport: "| attached on:|%0 by %1|\n",
notesReport: "| description:|%0|\n",
dataReport: "| embedded:|[[%0|%0]] - {{{type=%1, size=%2 bytes, encoded=%3 bytes}}}|\n",
nodataReport: "| embedded:|//none//|\n",
localReport: "| local file:|/%LOCAL_LINK%/[[%0|%1]]|\n",
nolocalReport: "| local file:|//none//|\n",
URLReport: "| remote link:|/%REMOTE_LINK%/[[%0|%0]]|\n",
noURLReport: "| remote link:|//none//|\n",
imageReport: "image\n<<<\nusage: {{{[img[tooltip|%0]] or [img[tooltip|%0][link]]}}}\n[img[tooltip|%0]]\n<<<\n",
dataBlock: "\n/% DO NOT EDIT BELOW THIS POINT\n---BEGIN_DATA---\n%0;base64,\n%1\n---END_DATA---\n%/",
//}}}
// // macro definition
//{{{
handler:
function(place,macroName,params) {
if (params && !params[0]) { createTiddlyButton(place,this.label,this.tooltip,this.toggleAttachPanel); return; }
var id=params.shift();
this.createAttachPanel(place,id+"_attachPanel",params);
document.getElementById(id+"_attachPanel").style.position="static";
document.getElementById(id+"_attachPanel").style.display="block";
},
//}}}
//{{{
createAttachPanel:
function(place,panel_id,params) {
if (!panel_id || !panel_id.length) var panel_id="_attachPanel";
// remove existing panel (if any)
var panel=document.getElementById(panel_id); if (panel) panel.parentNode.removeChild(panel);
// set styles for this panel
setStylesheet(this.css,"attachPanel");
// create new panel
var title=""; if (params && params[0]) title=params.shift();
var types=this.MIMEPrompt+this.formatListOptions(store.getTiddlerText(this.typeList)); // get MIME types
panel=createTiddlyElement(place,"span",panel_id,"attachPanel",null);
var html=this.html.replace(/%id%/g,panel_id);
html=html.replace(/%title%/g,title);
html=html.replace(/%disabled%/g,title.length?"disabled":"");
html=html.replace(/%IEdisabled%/g,config.browser.isIE?"disabled":"");
html=html.replace(/%types%/g,types);
panel.innerHTML=html;
if (config.browser.isGecko) { // FF3 FIXUP
document.getElementById("attachSource").style.display="none";
document.getElementById("attachFixPanel").style.display="block";
}
return panel;
},
//}}}
//{{{
toggleAttachPanel:
function (e) {
if (!e) var e = window.event;
var parent=resolveTarget(e).parentNode;
var panel = document.getElementById("_attachPanel");
if (panel==undefined || panel.parentNode!=parent)
panel=config.macros.attach.createAttachPanel(parent,"_attachPanel");
var isOpen = panel.style.display=="block";
if(config.options.chkAnimate)
anim.startAnimating(new Slider(panel,!isOpen,e.shiftKey || e.altKey,"none"));
else
panel.style.display = isOpen ? "none" : "block" ;
e.cancelBubble = true;
if (e.stopPropagation) e.stopPropagation();
return(false);
},
//}}}
//{{{
formatListOptions:
function(text) {
if (!text || !text.trim().length) return "";
// get MIME list content from text
var parts=text.split("\n----\n");
var out="";
for (var p=0; p<parts.length; p++) {
var lines=parts[p].split("\n");
var label=lines.shift(); // 1st line=display text
var value=lines.shift(); // 2nd line=item value
out +='<option value="%1">%0</option>'.format([label,value]);
}
return out;
},
//}}}
// // interface definition
//{{{
css:
".attachPanel { display: none; position:absolute; z-index:10; width:35em; right:105%; top:0em;\
background-color: #eee; color:#000; font-size: 8pt; line-height:110%;\
border:1px solid black; border-bottom-width: 3px; border-right-width: 3px;\
padding: 0.5em; margin:0em; -moz-border-radius:1em;-webkit-border-radius:1em; text-align:left }\
.attachPanel form { display:inline;border:0;padding:0;margin:0; }\
.attachPanel select { width:99%;margin:0px;font-size:8pt;line-height:110%;}\
.attachPanel input { width:98%;padding:0px;margin:0px;font-size:8pt;line-height:110%}\
.attachPanel textarea { width:98%;margin:0px;height:2em;font-size:8pt;line-height:110%}\
.attachPanel table { width:100%;border:0;margin:0;padding:0;color:inherit; }\
.attachPanel tbody, .attachPanel tr, .attachPanel td { border:0;margin:0;padding:0;color:#000; }\
.attachPanel .box { border:1px solid black; padding:.3em; margin:.3em 0px; background:#f8f8f8; -moz-border-radius:5px;-webkit-border-radius:5px; }\
.attachPanel .chk { width:auto;border:0; }\
.attachPanel .btn { width:auto; }\
.attachPanel .btn2 { width:49%; }\
",
//}}}
//{{{
html:
'<form>\
attach from source file\
<input type="file" id="attachSource" name="source" size="56"\
onChange="config.macros.attach.onChangeSource(this)">\
<div id="attachFixPanel" style="display:none"><!-- FF3 FIXUP -->\
<input type="text" id="attachFixSource" style="width:90%"\
title="Enter a path/file to attach"\
onChange="config.macros.attach.onChangeSource(this);">\
<input type="button" style="width:7%" value="..."\
title="Enter a path/file to attach"\
onClick="config.macros.attach.askForFilename(document.getElementById(\'attachFixSource\'));">\
</div><!--end FF3 FIXUP-->\
<div class="box">\
<table style="border:0"><tr style="border:0"><td style="border:0;text-align:right;width:1%;white-space:nowrap">\
embed data <input type=checkbox class=chk name="useData" %IEdisabled% \
onclick="if (!this.form.MIMEType.value.length)\
this.form.MIMEType.selectedIndex=this.checked?1:0; "> \
</td><td style="border:0">\
<select size=1 name="MIMEType" \
onchange="this.title=this.value; if (this.value==\'editlist\')\
{ this.selectedIndex=this.form.useData.checked?1:0; story.displayTiddler(null,config.macros.attach.typeList,2); return; }">\
<option value=""></option>\
%types%\
</select>\
</td></tr><tr style="border:0"><td style="border:0;text-align:right;width:1%;white-space:nowrap">\
local link <input type=checkbox class=chk name="useLocal"\
onclick="this.form.local.value=this.form.local.defaultValue=this.checked?config.macros.attach.localPrompt:\'\';"> \
</td><td style="border:0">\
<input type=text name="local" size=15 autocomplete=off value=""\
onchange="this.form.useLocal.checked=this.value.length" \
onkeyup="this.form.useLocal.checked=this.value.length" \
onfocus="if (!this.value.length) this.value=config.macros.attach.localPrompt; this.select()">\
</td></tr><tr style="border:0"><td style="border:0;text-align:right;width:1%;white-space:nowrap">\
remote link <input type=checkbox class=chk name="useURL"\
onclick="this.form.URL.value=this.form.URL.defaultValue=this.checked?config.macros.attach.URLPrompt:\'\';\"> \
</td><td style="border:0">\
<input type=text name="URL" size=15 autocomplete=off value=""\
onfocus="if (!this.value.length) this.value=config.macros.attach.URLPrompt; this.select()"\
onchange="this.form.useURL.checked=this.value.length;"\
onkeyup="this.form.useURL.checked=this.value.length;">\
</td></tr></table>\
</div>\
<table style="border:0"><tr style="border:0"><td style="border:0;text-align:right;width:1%;white-space:nowrap">\
attach as \
</td><td style="border:0" colspan=2>\
<input type=text name="tiddlertitle" size=15 autocomplete=off value="%title%"\
onkeyup="if (!this.value.length) { this.value=config.macros.attach.titlePrompt; this.select(); }"\
onfocus="if (!this.value.length) this.value=config.macros.attach.titlePrompt; this.select()" %disabled%>\
</td></tr><tr style="border:0"><td style="border:0;text-align:right;width:1%;white-space:nowrap">\
description \
</td><td style="border:0" colspan=2>\
<input type=text name="notes" size=15 autocomplete=off>\
</td></tr><tr style="border:0"><td style="border:0;text-align:right;width:1%;white-space:nowrap">\
add tags \
</td><td style="border:0">\
<input type=text name="tags" size=15 autocomplete=off value="" onfocus="this.select()">\
</td><td style="width:40%;text-align:right;border:0">\
<input type=button class=btn2 value="attach"\
onclick="config.macros.attach.onClickAttach(this)"><!--\
--><input type=button class=btn2 value="close"\
onclick="var panel=document.getElementById(\'%id%\'); if (panel) panel.parentNode.removeChild(panel);">\
</td></tr></table>\
</form>',
//}}}
// // control processing
//{{{
onChangeSource:
function(here) {
var form=here.form;
var list=form.MIMEType;
var theFilename = here.value;
var theExtension = theFilename.substr(theFilename.lastIndexOf('.')).toLowerCase();
// if theFilename is in current document folder, remove path prefix and use relative reference
var h=document.location.href; folder=getLocalPath(decodeURIComponent(h.substr(0,h.lastIndexOf("/")+1)));
if (theFilename.substr(0,folder.length)==folder) theFilename='./'+theFilename.substr(folder.length);
else theFilename='file:///'+theFilename; // otherwise, use absolute reference
theFilename=theFilename.replace(/\\/g,"/"); // fixup: change \ to /
form.useLocal.checked = true;
form.local.value = theFilename;
form.useData.checked = !form.useData.disabled;
list.selectedIndex=1;
for (var i=0; i<list.options.length; i++) // find matching MIME type
if (list.options[i].value.indexOf(theExtension)!=-1) { list.selectedIndex = i; break; }
if (!form.tiddlertitle.disabled)
form.tiddlertitle.value=theFilename.substr(theFilename.lastIndexOf('/')+1); // get tiddlername from filename
},
//}}}
//{{{
onClickAttach:
function (here) {
clearMessage();
// get input values
var form=here.form;
var src=form.source; if (config.browser.isGecko) src=document.getElementById("attachFixSource");
var theDate=(new Date()).formatString(config.macros.timeline.dateFormat);
var theSource = src.value!=src.defaultValue?src.value:"";
var theTitle=form.tiddlertitle.value;
var theLocal = form.local.value!=form.local.defaultValue?form.local.value:"";
var theURL = form.URL.value!=form.URL.defaultValue?form.URL.value:"";
var theNotes = form.notes.value;
var theTags = "attachment excludeMissing "+form.tags.value;
var useData=form.useData.checked;
var useLocal=form.useLocal.checked;
var useURL=form.useURL.checked;
var theMIMEType = form.MIMEType.value.length?form.MIMEType.options[form.MIMEType.selectedIndex].text:"";
// validate checkboxes and get filename
if (useData) {
if (theSource.length) { if (!theLocation) var theLocation=theSource; }
else { alert(this.sourceErr); src.focus(); return false; }
}
if (useLocal) {
if (theLocal.length) { if (!theLocation) var theLocation = theLocal; }
else { alert(this.localErr); form.local.focus(); return false; }
}
if (useURL) {
if (theURL.length) { if (!theLocation) var theLocation = theURL; }
else { alert(this.URLErr); form.URL.focus(); return false; }
}
if (!(useData||useLocal||useURL))
{ form.useData.focus(); alert(this.storageErr); return false; }
if (!theLocation)
{ src.focus(); alert(this.sourceErr); return false; }
if (!theTitle || !theTitle.trim().length || theTitle==this.titlePrompt)
{ form.tiddlertitle.focus(); alert(this.tiddlerErr); return false; }
// if not already selected, determine MIME type based on filename extension (if any)
if (useData && !theMIMEType.length && theLocation.lastIndexOf('.')!=-1) {
var theExt = theLocation.substr(theLocation.lastIndexOf('.')).toLowerCase();
var theList=form.MIMEType;
for (var i=0; i<theList.options.length; i++)
if (theList.options[i].value.indexOf(theExt)!=-1)
{ var theMIMEType=theList.options[i].text; theList.selectedIndex=i; break; }
}
// attach the file
return this.createAttachmentTiddler(theSource, theDate, theNotes, theTags, theTitle,
useData, useLocal, useURL, theLocal, theURL, theMIMEType);
},
getMIMEType:
function(src,def) {
var ext = src.substr(src.lastIndexOf('.')).toLowerCase();
var list=store.getTiddlerText(this.typeList);
if (!list || !list.trim().length) return def;
// get MIME list content from tiddler
var parts=list.split("\n----\n");
for (var p=0; p<parts.length; p++) {
var lines=parts[p].split("\n");
var mime=lines.shift(); // 1st line=MIME type
var match=lines.shift(); // 2nd line=matching extensions
if (match.indexOf(ext)!=-1) return mime;
}
return def;
},
createAttachmentTiddler:
function (theSource, theDate, theNotes, theTags, theTitle,
useData, useLocal, useURL, theLocal, theURL, theMIMEType, noshow) {
// encode the data
if (useData) {
if (!theMIMEType.length) {
alert(this.MIMEErr);
form.MIMEType.selectedIndex=1; form.MIMEType.focus();
return false;
}
var theData = this.readFile(theSource); if (!theData) { return false; }
displayMessage('encoding '+theSource);
var theEncoded = this.encodeBase64(theData);
displayMessage('file size='+theData.length+' bytes, encoded size='+theEncoded.length+' bytes');
}
// generate tiddler and refresh
var theText = "";
theText +=theSource.length?this.sourceReport.format([theSource]):this.nosourceReport;
theText +=this.dateReport.format([theDate,config.options.txtUserName]);
theText +=theNotes.length?this.notesReport.format([theNotes]):"";
theText +=useData?this.dataReport.format([theTitle,theMIMEType,theData.length,theEncoded.length]):this.nodataReport;
theText +=useLocal?this.localReport.format([theLocal,theLocal.replace(/\\/g,"/")]):this.nolocalReport;
theText +=useURL?this.URLReport.format([theURL]):this.noURLReport;
theText +=(theMIMEType.substr(0,5)=="image")?this.imageReport.format([theTitle]):"";
theText +=useData?this.dataBlock.format([theMIMEType,theEncoded]):"";
store.saveTiddler(theTitle,theTitle,theText,config.options.txtUserName,new Date(),theTags);
var panel=document.getElementById("attachPanel"); if (panel) panel.style.display="none";
if (!noshow) { story.displayTiddler(null,theTitle); story.refreshTiddler(theTitle,null,true); }
displayMessage('attached "'+theTitle+'"');
return true;
},
//}}}
// // base64 conversion
//{{{
encodeBase64:
function (theData) {
if (!theData) return null;
// encode as base64
var keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
var out="";
var chr1,chr2,chr3="";
var enc1,enc2,enc3,enc4="";
for (var count=0,i=0; i<theData.length; ) {
chr1=theData.charCodeAt(i++);
chr2=theData.charCodeAt(i++);
chr3=theData.charCodeAt(i++);
enc1=chr1 >> 2;
enc2=((chr1 & 3) << 4) | (chr2 >> 4);
enc3=((chr2 & 15) << 2) | (chr3 >> 6);
enc4=chr3 & 63;
if (isNaN(chr2)) enc3=enc4=64;
else if (isNaN(chr3)) enc4=64;
out+=keyStr.charAt(enc1)+keyStr.charAt(enc2)+keyStr.charAt(enc3)+keyStr.charAt(enc4);
chr1=chr2=chr3=enc1=enc2=enc3=enc4="";
count+=4; if (count>60) { out+='\n'; count=0; } // add line break every 60 chars for readability
}
return out;
},
decodeBase64: function(input) {
var out="";
var chr1,chr2,chr3;
var enc1,enc2,enc3,enc4;
var i = 0;
// remove all characters that are not A-Z, a-z, 0-9, +, /, or =
input=input.replace(/[^A-Za-z0-9\+\/\=]/g, "");
do {
enc1=keyStr.indexOf(input.charAt(i++));
enc2=keyStr.indexOf(input.charAt(i++));
enc3=keyStr.indexOf(input.charAt(i++));
enc4=keyStr.indexOf(input.charAt(i++));
chr1=(enc1 << 2) | (enc2 >> 4);
chr2=((enc2 & 15) << 4) | (enc3 >> 2);
chr3=((enc3 & 3) << 6) | enc4;
out=out+String.fromCharCode(chr1);
if (enc3!=64) out=out+String.fromCharCode(chr2);
if (enc4!=64) out=out+String.fromCharCode(chr3);
} while (i<input.length);
return out;
},
//}}}
// // I/O functions
//{{{
readFile: // read local BINARY file data
function(filePath) {
if(!window.Components) { return null; }
try { netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); }
catch(e) { alert("access denied: "+filePath); return null; }
var file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
try { file.initWithPath(filePath); } catch(e) { alert("cannot read file - invalid path: "+filePath); return null; }
if (!file.exists()) { alert("cannot read file - not found: "+filePath); return null; }
var inputStream = Components.classes["@mozilla.org/network/file-input-stream;1"].createInstance(Components.interfaces.nsIFileInputStream);
inputStream.init(file, 0x01, 00004, null);
var bInputStream = Components.classes["@mozilla.org/binaryinputstream;1"].createInstance(Components.interfaces.nsIBinaryInputStream);
bInputStream.setInputStream(inputStream);
return(bInputStream.readBytes(inputStream.available()));
},
//}}}
//{{{
writeFile:
function(filepath,data) {
// TBD: decode base64 and write BINARY data to specified local path/filename
return(false);
},
//}}}
//{{{
askForFilename: // for FF3 fixup
function(target) {
var msg=config.messages.selectFile;
if (target && target.title) msg=target.title; // use target field tooltip (if any) as dialog prompt text
// get local path for current document
var path=getLocalPath(document.location.href);
var p=path.lastIndexOf("/"); if (p==-1) p=path.lastIndexOf("\\"); // Unix or Windows
if (p!=-1) path=path.substr(0,p+1); // remove filename, leave trailing slash
var file=""
var result=window.mozAskForFilename(msg,path,file,true); // FF3 FIXUP ONLY
if (target && result.length) // set target field and trigger handling
{ target.value=result; target.onchange(); }
return result;
}
};
//}}}
//{{{
if (window.mozAskForFilename===undefined) { // also defined by CoreTweaks (for ticket #604)
window.mozAskForFilename=function(msg,path,file,mustExist) {
if(!window.Components) return false;
try {
netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');
var nsIFilePicker = window.Components.interfaces.nsIFilePicker;
var picker = Components.classes['@mozilla.org/filepicker;1'].createInstance(nsIFilePicker);
picker.init(window, msg, mustExist?nsIFilePicker.modeOpen:nsIFilePicker.modeSave);
var thispath = Components.classes['@mozilla.org/file/local;1'].createInstance(Components.interfaces.nsILocalFile);
thispath.initWithPath(path);
picker.displayDirectory=thispath;
picker.defaultExtension='';
picker.defaultString=file;
picker.appendFilters(nsIFilePicker.filterAll|nsIFilePicker.filterText|nsIFilePicker.filterHTML);
if (picker.show()!=nsIFilePicker.returnCancel)
var result=picker.file.persistentDescriptor;
}
catch(ex) { displayMessage(ex.toString()); }
return result;
}
}
//}}}
/***
|Name|AttachFilePluginFormatters|
|Source|http://www.TiddlyTools.com/#AttachFilePluginFormatters|
|Version|3.7.0|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1.3|
|Type|plugin|
|Requires||
|Overrides|'image' and 'prettyLink' formatters, TiddlyWiki.prototype.getRecursiveTiddlerText|
|Description|run-time library for displaying attachment tiddlers|
This plugin provides "stand-alone" processing for //rendering// attachment tiddlers created by [[AttachFilePlugin]]. Attachment tiddlers are tagged with<<tag attachment>>and contain binary file content (e.g., jpg, gif, pdf, mp3, etc.) that has been stored directly as base64 text-encoded data or can be loaded from external files stored on a local filesystem or remote web server.
NOTE: This plugin does not include the "control panel" and supporting functions needed to //create// new attachment tiddlers. Those features are provided by [[AttachFilePlugin]], which can be installed while building your document, and then safely omitted to reduce the overall file size when you publish your finished document (assuming you don't intend to create any additional attachment tiddlers in that document)
!!!!!Formatters
<<<
This plugin extends the behavior of the following TiddlyWiki core "wikify()" formatters:
* embedded images: {{{[img[tooltip|image]]}}}
* linked embedded images: {{{[img[tooltip|image][link]]}}}
* external/"pretty" links: {{{[[label|link]]}}}
''Please refer to AttachFilePlugin (source: http://www.TiddlyTools.com/#AttachFilePlugin) for additional information.''
<<<
!!!!!Revisions
<<<
2007.12.04 [*.*.*] update for TW2.3.0: replaced deprecated core functions, regexps, and macros
2007.10.29 [3.7.0] more code reduction: removed upload handling from AttachFilePlugin (saves ~7K!)
2007.10.28 [3.6.0] removed duplicate formatter code from AttachFilePlugin (saves ~10K!) and updated documentation accordingly. This plugin ([[AttachFilePluginFormatters]]) is now //''required''// in order to display attached images/binary files within tiddler content.
2006.05.20 [3.4.0] through 2007.03.01 [3.5.3] sync with AttachFilePlugin
2006.05.13 [3.2.0] created from AttachFilePlugin v3.2.0
<<<
!!!!!Code
***/
// // version
//{{{
version.extensions.AttachFilePluginFormatters= {major: 3, minor: 7, revision: 0, date: new Date(2007,10,28)};
//}}}
//{{{
if (config.macros.attach==undefined) config.macros.attach= { };
//}}}
//{{{
if (config.macros.attach.isAttachment==undefined) config.macros.attach.isAttachment=function (title) {
var tiddler = store.getTiddler(title);
if (tiddler==undefined || tiddler.tags==undefined) return false;
return (tiddler.tags.indexOf("attachment")!=-1);
}
//}}}
//{{{
// test for local file existence
// Returns true/false without visible error display
// Uses Components for FF and ActiveX FSO object for MSIE
if (config.macros.attach.fileExists==undefined) config.macros.attach.fileExists=function(theFile) {
var found=false;
// DEBUG: alert('testing fileExists('+theFile+')...');
if(window.Components) {
try { netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); }
catch(e) { return false; } // security access denied
var file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
try { file.initWithPath(theFile); }
catch(e) { return false; } // invalid directory
found = file.exists();
}
else { // use ActiveX FSO object for MSIE
var fso = new ActiveXObject("Scripting.FileSystemObject");
found = fso.FileExists(theFile)
}
// DEBUG: alert(theFile+" "+(found?"exists":"not found"));
return found;
}
//}}}
//{{{
if (config.macros.attach.getAttachment==undefined) config.macros.attach.getAttachment=function(title) {
// extract embedded data, local and remote links (if any)
var startmarker="---BEGIN_DATA---\n";
var endmarker="\n---END_DATA---";
var pos=0; var endpos=0;
var text = store.getTiddlerText(title);
var embedded="";
var locallink="";
var remotelink="";
// look for embedded data, convert to data: URI
if ((pos=text.indexOf(startmarker))!=-1 && (endpos=text.indexOf(endmarker))!=-1)
embedded="data:"+(text.substring(pos+startmarker.length,endpos)).replace(/\n/g,'');
if (embedded.length && !config.browser.isIE)
return embedded; // use embedded data if any... except for IE, which doesn't support data URI
// no embedded data... fallback to local/remote reference links...
// look for 'attachment link markers'
if ((pos=text.indexOf("/%LOCAL_LINK%/"))!=-1)
locallink=text.substring(text.indexOf("|",pos)+1,text.indexOf("]]",pos));
if ((pos=text.indexOf("/%REMOTE_LINK%/"))!=-1)
remotelink=text.substring(text.indexOf("|",pos)+1,text.indexOf("]]",pos));
// document is being served remotely... use remote URL (if any) (avoids security alert)
if (remotelink.length && document.location.protocol!="file:")
return remotelink;
// local link only... return link without checking file existence (avoids security alert)
if (locallink.length && !remotelink.length)
return locallink;
// local link, check for file exist... use local link if found
if (locallink.length) {
if (this.fileExists(getLocalPath(locallink))) return locallink;
// maybe local link is relative... add path from current document and try again
var pathPrefix=document.location.href; // get current document path and trim off filename
var slashpos=pathPrefix.lastIndexOf("/"); if (slashpos==-1) slashpos=pathPrefix.lastIndexOf("\\");
if (slashpos!=-1 && slashpos!=pathPrefix.length-1) pathPrefix=pathPrefix.substr(0,slashpos+1);
if (this.fileExists(getLocalPath(pathPrefix+locallink))) return locallink;
}
// no embedded data, no local (or not found), fallback to remote URL (if any)
if (remotelink.length)
return remotelink;
return ""; // attachment URL doesn't resolve
}
//}}}
//{{{
if (config.macros.attach.init_formatters==undefined) config.macros.attach.init_formatters=function() {
if (this.initialized) return;
// find the formatter for "image" and replace the handler
for (var i=0; i<config.formatters.length && config.formatters[i].name!="image"; i++);
if (i<config.formatters.length) config.formatters[i].handler=function(w) {
this.lookaheadRegExp.lastIndex = w.matchStart;
var lookaheadMatch = this.lookaheadRegExp.exec(w.source)
if(lookaheadMatch && lookaheadMatch.index == w.matchStart) // Simple bracketted link
{
var e = w.output;
if(lookaheadMatch[5])
{
var link = lookaheadMatch[5];
// ELS -------------
var external=config.formatterHelpers.isExternalLink(link);
if (external)
{
if (config.macros.attach.isAttachment(link))
{
e = createExternalLink(w.output,link);
e.href=config.macros.attach.getAttachment(link);
e.title = config.macros.attach.linkTooltip + link;
}
else
e = createExternalLink(w.output,link);
}
else
e = createTiddlyLink(w.output,link,false,null,w.isStatic);
// ELS -------------
addClass(e,"imageLink");
}
var img = createTiddlyElement(e,"img");
if(lookaheadMatch[1])
img.align = "left";
else if(lookaheadMatch[2])
img.align = "right";
if(lookaheadMatch[3])
img.title = lookaheadMatch[3];
img.src = lookaheadMatch[4];
// ELS -------------
if (config.macros.attach.isAttachment(lookaheadMatch[4]))
img.src=config.macros.attach.getAttachment(lookaheadMatch[4]);
// ELS -------------
w.nextMatch = this.lookaheadRegExp.lastIndex;
}
}
//}}}
//{{{
// find the formatter for "prettyLink" and replace the handler
for (var i=0; i<config.formatters.length && config.formatters[i].name!="prettyLink"; i++);
if (i<config.formatters.length) {
config.formatters[i].handler=function(w) {
this.lookaheadRegExp.lastIndex = w.matchStart;
var lookaheadMatch = this.lookaheadRegExp.exec(w.source);
if(lookaheadMatch && lookaheadMatch.index == w.matchStart) {
var e;
var text = lookaheadMatch[1];
if(lookaheadMatch[3]) {
// Pretty bracketted link
var link = lookaheadMatch[3];
if (config.macros.attach.isAttachment(link)) {
e = createExternalLink(w.output,link);
e.href=config.macros.attach.getAttachment(link);
e.title=config.macros.attach.linkTooltip+link;
}
else e = (!lookaheadMatch[2] && config.formatterHelpers.isExternalLink(link))
? createExternalLink(w.output,link)
: createTiddlyLink(w.output,link,false,null,w.isStatic);
} else {
e = createTiddlyLink(w.output,text,false,null,w.isStatic);
}
createTiddlyText(e,text);
w.nextMatch = this.lookaheadRegExp.lastIndex;
}
}
} // if "prettyLink" formatter found
this.initialized=true;
}
//}}}
//{{{
config.macros.attach.init_formatters(); // load time init
//}}}
//{{{
if (TiddlyWiki.prototype.coreGetRecursiveTiddlerText==undefined) {
TiddlyWiki.prototype.coreGetRecursiveTiddlerText = TiddlyWiki.prototype.getRecursiveTiddlerText;
TiddlyWiki.prototype.getRecursiveTiddlerText = function(title,defaultText,depth) {
return config.macros.attach.isAttachment(title)?
config.macros.attach.getAttachment(title):this.coreGetRecursiveTiddlerText.apply(this,arguments);
}
}
//}}}
/***
|Name|AttachFilePluginInfo|
|Source|http://www.TiddlyTools.com/#AttachFilePlugin|
|Documentation|http://www.TiddlyTools.com/#AttachFilePluginInfo|
|Version|3.9.0|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|plugin|
|Requires||
|Overrides||
|Description|Documentation for AttachFilePlugin|
Store or link binary files (such as jpg, gif, pdf or even mp3) within your TiddlyWiki document and then use them as images or links from within your tiddler content.
!!!!!Inline interface (live)
>see [[AttachFile]] (shadow tiddler)
><<tiddler AttachFile>>
!!!!!Syntax
<<<
''To display the attach file control panel, simply view the [[AttachFile]] shadow tiddler that is automatically created by the plugin, and contains an instance of the inline control panel.''. Or, you can write:
{{{
<<attach inline>>
}}}
in any tiddler to display the control panel embedded within that tiddler. Note: you can actually use any unique identifier in place of the "inline" keyword. Each unique id creates a separate instance of the controls. If the same ID is used in more than one tiddler, then the control panel is automatically moved to the most recently rendered location. Or, you can write:
{{{
<<attach>>
}}}
(with no ID parameter) in SidebarOptions. This adds a command link that opens the controls as a floating panel, positioned directly to the left of the sidebar.
<<<
!!!!!Usage
<<<
Binary file content can be stored in three different locations:
#embedded in the attachment tiddler (encoded as base64)
#on your filesystem (a 'local link' path/filename)
#on a web server (a 'remote link' URL)
The plugin creates an "attachment tiddler" for each file you attach. Regardless of where you store the binary content, your document can refer to the attachment tiddler rather than using a direct file or URL reference in your embedded image or external links, so that changing document locations will not require updating numerous tiddlers or copying files from one system to another.
> Important note: As of version 3.6.0, in order to //render// images and other binary attachments created with this plugin, you must also install [[AttachFilePluginFormatters]], which extends the behavior of the TiddlyWiki core formatters for embedded images ({{{[img[tooltip|image]]}}}), linked embedded images ({{{[img[tooltip|image][link]]}}}), and external/"pretty" links ({{{[[label|link]]}}}), so that these formatter will process references to attachment tiddlers as if a normal file reference had been provided. |
When you attach a file, a tiddler (tagged with<<tag attachment>>) is generated (using the source filename as the tiddler's title). The tiddler contains //''base64 text-encoded binary data''//, surrounded by {{{/%...%/}}} comment markers (so they are not visible when viewing the tiddler). The tiddler also includes summary details about the file: when it was attached, by whom, etc. and, if the attachment is an image file (jpg, gif, or png), the image is automatically displayed below the summary information.
>Note: although you can edit an attachment tiddler, ''don't change any of the encoded content below the attachment header'', as it has been prepared for use in the rest of your document, and even changing a single character can make the attachment unusable. //If needed, you ''can'' edit the header information or even the MIME type declaration in the attachment data, but be very careful not to change any of the base64-encoded binary data.//
With embedded data, your TW document can be completely self-contained...unfortunately, embedding just a few moderately-sized binary files using base64 text-encoding can dramatically increase the size of your document. To avoid this problem, you can create attachment tiddlers that define external local filesystem (file://) and/or remote web server (http://) 'reference' links, without embedding the binary data directly in the tiddler (i.e., uncheck "embed data" in the 'control panel').
These links provide an alternative source for the binary data: if embedded data is not found (or you are running on Internet Explorer, which does not currently support using embedded data), then the plugin tries the local filesystem reference. If a local file is not found, then the remote reference (if any) is used. This "fallback" approach also lets you 'virtualize' the external links in your document, so that you can access very large binary content such as PDFs, MP3's, and even *video* files, by using just a 'remote reference link' without embedding any data or downloading huge files to your hard disk.
Of course, when you //do// download an attached file, the local copy will be used instead of accessing a remote server each time, thereby saving bandwidth and allowing you to 'go mobile' without having to edit any tiddlers to alter the link locations...
<<<
!!!!!Syntax / Examples
<<<
To embed attached files as images or link to them from other tiddlers, use the standard ~TiddlyWiki image syntax ({{{[img[tooltip|filename]]}}}), linked image syntax ({{{[img[tooltip|filename][tiddlername]]}}}) , or "external link" syntax ({{{[[text|URL]]}}}), replacing the filename or URL that is normally entered with the title of an attachment tiddler.
embedded image data:
>{{{[img[Meow|AttachFileSample]]}}}
>[img[Meow|AttachFileSample]]
embedded image data with link to larger remote image:
>{{{[img[click for larger view|AttachFileSample][AttachFileSample2]]}}}
>[img[click for larger view|AttachFileSample][AttachFileSample2]]
'external' link to embedded image data:
>{{{[[click to view attachment|AttachFileSample]]}}}
>[[click to view attachment|AttachFileSample]]
'external' link to remote image:
>{{{[[click to view attachment|AttachFileSample2]]}}}
>[[click to view attachment|AttachFileSample2]]
regular ~TiddlyWiki links to attachment tiddlers:
>{{{[[AttachFileSample]]}}} [[AttachFileSample]]
>{{{[[AttachFileSample2]]}}} [[AttachFileSample2]]
<<<
!!!!!Defining MIME types
<<<
When you select a source file, a ''[[MIME|http://en.wikipedia.org/wiki/MIME]]'' file type is automatically suggested, based on filename extension. The AttachFileMIMETypes tiddler defines the list of MIME types that will be recognized by the plugin. Each MIME type definition consists of exactly two lines of text: the official MIME type designator (e.g., "text/plain", "image/gif", etc.), and a space-separated list of file extensions associated with that type. List entries are separated by "----" (horizontal rules).
<<<
!!!!!Known Limitations
<<<
Internet Explorer does not support the data: URI scheme, and cannot use the //embedded// data to render images or links. However, you can still use the local/remote link definitions to create file attachments that are stored externally. In addition, while it is relatively easy to read local //text// files, reading binary files is not directly supported by IE's FileSystemObject (FSO) methods, and other file I/O techniques are subject to security barriers or require additional MS proprietary technologies (like ASP or VB) that make implementation more difficult. As a result, you cannot //create// new attachment tiddlers using IE.
<<<
!!!!!Installation
<<<
Import (or copy/paste) the following tiddlers into your document:
* [[AttachFilePlugin]] (tagged with <<tag systemConfig>>)
* [[AttachFilePluginFormatters]] ("runtime distribution library") (tagged with <<tag systemConfig>>)
* [[AttachFileSample]] and [[AttachFileSample2]] //(tagged with <<tag attachment>>)//
* [[AttachFileMIMETypes]] //(defines binary file types)//
> Important note: As of version 3.6.0, in order to //render// images and other binary attachments created with this plugin, you must also install [[AttachFilePluginFormatters]], which extends the behavior of the TiddlyWiki core formatters for embedded images ({{{[img[tooltip|image]]}}}), linked embedded images ({{{[img[tooltip|image][link]]}}}), and external/"pretty" links ({{{[[label|link]]}}}), so that these formatter will process references to attachment tiddlers as if a normal file reference had been provided. |
<<<
!!!!!Revisions
<<<
2008.07.21 [3.9.0] Fixup for FireFox 3: use HTML with separate text+button control instead of type='file' control
2008.05.12 [3.8.1] automatically add 'attach' task to backstage (moved from BackstageTweaks)
2008.04.09 [3.8.0] in onChangeSource(), if source matches current document folder, use relative reference for local link. Also, disable 'embed' when using IE (which //still// doesn't support data: URI)
2008.04.07 [3.7.3] fixed typo in HTML for 'local file link' so that clicking in input field doesn't erase current path/file (if any)
2008.04.07 [3.7.2] auto-create AttachFile shadow tiddler for inline interface
2008.01.08 [*.*.*] plugin size reduction: documentation moved to ...Info
2007.12.04 [*.*.*] update for TW2.3.0: replaced deprecated core functions, regexps, and macros
2007.12.03 [3.7.1] in createAttachmentTiddler(), added optional "noshow" flag to suppress display of newly created tiddlers.
2007.10.29 [3.7.0] code reduction: removed support for built-in upload to server... on-line hosting of binary attachments is left to the document author, who can upload/host files using 3rd-party web-based services (e.g. www.flickr.com, ) or stand-alone applications (e.g., FTP).
2007.10.28 [3.6.0] code reduction: removed duplicate definition of image and prettyLink formatters. Rendering of attachment tiddlers now //requires// installation of AttachFilePluginFormatters
2007.03.01 [3.5.3] use apply() to invoke hijacked function
2007.02.25 [3.5.2] in hijack of "prettyLink", fix version check for TW2.2 compatibility (prevent incorrect use of fallback handler)
2007.01.09 [3.5.1] onClickAttach() refactored to create separate createAttachmentTiddler() API for use with FileDropPluginHandlers
2006.11.30 [3.5.0] in getAttachment(), for local references, add check for file existence and fallback to remote URL if local file not found. Added fileExists() to encapsulate FF vs. IE local file test function (IE FSO object code is TBD).
2006.11.29 [3.4.8] in hijack for PrettyLink, 'simple bracketed link' opens tiddler instead of external link to attachment
2006.11.29 [3.4.7] in readFile(), added try..catch around initWithPath() to handle invalid/non-existent paths better.
2006.11.09 [3.4.6] REAL FIX for TWv2.1.3: incorporate new TW2.1.3 core "prettyLink" formatter regexp handling logic and check for version < 2.1.3 with fallback to old plugin code. Also, cleanup table layout in HTML (added "border:0" directly to table elements to override stylesheet)
2006.11.08 [3.4.5] TEMPORARY FIX for TWv2.1.3: disable hijack of wikiLink formatter due to changes in core wikiLink regexp definition. //Links to attachments are broken, but you can still use {{{[img[TiddlerName]]}}} to render attachments as images, as well as {{{background:url('[[TiddlerName]]')}}} in CSS declarations for background images.//
2006.09.10 [3.4.4] update formatters for 2.1 compatibility (use this.lookaheadRegExp instead of temp variable)
2006.07.24 [3.4.3] in prettyLink formatter, added check for isShadowTiddler() to fix problem where shadow links became external links.
2006.07.13 [3.4.2] in getAttachment(), fixed stripping of newlines so data: used in CSS will work
2006.05.21 [3.4.1] in getAttachment(), fixed substring() to extract data: URI (was losing last character, which broken rendering of SOME images)
2006.05.20 [3.4.0] hijack core getRecursiveTiddlerText() to support rendering attachments in stylesheets (e.g. {{{url([[AttachFileSample]])}}})
2006.05.20 [3.3.6] add "description" feature to easily include notes in attachment tiddler (you can always edit to add them later... but...)
2006.05.19 [3.3.5] add "attach as" feature to change default name for attachment tiddlers. Also, new optional param to specify tiddler name (disables editing)
2006.05.16 [3.3.0] completed XMLHttpRequest handling for GET or POST to configurable server scripts
2006.05.13 [3.2.0] added interface for upload feature. Major rewrite of code for clean object definitions. Major improvements in UI interaction and validation.
2006.05.09 [3.1.1] add wikifer support for using attachments in links from "linked image" syntax: {{{[img[tip|attachment1][attachment2]]}}}
2006.05.09 [3.1.0] lots of code changes: new options for attachments that use embedded data and/or links to external files (local or remote)
2006.05.03 [3.0.2] added {{{/%...%/}}} comments around attachment data to hide it when viewing attachment tiddler.
2006.02.05 [3.0.1] wrapped wikifier hijacks in initAttachmentFormatters() function to eliminate globals and avoid FireFox 1.5.0.1 crash bug when referencing globals
2005.12.27 [3.0.0] Update for TW2.0. Automatically add 'excludeMissing' tag to attachments
2005.12.16 [2.2.0] Dynamically create/remove attachPanel as needed to ensure only one instance of interface elements exists, even if there are multiple instances of macro embedding.
2005.11.20 [2.1.0] added wikifier handler extensions for "image" and "prettyLink" to render tiddler attachments
2005.11.09 [2.0.0] begin port from old ELS Design adaptation based on ~TW1.2.33
2005.07.20 [1.0.0] Initial release (as adaptation)
<<<
!!Definíció
Az [[axiómaséma|Axiómaséma]] szabályos behelyettesítésén olyan formulát értünk, amely az axiómasémából a benne szereplő betűk tetszőleges formulával való helyettesítése útján jön létre.
!!Definíció
A nulladrendű kalkulus (klasszikus állításkalkulus) axiómái az [[axiómasémák|Axiómaséma]] szabályos behelyettesítései.
!!Definíció
Legyen $L^{(0)}=\langle LC, Con, Form \rangle$ a klasszikus állításlogika nyelve
A nulladrendű kalkulus (klasszikus állításkalkulus) axiómasémái (alapsémái):
*(A1): $A\supset (B\supset A) $
*(A2): $(A\supset (B\supset C))\supset((A\supset B)\supset(A\supset C)) $
*(A3): $(\neg A\supset\neg B)\supset(B\supset A)$
!!!Megjegyzés
*Az axiómasémákban csak az implikáció és a negáció művelete szerepel. A kalkulusban a többi műveletet általában az alábbi kontextuális definíciókkal vezetik be:
##$(A\wedge B) =_{def} '\neg(A\supset \neg B)'$
##$(A\vee B) =_{def} '(\neg A\supset B)'$
##$(A\equiv B) =_{def} '((A\supset B)\wedge (B\supset A))$'
*A kontextuális definíció alapján például az $(A\vee B)$ formula a $(\neg A\supset B)$ formula rövidítése.
{{center{[img[Frege.jpg]]
''Gottlob Frege (1848-1925)''
}}}
!!Definíció
${\varepsilon}\over{\Gamma , A\vdash A}$
!!!Megjegyzés
*Az azonosság szabályát néha az azonosság törvényénak is nevezik.
*Az azonosság szabálya a szintaktikai következményreláció [[reflexivitását|Reflexív]] fejezi ki a természetes levezetés nyelvén.
*Ha a természetes leveztetés rendszerére mint megengedett szekvenciaátalakításokra gondolunk, akkor az azonosság szabálya az induktív definíció bázisát adja meg. Olyan szabály ami a "semmiből" (az üres szekvenciából) hoz létre egy nem üres szekvenciát.
*Az azonosság szabálya segítségével nyert jelsorozatok szekvenciák lesznek.
!!A logika feladata
#A helyes következtetés törvényszerűségeinek a feltárása
#Az információközlésben kulcsszerepet játszó kifejezések jelentésének a megadása
!!A helyes következtetés
#Következtetés: viszony (a [[premisszák|Premissza]] és a [[konklúzió|Konklúzió]] között)
# Helyes következtetés: a premisszák igazsága maga után vonja a konklúzió igazságát (a premisszák valamely tulajdonsága öröklődik a konklúzióra)
#Logikailag helyes következtetés: ha az örökítés szükségszerű
|!Premisszák lehetséges értékei|!Következtetés|!Konklúzió lehetséges értéke|
|vertical-align:middle; @@color:#C00;Mindegyik igaz@@ |vertical-align:middle; @@color:#C00;Helyes@@ | @@color:#C00;Igaz@@ |
|~|vertical-align:middle; Nem helyes | Igaz |
|~|~| Hamis |
|vertical-align:middle; Legalább egy hamis |vertical-align:middle; Helyes | Igaz |
|~|~| Hamis |
|~|vertical-align:middle; Nem helyes | Igaz |
|~|~| Hamis |
/*{{{*/
/*Blackicity Theme for TiddlyWiki*/
/*Design and CSS by Saq Imtiaz*/
/*Version 1.0*/
/*}}}*/
/*{{{*/
body{ font-family: "Neue Helvetica", Helvetica, "Lucida Grande", Verdana, sans-serif;
background-color: #fff;
color: #333;}
#topMenu {position:relative; background:#282826; padding:10px; color:#fff;font-family:'Lucida Grande', Verdana, Sans-Serif;}
#topMenu br {display:none;}
#topMenu a{ color: #999;
padding: 0px 8px 0px 8px;
border-right: 1px solid #444;}
#topMenu a:hover {color:#fff; background:transparent;}
#displayArea {margin-left:1em; margin-bottom:2em; margin-top:0.5em;}
a, a:hover{
color:#333;
text-decoration: none; background:transparent;
}
.viewer a, .viewer a:hover {border-bottom:1px dotted #333; font-weight:bold;}
.viewer .button, .editorFooter .button{
color: #333;
border: 1px solid #333;
}
.viewer .button:hover,
.editorFooter .button:hover, .viewer .button:active, .viewer .highlight,.editorFooter .button:active, .editorFooter .highlight{
color: #fff;
background: #333;
border-color: #333;
}
.tiddler .viewer {line-height:1.45em;}
.title {color:#222; border-bottom:1px solid#222; font-family:'Lucida Grande', Verdana, Sans-Serif; font-size:1.5em;}
.subtitle, .subtitle a { color: #999999; font-size: 0.95em;margin:0.2em;}
.shadow .title{color:#999;}
.toolbar {font-size:90%;}
.selected .toolbar a {color:#999999;}
.selected .toolbar a:hover {color:#333; background:transparent;border:1px solid #fff;}
.toolbar .button:hover, .toolbar .highlight, .toolbar .marked, .toolbar a.button:active{color:#333; background:transparent;border:1px solid #fff;}
/***
!Sidebar
***/
#sidebar { margin-bottom:2em !important; margin-bottom:1em; right:0;
}
/***
!SidebarOptions
***/
#sidebarOptions { padding-top:2em;background:#f3f3f3;padding-left:0.5em;}
#sidebarOptions a {
color:#333;
background:#f3f3f3;
border:1px solid #f3f3f3;
text-decoration: none;
}
#sidebarOptions a:hover, #sidebarOptions a:active {
color:#222;
background-color:#fff;border:1px solid #fff;
}
#sidebarOptions input {border:1px solid #ccc; }
#sidebarOptions .sliderPanel {
background: #f3f3f3; font-size: .9em;
}
#sidebarOptions .sliderPanel input {border:1px solid #999;}
#sidebarOptions .sliderPanel .txtOptionInput {border:1px solid #999;width:9em;}
#sidebarOptions .sliderPanel a {font-weight:normal; color:#555;background-color: #f3f3f3; border-bottom:1px dotted #333;}
#sidebarOptions .sliderPanel a:hover {
color:#111;
background-color: #f3f3f3;
border:none;
border-bottom:1px dotted #111;
}
/***
!SidebarTabs
***/
.listTitle {color:#222;}
#sidebarTabs {background:#f3f3f3;}
#sidebarTabs .tabContents {background:#cfcfcf;}
#sidebarTabs .tabUnselected:hover {color:#999;}
#sidebarTabs .tabSelected{background:#cfcfcf;}
#sidebarTabs .tabContents .tiddlyLink, #sidebarTabs .tabContents .button{color:#666;}
#sidebarTabs .tabContents .tiddlyLink:hover,#sidebarTabs .tabContents .button:hover{color:#222;background:transparent; text-decoration:none;border:none;}
#sidebarTabs .tabContents .button:hover, #sidebarTabs .tabContents .highlight, #sidebarTabs .tabContents .marked, #sidebarTabs .tabContents a.button:active{color:#222;background:transparent;}
#sidebarTabs .txtMoreTab .tabSelected,
#sidebarTabs .txtMoreTab .tab:hover,
#sidebarTabs .txtMoreTab .tabContents{
color: #111;
background: #f3f3f3; border:1px solid #f3f3f3;
}
#sidebarTabs .txtMoreTab .tabUnselected {
color: #555;
background: #AFAFAF;
}
/***
!Tabs
***/
.tabSelected{color:#fefefe; background:#999; padding-bottom:1px;}
.tabSelected, .tabSelected:hover {
color: #111;
background: #fefefe;
border: solid 1px #cfcfcf;
}
.tabUnselected {
color: #999;
background: #eee;
border: solid 1px #cfcfcf;
padding-bottom:1px;
}
.tabUnselected:hover {text-decoration:none; border:1px solid #cfcfcf;}
.tabContents {background:#fefefe;}
.tagging, .tagged {
border: 1px solid #eee;
background-color: #F7F7F7;
}
.selected .tagging, .selected .tagged {
background-color: #f3f3f3;
border: 1px solid #ccc;
}
.tagging .listTitle, .tagged .listTitle {
color: #bbb;
}
.selected .tagging .listTitle, .selected .tagged .listTitle {
color: #333;
}
.tagging .button, .tagged .button {
color:#ccc;
}
.selected .tagging .button, .selected .tagged .button {
color:#aaa;
}
.highlight, .marked {background:transparent; color:#111; border:none; text-decoration:underline;}
.tagging .button:hover, .tagged .button:hover, .tagging .button:active, .tagged .button:active {
border: none; background:transparent; text-decoration:underline; color:#333;
}
.popup {
background: #cfcfcf;
border: 1px solid #333;
}
.popup li.disabled {
color: #000;
}
.popup li a, .popup li a:visited {
color: #555;
border: none;
}
.popup li a:hover {
background: #f3f3f3;
color: #555;
border: none;
}
#messageArea {
border: 4px dotted #282826;
background: #F3F3F3;
color: #333;
font-size:90%;
}
#messageArea a:hover { background:#f5f5f5; border:none;}
#messageArea .button{
color: #333;
border: 1px solid #282826;
}
#messageArea .button:hover {
color: #fff;
background: #282826;
border-color: #282826;
}
.tiddler {padding-bottom:10px;}
.viewer blockquote {
border-left: 5px solid #282826;
}
.viewer table, .viewer td {
border: 1px solid #282826;
}
.viewer th, thead td {
background: #282826;
border: 1px solid #282826;
color: #fff;
}
.viewer pre {
border: 1px solid #ccc;
background: #f5f5f5;
}
.viewer code {
color: #111; background:#f5f5f5;
}
.viewer hr {
border-top: dashed 1px #222; margin:0 1em;
}
.editor input {
border: 1px solid #ccc; margin-top:5px;
}
.editor textarea {
border: 1px solid #ccc;
}
h1,h2,h3,h4,h5 { color: #282826; background: transparent; padding-bottom:2px; font-family: Arial, Helvetica, sans-serif; }
h1 {font-size:18px;}
h2 {font-size:16px;}
h3 {font-size: 14px;}
/*}}}*/
<!--{{{-->
<div class='header' macro='gradient vert #00c #003'>
<div class='headerShadow'>
<span class='siteTitle' refresh='content' tiddler=''></span>
<span class='siteSubtitle' refresh='content' tiddler=''></span>
</div>
<div class='headerForeground'>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
</div>
<div id='topMenu'><span class='topMenu' refresh='content' tiddler='TopMenu'></span></div>
</div><div id='tiddlersBar' refresh='none' ondblclick='config.macros.tiddlersBar.onTiddlersBarAction(event)'></div>
<div id='mainMenu' refresh='content' force='true' tiddler='MainMenu'></div>
<div id='sidebar'>
<div id='sidebarOptions' refresh='content' force='true' tiddler='SideBarOptions'></div>
<div id='sidebarTabs' refresh='content' force='true' tiddler='SideBarTabs'></div>
</div>
<div id='displayArea'>
<div id='messageArea'></div>
<div id='tiddlerDisplay'></div>
<div id='contentFooter' refresh='content' tiddler='ContentFooter'></div></div>
<!--}}}-->
.tabSelected {
padding: 1px;
cursor: default;
color: #700;
background-color: #000;
border-left:0px solid #000;
border-top:0px solid #000;
border-right:0px solid #000;
font-size:.95em;
font-weight:bold;
padding: 2px 4px;
}
.viewer .tabSelected {
padding: 1px;
cursor: default;
color: #700;
background-color: #000;
border-left:0px solid #000;
border-top:0px solid #000;
border-right:0px solid #000;
font-size:.95em;
font-weight:bold;
padding: 2px 4px;
}
.tabUnselected {
padding: 1px;
color: #007;
background-color: #666;
font-size:.95em;
padding: 2px 4px;
}
.viewer .tabUnselected {
padding: 1px;
color: #007;
background-color: #666;
font-size:.95em;font-weight:bold;
padding: 2px 4px;
}
/***
!!<<gradient horiz #fff #999>> THEME SWITCHING>>/%==================================================%/
***/
/***
|StyleSheet|BlueTheme|
***/
/***
|PageTemplate|BluePageTemplate|
|ViewTemplate|BlueViewTemplate|
|EditTemplate|MyEditTemplate|
***/
/***
!!<<gradient horiz #fff #999>> STYLESHEET>>/%==================================================%/
***/
/***There are extra nested stylesheets at the end of this stylesheet***/
/***
!!<<gradient horiz #fff #999>> THEME SPECIFIC - BLUE>>/%==================================================%/
***/
/*{{{*/
body {background-color:#ffffff; color:#008;font-size:0.75em; font-family:arial,helvetica; margin:0; padding:0;auto;}
#displayArea {margin: 0em 14em 0em 17em;}
#displayArea {margin-top:0.0em;padding:0em;}
.title {color:#900;}
.tabContents {background-color:#ffe; color #f3f; overflow: auto;}
.tabset a:hover {background:#ffd; color:#f00;}
.viewer {color:#000;line-height: 1.6em;}
.button {border: solid 0px;}
#mainMenu a {color:#04b;}
#mainMenu a:hover {background:#fff;color:#04b;}
.mmheading {color:#800;font-weight:bold;}
#topMenu{font-size: 1.4em;}
.tiddler {
border-top: 2px solid #ccc;
border-left: 1px solid #ccc;
border-bottom: 3px solid #ccc;
border-right: 3px solid #ccc;
margin: 0.5em;
background:#fff;
padding: 0.5em;
-moz-border-radius: 1em;
}
/*}}}*/
/***
!!<<gradient horiz #fff #999>> END THEME SPECIFIC - BLUE>>/%==================================================%/
***/
[[CommonCSS]]
[[JqueryTreeviewCSS-B]]
[[StyleSheetShortcuts]]
[[TopMenuStyle2]]
[[StyleSheetTiddlersBarblue]]
[[BlueTabsCSS]]
<!--{{{-->
<br />
<div class='toolbar' macro='toolbar [[ToolbarCommands::ViewToolbar]]'><span style="color:#555;">[</span>change:»<span style="padding-right:0em;" macro='tagger'></span >add:»<span macro='newHere label:"subtopic"'></span><span style="color:#555">]</span><span macro='publishTiddler'></span></div><br>
<div class='title' macro='view title'></div>
<div class='viewer' macro='view text wikified'></div>
<div class='tagClear'></div>
<!--}}}-->
Creating sub-topics or sub-folders under this top level folder.
1. To create a sub-topics: Click on the top-level you just created.
2. Then in its toolbar click 'add:subtopic'. (Note: This simply makes a new tiddler tagged with title of the original tiddler and it becomes a sub-topic of that tiddler)
3. The new sub-topic will be automatically added to the menu under the folder.
4. Once the above is done, then clicking on this sub-topic and adding to it as in (b: above) it will (automatically) become a sub-folder.
!!Definíció
${\Gamma \vdash A}\over{\Gamma , B\vdash A}$
!!!Megjegyzés
@@color:#C06;''» »'' @@ Tabs containing CSS styling code (controls layout and visual style)
----
<script>
// get all tiddlers tagged with "CSS"
var tids=store.getTaggedTiddlers("CSS");
// keep only tiddlers *also* tagged with New
var list=[];
for (var t=0; t<tids.length; t++)
if (tids[t].isTagged("CSS")) list.push(tids[t]);
// create output list of tiddler titles, one per line
var out="";
for (var t=0; t<list.length; t++) out+="#[["+list[t].title+"]]\n";
return out;
</script>
/***
!!!<<gradient horiz #fff #999>> HEADER >>/%==================================================%/
***/
/*{{{*/
.header {position:relative; height:83px;}
.headerShadow {padding: 2.5em 0em 1em 1em;}
.headerForeground {padding: 2.5em 0em 1em 1em;}
.siteTitle {font-size:1.0em;}
.siteSubtitle {font-size:1em;}
/*}}}*/
/***
!!!<<gradient horiz #fff #999>> TOOLBAR>>/%==================================================%/
***/
/*{{{*/
.toolbar {color:#900;}
.toolbar a {color:#077;}
.selected .toolbar a {color:#077;}
.selected .toolbar a:hover {color:#090;;}
/*}}}*/
/***
!!!<<gradient horiz #fff #999>> MAINMENU>>/%==================================================%/
***/
/*{{{*/
#mainMenu {width: 16.5em; text-align:center; font-size: .95em;}
#mainMenu .sliderPanel { margin-left: 1.2em; }
#mainMenu .tiddlyLinkExisting {font-weight: bold;}
/*}}}*/
/***
!!!<<gradient horiz #fff #999>> SIDEBAR OPTIONS>>/%==================================================%/
***/
/*{{{*/
#sidebarOptions .sliderPanel {background:#eff;font-size:1em;}
#sidebarOptions .sliderPanel a {font-weight:normal;}
#sidebar a:hover {color: #F00;background: #ffd /*#ef9*/;}
/*}}}*/
/***
!!!<<gradient horiz #fff #999>> VIEWER OPTIONS>>/%==================================================%/
***/
/*{{{*/
.viewer hr {
border: 0px;
border-top: solid 1px #c06;
color: #c06;
}
.viewer blockquote {
border-left: 2px solid #c06;
}
.viewer a:h3 {
color:#600;
text-decoration:underline;
}
.viewer {color:#050;line-height: 1.6em;}
.viewer a.button{color:#04b;
border: solid 1px #008;
background:url([[mainmenugray7ef.gif]]) repeat-x top left;top left;-moz-border-radius: .2em;}
.button {border: solid 0px;}
/*}}}*/
/***
!!!<<gradient horiz #fff #999>> MISCELLANEOUS>>/%==================================================%/
***/
/*{{{*/
.viewer hr {border: 0px;border-top: solid 1px #c06;color: #c06;width:100%;}
#mainMenu hr {height:1px;color:#c06;width:100%;padding:0em;margin-left:auto;margin-right:auto;}
/*CREATES BUTTON*/
.makeborder {border: solid 1px #008;padding-left: 2px;padding-right: 2px; background:url([[mainmenugray7ef.gif]]) repeat-x top left;top left;-moz-border-radius: .2em;}
/*HR*/
hr {height:1px;width:80%;}
/*REQUIRED FOR TAGGER POPUP*/
.viewer .popup li .tagger a {display:inline;}
/*REQUIRED FOR SCROLLING POPUP*/
.popup {
max-height:275px;
min-height:auto;
width: 160px;
overflow: auto;
margin:auto;
-moz-border-radius : 0.65em 0.2em 0.2em 0.65em;
background:#eee;
color:#900;
}
.doubleborder {
border: 4px double #333;
margin: 8px;
}
.moveovermainmenu{margin-left:7px;}
/*}}}*/
/***
!!!<<gradient horiz #fff #999>> GIFFMEX TWEAKS TO STYLESHEETPRINT>>/%==================================================%/
***/
/*{{{*/
/* (so that nothing but tiddler title and text are printed) */
@media print {#tiddlersBar {display: none ! important;}}
@media print {#mainMenu {display: none ! important;}}
@media print {#topMenu {display: none ! important;}}
@media print {#sidebar {display: none ! important;}}
@media print {#messageArea {display: none ! important;}}
@media print {#toolbar {display: none ! important;}}
@media print {.header {display: none ! important;}}
@media print {.tiddler .subtitle {display: none ! important;}}
@media print {.tiddler .toolbar {display; none ! important; }}
@media print {.tiddler .tagging {display; none ! important; }}
@media print {.tiddler .tagged {display; none ! important; }}
@media print {#displayArea {margin: 1em 1em 0em 1em;}}
@media print {.pageBreak {page-break-before: always;}}
/*}}}*/
/***
!!!<<gradient horiz #fff #999>> SPECIFIC TIDDLER CUSTOMIZING>>/%==================================================%/
***/
/*{{{*/
#tiddlerTWHelp-SearchResults .viewer {
overflow: auto;
}
#tiddlerTiddlerTweaker .viewer {
overflow: auto;
}
/*}}}*/
/***
!!!<<gradient horiz #fff #999>> NESTED STYLESHEETS>>/%==================================================%/
***/
/*{{{*/
/*}}}*/
/***
!!!<<gradient horiz #fff #999>> ROUNDED CORNERS AND BORDERS>>/%==================================================%/
***/
/*{{{*/
.tiddler {
border-top: 2px solid #ccc;
border-left: 1px solid #ccc;
border-bottom: 3px solid #ccc;
border-right: 3px solid #ccc;
margin: 0.5em;
background:#fff;
padding: 0.5em;
-moz-border-radius: 1em;
}
#messageArea {
background-color: #eee;
border-color: #8ab;
border-width: 4px;
border-style: dotted;
font-size: 90%;
padding: 0.5em;
-moz-border-radius: 1em; }
#contentFooter {
background: transparent;
padding: 1em 2em;
font-weight:normal;
}
#contentFooter a {
color:#009;
}
/*}}}*/
//{{{
/***
|Name:|AutoClearMessageMacro|
|Description|It auto closes the pop-up messages after 3 seconds.Change the 3000 to modify the time.|
{{{
window.oldDisplayMessage = displayMessage;
displayMessage = function (text,linkText)
{ oldDisplayMessage(text,linkText);
setTimeout( 'clearMessage()', 3000 );}
}}}
***/
config.options.chkShowQuickEdit=true;
//tweak closeAll for toolbar
config.commands.closeAll ={
text:"close all",
tooltip:"close all"};
config.commands.closeAll.handler = function(event,src,title)
{story.closeAllTiddlers();return false;}
//config TiddlersBar
config.options.chkDisableTabsBar=false;
// re-label default text for some standard UI elements
config.commands.permalink.text="link";
config.commands.references.text="references";
merge(config.macros.toolbar,{ moreLabel: 'more\u25BC', lessLabel: '\u25C4less' });
// allows custom response when tiddler does not exist (e.g. redirection to alternative tiddler)
config.shadowTiddlers.MissingTiddler=config.views.wikified.defaultText.replace(/%0/,'$1'); // default to standard message
config.views.wikified.defaultText='<<tiddler MissingTiddler with: [[%0]]>>';
// wrap AdvancedOptions and PluginManager default content in a groupbox (and use a smaller font)
config.shadowTiddlers.AdvancedOptions=
config.shadowTiddlers.AdvancedOptions.replace(
/<<options>>/,
"{{small groupbox{<<options>>}}}");
config.shadowTiddlers.PluginManager=
config.shadowTiddlers.PluginManager.replace(
/<<plugins>>/,
"{{small groupbox{<<plugins>>}}}");
// message used by ConfirmExitPlugin when no changes have been made
config.messages.confirmExit_nochanges='\tTiddlyTools... Small Tools for Big Ideas™\n\t'
+store.getTiddlerText("SiteUrl",document.location.protocol=="http"?document.location.href:"");
//}}}
/***
|Name|ConfirmSavePlugin|
|Source|http://www.TiddlyTools.com/#ConfirmSavePlugin|
|Documentation|http://www.TiddlyTools.com/#ConfirmSavePlugin|
|Version|1.1.0|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|plugin|
|Requires||
|Overrides|window.saveChanges()|
|Options|##Configuration|
|Description|if tiddlers are being edited, or there are no unsaved changes, ask before saving|
When <<saveChanges>> command link is clicked, if there are tiddlers still being edited or there are no changes unsaved changes, then ask for confirmation before saving the document to the file.
!!!!!Configuration
<<<
:
<<option chkConfirmSaveIfEditing>> confirm saving if tiddlers are still being edited
<<option chkConfirmSaveIfNoChanges>> confirm saving if there are no unsaved tiddler changes
<<<
!!!!!Revisions
<<<
2008.03.15 [1.1.0] added option settings and check for 'no unsaved changes'
2008.03.15 [1.0.0] Initial Release.
<<<
!!!!!Code
***/
//{{{
version.extensions.ConfirmSavePlugin= {major: 1, minor: 1, revision: 0, date: new Date(2008,3,15)};
//}}}
//{{{
if (config.options.chkConfirmSaveIfEditing==undefined) config.options.chkConfirmSaveIfEditing=true;
if (config.options.chkConfirmSaveIfNoChanges==undefined) config.options.chkConfirmSaveIfNoChanges=true;
//}}}
//{{{
if (config.macros.saveChanges.confirmSave_onClick==undefined)
config.macros.saveChanges.confirmSave_onClick=config.macros.saveChanges.onClick
config.macros.saveChanges.onClick=function(e) {
var msg="";
var editing=[]; // check for tiddlers being edited
if (config.options.chkConfirmSaveIfEditing)
story.forEachTiddler(function(tid,elem) { if (elem.getAttribute("dirty")=="true") editing.push(tid);});
if (editing.length) {
msg+="There "+(editing.length>1?"are ":"is ")+editing.length;
msg+=" tiddler"+(editing.length>1?"s":"")+" currently being edited:\n\n";
msg+=editing.join(", ")+"\n\n";
msg+="Changes to "+(editing.length>1?"these tiddlers":"this tiddler");
msg+=" will not be saved until editing is completed.";
} else if (config.options.chkConfirmSaveIfNoChanges && !store.isDirty())
msg+="There are no unsaved tiddler changes";
if (msg.length) {
msg+="\n\nPress OK to save the document anyway.";
if (!confirm(msg)) return false;
}
return config.macros.saveChanges.confirmSave_onClick.apply(this,arguments); // let core save
}
//}}}
{{center{
<script>var today=new Date();document.write('<font style="color:#666">'+'URL='+window.location+'</font>')</script>~~
@@color:#666;^^<script>
var tiddlers=store.getTiddlers("modified");
var last=tiddlers[tiddlers.length-1];
var when=last.modified.formatString("YYYY/0MM/0DD at 0hh:0mm:0ss");
return "Last Modified: " +when
</script>^^@@
/**
* Cookie plugin
*
* Copyright (c) 2006 Klaus Hartl (stilbuero.de)
* Dual licensed under the MIT and GPL licenses:
* http://www.opensource.org/licenses/mit-license.php
* http://www.gnu.org/licenses/gpl.html
*
*/
/**
* Create a cookie with the given name and value and other optional parameters.
*
* @example $.cookie('the_cookie', 'the_value');
* @desc Set the value of a cookie.
* @example $.cookie('the_cookie', 'the_value', {expires: 7, path: '/', domain: 'jquery.com', secure: true});
* @desc Create a cookie with all available options.
* @example $.cookie('the_cookie', 'the_value');
* @desc Create a session cookie.
* @example $.cookie('the_cookie', null);
* @desc Delete a cookie by passing null as value.
*
* @param String name The name of the cookie.
* @param String value The value of the cookie.
* @param Object options An object literal containing key/value pairs to provide optional cookie attributes.
* @option Number|Date expires Either an integer specifying the expiration date from now on in days or a Date object.
* If a negative value is specified (e.g. a date in the past), the cookie will be deleted.
* If set to null or omitted, the cookie will be a session cookie and will not be retained
* when the the browser exits.
* @option String path The value of the path atribute of the cookie (default: path of page that created the cookie).
* @option String domain The value of the domain attribute of the cookie (default: domain of page that created the cookie).
* @option Boolean secure If true, the secure attribute of the cookie will be set and the cookie transmission will
* require a secure protocol (like HTTPS).
* @type undefined
*
* @name $.cookie
* @cat Plugins/Cookie
* @author Klaus Hartl/klaus.hartl@stilbuero.de
*/
/**
* Get the value of a cookie with the given name.
*
* @example $.cookie('the_cookie');
* @desc Get the value of a cookie.
*
* @param String name The name of the cookie.
* @return The value of the cookie.
* @type String
*
* @name $.cookie
* @cat Plugins/Cookie
* @author Klaus Hartl/klaus.hartl@stilbuero.de
*/
jQuery.cookie = function(name, value, options) {
if (typeof value != 'undefined') { // name and value given, set cookie
options = options || {};
if (value === null) {
value = '';
options.expires = -1;
}
var expires = '';
if (options.expires && (typeof options.expires == 'number' || options.expires.toUTCString)) {
var date;
if (typeof options.expires == 'number') {
date = new Date();
date.setTime(date.getTime() + (options.expires * 24 * 60 * 60 * 1000));
} else {
date = options.expires;
}
expires = '; expires=' + date.toUTCString(); // use expires attribute, max-age is not supported by IE
}
var path = options.path ? '; path=' + options.path : '';
var domain = options.domain ? '; domain=' + options.domain : '';
var secure = options.secure ? '; secure' : '';
document.cookie = [name, '=', encodeURIComponent(value), expires, path, domain, secure].join('');
} else { // only name given, get cookie
var cookieValue = null;
if (document.cookie && document.cookie != '') {
var cookies = document.cookie.split(';');
for (var i = 0; i < cookies.length; i++) {
var cookie = jQuery.trim(cookies[i]);
// Does this cookie string begin with the name we want?
if (cookie.substring(0, name.length + 1) == (name + '=')) {
cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
break;
}
}
}
return cookieValue;
}
};
<html><span style="padding-right:0.15em;" macro='monkeyTagger status'></span> </html>
*''NOTE:'' This is a completed project and the simple project manager built into ~TWT-Treeview is ready to use.
#Done: Install MonkeyTaggerMacro for status creation in projects
#Done: Add a newProject template in TiddlerMakeFile sections under __!project__
#Done: Create a newProject button called NewProjectTemplate and add to MakeTiddlers that is displayed in SideBarOptions
#Done: Add instructions to [[Projects]] then add [[Projects]] to Main Menu under TheProjectManager.
#Done: Upload ~TWT-Treeview to tiddlyspot.
[[►|CreateNewBranches]]''Creating sub-topics or sub-folders under this top level folder.''
----
@@lingth-height:1.4em;
##To create sub-topics or any new branch: click on any menu heading where you want the new branch:
##Then __in its toolbar__ click @@color:#008;'add:subtopic'@@. (Note: This simply makes a new tiddler tagged with title of the top level tiddler and it becomes a sub-topic of that tiddler)
##The new sub-topic will be automatically added to the menu under that level's tiddler.
##Once the above is done, then clicking on this sub-topic and adding to it as in (b: above) it will (automatically) become a __sub-folder__.
@@
[[►|CreateNewMenu]]''These instructions describe how to make a new top level Treeview menu folder for inserting into the MainMenu.''
''This is how you create'' your main Treeview menu. All subsequent sub-folders under it are created by adding a sub-topic under it. That sub-topic will automatically become a __sub-folder__ when you add a sub-topic under it.
#''Create'' top level tiddler first.
#''Change'' NEWTOPLEVELFOLDERNAME to your desired top level name.
#''Change'' UNIQUEID to associate it with your new top folder name.
#''Then copy'' and paste into MainMenu.
<<<
<html><textarea rows="3" cols="55" wrap="virtual"><<treeview2 "NEWTOPLEVELFOLDERNAME" "filetree" 'collapsed: false, antisesame: "closed", animated: "fast", persist: "cookie", cookieId: "UNIQUEID"'>></textarea></html>
<<<
@@color:#C06;''»''@@ The {{{(antisesame: "closed")}}} option means any folder branch tagged __ 'closed'__ will be __collapsed__ upon startup.
@@color:#C06;''»''@@ {{{(persist: "cookie")}}} means the state of the Treemenu __persists__ and will remain where you left it between sessions.
@@color:#C06;''»''@@ {{{(persist: true)}}} means the state will __only persist__ during a __single__ session.
@@color:#C06;''»''@@ ''For more options'' see the plugin at the author's site at http://treeview.tiddlyspot.com/
!!Tétel
Legyen $L^{(0)}=\langle LC, Con, Form \rangle $ egy [[nulladrendű nyelv|Nulladrendű nyelv]], $\Gamma \subseteq Form $ egy formulahalmaz és $A, B\in Form $ két formula.
Ha $\Gamma\cup\{A\}\models B$, akkor $\Gamma\models (A\supset B)$.
!!!Megjegyzés
$\Gamma\cup\{A\}\models B$ helyett gyakran használjuk a következő rövidebb írásmódot: $\Gamma , A\models B$
!!!Bizonyítás
Indirekt feltétel: Tegyük fel, hogy $\Gamma\cup\{A\}\models B$ teljesül, de $\Gamma\models (A\supset B)$ nem teljesül.
Így $\Gamma\cup \{\neg (A\supset B)\}$ [[kielégíthető|Kielégíthetőség]], tehát van [[modellje|Nulladrendű modell]]. Legyen egy modellje a $\varrho$ [[interpretáció|Nulladrendű interpretáció]]!
A $\varrho$ tulajdonságai:
#$\Gamma $ minden eleme igaz a $\varrho$ interpretáció szerint.
#$\vert\neg (A\supset B)\vert_{\varrho}= 1$
$\vert (A\supset B)\vert_{\varrho} = 0$, azaz $\vert A\vert_{\varrho} = 1$ és $\vert B \vert_{\varrho} = 0$. Így $\vert \neg B \vert_{\varrho} = 1$.
$\Gamma\cup\{A\}\cup\{\neg B\}$ formulahalmaz minden eleme igaz a $\varrho $ interpretáció szerint, azaz a formulahalmaz [[kielégíthető|Kielégíthetőség]], tehát $\Gamma\cup\{A\}\models B$ nem teljesül, ami ellentmondás.
!!Tétel (Dedukció tétel)
Ha $\Gamma , A\vdash B$, akkor $\Gamma \vdash A\supset B$
!!!Bizonyítás strukturális indukcióval:
*Legyen $B$ egy axióma.
**Ekkor $\Gamma \vdash B$.
**Mivel a $B\supset(A\supset B)$ formula is axióma, így $\Gamma \vdash B\supset(A\supset B)$.
**Ha $\Gamma \vdash B$ és $\Gamma \vdash B\supset(A\supset B)$, akkor a [[szintaktikai következményreláció|Szintaktikai következményreláció]] definíciójának 3. pontja miatt $\Gamma\vdash (A\supset B)$.
*Legyen $B\in \Gamma\cup \{A\}$.
**Ha $B=A$, akkor a segédtétel szerint $\vdash A\supset A$. A [[monotonitás|Monoton]] miatt $\Gamma \vdash A\supset A$.
**Ha $B\in \Gamma$, akkor $\Gamma \vdash B$. Mivel $B\supset (A\supset B)$ axióma, így $\Gamma \vdash B\supset (A\supset B)$.
**Ha $\Gamma \vdash B$ és $\Gamma \vdash B\supset (A\supset B)$, akkor a [[szintaktikai következményreláció|Szintaktikai következményreláció]] definíciójának 3. pontja miatt $\Gamma\vdash (A\supset B)$.
*Tegyük fel, hogy $B$ nem axióma, $B\notin \Gamma\cup \{ A \}$ és $\Gamma , A \vdash B$. Ekkor van olyan $C\in Form$ formula, hogy $\Gamma , A \vdash C$ és $\Gamma , A\vdash C\supset B$.
**Indukciós feltevés:
*** Tegyük fel, hogy állításunk teljesül a $C$ és a $C\supset A$ formulára, azaz ha $\Gamma , A \vdash C$, akkor $\Gamma \vdash A\supset C$, és ha $\Gamma , A \vdash C\supset B$, akkor $\Gamma \vdash A\supset (C\supset B)$.
**Ekkor be kell látni, hogy $\Gamma \vdash A\supset B$.
###$\Gamma \vdash A\supset C$ (indukciós feltevés)
###$\Gamma \vdash A\supset (C\supset B)$ (indukciós feltevés)
###$\Gamma \vdash (A\supset (C\supset B))\supset ((A\supset C)\supset (A\supset B))$ mivel a $(A\supset (C\supset B))\supset ((A\supset C)\supset (A\supset B))$ formula axióma.
###$\Gamma \vdash (A\supset C)\supset (A\supset B)$ (A 2. és a 3. pontból leválasztással nyerhető.)
###$\Gamma \vdash (A\supset B)$ (A 1. és a 4. pontból leválasztással nyerhető.)
!!Segédtétel
$\vdash A\supset A$
!!!Bizonyítás
#$\vdash (A \supset ((C \supset A)\supset A))\supset ((A\supset (C\supset A))\supset(A \supset A))$ (A második axióma a következő választással: $A := A; B:= C\supset A; C:= A$)
#$\vdash(A \supset ((C \supset A)\supset A))$ (Az első axióma a következő választással: $A := A; B:= C\supset A$)
#$\vdash (A\supset (C\supset A))\supset(A \supset A)$ (A leválasztási szabály alkalmazása az 1. és 2. pontra.)
#$\vdash (A\supset (C\supset A))$ (Az első axióma a következő választással: $A := A; B:= C$)
#$\vdash A \supset A$ (A leválasztási szabály alkalmazása az 3. és 4. pontra.)
!!Tétel
Ha $\Gamma\models (A\supset B)$, akkor $\Gamma\cup\{A\}\models B$.
!!!Bizonyítás
Indirekt feltétel: Tegyük fel, hogy $\Gamma\models (A\supset B)$, és ugyanakkor $\Gamma\cup\{A\}\models B$ nem teljesül.
Így $\Gamma\cup\{A\}\cup \{\neg B\}$ [[kielégíthető|Kielégíthetőség]], tehát van modellje. Legyen egy [[modellje|Nulladrendű modell]] a $\varrho$ [[interpretáció|Nulladrendű interpretáció]]!
A $\varrho$ tulajdonságai:
*$\Gamma $ minden eleme igaz a $\varrho$ interpretáció szerint.
*$\vert A\vert_{\varrho} = 1$
*$\vert \neg B\vert_{\varrho} = 1$, így $\vert B\vert_{\varrho} = 0$
Így a $\varrho$ interpretáció szerint $\vert (A\supset B)\vert_{\varrho} = 0$, következésképpen $\vert \neg (A\supset B)\vert_{\varrho} = 1$.
$\Gamma\cup\{\neg (A\supset B)\}$ formulahalmaz minden eleme igaz a $\varrho $ interpretáció szerint, azaz a $\varrho $ interpretációja modellje a formulahalmaznak, ami egyben azt is jelenti, hogy a formulahalmaz kielégíthető. Tehát $\Gamma \models (A\supset B)$ nem teljesül, ami ellentmond indirekt feltételünknek.
!!Tétel (Dedukció tétel megfordítása)
Ha $\Gamma \vdash A \supset B$, akkor $\Gamma , A\vdash B$
!!!Bizonyítás
*A [[monotonítás|Monoton]] miatt $\Gamma , A\vdash A \supset B$.
*A [[reflexivitás|Reflexív]] miatt $\Gamma , A\vdash A $.
*A leválasztási szabályt alkalmazva az előző két pontra kapjuk, hogy $\Gamma , A\vdash B$.
[[Az informatika logikai alapjai]]
/***
|''Name''|DeprecatedFunctionsPlugin|
|''Description''|Provides support for functions removed from the TiddlyWiki core|
|''Version''|1.0.0|
|''Status''|stable|
|''Source''|http://www.tiddlywiki.com/coreplugins.html#DeprecatedFunctionsPlugin|
|''~CodeRepository:''|http://svn.tiddlywiki.org/Trunk/association/plugins/DeprecatedFunctionsPlugin/DeprecatedFunctionsPlugin.js |
|''License''|[[BSD open source license]]|
|''~CoreVersion''|2.3.0|
|''Feedback''|[[TiddlyWiki community|http://groups.google.com/group/TiddlyWiki]] |
|''Keywords''|legacySupport|
!Code
***/
//{{{
if(!version.extensions.DeprecatedFunctionsPlugin) {
version.extensions.DeprecatedFunctionsPlugin = {installed:true};
//--
//-- Deprecated code
//--
// @Deprecated: Use createElementAndWikify and this.termRegExp instead
config.formatterHelpers.charFormatHelper = function(w)
{
w.subWikify(createTiddlyElement(w.output,this.element),this.terminator);
};
// @Deprecated: Use enclosedTextHelper and this.lookaheadRegExp instead
config.formatterHelpers.monospacedByLineHelper = function(w)
{
var lookaheadRegExp = new RegExp(this.lookahead,"mg");
lookaheadRegExp.lastIndex = w.matchStart;
var lookaheadMatch = lookaheadRegExp.exec(w.source);
if(lookaheadMatch && lookaheadMatch.index == w.matchStart) {
var text = lookaheadMatch[1];
if(config.browser.isIE)
text = text.replace(/\n/g,"\r");
createTiddlyElement(w.output,"pre",null,null,text);
w.nextMatch = lookaheadRegExp.lastIndex;
}
};
// @Deprecated: Use <br> or <br /> instead of <<br>>
config.macros.br = {};
config.macros.br.handler = function(place)
{
createTiddlyElement(place,"br");
};
// Find an entry in an array. Returns the array index or null
// @Deprecated: Use indexOf instead
Array.prototype.find = function(item)
{
var i = this.indexOf(item);
return i == -1 ? null : i;
};
// Load a tiddler from an HTML DIV. The caller should make sure to later call Tiddler.changed()
// @Deprecated: Use store.getLoader().internalizeTiddler instead
Tiddler.prototype.loadFromDiv = function(divRef,title)
{
return store.getLoader().internalizeTiddler(store,this,title,divRef);
};
// Format the text for storage in an HTML DIV
// @Deprecated Use store.getSaver().externalizeTiddler instead.
Tiddler.prototype.saveToDiv = function()
{
return store.getSaver().externalizeTiddler(store,this);
};
// @Deprecated: Use store.allTiddlersAsHtml() instead
function allTiddlersAsHtml()
{
return store.allTiddlersAsHtml();
}
// @Deprecated: Use refreshPageTemplate instead
function applyPageTemplate(title)
{
refreshPageTemplate(title);
}
// @Deprecated: Use story.displayTiddlers instead
function displayTiddlers(srcElement,titles,template,unused1,unused2,animate,unused3)
{
story.displayTiddlers(srcElement,titles,template,animate);
}
// @Deprecated: Use story.displayTiddler instead
function displayTiddler(srcElement,title,template,unused1,unused2,animate,unused3)
{
story.displayTiddler(srcElement,title,template,animate);
}
// @Deprecated: Use functions on right hand side directly instead
var createTiddlerPopup = Popup.create;
var scrollToTiddlerPopup = Popup.show;
var hideTiddlerPopup = Popup.remove;
// @Deprecated: Use right hand side directly instead
var regexpBackSlashEn = new RegExp("\\\\n","mg");
var regexpBackSlash = new RegExp("\\\\","mg");
var regexpBackSlashEss = new RegExp("\\\\s","mg");
var regexpNewLine = new RegExp("\n","mg");
var regexpCarriageReturn = new RegExp("\r","mg");
}
//}}}
A diszjunkció igazságtáblázata:
| $\vee$ | 0 | 1 |
| 0 | 0 | 1 |
| 1 | 1 | 1 |
*Tipikus természetes nyelvi alakja: ... vagy ... (megengedő értelemben)
*Legyen $A,B\in Form$. $(A\vee B)$ kiolvasása:
**$A$ vagy $B$.
**$A$ diszjunkció $B$.
*$n, (n>2)$ tagú diszjunkció definiáló logikai ekvivalenciája: Legyen $A_1, A_2, \ldots , A_n\in Form$. $(A_1\vee A_2\vee \ldots \vee A_n)\Leftrightarrow_{def} (A_1\vee (A_2\vee A_3\vee( \ldots \vee A_n)\ldots )))$
*Az $(A_1\vee A_2\vee \ldots \vee A_n)$ formula akkor és csak akkor hamis, ha $A_i$ hamis minden $i$-re $(i=1, 2, \ldots ,n)$.
!!A diszjunkció tulajdonságai
*Felcserélhető (kommutatív): $(A\vee B) \Leftrightarrow (B\vee A)$
*Csoportosítható (asszociatív): $(A\vee(B\vee C))\Leftrightarrow ((A\vee B)\vee C)$
*Idempotens: $(A\vee A) \Leftrightarrow A $
*$A\models (A\vee B)$
*$\{(A\vee B), \neg A \}\models B$
*A kizárt harmadik törvénye. $\models (A\vee\neg A)$
!!Definíció (bevezető szabályok)
${\Gamma \vdash A}\over{\Gamma \vdash A\vee B}\qquad {\Gamma \vdash B}\over{\Gamma \vdash A\vee B}$
!!Definíció (alkalmazó szabály)
${\Gamma , A\vdash C\quad \Gamma , B\vdash C}\over{\Gamma , A\vee B\vdash C}$
!!!Megjegyzés
!!Definíció
Egy [[elemi konjunkciót|Elemi konjunkció]] vagy [[elemi konjunkciók|Elemi konjunkció]] diszjunkcióját diszjunktív normálformának nevezzük.
/***
|''Name:''|DoBackupMacro|
|''Version:''|2.0 (9-Apr-2006)|
|''Author:''|[[Jack]]|
|''Type:''|Macro|
!Description
Creates a button which allows you to backup your TiddlyWiki on demand.
!Usage
Add the following command to your SideBarOptions tiddler:
{{{<<doBackup>>}}}
!Revision History
* Original by [[Jack]] 9-Apr-2006
!To Do
* List non-explicit links (e.g. from tagging macro)
!Code
***/
//{{{
version.extensions.doBackup= {major: 2, minor: 0, revision: 0, date: new Date("Apr 9, 2006")};
config.macros.doBackup={label: "backup", prompt: "Backup this TiddlyWiki"}
config.macros.doBackup.handler = function(place)
{
if(!readOnly)
createTiddlyButton(place,this.label,this.prompt,function ()
{doBackup(); return false;},null,null,this.accessKey);
}
doBackup = function() {
var optSaveBackups = config.options.chkSaveBackups
config.options.chkSaveBackups = true
saveChanges()
config.options.chkSaveBackups = optSaveBackups
}
//}}}
Type the text for 'New Tiddler'
<<slideShow
header: Igazságfunktorok>>
[[Igazságfunktorok]]
[[Negáció]]
[[Konjunkció]]
[[Diszjunkció]]
[[A konjunkció és a diszjunkció kapcsolata]]
[[Implikáció]]
[[(Materiális) ekvivalencia]]
<script label="edit a tiddler">
var title=prompt("Enter the title of a tiddler to edit (case sensitive)");
while (title && title.length && !store.tiddlerExists(title)) {
displayMessage("The tiddler '%0' doesn't exist".format([title]));
var title=prompt("Please enter a tiddler title",title);
}
if (!title||!title.length) return; /* cancelled by user */
story.displayTiddler(null,title,2);
</script>
<!--{{{-->
<div class='toolbar' macro='toolbar [[ToolbarCommands::EditToolbar]]'></div>
<div class='title' macro='view title'></div>
<div class='editor' macro='edit title'></div>
<div macro='tiddler QuickEditToolbar'></div>
<div class='editor' macro='edit tags'></div>
<div class='editorFooter'><span macro='message views.editor.tagPrompt'></span><span macro='tagChooser excludeLists'></span></div>
<div macro='annotations'></div>
<div class='editor' macro='edit text'></div>
<!--}}}-->
!!Definíció
Legyen $L^{(0)}=\langle LC, Con, Form \rangle$ egy [[nulladrendű nyelv|Nulladrendű nyelv]].
Ha az $A\in Form$ formula [[literál|Literál]] vagy különböző alapú literálok diszjunkciója, akkor $A$-t elemi diszjunkciónak nevezzük.
!!Definíció
Legyen $L^{(0)}=\langle LC, Con, Form \rangle$ egy [[nulladrendű nyelv|Nulladrendű nyelv]].
Ha az $A\in Form$ formula [[literál|Literál]] vagy különböző alapú literálok konjunkciója, akkor $A$-t elemi konjunkciónak nevezzük.
#Adja meg a [[nulladrendű modell|Nulladrendű modell]] definícióját!
#Adja meg egy formulahalmaz [[kielégíthetőségének|Kielégíthetőség]] definícióját!
#Adja meg egy formula [[kielégíthetőségének|Kielégíthetőség]] definícióját!
#Adja meg egy formulahalmaz [[kielégíthetetlenségének|Kielégíthetetlenség]] definícióját!
#Adja meg egy formula [[kielégíthetetlenségének|Kielégíthetetlenség]] definícióját!
#Adja meg a [[következményreláció|Szemantikai következményreláció]] szemantikai definícióját!
#Mikor mondjuk, hogy az $A$ formulának [[logikai következménye|Szemantikai következményreláció]] a $B$ formula?
#Adja meg egy formula [[érvényességének|Érvényesség]] definícióját!
#Adja meg a [[logikai ekvivalencia|Logikai ekvivalencia]] definícióját!
#Mikor mondjuk, hogy az $A$ és a $B$ formula [[logikailag ekvivalens|Logikai ekvivalencia]] a $B$ formula?
#Mondja ki a [[kielégíthető formulahalmazok szűkítésre|Tétel (kielégíthetőség)]] vonatkozó tételt!
#Mondja ki a [[kielégíthetetlen formulahalmazok bővítésére|Tétel (kielégíthetetlenség)]] vonatkozó tételt!
#Mondja ki a kielégíthetetlen formulahalmazok lehetséges logikai következményeire vonatkozó [[tételt|Következményreláció tulajdonsága(3)]]!
#Mondja ki azt a [[tételt|Következményreláció tulajdonsága(2)]], amely a következményrelációnak azt az esetét vizsgálja, amikor a konklúzió érvényes formula!
#Mondja ki a [[dedukció tételt|Dedukció tétel]]!
#Mondja ki a [[dedukció tétel megfordítását|Dedukció tétel megfordítása]]!
#Mondja ki a [[metszet tételt|Metszet tétel]]!
#Mi a kapcsolat a logikai [[következményreláció és az implikáció|Következményreláció és implikáció]] között?
#Mi a kapcsolat a [[logikai ekvivalencia és a (materiális) ekvivalencia|Logikai ekvivalencia és (materiális) ekvivalencia]] között?
#Adja meg a [[nulladrendű interpretáció|Nulladrendű interpretáció]] definícióját!
#Egy adott [[nulladrendű nyelv|Nulladrendű nyelv]] esetén hány darab különböző interpretáció létezik?
#Milyen értékeket rendel a [[nulladrendű interpretáció|Nulladrendű interpretáció]] az állításparaméterekhez?
#Milyen feladatot látnak el a [[szemantikai szabályok|Nulladrendű szemantikai szabályok]]?
#A [[szemantikai szabályok|Nulladrendű szemantikai szabályok]] induktív definíciójában mi alkotja a bázist?
#Adja meg a negáció $(\neg )$ [[szemantikai szabályát|Nulladrendű szemantikai szabályok]]!
#Adja meg az implikáció $(\supset )$ [[szemantikai szabályát|Nulladrendű szemantikai szabályok]]!
#Adja meg a konjunkció $(\wedge )$ [[szemantikai szabályát|Nulladrendű szemantikai szabályok]]!
#Adja meg a diszjunkció $(\vee )$ [[szemantikai szabályát|Nulladrendű szemantikai szabályok]]!
#Adja meg a (materiális) ekvivalencia $(\equiv )$ [[szemantikai szabályát|Nulladrendű szemantikai szabályok]]!
#Jellemezze a [[negáció|Negáció]] műveletét!
#Jellemezze az [[implikáció|Implikáció]] műveletét!
#Jellemezze a [[konjunkció|Konjunkció]] műveletét!
#Jellemezze a [[(materiális) ekvivalencia|(Materiális) ekvivalencia]] műveletét!
#Adja meg a [[kettős negáció|Negáció]] törvényét!
#Adja meg a [[modus ponens|Implikáció]] következtetési sémát!
#Adja meg a [[modus tollens|Implikáció]] következtetési sémát!
#Adja meg a [[láncszabályt|Implikáció]]!
#Adja meg a [[redukció ad absurdum|Implikáció]] következtetési sémát!
#Adja meg az [[áthelyezési törvényt|Implikáció]]!
#Adja meg a [[kontrapozíció|Implikáció]] törvényét!
#Adja meg az [[ellenmondás törvényét|Konjunkció]]!
#Adja meg a [[kizárt harmadik törvényét|Diszjunkció]]!
#Adja meg a [[disztributivitási törvényeket|A konjunkció és a diszjunkció kapcsolata]]!
#Adja meg az [[elnyelési tulajdonságokat|A konjunkció és a diszjunkció kapcsolata]]!
#Adja meg a [[De Morgan törvényeket|A konjunkció és a diszjunkció kapcsolata]]!
#Mit értünk [[igazságfunktoron|Igazságfunktorok]]?
#Adja meg a [[nulladrendű nyelv|Nulladrendű nyelv]] definícióját!
#Adja meg a [[nulladrendű nyelv|Nulladrendű nyelv]] $Form$ halmazának definícióját!
#Adja meg a [[nulladrendű nyelv|Nulladrendű nyelv]] logikai konstansait!
#Hogyan értelmezzük a [[logikai konstans|Logikai konstans]] fogalmát?
#Hogyan értelmezzük a [[nemlogikai konstans|Nemlogikai konstans]] fogalmát?
#Hogyan értelmezzük a [[paraméter|Paraméter]] fogalmát?
#A nulladrendű nyelv esetén milyen elnevezéseket használunk a [[nemlogikai konstansok|Nemlogikai konstans]] megnevezésére?
#Mit értünk a [[nulladrendű nyelv atomi formuláján|Nulladrendű atomi formula]]?
#Mit értünk a [[nulladrendű nyelv prímformuláján|Nulladrendű prímformula]]?
#Adja meg annak a halmaznak az induktív definícióját, amelynek elemei egy adott formula [[részformulái|Részformula]]!
#Adja meg a [[részformula|Részformula]] definícióját!
#Adja meg a [[közvetlen részformula|Közvetlen részformula]] definícióját!
#Adja meg a [[részformulának|Részformula2]] a közvetlen részformula fogalmára támaszkodó definícióját!
#Adja meg a [[szerkezeti fa|Szerkezeti fa]] definícióját!
#Ismertesse a nulladrendű nyelvben alkalmazott [[zárójelelhagyási konvenciókat|Zárójelelhagyási konvenciók]]!
#Adja meg a [[literál|Literál]] definícióját!
#Adja meg az [[elemi konjunkció|Elemi konjunkció]] definícióját!
#Adja meg az [[elemi diszjunkció|Elemi diszjunkció]] definícióját!
#Adja meg a [[diszjunktív normálforma|Diszjunktív normálforma]] definícióját!
#Adja meg a [[konjunktív normálforma|Konjunktív normálforma]] definícióját!
#Mondja ki a [[normálforma tételt|Normálforma tétel]]!
<script>
/*<![CDATA[*/
/***********************************************
* Encrypt Email script- Please keep notice intact
* Tool URL: http://www.dynamicdrive.com/emailriddler/
* **********************************************/
<!-- Encrypted version of: tiddlywikihelp [at] *****.***.** //-->
var emailriddlerarray=[116,105,100,100,108,121,119,105,107,105,104,101,108,112,64,121,97,104,111,111,46,99,111,109,46,97,117]
var encryptedemail_id69='' //variable to contain encrypted email
for (var i=0; i<emailriddlerarray.length; i++)
encryptedemail_id69+=String.fromCharCode(emailriddlerarray[i])
document.write('<a href="mailto:'+encryptedemail_id69+'?subject=From TWT-Treeview">Email Author Morris Gray</a>')
/*]]>*/
</script>
@@color:#800;Tiddlers tagged with EmbeddedImages@@
----
{{twocolumns{
<script>
// get all tiddlers tagged with "EmbeddedImages"
var tids=store.getTaggedTiddlers("EmbeddedImages");
// keep only tiddlers *also* tagged with New
var list=[];
for (var t=0; t<tids.length; t++)
if (tids[t].isTagged("EmbeddedImages")) list.push(tids[t]);
// create output list of tiddler titles, one per line
var out="";
for (var t=0; t<list.length; t++) out+="#[["+list[t].title+"]]\n";
return out;
</script>
}}}
#Döntse el egy adott formulahalmazokról, hogy [[kielégíthető-e|Kielégíthetőség]]! Ha kielégíthetőnek bizonyul, akkor adja meg a formulahalmaz egy modelljét is!
##$\{ \neg p, (p\supset\neg q), (p\vee q) \}$
##$\{ (p\supset \neg q), p, q\}$
#Bizonyítsa be, hogy egy [[kielégíthetetlen|Kielégíthetetlenség]] formulahalmazban mindig van hamis elem!
#Bizonyítsa be, hogy egy [[kielégíthetetlen|Kielégíthetetlenség]] formulahalmaznak bármely bővítése [[kielégíthetetlen|Kielégíthetetlenség]]!
#Igaz-e, hogy minden [[kielégíthetetlen|Kielégíthetetlenség]] formulahalmaznak van kielégíthető része?
##Igaz-e, hogy minden [[kielégíthetetlen|Kielégíthetetlenség]] formulahalmaznak van nem üres kielégíthető része?
#Igaz-e, hogy minden [[kielégíthető|Kielégíthetőség]] formulahalmaznak van [[kielégíthetetlen|Kielégíthetetlenség]] bővítése?
#Igaz-e, hogy egy [[kielégíthetetlen|Kielégíthetetlenség]] formulahalmaznak minden része [[kielégíthetetlen|Kielégíthetetlenség]]?
#Kielégíthető vagy [[kielégíthetetlen|Kielégíthetetlenség]] az üres formulahalmaz?
#Adjon példát [[kielégíthető|Kielégíthetőség]], illetve [[kielégíthetetlen|Kielégíthetetlenség]] formulahalmazra!
#Döntse el, hogy egy adott formula [[érvényes-e|Érvényesség]] (azaz logikai igazság, tautológia)!
##$(((p\supset q) \supset q)\supset q)$
##$((p\equiv q)\equiv (p\equiv (q\equiv p)))$
##$((p\vee \neg (q\wedge r))\supset ((p\equiv r)\vee q))$
##$(((q\supset r) \supset (p\supset q))\supset (p\supset q))$
##$(p\supset (q\supset (q\supset p)))$
##$((p\wedge q)\supset (p\vee r))$
##$(((p\supset q)\supset p)\supset p)$
##$((p\supset q)\vee (q\supset p))$
#Igazolja vagy cáfolja az alábbi állításokat:
##A $(p\equiv q)$ formula [[logikailag ekvivalens|Logikai ekvivalencia]] a $((p\supset q)\wedge (q\supset p))$ formulával.
##A $(\neg p \vee q)$ formula [[logikailag ekvivalens|Logikai ekvivalencia]] a $(\neg q \vee p)$ formulával.
##A $\neg (p\equiv q)$ formula [[logikailag ekvivalens|Logikai ekvivalencia]] a $(p\equiv \neg q)$ formulával.
#Bizonyítsa be, hogy $A\Leftrightarrow B$ akkor és csak akkor, ha minden ${\varrho}$ interpretáció esetén $\vert A\vert_{\varrho} =\vert B\vert_{\varrho}$.
#Tegyük fel, hogy $A, B$ olyan formulák, amelyekre teljesül, hogy $\vert A\vert_{\varrho} =1$ akkor és csak akkor, ha $\vert B\vert_{\varrho} =1$. Bizonyítsa be, hogy ekkor $A\Leftrightarrow B$!
#Bizonyítsa be, hogy ha $A\Leftrightarrow B$, akkor $\vert A\vert_{\varrho} =1$ akkor és csak akkor, ha $\vert B\vert_{\varrho} =1$!
#Bizonyítsa be, hogy a logikai ekvivalencia a formulák halmazán értelmezett ekvivalencia-reláció!
#Bizonyítsa be, hogy $A$ és $B$ [[logikailag ekvivalens|Logikai ekvivalencia]] akkor és csak akkor, ha közös igazságtáblázatukban az $A$-hoz, illetve $B$-hez tartozó oszlopok megegyeznek!
#Bizonyítsa be, hogy $A\models B$ $(A, B\in Form)$ akkor és csak akkor, ha minden olyan interpretáció, amely $A$-t igazzá teszi, igazzá teszi $B$-t is!
#Bizonyítsa be, hogy annak, hogy $A\models B$ $(A, B \in Form)$ szükséges és elégséges feltétele az, hogy $A$ minden modellje modellje $B$-nek is!
#Bizonyítsa be, hogy $A\models B$ akkor és csak akkor nem teljesül, ha van olyan interpretáció, amelyben $A$ igaz és $B$ hamis!
#Bizonyítsa be, hogy egy [[kielégíthetetlen|Kielégíthetetlenség]] formulahalmaznak minden formula [[következménye|Szemantikai következményreláció]]!
#Bizonyítsa be, hogy egy [[érvényes|Érvényesség]] formula minden formulahalmaznak [[következménye|Szemantikai következményreláció]]!
#Bizonyítsa be, hogy $\models A$ akkor és csak akkor, ha minden ${\varrho}$ interpretáció esetén $\vert A\vert_{\varrho} =1$!
#Bizonyítsa be, hogy $A\Leftrightarrow B$ akkor és csak akkor, ha $\models (A\equiv B)$!
#Bizonyítsa be, hogy $A\models B$ akkor és csak akkor, ha $\models (A\supset B)$!
#Bizonyítsa be, hogy a következményreláció monoton, azaz ha $\Gamma\models A$ és $\Delta\subseteq Form$, akkor $\Gamma\cup\Delta\models A$!
#Bizonyítsa be a dedukciótételt!
#Bizonyítsa be a dedukciótétel megfordítását!
#Bizonyítsa be a metszet tételt!
#Igazak-e az alábbi állítások? (Ha igaz, akkor bizonyítsa, ha hamis, akkor ellenpéldával cáfolja!)
##Minden $A$ formula esetén ha az $A$ formula [[kielégíthető|Kielégíthetőség]] (azaz a $\{A\}$ halmaz [[kielégíthető|Kielégíthetőség]]), akkor a $\neg A$ is [[kielégíthető|Kielégíthetőség]].
##Ha $\neg A$ [[érvényes|Érvényesség]], akkor $A$ nem [[kielégíthető|Kielégíthetőség]].
##Ha $\neg A$ [[kielégíthető|Kielégíthetőség]], akkor $A$ [[érvényes|Érvényesség]] formula.
##Ha $A$ [[érvényes|Érvényesség]] formula, akkor $A$ [[kielégíthető|Kielégíthetőség]].
##Ha $A$ [[kielégíthető|Kielégíthetőség]], akkor $A$ [[érvényes|Érvényesség]] formula.
##Minden $A$ formula esetén létezik olyan $A$-tól különböző $B$ formula, amelyre teljesül, hogy $A\models B$.
##Minden $A$ formula esetén létezik olyan $A$-val nem [[logikailag ekvivalens|Logikai ekvivalencia]] $B$ formula, amelyre teljesül, hogy $A\models B$.
##Minden $A$ formula esetén létezik olyan $A$-tól különböző $B$ formula, amelyre teljesül, hogy $B\models A$.
##Minden $A$ formula esetén létezik olyan $A$-val nem [[logikailag ekvivalens|Logikai ekvivalencia]] $B$ formula, amelyre teljesül, hogy $B\models A$.
##Minden $A, B$ formula esetén teljesül, hogy $A\models B$ vagy $B\models A$.
##Létezik olyan formula, amely minden formulának [[következménye|Szemantikai következményreláció]].
##Minden $A, B$ formula esetén teljesül, hogy ha $A\models B$, akkor $B\models A$.
##Minden $A, B$ formula esetén teljesül, hogy ha $A\models B$, akkor $B$-nek nem logikai [[következménye|Szemantikai következményreláció]] az $A$.
##Létezik olyan $A, B$ formula, hogy $A\models B$, de $B$-nek nem következméníye $A$.
##Ha $\Gamma\models A$ vagy $\Gamma\models B$, akkor $\Gamma\models (A\wedge B)$.
##Ha $\Gamma\models A$ és $\Gamma\models B$, akkor $\Gamma\models (A\vee B)$.
##Ha $\Gamma\models A\vee B$, akkor $\Gamma\models A$ vagy $\Gamma\models B$.
##Ha $\Gamma\models (A\supset B)$ és $\Gamma\models (A\supset C)$, akkor $\Gamma, A\models (B\wedge C)$.
##Ha $\Gamma\models (A\supset B)$ és $\Gamma\models (A\supset C)$, akkor $\Gamma, C\models (A\vee B)$.
##Ha $\Gamma\models (A\supset C)$ és $\Gamma\models (B\supset C)$, akkor $\Gamma, (A\vee B)\models C$.
##Ha $\Gamma\models (A\supset C)$ és $\Gamma\models (B\supset C)$, akkor $\Gamma, (A\vee C)\models B$.
##Ha $\Gamma\models (A\supset C)$ és $\Gamma\models (B\supset C)$, akkor $\Gamma, (A\vee C)\models B$.
#Bizonyítsa be az alábbiakat!
##Ha $\Gamma\models A$ és $\Gamma\models (A\supset B)$, akkor $\Gamma\models B$.
##Ha $\Gamma\models$ és $\Gamma\models B$, akkor $\Gamma\models (A\wedge B)$.
##Ha $\Gamma, A\models C$ és $\Gamma, B\models C$, akkor $\Gamma, (A\vee B)\models C$.
##Ha $\Gamma\models A$, akkor $\Gamma\models A\vee B$.
##Ha $\Gamma, A\models B$ és $\Gamma, A\models \neg B$, akkor $\Gamma\models \neg A$.
##Ha $\Gamma\models A$ és $\Gamma\models (A\equiv B)$, akkor $\Gamma\models B$.
#Bizonyítsa be, hogy minden $A$ nulladrendű formula és ${\varrho}$ interpretáció esetén az $\vert A \vert_{\varrho}$ érték egyértelműen meghatározott!
#Írja fel annak a [[nulladrendű nyelvnek|Nulladrendű nyelv]] az összes lehetséges [[interpretációját|Nulladrendű interpretáció]], amelyben $Con=\{ p, q, r\}$!
#Készítse el egy adott formula igazságtáblázatát!
##$((p\supset (\neg q \vee r)) \equiv \neg (p\wedge q)) $
##$(((p\supset \neg q) \vee r) \equiv (\neg p\wedge q)) $
##$(p\supset (\neg q \vee ((r \equiv \neg p)\wedge q))) $
#Bizonyítsa be a [[negáció|Negáció]] tulajdonságát:
##Bizonyítsa be a kettős negáció törvényét!
#Bizonyitsa be az [[implikáció|Implikáció]] tulajdonságait:
##Bizonyítsa be, hogy $\models (A\supset A)$!
##Bizonyítsa be a modus ponenst!
##Bizonyítsa be a modus tollenst!
##Bizonyítsa be a láncszabályt!
##Bizonyítsa be a redukció ad abszurdum következtetési szabályát!
##Bizonyítsa be, hogy $\neg A \models (A\supset B)$!
##Bizonyítsa be, hogy $ B \models (A\supset B)$!
##Bizonyítsa be az áthelyezési törvényt!
##Bizonyítsa be a kontrapozíció törvényét!
##Bizonyítsa be, hogy $(A\supset\neg A)\models \neg A$!
##Bizonyítsa be, hogy $(\neg A\supset A)\models A$!
##Bizonyítsa be, hogy $(A\supset(B\supset C))\Leftrightarrow ((A\supset B)\supset(A\supset C))$!
##Bizonyítsa be, hogy $\models (A\supset(\neg A\supset B))$!
##Bizonyítsa be, hogy $((A\vee B)\supset C)\Leftrightarrow ((A\supset C)\wedge(B\supset C))$!
##Bizonyítsa be, hogy $\{A_1, A_2,\ldots , A_n\}\models A$ $(A_1, A_2,\ldots , A_n, A\in Form)$ akkor és csak akkor, ha az $((A_1\wedge A_2\wedge \ldots \wedge A_n)\supset A)$ formula érvényes!.
#Bizonyitsa be a [[konjunkció|Konjunkció]] tulajdonságait:
##Bizonyitsa be, hogy a konjunkció kommutatív!
##Bizonyitsa be, hogy a konjunkció asszociatív!
##Bizonyitsa be, hogy a konjunkció idempotens!
##Bizonyitsa be, hogy $(A\wedge B)\models A$, $(A\wedge B)\models B$
##Bizonyitsa be az ellentmondás törvényét!
##Bizonyitsa be, hogy az $\{A_1, A_2,\ldots , A_n\}$ formulahalmaz $(A_1, A_2,\ldots , A_n\in Form)$ akkor és csak akkor kielégíthető, ha az $(A_1\wedge A_2\wedge \ldots \wedge A_n)$ formula kielégíthető!
##Bizonyitsa be, hogy az $\{A_1, A_2,\ldots , A_n\}$ formulahalmaz $(A_1, A_2,\ldots , A_n\in Form)$ akkor és csak akkor kielégíthetetlen, ha az $(A_1\wedge A_2\wedge \ldots \wedge A_n)$ formula kielégíthetetlen!
##Bizonyitsa be, hogy az $\{A_1, A_2,\ldots , A_n\}\models A$ $(A_1, A_2,\ldots , A_n, A\in Form)$ akkor és csak akkor, ha az $(A_1\wedge A_2\wedge \ldots \wedge A_n)\models A$!
##Bizonyitsa be, hogy az $\{A_1, A_2,\ldots , A_n\}\models A$ $(A_1, A_2,\ldots , A_n, A\in Form)$ akkor és csak akkor, ha az $((A_1\wedge A_2\wedge \ldots \wedge A_n)\wedge \neg A)$ formula kielégíthetetlen!
#Bizonyitsa be a [[diszjunkció|Diszjunkció]] tulajdonságait:
##Bizonyítsa be, hogy a diszjunkció kommutatív!
##Bizonyítsa be, hogy a diszjunkció asszociatív!
##Bizonyítsa be, hogy a diszjunkció idempotens!
##Bizonyítsa be, hogy $A\models (A\vee B)$ !
##Bizonyítsa be, hogy $\{(A\vee B), \neg A \}\models B$!
##Bizonyítsa be a kizárt harmadik törvényét!
#Bizonyitsa be a [[(materiális) ekvivalencia|(Materiális) ekvivalencia]] tulajdonságait:
##Bizonyítsa be, hogy $\models (A\equiv A)$!
##Bizonyítsa be, hogy $\models \neg(A\equiv \neg A)$!
##Bizonyítsa be, hogy a materiálsi ekvivalencia kommutatív!
##Bizonyítsa be, hogy a materiálsi ekvivalencia asszociatív!
#Bizonyítsa be, hogy a [[diszjunkció disztributív|A konjunkció és a diszjunkció kapcsolata]] a konjunkcióra nézve: $(A\vee(B\wedge C))\Leftrightarrow ((A\vee B)\wedge(A\vee C))$
#Bizonyítsa be, hogy a [[konjunkció disztributív|A konjunkció és a diszjunkció kapcsolata]] a diszjunkcióra nézve: $(A\wedge(B\vee C))\Leftrightarrow ((A\wedge B)\vee(A\wedge C))$
# Bizonyítsa be az [[első De Morgan törvényt|A konjunkció és a diszjunkció kapcsolata]]: $\neg(A\wedge B)\Leftrightarrow (\neg A\vee \neg B)$
#Bizonyítsa be a [[második De Morgan törvényt|A konjunkció és a diszjunkció kapcsolata]]: $\neg(A\vee B)\Leftrightarrow (\neg A\wedge \neg B)$
#Bizonyítsa be az [[elnyelési tulajdonságokat|A konjunkció és a diszjunkció kapcsolata]]:
##$(A\wedge(B\vee A))\Leftrightarrow A$
##$(A\vee(B\wedge A))\Leftrightarrow A$
#Bizonyítsa be a [[kifejezhetőségre|Kifejezhetőség]] vonatkozó logikai ekvivalenciákat:
##$(A\supset B) \Leftrightarrow \neg(A\wedge\neg B)$
##$(A\supset B) \Leftrightarrow (\neg A\vee B)$
##$(A\wedge B) \Leftrightarrow \neg(A\supset \neg B)$
##$(A\vee B) \Leftrightarrow (\neg A\supset B)$
##$(A\vee B) \Leftrightarrow \neg(\neg A\wedge\neg B)$
##$(A\wedge B) \Leftrightarrow \neg(\neg A\vee\neg B)$
##$(A\equiv B) \Leftrightarrow ((A\supset B)\wedge (B\supset A))$
#Adja meg annak a függvénynek az induktív definícióját, amely a [[nulladrendű nyelv|Nulladrendű nyelv]] minden formulája esetén megadja a formulában szereplő zárójelek számát!
#Adja meg annak a függvénynek az induktív definícióját, amely a [[nulladrendű nyelv|Nulladrendű nyelv]] minden formulája esetén megadja a formulában szereplő valódi logikai konstansok $(LC^r=LC\setminus\{(,)\})$ számát! (A definiálandó függvény adja meg a formula logikai összetettségét vagy bonyolultságát.)
#Adja meg annak a függvénynek az induktív definícióját, amely a [[nulladrendű nyelv|Nulladrendű nyelv]] minden formulája esetén megadja, hogy a formulának legfeljebb hány részformulája lehet!
#Adja meg annak a függvénynek az induktív definícióját, amely a [[nulladrendű nyelv|Nulladrendű nyelv]] minden formulája esetén megadja, hogy a formula szerkezeti fájának hány csúcsa van!
#Bizonyítsa be, hogy a [[nulladrendű nyelv|Nulladrendű nyelv]] minden formulájában a kezdő- és végzárójelek száma megegyezik!
#Legyen $\textbf{RF}(A)$ az $A$ formula [[részformuláinak|Részformula]] a halmaza. Adja meg az $\textbf{RF}(A)$ halmaz induktív definícióját!
#Döntse el, hogy egy megadott jelsorozat valamely [[nulladrendű nyelvnek|Nulladrendű nyelv]] a formulája-e?
#Adja meg egy megadott formula [[részformuláinak|Részformula]] a halmazát!
#Adja meg egy megadott formula [[szerkezeti fáját|Szerkezeti fa]]!
#A [[zárójelelhagyási konvenciók|Zárójelelhagyási konvenciók]] alapján mely zárójelek hagyhatók el egy megadott formulából?
#A [[zárójelelhagyási konvenciók|Zárójelelhagyási konvenciók]] alapján adja meg a teljesen zárójelezett alakját egy megadott formulának?
##$ \neg p\vee q \wedge \neg r\equiv p\vee \neg q \supset p\supset \neg q\supset \neg r $
##$p\supset \neg q \vee r \equiv \neg (p\wedge q) $
##$ p\wedge\neg q \vee \neg r\supset p\vee \neg q \equiv p\supset q\supset \neg r $
#Adja meg egy megadott formula [[diszjunktív normálformáját|Normálforma tétel]]!
#Adja meg egy megadott formula [[konjunktív normálformáját|Normálforma tétel]]!
!!Definíció
${\Gamma , B, C, \Delta \vdash A}\over{\Gamma , C, B, \Delta\vdash A}$
Choose options to search on. Hold will keep the results over multiple searches appending the results until unticked
----
|>|<<search>>|
|<<option chkSearchTitles>> Titles <<option chkSearchText>> Text <<option chkSearchTags>>Tags<<option chkHoldSearches>> Hold |
|borderlessL|k
/***
|''Name:''|ForEachTiddlerPlugin|
|''Version:''|1.0.8 (2007-04-12)|
|''Source:''|http://tiddlywiki.abego-software.de/#ForEachTiddlerPlugin|
|''Author:''|UdoBorkowski (ub [at] abego-software [dot] de)|
|''Licence:''|[[BSD open source license (abego Software)|http://www.abego-software.de/legal/apl-v10.html]]|
|''Copyright:''|© 2005-2007 [[abego Software|http://www.abego-software.de]]|
|''TiddlyWiki:''|1.2.38+, 2.0|
|''Browser:''|Firefox 1.0.4+; Firefox 1.5; InternetExplorer 6.0|
!Description
Create customizable lists, tables etc. for your selections of tiddlers. Specify the tiddlers to include and their order through a powerful language.
''Syntax:''
|>|{{{<<}}}''forEachTiddler'' [''in'' //tiddlyWikiPath//] [''where'' //whereCondition//] [''sortBy'' //sortExpression// [''ascending'' //or// ''descending'']] [''script'' //scriptText//] [//action// [//actionParameters//]]{{{>>}}}|
|//tiddlyWikiPath//|The filepath to the TiddlyWiki the macro should work on. When missing the current TiddlyWiki is used.|
|//whereCondition//|(quoted) JavaScript boolean expression. May refer to the build-in variables {{{tiddler}}} and {{{context}}}.|
|//sortExpression//|(quoted) JavaScript expression returning "comparable" objects (using '{{{<}}}','{{{>}}}','{{{==}}}'. May refer to the build-in variables {{{tiddler}}} and {{{context}}}.|
|//scriptText//|(quoted) JavaScript text. Typically defines JavaScript functions that are called by the various JavaScript expressions (whereClause, sortClause, action arguments,...)|
|//action//|The action that should be performed on every selected tiddler, in the given order. By default the actions [[addToList|AddToListAction]] and [[write|WriteAction]] are supported. When no action is specified [[addToList|AddToListAction]] is used.|
|//actionParameters//|(action specific) parameters the action may refer while processing the tiddlers (see action descriptions for details). <<tiddler [[JavaScript in actionParameters]]>>|
|>|~~Syntax formatting: Keywords in ''bold'', optional parts in [...]. 'or' means that exactly one of the two alternatives must exist.~~|
See details see [[ForEachTiddlerMacro]] and [[ForEachTiddlerExamples]].
!Revision history
* v1.0.8 (2007-04-12)
** Adapted to latest TiddlyWiki 2.2 Beta importTiddlyWiki API (introduced with changeset 2004). TiddlyWiki 2.2 Beta builds prior to changeset 2004 are no longer supported (but TiddlyWiki 2.1 and earlier, of cause)
* v1.0.7 (2007-03-28)
** Also support "pre" formatted TiddlyWikis (introduced with TW 2.2) (when using "in" clause to work on external tiddlers)
* v1.0.6 (2006-09-16)
** Context provides "viewerTiddler", i.e. the tiddler used to view the macro. Most times this is equal to the "inTiddler", but when using the "tiddler" macro both may be different.
** Support "begin", "end" and "none" expressions in "write" action
* v1.0.5 (2006-02-05)
** Pass tiddler containing the macro with wikify, context object also holds reference to tiddler containing the macro ("inTiddler"). Thanks to SimonBaird.
** Support Firefox 1.5.0.1
** Internal
*** Make "JSLint" conform
*** "Only install once"
* v1.0.4 (2006-01-06)
** Support TiddlyWiki 2.0
* v1.0.3 (2005-12-22)
** Features:
*** Write output to a file supports multi-byte environments (Thanks to Bram Chen)
*** Provide API to access the forEachTiddler functionality directly through JavaScript (see getTiddlers and performMacro)
** Enhancements:
*** Improved error messages on InternetExplorer.
* v1.0.2 (2005-12-10)
** Features:
*** context object also holds reference to store (TiddlyWiki)
** Fixed Bugs:
*** ForEachTiddler 1.0.1 has broken support on win32 Opera 8.51 (Thanks to BrunoSabin for reporting)
* v1.0.1 (2005-12-08)
** Features:
*** Access tiddlers stored in separated TiddlyWikis through the "in" option. I.e. you are no longer limited to only work on the "current TiddlyWiki".
*** Write output to an external file using the "toFile" option of the "write" action. With this option you may write your customized tiddler exports.
*** Use the "script" section to define "helper" JavaScript functions etc. to be used in the various JavaScript expressions (whereClause, sortClause, action arguments,...).
*** Access and store context information for the current forEachTiddler invocation (through the build-in "context" object) .
*** Improved script evaluation (for where/sort clause and write scripts).
* v1.0.0 (2005-11-20)
** initial version
!Code
***/
//{{{
//============================================================================
//============================================================================
// ForEachTiddlerPlugin
//============================================================================
//============================================================================
// Only install once
if (!version.extensions.ForEachTiddlerPlugin) {
if (!window.abego) window.abego = {};
version.extensions.ForEachTiddlerPlugin = {
major: 1, minor: 0, revision: 8,
date: new Date(2007,3,12),
source: "http://tiddlywiki.abego-software.de/#ForEachTiddlerPlugin",
licence: "[[BSD open source license (abego Software)|http://www.abego-software.de/legal/apl-v10.html]]",
copyright: "Copyright (c) abego Software GmbH, 2005-2007 (www.abego-software.de)"
};
// For backward compatibility with TW 1.2.x
//
if (!TiddlyWiki.prototype.forEachTiddler) {
TiddlyWiki.prototype.forEachTiddler = function(callback) {
for(var t in this.tiddlers) {
callback.call(this,t,this.tiddlers[t]);
}
};
}
//============================================================================
// forEachTiddler Macro
//============================================================================
version.extensions.forEachTiddler = {
major: 1, minor: 0, revision: 8, date: new Date(2007,3,12), provider: "http://tiddlywiki.abego-software.de"};
// ---------------------------------------------------------------------------
// Configurations and constants
// ---------------------------------------------------------------------------
config.macros.forEachTiddler = {
// Standard Properties
label: "forEachTiddler",
prompt: "Perform actions on a (sorted) selection of tiddlers",
// actions
actions: {
addToList: {},
write: {}
}
};
// ---------------------------------------------------------------------------
// The forEachTiddler Macro Handler
// ---------------------------------------------------------------------------
config.macros.forEachTiddler.getContainingTiddler = function(e) {
while(e && !hasClass(e,"tiddler"))
e = e.parentNode;
var title = e ? e.getAttribute("tiddler") : null;
return title ? store.getTiddler(title) : null;
};
config.macros.forEachTiddler.handler = function(place,macroName,params,wikifier,paramString,tiddler) {
// config.macros.forEachTiddler.traceMacroCall(place,macroName,params,wikifier,paramString,tiddler);
if (!tiddler) tiddler = config.macros.forEachTiddler.getContainingTiddler(place);
// --- Parsing ------------------------------------------
var i = 0; // index running over the params
// Parse the "in" clause
var tiddlyWikiPath = undefined;
if ((i < params.length) && params[i] == "in") {
i++;
if (i >= params.length) {
this.handleError(place, "TiddlyWiki path expected behind 'in'.");
return;
}
tiddlyWikiPath = this.paramEncode((i < params.length) ? params[i] : "");
i++;
}
// Parse the where clause
var whereClause ="true";
if ((i < params.length) && params[i] == "where") {
i++;
whereClause = this.paramEncode((i < params.length) ? params[i] : "");
i++;
}
// Parse the sort stuff
var sortClause = null;
var sortAscending = true;
if ((i < params.length) && params[i] == "sortBy") {
i++;
if (i >= params.length) {
this.handleError(place, "sortClause missing behind 'sortBy'.");
return;
}
sortClause = this.paramEncode(params[i]);
i++;
if ((i < params.length) && (params[i] == "ascending" || params[i] == "descending")) {
sortAscending = params[i] == "ascending";
i++;
}
}
// Parse the script
var scriptText = null;
if ((i < params.length) && params[i] == "script") {
i++;
scriptText = this.paramEncode((i < params.length) ? params[i] : "");
i++;
}
// Parse the action.
// When we are already at the end use the default action
var actionName = "addToList";
if (i < params.length) {
if (!config.macros.forEachTiddler.actions[params[i]]) {
this.handleError(place, "Unknown action '"+params[i]+"'.");
return;
} else {
actionName = params[i];
i++;
}
}
// Get the action parameter
// (the parsing is done inside the individual action implementation.)
var actionParameter = params.slice(i);
// --- Processing ------------------------------------------
try {
this.performMacro({
place: place,
inTiddler: tiddler,
whereClause: whereClause,
sortClause: sortClause,
sortAscending: sortAscending,
actionName: actionName,
actionParameter: actionParameter,
scriptText: scriptText,
tiddlyWikiPath: tiddlyWikiPath});
} catch (e) {
this.handleError(place, e);
}
};
// Returns an object with properties "tiddlers" and "context".
// tiddlers holds the (sorted) tiddlers selected by the parameter,
// context the context of the execution of the macro.
//
// The action is not yet performed.
//
// @parameter see performMacro
//
config.macros.forEachTiddler.getTiddlersAndContext = function(parameter) {
var context = config.macros.forEachTiddler.createContext(parameter.place, parameter.whereClause, parameter.sortClause, parameter.sortAscending, parameter.actionName, parameter.actionParameter, parameter.scriptText, parameter.tiddlyWikiPath, parameter.inTiddler);
var tiddlyWiki = parameter.tiddlyWikiPath ? this.loadTiddlyWiki(parameter.tiddlyWikiPath) : store;
context["tiddlyWiki"] = tiddlyWiki;
// Get the tiddlers, as defined by the whereClause
var tiddlers = this.findTiddlers(parameter.whereClause, context, tiddlyWiki);
context["tiddlers"] = tiddlers;
// Sort the tiddlers, when sorting is required.
if (parameter.sortClause) {
this.sortTiddlers(tiddlers, parameter.sortClause, parameter.sortAscending, context);
}
return {tiddlers: tiddlers, context: context};
};
// Returns the (sorted) tiddlers selected by the parameter.
//
// The action is not yet performed.
//
// @parameter see performMacro
//
config.macros.forEachTiddler.getTiddlers = function(parameter) {
return this.getTiddlersAndContext(parameter).tiddlers;
};
// Performs the macros with the given parameter.
//
// @param parameter holds the parameter of the macro as separate properties.
// The following properties are supported:
//
// place
// whereClause
// sortClause
// sortAscending
// actionName
// actionParameter
// scriptText
// tiddlyWikiPath
//
// All properties are optional.
// For most actions the place property must be defined.
//
config.macros.forEachTiddler.performMacro = function(parameter) {
var tiddlersAndContext = this.getTiddlersAndContext(parameter);
// Perform the action
var actionName = parameter.actionName ? parameter.actionName : "addToList";
var action = config.macros.forEachTiddler.actions[actionName];
if (!action) {
this.handleError(parameter.place, "Unknown action '"+actionName+"'.");
return;
}
var actionHandler = action.handler;
actionHandler(parameter.place, tiddlersAndContext.tiddlers, parameter.actionParameter, tiddlersAndContext.context);
};
// ---------------------------------------------------------------------------
// The actions
// ---------------------------------------------------------------------------
// Internal.
//
// --- The addToList Action -----------------------------------------------
//
config.macros.forEachTiddler.actions.addToList.handler = function(place, tiddlers, parameter, context) {
// Parse the parameter
var p = 0;
// Check for extra parameters
if (parameter.length > p) {
config.macros.forEachTiddler.createExtraParameterErrorElement(place, "addToList", parameter, p);
return;
}
// Perform the action.
var list = document.createElement("ul");
place.appendChild(list);
for (var i = 0; i < tiddlers.length; i++) {
var tiddler = tiddlers[i];
var listItem = document.createElement("li");
list.appendChild(listItem);
createTiddlyLink(listItem, tiddler.title, true);
}
};
abego.parseNamedParameter = function(name, parameter, i) {
var beginExpression = null;
if ((i < parameter.length) && parameter[i] == name) {
i++;
if (i >= parameter.length) {
throw "Missing text behind '%0'".format([name]);
}
return config.macros.forEachTiddler.paramEncode(parameter[i]);
}
return null;
}
// Internal.
//
// --- The write Action ---------------------------------------------------
//
config.macros.forEachTiddler.actions.write.handler = function(place, tiddlers, parameter, context) {
// Parse the parameter
var p = 0;
if (p >= parameter.length) {
this.handleError(place, "Missing expression behind 'write'.");
return;
}
var textExpression = config.macros.forEachTiddler.paramEncode(parameter[p]);
p++;
// Parse the "begin" option
var beginExpression = abego.parseNamedParameter("begin", parameter, p);
if (beginExpression !== null)
p += 2;
var endExpression = abego.parseNamedParameter("end", parameter, p);
if (endExpression !== null)
p += 2;
var noneExpression = abego.parseNamedParameter("none", parameter, p);
if (noneExpression !== null)
p += 2;
// Parse the "toFile" option
var filename = null;
var lineSeparator = undefined;
if ((p < parameter.length) && parameter[p] == "toFile") {
p++;
if (p >= parameter.length) {
this.handleError(place, "Filename expected behind 'toFile' of 'write' action.");
return;
}
filename = config.macros.forEachTiddler.getLocalPath(config.macros.forEachTiddler.paramEncode(parameter[p]));
p++;
if ((p < parameter.length) && parameter[p] == "withLineSeparator") {
p++;
if (p >= parameter.length) {
this.handleError(place, "Line separator text expected behind 'withLineSeparator' of 'write' action.");
return;
}
lineSeparator = config.macros.forEachTiddler.paramEncode(parameter[p]);
p++;
}
}
// Check for extra parameters
if (parameter.length > p) {
config.macros.forEachTiddler.createExtraParameterErrorElement(place, "write", parameter, p);
return;
}
// Perform the action.
var func = config.macros.forEachTiddler.getEvalTiddlerFunction(textExpression, context);
var count = tiddlers.length;
var text = "";
if (count > 0 && beginExpression)
text += config.macros.forEachTiddler.getEvalTiddlerFunction(beginExpression, context)(undefined, context, count, undefined);
for (var i = 0; i < count; i++) {
var tiddler = tiddlers[i];
text += func(tiddler, context, count, i);
}
if (count > 0 && endExpression)
text += config.macros.forEachTiddler.getEvalTiddlerFunction(endExpression, context)(undefined, context, count, undefined);
if (count == 0 && noneExpression)
text += config.macros.forEachTiddler.getEvalTiddlerFunction(noneExpression, context)(undefined, context, count, undefined);
if (filename) {
if (lineSeparator !== undefined) {
lineSeparator = lineSeparator.replace(/\\n/mg, "\n").replace(/\\r/mg, "\r");
text = text.replace(/\n/mg,lineSeparator);
}
saveFile(filename, convertUnicodeToUTF8(text));
} else {
var wrapper = createTiddlyElement(place, "span");
wikify(text, wrapper, null/* highlightRegExp */, context.inTiddler);
}
};
// ---------------------------------------------------------------------------
// Helpers
// ---------------------------------------------------------------------------
// Internal.
//
config.macros.forEachTiddler.createContext = function(placeParam, whereClauseParam, sortClauseParam, sortAscendingParam, actionNameParam, actionParameterParam, scriptText, tiddlyWikiPathParam, inTiddlerParam) {
return {
place : placeParam,
whereClause : whereClauseParam,
sortClause : sortClauseParam,
sortAscending : sortAscendingParam,
script : scriptText,
actionName : actionNameParam,
actionParameter : actionParameterParam,
tiddlyWikiPath : tiddlyWikiPathParam,
inTiddler : inTiddlerParam, // the tiddler containing the <<forEachTiddler ...>> macro call.
viewerTiddler : config.macros.forEachTiddler.getContainingTiddler(placeParam) // the tiddler showing the forEachTiddler result
};
};
// Internal.
//
// Returns a TiddlyWiki with the tiddlers loaded from the TiddlyWiki of
// the given path.
//
config.macros.forEachTiddler.loadTiddlyWiki = function(path, idPrefix) {
if (!idPrefix) {
idPrefix = "store";
}
var lenPrefix = idPrefix.length;
// Read the content of the given file
var content = loadFile(this.getLocalPath(path));
if(content === null) {
throw "TiddlyWiki '"+path+"' not found.";
}
var tiddlyWiki = new TiddlyWiki();
// Starting with TW 2.2 there is a helper function to import the tiddlers
if (tiddlyWiki.importTiddlyWiki) {
if (!tiddlyWiki.importTiddlyWiki(content))
throw "File '"+path+"' is not a TiddlyWiki.";
tiddlyWiki.dirty = false;
return tiddlyWiki;
}
// The legacy code, for TW < 2.2
// Locate the storeArea div's
var posOpeningDiv = content.indexOf(startSaveArea);
var posClosingDiv = content.lastIndexOf(endSaveArea);
if((posOpeningDiv == -1) || (posClosingDiv == -1)) {
throw "File '"+path+"' is not a TiddlyWiki.";
}
var storageText = content.substr(posOpeningDiv + startSaveArea.length, posClosingDiv);
// Create a "div" element that contains the storage text
var myStorageDiv = document.createElement("div");
myStorageDiv.innerHTML = storageText;
myStorageDiv.normalize();
// Create all tiddlers in a new TiddlyWiki
// (following code is modified copy of TiddlyWiki.prototype.loadFromDiv)
var store = myStorageDiv.childNodes;
for(var t = 0; t < store.length; t++) {
var e = store[t];
var title = null;
if(e.getAttribute)
title = e.getAttribute("tiddler");
if(!title && e.id && e.id.substr(0,lenPrefix) == idPrefix)
title = e.id.substr(lenPrefix);
if(title && title !== "") {
var tiddler = tiddlyWiki.createTiddler(title);
tiddler.loadFromDiv(e,title);
}
}
tiddlyWiki.dirty = false;
return tiddlyWiki;
};
// Internal.
//
// Returns a function that has a function body returning the given javaScriptExpression.
// The function has the parameters:
//
// (tiddler, context, count, index)
//
config.macros.forEachTiddler.getEvalTiddlerFunction = function (javaScriptExpression, context) {
var script = context["script"];
var functionText = "var theFunction = function(tiddler, context, count, index) { return "+javaScriptExpression+"}";
var fullText = (script ? script+";" : "")+functionText+";theFunction;";
return eval(fullText);
};
// Internal.
//
config.macros.forEachTiddler.findTiddlers = function(whereClause, context, tiddlyWiki) {
var result = [];
var func = config.macros.forEachTiddler.getEvalTiddlerFunction(whereClause, context);
tiddlyWiki.forEachTiddler(function(title,tiddler) {
if (func(tiddler, context, undefined, undefined)) {
result.push(tiddler);
}
});
return result;
};
// Internal.
//
config.macros.forEachTiddler.createExtraParameterErrorElement = function(place, actionName, parameter, firstUnusedIndex) {
var message = "Extra parameter behind '"+actionName+"':";
for (var i = firstUnusedIndex; i < parameter.length; i++) {
message += " "+parameter[i];
}
this.handleError(place, message);
};
// Internal.
//
config.macros.forEachTiddler.sortAscending = function(tiddlerA, tiddlerB) {
var result =
(tiddlerA.forEachTiddlerSortValue == tiddlerB.forEachTiddlerSortValue)
? 0
: (tiddlerA.forEachTiddlerSortValue < tiddlerB.forEachTiddlerSortValue)
? -1
: +1;
return result;
};
// Internal.
//
config.macros.forEachTiddler.sortDescending = function(tiddlerA, tiddlerB) {
var result =
(tiddlerA.forEachTiddlerSortValue == tiddlerB.forEachTiddlerSortValue)
? 0
: (tiddlerA.forEachTiddlerSortValue < tiddlerB.forEachTiddlerSortValue)
? +1
: -1;
return result;
};
// Internal.
//
config.macros.forEachTiddler.sortTiddlers = function(tiddlers, sortClause, ascending, context) {
// To avoid evaluating the sortClause whenever two items are compared
// we pre-calculate the sortValue for every item in the array and store it in a
// temporary property ("forEachTiddlerSortValue") of the tiddlers.
var func = config.macros.forEachTiddler.getEvalTiddlerFunction(sortClause, context);
var count = tiddlers.length;
var i;
for (i = 0; i < count; i++) {
var tiddler = tiddlers[i];
tiddler.forEachTiddlerSortValue = func(tiddler,context, undefined, undefined);
}
// Do the sorting
tiddlers.sort(ascending ? this.sortAscending : this.sortDescending);
// Delete the temporary property that holds the sortValue.
for (i = 0; i < tiddlers.length; i++) {
delete tiddlers[i].forEachTiddlerSortValue;
}
};
// Internal.
//
config.macros.forEachTiddler.trace = function(message) {
displayMessage(message);
};
// Internal.
//
config.macros.forEachTiddler.traceMacroCall = function(place,macroName,params) {
var message ="<<"+macroName;
for (var i = 0; i < params.length; i++) {
message += " "+params[i];
}
message += ">>";
displayMessage(message);
};
// Internal.
//
// Creates an element that holds an error message
//
config.macros.forEachTiddler.createErrorElement = function(place, exception) {
var message = (exception.description) ? exception.description : exception.toString();
return createTiddlyElement(place,"span",null,"forEachTiddlerError","<<forEachTiddler ...>>: "+message);
};
// Internal.
//
// @param place [may be null]
//
config.macros.forEachTiddler.handleError = function(place, exception) {
if (place) {
this.createErrorElement(place, exception);
} else {
throw exception;
}
};
// Internal.
//
// Encodes the given string.
//
// Replaces
// "$))" to ">>"
// "$)" to ">"
//
config.macros.forEachTiddler.paramEncode = function(s) {
var reGTGT = new RegExp("\\$\\)\\)","mg");
var reGT = new RegExp("\\$\\)","mg");
return s.replace(reGTGT, ">>").replace(reGT, ">");
};
// Internal.
//
// Returns the given original path (that is a file path, starting with "file:")
// as a path to a local file, in the systems native file format.
//
// Location information in the originalPath (i.e. the "#" and stuff following)
// is stripped.
//
config.macros.forEachTiddler.getLocalPath = function(originalPath) {
// Remove any location part of the URL
var hashPos = originalPath.indexOf("#");
if(hashPos != -1)
originalPath = originalPath.substr(0,hashPos);
// Convert to a native file format assuming
// "file:///x:/path/path/path..." - pc local file --> "x:\path\path\path..."
// "file://///server/share/path/path/path..." - FireFox pc network file --> "\\server\share\path\path\path..."
// "file:///path/path/path..." - mac/unix local file --> "/path/path/path..."
// "file://server/share/path/path/path..." - pc network file --> "\\server\share\path\path\path..."
var localPath;
if(originalPath.charAt(9) == ":") // pc local file
localPath = unescape(originalPath.substr(8)).replace(new RegExp("/","g"),"\\");
else if(originalPath.indexOf("file://///") === 0) // FireFox pc network file
localPath = "\\\\" + unescape(originalPath.substr(10)).replace(new RegExp("/","g"),"\\");
else if(originalPath.indexOf("file:///") === 0) // mac/unix local file
localPath = unescape(originalPath.substr(7));
else if(originalPath.indexOf("file:/") === 0) // mac/unix local file
localPath = unescape(originalPath.substr(5));
else // pc network file
localPath = "\\\\" + unescape(originalPath.substr(7)).replace(new RegExp("/","g"),"\\");
return localPath;
};
// ---------------------------------------------------------------------------
// Stylesheet Extensions (may be overridden by local StyleSheet)
// ---------------------------------------------------------------------------
//
setStylesheet(
".forEachTiddlerError{color: #ffffff;background-color: #880000;}",
"forEachTiddler");
//============================================================================
// End of forEachTiddler Macro
//============================================================================
//============================================================================
// String.startsWith Function
//============================================================================
//
// Returns true if the string starts with the given prefix, false otherwise.
//
version.extensions["String.startsWith"] = {major: 1, minor: 0, revision: 0, date: new Date(2005,11,20), provider: "http://tiddlywiki.abego-software.de"};
//
String.prototype.startsWith = function(prefix) {
var n = prefix.length;
return (this.length >= n) && (this.slice(0, n) == prefix);
};
//============================================================================
// String.endsWith Function
//============================================================================
//
// Returns true if the string ends with the given suffix, false otherwise.
//
version.extensions["String.endsWith"] = {major: 1, minor: 0, revision: 0, date: new Date(2005,11,20), provider: "http://tiddlywiki.abego-software.de"};
//
String.prototype.endsWith = function(suffix) {
var n = suffix.length;
return (this.length >= n) && (this.right(n) == suffix);
};
//============================================================================
// String.contains Function
//============================================================================
//
// Returns true when the string contains the given substring, false otherwise.
//
version.extensions["String.contains"] = {major: 1, minor: 0, revision: 0, date: new Date(2005,11,20), provider: "http://tiddlywiki.abego-software.de"};
//
String.prototype.contains = function(substring) {
return this.indexOf(substring) >= 0;
};
//============================================================================
// Array.indexOf Function
//============================================================================
//
// Returns the index of the first occurance of the given item in the array or
// -1 when no such item exists.
//
// @param item [may be null]
//
version.extensions["Array.indexOf"] = {major: 1, minor: 0, revision: 0, date: new Date(2005,11,20), provider: "http://tiddlywiki.abego-software.de"};
//
Array.prototype.indexOf = function(item) {
for (var i = 0; i < this.length; i++) {
if (this[i] == item) {
return i;
}
}
return -1;
};
//============================================================================
// Array.contains Function
//============================================================================
//
// Returns true when the array contains the given item, otherwise false.
//
// @param item [may be null]
//
version.extensions["Array.contains"] = {major: 1, minor: 0, revision: 0, date: new Date(2005,11,20), provider: "http://tiddlywiki.abego-software.de"};
//
Array.prototype.contains = function(item) {
return (this.indexOf(item) >= 0);
};
//============================================================================
// Array.containsAny Function
//============================================================================
//
// Returns true when the array contains at least one of the elements
// of the item. Otherwise (or when items contains no elements) false is returned.
//
version.extensions["Array.containsAny"] = {major: 1, minor: 0, revision: 0, date: new Date(2005,11,20), provider: "http://tiddlywiki.abego-software.de"};
//
Array.prototype.containsAny = function(items) {
for(var i = 0; i < items.length; i++) {
if (this.contains(items[i])) {
return true;
}
}
return false;
};
//============================================================================
// Array.containsAll Function
//============================================================================
//
// Returns true when the array contains all the items, otherwise false.
//
// When items is null false is returned (even if the array contains a null).
//
// @param items [may be null]
//
version.extensions["Array.containsAll"] = {major: 1, minor: 0, revision: 0, date: new Date(2005,11,20), provider: "http://tiddlywiki.abego-software.de"};
//
Array.prototype.containsAll = function(items) {
for(var i = 0; i < items.length; i++) {
if (!this.contains(items[i])) {
return false;
}
}
return true;
};
} // of "install only once"
// Used Globals (for JSLint) ==============
// ... DOM
/*global document */
// ... TiddlyWiki Core
/*global convertUnicodeToUTF8, createTiddlyElement, createTiddlyLink,
displayMessage, endSaveArea, hasClass, loadFile, saveFile,
startSaveArea, store, wikify */
//}}}
/***
!Licence and Copyright
Copyright (c) abego Software ~GmbH, 2005 ([[www.abego-software.de|http://www.abego-software.de]])
Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:
Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.
Redistributions in binary form must reproduce the above copyright notice, this
list of conditions and the following disclaimer in the documentation and/or other
materials provided with the distribution.
Neither the name of abego Software nor the names of its contributors may be
used to endorse or promote products derived from this software without specific
prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
DAMAGE.
***/
| source file:|{{{D:\Logika\Logika_tiddlywiki\Frege.jpg}}}|
| attached on:|19 October 2010 by Mihálydeák|
| embedded:|[[Frege.jpg|Frege.jpg]] - {{{type=image/jpeg, size=22081 bytes, encoded=29904 bytes}}}|
| local file:|//none//|
| remote link:|//none//|
image
<<<
usage: {{{[img[tooltip|Frege.jpg]] or [img[tooltip|Frege.jpg][link]]}}}
[img[tooltip|Frege.jpg]]
<<<
/% DO NOT EDIT BELOW THIS POINT
---BEGIN_DATA---
image/jpeg;base64,
/9j/4AAQSkZJRgABAgEASABIAAD/7Q9mUGhvdG9zaG9wIDMuMAA4QklNA+kAAAAA
AHgAAwAAAEgASAAAAAADDQIa/+L/4wMsAjYDRwV7A+AAAgAAAEgASAAAAAADDQIa
AAEAAABkAAAAAQADAwMA/wABJw8AAQABAAAAAAAAAAAAAAAAYAgAGQGQAAAAAAAA
AAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAA4QklNA+0AAAAAABAASAAAAAEAAQBI
AAAAAQABOEJJTQPzAAAAAAAIAAAAAAAAAAA4QklNBAoAAAAAAAEAADhCSU0nEAAA
AAAACgABAAAAAAAAAAI4QklNA/QAAAAAABIANQAAAAEALQAAAAYAAAAAAAE4QklN
A/cAAAAAABwAAP////////////////////////////8D6AAAOEJJTQQIAAAAAAAQ
AAAAAQAAAkAAAAJAAAAAADhCSU0ECQAAAAAN/AAAAAEAAABkAAAAgAAAASwAAJYA
AAAN4AAYAAH/2P/gABBKRklGAAECAQBIAEgAAP/+ACdGaWxlIHdyaXR0ZW4gYnkg
QWRvYmUgUGhvdG9zaG9wqCA0LjAA/+4ADkFkb2JlAGSAAAAAAf/bAIQADAgICAkI
DAkJDBELCgsRFQ8MDA8VGBMTFRMTGBEMDAwMDAwRDAwMDAwMDAwMDAwMDAwMDAwM
DAwMDAwMDAwMDAENCwsNDg0QDg4QFA4ODhQUDg4ODhQRDAwMDAwREQwMDAwMDBEM
DAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwM/8AAEQgAgABkAwEiAAIRAQMRAf/d
AAQAB//EAT8AAAEFAQEBAQEBAAAAAAAAAAMAAQIEBQYHCAkKCwEAAQUBAQEBAQEA
AAAAAAAAAQACAwQFBgcICQoLEAABBAEDAgQCBQcGCAUDDDMBAAIRAwQhEjEFQVFh
EyJxgTIGFJGhsUIjJBVSwWIzNHKC0UMHJZJT8OHxY3M1FqKygyZEk1RkRcKjdDYX
0lXiZfKzhMPTdePzRieUpIW0lcTU5PSltcXV5fVWZnaGlqa2xtbm9jdHV2d3h5en
t8fX5/cRAAICAQIEBAMEBQYHBwYFNQEAAhEDITESBEFRYXEiEwUygZEUobFCI8FS
0fAzJGLhcoKSQ1MVY3M08SUGFqKygwcmNcLSRJNUoxdkRVU2dGXi8rOEw9N14/NG
lKSFtJXE1OT0pbXF1eX1VmZ2hpamtsbW5vYnN0dXZ3eHl6e3x//aAAwDAQACEQMR
AD8AyvSa6dNYEE8J2DTUadgNYKjWSQJGs6T28lKZ5/O7nie/tSUuZBkmD37n5JOk
aztHaefMKVbC54EHcY9sau7O26+1dX0L6osftyco7mcisw4f1Xbt7XJKeUppvynb
Map+Q7s1gJj+stSn6p9fvaHenVS0j/CP1/8AA9y7r7FjU+yiKGRqxntE/wBlAfW9
oMOPt7l0z+KSnh7vq11igE234rHgH2uc4SPH6G1UH4+TS6LmNMSS6p4fA/tRuXcZ
GIy5pdu3fErHODQy1rwQWSAWzM+O0JKearsbYCGOBjSIg+HCn46iCO/irn1nYzHt
Dm4lTGuP6LIpJa8mPd7v8L/xVizcbJZaJBEzAIEflSUm7jXXg6D8Eo+lpz2I5+KZ
rmk6Ee0/RESP6qcyQR28fJJSo14/NiY/1aklA9SNpmONOP8AySSSn//QxqdwEuGp
4PcozYGh08I/6lqBUXjQ6A8OOmnyRiXRLdDrrGqSnpvqd0luba+9+jKQNzomSddm
4/nLtDXUxoDfa0ae3sqX1bxBidExqvz7GetZ/Ws93/Rb7Vfs000gJKQupZLiSfM+
ar5DqmV+4TOpB17qw58D29+Y5/FZ+da0NOwgvMjQkkePCSmln5bWCGhzQdAIIWS+
9lbgX6OJ40Ov/RRc2/YHS0k/1T+Pu+iueyM6ySXfR1aZOmhSU6+XkV3Y7se2HVWS
CwwRP9Urjcqr7Fc66qdk7X1zr5/5v5i1G5rnwHOIAn3DU8903UMQXgln88RuawjS
yPpVz+ba2PYkprVWse0WM9wIBJOnPCI0gF2uh4Py+iVnYDiyx2OTuA/SVk92n6U/
1XK+2SAJ07T4pKZbrNsSfpcdoSS3aT+dEc6zKSSn/9HEbZ7y2NDEAd0ZrCfY36Tj
t05kxCG7a4cRJnz8v7SsYVrcfLovPubVayx2oJIa4O/gkp9Xx6hj0VY7dBTWyuf6
jQ1Na8NMn7+yo5/XcPDtc15nbq7/AGa+aon604l1opa0t3Aw48bv3Yd7klOldaBy
ZB+Q/BZOZd+jc51m0a7oO2B2btHvchZPVZpe8H6IcNY5H0lxWX1Tq/UbTXiv9Kql
s2PED/tyw+7+okp0M/rXT2v2A6zodvy3btw3rKys6l7yGe6JgyXDT9387+vW9Z2V
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
2Q==
---END_DATA---
%/
/***
|Name|GotoPlugin|
|Source|http://www.TiddlyTools.com/#GotoPlugin|
|Documentation|http://www.TiddlyTools.com/#GotoPluginInfo|
|Version|1.7.0|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|plugin|
|Requires||
|Overrides||
|Description|view any tiddler by entering it's title - displays list of possible matches|
''View a tiddler by typing its title and pressing //enter//.'' As you type, a list of possible matches is displayed. You can scroll-and-click (or use arrows+enter) to select/view a tiddler, or press //escape// to close the listbox to resume typing. When the listbox is ''//not//'' being displayed, press //escape// to clear the current text input and start over.
!!!!!Documentation
>see [[GotoPluginInfo]]
!!!!!Revisions
<<<
2008.10.16 [1.7.0] in macro handler(), changed to use //named// params instead of positional params, and added optional "filter:" param for tag filtering. Removed 'insert' handling (now provided by [[QuickEditPlugin]]).
|please see [[GotoPluginInfo]] for additional revision details|
2006.05.05 [0.0.0] started
<<<
!!!!!Code
***/
//{{{
version.extensions.GotoPlugin= {major: 1, minor: 7, revision: 0, date: new Date(2008,10,16)};
// automatically tweak shadow SideBarOptions to add <<gotoTiddler>> macro above <<search>>
config.shadowTiddlers.SideBarOptions=config.shadowTiddlers.SideBarOptions.replace(/<<search>>/,"{{button{goto}}}\n<<gotoTiddler>><<search>>");
config.macros.gotoTiddler= {
listMaxSize: 10,
listHeading: 'Found %0 matching title%1...',
searchItem: "Search for '%0'...",
handler:
function(place,macroName,params,wikifier,paramString,tiddler) {
var quiet =params.contains("quiet");
var search =params.contains("search");
params = paramString.parseParams("anon",null,true,false,false);
var instyle =getParam(params,"inputstyle","");
var liststyle =getParam(params,"liststyle","");
var filter =getParam(params,"filter","");
var html=this.html;
var keyevent=window.event?"onkeydown":"onkeypress"; // IE event fixup for ESC handling
html=html.replace(/%keyevent%/g,keyevent);
html=html.replace(/%search%/g,search);
html=html.replace(/%quiet%/g,quiet);
html=html.replace(/%instyle%/g,instyle);
html=html.replace(/%liststyle%/g,liststyle);
html=html.replace(/%filter%/g,filter);
if (config.browser.isIE) html=this.IEtableFixup.format([html]);
createTiddlyElement(place,"span").innerHTML=html;
},
html:
'<form onsubmit="return false" style="display:inline;margin:0;padding:0">\
<input name=gotoTiddler type=text autocomplete="off" accesskey="G" style="%instyle%"\
title="enter a tiddler title"\
onclick="this.form.list.style.display=\'none\';"\
onfocus="this.select(); this.setAttribute(\'accesskey\',\'G\');"\
%keyevent%="return config.macros.gotoTiddler.inputEscKeyHandler(event,this,this.form.list);"\
onkeyup="return config.macros.gotoTiddler.inputKeyHandler(event,this,%quiet%,%search%);">\
<select name=list style="%liststyle%;display:none;position:absolute"\
onchange="if (!this.selectedIndex) this.selectedIndex=1;"\
onblur="this.style.display=\'none\';"\
%keyevent%="return config.macros.gotoTiddler.selectKeyHandler(event,this,this.form.gotoTiddler);"\
onclick="return config.macros.gotoTiddler.processItem(this.value,this.form.gotoTiddler,this);">\
</select><input name="filter" type="hidden" value="%filter%">\
</form>',
IEtableFixup:
"<table style='width:100%;display:inline;padding:0;margin:0;border:0;'>\
<tr style='padding:0;margin:0;border:0;'><td style='padding:0;margin:0;border:0;'>\
%0</td></tr></table>",
getItems:
function(val,filter) {
if (!this.items.length || val.length<2) { // starting new search, refresh cached list of tiddlers/shadows/tags
this.items=new Array();
if (filter.length) {
var fn=store.getMatchingTiddlers||store.getTaggedTiddlers;
var tiddlers=store.sortTiddlers(fn.apply(store,[filter]),'title');
} else
var tiddlers=store.getTiddlers("title","excludeLists");
for(var t=0; t<tiddlers.length; t++) this.items.push(tiddlers[t].title);
if (!filter.length) {
for (var t in config.shadowTiddlers) this.items.pushUnique(t);
var tags=store.getTags();
for(var t=0; t<tags.length; t++) this.items.pushUnique(tags[t][0]);
}
}
var found = [];
var match=val.toLowerCase();
for(var i=0; i<this.items.length; i++)
if (this.items[i].toLowerCase().indexOf(match)!=-1) found.push(this.items[i]);
return found;
},
items: [], // cached list of tiddlers/shadows/tags
getItemSuffix:
function(t) {
if (store.tiddlerExists(t)) return ""; // tiddler
if (store.isShadowTiddler(t)) return " (shadow)"; // shadow
return " (tag)"; // tag
},
keyProcessed:
function(ev) { // utility function: exits handler and prevents browser from processing the keystroke
ev.cancelBubble=true; // IE4+
try{event.keyCode=0;}catch(e){}; // IE5
if (window.event) ev.returnValue=false; // IE6
if (ev.preventDefault) ev.preventDefault(); // moz/opera/konqueror
if (ev.stopPropagation) ev.stopPropagation(); // all
return false;
},
inputEscKeyHandler:
function(event,here,list) {
var key=event.keyCode;
// escape... hide list (2nd esc=clears input)
if (key==27) {
if (list.style.display=="none")
here.value=here.defaultValue;
list.style.display="none";
return this.keyProcessed(event);
}
return true; // key bubbles up
},
inputKeyHandler:
function(event,here,quiet,search) {
var key=event.keyCode;
var list=here.form.list;
var filter=here.form.filter;
// non-printing chars... bubble up, except: backspace=8, enter=13, space=32, down=40, delete=46
if (key<48) switch(key) { case 8: case 13: case 32: case 40: case 46: break; default: return true; }
// blank input... if down/enter... fall through (list all)... else, and hide list
if (!here.value.length && !(key==40 || key==13)) { list.style.display="none"; return this.keyProcessed(event); }
// make sure list is shown (unless quiet option)
list.style.display=!quiet?"block":"none";
// non-blank input... enter key... show/create tiddler
if (key==13) return this.processItem(here.value,here,list);
// down key... shows/moves to list...
if (key==40) { list.style.display="block"; list.focus(); }
// if list is showing, fill it with found results...
if (list.style.display!="none") {
var indent='\xa0\xa0\xa0';
var found = this.getItems(here.value,filter.value); // find matching items...
found.sort(); // alpha by title
while (list.length > 0) list.options[0]=null; // clear list
var hdr=this.listHeading.format([found.length,found.length==1?"":"s"]);
list.options[0]=new Option(hdr,"",false,false);
for (var t=0; t<found.length; t++) list.options[list.length]=
new Option(indent+found[t]+this.getItemSuffix(found[t]),found[t],false,false);
if (search)
list.options[list.length]=new Option(this.searchItem.format([here.value]),"*",false,false);
list.size=(list.length<this.listMaxSize?list.length:this.listMaxSize); // resize list...
list.selectedIndex=(key==40 || key==13)?1:0;
}
return true; // key bubbles up
},
selectKeyHandler:
function(event,list,editfield) {
if (event.keyCode==27) // escape... hide list, move to edit field
{ editfield.focus(); list.style.display="none"; return this.keyProcessed(event); }
if (event.keyCode==13 && list.value.length) // enter... view selected item
{ this.processItem(list.value,editfield,list); return this.keyProcessed(event); }
return true; // key bubbles up
},
processItem:
function(title,here,list) {
if (!title.length) return;
list.style.display='none';
if (title=="*") { story.search(here.value); return false; } // do full-text search
here.value=title;
story.displayTiddler(null,title); // show selected tiddler
return false;
}
}
//}}}
.tabSelected {
padding: 1px;
cursor: default;
color: #700;
background-color: #000;
border-left:0px solid #000;
border-top:0px solid #000;
border-right:0px solid #000;
font-size:.95em;
font-weight:bold;
padding: 2px 4px;
}
.viewer .tabSelected {
padding: 1px;
cursor: default;
color: #700;
background-color: #000;
border-left:0px solid #000;
border-top:0px solid #000;
border-right:0px solid #000;
font-size:.95em;
font-weight:bold;
padding: 2px 4px;
}
.tabUnselected {
padding: 1px;
color: #070;
background-color: #666;
font-size:.95em;
padding: 2px 4px;
}
.viewer .tabUnselected {
padding: 1px;
color: #070;
background-color: #666;
font-size:.95em;font-weight:bold;
padding: 2px 4px;
}
/***
|Name|HTMLFormattingPlugin|
|Source|http://www.TiddlyTools.com/#HTMLFormattingPlugin|
|Documentation|http://www.TiddlyTools.com/#HTMLFormattingPluginInfo|
|Version|2.4.0|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|plugin|
|Requires||
|Overrides|'HTML' formatter|
|Description|embed wiki syntax formatting inside of HTML content|
The ~HTMLFormatting plugin allows you to ''mix wiki-style formatting syntax within HTML formatted content'' by extending the action of the standard TiddlyWiki formatting handler.
!!!!!Documentation
>see [[HTMLFormattingPluginInfo]]
!!!!!Revisions
<<<
2009.01.05 [2.4.0] in wikifyTextNodes(), pass w.highlightRegExp and w.tiddler to wikify() so that search term highlighting and tiddler-relative macro processing will work
| see [[HTMLFormattingPluginInfo]] for additional revision details |
2005.06.26 [1.0.0] Initial Release (as code adaptation - pre-dates TiddlyWiki plugin architecture!!)
<<<
!!!!!Code
***/
//{{{
version.extensions.HTMLFormattingPlugin= {major: 2, minor: 4, revision: 0, date: new Date(2009,1,5)};
// find the formatter for HTML and replace the handler
initHTMLFormatter();
function initHTMLFormatter()
{
for (var i=0; i<config.formatters.length && config.formatters[i].name!="html"; i++);
if (i<config.formatters.length) config.formatters[i].handler=function(w) {
if (!this.lookaheadRegExp) // fixup for TW2.0.x
this.lookaheadRegExp = new RegExp(this.lookahead,"mg");
this.lookaheadRegExp.lastIndex = w.matchStart;
var lookaheadMatch = this.lookaheadRegExp.exec(w.source)
if(lookaheadMatch && lookaheadMatch.index == w.matchStart) {
var html=lookaheadMatch[1];
// if <nowiki> is present, just let browser handle it!
if (html.indexOf('<nowiki>')!=-1)
createTiddlyElement(w.output,"span").innerHTML=html;
else {
// if <hide linebreaks> is present, suppress wiki-style literal handling of newlines
if (html.indexOf('<hide linebreaks>')!=-1) html=html.replace(/\n/g,' ');
// remove all \r's added by IE textarea and mask newlines and macro brackets
html=html.replace(/\r/g,'').replace(/\n/g,'\\n').replace(/<</g,'%%(').replace(/>>/g,')%%');
// create span, let browser parse HTML
var e=createTiddlyElement(w.output,"span"); e.innerHTML=html;
// then re-render text nodes as wiki-formatted content
wikifyTextNodes(e,w);
}
w.nextMatch = this.lookaheadRegExp.lastIndex; // continue parsing
}
}
}
// wikify #text nodes that remain after HTML content is processed (pre-order recursion)
function wikifyTextNodes(theNode,w)
{
function unmask(s) { return s.replace(/\%%\(/g,'<<').replace(/\)\%%/g,'>>').replace(/\\n/g,'\n'); }
switch (theNode.nodeName.toLowerCase()) {
case 'style': case 'option': case 'select':
theNode.innerHTML=unmask(theNode.innerHTML);
break;
case 'textarea':
theNode.value=unmask(theNode.value);
break;
case '#text':
var txt=unmask(theNode.nodeValue);
var newNode=createTiddlyElement(null,"span");
theNode.parentNode.replaceChild(newNode,theNode);
wikify(txt,newNode,highlightHack,w.tiddler);
break;
default:
for (var i=0;i<theNode.childNodes.length;i++)
wikifyTextNodes(theNode.childNodes.item(i),w); // recursion
break;
}
}
//}}}
<<tabs "" [[Halmazelméleti jelek]] "" [[Halmazelméleti jelek]] [[Halmazelméleti műveletek]] "" [[Halmazelméleti műveletek]] [[Induktív definíció]] "" [[Induktív definíció]] [[Megszámlálhatóan végtelen]] "" [[Megszámlálhatóan végtelen]] >>
*Relációt kifejező jelek:
**$\in$: az eleme reláció jele: ha $a$ egy objektum, $H$ pedig egy halmaz, akkor $a\in H$ azt fejezi ki, hogy az $a$ objektum eleme a $H$ halmaznak.
**$\subseteq$: a része reláció jele; ha $H_1$ és $H_2$ tetszőleges halmazok, akkor $H_1\subseteq H_2$ azt fejezi ki, hogy a $H_1$ halmaz minden eleme, eleme a $H_2$ halmaznak.
*Műveleti jelek
**$\cup$
**$\cap$
*Halmazelméleti jelölési konvenciók:
**$\emptyset$: az üres halmaz jele; olyan halmazt jelöl, amelynek nincs egyetlen eleme sem.
*Descartes szorzat:
**Legyenek $H_1$ és $H_2$ nemüres halmazok. $H_1 \times H_2=_{def}\{<h_1,h_2>\vert\quad h_1\in H_1, \quad h_2\in H_2\}$
**A $H_1 \times H_2$ halmazt a $H_1$ és $H_2$ halmazok Descartes szorzatának nevezzük.
**Egy halmaz önmagával vett Descartes szorzata ($H \times H$) a halmaz elemiből képzett rendezett párok halmaza. Jelölés: $H^{(2)}=H \times H$
**Egy halmaz önmagával vett n-szeres Descartes szorzata ($H \times H\times\ldots\times H$) a halmaz elemiből képzett rendezett rendezett n-esek. Jelölés: $H^{(n)}=H \times H\times\ldots\times H$
<<tabs "" [[Intro ]] "help with menus" [[IntroTreeview]] [[CreateNewMenu ]] "" [[CreateNewMenu]] [[CreateNewBranches]] "" [[CreateNewBranches]] [[MenuOptions]] "" [[MenuOptions]] [[RollYourOwn]] "" [[RollYourOwn]] [[TheProjectManager ]] "" [[TheProjectManager]]>>
!!Definíció
Azokat a logikai konstansokat (logikai műveleteket), amelyek szemantikai szabálya egy $f: \{0,1\}^{(n)}\rightarrow \{0,1\}$ függvénnyel megadható, $n$ argumentumú igazsáfunktoroknak nevezzük.
!!!Megjegyzés
A nulladrendű logika logikai konstansai igazságfunktorok.
<<tabs "" [[Negáció]] "" [[Negáció]] [[Implikáció]] "" [[Implikáció]] [[Konjunkció]] "" [[Konjunkció]] [[Diszjunkció]] "" [[Diszjunkció]] [[Ekvivalencia]] "" [[(Materiális) ekvivalencia]] [[Konjunkció-diszjunkció]] "" [[A konjunkció és a diszjunkció kapcsolata]] [[Igazságfunktorok kifejezhetősége]] "" [[Kifejezhetőség]]>>
Az implikáció igazságtáblázata:
| $\supset$ | 0 | 1 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
*Tipikus természetes nyelvi alakja: Ha ..., akkor ...
*Legyen $A,B\in Form$. $(A\supset B)$ kiolvasása:
**Ha $A$, akkor $B$.
**Amennyiben $A$, úgy $B$.
**$A$ implikáció $B$.
**$A$ implikálja $B$-t.
!!Az implikáció tulajdonságai
*$\models (A\supset A)$
*Modus ponens (leválasztási szabály): $\{(A\supset B), A\}\models B$
*Modus tollens (indirekt cáfolás sémája):$\{(A\supset B), \neg B\}\models \neg A$
*Láncszabály: $\{(A\supset B), (B\supset C)\} \models (A\supset C)$
*Redukció ad abszurdum: $\{(A\supset B), (A\supset \neg B)\}\models \neg A$
*$\neg A \models (A\supset B)$
*$ B \models (A\supset B)$
*Áthelyezési törvény: $((A\wedge B)\supset C)\Leftrightarrow (A\supset(B\supset C))$
*Kontrapozíció: $(A\supset B) \Leftrightarrow (\neg B \supset \neg A)$
*$(A\supset\neg A)\models \neg A$
*$(\neg A\supset A)\models A$
*$(A\supset(B\supset C))\Leftrightarrow ((A\supset B)\supset(A\supset C))$
*$\models (A\supset(\neg A\supset B))$
*$((A\vee B)\supset C)\Leftrightarrow ((A\supset C)\wedge(B\supset C))$
*Az $\{A_1, A_2,\ldots , A_n\}\models A$ $(A_1, A_2,\ldots , A_n, A\in Form)$ akkor és csak akkor, ha az $((A_1\wedge A_2\wedge \ldots \wedge A_n)\supset A)$ formula érvényes.
!!Definíció (bevezető szabály)
${\Gamma , A\vdash B}\over{\Gamma \vdash A\supset B}$
!!Definíció (alkalmazó szabály)
${\Gamma \vdash A\quad \Gamma\vdash A\supset B}\over{\Gamma \vdash B}$
!!!Megjegyzés
*A bevezető szabály nem más, mint a [[dedukció tétel|Dedukció tétel (kalkulus)]] megfogalmazása a természetes levezetés eszköztárával.
*Az alkalmazó szabály nem más, mint a [[szintaktikai következményreláció definíciójában|Szintaktikai következményreláció]] szereplő leválasztási szabálynak a megfogalmazása a természetes levezetés eszköztárával.
On Saturday, 27 June 2009 1:32:34 AM, YourName imported 19 tiddlers from
[[F:\TiddlyWiki\TWExperiments\TiddlyTools\tiddlytools.com_index_2.htm|F:\TiddlyWiki\TWExperiments\TiddlyTools\tiddlytools.com_index_2.htm]]:
<<<
#[[QuickEditPackage]] - replaces QuickEditPackage - 2/22/2009 01:23:00 by ELSDesignStudios
#[[QuickEditPlugin]] - replaces QuickEditPlugin - 6/27/2009 01:24:48 by YourName
#[[QuickEditToolbar]] - replaces QuickEditToolbar - 5/12/2009 03:20:00 by ELSDesignStudios
#[[QuickEdit_align]] - replaces QuickEdit_align - 5/12/2009 03:18:00 by ELSDesignStudios
#[[QuickEdit_color]] - replaces QuickEdit_color - 6/2/2009 00:33:00 by YourName
#[[QuickEdit_convert]] - replaces QuickEdit_convert - 5/12/2009 03:18:00 by ELSDesignStudios
#[[QuickEdit_custom]] - replaces QuickEdit_custom - 6/10/2009 10:09:00 by YourName
#[[QuickEdit_customList]] - replaces QuickEdit_customList - 6/10/2009 10:05:00 by YourName
#[[QuickEdit_font]] - replaces QuickEdit_font - 5/12/2009 03:17:00 by ELSDesignStudios
#[[QuickEdit_fontList]] - replaces QuickEdit_fontList - 3/23/2008 06:01:00 by ELSDesignStudios
#[[QuickEdit_format]] - replaces QuickEdit_format - 5/18/2009 09:32:00 by ELSDesignStudios
#[[QuickEdit_image]] - replaces QuickEdit_image - 5/12/2009 03:17:00 by ELSDesignStudios
#[[QuickEdit_insert]] - replaces QuickEdit_insert - 5/23/2009 03:37:00 by ELSDesignStudios
#[[QuickEdit_link]] - replaces QuickEdit_link - 5/23/2009 03:37:00 by ELSDesignStudios
#[[QuickEdit_macro]] - replaces QuickEdit_macro - 5/12/2009 03:17:00 by ELSDesignStudios
#[[QuickEdit_replace]] - replaces QuickEdit_replace - 5/12/2009 03:17:00 by ELSDesignStudios
#[[QuickEdit_sort]] - replaces QuickEdit_sort - 5/12/2009 03:17:00 by ELSDesignStudios
#[[QuickEdit_split]] - replaces QuickEdit_split - 6/27/2009 01:31:21 by YourName
#[[StyleSheetShortcuts]] - replaces StyleSheetShortcuts - 6/1/2009 05:11:00 by YourName
<<<
----
On Monday, 15 June 2009 7:07:30 PM, YourName imported 11 tiddlers from
[[F:\TiddlyWiki\TWT-Treeview\twt-treeview-badtry.html|F:\TiddlyWiki\TWT-Treeview\twt-treeview-badtry.html]]:
<<<
#[[AnotherNewProject]] - added
#[[CreateAProjectManager]] - added
#[[Done]] - added
#[[InProgress]] - added
#[[MakeTiddlers]] - replaces MakeTiddlers - 6/2/2009 20:55:00 by YourName
#[[MonkeyTaggerMacro]] - added
#[[NewProjectTemplate]] - added
#[[Projects]] - added
#[[Started]] - added
#[[TheProjectManager]] - added
#[[TiddlerMakeFile]] - replaces TiddlerMakeFile - 6/2/2009 20:56:00 by YourName
<<<
----
On Friday, 12 June 2009 1:49:56 AM, YourName imported 1 tiddler from
[[F:\TiddlyWiki\TWT-Treeview\twt-treeview-badtry.html|F:\TiddlyWiki\TWT-Treeview\twt-treeview-badtry.html]]:
<<<
#[[MainMenuTW]] - added
<<<
----
On Friday, 12 June 2009 1:47:03 AM, YourName imported 1 tiddler from
[[F:\TiddlyWiki\TWT-Treeview\twt-treeview-badtry.html|F:\TiddlyWiki\TWT-Treeview\twt-treeview-badtry.html]]:
<<<
#[[CommonCSS]] - added
<<<
----
On Friday, 12 June 2009 1:45:21 AM, YourName imported 7 tiddlers from
[[F:\TiddlyWiki\TWT-Treeview\twt-treeview-badtry.html|F:\TiddlyWiki\TWT-Treeview\twt-treeview-badtry.html]]:
<<<
#[[StyleSheet]] - replaces StyleSheet - 6/6/2009 11:13:00 by YourName
#[[TWHelpTheme]] - replaces TWHelpTheme - 6/10/2009 18:26:00 by YourName
#[[TWViewTemplate]] - added
#[[ViewTemplate]] - replaces ViewTemplate - 6/6/2009 11:57:00 by YourName
#[[BlueTheme]] - replaces BlueTheme - 6/12/2009 01:25:55 by YourName
#[[BlueViewTemplate]] - added
#[[TWHelpPageTemplate]] - added
<<<
----
On Wednesday, 3 June 2009 6:35:34 AM, YourName imported 1 tiddler from
[[F:\TiddlyWiki\TWExperiments\TiddlyTools\tiddlytools.com_index.htm|F:\TiddlyWiki\TWExperiments\TiddlyTools\tiddlytools.com_index.htm]]:
<<<
#[[SwitchThemePlugin]] - added
<<<
----
On Tuesday, 2 June 2009 6:59:57 PM, YourName imported 1 tiddler from
[[F:\TiddlyWiki\TWExperiments\TiddlyTools\tiddlytools.com_index.htm|F:\TiddlyWiki\TWExperiments\TiddlyTools\tiddlytools.com_index.htm]]:
<<<
#[[UnsavedChangesPlugin]] - added
<<<
----
On Tuesday, 2 June 2009 9:32:16 AM, YourName imported 18 tiddlers from
[[F:\TiddlyWiki\TWExperiments\jQuery\twt-notes-trreeview-experimental.html|F:\TiddlyWiki\TWExperiments\jQuery\twt-notes-trreeview-experimental.html]]:
<<<
#[[1:Basic]] - added
#[[1:Note-taking]] - added
#[[2:Advanced]] - added
#[[2:Navigating]] - added
#[[3:How to download]] - added
#[[Customization]] - added
#[[MathEquations]] - added
#[[Menus]] - added
#[[Plugins]] - replaces Plugins - 6/2/2009 00:27:00 by YourName
#[[Printing]] - added
#[[SetUp]] - added
#[[SetupMainMenu]] - added
#[[SetupTreeview]] - added
#[[Styling]] - added
#[[System]] - replaces System - 6/2/2009 00:23:00 by YourName
#[[TWT-Notes]] - replaces TWT-Notes - 5/30/2009 23:12:00 by YourName
#[[Templates]] - replaces Templates - 6/2/2009 00:24:00 by YourName
#[[Tools]] - replaces Tools - 6/2/2009 03:29:00 by YourName
<<<
----
On Tuesday, 2 June 2009 3:27:25 AM, YourName imported 2 tiddlers from
[[F:\TiddlyWiki\TWExperiments\jQuery\twt-notes-trreeview-experimental.html|F:\TiddlyWiki\TWExperiments\jQuery\twt-notes-trreeview-experimental.html]]:
<<<
#[[TiddlerTweaker]] - added
#[[TiddlerTweakerPlugin]] - added
<<<
----
On Tuesday, 2 June 2009 2:56:26 AM, YourName imported 2 tiddlers from
[[F:\TiddlyWiki\TWExperiments\TiddlyTools\tiddlytools.com_index.htm|F:\TiddlyWiki\TWExperiments\TiddlyTools\tiddlytools.com_index.htm]]:
<<<
#[[TaggedTemplateTweak]] - added
#[[TaggedTemplateTweakInfo]] - added
<<<
----
On Tuesday, 2 June 2009 2:37:58 AM, YourName imported 1 tiddler from
[[F:\TiddlyWiki\TW Help\twhelp.html|F:\TiddlyWiki\TW Help\twhelp.html]]:
<<<
#[[FullScreenPlugin]] - added
<<<
----
On Monday, 1 June 2009 2:46:52 PM, YourName imported 3 tiddlers from
[[F:\TiddlyWiki\TWExperiments\TiddlyTools\tiddlytools.com_index.htm|F:\TiddlyWiki\TWExperiments\TiddlyTools\tiddlytools.com_index.htm]]:
<<<
#[[AttachFilePackage]] - added
#[[AttachFilePlugin]] - added
#[[AttachFilePluginFormatters]] - skipped after asking
#[[AttachFilePluginInfo]] - added
<<<
----
On Monday, 1 June 2009 4:24:01 AM, YourName imported 1 tiddler from
[[F:\TiddlyWiki\TWExperiments\jQuery\twt-notes-trreeview-experimental.html|F:\TiddlyWiki\TWExperiments\jQuery\twt-notes-trreeview-experimental.html]]:
<<<
#[[TiddlerNotesPlugin]] - added
<<<
----
On Monday, 1 June 2009 3:28:48 AM, YourName imported 114 tiddlers from
[[F:\TiddlyWiki\TW Treeview\twtreeview.html|F:\TiddlyWiki\TW Treeview\twtreeview.html]]:
<<<
#[[A Test Topic]] - added
#[[ANewTreeviewMenu]] - added
#[[AnotherTest]] - added
#[[AttachFilePluginFormatters]] - added
#[[BuildingAMenu]] - added
#[[ConfigTweaks]] - added
#[[Cookie plugin]] - added
#[[DefaultTiddlers]] - added
#[[DeprecatedFunctionsPlugin]] - added
#[[DoBackupMacro]] - added
#[[EditATiddler]] - added
#[[EditTemplate]] - added
#[[EmbeddedImages]] - added
#[[Find]] - added
#[[ForEachTiddlerPlugin]] - added
#[[GotoPlugin]] - added
#[[HTMLFormattingPlugin]] - added
#[[InlineJavascriptPlugin]] - added
#[[JqueryTreeviewCSS]] - added
#[[Level2]] - added
#[[LoadRemoteFileThroughProxy]] - skipped after asking
#[[MainMenu]] - added
#[[MakeTiddlers]] - added
#[[MarkupPostBody]] - added
#[[NavButtons]] - added
#[[NestedSlidersPlugin]] - added
#[[New Tabs]] - added
#[[NewHTMLFromTemplate]] - added
#[[NewHerePlugin]] - added
#[[NewIframeFromTemplate]] - added
#[[NewJournalFromTemplate]] - added
#[[NewObjectFromTemplate]] - added
#[[NewScriptTiddler]] - added
#[[NewSliderFromTemplate]] - added
#[[NewSystemConfigTiddler]] - added
#[[NewTableFromTemplate]] - added
#[[NewTabsFromTemplate]] - added
#[[NewTiddler]] - added
#[[Overview]] - added
#[[PageTemplate]] - added
#[[PasswordOptionsPlugin]] - skipped after asking
#[[Plugins]] - added
#[[QuickEditPackage]] - added
#[[QuickEditPlugin]] - added
#[[QuickEditToolbar]] - added
#[[QuickEdit_align]] - added
#[[QuickEdit_color]] - added
#[[QuickEdit_convert]] - added
#[[QuickEdit_custom]] - added
#[[QuickEdit_customList]] - added
#[[QuickEdit_font]] - added
#[[QuickEdit_fontList]] - added
#[[QuickEdit_format]] - added
#[[QuickEdit_image]] - added
#[[QuickEdit_insert]] - added
#[[QuickEdit_link]] - added
#[[QuickEdit_macro]] - added
#[[QuickEdit_replace]] - added
#[[QuickEdit_sort]] - added
#[[QuickEdit_split]] - added
#[[RefreshTiddler]] - added
#[[SaveAsPlugin]] - added
#[[SaveCloseTiddlerPlugin]] - added
#[[SearchOptionsPlugin]] - added
#[[SetupTreeview]] - added
#[[SideBarOptions]] - added
#[[SideBarTabs]] - added
#[[SimonsNiceTable]] - added
#[[SiteTitle]] - added
#[[StyleSheet]] - added
#[[StyleSheetShortcuts]] - added
#[[StyleSheetTiddlersBar]] - added
#[[TWHelp-SearchResults]] - added
#[[TWT-Notes]] - added
#[[TWT-Treeview-Implementation]] - added
#[[TWTStyleSheetX]] - added
#[[TaggerPlugin]] - added
#[[Templates]] - added
#[[TiddlerMakeFile]] - added
#[[TiddlerbarToggled]] - added
#[[TiddlersBarPluginMG]] - added
#[[ToggleLeftSidebar]] - added
#[[ToggleRightSidebar]] - added
#[[ToggleTabs]] - added
#[[ToggleTiddlersBar]] - added
#[[ToolbarCommands]] - added
#[[TopMenu]] - added
#[[TopMenuStyle]] - added
#[[TreeviewPluginPlugin.24]] - added
#[[TspotSetupPlugin]] - skipped after asking
#[[TwHelpSearchPlugin]] - added
#[[UploadLog]] - added
#[[UploadPlugin]] - skipped after asking
#[[Usage]] - added
#[[ViewTemplate]] - added
#[[book.gif]] - added
#[[editA]] - added
#[[file.gif]] - added
#[[folder-closed.gif]] - added
#[[folder.gif]] - added
#[[leftbackdo6.gif]] - added
#[[mainmenugray7ef.gif]] - added
#[[minus.gif]] - added
#[[navbargrayhw1.gif]] - added
#[[navbargrayhw1.png]] - added
#[[navbarred.gif]] - added
#[[openbook.gif]] - added
#[[treeview-black-line.gif]] - added
#[[treeview-black.gif]] - added
#[[treeview-default-line.gif]] - added
#[[treeview-default.gif]] - added
#[[treeview-famfamfam-line.gif]] - added
#[[treeview-famfamfam.gif]] - added
#[[treeview-gray-line.gif]] - added
#[[treeview-gray.gif]] - added
#[[treeview-red-line.gif]] - added
#[[treeview-red.gif]] - added
#[[whatsThis]] - added
<<<
Type the text for 'New Tiddler'
!!!Értelmezés
Egy sajátos és nagyon megbízható definíciós módszer. Elsősorban halmazok és függvények definiálására használható.
A definíció két fő részből áll:
#A bázis megadása
#A szabály, vagy szabályok megadása.
!!Definíció
Legyen $L^{(0)}=\langle LC, Con, Form \rangle$ egy [[nulladrendű nyelv|Nulladrendű nyelv]] és $\Gamma\subseteq Form$ egy tetszőleges formulahalmaz.
A $\Gamma$ fomulahalmaz inkonzisztens, ha $Cns(\Gamma)= Form$.
!!!Megjegyzés
A $\Gamma$ fomulahalmaz inkonzisztens, ha a $\Gamma$ formulahalmaznak @@color:#900;minden@@ formula [[szintaktikai következménye|Szintaktikai következményreláció]].
/***
|Name|InlineJavascriptPlugin|
|Source|http://www.TiddlyTools.com/#InlineJavascriptPlugin|
|Documentation|http://www.TiddlyTools.com/#InlineJavascriptPluginInfo|
|Version|1.9.5|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|plugin|
|Requires||
|Overrides||
|Description|Insert Javascript executable code directly into your tiddler content.|
''Call directly into TW core utility routines, define new functions, calculate values, add dynamically-generated TiddlyWiki-formatted output'' into tiddler content, or perform any other programmatic actions each time the tiddler is rendered.
!!!!!Documentation
>see [[InlineJavascriptPluginInfo]]
!!!!!Revisions
<<<
2009.04.11 [1.9.5] pass current tiddler object into wrapper code so it can be referenced from within 'onclick' scripts
2009.02.26 [1.9.4] in $(), handle leading '#' on ID for compatibility with JQuery syntax
|please see [[InlineJavascriptPluginInfo]] for additional revision details|
2005.11.08 [1.0.0] initial release
<<<
!!!!!Code
***/
//{{{
version.extensions.InlineJavascriptPlugin= {major: 1, minor: 9, revision: 5, date: new Date(2009,4,11)};
config.formatters.push( {
name: "inlineJavascript",
match: "\\<script",
lookahead: "\\<script(?: src=\\\"((?:.|\\n)*?)\\\")?(?: label=\\\"((?:.|\\n)*?)\\\")?(?: title=\\\"((?:.|\\n)*?)\\\")?(?: key=\\\"((?:.|\\n)*?)\\\")?( show)?\\>((?:.|\\n)*?)\\</script\\>",
handler: function(w) {
var lookaheadRegExp = new RegExp(this.lookahead,"mg");
lookaheadRegExp.lastIndex = w.matchStart;
var lookaheadMatch = lookaheadRegExp.exec(w.source)
if(lookaheadMatch && lookaheadMatch.index == w.matchStart) {
var src=lookaheadMatch[1];
var label=lookaheadMatch[2];
var tip=lookaheadMatch[3];
var key=lookaheadMatch[4];
var show=lookaheadMatch[5];
var code=lookaheadMatch[6];
if (src) { // external script library
var script = document.createElement("script"); script.src = src;
document.body.appendChild(script); document.body.removeChild(script);
}
if (code) { // inline code
if (show) // display source in tiddler
wikify("{{{\n"+lookaheadMatch[0]+"\n}}}\n",w.output);
if (label) { // create 'onclick' command link
var link=createTiddlyElement(w.output,"a",null,"tiddlyLinkExisting",wikifyPlainText(label));
var fixup=code.replace(/document.write\s*\(/gi,'place.bufferedHTML+=(');
link.code="function _out(place,tiddler){"+fixup+"\n};_out(this,this.tiddler);"
link.tiddler=w.tiddler;
link.onclick=function(){
this.bufferedHTML="";
try{ var r=eval(this.code);
if(this.bufferedHTML.length || (typeof(r)==="string")&&r.length)
var s=this.parentNode.insertBefore(document.createElement("span"),this.nextSibling);
if(this.bufferedHTML.length)
s.innerHTML=this.bufferedHTML;
if((typeof(r)==="string")&&r.length) {
wikify(r,s,null,this.tiddler);
return false;
} else return r!==undefined?r:false;
} catch(e){alert(e.description||e.toString());return false;}
};
link.setAttribute("title",tip||"");
var URIcode='javascript:void(eval(decodeURIComponent(%22(function(){try{';
URIcode+=encodeURIComponent(encodeURIComponent(code.replace(/\n/g,' ')));
URIcode+='}catch(e){alert(e.description||e.toString())}})()%22)))';
link.setAttribute("href",URIcode);
link.style.cursor="pointer";
if (key) link.accessKey=key.substr(0,1); // single character only
}
else { // run script immediately
var fixup=code.replace(/document.write\s*\(/gi,'place.innerHTML+=(');
var c="function _out(place,tiddler){"+fixup+"\n};_out(w.output,w.tiddler);";
try { var out=eval(c); }
catch(e) { out=e.description?e.description:e.toString(); }
if (out && out.length) wikify(out,w.output,w.highlightRegExp,w.tiddler);
}
}
w.nextMatch = lookaheadMatch.index + lookaheadMatch[0].length;
}
}
} )
//}}}
// // Backward-compatibility for TW2.1.x and earlier
//{{{
if (typeof(wikifyPlainText)=="undefined") window.wikifyPlainText=function(text,limit,tiddler) {
if(limit > 0) text = text.substr(0,limit);
var wikifier = new Wikifier(text,formatter,null,tiddler);
return wikifier.wikifyPlain();
}
//}}}
// // GLOBAL FUNCTION: $(...) -- 'shorthand' convenience syntax for document.getElementById()
//{{{
if (typeof($)=='undefined') { function $(id) { return document.getElementById(id.replace(/^#/,'')); } }
//}}}
[[►|IntroTreeview]]''~TWT-Treeview is a general purpose ~TiddlyWiki suitable for beginners and experienced users.''
*@@color:#C06;This is a final release for comment and evaluation, and immediate use if no serious bugs are encountered.@@
|bgcolor:#fcf;* ''Note: Theme switching is now under 'controls »' in the right sidebar.''|
|bgcolor:#fcf;* ''Note: ~TWT-Treeview now has a simple project manager see [[TheProjectManager]].''|
<<<
To clean up the MainMenu for your own use simply remove the __System__ menu code and the __Main Menu__ code from the MainMenu and add your own working menu. See CreateNewMenu.
<<<
{{center{<html><a href='http://twt-treeview.tiddlyspot.com/download' class='button'>''Download TWT Treeview''</a></html>}}}
~TWT-Treeview has been inspired by the Treeview plugin by [[MarkS|http://treeview.tiddlyspot.com/]] and the interest shown to it. While having moved well beyond this it can trace its original legacy back to [[NoBrainerNotes|http://www.giffmex.org/nobrainernotes.html]].
We decided to release a general purpose TW using Treeview so the people who might want to evaluate it can do so with minimal fuss. The menus used in existing [[TW Notes|http://twnotes.tiddlyspot.com/]] and [[TWT-Notes|http://twt-notes.tiddlyspot.com/]] and [[NoBrainerNotes|http://www.giffmex.org/nobrainernotes.html]] can be imported with little or no change needed.
----
|vertical-align:top;width:50%;<<tiddler IntroTreeview##description>>|vertical-align:top;width:50%;<<tiddler IntroTreeview##features>>|
|borderless|k
/%
!features
@@color:#c06;''Features:''@@
*This is a ready to use Treeview enabled ~TiddlyWiki.
*Two click menu building. Automatic menu updating.
*~TiddlersBar tabs that can be toggled and off.
*Automatic saving with manual backup button.
*The latest ~QuickEdit wysiwyg editor.
*Several 'premade' new tiddlers (object sliders iframes tabsets etc.)
*Tools for manipulating tags;
*Plugins for professional extended customizing+++[►]<<tiddler Plugins>>===
!end
%/
/%
!description
@@color:#c06;''Introduction''@@
~TiddlyWiki is a remarkable achievement in programming innovation. It is but a single file that can be emailed or kept on a Thunb (flash) drive. The extensive array of plugins for it lends itself to quite sophisticated uses. I won't even attempt to list them for others have done so.
It ultimately has vast capabilities but, the minimal form it originally comes in can intimidate the raw beginner. or even slow down an experienced user. It is for this reason I have generated ~TW-Treeview, in a ready to use form, to get a new user up and running quickly. I have only assembled this, the hard work and generosity was given by others.
Morris Gray
!end
%/
!! Hamazelméleti jelek
*Relációt kifejező jelek:
##$\in$: az eleme reláció jele: ha $a$ egy objektum, $H$ pedig egy halmaz, akkor $a\in H$ azt fejezi ki, hogy az $a$ objektum eleme a $H$ halmaznak.
##$\subseteq$: a része reláció jele; ha $H_1$ és $H_2$ tetszőleges halmazok, akkor $H_1\subseteq H_2$ azt fejezi ki, hogy a $H_1$ halmaz minden eleme, eleme a $H_2$ halmaznak.
*Műveleti jelek
##$\cup$
##$\cap$
*Halmazelméleti jelölési konvenciók:
##$\emptyset$: az üres halmaz jele; olyan halmazt jelöl, amelynek nincs egyetlen eleme sem.
!!Logikai jelek
*A [[Nulladrendű nyelv]] logikai műveletieket kifejező jelei:
##$\neg$
##$\supset$
##$\wedge$
##$\vee$
##$\equiv$
*Logikai jelölési konvenciók
## $p, q, r$ és ezek indexezett változatai: [[állításparaméter]]ek, azaz [[Nulladrendű nyelv]] esetén a $Con$ halmaz elemei.
## $A, B, C$ és ezek indexezett változatai: formulák, azaz [[Nulladrendű nyelv]] esetén a $Form$ halmaz elemei.
/***
!!!<<gradient horiz #4EB93E #fff >><<tiddler RefreshStyles>> StyleSheetTiddlersBar>>/%==================================================%/
***/
.treeview, .treeview ul {
padding: 0;
margin: 0;
list-style: none;
}
.treeview ul {
background-color:transparent;
margin-top: 4px;
}
.treeview .hitarea {
background: url([[treeview-default.gif]]) -64px -25px no-repeat;
height: 16px;
width: 16px;
margin-left: -16px;
float: left;
cursor: pointer;
}
/* fix for IE6 */
* html .hitarea {
display: inline;
float:none;
}
.treeview li {
margin: 0;
padding: 3px 0pt 3px 16px;
}
.treeview a.selected {
background-color: #eee;
}
#treecontrol { margin: 1em 0; display: none; }
.treeview .hover { color: red; cursor: pointer; }
.treeview li { background: url([[treeview-red-line.gif]]) 0 0 no-repeat; }
.treeview li.collapsable, .treeview li.expandable { background-position: 0 -176px; }
.treeview .expandable-hitarea { background-position: -80px -3px; }
.treeview li.last { background-position: 0 -1766px }
.treeview li.lastCollapsable, .treeview li.lastExpandable { background-image: url([[treeview-default.gif]]); }
.treeview li.lastCollapsable { background-position: 0 -111px }
.treeview li.lastExpandable { background-position: -32px -67px }
.treeview div.lastCollapsable-hitarea, .treeview div.lastExpandable-hitarea { background-position: 0; }
.treeview-red li { background-image: url([[treeview-red-line.gif]]); }
.treeview-red .hitarea, .treeview-red li.lastCollapsable, .treeview-red li.lastExpandable { background-image: url([[treeview-red.gif]]); }
.treeview-black li { background-image: url([[treeview-black-line.gif]]); }
.treeview-black .hitarea, .treeview-black li.lastCollapsable, .treeview-black li.lastExpandable { background-image: url([[treeview-black.gif]]); }
.treeview-gray li { background-image: url([[treeview-gray-line.gif]]); }
.treeview-gray .hitarea, .treeview-gray li.lastCollapsable, .treeview-gray li.lastExpandable { background-image: url([[treeview-gray.gif]]); }
.treeview-famfamfam li { background-image: url([[treeview-famfamfam-line.gif]]); }
.treeview-famfamfam .hitarea, .treeview-famfamfam li.lastCollapsable, .treeview-famfamfam li.lastExpandable { background-image: url([[treeview-famfamfam.gif]]); }
.filetree li { padding: 3px 0 2px 16px; }
.filetree span.folder, .filetree span.file { padding: 1px 0 1px 16px; display: block; }
.filetree span.folder { background: url([[openbook.gif]]) 0 0 no-repeat; }
.filetree li.expandable span.folder { background: url([[book.gif]]) 0 0 no-repeat; }
.filetree span.file { background: url([[file.gif]]) 0 0 no-repeat; }
/***
!!!<<gradient horiz #4EB93E #fff >><<tiddler RefreshStyles>> StyleSheetTiddlersBar>>/%==================================================%/
***/
.treeview, .treeview ul {
padding: 0;
margin: 0;
list-style: none;
}
.treeview ul {
background-color:transparent;
margin-top: 4px;
}
.treeview .hitarea {
background: url([[treeview-default.gif]]) -64px -25px no-repeat;
height: 16px;
width: 16px;
margin-left: -16px;
float: left;
cursor: pointer;
}
/* fix for IE6 */
* html .hitarea {
display: inline;
float:none;
}
.treeview li {
margin: 0;
padding: 3px 0pt 3px 16px;
}
.treeview a.selected {
background-color: #eee;
}
#treecontrol { margin: 1em 0; display: none; }
.treeview .hover { color: red; cursor: pointer; }
.treeview li { background: url([[treeview-red-line.gif]]) 0 0 no-repeat; }
.treeview li.collapsable, .treeview li.expandable { background-position: 0 -176px; }
.treeview .expandable-hitarea { background-position: -80px -3px; }
.treeview li.last { background-position: 0 -1766px }
.treeview li.lastCollapsable, .treeview li.lastExpandable { background-image: url([[treeview-default.gif]]); }
.treeview li.lastCollapsable { background-position: 0 -111px }
.treeview li.lastExpandable { background-position: -32px -67px }
.treeview div.lastCollapsable-hitarea, .treeview div.lastExpandable-hitarea { background-position: 0; }
.treeview-red li { background-image: url([[treeview-red-line.gif]]); }
.treeview-red .hitarea, .treeview-red li.lastCollapsable, .treeview-red li.lastExpandable { background-image: url([[treeview-red.gif]]); }
.treeview-black li { background-image: url([[treeview-black-line.gif]]); }
.treeview-black .hitarea, .treeview-black li.lastCollapsable, .treeview-black li.lastExpandable { background-image: url([[treeview-black.gif]]); }
.treeview-gray li { background-image: url([[treeview-gray-line.gif]]); }
.treeview-gray .hitarea, .treeview-gray li.lastCollapsable, .treeview-gray li.lastExpandable { background-image: url([[treeview-gray.gif]]); }
.treeview-famfamfam li { background-image: url([[treeview-famfamfam-line.gif]]); }
.treeview-famfamfam .hitarea, .treeview-famfamfam li.lastCollapsable, .treeview-famfamfam li.lastExpandable { background-image: url([[treeview-famfamfam.gif]]); }
.filetree li { padding: 3px 0 2px 16px; }
.filetree span.folder, .filetree span.file { padding: 1px 0 1px 16px; display: block; }
.filetree span.folder { background: url([[folder.gif]]) 0 0 no-repeat; }
.filetree li.expandable span.folder { background: url([[folder-closed.gif]]) 0 0 no-repeat; }
.filetree span.file { background: url([[file.gif]]) 0 0 no-repeat; }
/***
!!!<<gradient horiz #4EB93E #fff >><<tiddler RefreshStyles>> StyleSheetTiddlersBar>>/%==================================================%/
***/
.treeview, .treeview ul {
padding: 0;
margin: 0;
list-style: none;
}
.treeview ul {
background-color:transparent;
margin-top: 4px;
}
.treeview .hitarea {
background: url([[treeview-gold.gif]]) -64px -25px no-repeat;
height: 16px;
width: 16px;
margin-left: -16px;
float: left;
cursor: pointer;
}
/* fix for IE6 */
* html .hitarea {
display: inline;
float:none;
}
.treeview li {
margin: 0;
padding: 3px 0pt 3px 16px;
}
.treeview a.selected {
background-color: #eee;
}
#treecontrol { margin: 1em 0; display: none; }
.treeview .hover { color: red; cursor: pointer; }
.treeview li { background: url([[treeview-gold-line.gif]]) 0 0 no-repeat; }
.treeview li.collapsable, .treeview li.expandable { background-position: 0 -176px; }
.treeview .expandable-hitarea { background-position: -80px -3px; }
.treeview li.last { background-position: 0 -1766px }
.treeview li.lastCollapsable, .treeview li.lastExpandable { background-image: url([[treeview-gold.gif]]); }
.treeview li.lastCollapsable { background-position: 0 -111px }
.treeview li.lastExpandable { background-position: -32px -67px }
.treeview div.lastCollapsable-hitarea, .treeview div.lastExpandable-hitarea { background-position: 0; }
.treeview-red li { background-image: url([[treeview-red-line.gif]]); }
.treeview-red .hitarea, .treeview-red li.lastCollapsable, .treeview-red li.lastExpandable { background-image: url([[treeview-red.gif]]); }
.treeview-gold li { background-image: url([[treeview-gold-line.gif]]); }
.treeview-gold .hitarea, .treeview-gold li.lastCollapsable, .treeview-gold li.lastExpandable { background-image: url([[treeview-gold.gif]]); }
.treeview-black li { background-image: url([[treeview-black-line.gif]]); }
.treeview-black .hitarea, .treeview-black li.lastCollapsable, .treeview-black li.lastExpandable { background-image: url([[treeview-black.gif]]); }
.treeview-gray li { background-image: url([[treeview-gray-line.gif]]); }
.treeview-gray .hitarea, .treeview-gray li.lastCollapsable, .treeview-gray li.lastExpandable { background-image: url([[treeview-gray.gif]]); }
.treeview-famfamfam li { background-image: url([[treeview-famfamfam-line.gif]]); }
.treeview-famfamfam .hitarea, .treeview-famfamfam li.lastCollapsable, .treeview-famfamfam li.lastExpandable { background-image: url([[treeview-famfamfam.gif]]); }
.filetree li { padding: 3px 0 2px 16px; }
.filetree span.folder, .filetree span.file { padding: 1px 0 1px 16px; display: block; }
.filetree span.folder { background: url([[folder.gif]]) 0 0 no-repeat; }
.filetree li.expandable span.folder { background: url([[folder-closed.gif]]) 0 0 no-repeat; }
.filetree span.file { background: url([[file.gif]]) 0 0 no-repeat; }
!!Definíció
Legyen $L^{(0)}=\langle LC, Con, Form \rangle$ egy [[nulladrendű nyelv|Nulladrendű nyelv]] és $\Gamma\subseteq Form$ egy tetszőleges formulahalmaz.
A $\Gamma$ fomulahalmaz kielégíthetetlen, ha nem kielégíthető, azaz nincs modellje.
!!!Megjegyzés
*A $\Gamma$ fomulahalmaz kielégíthetetlen, ha nincs olyan interpretáció, amelyben a formulahalmaz'' minden ''eleme igaz.
*Kielégíthetetlen formulahalmaz: logikai ellentmondást tartalmaz, azaz a formulahalmaz elemei nem lehetnek egyszerre igazak.
!!Definíció
Legyen $L^{(0)}=\langle LC, Con, Form \rangle$ egy [[nulladrendű nyelv|Nulladrendű nyelv]] és $A \in Form$ egy tetszőleges formula.
Az $A$ formula kielégíthetetlen, ha az $\{ A\}$ formulahalmaz kielégíthetetlen..
!!!Megjegyzés
Ha az $A$ fomula kielégíthetetlen, ha nincs olyan interpretáció, amelyben a formula igaz, azaz minden interpretációban a formula hamis értékű.
!!Definíció
Legyen $L^{(0)}=\langle LC, Con, Form \rangle$ egy [[nulladrendű nyelv|Nulladrendű nyelv]] és $\Gamma\subseteq Form$ egy tetszőleges formulahalmaz.
A $\Gamma$ fomulahalmaz kielégíthető, ha van modellje.
!!!Megjegyzés
*A $\Gamma$ fomulahalmaz kielégíthető, ha van olyan interpretáció, amelyben a formulahalmaz minden eleme igaz.
*Kielégíthető formulahalmaz: nem tartalmaz logikai ellentmondást, azaz a formulahalmaz elemei lehetnek egyszerre igazak.
*Ha egy formulahalmaz kielégíthető, akkor minden eleme kielégíthető.
*Az előző állítás megfordítása nem igaz. Pl.: a $\{ p, \neg p\}$ formulahalmaz minden eleme kielégíthető, de maga a formulahalmaz nem kielégíthető.
!!Definíció
Legyen $L^{(0)}=\langle LC, Con, Form \rangle$ egy [[nulladrendű nyelv|Nulladrendű nyelv]] és $A \in Form$ egy tetszőleges formula.
Az $A$ formula kielégíthető, ha az $\{ A\}$ formulahalmaz kielégíthető.
!!!Megjegyzés
*Az $A$ fomula kielégíthető, ha van olyan interpretáció, amelyben a formula igaz.
*Kielégíthető formula: a formula lehet igaz, azaz nem logikai hamisság.
!!!Az bevezetett logikai műveletek egymással való kifejezhetősége
*$(A\supset B) \Leftrightarrow \neg(A\wedge\neg B)$
*$(A\supset B) \Leftrightarrow (\neg A\vee B)$
*$(A\wedge B) \Leftrightarrow \neg(A\supset \neg B)$
*$(A\vee B) \Leftrightarrow (\neg A\supset B)$
*$(A\vee B) \Leftrightarrow \neg(\neg A\wedge\neg B)$
*$(A\wedge B) \Leftrightarrow \neg(\neg A\vee\neg B)$
*$(A\equiv B) \Leftrightarrow ((A\supset B)\wedge (B\supset A))$
!!Az igazságfunktorok elmélete
!!Definíció (a bázis fogalma)
Igazságfunktorok egy olyan halmazát értjük bázison, amelynek elemeivel minden igazságfunktor kifejezhető.
*Például:
**$\{\neg , \supset \}$, $\{\neg , \wedge \}$, $\{\neg , \vee \}$, $\{\neg , \supset \}$
***$(p\wedge q) \Leftrightarrow \neg(p\supset\neg q)$
***$(p\vee q) \Leftrightarrow (\neg p\supset q)$
**Sheffer művelet: $(p\vert q) \Leftrightarrow_{def} \neg (p\wedge q)$
**Sem-sem művelet: $(p\parallel q) \Leftrightarrow_{def}(\neg p\wedge \neg q)$
!!!Megjegyzés:
Mind a Sheffer, mind a sem-sem művelet önmagában bázist alkot.
A konjunkció igazságtáblázata:
| $\wedge$ | 0 | 1 |
| 0 | 0 | 0 |
| 1 | 0 | 1 |
*Tipikus természetes nyelvi alakja: ... és ...
*Legyen $A,B\in Form$. $(A\wedge B)$ kiolvasása:
**$A$ és $B$.
**$A$ konjunkció $B$.
*$n, (n>2)$ tagú konjunkció definiáló logikai ekvivalenciája: Legyen $A_1, A_2,\ldots , A_n\in Form$. $(A_1\wedge A_2\wedge \ldots \wedge A_n)\Leftrightarrow_{def} (A_1\wedge (A_2\wedge( A_3\wedge( \ldots \wedge A_n)\ldots )))$
*Az $(A_1\wedge A_2\wedge \ldots \wedge A_n)$ formula akkor és csak akkor igaz, ha $A_i$ igaz minden $i$-re $(i=1, 2, \ldots ,n)$.
!!A konjunkció tulajdonságai
*Felcserélhető (kommutatív): $(A\wedge B) \Leftrightarrow (B\wedge A)$
*Csoportosítható (asszociatív): $(A\wedge(B\wedge C))\Leftrightarrow ((A\wedge B)\wedge C)$
*Idempotens: $(A\wedge A) \Leftrightarrow A $
*$(A\wedge B)\models A$, $(A\wedge B)\models B$
*Az ellentmondás törvénye: $\models \neg (A\wedge\neg A)$
*Az $\{A_1, A_2,\ldots , A_n\}$ formulahalmaz $(A_1, A_2,\ldots , A_n\in Form)$ akkor és csak akkor kielégíthető, ha az $(A_1\wedge A_2\wedge \ldots \wedge A_n)$ formula kielégíthető.
*Az $\{A_1, A_2,\ldots , A_n\}$ formulahalmaz $(A_1, A_2,\ldots , A_n\in Form)$ akkor és csak akkor kielégíthetetlen, ha az $(A_1\wedge A_2\wedge \ldots \wedge A_n)$ formula kielégíthetetlen.
*Az $\{A_1, A_2,\ldots , A_n\}\models A$ $(A_1, A_2,\ldots , A_n, A\in Form)$ akkor és csak akkor, ha az $(A_1\wedge A_2\wedge \ldots \wedge A_n)\models A$.
*Az $\{A_1, A_2,\ldots , A_n\}\models A$ $(A_1, A_2,\ldots , A_n, A\in Form)$ akkor és csak akkor, ha az $((A_1\wedge A_2\wedge \ldots \wedge A_n)\wedge \neg A)$ formula kielégíthetetlen.
!!Definíció (bevezető szabály)
${\Gamma \vdash A\quad \Gamma \vdash B}\over{\Gamma \vdash A\wedge B}$
!!Definíció (alkalmazó szabály)
${\Gamma , A, B \vdash C}\over{\Gamma , A\wedge B\vdash C}$
!!!Megjegyzés
${{\Gamma\vdash B}\over{\Gamma , A\supset\neg B\vdash B}\quad {\Gamma\vdash A\quad {\varepsilon}\over{\Gamma , A\supset\neg B\vdash A\supset\neg B}}\over{\Gamma , A\supset\neg B\vdash \neg B}}\over{\Gamma\vdash \neg(A\supset\neg B)}$
!!Definíció
Egy [[elemi diszjunkciót|Elemi diszjunkció]] vagy [[elemi diszjunkciók|Elemi diszjunkció]] konjunkcióját konjunktív normálformának nevezzük.
!!!Értelmezés
*Konklúzió: a következtetés eredményeként kapott [[állítás|Állítás]].
*A konklúziót gyakran a következtetés kimenetének outputjának is nevezik.
*Ha a következtetésre mint viszonyra tekintünk, akkor a konklúzió ennek a viszonynak a második komponense.
!!Definíció
Legyen $L^{(0)}=\langle LC, Con, Form \rangle$ egy [[nulladrendű nyelv|Nulladrendű nyelv]] és $\Gamma\subseteq Form$ egy tetszőleges formulahalmaz.
A $\Gamma$ fomulahalmaz konzisztens, ha nem inkonzisztens.
!!!Megjegyzés
A $\Gamma$ fomulahalmaz konzisztens, ha van olyan $A\in Form$, hogy $\Gamma \vdash A$ @@color:#900;nem teljesül@@, azaz van olyan $A$ formula, amely @@color:#900;nem@@ [[szintaktikai következménye|Szintaktikai következményreláció]] a $\Gamma$ formulahalmaznak.
!!Tétel
Legyen $L^{(0)}=\langle LC, Con, Form \rangle\ $ egy [[nulladrendű nyelv|Nulladrendű nyelv]], $\Gamma\subseteq Form$, és $A\in Form$.
$\Gamma\models A$ akkor és csak akkor, ha a $\Gamma$ formulahalmaz ''minden'' [[modellje|Nulladrendű modell]] modellje az a $A$ formulának (azaz az $\{A \}$ egyelemű formulahalmaznak) is.
!!!Bizonyítás
$\rightarrow$
Indirekt feltétel: Tegyük fel, hogy $\Gamma\models A$ és van olyan modellje a $\Gamma$ formulahalmaznak, amely nem modellje az $A$ formulának.
Legyen ez a modell a ${\varrho}$ interpretáció!
A ${\varrho}$ tulajdonságai:
#minden $B\in \Gamma$ esetén $\vert B\vert_{\varrho} = 1$;
#$\vert A\vert_{\varrho} = 0$, azaz $\vert\neg A\vert_{\varrho} = 1$
Ekkor a $\Gamma\cup \{\neg A\}$ formulahalmaz minden eleme igaz ${\varrho}$-ban, tehát $\Gamma\cup \{\neg A\}$ kielégíthető, azaz
$\Gamma\models A$ nem teljesül, ami ellentmondás.
$\leftarrow$
Indirekt feltétel: Tegyük fel, hogy a $\Gamma$ formulahalmaz minden modellje modellje az $A$ formulának, de $\Gamma\models A$ nem teljesül.
Ekkor a $\Gamma\cup \{\neg A\}$ formulahalmaz kielégíthető, azaz van modellje. Legyen ez a modell a ${\varrho}$ interpretáció!
A ${\varrho}$ tulajdonságai:
#minden $B\in \Gamma$ esetén $\vert B\vert_{\varrho} = 1$;
#$\vert \neg A\vert_{\varrho} = 1$, azaz $\vert A\vert_{\varrho} = 0$
Tehát a $\Gamma$ formulahalmaznak van olyan modellje, ami nem modellje az $A$ formulának, s ez ellentmondás.
!!!Következmény
Legyen $L^{(0)}=\langle LC, Con, Form \rangle$ egy [[nulladrendű nyelv|Nulladrendű nyelv]], $\Gamma\subseteq Form$, és $A\in Form$.
$\Gamma\models A$ akkor és csak akkor, ha minden olyan [[interpretációban|Nulladrendű interpretáció]], amelyben a $\Gamma$ formulahalmaz minden eleme igaz, igaz az $A$ formula is.
!!Tétel
Legyen $L^{(0)}=\langle LC, Con, Form \rangle\ $ egy [[nulladrendű nyelv|Nulladrendű nyelv]], $A\in Form$.
Ha $A$ [[érvényes formula|Érvényesség]] $(\models A)$, akkor minden $\Gamma\subseteq Form$ formulahalmaz esetén $\Gamma\models A$.
(Egy érvényes formula minden formulahalmaznak következménye.)
!!!Bizonyítás
Ha $A$ érvényes formula, akkor a definíció szerint $\emptyset\models A$.
Így $\emptyset\cup \{\neg A\}\ (=\{\neg A\})$ kielégíthetetlen, s így a [[kielégíthetetlenségre kimondott tétel|Tétel (kielégíthetetlenség)]] alapján ennek a halmaznak a bővítései is kielégíthetetlenek.
$\Gamma\cup \{\neg A\}$ bővítése $\{\neg A\}$-nak, így kielégíthetetlen, tehát $\Gamma\models A$.
!!Tétel
Legyen $L^{(0)}=\langle LC, Con, Form \rangle\ $ egy [[nulladrendű nyelv|Nulladrendű nyelv]] és $\Gamma \subseteq Form$ egy formulahalmaz..
Ha a $\Gamma$ formulahalmaz kielégíthetetlen, akkor minden $A$ formula esetén $\Gamma\models A$.
(Egy kielégíthetetlen formulahalmaznak minden formula következménye.)
!!!Bizonyítás
A [[már bizonyított tétel|Tétel (kielégíthetetlenség)]] szerint ha a $\Gamma$ formulahalmaz kielégíthetetlen, akkor $\Gamma $ minden bővítése is kielégíthetetlen.
$\Gamma\cup \{\neg A\}$ bővítése $\Gamma$-nak, így kielégíthetetlen, tehát $\Gamma\models A$.
!!!A dedukciótétel és megfordításának következménye:
$A \models B$ akkor és csak akkor, ha $\models (A\supset B)$
!!!Bizonyítás
Alkalmazzuk a [[dedukció tételt|Dedukció tétel]] és [[megfordítását|Dedukció tétel megfordítása]] abban az esetben, amikor $\Gamma = \emptyset$.
!!Definíció (közvetlen részformula a nulladrendű nyelvben)
Legyen $L^{(0)}=\langle LC, Con, Form \rangle$ egy tetszőleges nulladrendű nyelv.
#Ha $A$ atomi formula (azaz $A\in Con$), akkor nincs közvetlen részformulája;
#$\neg A$ egyetlen közvetlen részfomulája $A$;
#Az $(A\supset B), (A\wedge B), (A\vee B), (A\equiv B)$ formulák közvetlen részformulái az $A$ és a $B$ formulák.
|Nome|Fórmula molecular|Fórmula de estrutura condensada|h
|Met''ano''|$CH_4$|$CH_4$|
|Et''ano''|$C_2H_6$|$CH_3-CH_3$|
|Prop''ano''|$C_3H_8$|$CH_3-CH_2-CH_3$|
|But''ano''|$C_4H_{10}$|$CH_3-CH_2-CH_2 CH_3$|
|Pent''ano''|$C_5H_{12}$|$CH_3-CH_2-CH_2-CH_2-CH_3$|
|...|...|$\ldots$|
{{myMath{
$$f(x) = \left\{\begin{array}{ll}
x^2 \sin \frac1x, & \textrm{if}\, x \ne 0, \\
0, & \textrm{if}\, x = 0 .
\end{array}\right.$$
}}}
$$\begin{eqnarray} x & = & \frac{-7 \pm \sqrt{49 - 24}}{6} \\
& = & -2\, \textrm{or}\, -\frac13. \end{eqnarray}$$
$x_1+3-\frac{5}{4}$
$\DD\left(\frac{4}{3}\pir^3\right)=4\pir^2$ $$x_2$$
$x_1 e^{-x^2/2}$ $$x_2\in\R$$
Surround ~LaTeX formulas with {{{$}}}-signs: $\sum_{i=1}^ni=\frac{n(n+1)}{2}$
$$\int_0^{\pi/2} \sin x\,dx=1$$
!!Definíció
Legyen $L^{(0)}=\langle LC, Con, Form \rangle$ egy [[nulladrendű nyelv|Nulladrendű nyelv]], és $A\in Form$ egy formula.
Az $A$ formula érvényes, ha $\emptyset\vdash A$, azaz ha az $A$ formula [[szintaktikai következménye|Szintaktikai következményreláció]] az üres halmaznak.
*Jelölés: $\vdash A$
<<forEachTiddler
where
'tiddler.tags.contains("$1")'
write
'"#[["+tiddler.title+"]] ("+tiddler.text.length+")\n"'
>>
----
{{twocolumns{
<<tiddler ListTaggedTiddlers with: "ProjectPackage">>
}}}
!!Definíció
Legyen $L^{(0)}=\langle LC, Con, Form \rangle$ egy [[nulladrendű nyelv|Nulladrendű nyelv]].
*Ha $p\in Con$, akkor a $p, \neg p$ formulákat literálnak nevezzük.
*A $p, \neg p$ literálok esetén a $p$ paramétert a literál alapjának nevezzük.
/***
|''Name:''|LoadRemoteFileThroughProxy (previous LoadRemoteFileHijack)|
|''Description:''|When the TiddlyWiki file is located on the web (view over http) the content of [[SiteProxy]] tiddler is added in front of the file url. If [[SiteProxy]] does not exist "/proxy/" is added. |
|''Version:''|1.1.0|
|''Date:''|mar 17, 2007|
|''Source:''|http://tiddlywiki.bidix.info/#LoadRemoteFileHijack|
|''Author:''|BidiX (BidiX (at) bidix (dot) info)|
|''License:''|[[BSD open source license|http://tiddlywiki.bidix.info/#%5B%5BBSD%20open%20source%20license%5D%5D ]]|
|''~CoreVersion:''|2.2.0|
***/
//{{{
version.extensions.LoadRemoteFileThroughProxy = {
major: 1, minor: 1, revision: 0,
date: new Date("mar 17, 2007"),
source: "http://tiddlywiki.bidix.info/#LoadRemoteFileThroughProxy"};
if (!window.bidix) window.bidix = {}; // bidix namespace
if (!bidix.core) bidix.core = {};
bidix.core.loadRemoteFile = loadRemoteFile;
loadRemoteFile = function(url,callback,params)
{
if ((document.location.toString().substr(0,4) == "http") && (url.substr(0,4) == "http")){
url = store.getTiddlerText("SiteProxy", "/proxy/") + url;
}
return bidix.core.loadRemoteFile(url,callback,params);
}
//}}}
!!Definíció
Legyen $L^{(0)}=\langle LC, Con, Form \rangle$ egy [[nulladrendű nyelv|Nulladrendű nyelv]], és $A, B\in Form$ két formula.
Az $A$ és a $B$ formula logikailag ekvivalens, ha $A\models B$ és $B\models A$.
Jelölés: $A\Leftrightarrow B$
!!!A dedukciótétel és megfordításának következménye:
$A \Leftrightarrow B$ akkor és csak akkor, ha $\models (A\equiv B)$
*A [[nulladrendű nyelv|Nulladrendű nyelv]] [[logikai konstansai|Logikai konstans]] szemléletesen az alábbi logikai műveleteket fejezik ki:
##$\neg $: a "nem igaz,hogy ..." kifejezésére szolgáló egyargumentumú művelete jele;
###a művelet elnevezése: negáció;
###$\neg A$ kiolvasása: nem igaz, hogy $A$; nem $A$; non $A$; negáció $A$
##$\supset $: a "ha ... akkor ..." kifejezésére szolgáló kétargumentumú művelete jele;
###a művelet elnevezése: implikáció;
###$A\supset B$ kiolvasása: ha $A$, akkor $B$; $A$ implikáció $B$, $A$ implikálja $B$-t
### hibás olvasat: $A$-ból következik $B$
##$\wedge $: a "... és ..." kifejezésére szolgáló kétargumentumú művelete jele;
###a művelet elnevezése: konjunkció;
###$A\wedge B$ kiolvasása: $A$ és $B$; $A$ konjunkció $B$
##$\vee $: a "... vagy ..." kifejezésére szolgáló kétargumentumú művelete jele;
###a művelet elnevezése: diszjunkció;
###$A\vee B$ kiolvasása: $A$ vagy $B$; $A$ diszjunkció $B$
##$\equiv $: a "... akkor és csak akkor ha ..." kifejezésére szolgáló kétargumentumú művelete jele;
###a művelet elnevezése: materiális ekvivalencia;
###$A\equiv B$ kiolvasása: $A$ akkor és csak akkor ha $B$; $A$ (materiálisan) ekvivalens $B$-vel
!!A [[nulladrendű logikában|Nulladrendű logika]] használt jelölési konvenciók
#$p, q, r\ $ és ezek indexezett változatai: [[állításparaméterek|Állításparaméter]], azaz [[nulladrendű nyelv|Nulladrendű nyelv]] esetén a $Con$ halmaz elemei.
# $A, B, C\ $ és ezek indexezett változatai: formulák, azaz [[nulladrendű nyelv|Nulladrendű nyelv]] esetén a $Form$ halmaz elemei.
#$\Gamma , \Delta$: tetszőleges formulahalmazokat jelölnek, azaz, $\Gamma , \Delta\subseteq Form$.
# $RF(A)$ az $A$ formula részformuláinak a halmazát jelöli.
#$\vert A \vert_{\varrho}$ jelöli az $A$ formula ${\varrho}$ [[interpretáció|Nulladrendű interpretáció]] szerinti értékét a [[nulladrendű logikában|Nulladrendű logika]].
#$\Gamma\models A$ jelöli azt, hogy a $\Gamma$ formulahalmaznak [[logikai következménye|Szemantikai következményreláció]] az $A$ formula.
#$A\models B$ jelöli azt, hogy az $A$ formulának [[logikai következménye|Szemantikai következményreláció]] a $B$ formula.
#$\Gamma\cup\{A\}\models B$ helyett gyakran használjuk a következő rövidebb írásmódot: $\Gamma , A\models B$
#$\Gamma\cup \Delta \models A$ helyett gyakran használjuk a következő rövidebb írásmódot: $\Gamma , \Delta\models A$
#$A_1,A_2,\ldots ,A_n\models B$ jelöli azt, hogy a $\{A_1,A_2,\ldots ,A_n\}$ véges formulahalmaznak [[logikai következménye|Szemantikai következményreláció]] a $B$ formula ($\{A_1,A_2,\ldots ,A_n\}\models B$).
#$\models A$ jelöli azt, hogy az $A$ [[érvényes formula|Érvényesség]].
#$A\Leftrightarrow B$ jelöli azt, hogy az $A$ és a $B$ formula [[logikailag ekvivalens|Logikai ekvivalencia]].
#$Cns(\Gamma)$ jelöli azt a halmazt, amelynek elemei a $\Gamma$ formulahalmaz [[szintaktikai következményei|Szintaktikai következményreláció]].
#$\Gamma\vdash A$ jelöli azt, hogy a $\Gamma$ formulahalmaznak [[szintaktikai következménye|Szintaktikai következményreláció]] az $A$ formula.
#$\vdash A$ jelöli azt, hogy az $A$ [[levezethető formula|Levezethető]].
!!Értelmezés
*A logikai konstansok olyan nyelvi eszközök, amelyek jelentését a szemantikai szabályok (logikai kalkulusok esetén az axiómák) rögzítik.
*Egy adott logikai rendszer esetén a logikai konstansok rögzített jelentéssel (rögzített szemantikai értékkel) rendelkeznek, jelentésük (szemantikai értékük) minden interpretációban megegyezik.
*Egy adott logikai rendszer esetén a logikai konstansokat általában az adott logikai rendszer nyelvének $LC$ halmaza tartalmazza.
!!!Megjegyzés
*Ha $L^{(0)}=\langle LC, Con, Form \rangle$ egy [[nulladrendű nyelv|Nulladrendű nyelv]], akkor az $LC$ halmaz elemei a nyelv logikai konstansai.
*A [[nulladrendű nyelv|Nulladrendű nyelv]] esetén a logikai konstansok [[formulá(k)ból|Formula]] formulát állítanak elő, ezért őket logikai műveleteknek vagy [[igazságfunktoroknak|Igazságfunktorok]] is nevezzük.
*A [[nulladrendű nyelv|Nulladrendű nyelv]] [[logikai konstansainak szemléletes értelmezését|Logikai jelek szemléletes értelmezése]] a [[szemantikai szabályok|Nulladrendű szemantikai szabályok]] emelik be a rendszerbe.
Legyen a továbbiakban $L^{(0)}=\langle LC, Con, Form \rangle$ egy [[nulladrendű nyelv|Nulladrendű nyelv]], $\Gamma, \Delta \subseteq Form$ és $A, B, C\in Form$.
<<tabs ""[[Implikáció]] "" [[Implikáció szabályai]] [[Negáció]] "" [[Negáció szabályai]] [[Konjunkció]] "" [[Konjunkció szabályai]] [[Diszjunkció]] "" [[Diszjunkció szabályai]] [[(Materiális) ekvivalencia]] "" [[(Materiális) ekvivalencia szabályai]]>>
''Note:'' You can remove or delete this 'Main Menu' as all the information is also contained in the [[Help]] tiddler on the top menu.
<<tiddler [[Help]]>>
{{moveovermainmenu{
{{center{Az informatika logikai alapjai{{left{
----
{{mmheading{Bevezetés}}}<<treeview2 "Bevezetés" "filetree" 'collapsed: true ' >>
{{mmheading{Állításlogika}}}<<treeview2 "Nulladrendű logika" "filetree" 'collapsed: true '>>
{{mmheading{Állításkalkulus}}}<<treeview2 "Nulladrendű kalkulus" "filetree" 'collapsed: true '>>
{{mmheading{Természetes levezetés}}}<<treeview2 "Természetes levezetés" "filetree" 'collapsed: true '>>
{{mmheading{Predikátumlogika}}}
----
}}}
{{center{
<html><hide linebreaks><iframe src="http://www.symbex.net.au/Wiki/TW-NET_blk.htm" frameborder="0" width="147" height="45" scrolling="no" align="center"></iframe></span></html>
----
{{left{
{{mmheading {About Treeview}}}
<<treeview2 "Main Menu" "filetree" 'collapsed: false, antisesame: "closed", animated: "fast", persist: "cookie", cookieId: "mmid"' >>
{{mmheading {Hidden Workings}}}<<treeview2 "System" "filetree" 'collapsed: false, antisesame: "closed", animated: "fast", persist: "cookie", cookieId: "sysID"'>>
----
{{center{<html><a href="http://twt-treeview.tiddlyspot.com/download">^^Save to your ^^[img[http://www.symbex.net.au/Wiki/images/disk.gif]]^^ local disk here ^^</a></html>}}}
}}}
+++[new tiddlers]
<<newTiddler "New Tiddler">>
<<tiddler NewHTMLFromTemplate>>
<<tiddler NewIframeFromTemplate>>
<<tiddler NewObjectFromTemplate>>
<<tiddler NewProjectTemplate>>
<<tiddler NewScriptTiddler>>
<<tiddler NewSliderFromTemplate>>
<<tiddler NewSystemConfigTiddler>>
<<tiddler NewTabsFromTemplate>>
/%<<newJournal "New Earth Time: [UTC]YYYY.0MM.0DD[/UTC] NETDEGMINSEC "journal">>%/
===
<script>
/*
* Treeview 1.4 - jQuery plugin to hide and show branches of a tree
*
* http://bassistance.de/jquery-plugins/jquery-plugin-treeview/
* http://docs.jquery.com/Plugins/Treeview
*
* Copyright (c) 2007 Jörn Zaefferer
*
* Dual licensed under the MIT and GPL licenses:
* http://www.opensource.org/licenses/mit-license.php
* http://www.gnu.org/licenses/gpl.html
*
* Revision: $Id: jquery.treeview.js 4684 2008-02-07 19:08:06Z joern.zaefferer $
*
*/
;(function($) {
$.extend($.fn, {
swapClass: function(c1, c2) {
var c1Elements = this.filter('.' + c1);
this.filter('.' + c2).removeClass(c2).addClass(c1);
c1Elements.removeClass(c1).addClass(c2);
return this;
},
replaceClass: function(c1, c2) {
return this.filter('.' + c1).removeClass(c1).addClass(c2).end();
},
hoverClass: function(className) {
className = className || "hover";
return this.hover(function() {
$(this).addClass(className);
}, function() {
$(this).removeClass(className);
});
},
heightToggle: function(animated, callback) {
animated ?
this.animate({ height: "toggle" }, animated, callback) :
this.each(function(){
jQuery(this)[ jQuery(this).is(":hidden") ? "show" : "hide" ]();
if(callback)
callback.apply(this, arguments);
});
},
heightHide: function(animated, callback) {
if (animated) {
this.animate({ height: "hide" }, animated, callback);
} else {
this.hide();
if (callback)
this.each(callback);
}
},
prepareBranches: function(settings) {
if (!settings.prerendered) {
// mark last tree items
this.filter(":last-child:not(ul)").addClass(CLASSES.last);
// collapse whole tree, or only those marked as closed, anyway except those marked as open
this.filter((settings.collapsed ? "" : "." + CLASSES.closed) + ":not(." + CLASSES.open + ")").find(">ul").hide();
}
// return all items with sublists
return this.filter(":has(>ul)");
},
applyClasses: function(settings, toggler) {
this.filter(":has(>ul):not(:has(>a))").find(">span").click(function(event) {
toggler.apply($(this).next());
}).add( $("a", this) ).hoverClass();
if (!settings.prerendered) {
// handle closed ones first
this.filter(":has(>ul:hidden)")
.addClass(CLASSES.expandable)
.replaceClass(CLASSES.last, CLASSES.lastExpandable);
// handle open ones
this.not(":has(>ul:hidden)")
.addClass(CLASSES.collapsable)
.replaceClass(CLASSES.last, CLASSES.lastCollapsable);
// create hitarea
this.prepend("<div class=\"" + CLASSES.hitarea + "\"/>").find("div." + CLASSES.hitarea).each(function() {
var classes = "";
$.each($(this).parent().attr("class").split(" "), function() {
classes += this + "-hitarea ";
});
$(this).addClass( classes );
});
}
// apply event to hitarea
this.find("div." + CLASSES.hitarea).click( toggler );
},
treeview: function(settings) {
settings = $.extend({
cookieId: "treeview"
}, settings);
if (settings.add) {
return this.trigger("add", [settings.add]);
}
if ( settings.toggle ) {
var callback = settings.toggle;
settings.toggle = function() {
return callback.apply($(this).parent()[0], arguments);
};
}
// factory for treecontroller
function treeController(tree, control) {
// factory for click handlers
function handler(filter) {
return function() {
// reuse toggle event handler, applying the elements to toggle
// start searching for all hitareas
toggler.apply( $("div." + CLASSES.hitarea, tree).filter(function() {
// for plain toggle, no filter is provided, otherwise we need to check the parent element
return filter ? $(this).parent("." + filter).length : true;
}) );
return false;
};
}
// click on first element to collapse tree
$("a:eq(0)", control).click( handler(CLASSES.collapsable) );
// click on second to expand tree
$("a:eq(1)", control).click( handler(CLASSES.expandable) );
// click on third to toggle tree
$("a:eq(2)", control).click( handler() );
}
// handle toggle event
function toggler() {
$(this)
.parent()
// swap classes for hitarea
.find(">.hitarea")
.swapClass( CLASSES.collapsableHitarea, CLASSES.expandableHitarea )
.swapClass( CLASSES.lastCollapsableHitarea, CLASSES.lastExpandableHitarea )
.end()
// swap classes for parent li
.swapClass( CLASSES.collapsable, CLASSES.expandable )
.swapClass( CLASSES.lastCollapsable, CLASSES.lastExpandable )
// find child lists
.find( ">ul" )
// toggle them
.heightToggle( settings.animated, settings.toggle );
if ( settings.unique ) {
$(this).parent()
.siblings()
// swap classes for hitarea
.find(">.hitarea")
.replaceClass( CLASSES.collapsableHitarea, CLASSES.expandableHitarea )
.replaceClass( CLASSES.lastCollapsableHitarea, CLASSES.lastExpandableHitarea )
.end()
.replaceClass( CLASSES.collapsable, CLASSES.expandable )
.replaceClass( CLASSES.lastCollapsable, CLASSES.lastExpandable )
.find( ">ul" )
.heightHide( settings.animated, settings.toggle );
}
}
function serialize() {
function binary(arg) {
return arg ? 1 : 0;
}
var data = [];
branches.each(function(i, e) {
data[i] = $(e).is(":has(>ul:visible)") ? 1 : 0;
});
$.cookie(settings.cookieId, data.join("") );
}
function deserialize() {
var stored = $.cookie(settings.cookieId);
if ( stored ) {
var data = stored.split("");
branches.each(function(i, e) {
$(e).find(">ul")[ parseInt(data[i]) ? "show" : "hide" ]();
});
}
}
// add treeview class to activate styles
this.addClass("treeview");
// prepare branches and find all tree items with child lists
var branches = this.find("li").prepareBranches(settings);
switch(settings.persist) {
case "cookie":
var toggleCallback = settings.toggle;
settings.toggle = function() {
serialize();
if (toggleCallback) {
toggleCallback.apply(this, arguments);
}
};
deserialize();
break;
case "location":
var current = this.find("a").filter(function() { return this.href.toLowerCase() == location.href.toLowerCase(); });
if ( current.length ) {
current.addClass("selected").parents("ul, li").add( current.next() ).show();
}
break;
}
branches.applyClasses(settings, toggler);
// if control option is set, create the treecontroller and show it
if ( settings.control ) {
treeController(this, settings.control);
$(settings.control).show();
}
return this.bind("add", function(event, branches) {
$(branches).prev()
.removeClass(CLASSES.last)
.removeClass(CLASSES.lastCollapsable)
.removeClass(CLASSES.lastExpandable)
.find(">.hitarea")
.removeClass(CLASSES.lastCollapsableHitarea)
.removeClass(CLASSES.lastExpandableHitarea);
$(branches).find("li").andSelf().prepareBranches(settings).applyClasses(settings, toggler);
});
}
});
// classes used by the plugin
// need to be styled via external stylesheet, see first example
var CLASSES = $.fn.treeview.classes = {
open: "open",
closed: "closed",
expandable: "expandable",
expandableHitarea: "expandable-hitarea",
lastExpandableHitarea: "lastExpandable-hitarea",
collapsable: "collapsable",
collapsableHitarea: "collapsable-hitarea",
lastCollapsableHitarea: "lastCollapsable-hitarea",
lastCollapsable: "lastCollapsable",
lastExpandable: "lastExpandable",
last: "last",
hitarea: "hitarea"
};
// provide backwards compability
$.fn.Treeview = $.fn.treeview;
})(jQuery);
</script>
<script>
var sc_project=4793024;
var sc_invisible=1;
var sc_partition=54;
var sc_click_stat=1;
var sc_security="a9269ce8";
</script>
<script src="http://www.statcounter.com/counter/counter.js"></script>
!The Lorenz Equations
\[\begin{eqnarray}
\dot{x} & = & \sigma(y-x) \\
\dot{y} & = & \rho x - y - xz \\
\dot{z} & = & -\beta z + xy
\end{eqnarray}\]
!The ~Cauchy-Schwarz Inequality
\[ \left( \sum_{k=1}^n a_k b_k \right)^2 \leq \left( \sum_{k=1}^n a_k^2
\right) \left( \sum_{k=1}^n b_k^2 \right) \]
!A Cross Product Formula
\[\mathbf{V}_1 \times \mathbf{V}_2 = \left|\begin{array}{ccc}
\mathbf{i} & \mathbf{j} & \mathbf{k} \\
\frac{\partial X}{\partial u} & \frac{\partial Y}{\partial u} & 0 \\
\frac{\partial X}{\partial v} & \frac{\partial Y}{\partial v}
& 0
\end{array}\right| \]
!The probability of getting \(k\) heads when flipping \(n\) coins is:
\[P(E) = {n \choose k} p^k (1-p)^{ n-k} \]
!An Identity of Ramanujan
\[ \frac{1}{\left(\sqrt{\phi \sqrt{5}}-\phi\right) e^{\frac25 \pi}} =
1+\frac{e^{-2\pi}} {1+\frac{e^{-4\pi}} {1+\frac{e^{-6\pi}}
{1+\frac{e^{-8\pi}} {1+\ldots} } } } \]
!A ~Rogers-Ramanujan Identity
\[ 1 + \frac{q^2}{(1-q)}+\frac{q^6}{(1-q)(1-q^2)}+\cdots =
\prod_{j=0}^{\infty}\frac{1}{(1-q^{5j+2})(1-q^{5j+3})},
\quad\quad \textrm{for}\quad |q|<1. \]
!Maxwell's Equations
\[\begin{eqnarray}
\nabla \times \vec{\mathbf{B}} -\, \frac1c\,\frac{\partial\vec{\mathbf{E}}}{\partial t} & = & \frac{4\pi}{c}\vec{\mathbf{j}} \\
\nabla \cdot \vec{\mathbf{E}} & = & 4 \pi \rho \\
\nabla \times \vec{\mathbf{E}}\, +\, \frac1c\,\frac{\partial\vec{\mathbf{B}}}{\partial t} & = &\vec{\mathbf{0}} \\
\nabla \cdot \vec{\mathbf{B}} & = & 0
\end{eqnarray}\]
Finally, while display equations look good for a page of samples, the ability to mix math and text in a paragraph is also important. This expression \(\sqrt{3x-1}+(1+x)^2\) is an example of an inline equation. As you see, ~MathJax equations can be used this way as well, without unduly disturbing the spacing between lines.
[>img[figuras/MSVGlogo.png]] <div class='SVGgraph' options='width:100,height:120,scales:[0,3,-2,1.8]'>
grid({dx:0.5});
text([0,0.15],"$\\Sigma$",{fontsize:80,fontfill:"grey",pos:"e"});
text([0,0.1],"$\\Sigma$",{fontsize:76,fontfill:"#afc6e9",pos:"e"});
text([0,-1.75],"MathSVG",{fontsize:19,fill:"black",fontweight:"bold",pos:"e"});
text([1.3,0.1],"$x^2+\\frac{b}{a}=0$",{fontsize:10,fontfill:"red",pos:"e"});
text([0.05,-1.2],"$(a,b]= \\{x \\in \\R$",{fontsize:12,fontfill:"red",pos:"e"});
circle([2.5,1.1],0.4,{stroke:"orange",strokewidth:2,fill:"#eee"});
text([2.5,1.1],"1.0",{fontfill:"blue",fontsize:11});
</div>
The ~MathSVG part of the plugin in this ~TidddlyWiki is minified in order to minimize the plugin's size. The original version of that code can be download [[here|MathSVG.js]].
/***
|''Name:''|MathSVGPlugin|
|''Description:''|This plugin translates a subset of the LaTeX math notation to MathML with a customisable image fallback when MathML is not supported. It also provides an easy way to produce mathematical SVG graphics with dynamical features and animation.|
|''Version:''|1.4.2|
|''Date:''|2010-08-27|
|''Source:''|http://www.math.ist.utl.pt/~psoares/MathSVG.html|
|''Author:''|Paulo Soares|
|''License:''|[[GNU Lesser General Public License|http://www.gnu.org/licences/lgpl.html]]|
|''~CoreVersion:''|2.5.0|
!Original copyright notice
{{{
ASCIIMathML.js
==============
Version 2.1 Oct 8, 2008, (c) Peter Jipsen http://www.chapman.edu/~jipsen
This version extends ASCIIMathML.js with LaTeXMathML.js and ASCIIsvg.js.
Latest version at http://www.chapman.edu/~jipsen/mathml/ASCIIMathML.js
If you use it on a webpage, please send the URL to jipsen@chapman.edu
The LaTeXMathML modifications were made by Douglas Woodall, June 2006.
(for details see header on the LaTeXMathML part in middle of file)
Extensive clean-up and improvements by Paulo Soares, Oct 2007.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation; either version 2.1 of the License, or (at
your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
(at http://www.gnu.org/licences/lgpl.html) for more details.
}}}
!~MathSVG code (minified)
***/
//{{{
Math.sec=function(a){return 1/Math.cos(a)};Math.csc=function(a){return 1/Math.sin(a)};Math.cot=function(a){return 1/Math.tan(a)};Math.asec=function(a){return Math.acos(1/a)};Math.acsc=function(a){return Math.asin(1/a)};Math.acot=function(a){return Math.atan(1/a)};Math.sinh=function(a){return(Math.exp(a)-Math.exp(-a))/2};Math.cosh=function(a){return(Math.exp(a)+Math.exp(-a))/2};Math.tanh=function(a){return(Math.exp(a)-Math.exp(-a))/(Math.exp(a)+Math.exp(-a))};Math.sech=function(a){return 1/Math.cosh(a)};Math.csch=function(a){return 1/Math.sinh(a)};Math.coth=function(a){return 1/Math.tanh(a)};Math.asinh=function(a){return Math.log(a+Math.sqrt(a*a+1))};Math.acosh=function(a){return Math.log(a+Math.sqrt(a*a-1))};Math.atanh=function(a){return Math.log((1+a)/(1-a))/2};Math.sech=function(a){return 1/Math.cosh(a)};Math.csch=function(a){return 1/Math.sinh(a)};Math.coth=function(a){return 1/Math.tanh(a)};Math.asech=function(a){return Math.acosh(1/a)};Math.acsch=function(a){return Math.asinh(1/a)};Math.acoth=function(a){return Math.atanh(1/a)};Math.sign=function(a){return(a===0?0:(a<0?-1:1))};Math.step=function(a,c,b){return(a<0?(b?b:0):(c?c:1))};Math.root=function(a,b){return Math.pow(a,1/b)};Math.factorial=function(b){if(b===0){return 1}if(b<0){if((b%1)===0){return}if(b>-1){return Math.factorial(b+1)/(b+1)}return -Math.PI/(Math.factorial(-1-b)*Math.sin(Math.PI*b))}var a=b;if((b%1)===0){while(b>1){b=b-1;a=a*b}}else{a=Math.exp((b+0.5)*Math.log(b+1)-b-b*(0.1121105+b*0.08106103)/(1.452342+b*(2.410858+b)))}return a};Math.Gamma=function(a){return Math.factorial(a-1)};Math.Beta=function(a,b){return Math.Gamma(a)*Math.Gamma(b)/Math.Gamma(a+b)};Math.C=function(a,b){var c=1/((a+1)*Math.Beta(b+1,a-b+1));return c};Math.truncate=function(a,c){var b=c||0;return Math.floor(a*Math.pow(10,b))/Math.pow(10,b)};Math.randomString=function(a,g){var f=(g||"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz").split("");var e=[],c=Math.random;var d=f.length;for(var b=0;b<a;b++){e[b]=f[0|c()*d]}return e.join("")};Math.runif=function(d,c,f){var e=f||0;return Math.truncate((c+Math.pow(10,-e)-d)*Math.random()+d,e)};Math.rnormal=function(a,b){a=a||0;b=b||1;var d=0,c=0;while(d*c===0){d=Math.random();c=Math.random()}return b*(Math.sqrt(-2*Math.log(d))*Math.cos(2*Math.PI*c))+a};(function(){var a=jQuery.fn.attr,b="http://www.w3.org/2000/svg";jQuery.fn.attr=function(m,l){var g=this.length;if(!g){return this}for(var f=0;f<g;f++){var c=this[f];if(c.namespaceURI===b){if(l!==undefined){c.setAttribute(m,l)}else{if($.isArray(m)){var d=m.length,e={};while(d--){var k=m[d];var h=c.getAttribute(k);if(h||h==="0"){h=isNaN(h)?h:h-0}e[k]=h}return e}else{if(typeof m==="object"){for(v in m){c.setAttribute(v,m[v])}}else{var h=c.getAttribute(m);if(h||h==="0"){h=isNaN(h)?h:h-0}return h}}}}else{return a.apply(this,arguments)}}return this}}());var MSVG=function($){var cal=["\uD835\uDC9C","\u212C","\uD835\uDC9E","\uD835\uDC9F","\u2130","\u2131","\uD835\uDCA2","\u210B","\u2110","\uD835\uDCA5","\uD835\uDCA6","\u2112","\u2133","\uD835\uDCA9","\uD835\uDCAA","\uD835\uDCAB","\uD835\uDCAC","\u211B","\uD835\uDCAE","\uD835\uDCAF","\uD835\uDCB0","\uD835\uDCB1","\uD835\uDCB2","\uD835\uDCB3","\uD835\uDCB4","\uD835\uDCB5","\uD835\uDCB6","\uD835\uDCB7","\uD835\uDCB8","\uD835\uDCB9","\u212F","\uD835\uDCBB","\u210A","\uD835\uDCBD","\uD835\uDCBE","\uD835\uDCBF","\uD835\uDCC0","\uD835\uDCC1","\uD835\uDCC2","\uD835\uDCC3","\u2134","\uD835\uDCC5","\uD835\uDCC6","\uD835\uDCC7","\uD835\uDCC8","\uD835\uDCC9","\uD835\uDCCA","\uD835\uDCCB","\uD835\uDCCC","\uD835\uDCCD","\uD835\uDCCE","\uD835\uDCCF"];var frk=["\uD835\uDD04","\uD835\uDD05","\u212D","\uD835\uDD07","\uD835\uDD08","\uD835\uDD09","\uD835\uDD0A","\u210C","\u2111","\uD835\uDD0D","\uD835\uDD0E","\uD835\uDD0F","\uD835\uDD10","\uD835\uDD11","\uD835\uDD12","\uD835\uDD13","\uD835\uDD14","\u211C","\uD835\uDD16","\uD835\uDD17","\uD835\uDD18","\uD835\uDD19","\uD835\uDD1A","\uD835\uDD1B","\uD835\uDD1C","\u2128","\uD835\uDD1E","\uD835\uDD1F","\uD835\uDD20","\uD835\uDD21","\uD835\uDD22","\uD835\uDD23","\uD835\uDD24","\uD835\uDD25","\uD835\uDD26","\uD835\uDD27","\uD835\uDD28","\uD835\uDD29","\uD835\uDD2A","\uD835\uDD2B","\uD835\uDD2C","\uD835\uDD2D","\uD835\uDD2E","\uD835\uDD2F","\uD835\uDD30","\uD835\uDD31","\uD835\uDD32","\uD835\uDD33","\uD835\uDD34","\uD835\uDD35","\uD835\uDD36","\uD835\uDD37"];var bbb=["\uD835\uDD38","\uD835\uDD39","\u2102","\uD835\uDD3B","\uD835\uDD3C","\uD835\uDD3D","\uD835\uDD3E","\u210D","\uD835\uDD40","\uD835\uDD41","\uD835\uDD42","\uD835\uDD43","\uD835\uDD44","\u2115","\uD835\uDD46","\u2119","\u211A","\u211D","\uD835\uDD4A","\uD835\uDD4B","\uD835\uDD4C","\uD835\uDD4D","\uD835\uDD4E","\uD835\uDD4F","\uD835\uDD50","\u2124","\uD835\uDD52","\uD835\uDD53","\uD835\uDD54","\uD835\uDD55","\uD835\uDD56","\uD835\uDD57","\uD835\uDD58","\uD835\uDD59","\uD835\uDD5A","\uD835\uDD5B","\uD835\uDD5C","\uD835\uDD5D","\uD835\uDD5E","\uD835\uDD5F","\uD835\uDD60","\uD835\uDD61","\uD835\uDD62","\uD835\uDD63","\uD835\uDD64","\uD835\uDD65","\uD835\uDD66","\uD835\uDD67","\uD835\uDD68","\uD835\uDD69","\uD835\uDD6A","\uD835\uDD6B"];var CONST=0,UNARY=1,BINARY=2,INFIX=3,LEFTBRACKET=4,RIGHTBRACKET=5,SPACE=6,UNDEROVER=7,DEFINITION=8,LEFTRIGHT=9,TEXT=10,BIG=11,STRETCHY=13,MATRIX=14;var symbols=[{input:"\\varepsilon",tag:"mi",output:"\u025B",ttype:CONST},{input:"\\varsigma",tag:"mi",output:"\u03C2",ttype:CONST},{input:"\\vartheta",tag:"mi",output:"\u03D1",ttype:CONST},{input:"\\varphi",tag:"mi",output:"\u03D5",ttype:CONST},{input:"\\varpi",tag:"mi",output:"\u03D6",ttype:CONST},{input:"\\varrho",tag:"mi",output:"\u03F1",ttype:CONST},{input:"\\alpha",tag:"mi",output:"\u03B1",ttype:CONST},{input:"\\beta",tag:"mi",output:"\u03B2",ttype:CONST},{input:"\\gamma",tag:"mi",output:"\u03B3",ttype:CONST},{input:"\\delta",tag:"mi",output:"\u03B4",ttype:CONST},{input:"\\epsilon",tag:"mi",output:"\u03B5",ttype:CONST},{input:"\\zeta",tag:"mi",output:"\u03B6",ttype:CONST},{input:"\\eta",tag:"mi",output:"\u03B7",ttype:CONST},{input:"\\theta",tag:"mi",output:"\u03B8",ttype:CONST},{input:"\\iota",tag:"mi",output:"\u03B9",ttype:CONST},{input:"\\kappa",tag:"mi",output:"\u03BA",ttype:CONST},{input:"\\lambda",tag:"mi",output:"\u03BB",ttype:CONST},{input:"\\mu",tag:"mi",output:"\u03BC",ttype:CONST},{input:"\\nu",tag:"mi",output:"\u03BD",ttype:CONST},{input:"\\xi",tag:"mi",output:"\u03BE",ttype:CONST},{input:"\\omicron",tag:"mi",output:"\u03BF",ttype:CONST},{input:"\\pi",tag:"mi",output:"\u03C0",ttype:CONST},{input:"\\rho",tag:"mi",output:"\u03C1",ttype:CONST},{input:"\\sigma",tag:"mi",output:"\u03C3",ttype:CONST},{input:"\\tau",tag:"mi",output:"\u03C4",ttype:CONST},{input:"\\upsilon",tag:"mi",output:"\u03C5",ttype:CONST},{input:"\\phi",tag:"mi",output:"\u03C6",ttype:CONST},{input:"\\chi",tag:"mi",output:"\u03C7",ttype:CONST},{input:"\\psi",tag:"mi",output:"\u03C8",ttype:CONST},{input:"\\omega",tag:"mi",output:"\u03C9",ttype:CONST},{input:"\\Alpha",tag:"mo",output:"\u0391",ttype:CONST},{input:"\\Beta",tag:"mo",output:"\u0392",ttype:CONST},{input:"\\Gamma",tag:"mo",output:"\u0393",ttype:CONST},{input:"\\Delta",tag:"mo",output:"\u0394",ttype:CONST},{input:"\\Epsilon",tag:"mo",output:"\u0395",ttype:CONST},{input:"\\Zeta",tag:"mo",output:"\u0396",ttype:CONST},{input:"\\Eta",tag:"mo",output:"\u0397",ttype:CONST},{input:"\\Theta",tag:"mo",output:"\u0398",ttype:CONST},{input:"\\Iota",tag:"mo",output:"\u0399",ttype:CONST},{input:"\\Kappa",tag:"mo",output:"\u039A",ttype:CONST},{input:"\\Lambda",tag:"mo",output:"\u039B",ttype:CONST},{input:"\\Mu",tag:"mo",output:"\u039C",ttype:CONST},{input:"\\Nu",tag:"mo",output:"\u039D",ttype:CONST},{input:"\\Xi",tag:"mo",output:"\u039E",ttype:CONST},{input:"\\Omicron",tag:"mo",output:"\u039F",ttype:CONST},{input:"\\Pi",tag:"mo",output:"\u03A0",ttype:CONST},{input:"\\Rho",tag:"mo",output:"\u03A1",ttype:CONST},{input:"\\Sigma",tag:"mo",output:"\u03A3",ttype:CONST},{input:"\\Tau",tag:"mo",output:"\u03A4",ttype:CONST},{input:"\\Upsilon",tag:"mo",output:"\u03A5",ttype:CONST},{input:"\\Phi",tag:"mo",output:"\u03A6",ttype:CONST},{input:"\\Chi",tag:"mo",output:"\u03A7",ttype:CONST},{input:"\\Psi",tag:"mo",output:"\u03A8",ttype:CONST},{input:"\\Omega",tag:"mo",output:"\u03A9",ttype:CONST},{input:"\\frac12",tag:"mo",output:"\u00BD",ttype:CONST},{input:"\\frac14",tag:"mo",output:"\u00BC",ttype:CONST},{input:"\\frac34",tag:"mo",output:"\u00BE",ttype:CONST},{input:"\\frac13",tag:"mo",output:"\u2153",ttype:CONST},{input:"\\frac23",tag:"mo",output:"\u2154",ttype:CONST},{input:"\\frac15",tag:"mo",output:"\u2155",ttype:CONST},{input:"\\frac25",tag:"mo",output:"\u2156",ttype:CONST},{input:"\\frac35",tag:"mo",output:"\u2157",ttype:CONST},{input:"\\frac45",tag:"mo",output:"\u2158",ttype:CONST},{input:"\\frac16",tag:"mo",output:"\u2159",ttype:CONST},{input:"\\frac56",tag:"mo",output:"\u215A",ttype:CONST},{input:"\\frac18",tag:"mo",output:"\u215B",ttype:CONST},{input:"\\frac38",tag:"mo",output:"\u215C",ttype:CONST},{input:"\\frac58",tag:"mo",output:"\u215D",ttype:CONST},{input:"\\frac78",tag:"mo",output:"\u215E",ttype:CONST},{input:"\\pm",tag:"mo",output:"\u00B1",ttype:CONST},{input:"\\mp",tag:"mo",output:"\u2213",ttype:CONST},{input:"\\triangleleft",tag:"mo",output:"\u22B2",ttype:CONST},{input:"\\triangleright",tag:"mo",output:"\u22B3",ttype:CONST},{input:"\\cdot",tag:"mo",output:"\u22C5",ttype:CONST},{input:"\\star",tag:"mo",output:"\u22C6",ttype:CONST},{input:"\\ast",tag:"mo",output:"\u002A",ttype:CONST},{input:"\\times",tag:"mo",output:"\u00D7",ttype:CONST},{input:"\\div",tag:"mo",output:"\u00F7",ttype:CONST},{input:"\\circ",tag:"mo",output:"\u2218",ttype:CONST},{input:"\\bullet",tag:"mo",output:"\u2022",ttype:CONST},{input:"\\oplus",tag:"mo",output:"\u2295",ttype:CONST},{input:"\\ominus",tag:"mo",output:"\u2296",ttype:CONST},{input:"\\otimes",tag:"mo",output:"\u2297",ttype:CONST},{input:"\\bigcirc",tag:"mo",output:"\u25CB",ttype:CONST},{input:"\\oslash",tag:"mo",output:"\u2298",ttype:CONST},{input:"\\odot",tag:"mo",output:"\u2299",ttype:CONST},{input:"\\land",tag:"mo",output:"\u2227",ttype:CONST},{input:"\\wedge",tag:"mo",output:"\u2227",ttype:CONST},{input:"\\lor",tag:"mo",output:"\u2228",ttype:CONST},{input:"\\vee",tag:"mo",output:"\u2228",ttype:CONST},{input:"\\cap",tag:"mo",output:"\u2229",ttype:CONST},{input:"\\cup",tag:"mo",output:"\u222A",ttype:CONST},{input:"\\sqcap",tag:"mo",output:"\u2293",ttype:CONST},{input:"\\sqcup",tag:"mo",output:"\u2294",ttype:CONST},{input:"\\uplus",tag:"mo",output:"\u228E",ttype:CONST},{input:"\\amalg",tag:"mo",output:"\u2210",ttype:CONST},{input:"\\bigtriangleup",tag:"mo",output:"\u25B3",ttype:CONST},{input:"\\bigtriangledown",tag:"mo",output:"\u25BD",ttype:CONST},{input:"\\dag",tag:"mo",output:"\u2020",ttype:CONST},{input:"\\dagger",tag:"mo",output:"\u2020",ttype:CONST},{input:"\\ddag",tag:"mo",output:"\u2021",ttype:CONST},{input:"\\ddagger",tag:"mo",output:"\u2021",ttype:CONST},{input:"\\lhd",tag:"mo",output:"\u22B2",ttype:CONST},{input:"\\rhd",tag:"mo",output:"\u22B3",ttype:CONST},{input:"\\unlhd",tag:"mo",output:"\u22B4",ttype:CONST},{input:"\\unrhd",tag:"mo",output:"\u22B5",ttype:CONST},{input:"\\sum",tag:"mo",output:"\u2211",ttype:UNDEROVER},{input:"\\prod",tag:"mo",output:"\u220F",ttype:UNDEROVER},{input:"\\bigcap",tag:"mo",output:"\u22C2",ttype:UNDEROVER},{input:"\\bigcup",tag:"mo",output:"\u22C3",ttype:UNDEROVER},{input:"\\bigwedge",tag:"mo",output:"\u22C0",ttype:UNDEROVER},{input:"\\bigvee",tag:"mo",output:"\u22C1",ttype:UNDEROVER},{input:"\\bigsqcap",tag:"mo",output:"\u2A05",ttype:UNDEROVER},{input:"\\bigsqcup",tag:"mo",output:"\u2A06",ttype:UNDEROVER},{input:"\\coprod",tag:"mo",output:"\u2210",ttype:UNDEROVER},{input:"\\bigoplus",tag:"mo",output:"\u2A01",ttype:UNDEROVER},{input:"\\bigotimes",tag:"mo",output:"\u2A02",ttype:UNDEROVER},{input:"\\bigodot",tag:"mo",output:"\u2A00",ttype:UNDEROVER},{input:"\\biguplus",tag:"mo",output:"\u2A04",ttype:UNDEROVER},{input:"\\int",tag:"mo",output:"\u222B",ttype:CONST},{input:"\\oint",tag:"mo",output:"\u222E",ttype:CONST},{input:":=",tag:"mo",output:":=",ttype:CONST},{input:"\\lt",tag:"mo",output:"<",ttype:CONST},{input:"\\gt",tag:"mo",output:">",ttype:CONST},{input:"\\ne",tag:"mo",output:"\u2260",ttype:CONST},{input:"\\neq",tag:"mo",output:"\u2260",ttype:CONST},{input:"\\le",tag:"mo",output:"\u2264",ttype:CONST},{input:"\\leq",tag:"mo",output:"\u2264",ttype:CONST},{input:"\\leqslant",tag:"mo",output:"\u2264",ttype:CONST},{input:"\\ge",tag:"mo",output:"\u2265",ttype:CONST},{input:"\\geq",tag:"mo",output:"\u2265",ttype:CONST},{input:"\\geqslant",tag:"mo",output:"\u2265",ttype:CONST},{input:"\\equiv",tag:"mo",output:"\u2261",ttype:CONST},{input:"\\ll",tag:"mo",output:"\u226A",ttype:CONST},{input:"\\gg",tag:"mo",output:"\u226B",ttype:CONST},{input:"\\doteq",tag:"mo",output:"\u2250",ttype:CONST},{input:"\\prec",tag:"mo",output:"\u227A",ttype:CONST},{input:"\\succ",tag:"mo",output:"\u227B",ttype:CONST},{input:"\\preceq",tag:"mo",output:"\u227C",ttype:CONST},{input:"\\succeq",tag:"mo",output:"\u227D",ttype:CONST},{input:"\\subset",tag:"mo",output:"\u2282",ttype:CONST},{input:"\\supset",tag:"mo",output:"\u2283",ttype:CONST},{input:"\\subseteq",tag:"mo",output:"\u2286",ttype:CONST},{input:"\\supseteq",tag:"mo",output:"\u2287",ttype:CONST},{input:"\\sqsubset",tag:"mo",output:"\u228F",ttype:CONST},{input:"\\sqsupset",tag:"mo",output:"\u2290",ttype:CONST},{input:"\\sqsubseteq",tag:"mo",output:"\u2291",ttype:CONST},{input:"\\sqsupseteq",tag:"mo",output:"\u2292",ttype:CONST},{input:"\\sim",tag:"mo",output:"\u223C",ttype:CONST},{input:"\\simeq",tag:"mo",output:"\u2243",ttype:CONST},{input:"\\approx",tag:"mo",output:"\u2248",ttype:CONST},{input:"\\cong",tag:"mo",output:"\u2245",ttype:CONST},{input:"\\Join",tag:"mo",output:"\u22C8",ttype:CONST},{input:"\\bowtie",tag:"mo",output:"\u22C8",ttype:CONST},{input:"\\in",tag:"mo",output:"\u2208",ttype:CONST},{input:"\\ni",tag:"mo",output:"\u220B",ttype:CONST},{input:"\\owns",tag:"mo",output:"\u220B",ttype:CONST},{input:"\\propto",tag:"mo",output:"\u221D",ttype:CONST},{input:"\\vdash",tag:"mo",output:"\u22A2",ttype:CONST},{input:"\\dashv",tag:"mo",output:"\u22A3",ttype:CONST},{input:"\\models",tag:"mo",output:"\u22A8",ttype:CONST},{input:"\\perp",tag:"mo",output:"\u22A5",ttype:CONST},{input:"\\smile",tag:"mo",output:"\u2323",ttype:CONST},{input:"\\frown",tag:"mo",output:"\u2322",ttype:CONST},{input:"\\asymp",tag:"mo",output:"\u224D",ttype:CONST},{input:"\\notin",tag:"mo",output:"\u2209",ttype:CONST},{input:"\\begin{eqnarray}",output:"X",ttype:MATRIX,invisible:true},{input:"\\begin{array}",output:"X",ttype:MATRIX,invisible:true},{input:"\\\\",output:"}&{",ttype:DEFINITION},{input:"\\end{eqnarray}",output:"}}",ttype:DEFINITION},{input:"\\end{array}",output:"}}",ttype:DEFINITION},{input:"\\big",tag:"mo",output:"X",atval:"1.2",ttype:BIG},{input:"\\Big",tag:"mo",output:"X",atval:"1.8",ttype:BIG},{input:"\\bigg",tag:"mo",output:"X",atval:"2.3",ttype:BIG},{input:"\\Bigg",tag:"mo",output:"X",atval:"2.9",ttype:BIG},{input:"\\left",tag:"mo",output:"X",ttype:LEFTBRACKET},{input:"\\right",tag:"mo",output:"X",ttype:RIGHTBRACKET},{input:"{",output:"{",ttype:LEFTBRACKET,invisible:true},{input:"}",output:"}",ttype:RIGHTBRACKET,invisible:true},{input:"(",tag:"mo",output:"(",atval:"1",ttype:STRETCHY},{input:"[",tag:"mo",output:"[",atval:"1",ttype:STRETCHY},{input:"\\lbrack",tag:"mo",output:"[",atval:"1",ttype:STRETCHY},{input:"\\{",tag:"mo",output:"{",atval:"1",ttype:STRETCHY},{input:"\\lbrace",tag:"mo",output:"{",atval:"1",ttype:STRETCHY},{input:"\\langle",tag:"mo",output:"\u2329",atval:"1",ttype:STRETCHY},{input:"\\lfloor",tag:"mo",output:"\u230A",atval:"1",ttype:STRETCHY},{input:"\\lceil",tag:"mo",output:"\u2308",atval:"1",ttype:STRETCHY},{input:")",tag:"mo",output:")",rtag:"mi",atval:"1",ttype:STRETCHY},{input:"]",tag:"mo",output:"]",rtag:"mi",atval:"1",ttype:STRETCHY},{input:"\\rbrack",tag:"mo",output:"]",rtag:"mi",atval:"1",ttype:STRETCHY},{input:"\\}",tag:"mo",output:"}",rtag:"mi",atval:"1",ttype:STRETCHY},{input:"\\rbrace",tag:"mo",output:"}",rtag:"mi",atval:"1",ttype:STRETCHY},{input:"\\rangle",tag:"mo",output:"\u232A",rtag:"mi",atval:"1",ttype:STRETCHY},{input:"\\rfloor",tag:"mo",output:"\u230B",rtag:"mi",atval:"1",ttype:STRETCHY},{input:"\\rceil",tag:"mo",output:"\u2309",rtag:"mi",atval:"1",ttype:STRETCHY},{input:"|",tag:"mo",output:"\u2223",atval:"1",ttype:STRETCHY},{input:"\\|",tag:"mo",output:"\u2225",atval:"1",ttype:STRETCHY},{input:"\\vert",tag:"mo",output:"\u2223",atval:"1",ttype:STRETCHY},{input:"\\Vert",tag:"mo",output:"\u2225",atval:"1",ttype:STRETCHY},{input:"\\mid",tag:"mo",output:"\u2223",atval:"1",ttype:STRETCHY},{input:"\\parallel",tag:"mo",output:"\u2225",atval:"1",ttype:STRETCHY},{input:"/",tag:"mo",output:"/",atval:"1.01",ttype:STRETCHY},{input:"\\backslash",tag:"mo",output:"\u2216",atval:"1",ttype:STRETCHY},{input:"\\setminus",tag:"mo",output:"\\",ttype:CONST},{input:"\\!",tag:"mspace",atname:"width",atval:"-0.167em",ttype:SPACE},{input:"\\,",tag:"mspace",atname:"width",atval:"0.167em",ttype:SPACE},{input:"\\>",tag:"mspace",atname:"width",atval:"0.222em",ttype:SPACE},{input:"\\:",tag:"mspace",atname:"width",atval:"0.222em",ttype:SPACE},{input:"\\;",tag:"mspace",atname:"width",atval:"0.278em",ttype:SPACE},{input:"~",tag:"mspace",atname:"width",atval:"0.333em",ttype:SPACE},{input:"\\quad",tag:"mspace",atname:"width",atval:"1em",ttype:SPACE},{input:"\\qquad",tag:"mspace",atname:"width",atval:"2em",ttype:SPACE},{input:"\\prime",tag:"mo",output:"\u2032",ttype:CONST},{input:"'",tag:"mo",output:"\u02B9",ttype:CONST},{input:"''",tag:"mo",output:"\u02BA",ttype:CONST},{input:"'''",tag:"mo",output:"\u2034",ttype:CONST},{input:"''''",tag:"mo",output:"\u2057",ttype:CONST},{input:"\\ldots",tag:"mo",output:"\u2026",ttype:CONST},{input:"\\cdots",tag:"mo",output:"\u22EF",ttype:CONST},{input:"\\vdots",tag:"mo",output:"\u22EE",ttype:CONST},{input:"\\ddots",tag:"mo",output:"\u22F1",ttype:CONST},{input:"\\forall",tag:"mo",output:"\u2200",ttype:CONST},{input:"\\exists",tag:"mo",output:"\u2203",ttype:CONST},{input:"\\Re",tag:"mo",output:"\u211C",ttype:CONST},{input:"\\Im",tag:"mo",output:"\u2111",ttype:CONST},{input:"\\aleph",tag:"mo",output:"\u2135",ttype:CONST},{input:"\\hbar",tag:"mo",output:"\u210F",ttype:CONST},{input:"\\ell",tag:"mo",output:"\u2113",ttype:CONST},{input:"\\wp",tag:"mo",output:"\u2118",ttype:CONST},{input:"\\emptyset",tag:"mo",output:"\u2205",ttype:CONST},{input:"\\infty",tag:"mo",output:"\u221E",ttype:CONST},{input:"\\surd",tag:"mo",output:"\\sqrt{}",ttype:DEFINITION},{input:"\\partial",tag:"mo",output:"\u2202",ttype:CONST},{input:"\\nabla",tag:"mo",output:"\u2207",ttype:CONST},{input:"\\triangle",tag:"mo",output:"\u25B3",ttype:CONST},{input:"\\therefore",tag:"mo",output:"\u2234",ttype:CONST},{input:"\\angle",tag:"mo",output:"\u2220",ttype:CONST},{input:"\\diamond",tag:"mo",output:"\u22C4",ttype:CONST},{input:"\\Diamond",tag:"mo",output:"\u25C7",ttype:CONST},{input:"\\neg",tag:"mo",output:"\u00AC",ttype:CONST},{input:"\\lnot",tag:"mo",output:"\u00AC",ttype:CONST},{input:"\\bot",tag:"mo",output:"\u22A5",ttype:CONST},{input:"\\top",tag:"mo",output:"\u22A4",ttype:CONST},{input:"\\square",tag:"mo",output:"\u25AB",ttype:CONST},{input:"\\Box",tag:"mo",output:"\u25A1",ttype:CONST},{input:"\\wr",tag:"mo",output:"\u2240",ttype:CONST},{input:"\\arccos",tag:"mi",output:"arccos",ttype:UNARY,func:true},{input:"\\arcsin",tag:"mi",output:"arcsin",ttype:UNARY,func:true},{input:"\\arctan",tag:"mi",output:"arctan",ttype:UNARY,func:true},{input:"\\arg",tag:"mi",output:"arg",ttype:UNARY,func:true},{input:"\\cos",tag:"mi",output:"cos",ttype:UNARY,func:true},{input:"\\cosh",tag:"mi",output:"cosh",ttype:UNARY,func:true},{input:"\\cot",tag:"mi",output:"cot",ttype:UNARY,func:true},{input:"\\coth",tag:"mi",output:"coth",ttype:UNARY,func:true},{input:"\\csc",tag:"mi",output:"csc",ttype:UNARY,func:true},{input:"\\deg",tag:"mi",output:"deg",ttype:UNARY,func:true},{input:"\\det",tag:"mi",output:"det",ttype:UNARY,func:true},{input:"\\dim",tag:"mi",output:"dim",ttype:UNARY,func:true},{input:"\\exp",tag:"mi",output:"exp",ttype:UNARY,func:true},{input:"\\gcd",tag:"mi",output:"gcd",ttype:UNARY,func:true},{input:"\\hom",tag:"mi",output:"hom",ttype:UNARY,func:true},{input:"\\inf",tag:"mo",output:"inf",ttype:UNDEROVER},{input:"\\ker",tag:"mi",output:"ker",ttype:UNARY,func:true},{input:"\\lg",tag:"mi",output:"lg",ttype:UNARY,func:true},{input:"\\lim",tag:"mo",output:"lim",ttype:UNDEROVER},{input:"\\liminf",tag:"mo",output:"liminf",ttype:UNDEROVER},{input:"\\limsup",tag:"mo",output:"limsup",ttype:UNDEROVER},{input:"\\ln",tag:"mi",output:"ln",ttype:UNARY,func:true},{input:"\\log",tag:"mi",output:"log",ttype:UNARY,func:true},{input:"\\max",tag:"mo",output:"max",ttype:UNDEROVER},{input:"\\min",tag:"mo",output:"min",ttype:UNDEROVER},{input:"\\Pr",tag:"mi",output:"Pr",ttype:UNARY,func:true},{input:"\\sec",tag:"mi",output:"sec",ttype:UNARY,func:true},{input:"\\sin",tag:"mi",output:"sin",ttype:UNARY,func:true},{input:"\\sinh",tag:"mi",output:"sinh",ttype:UNARY,func:true},{input:"\\sup",tag:"mo",output:"sup",ttype:UNDEROVER},{input:"\\tan",tag:"mi",output:"tan",ttype:UNARY,func:true},{input:"\\tanh",tag:"mi",output:"tanh",ttype:UNARY,func:true},{input:"\\gets",tag:"mo",output:"\u2190",ttype:CONST},{input:"\\leftarrow",tag:"mo",output:"\u2190",ttype:CONST},{input:"\\to",tag:"mo",output:"\u2192",ttype:CONST},{input:"\\rightarrow",tag:"mo",output:"\u2192",ttype:CONST},{input:"\\leftrightarrow",tag:"mo",output:"\u2194",ttype:CONST},{input:"\\uparrow",tag:"mo",output:"\u2191",ttype:CONST},{input:"\\downarrow",tag:"mo",output:"\u2193",ttype:CONST},{input:"\\updownarrow",tag:"mo",output:"\u2195",ttype:CONST},{input:"\\Leftarrow",tag:"mo",output:"\u21D0",ttype:CONST},{input:"\\Rightarrow",tag:"mo",output:"\u21D2",ttype:CONST},{input:"\\Leftrightarrow",tag:"mo",output:"\u21D4",ttype:CONST},{input:"\\iff",tag:"mo",output:"~\\Longleftrightarrow~",ttype:DEFINITION},{input:"\\Uparrow",tag:"mo",output:"\u21D1",ttype:CONST},{input:"\\Downarrow",tag:"mo",output:"\u21D3",ttype:CONST},{input:"\\Updownarrow",tag:"mo",output:"\u21D5",ttype:CONST},{input:"\\mapsto",tag:"mo",output:"\u21A6",ttype:CONST},{input:"\\longleftarrow",tag:"mo",output:"\u27F5",ttype:CONST},{input:"\\longrightarrow",tag:"mo",output:"\u27F6",ttype:CONST},{input:"\\longleftrightarrow",tag:"mo",output:"\u27F7",ttype:CONST},{input:"\\Longleftarrow",tag:"mo",output:"\u27F8",ttype:CONST},{input:"\\Longrightarrow",tag:"mo",output:"\u27F9",ttype:CONST},{input:"\\Longleftrightarrow",tag:"mo",output:"\u27FA",ttype:CONST},{input:"\\longmapsto",tag:"mo",output:"\u27FC",ttype:CONST},{input:"\\sqrt",tag:"msqrt",output:"sqrt",ttype:UNARY},{input:"\\root",tag:"mroot",output:"root",ttype:BINARY},{input:"\\frac",tag:"mfrac",output:"/",ttype:BINARY},{input:"\\stackrel",tag:"mover",output:"stackrel",ttype:BINARY},{input:"\\atop",tag:"mfrac",output:"",ttype:INFIX},{input:"\\choose",tag:"mfrac",output:"",ttype:INFIX},{input:"\\over",tag:"mfrac",output:"/",ttype:INFIX},{input:"_",tag:"msub",output:"_",ttype:INFIX},{input:"^",tag:"msup",output:"^",ttype:INFIX},{input:"\\mbox",tag:"mtext",output:"mbox",ttype:TEXT},{input:"\\acute",tag:"mover",output:"\u00B4",ttype:UNARY,acc:true},{input:"\\grave",tag:"mover",output:"\u0060",ttype:UNARY,acc:true},{input:"\\breve",tag:"mover",output:"\u02D8",ttype:UNARY,acc:true},{input:"\\check",tag:"mover",output:"\u02C7",ttype:UNARY,acc:true},{input:"\\dot",tag:"mover",output:".",ttype:UNARY,acc:true},{input:"\\ddot",tag:"mover",output:"..",ttype:UNARY,acc:true},{input:"\\mathring",tag:"mover",output:"\u00B0",ttype:UNARY,acc:true},{input:"\\vec",tag:"mover",output:"\u2192",ttype:UNARY,acc:true},{input:"\\overrightarrow",tag:"mover",output:"\u2192",ttype:UNARY,acc:true},{input:"\\overleftarrow",tag:"mover",output:"\u2190",ttype:UNARY,acc:true},{input:"\\hat",tag:"mover",output:"\u005E",ttype:UNARY,acc:true},{input:"\\widehat",tag:"mover",output:"\u0302",ttype:UNARY,acc:true},{input:"\\tilde",tag:"mover",output:"~",ttype:UNARY,acc:true},{input:"\\widetilde",tag:"mover",output:"\u02DC",ttype:UNARY,acc:true},{input:"\\bar",tag:"mover",output:"\u203E",ttype:UNARY,acc:true},{input:"\\overbrace",tag:"mover",output:"\u23B4",ttype:UNARY,acc:true},{input:"\\overline",tag:"mover",output:"\u00AF",ttype:UNARY,acc:true},{input:"\\underbrace",tag:"munder",output:"\u23B5",ttype:UNARY,acc:true},{input:"\\underline",tag:"munder",output:"\u00AF",ttype:UNARY,acc:true},{input:"\\displaystyle",tag:"mstyle",atname:"displaystyle",atval:"true",ttype:UNARY},{input:"\\textstyle",tag:"mstyle",atname:"displaystyle",atval:"false",ttype:UNARY},{input:"\\scriptstyle",tag:"mstyle",atname:"scriptlevel",atval:"1",ttype:UNARY},{input:"\\scriptscriptstyle",tag:"mstyle",atname:"scriptlevel",atval:"2",ttype:UNARY},{input:"\\mathrm",tag:"mtext",output:"text",ttype:TEXT},{input:"\\textrm",tag:"mtext",output:"text",ttype:TEXT},{input:"\\mathbf",tag:"mstyle",atname:"mathvariant",atval:"bold",ttype:UNARY},{input:"\\textbf",tag:"mstyle",atname:"mathvariant",atval:"bold",ttype:UNARY},{input:"\\mathit",tag:"mstyle",atname:"mathvariant",atval:"italic",ttype:UNARY},{input:"\\textit",tag:"mstyle",atname:"mathvariant",atval:"italic",ttype:UNARY},{input:"\\mathtt",tag:"mstyle",atname:"mathvariant",atval:"monospace",ttype:UNARY},{input:"\\texttt",tag:"mstyle",atname:"mathvariant",atval:"monospace",ttype:UNARY},{input:"\\mathsf",tag:"mstyle",atname:"mathvariant",atval:"sans-serif",ttype:UNARY},{input:"\\mathbb",tag:"mstyle",atname:"mathvariant",atval:"double-struck",ttype:UNARY,codes:bbb},{input:"\\mathcal",tag:"mstyle",atname:"mathvariant",atval:"script",ttype:UNARY,codes:cal},{input:"\\mathfrak",tag:"mstyle",atname:"mathvariant",atval:"fraktur",ttype:UNARY,codes:frk}];var names=[];var mathVariant="italic";if(!document.createElementNS){document.createElementNS=function(link,type){return this.createElement(type)}}function compareNames(x,y){if(x.input>y.input){return 1}else{return -1}}function refreshSymbols(){var len=symbols.length;symbols.sort(compareNames);for(var i=0;i<len;i++){names[i]=symbols[i].input}}function strim(str,n){return $.trim(str.slice(n))}function createElementXHTML(elType){return document.createElementNS("http://www.w3.org/1999/xhtml",elType)}function position(str,n){var pos=$.inArray(str,names.slice(n));if(pos<0){var narr=names.concat([str]);narr.sort();pos=$.inArray(str,narr.slice(n))}return n+pos}function getSymbol(str){var k=0;var j=0;var mk;var st;var tagst;var match="";var more=true;var sLen=str.length;for(var i=1;i<=sLen&&more;i++){st=str.slice(0,i);j=k;k=position(st,j);if(k<names.length&&str.slice(0,names[k].length)==names[k]){match=names[k];mk=k;i=match.length}more=k<names.length&&str.slice(0,names[k].length)>=names[k]}if(match!==""){return symbols[mk]}k=1;st=str.slice(0,1);if("0"<=st&&st<="9"){tagst="mn"}else{tagst=(("A">st||st>"Z")&&("a">st||st>"z")?"mo":"mi")}return{input:st,tag:tagst,output:st,ttype:CONST}}function parseSexpr(str){var symbol,node,result,result2,i,st,newFrag=document.createDocumentFragment();var ch,newst,text="";symbol=getSymbol(str);if(symbol===null||symbol.ttype==RIGHTBRACKET){return[null,str,null]}if(symbol.ttype==DEFINITION){str=symbol.output+strim(str,symbol.input.length);symbol=getSymbol(str);if(symbol===null||symbol.ttype==RIGHTBRACKET){return[null,str,null]}}if(symbol.ttype==CONST&&symbol.tag=="mi"&&str!=""){while(symbol.ttype==CONST&&symbol.tag=="mi"&&str!=""){text+=symbol.output;str=strim(str,symbol.input.length);symbol=getSymbol(str)}node=createMmlNode("mi",document.createTextNode(text));node.setAttribute("mathvariant",mathVariant);return[node,str,"mi"]}else{str=strim(str,symbol.input.length)}switch(symbol.ttype){case SPACE:node=createMmlNode(symbol.tag);node.setAttribute(symbol.atname,symbol.atval);return[node,str,symbol.tag];case UNDEROVER:return[createMmlNode(symbol.tag,document.createTextNode(symbol.output)),str,symbol.tag];case CONST:node=createMmlNode(symbol.tag,document.createTextNode(symbol.output));return[node,str,symbol.tag];case STRETCHY:node=createMmlNode(symbol.tag,document.createTextNode(symbol.output));if(symbol.input=="|"||symbol.input=="\\vert"||symbol.input=="\\|"||symbol.input=="\\Vert"){node.setAttribute("lspace","0em");node.setAttribute("rspace","0em")}node.setAttribute("maxsize",symbol.atval);if(symbol.rtag!==null){return[node,str,symbol.rtag]}else{return[node,str,symbol.tag]}break;case BIG:var atval=symbol.atval;symbol=getSymbol(str);if(symbol===null){return[null,str,null]}str=strim(str,symbol.input.length);node=createMmlNode(symbol.tag,document.createTextNode(symbol.output));node.setAttribute("minsize",atval);node.setAttribute("maxsize",atval);return[node,str,symbol.tag];case LEFTBRACKET:if(symbol.input=="\\left"){symbol=getSymbol(str);if(symbol!==null){if(symbol.input=="."){symbol.invisible=true}str=strim(str,symbol.input.length)}}result=parseExpr(str,true,false);if(symbol===null||(typeof symbol.invisible=="boolean"&&symbol.invisible)){node=createMmlNode("mrow",result[0])}else{node=createMmlNode("mo",document.createTextNode(symbol.output));node=createMmlNode("mrow",node);node.appendChild(result[0])}return[node,result[1],result[2]];case MATRIX:if(symbol.input=="\\begin{array}"){var mask="";symbol=getSymbol(str);str=$.trim(str);if(symbol===null){mask="l"}else{str=strim(str,symbol.input.length);if(symbol.input!="{"){mask="l"}else{do{symbol=getSymbol(str);if(symbol!==null){str=strim(str,symbol.input.length);if(symbol.input!="}"){mask=mask+symbol.input}}}while(symbol!==null&&symbol.input!==""&&symbol.input!="}")}}result=parseExpr("{"+str,true,true);node=createMmlNode("mtable",result[0]);mask=mask.replace(/l/g,"left ");mask=mask.replace(/r/g,"right ");mask=mask.replace(/c/g,"center ");node.setAttribute("columnalign",mask);node.setAttribute("displaystyle","false");return[node,result[1],null]}else{result=parseExpr("{"+str,true,true);node=createMmlNode("mtable",result[0]);node.setAttribute("columnalign","right center left");node.setAttribute("displaystyle","true");node=createMmlNode("mrow",node);return[node,result[1],null]}break;case TEXT:if(str.charAt(0)=="{"){i=str.indexOf("}")}else{i=0}if(i==-1){i=str.length}st=str.slice(1,i);node=createMmlNode(symbol.tag,document.createTextNode(st));newFrag.appendChild(node);str=strim(str,i+1);return[createMmlNode("mrow",newFrag),str,null];case UNARY:if(symbol.atname=="mathvariant"){mathVariant=symbol.atval}result=parseSexpr(str);if(result[0]===null){return[createMmlNode(symbol.tag,document.createTextNode(symbol.output)),str]}if(typeof symbol.func=="boolean"&&symbol.func){st=str.charAt(0);if(st=="^"||st=="_"||st==","){return[createMmlNode(symbol.tag,document.createTextNode(symbol.output)),str,symbol.tag]}else{node=createMmlNode("mrow",createMmlNode(symbol.tag,document.createTextNode(symbol.output)));node.appendChild(result[0]);return[node,result[1],symbol.tag]}}if(symbol.input=="\\sqrt"){return[createMmlNode(symbol.tag,result[0]),result[1],symbol.tag]}else{if(typeof symbol.acc=="boolean"&&symbol.acc){node=createMmlNode(symbol.tag,result[0]);var output=symbol.output;var node1=createMmlNode("mo",document.createTextNode(output));if(symbol.input=="\\vec"||symbol.input=="\\check"){node1.setAttribute("maxsize","1.2")}if(symbol.input=="\\underbrace"||symbol.input=="\\underline"){node1.setAttribute("accentunder","true")}else{node1.setAttribute("accent","true")}node.appendChild(node1);if(symbol.input=="\\overbrace"||symbol.input=="\\underbrace"){node.ttype=UNDEROVER}return[node,result[1],symbol.tag]}else{if(typeof symbol.codes!="undefined"){for(i=0;i<result[0].childNodes.length;i++){if(result[0].childNodes[i].nodeName=="mi"||result[0].nodeName=="mi"){st=(result[0].nodeName=="mi"?result[0].firstChild.nodeValue:result[0].childNodes[i].firstChild.nodeValue);newst="";for(var j=0;j<st.length;j++){ch=st.charCodeAt(j);if(ch>64&&ch<91){newst=newst+symbol.codes[ch-65]}else{if(ch>96&&ch<123){newst=newst+symbol.codes[ch-71]}}}if(result[0].nodeName=="mi"){result[0]=createMmlNode("mo").appendChild(document.createTextNode(newst))}else{result[0].replaceChild(createMmlNode("mo").appendChild(document.createTextNode(newst)),result[0].childNodes[i])}}}}node=createMmlNode(symbol.tag,result[0]);node.setAttribute(symbol.atname,symbol.atval);if(symbol.input=="\\scriptstyle"||symbol.input=="\\scriptscriptstyle"){node.setAttribute("displaystyle","false")}return[node,result[1],symbol.tag]}}break;case BINARY:result=parseSexpr(str);if(result[0]===null){return[createMmlNode("mo",document.createTextNode(symbol.input)),str,null]}result2=parseSexpr(result[1]);if(result2[0]===null){return[createMmlNode("mo",document.createTextNode(symbol.input)),str,null]}if(symbol.input=="\\root"||symbol.input=="\\stackrel"){newFrag.appendChild(result2[0])}newFrag.appendChild(result[0]);if(symbol.input=="\\frac"){newFrag.appendChild(result2[0])}return[createMmlNode(symbol.tag,newFrag),result2[1],symbol.tag];case INFIX:str=strim(str,symbol.input.length);return[createMmlNode("mo",document.createTextNode(symbol.output)),str,symbol.tag];default:return[createMmlNode(symbol.tag,document.createTextNode(symbol.output)),str,symbol.tag]}}function parseIexpr(str){var symbol,sym1,sym2,node,result,tag,underover;sym1=getSymbol(str);result=parseSexpr(str);node=result[0];str=result[1];tag=result[2];symbol=getSymbol(str);if(symbol.ttype==INFIX){str=strim(str,symbol.input.length);result=parseSexpr(str);if(result[0]===null){result[0]=createMmlNode("mo",document.createTextNode("\u25A1"))}str=result[1];tag=result[2];if(symbol.input=="_"||symbol.input=="^"){sym2=getSymbol(str);tag=null;underover=((sym1.ttype==UNDEROVER)||(node.ttype==UNDEROVER));if((symbol.input=="_"&&sym2.input=="^")||(symbol.input=="^"&&sym2.input=="_")){str=strim(str,sym2.input.length);var res2=parseSexpr(str);str=res2[1];tag=res2[2];node=createMmlNode((underover?"munderover":"msubsup"),node);if(symbol.input=="_"){node.appendChild(result[0]);node.appendChild(res2[0])}else{node.appendChild(res2[0]);node.appendChild(result[0])}}else{if(symbol.input=="_"){node=createMmlNode((underover?"munder":"msub"),node);node.appendChild(result[0])}else{node=createMmlNode((underover?"mover":"msup"),node);node.appendChild(result[0])}}node=createMmlNode("mrow",node)}else{node=createMmlNode(symbol.tag,node);if(symbol.input=="\\atop"||symbol.input=="\\choose"){node.setAttribute("linethickness","0ex")}node.appendChild(result[0]);if(symbol.input=="\\choose"){node=createMmlNode("mfenced",node)}}}return[node,str,tag]}function parseExpr(str,rightbracket,matrix){var symbol,node,result,i,tag,newFrag=document.createDocumentFragment();do{str=$.trim(str);result=parseIexpr(str);node=result[0];str=result[1];tag=result[2];symbol=getSymbol(str);if(node){if((tag=="mn"||tag=="mi")&&symbol!==null&&typeof symbol.func=="boolean"&&symbol.func){var space=createMmlNode("mspace");space.setAttribute("width","0.167em");node=createMmlNode("mrow",node);node.appendChild(space)}if(tag=="mstyle"){mathVariant="italic"}newFrag.appendChild(node)}}while((symbol.ttype!=RIGHTBRACKET)&&symbol!==null&&symbol.output!=="");tag=null;if(symbol.ttype==RIGHTBRACKET){if(symbol.input=="\\right"){str=strim(str,symbol.input.length);symbol=getSymbol(str);if(symbol!==null&&symbol.input=="."){symbol.invisible=true}if(symbol!==null){tag=symbol.rtag}}if(symbol!==null){str=strim(str,symbol.input.length)}var len=newFrag.childNodes.length;if(matrix&&len>0&&newFrag.childNodes[len-1].nodeName=="mrow"&&len>1&&newFrag.childNodes[len-2].nodeName=="mo"&&newFrag.childNodes[len-2].firstChild.nodeValue=="&"){var pos=[];var m=newFrag.childNodes.length;for(i=0;matrix&&i<m;i=i+2){pos[i]=[];node=newFrag.childNodes[i];for(var j=0;j<node.childNodes.length;j++){if(node.childNodes[j].firstChild&&node.childNodes[j].firstChild.nodeValue=="&"){pos[i][pos[i].length]=j}}}var row,frag,n,k,table=document.createDocumentFragment();for(i=0;i<m;i=i+2){row=document.createDocumentFragment();frag=document.createDocumentFragment();node=newFrag.firstChild;n=node.childNodes.length;k=0;for(j=0;j<n;j++){if(typeof pos[i][k]!="undefined"&&j==pos[i][k]){node.removeChild(node.firstChild);row.appendChild(createMmlNode("mtd",frag));k++}else{frag.appendChild(node.firstChild)}}row.appendChild(createMmlNode("mtd",frag));if(newFrag.childNodes.length>2){newFrag.removeChild(newFrag.firstChild);newFrag.removeChild(newFrag.firstChild)}table.appendChild(createMmlNode("mtr",row))}return[table,str]}if(typeof symbol.invisible!="boolean"||!symbol.invisible){node=createMmlNode("mo",document.createTextNode(symbol.output));newFrag.appendChild(node)}}return[newFrag,str,tag]}function createMmlNode(t,frag){var node=document.createElementNS("http://www.w3.org/1998/Math/MathML",t);if(frag){$(node).append(frag)}return node}var SVG,canvas;var collection=[];function createSVGElement(elType){return document.createElementNS("http://www.w3.org/2000/svg",elType)}function getSVGElement(id,el){var res={node:null,newEl:false};if(id){id=SVG.id+"_"+id;res.node=$("#"+id)[0]}if(!res.node){res.node=createSVGElement(el);if(id){res.node.id=id}res.newEl=true}return res}function openGroup(id,clear){var newEl=getSVGElement(id,"g");appendSVG(newEl);canvas=$("#"+SVG.id+"_"+id)[0];if(clear){$(canvas).empty()}}function closeGroup(){canvas=$("#"+SVG.id+"_Canvas")[0]}function appendSVG(elmt){if(elmt.newEl){$(canvas).append(elmt.node)}}function addButton(parent,text,title,func,id){var node=createElementXHTML("span");node.className="svgButton";node.title=title;node.onclick=func;if(id){node.id=id}$(node).append(text);$(node).css({paddingRight:"0.5em",paddingLeft:"0.5em",fontSize:"1em",fontFamily:"monospace",background:"blue",color:"yellow",cursor:"pointer"});$(node).mouseover(function(){$(this).css({background:"yellow",color:"blue"})});$(node).mouseout(function(){$(this).css({background:"blue",color:"yellow"})});$(parent).append(node);return parent}function pictureAttributes(){this.id=null;this.stroke="blue";this.strokewidth=1;this.strokeopacity=1;this.strokedasharray="none";this.fill="none";this.fillopacity=1;this.fixed=false;this.fontstyle="normal";this.fontfamily="serif";this.fontweight="normal";this.fontsize=12;this.fontstroke="none";this.fontstrokewidth=1;this.fontstrokeopacity=1;this.fontstrokedasharray="none";this.fontfill="black";this.fontfillopacity=1;this.sector=false;this.largearc=0;this.marker="o";this.orient="auto";this.size=8;this.units="userSpaceOnUse";this.markerstroke="blue";this.markerstrokewidth=1;this.markerstrokeopacity=1;this.markerstrokedasharray="none";this.markerfill="none";this.markerfillopacity=1;this.sweep=0;this.rx=0;this.ry=0;this.closed=false;this.curve="";this.direction=[1,0];this.ticklabels="";this.pos="";this.points=200;this.backgroundcolor="none";this.backgroundopacity=1}function pictureObject(){this.id=null;this.src="";this.width=320;this.height=null;this.factor=1;this.xmin=-5;this.xmax=5;this.ymin=null;this.ymax=null;this.xunitlength=null;this.yunitlength=null;this.origin=[0,0];this.mouse=[null,null];this.coords="cartesian";this.drag=null;this.pan=true;this.locked=false;this.attr=new pictureAttributes()}function drawPicture(){$(canvas).empty();$("#"+SVG.id+" .svgMarker").remove();SVG.attr=new pictureAttributes();try{this.code=function(){with(Math){eval(SVG.src)}}();this.code=null}catch(err){var errstr;if(typeof err=="object"){errstr=err.name+" "+err.message+" "+err.number+" "+err.description}else{errstr=err}alert(errstr+"\n"+SVG.src)}collection[SVG.id]=SVG}function setOptions(atr){for(var i in atr){SVG.attr[i]=atr[i]}}function getOptions(attr,options,prefix){var pref=prefix||"";if(typeof attr=="string"){return(options[pref+attr]==undefined?SVG.attr[pref+attr]:options[pref+attr])}else{var i,newAttr={},len=attr.length,item;for(i=0;i<len;i++){item=attr[i];newAttr[item]=options[pref+item]==undefined?SVG.attr[pref+item]:options[pref+item]}return newAttr}}function setAction(evt,fn,id){if(!$.isFunction(fn)){return}var node=id?$("#"+SVG.id+"_"+id):$("#"+SVG.id);$(node).bind(evt,fn)}function getAngle(p){p=p||[0,0];var res=Math.atan2(SVG.mouse[1]-p[1],SVG.mouse[0]-p[0]);res=(res<0)?res+2*Math.PI:res;return res}function getDistance(p){p=p||[0,0];return Math.sqrt(Math.pow(SVG.mouse[0]-p[0],2)+Math.pow(SVG.mouse[1]-p[1],2))}function updateButton(){var obj=$("#SVGtoolbar #SVGupdateButton");if(obj.text()=="Edit"){obj.text("Update");obj.attr("title","Update picture");$("#SVGsrc").val(SVG.src).css("display","block")}else{SVG.src=$("#SVGsrc").val();drawPicture()}}function closeEditor(){$("#SVGtoolbar").slideUp();$("#SVGsrc").val("");SVG.locked=false}function switchTo(evt){var name=evt.currentTarget.id;if(SVG.id==name||SVG.locked){return false}SVG=collection[name];canvas=$("#"+SVG.id+"_Canvas")[0];return false}function onWheel(evt){if(SVG.locked){return false}evt=evt||window.event;var factor=1;evt.preventDefault();evt.stopPropagation();if(evt.wheelDelta){factor=(evt.wheelDelta>0)?0.8:1.25}else{if(evt.detail){factor=(evt.detail<0)?0.8:1.25}}if(evt.altKey){resize(factor)}else{zoom(factor)}return false}function onClick(evt){if(SVG.locked){return false}if(evt.button===0){if(evt.shiftKey){$("#SVGtoolbar #SVGupdateButton").text("Update");$("#SVGsrc").val(SVG.src);$("#SVGtoolbar").css({top:evt.pageY,left:evt.pageX}).slideDown();SVG.locked=true;evt.stopImmediatePropagation()}else{if(SVG.pan){SVG.drag=[evt.clientX,evt.clientY];document.body.style.cursor="move"}}}return false}function onDrop(evt){if(SVG.drag==null){return false}document.body.style.cursor="default";var xlen=(SVG.drag[0]-evt.clientX)/SVG.xunitlength;var ylen=(-SVG.drag[1]+evt.clientY)/SVG.yunitlength;SVG.drag=null;if(xlen!=0||ylen!=0){setScales([SVG.xmin+xlen,SVG.xmax+xlen,SVG.ymin+ylen,SVG.ymax+ylen])}return false}function setScales(scales){if(scales){SVG.xmin=scales[0];SVG.xmax=scales[1];SVG.ymin=scales[2];SVG.ymax=scales[3]}SVG.xunitlength=SVG.width/(SVG.xmax-SVG.xmin);SVG.yunitlength=SVG.height/(SVG.ymax-SVG.ymin);SVG.origin=[-SVG.xmin*SVG.xunitlength,-SVG.ymin*SVG.yunitlength];drawPicture()}function getScales(scales){scales=scales||[];var res=[null,null,null,null,0];if(scales.length==0){res[0]=SVG.xmin;res[1]=SVG.xmax}if(scales.length>1){if(typeof scales[0]=="number"&&typeof scales[1]=="number"&&scales[1]>scales[0]){res[0]=scales[0];res[1]=scales[1];res[4]=4}else{res[0]=SVG.xmin;res[1]=SVG.xmax}}if(scales.length==4){if(typeof scales[2]=="number"&&typeof scales[3]=="number"&&scales[3]>scales[2]){res[2]=scales[2];res[3]=scales[3];res[4]+=8}}return res}function resize(factor){SVG.factor=(SVG.factor*factor).toFixed(3);SVG.width/=factor;SVG.height/=factor;var picture=$("#"+SVG.id);picture.attr("width",SVG.width);picture.attr("height",SVG.height);var parent=picture[0].parentNode;if(parent.nodeName=="DIV"){parent.style.width=SVG.width+"px";parent.style.height=SVG.height+"px"}var node=$("#"+SVG.id+"ClipPath")[0].firstChild;$(node).attr("d","M0,0 "+SVG.width+",0 "+SVG.width+","+SVG.height+" 0,"+SVG.height);setScales()}function zoom(factor,center){var px,py;if(center){px=(SVG.xmax+SVG.xmin)*0.5;py=(SVG.ymax+SVG.ymin)*0.5}else{px=SVG.mouse[0];py=SVG.mouse[1]}SVG.factor=(SVG.factor*factor).toFixed(3);var dx=(SVG.xmax-SVG.xmin)*factor;var dy=(SVG.ymax-SVG.ymin)*factor;var xmin=(1-factor)*px+factor*SVG.xmin;var ymin=(1-factor)*py+factor*SVG.ymin;setScales([xmin,xmin+dx,ymin,ymin+dy])}function updateCartesianCoord(){if(!SVG.locked){$("#"+SVG.id+"_Coords").text("("+SVG.mouse[0].toFixed(2)+", "+SVG.mouse[1].toFixed(2)+")")}return false}function updatePolarCoord(){if(!SVG.locked){$("#"+SVG.id+"_Coords").text("("+getDistance().toFixed(2)+", "+getAngle().toFixed(2)+")")}return false}function updatePosition(evt){var off=$(evt.currentTarget.parentNode).offset();SVG.mouse[0]=(evt.pageX-off.left-SVG.origin[0])/SVG.xunitlength;SVG.mouse[1]=(SVG.height-SVG.origin[1]-evt.pageY+off.top)/SVG.yunitlength;return false}function removeCoord(){$("#"+SVG.id+"_Coords").text("");return false}function tracker(pos,options){options=options||{};var coords=options.coords||SVG.coords;var func=(coords=="polar")?updatePolarCoord:updateCartesianCoord;options.id="Coords";options.fixed=true;text(pos,"",options);setAction("mousemove",func);setAction("mouseout",removeCoord)}function exportSVG(){var svg="<?xml version='1.0' encoding='UTF-8' standalone='no'?>\n";svg+=$("#"+SVG.id).parent().html();svg=svg.replace(/ /g,"");svg=svg.replace(/><(?!\/)/g,">\n<");$("#SVGtoolbar #SVGupdateButton").text("Edit").attr("title","Edit script");$("#SVGsrc").val(svg).css("display","block")}function toSVG(p){var x=p[0]*SVG.xunitlength+SVG.origin[0];var y=SVG.height-p[1]*SVG.yunitlength-SVG.origin[1];return[x,y]}function toSVGPair(p){var q=toSVG(p);return q[0]+" "+q[1]}function setStrokeAndFill(node,options,prefix){var attributes=["stroke","strokewidth","strokedasharray","strokeopacity","fill","fillopacity"];var attr=getOptions(attributes,options,prefix);var elem=$(node);elem.attr("stroke",attr.stroke);elem.attr("stroke-width",attr.strokewidth/SVG.factor);elem.attr("stroke-dasharray",attr.strokedasharray);elem.attr("stroke-opacity",attr.strokeopacity);elem.attr("fill",attr.fill);elem.attr("fill-opacity",attr.fillopacity)}function button(p,q,txt,action,options){options=options||{};options.id=(options.id||Math.randomString(8));rect(p,q,options);setAction("click",action,options.id);options.fill=null;options.fillopacity=1;options.id+="_t";text([(p[0]+q[0])*0.5,(p[1]+q[1])*0.5],txt,options);setAction("click",action,options.id)}function setMarkers(obj,options){var markerChars="o*sSx+<>|";var attributes=["marker","size","units","orient","markerstroke","markerstrokewidth","markerstrokeopacity"];var attr=getOptions(attributes,options);var node,node2,i,id,pos=["marker-start","marker-mid","marker-end"];var lim=attr.marker.length;for(i=0;i<lim;i++){var type=attr.marker.charAt(i);if(type=="-"||markerChars.indexOf(type)<0){continue}id=(options.id||Math.randomString(8))+"Marker_"+markerChars.indexOf(type);node=$("#"+SVG.id+"_"+id);if(node.length===0){node=$(getSVGElement(id,"marker").node);node.attr("class","svgMarker");node.attr("viewBox","0 0 10 10");node.attr("refX",5);node.attr("refY",5);node.attr("orient",attr.orient);node.attr("markerUnits",attr.units);switch(type){case"*":case"o":node2=$(createSVGElement("circle"));node2.attr("cx",5);node2.attr("cy",5);node2.attr("r",4);break;case">":node2=$(createSVGElement("path"));node2.attr("d","M0 0 L10 5 L0 10 z");node.attr("refX",10);break;case"<":node2=$(createSVGElement("path"));node2.attr("d","M10 0 L10 10 L0 5 z");node.attr("refX",0);break;case"x":node2=$(createSVGElement("path"));node2.attr("d","M0 0 L10 10 M0 10 L10 0");break;case"+":node2=$(createSVGElement("path"));node2.attr("d","M5 0 L5 10 M0 5 L10 5");break;case"|":node2=$(createSVGElement("path"));node2.attr("d","M5 0 L5 10");break;case"S":case"s":node2=$(createSVGElement("rect"));node2.attr("x",0);node2.attr("y",0);node2.attr("width",10);node2.attr("height",10)}setStrokeAndFill(node2,options,"marker");node2.attr("stroke-width",attr.markerstrokewidth);if("*<>S".indexOf(type)>-1){node2.attr("fill",attr.markerstroke);node2.attr("fill-opacity",attr.markerstrokeopacity)}node.append(node2);$("#"+SVG.id+"_Defs").append(node)}node.attr("markerWidth",attr.size/SVG.factor);node.attr("markerHeight",attr.size/SVG.factor);$(obj).attr(pos[i],"url(#"+SVG.id+"_"+id+")")}}function setLabels(p,options){var i,point=[0,0],pos;var label=(typeof options.label=="string")?[options.label]:options.label;var labelpos=getOptions("pos",options);labelpos=(typeof labelpos=="string")?[labelpos]:labelpos;var poslen=labelpos.length;var size=options.size||SVG.attr.size;var dx=(0.5*size/SVG.xunitlength)/SVG.factor;var dy=(0.5*size/SVG.yunitlength)/SVG.factor;for(i=0;i<label.length;i++){options.isLabel="_label"+i;point[0]=p[i][0];point[1]=p[i][1];pos=(poslen>i)?labelpos[i].toUpperCase():pos;if(/E/.test(pos)){point[0]+=dx}if(/W/.test(pos)){point[0]-=dx}if(/N/.test(pos)){point[1]+=dy}if(/S/.test(pos)){point[1]-=dy}options.pos=pos;text(point,label[i],options)}}function line(p,q,options){options=options||{};options.closed=false;options.curve="";path([p,q],options)}function dot(p,options){options=options||{};var direction=getOptions("direction",options);var q=[p[0]+direction[0]/SVG.xunitlength,p[1]+direction[1]/SVG.yunitlength];var st="M"+toSVGPair(p)+" "+toSVGPair(q);var elmt=getSVGElement(options.id,"path");var elem=$(elmt.node);elem.attr("d",st);elem.attr("stroke","none");setMarkers(elem,options);appendSVG(elmt);if(options.label){setLabels([p],options)}}function path(list,options,append){options=options||{};var i,elmt=getSVGElement(options.id,"path");var attr=getOptions(["curve","closed"],options);var len=list.length;if(len>0){var node=$(elmt.node);var st=(append&&!elmt.newEl)?elmt.node.getAttribute("d"):"";st+="M"+toSVGPair(list[0])+" "+attr.curve;for(i=1;i<len;i++){st+=toSVGPair(list[i])+" "}if(attr.closed){st+="Z"}node.attr("d",st);setStrokeAndFill(node,options);if(options.marker){setMarkers(node,options)}appendSVG(elmt);if(options.label){setLabels(list,options)}}}function rotate(id,angle,options){if(!id||!angle){return}var node=$("#"+SVG.id+"_"+id)[0];if(node){options=options||{};var center=options.center?toSVG(options.center):SVG.origin;angle=-angle*180/Math.PI;var transform=node.getAttribute("transform")||"";transform="rotate("+angle+" "+center+") "+(options.replace?"":transform);$(node).attr("transform",transform)}}function translate(id,delta,options){if(!id||!delta){return}var node=$("#"+SVG.id+"_"+id)[0];if(node){options=options||{};delta=toSVG(delta);var transform=node.getAttribute("transform")||"";transform="translate("+(delta[0]-SVG.origin[0])+" "+(SVG.origin[1]+delta[1]-SVG.height)+") "+(options.replace?"":transform);$(node).attr("transform",transform)}}function curve(list,options){options=options||{};options.curve=options.curve||"T";path(list,options)}function circle(center,radius,options){ellipse(center,radius,radius,options)}function loop(p,options){options=options||{};var d=options.direction||[1,0];options.curve="C";options.closed=false;path([p,[p[0]+d[0],p[1]+d[1]],[p[0]-d[1],p[1]+d[0]],p],options)}function arc(options){options=options||{};var start=options.start;var end=options.end;var center=options.center;var startangle=options.startangle;var endangle=options.endangle;var st="M",elmt=getSVGElement(options.id,"path");var attr=getOptions(["largearc","sweep","closed","sector"],options);var radius=options.radius;if(center!=null&&startangle!=null&&endangle!=null&&radius!=null){start=[radius*Math.cos(startangle)+center[0],radius*Math.sin(startangle)+center[1]];end=[radius*Math.cos(endangle)+center[0],radius*Math.sin(endangle)+center[1]]}if(start==null||end==null){return}if(!radius){var v=[end[0]-start[0],end[1]-start[1]];radius=Math.sqrt(v[0]*v[0]+v[1]*v[1])}if(attr.sector){st+=toSVGPair(center)+" "}st+=toSVGPair(start)+" A"+radius*SVG.xunitlength+","+radius*SVG.yunitlength+" 0 "+attr.largearc+","+attr.sweep+" "+toSVGPair(end);if(attr.sector||attr.closed){st+=" z"}var node=$(elmt.node);node.attr("d",st);setStrokeAndFill(node,options);if(options.marker){setMarkers(node,options)}appendSVG(elmt);if(options.label){setLabels([start,end],options)}}function sector(options){if(!options.center||!options.startangle||!options.endangle||!options.radius){return}options.sector=true;arc(options)}function ellipse(center,rx,ry,options){options=options||{};var elmt=getSVGElement(options.id,"ellipse");center=toSVG(center);var node=$(elmt.node);node.attr("cx",center[0]);node.attr("cy",center[1]);node.attr("rx",rx*SVG.xunitlength);node.attr("ry",ry*SVG.yunitlength);setStrokeAndFill(node,options);appendSVG(elmt)}function polygon(list,options){options=options||{};options.closed=true;path(list,options)}function rect(p,q,options){options=options||{};var elmt=getSVGElement(options.id,"rect");var attr=getOptions(["rx","ry"],options);var node=$(elmt.node);node.attr("x",toSVG(p)[0]);node.attr("y",toSVG(q)[1]);node.attr("width",(q[0]-p[0])*SVG.xunitlength);node.attr("height",(q[1]-p[1])*SVG.yunitlength);node.attr("rx",attr.rx*SVG.xunitlength);node.attr("ry",attr.ry*SVG.yunitlength);setStrokeAndFill(node,options);appendSVG(elmt)}function text(p,st,options){options=options||{};var id=options.id;var attr=getOptions(["fontstyle","fontfamily","fontweight","fontfill","fontsize","fixed","pos"],options);if(id&&options.isLabel){id+=options.isLabel}var pos=attr.pos.toUpperCase();if(!attr.fixed){attr.fontsize/=SVG.factor}var elem,node,dx,dy,latex=false,str=$.trim(st.toString()),q=toSVG(p);if(str.charAt(0)=="$"){str=str.substr(1,str.length-2);latex=true}if(latex){if(p[0]>SVG.xmax||p[0]<SVG.xmin||p[1]>SVG.ymax||p[1]<SVG.ymin){return}node=createElementXHTML("div");node.style.position="absolute";node.style.left="-1000px";node.style.top="-1000px";$("body").append(node);var math=MSVG.parseMath(str,true,attr.fontsize+"px",attr.fontfill);var mathNode=$(node);mathNode.append($(math).clone());dx=-node.offsetWidth/2;dy=-node.offsetHeight/2;if(/N/.test(pos)){dy=-node.offsetHeight}if(/S/.test(pos)){dy=0}if(/E/.test(pos)){dx=0}if(/W/.test(pos)){dx=-node.offsetWidth}var width=mathNode.width(),height=mathNode.height();mathNode.remove();q[0]+=dx;q[1]+=dy;var elmt=getSVGElement(id,"foreignObject");elem=$(elmt.node);elem.empty().append(math);elem.attr("width",width);elem.attr("height",height)}else{var baseline="middle",textanchor="middle";if(/E/.test(pos)){textanchor="start"}if(/W/.test(pos)){textanchor="end"}if(/N/.test(pos)){baseline="text-after-edge"}if(/S/.test(pos)){baseline="text-before-edge"}var elmt=getSVGElement(id,"text");elem=$(elmt.node);elem.empty().text(str);elem.attr("font-style",attr.fontstyle);elem.attr("font-family",attr.fontfamily);elem.attr("font-weight",attr.fontweight);elem.attr("font-size",attr.fontsize);elem.attr("text-anchor",textanchor);elem.attr("dominant-baseline",baseline);setStrokeAndFill(elem,options,"font")}elem.attr("x",q[0]);elem.attr("y",q[1]);appendSVG(elmt)}function image(url,options){options=options||{};var elmt=getSVGElement(options.id,"image");var elem=$(elmt.node);var height=options.height?options.height/SVG.factor:SVG.height;var width=options.width?options.width/SVG.factor:SVG.width;var origin=toSVG(options.origin||[SVG.xmin,SVG.ymin]);var pos=(options.pos||"").toUpperCase();var x=origin[0]-width*0.5;var y=origin[1]-height*0.5;if(/N/.test(pos)){y-=height*0.5}if(/S/.test(pos)){y+=height*0.5}if(/E/.test(pos)){x+=width*0.5}if(/W/.test(pos)){x-=width*0.5}elem.attr("x",x);elem.attr("y",y);elem.attr("width",width);elem.attr("height",height);elem.attr("preserveAspectRatio","none");elmt.node.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",url);appendSVG(elmt)}function grid(options){options=options||{};var dx,dy,x,y,k;var orig=options.origin||[0,0];var id=options.id||"Grid";options.stroke=options.stroke||"grey";options.strokewidth=(options.strokewidth||SVG.attr.strokewidth*0.5);var coords=options.coords||SVG.coords;var lim=getScales(options.scales);openGroup(id,true);lim[2]=(typeof lim[2]=="number")?lim[2]:SVG.ymin;lim[3]=(typeof lim[3]=="number")?lim[3]:SVG.ymax;if(coords=="polar"){dx=options.dx||1;dy=options.dy||3;var limit=Math.max(Math.abs(lim[0]),Math.abs(lim[1]),Math.abs(lim[2]),Math.abs(lim[3]));for(x=dx;x<limit;x+=dx){circle(orig,x,options)}if(dy>1){for(y=1;y<dy;y++){k=Math.tan(y*Math.PI/(2*dy));line([lim[0],(lim[0]-orig[0])*k+orig[1]],[SVG.xmax,(lim[1]-orig[0])*k+orig[1]],options);line([lim[0],-(lim[0]-orig[0])*k+orig[1]],[SVG.xmax,-(lim[1]-orig[0])*k+orig[1]],options)}}}else{dx=options.dx||1;dy=options.dy||dx;for(x=orig[0];x<SVG.xmax;x+=dx){if(x>lim[0]&&x<lim[1]){line([x,lim[2]],[x,lim[3]],options)}}for(x=orig[0]-dx;x>SVG.xmin;x-=dx){if(x>lim[0]&&x<lim[1]){line([x,lim[2]],[x,lim[3]],options)}}for(y=orig[1];y<SVG.ymax;y+=dy){if(y>lim[2]&&y<lim[3]){line([lim[0],y],[lim[1],y],options)}}for(y=orig[1]-dy;y>SVG.ymin;y-=dy){if(y>lim[2]&&y<lim[3]){line([lim[0],y],[lim[1],y],options)}}}closeGroup()}function axes(options){options=options||{};options.marker="-|"+(options.marker?options.marker.charAt(0):"-");var i,x,y,start,stop,label;var dx=options.dx||1;var dy=options.dy||dx;var id=options.id||"Axes";var fontsize=getOptions("fontsize",options);var coords=options.coords||SVG.coords;var orig=(coords=="polar")?[0,0]:(options.origin||[0,0]);var ddx=options.decx||Math.max(0,-Math.floor(Math.log(dx)/Math.log(10)));var ddy=options.decy||Math.max(0,-Math.floor(Math.log(dy)/Math.log(10)));options.stroke=options.stroke||"black";options.strokewidth=(options.strokewidth||SVG.attr.strokewidth*0.5);options.markerstroke=options.stroke;options.markerstrokewidth=options.strokewidth;openGroup(id,true);var lim=getScales(options.scales);lim[2]=lim[2]||SVG.ymin;lim[3]=lim[3]||SVG.ymax;if($.isArray(options.xticks)){var xticks=options.xticks.sort();var list2=[[lim[0],orig[1]]];label=[""];for(i=0;i<xticks.length;i++){list2.push([xticks[i],orig[1]]);label.push(String(xticks[i].toFixed(ddx)))}list2.push([lim[1],orig[1]]);label.push("")}else{var list1=[],label1=[];var list2=[],label2=[];start=SVG.xmin+0.25*dx;stop=SVG.xmax-0.25*dx;i=1;var cand,leftExit=0,rightExit=0;while(leftExit*rightExit==0){cand=orig[0]+i*dx;if(cand>start){if(cand<stop){list1.push([cand,orig[1]]);label1.push(String(cand.toFixed(ddx)))}else{rightExit=1}}cand=orig[0]-i*dx;if(cand<stop){if(cand>start){list2.push([cand,orig[1]]);label=(coords=="polar")?"":cand.toFixed(ddx);label2.push(String(label))}else{leftExit=1}}i++}list1.push([lim[1],orig[1]]);label1.push("");list2.push([lim[0],orig[1]]);label2.push("");list2.reverse();list2=list2.concat(list1);label2.reverse();label=label2.concat(label1)}if(options.ticklabels!=false){options.label=label;options.pos="S"}path(list2,options);if($.isArray(options.yticks)){var yticks=options.yticks.sort();var list2=[[orig[0],lim[2]]];label=[""];for(i=0;i<yticks.length;i++){list2.push([orig[0],yticks[i]]);label.push(String(yticks[i].toFixed(ddy)))}list2.push([orig[0],lim[3]]);label.push("")}else{list1=[],label1=[];list2=[];label2=[];start=SVG.ymin+0.25*dy;stop=SVG.ymax-0.25*dy;i=1;leftExit=0;rightExit=0;while(leftExit*rightExit==0){cand=orig[1]+i*dy;if(cand>start){if(cand<stop){list1.push([orig[0],cand]);label1.push(String(cand.toFixed(ddy)))}else{rightExit=1}}cand=orig[1]-i*dy;if(cand<stop){if(cand>start){list2.push([orig[0],cand]);label=(coords=="polar")?"":cand.toFixed(ddy);label2.push(String(label))}else{leftExit=1}}i++}list1.push([orig[0],lim[3]]);label1.push("");list2.push([orig[0],lim[2]]);label2.push("");list2.reverse();list2=list2.concat(list1);label2.reverse();label=label2.concat(label1)}if(options.ticklabels!=false){options.label=label;options.pos="W"}options.stroke=options.markerstroke;path(list2,options);closeGroup()}function list(fun,tmin,tmax,options){var inc=(tmax-tmin)/getOptions("points",options);if(inc<=0||fun.length==0){return}var t,pth,g=[],xt,yt;for(t=1;t>=0;t--){if($.isFunction(fun[t])){g[t]=fun[t]}else{if(typeof fun[t]=="string"){with(Math){eval("g["+t+"] = function(x){return "+fun[t]+"}")}}else{return}}}if(g.length<2){return}pth=[];for(t=tmin;t<=tmax;t+=inc){xt=g[0](t);yt=g[1](t);if(isFinite(xt)&&isFinite(yt)){pth[pth.length]=[xt,yt]}}return pth}function plot(fun,options){options=options||{};var append,pth,steps=options.steps||[];var n_steps=steps.length;options.closed=false;options.curve="";var xmin=(options.min==null)?SVG.xmin:Math.max(SVG.xmin,options.min);var xmax=(options.max==null)?SVG.xmax:Math.min(SVG.xmax,options.max);if(n_steps===0){pth=list(["x",fun],xmin,xmax,options);if(pth){path(pth,options)}}else{options.id=options.id||Math.randomString(6);steps.sort();var steps_a=[];steps_a.push(xmin);for(i=0;i<n_steps;i++){if(steps[i]>xmin&&steps[i]<xmax){steps_a.push(steps[i])}}steps_a.push(xmax);n_steps=steps_a.length-1;for(i=0;i<n_steps;i++){xmax=steps_a[i+1];xmin=steps_a[i];pth=list(["x",fun],xmin,xmax,options);append=(i>0);if(pth){path(pth,options,append)}}}}function area(fun1,fun2,options){options=options||{};options.curve="";options.closed=true;var xmin=(options.min==null)?SVG.xmin:options.min;var xmax=(options.max==null)?SVG.xmax:options.max;var pth1=list(["x",fun1],xmin,xmax,options);var pth2=list(["x",fun2],xmin,xmax,options);if(pth1&&pth2){pth1=pth1.concat(pth2.reverse());path(pth1,options)}}function polarPlot(fun,options){var g1,g2;if(typeof fun=="string"){with(Math){eval("g1 = function(x){return ("+fun+")*cos(x)}");eval("g2 = function(x){return ("+fun+")*sin(x)}")}}else{if($.isFunction(fun)){with(Math){eval("g1 = function(x){return fun(x)*cos(x)}");eval("g2 = function(x){return fun(x)*sin(x)}")}}}parametricPlot(g1,g2,options)}function parametricPlot(fun1,fun2,options){options=options||{};options.closed=false;options.curve="";var xmin=(options.min==null)?0:options.min;var xmax=(options.max==null)?2*Math.PI:options.max;var pth=list([fun1,fun2],xmin,xmax,options);if(pth){path(pth,options)}}function slopeField(fun,options){options=options||{};var g=fun;if(typeof fun=="string"){with(Math){eval("g = function(x,y){return "+fun+"}")}}var gxy,x,y,u,v,dz;var dx=(options.dx==null)?1:options.dx;var dy=(options.dy==null)?1:options.dy;dz=Math.sqrt(dx*dx+dy*dy)/6;var xmin=Math.ceil(SVG.xmin/dx);var ymin=Math.ceil(SVG.ymin/dy);for(x=xmin;x<=SVG.xmax;x+=dx){for(y=ymin;y<=SVG.ymax;y+=dy){gxy=g(x,y);if(!isNaN(gxy)){if(Math.abs(gxy)=="Infinity"){u=0;v=dz}else{u=dz/Math.sqrt(1+gxy*gxy);v=gxy*u}line([x-u,y-v],[x+u,y+v],options)}}}}return{showFormulaOnMouseOver:false,latexImages:false,latexConverter:"http://chart.apis.google.com/chart?cht=tx&chs=1x0&chf=bg,s,FFFFFF00&chco=000000&chl=",mathColor:"",mathFontSize:"",mathFontFamily:"",define:function(oldstr,newstr){if(MSVG.latexImages){return}if((typeof oldstr)=="string"){oldstr=[oldstr];newstr=[newstr]}var i,len=oldstr.length;if(len!=newstr.length){return}for(i=0;i<len;i++){symbols=symbols.concat([{input:"\\"+oldstr[i],tag:"mo",output:newstr[i],ttype:DEFINITION}])}refreshSymbols()},parseMath:function(str,displaystyle,size,color){if(str===null){return null}str=str.replace(/_([^\{])/gm,"_{$1}");str=str.replace(/\^([^\{])/gm,"^{$1}");var frag=parseExpr(str.replace(/^\s+/g,""),false,false)[0];var node=createMmlNode("mstyle",frag);$(node).attr({displaystyle:displaystyle,mathcolor:color||MSVG.mathColor,mathsize:size||MSVG.mathFontSize,fontfamily:MSVG.mathFontFamily});node=createMmlNode("math",node);if(MSVG.showFormulaOnMouseOver){$(node).attr({title:str.replace(/\s+/g," ")})}return node},parseMathExternal:function(str,displaystyle,size,color){if(str===null){return null}var node=createElementXHTML("img");var snip=MSVG.latexConverter+str;$(node).attr({src:snip});if(MSVG.showFormulaOnMouseOver){$(node).attr({title:str.replace(/\s+/g," ")})}return node},generic:function(){if(!$.browser.mozilla){MSVG.latexImages=true}if(MSVG.latexImages){MSVG.parseMath=MSVG.parseMathExternal}else{refreshSymbols()}if(!document.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure","1.1")){MSVG.initPictures=MSVG.removePictures}},removePictures:function(obj){var pictures=obj?$(obj):$(".SVGgraph");$(pictures).each(function(){var that=$(this);this.id=null;that.empty();that.css({color:"red",background:"yellow"});that.text("Missing picture: your browser does not support inline SVG");window.setTimeout(function(){that.remove()},10000)})},initPictures:function(obj){var options,scales,qnode,node,node2,status,offline,elem;var pictures=obj?$(obj):$(".SVGgraph");$(pictures).each(function(){var that=$(this);offline=!(this.nodeName=="SPAN");status=0;SVG=new pictureObject();options=$(this).attr("options");that.removeAttr("id");if(options){with(Math){eval("options={"+options+"}")}setOptions(options)}else{options={}}if(options.pan==false){SVG.pan=false}SVG.coords=options.coords||SVG.coords;SVG.src=$.trim($(this).text());that.empty();if(typeof options.width=="number"&&options.width>0){SVG.width=options.width;status+=1}if(typeof options.height=="number"&&options.height>0){SVG.height=options.height;status+=2}var scales=getScales(options.scales);SVG.xmin=scales[0];SVG.xmax=scales[1];SVG.ymin=scales[2];SVG.ymax=scales[3];status+=scales[4];SVG.height=options.height;if(status%4!=0){SVG.width=options.width}if(!SVG.width){SVG.width=1.6*SVG.height}else{if(!SVG.height){SVG.height=0.625*SVG.width}}if(status<8){SVG.ymax=0.5*SVG.height*(SVG.xmax-SVG.xmin)/SVG.width;SVG.ymin=-SVG.ymax}else{if(status<12){SVG.xmax=0.5*SVG.width*(SVG.ymax-SVG.ymin)/SVG.height;SVG.xmin=-SVG.xmax}}if(status==12||status==13){SVG.height=SVG.width*(SVG.ymax-SVG.ymin)/(SVG.xmax-SVG.xmin)}else{if(status==14){SVG.width=SVG.height*(SVG.xmax-SVG.xmin)/(SVG.ymax-SVG.ymin)}}SVG.id=Math.randomString(16);qnode=createSVGElement("svg");elem=$(qnode);qnode.id=SVG.id;elem.attr("xmlns","http://www.w3.org/2000/svg");elem.attr("xmlns:ev","http://www.w3.org/2001/xml-events");elem.attr("xmlns:xlink","http://www.w3.org/1999/xlink");elem.attr("version","1.1");elem.attr("baseProfile","full");if(options.border){elem.attr("style","border:"+options.border)}node=createSVGElement("clipPath");node.id=SVG.id+"ClipPath";node2=createSVGElement("path");$(node).append(node2);elem.attr("clip-path","url(#"+SVG.id+"ClipPath)");node2=createSVGElement("defs");node2.id=SVG.id+"_Defs";$(node2).append(node);$(qnode).append(node2);node=createSVGElement("rect");elem=$(node);elem.attr("x","0");elem.attr("y","0");elem.attr("width","100%");elem.attr("height","100%");elem.attr("fill","none");elem.attr("pointer-events","all");$(qnode).append(node);node2=createSVGElement("g");node2.id=SVG.id+"_Canvas";$(qnode).append(node2);that.append(qnode);this.style.position="relative";if(offline){setAction("mousemove",updatePosition);if(SVG.pan){setAction("mouseup",onDrop)}if(window.addEventListener){var evt=$.browser.mozilla?"DOMMouseScroll":"mousewheel";qnode.addEventListener(evt,onWheel,false)}}setAction("mousedown",onClick);setAction("mouseover",switchTo);canvas=$("#"+SVG.id+"_Canvas")[0];resize(1)});if(pictures.length>0&&$("#SVGtoolbar").length===0){node=createElementXHTML("span");node.id="SVGtoolbar";node.style.position="absolute";node.style.textAlign="left";node.style.zIndex=10;node=addButton(node,"X","Close editor",closeEditor);node=addButton(node,"Update","Update picture",updateButton,"SVGupdateButton");node=addButton(node,"SVG","View SVG code",exportSVG);node=addButton(node,"-","Zoom out",function(){zoom(1.25,true)});node=addButton(node,"+","Zoom in",function(){zoom(0.8,true)});node=addButton(node,"\u2191","Enlarge picture",function(){resize(0.8)});node=addButton(node,"\u2193","Reduce picture",function(){resize(1.25)});$(node).append("<br />");node2=createElementXHTML("textarea");$(node2).attr({id:"SVGsrc",rows:8,cols:60});$(node).append(node2);$(node).hide();$("body").append(node)}}}}(jQuery);
//}}}
/***
!~TiddlyWiki formatters
***/
//{{{
if(!version.extensions.MathSVGPlugin) { //# ensure that the plugin is only installed once
version.extensions.MathSVGPlugin = {installed: true};
MSVG.generic();
config.formatterHelpers.MathSVGHelper = function(w) {
if(MSVG.noMathTag && jQuery.inArray(MSVG.noMathTag,w.tiddler.tags)>-1) return;
this.lookaheadRegExp.lastIndex = w.matchStart;
var lookaheadMatch = this.lookaheadRegExp.exec(w.source);
if(lookaheadMatch){
var eq = MSVG.parseMath(lookaheadMatch[1],this.displaystyle);
if(this.displaystyle){
var node = createTiddlyElement(w.output,"div");
node.style.textAlign='center';
node.appendChild(eq);
w.output.appendChild(node);
} else {w.output.appendChild(eq);}
w.nextMatch = lookaheadMatch.index + lookaheadMatch[0].length;
}
}
config.formatters.push( {
name: "clatex",
match: "\\$\\$",
lookaheadRegExp: /\$\$((?:.|\n)*?)\$\$/mg,
displaystyle: true,
handler: config.formatterHelpers.MathSVGHelper
})
config.formatters.push( {
name: "clatex2",
match: "\\\\\\\[",
lookaheadRegExp: /\\\[((?:.|\n)*?)\\\]/mg,
displaystyle: true,
handler: config.formatterHelpers.MathSVGHelper
})
config.formatters.push( {
name: "latex",
match: "\\$",
lookaheadRegExp: /\$((?:.|\n)*?)\$/mg,
displaystyle: false,
handler: config.formatterHelpers.MathSVGHelper
})
config.formatters.push( {
name: "latex2",
match: "\\\\\\\(",
lookaheadRegExp: /\\\(((?:.|\n)*?)\\\)/mg,
displaystyle: false,
handler: config.formatterHelpers.MathSVGHelper
})
config.formatters.push( {
name: "graph",
match: "<div",
lookaheadRegExp: /<div.+SVGgraph.+?>((?:.|\n)*?)<\/div>/mg,
handler: function(w){
if(MSVG.noSvgTag && jQuery.inArray(MSVG.noSvgTag,w.tiddler.tags)>-1) return;
this.lookaheadRegExp.lastIndex = w.matchStart;
var lookaheadMatch = this.lookaheadRegExp.exec(w.source);
if(lookaheadMatch){
var text = lookaheadMatch[0].replace('<div','<div id="currentGraph"');
jQuery(w.output).append(text);
MSVG.initPictures("#currentGraph");
w.nextMatch = lookaheadMatch.index + lookaheadMatch[0].length;
}
}
})
config.formatters.push( {
name: "inlineGraph",
match: "<span",
lookaheadRegExp: /<span.+SVGgraph.+?>((?:.|\n)*?)<\/span>/mg,
handler: function(w){
if(MSVG.noSvgTag && jQuery.inArray(MSVG.noSvgTag,w.tiddler.tags)>-1) return;
this.lookaheadRegExp.lastIndex = w.matchStart;
var lookaheadMatch = this.lookaheadRegExp.exec(w.source);
if(lookaheadMatch){
var text = lookaheadMatch[0].replace('<span','<span id="currentGraph"');
jQuery(w.output).append(text);
MSVG.initPictures("#currentGraph");
w.nextMatch = lookaheadMatch.index + lookaheadMatch[0].length;
}
}
})
}
//}}}
/***
The script should not be edited. All available options can be set by the following variables:
***/
//{{{
//MSVG.showFormulaOnMouseOver = false; //show LaTeX code on mouse over the equation
//MSVG.latexImages = false; //set to true to force the use of an external converter
//MSVG.latexConverter = "http://www.yourequations.com/eq.latex?"; //link to external converter
//MSVG.mathColor = "green"; //font color
//MSVG.mathFontSize = ""; //font size
//MSVG.mathFontFamily = ""; //font family
MSVG.noMathTag = null;
MSVG.noSvgTag = 'noSVG';
//}}}
/***
New symbols or commands can be defined here:
***/
//{{{
var commands = ["nle","R","diagup","varnothing","ind","DD"];
var symbols = ["\u2270","\u211D","\u2571","\u2205","\u2AEB","\\frac{d}{dr}"];
MSVG.define(commands,symbols);
//}}}
/***
External javascript code can be loaded here:
***/
//{{{
jQuery.getScript("demo.js");
//}}}
rm $\mathrm{ABCDEFGHIJKLMNOPQRSTUVWXYZ}$
rm $\mathrm{abcdefghijklmnopqrstuvwxyz}$
it $\mathit{ABCDEFGHIJKLMNOPQRSTUVWXYZ}$
it $\mathit{abcdefghijklmnopqrstuvwxyz}$
sf $\mathsf{ABCDEFGHIJKLMNOPQRSTUVWXYZ}$
sf $\mathsf{abcdefghijklmnopqrstuvwxyz}$
tt $\mathtt{ABCDEFGHIJKLMNOPQRSTUVWXYZ}$
tt $\mathtt{abcdefghijklmnopqrstuvwxyz}$
bf $\mathbf{ABCDEFGHIJKLMNOPQRSTUVWXYZ}$
bf $\mathbf{abcdefghijklmnopqrstuvwxyz}$
bb $\mathbb{ABCDEFGHIJKLMNOPQRSTUVWXYZ}$
bb $\mathbb{abcdefghijklmnopqrstuvwxyz}$
frak $\mathfrak{ABCDEFGHIJKLMNOPQRSTUVWXYZ}$
frak $\mathfrak{abcdefghijklmnopqrstuvwxyz}$
cal $\mathcal{ABCDEFGHIJKLMNOPQRSTUVWXYZ}$
cal $\mathcal{abcdefghijklmnopqrstuvwxyz}$
!!!Értelmezés
A természetes számok számosságát megszámlálhatóan végtelennek nevezzük. Ha egy halmaz számossága megszámlálhatóan végtelen, akkor pontosan annyi eleme van, ahány természetes szám létezik.
[[►|MenuOptions]]''These are the options that are incorporated'' in the Treeview plugin. For the latest information see the plugin at the author's site
''Note:'' The implementation of Treeview plugin in ~TWT-Treeview may vary slightly from the author's instructions.
----
From the plugin at http://treeview.tiddlyspot.com/.
!!Usage
{{{<<treeview2 }}}> {{{<root tag> [tree style] [startup parameters]}}} {{{ >>}}}
!!Where:
''root tag'' is the tag at the top of your tagging tree, i.e. the mother of all tiddlers related to it by using its name as one of their tags.
''tree style'' indicates which type of tree will be displayed, possibly //treeview//, //filetree//, and //treeview-red//, and //treeview-famfamfam//. There may be other styles too, but those are the ones I know about.
''startup parameters'' are a set of optional parameters given in a comma-separated, key/value string like this:
>{{{'collapsed: false, animated: "normal", persist: true'}}}
There's a list of possible options at:
http://www.dynamicdrive.com/dynamicindex1/treeview/index.htm
However, not all settings may actually work under TW. Mainly, you will probably be interested in controlling the presence of animation, and whether the initial state of the tree is opened or closed.
!!!!Images and stylesheet set-up
The tree is constructed from little bits of images. If you don't want to carry these images in a separate directory, nor reference them remotely, you can embed them in your TW file. To do this, you will need the AttachFilePackage and accompanying plugins from
> www.tiddlytools.com
and you will need the AttachFilePluginFormatters plugin from the same site.
Then import all the tiddlers from this file tagged as treeviewimage . These images are referenced in the StyleSheet. If you import JqueryTreeviewCss from this file, and then put the name in your StyleSheet, the images should be imported without having to access them remotely.
!!!!Persistence
To make persistence work, you will need to have the treeview cookie library loaded. The easiest way to do that is to put:
>{{{<script src="http://www.dynamicdrive.com/dynamicindex1/treeview/lib/jquery.cookie.js" type="text/javascript"></script>}}}
into the MarkupPostBody. However, this technique will only work if you have online access. If you will be working offline, then you will either need to download the cookie library to the same directory as your ~TiddlyWiki file and put the following into your MarkupPostBody:
>>{{{<script src="jquery.cookie.js"></script>}}}
or you will need to put the entire contents of the cookie library into script tags inside the MarkupPostBody.
Then, in any macro that wants its tree to be persistently configured, you will need to use configuration parameter:
>>{{{persist: "cookie", cookieId: "myid"}}}
where //myid// should be an identification that will be unique throughout the entire TW file.
Type the text for 'New Tiddler'
!!Definíció
${\Gamma \vdash A\quad \Delta , A\vdash B}\over{\Gamma , \Delta\vdash B}$
!!Tétel
Legyen $L^{(0)}=\langle LC, Con, Form \rangle\ $ egy [[nulladrendű nyelv|Nulladrendű nyelv]], $\Gamma, \Delta \subseteq Form\ $ két formulahalmaz és $A, B\in Form\ $ két formula.
Ha $\Gamma\cup\{A\}\models B$ és $\Delta\models A$, akkor $\Gamma\cup\Delta \models B$.
!!Indirekt bizonyítás
Indirekt feltétel:
*Tegyük fel, hogy $\Gamma\cup\{A\}\models B$ és $\Delta\models A$, de $\Gamma\cup\Delta \models B$ nem teljesül.
Ekkor $\Gamma\cup\Delta\cup\{\neg B\}$ [[kielégíthető|Kielégíthetőség]] (a [[következményreláció|Szemantikai következményreláció]] definíciója miatt), azaz van modellje. Legyen a formulahalmaz egy modellje a $\varrho$ interpretáció.
A $\varrho$ interpretáció tulajdonságai:
*$\Gamma$ minden eleme igaz a $\varrho$ interpretációban.
*$\Delta$ minden eleme igaz a $\varrho$ interpretációban.
*$\vert\neg B\vert_{\varrho}=1$
Mivel $\Delta\models A$ és $\Delta$ minden eleme igaz a $\varrho$ interpretációban, $\vert A\vert_{\varrho}=1$. Következésképpen a $\Gamma\cup\{A\}\cup\{\neg B\}$ halmaz minden eleme igaz a $\varrho $ interpretációban, ami azt jelenti, hogy a $\Gamma\cup\{A\}\cup\{\neg B\}$ formulahalmaz [[kielégíthető|Kielégíthetőség]]. Ekkor azonban a [[következményreláció|Szemantikai következményreláció]] definíciója miatt $\Gamma\cup\{A\}\models B$ nem teljesül. Ez pedig ellentmond indirekt feltételünknek.
!!Tétel
Ha $\Gamma \vdash A$ és $\Delta , A \vdash B$, akkor $\Gamma\cup\Delta\vdash B$.
!!!Bizonyítás
*A [[monotonitás|Monoton]] miatt $\Gamma\cup\Delta\vdash A$.
*A [[dedukció tétel|Dedukció tétel (kalkulus)]] miatt $\Delta \vdash A\supset B$, s így a [[monotonitás|Monoton]] miatt $\Gamma\cup\Delta\vdash A\supset B$.
*Az előző két pontra alkalmazva a leválasztási szabályt kapjuk, hogy $\Gamma\cup\Delta\vdash B$.
/***
| Name:|''MonkeyTaggerMacro''|
| Created by:|SaqImtiaz|
| Location:|http://tw.lewcid.org/#MonkeyTaggerMacro|
| Version:|0.9 (08-Apr-2006)|
| Requires:|~TW2.07|
!About:
*an adaptation of TagAdderMacro for monkeyGTD and tagglytagging user, but could be useful to just about anyone!
*{{{<<monkeyTagger Project>>}}} gives a drop down list of all tags, tagged with Project.
*The list allows toggling of tags on the current tiddler.
*logging options for task management.
!Demo:
<<monkeyTagger Status>>
!Installation:
*Copy this tiddler to your TW with the systemConfig tag
*either copy the following to your ViewTemplate:
{{{<div class='tagged' macro='monkeyTagger tagToTrack'></div>}}}
or
*better yet, define your own toolbar class and add as many as you need to create a nice toolbar.
Eg:
{{{<div class='toolbar' >
<span style="padding-right:0.15em;" macro='monkeyTagger Project'></span>
<span style="padding-right:0.15em;" macro='monkeyTagger Status'></span>
<span macro='toolbar -closeTiddler closeOthers +editTiddler permalink references jump'></span>
</div>}}}
(adjust padding to taste)
!Usage:
''Syntax:''
|>|{{{<<monkeyTagger source:"sourcetag" label:"customlabel" logging:"true/false" anchor:"anchortext" arrow:"true/false">>}}}|
|label:|quoted text to use as a customlabel|
|arrow:|add arrow to custom label, values are "true" or "false"|
|anchor:|quoted text to specify where to add logging text|
|logging:|enable logging of tags added (for task management), values are "true" or "false"|
the only parameter you ''have'' to pass is the source. When passing only one parameter, you can write either something like:
{{{<<monkeyTagger "Project">>}}} or {{{<<monkeyTagger source:"Project">>}}} for <<monkeyTagger Project>>
All other parameters are optional, and can be written in any order.
''Defaults:''
|label:|default label if not specified = source tag + arrow|
|arrow:|true |
|logging:|false |
|anchor:|none used by default, logging text added to end of tiddler |
''Examples:''
|custom label| {{{<<monkeyTagger source:"Project" label:"customlabel">>}}} |<<monkeyTagger source:"Project" label:"customlabel">>|
|custom label without arrow| {{{<<monkeyTagger source:"Project" label:"customlabel" arrow:"false">>}}} |<<monkeyTagger source:"Project" label:"customlabel" arrow:"false">>|
|logging enabled| {{{<<monkeyTagger source:"Project" logging:"true"}}} |<<monkeyTagger source:"Project" logging:"true">>|
|logging enabled with anchor text|{{{<<monkeyTagger source:"Project" logging:"true" anchor:"anchortext"}}} |<<monkeyTagger source:"Project" logging:"true" anchor:"anchortext">>|
''Tips:''
*Make sure your anchor text doesn't occur more than once in every tiddler, as the first instance will be used.
*I recommend using something like {{{/%StatusLog%/}}} as an invisible anchor.
*Use a tag based template, and add monkeyTagger macro's with logging enabled to the toolbar in just your taskmanagement templates.
!To Do:
*add sorting options if requested.
*''add exclude tag feature''!
!History
*Version 0.9:
**changed to named parameters to make it more user friendly
**added option to disable/enable dropdown arrow in custom labels
**added logging option with anchor text.
!CODE
***/
//{{{
config.macros.monkeyTagger= {};
//config.macros.monkeyTagger.dropdownchar = (document.all?"▼":"▾"); // the fat one is the only one that works in IE
config.macros.monkeyTagger.dropdownchar = "▼"; // uncomment previous line and comment this for smaller version in FF
config.macros.monkeyTagger.handler = function(place,macroName,params,wikifier,paramString,tiddler)
{
var nAV = paramString.parseParams('test', null, true);
if ((nAV[0].arrow)&&(nAV[0].arrow[0])=='false')
var arrow=': ';
else
var arrow=': '+ config.macros.monkeyTagger.dropdownchar;
if((nAV[0].source)&&(nAV[0].source[0])!='.')
{var tagToTrack = nAV[0].source[0]}
else if(params[0]&&(params[0]!='.'))
{var tagToTrack = params[0]}
else
{return false;};
var monkeylabel = ((nAV[0].label)&&(nAV[0].label[0])!='.')?nAV[0].label[0]+arrow: tagToTrack+arrow;
var logmode = ((nAV[0].logging)&&(nAV[0].logging[0])!='.')?nAV[0].logging[0]: "false";
if ((nAV[0].anchor)&&(nAV[0].anchor[0])!='.')
var anchor = nAV[0].anchor[0];
var monkeytooltip=tagToTrack + ' :';
if(tiddler instanceof Tiddler)
{var title = tiddler.title;
var addcomment = function(tiddler,newTag){
var now = new Date();
var timeFormat= 'DD/0MM/YY 0hh:0mm';
var formattednow= now.formatString(timeFormat);
var txt="\n*''"+tagToTrack+"'' set as ''"+newTag+"'' on "+formattednow;
if (anchor && anchor!='.')
{var pos=tiddler.text.indexOf(anchor);
if (pos!=-1) {pos=pos + anchor.length}
else if (pos==-1) {pos=tiddler.text.length}}
else if (!anchor){var pos = tiddler.text.length;};
tiddler.set(null,tiddler.text.substr(0,pos)+txt+tiddler.text.substr(pos));
story.refreshTiddler(tiddler.title,null,true);
return false;
}
var ontagclick = function(e) {
if (!e) var e = window.event;
var tag = this.getAttribute("tag");
var t=store.getTiddler(title);
if (!t || !t.tags) return;
if (t.tags.find(tag)==null)
{t.tags.push(tag)
if (logmode=="true"){addcomment(t,tag);}}
else
{t.tags.splice(t.tags.find(tag),1)};
story.saveTiddler(title);
story.refreshTiddler(title,null,true);
return false;
};
var onclick = function(e) {
if (!e) var e = window.event;
var popup = Popup.create(this);
var thistiddler=store.getTiddler(title);
var taggedarray = new Array();
var tagslabel = new Array();
var taggedtiddlers = store.getTaggedTiddlers(tagToTrack);
for (var t=0; t<taggedtiddlers.length; t++){
var taggedtitle= ((taggedtiddlers[t]).title);
taggedarray.push(taggedtitle);}
for (var t=0; t<taggedarray.length; t++){
var temptag = taggedarray[t];
if (thistiddler.tags.find(temptag)==null)
{var temptag='[ ] '+ temptag;
tagslabel.push(temptag);}
else
{var temptag ='[x] '+ temptag;
tagslabel.push(temptag);}
}
if(tagslabel.length == 0)
createTiddlyText(createTiddlyElement(popup,"li"),('no '+tagToTrack));
for (var t=0; t<tagslabel.length; t++)
{
var theTag = createTiddlyButton(createTiddlyElement(popup,"li"),tagslabel[t],("toggle '"+ ([taggedarray[t]]))+"'",ontagclick);
theTag.setAttribute("tag",taggedarray[t]);
}
Popup.show(popup,false);
e.cancelBubble = true;
if (e.stopPropagation) e.stopPropagation();
return(false);
};
//createTiddlyButton(place,monkeylabel,monkeylabel,onclick);
var createdropperButton = function(place){
var sp = createTiddlyElement(place,"span",null,"monkeytaggerbutton");
var theDropDownBtn = createTiddlyButton(sp,monkeylabel,monkeytooltip,onclick);
};
createdropperButton(place);
}
};
setStylesheet(
".toolbar .monkeytaggerbutton {margin-right:0em; border:0px solid #fff; padding:0px; padding-right:0px; padding-left:0px;}\n"+
".monkeytaggerbutton a.button {padding:2px; padding-left:2px; padding-right:2px;}\n"+
// ".monkeytaggerbutton {font-size:130%;}\n"+
//".monkeytaggerbutton .button {color:#703;}\n"+
"",
"MonkeyTaggerStyles");
//}}}
Ha $\Gamma \vdash A$, akkor $\Gamma \cup \Delta \vdash A$ (azaz a [[szintaktikai következményreláció|Szintaktikai következményreláció]] monoton).
*Bizonyítás strukturális indukcióval:
**Ha $A$ axióma, akkor minden formulahalmaznak szintaktikai következménye, így a $\Gamma\cup\Delta$ formulahalmaznak is.
**Ha $A\in \Gamma$, akkor $A\in \Gamma\cup \Delta$, így $A\in \Gamma\cup \Delta\vdash A$
**Tegyük fel, hogy $A$ nem axióma, $A\notin \Gamma$ és $\Gamma \vdash A$. Ekkor van olyan $B\in Form$ formula, hogy $\Gamma \vdash B$ és $\Gamma \vdash B\supset A$.
**Indukciós feltevés:
*** Tegyük fel, hogy állításunk teljesül a $B$ és a $B\supset A$ formulára, azaz ha $\Gamma \vdash B$, akkor $\Gamma \cup \Delta \vdash B$, és ha $\Gamma \vdash B\supset A$, akkor $\Gamma \cup \Delta \vdash B\supset A$.
**Ekkor be kell látni, hogy $\Gamma \cup \Delta \vdash A$.
***Mivel $\Gamma \cup \Delta \vdash B$ és $\Gamma \cup \Delta \vdash B\supset A$, így a [[szintaktikai következményreláció|Szintaktikai következményreláció]] definíciójának harmadik pontja miatt ekkor a $\Gamma \cup \Delta \vdash A$ is teljesül.
!!!Derivative as a function $f'(x)$
<div class='SVGgraph' options='width:300,height:300,scales:[-2.5,2.5,-2.5,2.5]'>
function update() {
var py = f(px);
var h = .01;
var dy = f(px+h)-py;
var m = dy/h;
dot([px,m],{marker:"o",label:"m",id:"m_id",pos:"n"});
dot([px,m],{marker:"*",size:3,markerstroke: "red"})
setOptions({stroke:"red"});
if (m>=0) {
polygon([[px-.5,py-.5*m],[px+.5,py+.5*m],[px+.5,py-.5*m]],{id:"tangent"});
text([px+.5,py],"m="+m.toFixed(1),{pos:"e",id:"rise",style:"italic"});
text([px,py-.5*m],"1",{pos:"s",id:"run2"});
} else {
polygon([[px-.5,py-.5*m],[px+.5,py+.5*m],[px-.5,py+.5*m]],{id:"tangent"});
text([px-.5,py],"m="+m.toFixed(1),{pos:"w",id:"rise",style:"italic"});
text([px,py+.5*m],"1",{pos:"s",id:"run"});
};
px = SVG.mouse[0];
};
function f(x){return -pow(x,3)+2*x;}
axes();
setAction("mousemove",update);
plot(f);
var px = .5;
update()
</div>
<span class='SVGgraph' options='width:300> axes(); plot("sin(x)"); </span>
<div class='SVGgraph' options='width:300,height:200,scales:[-3,3,-2,2]'>
axes();
grid({dx:0.5,dy:0.5});
plot("(x-2)*(x-1)*x*(x+1)*(x+2)/2",{min:-2.5,max:2.5});
</div>
$\diagup X\ind Y \tilde{A} \varnothing$
$A = \left(\begin{array}{ccc}
1-x & 0 & 0 \\ 0 & 1-x & 0 \\ 0 & 0 & 1-x \end{array}\right)$
$\sum a_i + \sum_{i=0}^{+\infty} b_i$
$f(x) = \left\{\begin{array}{ll}
x^2 \sin \frac1x & \textrm{if} x \ne 0, \\
0 & \textrm{if} x = 0 .
\end{array}\right.$
$\displaystyle{ \lim_{x\to\infty} f(x) = k \choose r + \frac ab \sum_{n=1}^{+\infty} a_n + \left\{ \frac{1}{13} \sum_{n=1}^{+\infty} b_n \right\} }$
<!--{{{-->
<div class='header' macro='gradient vert #00c #003'>
<div class='headerShadow'>
<span class='siteTitle' refresh='content' tiddler=''></span>
<span class='siteSubtitle' refresh='content' tiddler=''></span>
</div>
<div class='headerForeground'>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
</div>
<div id='topMenu'><span class='topMenu' refresh='content' tiddler='TopMenu'></span></div>
</div><div id='tiddlersBar' refresh='none' ondblclick='config.macros.tiddlersBar.onTiddlersBarAction(event)'></div>
<div id='mainMenu' refresh='content' force='true' tiddler='MainMenu'></div>
<div id='sidebar'>
<div id='sidebarOptions' refresh='content' force='true' tiddler='SideBarOptions'></div>
<div id='sidebarTabs' refresh='content' force='true' tiddler='SideBarTabs'></div>
</div>
<div id='displayArea'>
<div id='messageArea'></div>
<div id='tiddlerDisplay'></div>
<div id='contentFooter' refresh='content' tiddler='ContentFooter'></div></div>
<!--}}}-->
<html><div align="center"><font size="-1"><input type="button" value="« Back" onClick="history.go(-1)" name="button" class="btn" onmouseover="this.className='btn btnhov'" onmouseout="this.className='btn'"/>@@color:#ffe;|@@<a href="javascript:;" onclick="var tid=story.findContainingTiddler(this); if (tid) story.refreshTiddler(tid.getAttribute('tiddler'),null,true); return false;"><input class="btn" type="button" onmouseover="this.className='btn btnhov'" onmouseout="this.className='btn'" value="Reload " ></a>@@color:#ffe;|@@<input class="btn" type="button" onmouseover="this.className='btn btnhov'" onmouseout="this.className='btn'" value="Forward » "onClick="history.forward()"</font></div></html>
Az negáció igazságtáblázata:
|vertical-align:middle; $p$|vertical-align:middle; $\neg p$|
|vertical-align:middle; 0 |vertical-align:middle; 1 |
|vertical-align:middle; 1 |vertical-align:middle; 0 |
*Tipikus természetes nyelvi alakja: 'Nem igaz, hogy ...'
*Legyen $A\in Form$. $\neg A $ kiolvasása:
**Nem igaz, hogy $A$.
**Non $A$.
**Negáció $A$.
!!A kettős negáció törvénye:
*$\neg\neg A\Leftrightarrow A$
!!Definíció (bevezető szabály)
${\Gamma , A\vdash B\quad \Gamma , A\vdash \neg B}\over{\Gamma \vdash \neg A}$
!!Definíció (alkalmazó szabály)
${\Gamma \vdash \neg\neg A}\over{\Gamma \vdash A}$
!!!Megjegyzés
!!Értelmezés
*A nemlogikai konstansok, más néven paraméterek olyan nyelvi eszközök, amelyek jelentését az interpretáció rögzíti.
*Egy adott logikai rendszer esetén a nemlogikai konstansok (a paraméterek) nem rendelkeznek rögzített jelentéssel (rögzített szemantikai értékkel), jelentésük (szemantikai értékük) interpretációról interpretációra változhat.
*Egy adott logikai rendszer esetén a nemlogikai konstansokat általában az adott logikai rendszer nyelvének $Con$ halmaza tartalmazza.
!!!Megjegyzés
*Ha $L^{(0)}=\langle LC, Con, Form \rangle$ egy [[nulladrendű nyelv|Nulladrendű nyelv]], akkor a $Con$ halmaz elemei a nyelv nemlogikai konstansai.
*A [[nulladrendű nyelv|Nulladrendű nyelv]] esetén a nemlogikai konstansok (a paraméterek) egyben formulák is. Ezeket [[nulladrendű atomi formuláknak|Nulladrendű atomi formula]] vagy [[nulladrendű prímformuláknak|Nulladrendű prímformula]] is nevezzük.
*A nulladrendű nyelv esetén a nemlogikai konstansok [[állítások|Állítás]] helyett állnak, ezért gyakran [[állításparamétereknek|Állításparaméter]] nevezzük őket.
/***
|Name|NestedSlidersPlugin|
|Source|http://www.TiddlyTools.com/#NestedSlidersPlugin|
|Documentation|http://www.TiddlyTools.com/#NestedSlidersPluginInfo|
|Version|2.4.9|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|plugin|
|Requires||
|Overrides||
|Options|##Configuration|
|Description|show content in nest-able sliding/floating panels, without creating separate tiddlers for each panel's content|
!!!!!Documentation
>see [[NestedSlidersPluginInfo]]
!!!!!Configuration
<<<
<<option chkFloatingSlidersAnimate>> allow floating sliders to animate when opening/closing
>Note: This setting can cause 'clipping' problems in some versions of InternetExplorer.
>In addition, for floating slider animation to occur you must also allow animation in general (see [[AdvancedOptions]]).
<<<
!!!!!Revisions
<<<
2008.11.15 - 2.4.9 in adjustNestedSlider(), don't make adjustments if panel is marked as 'undocked' (CSS class). In onClickNestedSlider(), SHIFT-CLICK docks panel (see [[MoveablePanelPlugin]])
|please see [[NestedSlidersPluginInfo]] for additional revision details|
2005.11.03 - 1.0.0 initial public release. Thanks to RodneyGomes, GeoffSlocock, and PaulPetterson for suggestions and experiments.
<<<
!!!!!Code
***/
//{{{
version.extensions.NestedSlidersPlugin= {major: 2, minor: 4, revision: 9, date: new Date(2008,11,15)};
// options for deferred rendering of sliders that are not initially displayed
if (config.options.chkFloatingSlidersAnimate===undefined)
config.options.chkFloatingSlidersAnimate=false; // avoid clipping problems in IE
// default styles for 'floating' class
setStylesheet(".floatingPanel { position:absolute; z-index:10; padding:0.5em; margin:0em; \
background-color:#eee; color:#000; border:1px solid #000; text-align:left; }","floatingPanelStylesheet");
// if removeCookie() function is not defined by TW core, define it here.
if (window.removeCookie===undefined) {
window.removeCookie=function(name) {
document.cookie = name+'=; expires=Thu, 01-Jan-1970 00:00:01 UTC; path=/;';
}
}
config.formatters.push( {
name: "nestedSliders",
match: "\\n?\\+{3}",
terminator: "\\s*\\={3}\\n?",
lookahead: "\\n?\\+{3}(\\+)?(\\([^\\)]*\\))?(\\!*)?(\\^(?:[^\\^\\*\\@\\[\\>]*\\^)?)?(\\*)?(\\@)?(?:\\{\\{([\\w]+[\\s\\w]*)\\{)?(\\[[^\\]]*\\])?(\\[[^\\]]*\\])?(?:\\}{3})?(\\#[^:]*\\:)?(\\>)?(\\.\\.\\.)?\\s*",
handler: function(w)
{
lookaheadRegExp = new RegExp(this.lookahead,"mg");
lookaheadRegExp.lastIndex = w.matchStart;
var lookaheadMatch = lookaheadRegExp.exec(w.source)
if(lookaheadMatch && lookaheadMatch.index == w.matchStart)
{
var defopen=lookaheadMatch[1];
var cookiename=lookaheadMatch[2];
var header=lookaheadMatch[3];
var panelwidth=lookaheadMatch[4];
var transient=lookaheadMatch[5];
var hover=lookaheadMatch[6];
var buttonClass=lookaheadMatch[7];
var label=lookaheadMatch[8];
var openlabel=lookaheadMatch[9];
var panelID=lookaheadMatch[10];
var blockquote=lookaheadMatch[11];
var deferred=lookaheadMatch[12];
// location for rendering button and panel
var place=w.output;
// default to closed, no cookie, no accesskey, no alternate text/tip
var show="none"; var cookie=""; var key="";
var closedtext=">"; var closedtip="";
var openedtext="<"; var openedtip="";
// extra "+", default to open
if (defopen) show="block";
// cookie, use saved open/closed state
if (cookiename) {
cookie=cookiename.trim().slice(1,-1);
cookie="chkSlider"+cookie;
if (config.options[cookie]==undefined)
{ config.options[cookie] = (show=="block") }
show=config.options[cookie]?"block":"none";
}
// parse label/tooltip/accesskey: [label=X|tooltip]
if (label) {
var parts=label.trim().slice(1,-1).split("|");
closedtext=parts.shift();
if (closedtext.substr(closedtext.length-2,1)=="=")
{ key=closedtext.substr(closedtext.length-1,1); closedtext=closedtext.slice(0,-2); }
openedtext=closedtext;
if (parts.length) closedtip=openedtip=parts.join("|");
else { closedtip="show "+closedtext; openedtip="hide "+closedtext; }
}
// parse alternate label/tooltip: [label|tooltip]
if (openlabel) {
var parts=openlabel.trim().slice(1,-1).split("|");
openedtext=parts.shift();
if (parts.length) openedtip=parts.join("|");
else openedtip="hide "+openedtext;
}
var title=show=='block'?openedtext:closedtext;
var tooltip=show=='block'?openedtip:closedtip;
// create the button
if (header) { // use "Hn" header format instead of button/link
var lvl=(header.length>5)?5:header.length;
var btn = createTiddlyElement(createTiddlyElement(place,"h"+lvl,null,null,null),"a",null,buttonClass,title);
btn.onclick=onClickNestedSlider;
btn.setAttribute("href","javascript:;");
btn.setAttribute("title",tooltip);
}
else
var btn = createTiddlyButton(place,title,tooltip,onClickNestedSlider,buttonClass);
btn.innerHTML=title; // enables use of HTML entities in label
// set extra button attributes
btn.setAttribute("closedtext",closedtext);
btn.setAttribute("closedtip",closedtip);
btn.setAttribute("openedtext",openedtext);
btn.setAttribute("openedtip",openedtip);
btn.sliderCookie = cookie; // save the cookiename (if any) in the button object
btn.defOpen=defopen!=null; // save default open/closed state (boolean)
btn.keyparam=key; // save the access key letter ("" if none)
if (key.length) {
btn.setAttribute("accessKey",key); // init access key
btn.onfocus=function(){this.setAttribute("accessKey",this.keyparam);}; // **reclaim** access key on focus
}
btn.setAttribute("hover",hover?"true":"false");
btn.onmouseover=function(ev) {
// optional 'open on hover' handling
if (this.getAttribute("hover")=="true" && this.sliderPanel.style.display=='none') {
document.onclick.call(document,ev); // close transients
onClickNestedSlider(ev); // open this slider
}
// mouseover on button aligns floater position with button
if (window.adjustSliderPos) window.adjustSliderPos(this.parentNode,this,this.sliderPanel);
}
// create slider panel
var panelClass=panelwidth?"floatingPanel":"sliderPanel";
if (panelID) panelID=panelID.slice(1,-1); // trim off delimiters
var panel=createTiddlyElement(place,"div",panelID,panelClass,null);
panel.button = btn; // so the slider panel know which button it belongs to
btn.sliderPanel=panel; // so the button knows which slider panel it belongs to
panel.defaultPanelWidth=(panelwidth && panelwidth.length>2)?panelwidth.slice(1,-1):"";
panel.setAttribute("transient",transient=="*"?"true":"false");
panel.style.display = show;
panel.style.width=panel.defaultPanelWidth;
panel.onmouseover=function(event) // mouseover on panel aligns floater position with button
{ if (window.adjustSliderPos) window.adjustSliderPos(this.parentNode,this.button,this); }
// render slider (or defer until shown)
w.nextMatch = lookaheadMatch.index + lookaheadMatch[0].length;
if ((show=="block")||!deferred) {
// render now if panel is supposed to be shown or NOT deferred rendering
w.subWikify(blockquote?createTiddlyElement(panel,"blockquote"):panel,this.terminator);
// align floater position with button
if (window.adjustSliderPos) window.adjustSliderPos(place,btn,panel);
}
else {
var src = w.source.substr(w.nextMatch);
var endpos=findMatchingDelimiter(src,"+++","===");
panel.setAttribute("raw",src.substr(0,endpos));
panel.setAttribute("blockquote",blockquote?"true":"false");
panel.setAttribute("rendered","false");
w.nextMatch += endpos+3;
if (w.source.substr(w.nextMatch,1)=="\n") w.nextMatch++;
}
}
}
}
)
function findMatchingDelimiter(src,starttext,endtext) {
var startpos = 0;
var endpos = src.indexOf(endtext);
// check for nested delimiters
while (src.substring(startpos,endpos-1).indexOf(starttext)!=-1) {
// count number of nested 'starts'
var startcount=0;
var temp = src.substring(startpos,endpos-1);
var pos=temp.indexOf(starttext);
while (pos!=-1) { startcount++; pos=temp.indexOf(starttext,pos+starttext.length); }
// set up to check for additional 'starts' after adjusting endpos
startpos=endpos+endtext.length;
// find endpos for corresponding number of matching 'ends'
while (startcount && endpos!=-1) {
endpos = src.indexOf(endtext,endpos+endtext.length);
startcount--;
}
}
return (endpos==-1)?src.length:endpos;
}
//}}}
//{{{
window.onClickNestedSlider=function(e)
{
if (!e) var e = window.event;
var theTarget = resolveTarget(e);
while (theTarget && theTarget.sliderPanel==undefined) theTarget=theTarget.parentNode;
if (!theTarget) return false;
var theSlider = theTarget.sliderPanel;
var isOpen = theSlider.style.display!="none";
// if SHIFT-CLICK, dock panel first (see [[MoveablePanelPlugin]])
if (e.shiftKey && config.macros.moveablePanel) config.macros.moveablePanel.dock(theSlider,e);
// toggle label
theTarget.innerHTML=isOpen?theTarget.getAttribute("closedText"):theTarget.getAttribute("openedText");
// toggle tooltip
theTarget.setAttribute("title",isOpen?theTarget.getAttribute("closedTip"):theTarget.getAttribute("openedTip"));
// deferred rendering (if needed)
if (theSlider.getAttribute("rendered")=="false") {
var place=theSlider;
if (theSlider.getAttribute("blockquote")=="true")
place=createTiddlyElement(place,"blockquote");
wikify(theSlider.getAttribute("raw"),place);
theSlider.setAttribute("rendered","true");
}
// show/hide the slider
if(config.options.chkAnimate && (!hasClass(theSlider,'floatingPanel') || config.options.chkFloatingSlidersAnimate))
anim.startAnimating(new Slider(theSlider,!isOpen,e.shiftKey || e.altKey,"none"));
else
theSlider.style.display = isOpen ? "none" : "block";
// reset to default width (might have been changed via plugin code)
theSlider.style.width=theSlider.defaultPanelWidth;
// align floater panel position with target button
if (!isOpen && window.adjustSliderPos) window.adjustSliderPos(theSlider.parentNode,theTarget,theSlider);
// if showing panel, set focus to first 'focus-able' element in panel
if (theSlider.style.display!="none") {
var ctrls=theSlider.getElementsByTagName("*");
for (var c=0; c<ctrls.length; c++) {
var t=ctrls[c].tagName.toLowerCase();
if ((t=="input" && ctrls[c].type!="hidden") || t=="textarea" || t=="select")
{ try{ ctrls[c].focus(); } catch(err){;} break; }
}
}
var cookie=theTarget.sliderCookie;
if (cookie && cookie.length) {
config.options[cookie]=!isOpen;
if (config.options[cookie]!=theTarget.defOpen) window.saveOptionCookie(cookie);
else window.removeCookie(cookie); // remove cookie if slider is in default display state
}
// prevent SHIFT-CLICK from being processed by browser (opens blank window... yuck!)
// prevent clicks *within* a slider button from being processed by browser
// but allow plain click to bubble up to page background (to close transients, if any)
if (e.shiftKey || theTarget!=resolveTarget(e))
{ e.cancelBubble=true; if (e.stopPropagation) e.stopPropagation(); }
Popup.remove(); // close open popup (if any)
return false;
}
//}}}
//{{{
// click in document background closes transient panels
document.nestedSliders_savedOnClick=document.onclick;
document.onclick=function(ev) { if (!ev) var ev=window.event; var target=resolveTarget(ev);
if (document.nestedSliders_savedOnClick)
var retval=document.nestedSliders_savedOnClick.apply(this,arguments);
// if click was inside a popup... leave transient panels alone
var p=target; while (p) if (hasClass(p,"popup")) break; else p=p.parentNode;
if (p) return retval;
// if click was inside transient panel (or something contained by a transient panel), leave it alone
var p=target; while (p) {
if ((hasClass(p,"floatingPanel")||hasClass(p,"sliderPanel"))&&p.getAttribute("transient")=="true") break;
p=p.parentNode;
}
if (p) return retval;
// otherwise, find and close all transient panels...
var all=document.all?document.all:document.getElementsByTagName("DIV");
for (var i=0; i<all.length; i++) {
// if it is not a transient panel, or the click was on the button that opened this panel, don't close it.
if (all[i].getAttribute("transient")!="true" || all[i].button==target) continue;
// otherwise, if the panel is currently visible, close it by clicking it's button
if (all[i].style.display!="none") window.onClickNestedSlider({target:all[i].button})
if (!hasClass(all[i],"floatingPanel")&&!hasClass(all[i],"sliderPanel")) all[i].style.display="none";
}
return retval;
};
//}}}
//{{{
// adjust floating panel position based on button position
if (window.adjustSliderPos==undefined) window.adjustSliderPos=function(place,btn,panel) {
if (hasClass(panel,"floatingPanel") && !hasClass(panel,"undocked")) {
// see [[MoveablePanelPlugin]] for use of 'undocked'
var rightEdge=document.body.offsetWidth-1;
var panelWidth=panel.offsetWidth;
var left=0;
var top=btn.offsetHeight;
if (place.style.position=="relative" && findPosX(btn)+panelWidth>rightEdge) {
left-=findPosX(btn)+panelWidth-rightEdge; // shift panel relative to button
if (findPosX(btn)+left<0) left=-findPosX(btn); // stay within left edge
}
if (place.style.position!="relative") {
var left=findPosX(btn);
var top=findPosY(btn)+btn.offsetHeight;
var p=place; while (p && !hasClass(p,'floatingPanel')) p=p.parentNode;
if (p) { left-=findPosX(p); top-=findPosY(p); }
if (left+panelWidth>rightEdge) left=rightEdge-panelWidth;
if (left<0) left=0;
}
panel.style.left=left+"px"; panel.style.top=top+"px";
}
}
//}}}
//{{{
// TW2.1 and earlier:
// hijack Slider stop handler so overflow is visible after animation has completed
Slider.prototype.coreStop = Slider.prototype.stop;
Slider.prototype.stop = function()
{ this.coreStop.apply(this,arguments); this.element.style.overflow = "visible"; }
// TW2.2+
// hijack Morpher stop handler so sliderPanel/floatingPanel overflow is visible after animation has completed
if (version.major+.1*version.minor+.01*version.revision>=2.2) {
Morpher.prototype.coreStop = Morpher.prototype.stop;
Morpher.prototype.stop = function() {
this.coreStop.apply(this,arguments);
var e=this.element;
if (hasClass(e,"sliderPanel")||hasClass(e,"floatingPanel")) {
// adjust panel overflow and position after animation
e.style.overflow = "visible";
if (window.adjustSliderPos) window.adjustSliderPos(e.parentNode,e.button,e);
}
};
}
//}}}
<html><hide linebreaks>
<div id='contentFooter' refresh='content' tiddler='ContentFooter'></div>
</html>
<<newTiddler label:"newHTML" title:'New HTML' text:{{store.getTiddlerText('TiddlerMakeFile##html')}} tag:html>>
/***
|Name:|NewHerePlugin|
|Description:|Creates the new here and new journal macros|
|Version:|3.0 ($Rev: 3861 $)|
|Date:|$Date: 2008-03-08 10:53:09 +1000 (Sat, 08 Mar 2008) $|
|Source:|http://mptw.tiddlyspot.com/#NewHerePlugin|
|Author:|Simon Baird <simon.baird@gmail.com>, modified by giffmex|
|License|http://mptw.tiddlyspot.com/#TheBSDLicense|
***/
//{{{
merge(config.macros, {
newHere: {
handler: function(place,macroName,params,wikifier,paramString,tiddler) {
wikify("<<newTiddler "+paramString+" tag:[["+tiddler.title+"]] tag:treeview>>",place,null,tiddler);
}
},
newJournalHere: {
handler: function(place,macroName,params,wikifier,paramString,tiddler) {
wikify("<<newJournal "+paramString+" tag:[["+tiddler.title+"]]>>",place,null,tiddler);
}
}
});
//}}}
<<newTiddler label:"newIframe" title:'New iframe' text:{{store.getTiddlerText('TiddlerMakeFile##iframe')}} tag:'iframe'>>
<<newJournal title:"YYYY.0MM.0DD at 0hh:0mm:0ss" text:{{store.getTiddlerText('TiddlerMakeFile##journal')}} tag:'journal'>>@@color:#00F;(normal date)@@
<<newTiddler
label:"newObject"
title:"NewObjectTiddler"
text:{{store.getTiddlerText('TiddlerMakeFile##object')}}
tag:"object"
focus:"title"
>>
<<newTiddler label:"newProject" title:'New Project' text:{{store.getTiddlerText('TiddlerMakeFile##project')}} tag:Projects>>
<<newTiddler label:"newScript" title:"New Script Tiddler" tag:"script" focus:"text">>
<<newTiddler label:"newSlider" title:'New Slider' text:{{store.getTiddlerText('BlankSlider')}} tag:'slider'>>
<<newTiddler label:"newSystemConfig" title:"New SystemConfig Tiddler" tag:"systemConfig" "excludeLists" focus:"text">>
<<newTiddler label:"newTable" title:'New Table' text:{{store.getTiddlerText('TiddlerMakeFile##table')}} tag:'table'>>
<<newTiddler label:"newTabs" title:'New Tabs' text:{{store.getTiddlerText('TiddlerMakeFile##tabs')}} tag:'tabs'>>
!!Tétel
Legyen $L^{(0)}=\langle LC, Con, Form \rangle$ egy [[nulladrendű nyelv|Nulladrendű nyelv]] és $A\in Form$ egy formula.
Ekkor létezik olyan $B\in Form$, hogy
#$A\Leftrightarrow B$
#$B$ diszjunktív vagy konjunktv normálformájú.
!!!Megjegyzés
*Egy formula [[diszjunktív|Diszjunktív normálforma]] ([[konjunktív|Konjunktív normálforma]]) normálformáján egy vele logikailag ekvivalens diszjunktív (konjunktív) normálformájú formulát értünk.
*Minden kielégíthető formulának van [[diszjunktív normálformája|Diszjunktív normálforma]] (azaz vele logikailag ekvivalens diszjunktív normálformájú formula).
*Minden nem érvényes formulának van [[konjunktív normálformája|Konjunktív normálforma]] (azaz vele logikailag ekvivalens konjunktív normálformájú formula).
<<tabs "" [[Literál]] "" [[Literál]] [[Elemi konjunkció]] "" [[Elemi konjunkció]] [[Diszjunktív normálforma]] "" [[Diszjunktív normálforma]] [[Elemi diszjunkció]] "" [[Elemi diszjunkció]] [[Konjunktív normálforma]] "" [[Konjunktív normálforma]] [[Normálforma tétel]] "" [[Normálforma tétel]]>>
!!Definíció
Ha $L^{(0)}$ egy nulladrendű nyelv (azaz $L^{(0)}=\langle LC, Con, Form \rangle$), akkor $Con $ halmaz elemeit nulladrendű atomi formuláknak vagy nulladrendű prímformuláknak nevezzük.
!!!Megjegyzés:
A nulladrendű jelzőt, ha félreértést nem okoz, akkor gyakran elhagyjuk, s csak atomi formulákról vagy prímformulákról beszélünk.
A nulladrendű logika centrális logikai fogalmai a [[nulladrendű modell|Nulladrendű modell]] fogalmán alapulnak és a következő fogalmakat jelentik:
<<tabs ""[[Modell]] "" [[Nulladrendű modell]] [[Kielégíthetőség]] "" [[Kielégíthetőség]] [[Kielégíthetetlenség]] "" [[Kielégíthetetlenség]] [[Következményreláció]] "" [[Szemantikai következményreláció]] [[Érvényesség]] "" [[Érvényesség]] [[Logikai ekvivalencia]] "" [[Logikai ekvivalencia]]>>
<<tabs ""[[Tétel (kielégíthetőség)]] "" [[Tétel (kielégíthetőség)]] [[Tétel (kielégíthetetlenség)]] "" [[Tétel (kielégíthetetlenség)]] [[Következményreláció tulajdonsága(1)]] "" [[Következményreláció tulajdonsága(1)]] [[Következményreláció tulajdonsága(2)]] "" [[Következményreláció tulajdonsága(2)]] [[Következményreláció tulajdonsága(3)]] "" [[Következményreláció tulajdonsága(3)]] [[Dedukció tétel]] "" [[Dedukció tétel]] [[Dedukció tétel megfordítása]] "" [[Dedukció tétel megfordítása]] [[Következményreláció és implikáció]] "" [[Következményreláció és implikáció]] [[Logikai ekvivalencia és (materiális) ekvivalencia]] "" [[Logikai ekvivalencia és (materiális) ekvivalencia]] [[Metszet tétel]] "" [[Metszet tétel]]>>
!!Definíció
A $\varrho$ függvényt az $L^{(0)}=\langle LC, Con, Form \rangle$ [[nulladrendű nyelv|Nulladrendű nyelv]] egy interpretációjának nevezzük, ha
#$Dom(\varrho)=Con$
#Ha $p\in Con$, akkor $\varrho(p)\in \{0,1\}$.
!!!Megjegyzés
*Minden szemantikai úton felépített logikai rendszer esetén az interpretáció feladata az, hogy szemantikai értéket rendeljen a [[nemlogikai konstansokhoz|Nemlogikai konstans]].
*A nulladrendű logikában a [[nemlogikai konstansok|Nemlogikai konstans]] állítások helyettesítésére szolgálnak. Az állítások lehetséges szemantikai értékei az igazságértékek, így egy interpretáció minden nemlogikai konstanshoz egy igazságértéket rendel (megmondja, hogy az adott szituációban az állításpaaméter milyen igazságértékű állítás helyet szerepel).
*Ha a nulladrendű nyelvben $n$ darab nemlogikai konstans van, akkor a különböző interpretációk száma $2^n$.
A nulladrendű kalkulus (állításkalkulus) Frege-Hilbert stílusú felépítése a következő komponensekből áll:
<<tabs ""[[Axiómaséma]] "" [[Axiómaséma]] [[Axióma]] "" [[Axióma]] [[Szintaktikai következményreláció]] "" [[Szintaktikai következményreláció]] [[Inkonzisztens]] "" [[Inkonzisztens]] [[Konzisztens]] "" [[Konzisztens]] [[Levezethető]] "" [[Levezethető]] [[Tulajdonságok]] "" [[Szintaktikai következményreláció tulajdonságai]]>>
!!!A szemantikai úton felépített logikai rendszer a következő komponensekből áll:
<<tabs "" [[Formális nyelv]] "" [[Nulladrendű nyelv]] [[Szemantika]] "" [[Nulladrendű szemantika]] [[Centrális logikai fogalmak]] "" [[Nulladrendű centrális logikai fogalmak]] >>
!!Definíció
Legyen $L^{(0)}=\langle LC, Con, Form \rangle$ egy [[nulladrendű nyelv|Nulladrendű nyelv]] és $\Gamma\subseteq Form$ egy tetszőleges formulahalmaz.
A $\varrho$ interpretáció nulladrendű modellje a $\Gamma$ formulahalmaznak, ha minden $A\in \Gamma$ esetén $\vert A \vert_{\varrho} = 1$
!!!Megjegyzés
A nulladrendű nyelv egy adott formulahalmazának a nulladrendű modellje a nyelv egy olyan nulladrendű interpretációja, amelyben a tekintett
formulahalmaz minden eleme igaz.
!!Definíció
Legyen $L^{(0)}=\langle LC, Con, Form \rangle$ egy [[nulladrendű nyelv|Nulladrendű nyelv]] és $A\in Form$ egy tetszőleges formula.
Az $A$ formula modelljén az $\{A\}$ egyelemű formulahalmaz modelljét értjük.
!!Definíció (klasszikus nulladrendű nyelv)
Klasszikus nulladrendű nyelven az $$L^{(0)}=\langle LC, Con, Form \rangle$$ rendezett hármast értjük, ahol
#$LC=\{\neg ,\supset , \wedge , \vee , \equiv , (,)\} $ (a nyelv [[logikai konstansainak|Logikai konstans]] halmaza).
#$Con\neq \emptyset $ a nyelv nemlogikai konstansainak (állítás- vagy kijelentés-paramétereinek) legfeljebb [[megszámlálhatóan végtelen|Megszámlálhatóan végtelen]] halmaza.
#Az $LC\cap Con = \emptyset$
#A nyelv formuláinak a halmazát, azaz a $Form\ $ halmazt az alábbi [[induktív definíció|Induktív definíció]] adja meg:
##$Con \subseteq Form$
##Ha $A\in Form$, akkor $\neg A\in Form$.
##Ha $A, B\in Form$, akkor
###$(A\supset B)\in Form$,
###$(A\wedge B)\in Form$,
###$(A\vee B)\in Form$,
###$(A\equiv B)\in Form$.
Lásd [[nulladrendű atomi formula|Nulladrendű atomi formula]]!
<<tabs "" [[Interpretáció]] "" [[Nulladrendű interpretáció]] [[Szemantikai szabályok]] "" [[Nulladrendű szemantikai szabályok]] >>
!!Definíció
Legyen $L^{(0)}=\langle LC, Con, Form \rangle$ egy [[nulladrendű nyelv|Nulladrendű nyelv]], és ${\varrho}$ egy [[nulladrendű interpretáció|Nulladrendű interpretáció]]. Az $A\in Form$ formula ${\varrho}$ interpretáció szerinti szemantikai értékét a következő szabályok határozzák meg (jelölés: $\vert A \vert_{\varrho}$ jelöli az $A$ formula ${\varrho}$ interpretáció szerinti értékét):
#Ha $p\in Con$, akkor $\vert p\vert_{\varrho} ={\varrho}(p)$
#Ha $A\in Form$, akkor $\vert \neg A \vert_{\varrho}=1 - \vert A \vert_{\varrho}$.
#Ha $A, B\in Form$, akkor
##$\vert (A\supset B) \vert_{\varrho}= 0$,ha $\vert A \vert_{\varrho} =1$ és $\vert B \vert_{\varrho} = 0$, és $=1$ egyébként.
##$\vert (A\wedge B) \vert_{\varrho}=1$, ha $\vert A \vert_{\varrho} =1$ és $\vert B \vert_{\varrho} = 1$, és $=0$ egyébként.
##$\vert (A\vee B) \vert_{\varrho}=0$, ha $\vert A \vert_{\varrho} =0$ és $\vert B \vert_{\varrho} = 0$, és $=1$ egyébként.
##$\vert (A\equiv B) \vert_{\varrho}=1$, ha $\vert A \vert_{\varrho} =\vert B \vert_{\varrho} $, és $=0$ egyébként.
!!!Megjegyzés:
*A szemantikai szabályok megadása [[induktív definícióval|Induktív definíció]] történik, amelyben a bázist a $Con$ halmaz elemeire vonatkozó 1. szabály alkotja.
*Minden szemantikai úton felépített logikai rendszer esetén a szemantikai szabályok feladata a [[logikai konstansok|Logikai konstans]] jelentésének megadása.
*A nulladrendű szemantikai szabályok segítségével ey adott interpretációban a [[nulladrendű nyelv|Nulladrendű nyelv]] minden formulájához igazságértéket rendelünk.
<!--{{{-->
<div class='header' macro='gradient vert #5DC44D #000'>
<div class='headerShadow'>
<span class='siteTitle' refresh='content' tiddler=''></span>
<span class='siteSubtitle' refresh='content' tiddler=''></span>
</div>
<div class='headerForeground'>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
</div>
<div id='topMenu'><span class='topMenu' refresh='content' tiddler='TopMenu'></span></div>
</div><div id='tiddlersBar' refresh='none' ondblclick='config.macros.tiddlersBar.onTiddlersBarAction(event)'></div>
<div id='mainMenu' refresh='content' force='true' tiddler='MainMenu'><div id='contentFooter' refresh='content' tiddler='ContentFooter'></div></div>
<div id='sidebar'>
<div id='sidebarOptions' refresh='content' force='true' tiddler='SideBarOptions'></div>
<div id='sidebarTabs' refresh='content' force='true' tiddler='SideBarTabs'></div>
</div>
<div id='displayArea'>
<div id='messageArea'></div>
<div id='tiddlerDisplay'></div>
<div id='contentFooter' refresh='content' tiddler='ContentFooter'></div>
</div>
<!--}}}-->
Lásd [[nemlogikai konstans|Nemlogikai konstans]]!
/***
|''Name:''|PasswordOptionPlugin|
|''Description:''|Extends TiddlyWiki options with non encrypted password option.|
|''Version:''|1.0.2|
|''Date:''|Apr 19, 2007|
|''Source:''|http://tiddlywiki.bidix.info/#PasswordOptionPlugin|
|''Author:''|BidiX (BidiX (at) bidix (dot) info)|
|''License:''|[[BSD open source license|http://tiddlywiki.bidix.info/#%5B%5BBSD%20open%20source%20license%5D%5D ]]|
|''~CoreVersion:''|2.2.0 (Beta 5)|
***/
//{{{
version.extensions.PasswordOptionPlugin = {
major: 1, minor: 0, revision: 2,
date: new Date("Apr 19, 2007"),
source: 'http://tiddlywiki.bidix.info/#PasswordOptionPlugin',
author: 'BidiX (BidiX (at) bidix (dot) info',
license: '[[BSD open source license|http://tiddlywiki.bidix.info/#%5B%5BBSD%20open%20source%20license%5D%5D]]',
coreVersion: '2.2.0 (Beta 5)'
};
config.macros.option.passwordCheckboxLabel = "Save this password on this computer";
config.macros.option.passwordInputType = "password"; // password | text
setStylesheet(".pasOptionInput {width: 11em;}\n","passwordInputTypeStyle");
merge(config.macros.option.types, {
'pas': {
elementType: "input",
valueField: "value",
eventName: "onkeyup",
className: "pasOptionInput",
typeValue: config.macros.option.passwordInputType,
create: function(place,type,opt,className,desc) {
// password field
config.macros.option.genericCreate(place,'pas',opt,className,desc);
// checkbox linked with this password "save this password on this computer"
config.macros.option.genericCreate(place,'chk','chk'+opt,className,desc);
// text savePasswordCheckboxLabel
place.appendChild(document.createTextNode(config.macros.option.passwordCheckboxLabel));
},
onChange: config.macros.option.genericOnChange
}
});
merge(config.optionHandlers['chk'], {
get: function(name) {
// is there an option linked with this chk ?
var opt = name.substr(3);
if (config.options[opt])
saveOptionCookie(opt);
return config.options[name] ? "true" : "false";
}
});
merge(config.optionHandlers, {
'pas': {
get: function(name) {
if (config.options["chk"+name]) {
return encodeCookie(config.options[name].toString());
} else {
return "";
}
},
set: function(name,value) {config.options[name] = decodeCookie(value);}
}
});
// need to reload options to load passwordOptions
loadOptionsCookie();
/*
if (!config.options['pasPassword'])
config.options['pasPassword'] = '';
merge(config.optionsDesc,{
pasPassword: "Test password"
});
*/
//}}}
@@color:#800;Tiddlers tagged with systemConfig (plugins, macros and tweaks)@@
<<tiddler ToggleRightSidebar with: "Sidebar »">>
{{twocolumns{
<script>
// get all tiddlers tagged with "systemConfig"
var tids=store.getTaggedTiddlers("systemConfig");
// keep only tiddlers *also* tagged with New
var list=[];
for (var t=0; t<tids.length; t++)
if (tids[t].isTagged("systemConfig")) list.push(tids[t]);
// create output list of tiddler titles, one per line
var out="";
for (var t=0; t<list.length; t++) out+="#[["+list[t].title+"]]\n";
return out;
</script>
}}}
!!!Értelmezés
*Premissza: a következtetés valamely kiinduló [[állítása|Állítás]].
*A következtetés premisszáit azon állítások alkotják, amelyek igazságának feltételezése mellett kívánjuk a konklúzió igazságát biztosítani.
*Ha a következtetésre mint viszonyra tekintünk, akkor a premisszák halmaza alkotja a viszony első komponensét.
@@color:#C06;''» »'' @@You can view the status of projects here or change them in the respective projects.
<<tag Projects {{"Projects ("+store.getTaggedTiddlers("Projects").length +")"}}>><<tag Started {{"Started ("+store.getTaggedTiddlers("Started").length +")"}}>><<tag InProgress {{"InProgress ("+store.getTaggedTiddlers("InProgress").length +")"}}>><<tag Done {{"Done ("+store.getTaggedTiddlers("Done").length +")"}}>> <<tiddler RefreshTiddler with: "Refresh Display" "tooltip">>
*''This is the control panel for Projects.''
(You should leave these instructions here for further reference. If not be sure to leave the buttons.)
''Note: ''You can create any status you want by creating a new tiddler with the status name then tag it __status__ and adding another button using an existing one above as a model.
#Tag this tiddler with the heading under which you want Projects to appear. But do not change the Projects tiddler name, all of your projects will be listed under it. (it is originally under TheProjectManager.)
# In the right sidebar under new tiddlers start a new project by clicking __newProject__.
##It will be automatically listed under this (Projects) tiddler.
##It will have a status button to allow you to set it's status
##Further instructions are contained in the new project tiddler.
<<<
''Once the above is done you can add any number of tasks under any project by clicking __add:»subtopic__ in its toolbar above in the normal ~TWT-Treeview way.''
<<<
/***
|''Name:''|Publish Macro|
|''Version:''|2.4.1 (2 July 2008)|
|''Source''|http://jackparke.googlepages.com/jtw.html#PublishMacro ([[del.icio.us|http://del.icio.us/post?url=http://jackparke.googlepages.com/jtw.html%23PublishMacro]])|
|''Author:''|[[Jack]]|
|''Type:''|Macro|
!Description
<<doPublish>> tiddlers tagged with these tags <<option txtPublishTags>> (comma seperated) as HTML pages to the subfolder 'publish' (you must create this). Use the [[PublishTemplateHead]] and [[PublishTemplateBody]] templates to style your pages and the [[PublishIndexTemplate]] to define an index page. For publishing individual tiddlers the [[PublishTemplateBodySingle]] template is used.
!Usage
To publish all tagged tiddlers:
{{{<<doPublish>>}}} <<doPublish>>
To publish a single tiddler, use the {{{<<publishTiddler>>}}} macro or add the "publishTiddler" command to your ViewTemplate
!Template placeholders
|!Placeholder|!Meaning|
|%0|Your SiteTitle "<<tiddler SiteTitle>>"|
|%1|The current tiddler title|
|%2|The rendered tiddler HTML|
|%3|CSV list of tags|
|%4|Tiddler modifier|
|%5|Tiddler modified date|
|%6|Tiddler creation date|
|%7|Tiddler wiki text|
!Revision History
* Original by [[Jack]] 24 May 2006
* Updated 2 Jan 2007
* Refactored 4 Jan 2007
* Small improvements
* Publish single tiddlers
* Template placeholder %7 for tiddler's wiki text
!Code
***/
//{{{
version.extensions.doPublish = {
major: 2,
minor: 4,
revision: 1,
date: new Date("July 2, 2008")
};
config.macros.doPublish = {
label: "publish",
prompt: "Publish Tiddlers as HTML files"
};
if (config.options.txtPublishTags == undefined) config.options.txtPublishTags = "Publish";
config.shadowTiddlers.PublishTemplateHead = '<title>%0 - %1</title>\n<link rel="stylesheet" type="text/css" href="style.css"/>\n<meta name="keywords" content="%3"/>'
config.shadowTiddlers.PublishTemplateBody = '<div class=\'viewer\' id=\'contentWrapper\'><small><a href=\"./publish/index.html\">Home</a> > %1</small><h1>%0</h1>\n<h2>%1</h2>\n%2\n<hr>Tags: %3\n<hr>%4, %5 (created %6)\n</div>\n'
config.shadowTiddlers.PublishTemplateBodySingle = '<h1>%0</h1>\n<h2>%1</h2>\n%2\n<hr>Tags: %3\n<hr>%4, %5 (created %6)\n</div>\n'
config.shadowTiddlers.PublishIndexTemplate = '<div class=\'viewer\' id=\'contentWrapper\'><small><a href="./publish/index.html">Home</a> > %1</small><h1>%0</h1><h2>%1</h2>\n<ul>%2\n</ul>\n<small>Published: %6</small>\n</div>\n';
config.macros.doPublish.handler = function(place)
{
if (!readOnly)
createTiddlyButton(place, this.label, this.prompt,
function() {
doPublish();
return false;
},
null, null, this.accessKey);
}
config.macros.publishTiddler = {
label : 'publish',
prompt : 'Publish this tiddler as an HTML file.',
handler : function(place,macroName,params,wikifier,paramString,tiddler)
{
var btn = createTiddlyButton(place, this.label, this.prompt,
function(e) {
if(!e) var e = window.event;
publishTiddler(this.getAttribute('tiddler'))
return false;
},
null, null, this.accessKey);
btn.setAttribute('tiddler', tiddler.title);
}}
config.commands.publishTiddler = {handler : function(event,src,title) {publishTiddler(title);},text: "publish", tooltip: "Publish this tiddler as HTML"};
function publishTiddler(title) {
//debugger
var PublishFolder = getWikiPath('publish');
var place = document.getElementById(story.container)
var HTMLTemplateHead = store.getTiddlerText("PublishTemplateHead");
var HTMLTemplateBody = store.getTiddlerText("PublishTemplateBodySingle") || store.getTiddlerText("PublishTemplateBody");
HTMLTemplateBody = renderTemplate(HTMLTemplateBody)
HTMLTemplateBody = wiki2Web(HTMLTemplateBody);
var tiddler = store.getTiddler(title);
var tiddlerText = store.getValue(tiddler, 'text');
var tiddlerHTML = wikifyStatic(tiddlerText);
var HTML = '<html>\n\<head>\n' + HTMLTemplateHead + '\n</head>\n<body>\n' + HTMLTemplateBody + '\n</body>\n</html>';
HTML = HTML.format([
wikifyPlain("SiteTitle").htmlEncode(),
tiddler.title.htmlEncode(),
wiki2Web(tiddlerHTML),
tiddler.tags.join(", "),
tiddler.modifier,
tiddler.modified.toLocaleString(),
tiddler.created.toLocaleString(),
tiddlerText
]);
saveFile(PublishFolder + tiddler.title.filenameEncode() + ".html", HTML);
//story.closeTiddler(tiddler.title);
//var indexWin = window.open((PublishFolder + title.filenameEncode() + ".html").replace(/\\/g, "/"), null);
indexWin.focus();
}
function doPublish() {
var savedTiddlers = [];
var tiddlers = store.getTiddlers("title");
var place = document.getElementById(story.container)
var HTMLTemplateHead = store.getTiddlerText("PublishTemplateHead");
var HTMLTemplateBody = store.getTiddlerText("PublishTemplateBody");
HTMLTemplateBody = renderTemplate(HTMLTemplateBody)
HTMLTemplateBody = wiki2Web(HTMLTemplateBody);
var PublishTags = config.options.txtPublishTags || "publish";
PublishTags = PublishTags.split(",")
var PublishFolder = getWikiPath('publish');
if (!PublishFolder) return;
var indexFile = "";
var indexFileTemplate = store.getTiddlerText("PublishIndexTemplate");
// This does not allow <<myMacro>> but wants <div macro="myMacro">
indexFileTemplate = renderTemplate(indexFileTemplate)
// This option allows WIKI-syntax but is limited in it's HTML capabilities
//indexFileTemplate = wikifyStatic(indexFileTemplate)
for (var t = 0; t < tiddlers.length; t++) {
var tiddler = tiddlers[t];
if (tiddler.tags.containsAny(PublishTags)) {
var tiddlerText = store.getValue(tiddler, 'text');
var tiddlerHTML = wikifyStatic(tiddlerText);
var HTML = '<html>\n\<head>\n' + HTMLTemplateHead + '\n</head>\n<body>\n' + HTMLTemplateBody + '\n</body>\n</html>';
HTML = HTML.format([
wikifyPlain("SiteTitle").htmlEncode(),
tiddler.title.htmlEncode(),
wiki2Web(tiddlerHTML),
tiddler.tags.join(", "),
tiddler.modifier,
tiddler.modified.toLocaleString(),
tiddler.created.toLocaleString(),
tiddlerText
]);
//saveFile(PublishFolder + tiddler.created.formatString("YYYY0MM0DD") + ".html", HTML);
saveFile(PublishFolder + tiddler.title.filenameEncode() + ".html", HTML);
indexFile += "<li><a href=\"" + tiddler.title.filenameEncode() + ".html" + "\" class=\"tiddlyLink tiddlyLinkExisting\">" + tiddler.title + "</a></li>\n";
story.closeTiddler(tiddler.title);
}
}
indexFileTemplate = '<html>\n\<head>\n' + HTMLTemplateHead + '\n</head>\n<body>\n' + indexFileTemplate + '\n</body>\n</html>';
indexFileTemplate = indexFileTemplate.format([wikifyPlain("SiteTitle").htmlEncode(), wikifyPlain("SiteSubtitle").htmlEncode(), "%2", "", "", "", (new Date()).toLocaleString()])
indexFile = indexFileTemplate.replace("%2", indexFile)
indexFile = wiki2Web(indexFile);
saveFile(PublishFolder + "index.html", indexFile)
saveFile(PublishFolder + "style.css", store.getTiddlerText("StyleSheet") + store.getTiddlerText("StyleSheetLayout") + store.getTiddlerText("StyleSheetColors"))
var indexWin = window.open("file:///" + PublishFolder.replace(/\\/g, "/") + "index.html", null);
indexWin.focus();
}
function renderTemplate(html) {
var result = document.createElement("div");
result.innerHTML = html;
applyHtmlMacros(result, null);
var temp = result.innerHTML;
//result.parentNode.removeChild(result);
return temp;
}
// Convert wikified text to html
function wiki2Web(wikiHTML) {
//var regexpLinks = new RegExp("<a tiddlylink=.*?</a>", "img");
var regexpLinks = /<a[^>]+tiddlylink\s*=\s*["']?\s*?([^ "'>]*)\s*["']?[^>]*>[^<]+<\/a>/img;
var result = wikiHTML.match(regexpLinks);
if (result) {
for (i = 0; i < result.length; i++) {
var className = result[i].match(/ class="(.*?)"/i) ? result[i].match(/ class="(.*?)"/i)[1] : "";
var tiddlerName = result[i].match(/ tiddlylink="(.*?)"/i)[1];
var url = tiddlerName.htmlDecode().filenameEncode() + ".html";
var tiddlerLabel = result[i].match(/">(.*?)<\/a>/i)[1];
if (!className.match(/tiddlyLinkNonExisting/i))
wikiHTML = wikiHTML.myReplace(result[i], "<a class=\"" + className + "\" href=\"" + url + "\">" + tiddlerLabel + "</a>");
else
wikiHTML = wikiHTML.myReplace(result[i], "<a class=\"" + className + "\" title=\"Page does not exist\" href=\"#\">" + tiddlerName + "</a>");
}
wikiHTML = wikiHTML.replace(/ href="http:\/\//gi, " target=\"_blank\" href=\"http://");
}
return wikiHTML
}
function getWikiPath(folderName) {
var originalPath = document.location.toString();
if (originalPath.substr(0, 5) != 'file:') {
alert(config.messages.notFileUrlError);
if (store.tiddlerExists(config.messages.saveInstructions))
story.displayTiddler(null, config.messages.saveInstructions);
return;
}
var localPath = getLocalPath(originalPath);
var backSlash = localPath.lastIndexOf('\\') == -1 ? '/': '\\';
var dirPathPos = localPath.lastIndexOf(backSlash);
var subPath = localPath.substr(0, dirPathPos) + backSlash + (folderName ? folderName + backSlash: '');
return subPath;
}
// Replace without regex
String.prototype.myReplace = function(sea, rep) {
var t1 = this.indexOf(sea);
var t2 = parseInt(this.indexOf(sea)) + parseInt(sea.length);
var t3 = this.length;
return this.substring(0, t1) + rep + this.substring(t2, t3)
}
// Convert illegal characters to underscores
String.prototype.filenameEncode = function()
{
return (this.toLowerCase().replace(/[^a-z0-9_-]/g, "_"));
}
//}}}
<title>%0 - %1</title>
<link rel="stylesheet" type="text/css" href="style.css"/>
<meta name="keywords" content="%3"/>
This package provides a toolbar of interactive 'power tools' that you can use while editing a tiddler to quickly insert TiddlyWiki tiddler links, images, macros, etc. or common formatting sequences directly into tiddler content, as well as perform other functions (such as find/replace, sort, split, convert, etc.) that can be used to modify the current tiddler's source content in a variety of ways.
<<tiddler QuickEditToolbar with: show>>
!!!!!Installation:
<<<
Individual ~QuickEdit buttons are defined in separate tiddlers (e.g., [[QuickEdit_replace]]) that have also been //transcluded// into a single toolbar definition named [[QuickEditToolbar]]. You can edit this definition to add, remove, or rearrange the toolbar buttons to best suit your needs, and then embed the [[QuickEditToolbar]] tiddler into your document's [[EditTemplate]], like this:
{{{
<div macro='tiddler QuickEditToolbar'></div>
}}}
Next, in order to support some of the formatting 'shortcuts' provided by the toolbar, add a reference to the shortcuts CSS class definitions in your [[StyleSheet]]:
{{{
[[StyleSheetShortcuts]]
}}}
By default, the QuickEdit toolbar is hidden until you enable it by using the ''toggleQuickEdit'' command, which you can add to the ~EditToolbar definition in [[ToolbarCommands]]:
{{{
|EditToolbar|... toggleQuickEdit ...|
}}}
You can also toggle the ~QuickEdit toolbar display via a single checkbox option that can be added to [[SideBarOptions]] (or any other desired location):
{{{
<<option chkShowQuickEdit>> show QuickEdit toolbar
}}}
Note: You can 'hard-code' the ''chkShowQuickEdit'' setting, so that the toolbar will be //initially// displayed, by creating a tiddler (e.g., ConfigTweaks), tagged with <<tag systemConfig>>, containing:
{{{
config.options.chkShowQuickEdit=true;
}}}
Alternatively, if you want the toolbar to //always// be displayed, regardless of the option setting, you can add a special keyword, ''show'', to the [[EditTemplate]] syntax, like this:
{{{
<div macro='tiddler QuickEditToolbar with: show'></div>
}}}
<<<
/***
|Name|QuickEditPlugin|
|Source|http://www.TiddlyTools.com/#QuickEditPlugin|
|Documentation|http://www.TiddlyTools.com/#QuickEditPlugin|
|Version|2.4.3|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 3.0 License|http://creativecommons.org/licenses/by-sa/3.0/]]|
|~CoreVersion|2.1|
|Type|plugin|
|Requires||
|Overrides||
|Description|Support functions for ~QuickEdit package: styles, utility functions, and 'toggleQuickEdit' command|
!!!!!Revisions
<<<
2009.06.11 [2.4.3] added keyup() function to abbreviate listbox handling for CR and ESC
2009.05.07 [2.4.2] added processed() function to abbreviate event handler code
2008.09.07 [2.4.1] added removeCookie() function for compatibility with [[CookieManagerPlugin]]
2008.05.17 [2.4.0] copied code from StickyPopupPlugin to remove dependency
2008.05.12 [2.3.0] added "toggleQuickEdit" command handler (replaces inline script command)
2008.01.11 [2.2.0] converted from inline script
2007.03.29 [1.0.0] initial release (as inline script)
<<<
!!!!!Code
***/
//{{{
version.extensions.QuickEditPlugin= {major: 2, minor: 4, revision: 3, date: new Date(2009,6,11)};
// SET STYLESHEET
setStylesheet("\
.quickEdit a { border:2px outset ButtonFace; padding:0px 3px !important; \
-moz-border-radius:.5em; -webkit-border-radius:.5em; \
-moz-appearance:button !important; -webkit-appearance:push-button !important; \
background-color:ButtonFace; color:ButtonText !important; \
line-height:200%; font-weight:normal; } \
.quickEdit a:hover { border: 2px inset ButtonFace; background-color:ButtonFace; }\
", "quickEditStyles");
// REMOVE COOKIE
if (window.removeCookie===undefined) {
window.removeCookie=function(name) {
document.cookie = name+'=; expires=Thu, 01-Jan-1970 00:00:01 UTC; path=/;';
}
}
// UTILITY FUNCTIONS
config.quickEdit = {
processed: function(ev) { ev=ev||window.event;
ev.cancelBubble=true;
if(ev.stopPropagation) ev.stopPropagation();
return false;
},
keyup: function(ev){ var k=(ev||window.event).keyCode;
if (k==13) this.onclick();
if (k==27) Popup.remove();
},
getField: function(where) {
var here=story.findContainingTiddler(where); if (!here) return null;
var e=story.getTiddlerField(here.getAttribute("tiddler"),"text");
if (e&&e.getAttribute("edit")=="text") return e;
return null;
},
setSelection: function(where,newtext) {
var e=this.getField(where); if (!e) return false;
e.focus(); replaceSelection(e,newtext);
return false;
},
wrapSelection: function(where,before,after) {
var e=this.getField(where); if (!e) return false;
e.focus(); replaceSelection(e,before+config.quickEdit.getSelection(e)+after);
return false;
},
getSelection: function(e) {
var seltext="";
if (e&&e.setSelectionRange)
seltext=e.value.substr(e.selectionStart,e.selectionEnd-e.selectionStart);
else if (document.selection) {
var range = document.selection.createRange();
if (range.parentElement()==e) seltext=range.text
}
return seltext;
},
promptForFilename: function(msg,path,file) {
if(window.Components) { // moz
try {
netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');
var nsIFilePicker = window.Components.interfaces.nsIFilePicker;
var picker = Components.classes['@mozilla.org/filepicker;1'].createInstance(nsIFilePicker);
picker.init(window, msg, nsIFilePicker.modeOpen);
var thispath = Components.classes['@mozilla.org/file/local;1'].createInstance(Components.interfaces.nsILocalFile);
thispath.initWithPath(path);
picker.displayDirectory=thispath;
picker.defaultExtension='jpg';
picker.defaultString=file;
picker.appendFilters(nsIFilePicker.filterAll|nsIFilePicker.filterImages);
if (picker.show()!=nsIFilePicker.returnCancel)
var result="file:///"+picker.file.persistentDescriptor.replace(/\\/g,'/');
}
catch(e) { alert('error during local file access: '+e.toString()) }
}
else { // IE
try { // XP only
var s = new ActiveXObject('UserAccounts.CommonDialog');
s.Filter='All files|*.*|JPG files|*.jpg|GIF files|*.gif|PNG files|*.png|';
s.FilterIndex=1; // default to JPG
s.InitialDir=path;
s.FileName=file;
if (s.showOpen()) var result=s.FileName;
}
catch(e) { var result=prompt(msg,path+file); } // fallback for non-XP IE
}
return result;
}
}
//}}}
//{{{
if (config.options.chkShowQuickEdit===undefined) config.options.chkShowQuickEdit=false;
config.commands.toggleQuickEdit = {
hideReadOnly: true,
getText: function() { return config.options.chkShowQuickEdit?'\u221Aquickedit':'quickedit'; },
tooltip: 'show QuickEdit toolbar buttons',
handler: function(event,src,title) {
config.options.chkShowQuickEdit=!config.options.chkShowQuickEdit;
config.macros.option.propagateOption("chkShowQuickEdit","checked", config.options.chkShowQuickEdit,"input");
if (config.options.chkShowQuickEdit) saveOptionCookie("chkShowQuickEdit");
else removeCookie("chkShowQuickEdit");
src.innerHTML=config.commands.toggleQuickEdit.getText();
story.forEachTiddler(function(t,e){if (story.isDirty(t)) refreshElements(e);});
return false;
}
};
//}}}
// // COPIED FROM [[StickyPopupPlugin]] TO ELIMINATE PLUGIN DEPENDENCY
//{{{
if (config.options.chkStickyPopups==undefined) config.options.chkStickyPopups=false;
Popup.stickyPopup_onDocumentClick = function(ev)
{
// if click is in a sticky popup, ignore it so popup will remain visible
var e = ev ? ev : window.event; var target = resolveTarget(e);
var p=target; while (p) {
if (hasClass(p,"popup") && (hasClass(p,"sticky")||config.options.chkStickyPopups)) break;
else p=p.parentNode;
}
if (!p) // not in sticky popup (or sticky popups disabled)... use normal click handling
Popup.onDocumentClick(ev);
return true;
};
try{removeEvent(document,"click",Popup.onDocumentClick);}catch(e){};
try{addEvent(document,"click",Popup.stickyPopup_onDocumentClick);}catch(e){};
//}}}
/%
|Name|QuickEditToolbar|
|Source|http://www.TiddlyTools.com/#QuickEditToolbar|
|Version|2.4.3|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.2|
|Type|transclusion|
|Requires|QuickEditPlugin|
|Optional|QuickEdit_*|
|Description|format/insert TiddlyWiki content using toolbar buttons|
Usage:
* install [[QuickEditPlugin]] (runtime support functions)
* add the toolbar to [[EditTemplate]]:
<div macro='tiddler QuickEditToolbar with: show'></div>
* 'show' (optional) forces the toolbar to always be displayed or,
omit keyword and use <<option chkShowQuickEdit>> setting
* selected QuickEdit buttons can also be added individually to the
regular tiddler toolbar by adding references directly in [[EditTemplate]]:
<span class='toolbar' macro='tiddler QuickEdit_...'></span>
* see [[QuickEditPackage]] for additional installation options
%/<<tiddler HideTiddlerTags>>/%
%/{{hidden fine center quickEdit{
<<tiddler {{ // show/hide toolbar
var here=story.findContainingTiddler(place); if (here) var tid=here.getAttribute('tiddler');
var show='$1'!='$'+'1'||config.options.chkShowQuickEdit||tid=='QuickEditToolbar';
place.style.display=show?'block':'none';
'';}}>>/%
TOOLBAR DEFINITION - add, remove, or re-order items as desired:
= = = = = = = = = =
%/<<tiddler QuickEdit_replace>>/%
%/<<tiddler QuickEdit_split>>/%
%/<<tiddler QuickEdit_sort>>/%
%/<<tiddler QuickEdit_convert>>/%
%/ /% (SPACER)
%/<<tiddler QuickEdit_link>>/%
%/<<tiddler QuickEdit_insert>>/%
%/<<tiddler QuickEdit_macro>>/%
%/<<tiddler QuickEdit_image>>/%
%/ /% (SPACER)
%/<<tiddler QuickEdit_format>>/%
%/<<tiddler QuickEdit_align>>/%
%/<<tiddler QuickEdit_color>>/%
%/<<tiddler QuickEdit_font>>/%
%/ /% (SPACER)
%/<<tiddler QuickEdit_custom>>/%
%/}}}
/%
|Name|QuickEdit_align|
|Source|http://www.TiddlyTools.com/#QuickEdit_align|
|Version|2.4.3|
|Author|Eric Shulman|
|License|see http://www.TiddlyTools.com/#QuickEditPlugin|
|Type|html|
|Requires|QuickEditPlugin|
|Description|quickedit - text alignment|
Usage: see http://www.TiddlyTools.com/#QuickEditToolbar
%/<html><hide linebreaks><a href="javascript:;" class="tiddlyLink" tabindex="-1"
title="align text"
onclick="var p=Popup.create(this); if (!p) return false; p.className+=' sticky smallform';
var s=createTiddlyElement(p,'select'); s.button=this;
s.options[0]=new Option('select text alignment...','');
s.options[s.length]=new Option('left','left');
s.options[s.length-1].title='{{left{...}}}';
s.options[s.length]=new Option('center','center');
s.options[s.length-1].title='{{center{...}}}';
s.options[s.length]=new Option('right','right');
s.options[s.length-1].title='{{right{...}}}';
s.options[s.length]=new Option('justify','justify');
s.options[s.length-1].title='{{justify{...}}}';
s.options[s.length]=new Option('float left','floatleft');
s.options[s.length-1].title='{{floatleft{...}}}';
s.options[s.length]=new Option('float right','floatright');
s.options[s.length-1].title='{{floatright{...}}}';
s.size=s.length;
s.onclick=function(){ if (!this.value.length) return;
config.quickEdit.wrapSelection(this.button,'{{'+this.value+'{','}}}');
Popup.remove(); return false;
};
s.onkeyup=config.quickEdit.keyup;
Popup.show();
s.focus();
return config.quickEdit.processed(event);"
>align</a></html>
/%
|Name|QuickEdit_color|
|Source|http://www.TiddlyTools.com/#QuickEdit_color|
|Version|2.4.3|
|Author|Eric Shulman|
|License|see http://www.TiddlyTools.com/#QuickEditPlugin|
|Type|html|
|Requires|QuickEditPlugin|
|Description|quickedit - text/background color|
Usage: see http://www.TiddlyTools.com/#QuickEditToolbar
%/<html><hide linebreaks><a href="javascript:;" class="tiddlyLink" tabindex="-1"
title="text/background color - @@color:#RGB;background-color:#RGB;...@@"
onclick="var p=Popup.create(this,null,'popup sticky smallform'); if (!p) return false;
p.style.padding='2px';
function hex(d) { return '0123456789ABCDEF'.substr(d,1); }
var fg=createTiddlyElement(p,'select'); fg.button=this;
fg.style.width='12em';
fg.options[0]=new Option('text color...','');
fg.options[1]=new Option('\xa0 or enter a value','_ask');
fg.options[2]=new Option('\xa0 or use default color','');
for (var r=0;r<16;r+=3) for (var g=0;g<16;g+=3) for (var b=0;b<16;b+=3) {
var label=hex(r)+hex(g)+hex(b);
fg.options[fg.length]=new Option(label,'#'+label);
fg.options[fg.length-1].style.color='#'+label;
}
fg.onchange=function(){ var val=this.value;
if (val=='_ask') { val=prompt('Enter a CSS color value');
if (!val||!val.length) return false; }
this.options[0].value=val; this.options[0].text=val.length?'text: '+val:'text color...';
var bg=this.nextSibling;
for (var i=3;i<bg.options.length;i++) bg.options[i].style.color=val;
var preview=this.nextSibling.nextSibling.nextSibling;
var t=config.quickEdit.getSelection(config.quickEdit.getField(this.button));
t=t.replace(/^@@(color\:.+;)?(background-color\:.+;)?/,'').replace(/@@$/,'');
if (!t.length) t='~AaBbCcDdEeFfGgHhIiJj 1234567890';
var fg=this.value; if (fg.length) fg='color:'+fg+';';
var bg=this.nextSibling.value; if (bg.length) bg='background-color:'+bg+';';
if (fg.length||bg.length) t='@@'+fg+bg+t+'@@';
removeChildren(preview); wikify(t,preview);
this.selectedIndex=0; return false;
};
var bg=createTiddlyElement(p,'select'); bg.button=this;
bg.style.width='12em';
bg.options[0]=new Option('background color...','');
bg.options[1]=new Option('\xa0 or enter a value','_ask');
bg.options[2]=new Option('\xa0 or use default color','');
for (var r=0;r<16;r+=3) for (var g=0;g<16;g+=3) for (var b=0;b<16;b+=3) {
var label=hex(15-r)+hex(15-g)+hex(15-b);
bg.options[bg.length]=new Option(label,'#'+label);
bg.options[bg.length-1].style.backgroundColor='#'+label;
}
bg.onchange=function(){ var val=this.value;
if (val=='_ask') { val=prompt('Enter a CSS color value');
if (!val||!val.length) return false; }
this.options[0].value=val;
this.options[0].text=val.length?'background: '+val:'background color...';
var fg=this.previousSibling;
for (var i=3;i<fg.options.length;i++) fg.options[i].style.backgroundColor=val;
var preview=this.nextSibling.nextSibling;
var t=config.quickEdit.getSelection(config.quickEdit.getField(this.button));
t=t.replace(/^@@(color\:.+;)?(background-color\:.+;)?/,'').replace(/@@$/,'');
if (!t.length) t='~AaBbCcDdEeFfGgHhIiJj 1234567890';
var fg=this.previousSibling.value; if (fg.length) fg='color:'+fg+';';
var bg=this.value; if (bg.length) bg='background-color:'+bg+';';
if (fg.length||bg.length) t='@@'+fg+bg+t+'@@';
removeChildren(preview); wikify(t,preview);
this.selectedIndex=0; return false;
};
var b=createTiddlyElement(p,'input',null,null,null,{type:'button'}); b.button=this;
b.value='ok'; b.style.width='4em';
b.onclick=function() {
var fg=this.previousSibling.previousSibling.value; if (fg.length) fg='color:'+fg+';';
var bg=this.previousSibling.value; if (bg.length) bg='background-color:'+bg+';';
var t=config.quickEdit.getSelection(config.quickEdit.getField(this.button));
t=t.replace(/^@@(color\:.+;)?(background-color\:.+;)?/,'').replace(/@@$/,'');
if (fg.length||bg.length) config.quickEdit.setSelection(this.button,'@@'+fg+bg+t+'@@');
Popup.remove(); return false;
};
var preview=createTiddlyElement(p,'div',null,'viewer'); var s=preview.style;
s.border='1px solid'; s.margin='2px'; s.width='24em'; s.padding='3px'; s.MozBorderRadius='3px';
s.overflow='hidden'; s.textAlign='center'; s.whiteSpace='normal';
var t=config.quickEdit.getSelection(config.quickEdit.getField(this));
wikify(t.length?t:'~AaBbCcDdEeFfGgHhIiJj 1234567890',preview);
Popup.show();
event.cancelBubble=true;if(event.stopPropagation)event.stopPropagation();return false;"
>color</a></html>
/%
|Name|QuickEdit_convert|
|Source|http://www.TiddlyTools.com/#QuickEdit_convert|
|Version|2.4.3|
|Author|Eric Shulman|
|License|see http://www.TiddlyTools.com/#QuickEditPlugin|
|Type|html|
|Requires|QuickEditPlugin|
|Description|quickedit - convert between comma/tab-separated and TW table format|
Usage: see http://www.TiddlyTools.com/#QuickEditToolbar
%/<html><hide linebreaks><a href="javascript:;" class="tiddlyLink" tabindex="-1"
title="convert between comma/tab-separated and TW table format"
onclick="var e=config.quickEdit.getField(this);
if (e) e.focus(); var txt=config.quickEdit.getSelection(e);
if (txt.indexOf(',')+txt.indexOf('\t')+txt.indexOf('|')==-3) {
alert('Please select text containing tabs, commas, or TiddlyWiki table syntax.');
return false;
}
var p=Popup.create(this); if (!p) return false; p.className+=' sticky smallform';
var s=createTiddlyElement(p,'select'); s.button=this;
s.options[0]=new Option('select a converter...','');
if (txt.indexOf(',')!=-1) {
s.options[s.length]=new Option('commas -> table','commasToTable');
s.options[s.length]=new Option('commas -> tabs','commasToTabs');
}
if (txt.indexOf('\t')!=-1) {
s.options[s.length]=new Option('tabs -> table','tabsToTable');
s.options[s.length]=new Option('tabs -> commas','tabsToCommas');
}
if (txt.indexOf('|')!=-1) {
s.options[s.length]=new Option('table -> tabs','tableToTabs');
s.options[s.length]=new Option('table -> commas','tableToCommas');
}
s.size=s.length;
s.onclick=function(){ if (!this.value.length) return;
var e=config.quickEdit.getField(this.button); if (!e) return false;
e.focus(); var txt=config.quickEdit.getSelection(e);
switch(this.value) {
case 'tabsToTable':
txt=txt.replace(/\t/g,'|').replace(/^|$/g,'|');
txt=txt.replace(/\n/g,'|\n|').replace(/^\|$/g,'');
break;
case 'tableToTabs':
txt=txt.replace(/\t/g,' ').replace(/\|/g,'\t');
txt=txt.replace(/^\t/g,'').replace(/\t$/g,'');
txt=txt.replace(/\n\t/g,'\n').replace(/\t\n/g,'\n');
break;
case 'commasToTable':
txt=txt.replace(/,/g,'|').replace(/^|$/g,'|');
txt=txt.replace(/\n/g,'|\n|').replace(/^\|$/g,'');
break;
case 'tableToCommas':
txt=txt.replace(/,/g,' ').replace(/\|/g,',');
txt=txt.replace(/^,/g,'').replace(/,$/g,'');
txt=txt.replace(/\n,/g,'\n').replace(/,\n/g,'\n');
break;
case 'tabsToCommas':
txt=txt.replace(/\t/g,',');
break;
case 'commasToTabs':
txt=txt.replace(/,/g,'\t');
break;
}
replaceSelection(e,txt);
Popup.remove(); return false;
};
s.onkeyup=config.quickEdit.keyup;
Popup.show();
s.focus();
return config.quickEdit.processed(event);"
>convert</a></html>
/%
|Name|QuickEdit_custom|
|Source|http://www.TiddlyTools.com/#QuickEdit_custom|
|Version|2.4.3|
|Author|Eric Shulman|
|License|see http://www.TiddlyTools.com/#QuickEditPlugin|
|Type|html|
|Requires|QuickEditPlugin|
|Description|quickedit - custom defined formats|
Usage: see http://www.TiddlyTools.com/#QuickEditToolbar
!help
Reminders:
Custom formats are stored as an "HR-separated list" in [[QuickEdit_customList]], where the first line of each list item is the text 'label' to show in the droplist, followed by one or more lines of wiki content to be inserted into the tiddler source.
Substitution markers can be used to dynamically insert values into the formatted output: $1 inserts the tiddler editor's current selected text. $[[message|default value]] interactively prompts for a value to be inserted. $[[message|$1]] uses the selected text as the default value. $[[message|{{javascript}}]] calculates the default value using javascript code.
!end help
%/<html><hide linebreaks><a href="javascript:;" class="tiddlyLink" tabindex="-1" title="custom defined formats"
onclick="var p=Popup.create(this); if (!p) return false; p.className+=' sticky smallform';
var s=createTiddlyElement(p,'select'); s.button=this;
s.options[0]=new Option('select a custom format...','');
var items=store.getTiddlerText('QuickEdit_customList','').split('\n----\n');
for (var i=0; i<items.length; i++) {
if (!items[i].length) continue; var lines=items[i].split('\n');
var label=lines.shift(); var val=lines.join('\n');
s.options[s.length]=new Option(label,val); s.options[s.length-1].title=val;
}
s.options[s.length]=new Option('[Edit custom formats...]','_edit');
s.options[s.length-1].title='add/change custom format definitions...';
s.size=Math.min(s.length,15);
s.onclick=function(){ if (!this.value.length) return;
if (this.value=='_edit') {
alert(store.getTiddlerText('QuickEdit_custom##help'));
story.displayTiddler(story.findContainingTiddler(this.button),
'QuickEdit_customList',DEFAULT_EDIT_TEMPLATE);
} else {
var e=config.quickEdit.getField(this.button); if (!e) return false;
e.focus(); var txt=config.quickEdit.getSelection(e);
replaceSelection(e, this.value.replace(/\$\x31/g,txt)
.replace(/\$\[\[[^\]]+\]\]/g, function(t){
x=t.substr(3,t.length-5).split('|');
var msg=x[0]; var def=x[1]||'';
if (def.startsWith('{{')) {
try{def=eval(def.substr(2,def.length-4))} catch(ex){showException(ex)}
}
return prompt(msg,def)||'';
})
);
}
Popup.remove(); return false;
};
s.onkeyup=config.quickEdit.keyup;
Popup.show();
s.focus();
return config.quickEdit.processed(event);"
>custom</a></html>
timestamp
$[[enter a date|{{new Date().formatString('DDD, MMM DDth, YYYY hh12:0mm:0ssam')}}]]
----
scrollbox
@@display:block;height:10em;overflow:auto;$[[enter scrolling content|$1]]@@@@display:block;text-align:right;^^scroll for more...^^@@
----
nested slider
+++[$1]<<tiddler $1>>===
----
big red
@@font-size:36pt;color:red;$1@@
----
/%
|Name|QuickEdit_font|
|Source|http://www.TiddlyTools.com/#QuickEdit_font|
|Version|2.4.3|
|Author|Eric Shulman|
|License|see http://www.TiddlyTools.com/#QuickEditPlugin|
|Type|html|
|Requires|QuickEditPlugin|
|Description|quickedit - select font family|
Usage: see http://www.TiddlyTools.com/#QuickEditToolbar
%/<html><hide linebreaks><a href="javascript:;" class="tiddlyLink" tabindex="-1"
title="set font-family CSS attribute - @@font-family:facename;...@@"
onclick="var p=Popup.create(this); if (!p) return false; p.className+=' sticky smallform';
var s=createTiddlyElement(p,'select'); s.button=this;
s.options[0]=new Option('select a font family...','');
var fonts=store.getTiddlerText('QuickEdit_fontList','').split('\n');
for (var i=0; i<fonts.length; i++) {
if (!fonts[i].length) continue;
s.options[s.length]=new Option(fonts[i],fonts[i]);
s.options[s.length-1].style.fontFamily=fonts[i];
}
s.options[s.length]=new Option('[Edit font list...]','_edit');
s.options[s.length-1].title='enter fonts, one per line...';
s.size=Math.min(s.length,15);
s.onclick=function(){
if (this.value=='_edit')
story.displayTiddler(story.findContainingTiddler(this.button),'QuickEdit_fontList',DEFAULT_EDIT_TEMPLATE);
else
config.quickEdit.wrapSelection(this.button,'@@font-family:\x22'+this.value+'\x22;','@@');
Popup.remove(); return false;
};
s.onkeyup=config.quickEdit.keyup;
Popup.show();
s.focus();
return config.quickEdit.processed(event);"
>font</a></html>
Arial,helvetica,sans-serif
Times New Roman,times,serif
Courier,monospaced
/%
|Name|QuickEdit_format|
|Source|http://www.TiddlyTools.com/#QuickEdit_format|
|Version|2.4.3|
|Author|Eric Shulman|
|License|see http://www.TiddlyTools.com/#QuickEditPlugin|
|Type|html|
|Requires|QuickEditPlugin|
|Description|quickedit - basic text formats, headings, blockquotes, etc.|
Usage: see http://www.TiddlyTools.com/#QuickEditToolbar
%/<html><hide linebreaks><a href="javascript:;" class="tiddlyLink" tabindex="-1"
title="plain text (remove ALL formatting)" accesskey="P"
onclick="var e=config.quickEdit.getField(this); if (e) e.focus(); var txt=config.quickEdit.getSelection(e);
config.quickEdit.setSelection(e,wikifyPlainText(txt)); return false;"
> ~ </a></html>/%
%/<html><hide linebreaks><a href="javascript:;" class="tiddlyLink" tabindex="-1"
title="''bold''" accesskey="B"
onclick="config.quickEdit.wrapSelection(this,'\x27\x27','\x27\x27'); return false;"
> B </a></html>/%
%/<html><hide linebreaks><a href="javascript:;" class="tiddlyLink" tabindex="-1"
title="//italics//" accesskey="I"
onclick="config.quickEdit.wrapSelection(this,'//','//'); return false;"
> I </a></html>/%
%/<html><hide linebreaks><a href="javascript:;" class="tiddlyLink" tabindex="-1"
title="__underline__" accesskey="U"
onclick="config.quickEdit.wrapSelection(this,'__','__'); return false;"
> U </a></html>/%
%/<html><hide linebreaks><a href="javascript:;" class="tiddlyLink" tabindex="-1"
title="--strikethrough--" accesskey="S"
onclick="config.quickEdit.wrapSelection(this,'--','--'); return false;"
> S </a></html>/%
%/ /% SPACER
%/<html><hide linebreaks><a href="javascript:;" class="tiddlyLink" tabindex="-1"
title="format text"
onclick="var p=Popup.create(this); if (!p) return false; p.className+=' sticky smallform';
var s=createTiddlyElement(p,'select'); s.button=this;
s.options[0]=new Option('select text format...','');
s.options[s.length]=new Option('CSS class wrapper','{{$1{,}}},Enter a CSS classname');
s.options[s.length-1].title='CSS class wrapper - {{classname classname etc{...}}}';
s.options[s.length]=new Option('inline CSS styles','@@$1,@@,Enter CSS (attribute:value;attribute:value;...;)');
s.options[s.length-1].title='inline CSS styles - @@attr:value;attr:value;...@@';
s.options[s.length]=new Option('heading 1','\n!,\n');
s.options[s.length-1].title='H1 heading - !';
s.options[s.length]=new Option('heading 2','\n!!,\n');
s.options[s.length-1].title='H2 heading - !!';
s.options[s.length]=new Option('heading 3','\n!!!,\n');
s.options[s.length-1].title='H3 heading - !!!';
s.options[s.length]=new Option('heading 4','\n!!!!,\n');
s.options[s.length-1].title='H4 heading - !!!!';
s.options[s.length]=new Option('heading 5','\n!!!!!,\n');
s.options[s.length-1].title='H5 heading - !!!!!';
s.options[s.length]=new Option('blockquote','\n\<\<\<\n,\n\<\<\<\n');
s.options[s.length-1].title='indented blockquote - \<\<\<';
s.options[s.length]=new Option('monospaced','{{{,}}}');
s.options[s.length-1].title='inline monospaced text - {{{...}}}';
s.options[s.length]=new Option('plain text','\n{{{\n,\n}}}\n');
s.options[s.length-1].title='multi-line monospaced text box - {{{...}}}';
s.options[s.length]=new Option('superscript','^^,^^');
s.options[s.length-1].title='^^superscript^^';
s.options[s.length]=new Option('subscript','~~,~~');
s.options[s.length-1].title='~~subscript~~';
s.options[s.length]=new Option('HTML','<html>,<\x2fhtml>');
s.options[s.length-1].title='HTML syntax - <html>...<\x2fhtml>';
s.options[s.length]=new Option('comment','/%,%/');
s.options[s.length-1].title='comment (hidden content) - /%...%/';
s.size=s.length;
s.onclick=function(){ if (!this.value.length) return;
var parts=this.value.split(',');
var prefix=parts[0]; var suffix=parts[1]; var ask=parts[2];
if (ask) {
var val=prompt(ask); if (!val) { Popup.remove(); return false; }
prefix=prefix.replace(/\$1/g,val); suffix=suffix.replace(/\$1/g,val);
}
config.quickEdit.wrapSelection(this.button,prefix,suffix);
Popup.remove(); return false;
};
s.onkeyup=config.quickEdit.keyup;
Popup.show();
s.focus();
return config.quickEdit.processed(event);"
>format</a></html>
/%
|Name|QuickEdit_image|
|Source|http://www.TiddlyTools.com/#QuickEdit_image|
|Version|2.4.3|
|Author|Eric Shulman|
|License|see http://www.TiddlyTools.com/#QuickEditPlugin|
|Type|html|
|Requires|QuickEditPlugin|
|Description|quickedit - embed an image|
Usage: see http://www.TiddlyTools.com/#QuickEditToolbar
%/<html><hide linebreaks><a href="javascript:;" class="tiddlyLink" tabindex="-1"
title="embed an image (jpg/gif/png) - [img[tooltip|URL]] or [img[tooltip|path/to/file.ext]]"
onclick="var fn=config.quickEdit.promptForFilename(
'Enter/select an image file',getLocalPath(document.location.href),'');
if (!fn) return false; /* cancelled by user */
var h=document.location.href; var p=decodeURIComponent(h.substr(0,h.lastIndexOf('/')+1));
if (fn.startsWith(p)) fn=fn.substr(p.length); /* use RELATIVE path/filename.ext */
var tip=prompt('Enter a tooltip for this image',''); if (!tip) tip=''; else tip+='|';
return config.quickEdit.setSelection(this,'[img['+tip+fn+']]');"
>image</a></html>
/%
|Name|QuickEdit_insert|
|Source|http://www.TiddlyTools.com/#QuickEdit_insert|
|Version|2.4.3|
|Author|Eric Shulman|
|License|see http://www.TiddlyTools.com/#QuickEditPlugin|
|Type|html|
|Requires|QuickEditPlugin|
|Description|quickedit - insert content from another tiddler or external file|
Usage: see http://www.TiddlyTools.com/#QuickEditToolbar
%/<html><hide linebreaks><a href="javascript:;" class="tiddlyLink" tabindex="-1"
title="insert content from another tiddler or external file"
onclick="var p=Popup.create(this); if (!p) return false; p.className+=' sticky smallform';
var s2=createTiddlyElement(p,'select'); s2.title='filter by tag';
s2.options[0]=new Option('filter by tag...','');
s2.options[s2.length]=new Option('[all tiddlers]','');
var tags=store.getTags();
for (var t=0; t<tags.length; t++) s2.options[s2.length]=new Option(tags[t][0],tags[t][0]);
s2.onchange=function(){
var tag=this.value;
var tids=tag.length?store.reverseLookup('tags',tag,true):store.reverseLookup('tags','excludeLists');
var list=this.nextSibling.nextSibling;
while (list.length) list.options[0]=null;
var prompt='select a tiddler or file...';
if (tag.length) prompt='select a tagged tiddler ['+tids.length+' matches]...';
list.options[0]=new Option(prompt,'');
if (!tag.length) list.options[list.length]=new Option('[browse for file...]','_file');
for (var t=0; t<tids.length; t++) {
list.options[list.length]=new Option(tids[t].title,tids[t].title);
list.options[list.length-1].title=tids[t].getSubtitle();
}
list.size=Math.min(list.length,10);
list.selectedIndex=0; list.focus();
this.style.width=list.offsetWidth+'px';
if (!tag.length) this.selectedIndex=0;
};
createTiddlyElement(p,'br');
var s=createTiddlyElement(p,'select'); s.button=this;
s.title='select a tiddler or file';
s.options[0]=new Option('select a tiddler or file...','');
s.options[s.length]=new Option('[browse for file...]','_file');
var tids=store.reverseLookup('tags','excludeLists');
for (var t=0; t<tids.length; t++) {
s.options[s.length]=new Option(tids[t].title,tids[t].title);
s.options[s.length-1].title=tids[t].getSubtitle();
}
s.size=Math.min(s.length,10);
s.onclick=function(){ if (!this.value.length) return false;
if (this.value=='_file') {
var fn=config.quickEdit.promptForFilename(
'Enter/select a text file',getLocalPath(document.location.href),'');
if (!fn) return false; /* cancelled by user */
var txt=loadFile(getLocalPath(fn));
if (!txt) { alert('Error: unable to read contents from \0027'+fn+'\0027'); return; }
}
else var txt=store.getTiddlerText(this.value);
if (!txt) {
displayMessage(this.value+' not found');
this.selectedIndex=0; this.focus();
return false;
}
config.quickEdit.setSelection(this.button,txt);
Popup.remove(); return false;
};
s.onkeyup=config.quickEdit.keyup;
Popup.show();
s2.style.width=s.offsetWidth+'px';
s.focus();
return config.quickEdit.processed(event);"
>insert</a></html>
/%
|Name|QuickEdit_link|
|Source|http://www.TiddlyTools.com/#QuickEdit_link|
|Version|2.4.3|
|Author|Eric Shulman|
|License|see http://www.TiddlyTools.com/#QuickEditPlugin|
|Type|html|
|Requires|QuickEditPlugin|
|Description|quickedit - link to tiddler or external file|
Usage: see http://www.TiddlyTools.com/#QuickEditToolbar
%/<html><hide linebreaks><a href="javascript:;" class="tiddlyLink" tabindex="-1"
title="add a link to a tiddler or external file - [[link text|TiddlerName]]"
onclick="var p=Popup.create(this); if (!p) return false; p.className+=' sticky smallform';
var s2=createTiddlyElement(p,'select'); s2.title='filter by tag';
s2.options[0]=new Option('filter by tag...','');
s2.options[s2.length]=new Option('[all tiddlers]','');
var tags=store.getTags();
for (var t=0; t<tags.length; t++) s2.options[s2.length]=new Option(tags[t][0],tags[t][0]);
s2.onchange=function(){
var tag=this.value;
var tids=tag.length?store.reverseLookup('tags',tag,true):store.reverseLookup('tags','excludeLists');
var list=this.nextSibling.nextSibling;
while (list.length) list.options[0]=null;
var prompt='select a tiddler or file...';
if (tag.length) prompt='select a tagged tiddler ['+tids.length+' matches]...';
list.options[0]=new Option(prompt,'');
if (!tag.length) list.options[list.length]=new Option('[browse for file...]','_file');
for (var t=0; t<tids.length; t++) {
list.options[list.length]=new Option(tids[t].title,tids[t].title);
list.options[list.length-1].title=tids[t].getSubtitle();
}
list.size=Math.min(list.length,10);
list.selectedIndex=0; list.focus();
this.style.width=list.offsetWidth+'px';
if (!tag.length) this.selectedIndex=0;
};
createTiddlyElement(p,'br');
var s=createTiddlyElement(p,'select'); s.button=this;
s.title='select a tiddler or file';
s.options[0]=new Option('select a tiddler or file...','');
s.options[s.length]=new Option('[browse for file...]','_file');
var tids=store.reverseLookup('tags','excludeLists');
for (var t=0; t<tids.length; t++) {
s.options[s.length]=new Option(tids[t].title,tids[t].title);
s.options[s.length-1].title=tids[t].getSubtitle();
}
s.size=Math.min(s.length,10);
s.onclick=function(){ if (!this.value.length) return false;
var title=this.value; var txt=title;
if (title=='_file') {
title=config.quickEdit.promptForFilename('Select a file',
getLocalPath(document.location.href),'');
if (!title) { this.selectedIndex=0; this.focus(); return false; }
var txt=title.substr(title.lastIndexOf('/')+1);
}
var txt=prompt('Enter the text to display for this link',txt);
if (!txt) { this.selectedIndex=0; this.focus(); return false; }
config.quickEdit.setSelection(this.button,'[['+txt+'|'+title+']]');
Popup.remove(); return false;
};
s.onkeyup=config.quickEdit.keyup;
Popup.show();
s2.style.width=s.offsetWidth+'px';
s.focus();
return config.quickEdit.processed(event);"
>link</a></html>
/%
|Name|QuickEdit_macro|
|Source|http://www.TiddlyTools.com/#QuickEdit_macro|
|Version|2.4.3|
|Author|Eric Shulman|
|License|see http://www.TiddlyTools.com/#QuickEditPlugin|
|Type|html|
|Requires|QuickEditPlugin|
|Description|quickedit - embed a macro with 'guide text'|
Usage: see http://www.TiddlyTools.com/#QuickEditToolbar
Note:
Optional 'guideText' can be used to add suggested defaults/placeholders for specific macro parameters.
Add guideText to your own plugin-defined macros using:
config.macros.macroName.guideText='guide text goes here';
%/<<tiddler {{
/* define guide text for a few common TW core macros */
config.macros.edit.guideText='fieldname #rows';
config.macros.view.guideText='fieldname (link,wikified,date) format';
config.macros.slider.guideText='cookie TiddlerName label tooltip';
config.macros.option.guideText='(txtCookieName,chkCookieName)';
config.macros.tiddler.guideText='TiddlerName with: params...';
''; /* must return blank to suppress output */ }}>>/%
%/<html><hide linebreaks><a href='javascript:;' class='tiddlyLink' tabindex='-1'
title='add a macro - \<\<macroName ...\>\>'
onclick="var p=Popup.create(this); if (!p) return false; p.className+=' sticky smallform';
var s=createTiddlyElement(p,'select'); s.button=this;
s.options[0]=new Option('select a macro...','');
var macros=[]; for (var m in config.macros) if (config.macros[m].handler) macros.push(m); macros.sort();
for (var i=0; i<macros.length; i++) { var m=macros[i];
var help=config.macros[m].guideText; if (!help) help=''; else help=' '+help;
s.options[s.length]=new Option(m,m+help);
s.options[s.length-1].title='\<\<'+m+help+'\>\>';
}
s.size=Math.min(s.length,15);
s.onclick=function(){ if (!this.value.length) return;
config.quickEdit.setSelection(this.button,'\<\<'+this.value+'\>\>');
Popup.remove(); return false;
};
s.onkeyup=config.quickEdit.keyup;
Popup.show();
s.focus();
return config.quickEdit.processed(event);"
>macro</a></html>
/%
|Name|QuickEdit_replace|
|Source|http://www.TiddlyTools.com/#QuickEdit_replace|
|Version|2.4.3|
|Author|Eric Shulman|
|License|see http://www.TiddlyTools.com/#QuickEditPlugin|
|Type|html|
|Requires|QuickEditPlugin|
|Description|quickedit - find/replace selected text with replacement text|
Usage: see http://www.TiddlyTools.com/#QuickEditToolbar
%/<html><hide linebreaks><a href="javascript:;" class="tiddlyLink" tabindex="-1"
title="find/replace selected text with replacement text"
onclick="var here=story.findContainingTiddler(this); if (!here) return false;
var e=config.quickEdit.getField(here);
var s=config.quickEdit.getSelection(e);
var p=Popup.create(this,null,'popup sticky smallform'); if (!p) return false;
var t=createTiddlyElement(p,'input'); t.onfocus=function(){this.select()};
t.value=s.length?s:'enter target text';
var r=createTiddlyElement(p,'input'); r.onfocus=function(){this.select()};
r.value='enter replacement text';
var tid=here.getAttribute('tiddler');
var b=createTiddlyElement(p,'button',null,null,'?',{tid:tid});
b.style.width='2em';
b.title='FIND/FIND NEXT target text';
b.onclick=function(ev) { /* FIND */
var e=story.getTiddlerField(this.getAttribute('tid'),'text');
if (!e||e.getAttribute('edit')!='text') return;
var t=this.previousSibling.previousSibling;
e.focus();
if (e.setSelectionRange) { /* MOZ */
var newstart=e.value.indexOf(t.value,e.selectionStart+1);
if (newstart==-1) newstart=e.value.indexOf(t.value); /* wrap around */
if (newstart==-1) { alert('\u0022'+t.value+'\u0022 not found'); t.focus(); return; }
e.setSelectionRange(newstart,newstart+t.value.length);
var linecount=e.value.split('\n').length;
var thisline=e.value.substr(0,e.selectionStart).split('\n').length;
e.scrollTop=Math.floor((thisline-1-e.rows/2)*e.scrollHeight/linecount);
} else if (document.selection) { /* IE */
var range=document.selection.createRange();
if(range.parentElement()==e) {
range.collapse(false);
var found=false; try{found=range.findText(t.value,e.value.length,4)}catch(e){}
if (found) range.select();
else { alert('\u0022'+t.value+'\u0022 not found'); t.focus(); }
}
}
};
b=createTiddlyElement(p,'button',null,null,'=',{tid:tid});
b.style.width='2em';
b.title='REPLACE selected text';
b.onclick=function(ev) { /* REPLACE */
var e=story.getTiddlerField(this.getAttribute('tid'),'text');
if (!e||e.getAttribute('edit')!='text') return;
var t=this.previousSibling.previousSibling.previousSibling;
var r=this.previousSibling.previousSibling;
if ( (e.selectionStart!==undefined && e.selectionEnd==e.selectionStart)
|| (document.selection && document.selection.createRange().text==''))
this.previousSibling.click(); /* no selection... do FIND first */
if ( (e.selectionStart!==undefined && e.selectionEnd==e.selectionStart)
|| (document.selection && document.selection.createRange().text==''))
{ t.focus(); return; } /* still no selection... goto target input */
e.focus(); replaceSelection(e,r.value);
};
b=createTiddlyElement(p,'button',null,null,'+',{tid:tid});
b.style.width='2em';
b.title='REPLACE selected text AND FIND NEXT target text';
b.onclick=function(ev) { /* REPLACE and FIND NEXT */
this.previousSibling.click();
this.previousSibling.previousSibling.click();
};
b=createTiddlyElement(p,'button',null,null,'!',{tid:tid});
b.style.width='2em';
b.title='REPLACE ALL occurrences of target text';
b.onclick=function(ev) { /* REPLACE ALL */
var e=story.getTiddlerField(this.getAttribute('tid'),'text');
if (!e||e.getAttribute('edit')!='text') return;
var t=this.previousSibling.previousSibling.previousSibling.previousSibling.previousSibling;
var r=this.previousSibling.previousSibling.previousSibling.previousSibling;
if (!t.value.length) { alert('Please enter the target text'); t.focus(); return; }
var m='This will replace all occurences of:\n\n';
m+='\''+t.value+'\'\n\nwith:\n\n\''+r.value+'\'\n\nAre you sure?';
if (!confirm(m)) { r.focus(); r.select(); return; }
e.value=e.value.replace(new RegExp(t.value.escapeRegExp(),'gm'),r.value);
e.focus(); e.select(); Popup.remove();
};
Popup.show();
if (!s.length) {t.focus();t.select()} else {r.focus();r.select()}
event.cancelBubble=true;if(event.stopPropagation)event.stopPropagation();return false;"
>replace</a></html>
/%
|Name|QuickEdit_sort|
|Source|http://www.TiddlyTools.com/#QuickEdit_sort|
|Version|2.4.3|
|Author|Eric Shulman|
|License|see http://www.TiddlyTools.com/#QuickEditPlugin|
|Type|html|
|Requires|QuickEditPlugin|
|Description|quickedit - sort lines of text|
Usage: see http://www.TiddlyTools.com/#QuickEditToolbar
%/<html><hide linebreaks><a href="javascript:;" class="tiddlyLink" tabindex="-1"
title="sort lines of text"
onclick="var p=Popup.create(this); if (!p) return false; p.className+=' sticky smallform';
var s=createTiddlyElement(p,'select'); s.button=this;
s.options[0]=new Option('select sort order...','');
s.options[s.length]=new Option('ascending','A');
s.options[s.length-1].title='ascending';
s.options[s.length]=new Option('descending','D');
s.options[s.length-1].title='descending';
s.size=s.length;
s.onclick=function(){ if (!this.value.length) return;
var e=config.quickEdit.getField(this.button); if (!e) return false;
var lines=config.quickEdit.getSelection(e).split('\n').sort();
if (this.value=='D') lines=lines.reverse();
replaceSelection(e,lines.join('\n'));
e.focus();
Popup.remove(); return false;
};
s.onkeyup=config.quickEdit.keyup;
Popup.show();
s.focus();
return config.quickEdit.processed(event);"
>sort</a></html>
/%
|Name|QuickEdit_split|
|Source|http://www.TiddlyTools.com/#QuickEdit_split|
|Version|2.4.3|
|Author|Eric Shulman|
|License|see http://www.TiddlyTools.com/#QuickEditPlugin|
|Type|html|
|Requires|QuickEditPlugin|
|Description|quickedit - move selection to new tiddler and insert link, embedded tiddler, or slider|
Usage: see http://www.TiddlyTools.com/#QuickEditToolbar
Based on ideas originally developed by YannPerrin
(http://yann.perrin.googlepages.com/twkd.html#easySlicer)
%/<html><hide linebreaks><a href="javascript:;" class="tiddlyLink" tabindex="-1"
title="move selection to new tiddler and insert link, embedded tiddler, or slider"
onclick="var p=Popup.create(this); if (!p) return false; p.className+=' sticky smallform';
p.style.whiteSpace='nowrap';
var i=createTiddlyElement(p,'input');
i.defaultValue='Enter a new tiddler title';
i.onfocus=function(){this.select()};
var s=createTiddlyElement(p,'select'); s.button=this;
s.options[0]=new Option('select type...','');
s.options[0].title='select split type';
s.options[1]=new Option('link','link');
s.options[1].title='replace with [[TiddlerName]]';
s.options[2]=new Option('embed','embed');
s.options[2].title='replace with \<\<tiddler TiddlerName\>\>';
s.options[3]=new Option('slider','slider');
s.options[3].title='replace with \<\<slider \u0022\u0022 [[TiddlerName]] [[label]] [[tooltip]]\>\>';
s.onchange=function(){
if (s.previousSibling.value==s.previousSibling.defaultValue)
{ alert('A tiddler title is required'); s.selectedIndex=0; s.previousSibling.focus(); return false; }
var tid=s.previousSibling.value;
if (store.tiddlerExists(tid) && !confirm(config.messages.overwriteWarning.format([tid])))
{ s.previousSibling.focus(); return false; }
switch(s.value) {
case 'link':
var newtxt='[['+tid+']]';
break;
case 'embed':
var newtxt='\<\<tiddler [['+tid+']]\>\>';
break;
case 'slider':
var label=prompt('Enter a slider label',tid);
if (!label) { Popup.remove(); return false; }
var tip=prompt('Enter a slider tooltip',label);
if (!tip) { Popup.remove(); return false; }
var newtxt='\<\<slider \u0022\u0022 [['+tid+']] [['+label+']] [['+tip+']]\>\>';
break;
}
var txt=config.quickEdit.getSelection(config.quickEdit.getField(this.button));
store.saveTiddler(tid,tid,txt,config.options.txtUserName,new Date(),[],{});
story.displayTiddler(story.findContainingTiddler(this.button),tid);
config.quickEdit.setSelection(this.button,newtxt);
Popup.remove(); return false;
};
Popup.show();
event.cancelBubble=true;if(event.stopPropagation)event.stopPropagation();return false;"
>split</a></html>
$\Gamma , A\vdash A$ (azaz a [[szintaktikai következményreláció|Szintaktikai következményreláció]] reflexív).
*Bizonyítás
**Jelölés: a rövidség kedvéért $\Gamma\cup \{A\}$ helyett '$\Gamma , A$'-t írunk.
**Mivel $A\in \Gamma\cup \{A\}$ így a [[szintaktikai következményreláció|Szintaktikai következményreláció]] definíciójának második pontja miatt $\Gamma\cup \{A\}\vdash A$, azaz $\Gamma , A\vdash A$.
/%
|Name|RefreshPageDisplay|
|Source|http://www.TiddlyTools.com/#RefreshPageDisplay|
|Version|1.0.0|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|script|
|Requires|InlineJavascriptPlugin|
|Overrides||
|Description|Refresh all tiddlers and page elements without restarting|
%/<script label="$1" title="Redisplay current page content WITHOUT RESTARTING!">
story.forEachTiddler(function(t,e){story.refreshTiddler(t,null,true)});
refreshDisplay();
return false;
</script><script>
if ("$1"=="$"+"1") place.lastChild.innerHTML="refresh page display";
</script>
<html><input type="button" value="Refresh Styles" onClick="javascript:refreshStyles('StyleSheet');" name="button" class="btn" onmouseover="this.className='btn btnhov'" onmouseout="this.className='btn'"/></html>
/%
|Name|RefreshTiddler|
|Source|http://www.TiddlyTools.com/#RefreshTiddler|
|Version|0.0.0|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|script|
|Requires|InlineJavascriptPlugin|
|Overrides||
|Description|link that forces a refresh of the current tiddler|
usage: <<tiddler RefreshTiddler with: "label" "tooltip">>
where label and tooltip are optional and default to "refresh" and "redisplay tiddler content", respectively.
%/<script label="refresh" title="redisplay tiddler content">
var here=story.findContainingTiddler(place); if (!here) return false;
story.refreshTiddler(here.getAttribute("tiddler"),null,true);
return false;
</script><script>
if ("$1"!="$"+"1") place.lastChild.innerHTML="$1";
if ("$2"!="$"+"2") place.lastChild.title="$2";
</script>
[[►|RollYourOwn]]''To put Treeview in you own existing ~TiddlyWiki'' you will need a version of TW that incorporates the jQuery library, __TW version 2.5.0__ . (Existing [[TW Notes|http://twnotes.tiddlyspot.com/]] and [[TWT-Notes|http://twt-notes.tiddlyspot.com/]] menus can be incorporated into your new Treemenu.)
<<<
''To start a new'' ~TiddlyWiki with Treemenu you will need:
# ~TreeviewPluginPlugin from http://treeview.tiddlyspot.com/
# The code in MarkupPostBody
# The tiddler JqueryTreeviewCSS inserted into your ~StyleSheet
# The jQuery cookie plugin [[Cookie plugin]]
# The EmbeddedImages requires AttachFilePluginFormatters
# TaggerPlugin this requires DeprecatedFunctionsPlugin
# InlineJavascriptPlugin
# NewHerePlugin
<<<
{{center{If this seems too hard <html><a href='http://twt-treeview.tiddlyspot.com/download' class='button'>''Download TWT Treeview''</a></html>it is already set up.}}}
''Additional''
<<<
The [[NewHerePlugin]] requires this in ViewTemplate:
|{{{<div class='toolbar' macro='toolbar [[ToolbarCommands::ViewToolbar]]'> <span style="padding-right:0em;" macro='tagger'></span ><span macro='newHere label:"add:subtopic" tag:"eureeka"'></span></div>}}}|
PageTemplate requires this:
|{{{<div id='mainMenu' refresh='content' force='true' tiddler='MainMenu'></div>}}}|
<<<
!!Definíció (részformula a nulladrendű nyelvben)
Legyen $L^{(0)}=\langle LC, Con, Form \rangle$ egy tetszőleges nulladrendű nyelv, $A\in Form$ pedig a nyelv tetszőleges formulája.
Az $A$ formula részformuláinak halmaza az a legszűkebb halmaz [jelölés: $RF(A)$], amelyre teljesül, hogy
# $A\in RF(A)$, azaz az $A$ formula részformulája önmagának;
#ha $\neg B\in RF(A)$, akkor $B\in RF(A)$;
#ha $(B\supset C)\in RF(A)$, akkor $B,C\in RF(A)$;
#ha $(B\wedge C)\in RF(A)$, akkor $B,C\in RF(A)$;
#ha $(B\vee C)\in RF(A)$, akkor $B,C\in RF(A)$;
#ha $(B\equiv C)\in RF(A)$, akkor $B,C\in RF(A)$.
!!Definíció (részformula definíciója közvetlen részformulák segítségével nulladrendű nyelv esetén)
Legyen $L^{(0)}=\langle LC, Con, Form \rangle$ egy tetszőleges nulladrendű nyelv, $A\in Form$ pedig a nyelv tetszőleges formulája.
Egy $A$ formula részformuláinak halmaza az a legszűkebb halmaz [jelölés: $RF(A)$], amelyre teljesül, hogy
#$A\in RF(A)$, (azaz az $A$ formula részformulája önmagának);
#ha $A'\in RF(A)$ és $B$ közvetlen részformulája $A'$-nek, akkor $B\in RF(A)$ (azaz, ha egy $A'$ formula részformulája $A$-nak, akkor $A'$ összes közvetlen részformulája is részformulája $A$-nak).
*Shift + left mouse button (LMB) click -- show/hide toolbar
*LMB drag and drop -- pan
*Mouse wheel -- zoom in/out (also available in the toolbar)
*Shift + Mouse wheel -- resize (also available in the toolbar)
/***
|Name|SaveAsPlugin|
|Source|http://www.TiddlyTools.com/#SaveAsPlugin|
|Documentation|http://www.TiddlyTools.com/#SaveAsPlugin|
|Version|1.0.1|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|plugin|
|Requires||
|Overrides||
|Description|Save current document to a different path/filename|
!!!!!Documentation
<<<
Syntax: {{{<<saveAs>>}}}
<<saveAs>>
<<<
!!!!!Revisions
<<<
2008.04.12 [1.0.1] automatically add "saveAs" to backstage commands
2008.04.12 [1.0.0] initial release - derived from [[NewDocumentPlugin]]
<<<
!!!!!Code
***/
//{{{
version.extensions.SaveAsPlugin= {major: 1, minor: 0, revision: 1, date: new Date(2008,4,12)};
config.macros.saveAs = {
label: "save as...",
prompt: "Save current document to a different path/file",
filePrompt: "Please select or enter a target path/filename",
defaultFilename: "new.html",
okmsg: "%0 tiddlers written to %1",
failmsg: "An error occurred while creating %0",
handler: function(place,macroName,params)
{ var btn=createTiddlyButton(place,this.label,this.prompt,this.go); },
go: function() {
// make sure we are local
if (window.location.protocol!="file:") {
alert(config.messages.notFileUrlError);
if (store.tiddlerExists(config.messages.saveInstructions))
story.displayTiddler(null,config.messages.saveInstructions);
return;
}
// get current saved file
var currPath=getLocalPath(window.location.href);
var original=loadFile(currPath);
if (!original) {
alert(config.messages.cantSaveError);
if (store.tiddlerExists(config.messages.saveInstructions))
story.displayTiddler(null,config.messages.saveInstructions);
return;
}
// get new target path/filename
var newPath=currPath;
var slashpos=newPath.lastIndexOf("/"); if (slashpos==-1) slashpos=newPath.lastIndexOf("\\");
if (slashpos!=-1) newPath=newPath.substr(0,slashpos+1); // trim filename
var newFile=currPath.substr(newPath.length); // trim path
if (!newFile.length) newFile=config.macros.saveAs.defaultFilename;
var target=config.macros.saveAs.ask(config.macros.saveAs.filePrompt,newPath,newFile);
if (!target) return; // cancelled by user
// if specified file does not include a path, assemble fully qualified path and filename
var slashpos=target.lastIndexOf("/"); if (slashpos==-1) slashpos=target.lastIndexOf("\\");
if (slashpos==-1) target=target+config.macros.saveAs.defaultFilename;
var link="file:///"+target.replace(/\\/g,'/'); // link for message text
// write target
if (saveFile(target,updateOriginal(original)))
var msg=config.macros.saveAs.okmsg.format([store.getTiddlers("title").length,target]);
else
var msg=config.macros.saveAs.failmsg.format([target]);
clearMessage(); displayMessage(msg,link);
},
ask: function(msg,path,file) {
if(window.Components) { // moz
try {
netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');
var nsIFilePicker = window.Components.interfaces.nsIFilePicker;
var picker = Components.classes['@mozilla.org/filepicker;1'].createInstance(nsIFilePicker);
picker.init(window, msg, nsIFilePicker.modeSave);
var thispath = Components.classes['@mozilla.org/file/local;1'].createInstance(Components.interfaces.nsILocalFile);
thispath.initWithPath(path);
picker.displayDirectory=thispath;
picker.defaultExtension='html';
picker.defaultString=file;
picker.appendFilters(nsIFilePicker.filterAll|nsIFilePicker.filterText|nsIFilePicker.filterHTML);
if (picker.show()!=nsIFilePicker.returnCancel) var result=picker.file.persistentDescriptor;
}
catch(e) { alert('error during local file access: '+e.toString()) }
}
else { // IE
try { // XP/Vista only
var s = new ActiveXObject('UserAccounts.CommonDialog');
s.Filter='All files|*.*|Text files|*.txt|HTML files|*.htm;*.html|';
s.FilterIndex=3; // default to HTML files;
s.InitialDir=path;
s.FileName=file;
if (s.showOpen()) var result=s.FileName;
}
catch(e) { var result=prompt(msg,path+file); } // fallback for non-XP IE
}
return result;
}
};
//}}}
//{{{
// automatically add saveAs to backstage
config.tasks.saveAs = {
text: "saveAs",
tooltip: config.macros.saveAs.prompt,
action: function(){ clearMessage(); config.macros.saveAs.go(); }
}
config.backstageTasks.splice(config.backstageTasks.indexOf("save")+1,0,"saveAs");
//}}}
/***
|Name:|SaveCloseTiddlerPlugin|
|Description:|Provides two extra toolbar commands, saveCloseTiddler and cancelCloseTiddler|
|Version:|3.0 ($Rev: 5502 $)|
|Date:|$Date: 2008-06-10 23:31:39 +1000 (Tue, 10 Jun 2008) $|
|Source:|http://mptw.tiddlyspot.com/#SaveCloseTiddlerPlugin|
|Author:|Simon Baird <simon.baird@gmail.com>|
|License:|http://mptw.tiddlyspot.com/#TheBSDLicense|
To use these you must add them to the tool bar in your EditTemplate
***/
//{{{
merge(config.commands,{
saveCloseTiddler: {
text: 'done/close',
tooltip: 'Save changes to this tiddler and close it',
handler: function(ev,src,title) {
var closeTitle = title;
var newTitle = story.saveTiddler(title,ev.shiftKey);
if (newTitle)
closeTitle = newTitle;
return config.commands.closeTiddler.handler(ev,src,closeTitle);
}
},
cancelCloseTiddler: {
text: 'cancel/close',
tooltip: 'Undo changes to this tiddler and close it',
handler: function(ev,src,title) {
// the same as closeTiddler now actually
return config.commands.closeTiddler.handler(ev,src,title);
}
}
});
//}}}
/***
|Name|SearchOptionsPlugin|
|Source|http://www.TiddlyTools.com/#SearchOptionsPlugin|
|Documentation|http://www.TiddlyTools.com/#SearchOptionsPluginInfo|
|Version|2.9.2|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|plugin|
|Requires||
|Overrides|Story.prototype.search, TiddlyWiki.prototype.search, config.macros.search.onKeyPress|
|Options|##Configuration|
|Description|extend core search function with additional user-configurable options|
Extend core search function with additional user-configurable options including selecting which data items to search, enabling/disabling incremental key-by-key searches, and generating a ''list of matching tiddler'' instead of immediately displaying all matches. This plugin also adds syntax for rendering 'search links' within tiddler content to embed one-click searches using pre-defined 'hard-coded' search terms.
!!!!!Documentation
>see [[SearchOptionsPluginInfo]]
!!!!!Configuration
<<<
Search in:
<<option chkSearchTitles>> titles <<option chkSearchText>> text <<option chkSearchTags>> tags <<option chkSearchFields>> fields <<option chkSearchShadows>> shadows
<<option chkSearchList>> Show list of matches
<<option chkSearchListTiddler>> Write list to [[SearchResults]] tiddler
<<option chkIncrementalSearch>> Incremental (key-by-key) searching
<<option chkSearchTitlesFirst>> Show title matches first
<<option chkSearchByDate>> Sort matching tiddlers by date
<<<
!!!!!Revisions
<<<
2008.08.25 [2.9.2] added animation to #searchResults DIV. Also, DIV is only auto-created if it does not exist ... and when closed, the DIV is simply hidden rather than removed. This allows custom placement of search results report in the PageTemplate definition.
|please see [[SearchOptionsPluginInfo]] for additional revision details|
2005.10.18 [1.0.0] Initial Release
<<<
!!!!!Code
***/
//{{{
version.extensions.searchOptions = {major: 2, minor: 9, revision: 2, date: new Date(2008,8,25)};
if (config.options.chkSearchTitles===undefined) config.options.chkSearchTitles=true;
if (config.options.chkSearchText===undefined) config.options.chkSearchText=true;
if (config.options.chkSearchTags===undefined) config.options.chkSearchTags=true;
if (config.options.chkSearchFields===undefined) config.options.chkSearchFields=true;
if (config.options.chkSearchTitlesFirst===undefined) config.options.chkSearchTitlesFirst=true;
if (config.options.chkSearchList===undefined) config.options.chkSearchList=true;
if (config.options.chkSearchListTiddler===undefined) config.options.chkSearchListTiddler=false;
if (config.options.chkSearchByDate===undefined) config.options.chkSearchByDate=false;
if (config.options.chkIncrementalSearch===undefined) config.options.chkIncrementalSearch=true;
if (config.options.chkSearchShadows===undefined) config.options.chkSearchShadows=true;
if (config.macros.search.reportTitle==undefined)
config.macros.search.reportTitle="SearchResults"; // note: not a cookie!
//}}}
//{{{
// searchLink formatter:
// syntax: [search[text to find]] OR [search[text to display|text to find]]
config.formatters.push( {
name: "searchLink",
match: "\\[search\\[",
lookaheadRegExp: /\[search\[(.*?)(?:\|(.*?))?\]\]/mg,
prompt: "search for: '%0'",
handler: function(w)
{
this.lookaheadRegExp.lastIndex = w.matchStart;
var lookaheadMatch = this.lookaheadRegExp.exec(w.source);
if(lookaheadMatch && lookaheadMatch.index == w.matchStart) {
var label=lookaheadMatch[1];
var text=lookaheadMatch[2]||label;
var prompt=this.prompt.format([text]);
var btn=createTiddlyButton(w.output,label,prompt,
function(){story.search(this.getAttribute("searchText"))},"searchLink");
btn.setAttribute("searchText",text);
w.nextMatch = this.lookaheadRegExp.lastIndex;
}
}
});
//}}}
//{{{
config.macros.search.searchOptions_onKeyPress = config.macros.search.onKeyPress;
config.macros.search.onKeyPress = function(e)
{
if(!e) var e = window.event;
if (config.options.chkIncrementalSearch || e.keyCode==13 || e.keyCode==10 || e.keyCode==27)
config.macros.search.searchOptions_onKeyPress.apply(this,arguments);
}
//}}}
//{{{
Story.prototype.search = function(text,useCaseSensitive,useRegExp)
{
highlightHack = new RegExp(useRegExp ? text : text.escapeRegExp(),useCaseSensitive ? "mg" : "img");
var matches = store.search(highlightHack,config.options.chkSearchByDate?"modified":"title","excludeSearch");
if (config.options.chkSearchByDate) matches=matches.reverse(); // most recent changes first
var q = useRegExp ? "/" : "'";
clearMessage();
if (!matches.length) {
if (config.options.chkSearchListTiddler) discardSearchResults();
displayMessage(config.macros.search.failureMsg.format([q+text+q]));
} else {
if (config.options.chkSearchList||config.options.chkSearchListTiddler)
reportSearchResults(text,matches);
else {
var titles = []; for(var t=0; t<matches.length; t++) titles.push(matches[t].title);
this.closeAllTiddlers(); story.displayTiddlers(null,titles);
displayMessage(config.macros.search.successMsg.format([matches.length, q+text+q]));
}
}
highlightHack = null;
}
//}}}
//{{{
TiddlyWiki.prototype.search = function(searchRegExp,sortField,excludeTag)
{
var candidates = this.reverseLookup("tags",excludeTag,false,sortField);
// scan for matching titles first...
var results = [];
if (config.options.chkSearchTitles) {
for(var t=0; t<candidates.length; t++)
if(candidates[t].title.search(searchRegExp)!=-1)
results.push(candidates[t]);
if (config.options.chkSearchShadows)
for (var t in config.shadowTiddlers)
if ((t.search(searchRegExp)!=-1) && !store.tiddlerExists(t))
results.push((new Tiddler()).assign(t,config.shadowTiddlers[t]));
}
// then scan for matching text, tags, or field data
for(var t=0; t<candidates.length; t++) {
if (config.options.chkSearchText && candidates[t].text.search(searchRegExp)!=-1)
results.pushUnique(candidates[t]);
if (config.options.chkSearchTags && candidates[t].tags.join(" ").search(searchRegExp)!=-1)
results.pushUnique(candidates[t]);
if (config.options.chkSearchFields && store.forEachField!=undefined) // requires TW2.1 or above
store.forEachField(candidates[t],
function(tid,field,val) {
if (val.search(searchRegExp)!=-1) results.pushUnique(candidates[t]);
},
true); // extended fields only
}
// then check for matching text in shadows
if (config.options.chkSearchShadows)
for (var t in config.shadowTiddlers)
if ((config.shadowTiddlers[t].search(searchRegExp)!=-1) && !store.tiddlerExists(t))
results.pushUnique((new Tiddler()).assign(t,config.shadowTiddlers[t]));
// if not 'titles first', or sorting by modification date, re-sort results to so titles, text, tag and field matches are mixed together
if(!sortField) sortField = "title";
var bySortField=function (a,b) {if(a[sortField] == b[sortField]) return(0); else return (a[sortField] < b[sortField]) ? -1 : +1; }
if (!config.options.chkSearchTitlesFirst || config.options.chkSearchByDate) results.sort(bySortField);
return results;
}
//}}}
//{{{
// SearchResults REPORT GENERATOR
// hijack core <<search>> macro to add "report" and "simple inline" output
config.macros.search.SOP_handler=config.macros.search.handler;
config.macros.search.handler = function(place,macroName,params)
{
// if "report", use SearchOptionsPlugin report generator for inline output
if (params[1]&¶ms[1].substr(0,6)=="report") {
var keyword=params[0];
var options=params[1].split("=")[1]; // split "report=option+option+..."
var heading=params[2]?params[2].unescapeLineBreaks():"";
var matches=store.search(new RegExp(keyword.escapeRegExp(),"img"),"title","excludeSearch");
if (matches.length) wikify(heading+window.formatSearchResults(keyword,matches,options),place);
} else if (params[1]) {
var keyword=params[0];
var heading=params[1]?params[1].unescapeLineBreaks():"";
var seperator=params[2]?params[2].unescapeLineBreaks():", ";
var matches=store.search(new RegExp(keyword.escapeRegExp(),"img"),"title","excludeSearch");
if (matches.length) {
var out=[];
for (var m=0; m<matches.length; m++) out.push("[["+matches[m].title+"]]");
wikify(heading+out.join(seperator),place);
}
} else
config.macros.search.SOP_handler.apply(this,arguments);
};
if (!window.reportSearchResults) window.reportSearchResults=function(text,matches)
{
// create/update the tiddler
var body=window.formatSearchResults(text,matches);
if (config.options.chkSearchListTiddler) {
var title=config.macros.search.reportTitle;
var who=config.options.txtUserName;
var when=new Date();
var tags="excludeLists excludeSearch temporary";
var tiddler=store.getTiddler(title); if (!tiddler) tiddler=new Tiddler();
tiddler.set(title,body,who,when,tags);
store.addTiddler(tiddler);
story.closeTiddler(title);
story.displayTiddler(null,title);
store.notify(title,true);
} else {
var sr=document.getElementById("searchResults");
if (!sr) {
sr=createTiddlyElement(null,"div","searchResults","tiddler");
var da=document.getElementById("displayArea");
da.insertBefore(sr,da.firstChild);
}
addClass(sr,"tiddler");
sr.onmouseover = function(e){ addClass(this,"selected"); }
sr.onmouseout = function(e){ removeClass(this,"selected"); }
sr.style.zIndex = "1000";
removeChildren(sr);
if (config.macros.moveablePanel) wikify("<<moveablePanel>>",sr); /* see MoveablePanelPlugin */
var tb=createTiddlyElement(sr,"div",null,"toolbar");
var b=createTiddlyButton(tb, "open all", "open all matching tiddlers", function() {
story.displayTiddlers(null,this.getAttribute("list").readBracketedList());
},"button");
var list=""; for(var t=0;t<matches.length;t++) list+='[['+matches[t].title+']] ';
b.setAttribute("list",list);
var b=createTiddlyButton(tb, "close", "dismiss search results", function() {
var sr=document.getElementById("searchResults");
if(!config.options.chkAnimate) {
sr.style.display="none";
removeChildren(sr);
} else {
var s=new Slider(sr,false,false,"children");
anim.startAnimating(s);
}
}, "button");
createTiddlyText(createTiddlyElement(sr,"div",null,"title"),"Search Results");
wikify(body,createTiddlyElement(sr,"div",null,"viewer"));
if (sr.style.display!="block") {
if(!config.options.chkAnimate)
sr.style.display="block";
else {
var s=new Slider(sr,true,false,"none");
s.callback=function(e,p){e.style.overflow="visible";}
anim.startAnimating(s);
}
}
window.scrollTo(0,ensureVisible(sr));
}
}
if (!window.formatSearchResults) window.formatSearchResults=function(text,matches,opt)
{
var title=config.macros.search.reportTitle
var q = config.options.chkRegExpSearch ? "/" : "'";
var body="";
if (!opt) var opt="all";
var parts=opt.split("+");
for (var i=0; i<parts.length; i++) { var p=parts[i].toLowerCase();
if (p=="summary"||p=="all")
body+=window.formatSearchResults_summary(text,matches);
if (p=="list"||p=="all")
body+=window.formatSearchResults_list(text,matches);
if (p=="buttons"||p=="all")
body+=window.formatSearchResults_buttons(text,matches);
if (p=="again"||p=="all")
body+=window.formatSearchResults_again(text,matches);
}
return body;
}
if (!window.formatSearchResults_summary) window.formatSearchResults_summary=function(text,matches)
{
// summary: nn tiddlers found matching '...', options used
var title=config.macros.search.reportTitle
var q = config.options.chkRegExpSearch ? "/" : "'";
var body="";
body+="''"+config.macros.search.successMsg.format([matches.length,q+"{{{"+text+"}}}"+q])+"''\n";
body+="^^//searched in:// ";
body+=(config.options.chkSearchTitles?"''titles'' ":"");
body+=(config.options.chkSearchText?"''text'' ":"");
body+=(config.options.chkSearchTags?"''tags'' ":"");
body+=(config.options.chkSearchFields?"''fields'' ":"");
body+=(config.options.chkSearchShadows?"''shadows'' ":"");
if (config.options.chkCaseSensitiveSearch||config.options.chkRegExpSearch) {
body+=" //with options:// ";
body+=(config.options.chkCaseSensitiveSearch?"''case sensitive'' ":"");
body+=(config.options.chkRegExpSearch?"''text patterns'' ":"");
}
body+="^^\n";
return body;
}
if (!window.formatSearchResults_list) window.formatSearchResults_list=function(text,matches)
{
// bullet list of links to matching tiddlers
var body="";
for(var t=0;t<matches.length;t++) {
var date=config.options.chkSearchByDate?(matches[t].modified.formatString('YYYY.0MM.0DD 0hh:0mm')+" "):"";
body+="* "+date+"[["+matches[t].title+"]]\n";
}
return body;
}
if (!window.formatSearchResults_buttons) window.formatSearchResults_buttons=function(text,matches)
{
// embed buttons only if writing SearchResults to tiddler
if (!config.options.chkSearchListTiddler) return "";
// open all matches button
var body="";
var title=config.macros.search.reportTitle;
body+="@@diplay:block;<html><input type=\"button\" href=\"javascript:;\" ";
body+="onclick=\"story.displayTiddlers(null,["
for(var t=0;t<matches.length;t++)
body+="'"+matches[t].title.replace(/\'/mg,"\\'")+"'"+((t<matches.length-1)?", ":"");
body+="],1);\" accesskey=\"O\" value=\"open all matching tiddlers\"></html> ";
// discard search results button
body+="<html><input type=\"button\" href=\"javascript:;\" ";
body+="onclick=\"discardSearchResults()\" value=\"discard "+title+"\"></html>";
body+="@@\n";
return body;
}
if (!window.formatSearchResults_again) window.formatSearchResults_again=function(text,matches)
{
var title=config.macros.search.reportTitle
var body="";
// search again
body+="!!!Search again:\n";
body+="<<search \""+text+"\">>\n";
body+="<<option chkSearchTitles>>titles ";
body+="<<option chkSearchText>>text ";
body+="<<option chkSearchTags>>tags";
body+="<<option chkSearchFields>>fields";
body+="<<option chkSearchShadows>>shadows";
body+="<br>";
body+="<<option chkCaseSensitiveSearch>>case-sensitive ";
body+="<<option chkRegExpSearch>>text patterns";
body+="<<option chkSearchByDate>>sort by date";
body+="<br>";
return body;
}
if (!window.discardSearchResults) window.discardSearchResults=function()
{
// remove the tiddler
story.closeTiddler(config.macros.search.reportTitle);
store.deleteTiddler(config.macros.search.reportTitle);
store.notify(config.macros.search.reportTitle,true);
}
//}}}
*${\Gamma , A\vdash B}\over{\Gamma , \neg B\vdash \neg A}$
*${\Gamma , A\vdash \neg B}\over{\Gamma , B\vdash \neg A}$
*${\Gamma , \neg A\vdash B}\over{\Gamma , \neg B\vdash A}$
*${\Gamma , \neg A\vdash \neg B}\over{\Gamma , B\vdash A}$
<<tiddler ShowSimilarTiddlers with: "CSS" limit>>
<script>
var out=[]; var similar={}; var rank=[];
var here=story.findContainingTiddler(place);
var title='$1'!='$'+'1'?'$1':here?here.getAttribute('tiddler'):'';
var limit='$2'!='$'+'2'?'$2':1;
var tid=store.getTiddler(title); if (!tid) return;
var tids=store.reverseLookup('tags','excludeLists'); // get all tiddlers (including from IncludePlugin)
for (var i=0; i<tids.length; i++) { var t=tids[i];
if (t.title==tid.title) continue;
var tags=[]; for (var j=0; j<t.tags.length; j++)
if (tid.tags.contains(t.tags[j])) tags.push(t.tags[j]);
if (tags.length >= limit) {
similar[tids[i].title]=tags;
if (!rank[tags.length]) rank[tags.length]=new Array();
rank[tags.length].push(tids[i].title);
}
}
for (var r=rank.length-1; r>=0; r--) { if (!rank[r]) continue;
out.push('*%0 shared tags:'.format([r,rank[r].length]));
for (var t=0; t<rank[r].length; t++)
out.push('##[[%0]] ~~("""%1""")~~'.format([rank[r][t],similar[rank[r][t]].join(', ')]));
}
return out.join('\n');
</script>
/%
|Name|ShowSimilarTiddlers|
|Source|http://www.TiddlyTools.com/#ShowSimilarTiddlers|
|Version|1.2.0|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|script|
|Requires|InlineJavascriptPlugin|
|Overrides||
|Description|list tiddlers, by number of shared tags|
Usage: <<tiddler ShowSimilarTiddlers with: System limit>>
where:
'TiddlerName' (optional) indicates the title of the tiddler whose tags are to be matched (default=current tiddler)
'limit' (optional) only reports tiddlers with at least the indicated number of tags in common (default=1)
%/<script>
var out=[]; var similar={}; var rank=[];
var here=story.findContainingTiddler(place);
var title='$1'!='$'+'1'?'$1':here?here.getAttribute('tiddler'):'';
var limit='$2'!='$'+'2'?'$2':1;
var tid=store.getTiddler(title); if (!tid) return;
var tids=store.reverseLookup('tags','excludeLists'); // get all tiddlers (including from IncludePlugin)
for (var i=0; i<tids.length; i++) { var t=tids[i];
if (t.title==tid.title) continue;
var tags=[]; for (var j=0; j<t.tags.length; j++)
if (tid.tags.contains(t.tags[j])) tags.push(t.tags[j]);
if (tags.length >= limit) {
similar[tids[i].title]=tags;
if (!rank[tags.length]) rank[tags.length]=new Array();
rank[tags.length].push(tids[i].title);
}
}
for (var r=rank.length-1; r>=0; r--) { if (!rank[r]) continue;
out.push('*%0 shared tags:'.format([r,rank[r].length]));
for (var t=0; t<rank[r].length; t++)
out.push('##[[%0]] ~~("""%1""")~~'.format([rank[r][t],similar[rank[r][t]].join(', ')]));
}
return out.join('\n');
</script>
@@color:#800;Tiddlers tagged with TreeviewPackage (plugins, macros and tweaks)@@
<<tiddler ToggleRightSidebar with: "Sidebar »">>
{{twocolumns{
<script>
// get all tiddlers tagged with "TreeviewPackage"
var tids=store.getTaggedTiddlers("TreeviewPackage");
// keep only tiddlers *also* tagged with New
var list=[];
for (var t=0; t<tids.length; t++)
if (tids[t].isTagged("TreeviewPackage")) list.push(tids[t]);
// create output list of tiddler titles, one per line
var out="";
for (var t=0; t<list.length; t++) out+="#[["+list[t].title+"]]\n";
return out;
</script>
}}}
@@padding-left:0.7em;font-size:9px;color:#aaa;TW Ver:<<version>>@@
@@padding-left:0.7em;@@{{button{goto}}}
<<gotoTiddler>><<tiddler MakeTiddlers>><<newJournal "YYYY.0MM.0DD" "journal">><<saveChanges>><<doBackup>>+++[controls »]<<tiddler TspotSidebar>>
1:<<switchTheme BlueTheme>>
2:<<switchTheme GreenTheme>>
3:<<switchTheme TWHelpTheme>>
4:<<attach>>
5:<<permaview>>===<<slider chkSliderOptionsPanel OptionsPanel "options »" "Change TiddlyWiki advanced options">>
@@padding:0.3em;@@<<slider chkSliderSideBarTabs SideBarTabsSlider 'index »' 'tiddlers, timeline, all, tags'>>
<<tabs txtMainTab "Timeline" "Timeline" TabTimeline "All" "All tiddlers" TabAll "Tags" "All tags" TabTags "More" "More lists" TabMore>>
/***
!!!SimonsNiceTable /%==================================================%/
***/
.title { color:[[ColorPalette::SecondaryDark]]; }
.niceTable td, .niceTable th, .niceTable tr {
border-style:none;
}
.niceTable td, .niceTable th {
vertical-align:top;
padding:0.5em;
}
.niceTable table {
border:1px #aaa solid;
background-color:#f8f8f8;
}
.niceTable td img {
border:1px solid #555;
text-align:center;
margin:0 1em 1em 0;
}
.niceTable th {
background-color:#f8f8f8;
color:#555;
font-size:90%;
font-weight:bold;
text-align:right;
}
!Let's start!
Press F11 to go fullscreen and adjust the font sizes with Ctrl++ Ctrl+- (or Ctrl+mousewheel).
{{comment{
!Test
@@You can hide text on a slide so it won't be displayed in the slide show@@}}}
{{noClicks{
This button can be clicked without advancing the slide show: <<tag show>>}}}
Now press ''B'' to pause/restart the presentation.
-s-
!Main features
Most features that are usually found in presentation software are available.
*Build a slide show from a list of tiddlers' titles or selecting a specific tag with optional sort
*Fully customizable presentations (CSS knowledge required)
*Auto-advancing slide show (kiosk mode) and looping (circular mode)
*Incremental display (several overlays or layers in a slide)
*Optional clock with 3 different modes:
**local time
**elapsed time of presentation
**countdown clock for a given period
*Screen blanking for pauses
-s-
!Overlays
To see how incremental display works use the left and right mouse buttons.
{{overlay1{You can}}} {{overlay2{present things}}} {{overlay1{in an arbitrary order!!!}}}
{{overlay3{Its a bit harder with lists but it works:}}}
<html>
<ol>
<li class="overlay4">First item</li>
<li class="overlay5">Second item</li>
<li class="overlay4">Last item</li>
</ol>
</html>{{comment{You can hide comments on a slide that won't display in the slide show}}}
-s-
!Using the keyboard
!!Slide/overlay navigation
*Home/Up arrow - first slide/overlay
*~PageUp/Left arrow - previous slide/overlay
*~PageDown/Left arrow - next slide/overlay
*End/Down arrow - last slide/overlay
*Escape - exit slide show
The content of this presentation is written in the tiddler SingleSlideShow.
<<slideShow tiddler:'SingleSlideShow' single header:'A single tidller slide show'>>
@@color:#ffc;font-weight:normal;gazdaságinformatikus és mérnökinformatikus hallgatók számára@@
@@font-size:1.8em;color:#ffc;font-weight:normal;Az informatika logikai alapjai@@
!Let's start!
Press F11 to go fullscreen and adjust the font sizes with Ctrl++ Ctrl+- (or Ctrl+mousewheel).
{{comment{
!Test
@@You can hide text on a slide so it won't be displayed in the slide show@@}}}
{{noClicks{
This button can be clicked without advancing the slide show: <<tag show>>}}}
Now press ''B'' to pause/restart the presentation.
!Main features
Most features that are usually found in presentation software are available.
*Build a slide show from a list of tiddlers' titles or selecting a specific tag with optional sort
*Fully customizable presentations (CSS knowledge required)
*Auto-advancing slide show (kiosk mode) and looping (circular mode)
*Incremental display (several overlays or layers in a slide)
*Optional clock with 3 different modes:
**local time
**elapsed time of presentation
**countdown clock for a given period
*Screen blanking for pauses
!Overlays
To see how incremental display works use the left and right mouse buttons.
{{overlay1{You can}}} {{overlay2{present things}}} {{overlay1{in an arbitrary order!!!}}}
{{overlay3{Its a bit harder with lists but it works:}}}
<html>
<ol>
<li class="overlay4">First item</li>
<li class="overlay5">Second item</li>
<li class="overlay4">Last item</li>
</ol>
</html>{{comment{You can hide comments on a slide that won't display in the slide show}}}
!Using the keyboard
!!Slide/overlay navigation
*Home/Up arrow - first slide/overlay
*~PageUp/Left arrow - previous slide/overlay
*~PageDown/Left arrow - next slide/overlay
*End/Down arrow - last slide/overlay
*Escape - exit slide show
/***
|''Name:''|SlideShowPlugin|
|''Description:''|Creates a slide show from any number of tiddlers|
|''Author:''|Paulo Soares|
|''Contributors:''|John P. Rouillard|
|''Version:''|2.2.5|
|''Date:''|2010-09-14|
|''Source:''|http://www.math.ist.utl.pt/~psoares/addons.html|
|''Documentation:''|[[SlideShowPlugin Documentation|SlideShowPluginDoc]]|
|''License:''|[[Creative Commons Attribution-Share Alike 3.0 License|http://creativecommons.org/licenses/by-sa/3.0/]]|
|''~CoreVersion:''|2.5.0|
***/
//{{{
if(!version.extensions.SlideShowPlugin) { //# ensure that the plugin is only installed once
version.extensions.SlideShowPlugin = {installed: true};
(function($) {
config.macros.slideShow = {maxTOCLength: 30, separator:'-s-'};
config.formatters.push( {
name: "SlideSeparator",
match: "^"+config.macros.slideShow.separator+"+$\\n?",
handler: function(w) {
createTiddlyElement(w.output,"hr",null,'slideSeparator');
}
});
config.macros.slideShow.text = {
label: "slide show", tooltip: "Start slide show",
quit: {label: "x", tooltip: "Quit the slide show"},
firstSlide: {label: "<<", tooltip: "Go to first slide"},
previous: {label: "<", tooltip: "Go back"},
next: {label: ">", tooltip: "Advance"},
lastSlide: {label: ">>", tooltip: "Go to last slide"},
goto: {label: "Go to slide:"},
resetClock: {tooltip: "Reset the clock"},
overlay: "overlay"
};
config.macros.slideShow.handler = function(place,macroName,params,wikifier,paramString){
var args = paramString.parseParams(null,null,false);
this.label = getParam(args,"label",this.text.label);
this.tooltip = getParam(args,"tooltip",this.text.tooltip);
var onclick = function(){config.macros.slideShow.onClick(place,paramString); return false;};
createTiddlyButton(place,this.label,this.tooltip,onclick);
return false;
}
config.macros.slideShow.onClick = function(place,paramString) {
var slide, cm = config.macros.slideShow;
var title = story.findContainingTiddler(place);
title = title ? title.getAttribute("tiddler") : null;
var args = paramString.parseParams(null,null,false);
title = getParam(args,"tiddler",title);
var argsArray = paramString.readMacroParams();
this.single = ($.inArray('single',argsArray) > -1);
this.clicks = ($.inArray('noClicks',argsArray) < 0);
this.keyboard = ($.inArray('noKeyboard',argsArray) < 0);
this.showAll = ($.inArray('showAll',argsArray) > -1);
this.cycle = ($.inArray('cycle',argsArray) > -1);
this.overlays = ($.inArray('noOverlays',argsArray) < 0);
this.theme = getParam(args,"theme");
this.tag = getParam(args,"tag");
this.toc = getParam(args,"toc","headers");
this.sort = getParam(args,"sort");
this.clockFormat = getParam(args,"clockFormat",'0hh:0mm:0ss');
this.auto = getParam(args,"auto",0);
this.header = getParam(args,"header",title);
this.footer = getParam(args,"footer","");
this.clock = getParam(args,"clock");
this.blocked = 0;
if(this.clock){
var startTime = new Date(0);
this.clockCorrection=startTime.getTimezoneOffset()*60000;
startTime = new Date();
this.clockMultiplier = 1;
this.clockInterval = 0;
var clockType= parseFloat(this.clock);
if(clockType < 0) {
this.clockMultiplier = -1;
this.clockInterval = -clockType*60000;
} else if(clockType == 0){
this.clockCorrection = 0;
startTime = new Date(0);
}
this.clockStartTime=startTime.getTime();
}
this.slides = [];
this.openTiddlers = [];
$("#tiddlerDisplay > *").each(function(){cm.openTiddlers.push($(this).attr('tiddler'))});
var count = 0;
this.slideTOC=[];
if(this.single){
if(!store.tiddlerExists(title)) return;
var newTiddler;
var content = store.getTiddlerText(title).split(cm.separator);
$.each(content, function(){
count++;
newTiddler = new Tiddler();
newTiddler.title ="TempSlide" + count;
newTiddler.tags[0] = "excludeLists";
newTiddler.text = $.trim(this);
newTiddler.fields['doNotSave']= true;
store.addTiddler(newTiddler);
cm.buildTOC(count,newTiddler.title);
cm.slides.push(newTiddler.title);
});
} else {
if(this.tag){
var content = store.getTaggedTiddlers(this.tag,this.sort);
$.each(content, function(){
count++;
cm.buildTOC(count,this.title);
cm.slides.push(this.title);
});
} else {
story.displayTiddler(null,title);
var list = $('[tiddler='+title+']').children('.viewer').find('.tiddlyLinkExisting');
$.each(list,function(){
if(!$(this).parents().hasClass("exclude")){
slide = $(this).attr('tiddlylink');
count++;
cm.buildTOC(count,slide);
cm.slides.push(slide);
}
});
}
}
this.nSlides = this.slides.length;
if(this.nSlides==0) return false;
clearMessage();
this.toggleSlideStyles();
if(!this.showAll){
//Attach the key and mouse listeners
if(this.keyboard && !$("#tiddlerDisplay").hasClass("noKeyboard")) $(document).keyup(cm.keys);
if(this.clicks){
$(document).mouseup(cm.clicker);
document.oncontextmenu = function(){return false;}
}
if(this.clock) this.slideClock=setInterval(this.setClock, 1000);
if(this.auto>0){
this.autoAdvance=setInterval(cm.next, this.auto*1000);
}
this.showSlide(1);
} else {
story.closeAllTiddlers();
story.displayTiddlers(null,this.slides);
$(".tiddler").attr("ondblclick",null);
$(document).keyup(cm.endSlideShow);
}
return false;
}
config.macros.slideShow.buildNavigator = function() {
//Create the navigation bar
var i, slidefooter = $("#controlBar")[0];
if(!slidefooter) return;
$(slidefooter).addClass("slideFooterOff noClicks");
var navigator = createTiddlyElement(slidefooter,"SPAN","navigator");
var buttonBar = createTiddlyElement(navigator,"SPAN","buttonBar");
//Make it so that when the footer is hovered over the class will change to make it visible
$(slidefooter).bind("mouseenter mouseleave", function(e){$(this).toggleClass("slideFooterOff");});
//Create the control buttons for the navigation
createTiddlyButton(buttonBar,this.text.firstSlide.label,this.text.firstSlide.tooltip,this.firstSlide,"button");
createTiddlyButton(buttonBar,this.text.previous.label,this.text.previous.tooltip,this.previous,"button");
createTiddlyButton(buttonBar,this.text.quit.label,this.text.quit.tooltip,this.endSlideShow,"button");
createTiddlyButton(buttonBar,this.text.next.label,this.text.next.tooltip,this.next,"button");
createTiddlyButton(buttonBar,this.text.lastSlide.label,this.text.lastSlide.tooltip,this.lastSlide,"button");
if(this.clock){
if(this.clock == 0){
createTiddlyElement(navigator,"SPAN","slideClock");
} else {
createTiddlyButton(navigator," ",this.text.resetClock.tooltip,this.resetClock,"button","slideClock");
}
this.setClock();
}
var index = createTiddlyElement(slidefooter,"SPAN","slideCounter");
index.onclick = this.toggleTOC;
var toc = createTiddlyElement(slidefooter,"SPAN","toc");
var tocLine;
for(i=0; i<this.slideTOC.length; i++){
$(toc).append(this.slideTOC[i][2]);
tocLine = $(toc.lastChild);
tocLine.addClass("tocLevel"+this.slideTOC[i][1]).css("cursor", "pointer").hover(function () {
$(this).addClass("highlight");}, function () {
$(this).removeClass("highlight");});
tocLine.attr("slide",this.slideTOC[i][0]);
tocLine.click(config.macros.slideShow.showSlideFromTOC);
}
//Input box to jump to specific slide
var tocItem = createTiddlyElement(toc,"DIV","jumpItem",null,this.text.goto.label);
var tocJumpInput = createTiddlyElement(tocItem,"INPUT","jumpInput");
tocJumpInput.type="text";
$(tocJumpInput).keyup(config.macros.slideShow.jumpToSlide);
}
//Used to shorten the TOC fields
config.macros.slideShow.abbreviate = function(label){
if(label.length>this.maxTOCLength) {
var temp = new Array();
temp = label.split(' ');
label = temp[0];
for(var j=1; j<temp.length; j++){
if((label.length+temp[j].length)<=this.maxTOCLength){
label += " " + temp[j];
} else {
label += " ...";
break;
}
}
}
return label;
}
config.macros.slideShow.buildTOC = function(count,title) {
var level = 1, text;
switch(this.toc){
case "headers":
var frag = wikifyStatic(store.getTiddlerText(title));
text = frag.replace(/<div class="comment">.*<\/div>/mg,"");
var matches = text.match(/<h[123456]>.*?<\/h[123456]>/mgi);
if(matches){
for (var j=0; j<matches.length; j++){
level = matches[j].charAt(2);
text = matches[j].replace(/<\/?h[123456]>/gi,"");
text = this.abbreviate(text);
this.slideTOC.push([count,level,"<div>"+text+"</div>"]);
}
}
break;
case "titles":
text = this.abbreviate(title);
this.slideTOC.push([count,level,"<div>"+text+"</div>"]);
}
}
config.macros.slideShow.showSlideFromTOC = function(e) {
var cm = config.macros.slideShow;
var slide = parseInt(e.target.getAttribute('slide'));
$("#toc").hide();
cm.showSlide(slide);
return false;
}
config.macros.slideShow.toggleTOC = function(){
$("#toc").toggle();
$("#jumpInput").focus().val('');
return false;
}
config.macros.slideShow.isInteger = function(s){
for (var i = 0; i < s.length; i++){
// Check that current character is number
var c = s.charAt(i);
if (((c < "0") || (c > "9"))) return false;
}
// All characters are numbers
return true;
}
config.macros.slideShow.jumpToSlide = function(e){
var cm = config.macros.slideShow;
if(e.which==13){
var input= $("#jumpInput").val();
if(cm.isInteger(input) && input>0 && input<=cm.nSlides){
$("#toc").hide();
cm.showSlide(input);
} else {$("#jumpInput").val('');}
}
return false;
}
config.macros.slideShow.toggleSlideStyles = function(){
var contentWrapper = $('#contentWrapper');
if(contentWrapper.hasClass("slideShowMode")){
refreshPageTemplate();
removeStyleSheet("SlideShowStyleSheet");
if(this.theme) removeStyleSheet(this.theme);
} else {
$("#displayArea").prepend('<div id="slideBlanker" style="display:none"></div><div id="slideHeader">'+this.header+'</div><div id="slideFooter">'+this.footer+'</div><div id="controlBar"></div>');
setStylesheet(store.getRecursiveTiddlerText("SlideShowStyleSheet"),"SlideShowStyleSheet");
if(this.theme && store.tiddlerExists(this.theme)){setStylesheet(store.getRecursiveTiddlerText(this.theme),this.theme);}
this.buildNavigator();
}
contentWrapper.toggleClass("slideShowMode");
return false;
}
config.macros.slideShow.showSlide = function(n){
if(this.cycle) {
if(n>this.nSlides) {
n = 1;
} else if(n<1) {
n = this.nSlides;
}
} else {
if(n>this.nSlides || n<1) return;
}
story.closeAllTiddlers();
if(this.clock=='-'){this.resetClock();}
story.displayTiddler(null,String(this.slides[n-1]));
$(".tiddler").attr("ondblclick",null);
$("body").removeClass("slide"+this.curSlide);
this.curSlide = n;
$("body").addClass("slide"+this.curSlide);
$("#slideCounter").text(this.curSlide+"/"+this.nSlides);
if(this.overlays){
var contents = $(".viewer *");
this.numOverlays = 1;
while(1){
if(contents.hasClass(this.text.overlay+this.numOverlays)){
this.numOverlays++;
} else {break;}
}
this.numOverlays--;
this.showOverlay(0);
}
return false;
}
config.macros.slideShow.showOverlay = function(n){
var i, set, cm = config.macros.slideShow;
if(!cm.overlays || cm.numOverlays == 0 || n<0 || n>cm.numOverlays){return;}
for(i=1; i<n; i++){
set = $(".viewer "+"."+cm.text.overlay+i);
set.removeClass("currentOverlay nextOverlay");
set.addClass("previousOverlay");
}
set = $(".viewer "+"."+cm.text.overlay+n);
set.removeClass("previousOverlay nextOverlay");
set.addClass("currentOverlay");
for(i=n; i<config.macros.slideShow.numOverlays; i++){
set = $(".viewer "+"."+cm.text.overlay+(i+1));
set.removeClass("previousOverlay currentOverlay");
set.addClass("nextOverlay");
}
cm.curOverlay = n;
}
config.macros.slideShow.firstSlide = function(){
config.macros.slideShow.showSlide(1);
return false;
}
config.macros.slideShow.lastSlide = function(){
config.macros.slideShow.showSlide(config.macros.slideShow.nSlides);
return false;
}
config.macros.slideShow.next = function(){
var cm = config.macros.slideShow;
if(!cm.overlays || cm.numOverlays == 0 || cm.curOverlay == cm.numOverlays) {
cm.showSlide(cm.curSlide+1);
} else {
cm.showOverlay(cm.curOverlay+1);
}
return false;
}
config.macros.slideShow.previous = function(){
var cm = config.macros.slideShow;
if(!cm.overlays || cm.numOverlays == 0 || cm.curOverlay == 0) {
cm.showSlide(cm.curSlide-1);
cm.showOverlay(cm.numOverlays);
} else {
cm.showOverlay(cm.curOverlay-1);
}
return false;
}
config.macros.slideShow.endSlideShow=function(){
var cm = config.macros.slideShow;
if(cm.autoAdvance) {clearInterval(cm.autoAdvance);}
if(cm.clock) clearInterval(cm.slideClock);
story.closeAllTiddlers();
cm.toggleSlideStyles();
story.displayTiddlers(null,cm.openTiddlers);
$(document).unbind();
document.oncontextmenu = function(){};
$("body").removeClass("slide"+cm.curSlide);
return false;
}
// 'keys' code adapted from S5 which in turn was adapted from MozPoint (http://mozpoint.mozdev.org/)
config.macros.slideShow.keys = function(key) {
var cm = config.macros.slideShow;
switch(key.which) {
case 32: // spacebar
if(cm.auto>0 && cm.blocked==0){
if(cm.autoAdvance){
clearInterval(cm.autoAdvance);
cm.autoAdvance = null;
} else {
cm.autoAdvance=setInterval(cm.next, cm.auto*1000);
}
} else {
if(cm.blocked==0) cm.next();
}
break;
case 34: // page down
if(cm.blocked==0) cm.showSlide(cm.curSlide+1);
break;
case 39: // rightkey
if(cm.blocked==0) cm.next();
break;
case 40: // downkey
if(cm.blocked==0) cm.showOverlay(cm.numOverlays);
break;
case 33: // page up
if(cm.blocked==0) cm.showSlide(cm.curSlide-1);
break;
case 37: // leftkey
if(cm.blocked==0) cm.previous();
break;
case 38: // upkey
if(cm.blocked==0) cm.showOverlay(0);
break;
case 36: // home
if(cm.blocked==0) cm.firstSlide();
break;
case 35: // end
if(cm.blocked==0) cm.lastSlide();
break;
case 27: // escape
cm.endSlideShow();
break;
case 66: // B
$("#slideBlanker").toggle();
cm.blocked = (cm.blocked +1)%2;
break;
}
return false;
}
config.macros.slideShow.clicker = function(e) {
var cm = config.macros.slideShow;
if(cm.blocked==1 || $(e.target).attr('href') || $(e.target).parents().andSelf().hasClass('noClicks')){
return true;
}
if($("#toc").is(':visible')){
cm.toggleTOC();
} else {
if((!e.which && e.button == 1) || e.which == 1) {
cm.next();
}
if((!e.which && e.button == 2) || e.which == 3) {
cm.previous();
}
}
return false;
}
config.macros.slideShow.setClock = function(){
var cm = config.macros.slideShow;
var actualTime = new Date();
var newTime = actualTime.getTime() - cm.clockStartTime;
newTime = cm.clockMultiplier*newTime+cm.clockInterval+cm.clockCorrection;
actualTime.setTime(newTime);
newTime = actualTime.formatString(cm.clockFormat);
$("#slideClock").text(newTime);
return false;
}
config.macros.slideShow.resetClock = function(){
var cm = config.macros.slideShow;
if(cm.clock == 0) return;
var time = new Date(0);
if(cm.clockStartTime>time){
var startTime = new Date();
cm.clockStartTime=startTime.getTime();
}
return false;
}
config.shadowTiddlers.SlideShowStyleSheet="/*{{{*/\n.header, #mainMenu, #sidebar, #backstageButton, #backstageArea, .toolbar, .title, .subtitle, .tagging, .tagged, .tagClear, .comment{\n display:none !important\n}\n\n#slideBlanker{\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n z-index: 90; \n background-color: #000;\n opacity: 0.9;\n filter: alpha(opacity=90)\n}\n\n.nextOverlay{\n visibility: hidden\n}\n\n.previousOverlay,.currentOverlay{\n visibility: visible\n}\n\n#displayArea{\n font-size: 250%;\n margin: 0 !important;\n padding: 0\n}\n\n#controlBar{\n position: fixed;\n bottom: 2px;\n right: 2px;\n width: 100%;\n text-align: right\n}\n\n#controlBar .button{\n margin: 0 0.25em;\n padding: 0 0.25em\n}\n\n#slideHeader{\n font-size: 200%;\n font-weight: bold\n}\n\n#slideFooter{\n position: fixed;\n bottom: 2px\n}\n\n.slideFooterOff #navigator{\n visibility: hidden\n}\n\n#slideClock{\n margin: 0 5px 0 5px\n}\n\n#slideCounter{\n cursor: pointer;\n color: #aaa\n}\n\n#toc{\n display: none;\n position: absolute;\n font-size: .75em;\n bottom: 2em;\n right: 0;\n background: #fff;\n border: 1px solid #000;\n text-align: left\n}\n\n#jumpItem{\n padding-left:0.25em\n}\n\n#jumpInput{\n margin-left: 0.25em;\n width: 3em\n}\n\n.tocLevel1{\n font-size: .8em\n}\n\n.tocLevel2{\n margin-left: 1em;\n font-size: .75em\n}\n\n.tocLevel3{\n margin-left: 2em;\n font-size: .7em\n}\n\n.tocLevel4{\n margin-left: 3em;\n font-size: .65em\n}\n\n.tocLevel5{\n margin-left: 4em;\n font-size: .6em\n}\n\n.tocLevel6{\n margin-left: 5em;\n font-size: .55em\n}\n/*}}}*/";
config.shadowTiddlers.SlideShowPluginDoc="The documentation is available [[here|http://www.math.ist.utl.pt/~psoares/addons.html#SlideShowPluginDoc]].";
})(jQuery)
}
//}}}
!Description
This plugin turns any number of tiddlers into a slide show. A single macro provides a flexible way to present a set of tiddlers, including:
#a full screen presentation that hides the TiddlyWiki structure (header, sidebar, main menu);
#a way to navigate through a set of tiddlers keeping the TiddlyWiki structure (similar to the [[NavigationMacro|http://tw.lewcid.org/#NavigationMacro]] by Saq Imtiaz);
#a display of all the selected tiddlers ready to be printed.
!Main features
Most features that are usually found in presentation software are available.
*Build a slide show from a list of tiddlers' titles or selecting a specific tag with optional sort
*Build a slide show from a single tiddler where slides are divided by a separator
*Fully customizable presentations (CSS knowledge required)
*Auto-advancing slide show (kiosk mode) and looping (circular mode)
*Incremental display (several overlays or layers in a slide)
*Optional clock with 4 different modes:
**local time
**elapsed time of presentation
**elapsed time for each slide
**countdown clock for a given period
*Screen blanking for pauses
!Installation
To install this plugin copy the tiddler SlideShowPlugin to your TiddlyWiki, label it with the ''systemConfig'' tag, save the TW and refresh the browser.
Optionally, you can also copy this documentation tiddler. If you don't, a link to the original one in my site is provided.
!Quick start
The simplest way to make a slide show is to create a new tiddler with references to all the tiddlers you want to include in your presentation. Any reference or group of references to tiddlers that should be skipped must be wrapped in a {{{exclude}}} class as in the following example:
{{{
MissingSlide
[[First slide|SlideShowExample-1]] {{exclude{(the tiddler SlideShowPluginDoc will not be included in the presentation)}}}
SlideShowExample-2
SlideShowExample-3
SlideShowExample-4
}}}
Add {{{<<slideShow>>}}} anywhere in the tiddler, close the edit form, click the ''slide show'' button and there you are. Move forward/backward in the presentation with the mouse left/right button. If you move the mouse pointer over the bottom of the browser window you will see a few navigation buttons. Click the ''x'' button or press the ''Escape'' key to exit.
!Options
{{{
<<slideShow
noClicks
noKeyboard
noOverlays
cycle
showAll
single
tiddler:tiddler
label:string
tooltip:string
tag:tag
sort:field
theme:tiddler
toc:string
auto:time
clock:type
clockFormat:string
header:string
footer:string
>>
}}}
''noClicks''
Disables navigation through mouse clicks on the tiddlers. This is useful when there are lots of clickable elements in the presentation.
If you want to keep using the mouse to move around the presentation and there are occasional elements that require mouse clicking, these can be formatted with a {{{noClicks}}} class (read more [[here|http://www.tiddlywiki.com/#CustomCssClass]]).
''noKeyboard''
Disables keyboard navigation.
''noOverlays''
Disables the incremental display of overlays.
''cycle''
The slide shows runs in a continuous loop.
''showAll''
To print a presentation all the selected tiddlers are opened in the specified order. Press any key to return to the default TiddlyWiki layout.
''single''
Use this if a presentation is defined in a single tiddler.
''tiddler''
Use this option to indicate the tiddler where your slide show is defined when it is not the same one that contains the button that starts the presentation.
''label''
Text to replace the default text in the slide show button.
''tooltip''
Text to be shown when the mouse is over the slide show button.
''tag''
Use this option to create a slide show with the tiddlers with the provided tag instead of providing a list of tiddlers.
''sort''
If the ''tag'' option is used you can use this other option to sort the tiddlers according to a specific field. Valid values are: //created// (default), //modified//, //title// and //text//.
''theme''
A user provided tiddler containing CSS rules that define the style of the slide show. To redefine the default style, edit the SlideShowStyleSheet shadow tiddler.
''toc''
Choose the type of table of contents. Possible values: ''titles'' will enable the use of the tiddlers titles, ''headers'' (default) to choose html headers (h1, h2,...), anything else will disable the table of contents.
''auto''
The slide show auto advances after the defined number of seconds. The slide show can be paused by pressing the ''space bar''.
''clock''
Displays a clock near the navigation buttons at the bottom of the screen. Four types of clocks can be defined:
#''clock:0'' -- shows the local time.
#''clock:'+''' -- displays the elapsed time of the presentation. Click the clock display to reset the time.
#''clock:'-''' -- displays the elapsed for each slide. Click the clock display to reset the time.
#''clock:-20'' -- displays a countdown clock for the given (negative) number of minutes. Click the clock display to reset the time.
''clockFormat''
A string that defines the clock format. The default is '0hh:0mm:0ss' where the prefix '0' forces a leading zero.
''header''
A string to be used as a permanent header for the slide show. By default it's used the title of tiddler that defines the slide show.
''footer''
A string to be used as a permanent footer for the slide show. By default the footer is empty.
!Incremental display
A succession of overlays (or layers) can be defined in each slide by marking blocks of text with
{{{
{{overlay1{...some text...}}}, {{overlay2{...some text...}}}, {{overlay3{...some text...}}}, ...
}}}
The default name of the classes (//overlay//) can be redefined with //config.macros.slideShow.text.overlay = "layer"//, for example.
To costumize the way overlays are shown you can redefine the following CSS classes
*.previousOverlay
*.currentOverlay
*.nextOverlay
in a ~StyleSheet. The default style simply hides the next overlays and shows the current and the previous ones as normal text.
!Slide show navigation
You can navigate through a slide show using the keyboard or the mouse.
!!Mouse navigation
Left (right) clicking on a slide jumps to the next (previous) slide or overlay. To move to the first or last slides you must use the navigation bar at the bottom of the browser's window.
!!Keyboard
The following keys are defined:
*Home - first slide
*~PageUp - previous slide
*~PageDown - next slide
*End - last slide
*Escape - exit slide show
*Up arrow - first overlay
*Left arrow - previous overlay/slide
*Pause/Right arrow - next overlay/slide
*Down arrow - last overlay
*Spacebar - pause/resume slide show in auto advance mode, next overlay/slide otherwise
*B - blank screen and block the slide show
!Miscellaneous
Any block of text marked as
{{{
{{comment{For my eyes only!}}}
}}}
will not be displayed in the slide show.
All translatable strings are defined in //config.macros.slideShow.text// parameter. See SlideShowPluginMsgPT with the portuguese translation as an example.
//{{{
config.macros.slideShow.text = {
label: "apresentação", tooltip: "Começar apresentação",
quit: {label: "x", tooltip: "Terminar apresentação"},
firstSlide: {label: "<<", tooltip: "Primeiro slide"},
previous: {label: "<", tooltip: "Anterior"},
next: {label: ">", tooltip: "Seguinte"},
lastSlide: {label: ">>", tooltip: "Último slide"},
goto: {label: "Ir para o slide:"},
resetClock: {tooltip: "Recomeçar relógio"},
overlay: "camada"
}
//}}}
/*{{{*/
.header, #mainMenu, #sidebar, #backstageButton, #backstageArea, .topMenu,.toolbar, .title, .subtitle, .tagging, .tagged, .tagClear, .comment{
display:none !important
}
#slideBlanker{
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
z-index: 90;
background-color: #000;
opacity: 0.9;
filter: alpha(opacity=90)
}
.nextOverlay{
visibility: hidden
}
.previousOverlay,.currentOverlay{
visibility: visible
}
#displayArea{
font-size: 250%;
margin: 0 !important;
padding: 0
}
#controlBar{
position: fixed;
bottom: 2px;
right: 2px;
width: 100%;
text-align: right
}
#controlBar .button{
margin: 0 0.25em;
padding: 0 0.25em
}
#slideHeader{
font-size: 200%;
font-weight: bold
}
#slideFooter{
position: fixed;
bottom: 2px
}
.slideFooterOff #navigator{
visibility: hidden
}
#slideClock{
margin: 0 5px 0 5px
}
#slideCounter{
cursor: pointer;
color: #aaa
}
#toc{
display: none;
position: absolute;
font-size: .75em;
bottom: 2em;
right: 0;
background: #fff;
border: 1px solid #000;
text-align: left
}
#jumpItem{
padding-left:0.25em
}
#jumpInput{
margin-left: 0.25em;
width: 3em
}
.tocLevel1{
font-size: .8em
}
.tocLevel2{
margin-left: 1em;
font-size: .75em
}
.tocLevel3{
margin-left: 2em;
font-size: .7em
}
.tocLevel4{
margin-left: 3em;
font-size: .65em
}
.tocLevel5{
margin-left: 4em;
font-size: .6em
}
.tocLevel6{
margin-left: 5em;
font-size: .55em
}
/*}}}*/
To clean up the MainMenu for your own use simply remove the __System__ menu code and the __Main Menu__ code from the MainMenu and add your own working menu. See CreateNewMenu.
Type the text for 'New Tiddler'
Legyen a továbbiakban $L^{(0)}=\langle LC, Con, Form \rangle$ egy [[nulladrendű nyelv|Nulladrendű nyelv]], $\Gamma, \Delta \subseteq Form$ és $A, B, C\in Form$.
<<tabs ""[[Azonosság]] "" [[Azonosság]] [[Bővítés]] "" [[Bővítés szabálya]] [[Szűkítés]] "" [[Szűkítés szabálya]] [[Felcserélés]] "" [[Felcserélés szabálya]] [[Metszet]] "" [[Metszet szabály]]>>
/***
!!<<gradient horiz #fff #999>> THEME SWITCHING>>/%==================================================%/
***/
/***
|StyleSheet|StyleSheet|
***/
/***
|PageTemplate|PageTemplate|
|ViewTemplate|ViewTemplate|
|EditTemplate|MyEditTemplate|
***/
/***
!!<<gradient horiz #fff #999>> STYLESHEET>>/%==================================================%/
***/
/***There are extra nested stylesheets at the end of this stylesheet***/
/***
!!<<gradient horiz #fff #999>> THEME SPECIFIC - GREEN>>/%==================================================%/
***/
/*{{{*/
body {background-color:#ffffea; color:#030;font-size:0.75em; font-family:arial,helvetica; margin:0; padding:0;auto;}
#displayArea {margin: 0em 14em 0em 17em;}
#displayArea {margin-top:0.0em;padding:0em;}
.title {color:#080;}
.tabContents {background-color:#ffe; color #f3f; overflow: auto;}
.tabset a:hover {background:#ffd; color:#f00;}
.viewer {color:#050;line-height: 1.6em;}
.button {border: solid 0px;}
#mainMenu a {color:#077;}
#mainMenu a:hover {background:#333;color:#ffd;}
.mmheading {color:#600;font-weight:bold;}
.tiddler {
border-top: 1px solid #ccc;
border-left: 1px solid #ccc;
border-bottom: 3px solid #ccc;
border-right: 3px solid #ccc;
margin: 0.5em;
background:#fff;
padding: 0.5em;
-moz-border-radius: 1em;
}
/*}}}*/
/***
!!<<gradient horiz #fff #999>> END THEME SPECIFIC - GREEN>>/%==================================================%/
***/
[[CommonCSS]]
[[JqueryTreeviewCSS-G]]
[[StyleSheetShortcuts]]
[[TopMenuStyle]]
[[StyleSheetTiddlersBar-G]]
[[GreenTabsCSS]]
/***
|Name|StyleSheetShortcuts|
|Source|http://www.TiddlyTools.com/#StyleSheetShortcuts|
|Version||
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|CSS|
|Requires||
|Overrides||
|Description|'convenience' classes for common formatting, alignment, boxes, tables, etc.|
These 'style tweaks' can be easily included in other stylesheet tiddler so they can share a baseline look-and-feel that can then be customized to create a wide variety of 'flavors'.
***/
/*{{{*/
/* text alignments */
.left
{ display:block;text-align:left; }
.center
{ display:block;text-align:center; }
.center table
{ margin:auto !important; }
.right
{ display:block;text-align:right; }
.justify
{ display:block;text-align:justify; }
.indent
{ display:block;margin:0;padding:0;border:0;margin-left:2em; }
.floatleft
{ float:left; }
.floatright
{ float:right; }
.valignTop, .valignTop table, .valignTop tbody, .valignTop th, .valignTop tr, .valignTop td
{ vertical-align:top; }
.valignBottom, .valignBottom table, .valignBottom tbody, .valignBottom th, .valignBottom tr, .valignBottom td
{ vertical-align:bottom; }
.clear
{ clear:both; }
.wrap
{ white-space:normal; }
.nowrap
{ white-space:nowrap; }
.hidden
{ display:none; }
.show
{ display:inline !important; }
.span
{ display:span; }
.block
{ display:block; }
.relative
{ position:relative; }
.absolute
{ position:absolute; }
/* font sizes */
.big
{ font-size:14pt;line-height:120% }
.medium
{ font-size:12pt;line-height:120% }
.normal
{ font-size:9pt;line-height:120% }
.small
{ font-size:8pt;line-height:120% }
.fine
{ font-size:7pt;line-height:120% }
.tiny
{ font-size:6pt;line-height:120% }
.larger
{ font-size:120%; }
.smaller
{ font-size:80%; }
/* font styles */
.bold
{ font-weight:bold; }
.italic
{ font-style:italic; }
.underline
{ text-decoration:underline; }
/* plain list items (no bullets or indent) */
.nobullets li { list-style-type: none; margin-left:-2em; }
/* multi-column tiddler content (not supported in Internet Explorer) */
.twocolumns { display:block;
-moz-column-count:2; -moz-column-gap:1em; -moz-column-width:50%; /* FireFox */
-webkit-column-count:2; -webkit-column-gap:1em; -webkit-column-width:50%; /* Safari */
column-count:2; column-gap:1em; column-width:50%; /* Opera */
}
.threecolumns { display:block;
-moz-column-count:3; -moz-column-gap:1em; -moz-column-width:33%; /* FireFox */
-webkit-column-count:3; -webkit-column-gap:1em; -webkit-column-width:33%; /* Safari */
column-count:3; column-gap:1em; column-width:33%; /* Opera */
}
.fourcolumns { display:block;
-moz-column-count:4; -moz-column-gap:1em; -moz-column-width:25%; /* FireFox */
-webkit-column-count:4; -webkit-column-gap:1em; -webkit-column-width:25%; /* Safari */
column-count:4; column-gap:1em; column-width:25%; /* Opera */
}
/* show/hide browser-specific content for InternetExplorer vs. non-IE ("moz") browsers */
*[class="ieOnly"]
{ display:none; } /* hide in moz (uses CSS selector) */
* html .mozOnly, *:first-child+html .mozOnly
{ display: none; } /* hide in IE (uses IE6/IE7 CSS hacks) */
/* borderless tables */
.borderless, .borderless table, .borderless td, .borderless tr, .borderless th, .borderless tbody
{ border:0 !important; margin:0 !important; padding:0 !important; }
.widetable, .widetable table
{ width:100%; }
/* thumbnail images (fixed-sized scaled images) */
.thumbnail img { height:5em !important; }
/* stretchable images (auto-size to fit tiddler) */
.stretch img { width:95%; }
/* grouped content */
.outline
{ display:block; padding:1em; -moz-border-radius:1em;-webkit-border-radius:1em; border:1px solid; }
.menubox
{ display:block; padding:1em; -moz-border-radius:1em;-webkit-border-radius:1em; border:1px solid; background:#fff; color:#000; }
.menubox .button, .menubox .tiddlyLinkExisting, .menubox .tiddlyLinkNonExisting
{ color:#009 !important; }
.groupbox
{ display:block; padding:1em; -moz-border-radius:1em;-webkit-border-radius:1em; border:1px solid; background:#ffe; color:#000; }
.groupbox a, .groupbox .button, .groupbox .tiddlyLinkExisting, .groupbox .tiddlyLinkNonExisting
{ color:#009 !important; }
.groupbox code
{ color:#333 !important; }
.borderleft
{ margin:0;padding:0;border:0;margin-left:1em; border-left:1px dotted; padding-left:.5em; }
.borderright
{ margin:0;padding:0;border:0;margin-right:1em; border-right:1px dotted; padding-right:.5em; }
.borderbottom
{ margin:0;padding:1px 0;border:0;border-bottom:1px dotted; margin-bottom:1px; padding-bottom:1px; }
.bordertop
{ margin:0;padding:0;border:0;border-top:1px dotted; margin-top:1px; padding-top:1px; }
/* scrolled content */
.scrollbars { overflow:auto; }
.height10em { height:10em; }
.height15em { height:15em; }
.height20em { height:20em; }
.height25em { height:25em; }
.height30em { height:30em; }
.height35em { height:35em; }
.height40em { height:40em; }
/* compact form */
.smallform
{ white-space:nowrap; }
.smallform input, .smallform textarea, .smallform button, .smallform checkbox, .smallform radio, .smallform select
{ font-size:8pt; }
/* stretchable edit fields and textareas (auto-size to fit tiddler) */
.stretch input { width:99%; }
.stretch textarea { width:99%; }
/* compact input fields (limited to a few characters for entering percentages and other small values) */
.onechar input { width:1em; }
.twochar input { width:2em; }
.threechar input { width:3em; }
.fourchar input { width:4em; }
.fivechar input { width:5em; }
/* text colors */
.white { color:#fff !important }
.gray { color:#999 !important }
.black { color:#000 !important }
.red { color:#f66 !important }
.green { color:#0c0 !important }
.blue { color:#99f !important }
/* rollover highlighting */
.mouseover
{color:[[ColorPalette::TertiaryLight]] !important;}
.mouseover a
{color:[[ColorPalette::TertiaryLight]] !important;}
.selected .mouseover
{color:[[ColorPalette::Foreground]] !important;}
.selected .mouseover .button, .selected .mouseover a
{color:[[ColorPalette::PrimaryDark]] !important;}
/* rollover zoom text */
.zoomover
{ font-size:80% !important; }
.selected .zoomover
{ font-size:100% !important; }
/* [[ColorPalette]] text colors */
.Background { color:[[ColorPalette::Background]]; }
.Foreground { color:[[ColorPalette::Foreground]]; }
.PrimaryPale { color:[[ColorPalette::PrimaryPale]]; }
.PrimaryLight { color:[[ColorPalette::PrimaryLight]]; }
.PrimaryMid { color:[[ColorPalette::PrimaryMid]]; }
.PrimaryDark { color:[[ColorPalette::PrimaryDark]]; }
.SecondaryPale { color:[[ColorPalette::SecondaryPale]]; }
.SecondaryLight { color:[[ColorPalette::SecondaryLight]];}
.SecondaryMid { color:[[ColorPalette::SecondaryMid]]; }
.SecondaryDark { color:[[ColorPalette::SecondaryDark]]; }
.TertiaryPale { color:[[ColorPalette::TertiaryPale]]; }
.TertiaryLight { color:[[ColorPalette::TertiaryLight]]; }
.TertiaryMid { color:[[ColorPalette::TertiaryMid]]; }
.TertiaryDark { color:[[ColorPalette::TertiaryDark]]; }
.Error { color:[[ColorPalette::Error]]; }
/* [[ColorPalette]] background colors */
.BGBackground { background-color:[[ColorPalette::Background]]; }
.BGForeground { background-color:[[ColorPalette::Foreground]]; }
.BGPrimaryPale { background-color:[[ColorPalette::PrimaryPale]]; }
.BGPrimaryLight { background-color:[[ColorPalette::PrimaryLight]]; }
.BGPrimaryMid { background-color:[[ColorPalette::PrimaryMid]]; }
.BGPrimaryDark { background-color:[[ColorPalette::PrimaryDark]]; }
.BGSecondaryPale { background-color:[[ColorPalette::SecondaryPale]]; }
.BGSecondaryLight { background-color:[[ColorPalette::SecondaryLight]]; }
.BGSecondaryMid { background-color:[[ColorPalette::SecondaryMid]]; }
.BGSecondaryDark { background-color:[[ColorPalette::SecondaryDark]]; }
.BGTertiaryPale { background-color:[[ColorPalette::TertiaryPale]]; }
.BGTertiaryLight { background-color:[[ColorPalette::TertiaryLight]]; }
.BGTertiaryMid { background-color:[[ColorPalette::TertiaryMid]]; }
.BGTertiaryDark { background-color:[[ColorPalette::TertiaryDark]]; }
.BGError { background-color:[[ColorPalette::Error]]; }
/*}}}*/
!!!StyleSheetTiddlersBar
#tiddlersBar .button {border:1px; color:#000;}
#tiddlersBar .tab {white-space:nowrap;}
#tiddlersBar {padding :0.35em 0.5em 0.0em 1.0em;margin-left:0em;margin-right:0em}
#tiddlersBar {margin-bottom:0px;}
.tabSelected .button:hover {font-size:0.95em;font-weight:bold;color: #f00;background: #fff;padding : 0px 0px 0px 2px;}
.tabUnselected .button:hover {font-size:0.95em;color: #f00;background: #fff; padding : 0px 0px 0px 2px;}
.tabUnselected .button {font-size:0.95em;font-weight:bold;color: #080; padding : 0px 0px 0px 2px;}
.tabSelected .button {font-size:0.95em;font-weight:bold;color: #008;padding : 0px 0px 0px 2px;}
.tabUnselected {
background:url([[navbargrayhw1.gif]]) repeat-x top left;top left;
background-color:#EFFFE7;
border:0px #eee solid; border-bottom:0px;font-size:0.95em; }
.tabSelected {
background:url([[navbarred.gif]]) repeat-x top left;top left;
background-color:#fcb;
color: #800;border: 0px #c06 solid;border-bottom:0px; font-size:0.95em;}
.tabUnselected .tabButton {font-weight:bold;font-size:0.75em;color:#333;background:transparent; padding : 0px 2px 0px 2px; margin: 0 0 0 1px;}
.tabSelected .tabButton {font-weight:bold;font-size:0.75em;color:#000;background:transparent;padding : 0px 2px 0px 2px; margin: 0 0 0 1px;}
.tabSelected .tabButton:hover {font-weight:bold;color: #f00;background: #fff;}
.tabUnselected .tabButton:hover {font-weight:bold;color: #f00;background: #fff;}
.tiddler, .tabContents {border-top:0px #fa0 solid;margin-left:0.5em;margin-right:0.5em;}
#tiddlersBar .tab {-moz-border-radius : 0.4em 0.4em 0 0;}
#tiddlersBar {background:#abf;line-height: 1.45em;}
#tiddlersBar {background: url([[leftbackdrkgreenqu9.jpg]]); background-repeat: repeat;line-height: 1.45em;}
!!!StyleSheetTiddlersBar
#tiddlersBar .button {border:1px; color:#000;}
#tiddlersBar .tab {white-space:nowrap;}
#tiddlersBar {padding : 0.35em 0.5em 0.0em 1.0em;margin-left:0em;margin-right:0em}
#tiddlersBar {margin-bottom:0px;}
.tabSelected .button:hover {font-size:0.95em;font-weight:bold;color: #f00;background: #fff;padding : 0px 0px 0px 2px;}
.tabUnselected .button:hover {font-size:0.95em;color: #f00;background: #fff; padding : 0px 0px 0px 2px;}
.tabUnselected .button {font-size:0.95em;font-weight:bold;color: #008; padding : 0px 0px 0px 2px;}
.tabSelected .button {font-size:0.95em;font-weight:bold;color: #008;padding : 0px 0px 0px 2px;}
.tabUnselected {
background:url([[navbargrayhw1.gif]]) repeat-x top left;top left;
background-color:#eee;
border:0px #eee solid; border-bottom:0px;font-size:0.95em; }
.tabSelected {
background:url([[navbarred.gif]]) repeat-x top left;top left;
background-color:#fcb;
color: #a00;border: 0px #c06 solid;border-bottom:0px; font-size:0.95em;}
.tabUnselected .tabButton {font-weight:bold;font-size:0.75em;color:#333;background:transparent; padding : 0px 2px 0px 2px; margin: 0 0 0 1px;}
.tabSelected .tabButton {font-weight:bold;font-size:0.75em;color:#000;background:transparent;padding : 0px 2px 0px 2px; margin: 0 0 0 1px;}
.tabSelected .tabButton:hover {font-weight:bold;color: #f00;background: #fff;}
.tabUnselected .tabButton:hover {font-weight:bold;color: #f00;background: #fff;}
.tiddler, .tabContents {border-top:0px #fa0 solid;margin-left:0.5em;margin-right:0.5em;}
#tiddlersBar .tab {-moz-border-radius : 0.4em 0.4em 0 0;}
#tiddlersBar {background:#abf;line-height: 1.45em;}
#tiddlersBar {background: url([[leftbackdo6.gif]]); background-repeat: repeat;line-height: 1.45em;}
/***
|Name|SwitchThemePlugin|
|Source|http://www.TiddlyTools.com/#SwitchThemePlugin|
|Documentation|http://www.TiddlyTools.com/#SwitchThemePluginInfo|
|Version|5.3.0|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.3|
|Type|plugin|
|Requires||
|Overrides||
|Description|Select alternative TiddlyWiki template/stylesheet 'themes' from a droplist|
!!!!!Documentation
>see [[SwitchThemePluginInfo]]
!!!!!Configuration
<<<
Current theme:<<switchTheme width:auto>>
<<option chkRandomTheme>> select a random theme at startup
//Note: to prevent a given theme from being chosen at random, tag it with <<tag noRandom>>//
<<<
!!!!!Installation Note
>As of 4/13/2008, a "core patch" function that provides backward-compatibility with TW2.3.x has been split into a separate [[SwitchThemePluginPatch]] tiddler to reduce installation overhead for //this// plugin. ''You should only install [[SwitchThemePluginPatch]] when using this plugin in documents based on a core version prior to TW2.4.0''
!!!!!Revisions
<<<
2008.04.23 [5.3.0] added option for chkRandomTheme (select random theme at startup)
2008.04.13 [5.2.0] moved TW2.3.x fixup for core's switchTheme() function to [[SwitchThemePluginPatch]] and simplified random theme handling. Also, changed "Web*" prefix to "*ReadOnly" suffix for compatibility with TW240 core convention.
| Please see [[SwitchThemePluginInfo]] for previous revision details |
2008.01.22 [5.0.0] Completely re-written and renamed from [[SelectStylesheetPlugin]] (now retired)
>//history for retired [[SelectStylesheetPlugin]] omitted//
2005.07.20 [1.0.0] Initial Release
<<<
!!!!!Code
***/
//{{{
version.extensions.SwitchThemePlugin= {major: 5, minor: 3, revision: 0, date: new Date(2008,4,23)};
config.macros.switchTheme = {
handler: function(place,macroName,params) {
setStylesheet(".switchTheme {width:100%;font-size:8pt;margin:0em}","switchThemePlugin");
if (params[0] && (params[0].substr(0,6)=="width:")) var width=(params.shift()).substr(6);
if (params[0] && (params[0].substr(0,6)=="label:")) var label=(params.shift()).substr(6);
if (params[0] && (params[0].substr(0,7)=="prompt:")) var prompt=(params.shift()).substr(7);
if (params[0] && params[0].trim().length) // create a link that sets a specific theme
createTiddlyButton(place,label?label:params[0],prompt?prompt:params[0],
function(){ config.macros.switchTheme.set(params[0]); return false;});
else { // create a select list of available themes
var theList=createTiddlyElement(place,"select",null,"switchTheme",null);
theList.size=1;
if (width) theList.style.width=width;
theList.onchange=function() { config.macros.switchTheme.set(this.value); return true; };
this.refresh(theList);
}
},
refresh: function(list) {
var indent = String.fromCharCode(160)+String.fromCharCode(160);
while(list.length > 0){list.options[0]=null;} // clear list
list.options[list.length] = new Option("select a theme:","",true,true);
list.options[list.length] = new Option(indent+"[default]","StyleSheet");
list.options[list.length] = new Option(indent+"[random]","*");
var themes=store.getTaggedTiddlers("systemTheme");
for (var i=0; i<themes.length; i++) if (themes[i].title!="StyleSheet")
list.options[list.length]=new Option(indent+themes[i].title,themes[i].title);
// show current selection
for (var t=0; t<list.options.length; t++)
if (list.options[t].value==config.options.txtTheme)
{ list.selectedIndex=t; break; }
},
set: function(theme) {
if (!theme||!theme.trim().length) return;
if (theme=="*") { // select a random theme (excluding themes tagged with "noRandom")
var themes=store.getTaggedTiddlers("systemTheme"); if (!themes.length) return false;
var which=Math.floor(Math.random()*themes.length);
while (themes[which].title==config.options.txtTheme||themes[which].isTagged("noRandom"))
which=Math.floor(Math.random()*themes.length);
theme=themes[which].title;
}
// apply and remember selected theme
story.switchTheme(theme);
config.options.txtTheme=theme;
saveOptionCookie("txtTheme");
// sync theme droplists
var elems=document.getElementsByTagName("select");
var lists=[]; for (var i=0; i<elems.length; i++)
if (hasClass(elems[i],"switchTheme")) lists.push(elems[i]);
for (var k=0; k<lists.length; k++)
for (var t=0; t<lists[k].options.length; t++)
if (lists[k].options[t].value==config.options.txtTheme)
{ lists[k].selectedIndex=t; break; }
return;
}
}
//}}}
// // select a random theme at startup (if enabled)
//{{{
if (config.options.chkRandomTheme===undefined)
config.options.chkRandomTheme=false;
if (config.options.chkRandomTheme)
config.macros.switchTheme.set("*");
//}}}
<<<
All things listed on this menu are mostly structural and are normally in most ~TiddlyWikis in some form or another. To clean up the MainMenu for your own use simply remove the 'System' and 'Main Menu' code from the MainMenu and add your own working menu. See CreateNewMenu
<<<
!!Definíció
Legyen $L^{(0)}=\langle LC, Con, Form \rangle$ egy [[nulladrendű nyelv|Nulladrendű nyelv]], $\Gamma\subset Form$ egy formulahalmaz és $A\in Form$ egy formula.
Ha az $A$ formula szintaktikai következménye a $\Gamma$ formulahalmaznak, akkor a '$\Gamma \vdash A$' jelsorozatot szekvenciának nevezzük.
!!!Megjegyzés
*Az üres (egyetlen karaktert sem tartalmazó) jelsorozat jelölésére az $\varepsilon$ görög betűt használjuk.
*Az üres jelsorozatot a természetes levezetés rendszerében szekvenciának, mégpedig üres szekvenciának tekintjük.
!!Definíció (logikai következmény szemantikai definíciója)
Legyen $L^{(0)}=\langle LC, Con, Form \rangle$ egy [[nulladrendű nyelv|Nulladrendű nyelv]], $\Gamma\subseteq Form$ egy tetszőleges formulahalmaz, és $A\in Form$ egy formula.
A $\Gamma$ formulahalmaznak ''logikai következménye'' az $A$ formula, ha a $\Gamma\cup\{\neg A\}$ [[formulahalmaz kielégíthetetlen|Kielégíthetetlenség]].
Jelölés: $\Gamma\models A$
!!Definíció
Legyen $L^{(0)}=\langle LC, Con, Form \rangle$ egy [[nulladrendű nyelv|Nulladrendű nyelv]] és $A, B\in Form$ két tetszőleges formula.
Az $A$ formulának ''logikai következménye'' a $B$ formula, ha a $\{A\}\models B$.
Jelölés: $A\models B$
!!Definíció (szerkezeti fa nulladrendű nyelv esetén)
Legyen $L^{(0)}=\langle LC, Con, Form \rangle$ egy tetszőleges nulladrendű nyelv, $A\in Form$ pedig a nyelv tetszőleges formulája.
Az $A$ formula szerkezeti fáján egy olyan véges rendezett fát értünk, amelynek csúcsai formulák,
#gyökere az $A$ formula,
#$\neg B$ alakú csúcsának egyetlen gyermeke a $B$ formula,
#$(B\supset C), (B\wedge C), (B\vee C), (B\equiv C)$ alakú csúcsainak két gyermekét a $B$, illetve a $C$ formulák alkotják,
#levelei prímformulák (atomi formulák).
[[Nulladrendű nyelv]] esetén az alábbi fogalmak tartoznak ide:
<<tabs "" [[Részformula]] "" [[Részformula]] [[Közvetlen részformula]] "" [[Közvetlen részformula]] [[Részformula2]] "" [[Részformula2]] [[Szerkezeti fa]] "" [[Szerkezeti fa]] >>
!!Definíció (A szintaktikai következményreláció strukturális induktív definíciója)
Legyen $L^{(0)}=\langle LC, Con, Form \rangle$ egy [[nulladrendű nyelv|Nulladrendű nyelv]], $\Gamma\subseteq Form$ egy tetszőleges formulahalmaz.
A $\Gamma$ formulahalmaz szintaktikai következményeinek induktív definíciója:
#Bázis:
##Ha $A\in \Gamma$, akkor $\Gamma\vdash A$.
##Ha $A$ axióma, akkor $\Gamma\vdash A$.
#Szabály (leválasztási szabály):
##Ha $\Gamma\vdash B$, és $\Gamma\vdash (B\supset A)$, akkor $\Gamma\vdash A$.
!!!Megjegyzés
*A szintaktikai következményreláció definíciója során valójában annak a halmaznak az induktív definiálása történik meg, amelynek elemei a $\Gamma$ formulahalmaz szintaktikai következményei lesznek.
*Ha a $\Gamma$ formulahalmaz szintaktikai következményeinek halmazát $Cns(\Gamma)$-val jelöljük (azaz $Cns(\Gamma)=\{A | \Gamma \vdash A\}$), akkor a megadott definíció átírható a következő alakba:
##$\Gamma\subseteq Cns(\Gamma)$
##Ha $A$ axióma, akkor $A\in Cns(\Gamma)$
##Ha $B\in Cns(\Gamma)$, és $(B\supset A)\in Cns(\Gamma)$, akkor $A\in Cns(\Gamma)$.
*Ha $A\in Cns(\Gamma)$, akkor az $A$ formulát a $\Gamma$ formulahalmaz szintaktikai következményének nevezzük. Jelölés: $\Gamma\vdash A$
A továbbiakban legyenek $\Gamma , \Delta \subseteq Form$ formulahalmazok, $A, B, C\in Form$ pedig formulák.
<<tabs ""[[Reflexív]] "" [[Reflexív]] [[Monoton]] "" [[Monoton]] [[Dedukció tétel]] "" [[Dedukció tétel (kalkulus)]] [[Dedukció tétel megfordítása]] "" [[Dedukció tétel megfordítása (kalkulus)]] [[Metszet tétel]] "" [[Metszet tétel (kalkulus)]]>>
!!Definíció
${\Gamma , B, B, \Delta \vdash A}\over{ \Gamma , B, \Delta \vdash A}$
|>|bgcolor:#8af;@@color(#000080):''24 tiddlers found matching /{{{subset}}}/''@@|bgcolor:#8af; @@color:#A00000; SearchHelp@@ |
|>|>|bgcolor:#E3FFE3;<<search>> <<option chkSearchTitles>> Titles <<option chkSearchText>> Text <<option chkSearchTags>>Tags <<option chkHoldSearches>> Hold |
|bgcolor:#8af; |bgcolor:#8af; sort by:''Titles'' |bgcolor:#8af; ''Size'' |bgcolor:#8af; ''Tags'' |h
| 1|[[Dedukció tétel]]| 1198|Nulladrendű centrális logikai fogalmak tulajdonságai,Szemantikai következményreláció|
| 2|[[Feladatok (centrális fogalmak)]]| 6960|Nulladrendű centrális logikai fogalmak,treeview|
| 3|[[Halmazelméleti jelek]]| 1082|Halmazelméleti eszközök|
| 4|[[Inkontisztens]]| 401|Nulladrendű kalkulus,treeview|
| 5|[[Jelek magyarázata]]| 937||
| 6|[[Kielégíthetetlenség]]| 887|Nulladrendű centrális logikai fogalmak|
| 7|[[Kielégíthetőség]]| 1061|Nulladrendű centrális logikai fogalmak|
| 8|[[Konzisztens]]| 493|Nulladrendű kalkulus,treeview|
| 9|[[Következményreláció tulajdonsága(1)]]| 1776|Nulladrendű centrális logikai fogalmak tulajdonságai,Szemantikai következményreláció|
| 10|[[Következményreláció tulajdonsága(2)]]| 699|Nulladrendű centrális logikai fogalmak tulajdonságai,Szemantikai következményreláció,Érvényesség|
| 11|[[Következményreláció tulajdonsága(3)]]| 588|Nulladrendű centrális logikai fogalmak tulajdonságai,Szemantikai következményreláció,Kielégíthetetlenség|
| 12|[[Logikai jelölési konvenciók]]| 1937|Nulladrendű logika|
| 13|[[Logikai szabályok]]| 411|Természetes levezetés,treeview|
| 14|[[MathSVGPlugin]]| 70899|systemConfig|
| 15|[[Metszet tétel]]| 1352|Nulladrendű centrális logikai fogalmak tulajdonságai,Szemantikai következményreláció,treeview|
| 16|[[Nulladrendű modell]]| 704|Nulladrendű centrális logikai fogalmak,treeview|
| 17|[[Nulladrendű nyelv]]| 789|Nulladrendű logika,treeview|
| 18|[[Strukturális szabályok]]| 354|Természetes levezetés,treeview|
| 19|[[Szekvencia]]| 548|Természetes levezetés,treeview|
| 20|[[Szemantikai következményreláció]]| 667|Nulladrendű centrális logikai fogalmak,treeview|
| 21|[[Szintaktikai következményreláció]]| 1217|Nulladrendű kalkulus,treeview|
| 22|[[Szintektikai következményreláció tulajdonságai]]| 356|Nulladrendű kalkulus,treeview|
| 23|[[Tétel (kielégíthetetlenség)]]| 645|Kielégíthetetlenség,Nulladrendű centrális logikai fogalmak tulajdonságai,treeview|
| 24|[[Tétel (kielégíthetőség)]]| 693|Nulladrendű centrális logikai fogalmak tulajdonságai,Kielégíthetőség,treeview|
|sortable|k
<!--{{{-->
<div class='header' macro='gradient vert #00c #003'>
<div class='headerShadow'>
<span class='siteTitle' refresh='content' tiddler=''></span>
<span class='siteSubtitle' refresh='content' tiddler=''></span>
</div>
<div class='headerForeground'>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
</div>
<div id='topMenu'><span class='topMenu' refresh='content' tiddler='TopMenu'></span></div>
</div><div id='tiddlersBar' refresh='none' ondblclick='config.macros.tiddlersBar.onTiddlersBarAction(event)'></div>
<div id='mainMenu' refresh='content' force='true' tiddler='MainMenuTW'><div id='contentFooter' refresh='content' tiddler='ContentFooter'></div></div>
<div id='sidebar'>
<div id='sidebarOptions' refresh='content' force='true' tiddler='SideBarOptions'></div>
<div id='sidebarTabs' refresh='content' force='true' tiddler='SideBarTabs'></div>
</div>
<div id='displayArea'>
<div id='messageArea'></div>
<div id='tiddlerDisplay'></div>
<div id='contentFooter' refresh='content' tiddler='ContentFooter'></div></div>
<!--}}}-->
#sidebarTabs .tabContents {
max-height: 35em; /* not IE6-compatible */
overflow: auto;
width: 92.5%;
}
#sidebarTabs .tabContents .tabContents {
max-height: 30em !important; /* not IE6-compatible */
}
#sidebarTabs .tabContents a {color:#ffc;}
#sidebarTabs .tabContents a:hover {
background: #fff;
color: #f00;}
#sidebarTabs .tabContents {
color: #3CF;
background: #008;
border-top: 0px solid #666;
margin-bottom: 2em;
}
.tabSelected {
padding: 1px;
cursor: default;
color: #700;
background-color: #000;
border-left:0px solid #000;
border-top:0px solid #000;
border-right:0px solid #000;
font-size:.95em;
font-weight:bold;
padding: 2px 4px;
}
.viewer .tabSelected {
padding: 1px;
cursor: default;
color: #700;
background-color: #000;
border-left:0px solid #000;
border-top:0px solid #000;
border-right:0px solid #000;
font-size:.95em;
font-weight:bold;
padding: 2px 4px;
}
#sidebarTabs .tabUnselected {
padding: 1px;
color: #007;
background-color: #666;
font-size:.95em;
padding: 2px 4px;
}
.tabUnselected {
padding: 1px;
color: #007;
background-color: #666;
font-size:.95em;
padding: 2px 4px;
}
.viewer .tabUnselected {
padding: 1px;
color: #007;
background-color: #666;
font-size:.95em;font-weight:bold;
padding: 2px 4px;
}
/***
!!<<gradient horiz #fff #999>> THEME SWITCHING>>/%==================================================%/
***/
/***
|StyleSheet|TWHelpTheme|
***/
/***
|PageTemplate|TWHelpPageTemplate|
|ViewTemplate|TWViewTemplate|
|EditTemplate|MyEditTemplate|
***/
/***
!!<<gradient horiz #fff #999>> STYLESHEET>>/%==================================================%/
***/
/***There are extra nested stylesheets at the end of this stylesheet***/
/***
!!<<gradient horiz #fff #999>> THEME SPECIFIC - TWHELP>>/%==================================================%/
***/
/*{{{*/
.tiddler {
border-top: 2px solid #ccc;
border-left: 1px solid #ccc;
border-bottom: 3px solid #ccc;
border-right: 3px solid #ccc;
margin: 0.5em;
background:#fff;
padding: 0.5em;
-moz-border-radius: 1em;
}
body {background-image: url("http://www.symbex.net.au/Wiki/fistback_bg.jpg");background-repeat: repeat-x top-left;
color:#030;font-size:0.75em; font-family:arial,helvetica; margin:0; padding:0;auto;}
.clock {{<<tiddler NETTime>>}}
.menuname {color:#ffc;}
.mmheading {color:#0ff;font-weight:bold;}
#displayArea {margin: 0em 14.5em 0em 17em;}
#displayArea {margin-top:0.0em;padding:0em;}
#mainMenu a {color:#ffc;}
#mainMenu a:hover {background:#333;color:#ffd;}
#mainMenu {background:transparent;}
.tabset a:hover {background:#ffd; color:#000;}
.viewer {color:#005;line-height: 1.6em; padding:0.5em;}
.button {border: solid 0px;}
#sidebar {color:#050;}
#sidebar .tabContents {background-color:#008; color #f3f; overflow: auto;}
#sidebar a {color:#ffc;}
#sidebar .button {color:#ffc;}
#sidebar {color:#c06;}
#sidebarTabs .tabContents {
color: #3CF;
background: #008;
border-top: 0px solid #666;
margin-bottom: 2em;}
#topMenu{font-size: 1.4em;}
/*}}}*/
/***
!!<<gradient horiz #fff #999>> END THEME SPECIFIC - TWHELP>>/%==================================================%/
***/
[[CommonCSS]]
[[JqueryTreeviewCSS-T]]
[[StyleSheetShortcuts]]
[[TopMenuStyle2]]
[[StyleSheetTiddlersBarblue]]
[[TWHelpTabsCSS]]
Type the text for 'New Tiddler'
.tabSelected {
padding: 1px;
cursor: default;
color: #700;
background-color: #000;
border-left:0px solid #000;
border-top:0px solid #000;
border-right:0px solid #000;
font-size:.95em;
font-weight:bold;
padding: 2px 4px;
}
.viewer .tabSelected {
padding: 1px;
cursor: default;
color: #700;
background-color: #000;
border-left:0px solid #000;
border-top:0px solid #000;
border-right:0px solid #000;
font-size:.95em;
font-weight:bold;
padding: 2px 4px;
}
.tabUnselected {
padding: 1px;
color: #070;
background-color: #666;
font-size:.95em;
padding: 2px 4px;
}
.viewer .tabUnselected {
padding: 1px;
color: #070;
background-color: #666;
font-size:.95em;font-weight:bold;
padding: 2px 4px;
}
<!--{{{-->
<br />
<div class='toolbar' macro='toolbar [[ToolbarCommands::ViewToolbar]]'><span style="color:#555;">[</span>change:»<span style="padding-right:0em;" macro='tagger'></span >add:»<span macro='newHere label:"subtopic"'></span><span style="color:#555">]</span><span macro='publishTiddler'></span></div><br>
<div class='title' macro='view title'></div>
<div class='viewer' macro='view text wikified'></div>
<div class='tagClear'></div>
<!--}}}-->
/***
|Name|TaggedTemplateTweak|
|Source|http://www.TiddlyTools.com/#TaggedTemplateTweak|
|Documentation|http://www.TiddlyTools.com/#TaggedTemplateTweakInfo|
|Version|1.5.2|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|plugin|
|Requires||
|Overrides|Story.prototype.chooseTemplateForTiddler()|
|Description|use alternative ViewTemplate/EditTemplate for tiddler's tagged with specific tag values|
This tweak extends story.chooseTemplateForTiddler() so that ''whenever a tiddler is marked with a specific tag value, it can be viewed and/or edited using alternatives to the standard tiddler templates.''
!!!!!Documentation
>see [[TaggedTemplateTweakInfo]]
!!!!!Revisions
<<<
2009.05.04 [1.5.2] check for tiddler exist *after* title-as-prefix (allows shadow tiddlers to use custom templates)
| please see [[TaggedTemplateTweakInfo]] for previous revision details |
2007.06.11 [1.0.0] initial release
<<<
!!!!!Code
***/
//{{{
version.extensions.TaggedTemplateTweak= {major: 1, minor: 5, revision: 2, date: new Date(2009,5,4)};
Story.prototype.taggedTemplate_chooseTemplateForTiddler = Story.prototype.chooseTemplateForTiddler
Story.prototype.chooseTemplateForTiddler = function(title,template)
{
// get core template and split into theme and template name
var coreTemplate=this.taggedTemplate_chooseTemplateForTiddler.apply(this,arguments);
var theme=""; var template=coreTemplate;
var parts=template.split(config.textPrimitives.sectionSeparator);
if (parts[1]) { theme=parts[0]; template=parts[1]; }
else theme=config.options.txtTheme||""; // fallback if theme is not specified
theme+=config.textPrimitives.sectionSeparator;
// look for template using *title* as prefix
if (!store.getTaggedTiddlers(title).length) { // if tiddler is not a tag
if (store.getTiddlerText(theme+title+template)) { return theme+title+template; } // theme##TitleTemplate
if (store.getTiddlerText(title+template)) { return title+template; } // TitleTemplate
}
// look for templates using *tags* as prefix
var tiddler=store.getTiddler(title);
if (!tiddler) return coreTemplate; // tiddler doesn't exist... use core result
for (i=0; i<tiddler.tags.length; i++) {
var t=tiddler.tags[i]+template; // add tag prefix to template
var c=t.substr(0,1).toUpperCase()+t.substr(1); // capitalized for WikiWord title
if (store.getTiddlerText(theme+t)) { return theme+t; } // theme##tagTemplate
if (store.getTiddlerText(theme+c)) { return theme+c; } // theme##TagTemplate
if (store.getTiddlerText(t)) { return t; } // tagTemplate
if (store.getTiddlerText(c)) { return c; } // TagTemplate
}
// no match... use core result
return coreTemplate;
}
//}}}
/***
|Name|TaggedTemplateTweakInfo|
|Source|http://www.TiddlyTools.com/#TaggedTemplateTweak|
|Documentation|http://www.TiddlyTools.com/#TaggedTemplateTweakInfo|
|Version|1.5.2|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|documentation|
|Requires||
|Overrides||
|Description|Documentation for TaggedTemplateTweak|
The core function, "story.chooseTemplateForTiddler(title,template)" is essentially a "pass-thru" that returns the same template it was given, and is provided by the core so that plugins can customize the template selection logic to select alternative templates, based on whatever programmatic criteria is appropriate. This tweak extends story.chooseTemplateForTiddler() so that ''whenever a tiddler is marked with a specific tag value, it can be viewed and/or edited using alternatives to the standard tiddler templates.''
!!!!!Usage
<<<
Each alternative template is associated with a specific tiddler tag value by using that tag value as a prefix added to the standard TiddlyWiki template titles, [[ViewTemplate]] and [[EditTemplate]]. For example, any tiddlers that are tagged with ''<<tag media>>'' will look for alternative templates named [[mediaViewTemplate]] and [[mediaEditTemplate]].
To use templates that have proper WikiWord tiddler titles (e.g., [[MediaViewTemplate]] and [[MediaEditTemplate]]), the plugin will also attempt to use a capitalized form of the tag value (e.g., ''Media'') as a prefix. //This capitalization is for comparison purposes only and will not alter the actual tag values that are stored in the tiddler.//
To use templates contained as //sections// within a systemTheme definition, the plugin also tries prepending the currently selected theme (specified by {{{config.options.txtTheme}}}) plus the 'section separator' (##) to the template name (e.g. ''[[SomeTheme##MediaViewTemplate]]'').
In addition to tag matching, the plugin also tries using the tiddler's //title// as a prefix (i.e., ''TiddlerNameViewTemplate'' and ''TiddlerNameEditTemplate''). This allows you to associate a custom template with a specific tiddler, without needing to add any special tag designation to that tiddler. Note that, similar to the manner in which //specificity// rules are applied to CSS, a template matching a specific ID (tiddler title) will always take precedence over a template matching a particular class name (tag value). Thus, [[SomeTitleViewTemplate]] overrides [[someTagViewTemplate]], which overrides the default [[ViewTemplate]].
Finally, if no alternative template is found at all, then the tiddler defaults to using the appropriate standard [[ViewTemplate]] or [[EditTemplate]] definition as determined by the standard TiddlyWiki core handling.
''To add your own custom templates:''
>First, decide upon a suitable tag keyword to uniquely identify your custom templates and create custom view and/or edit templates using that keyword as a prefix (e.g., "KeywordViewTemplate" and "KeywordEditTemplate"). Then, simply create a tiddler and tag it with your chosen keyword... that's it! As long as the tiddler is tagged with your keyword, it will be displayed using the corresponding alternative templates. If you remove the tag or rename/delete the alternative templates, the tiddler will revert to using the standard viewing and editing templates.
<<<
!!!!!Examples
<<<
|Sample tiddler| tag | view template | edit template |
|[[MediaSample - QuickTime]]| <<tag media>> | [[MediaViewTemplate]] | [[MediaEditTemplate]] |
|[[MediaSample - Windows]]| <<tag media>> | [[MediaViewTemplate]] | [[MediaEditTemplate]] |
|[[CDSample]]| <<tag CD>> | [[CDViewTemplate]] | [[CDEditTemplate]] |
|<<newTiddler label:"create new task..." title:SampleTask tag:task text:"Type some text and then press DONE to view the task controls">> | <<tag task>> | [[TaskViewTemplate]] | [[EditTemplate]] |
//(note: if these samples are not present in your document, please visit// http://www.TiddlyTools.com/ //to view these sample tiddlers on-line)//
<<<
!!!!!Revisions
<<<
2009.05.04 [1.5.2] check for tiddler exist *after* title-as-prefix (allows shadow tiddlers to use custom templates)
2009.01.06 [1.5.1] reversed logic so that title-as-prefix takes precedence over tag-matched prefix
2008.12.18 [1.5.0] added handling for using tiddler //title// as prefix (e.g., {{{SomeTiddlerViewTemplate}}})
2008.08.29 [1.4.1] corrected handling for tiddlers with no matching tagged template when non-default theme is in effect (e.g., use "MyTheme##ViewTemplate").
2008.05.15 [1.4.0] support use of *shadow* tagged templates (e.g., [[DiscussionViewTemplate]] created by [[DiscussionPlugin]])
2008.05.10 [1.3.0] corrected handling for determining core template when using theme with sections
2008.05.01 [1.2.5] added support for tagged templates stored as sections in a theme
2008.04.01 [1.2.0] added support for using systemTheme section-based template definitions (requested by Phil Hawksworth)
2008.01.22 [*.*.*] plugin size reduction - documentation moved to [[TaggedTemplateTweakInfo]]
2007.06.23 [1.1.0] re-written to use automatic 'tag prefix' search instead of hard coded check for each tag. Allows new custom tags to be used without requiring code changes to this plugin.
2007.06.11 [1.0.0] initial release
<<<
@@color:#800;Tiddlers tagged with TreeviewPackage (plugins, macros and tweaks)@@
<<tiddler ToggleRightSidebar with: "Sidebar »">>
{{twocolumns{
<script>
// get all tiddlers tagged with "TreeviewPackage"
var tids=store.getTaggedTiddlers("TreeviewPackage");
// keep only tiddlers *also* tagged with New
var list=[];
for (var t=0; t<tids.length; t++)
if (tids[t].isTagged("TreeviewPackage")) list.push(tids[t]);
// create output list of tiddler titles, one per line
var out="";
for (var t=0; t<list.length; t++) out+="#[["+list[t].title+"]]\n";
return out;
</script>
}}}
/***
|''Name:''|~TaggerPlugin|
|''Version:''|1.0.1 (2006-06-01)|
|''Source:''|http://tw.lewcid.org//#TaggerPlugin|
|''Author:''|SaqImtiaz|
|''Description:''|Provides a drop down listing current tiddler tags, and allowing toggling of tags.|
|''Documentation:''|[[TaggerPluginDocumentation]]|
|''Source Code:''|[[TaggerPluginSource]]|
|''~TiddlyWiki:''|Version 2.0.8 or better|
|''Requires''|[[DeprecatedFunctionsPlugin]]|
|''Stylesheet Changes''|ViewTemplate|
|See Above|<div class='toolbar'><span style="padding-right:2.45em;" macro='tagger source:TagDB exclude:excludeLists'></span></div>|
***/
//{{{
config.tagger={
defaults:{
label: 'Tags: ',
tooltip: 'Manage tiddler tags',
taglist: 'true',
excludeTags: 'excludeLists',
notags: 'tiddler has no tags',
aretags: 'current tiddler tags:',
toggletext: 'add tags:'
}
};
config.macros.tagger={};
config.macros.tagger.arrow = (document.all?"▼":"▾"); // the fat one is the only one that works in IE
config.macros.tagger.handler = function(place,macroName,params,wikifier,paramString,tiddler) {
var defaults = config.tagger.defaults;
var nAV = paramString.parseParams('tagman', null, true);
var label = ((nAV[0].label)&&(nAV[0].label[0])!='.')?nAV[0].label[0]+this.arrow: defaults.label+this.arrow;
var tooltip = ((nAV[0].tooltip)&&(nAV[0].tooltip[0])!='.')?nAV[0].tooltip[0]: defaults.tooltip;
var taglist = ((nAV[0].taglist)&&(nAV[0].taglist[0])!='.')?nAV[0].taglist[0]: defaults.taglist;
var exclude = ((nAV[0].exclude)&&(nAV[0].exclude[0])!='.')?(nAV[0].exclude[0]).readBracketedList(): defaults.excludeTags.readBracketedList();
if ((nAV[0].source)&&(nAV[0].source[0])!='.')var source = nAV[0].source[0];
if (source&&!store.getTiddler(source)) return false;
var onclick = function(e) {
if (!e) var e = window.event;
var popup = Popup.create(this);
var tagsarray = store.getTags();
var tags=new Array();
for (var i=0; i<tagsarray.length; i++){
tags.push(tagsarray[i][0]);}
if (source)
{var sourcetiddler=store.getTiddler(source);
tags=sourcetiddler.tags.sort();}
var currentTags = tiddler.tags.sort();
var createButtons=function(text,theTag,tooltipPrefix){
var sp = createTiddlyElement(createTiddlyElement(popup,"li"),"span",null,"tagger");
var theToggle = createTiddlyButton(sp,text,tooltipPrefix+" '"+theTag+"'",taggerOnToggle,"button","toggleButton");
theToggle.setAttribute("tiddler",tiddler.title);
theToggle.setAttribute("tag",theTag);
insertSpacer(sp);
if (window.createTagButton_orig_mptw)
createTagButton_orig_mptw(sp,theTag);
else
createTagButton(sp,theTag);
}
createTiddlyElement(popup,"li",null,"listTitle",(tiddler.tags.length == 0 ? defaults.notags : defaults.aretags));
for (var t=0; t<currentTags.length; t++){
createButtons("[x]",currentTags[t],"remove tag ");
}
createTiddlyElement(createTiddlyElement(popup,"li"),"hr");
if (taglist!='false')
{ createTiddlyElement(popup,"li",null,"listTitle",defaults.toggletext);
for (var i=0; i<tags.length; i++){
if (!tiddler.tags.contains(tags[i])&&!exclude.contains(tags[i]))
{createButtons("[ ]",tags[i],"add tag ");
}
}
createTiddlyElement(createTiddlyElement(popup,"li"),"hr");
}
var newTagButton = createTiddlyButton(createTiddlyElement(popup,"li"),("Create new tag"),null,taggerOnToggle);
newTagButton.setAttribute("tiddler",tiddler.title);
if (source) newTagButton.setAttribute("source",source);
Popup.show(popup,false);
e.cancelBubble = true;
if (e.stopPropagation) e.stopPropagation();
return(false);
};
createTiddlyButton(place,label,tooltip,onclick,"button","taggerDrpBtn");
};
window.taggerOnToggle = function(e) {
var tag = this.getAttribute("tag");
var title = this.getAttribute("tiddler");
var tiddler = store.getTiddler(title);
if (!tag)
{
var newtag=prompt("Enter new tag:","");
if (newtag!=''&&newtag!=null)
{
var tag=newtag;
if (this.getAttribute("source"))
{var sourcetiddler = store.getTiddler(this.getAttribute("source"));
sourcetiddler.tags.pushUnique(newtag);}
}
else
{return false;};
}
if (!tiddler || !tiddler.tags)
{store.saveTiddler(title,title,'',config.options.txtUserName,new Date(),tag);}
else
{if (tiddler.tags.find(tag)==null)
{tiddler.tags.push(tag)}
else if(!newtag)
{tiddler.tags.splice(tiddler.tags.find(tag),1)};
store.saveTiddler(tiddler.title,tiddler.title,tiddler.text,tiddler.modifier,tiddler.modified,tiddler.tags);};
story.refreshTiddler(title,null,true);
if(config.options.chkAutoSave)
saveChanges();
return false;
};
setStylesheet(
".tagger a.button {font-weight: bold;display:inline; padding:0px;}\n"+
".tagger #toggleButton {padding-left:2px; padding-right:2px; margin-right:1px; font-size:110%;}\n"+
"#nestedtagger {background:#2E5ADF; border: 1px solid #0331BF;}\n"+
".popup .listTitle {color:#000;}\n"+
"",
"TaggerStyles");
window.lewcidTiddlerSwapTag = function (tiddler, oldTag, newTag){
for (var i = 0; i < tiddler.tags.length; i++)
if (tiddler.tags[i] == oldTag) {
tiddler.tags[i] = newTag;
return true;}
return false;
}
window.lewcidRenameTag = function(e) {
var tag=this.getAttribute("tag");
var newtag=prompt("Rename tag '"+tag+"' to:",tag);
if ((newtag==tag)||(newtag==null)) {return false;}
if(store.tiddlerExists(newtag))
{if(confirm(config.messages.overwriteWarning.format([newtag.toString()])))
story.closeTiddler(newtag,false,false);
else
return null;}
tagged=store.getTaggedTiddlers(tag);
if (tagged.length!=0){
for (var j = 0; j < tagged.length; j++)
lewcidTiddlerSwapTag(tagged[j],tag,newtag);}
if (store.tiddlerExists(tag))
{store.saveTiddler(tag,newtag);}
if (document.getElementById("tiddler"+tag))
{var oldTagTiddler = document.getElementById(story.idPrefix + tag);
var before= story.positionTiddler(oldTagTiddler);
var place = document.getElementById(story.container);
story.closeTiddler(tag,false,false);
story.createTiddler(place,before,newtag,null);
story.saveTiddler(newtag);}
if(config.options.chkAutoSave)
saveChanges();
return false;
}
window.onClickTag=function(e)
{
if (!e) var e = window.event;
var theTarget = resolveTarget(e);
var nested = (!isNested(theTarget));
if ((Popup.stack.length > 1)&&(nested==true)) {Popup.removeFrom(1);}
else if(Popup.stack.length > 0 && nested==false) {Popup.removeFrom(0);};
var theId = (nested==false)? "popup" : "nestedtagger";
var popup = createTiddlyElement(document.body,"ol",theId,"popup",null);
Popup.stack.push({root: this, popup: popup});
var tag = this.getAttribute("tag");
var title = this.getAttribute("tiddler");
if(popup && tag)
{
var tagged = store.getTaggedTiddlers(tag);
var titles = [];
var li,r;
for(r=0;r<tagged.length;r++)
if(tagged[r].title != title)
titles.push(tagged[r].title);
var lingo = config.views.wikified.tag;
if(titles.length > 0)
{
var openAll = createTiddlyButton(createTiddlyElement(popup,"li"),lingo.openAllText.format([tag]),lingo.openAllTooltip,onClickTagOpenAll);
openAll.setAttribute("tag",tag);
createTiddlyElement(createTiddlyElement(popup,"li"),"hr");
for(r=0; r<titles.length; r++)
{
createTiddlyLink(createTiddlyElement(popup,"li"),titles[r],true);
}
}
else
createTiddlyText(createTiddlyElement(popup,"li",null,"disabled"),lingo.popupNone.format([tag]));
createTiddlyElement(createTiddlyElement(popup,"li"),"hr");
var h = createTiddlyLink(createTiddlyElement(popup,"li"),tag,false);
createTiddlyText(h,lingo.openTag.format([tag]));
createTiddlyElement(createTiddlyElement(popup,"li"),"hr");
var renameTagButton = createTiddlyButton(createTiddlyElement(popup,"li"),("Rename tag '"+tag+"'"),null,lewcidRenameTag);
renameTagButton.setAttribute("tag",tag)
}
Popup.show(popup,false);
e.cancelBubble = true;
if (e.stopPropagation) e.stopPropagation();
return(false);
}
if (!window.isNested)
window.isNested = function(e) {
while (e != null) {
var contentWrapper = document.getElementById("contentWrapper");
if (contentWrapper == e) return true;
e = e.parentNode;
}
return false;
};
config.shadowTiddlers.TaggerPluginDocumentation="The documentation is available [[here.|http://tw.lewcid.org/#TaggerPluginDocumentation]]";
config.shadowTiddlers.TaggerPluginSource="The uncompressed source code is available [[here.|http://tw.lewcid.org/#TaggerPluginSource]]";
//}}}
Type the text for 'New Tiddler'
A természetes levezetés rendszere a következő komponensekből épül fel:
<<tabs ""[[Szekvencia]] "" [[Szekvencia]] [[Strukturális szabályok]] "" [[Strukturális szabályok]] [[Logikai szabályok]] "" [[Logikai szabályok]] [[Induktív definíció]] "" [[Természetes levezetés induktív definíciója]] [[Segédtételek]] "" [[Segédtételek]]>>
*''There is a simple project manager built into ~TWT-Treeview. See [[Projects]]''
*To add [[Projects]] to your current ~TWT-Treeview import all tiddlers from here tagged ~ProjectPackage.
+++[The ProjectPackage list]<<tiddler ListTiddlersTaggedProjectPackage>>===
{{mmheading{My Projects}}}
<<treeview2 "Projects" "filetree" 'collapsed: false, antisesame: "closed", animated: "normal", persist: "cookie", cookieId: "projectsid"' >>
Files for making new tiddlers
----
/%
!project
<html><span style="padding-right:0.15em;" macro='monkeyTagger status'></span> </html>
*''Note: Once you are done with the following instructions delete them and start your new project here.''
# Rename this tiddler to your desired project name. It will been added to your projects under the heading Projects
# Set the status above
#''You can add any number of tasks under any project by clicking __add:»subtopic__ in its toolbar above.''
#You can check the status of all projects by calling up the tiddler Projects and clicking on the appropriate button.
''Note: ''You can create any status you want by creating a tiddler with the status name then __tag it status__ and adding another button using the existing ones as a model.
!end
%/
/%
!html
<html><hide linebreaks>
</html>
!end
%/
/%
!iframe
{{borderless center{
|vertical-align:bottom;<<tiddler ToggleRightSidebar with: "Sidebar »">> |<<tiddler NavButtons>>| open in new window[img[New window|http://img229.imageshack.us/img229/1687/extlink7226466sx5.gif][TYPE URL HERE]]|
----
<html><div align="center"><iframe src ="TYPE URL HERE" width="100%" align="center" height="600" scrolling="auto" frameborder="0" allowtransparency style="border:none;"></iframe></div></html>}}}
!end
%/
/%
!journal2
Put your preconfigured journal information here in TiddlerMakeFile
!end
%/
/%
!object
<html><div align="center"> <object width="425" height="350"><param name="movie" value="TYPE URL HERE"></param><param name="wmode" value="transparent"></param><embed src="TYPE URL HERE" type="application/x-shockwave-flash" wmode="transparent" width="425" height="350"></embed></object></div></html>
!end
%/
/%
!table
{{floatright{<<tiddler CreateHtmlTable>>}}}{{wrappingClass{<<tabs makeTable "×" "" ""
"Make 2" "create 2 columns" "MakeTable##2"
3 "create 3 columns" "MakeTable##3"
4 "create 4 columns" "MakeTable##4"
"5 columns" "create 5 columns" "MakeTable##5">>}}}/%
!2
<html><hide linebreaks><!-- see HTMLFormattingPlugin --><form action="javascript:;"
onsubmit="
/* validate new title */
var t=this.title.value;
if (!t.length || t==this.title.defaultValue)
{ alert('A title is required'); this.title.focus(); return false; }
if (store.tiddlerExists(t) && !confirm(config.messages.overwriteWarning.format([t])))
{ this.title.focus(); return false; }
/* get current tiddler (if any) */
var tid=store.getTiddler(t);
var who=tid?tid.modifier:config.options.txtUserName;
var when=tid?tid.modified:new Date();
var txt=tid?tid.text:'';
var tags=tid?tid.tags:[];
var fields=tid?tid.fields:{};
/* get form values and construct new tiddler text */
var fmt='|%0|%1|\n%2\n';
var newtxt=fmt.format([this.field1.value,this.field2.value,this.field3.value]);
/* insert new text at marker (or end, if no marker) */
var marker='/*MARKER*/';
if (txt.indexOf(marker)==-1) txt=txt+newtxt;
else txt=txt.replace(new RegExp(marker.escapeRegExp()),newtxt+marker);
/* get new tags and add to existing tags (if any) */
var newtags=this.tagsfield.value.readBracketedList();
for (var i=0; i<newtags.length; i++) tags.pushUnique(newtags[i]);
/* write and show tiddler */
store.saveTiddler(t,t,txt, who, when, tags, fields);
story.displayTiddler(story.findContainingTiddler(this),t);
return false;">
Title <input name="title" value="enter a title" onfocus="this.select()">
Field1 <input name="field1" value="field1 value" onfocus="this.select()">
Field2 <input name="field2" value="field2 value" onfocus="this.select()"><br>
<textarea name="field3" rows=5 style="width:100%;">field3 value goes here</textarea><br>
<input name="tagsfield" value="space-separated tags go here" style="width:100%;"><br>
<input type="submit" value="create tiddler">
</form></html>
!3
<html><hide linebreaks><form action="javascript:;"
onsubmit="
var t=this.title.value;
if (!t.length || t==this.title.defaultValue)
{ alert('A title is required'); this.title.focus(); return false; }
if (store.tiddlerExists(t) && !confirm(config.messages.overwriteWarning.format([t])))
{ this.title.focus(); return false; }
var txt='|%0|%1|%2|\n%3'.format([this.field1.value,this.field2.value,this.field3.value,this.field4.value]);
var tags=this.tagsfield.value.readBracketedList();
store.saveTiddler(t,t,txt, config.options.txtUserName, new Date(), tags, {});
story.displayTiddler(story.findContainingTiddler(this),t);
return false;">
<input name="title" value="enter a title" style="width:23%;" onfocus="this.select()">
<input name="field1" value="field value 1" style="width:23%;" onfocus="this.select()">
<input name="field2" value="field value 2" style="width:23%;" onfocus="this.select()">
<input name="field3" value="field value 3" style="width:23%;" onfocus="this.select()"><br>
<textarea name="field4" rows=5 style="width:99%;"></textarea><br>
<input name="tagsfield" value="space-separated tags go here" style="width:99%;"><br>
<input type="submit" value="create tiddler">
</form></html>
!4
<html><hide linebreaks><form action="javascript:;"
onsubmit="
var t=this.title.value;
if (!t.length || t==this.title.defaultValue)
{ alert('A title is required'); this.title.focus(); return false; }
if (store.tiddlerExists(t) && !confirm(config.messages.overwriteWarning.format([t])))
{ this.title.focus(); return false; }
var txt='|%0|%1|%2|%3|\n%4'.format([this.field1.value,this.field2.value,this.field3.value,this.field4.value,this.field5.value]);
var tags=this.tagsfield.value.readBracketedList();
store.saveTiddler(t,t,txt, config.options.txtUserName, new Date(), tags, {});
story.displayTiddler(story.findContainingTiddler(this),t);
return false;">
<input name="title" value="enter a title" style="width:18%;" onfocus="this.select()">
<input name="field1" value="field value 1" style="width:18%;" onfocus="this.select()">
<input name="field2" value="field value 2" style="width:18%;" onfocus="this.select()">
<input name="field3" value="field value 3" style="width:18%;" onfocus="this.select()">
<input name="field4" value="field value 4" style="width:18%;" onfocus="this.select()"><br>
<textarea name="field5" rows=5 style="width:99%;"></textarea><br>
<input name="tagsfield" value="space-separated tags go here" style="width:99%;"><br>
<input type="submit" value="create tiddler">
</form></html>
!5
<html><hide linebreaks><form action="javascript:;"
onsubmit="
var t=this.title.value;
if (!t.length || t==this.title.defaultValue)
{ alert('A title is required'); this.title.focus(); return false; }
if (store.tiddlerExists(t) && !confirm(config.messages.overwriteWarning.format([t])))
{ this.title.focus(); return false; }
/* extract field values and construct new tiddler text */
var txt='|%0|%1|%2|%3|%4|\n%5'.format([this.field1.value,this.field2.value,this.field3.value,this.field4.value,this.field5.value,this.field6.value]);
/* extract and parse space-separated, bracketed tags into array of strings */
var tags=this.tagsfield.value.readBracketedList();
/* create and show new tiddler */
store.saveTiddler(t,t,txt, config.options.txtUserName, new Date(), tags, {});
story.displayTiddler(story.findContainingTiddler(this),t);
return false;">
<input name="title" value="enter a title" style="width:15%;" onfocus="this.select()">
<input name="field1" value="field value 1" style="width:15%;" onfocus="this.select()">
<input name="field2" value="field value 2" style="width:15%;" onfocus="this.select()">
<input name="field3" value="field value 3" style="width:15%;" onfocus="this.select()">
<input name="field4" value="field value 4" style="width:15%;" onfocus="this.select()">
<input name="field5" value="field value 5" style="width:15%;" onfocus="this.select()"><br>
<textarea name="field6" rows=5 style="width:99%;"></textarea><br>
<input name="tagsfield" value="space-separated tags go here" style="width:99%;"><br>
<input type="submit" value="create tiddler">
</form></html>
!0
%/
/%
!tabs
<<tabs tabsCookie
[[Intro ]] "tooltip 1" [[MakeTabsIntro]]
[[TabTwoName]] "tooltip 2" [[tiddler two]]
[[TabThreeName]] "tooltip 3" [[Tiddler three]]
[[TabFourName]] "tooltip 3" [[Tiddler four]]
>>
OR
Create a tabbed view with one tab for every tiddler containing the tag "YOURTAG" (using the {{{<<tabs...>>}}} macro).
{{{
<<forEachTiddler
where
'tiddler.tags.contains("YOURTAG")'
sortBy
'tiddler.title.toUpperCase()'
write '" [["+tiddler.title+" ]] \"view ["+tiddler.title+"]\" [["+tiddler.title+"]] "'
begin '"<<tabs txtMyAutoTab "'
end '">"+">"'
none '"//No tiddler tagged with \"YOURTAG\"//"'
>>
}}}
!end
%/
/***
|''Name:''|TiddlerNotesPlugin|
|''Description:''|Add notes to tiddlers without modifying the original content|
|''Author:''|Saq Imtiaz ( lewcid@gmail.com )|
|''Source:''|http://tw.lewcid.org/#TiddlerNotesPlugin|
|''Code Repository:''|http://tw.lewcid.org/svn/plugins|
|''Version:''|2.1|
|''Date:''|26/10/07|
|''License:''|[[Creative Commons Attribution-ShareAlike 3.0 License|http://creativecommons.org/licenses/by-sa/3.0/]]|
|''~CoreVersion:''|2.2.3|
!!Concept:
*The TiddlerNotesPlugin allows you to add notes to tiddlers, without needing to edit the original tiddler. This means that your original content will remain unaltered, and if you update it in the future, you won’t lose your notes. Notes are stored in separate tiddlers, but can be viewed and edited from within the original tiddler.
*For a tiddler titled "~MySlide", the notes are by default saved in a tiddler titled "~MySlide-Notes" and is given a tag of "Notes". The suffix and tags of the notes tiddlers are customizable. You can have one or multiple notes per tiddlers. So it is possible to have for example, teacher's notes and student's notes in the same file.
*Notes can be configured to start off blank, or pre-filled with the contents of the original tiddler.
!!Usage:
*{{{<<notes>>}}} is the simplest usage form.
* additional optional parameters include:
**{{{heading:}}} the heading to use for the notes box
**{{{tag:}}} the tag to be given to the notes tiddler
**{{{suffix:}}} the suffix to be used when naming the notes tiddler
* a full macro call could look like: {{{<<notes heading:"My Notes" tag:"NoteTiddlers" suffix:"Comments">>}}}
* To avoid adding {{{<<notes>>}}} to each tiddler you want notes for, you could add the macro call to the ViewTemplate
** below the line {{{<div class='viewer' macro='view text wikified'></div>}}} add the following line: <br> {{{<div class='viewer' macro='notes'></div>}}}
** Used in combination with the ~HideWhenPlugin or ~PublisherPlugin, you could have notes be shown only for tiddlers with specific tags. The ~PublisherPlugin would allow you for instance to only have the ~TeachersNotes visible to the teacher, and the ~StudentsNotes for the same tiddler visible to the Student.
!!Configuration
*<<option chkPrefillNotes>> Enable to pre-fill notes with the original tiddler's contents
!!Demo:
* [[MySlide]]
***/
// /%
//!BEGIN-PLUGIN-CODE
if (!config.options.chkPrefillNotes)
config.options.chkPrefillNotes = false;
function createTiddlyElement(theParent,theElement,theID,theClass,theText,attribs)
{
var e = document.createElement(theElement);
if(theClass != null)
e.className = theClass;
if(theID != null)
e.setAttribute("id",theID);
if(theText != null)
e.appendChild(document.createTextNode(theText));
if(attribs){
for(var n in attribs){
e.setAttribute(n,attribs[n]);
}
}
if(theParent != null)
theParent.appendChild(e);
return e;
}
function createTiddlyButton(theParent,theText,theTooltip,theAction,theClass,theId,theAccessKey,attribs)
{
var theButton = document.createElement("a");
if(theAction) {
theButton.onclick = theAction;
theButton.setAttribute("href","javascript:;");
}
if(theTooltip)
theButton.setAttribute("title",theTooltip);
if(theText)
theButton.appendChild(document.createTextNode(theText));
if(theClass)
theButton.className = theClass;
else
theButton.className = "button";
if(theId)
theButton.id = theId;
if(attribs){
for(var n in attribs){
e.setAttribute(n,attribs[n]);
}
}
if(theParent)
theParent.appendChild(theButton);
if(theAccessKey)
theButton.setAttribute("accessKey",theAccessKey);
return theButton;
}
config.macros.notes={
cancelWarning: "Are you sure you want to abandon changes to your notes for '%0'? This warning is from TiddlerNotesPlugin",
editLabel: "edit notes",
editTitle: "double click to edit",
saveLabel: "save notes",
saveTitle: "double click to save",
cancelLabel: "cancel",
heading: "Notes",
suffix: "Notes",
tag: "Notes",
saveNotes: function(ev){
e = ev? ev : window.event;
var theTarget = resolveTarget(e);
if (theTarget.nodeName.toLowerCase() == "textarea")
return false;
var title = story.findContainingTiddler(theTarget).getAttribute("tiddler");
story.setDirty(title,false);
var box = document.getElementById("notesContainer"+title);
var textarea = document.getElementById("notesTextArea"+title);
if(textarea.getAttribute("oldText")!=textarea.value && !hasClass(theTarget,"cancelNotesButton")){
var suffix = box.getAttribute("suffix");
var t = store.getTiddler(title+"-"+suffix);
store.saveTiddler(title+"-"+suffix,title+"-"+suffix,textarea.value,config.options.txtUserName,new Date(),t?t.tags:box.getAttribute("tag"),t?t.fields:{});
}
story.refreshTiddler(title,1,true);
autoSaveChanges(true);
return false;
},
editNotes: function(box,tiddler){
removeChildren(box);
story.setDirty(tiddler,true);
box.title = this.saveTitle;
box.ondblclick = this.saveNotes;
createTiddlyButton(box,this.cancelLabel,this.cancelLabel,this.saveNotes,"cancelNotesButton");
createTiddlyButton(box,this.saveLabel,this.saveLabel,this.saveNotes,"saveNotesButton");
wikify("!!"+box.getAttribute("heading")+"\n",box);
addClass(box,"editor");
var wrapper1 = createTiddlyElement(null,"fieldset",null,"fieldsetFix");
var wrapper2 = createTiddlyElement(wrapper1,"div");
var e = createTiddlyElement(wrapper2,"textarea","notesTextArea"+tiddler);
var v = store.getValue(tiddler+"-"+box.getAttribute("suffix"),"text");
if(!v)
v = config.options.chkPrefillNotes? store.getValue(tiddler,"text"):'';
e.value = v;
e.setAttribute("oldText",v);
var rows = 10;
var lines = v.match(/\n/mg);
var maxLines = Math.max(parseInt(config.options.txtMaxEditRows),5);
if(lines != null && lines.length > rows)
rows = lines.length + 5;
rows = Math.min(rows,maxLines);
e.setAttribute("rows",rows);
box.appendChild(wrapper1);
},
editNotesButtonOnclick: function(e){
var title = story.findContainingTiddler(this).getAttribute("tiddler");
var box = document.getElementById("notesContainer"+title);
config.macros.notes.editNotes(box,title);
return false;
},
ondblclick : function(ev){
e = ev? ev : window.event;
var theTarget = resolveTarget(e);
var title = story.findContainingTiddler(theTarget).getAttribute("tiddler");
var box = document.getElementById("notesContainer"+title);
config.macros.notes.editNotes(box,title);
e.cancelBubble = true;
if(e.stopPropagation) e.stopPropagation();
return false;
},
handler : function(place,macroName,params,wikifier,paramString,tiddler){
params = paramString.parseParams("anon",null,true,false,false);
var heading = getParam(params,"heading",this.heading);
var tag = getParam(params,"tag",this.tag);
var suffix = getParam(params,"suffix",this.suffix);
var box = createTiddlyElement(place,"div","notesContainer"+tiddler.title,"TiddlerNotes",null,{"source":tiddler.title,params:paramString,heading:heading,tag:tag,suffix:suffix});
createTiddlyButton(box,this.editLabel,this.editLabel,this.editNotesButtonOnclick,"editNotesButton");
wikify("!!"+heading+"\n",box);
box.title=this.editTitle;
box.ondblclick = this.ondblclick;
wikify("<<tiddler [["+tiddler.title+"-"+suffix+"]]>>",box);
}
};
Story.prototype.old_notes_closeTiddler = Story.prototype.closeTiddler;
Story.prototype.closeTiddler = function(title,animate,unused){
if(story.isDirty(title)) {
if(!confirm(config.macros.notes.cancelWarning.format([title])))
return false;
}
return this.old_notes_closeTiddler.apply(this,arguments);
}
setStylesheet(".TiddlerNotes {\n"+ " background:#eee;\n"+ " border:1px solid #ccc;\n"+ " padding:10px;\n"+ " margin:15px;\n"+ "}\n"+ "\n"+ ".cancelNotesButton,.editNotesButton, .saveNotesButton {\n"+ " float:right;\n"+ " border:1px solid #ccc;\n"+ " padding:2px 5px;\n"+ "}\n"+ "\n"+ ".saveNotesButton{\n"+ " margin-right:0.5em;\n"+ "}\n"+ "\n"+ ".TiddlerNotes.editor textarea{\n"+ " border:1px solid #ccc;\n"+ "}","NotesPluginStyles");
//!END-PLUGIN-CODE
// %/
<<tiddler ToggleRightSidebar with: "Sidebar »">>
{{overflow{
<<tiddlerTweaker>>
}}}
/***
|Name|TiddlerTweakerPlugin|
|Source|http://www.TiddlyTools.com/#TiddlerTweakerPlugin|
|Version|2.4.0|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|plugin|
|Requires||
|Overrides||
|Description|select multiple tiddlers and modify author, created, modified and/or tag values|
~TiddlerTweaker is a tool for TiddlyWiki authors. It allows you to select multiple tiddlers from a listbox, either by direct interaction or automatically matching specific criteria. You can then modify the creator, author, created, modified and/or tag values of those tiddlers using a compact set of form fields. The values you enter into the fields simultantously overwrite the existing values in all tiddlers you have selected.
!!!!!Usage
<<<
{{{<<tiddlerTweaker>>}}}
{{smallform{<<tiddlerTweaker>>}}}
By default, any tags you enter into the TiddlerTweaker will //replace// the existing tags in all the tiddlers you have selected. However, you can also use TiddlerTweaker to quickly filter specified tags from the selected tiddlers, while leaving any other tags assigned to those tiddlers unchanged:
>Any tag preceded by a "+" (plus) or "-" (minus), will be added or removed from the existing tags //instead of replacing the entire tag definition// of each tiddler (e.g., enter "-excludeLists" to remove that tag from all selected tiddlers. When using this syntax, care should be taken to ensure that //every// tag is preceded by "+" or "-", to avoid inadvertently overwriting any other existing tags on the selected tiddlers. (note: the "+" or "-" prefix on each tag value is NOT part of the tag value, and is only used by TiddlerTweaker to control how that tag value is processed)
Important Notes:
* Inasmuch as TiddlerTweaker is a 'power user' tool that can perform 'batch' functions (operating on many tiddlers at once), you should always have a recent backup of your document (or "save changes" just *before* tweaking the tiddlers), just in case you "shoot yourself in the foot".
* By design, TiddlerTweaker does NOT update the 'modified' date of tiddlers simply by making changes to the tiddler's values. A tiddler's dates are ONLY updated when the corresponding 'created' and/or 'modified' checkboxes are selected and you enter new values for those dates. As a general rule, after using TiddlerTweaker, always ''//remember to save your document//'' when you are done, even though the tiddler timeline tab may not show any recently modified tiddlers.
* Because you may be changing the values on many tiddlers simultaneously, selecting and updating all tiddlers in a document operation may take a while and your browser might warn about an "unresponsive script"... you should give it a whole bunch of time to 'continue'... it should complete the processing... eventually.
<<<
!!!!!Revisions
<<<
2009.03.30 [2.4.0] added 'sort by modifier'
2009.01.22 [2.3.0] added support for text pattern find/replace
2008.10.27 [2.2.3] in setTiddlers(), fixed Safari bug by replacing static Array.concat(...) with new Array().concat(...)
2008.09.07 [2.2.2] added removeCookie() function for compatibility with [[CookieManagerPlugin]]
2008.05.12 [2.2.1] replace built-in backstage "tweak" task with tiddler tweaker control panel (moved from BackstageTweaks)
2008.01.13 [2.2.0] added "auto-selection" links: all, changed, tags, title, text
2007.12.26 [2.1.0] added support for managing 'creator' custom field (see [[CoreTweaks]])
2007.11.01 [2.0.3] added config.options.txtTweakerSortBy for cookie-based persistence of list display order preference setting.
2007.09.28 [2.0.2] in settiddlers() and deltiddlers(), added suspend/resume notification handling (improves performance when operating on multiple tiddlers)
2007.08.03 [2.0.1] added shadow definition for [[TiddlerTweaker]] tiddler for use as parameter references with {{{<<tiddler>>, <<slider>> or <<tabs>>}}} macros.
2007.08.03 [2.0.0] converted from inline script
2006.01.01 [1.0.0] initial release
<<<
!!!!!Code
***/
//{{{
version.extensions.TiddlerTweakerPlugin= {major: 2, minor: 4, revision: 0, date: new Date(2009,1,22)};
// shadow tiddler
config.shadowTiddlers.TiddlerTweaker="<<tiddlerTweaker>>";
/// backstage task
if (config.tasks) { // for TW2.2b3 or above
config.tasks.tweak.tooltip="review/modify tiddler internals: dates, authors, tags, etc.";
config.tasks.tweak.content="{{smallform small groupbox{<<tiddlerTweaker>>}}}";
}
if (config.options.txtTweakerSortBy==undefined) config.options.txtTweakerSortBy="modified";
// if removeCookie() function is not defined by TW core, define it here.
if (window.removeCookie===undefined) {
window.removeCookie=function(name) {
document.cookie = name+'=; expires=Thu, 01-Jan-1970 00:00:01 UTC; path=/;';
}
}
config.macros.tiddlerTweaker = {
html: '<form style="display:inline"><!--\
--><table style="padding:0;margin:0;border:0;width:100%"><tr valign="top" style="padding:0;margin:0;border:0"><!--\
--><td style="text-align:center;white-space:nowrap;width:99%;padding:0;margin:0;border:0"><!--\
--><font size=-2><div style="text-align:left;"><span style="float:right"><!--\
--> <a href="javascript:;" \
title="select all tiddlers"\
onclick="\
var f=this; while (f&&f.nodeName.toLowerCase()!=\'form\')f=f.parentNode;\
for (var t=0; t<f.list.options.length; t++)\
if (f.list.options[t].value.length) f.list.options[t].selected=true;\
config.macros.tiddlerTweaker.selecttiddlers(f.list);\
return false">all</a><!--\
--> <a href="javascript:;" \
title="select tiddlers that are new/changed since the last file save"\
onclick="\
var lastmod=new Date(document.lastModified);\
var f=this; while (f&&f.nodeName.toLowerCase()!=\'form\')f=f.parentNode;\
for (var t=0; t<f.list.options.length; t++) {\
var tid=store.getTiddler(f.list.options[t].value);\
f.list.options[t].selected=tid&&tid.modified>lastmod;\
}\
config.macros.tiddlerTweaker.selecttiddlers(f.list);\
return false">changed</a><!--\
--> <a href="javascript:;" \
title="select tiddlers with at least one matching tag"\
onclick="\
var t=prompt(\'Enter space-separated tags (match ONE)\');\
if (!t||!t.length) return false;\
var tags=t.readBracketedList();\
var f=this; while (f&&f.nodeName.toLowerCase()!=\'form\')f=f.parentNode;\
for (var t=0; t<f.list.options.length; t++) {\
f.list.options[t].selected=false;\
var tid=store.getTiddler(f.list.options[t].value);\
if (tid&&tid.tags.containsAny(tags)) f.list.options[t].selected=true;\
}\
config.macros.tiddlerTweaker.selecttiddlers(f.list);\
return false">tags</a><!--\
--> <a href="javascript:;" \
title="select tiddlers whose titles include matching text"\
onclick="\
var txt=prompt(\'Enter a title (or portion of a title) to match\');\
if (!txt||!txt.length) return false;\
var f=this; while (f&&f.nodeName.toLowerCase()!=\'form\')f=f.parentNode;\
for (var t=0; t<f.list.options.length; t++) {\
f.list.options[t].selected=f.list.options[t].value.indexOf(txt)!=-1;\
}\
config.macros.tiddlerTweaker.selecttiddlers(f.list);\
return false">titles</a><!--\
--> <a href="javascript:;" \
title="select tiddlers containing matching text"\
onclick="\
var txt=prompt(\'Enter tiddler text (content) to match\');\
if (!txt||!txt.length) return false;\
var f=this; while (f&&f.nodeName.toLowerCase()!=\'form\')f=f.parentNode;\
for (var t=0; t<f.list.options.length; t++) {\
var tt=store.getTiddlerText(f.list.options[t].value,\'\');\
f.list.options[t].selected=(tt.indexOf(txt)!=-1);\
}\
config.macros.tiddlerTweaker.selecttiddlers(f.list);\
return false">text</a> <!--\
--></span><span>select tiddlers</span><!--\
--></div><!--\
--></font><select multiple name=list size="11" style="width:99.99%" \
title="use click, shift-click and/or ctrl-click to select multiple tiddler titles" \
onclick="config.macros.tiddlerTweaker.selecttiddlers(this)" \
onchange="config.macros.tiddlerTweaker.setfields(this)"><!--\
--></select><br><!--\
-->show<input type=text size=1 value="11" \
onchange="this.form.list.size=this.value; this.form.list.multiple=(this.value>1);"><!--\
-->by<!--\
--><select name=sortby size=1 \
onchange="config.macros.tiddlerTweaker.init(this.form,this.value)"><!--\
--><option value="title">title</option><!--\
--><option value="size">size</option><!--\
--><option value="modified">modified</option><!--\
--><option value="created">created</option><!--\
--><option value="modifier">modifier</option><!--\
--></select><!--\
--><input type="button" value="refresh" \
onclick="config.macros.tiddlerTweaker.init(this.form,this.form.sortby.value)"<!--\
--> <input type="button" name="stats" disabled value="totals..." \
onclick="config.macros.tiddlerTweaker.stats(this)"><!--\
--></td><td style="white-space:nowrap;padding:0;margin:0;border:0;width:1%"><!--\
--><div style="text-align:left"><font size=-2> modify values</font></div><!--\
--><table border=0 style="width:100%;padding:0;margin:0;border:0;"><tr style="padding:0;border:0;"><!--\
--><td style="padding:1px;border:0;white-space:nowrap"><!--\
--><input type=checkbox name=settitle unchecked \
title="allow changes to tiddler title (rename tiddler)" \
onclick="this.form.title.disabled=!this.checked">title<!--\
--></td><td style="padding:1px;border:0;white-space:nowrap"><!--\
--><input type=text name=title size=35 style="width:98%" disabled><!--\
--></td></tr><tr style="padding:0;border:0;"><td style="padding:1px;border:0;white-space:nowrap"><!--\
--><input type=checkbox name=setcreator unchecked \
title="allow changes to tiddler creator" \
onclick="this.form.creator.disabled=!this.checked">created by<!--\
--></td><td style="padding:1px;border:0;white-space:nowrap"><!--\
--><input type=text name=creator size=35 style="width:98%" disabled><!--\
--></td></tr><tr style="padding:0;border:0;"><td style="padding:1px;border:0;white-space:nowrap"><!--\
--><input type=checkbox name=setwho unchecked \
title="allow changes to tiddler author" \
onclick="this.form.who.disabled=!this.checked">modified by<!--\
--></td><td style="padding:1px;border:0;white-space:nowrap"><!--\
--><input type=text name=who size=35 style="width:98%" disabled><!--\
--></td></tr><tr style="padding:0;border:0;"><td style="padding:1px;border:0;white-space:nowrap"><!--\
--><input type=checkbox name=setcdate unchecked \
title="allow changes to created date" \
onclick="var f=this.form; f.cm.disabled=f.cd.disabled=f.cy.disabled=f.ch.disabled=f.cn.disabled=!this.checked"><!--\
-->created on<!--\
--></td><td style="padding:1px;border:0;white-space:nowrap"><!--\
--><input type=text name=cm size=2 style="width:2em;padding:0;text-align:center" disabled><!--\
--> / <input type=text name=cd size=2 style="width:2em;padding:0;text-align:center" disabled><!--\
--> / <input type=text name=cy size=4 style="width:3em;padding:0;text-align:center" disabled><!--\
--> at <input type=text name=ch size=2 style="width:2em;padding:0;text-align:center" disabled><!--\
--> : <input type=text name=cn size=2 style="width:2em;padding:0;text-align:center" disabled><!--\
--></td></tr><tr style="padding:0;border:0;"><td style="padding:1px;border:0;white-space:nowrap"><!--\
--><input type=checkbox name=setmdate unchecked \
title="allow changes to modified date" \
onclick="var f=this.form; f.mm.disabled=f.md.disabled=f.my.disabled=f.mh.disabled=f.mn.disabled=!this.checked"><!--\
-->modified on<!--\
--></td><td style="padding:1px;border:0;white-space:nowrap"><!--\
--><input type=text name=mm size=2 style="width:2em;padding:0;text-align:center" disabled><!--\
--> / <input type=text name=md size=2 style="width:2em;padding:0;text-align:center" disabled><!--\
--> / <input type=text name=my size=4 style="width:3em;padding:0;text-align:center" disabled><!--\
--> at <input type=text name=mh size=2 style="width:2em;padding:0;text-align:center" disabled><!--\
--> : <input type=text name=mn size=2 style="width:2em;padding:0;text-align:center" disabled><!--\
--></td></tr><tr style="padding:0;border:0;"><td style="padding:1px;border:0;white-space:nowrap"><!--\
--><input type=checkbox name=replacetext unchecked\
title="find/replace matching text" \
onclick="this.form.pattern.disabled=this.form.replacement.disabled=!this.checked">replace text<!--\
--></td><td style="padding:1px;border:0;white-space:nowrap"><!--\
--><input type=text name=pattern size=15 value="" style="width:40%" disabled \
title="enter TEXT PATTERN (regular expression)"> with <!--\
--><input type=text name=replacement size=15 value="" style="width:40%" disabled \
title="enter REPLACEMENT TEXT"><!--\
--></td></tr><tr style="padding:0;border:0;"><td style="padding:1px;border:0;white-space:nowrap"><!--\
--><input type=checkbox name=settags checked \
title="allow changes to tiddler tags" \
onclick="this.form.tags.disabled=!this.checked">tags<!--\
--></td><td style="padding:1px;border:0;white-space:nowrap"><!--\
--><input type=text name=tags size=35 value="" style="width:98%" \
title="enter new tags or use \'+tag\' and \'-tag\' to add/remove tags from existing tags"><!--\
--></td></tr></table><!--\
--><div style="text-align:center"><!--\
--><nobr><input type=button name=display disabled style="width:32%" value="display tiddlers" \
onclick="config.macros.tiddlerTweaker.displaytiddlers(this)"><!--\
--> <input type=button name=del disabled style="width:32%" value="delete tiddlers" \
onclick="config.macros.tiddlerTweaker.deltiddlers(this)"><!--\
--> <input type=button name=set disabled style="width:32%" value="update tiddlers" \
onclick="config.macros.tiddlerTweaker.settiddlers(this)"></nobr><!--\
--></div><!--\
--></td></tr></table><!--\
--></form><span style="display:none"><!--content replaced by tiddler "stats"--></span>\
',
handler: function(place,macroName,params,wikifier,paramString,tiddler) {
var span=createTiddlyElement(place,"span");
span.innerHTML=this.html;
this.init(span.firstChild,config.options.txtTweakerSortBy);
},
init: function(f,sortby) { // initialize form controls
if (!f) return; // form might not be rendered yet...
while (f.list.options[0]) f.list.options[0]=null; // empty current list content
var tids=store.getTiddlers(sortby);
if (sortby=='size') // descending order
tids.sort(function(a,b) {return a.text.length > b.text.length ? -1 : (a.text.length == b.text.length ? 0 : +1);});
var who='';
for (i=0; i<tids.length; i++) { var t=tids[i];
var label=t.title; var value=t.title;
switch (sortby) {
case 'modified':
case 'created':
var t=tids[tids.length-i-1]; // reverse order
var when=t[sortby].formatString('YY.0MM.0DD 0hh:0mm ');
label=when+t.title;
value=t.title;
break;
case 'size':
label='['+t.text.length+'] '+label;
break;
case 'modifier':
case 'creator':
if (who!=t[sortby]) {
who=t[sortby];
f.list.options[f.list.length]=new Option('by '+who+':','',false,false);
}
label='\xa0\xa0\xa0'+label; // indent
break;
}
f.list.options[f.list.length]=new Option(label,value,false,false);
}
f.title.value=f.who.value=f.creator.value=f.tags.value="";
f.cm.value=f.cd.value=f.cy.value=f.ch.value=f.cn.value="";
f.mm.value=f.md.value=f.my.value=f.mh.value=f.mn.value="";
f.stats.disabled=f.set.disabled=f.del.disabled=f.display.disabled=true;
f.settitle.disabled=false;
config.options.txtTweakerSortBy=sortby; // remember current setting
f.sortby.value=sortby; // sync droplist selection with current setting
if (sortby!="modified") // non-default preference... save cookie
saveOptionCookie("txtTweakerSortBy");
else removeCookie("txtTweakerSortBy"); // default preference... clear cookie
},
selecttiddlers: function(here) { // enable/disable tweaker fields based on number of items selected
// count how many tiddlers are selected
var f=here.form; var list=f.list;
var c=0; for (i=0;i<list.length;i++) if (list.options[i].selected) c++;
if (c>1) f.title.disabled=true;
if (c>1) f.settitle.checked=false;
f.set.disabled=(c==0);
f.del.disabled=(c==0);
f.display.disabled=(c==0);
f.settitle.disabled=(c>1);
f.stats.disabled=(c==0);
var msg=(c==0)?'select tiddlers':(c+' tiddler'+(c!=1?'s':'')+' selected');
here.previousSibling.firstChild.firstChild.nextSibling.innerHTML=msg;
if (c) clearMessage(); else displayMessage("no tiddlers selected");
},
setfields: function(here) { // set tweaker edit fields from first selected tiddler
var f=here.form;
if (!here.value.length) {
f.title.value=f.who.value=f.creator.value=f.tags.value="";
f.cm.value=f.cd.value=f.cy.value=f.ch.value=f.cn.value="";
f.mm.value=f.md.value=f.my.value=f.mh.value=f.mn.value="";
return;
}
var tid=store.getTiddler(here.value); if (!tid) return;
f.title.value=tid.title;
f.who.value=tid.modifier;
f.creator.value=tid.fields['creator']||''; // custom field - might not exist
f.tags.value=tid.tags.join(' ');
var c=tid.created; var m=tid.modified;
f.cm.value=c.getMonth()+1;
f.cd.value=c.getDate();
f.cy.value=c.getFullYear();
f.ch.value=c.getHours();
f.cn.value=c.getMinutes();
f.mm.value=m.getMonth()+1;
f.md.value=m.getDate();
f.my.value=m.getFullYear();
f.mh.value=m.getHours();
f.mn.value=m.getMinutes();
},
settiddlers: function(here) {
var f=here.form; var list=f.list;
var tids=[];
for (i=0;i<list.length;i++) if (list.options[i].selected) tids.push(list.options[i].value);
if (!tids.length) { alert("please select at least one tiddler"); return; }
var cdate=new Date(f.cy.value,f.cm.value-1,f.cd.value,f.ch.value,f.cn.value);
var mdate=new Date(f.my.value,f.mm.value-1,f.md.value,f.mh.value,f.mn.value);
if (tids.length>1 && !confirm("Are you sure you want to update these tiddlers:\n\n"+tids.join(', '))) return;
store.suspendNotifications();
for (t=0;t<tids.length;t++) {
var tid=store.getTiddler(tids[t]); if (!tid) continue;
var title=!f.settitle.checked?tid.title:f.title.value;
var who=!f.setwho.checked?tid.modifier:f.who.value;
var text=tid.text;
if (f.replacetext.checked) text=text.replace(new RegExp(f.pattern.value,'mg'),f.replacement.value);
var tags=tid.tags;
if (f.settags.checked) {
var intags=f.tags.value.readBracketedList();
var addtags=[]; var deltags=[]; var reptags=[];
for (i=0;i<intags.length;i++) {
if (intags[i].substr(0,1)=='+')
addtags.push(intags[i].substr(1));
else if (intags[i].substr(0,1)=='-')
deltags.push(intags[i].substr(1));
else
reptags.push(intags[i]);
}
if (reptags.length)
tags=reptags;
if (addtags.length)
tags=new Array().concat(tags,addtags);
if (deltags.length)
for (i=0;i<deltags.length;i++)
{ var pos=tags.indexOf(deltags[i]); if (pos!=-1) tags.splice(pos,1); }
}
if (!f.setcdate.checked) cdate=tid.created;
if (!f.setmdate.checked) mdate=tid.modified;
store.saveTiddler(tid.title,title,text,who,mdate,tags,tid.fields);
if (f.setcreator.checked) store.setValue(tid.title,'creator',f.creator.value); // set creator
if (f.setcdate.checked) tid.assign(null,null,null,null,null,cdate); // set create date
}
store.resumeNotifications();
this.init(f,f.sortby.value);
},
displaytiddlers: function(here) {
var f=here.form; var list=f.list;
var tids=[];
for (i=0; i<list.length;i++) if (list.options[i].selected) tids.push(list.options[i].value);
if (!tids.length) { alert("please select at least one tiddler"); return; }
story.displayTiddlers(story.findContainingTiddler(f),tids)
},
deltiddlers: function(here) {
var f=here.form; var list=f.list;
var tids=[];
for (i=0;i<list.length;i++) if (list.options[i].selected) tids.push(list.options[i].value);
if (!tids.length) { alert("please select at least one tiddler"); return; }
if (!confirm("Are you sure you want to delete these tiddlers:\n\n"+tids.join(', '))) return;
store.suspendNotifications();
for (t=0;t<tids.length;t++) {
var tid=store.getTiddler(tids[t]); if (!tid) continue;
if (tid.tags.contains("systemConfig"))
if (!confirm("'"+tid.title+"' is tagged with 'systemConfig'.\n\nRemoving this tiddler may cause unexpected results. Are you sure?"))
continue;
store.removeTiddler(tid.title);
story.closeTiddler(tid.title);
}
store.resumeNotifications();
this.init(f,f.sortby.value);
},
stats: function(here) {
var f=here.form; var list=f.list; var tids=[]; var out=''; var tot=0;
var target=f.nextSibling;
for (i=0;i<list.length;i++) if (list.options[i].selected) tids.push(list.options[i].value);
if (!tids.length) { alert("please select at least one tiddler"); return; }
for (t=0;t<tids.length;t++) {
var tid=store.getTiddler(tids[t]); if (!tid) continue;
out+='[['+tid.title+']] '+tid.text.length+'\n'; tot+=tid.text.length;
}
var avg=tot/tids.length;
out=tot+' bytes in '+tids.length+' selected tiddlers ('+avg+' bytes/tiddler)\n<<<\n'+out+'<<<\n';
removeChildren(target);
target.innerHTML="<hr><font size=-2><a href='javascript:;' style='float:right' "
+"onclick='this.parentNode.parentNode.style.display=\"none\"'>close</a></font>";
wikify(out,target);
target.style.display="block";
}
};
//}}}
Type the text for 'TiddlerbarToggled'
/***
|''Name:''|TiddlersBarPluginMG|
|''Description:''|A bar to switch between tiddlers through tabs (like browser tabs bar).|
|''Version:''|1.2.5|
|''Date:''|Jan 18,2008|
|''Source:''|http://visualtw.ouvaton.org/VisualTW.html|
|''Author:''|Pascal Collin|
|''License:''|[[BSD open source license|License]]|
|''~CoreVersion:''|2.1.0|
|''Browser:''|Firefox 2.0; InternetExplorer 6.0, others|
!Modification
2008.09.06 - Morris Gray (Added http://tw.lewcid.org/#OpenTopPlugin code to this plugin to overcome jumping to the top when invoking any popup. Deleted the offending code)
!Demos
On [[homepage|http://visualtw.ouvaton.org/VisualTW.html]], open several tiddlers to use the tabs bar.
!Installation
#import this tiddler from [[homepage|http://visualtw.ouvaton.org/VisualTW.html]] (tagged as systemConfig)
#save and reload
#''if you're using a custom [[PageTemplate]]'', add {{{<div id='tiddlersBar' refresh='none' ondblclick='config.macros.tiddlersBar.onTiddlersBarAction(event)'></div>}}} before {{{<div id='tiddlerDisplay'></div>}}}
#optionally, adjust StyleSheetTiddlersBar
!Tips
*Doubleclick on the tiddlers bar (where there is no tab) create a new tiddler.
*Tabs include a button to close {{{x}}} or save {{{!}}} their tiddler.
*By default, click on the current tab close all others tiddlers.
!Configuration options
<<option chkDisableTabsBar>> Disable the tabs bar (to print, by example).
<<option chkHideTabsBarWhenSingleTab >> Automatically hide the tabs bar when only one tiddler is displayed.
<<option txtSelectedTiddlerTabButton>> ''selected'' tab command button.
<<option txtPreviousTabKey>> previous tab access key.
<<option txtNextTabKey>> next tab access key.
!Code
***/
//{{{
config.options.chkDisableTabsBar = config.options.chkDisableTabsBar ? config.options.chkDisableTabsBar : false;
config.options.chkHideTabsBarWhenSingleTab = config.options.chkHideTabsBarWhenSingleTab ? config.options.chkHideTabsBarWhenSingleTab : false;
config.options.txtSelectedTiddlerTabButton = config.options.txtSelectedTiddlerTabButton ? config.options.txtSelectedTiddlerTabButton : "do nothing";
config.options.txtPreviousTabKey = config.options.txtPreviousTabKey ? config.options.txtPreviousTabKey : "";
config.options.txtNextTabKey = config.options.txtNextTabKey ? config.options.txtNextTabKey : "";
config.macros.tiddlersBar = {
tooltip : "see ",
tooltipClose : "click here to close this tab",
tooltipSave : "click here to save this tab",
promptRename : "Enter tiddler new name",
currentTiddler : "",
previousState : false,
previousKey : config.options.txtPreviousTabKey,
nextKey : config.options.txtNextTabKey,
tabsAnimationSource : null, //use document.getElementById("tiddlerDisplay") if you need animation on tab switching.
handler: function(place,macroName,params) {
var previous = null;
if (config.macros.tiddlersBar.isShown())
story.forEachTiddler(function(title,e){
if (title==config.macros.tiddlersBar.currentTiddler){
var d = createTiddlyElement(null,"span",null,"tab tabSelected");
config.macros.tiddlersBar.createActiveTabButton(d,title);
if (previous && config.macros.tiddlersBar.previousKey) previous.setAttribute("accessKey",config.macros.tiddlersBar.nextKey);
previous = "active";
}
else {
var d = createTiddlyElement(place,"span",null,"tab tabUnselected");
var btn = createTiddlyButton(d,title,config.macros.tiddlersBar.tooltip + title,config.macros.tiddlersBar.onSelectTab);
btn.setAttribute("tiddler", title);
if (previous=="active" && config.macros.tiddlersBar.nextKey) btn.setAttribute("accessKey",config.macros.tiddlersBar.previousKey);
previous=btn;
}
var isDirty =story.isDirty(title);
var c = createTiddlyButton(d,isDirty ?"?":"x",isDirty?config.macros.tiddlersBar.tooltipSave:config.macros.tiddlersBar.tooltipClose, isDirty ? config.macros.tiddlersBar.onTabSave : config.macros.tiddlersBar.onTabClose,"tabButton");
c.setAttribute("tiddler", title);
if (place.childNodes) {
place.insertBefore(document.createTextNode(" "),place.firstChild); // to allow break line here when many tiddlers are open
place.insertBefore(d,place.firstChild);
}
else place.appendChild(d);
})
},
refresh: function(place,params){
removeChildren(place);
config.macros.tiddlersBar.handler(place,"tiddlersBar",params);
if (config.macros.tiddlersBar.previousState!=config.macros.tiddlersBar.isShown()) {
story.refreshAllTiddlers();
if (config.macros.tiddlersBar.previousState) story.forEachTiddler(function(t,e){e.style.display="";});
config.macros.tiddlersBar.previousState = !config.macros.tiddlersBar.previousState;
}
},
isShown : function(){
if (config.options.chkDisableTabsBar) return false;
if (!config.options.chkHideTabsBarWhenSingleTab) return true;
var cpt=0;
story.forEachTiddler(function(){cpt++});
return (cpt>1);
},
selectNextTab : function(){ //used when the current tab is closed (to select another tab)
var previous="";
story.forEachTiddler(function(title){
if (!config.macros.tiddlersBar.currentTiddler) {
story.displayTiddler(null,title);
return;
}
if (title==config.macros.tiddlersBar.currentTiddler) {
if (previous) {
story.displayTiddler(null,previous);
return;
}
else config.macros.tiddlersBar.currentTiddler=""; // so next tab will be selected
}
else previous=title;
});
},
onSelectTab : function(e){
var t = this.getAttribute("tiddler");
if (t) story.displayTiddler(null,t);
return false;
},
onTabClose : function(e){
var t = this.getAttribute("tiddler");
if (t) {
if(story.hasChanges(t) && !readOnly) {
if(!confirm(config.commands.cancelTiddler.warning.format([t])))
return false;
}
story.closeTiddler(t);
}
return false;
},
onTabSave : function(e) {
var t = this.getAttribute("tiddler");
if (!e) e=window.event;
if (t) config.commands.saveTiddler.handler(e,null,t);
return false;
},
onSelectedTabButtonClick : function(event,src,title) {
var t = this.getAttribute("tiddler");
if (!event) event=window.event;
if (t && config.options.txtSelectedTiddlerTabButton && config.commands[config.options.txtSelectedTiddlerTabButton])
config.commands[config.options.txtSelectedTiddlerTabButton].handler(event, src, t);
return false;
},
onTiddlersBarAction: function(event) {
var source = event.target ? event.target.id : event.srcElement.id; // FF uses target and IE uses srcElement;
if (source=="tiddlersBar") story.displayTiddler(null,'New Tiddler',DEFAULT_EDIT_TEMPLATE,false,null,null);
},
createActiveTabButton : function(place,title) {
if (config.options.txtSelectedTiddlerTabButton && config.commands[config.options.txtSelectedTiddlerTabButton]) {
var btn = createTiddlyButton(place, title, config.commands[config.options.txtSelectedTiddlerTabButton].tooltip ,config.macros.tiddlersBar.onSelectedTabButtonClick);
btn.setAttribute("tiddler", title);
}
else
createTiddlyText(place,title);
}
}
story.coreCloseTiddler = story.coreCloseTiddler? story.coreCloseTiddler : story.closeTiddler;
story.coreDisplayTiddler = story.coreDisplayTiddler ? story.coreDisplayTiddler : story.displayTiddler;
story.closeTiddler = function(title,animate,unused) {
if (title==config.macros.tiddlersBar.currentTiddler)
config.macros.tiddlersBar.selectNextTab();
story.coreCloseTiddler(title,false,unused); //disable animation to get it closed before calling tiddlersBar.refresh
var e=document.getElementById("tiddlersBar");
if (e) config.macros.tiddlersBar.refresh(e,null);
}
story.displayTiddler = function(srcElement,tiddler,template,animate,unused,customFields,toggle){
story.coreDisplayTiddler(config.macros.tiddlersBar.tabsAnimationSource,tiddler,template,animate,unused,customFields,toggle);
var title = (tiddler instanceof Tiddler)? tiddler.title : tiddler;
if (config.macros.tiddlersBar.isShown()) {
story.forEachTiddler(function(t,e){
if (t!=title) e.style.display="none";
else e.style.display="";
})
config.macros.tiddlersBar.currentTiddler=title;
}
var e=document.getElementById("tiddlersBar");
if (e) config.macros.tiddlersBar.refresh(e,null);
}
var coreRefreshPageTemplate = coreRefreshPageTemplate ? coreRefreshPageTemplate : refreshPageTemplate;
refreshPageTemplate = function(title) {
coreRefreshPageTemplate(title);
if (config.macros.tiddlersBar) config.macros.tiddlersBar.refresh(document.getElementById("tiddlersBar"));
}
ensureVisible=function (e) {return 0} //disable bottom scrolling (not useful now)
config.shadowTiddlers.StyleSheetTiddlersBar = "/*{{{*/\n";
config.shadowTiddlers.StyleSheetTiddlersBar += "#tiddlersBar .button {border:0}\n";
config.shadowTiddlers.StyleSheetTiddlersBar += "#tiddlersBar .tab {white-space:nowrap}\n";
config.shadowTiddlers.StyleSheetTiddlersBar += "#tiddlersBar {padding : 1em 0.5em 2px 0.5em}\n";
config.shadowTiddlers.StyleSheetTiddlersBar += ".tabUnselected .tabButton, .tabSelected .tabButton {padding : 0 2px 0 2px; margin: 0 0 0 4px;}\n";
config.shadowTiddlers.StyleSheetTiddlersBar += ".tiddler, .tabContents {border:1px [[ColorPalette::TertiaryPale]] solid;}\n";
config.shadowTiddlers.StyleSheetTiddlersBar +="/*}}}*/";
store.addNotification("StyleSheetTiddlersBar", refreshStyles);
config.refreshers.none = function(){return true;}
config.shadowTiddlers.PageTemplate=config.shadowTiddlers.PageTemplate.replace(/<div id='tiddlerDisplay'><\/div>/m,"<div id='tiddlersBar' refresh='none' ondblclick='config.macros.tiddlersBar.onTiddlersBarAction(event)'></div>\n<div id='tiddlerDisplay'></div>");
//}}}
/%
|Name|ToggleLeftSidebar|
|Source|http://www.TiddlyTools.com/#ToggleLeftSidebar|
|Version|2.0.0|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|script|
|Requires|InlineJavascriptPlugin|
|Overrides||
|Description|show/hide left sidebar (MainMenu)|
Usage: <<tiddler ToggleLeftSidebar with: "label">>
Config settings:
config.options.chkShowLeftSidebar (true)
config.options.txtToggleLeftSideBarLabelShow (►)
config.options.txtToggleLeftSideBarLabelHide (◄)
%/<script label="$1" title="show/hide MainMenu content">
var co=config.options;
if (co.chkShowLeftSidebar=='undefined') co.chkShowLeftSidebar=true;
co.chkShowLeftSidebar=!co.chkShowLeftSidebar;
var mm=document.getElementById('mainMenu'); if (!mm) return;
mm.style.display=co.chkShowLeftSidebar?'block':'none';
document.getElementById('displayArea').style.marginLeft=co.chkShowLeftSidebar?'':'1em';
saveOptionCookie('chkShowLeftSidebar');
var labelShow=co.txtToggleLeftSideBarLabelShow||'►';
var labelHide=co.txtToggleLeftSideBarLabelHide||'◄';
if (typeof(place)!='undefined' && '$1'=='$'+'1') {
place.innerHTML=co.chkShowLeftSidebar?labelHide:labelShow;
place.title=(co.chkShowLeftSidebar?'hide':'show')+' left sidebar';
}
var sm=document.getElementById('storyMenu'); if (sm) config.refreshers.content(sm);
</script><script>
var co=config.options;
if (co.chkShowLeftSidebar=='undefined') co.chkShowLeftSidebar=true;
var mm=document.getElementById('mainMenu'); if (!mm) return;
mm.style.display=co.chkShowLeftSidebar?'block':'none';
document.getElementById('displayArea').style.marginLeft=co.chkShowLeftSidebar?'':'1em';
if ('$1'=='$'+'1') {
var labelShow=co.txtToggleLeftSideBarLabelShow||'►';
var labelHide=co.txtToggleLeftSideBarLabelHide||'◄';
place.lastChild.innerHTML=co.chkShowLeftSidebar?labelHide:labelShow;
place.lastChild.title=(co.chkShowLeftSidebar?'hide':'show')+' left sidebar';
}
</script>
/%
|Name|ToggleRightSidebar|
|Source|http://www.TiddlyTools.com/#ToggleRightSidebar|
|Version|2.0.0|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|script|
|Requires|InlineJavascriptPlugin|
|Overrides||
|Description|show/hide right sidebar (MainMenu)|
Usage: <<tiddler ToggleRightSidebar with: "label">>
Config settings:
config.options.chkShowRightSidebar (true)
config.options.txtToggleRightSideBarLabelShow (◄)
config.options.txtToggleRightSideBarLabelHide (►)
%/<script label="$1" title="show/hide right sidebar content">
var co=config.options;
if (co.chkShowRightSidebar=='undefined') co.chkShowRightSidebar=true;
co.chkShowRightSidebar=!co.chkShowRightSidebar;
var sb=document.getElementById('sidebar'); if (!sb) return;
sb.style.display=co.chkShowRightSidebar?'block':'none';
document.getElementById('displayArea').style.marginRight=co.chkShowRightSidebar?'':'1em';
saveOptionCookie('chkShowRightSidebar');
var labelShow=co.txtToggleRightSideBarLabelShow||'◄';
var labelHide=co.txtToggleRightSideBarLabelHide||'►';
if (typeof(place)!='undefined' && '$1'=='$'+'1') {
place.innerHTML=co.chkShowRightSidebar?labelHide:labelShow;
place.title=(co.chkShowRightSidebar?'hide':'show')+' right sidebar';
}
var sm=document.getElementById('storyMenu'); if (sm) config.refreshers.content(sm);
</script><script>
var co=config.options;
if (co.chkShowRightSidebar=='undefined') co.chkShowRightSidebar=true;
var sb=document.getElementById('sidebar'); if (!sb) return;
sb.style.display=co.chkShowRightSidebar?'block':'none';
document.getElementById('displayArea').style.marginRight=co.chkShowRightSidebar?'':'1em';
if ('$1'=='$'+'1') {
var labelShow=co.txtToggleRightSideBarLabelShow||'◄';
var labelHide=co.txtToggleRightSideBarLabelHide||'►';
place.lastChild.innerHTML=co.chkShowRightSidebar?labelHide:labelShow;
place.lastChild.title=(co.chkShowRightSidebar?'hide':'show')+' right sidebar';
}
</script>
<html><a href="javascript:;"
onclick="config.options.chkDisableTabsBar=!
config.options.chkDisableTabsBar;refreshPageTemplate();return
false;">toggle tiddler tabs</a></html>
{{left{Tick and <<toolbar closeTiddler>> to toggle ~TiddlerBar tabs off.
----
/%
|Name|ToggleTiddlersBar|
|Source|http://www.TiddlyTools.com/#ToggleBreadcrumbs|
|Version|0.0.0|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|script|
|Requires|BreadcrumbsPlugin, InlineJavascriptPlugin|
|Overrides||
|Description|dynamically enable/disable BreadcrumbsPlugin display|
%/{{nowrap{<script>
if (config.options.chkDisableTabsBar==undefined) config.options.chkDisableTabsBar=true;
</script><<option chkDisableTabsBar>><script>
var chk=place.lastChild;
chk.coreOnChange=chk.onchange;
chk.onchange=function() {
if (this.coreOnChange) this.coreOnChange.apply(this,arguments);
this.checked=config.options.chkDisableTabsBar;
if (config.macros.DisableTabsBar) config.macros.DisableTabsBar.refresh();
return
};
</script>
----
Untick and <<toolbar closeTiddler>> to turn them on again.}}}
You can toggle the ~TiddlerBar tabs on and off for printing. When they are off all open tiddlers will be displayed one after the other.
|~ViewToolbar|closeTiddler closeOthers closeAll +editTiddler > fields syncing permalink references jump|
|~EditToolbar|+saveTiddler saveCloseTiddler -cancelTiddler cancelCloseTiddler deleteTiddler|
<html><hide linebreaks><div id="slantedmenu" style="font-size:0.75em;">
<ul><li> <a href="javascript:void(0)" onclick="story.closeAllTiddlers();story.displayTiddlers(null,store.getTiddlerText('DefaultTiddlers').readBracketedList())"
><span title="Close all tiddlers and open Welcome" style="cursor:pointer">''home''</span></a></li><li>[[help|Help]]</li><li><<newTiddler>></li><li><<saveChanges>></li><li><<search>></li><li>[[?|Find]]</li><li>[[toggle tabs»|ToggleTiddlersBar]]</li><li><<tiddler ToggleRightSidebar with: "sidebar »">></li></ul></div></html>
/***
!!!<<gradient horiz #4EB93E #fff >><<tiddler RefreshStyles>> TopMenuStyle>>/%==================================================%/
***/
#topMenu{
font-size: 1.4em;
}
#slantedmenu:after{ /*Add margin between menu and rest of content in Firefox*/
content: ".";
display: block;
height: 0;
clear: both;
visibility: hidden;
}
#slantedmenu ul{
text-indent: 10px;
padding: 3px 0;
margin: 0;
background:url([[navbargrayhw1.gif]]) repeat-x top left;top left;
background-color: #ccc;
border-top: 0px solid #f6f;
border-bottom: 0px solid #f6f;
text-align: center; /*set value to "center" for example to center items*/
}
#slantedmenu ul li{
display: inline;
}
#slantedmenu ul li a {
font-weight: normal;
color: #080;
padding: 3px 0;
padding-right: 5px;
padding-left: 5px;
margin: 0;
text-decoration: none;
background: transparent url([[mainmenugray7ef.gif]]) top right no-repeat;
}
#slantedmenu ul li a:hover{
color: #f00;
background:#fff;
}
/***
!!!SlantedStyle /%==================================================%/
***/
{{{
http://img261.imageshack.us/img261/8603/navbargrayhw1.png
http://img520.imageshack.us/img520/8688/mainmenugray7ef.gif
background-image: url("http://img264.imageshack.us/img264/4134/headbackbgdc6.png");background-repeat: repeat-x top-left;
}}}
/*Credits: Dynamic Drive CSS Library */
/*URL: http://www.dynamicdrive.com/style/ */
{{{
#slantedmenu{
font-size: 90%;
position: fixed !important;
width: 100%;
z-index:1
}
}}}
#slantedmenu{
font-size: 90%;}
#slantedmenu:after{ /*Add margin between menu and rest of content in Firefox*/
content: ".";
display: block;
height: 0;
clear: both;
visibility: hidden;
}
#slantedmenu ul{
text-indent: 10px;
padding: 3px 0;
margin: 0;
background:url([[navbargrayhw1.gif]]) repeat-x top left;top left;
background-color: #ccc;
border-top: 0px solid #f6f;
border-bottom: 0px solid #f6f;
text-align: center; /*set value to "center" for example to center items*/
}
#slantedmenu ul li{
display: inline;
}
#slantedmenu ul li a{
font-weight: normal;
color: #00a;
padding: 3px 0;
padding-right: 5px;
padding-left: 5px;
margin: 0;
text-decoration: none;
background: transparent url([[mainmenugray7ef.gif]]) top right no-repeat;
}
#slantedmenu ul li a:hover{
color: #f00;
background:#fff;
}
/***
|Name|TreeviewPluginPlugin2|
|Source|http://treeview.tiddlyspot.com/|
|Version|0.24|
|Author|MarkS|
|License|Various. See respective libraries for details|
|Type|plugin|
|Requires(1) |jQuery library, treeview plugin libraries and styles |
|Requires(2) |AttachFilePackage and sub-libraries from tiddlytools.com if you want to use embedded images to create the tree|
|Description|Creates a tag tree, formatted as an actual tree |
|Status|Experimental - ALPHA, but built on fairly solid technologies|
|Warning|When creating tag trees, make sure no tiddler loops back on itself, or its likely the script will hang|
!!!!Set up for portability
You will need a version of TW that incorporates the jQuery library. That happens automatically with recent editions of TW. You will also need to install or access the treeview libraries from http:www.dynamicdrive.com. The libraries can be carried as local files, inserted in the MarkupPostBody, or referenced from the dynamicdrive site. Each approach will require a different set up.
You will also need to link in the stylesheet for the treeview objects. A quick way to do this is to put:
>{{{<link rel="stylesheet" type="text/css" href="http://www.dynamicdrive.com/dynamicindex1/treeview/jquery.treeview.css" /> }}}
into the MarkupPreHead tiddler. However, this won't work if you go off line. It also doesn't work permanently if you are hosting your file on a web server. So you may want to download a copy of the stylesheet and attendant image files and change the MarkupPreHead tiddler to pick up the local copy. Or load the stylesheet and images onto your own server where you will be able to access them.
!!!!Usage
{{{<<treeview2 }}}
>{{{<root tag> [tree style] [startup parameters]}}}
{{{ >>}}}
!!!!!Where:
''root tag'' is the tag at the top of your tagging tree, i.e. the mother of all tiddlers related to it by using its name as one of their tags.
''tree style'' indicates which type of tree will be displayed, possibly //treeview//, //filetree//, and //treeview-red//, and //treeview-famfamfam//. There may be other styles too, but those are the ones I know about.
''startup parameters'' are a set of optional parameters given in a comma-separated, key/value string like this:
>{{{'collapsed: false, animated: "normal", persist: true'}}}
There's a list of possible options at:
http://www.dynamicdrive.com/dynamicindex1/treeview/index.htm
However, not all settings may actually work under TW. Mainly, you will probably be interested in controlling the presence of animation, and whether the initial state of the tree is opened or closed.
!!!!Images and stylesheet set-up
The tree is constructed from little bits of images. If you don't want to carry these images in a separate directory, nor reference them remotely, you can embed them in your TW file. To do this, you will need the AttachFilePackage and accompanying plugins from
> www.tiddlytools.com
and you will need the AttachFilePluginFormatters plugin from the same site.
Then import all the tiddlers from this file tagged as treeviewimage . These images are referenced in the StyleSheet. If you import JqueryTreeviewCss from this file, and then put the name in your StyleSheet, the images should be imported without having to access them remotely.
!!!!Persistence
To make persistence work, you will need to have the treeview cookie library loaded. The easiest way to do that is to put:
>{{{<script src="http://www.dynamicdrive.com/dynamicindex1/treeview/lib/jquery.cookie.js" type="text/javascript"></script>}}}
into the MarkupPostBody. However, this technique will only work if you have online access. If you will be working offline, then you will either need to download the cookie library to the same directory as your ~TiddlyWiki file and put the following into your MarkupPostBody:
>>{{{<script src="jquery.cookie.js"></script>}}}
or you will need to put the entire contents of the cookie library into script tags inside the MarkupPostBody.
Then, in any macro that wants its tree to be persistently configured, you will need to use configuration parameter:
>>{{{persist: "cookie", cookieId: "myid"}}}
where //myid// should be an identification that will be unique throughout the entire TW file.
***/
//{{{
config.macros.treeview2 = {
handler: function (place, macroName, params, wikifier, paramString, tiddler)
{ // Code here
var lcTag = params[0] ;
var lcClass = params[1] ? params[1] : "treeview" ;
var DEV_MODE = false ; // Make true when developing code or changes won't show up.
try {
if( MAS === undefined ) MAS = { } ;
} catch(ex) {
MAS = {} ;
}
MAS.treeviewSettings = function(obj) {
var defa = {} ;
defa.collapsed= true;
defa.unique = true ;
//defa.persist= "location" ;
if( obj !== undefined ) {
try {
obj = eval("({" + obj + "})" ) ;
} catch(ex) {
alert("Unable to use your treeview configuration settings!") ;
return defa ;
}
for (var prop in obj) {
defa[prop] =obj[prop] ;
}
}
return defa ;
} ;
if( DEV_MODE || MAS.getTiddlersPerTagAsHtmlList === undefined ) {
MAS.getTiddlersPerTagAsHtmlList = function(tagname,setup) {
var tids = store.getTaggedTiddlers(tagname) ;
var temp = "" ;
var prefix = tids.length > 0 ? "<span class='folder'>" : "<span class='file'>" ;
var statetags = store.getTiddler(tagname).tags ;
var state = "" ;
var lcSesame = setup["sesame"] !== undefined ? setup["sesame"] : "" ;
var lcAntiSesame = setup["antisesame"] !== undefined ? setup["antisesame"] : "" ;
if(statetags.length > 0 ) {
if(lcSesame) state = statetags.contains(lcSesame) ? ' class="open"' : ' class="closed"' ;
if(lcAntiSesame) state = statetags.contains(lcAntiSesame) ? ' class="closed"' : ' class="open"' ;
}
// state="" ; // DEBUG
//var rtn ="<li>" + prefix + tagname + "</a></span>" ;
var rtn = "<li" + state +">" + prefix + "<a href=\"javascript:;\" tiddlylink=\"" + tagname + "\" refresh=\"link\" class='tiddlyLink tiddlyLinkExisting' title='Link to " + tagname + "' >" + tagname + "</a></span>" ;
//wikify(rtn,place) ;
forever:
while(true) {
if(tids.length == 0 ) break ;
rtn = rtn + "<ul>" ;
for(var i=0;i<tids.length;i++) {
temp = MAS.getTiddlersPerTagAsHtmlList(tids[i].title, setup) ;
rtn = rtn + temp ;
}
rtn = rtn + "</ul>\n" ;
break ;
} // forever
rtn = rtn + "</li>\n" ;
return rtn ;
} ; // End of function definition
} // End of checking if function already defined
// The extra set of span tags are needed here because jquery find function ignores
// the outer set of tags. Or at least that's what seems to be happening. So, I give
// it an extra set so it can throw it away without consequence
var loSetup = MAS.treeviewSettings(params[2]) ;
var lcId = "root" + (new Date()).getTime().toString() ;
if(loSetup.cookieId) {
lcId = "root_" + loSetup.cookieId ;
}
//var a = '<span id="' + lcId + '"><ul id="' + "root" + '" >' + MAS.getTiddlersPerTagAsHtmlList(lcTag, loSetup) + "</ul></span>" ;
var a = '<ul id="' + lcId + '" >' + MAS.getTiddlersPerTagAsHtmlList(lcTag, loSetup) + "</ul>" ;
var b = jQuery(a) ;
// A smarter person might have know how to put the onclick function in at the top
b.find("a").each(function(n) {
this.onclick = onClickTiddlerLink ;
}) ;
//b.find(lcId).attr("class",lcClass) ;
//b.find("#root").attr("class",lcClass) ;
jQuery(place).append(b) ;
jQuery(place).find("#" + lcId).attr("class",lcClass).treeview(loSetup) ;
}
};
//}}}
/***
Description: Contains the stuff you need to use Tiddlyspot
Note, you also need UploadPlugin, PasswordOptionPlugin and LoadRemoteFileThroughProxy
from http://tiddlywiki.bidix.info for a complete working Tiddlyspot site.
***/
//{{{
// edit this if you are migrating sites or retrofitting an existing TW
config.tiddlyspotSiteId = 'twt-treeview';
// make it so you can by default see edit controls via http
config.options.chkHttpReadOnly = false;
window.readOnly = false; // make sure of it (for tw 2.2)
window.showBackstage = true; // show backstage too
// disable autosave in d3
if (window.location.protocol != "file:")
config.options.chkGTDLazyAutoSave = false;
// tweak shadow tiddlers to add upload button, password entry box etc
with (config.shadowTiddlers) {
SiteUrl = 'http://'+config.tiddlyspotSiteId+'.tiddlyspot.com';
SideBarOptions = SideBarOptions.replace(/(<<saveChanges>>)/,"$1<<tiddler TspotSidebar>>");
OptionsPanel = OptionsPanel.replace(/^/,"<<tiddler TspotOptions>>");
DefaultTiddlers = DefaultTiddlers.replace(/^/,"[[WelcomeToTiddlyspot]] ");
MainMenu = MainMenu.replace(/^/,"[[WelcomeToTiddlyspot]] ");
}
// create some shadow tiddler content
merge(config.shadowTiddlers,{
'WelcomeToTiddlyspot':[
"This document is a ~TiddlyWiki from tiddlyspot.com. A ~TiddlyWiki is an electronic notebook that is great for managing todo lists, personal information, and all sorts of things.",
"",
"@@font-weight:bold;font-size:1.3em;color:#444; //What now?// @@ Before you can save any changes, you need to enter your password in the form below. Then configure privacy and other site settings at your [[control panel|http://" + config.tiddlyspotSiteId + ".tiddlyspot.com/controlpanel]] (your control panel username is //" + config.tiddlyspotSiteId + "//).",
"<<tiddler TspotControls>>",
"See also GettingStarted.",
"",
"@@font-weight:bold;font-size:1.3em;color:#444; //Working online// @@ You can edit this ~TiddlyWiki right now, and save your changes using the \"save to web\" button in the column on the right.",
"",
"@@font-weight:bold;font-size:1.3em;color:#444; //Working offline// @@ A fully functioning copy of this ~TiddlyWiki can be saved onto your hard drive or USB stick. You can make changes and save them locally without being connected to the Internet. When you're ready to sync up again, just click \"upload\" and your ~TiddlyWiki will be saved back to tiddlyspot.com.",
"",
"@@font-weight:bold;font-size:1.3em;color:#444; //Help!// @@ Find out more about ~TiddlyWiki at [[TiddlyWiki.com|http://tiddlywiki.com]]. Also visit [[TiddlyWiki.org|http://tiddlywiki.org]] for documentation on learning and using ~TiddlyWiki. New users are especially welcome on the [[TiddlyWiki mailing list|http://groups.google.com/group/TiddlyWiki]], which is an excellent place to ask questions and get help. If you have a tiddlyspot related problem email [[tiddlyspot support|mailto:support@tiddlyspot.com]].",
"",
"@@font-weight:bold;font-size:1.3em;color:#444; //Enjoy :)// @@ We hope you like using your tiddlyspot.com site. Please email [[feedback@tiddlyspot.com|mailto:feedback@tiddlyspot.com]] with any comments or suggestions."
].join("\n"),
'TspotControls':[
"| tiddlyspot password:|<<option pasUploadPassword>>|",
"| site management:|<<upload http://" + config.tiddlyspotSiteId + ".tiddlyspot.com/store.cgi index.html . . " + config.tiddlyspotSiteId + ">>//(requires tiddlyspot password)//<br>[[control panel|http://" + config.tiddlyspotSiteId + ".tiddlyspot.com/controlpanel]], [[download (go offline)|http://" + config.tiddlyspotSiteId + ".tiddlyspot.com/download]]|",
"| links:|[[tiddlyspot.com|http://tiddlyspot.com/]], [[FAQs|http://faq.tiddlyspot.com/]], [[blog|http://tiddlyspot.blogspot.com/]], email [[support|mailto:support@tiddlyspot.com]] & [[feedback|mailto:feedback@tiddlyspot.com]], [[donate|http://tiddlyspot.com/?page=donate]]|"
].join("\n"),
'TspotSidebar':[
"<<upload http://" + config.tiddlyspotSiteId + ".tiddlyspot.com/store.cgi index.html . . " + config.tiddlyspotSiteId + ">><html><a href='http://" + config.tiddlyspotSiteId + ".tiddlyspot.com/download' class='button'>download</a></html>"
].join("\n"),
'TspotOptions':[
"tiddlyspot password:",
"<<option pasUploadPassword>>",
""
].join("\n")
});
//}}}
<<upload http://twt-treeview.tiddlyspot.com/store.cgi index.html . . twt-treeview>><html><a href='http://twt-treeview.tiddlyspot.com/download' class='button'>download</a></html>
/***
|Name|TwHelpSearchPlugin|
|Source|http://twhelp.tiddlyspot.com/#TwHelpSearchPlugin|
|Documentation|http://twhelp.tiddlyspot.com/#TWHelpSearchDoc|
|Version|1.0.7|
|Author|Morris Gray|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.0 - 2.4|
|Type|plugin|
|Requires|[[SearchOptionsPlugin|http://www.TiddlyTools.com/#SearchOptionsPlugin]] [[TableSortingPlugin|http://tw.lewcid.org/#TableSortingPlugin]] (only for sorting option)|
|Overrides|SearchOptionsPlugin's search results|
|Description|Extends the search results from SearchOptionsPlugin to a sortable table showing title, size and tags.|
''Demo search:''
|>|>|>|<<search>> |
|>|>| look for in |>|>|>|
| <<option chkSearchTitles>> | <<option chkSearchText>> | <<option chkSearchTags>> | <<option chkHoldSearches>> |
| titles | text | tags | hold |
''A Plugin Tweak for:'' SearchOptionsPlugin
!!!!!Description
<<<
This plugin defines an alternative format for the SearchResults tiddler that is generated by the SearchOptionsPlugin . It presents the search results in tabular form numbering the rows; and showing the tiddler title, the size in bytes, and the tags. It is ready to be used with the [[TableSortingPlugin|http://tw.lewcid.org/#TableSortingPlugin]] (check versions) so any column can be sorted; such as size in ascending or descending order.
<<<
!!!!!Installation
<<<
Import (or copy/paste) the following tiddlers into your ~TiddlyWiki:
* http://twhelp.tiddlyspot.com/#TwHelpSearchPlugin
*SearchOptionsPlugin from http://www.tiddlytools.com/#SearchOptionsPlugin
* Get more documentation here [[TWHelpSearchDoc]] or here:
* http://twhelp.tiddlyspot.com/#TwHelpSearchDoc
<<<
!!!!!Revision History
<<<
''2009.02.18 [1.0.7]''
Removed text coloring of headers re: conflict with TableSortingPlugin refresh.
''2008.09.14 [1.0.6]''
Cosmetic - Add header.
''2007.09.12 [1.0.6]''
Added overflow scroll to TWHelp-SearchResults for long titles or tags.
''2006.02.03 [1.0.5]''
Added facility for holding the results of multiple searches with tick box on dashboard.
''2006.02.02 [1.0.4]''
Added several options, cleaned up design.Planning one version basic and one with added options this is the added options version.
''2006.01.27 [1.0.3''
Added a column for the size of the text in each tiddler, this does not include the size of the title or tags. Added overall TW statistics button requires TiddlerStatsPlugin.
''2006.01.23 [1.0.2 ]''
''a)''Changed function reportSearchResults(text,matches) to window.reportSearchResults=function(text,matches)
''b)''Added a line so that Incremental Search is automatically disabled config.options.chkSearchIncremental=false; turn off key-by-key searching
''c)''Removed space inside parens. bgcolor(#fe8 )" to "bgcolor(#fe8)". This
is what was causing IE to 'crap out' halfway through drawing the table
headings.
''d)''Added {{{config.options.chkSearchList=true;}}}
''2006.01.20 [1.0.1]''
ELS: reportSearchResults() definition moved to this Plugin Tweak tiddler and removed extranous code
''2006.01.19 [1.0.0]''
This is an adaptation of Eric Shulman's SearchOptionsPlugin. Adapted by MorrisGray to provide search results in table form. All the necessary controls for refining the search is provided within the table including slide-down access to AdvancedOptions.
<<<
!!!!!Code
***/
//{{{
if (config.options.chkSinglePageMode==undefined) config.options.chkSinglePageMode=false;
if (config.options.chkRegExpSearch==undefined) config.options.chkRegExpSearch=true;
if (config.options.chkSearchTitles==undefined) config.options.chkSearchTitles=false;
if (config.options.chkSearchText==undefined) config.options.chkSearchText=true;
if (config.options.chkSearchTags==undefined) config.options.chkSearchTags=false;
if (config.options.chkSearchTitlesFirst==undefined) config.options.chkSearchTitlesFirst=true;
if (config.options.chkSearchList==undefined) config.options.chkSearchList=true;
if (config.options.chkSearchIncremental==undefined) config.options.chkSearchIncremental=false;
if (config.options.chkToggleLinks==true) config.options.chkToggleLinks=false;
if (config.options.chkHoldSearches==undefined) config.options.chkHoldSearches=false;
if (config.options.chkSortTags==undefined) config.options.chkSortTags=false;
config.options.chkToggleLinks=false;
config.options.chkSinglePageMode=false;
config.options.chkHoldSearches=false;
config.options.chkSearchIncremental=false;
config.options.chkHttpReadOnly = false;
config.options.chkRegExpSearch=true;
config.options.chkSearchList=true;
config.options.chkToggleLinks=false;
config.shadowTiddlers.AdvancedOptions += "\n<<option chkHoldSearches>> Hold search results";
//}}}
//{{{
// Give the report a custom name
config.macros.search.reportTitle="TWHelp-SearchResults";
// Override default SearchOptionsPlugin formatting for SearchResults tiddler
window.reportSearchResults=function(text,matches)
{
var title=config.macros.search.reportTitle
config.macros.search.reportTitle;
var q = config.options.chkRegExpSearch ? "/" : "'";
if (!config.options.chkHoldSearches) body="";
body+="\n|>|bgcolor:#8af;@@color(#000080):''"+config.macros.search.successMsg.format([matches.length,q+"{{{"+text+"}}}"+q])+"''@@|bgcolor:#8af; @@color:#A00000; SearchHelp@@ "+"|"+"\n";
body+="|>|>|bgcolor:#E3FFE3;<<search>> <<option chkSearchTitles>> Titles <<option chkSearchText>> Text <<option chkSearchTags>>Tags <<option chkHoldSearches>> Hold |"+"\n";
body+="\n|bgcolor:#8af; |bgcolor:#8af; sort by:''Titles'' |bgcolor:#8af; ''Size'' |bgcolor:#8af; ''Tags'' |h";
for(var t=0;t<matches.length;t++)
body+="\n"+"| "+(t+1)+"|[["+matches[t].title+"]]| "+matches[t].text.length+"|"+matches[t].tags+"|";
body+="\n|sortable|k";
body+="\n";
// create/update the tiddler
var tiddler=store.getTiddler(title); if (!tiddler) tiddler=new Tiddler();
tiddler.set(title,body,config.options.txtUserName,(new Date()),"excludeLists excludeSearch killbookmark");
store.addTiddler(tiddler); story.closeTiddler(title);
// render tiddler
var oldprompt=config.macros.search.label;
config.macros.search.label="search again"; // use alternate "search again" label
story.displayTiddler(null,title,1); // force refresh
config.macros.search.label=oldprompt; // restore standard search label
}
//}}}
!!Tétel
Egy [[kielégíthetetlen formulahalmaz|Kielégíthetetlenség]] minden bővítése kielégíthetetlen.
(A logikai ellentmondás bővítéssel nem szüntethető meg.)
!!!Bizonyítás
Indirekt bizonyítás:
Tegyük fel, hogy $\Gamma\subseteq Form$ tetszőleges [[kielégíthetetlen formulahalmaz|Kielégíthetetlenség]], $\Delta\subseteq Form$ pedig tetszőleges formulahalmaz.
Indirekt feltétel: $\Gamma$ kielégíthetetlen, és $\Gamma \cup \Delta$ kielégíthető.
$\Gamma\subseteq\Gamma \cup \Delta$
A [[kielégíthetőségre vonatkozó tétel|Tétel (kielégíthetőség)]] miatt $\Gamma $ kielégíthető, ez pedig ellentmondás.
!!Tétel
Egy [[kielégíthető formulahalmaz|Kielégíthetőség]] minden részhalmaza kielégíthető.
(A logikai ellentmondástalanság szűkítéssel nem rontható el.)
!!Bizonyítás
Legyen $\Gamma\subseteq Form$ egy tetszőleges [[kielégíthető formulahalmaz|Kielégíthetőség]], és $\Delta\subseteq \Gamma$!
$\Gamma$ kielégíthetősége miatt a $\Gamma$ formulahalmaznak van modellje, legyen $\Gamma$ egy modellje a ${\varrho}$ interpretáció.
${\varrho}$ tulajdonsága: Ha $A\in \Gamma$, akkor $\vert A\vert_{\varrho}=1$
Mivel $\Delta\subseteq \Gamma$, ha $A\in \Delta$, akkor $A\in \Gamma$, s így $\vert A\vert_{\varrho}=1$. Azaz a ${\varrho} $ interpretáció modellje $\Delta$-nak, tehát $\Delta$ kielégíthető.
| !date | !user | !location | !storeUrl | !uploadDir | !toFilename | !backupdir | !origin |
| 12/06/2009 12:16:03 | YourName | [[twt-treeview.html|file:///F:/TiddlyWiki/TWT-Treeview/twt-treeview.html]] | [[store.cgi|http://twt-treeview.tiddlyspot.com/store.cgi]] | . | [[index.html | http://twt-treeview.tiddlyspot.com/index.html]] | . |
| 12/06/2009 19:12:11 | YourName | [[twt-treeview.html|file:///F:/TiddlyWiki/TWT-Treeview/twt-treeview.html]] | [[store.cgi|http://twt-treeview.tiddlyspot.com/store.cgi]] | . | [[index.html | http://twt-treeview.tiddlyspot.com/index.html]] | . | ok |
| 15/06/2009 19:56:08 | YourName | [[twt-treeview.html|file:///F:/TiddlyWiki/TWT-Treeview/twt-treeview.html]] | [[store.cgi|http://twt-treeview.tiddlyspot.com/store.cgi]] | . | [[index.html | http://twt-treeview.tiddlyspot.com/index.html]] | . | ok |
| 16/06/2009 00:07:28 | YourName | [[twt-treeview.html|file:///F:/TiddlyWiki/TWT-Treeview/twt-treeview.html]] | [[store.cgi|http://twt-treeview.tiddlyspot.com/store.cgi]] | . | [[index.html | http://twt-treeview.tiddlyspot.com/index.html]] | . | ok |
| 16/06/2009 00:37:42 | YourName | [[twt-treeview.html|file:///F:/TiddlyWiki/TWT-Treeview/twt-treeview.html]] | [[store.cgi|http://twt-treeview.tiddlyspot.com/store.cgi]] | . | [[index.html | http://twt-treeview.tiddlyspot.com/index.html]] | . | ok |
| 16/06/2009 00:50:08 | YourName | [[twt-treeview.html|file:///F:/TiddlyWiki/TWT-Treeview/twt-treeview.html]] | [[store.cgi|http://twt-treeview.tiddlyspot.com/store.cgi]] | . | [[index.html | http://twt-treeview.tiddlyspot.com/index.html]] | . | ok |
| 16/06/2009 00:52:50 | YourName | [[twt-treeview.html|file:///F:/TiddlyWiki/TWT-Treeview/twt-treeview.html]] | [[store.cgi|http://twt-treeview.tiddlyspot.com/store.cgi]] | . | [[index.html | http://twt-treeview.tiddlyspot.com/index.html]] | . | ok |
| 16/06/2009 02:27:25 | YourName | [[twt-treeview.html|file:///F:/TiddlyWiki/TWT-Treeview/twt-treeview.html]] | [[store.cgi|http://twt-treeview.tiddlyspot.com/store.cgi]] | . | [[index.html | http://twt-treeview.tiddlyspot.com/index.html]] | . | ok |
| 16/06/2009 02:33:43 | YourName | [[twt-treeview.html|file:///F:/TiddlyWiki/TWT-Treeview/twt-treeview.html]] | [[store.cgi|http://twt-treeview.tiddlyspot.com/store.cgi]] | . | [[index.html | http://twt-treeview.tiddlyspot.com/index.html]] | . | ok |
| 27/06/2009 01:35:16 | YourName | [[twt-treeview.html|file:///F:/TiddlyWiki/TWT-Treeview/twt-treeview.html]] | [[store.cgi|http://twt-treeview.tiddlyspot.com/store.cgi]] | . | [[index.html | http://twt-treeview.tiddlyspot.com/index.html]] | . |
/***
|''Name:''|UploadPlugin|
|''Description:''|Save to web a TiddlyWiki|
|''Version:''|4.1.3|
|''Date:''|Feb 24, 2008|
|''Source:''|http://tiddlywiki.bidix.info/#UploadPlugin|
|''Documentation:''|http://tiddlywiki.bidix.info/#UploadPluginDoc|
|''Author:''|BidiX (BidiX (at) bidix (dot) info)|
|''License:''|[[BSD open source license|http://tiddlywiki.bidix.info/#%5B%5BBSD%20open%20source%20license%5D%5D ]]|
|''~CoreVersion:''|2.2.0|
|''Requires:''|PasswordOptionPlugin|
***/
//{{{
version.extensions.UploadPlugin = {
major: 4, minor: 1, revision: 3,
date: new Date("Feb 24, 2008"),
source: 'http://tiddlywiki.bidix.info/#UploadPlugin',
author: 'BidiX (BidiX (at) bidix (dot) info',
coreVersion: '2.2.0'
};
//
// Environment
//
if (!window.bidix) window.bidix = {}; // bidix namespace
bidix.debugMode = false; // true to activate both in Plugin and UploadService
//
// Upload Macro
//
config.macros.upload = {
// default values
defaultBackupDir: '', //no backup
defaultStoreScript: "store.php",
defaultToFilename: "index.html",
defaultUploadDir: ".",
authenticateUser: true // UploadService Authenticate User
};
config.macros.upload.label = {
promptOption: "Save and Upload this TiddlyWiki with UploadOptions",
promptParamMacro: "Save and Upload this TiddlyWiki in %0",
saveLabel: "save to web",
saveToDisk: "save to disk",
uploadLabel: "upload"
};
config.macros.upload.messages = {
noStoreUrl: "No store URL in parmeters or options",
usernameOrPasswordMissing: "Username or password missing"
};
config.macros.upload.handler = function(place,macroName,params) {
if (readOnly)
return;
var label;
if (document.location.toString().substr(0,4) == "http")
label = this.label.saveLabel;
else
label = this.label.uploadLabel;
var prompt;
if (params[0]) {
prompt = this.label.promptParamMacro.toString().format([this.destFile(params[0],
(params[1] ? params[1]:bidix.basename(window.location.toString())), params[3])]);
} else {
prompt = this.label.promptOption;
}
createTiddlyButton(place, label, prompt, function() {config.macros.upload.action(params);}, null, null, this.accessKey);
};
config.macros.upload.action = function(params)
{
// for missing macro parameter set value from options
if (!params) params = {};
var storeUrl = params[0] ? params[0] : config.options.txtUploadStoreUrl;
var toFilename = params[1] ? params[1] : config.options.txtUploadFilename;
var backupDir = params[2] ? params[2] : config.options.txtUploadBackupDir;
var uploadDir = params[3] ? params[3] : config.options.txtUploadDir;
var username = params[4] ? params[4] : config.options.txtUploadUserName;
var password = config.options.pasUploadPassword; // for security reason no password as macro parameter
// for still missing parameter set default value
if ((!storeUrl) && (document.location.toString().substr(0,4) == "http"))
storeUrl = bidix.dirname(document.location.toString())+'/'+config.macros.upload.defaultStoreScript;
if (storeUrl.substr(0,4) != "http")
storeUrl = bidix.dirname(document.location.toString()) +'/'+ storeUrl;
if (!toFilename)
toFilename = bidix.basename(window.location.toString());
if (!toFilename)
toFilename = config.macros.upload.defaultToFilename;
if (!uploadDir)
uploadDir = config.macros.upload.defaultUploadDir;
if (!backupDir)
backupDir = config.macros.upload.defaultBackupDir;
// report error if still missing
if (!storeUrl) {
alert(config.macros.upload.messages.noStoreUrl);
clearMessage();
return false;
}
if (config.macros.upload.authenticateUser && (!username || !password)) {
alert(config.macros.upload.messages.usernameOrPasswordMissing);
clearMessage();
return false;
}
bidix.upload.uploadChanges(false,null,storeUrl, toFilename, uploadDir, backupDir, username, password);
return false;
};
config.macros.upload.destFile = function(storeUrl, toFilename, uploadDir)
{
if (!storeUrl)
return null;
var dest = bidix.dirname(storeUrl);
if (uploadDir && uploadDir != '.')
dest = dest + '/' + uploadDir;
dest = dest + '/' + toFilename;
return dest;
};
//
// uploadOptions Macro
//
config.macros.uploadOptions = {
handler: function(place,macroName,params) {
var wizard = new Wizard();
wizard.createWizard(place,this.wizardTitle);
wizard.addStep(this.step1Title,this.step1Html);
var markList = wizard.getElement("markList");
var listWrapper = document.createElement("div");
markList.parentNode.insertBefore(listWrapper,markList);
wizard.setValue("listWrapper",listWrapper);
this.refreshOptions(listWrapper,false);
var uploadCaption;
if (document.location.toString().substr(0,4) == "http")
uploadCaption = config.macros.upload.label.saveLabel;
else
uploadCaption = config.macros.upload.label.uploadLabel;
wizard.setButtons([
{caption: uploadCaption, tooltip: config.macros.upload.label.promptOption,
onClick: config.macros.upload.action},
{caption: this.cancelButton, tooltip: this.cancelButtonPrompt, onClick: this.onCancel}
]);
},
options: [
"txtUploadUserName",
"pasUploadPassword",
"txtUploadStoreUrl",
"txtUploadDir",
"txtUploadFilename",
"txtUploadBackupDir",
"chkUploadLog",
"txtUploadLogMaxLine"
],
refreshOptions: function(listWrapper) {
var opts = [];
for(i=0; i<this.options.length; i++) {
var opt = {};
opts.push();
opt.option = "";
n = this.options[i];
opt.name = n;
opt.lowlight = !config.optionsDesc[n];
opt.description = opt.lowlight ? this.unknownDescription : config.optionsDesc[n];
opts.push(opt);
}
var listview = ListView.create(listWrapper,opts,this.listViewTemplate);
for(n=0; n<opts.length; n++) {
var type = opts[n].name.substr(0,3);
var h = config.macros.option.types[type];
if (h && h.create) {
h.create(opts[n].colElements['option'],type,opts[n].name,opts[n].name,"no");
}
}
},
onCancel: function(e)
{
backstage.switchTab(null);
return false;
},
wizardTitle: "Upload with options",
step1Title: "These options are saved in cookies in your browser",
step1Html: "<input type='hidden' name='markList'></input><br>",
cancelButton: "Cancel",
cancelButtonPrompt: "Cancel prompt",
listViewTemplate: {
columns: [
{name: 'Description', field: 'description', title: "Description", type: 'WikiText'},
{name: 'Option', field: 'option', title: "Option", type: 'String'},
{name: 'Name', field: 'name', title: "Name", type: 'String'}
],
rowClasses: [
{className: 'lowlight', field: 'lowlight'}
]}
};
//
// upload functions
//
if (!bidix.upload) bidix.upload = {};
if (!bidix.upload.messages) bidix.upload.messages = {
//from saving
invalidFileError: "The original file '%0' does not appear to be a valid TiddlyWiki",
backupSaved: "Backup saved",
backupFailed: "Failed to upload backup file",
rssSaved: "RSS feed uploaded",
rssFailed: "Failed to upload RSS feed file",
emptySaved: "Empty template uploaded",
emptyFailed: "Failed to upload empty template file",
mainSaved: "Main TiddlyWiki file uploaded",
mainFailed: "Failed to upload main TiddlyWiki file. Your changes have not been saved",
//specific upload
loadOriginalHttpPostError: "Can't get original file",
aboutToSaveOnHttpPost: 'About to upload on %0 ...',
storePhpNotFound: "The store script '%0' was not found."
};
bidix.upload.uploadChanges = function(onlyIfDirty,tiddlers,storeUrl,toFilename,uploadDir,backupDir,username,password)
{
var callback = function(status,uploadParams,original,url,xhr) {
if (!status) {
displayMessage(bidix.upload.messages.loadOriginalHttpPostError);
return;
}
if (bidix.debugMode)
alert(original.substr(0,500)+"\n...");
// Locate the storeArea div's
var posDiv = locateStoreArea(original);
if((posDiv[0] == -1) || (posDiv[1] == -1)) {
alert(config.messages.invalidFileError.format([localPath]));
return;
}
bidix.upload.uploadRss(uploadParams,original,posDiv);
};
if(onlyIfDirty && !store.isDirty())
return;
clearMessage();
// save on localdisk ?
if (document.location.toString().substr(0,4) == "file") {
var path = document.location.toString();
var localPath = getLocalPath(path);
saveChanges();
}
// get original
var uploadParams = new Array(storeUrl,toFilename,uploadDir,backupDir,username,password);
var originalPath = document.location.toString();
// If url is a directory : add index.html
if (originalPath.charAt(originalPath.length-1) == "/")
originalPath = originalPath + "index.html";
var dest = config.macros.upload.destFile(storeUrl,toFilename,uploadDir);
var log = new bidix.UploadLog();
log.startUpload(storeUrl, dest, uploadDir, backupDir);
displayMessage(bidix.upload.messages.aboutToSaveOnHttpPost.format([dest]));
if (bidix.debugMode)
alert("about to execute Http - GET on "+originalPath);
var r = doHttp("GET",originalPath,null,null,username,password,callback,uploadParams,null);
if (typeof r == "string")
displayMessage(r);
return r;
};
bidix.upload.uploadRss = function(uploadParams,original,posDiv)
{
var callback = function(status,params,responseText,url,xhr) {
if(status) {
var destfile = responseText.substring(responseText.indexOf("destfile:")+9,responseText.indexOf("\n", responseText.indexOf("destfile:")));
displayMessage(bidix.upload.messages.rssSaved,bidix.dirname(url)+'/'+destfile);
bidix.upload.uploadMain(params[0],params[1],params[2]);
} else {
displayMessage(bidix.upload.messages.rssFailed);
}
};
// do uploadRss
if(config.options.chkGenerateAnRssFeed) {
var rssPath = uploadParams[1].substr(0,uploadParams[1].lastIndexOf(".")) + ".xml";
var rssUploadParams = new Array(uploadParams[0],rssPath,uploadParams[2],'',uploadParams[4],uploadParams[5]);
var rssString = generateRss();
// no UnicodeToUTF8 conversion needed when location is "file" !!!
if (document.location.toString().substr(0,4) != "file")
rssString = convertUnicodeToUTF8(rssString);
bidix.upload.httpUpload(rssUploadParams,rssString,callback,Array(uploadParams,original,posDiv));
} else {
bidix.upload.uploadMain(uploadParams,original,posDiv);
}
};
bidix.upload.uploadMain = function(uploadParams,original,posDiv)
{
var callback = function(status,params,responseText,url,xhr) {
var log = new bidix.UploadLog();
if(status) {
// if backupDir specified
if ((params[3]) && (responseText.indexOf("backupfile:") > -1)) {
var backupfile = responseText.substring(responseText.indexOf("backupfile:")+11,responseText.indexOf("\n", responseText.indexOf("backupfile:")));
displayMessage(bidix.upload.messages.backupSaved,bidix.dirname(url)+'/'+backupfile);
}
var destfile = responseText.substring(responseText.indexOf("destfile:")+9,responseText.indexOf("\n", responseText.indexOf("destfile:")));
displayMessage(bidix.upload.messages.mainSaved,bidix.dirname(url)+'/'+destfile);
store.setDirty(false);
log.endUpload("ok");
} else {
alert(bidix.upload.messages.mainFailed);
displayMessage(bidix.upload.messages.mainFailed);
log.endUpload("failed");
}
};
// do uploadMain
var revised = bidix.upload.updateOriginal(original,posDiv);
bidix.upload.httpUpload(uploadParams,revised,callback,uploadParams);
};
bidix.upload.httpUpload = function(uploadParams,data,callback,params)
{
var localCallback = function(status,params,responseText,url,xhr) {
url = (url.indexOf("nocache=") < 0 ? url : url.substring(0,url.indexOf("nocache=")-1));
if (xhr.status == 404)
alert(bidix.upload.messages.storePhpNotFound.format([url]));
if ((bidix.debugMode) || (responseText.indexOf("Debug mode") >= 0 )) {
alert(responseText);
if (responseText.indexOf("Debug mode") >= 0 )
responseText = responseText.substring(responseText.indexOf("\n\n")+2);
} else if (responseText.charAt(0) != '0')
alert(responseText);
if (responseText.charAt(0) != '0')
status = null;
callback(status,params,responseText,url,xhr);
};
// do httpUpload
var boundary = "---------------------------"+"AaB03x";
var uploadFormName = "UploadPlugin";
// compose headers data
var sheader = "";
sheader += "--" + boundary + "\r\nContent-disposition: form-data; name=\"";
sheader += uploadFormName +"\"\r\n\r\n";
sheader += "backupDir="+uploadParams[3] +
";user=" + uploadParams[4] +
";password=" + uploadParams[5] +
";uploaddir=" + uploadParams[2];
if (bidix.debugMode)
sheader += ";debug=1";
sheader += ";;\r\n";
sheader += "\r\n" + "--" + boundary + "\r\n";
sheader += "Content-disposition: form-data; name=\"userfile\"; filename=\""+uploadParams[1]+"\"\r\n";
sheader += "Content-Type: text/html;charset=UTF-8" + "\r\n";
sheader += "Content-Length: " + data.length + "\r\n\r\n";
// compose trailer data
var strailer = new String();
strailer = "\r\n--" + boundary + "--\r\n";
data = sheader + data + strailer;
if (bidix.debugMode) alert("about to execute Http - POST on "+uploadParams[0]+"\n with \n"+data.substr(0,500)+ " ... ");
var r = doHttp("POST",uploadParams[0],data,"multipart/form-data; ;charset=UTF-8; boundary="+boundary,uploadParams[4],uploadParams[5],localCallback,params,null);
if (typeof r == "string")
displayMessage(r);
return r;
};
// same as Saving's updateOriginal but without convertUnicodeToUTF8 calls
bidix.upload.updateOriginal = function(original, posDiv)
{
if (!posDiv)
posDiv = locateStoreArea(original);
if((posDiv[0] == -1) || (posDiv[1] == -1)) {
alert(config.messages.invalidFileError.format([localPath]));
return;
}
var revised = original.substr(0,posDiv[0] + startSaveArea.length) + "\n" +
store.allTiddlersAsHtml() + "\n" +
original.substr(posDiv[1]);
var newSiteTitle = getPageTitle().htmlEncode();
revised = revised.replaceChunk("<title"+">","</title"+">"," " + newSiteTitle + " ");
revised = updateMarkupBlock(revised,"PRE-HEAD","MarkupPreHead");
revised = updateMarkupBlock(revised,"POST-HEAD","MarkupPostHead");
revised = updateMarkupBlock(revised,"PRE-BODY","MarkupPreBody");
revised = updateMarkupBlock(revised,"POST-SCRIPT","MarkupPostBody");
return revised;
};
//
// UploadLog
//
// config.options.chkUploadLog :
// false : no logging
// true : logging
// config.options.txtUploadLogMaxLine :
// -1 : no limit
// 0 : no Log lines but UploadLog is still in place
// n : the last n lines are only kept
// NaN : no limit (-1)
bidix.UploadLog = function() {
if (!config.options.chkUploadLog)
return; // this.tiddler = null
this.tiddler = store.getTiddler("UploadLog");
if (!this.tiddler) {
this.tiddler = new Tiddler();
this.tiddler.title = "UploadLog";
this.tiddler.text = "| !date | !user | !location | !storeUrl | !uploadDir | !toFilename | !backupdir | !origin |";
this.tiddler.created = new Date();
this.tiddler.modifier = config.options.txtUserName;
this.tiddler.modified = new Date();
store.addTiddler(this.tiddler);
}
return this;
};
bidix.UploadLog.prototype.addText = function(text) {
if (!this.tiddler)
return;
// retrieve maxLine when we need it
var maxLine = parseInt(config.options.txtUploadLogMaxLine,10);
if (isNaN(maxLine))
maxLine = -1;
// add text
if (maxLine != 0)
this.tiddler.text = this.tiddler.text + text;
// Trunck to maxLine
if (maxLine >= 0) {
var textArray = this.tiddler.text.split('\n');
if (textArray.length > maxLine + 1)
textArray.splice(1,textArray.length-1-maxLine);
this.tiddler.text = textArray.join('\n');
}
// update tiddler fields
this.tiddler.modifier = config.options.txtUserName;
this.tiddler.modified = new Date();
store.addTiddler(this.tiddler);
// refresh and notifiy for immediate update
story.refreshTiddler(this.tiddler.title);
store.notify(this.tiddler.title, true);
};
bidix.UploadLog.prototype.startUpload = function(storeUrl, toFilename, uploadDir, backupDir) {
if (!this.tiddler)
return;
var now = new Date();
var text = "\n| ";
var filename = bidix.basename(document.location.toString());
if (!filename) filename = '/';
text += now.formatString("0DD/0MM/YYYY 0hh:0mm:0ss") +" | ";
text += config.options.txtUserName + " | ";
text += "[["+filename+"|"+location + "]] |";
text += " [[" + bidix.basename(storeUrl) + "|" + storeUrl + "]] | ";
text += uploadDir + " | ";
text += "[[" + bidix.basename(toFilename) + " | " +toFilename + "]] | ";
text += backupDir + " |";
this.addText(text);
};
bidix.UploadLog.prototype.endUpload = function(status) {
if (!this.tiddler)
return;
this.addText(" "+status+" |");
};
//
// Utilities
//
bidix.checkPlugin = function(plugin, major, minor, revision) {
var ext = version.extensions[plugin];
if (!
(ext &&
((ext.major > major) ||
((ext.major == major) && (ext.minor > minor)) ||
((ext.major == major) && (ext.minor == minor) && (ext.revision >= revision))))) {
// write error in PluginManager
if (pluginInfo)
pluginInfo.log.push("Requires " + plugin + " " + major + "." + minor + "." + revision);
eval(plugin); // generate an error : "Error: ReferenceError: xxxx is not defined"
}
};
bidix.dirname = function(filePath) {
if (!filePath)
return;
var lastpos;
if ((lastpos = filePath.lastIndexOf("/")) != -1) {
return filePath.substring(0, lastpos);
} else {
return filePath.substring(0, filePath.lastIndexOf("\\"));
}
};
bidix.basename = function(filePath) {
if (!filePath)
return;
var lastpos;
if ((lastpos = filePath.lastIndexOf("#")) != -1)
filePath = filePath.substring(0, lastpos);
if ((lastpos = filePath.lastIndexOf("/")) != -1) {
return filePath.substring(lastpos + 1);
} else
return filePath.substring(filePath.lastIndexOf("\\")+1);
};
bidix.initOption = function(name,value) {
if (!config.options[name])
config.options[name] = value;
};
//
// Initializations
//
// require PasswordOptionPlugin 1.0.1 or better
bidix.checkPlugin("PasswordOptionPlugin", 1, 0, 1);
// styleSheet
setStylesheet('.txtUploadStoreUrl, .txtUploadBackupDir, .txtUploadDir {width: 22em;}',"uploadPluginStyles");
//optionsDesc
merge(config.optionsDesc,{
txtUploadStoreUrl: "Url of the UploadService script (default: store.php)",
txtUploadFilename: "Filename of the uploaded file (default: in index.html)",
txtUploadDir: "Relative Directory where to store the file (default: . (downloadService directory))",
txtUploadBackupDir: "Relative Directory where to backup the file. If empty no backup. (default: ''(empty))",
txtUploadUserName: "Upload Username",
pasUploadPassword: "Upload Password",
chkUploadLog: "do Logging in UploadLog (default: true)",
txtUploadLogMaxLine: "Maximum of lines in UploadLog (default: 10)"
});
// Options Initializations
bidix.initOption('txtUploadStoreUrl','');
bidix.initOption('txtUploadFilename','');
bidix.initOption('txtUploadDir','');
bidix.initOption('txtUploadBackupDir','');
bidix.initOption('txtUploadUserName','');
bidix.initOption('pasUploadPassword','');
bidix.initOption('chkUploadLog',true);
bidix.initOption('txtUploadLogMaxLine','10');
// Backstage
merge(config.tasks,{
uploadOptions: {text: "upload", tooltip: "Change UploadOptions and Upload", content: '<<uploadOptions>>'}
});
config.backstageTasks.push("uploadOptions");
//}}}
''Usage Treeview.24''
{{{<<treeview2 [root tag] [tree style] [startup parameters]>>}}}
Startup parameters are a set of optional parameters given in a comma-separated, key/value string like this: 'collapsed: false, animated: "normal", persist: true' ''Carefully observe the quotes.''
''Version .24.''
{{{<<treeview2 "TWT-Notes" "filetree" 'collapsed: false, antisesame: "closed", animated: "fast", persist: "cookie", cookieId: "myid"' >>}}}
Where:
root tag is the tag at the the name of your top level topic, it related to subTopics by using its name as one of their tags. Tree style indicates which type of tree will be displayed, possibly treeview, filetree, and treeview-red, and treeview-famfamfam. This ~TiddlyWiki is set up for treeview' only.
<div class='SVGgraph' options='width:300'>
a=-2
text([a,2],"$(A \\cap B) \\cup C$",{pos:"n"})
text([a-1.8,1],"A")
text([a+1.5,1],"B")
text([a+0,-2.5],"C")
setOptions({fill:"red"});
arc({start:[a,0.866],end:[a,-0.866],radius:1})
arc({start:[a,-0.866],end:[a,0.866],radius:1})
circle([a,-0.866],1)
setOptions({fill:"none"});
circle([a-.5,0],1)
circle([a+.5,0],1)
a=2
text([a,2],"$(A \\cup C) \\cap B$",{pos:"n"})
text([a-1.8,1],"A")
text([a+1.5,1],"B")
text([a,-2.5],"C")
setOptions({fill:"red"});
arc({start:[a,0.866],end:[a,-0.866],radius:1})
arc({start:[a,-0.866],end:[a,0.866],radius:1})
arc({start:[a+1,-0.866],end:[a-.5,0],radius:1})
arc({start:[a-.5,0],end:[a+1,-0.866],radius:1})
setOptions({fill:"none"});
circle([a,-0.866],1)
circle([a-.5,0],1)
circle([a+.5,0],1)
</div>
<!--{{{-->
<br />
<div class='toolbar' macro='toolbar [[ToolbarCommands::ViewToolbar]]'><span style="color:#555;">[</span>change:»<span style="padding-right:0em;" macro='tagger'></span >add:»<span macro='newHere label:"subtopic"'></span><span style="color:#555">]</span><span macro='publishTiddler'></span></div><br>
<div class='title' macro='view title'></div>
<div class='viewer' macro='view text wikified'></div>
<div class='tagClear'></div>
<!--}}}-->
A konvenciók célja az egyértelmű olvashatóság fenntartása mellett a formulákban előforduló zárójelek számának a csökkentése.
#A létrejött jelsorozatok betű szerint nem formulák, de egyértelműen előállítható belőlük egy formula.
#Az egyszerűség kedvéért az így létrejött jelsorozatokat is formuláknak nevezzük, s használatukkor mindig a belőlük egyértelműen előállítható formulákra gondolunk.
!!Zárójelelhagyási konvenciók
*A legkülső zárójelpár mindig elhagyható.
*A kétargumentumú logikai konstansok elsőbbségi (precedencia) sorrendje:
$$\wedge ,\vee ,\supset ,\equiv$$
*A [[negáció|Negáció]] erősebb bármely kétargumentumú logikai konstansnál.
*Az azonos kétargumentumú logikai konstansok egymás közötti elsőbbségét a balról jobbra szabály rendezi: először mindig a bal oldali formulát tekintjük külön műveleti komponensnek.
!!!Megjegyzés
*Az utolsó szabály a következőképpen is megfogalmazható: azonos kétargmentumú logikai konstansok esetén balról az első a formula fő műveleti jele.
*Az utolsó szabálynak csak az [[implikációnál|Implikáció]] van valódi jelentősége:
**az $A \supset B\supset C$ 'formula' egyértelműen zárójelezett alakja: $(A \supset (B\supset C))$;
*A [[konjunkció|Konjunkció]], a [[diszjunkció|Diszjunkció]] és a [[(materiális) ekvivalencia|Ekvivalencia]] esetében a műveltek asszociativitása miatt a szabályt nem követő zárójelezések is logikailag ekvivalens formulát eredményeznek. Pl.: az $A \wedge B\wedge C$ 'formula' egyértelműen zárójelezett alakja: $(A \wedge (B\wedge C))$, de ez logikailag ekvivalens az $((A \wedge B)\wedge C)$ formulával.
| source file:|{{{F:\TiddlyWiki\TWExperiments\jQuery\images\book.gif}}}|
| attached on:|31 May 2009 by YourName|
| embedded:|[[book.gif|book.gif]] - {{{type=image/gif, size=572 bytes, encoded=775 bytes}}}|
| local file:|/%LOCAL_LINK%/[[./images/book.gif|./images/book.gif]]|
| remote link:|/%REMOTE_LINK%/[[http://www.symbex.net.au/Wiki/images/book.gif|http://www.symbex.net.au/Wiki/images/book.gif]]|
image
<<<
usage: {{{[img[tooltip|book.gif]] or [img[tooltip|book.gif][link]]}}}
[img[tooltip|book.gif]]
<<<
/% DO NOT EDIT BELOW THIS POINT
---BEGIN_DATA---
image/gif;base64,
R0lGODlhEAAOAOZcAGpqc32HqGBlif7+/qXf+pzO5o2a6Jil8urw+mZzx4aT4v78
/uHp+pys9Jun9G16zZC5zZmm84+d65Gd7Gt5zYqa5Wl2ypaj8Ovt7HKA03uI2aOv
rtHP0Kapq2BrtFZlwWRxx4KRqWNnflddgpSg7oOQ3298z1ppw19twYeU5Jej8ff3
+aKswo6a6XqH2V1qwEBOQ1RhuHF+0FhnvZyo9Pj3+md1yVFbmn+M3Fpnvn6K266x
r3yj0IWVzZejrMzOzWBuxJuv74GO34SR4T9TRmFwyoqW5bCzsml0t5CSoEdepWpq
dHZ7mnaD1mNwxXiI63iF15Of7VNhuE5dtHWC03d4gGBwzlpee52p9mVkZ0hWr3B5
lv///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAACH5BAEAAFwALAAAAAAQAA4AAAeZgFyCg1wBW1mEiYKGERMK
AoqLWlhYFwZCVJCEPj2UWA5RKRomTppcAFcEDZQqLSVNFi9SV4IAT1sEQTQkRjoy
IDNTSiOnVlpbBQcSQ1AUKDEeRVqIV8bIFTgZCTlIH0RbLILVxxAuD0AnWiJJCAyD
41s8NjdbHAMrG4jvxkshPwMYjmSpoqgakwU1OgyMJAhGlR0LGQ6KmCgQADs=
---END_DATA---
%/
| source file:|{{{F:\TiddlyWiki\TW jQuery\TreeView\images\disk.gif}}}|
| attached on:|6 June 2009 by YourName|
| embedded:|[[disk.gif|disk.gif]] - {{{type=image/gif, size=1225 bytes, encoded=1661 bytes}}}|
| local file:|//none//|
| remote link:|/%REMOTE_LINK%/[[http://www.symbex.net.au/Wiki/images/disk.gif|http://www.symbex.net.au/Wiki/images/disk.gif]]|
image
<<<
usage: {{{[img[tooltip|disk.gif]] or [img[tooltip|disk.gif][link]]}}}
[img[tooltip|disk.gif]]
<<<
/% DO NOT EDIT BELOW THIS POINT
---BEGIN_DATA---
image/gif;base64,
R0lGODlhFAAUAPcAAAAhvQAhxgAhzgAp1gAp5wAp7wAx5wgYYwgYewgYzgghnAgh
zggh1ggh3ggptQgpzggp1ggp3ggp5wgp7wgp9wgx3ggx5wg5xhAYWhAYrRAYvRAY
3hAhnBAhrRAh1hAh3hAh5xAppRAprRAxjBAxtRAxxhAxzhAx1hA5xhA5zhA59xBC
1hghaxgphBgpnBgptRgxhBgxjBgxlBgxzhgx1hg57xhC3hhC7yEpcyEpjCExWiEx
eyExjCE5Yykxeyk5jClCrSlKvSlKxilS1ila1iljpSlztTE5YzFCxjFKnDFKxjFS
nDFalDFazjGczjlClDlSjDlSxjlS3jla1jljxjlzxjmE1jmUvTmUxjmUzjmcxkJS
UkJSnEJStUJSzkJS1kJahEJatUJavUJjhEJjtUKUxkKUzkKU50pSvUpac0pz50qE
50qM70rO70rO91JjlFJ751KEzlKE3lKE51KE71KMzlKM3lKM51LO71LO91pje1pj
hFpjjFpjlFpre1prhFprjFp7vVp71lqE51qE71qM1lqM51q991rG91rO71rO92Nr
a2NrjGNzlGN7vWOEnGOEpWOExmOEzmOE52OMzmOM72trc2trnGt7jGt7pWt7zmuE
pWuU53NzjHOExnOMxnOc1nOc53uEpXuM1nuM3nuc1nuc3nul3oSEjISMnISc3oSl
3oS974yEjIyUpYyUtYyc54yltYy974y995SUlJSUnJSUpZScnJScpZSlrZS955S9
75S995yUnJyUpZycnJylzpy1vZy1xpy195y956WlxqW1xqW93q2tra2txq3G57Wl
tbW11rXG57XW9729vb3Ozr3O573e973n98bG3sbO78bW78be58bn98bv98bv/87O
xs7e587e987n987n/87v787v987v/87399bW1tbW59bn59bn79bn99bv79bv/9b3
99b3/97n597n797n997n/97v3t7v797v99739973/+fe7+f39+f3/+f/9+/v7+/3
9/f39////////////ywAAAAAFAAUAAAI/gBlyYHDydm1a9GOCfPk6NEjUJMmAdPH
bxCAB0Gu3YsHLVgmF0DA9Ahjo8SPZPsGLXigpFu7bchqvdHwZdMYMTcqhGhETiUE
JNWoxUSVpsOXXJjC5CTBp5fKBUqaFevVytKRDl6M4VJqIUQfWoMemAhy7FWqRVt0
oCFVjVmXGxJE8Kk16IIaU5984GCBgcWPJFyeKLkx4QWjWnMqEIjwwIMHEB88RGCw
wAOECBVk7KE1Z4CFFDNm0KAxA4VpFDNSrCDCQ0+vOw+GyNK1a9cwYsR25eY1q1Ac
GHroLpiSbd06dfOMq6M3b546WJpy7Ok1Z4GXaefOoXt3ztw7d+7Qr3krFYnHdDYB
okhr166cPXPk3JVrZ44b+RGb1ziggk0evXT/rUPPPfokt4okmvUiBwdkSGMOONyc
A8413nQHDjbkmVeLIAgsMU024GQTzogkZjPNKZHssEctlDBhxCGJ4NEGInnggUiM
iRxyxm/TjQJFEVaUcUUWZWBxRRlFYlFGFY740Akt5bjCCCB/+PFHlVZeeWUjonRi
yy/86IMMLbXQcgstvZxZpppk/vJMQAAAOw==
---END_DATA---
%/
config.tasks.viewTabs = {
text: "editA",
tooltip: "Edit a specific tiddler",
content: "|width:18em;<<tiddler EditATiddler>>|"
};
config.backstageTasks.splice(config.backstageTasks.indexOf("save")+0,0,"viewTabs");
| source file:|{{{F:\TiddlyWiki\TW jQuery\TreeView\images\file.gif}}}|
| attached on:|31 May 2009 by YourName|
| embedded:|[[file.gif|file.gif]] - {{{type=image/gif, size=145 bytes, encoded=199 bytes}}}|
| local file:|/%LOCAL_LINK%/[[file:///F:/TiddlyWiki/TW jQuery/TreeView/images/file.gif|file:///F:/TiddlyWiki/TW jQuery/TreeView/images/file.gif]]|
| remote link:|/%REMOTE_LINK%/[[http://www.symbex.net.au/Wiki/images/file.gif|http://www.symbex.net.au/Wiki/images/file.gif]]|
image
<<<
usage: {{{[img[tooltip|file.gif]] or [img[tooltip|file.gif][link]]}}}
[img[tooltip|file.gif]]
<<<
/% DO NOT EDIT BELOW THIS POINT
---BEGIN_DATA---
image/gif;base64,
R0lGODlhDwAOALMAAGpsYoy3oamMQdS9fDmJdP////9tcH98XwAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAACH5BAEAAAUALAAAAAAPAA4AAAQ+sBRBK5VYiizH5l82eCBX
jCS2GayRhZOpvkVgHwWg0XKM4azCAaATZnA9pAQ3sAUIhOWxZ/xRlcKDdsuVRAAA
Ow==
---END_DATA---
%/
| source file:|{{{F:\TiddlyWiki\TW jQuery\TreeView\images\folder-closed.gif}}}|
| attached on:|4 June 2009 by YourName|
| embedded:|[[folder-closed.gif|folder-closed.gif]] - {{{type=image/gif, size=887 bytes, encoded=1202 bytes}}}|
| local file:|/%LOCAL_LINK%/[[file:///F:/TiddlyWiki/TW jQuery/TreeView/images/folder-closed.gif|file:///F:/TiddlyWiki/TW jQuery/TreeView/images/folder-closed.gif]]|
| remote link:|/%REMOTE_LINK%/[[http://www.symbex.net.au/Wiki/images/folder-closed.gif|http://www.symbex.net.au/Wiki/images/folder-closed.gif]]|
image
<<<
usage: {{{[img[tooltip|folder-closed.gif]] or [img[tooltip|folder-closed.gif][link]]}}}
[img[tooltip|folder-closed.gif]]
<<<
/% DO NOT EDIT BELOW THIS POINT
---BEGIN_DATA---
image/gif;base64,
R0lGODlhEAAOAPcAAJdaH+C6eP/inq1zLf/////Sg59oJMOHNAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAACH5BAEAAAQALAAAAAAQAA4AAAhUAAkIHEiwoMGDBw8oPIBw
4ACCDxEeEECxQIAACxUSZNiQo8CJFEOKBABRpEkBEQUOOCkyJQEDBWLKnGmAIICZ
OAuQHAhgQE6ZOwcaGEq0aMOjBAICADs=
---END_DATA---
%/
| source file:|{{{F:\TiddlyWiki\TW jQuery\TreeView\images\folder.gif}}}|
| attached on:|31 May 2009 by YourName|
| embedded:|[[folder.gif|folder.gif]] - {{{type=image/gif, size=141 bytes, encoded=190 bytes}}}|
| local file:|/%LOCAL_LINK%/[[file:///F:/TiddlyWiki/TW jQuery/TreeView/images/folder.gif|file:///F:/TiddlyWiki/TW jQuery/TreeView/images/folder.gif]]|
| remote link:|/%REMOTE_LINK%/[[http://www.symbex.net.au/Wiki/images/folder.gif|http://www.symbex.net.au/Wiki/images/folder.gif]]|
image
<<<
usage: {{{[img[tooltip|folder.gif]] or [img[tooltip|folder.gif][link]]}}}
[img[tooltip|folder.gif]]
<<<
/% DO NOT EDIT BELOW THIS POINT
---BEGIN_DATA---
image/gif;base64,
R0lGODlhEAAOALMAAJdaH+C6eP/inq1zLf/////Sg59oJMOHNAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAACH5BAEAAAQALAAAAAAQAA4AAAQ6kMhJq7336IPnoB92CGQR
BJtGcR0rjWQsA6A83HhODDEvx4WPoRAkGo8hQPGInAAGzCbFQK1aO1hCBAA7
---END_DATA---
%/
| source file:|{{{F:\TiddlyWiki\TWExperiments\jQuery\images\leftbackdo6.gif}}}|
| attached on:|31 May 2009 by YourName|
| embedded:|[[leftbackdo6.gif|leftbackdo6.gif]] - {{{type=image/gif, size=64 bytes, encoded=89 bytes}}}|
| local file:|/%LOCAL_LINK%/[[./images/leftbackdo6.gif|./images/leftbackdo6.gif]]|
| remote link:|/%REMOTE_LINK%/[[http://www.symbex.net.au/Wiki/images/leftbackdo6.gif|http://www.symbex.net.au/Wiki/images/leftbackdo6.gif]]|
image
<<<
usage: {{{[img[tooltip|leftbackdo6.gif]] or [img[tooltip|leftbackdo6.gif][link]]}}}
[img[tooltip|leftbackdo6.gif]]
<<<
/% DO NOT EDIT BELOW THIS POINT
---BEGIN_DATA---
image/gif;base64,
R0lGODlhbgACAIAAAHKOqgAzZiH5BAAAAAAALAAAAABuAAIAAAIXDIynyesNn4x0
2lqB3rz7D4biSJZmVwAAOw==
---END_DATA---
%/
| source file:|{{{F:\TiddlyWiki\TW jQuery\TreeView\images\leftbackdrkgreenqu9.jpg}}}|
| attached on:|1 June 2009 by YourName|
| embedded:|[[leftbackdrkgreenqu9.jpg|leftbackdrkgreenqu9.jpg]] - {{{type=image/jpeg, size=992 bytes, encoded=1344 bytes}}}|
| local file:|//none//|
| remote link:|/%REMOTE_LINK%/[[http://www.symbex.net.au/Wiki/images/leftbackdrkgreenqu9.jpg|http://www.symbex.net.au/Wiki/images/leftbackdrkgreenqu9.jpg]]|
image
<<<
usage: {{{[img[tooltip|leftbackdrkgreenqu9.jpg]] or [img[tooltip|leftbackdrkgreenqu9.jpg][link]]}}}
[img[tooltip|leftbackdrkgreenqu9.jpg]]
<<<
/% DO NOT EDIT BELOW THIS POINT
---BEGIN_DATA---
image/jpeg;base64,
/9j/4AAQSkZJRgABAQEASABIAAD/2wBDAAUDBAQEAwUEBAQFBQUGBwwIBwcHBw8L
CwkMEQ8SEhEPERETFhwXExQaFRERGCEYGh0dHx8fExciJCIeJBweHx7/2wBDAQUF
BQcGBw4ICA4eFBEUHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4e
Hh4eHh4eHh4eHh4eHh7/wAARCAACAG4DASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEA
AAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIh
MUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6
Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZ
mqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx
8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREA
AgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAV
YnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hp
anN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPE
xcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwCw
mnaem3ZY2q7cbcRKMY24xx28tP8AvhfQUJp2npt2WNqu3G3ESjGNuMcdvLT/AL4X
0FFFfMn5+Cadp6bdljartxtxEoxjbjHHby0/74X0FCadp6bdljartxtxEoxjbjHH
by0/74X0FFFAAmnaem3ZY2q7cbcRKMY24xx28tP++F9BQmnaem3ZY2q7cbcRKMY2
4xx28tP++F9BRRQAJp2npt2WNqu3G3ESjGNuMcdvLT/vhfQUJp2npt2WNqu3G3ES
jGNuMcdvLT/vhfQUUUACadp6bdljartxtxEoxjbjHHby0/74X0FCadp6bdljartx
txEoxjbjHHby0/74X0FFFAAmnaem3ZY2q7cbcRKMY24xx28tP++F9BQmnaem3ZY2
q7cbcRKMY24xx28tP++F9BRRQAJp2npt2WNqu3G3ESjGNuMcdvLT/vhfQU63srO3
YNb2kETKu0FIwpAwoxx2wiD6KPQUUVnV/hy9GJ7H/9k=
---END_DATA---
%/
| source file:|{{{F:\TiddlyWiki\TWExperiments\jQuery\images\mainmenugray7ef.gif}}}|
| attached on:|31 May 2009 by YourName|
| embedded:|[[mainmenugray7ef.gif|mainmenugray7ef.gif]] - {{{type=image/gif, size=105 bytes, encoded=142 bytes}}}|
| local file:|/%LOCAL_LINK%/[[./images/mainmenugray7ef.gif|./images/mainmenugray7ef.gif]]|
| remote link:|/%REMOTE_LINK%/[[http://www.symbex.net.au/Wiki/images/mainmenugray7ef.gif|http://www.symbex.net.au/Wiki/images/mainmenugray7ef.gif]]|
image
<<<
usage: {{{[img[tooltip|mainmenugray7ef.gif]] or [img[tooltip|mainmenugray7ef.gif][link]]}}}
[img[tooltip|mainmenugray7ef.gif]]
<<<
/% DO NOT EDIT BELOW THIS POINT
---BEGIN_DATA---
image/gif;base64,
R0lGODlhAQBkAPMPALa2trm5ub29vb+/v8TExMbGxsvLy9HR0dfX19vb29zc3OHh
4efn5+vr6+zs7O7u7iH5BAAAAAAALAAAAAABAGQAAAQW8D3X2FIJHVPIEAEgjmRp
nmiqrqwZAQA7
---END_DATA---
%/
| source file:|{{{F:\TiddlyWiki\TWExperiments\jQuery\images\minus.gif}}}|
| attached on:|31 May 2009 by YourName|
| embedded:|[[minus.gif|minus.gif]] - {{{type=image/gif, size=837 bytes, encoded=1133 bytes}}}|
| local file:|/%LOCAL_LINK%/[[./images/minus.gif|./images/minus.gif]]|
| remote link:|/%REMOTE_LINK%/[[http://www.symbex.net.au/Wiki/images/minus.gif|http://www.symbex.net.au/Wiki/images/minus.gif]]|
image
<<<
usage: {{{[img[tooltip|minus.gif]] or [img[tooltip|minus.gif][link]]}}}
[img[tooltip|minus.gif]]
<<<
/% DO NOT EDIT BELOW THIS POINT
---BEGIN_DATA---
image/gif;base64,
R0lGODlhCQAJAPcAAAAAAICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAACH5BAEAAP8ALAAAAAAJAAkAAAgiAAMIHEjwn8GD/wQiPKhw
YcIA/wBIlPjQYUWHDRcS3BggIAA7
---END_DATA---
%/
| source file:|{{{F:\TiddlyWiki\TWExperiments\jQuery\images\navbargrayhw1.gif}}}|
| attached on:|31 May 2009 by YourName|
| embedded:|[[navbargrayhw1.gif|navbargrayhw1.gif]] - {{{type=image/gif, size=1012 bytes, encoded=1373 bytes}}}|
| local file:|/%LOCAL_LINK%/[[./images/navbargrayhw1.gif|./images/navbargrayhw1.gif]]|
| remote link:|/%REMOTE_LINK%/[[http://www.symbex.net.au/Wiki/images/navbargrayhw1.gif|http://www.symbex.net.au/Wiki/images/navbargrayhw1.gif]]|
image
<<<
usage: {{{[img[tooltip|navbargrayhw1.gif]] or [img[tooltip|navbargrayhw1.gif][link]]}}}
[img[tooltip|navbargrayhw1.gif]]
<<<
/% DO NOT EDIT BELOW THIS POINT
---BEGIN_DATA---
image/gif;base64,
R0lGODlhCgA8APcAAL29zr3GzsbGzsbG1sbO1s7O1s7W3tbW3tbe3t7e597n5+fn
7+fv7+/v7+/v9+/39/f39/f/////////////////////////////////////////
////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////
/////////////////ywAAAAACgA8AAAI2QABCBxIkEEDBggTIkzAsKFDAgUIQJwY
MYDFixYBYNxoUUAAAR5BfhQwgABJAgMEoFQpsaVJiRFjxoRYwECBmjhrGthpk+fO
A0CDCkVwAAFRo0UPOFyKIIECpwyfSp1KdYHVq1gXMLC6davWgw3CGgTbwEFYs2XP
PjC7lq0DCHDjyp1Lt67cCHDx5rXLt6/fv4ADCx5MuDBfvXohJFZcd3Hix3YhM947
Fy9ixnglQNC8GS5nzHEzd+4surRnxpozi07dWTNr1qtby3Y9WzFtCa5dq74dAffm
gAAAOw==
---END_DATA---
%/
| source file:|{{{F:\TiddlyWiki\TW Help\ScienceImages\navbargrayhw1.png}}}|
| attached on:|26 May 2009 by YourName|
| embedded:|[[navbargrayhw1.png|navbargrayhw1.png]] - {{{type=image/png, size=303 bytes, encoded=410 bytes}}}|
| local file:|//none//|
| remote link:|//none//|
image
<<<
usage: {{{[img[tooltip|navbargrayhw1.png]] or [img[tooltip|navbargrayhw1.png][link]]}}}
[img[tooltip|navbargrayhw1.png]]
<<<
/% DO NOT EDIT BELOW THIS POINT
---BEGIN_DATA---
image/png;base64,
iVBORw0KGgoAAAANSUhEUgAAAAoAAAA8CAIAAADQc7xaAAAABmJLR0QA/wD/AP+g
vaeTAAAA5ElEQVR42u2TS67DIAxF7wHvfz0ddd699KO+fqbugDYlQKBSVOkNmgGK
fLDvxQY2252WPw6ncwfb+e/Ww/tjN/tyvfdwDKGHQx/HuAqPiscVxW1dtsX/am2k
/c2JDa4D4O5AAVKwlyrJpt3TkpcwuUtpUVVfwbvFB9o/3MYMJgZyh3JcLsF7oIhq
XuIDa7T0yZw3OW/nZFvyH1PyTAncJRRe0s3zYxliLu2TNkveTJWj7N7LhPCGNC9r
C7aeT1C4PJWo023SrbRBCs9RUfIUtLJbc+uNnudbTVnT58lOug60TpaCD9FINRTx
kClXAAAAAElFTkSuQmCC
---END_DATA---
%/
| source file:|{{{F:\TiddlyWiki\TW jQuery\TreeView\images\navbargreenhw1.gif}}}|
| attached on:|1 June 2009 by YourName|
| embedded:|[[navbargreenhw1.gif|navbargreenhw1.gif]] - {{{type=image/gif, size=966 bytes, encoded=1308 bytes}}}|
| local file:|//none//|
| remote link:|/%REMOTE_LINK%/[[htttp://www.symbex.net.ai/Wiki/images/navbargreenhw1.gif|htttp://www.symbex.net.ai/Wiki/images/navbargreenhw1.gif]]|
image
<<<
usage: {{{[img[tooltip|navbargreenhw1.gif]] or [img[tooltip|navbargreenhw1.gif][link]]}}}
[img[tooltip|navbargreenhw1.gif]]
<<<
/% DO NOT EDIT BELOW THIS POINT
---BEGIN_DATA---
image/gif;base64,
R0lGODlhCgA8APcAAK33nLX/pb3/pb3/rcb/rcb/tc7/tdb/tdb/vd7/vd7/xuf/
xu//xu//zv//////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////
/////////////////ywAAAAACgA8AAAIqwABCBxIMEECBQgOJkRooKHDhwMERJwY
IGIAABczYsQYoKPHjyBDigwgsWLJiRMlqkQ5oKXLlgRiypQ5gECBmDdt4tR5s2eB
h0CDAj2AwEBRBAeMGkWKgGnTp1ChGpxKdaoCg1cPal2wdSvXBWAVgE0AtqzZs2jT
ql3Ltq3bt3Djyp1Lt67du3jzzmUAlu8Cv2z5Ci7rt0FZw4T7Kk68ALFhvo//mh0c
mUFAAAA7
---END_DATA---
%/
| source file:|{{{F:\TiddlyWiki\TWExperiments\jQuery\images\navbarred.gif}}}|
| attached on:|31 May 2009 by YourName|
| embedded:|[[navbarred.gif|navbarred.gif]] - {{{type=image/gif, size=984 bytes, encoded=1332 bytes}}}|
| local file:|/%LOCAL_LINK%/[[./images/navbarred.gif|./images/navbarred.gif]]|
| remote link:|/%REMOTE_LINK%/[[http://www.symbex.net.au/Wiki/images/navbarred.gif|http://www.symbex.net.au/Wiki/images/navbarred.gif]]|
image
<<<
usage: {{{[img[tooltip|navbarred.gif]] or [img[tooltip|navbarred.gif][link]]}}}
[img[tooltip|navbarred.gif]]
<<<
/% DO NOT EDIT BELOW THIS POINT
---BEGIN_DATA---
image/gif;base64,
R0lGODlhCgA8APcAAP+9zv/Gzv/G1v/O1v/W3v/e3v/e5//n5//n7//v7//v9//3
9///////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////
/////////////////ywAAAAACgA8AAAIvQABCBxIMIHBgwgNKFzIcIDDhxADSJwo
EQDFixgxChgQYKOAAAM+QnwIcqTJAQQcpkyJkoDLlS9jynRZgECBmjdtEmDIs4CB
Az8VAh1KtCiCA0cRJEWKIIFSp06bIpzaVEECq1ivKlhwletWqwvCil2wdazZs2gX
MAi7dm3at3Djyp1Lt67du3jhunWrdixfv4DZiv0buK/hw4MNtz28WHDjvYL7MlhM
2bFktZUhZ8Z8ebPnzJQnY24bekFAAAA7
---END_DATA---
%/
| source file:|{{{F:\TiddlyWiki\TWExperiments\jQuery\images\openbook.gif}}}|
| attached on:|31 May 2009 by YourName|
| embedded:|[[openbook.gif|openbook.gif]] - {{{type=image/gif, size=397 bytes, encoded=540 bytes}}}|
| local file:|/%LOCAL_LINK%/[[./images/openbook.gif|./images/openbook.gif]]|
| remote link:|/%REMOTE_LINK%/[[http://www.symbex.net.au/Wiki/images/openbook.gif|http://www.symbex.net.au/Wiki/images/openbook.gif]]|
image
<<<
usage: {{{[img[tooltip|openbook.gif]] or [img[tooltip|openbook.gif][link]]}}}
[img[tooltip|openbook.gif]]
<<<
/% DO NOT EDIT BELOW THIS POINT
---BEGIN_DATA---
image/gif;base64,
R0lGODlhEAAQANU5AKat0evq6d7d3Zy12tji9pKp16WkuXZ/q7O2xo2MjLi4qoOc
zby8rLS0s8G/u7i2prKxr6WnpJKp2MbU8cTEw7/P772+rFx6tnCLws/b8+bl5cPG
09fh9b/Arru4uK+smfPy6Tlcoqyxr9HQzq2yss/b9LK0p8bT8XCLw4Oczv//+0lq
q8jIyD5Uf2aAtMrO4XRzcy5Sm6WkoZ6z3tnZ2Ts7O0RERMPDw////////wAAAAAA
AAAAAAAAAAAAAAAAACH5BAEAADkALAAAAAAQABAAAAaqwBoqRywajbUU7EgkJAzF
WqGwLN5gCcABmqvNCJ7qNSL4bA63rqSEI8GuAhzugUAUbrXFSS6CxeUmLwEzNjUY
FXI0DjRyOAovNIQ1FxOJECyNDJCSKxlyIzKYchabhSEcOBoUoY0dpTUxBDgCDaxy
LwCDNjctMQMBNDIvOAEAAC8ghDm8vsEsMgChNCrKy70DMjIDLtzc1dYuMS4tvTHm
LTZGNzbsN+7v7kEAOw==
---END_DATA---
%/
~TWT-Treeview has been inspired by the Treeview plugin by [[MarkS|http://treeview.tiddlyspot.com/]] and the interest shown to it. While having moved well beyond this it can trace its original legacy back to
| source file:|{{{F:\TiddlyWiki\TWExperiments\jQuery\images\treeview-black-line.gif}}}|
| attached on:|31 May 2009 by YourName|
| embedded:|[[treeview-black-line.gif|treeview-black-line.gif]] - {{{type=image/gif, size=1877 bytes, encoded=2543 bytes}}}|
| local file:|/%LOCAL_LINK%/[[./images/treeview-black-line.gif|./images/treeview-black-line.gif]]|
| remote link:|/%REMOTE_LINK%/[[http://www.symbex.net.au/Wiki/images/treeview-black-line.gif|http://www.symbex.net.au/Wiki/images/treeview-black-line.gif]]|
image
<<<
usage: {{{[img[tooltip|treeview-black-line.gif]] or [img[tooltip|treeview-black-line.gif][link]]}}}
[img[tooltip|treeview-black-line.gif]]
<<<
/% DO NOT EDIT BELOW THIS POINT
---BEGIN_DATA---
image/gif;base64,
R0lGODlhEADwBvcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAACH5BAEAAP8ALAAAAAAQAPAGAAj/AP8JHPgPAMGDCA0iXFiQ
4UKFDglCjChwIkWLETE61MgQgMePHx9SlDhyIEeRJRumPJkwpcqSLA/GJLnS5UyT
NnPW3AlTZ0+eI29W9BmU6EWjGZFuVNqRKcqfUIsCPTo1adWlV5tmfSo1KlWvVsFi
FauVLNevXdOiXRtWbVu2Y93GhVtWbl26Z9/qnbv3bt+8fAP7FQx4sOHCiFtuVWyW
sd3EMp06xjv5b2XClw9nhkyzceTFnz13fry5dGjSpymntrwac2vNrznjBD1adW3W
t13nhr1b9lDas0UHR93bdPHYxofbVo6buW7nvKH7fkncpfXr2LNr3869e/TfwsFX
/xe/nHxz88/Rf6denv159+nhrxcqfzr9+5KR6z/OX3py9fbl1x+A/9VXIH7AEbif
fwsqOKCBDUL4IILhScjghAJeqKGDG1rI4YcehkjheCJmCOKI7aH4norxsTifiSUm
GGOFLgYoY40HwohjhDtieKOOQP4oJI1BEjkkiT12mOSJRSLZZIpPrhhli1O+eCSU
V0qZJZVbWmnkl052aSOYWJKppZlcoullmGqOyeabZcJ5ppxp0rlmnHjOmWede96p
5598AupnoIQOaqibfSIqqKKFMnpojmJC2qakdjpqKaWJYrqopo1y+iiPVV4KaqSj
TlpqpZ6K6qOpq6J6aqavbv8aa6ezftoqrLfKmiutu9qqZKipBlurqr+S2iuxTBpb
LKvLunqssM8OC22zuFKrq7W8Yutrssxy66y2yM74rbfVknutudmiu6245bJ7rrvp
wrvukvKGS++9wEqrb7T8gjutuvbm2y/A/9ZbML7KEryvvwsrPLDBDUP8MMLdSszw
xAJfrLHDG1vM8cceh0zxuCJnDPLI7aL8rsrxsjyvySUnHHPFLgcsc80Hw4xzxDtj
fLPOQP8sNM1BEz00yT13nPTJRSPddMpPrxx1y1O/fDTUV0udNdVbW2301053bTPY
WJOttdlco+112GqPzfbbZcN9ttxp07123HjPnXfde9//rffffAPud+CED264230j
LrjihTN+eM5iQ9625HY7bjnliWO+uOaNc/44z1VfDnrko09eeuWei+6z6aujfnrm
r28ee+ezf9467LfLnjvtu9uudOipB1+76r+T3jvxTBtfPOvLu3688M8PD33zuFOv
u/W8Y+978sxz77z2yM/8vffVk3+9+dmjv7345bN/vvvpw7/+0vKHT//9wEuvf/T8
gz+9+vbLX/8A+L/6FRB/yiPg/vy3QAUO0IANhOADEdg9CTJwggK8oAYduEELcvCD
HgwhBccnwgyCcITtQ+H7VBg/Fs7PhCVMYAwr6MIAyrCGB4QhDiO4QwzeUIdA/KEQ
MmkYRCIOkYQ97GAST1hEJDYxhU9cYRRbOMUXHhGKV5RiFqm4RSsa8YtO7KINaQgS
kAQEADs=
---END_DATA---
%/
| source file:|{{{F:\TiddlyWiki\TWExperiments\jQuery\images\treeview-black.gif}}}|
| attached on:|31 May 2009 by YourName|
| embedded:|[[treeview-black.gif|treeview-black.gif]] - {{{type=image/gif, size=1216 bytes, encoded=1649 bytes}}}|
| local file:|/%LOCAL_LINK%/[[./images/treeview-black.gif|./images/treeview-black.gif]]|
| remote link:|/%REMOTE_LINK%/[[http://www.symbex.net.au/Wiki/images/treeview-black.gif|http://www.symbex.net.au/Wiki/images/treeview-black.gif]]|
image
<<<
usage: {{{[img[tooltip|treeview-black.gif]] or [img[tooltip|treeview-black.gif][link]]}}}
[img[tooltip|treeview-black.gif]]
<<<
/% DO NOT EDIT BELOW THIS POINT
---BEGIN_DATA---
image/gif;base64,
R0lGODlhYACFAPcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAACH5BAEAAP8ALAAAAABgAIUAAAj/AP8JHEiwoMGDCBMqXMjw
H4CHABRCbEixosWLBCNi3Mixo0WNHkOKFAlypMmTKFOqPAmx5cOVMEkeLBmz5seB
IGna3LkwJ06eQBlGdOmwZdCjGX8K1In0qM+lTaNCNchU6k6XRq1araoVKdeuQb+C
5Sl2rM2yZmOiTRuS6Vq2Hd3CxThR4kuqcy++Rbg3b9+8gAMLBou17mCTcg8jnql4
Md7GMokShbwxMeW4jC9jfqy5cuG/nTmHljl6JOjSolFzPK1aaWuhmV/3jB3aMN+7
BVmb1e0QNW/ZwIMLF/z5N2TLw3O7Nt74ae/keCVnhe6cueLq0FNPzY7zM/fv4MOL
nR+/m7z21tNn4gaOnHv77O+p0zb/nHxx8fGTYw+/H/xQo5PJt511h/X3XX7D3Uff
ggw26GB9CxLYmYS7racehWNhSJmGxz3o4YcK+jcffCMKqBx/RU0UoH4lsnieiyf6
592HNNZoY20Octicfhbm1qOJEeYoZIM6BhbigS0mmKRwCDKZ4ksrKvmilDEiOSWT
M96o5ZZcdunll2AaFBAAOw==
---END_DATA---
%/
| source file:|{{{F:\TiddlyWiki\TWExperiments\jQuery\images\treeview-default-line.gif}}}|
| attached on:|31 May 2009 by YourName|
| embedded:|[[treeview-default-line.gif|treeview-default-line.gif]] - {{{type=image/gif, size=1993 bytes, encoded=2701 bytes}}}|
| local file:|/%LOCAL_LINK%/[[./images/treeview-default-line.gif|./images/treeview-default-line.gif]]|
| remote link:|/%REMOTE_LINK%/[[http://www.symbex.net.au/Wiki/images/treeview-default-line.gif|http://www.symbex.net.au/Wiki/images/treeview-default-line.gif]]|
image
<<<
usage: {{{[img[tooltip|treeview-default-line.gif]] or [img[tooltip|treeview-default-line.gif][link]]}}}
[img[tooltip|treeview-default-line.gif]]
<<<
/% DO NOT EDIT BELOW THIS POINT
---BEGIN_DATA---
image/gif;base64,
R0lGODlhEADwBvcAAAAAAICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAACH5BAEAAP8ALAAAAAAQAPAGAAj/AP8JHEiwoEGBAQ4qXHgw
IcOHCx1CnEhQIkWKCTP+03ixYceLFj8yDClSIcmSBk+irLhyZMuIL03G9DizoMqX
N1vmXLkTZc+SP0UG/Ti0Y1GQNW0mZbkUYVOnT49ifLqRqtSJVyFmfbjVZVSrYL+K
bdoV5tilZWWeTZqWJtmwb9fWbJsSLlq7bPHO1TuTrlK5ffnG9Ms0ruG7gAcLxrlY
Z2Oej31GBjpZaGWil6lq3sy5M9fMSBMzFu2YNGTTklFTVm2ZNWbXRkFPhR36cF7a
s23vxY1Vdm/eWn0HB/6ZuFfdgY2bRa5YuVrmo6GXln6aemrrq7G31v6ae2znbhF7
/68tvvzt8bnN70b/m/1w98XhH1efXP5y+s3tP8cfnf90/9UBeJ2A2RG4nYHdIfid
fuGdpyB5Dka43oPpSVgfhe1h+J6G8XE4n4X5eXgfiP2R+J+JAaI4oIoFsnigiwnC
uKCI+8kI4YQ2VojjjhfmmKGPGwLZoZAf8hgikSMaWaKSJzKZopMrQtmilC9SGaOV
MyJZI5Y39siljl6GeeSXP5IZpJlDolmkmEuy2aSbT8IZpZxT0lmlnVfimaWaSerZ
5Zh+ggnooG0S+qahcSI6p6J1Mnqno3lCumegZVJ6pqVpYrqmpH8W6umhnyYa6qKj
Nlrqo6dGmuqknAq6aqegxv8qqqyk0mqqrajiqqqurL7qKq+wzipsrcPeWmyux+6a
bK/A/rpssMRGa6y0yFKrrLXMPussttBO6221314bbrbcbjtut+CmK6665J5rLrvo
ritvu/C+O2+89N5rb7784uvvvv9W2qrAvhLcrMHaIlyuwu4yXK/D+kLcL8AUSxzw
pQNjXLDGB3OcsMcLg9ywyA+THLHJE1tcMcoXZ5qxyxvD3LHMH9Mcss0j41yyzifz
nDLLK/vc8qYxEz2z0TUjfbPSOTO9s9M9Q/2z0EFLPXSfL1tdNdZFc32010mDvbTY
TZP9tNlRoz211iq3DbTbVMPN9tt0x1333Hbnjffeal//vaWmfW/9d9aBy1343Yfr
nTjfg3fd+NePhx352JOXXfnZl6ed+dqLd7653w3y+bngoQM+uuGnI5664qszXjrh
rXv+uuOzQ1675LdTnrvlu2Peu+a/cx778MGDXhd4xzOYPI3Fk768ls2jHr3q07Ne
vevPi3697Nmbvj3x3cP+/fjh016+7efjnr7u6/Pevu/vAx+/8OT/pbz9zM9vPP7Q
6+88/9rzn/QESD0CWs+A2AOg9xDIPQWKj4Hgc6D5JIg+CqrPguzDoPs0CD8Oys+D
9INg/QqTPxDuj4T9M+H/UBhAFQ7QhQWE4QFlmEAWLpCGDbThA3EYQR1O0IcVBOIF
poWYQSJu0IgdROIHlRhCHo5wIISBonBmyMQTShF5ThShFrPIxSqu8Ir38+ILxRhD
MlIRjCU0Yw3RmEI15pCNLXRjD+F4Qzk+ESphpOMO7bhFPnZRjz8EZBAFOURCFtGQ
R0RkEhW5REY20Y+QdKQV8ZhGSX6Rkm205Bg1WUZOnhGTcfTkGkFZR1G+kZR7NOUc
URlIVg7SlYWE5SFlmUhaLtIpGslIQAAAOw==
---END_DATA---
%/
| source file:|{{{F:\TiddlyWiki\TWExperiments\jQuery\images\treeview-default.gif}}}|
| attached on:|31 May 2009 by YourName|
| embedded:|[[treeview-default.gif|treeview-default.gif]] - {{{type=image/gif, size=1222 bytes, encoded=1657 bytes}}}|
| local file:|/%LOCAL_LINK%/[[./images/treeview-default.gif|./images/treeview-default.gif]]|
| remote link:|/%REMOTE_LINK%/[[http://www.symbex.net.au/Wiki/images/treeview-default.gif|http://www.symbex.net.au/Wiki/images/treeview-default.gif]]|
image
<<<
usage: {{{[img[tooltip|treeview-default.gif]] or [img[tooltip|treeview-default.gif][link]]}}}
[img[tooltip|treeview-default.gif]]
<<<
/% DO NOT EDIT BELOW THIS POINT
---BEGIN_DATA---
image/gif;base64,
R0lGODlhYACFAPcAAAAAAICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAACH5BAEAAP8ALAAAAABgAIUAAAj/AP8JHEiwoMGDCBMqXMjw
H4CHABRCbEixosWLBCNi3Mixo0WNHkOKFAlypMmTKFOqPBmgpUuXK2OKDHCQpsyb
G206HKgTp8+GOkH2/EkUIU2ID//RXFq0KcGgPJ1KfTpQ6NSrQwVmvfrzpVeuYMOK
VTq2rFmnW8+qXTsyLVuSb4uWjBq34USJSetynIvRrd6qfwMLHszV60vCIbf6RcxQ
MeOOjh/ndIiULFPJFCNjtqh5c+aanjkbbhm6tNTFplOvRK26tUnWpvm6Xigbdty7
CXGrls3ZM+/ZwIMLjzua9HC6BW2Hhqr1OHKrzskijchU+WPmZKNjt7658/Di3KOL
ox9Pvrx5ir+jp8dcOXfe1uuP1xYff/j88/iVFhfvXfh2/oA1px1lE1X3XYDZOfff
gAaFJxl4+UUo4YTO1SechcFhSJhuB3EYW4QazhYihSS2BiGDyQHYoIopDjidZQkC
119wM8oImnb7lajjjjz+NSJ8IALnYUbv9aiag0YyhmSSf52o4I1ProgiVS5WZqB/
UB5X42xbuuYkk2CGKeaYZJY5W0AAOw==
---END_DATA---
%/
| source file:|{{{F:\TiddlyWiki\TWExperiments\jQuery\images\treeview-famfamfam-line.gif}}}|
| attached on:|31 May 2009 by YourName|
| embedded:|[[treeview-famfamfam-line.gif|treeview-famfamfam-line.gif]] - {{{type=image/gif, size=807 bytes, encoded=1092 bytes}}}|
| local file:|/%LOCAL_LINK%/[[./images/treeview-famfamfam-line.gif|./images/treeview-famfamfam-line.gif]]|
| remote link:|/%REMOTE_LINK%/[[http://www.symbex.net.au/Wiki/images/treeview-famfamfam-line.gif|http://www.symbex.net.au/Wiki/images/treeview-famfamfam-line.gif]]|
image
<<<
usage: {{{[img[tooltip|treeview-famfamfam-line.gif]] or [img[tooltip|treeview-famfamfam-line.gif][link]]}}}
[img[tooltip|treeview-famfamfam-line.gif]]
<<<
/% DO NOT EDIT BELOW THIS POINT
---BEGIN_DATA---
image/gif;base64,
R0lGODlhAQABAPcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAACH5BAEAAP8ALAAAAAABAAEAAAgEAP8FBAA7
---END_DATA---
%/
| source file:|{{{F:\TiddlyWiki\TWExperiments\jQuery\images\treeview-famfamfam.gif}}}|
| attached on:|31 May 2009 by YourName|
| embedded:|[[treeview-famfamfam.gif|treeview-famfamfam.gif]] - {{{type=image/gif, size=1280 bytes, encoded=1734 bytes}}}|
| local file:|/%LOCAL_LINK%/[[./images/treeview-famfamfam.gif|./images/treeview-famfamfam.gif]]|
| remote link:|/%REMOTE_LINK%/[[http://www.symbex.net.au/Wiki/images/treeview-famfamfam.gif|http://www.symbex.net.au/Wiki/images/treeview-famfamfam.gif]]|
image
<<<
usage: {{{[img[tooltip|treeview-famfamfam.gif]] or [img[tooltip|treeview-famfamfam.gif][link]]}}}
[img[tooltip|treeview-famfamfam.gif]]
<<<
/% DO NOT EDIT BELOW THIS POINT
---BEGIN_DATA---
image/gif;base64,
R0lGODlhYACFAPcAAAAAADFrGDlzIUJzIVKEMXOcY71CAL1KANZaCMZaId5rIfdz
APd7GIS1Y4y9Y5S1e++EQvetc5S1jKW9nLXWlLXGrbnSpN6lhOetjOe1lO+1lNbn
vf/Stf///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAACH5BAEAAP8ALAAAAABgAIUAAAj/AP8JHEiwoMGDCBMqXMjw
H4CHABRCbEixosWLBCNi3Mixo0WNHkOKFAlypMmTKFOqXMmypcuXMGPKnCnQQoEC
BCbQ3JmwQgMKGxwQeMCzKEECFCh0cOBAgNGnSDtIpRDgqdEBDhp0aNDUalEJBBxQ
EErUK08JAwIMkGC2rdu3cOPKnUu3Ls2SdlvizVtxosSHfDfuDYxyMOHDiBMrXsy4
sdsMCQwkuOCYYwYFGjhEUJChMsYEGiAwYAAhgeeLBjhI7cDAwGmLCSIwWLAAgenX
FDEkmI3gAGXcFCFL/g28uPHjyJMrl7icoeHKfhNGB/68ucDq1rNr3869u1WbOHVy
3fcJlCx3pEqZOt0edWrV7Vi1cl2vHaxY89zRqmXrvb///wAGOBB2zRG4GETVTYeb
gcoxmJyDyEEo4IQUHgdeTt2RF9RQ5yW1VFfsKeUed/FtBWJ9YY3FYX5prVXhizDG
eJiExtFYnI18KWiQjqfhuCCAPsoo5JBE8iTcZN1dltlmnW0Hmmik3aZdaqu1xl1s
s9UmZXa68eZbkpEhWeSYZJapUpA9AhkhYNKxaeabcMYp55yMHUmcdkpqxtmVoY1W
GndUSmWlk7LRZht3Xdb2JXd20unoo5BGKumkBwUEADs=
---END_DATA---
%/
| source file:|{{{F:\TiddlyWiki\TW jQuery\TreeView\images\treeview-gold-line.gif}}}|
| attached on:|4 June 2009 by YourName|
| embedded:|[[treeview-gold-line.gif|treeview-gold-line.gif]] - {{{type=image/gif, size=1878 bytes, encoded=2543 bytes}}}|
| local file:|/%LOCAL_LINK%/[[file:///F:/TiddlyWiki/TW jQuery/TreeView/images/treeview-gold-line.gif|file:///F:/TiddlyWiki/TW jQuery/TreeView/images/treeview-gold-line.gif]]|
| remote link:|/%REMOTE_LINK%/[[http://www.symbex.net.au/Wiki/images/treeview-gold-line.gif|http://www.symbex.net.au/Wiki//images/treeview-gold-line.gif]]|
image
<<<
usage: {{{[img[tooltip|treeview-gold-line.gif]] or [img[tooltip|treeview-gold-line.gif][link]]}}}
[img[tooltip|treeview-gold-line.gif]]
<<<
/% DO NOT EDIT BELOW THIS POINT
---BEGIN_DATA---
image/gif;base64,
R0lGODlhEADwBvcAAAAAAPdzc///1v//////////////////////////////////
////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////
/////////////////yH5BAEAAAAALAAAAAAQAPAGAAj+AAEIHAhAAMGDCA0iXFiQ
4UKFDglCjChwIkWLETE61MhQgMePHx9SlDhyIEeRJRumPJkwpcqSLA/GJLnS5UyT
NnPW3AlTZ0+eI29W9BmU6EWjGZFuVNqRKcqfUIsCPTo1adWlV5tmfSo1KlWvVsFi
FauVLNevXdOiXRtWbVu2Y93GhVtWbl26Z9/qnbv3bt+8fAP7FQx4sOHCiFtuVWyW
sd3EMp06xjv5b2XClw9nhkyzceTFnz13fry5dGjSpymntrwac2vNrznjBD1adW3W
t13nhr1b9lDas0UHR93bdPHYxofbVo6buW7nvKH7fkncpfXr2LNr3869e/TfwsH+
Vxe/nHxz88/Rf6denv159+nhrxcqfzr9+5KR6z/OX3py9fbl1x+A/9VXIH7AEbif
fwsqOKCBDUL4IILhScjghAJeqKGDG1rI4YcehkjheCJmCOKI7aH4norxsTifiSUm
GGOFLgYoY40HwohjhDtieKOOQP4oJI1BEjkkiT12mOSJRSLZZIpPrhhli1O+eCSU
V0qZJZVbWmnkl052aSOYWJKppZlcoullmGqOyeabZcJ5ppxp0rlmnHjOmWede96p
5598AupnoIQOaqibfSIqqKKFMnpojmJC2qakdjpqKaWJYrqopo1y+iiPVV4KaqSj
TlpqpZ6K6qOpq6J6aqb+r24aa6ezftoqrLfKmiutu9qqZKipBlurqr+S2iuxTBpb
LKvLunqssM8OC22zuFKrq7W8Yutrssxy66y2yM74rbfVknutudmiu6245bJ7rrvp
wrvukvKGS++9wEqrb7T8gjutuvbm2y/A/9ZbML7KEryvvwsrPLDBDUP8MMLdSszw
xAJfrLHDG1vM8cceh0zxuCJnDPLI7aL8rsrxsjyvySUnHHPFLgcsc80Hw4xzxDtj
fLPOQP8sNM1BEz00yT13nPTJRSPddMpPrxx1y1O/fDTUV0udNdVbW2301053bTPY
WJOttdlco+112GqPzfbbZcN9ttxp07123HjPnXf+3XvfrffffAPud+CED264230j
LrjihTN+eM5iQ9625HY7bjnliWO+uOaNc/44z1VfDnrko09eeuWei+6z6aujfnrm
r28ee+ezf9467LfLnjvtu9uudOipB1+76r+T3jvxTBtfPOvLu3688M8PD33zuFOv
u/W8Y+978sxz77z2yM/8vffVk3+9+dmjv7345bN/vvvpw7/+0vKHT//9wEuvf/T8
gz+9+vbLX/8A+L/6FRB/yiPg/vy3QAUO0IANhOADEdg9CTJwggK8oAYduEELcvCD
HgwhBccnwgyCcITtQ+H7VBg/Fs7PhCVMYAwr6MIAyrCGB4QhDiO4QwzeUIc3QPyh
EGkYRCIOkYQ97GAST1hEJDYxhU9cYRRbOMUXHhGKV5RiFqm4RSsa8YtO7KINaQgS
kAQEAAA7
---END_DATA---
%/
| source file:|{{{F:\TiddlyWiki\TW jQuery\TreeView\images\treeview-gold.gif}}}|
| attached on:|5 June 2009 by YourName|
| embedded:|[[treeview-gold.gif|treeview-gold.gif]] - {{{type=image/gif, size=1179 bytes, encoded=1596 bytes}}}|
| local file:|//none//|
| remote link:|/%REMOTE_LINK%/[[http://www.symbex.net.au/Wiki/images/treeview-gold.gif|http://www.symbex.net.au/Wiki/images/treeview-gold.gif]]|
image
<<<
usage: {{{[img[tooltip|treeview-gold.gif]] or [img[tooltip|treeview-gold.gif][link]]}}}
[img[tooltip|treeview-gold.gif]]
<<<
/% DO NOT EDIT BELOW THIS POINT
---BEGIN_DATA---
image/gif;base64,
R0lGODlhYACFAPcAAAAAAP//1v//////////////////////////////////////
////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////
/////////////////yH5BAEAAAAALAAAAABgAIUAAAj+AAEIHEiwoMGDCBMqXMiw
ocOHECNKnEixosWLGDNq3Mixo8ePIEMKDECyZEmRKCUGOLgypcuGLQHEjPmyJsuB
M23qNLgygICTJmnudJlz5NCjRWUeHSrU6FKdQU0+Xdp06s6qVm1izfpyK9eUXr+K
DCsWJNmyHs+i5ah2rca2buPKnUtXbtSTdTNWhZs34d6+GP8CtthTgOGeUgdHFKx4
IuPGi29CVnmX7+SCli9L1kyY88XMnnGGrgh6dOnQpz2n5rx6tOvXsGNzrdw672PZ
op0qxY05927eon0CTYw7ae26xoETvM2btvLn0KNLn069uvWvxyFnb7xdcffB3+l5
OofOvLjv8GuTk5f5k6RM4rLVP5evvHz8ytfz69/Pv7///wAGKOCABJqF33o8RWdf
bAvCVthh7+FlXoII9lbhcgoeWOCGHHbo4YcgOqgferaNaCJ14823WX0rAtfga4i1
F6F7zbVYI4Uq4lifhiH26OOPQAYppEsBAQA7
---END_DATA---
%/
| source file:|{{{F:\TiddlyWiki\TWExperiments\jQuery\images\treeview-gray-line.gif}}}|
| attached on:|31 May 2009 by YourName|
| embedded:|[[treeview-gray-line.gif|treeview-gray-line.gif]] - {{{type=image/gif, size=1877 bytes, encoded=2543 bytes}}}|
| local file:|/%LOCAL_LINK%/[[./images/treeview-gray-line.gif|./images/treeview-gray-line.gif]]|
| remote link:|/%REMOTE_LINK%/[[http://www.symbex.net.au/Wiki/images/treeview-default.gif|http://www.symbex.net.au/Wiki/images/treeview-default.gif]]|
image
<<<
usage: {{{[img[tooltip|treeview-gray-line.gif]] or [img[tooltip|treeview-gray-line.gif][link]]}}}
[img[tooltip|treeview-gray-line.gif]]
<<<
/% DO NOT EDIT BELOW THIS POINT
---BEGIN_DATA---
image/gif;base64,
R0lGODlhEADwBvcAAAAAAICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAACH5BAEAAP8ALAAAAAAQAPAGAAj/AP8JHPgvAMGDCA0iXFiQ
4UKFDglCjChwIkWLETE61MgwgMePHx9SlDhyIEeRJRumPJkwpcqSLA/GJLnS5UyT
NnPW3AlTZ0+eI29W9BmU6EWjGZFuVNqRKcqfUIsCPTo1adWlV5tmfSo1KlWvVsFi
FauVLNevXdOiXRtWbVu2Y93GhVtWbl26Z9/qnbv3bt+8fAP7FQx4sOHCiFtuVWyW
sd3EMp06xjv5b2XClw9nhkyzceTFnz13fry5dGjSpymntrwac2vNrznjBD1adW3W
t13nhr1b9lDas0UHR93bdPHYxofbVo6buW7nvKH7fkncpfXr2LNr3869e/TfwsFX
/xe/nHxz88/Rf6denv159+nhrxcqfzr9+5KR6z/OX3py9fbl1x+A/9VXIH7AEbif
fwsqOKCBDUL4IILhScjghAJeqKGDG1rI4YcehkjheCJmCOKI7aH4norxsTifiSUm
GGOFLgYoY40HwohjhDtieKOOQP4oJI1BEjkkiT12mOSJRSLZZIpPrhhli1O+eCSU
V0qZJZVbWmnkl052aSOYWJKppZlcoullmGqOyeabZcJ5ppxp0rlmnHjOmWede96p
5598AupnoIQOaqibfSIqqKKFMnpojmJC2qakdjpqKaWJYrqopo1y+iiPVV4KaqSj
TlpqpZ6K6qOpq6J6aqavbv8aa6ezftoqrLfKmiutu9qqZKipBlurqr+S2iuxTBpb
LKvLunqssM8OC22zuFKrq7W8Yutrssxy66y2yM74rbfVknutudmiu6245bJ7rrvp
wrvukvKGS++9wEqrb7T8gjutuvbm2y/A/9ZbML7KEryvvwsrPLDBDUP8MMLdSszw
xAJfrLHDG1vM8cceh0zxuCJnDPLI7aL8rsrxsjyvySUnHHPFLgcsc80Hw4xzxDtj
fLPOQP8sNM1BEz00yT13nPTJRSPddMpPrxx1y1O/fDTUV0udNdVbW2301053bTPY
WJOttdlco+112GqPzfbbZcN9ttxp07123HjPnXfde9//rffffAPud+CED264230j
LrjihTN+eM5iQ9625HY7bjnliWO+uOaNc/44z1VfDnrko09eeuWei+6z6aujfnrm
r28ee+ezf9467LfLnjvtu9uudOipB1+76r+T3jvxTBtfPOvLu3688M8PD33zuFOv
u/W8Y+978sxz77z2yM/8vffVk3+9+dmjv7345bN/vvvpw7/+0vKHT//9wEuvf/T8
gz+9+vbLX/8A+L/6FRB/yiPg/vy3QAUO0IANhOADEdg9CTJwggK8oAYduEELcvCD
HgwhBccnwgyCcITtQ+H7VBg/Fs7PhCVMYAwr6MIAyrCGB4QhDiO4QwzeUIdA/KEQ
MmkYRCIOkYQ97GAST1hEJDYxhU9cYRRbOMUXHhGKV5RiFqm4RSsa8YtO7KINaQgS
kAQEADs=
---END_DATA---
%/
| source file:|{{{F:\TiddlyWiki\TWExperiments\jQuery\images\treeview-gray.gif}}}|
| attached on:|31 May 2009 by YourName|
| embedded:|[[treeview-gray.gif|treeview-gray.gif]] - {{{type=image/gif, size=1230 bytes, encoded=1665 bytes}}}|
| local file:|/%LOCAL_LINK%/[[./images/treeview-gray.gif|./images/treeview-gray.gif]]|
| remote link:|/%REMOTE_LINK%/[[http://www.symbex.net.au/Wiki/images/treeview-gray.gif|http://www.symbex.net.au/Wiki/images/treeview-gray.gif]]|
image
<<<
usage: {{{[img[tooltip|treeview-gray.gif]] or [img[tooltip|treeview-gray.gif][link]]}}}
[img[tooltip|treeview-gray.gif]]
<<<
/% DO NOT EDIT BELOW THIS POINT
---BEGIN_DATA---
image/gif;base64,
R0lGODlhYACFAPcAAAAAAICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAACH5BAEAAP8ALAAAAABgAIUAAAj/AP8JHEiwoMGDCBMqXMjw
H4CHABRCbEixosWLBCNi3Mixo0WNHkOKFAlypMmTKFOqPBmgpUuXK2OKDHCQpsyb
G206HKgTp8+GOkH2/EkUIU2ID/+9HFq0aFCeTaMafCqQqVSnNa9qXfpSq9eqX8OC
FfvVKlmsZ7emVbv2ZkmobWW+HRu34kSJSafW/RjS7N6Dc/8KHkw4LVeYhUda9ZvY
4uLGM7NC9ngUqdKuky8+zsxxM2eMnj87PsxYNMPSpimiTn2adV/XlGF3XA07MG3X
tlPfTbib4O29gR3rlk28uPHjVUkjl1zwd2qqSpfrFShUenOHlpdah+7cNHfrvpmD
qyfdHbz58+jTqzcZHH1705Z55y2e+3x98/fB518ffT159KFtN1B1531XIHYTaSed
geYxOJ542ynH34QUVmjhThW+h99xvQE2H3Ea6mdhiBeWWKCEDUK4oIrLBbgiUhEp
2CKLyLk443QNomjijjz2mBmJ0gG5nJCTdViQkTdSWB5xS8rWJGxPivbfgTg+WKWA
V76YHWZJhkfldV96meNhPpZp5plopqnmmggFBAA7
---END_DATA---
%/
| source file:|{{{F:\TiddlyWiki\TW jQuery\TreeView\images\treeview-red-line.gif}}}|
| attached on:|31 May 2009 by YourName|
| embedded:|[[treeview-red-line.gif|treeview-red-line.gif]] - {{{type=image/gif, size=1877 bytes, encoded=2543 bytes}}}|
| local file:|/%LOCAL_LINK%/[[file:///F:/TiddlyWiki/TW jQuery/TreeView/images/treeview-red-line.gif|file:///F:/TiddlyWiki/TW jQuery/TreeView/images/treeview-red-line.gif]]|
| remote link:|/%REMOTE_LINK%/[[http://www.symbex.net.au/Wiki/images/treeview-red-line.gif|http://www.symbex.net.au/Wiki/images/treeview-red-line.gif]]|
image
<<<
usage: {{{[img[tooltip|treeview-red-line.gif]] or [img[tooltip|treeview-red-line.gif][link]]}}}
[img[tooltip|treeview-red-line.gif]]
<<<
/% DO NOT EDIT BELOW THIS POINT
---BEGIN_DATA---
image/gif;base64,
R0lGODlhEADwBvcAAAAAAPV2dgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAACH5BAEAAP8ALAAAAAAQAPAGAAj/AP8JHPgvAMGDCA0iXFiQ
4UKFDglCjChwIkWLETE61MgwgMePHx9SlDhyIEeRJRumPJkwpcqSLA/GJLnS5UyT
NnPW3AlTZ0+eI29W9BmU6EWjGZFuVNqRKcqfUIsCPTo1adWlV5tmfSo1KlWvVsFi
FauVLNevXdOiXRtWbVu2Y93GhVtWbl26Z9/qnbv3bt+8fAP7FQx4sOHCiFtuVWyW
sd3EMp06xjv5b2XClw9nhkyzceTFnz13fry5dGjSpymntrwac2vNrznjBD1adW3W
t13nhr1b9lDas0UHR93bdPHYxofbVo6buW7nvKH7fkncpfXr2LNr3869e/TfwsFX
/xe/nHxz88/Rf6denv159+nhrxcqfzr9+5KR6z/OX3py9fbl1x+A/9VXIH7AEbif
fwsqOKCBDUL4IILhScjghAJeqKGDG1rI4YcehkjheCJmCOKI7aH4norxsTifiSUm
GGOFLgYoY40HwohjhDtieKOOQP4oJI1BEjkkiT12mOSJRSLZZIpPrhhli1O+eCSU
V0qZJZVbWmnkl052aSOYWJKppZlcoullmGqOyeabZcJ5ppxp0rlmnHjOmWede96p
5598AupnoIQOaqibfSIqqKKFMnpojmJC2qakdjpqKaWJYrqopo1y+iiPVV4KaqSj
TlpqpZ6K6qOpq6J6aqavbv8aa6ezftoqrLfKmiutu9qqZKipBlurqr+S2iuxTBpb
LKvLunqssM8OC22zuFKrq7W8Yutrssxy66y2yM74rbfVknutudmiu6245bJ7rrvp
wrvukvKGS++9wEqrb7T8gjutuvbm2y/A/9ZbML7KEryvvwsrPLDBDUP8MMLdSszw
xAJfrLHDG1vM8cceh0zxuCJnDPLI7aL8rsrxsjyvySUnHHPFLgcsc80Hw4xzxDtj
fLPOQP8sNM1BEz00yT13nPTJRSPddMpPrxx1y1O/fDTUV0udNdVbW2301053bTPY
WJOttdlco+112GqPzfbbZcN9ttxp07123HjPnXfde9//rffffAPud+CED264230j
LrjihTN+eM5iQ9625HY7bjnliWO+uOaNc/44z1VfDnrko09eeuWei+6z6aujfnrm
r28ee+ezf9467LfLnjvtu9uudOipB1+76r+T3jvxTBtfPOvLu3688M8PD33zuFOv
u/W8Y+978sxz77z2yM/8vffVk3+9+dmjv7345bN/vvvpw7/+0vKHT//9wEuvf/T8
gz+9+vbLX/8A+L/6FRB/yiPg/vy3QAUO0IANhOADEdg9CTJwggK8oAYduEELcvCD
HgwhBccnwgyCcITtQ+H7VBg/Fs7PhCVMYAwr6MIAyrCGB4QhDiO4QwzeUIdA/KEQ
MmkYRCIOkYQ97GAST1hEJDYxhU9cYRRbOMUXHhGKV5RiFqm4RSsa8YtO7KINaQgS
kAQEADs=
---END_DATA---
%/
| source file:|{{{F:\TiddlyWiki\TWExperiments\jQuery\images\treeview-red.gif}}}|
| attached on:|31 May 2009 by YourName|
| embedded:|[[treeview-red.gif|treeview-red.gif]] - {{{type=image/gif, size=1230 bytes, encoded=1665 bytes}}}|
| local file:|/%LOCAL_LINK%/[[./images/treeview-red.gif|./images/treeview-red.gif]]|
| remote link:|/%REMOTE_LINK%/[[http://www.symbex.net.au/Wiki/images/treeview-red.gif|http://www.symbex.net.au/Wiki/images/treeview-red.gif]]|
image
<<<
usage: {{{[img[tooltip|treeview-red.gif]] or [img[tooltip|treeview-red.gif][link]]}}}
[img[tooltip|treeview-red.gif]]
<<<
/% DO NOT EDIT BELOW THIS POINT
---BEGIN_DATA---
image/gif;base64,
R0lGODlhYACFAPcAAAAAAPV2dgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAACH5BAEAAP8ALAAAAABgAIUAAAj/AP8JHEiwoMGDCBMqXMjw
H4CHABRCbEixosWLBCNi3Mixo0WNHkOKFAlypMmTKFOqPBmgpUuXK2OKDHCQpsyb
G206HKgTp8+GOkH2/EkUIU2ID/+9HFq0aFCeTaMafCqQqVSnNa9qXfpSq9eqX8OC
FfvVKlmsZ7emVbv2ZkmobWW+HRu34kSJSafW/RjS7N6Dc/8KHkw4LVeYhUda9ZvY
4uLGM7NC9ngUqdKuky8+zsxxM2eMnj87PsxYNMPSpimiTn2adV/XlGF3XA07MG3X
tlPfTbib4O29gR3rlk28uPHjVUkjl1zwd2qqSpfrFShUenOHlpdah+7cNHfrvpmD
qyfdHbz58+jTqzcZHH1705Z55y2e+3x98/fB518ffT159KFtN1B1531XIHYTaSed
geYxOJ542ynH34QUVmjhThW+h99xvQE2H3Ea6mdhiBeWWKCEDUK4oIrLBbgiUhEp
2CKLyLk443QNomjijjz2mBmJ0gG5nJCTdViQkTdSWB5xS8rWJGxPivbfgTg+WKWA
V76YHWZJhkfldV96meNhPpZp5plopqnmmggFBAA7
---END_DATA---
%/
<<newTiddler label:"whatsThis" title:" What's This" tag:"whatsThis" focus:"text">>
//{{{
config.options.chkDisableTabsBar=false;
config.options.chkHttpReadOnly = false;
config.options.chkAutoSave = true;
config.options.chkSaveBackups = false;
config.options.chkAnimate = false;
config.options.chkShowRightSidebar= false;
config.options.chkSinglePageMode= true;
config.options.chkSinglePagePermalink= false;
config.options.chkSearchTitles=true;
config.options.chkSearchText=true;
config.options.chkSearchTags=true;
config.options.chkSearchFields=true;
config.options.chkSearchTitlesFirst=false;
config.options.chkSearchList=true;
config.options.chkSearchByDate=false;
config.options.chkSearchIncremental=false;
config.options.chkSearchShadows=false;
//}}}
!!Értelmezés
A [[nulladrendű nyelv|Nulladrendű nyelv]] esetén a [[nemlogikai konstansokra|Nemlogikai konstans]] mint állításparaméterekre utalunk, tekintettel arra, hogy ezek a nyelvi eszközök [[állítások|Állítás]] helyett szerepelnek.
!!Definíció
Legyen $L^{(0)}=\langle LC, Con, Form \rangle$ egy [[nulladrendű nyelv|Nulladrendű nyelv]], és $A\in Form$ egy formula.
Az $A$ formula érvényes, ha $\emptyset\models A$, azaz ha az $A$ formula [[logikai következménye|Szemantikai következményreláció]] az üres halmaznak.
*Jelölés: $\models A$