This is Garrett Lisi's personal wiki notebook in theoretical physics.
<<ListTagged 0>>
This hasn't been around long enough for any questions asked to be frequent, but I'll try to anticipate some.\n\n!!Who?\nThe site is principally authored by me, [[Garrett Lisi]]. I may open it up for collaboration in the future.\n\nAs to who it's good for... well, mostly it's for my own use. But if you have a background in physics and math, with at least some graduate level work under your belt, most of what's here should be accessible to you, and some may even be of interest.\n\n!!What?\nIt's sort of a "choose your own adventure" book in theoretical physics &mdash; only the book is being written day-by-day and no one knows the ending, or if there is one. It's my real-time research notebook, made available to public view. I hope to make it comparable to an open ended [[Living Reviews in Relativity|http://relativity.livingreviews.org/]] article in spirit and quality, but updated more frequently and navigable as a wiki. My long term goal is to construct a concise and beautiful theoretical description of reality unifying General Relativity, Quantum Field Theory, and the Standard Model using the foundations and language of basic differential geometry. Such a theory may not exist, but that's what I'm after. And here you can watch me walk down every dark alleyway looking for it &mdash; until I find it, or at least some interesting stuff along the way. This evolving search tree will grow and be pruned in ways I can't now predict. But I expect the information contained to be equivalent to a book and several overlapping research papers, wikified and presented as they are written. It's open source physics.\n\n!!Why?\nI needed a way to organize my physics notes. And I was simultaneously contemplating the best way to present and navigate theoretical physics. [[Semantic Networks|http://www.jfsowa.com/pubs/semnet.htm]] provide a natural structure for relating abstract conceptual information, and I considered building a graphical system to do what I want along those lines... but a wiki is a good practical equivalent. It allows a reader to quickly learn new concepts in digestible pieces, and trace forwards or backwards to the implications or foundations of those concepts &mdash; while allowing an author, or authors, to easily expand the content. I am very impressed with the way [[Wikipedia|http://en.wikipedia.org/wiki/Main_Page]] works and evolves, and this is my own personal version, for research.\n\n!!How?\nThe two main pieces from which this site is built are [[TiddlyWiki|http://www.tiddlywiki.com/]], created by Jeremy Ruston, and [[jsMath|http://www.math.union.edu/~dpvc/jsMath/]], made by Davide P. Cervone. Both of these excellent open source software packages are under continuing development and have supportive communities. I owe thanks to many people for building the pieces used for this site, and for helping out with technical details. To delve more into the nitty-gritty of how it's put together, and see who contributed which plugins, go check out the [[Configuration]]. If things don't work perfectly, it's probably my fault. You can get everything you need to set up a similar wiki for yourself from this [[downloads directory|http://deferentialgeometry.org/download/]].\n\nTo use it... try things. Click on buttons and see what happens, you'll figure it out.\n\n!!What about money for food?\n\nMy research is supported entirely by private contributions. Support is always appreciated, is tax deductible, and may be sent to the Deferential Geometry project using credit card through [[Fractured Atlas|https://www.fracturedatlas.org/site/contribute/donate/662]], a 501(c)(3) corporation.\n\n!!Where\nThis site is served from a closet in San Jose, California (thanks Rich!). It's currently mirrored from a laptop on a volcanic island in the middle of the Pacific, but the laptop follows its owner everywhere... except out surfing &mdash; it hates that.\n\n!!When\nNow.\n\n----\n<<slider chkSliderAbout 'About (slider)' 'More questions and answers »' 'Click to see more questions and answers'>>\n
!!How did you come up with the title, "Deferential Geometry"?\nMy favorite interpretation is that it's about geometry in the service of physics. There is a lot of bad theoretical physics out there without math, and a lot of good math without physics &mdash; good physics uses math, and this site is about using only the math needed by physics, differential geometry in particular. There shouldn't be any mathematical tangents here without physics ideas motivating them, the geometry is deferential to the physics &mdash; a beautiful idea, and a bad pun.
<<option chkGenerateAnRssFeed>> generate an RSS feed\n<<option chkOpenInNewWindow>> open links In a new window\n<<option chkSaveEmptyTemplate>> save empty template\n<<option chkToggleLinks>> clicking on links to notes that are already open causes them to close\n^^(override with control or other modifier key)^^\n<<option chkHttpReadOnly>> hide editing features when viewed over HTTP\n<<option chkForceMinorUpdate>> treat edits as minor changes by preserving date and time\n^^(override with shift key when clicking 'done' or by pressing ctrl-shift-enter^^\n<<option chkConfirmDelete>> confirm before deleting\nmaximum number of lines in a note edit box: <<option txtMaxEditRows>>\n<<option chkSaveBackups>> save backups\n<<option chkAutoSave>> auto save\nfolder name for backup files: <<option txtBackupFolder>>\n<<option chkInsertTabs>> use tab key to insert tab characters instead of jumping to next field\n<<option chkDisableExcept>> show hidden system tags\n!These change how the [[UploadPlugin]] works\nUrl of the UploadService script^^(1)^^: <<option txtUploadStoreUrl 50>>\nRelative Directory where to store the file^^(2)^^: <<option txtUploadDir 50>>\nFilename of the uploaded file^^(3)^^: <<option txtUploadFilename 40>>\nDirectory to backup file on webserver^^(4)^^: <<option txtUploadBackupDir>>\n\n^^(1)^^Mandatory either in UploadOptions or in macro parameter\n^^(2)^^If empty stores in the script directory\n^^(3)^^If empty takes the actual filename\n^^(4)^^If empty existing file with same name on webserver will be overwritten
/***\nname: AllTagsExceptPlugin\nauthor: Garrett\nversion: 0.1.0\nThis is a revision of Clint Checketts' allTagsExcept plugin, which lists all tags except those listed.\n\n<<option chkDisableExcept>> show hidden system tags\n\n!!Usage\n{{{\n<<AllTagsExcept tag1 tag2 ...>>\n}}}\n!!!Code\n***/\n/*{{{*/\nversion.extensions.AllTagsExcept = {major: 0, minor: 1, revision: 0};\n\nif (!config.options.chkDisableExcept) config.options.chkDisableExcept=false; // default to standard action\n\nconfig.macros.AllTagsExcept = {tooltip: "Show notes tagged with '%0'",noTags: "There are no tags to display"};\n\nconfig.macros.AllTagsExcept.handler = function(place,macroName,params)\n{\n var tags = store.getTags();\n var theDateList = createTiddlyElement(place,"ul");\n if(tags.length == 0)\n createTiddlyElement(theDateList,"li",null,"listTitle",this.noTags);\n for(var t=0; t<tags.length; t++)\n {\n var includeTag = true;\n for (var p=0;p<params.length; p++) if ((tags[t][0] == params[p])&&(!config.options.chkDisableExcept)) includeTag = false;\n if (includeTag)\n {\n var theListItem =createTiddlyElement(theDateList,"li");\n var theTag = createTiddlyButton(theListItem,tags[t][0] + " (" + tags[t][1] + ")",this.tooltip.format([tags[t][0]]),onClickTag);\n theTag.setAttribute("tag",tags[t][0]);\n }\n }\n}\n/*}}}*/\n
Creating bulleted lists is simple.\n* Just add an asterisk\n* at the beginning of a line.\n** If you want to create sub-bullets\n** start the line with two asterisks\n*** And if you want yet another level\n*** use three asterisks\n* You can also do [[Numbered Lists]]\n{{{\nCreating bulleted lists is simple.\n* Just add an asterisk\n* at the beginning of a line.\n** If you want to create sub-bullets\n** start the line with two asterisks\n*** And if you want yet another level\n*** use three asterisks\n* You can also do [[Numbered Lists]]\n}}}
/***\nAuthors: Eric Shulman & Bradley Meck\nversion: 2007.30.03\nsource: http://www.tiddlytools.com/\n***/\n/*{{{*/\nconfig.commands.collapseNote = {\ntext: "-",\ntooltip: "Collapse this note",\nhandler: function(event,src,title)\n{\nvar e = story.findContainingNote(src);\nif(e.getAttribute("template") != config.noteTemplates[DEFAULT_EDIT_TEMPLATE]){\nvar t = (readOnly&&store.noteExists("WebCollapsedTemplate"))?"WebCollapsedTemplate":"CollapsedTemplate";\nif(e.getAttribute("template") != t ){\ne.setAttribute("oldTemplate",e.getAttribute("template"));\nstory.displayNote(null,title,t);\n}\n}\n}\n}\n\nconfig.commands.expandNote = {\ntext: " | ",\ntooltip: "Expand this note",\nhandler: function(event,src,title)\n{\nvar e = story.findContainingNote(src);\nstory.displayNote(null,title,e.getAttribute("oldTemplate"));\n}\n}\n\nconfig.macros.collapseAll = {\nhandler: function(place,macroName,params,wikifier,paramString,note){\ncreateTiddlyButton(place,"-","Collapse all notes",function(){\nstory.forEachNote(function(title,note){\nif(note.getAttribute("template") != config.noteTemplates[DEFAULT_EDIT_TEMPLATE])\nvar t = (readOnly&&store.noteExists("WebCollapsedTemplate"))?"WebCollapsedTemplate":"CollapsedTemplate";\nstory.displayNote(null,title,t);\n})})\n}\n}\n\nconfig.macros.expandAll = {\nhandler: function(place,macroName,params,wikifier,paramString,note){\ncreateTiddlyButton(place,"expand all","Expand all notes",function(){\nstory.forEachNote(function(title,note){\nvar t = (readOnly&&store.noteExists("WebCollapsedTemplate"))?"WebCollapsedTemplate":"CollapsedTemplate";\nif(note.getAttribute("template") == t) story.displayNote(null,title,note.getAttribute("oldTemplate"));\n})})\n}\n}\n\nconfig.commands.collapseOthers = {\ntext: "Ø",\ntooltip: "Expand this note and collapse all others",\nhandler: function(event,src,title)\n{\nvar e = story.findContainingNote(src);\nstory.forEachNote(function(title,note){\nif(note.getAttribute("template") != config.noteTemplates[DEFAULT_EDIT_TEMPLATE]){\nvar t = (readOnly&&store.noteExists("WebCollapsedTemplate"))?"WebCollapsedTemplate":"CollapsedTemplate";\nif (e==note) t=e.getAttribute("oldTemplate");\n//////////\n// ELS 2006.02.22 - removed this line. if t==null, then the *current* view template, not the default "ViewTemplate", will be used.\n// if (!t||!t.length) t=!readOnly?"ViewTemplate":"WebViewTemplate";\n//////////\nstory.displayNote(null,title,t);\n}\n})\n}\n}\n/*}}}*/
<div>\n<span class='toolbar' macro='toolbar +editNote expandNote collapseOthers closeOthers -closeNote'></span>\n<span class='title' macro='view title'></span>\n</div>
This site is powered by [[TiddlyWiki|http://www.tiddlywiki.com]] <<version>>\n!I installed these plugins (need t(T)iddler -> n(N)ote find and replace):\n*[[InlineJavascriptPlugin]]\n**used for the [[DisplayControl]]\n**and for [[HideTags]] (used for slides)\n*[[TextAreaPlugin]]\n**deselect the edit contents, and adds ctr-f,ctrl-g,cmd-v search/replace to editing.\n*[[jsMathPlugin]]\n**this processes the [[LaTeX]]. The AJAX part had problems, so I put the jsmath load into the source directly.\n**inserted custom LaTeX/jsmath command abbreviations into plugin.\n*[[CollapsePlugin]]\n**[[CollapsedTemplate]]\n*[[RearrangeNotesPlugin]]\n*[[ListTaggedPlugin]]\n**used for folder/tag listings\n*[[AllTagsExceptPlugin]]\n**advanced checkbox to see system tags\n*[[CopyNotePlugin]]\n*[[DisableWikiLinksPlugin]]\n**remove checkbox so it's always on\n**this is very tricky in combination with [[jsMathPlugin]] and \sss pytw problem\n*[[FaviconPlugin]]\n*[[ReferencesPlugin]]\n*[[UploadPlugin]]\n**changed 3 txtUploadUserName -> txtUserName\n**changed 3 pasUploadPassword -> pasPassword and a line in Intitializations\n**commented out password checkbox\n**change index.html and directory chmod to 777\n**put B's logging script call in [[MarkupPostBody]]\n***make index executable so log script will run\n*[[RecentPlugin]]\n**set to show last 2\ncheck to make sure I didn't install any<<tag plugin>>and forget to list it here. Try using the [[PluginManager]].\n\n!I changed these notes to configure operation and appearance:\n*These control the content of several boxes:\n**[[SiteTitle]]\n**[[SiteSubtitle]]\n**[[SiteUrl]]\n**[[DefaultNotes]]\n**[[MainMenu]]\n**[[SideBarOptions]]\n**[[OptionsPanel]]\n***[[SideBarOptionsText]]\n**[[AdvancedOptions]]\n**[[SideBarTabs]]\n***[[TabContents]]\n***[[TabTimeline]]\n***[[TabAll]] - nope, for some reason this has the text built in. :(\n***[[TabTags]]\n**[[DisplayControl]]\n*These are css layout templates:\n**[[PageTemplate]]\n**[[ViewTemplate]]\n**[[EditTemplate]]\n**[[CollapsedTemplate]]\n*And these change the system and css options:\n**[[SystemConfig]]\n**[[StyleSheet]]\n***Trouble with [[MyColors]] conflicting with [[ColorPalette]]\n**[[StyleSheetPrint]]\nThe default config files are invisible and listed as [[ShadowNotes]]. These:\n*[[StyleSheetLayout]]\n*[[StyleSheetColors]]\nare augmented and overriden by the [[StyleSheet]]. If they change in the future, with updates, the old version content will likely have to be added to the new [[StyleSheet]]. \n\n!Evil raw html/javascript TW source code tweakage\n*edit cookie options, since setting them in [[SystemConfig]] overrides user cookies\n*maybe add ctrl-w accessKey -- just fooling around\n*comment out a couple of displayMessage s\n*switch line order in {{{config.macros.search.handler}}} for search button after search field\n*comment out tag prompt line in {{{config.macros.tags.handler}}}\n*Insert this just after body. (This starts jsmath)\n**{{{<scriipt src="jsMath/jsMath.js"></scriipt>}}}\n*add B's logging script call\n**make index executable so log script will run\n\n!edited {{{jsMath/easy/load.js}}}\n*changed default font scaling to {{{scale: 110}}} and {{{warn: 0}}}\n*remove doubleclick show\n*reduced vertical margins by adding {{{margin-top: 0.5em; margin-bottom: 0.5em;}}}\n*hide jsMath button\n\n!And finally\nI did a global find/replace of "t(T)iddler" -> "n(N)ote" in the base file or directory via editor or the noteify shell script. Make sure to do this when more plugins are installed, so they'll work.\n\nThen, save a bare copy, without folders or editing tips, and a minimal copy, with them. Then try to [[ImportNotes]].
/***\nAuthors: Eric Shulman\nversion: 2.1.2\nsource: http://www.tiddlytools.com/\nadds a "copy" option to duplicate a note\n***/\n/*{{{*/\nversion.extensions.copyNote= {major: 2, minor: 1, revision: 2, date: new Date(2007,5,17)};\nconfig.commands.copyNote = {\n text: '\sxA9',\n hideReadOnly: true,\n tooltip: 'Make a copy of this note',\n prefix: "Copy of ",\n handler: function(event,src,title) {\n var text=store.getNoteText(title); // get text from note (or shadow)\n var tags=[]; var tid=store.getNote(title); if (tid) tags=tid.getTags();\n var textfield=story.getNoteField(title,"text");\n if (textfield&&textfield.getAttribute("edit")=="text") var text=textfield.value; // edit mode, use field value\n var tagsfield=story.getNoteField(title,"tags");\n if (tagsfield&&tagsfield.getAttribute("edit")=="tags") var tags=tagsfield.value; // edit mode, use field value\n var newTitle = this.prefix + title;\n story.displayNote(null,newTitle,DEFAULT_EDIT_TEMPLATE);\n story.getNoteField(newTitle,"text").value=text;\n story.getNoteField(newTitle,"tags").value=tags;\n story.focusNote(newTitle,"title");\n return false;\n }\n};\n/*}}}*/
Welcome
/***\nAuthors: Eric Shulman\nversion: 1.0.0\nsource: http://www.tiddlytools.com/\nThis plugin allows you to disable TiddlyWiki's automatic WikiWord linking behavior, so that WikiWords embedded in note content will be rendered as regular text, instead of being automatically converted to note links. To create a note link when automatic linking is disabled, you must enclose the link text within {{{[[}}} and {{{]]}}}.\n!!!!!Code\n***/\n//{{{\nversion.extensions.disableWikiLinks= {major: 1, minor: 0, revision: 0, date: new Date(2005,12,9)};\n\n// G changed to have this on, without checkbox\nconfig.options.chkDisableWikiLinks= true;\n\n// find the formatter for wikiLink and replace handler with 'pass-thru' rendering\nfor (var i=0; i<config.formatters.length && config.formatters[i].name!="wikiLink"; i++);\nconfig.formatters[i].coreHandler=config.formatters[i].handler;\nconfig.formatters[i].handler=function(w) {\n // if not enabled, just do standard WikiWord link formatting\n if (!config.options.chkDisableWikiLinks) return this.coreHandler(w);\n // supress any leading "~" (if present)\n var skip=(w.matchText.substr(0,1)==config.textPrimitives.unWikiLink)?1:0;\n w.outputText(w.output,w.matchStart+skip,w.nextMatch)\n}\n//}}}
&nbsp;<script label="O" title="toggle sidebar">\n var sb=document.getElementById('sidebar');\n var da=document.getElementById('displayArea');\n if (sb.style.display == 'none') {\n da.style.marginLeft = '18.5em';\n sb.style.display = 'block';}\n else {\n da.style.marginLeft = '0em';\n sb.style.display = 'none';}\n</script>&nbsp;<script label="O" title="toggle title">\n var h=document.getElementById('head');\n if (h.style.height == '1em') {\n h.style.height = '5.8em';}\n else {\n h.style.height = '1em';}\n</script>&nbsp;\n
<div class='toolbar' macro='toolbar +saveNote copyNote deleteNote closeOthers -cancelNote'></div>\n<div class='title' macro='view title'></div>\n<div class='editor' macro='edit title'></div>\n<div class='editor' macro='edit text'></div>\n<div class='toolbar' macro='toolbar +saveNote copyNote deleteNote closeOthers -cancelNote'></div>\n<div class='editorFooter'><span macro='tagChooser'></span><span macro='message views.editor.tagPrompt'></span></div>\n<div><span class='editor' macro='edit tags'></div>
!!Guidelines\n*Keep the notes short &mdash; if it gets long, split it. Somewhere between a paragraph and a page is about right.\n*Don't use objects or methods without linking references (once) for the reader.\n*The first time you reference another object in a note, link to its eponymous note.\n**If you reference an object defined in a non-eponymous note, link to it again by [ [ object | note ] ]. \n*If you define some object, make the object name ''bold''.\n**If you include a pseudonym for a defined object, make it //''bold italic''//.\n*Include all steps of calculations, with the manipulations established from referenced notes.\n*Link to [[Wikipedia|http://en.wikipedia.org/]] for standard stuff, or to arxiv papers and other things as needed.\n*Include introduced symbols in the [[Symbols]] table.\n*Include introduced tags in [[Tags]] and<<tag folder>>. //Don't do this often//\n*Examples are OK, even if they run a little long.\n*It is good to start a note as "A ''this thing'' is a kind of [[link to more general case]] which //more detailed properties//..."\n*In general, don't link "down" to more specific instances -- that's what the "referenced by" button is for. Unless it seems pedagogically useful.\n*Lateral (mutual) linking is OK, such as in the [[differential form]] note &mdash; for similar objects, special generalized cases, or extended discussions.\n*Attempt to duplicate the same structure of links for similar structures of mathematical objects and instantiations.\n*Links that establish a hierarchical relationship should probably be treated differently then links to define used objects -- but for now they're the same.\n*If you link to a note that doesn't exist, create that note and tag it with<<tag 0>>if you leave it empty.\n*Tag notes that desperately need editing with<<tag 0>>.\n*Put editorial comments (//like this one//) in parens and italics.\n!!Markup\nThere are many markup formating commands and features that can be used when <<tag editing>> notes:\n<<ListTagged editing>>\nYou can do other neat stuff with more <<tag plugin>>s.\n
Images can be included by their filename or full URL. It's good practice to include a title to be shown as a tooltip, and when the image isn't available. An image can also link to another note or or a URL\n[img[Romanesque broccoli|images/fractalveg.jpg][http://www.flickr.com/photos/jermy/10134618/]]\n{{{\n[img[Romanesque broccoli|images/fractalveg.jpg]\n [http://www.flickr.com/photos/jermy/10134618/]]\n[img[title|filename]]\n[img[filename]]\n[img[title|filename][link]]\n[img[filename][link]]\n}}}\n[<img[Forest|images/forest.jpg][http://www.flickr.com/photos/jermy/8749660/]][>img[Field|images/field.jpg][http://www.flickr.com/photos/jermy/8749285/]]You can also float images to the left or right: the forest is left aligned with {{{[<img[}}}, and the field is right aligned with {{{[>img[}}}.\n@@clear(left):clear(right):display(block):You can use CSS to clear the floats@@\n{{{\n[<img[Forest|images/forest.jpg][http://www.flickr.com/photos/jermy/8749660/]]\n[>img[Field|images/field.jpg][http://www.flickr.com/photos/jermy/8749285/]]\nYou can also float images to the left or right:\n the forest is left aligned with {{{[<img[}}},\nand the field is right aligned with {{{[>img[}}}.\n@@clear(left):clear(right):display(block):\nYou can use CSS to clear the floats@@\n}}}
''Bold''\n{{{''Bold''}}}\n==Strikethrough==\n{{{==Strikethrough==}}}\n__Underline__ \n{{{__Underline__}}}\n//Italic// \n{{{//Italic//}}}\n2^^3^^=8 \n{{{2^^3^^=8}}}\na~~ij~~ = -a~~ji~~ \n{{{a~~ij~~ = -a~~ji~~}}}\n@@highlight@@ \n{{{@@highlight@@}}}\n\n//The highlight can also accept CSS syntax to directly style the text://\n@@color:green;green coloured@@\n{{{@@color:green;green coloured@@}}}\n@@background-color:#ff0000;color:#ffffff;red coloured@@\n{{{@@background-color:#ff0000;color:#ffffff;red coloured@@}}}\n@@text-shadow:black 3px 3px 8px;font-size:18pt;display:block;margin:1em 1em 1em 1em;border:1px solid black;Access any CSS style@@\n{{{@@text-shadow:black 3px 3px 8px;font-size:18pt;display:block;margin:1em 1em 1em 1em;border:1px solid black;Access any CSS style@@}}}\n@@display:block;text-align:center;centered text or image@@\n{{{@@display:block;text-align:center;centered text or image@@}}}\n\n//For backwards compatibility, the following highlight syntax is also accepted://\n@@bgcolor(#ff0000):color(#ffffff):red coloured@@\n{{{\n@@bgcolor(#ff0000):color(#ffffff):red coloured@@\n}}}
var n = document.createElement("link"); \nn.rel = "shortcut icon"; \nn.href = "favicon.ico"; \ndocument.getElementsByTagName("head")[0].appendChild(n);
[>img[Garrett at Burning Man, 2004|images/person/Garrett.jpg]]Homepage: http://interstice.com/~aglisi/\n*Email: garrett.lisi&#064;gmail.com\n*Location: Lake Tahoe or Maui, usually\n*CV: http://interstice.com/~aglisi/Physics/CVp.html\n*arXiv papers: http://arxiv.org/find/gr-qc/1/au:+Lisi_A/0/1/0/all/0/1\n\nSelected work:\n*You're looking at it.\n*[[An Exceptionally Simple Theory of Everything]]\n*[[Quantum mechanics from a universal action reservoir|http://arxiv.org/abs/physics/0605068]]\n*[[Clifford bundle formulation of BF gravity generalized to the standard model|papers/0511120.pdf]]\n\nTalks:\n*[[talk for ILQGS 07]]\n*[[talk for Perimeter Institute 07]]\n*[[talk for FQXi 07]]\n*[[talk for Loops 07]]\n\nPopular press coverage:\n*[[FQXi project|http://fqxi.org/aw-lisi.html]]\n*[[FQXi profile|http://www.fqxi.org/community/data/articles/Lisi_Garrett.pdf]]
/%\n|Name|HideTags|\n|Source|http://www.TiddlyTools.com/#HideTiddlerTags|\n|Version|0.0.0|\n|Author|Eric Shulman - ELS Design Studios (edited by Garrett)|\n|License|http://www.TiddlyTools.com/#LegalStatements <<br>>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|\n|~CoreVersion|2.1|\n|Type|script|\n|Requires|InlineJavascriptPlugin|\n|Description|hide a note's tagged/tagging/references display elements|\n\nUsage: <<note HideTags>>\n\n%/<script>\n var t=story.findContainingNote(place);\n if (t && t.id!="noteHideTags")\n for (var i=0; i<t.childNodes.length; i++)\n {if (hasClass(t.childNodes[i],"tagging")||hasClass(t.childNodes[i],"tagged"))\n t.childNodes[i].style.display="none";\n if (hasClass(t.childNodes[i],"references"))\n t.childNodes[i].style.display="none";\n if (hasClass(t.childNodes[i],"viewer"))\n {t.childNodes[i].style.height="641px";}}\n</script>
A horizontal dividing line.\n----\n{{{----}}}
<<<\nA whole block\nof text to be quoted.\n<<<\nor\n>>>Multiple levels of indented quotes.\n>>Just like [[Bullet Points]].\n>yep\n>>or like [[Numbered Lists]]\nThat's what they said.\n{{{\n<<<\nA whole block\nof text to be quoted.\n<<<\nor\n>>>Multiple levels of indented quotes.\n>>Just like [[Bullet Points]].\n>yep\n>>or like [[Numbered Lists]]\nThat's what they said.\n}}}
TiddlyWiki lets you write ordinary HTML by enclosing it in {{{<html>}}} and {{{</html>}}}:\n<html>\n<a href="javascript:;" onclick="onClickNoteLink(event);" \ntiddlyLink="Welcome"\nstyle="background-color: yellow;">\nLink to Welcome constructed in HTML</a>\n</html>\n{{{\n<html>\n<a href="javascript:;" onclick="onClickNoteLink(event);" \ntiddlyLink="Welcome"\nstyle="background-color: yellow;">\nLink to Welcome constructed in HTML</a>\n</html>\n}}}\nHTML can enable some exotic new features (like [[embedding GMail and Outlook|http://groups.google.com/group/TiddlyWiki/browse_thread/thread/d363303aff5868d0/056269d8409d121f?lnk=st&q=embedding+gmail&rnum=1#056269d8409d121f]] in a TiddlyWiki). But, care needs to be taken with including things like JavaScript code.
/***\n''InlineJavascriptPlugin''\n^^version: 1.6.0\nauthor: Eric Shulman - ELS Design Studios\nsource: http://www.tiddlytools.com/\nlicense: [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]^^\nsee source link (above) for usage.\n!!!!!Code\n***/\n/*{{{*/\nversion.extensions.inlineJavascript= {major: 1, minor: 6, revision: 0, date: new Date(2007,2,19)};\n\nconfig.formatters.push( {\n name: "inlineJavascript",\n match: "\s\s<script",\n lookahead: "\s\s<script(?: src=\s\s\s"((?:.|\s\sn)*?)\s\s\s")?(?: label=\s\s\s"((?:.|\s\sn)*?)\s\s\s")?(?: title=\s\s\s"((?:.|\s\sn)*?)\s\s\s")?( show)?\s\s>((?:.|\s\sn)*?)\s\s</script\s\s>",\n\n handler: function(w) {\n var lookaheadRegExp = new RegExp(this.lookahead,"mg");\n lookaheadRegExp.lastIndex = w.matchStart;\n var lookaheadMatch = lookaheadRegExp.exec(w.source)\n if(lookaheadMatch && lookaheadMatch.index == w.matchStart) {\n if (lookaheadMatch[1]) { // load a script library\n // make script tag, set src, add to body to execute, then remove for cleanup\n var script = document.createElement("script"); script.src = lookaheadMatch[1];\n document.body.appendChild(script); document.body.removeChild(script);\n }\n if (lookaheadMatch[5]) { // there is script code\n if (lookaheadMatch[4]) // show inline script code in note output\n wikify("{{{\sn"+lookaheadMatch[0]+"\sn}}}\sn",w.output);\n if (lookaheadMatch[2]) { // create a link to an 'onclick' script\n // add a link, define click handler, save code in link (pass 'place'), set link attributes\n var link=createTiddlyElement(w.output,"a",null,"tiddlyLinkExisting",lookaheadMatch[2]);\n link.onclick=function(){try{return(eval(this.code))}catch(e){alert(e.description?e.description:e.toString())}}\n link.code="function _out(place){"+lookaheadMatch[5]+"\sn};_out(this);"\n link.setAttribute("title",lookaheadMatch[3]?lookaheadMatch[3]:"");\n link.setAttribute("href","javascript:;");\n link.style.cursor="pointer";\n }\n else { // run inline script code\n var code="function _out(place){"+lookaheadMatch[5]+"\sn};_out(w.output);"\n code=code.replace(/document.write\s(/gi,'place.innerHTML+=(');\n try { var out = eval(code); } catch(e) { out = e.description?e.description:e.toString(); }\n if (out && out.length) wikify(out,w.output,w.highlightRegExp,w.note);\n }\n }\n w.nextMatch = lookaheadMatch.index + lookaheadMatch[0].length;\n }\n }\n} )\n/*}}}*/
Access keys are shortcuts to common functions accessed by typing a letter with either the 'alt' (PC) or 'control' (Mac) key:\n|!PC|!Mac|!Function|\n|Alt-F|Ctrl-F|Search|\n|Alt-J|Ctrl-J|NewJournal|\n|Alt-N|Ctrl-N|NewNote|\n|Alt-S|Ctrl-S|SaveChanges|\nThese access keys are provided by the associated internal [[Macros]] for the functions above. The macro needs to be used in an open note (or the [[MainMenu]] or SideBar) in order for the access keys to work.\n\nWhile editing a note:\n* ~Control-Enter or ~Control-Return accepts your changes and switches out of editing mode (use ~Shift-Control-Enter or ~Shift-Control-Return to stop the date and time being updated for MinorChanges)\n* Escape abandons your changes and reverts the note to its previous state\n\nIn the search box:\n* Escape clears the search term
//Use the first method in each example below, unless you have some reason not to.//\nMathematical symbols, such as \s(e^{x^2}\s), may be inserted inline.\n{{{\nMathematical symbols, such as $e^{x^2}$, may be inserted inline.\nMathematical symbols, such as \s(e^{x^2}\s), may be inserted inline.\n}}}\nOr as displayed math,$$e^{x^2}$$ on its own line.\n{{{\nOr as displayed math, \s[e^{x^2}\s] on its own line.\nOr as displayed math, $$e^{x^2}$$ on its own line.\nOr as displayed math, \sbegin{equation}e^{x^2}\send{equation} on its own line.\n}}}\nOr as an equation array,\n\sbegin{eqnarray}A &=& e^{x^2}\s\s&=&C\send{eqnarray}\n{{{\nOr as an equation array,\sbegin{eqnarray}A &=& e^{x^2}\s\s&=& C\send{eqnarray}\n}}}\n\nSome of the available TeX symbols can be found at [[jsMath|http://www.math.union.edu/~dpvc/jsMath/symbols/welcome.html]], the best method I could find for displaying TeX online. The small button in the lower right corner of this window opens its control planel. I'm not sure how many LaTeX and AMSTeX commands are supported -- play around.\n\nTeX substitution macros such as $\sf{A}$, ({{{$\sf{A}$}}}), may be inserted into the [[jsMathPlugin]] just before the jsMath.process call. See that plugin for abbreviated commands I've included.
Link to notes, such as [[Horizontal Rule]].\n{{{\nLink to notes, such as [[Horizontal Rule]].\n}}}\nLink to [[external sites|http://www.osmosoft.com]] or [[ordinary notes|Horizontal Rule]] with ordinary words,\nwithout the messiness of the full URL appearing.\n{{{\nLink to [[external sites|http://www.osmosoft.com]] or [[ordinary notes|Horizontal Rule]] with ordinary words,\nwithout the messiness of the full URL appearing.\n}}}\nOr just type out http://www.osmosoft.com and it will be automatically linkified.
/***\nThis is a revision of the listTags plugin &mdash; [[I|Garrett Lisi]] mashed this up with Udo's big plugin.\n!!Usage\n{{{\n<<ListTagged tag>>\n}}}\n!!!Code\n***/\n/*{{{*/\nversion.extensions.ListTagged = {major: 0, minor: 1, revision: 1};\n\nconfig.macros.ListTagged = {\ntext: "Hello"\n};\n\nconfig.macros.ListTagged.handler = function(place,macroName,params)\n{\nvar notes = store.getTaggedNotes(params[0]);\nvar list = document.createElement("ul");\n place.appendChild(list);\n for (var i = 0; i < notes.length; i++) {\n var note = notes[i];\n var listItem = document.createElement("li");\n list.appendChild(listItem);\n createTiddlyLink(listItem, note.title, true);\n }\n\n}\n/*}}}*/\n
Macros let you write notes containing more exotic objects than just text. Macros may be added as plugins. If so, they should be tagged<<tag plugin>>, and described in [[Configuration]].\n!These are some of the built-in macros:\nToday is <<today>>\n{{{\nToday is <<today>>\n}}}\nClick on <<tag editing>> to popup all notes tagged "editing".\n{{{\nClick on <<tag editing>> to popup all notes tagged "editing".\n}}}\nTransclude one note into another via\n<<note 'Horizontal Rule'>>\n{{{\nTransclude one note into another via\n<<note 'Horizontal Rule'>>\n}}}\n//There is no protection against inadvertently setting up endless loops. And this may have problems if the transcluded note isn't loaded.//\nSlider: <<slider chkTestSlider 'Horizontal Rule' 'press me»' "Click here to see the Horizontal Rule slide out">>\n{{{\nSlider: <<slider chkTestSlider 'Horizontal Rule' 'press me»' "Click here to see the Horizontal Rule slide out">>\n}}}\nThe slider parameters are:\n* cookie name to be used to save the state of the slider\n* name of the note to include in the slider\n* title text of the slider\n* tooltip text of the slider\n
&nbsp;[[About]]&nbsp;&nbsp;&nbsp;[[Tags]]&nbsp;&nbsp;&nbsp;[[Symbols]]&nbsp;&nbsp;&nbsp;[[To Do]]
Inline {{{monospaced text}}} with no editing commands executed inside the brackets.\nInline <html>{{{</html>monospaced text<html>}}}</html> with no editing commands executed inside the brackets.\n{{{\nmonospaced\n blocks\n(useful for source code)\n}}}\nBy putting "<html>{{{</html>" and "<html>}}}</html>" on their own lines.
!Colors Used\n*@@bgcolor(#8cf): #8cf - Background blue@@ -- popup\n*@@bgcolor(#18f): #18f - Top blue@@ -- header top\n*@@bgcolor(#04b): #04b - Mid blue@@ -- header \n*@@bgcolor(#014):color(#fff): #014 - Bottom blue@@ -- commands\n*@@bgcolor(#ffc): #ffc - Bright yellow@@ --\n*@@bgcolor(#fe8): #fe8 - Highlight yellow@@ --\n*@@bgcolor(#db4): #db4 - Background yellow@@ --\n*@@bgcolor(#841): #841 - Border yellow@@ --\n*@@bgcolor(#703):color(#fff): #703 - Title red@@ --\n*@@bgcolor(#866): #866 - Subtitle grey@@\n*@@bgcolor(#888): #888 - footer@@\n*@@bgcolor(#999): #999 - dark grey@@\n*@@bgcolor(#bbb): #bbb - tag2 grey@@\n*@@bgcolor(#ccc): #ccc - grey@@\n*@@bgcolor(#ddd): #ddd - tag1 grey@@\n*@@bgcolor(#eee): #eee - light grey@@\n*@@bgcolor(#ff0): #ff0 - error1@@\n*@@bgcolor(#f00): #f00 - error2@@\n*@@bgcolor(#eef): #ff0 - cascade1@@\n*@@bgcolor(#aac): #f00 - cascade2@@\n*@@bgcolor(#666): #666 - quote@@\n*@@bgcolor(#333): #333 - table@@\n*@@bgcolor(#996): #996 - thead@@\n*@@bgcolor(#fe8): #fe8 - pre1@@\n*@@bgcolor(#ffc): #ffc - pre2@@
To hide text within a note so that it is not displayed you can wrap it in {{{/%}}} and {{{%/}}}. It can be a useful trick for hiding drafts or annotating complex markup. Edit this note to see an example.\n/%This text is not displayed\nuntil you try to edit %/
Creating numbered lists is simple.\n# Just add a pounds sign\n# at the beginning of a line.\n## If you want to create sub-lists\n## start the line with two pounds\n### And if you want yet another level\n### use three pounds\n# You can also do [[Bullet Points]]\n{{{\nCreating numbered lists is simple.\n# Just add a pounds sign\n# at the beginning of a line.\n## If you want to create sub-lists\n## start the line with two pounds\n### And if you want yet another level\n### use three pounds\n# You can also do [[Bullet Points]]\n}}}
These options are saved in the browser:\n \n<<note SideBarOptionsText inputFix>>\n\n<<option chkRegExpSearch>> regular expression search\n<<option chkCaseSensitiveSearch>> case sensitive search\n<<option chkAnimate>> animation\n \n[[change advanced options|AdvancedOptions]]
<!--{{{-->\n<div id='head' class='header' macro='gradient vert #18f #04b'>\n <div class='headerShadow'>\n <span class='siteTitle' refresh='content' note='SiteTitle'></span>&nbsp;\n <span class='siteSubtitle' refresh='content' note='SiteSubtitle'></span>\n </div>\n <div class='headerForeground'>\n <span class='siteTitle' refresh='content' note='SiteTitle'></span>&nbsp;\n <span class='siteSubtitle' refresh='content' note='SiteSubtitle'></span>\n </div>\n <div id='displayControl' refresh='content' note='DisplayControl'></div> <!-- added by G -->\n</div>\n<div id='sidebar'>\n <div id='mainMenu' refresh='content' note='MainMenu'></div>\n <div id='sidebarOptions' refresh='content' note='SideBarOptions'></div>\n <div id='sidebarTabs' refresh='content' note='SideBarTabs'></div>\n</div>\n<div id='displayArea'>\n <div id='messageArea'></div>\n <div id='noteDisplay'></div>\n</div>\n<!--}}}-->
Format blocks of CSS definitions as:\n{{{\n/***\nDescription and comments go here, surrounded by comment brackets.\nFollowed by CSS code, which will be displayed in a code block.\n***/\n/*{{{*/\ndiv {color: #ff0000;}\n/*}}}*/\n}}}\nThat way the code will be run without the wikitext messing it up, and it will still be displayed nicely.
/***\n|''Name:''|RearrangeNotesPlugin|\n|''Source:''|http://www.TiddlyTools.com/#RearrangeNotesPlugin|\n|''Author:''|Joe Raii|\n|''License:''|[[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|\n|''~CoreVersion:''|2.1|\n***/\n//{{{\nStory.prototype.rearrangeNotesHijack_refreshNote = Story.prototype.refreshNote;\nStory.prototype.refreshNote = function(title,template,unused1,unused2,unused3,unused4,unused5)\n{\n this.rearrangeNotesHijack_refreshNote.apply(this,arguments);\n var theNote = document.getElementById(this.idPrefix + title); if (!theNote) return;\n var theHandle;\n var children=theNote.getElementsByTagName("*");\n for (var i=0; i<children.length; i++) if (hasClass(children[i],"title")) { theHandle=children[i]; break; }\n if (!theHandle) return theNote;\n\n Drag.init(theHandle, theNote, 0, 0, null, null);\n theHandle.style.cursor="move";\n theHandle.title="drag title to re-arrange notes"\n theNote.onDrag = function(x,y,myElem) {\n if (this.style.position!="relative")\n { this.savedstyle=this.style.position; this.style.position="relative"; }\n y = myElem.offsetTop;\n var next = myElem.nextSibling;\n var prev = myElem.previousSibling;\n if (next && y + myElem.offsetHeight > next.offsetTop + next.offsetHeight/2) { \n myElem.parentNode.removeChild(myElem);\n next.parentNode.insertBefore(myElem, next.nextSibling);//elems[pos+1]);\n myElem.style["top"] = -next.offsetHeight/2+"px";\n }\n if (prev && y < prev.offsetTop + prev.offsetHeight/2) { \n myElem.parentNode.removeChild(myElem);\n prev.parentNode.insertBefore(myElem, prev);\n myElem.style["top"] = prev.offsetHeight/2+"px";\n }\n };\n theNote.onDragEnd = function(x,y,myElem) {\n myElem.style["top"] = "0px";\n if (this.savedstyle!=undefined)\n this.style.position=this.savedstyle;\n }\n return theNote;\n}\n\n/**************************************************\n * dom-drag.js\n * 09.25.2001\n * www.youngpup.net\n **************************************************\n * 10.28.2001 - fixed minor bug where events\n * sometimes fired off the handle, not the root.\n **************************************************/\n\nvar Drag = {\n obj:null,\n\n init:\n function(o, oRoot, minX, maxX, minY, maxY) {\n o.onmousedown = Drag.start;\n o.root = oRoot && oRoot != null ? oRoot : o ;\n if (isNaN(parseInt(o.root.style.left))) o.root.style.left="0px";\n if (isNaN(parseInt(o.root.style.top))) o.root.style.top="0px";\n o.minX = typeof minX != 'undefined' ? minX : null;\n o.minY = typeof minY != 'undefined' ? minY : null;\n o.maxX = typeof maxX != 'undefined' ? maxX : null;\n o.maxY = typeof maxY != 'undefined' ? maxY : null;\n o.root.onDragStart = new Function();\n o.root.onDragEnd = new Function();\n o.root.onDrag = new Function();\n },\n\n start:\n function(e) {\n var o = Drag.obj = this;\n e = Drag.fixE(e);\n var y = parseInt(o.root.style.top);\n var x = parseInt(o.root.style.left);\n o.root.onDragStart(x, y, Drag.obj.root);\n o.lastMouseX = e.clientX;\n o.lastMouseY = e.clientY;\n if (o.minX != null) o.minMouseX = e.clientX - x + o.minX;\n if (o.maxX != null) o.maxMouseX = o.minMouseX + o.maxX - o.minX;\n if (o.minY != null) o.minMouseY = e.clientY - y + o.minY;\n if (o.maxY != null) o.maxMouseY = o.minMouseY + o.maxY - o.minY;\n document.onmousemove = Drag.drag;\n document.onmouseup = Drag.end;\n Drag.obj.root.style["z-index"] = "10";\n return false;\n },\n\n drag:\n function(e) {\n e = Drag.fixE(e);\n var o = Drag.obj;\n var ey = e.clientY;\n var ex = e.clientX;\n var y = parseInt(o.root.style.top);\n var x = parseInt(o.root.style.left);\n var nx, ny;\n if (o.minX != null) ex = Math.max(ex, o.minMouseX);\n if (o.maxX != null) ex = Math.min(ex, o.maxMouseX);\n if (o.minY != null) ey = Math.max(ey, o.minMouseY);\n if (o.maxY != null) ey = Math.min(ey, o.maxMouseY);\n nx = x + (ex - o.lastMouseX);\n ny = y + (ey - o.lastMouseY);\n Drag.obj.root.style["left"] = nx + "px";\n Drag.obj.root.style["top"] = ny + "px";\n Drag.obj.lastMouseX = ex;\n Drag.obj.lastMouseY = ey;\n Drag.obj.root.onDrag(nx, ny, Drag.obj.root);\n return false;\n },\n\n end:\n function() {\n document.onmousemove = null;\n document.onmouseup = null;\n Drag.obj.root.style["z-index"] = "0";\n Drag.obj.root.onDragEnd(parseInt(Drag.obj.root.style["left"]), parseInt(Drag.obj.root.style["top"]), Drag.obj.root);\n Drag.obj = null;\n },\n\n fixE:\n function(e) {\n if (typeof e == 'undefined') e = window.event;\n if (typeof e.layerX == 'undefined') e.layerX = e.offsetX;\n if (typeof e.layerY == 'undefined') e.layerY = e.offsetY;\n return e;\n }\n};\n//}}}\n
//''Shows DefaultNotes + most recently modified notes as default when any TiddlyWiki or adaptation is first loaded.''//\n//To use, copy this note's contents to a new note on your site and tag it "systemConfig".//\n\n{{{\nvar num = 3;\nvar ignore_tags = ['systemConfig', 'systemNotes', 'plugin', 'system'];\n\nfunction in_array(item, arr){for(var i=0;i<arr.length;i++)if(item==arr[i])return true};\nfunction get_parent(note){while(note && in_array('comments', note.tags)) note=store.fetchNote(note.tags[0]);return note};\nfunction unique_list(list){var l=[];for(i=0;i<list.length;i++)if(!in_array(list[i], l))l.push(list[i]);return l};\nfunction get_recent_notes(){\n var notes = store.getNotes('modified');\n var names = store.getNoteText("DefaultNotes").readBracketedList();\n var ignore_notes = [];\n for(var i=0; i<ignore_tags.length; i++)\n ignore_notes=ignore_notes.concat(store.getTaggedNotes(ignore_tags[i]));\n for(var i=notes.length-1; i>=0; i--) {\n if(in_array('comments', notes[i].tags)) {\n var t = get_parent(notes[i]);\n if(t)names.push(t.title)\n }\n else if(!in_array(notes[i], ignore_notes))\n names.push(notes[i].title);\n }\n return unique_list(names).slice(0, num);\n}\nvar names = get_recent_notes();\n_restart = restart\nrestart = function() {\n if(window.location.hash) _restart();\n else story.displayNotes(null,names);\n}\n}}}
/***\n''Name:'' ReferencesPlugin\n''Author:'' Garrett Lisi\n''Description:'' Places a comma separated list of referring notes at the bottom of each note -- replacing the "references" command bar button.\n''Installation:'' Copy this note, change the [[StyleSheet]] to set the references class style, and add a line in the [[ViewTemplate]].\n\n''Code:''\n***/\n/*{{{*/\nconfig.macros.references = {};\nconfig.macros.references.handler = function(place,macroName,params,wikifier,paramString,note)\n{\n var references = store.getReferringNotes(note.title);\n if(references.length>0)\n {\n// createTiddlyText(place,"\sxAB "); \n createTiddlyLink(place,references[0].title,true);\n }\n for(var r=1; r<references.length; r++)\n if(references[r].title != note.title)\n {\n createTiddlyText(place,", ");\n createTiddlyLink(place,references[r].title,true);\n }\n}\n/*}}}*/
<<list shadowed>>
<<search>><<newNote>><<permaview>><<upload>><<collapseAll>><<closeAll>><<slider chkSliderOptionsPanel OptionsPanel '»' 'Change options'>>
|username: | <<option txtUserName>> |
<<tabs txtMainTab Contents 'Hierarchy of tags and content' TabContents Latest 'Recently modified notes' TabTimeline Tags 'List all tags' TabTags All 'List all notes' TabAll>>
Sci21 wiki
http://physicswiki.org/sci21/index.html
/***\nThe StyleSheet holds the custom style modifications. It augments and overrides the hidden default pages.\n***/\n/*{{{*/\nbody {background:#ddd;\n position: static;\n font-size: .75em;\n font-family: arial,helvetica;}\n.header {height: 5.8em;}\n.headerShadow {\n padding: 2em 1em 1em 20em;\n left: 1px;\n top: 1px;}\n.headerForeground {\n padding: 2em 1em 1em 20em;\n color: #ddd}\n.siteTitle {font-size: 2.5em;}\n.siteSubtitle {font-size: 1em;}\n#displayControl {\n position:absolute;\n top:0;\n left:0;\n margin:0em;\n padding: 0em;\n background: #ddd;}\n#displayControl a{text-decoration: none; font-size: 1em; color: #04b;}\n#sidebar {\n font-size: 1em;\n left: 0em;\n width: 19em;\n overflow: hidden;}\n#mainMenu {\n position: relative;\n width: 17em;\n margin: .5em 0em 0em .5em;\n padding: 0.3em .5em 0.3em .5em;\n text-align: left;\n line-height: 1.4em;\n font-size: 1em;\n border-bottom:1px solid #bbb;\n border-right:1px solid #bbb;\n background:#eee;}\n#sidebarOptions {\n width: 17.6em;\n margin: .5em .5em 0em .5em;\n padding: 0.3em 0em 0.3em 0.4em;\n overflow: hidden;\n font-size: 1em;\n border-bottom:1px solid #bbb;\n border-right:1px solid #bbb;\n background:#eee;}\n#sidebarOptions a {\n margin: 0em 0em;\n padding: 0.15em .3em;\n font-size: 1.1em;\n display: inline;}\n#sidebarOptions input {\n margin: 0em 0.1em;\n width: 6.7em;\n font-size: 1em;\n padding: 0.2em 0.2em;\n border: 1px solid #888;}\n#sidebarOptions .button {border: 1px solid #eee;}\n#sidebarOptions .button:hover {\n color: #014;\n background: #fe8;\n border: 1px solid #db4;}\n#sidebarOptions .sliderPanel {\n margin-top: .5em;\n margin-right: 1em;\n margin-bottom: .5em;\n margin-left: .5em;\n font-size: 1em;\n padding: 1em;\n background: #aaa;}\n#sidebarOptions .sliderPanel a {\n display: inline;}\n#sidebarOptions .sliderPanel input {\n width: 1em;\n font-size: 1em;}\n#sidebar .inputFix input{width: 8em;}\n#sidebarTabs {\n width: 16em;\n margin: .5em .5em 1em .5em;\n font-size: 1em;}\n#sidebarTabs .tabset {padding: .3em 0em 0em 0em;}\n#sidebarTabs .tab {margin: .5em 0em 0em 0.5em;\n padding: 2px;\n border-top: 1px solid #ddd;\n border-left: 1px solid #ddd;\n border-right:1px solid #bbb;}\n#sidebarTabs .tabContents {\n width: 18em;\n margin: 0em 0em 0em 0em;\n padding: .25em 0em .25em 0em;\n border-top: none;\n border-left: none;\n border-bottom:1px solid #bbb;\n border-right:1px solid #bbb;\n overflow: hidden;}\n#sidebarTabs .tabContents ul{\n margin-left: .65em;\n overflow: hidden;}\n#messageArea {\n position:absolute;\n top:0;\n left:50em;\n right: 1em;\n margin:0.3em;\n padding: 0.4em;\n border: 1px solid #999;\n background: #ddd;\n color: #014;}\n#messageArea a{text-decoration: none; font-size: .75em; }\n*[id='messageArea'] {position:absolute !important; z-index:99;}\n.messageToolbar {padding: 0em;}\n#messageArea .button {\n border: 1px solid #555;\n padding: 0.1em 0.1em 0.1em 0.1em;\n color: #014;\n background: #aaa;}\n.popup {\n background: #fe8;\n border: 1px solid #db4;}\n.popup hr {\n color: #db4;\n background: #db4;\n border-bottom: 1px;}\n.popup li.disabled {\n color: #db4;}\n.popup li a, .popup li a:visited {\n color: #04b;\n border: none;}\n.popup li a:hover {\n background: #04b;\n color: #fe8;\n border: none;}\n#displayArea {\n margin-left: 18.5em;\n margin-right: 0em;\n margin-top: 0em;\n padding-top: 0em;\n padding-bottom: .25em;}\n.toolbar {\n float: right;\n font-size: 1em;}\n.note {\n border-bottom: 1px solid #bbb;\n border-right: 1px solid #bbb;\n margin: .5em .5em .5em .75em;\n padding-bottom: .5em;\n padding-top: .75em;\n background-color: white;}\n.shadow .title {\n color: #000; background: #fff;}\n.title {\n font-size: 1.5em;\n background: #fff;\n color: #000;}\nh1,h2,h3,h4,h5 {\n padding-left: 0em;\n padding-top: 0em;\n padding-bottom: 0em;\n margin-top: .5em;\n margin-bottom: .1em;\n color: #000;\n background: transparent;}\nh1 {font-size: 1.2em;}\nh2 {font-size: 1.15em;}\nh3 {font-size: 1.1em;}\nh4 {font-size: 1.05em;}\nh5 {font-size: 1em;}\n.subtitle {\n font-size: .8em;\n padding-right: 1em;\n padding-left: 3em;\n padding-top: 0em;\n margin-bottom: 0.25em;\n color: #888;}\n.tagged {margin: 0em 0em .25em 1.25em;}\n.selected .tagging, .selected .tagged {\n background-color: #eee;\n border: 1px solid #ccc;}\n.tagging .button, .tagged .button {color: #666;}\n.tagClear{margin-top: 0.1em;clear:both;}\n/* ie fix? */\n.viewer {\n line-height: 120%;\n font-size: 1.25em;}\n.viewer .listTitle {list-style-type:none; margin-left:-2em; background-color:white;}\n.viewer ul, .viewer ol {\n margin-left: 0.5em;\n margin-top: 0em;\n margin-bottom: 0em;\n padding-left: 1.5em;}\n.viewer pre {overflow: visible;}\n.viewer hr {\n border: 0;\n border-top: solid 1px #666;}\n.viewer table {\n text-align: center;\n margin-left: auto;\n margin-right: auto;\n border: 2px solid #000;}\n.viewer th, thead td {\n font-size: 1.0em;\n font-style: normal;\n background: #FFF;\n border-right: 1px solid #000;\n border-bottom: 2px solid #000;\n color: #000}\n.viewer td, .viewer tr {\n border-right: 1px solid #000;}\n.viewer caption {\n text-align: center;\n margin-left: auto;\n margin-right: auto;}\n.viewer table.gtable {\n border: none;}\n.viewer table.gtable td, .viewer table.gtable tr {\n border: none;}\n.viewer table.ptable {\n font-size: .7em;\n border: 2px solid #000;}\n.viewer table.ptable td, .viewer table.ptable tr {\n padding: 0px;\n padding-left: 2px;\n padding-right: 2px;\n padding-top: 0px;\n padding-bottom: 0px;\n border: none;\n border-right: 1px solid #000;}\n.viewer table.ptable th {\n padding: 0px;\n padding-left: 2px;\n padding-right: 2px;\n padding-top: 0px;\n padding-bottom: 1px;\n background: #FFF;\n border: none;\n border-right: 1px solid #000;\n border-bottom: 2px solid #000;\n color: #000}\n.viewer tr.butt td {\n border-bottom: 1px solid #000;}\n.editorFooter .button {padding-top: 0px; padding-bottom: 0px;}\n.references {\n font-size: 1em;\n text-align: center;\n color: #666;\n margin-top: .75em;\n padding: .25em;\n border: 1px solid #eee;\n background-color: #eee;}\n.selected .references {\n background-color: #eee;\n border: 1px solid #ccc;}\n.references .tiddlyLinkExisting {font-weight: normal;}\n/*}}}*/
@media print {\n#mainMenu, #sidebar, #messageArea, #displayControl {display: none ! important;}\n#displayArea {margin: 1em 1em 0em 1em;}\n.note {\n border-bottom: 0px solid #bbb;\n border-right: 0px solid #bbb;\n page-break-after: always;}\n.toolbar {display: none ! important;}\n.references {display: none;}\n.tagged {display: none;}\n.header {display: none;}\n}
!Header 1\n!!Header 2\n!!!Header 3\n!!!!Header 4\n!!!!!Header 5\n{{{\n!Header 1\n!!Header 2\n!!!Header 3\n!!!!Header 4\n!!!!!Header 5\n}}}\nA carriage return ends a paragraph, so a slightly larger (this should be made bigger) space appears between paragraphs. But the beginning of a new paragraph is not indented, even if tabs or spaces are inserted. So, for now, use extra carriage returns to separate paragraphs.\n\nAnd maybe implement tab indentation in the future.
|!Symbol|![[LaTeX]]|!Use|\n| $\smathbb{R} \s;\s; \smathbb{C} \s;\s; n \s;\s; \sud{a}$ | {{{ \smathbb{R} \smathbb{C} n \sud{a} }}} |[[real numbers|http://en.wikipedia.org/wiki/Real_numbers]], complex numbers, dimension, [[Grassmann number]] |\n| $M \s; \s; T_p M \s; \s; T_p^* M$ | {{{M T_p M T_p^* M }}} |[[manifold]], [[tangent space to M at point p|coordinate basis vectors]], [[cotangent space to M at point p|coordinate basis 1-forms]] |\n| $x^i \s; \s; \sve{\spa_i} \s; \s; \sve{v} \s; \s; \svv{l}$ | {{{x^i \sve{\spa_i} \sve{v} \svv{l} }}} |[[coordinates|manifold]] and [[coordinate basis vectors]] with coordinate [[indices]], [[tangent vector]], [[loop|vector-form algebra]] |\n| $t \s; \s; \sta$ | {{{ t \sta }}} |parameter time, [[proper time]] |\n| $\sf{dx^i} \s;\s; \sf{a} \s;\s; \sff{b} \s;\s; \sfff{c} \s;\s; \snf{f}$ | {{{\sf{dx^i} \sf{a} \sff{b} \sfff{c} \snf{f} }}} |[[coordinate basis 1-forms]], [[1-form]], [[2-form|differential form]], 3-form, [[differential form]] of high or unspecified form grade |\n| $\spa_i \s;\s; \sf{\spa} \s;\s; \sf{d}$ | {{{\spa_i \sf{\spa} \sf{d} }}} |[[partial derivative]], partial derivative, [[exterior derivative]] |\n| $\sph \s; \s; \sph^* \s; \s; \sph_*$ | {{{\sph \sph^* \sph_* }}} |[[diffeomorphism]], [[pullback]], pushforward |\n| ${\scal L}_{\sve{v}} \s;\s; \slb\sve{v},\sve{u}\srb_L \s;\s; \sve{\sDe}$ | {{{{\scal L}_{\sve{v}} \slb\sve{v},\sve{u}\srb_L \sve{\sDe} }}} |[[Lie derivative]], [[Lie bracket|Lie derivative]] of two [[vector fields|tangent bundle]], [[distribution]] |\n| $\snf{\sve{A}} \s;\s; {\scal L}_{\snf{\sve{K}}} \s;\s; \slb\snf{\sve{K}},\snf{\sve{L}}\srb_L \s;\s; \sf{\sve{P}}$ | {{{ \sf{\sve{A}} {\scal L}_{ \snf{\sve{K}} } \slb\snf{\sve{K}},\snf{\sve{L}}\srb_L \sf{\sve{P}} }}} |[[vector valued form]], [[FuN derivative]], FuN bracket, [[vector projection]] |\n| $\sf{\sve{\scal A}} \s;\s; \sff{\sve{\scal F}} \s;\s; \sf{\scal D}$ | {{{ \sf{\sve{\scal A}} \sff{\sve{\scal F}} \sf{\scal D} }}} |[[Ehresmann connection]], [[FuN curvature]], [[Ehresmann covariant derivative]] |\n| $\sde_i^j \s;\s; \set_{\sal \sbe} \s; \s; \sep_{\sal \sdots \sbe} \s; \s; \sotimes$ | {{{ \sde_i^j \set_{\sal \sbe} \sep_{\sal \sdots \sbe} \sotimes }}} |[[Kronecker delta|http://en.wikipedia.org/wiki/Kronecker_delta]], [[Minkowski metric]], [[permutation symbol]], [[Kronecker product]] |\n| $G \s;\s; g^- \s;\s; T_A \s;\s; \slb{T_A,T_B}\srb$ | {{{G g^- T_A \slb{T_A,T_B}\srb }}} |[[Lie group]], [[inverse]] of a group element, [[Lie algebra]] generators, [[commutator]] bracket |\n| $\sf{\sna} \s;\s; \sf{A} \s;\s; \sff{F}$ | {{{\sf{\sna} \sf{A} \sff{F} }}} |[[covariant derivative]], [[connection]], [[curvature]] |\n| $\sf{\scal I} \s;\s; \sf{\sve{\scal I}} \s;\s; \sve{\sxi^L_A} \s;\s; \sve{\sxi^R_A}$ | {{{\sf{\scal I} \sf{\sve{\scal I}} \sve{\sxi^L_A} \sve{\sxi^R_A} }}} |[[Maurer-Cartan form]], Ehresmann-Maurer-Cartan form, [[left and right action vector fields|Lie group geometry]] |\n| $Cl \s; \s; Cl^*$ | {{{Cl Cl^* }}} |[[Clifford algebra]], [[Clifford group]] |\n| $\sga_\sal \s; \s; \sga_{\sal \sdots \sbe} \s; \s; \sga$ | {{{\sga_\sal \sga_{\sal \sdots \sbe} \sga }}} |[[Clifford basis vectors]], [[Clifford basis elements]], Clifford [[pseudoscalar]] |\n| $\shat{A} \s; \s; \stilde{A} \s; \s; \sbar{A} \s; \s; A^\sdagger \s; \s; \soverline{A}$ | {{{\shat{ \stilde{ \sbar{ \soverline{A}^\sdagger } } } }}} |[[Clifford involution, reverse, conjugate, Hermitian conjugate, Dirac conjugate|Clifford conjugate]] |\n| $\scdot \s; \s; \stimes$ | {{{\scdot \stimes }}} |symmetric and antisymmetric [[Clifford algebra]] product |\n| $\slb{A,\sdots,B}\srb_A \s;\s; a_{\slb{\sal\sdots\sbe}\srb}$ | {{{ \slb{A,\sdots,B}\srb_A a_{\slb{\sal\sdots\sbe}\srb} }}} |[[antisymmetric bracket]], [[index bracket]] |\n| $\sli{A}\sri_q \s; \s; \sli{A}\sri$ | {{{ \sli{A}\sri_q \sli{A}\sri }}} |[[Clifford grade]] $q$ part, [[scalar part|Clifford grade]] |\n| $\sf{A} \s; \s; \sff{b} \s; \s; \sve{e}$ | {{{ \sf{A} \sff{b} \sve{e} }}} |[[Lieform]]s or [[Clifform]]s |\n| $\slp{e_i}\srp^\sal \s;\s; \slp{e_\sal}\srp^i \s;\s; g_{ij} \s;\s; \slp\sve{u},\sve{v}\srp$ | {{{ \slp{e_i}\srp^\sal \slp{e_\sal}\srp^i g_{ij} \slp\sve{u},\sve{v}\srp }}} |co[[frame]] matrix, frame matrix, [[metric]], scalar product |\n| $\sf{e^\sal} \s;\s; \sve{e_\sal}$ | {{{ \sf{e^\sal} \sve{e_\sal} }}} |co[[frame]] 1-forms, orthonormal basis vectors |\n| $\sf{e} \s;\s; \sve{e}$ | {{{ \sf{e} \slp{e_i}\srp^\sal \sve{e} \slp{e_\sal}\srp^i g_{ij} }}} |co[[frame]], frame |\n| $\snf{e} \s;\s; \sll{e}\srl$ | {{{ \snf{e} \sll{e}\srl }}} |[[volume form]], frame [[determinant]] |\n| $\snf{*f} \s;\s; \sff{\svv{\sep}}$ | {{{ \snf{*f} \sff{ \svv{\sep} } }}} |[[Hodge dual]], Hodge dual projector |\n| $\sf{e^s} \s;\s; \slp{e^s_i}\srp^\sal \s;\s; s$ | {{{ \sf{e^s} \s;\s; \slp{e^s_i}\srp^\sal \s;\s; s }}} |[[special frame]], special coframe matrix, conformal scalar |\n| $TM \s;\s; T^*M$ | {{{ TM T^*M }}} |[[tangent bundle]], [[cotangent bundle]] |\n| $\sGa^k{}_{ij} \s;\s; \sf{\sGa}^k{}_j \s;\s; \sff{R}^k{}_j$ | {{{ \sGa^k{}_{ij} \sf{\sGa}^k{}_j \sff{R}^k{}_j }}} |[[Christoffel symbols]], [[tangent bundle connection]], [[Riemann curvature]] |\n| $\sf{R}{}_j \s;\s; R$ | {{{ \sf{R}{}_j R }}} |[[Ricci curvature]], [[curvature scalar]] |\n| $L^\sbe{}_\sal \s;\s; \sf{w}^\sbe{}_\sal \s;\s; \sff{F}^\sbe{}_\sal$ | {{{ L^\sbe{}_\sal \sf{w}^\sbe{}_\sal \sff{F}^\sbe{}_\sal }}} |[[Lorentz rotation]], [[tangent bundle spin connection|tangent bundle connection]], [[Riemann curvature]] |\n| $ClM \s;\s; Cl^1M$ | {{{ ClM Cl^1M }}} |[[Clifford bundle]], [[Clifford vector bundle]] |\n| $\sf{A} \s;\s; \sf{\som} \s;\s; \sff{R}$ | {{{ \sf{A} \sf{\som} \sff{R} }}} |[[Clifford connection]], [[spin connection]], [[Clifford-Riemann curvature]] |\n| $\sf{R} \s;\s; R$ | {{{ \sf{R} R }}} |[[Clifford-Ricci curvature]], [[Clifford curvature scalar]] |\n| $\sff{T} \s;\s; \sf{\ska}$ | {{{ \sff{T} \sf{\ska} }}} |[[torsion]], contorsion |\n| $\sud{C} \s;\s; \snf{\sod{B}} \s;\s; \sudf{A} \s;\s; \sudff{F}$ | {{{ \sud{C} \snf{\sod{B}} \sudf{A} \sudff{F} }}} |[[BRST|BRST technique]] ghost, anti-ghost, extended connection, extended curvature |
/***\nThe new SystemConfig feature allows arbitrary JavaScript code to be executed at startup from any note that is tagged with 'systemConfig', one of the new SpecialTags.\n***/\n/*{{{*/\nconfig.messages.messageClose.text = "\sxD7";\nconfig.messages.messageClose.tooltip = "Close this message";\nconfig.views.wikified.defaultText = "";\nconfig.views.wikified.tag.labelTags = "";\nconfig.views.wikified.tag.openTag = "";\nconfig.views.wikified.tag.tooltip = "Show other notes tagged with '%0'";\nconfig.views.editor.tagPrompt = "separated by spaces, using [[double square brackets]] if necessary";\n\nconfig.commands.closeNote.text = "\sxD7";\nconfig.commands.closeNote.tooltip = "Close this note";\nconfig.commands.closeOthers.text = "\sxA4";\nconfig.commands.closeOthers.tooltip = "Close all others";\nconfig.commands.jump.text = "\sxBB";\nconfig.commands.jump.tooltip = "Jump to another open note";\nconfig.commands.editNote.text = "+";\nconfig.commands.editNote.readOnlyText = " ";\nconfig.commands.editNote.tooltip = "Edit this note (double click)";\nconfig.commands.references.text = "\sxA5";\nconfig.commands.references.tooltip = "Notes that link to this one";\nconfig.commands.saveNote.text = "\sxA7";\nconfig.commands.saveNote.readOnlyText = ".";\nconfig.commands.saveNote.tooltip = "Save changes";\nconfig.commands.cancelNote.text = "\sxA2";\nconfig.commands.cancelNote.tooltip = "Cancel changes";\nconfig.commands.deleteNote.text = "\sxD8";\nconfig.commands.deleteNote.tooltip = "Delete this note";\n\nconfig.macros.timeline.dateFormat = "MMM DD, YYYY";\nconfig.macros.search.prompt = "Search this site";\nconfig.macros.search.successMsg = "%0 notes found matching %1";\nconfig.macros.search.failureMsg = "No notes found matching %0";\nconfig.macros.newNote.prompt = "Create a new note";\nconfig.macros.newNote.label = "+";\nconfig.macros.saveChanges.label = "Save";\nconfig.macros.saveChanges.prompt = "Save this whole wiki as an html file";\nconfig.macros.newJournal.prompt = "Create a new note from the current date and time";\nconfig.macros.permaview.label = "\sxA5";\nconfig.macros.permaview.prompt = "Make a URL showing all currently displayed notes";\nconfig.macros.closeAll.label = "\sxD7";\nconfig.macros.permaview.label = "\sxA5";\nconfig.macros.search.label = "\sxA7";\n/*}}}*/
*<<slider chkSliderphysicsF physicsF 'physics »' 'physics stuff, what this site is all about'>>\n*<<slider chkSlidermetaF metaF 'meta »' 'describe the operation of this site'>>\n<<ListTagged none>>
<<list all>>
Existing [[Tags]] and note population:\n<<AllTagsExcept excludeLists folder plugin system systemConfig systemNotes template>>
<<timeline>>
sample table:\n|!th1111111111|!th2222222222|\n|>| colspan |\n| rowspan |left|\n|~| right|\n|bgcolor(#a0ffa0):colored| center |\n|caption|c\n{{{\nsample table:\n|!th1111111111|!th2222222222|\n|>| colspan |\n| rowspan |left|\n|~| right|\n|bgcolor(#a0ffa0):colored| center |\n|caption|c\n}}}
<<tabs txtFavourite\nUrgent "Priority 1" ToDo1\nImportant "Priority 2" ToDo2\n"Need To Do" "Priority 3" ToDo3\n>>\n{{{\n<<tabs txtFavourite\nUrgent "Priority 1" ToDo1\nImportant "Priority 2" ToDo2\n"Need To Do" "Priority 3" ToDo3\n>>\n}}}
*<<tag physics>>- physics stuff, what this site is all about\n**<<tag sym>>- symmetries, groups, Lie algebra\n***<<tag gauge>>- Yang-Mills field theory, Noether\n****<<tag pb>>- principal bundles\n*****<<tag ss>>- homogeneous spaces\n******<<tag cp2>>- complex projective space, Kahler manifolds\n*****<<tag cartan>>- Cartan geometry\n****<<tag brst>>- BRST formalism\n***<<tag kk>>- Kaluza-Klein theory, Killing vector fields\n****<<tag ss>>- homogeneous spaces\n*****<<tag cp2>>- complex projective space, Kahler manifolds\n****<<tag cartan>>- Cartan geometry\n***<<tag sm>>- the standard model of particles\n****<<tag gut>>- SU(5), SO(10), TSmith, etc.\n****<<tag higgs>>- Higgs scalar and symmetry breaking\n***<<tag clifford>>- Clifford algebra\n****<<tag dirac>>- Dirac operators, Dirac equation\n*****<<tag spin>>- spin odds and ends (more theoretical then dirac)\n**<<tag gr>>- General Relativity\n***<<tag nat>>- natural operators, vectors, forms\n***<<tag kk>>- Kaluza-Klein theory, Killing vector fields\n****<<tag ss>>- homogeneous spaces\n*****<<tag cp2>>- complex projective space, Kahler manifolds\n****<<tag cartan>>- Cartan geometry\n***<<tag cosmo>>- cosmology\n***<<tag grscal>>- gr plus a scalar field, Brans-Dicke theories, conformal transformations\n***<<tag lqg>>- loop quantum gravity, loops, spin foams, spin networks\n***<<tag tors>>- torsion, teleparallel gravity\n**<<tag ham>>- Hamiltonian dynamics, symplectic geometry\n**<<tag qm>>- quantum mechanics\n***<<tag qft>>- Quantum Field Theory\n***<<tag qmi>>- interpretations and minor modifications of quantum mechanics\n****<<tag bohm>>- Bohmian quantum mechanics\n**<<tag math>>- stuff of a more abstract mathematical nature\n***<<tag dg>>- basics of differential geometry\n****<<tag fib>>- fiber bundles\n*****<<tag nat>>- natural operators, vectors, forms\n*****<<tag pb>>- principal bundles\n******<<tag ss>>- homogeneous spaces\n*******<<tag cp2>>- complex projective space, Kahler manifolds\n******<<tag cartan>>- Cartan geometry\n***<<tag topo>>- topology, branching manifolds, morse theory\n**<<tag other>>- AI, mech, fluids, thermodynamics, entropy\n**<<tag speculative>>- wild speculation, rather than solid stuff\n**<<tag paper>>- notes about or containing links to a paper\n***<<tag person>>- people with interesting physics, usually with links to papers\n*<<tag meta>>- describes the operation of this site\n**<<tag editing>>- tips on editing and authoring notes, including all sorts of tools\n**<<tag 0>>- a note that's linked to but is empty or needs editing\n**<<tag system>>- control how the site operates and is layed out\n***<<tag systemConfig>>- this is a special tag, marking notes with code to be loaded at startup\n***<<tag xsystemConfig>>- deactivated code\n***<<tag systemNotes>>- system control notes loaded at startup, used to control content\n***<<tag plugin>>- code snippets enhancing functionality, and containing descriptions of what they do\n***<<tag template>>- custom css page template, used to describe layout\n***<<tag folder>>- a folder is a tag is a note\n**<<tag illus>>- notes containing illustrations\n**<<tag slide>>- presentation slide (start note title with ".")\n\nThe tags group collections of notes into sets -- they're adjectives, directories, or folders. By selecting a tag, visible in the upper right of each note, you can jump to any note labeled with that tag -- a navigational convenience. It's efficacious to build a flexible hierarchy of tagged content. Each note should be labeled by its most appropriate, "lowest" leaf tags -- more than one as appropriate. Click on the tag to see a popup menu of notes with that tag. Alternatively, these folders and their contents may be selectively displayed in the "Contents" tab to the left.\n\n//implementing hierarchical tagging seems to be a bit of a mess right now... wait and it will get better.//
/***\n''TextAreaPlugin for TiddlyWiki version 2.0''\n^^author: Eric Shulman - ELS Design Studios\nsource: http://www.elsdesign.com/tiddlywiki/#TextAreaPlugin\nlicense: [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]^^\n\nThis plugin 'hijacks' the TW core function, ''Story.prototype.focusNote()'', so it can add special 'keyDown' handlers to adjust several behaviors associated with the textarea control used in the note editor. Specifically, it:\n* Adds text search INSIDE of edit fields.^^\nUse ~CTRL-F for "Find" (prompts for search text), and ~CTRL-G for "Find Next" (uses previous search text)^^\n* Enables TAB characters to be entered into field content^^\n(instead of moving to next field)^^\n* Option to set cursor at top of edit field instead of auto-selecting contents^^\n(see configuration section for checkbox)^^\n!!!!!Configuration\n<<<\n<<option chkDisableAutoSelect>> place cursor at start of textarea instead of pre-selecting content\n<<option chkTextAreaExtensions>> add control-f (find), control-g (find again) and allow TABs as input in textarea\n<<<\n!!!!!Installation\n<<<\nImport (or copy/paste) the following notes into your document:\n''TextAreaPlugin'' (tagged with <<tag systemConfig>>)\n<<<\n!!!!!Revision History\n<<<\n''2006.01.22 [1.0.1]''\nonly add extra key processing for TEXTAREA elements (not other edit fields).\nadded option to enable/disable textarea keydown extensions (default is "standard keys" only)\n''2006.01.22 [1.0.0]''\nMoved from temporary "System Tweaks" note into 'real' TextAreaPlugin note.\n<<<\n!!!!!Code\n***/\n//{{{\nversion.extensions.textAreaPlugin= {major: 1, minor: 0, revision: 1, date: new Date(2006,1,23)};\n//}}}\n\n//{{{\nif (!config.options.chkDisableAutoSelect) config.options.chkDisableAutoSelect=false; // default to standard action\nif (!config.options.chkTextAreaExtensions) config.options.chkTextAreaExtensions=false; // default to standard action\n\n// Focus a specified note. Attempts to focus the specified field, otherwise the first edit field it finds\nStory.prototype.focusNote = function(title,field)\n{\n var note = document.getElementById(this.idPrefix + title);\n if(note != null)\n {\n var children = note.getElementsByTagName("*")\n var e = null;\n for (var t=0; t<children.length; t++)\n {\n var c = children[t];\n if(c.tagName.toLowerCase() == "input" || c.tagName.toLowerCase() == "textarea")\n {\n if(!e)\n e = c;\n if(c.getAttribute("edit") == field)\n e = c;\n }\n }\n if(e)\n {\n e.focus();\n e.select(); // select entire contents\n\n // TWEAK: add TAB and "find" key handlers\n if (config.options.chkTextAreaExtensions) // add extra key handlers\n addKeyDownHandlers(e);\n\n // TWEAK: option to NOT autoselect contents\n if (config.options.chkDisableAutoSelect) // set cursor to start of field content\n if (e.setSelectionRange) e.setSelectionRange(0,0); // for FF\n else if (e.createTextRange) { var r=e.createTextRange(); r.collapse(true); r.select(); } // for IE\n\n }\n }\n}\n//}}}\n\n//{{{\nfunction addKeyDownHandlers(e)\n{\n // exit if not textarea or element doesn't allow selections\n if (e.tagName.toLowerCase()!="textarea" || !e.setSelectionRange) return;\n\n // utility function: exits keydown handler and prevents browser from processing the keystroke\n var processed=function(ev) { ev.cancelBubble=true; if (ev.stopPropagation) ev.stopPropagation(); return false; }\n\n // capture keypress in edit field\n e.onkeydown = function(ev) { if (!ev) var ev=window.event;\n\n // process TAB\n if (!ev.shiftKey && ev.keyCode==9) { \n // replace current selection with a TAB character\n var start=e.selectionStart; var end=e.selectionEnd;\n e.value=e.value.substr(0,start)+String.fromCharCode(9)+e.value.substr(end);\n // update insertion point, scroll it into view\n e.setSelectionRange(start+1,start+1);\n var linecount=e.value.split('\sn').length;\n var thisline=e.value.substr(0,e.selectionStart).split('\sn').length-1;\n e.scrollTop=Math.floor((thisline-e.rows/2)*e.scrollHeight/linecount);\n return processed(ev);\n }\n\n // process CTRL-F (find matching text) or CTRL-G (find next match)\n if (ev.ctrlKey && (ev.keyCode==70||ev.keyCode==71)) {\n // if ctrl-f or no previous search, prompt for search text (default to previous text or current selection)... if no search text, exit\n if (ev.keyCode==70||!e.find||!e.find.length)\n { var f=prompt("find:",e.find?e.find:e.value.substring(e.selectionStart,e.selectionEnd)); e.focus(); e.find=f?f:e.find; }\n if (!e.find||!e.find.length) return processed(ev);\n // do case-insensitive match with 'wraparound'... if not found, alert and exit \n var newstart=e.value.toLowerCase().indexOf(e.find.toLowerCase(),e.selectionStart+1);\n if (newstart==-1) newstart=e.value.toLowerCase().indexOf(e.find.toLowerCase());\n if (newstart==-1) { alert("'"+e.find+"' not found"); e.focus(); return processed(ev); }\n // set new selection, scroll it into view, and report line position in status bar\n e.setSelectionRange(newstart,newstart+e.find.length);\n var linecount=e.value.split('\sn').length;\n var thisline=e.value.substr(0,e.selectionStart).split('\sn').length;\n e.scrollTop=Math.floor((thisline-1-e.rows/2)*e.scrollHeight/linecount);\n window.status="line: "+thisline+"/"+linecount;\n return processed(ev);\n }\n }\n}\n//}}}
What to do next.\n\nNew notes and changes:\n*[[Cl(3,1)]]\n*[[energy-momentum tensor]]\n*tag the slides?\n*If $so(8)$ and [[su(3)]] are embedded in [[E8]] as in [[the big picture]], then the coupling constants for GR and EW at that ToE scale should be the same, and the [[su(3)]] coupling constant should be larger by a factor of $\ssqrt{2}$ because of how the $su(3)$ root hexagon is scaled compared to the [[Gell-Mann matrices]].\n**Maybe pull running SM coupling constants from Frank Wilczek's [[paper|http://arxiv.org/abs/hep-th/9803075]].\n*clean up [[the big picture]]\n**improve Higgs and torsion part in action\n*fix [[Cartan geometry]] -- take out "G going wavy"\n*[[Cl(1,7)]] or [[Cl(7,1)]] modeled on [[Cl(8)]]\n*[[SO(1,7)]] or [[SO(7,1)]] modeled on [[SO(8)]]\n*[[Cl(1,15)]] modeled on [[Cl(16)]]\n*[[standard model polytope]]\n**Mathematica\n***Start with big matrix from BF paper.\n***label roots as particles\n***plot roots in 15 planes\n***get things ready for Troy\n*[[e8]]\n**Mathematica\n***Build generators from [[Cl(16)]].\n***Calculate e8 roots\n***group and label them\n***plot roots in 28 planes\n**[[e8 triality decomposition]]\n**[[e(7,1)]]\n*[[representation]]\n**add links from others\n*[[broken SU(3)]]\n*[[CP2]]\n*[[doubly homogeneous space]] -- [[normalizer]] $H \striangleleft N_G(H) \ssubset G$\n**Baez TWF on double coset space\n*[[Kaluza-Klein]]\n*[[Cartan tangent bundle curvature]]\n*[[calculus of variations]]\n*[[Hamiltonian]]\n\nNew [[Tags]] and hierarchy adjustment:\n*[[e8]] under sym\n*[[toe]] under gr and sm\n*[[conf]] conferences and talks, under meta\n\nNew Illustrations:\n*[[submanifold]]\n*[[Killing vector]]\n*[[Ehresmann Cartan geometry]]\n\nPapers to read:\n*Frederick Witt, on [[triality]] (includes spinor valued 1-forms)\n**[[Special metrics and Triality|papers/0602414.pdf]]\n**[[Special metric structures and closed forms|papers/0502443.pdf]]\n***thesis\n\nChange referenced paper files to "[author - title|author - title.pdf]"?\n\nNew features:\n*Have Google searches navigate to search results.\n\nAnd<<slider chkSliderTDM [[To Do Maybe]] 'Maybe do these»' 'things I maybe want to do'>> ([[To Do Maybe]])\n
New notes:\n*might need to change signs for all [[Clifford rotation]]s, to make counter-clockwise positive instead of negative, and change coefficient order in the [[spin connection]].\n\nNew [[Tags]]\n*nat is awfully full\n\nContent to add:\n*from FQXi proposal\n*from BF paper\n*from physics notes\n*summary/presentation collection of notes\n\nFeatures to add:\n*fix command bar formatting for ie\n*have linked notes pop up above linking note, referencing notes pop up below\n**J.S. says this will be easy in next version\n*have search return a stack of collapsed notes\n*hypergraph, tag hierarchy and note connections\n*remove system tags and notes from [[TabContents]] and [[Tags]]\n*hyperlinks sort of work in jsMath\n*maybe insert {{{<scriipt>jsMath = {Font: {Message: function () {} }}</scriipt>}}} to turn off jsmath font message.\n*Contents lists hierarchical tags + descriptions (folder slider tooltips)\n**any way to do this automatically?\n***maybe with Udo's data in folders\n*web public\n**Halo Scan comments?\n**"Comments" for collecting comments. solicit "new note" requests\n**"Sandbox" is one public note for people to fool around in\n**Ziddlywiki http://ziddlywiki.org/forum/ pretty cool discussion format.\n**comments via a form at the end of a note? some plugin allows this... Udo?\n***http://tiddlywiki.abego-software.de/\n***won't currently work with pytw. also tidddler->note problem...\n*papers under their author, and independently under their tags (this way, don't need to include all people)\n**notes like "Clifford papers" to collect refs\n**ref papers or outside links as needed\n*venn tag grouping... intersections, exclusions, etc...\n*tagged templates? journal, paper, comment. http://www.gensoft.revhost.net/TaggedTemplating.html\n**nah, just copy existing table layout\n*script to edit in LyX\n**needs to translate back and forth via intermediate files\n*add editing command toolbar, http://aiddlywiki.sourceforge.net/wikibar_demo_2.html\n**or tinyMCE wysiwyg editor\n**tool Palettes\n***LaTeX palettes in edit view that let you click on buttons to insert (latex) text. These should be customizable.\n*pwd tags meta/system/plugin\n*rethink tidddler<->note eradication\n**just change text via [[SystemConfig]]?\n*more/change [[Keyboard Shortcuts]]\n**keyboard commands to edit note
| !date | !user | !location | !storeUrl | !uploadDir | !toFilename | !backupdir | !origin |\n| 1/9/2008 22:59:29 | Garrett Lisi | [[/|http://physicswiki.org/ssl/]] | [[store.php|http://physicswiki.org/ssl/store.php]] | | | backup |\n| 1/9/2008 23:1:23 | Garrett Lisi | [[/|http://physicswiki.org/ssl/]] | [[store.php|http://physicswiki.org/ssl/store.php]] | | index.html | backup |\n| 1/9/2008 23:7:13 | Garrett Lisi | [[/|http://physicswiki.org/ssl/]] | [[store.php|http://physicswiki.org/ssl/store.php]] | | index.html | backup |\n| 1/9/2008 23:9:30 | Garrett Lisi | [[index.html|http://physicswiki.org/ssl/index.html]] | [[store.php|http://physicswiki.org/ssl/store.php]] | | index.html | backup |\n| 2/9/2008 0:6:48 | anon | [[/|http://physicswiki.org/ssl/]] | [[store.php|http://physicswiki.org/ssl/store.php]] | | index.html | backup |\n| 2/9/2008 1:6:31 | Garrett | [[/|http://physicswiki.org/ssl/]] | [[store.php|http://physicswiki.org/ssl/store.php]] | | index.html | backup |
/***\n|''Name:''|UploadPlugin|\n|''Description:''|Save the wiki to the remote web server|\n|''Version:''|3.4.5g|\n|''Date:''|Jan 3, 2006|\n|''Source:''|http://tiddlywiki.bidix.info/#UploadPlugin|\n|''Documentation:''|http://tiddlywiki.bidix.info/#UploadDoc|\n|''Author:''|BidiX (BidiX (at) bidix (dot) info) and minor mods by Garrett|\n|''License:''|[[BSD open source license|http://tiddlywiki.bidix.info/#%5B%5BBSD%20open%20source%20license%5D%5D ]]|\n|''~CoreVersion:''|2.0.0|\n|''Browser:''|Firefox 1.5; InternetExplorer 6.0; Safari|\n|''Include:''|config.lib.file; config.lib.log; config.lib.options; PasswordTweak|\n|''Require:''|[[UploadService|http://tiddlywiki.bidix.info/#UploadService]]|\n|''Usage:''|[[UploadDoc]]|\n***/\n//{{{\nversion.extensions.UploadPlugin = {\n major: 3, minor: 4, revision: 5, \n date: new Date(2006,9,15),\n source: 'http://tiddlywiki.bidix.info/#UploadPlugin',\n documentation: 'http://tiddlywiki.bidix.info/#UploadDoc',\n author: 'BidiX (BidiX (at) bidix (dot) info',\n license: '[[BSD open source license|http://tiddlywiki.bidix.info/#%5B%5BBSD%20open%20source%20license%5D%5D]]',\n coreVersion: '2.0.0',\n browser: 'Firefox 1.5; InternetExplorer 6.0; Safari'\n};\n//}}}\n\n////+++!![config.lib.file]\n\n//{{{\nif (!config.lib) config.lib = {};\nif (!config.lib.file) config.lib.file= {\n author: 'BidiX',\n version: {major: 0, minor: 1, revision: 0}, \n date: new Date(2006,3,9)\n};\nconfig.lib.file.dirname = function (filePath) {\n var lastpos;\n if ((lastpos = filePath.lastIndexOf("/")) != -1) {\n return filePath.substring(0, lastpos);\n } else {\n return filePath.substring(0, filePath.lastIndexOf("\s\s"));\n }\n};\nconfig.lib.file.basename = function (filePath) {\n var lastpos;\n if ((lastpos = filePath.lastIndexOf("#")) != -1) \n filePath = filePath.substring(0, lastpos);\n if ((lastpos = filePath.lastIndexOf("/")) != -1) {\n return filePath.substring(lastpos + 1);\n } else\n return filePath.substring(filePath.lastIndexOf("\s\s")+1);\n};\nwindow.basename = function() {return "@@deprecated@@";};\n//}}}\n////===\n\n////+++!![config.lib.log]\n\n//{{{\nif (!config.lib) config.lib = {};\nif (!config.lib.log) config.lib.log= {\n author: 'BidiX',\n version: {major: 0, minor: 1, revision: 1}, \n date: new Date(2006,8,19)\n};\nconfig.lib.Log = function(noteTitle, logHeader) {\n if (version.major < 2)\n this.note = store.notes[noteTitle];\n else\n this.note = store.getNote(noteTitle);\n if (!this.note) {\n this.note = new Note();\n this.note.title = noteTitle;\n this.note.text = "| !date | !user | !location |" + logHeader;\n this.note.created = new Date();\n this.note.modifier = config.options.txtUserName;\n this.note.modified = new Date();\n if (version.major < 2)\n store.notes[noteTitle] = this.note;\n else\n store.addNote(this.note);\n }\n return this;\n};\n\nconfig.lib.Log.prototype.newLine = function (line) {\n var now = new Date();\n var newText = "| ";\n newText += now.getDate()+"/"+(now.getMonth()+1)+"/"+now.getFullYear() + " ";\n newText += now.getHours()+":"+now.getMinutes()+":"+now.getSeconds()+" | ";\n newText += config.options.txtUserName + " | ";\n var location = document.location.toString();\n var filename = config.lib.file.basename(location);\n if (!filename) filename = '/';\n newText += "[["+filename+"|"+location + "]] |";\n this.note.text = this.note.text + "\sn" + newText;\n this.addToLine(line);\n};\n\nconfig.lib.Log.prototype.addToLine = function (text) {\n this.note.text = this.note.text + text;\n this.note.modifier = config.options.txtUserName;\n this.note.modified = new Date();\n if (version.major < 2)\n store.notes[this.note.tittle] = this.note;\n else {\n store.addNote(this.note);\n story.refreshNote(this.note.title);\n store.notify(this.note.title, true);\n }\n if (version.major < 2)\n store.notifyAll(); \n};\n//}}}\n////===\n\n////+++!![config.lib.options]\n\n//{{{\nif (!config.lib) config.lib = {};\nif (!config.lib.options) config.lib.options = {\n author: 'BidiX',\n version: {major: 0, minor: 1, revision: 0}, \n date: new Date(2006,3,9)\n};\n\nconfig.lib.options.init = function (name, defaultValue) {\n if (!config.options[name]) {\n config.options[name] = defaultValue;\n saveOptionCookie(name);\n }\n};\n//}}}\n////===\n\n////+++!![PasswordTweak]\n\n//{{{\nversion.extensions.PasswordTweak = {\n major: 1, minor: 0, revision: 3, date: new Date(2006,8,30),\n type: 'tweak',\n source: 'http://tiddlywiki.bidix.info/#PasswordTweak'\n};\n//}}}\n/***\n!!config.macros.option\n***/\n//{{{\nconfig.macros.option.passwordCheckboxLabel = "Save this password on this computer";\nconfig.macros.option.passwordType = "password"; // password | text\n\nconfig.macros.option.onChangeOption = function(e)\n{\n var opt = this.getAttribute("option");\n var elementType,valueField;\n if(opt) {\n switch(opt.substr(0,3)) {\n case "txt":\n elementType = "input";\n valueField = "value";\n break;\n case "pas":\n elementType = "input";\n valueField = "value";\n break;\n case "chk":\n elementType = "input";\n valueField = "checked";\n break;\n }\n config.options[opt] = this[valueField];\n saveOptionCookie(opt);\n var nodes = document.getElementsByTagName(elementType);\n for(var t=0; t<nodes.length; t++) \n {\n var optNode = nodes[t].getAttribute("option");\n if (opt == optNode) \n nodes[t][valueField] = this[valueField];\n }\n }\n return(true);\n};\n\nconfig.macros.option.handler = function(place,macroName,params)\n{\n var opt = params[0];\n if(config.options[opt] === undefined) {\n return;}\n var c;\n switch(opt.substr(0,3)) {\n case "txt":\n c = document.createElement("input");\n c.onkeyup = this.onChangeOption;\n c.setAttribute ("option",opt);\n c.className = "txtOptionInput "+opt;\n place.appendChild(c);\n c.value = config.options[opt];\n break;\n case "pas":\n // input password\n c = document.createElement ("input");\n c.setAttribute("type",config.macros.option.passwordType);\n c.onkeyup = this.onChangeOption;\n c.setAttribute("option",opt);\n c.className = "pasOptionInput "+opt;\n place.appendChild(c);\n c.value = config.options[opt];\n // checkbox link with this password "save this password on this computer"\n// c = document.createElement("input");\n// c.setAttribute("type","checkbox");\n// c.onclick = this.onChangeOption;\n// c.setAttribute("option","chk"+opt);\n// c.className = "chkOptionInput "+opt;\n// place.appendChild(c);\n// c.checked = config.options["chk"+opt];\n // text savePasswordCheckboxLabel\n// place.appendChild(document.createTextNode(config.macros.option.passwordCheckboxLabel));\n break;\n case "chk":\n c = document.createElement("input");\n c.setAttribute("type","checkbox");\n c.onclick = this.onChangeOption;\n c.setAttribute("option",opt);\n c.className = "chkOptionInput "+opt;\n place.appendChild(c);\n c.checked = config.options[opt];\n break;\n }\n};\n//}}}\n/***\n!! Option cookie stuff\n***/\n//{{{\nwindow.loadOptionsCookie_orig_PasswordTweak = window.loadOptionsCookie;\nwindow.loadOptionsCookie = function()\n{\n var cookies = document.cookie.split(";");\n for(var c=0; c<cookies.length; c++) {\n var p = cookies[c].indexOf("=");\n if(p != -1) {\n var name = cookies[c].substr(0,p).trim();\n var value = cookies[c].substr(p+1).trim();\n switch(name.substr(0,3)) {\n case "txt":\n config.options[name] = unescape(value);\n break;\n case "pas":\n config.options[name] = unescape(value);\n break;\n case "chk":\n config.options[name] = value == "true";\n break;\n }\n }\n }\n};\n\nwindow.saveOptionCookie_orig_PasswordTweak = window.saveOptionCookie;\nwindow.saveOptionCookie = function(name)\n{\n var c = name + "=";\n switch(name.substr(0,3)) {\n case "txt":\n c += escape(config.options[name].toString());\n break;\n case "chk":\n c += config.options[name] ? "true" : "false";\n // is there an option link with this chk ?\n if (config.options[name.substr(3)]) {\n saveOptionCookie(name.substr(3));\n }\n break;\n case "pas":\n if (config.options["chk"+name]) {\n c += escape(config.options[name].toString());\n } else {\n c += "";\n }\n break;\n }\n c += "; expires=Fri, 1 Jan 2038 12:00:00 UTC; path=/";\n document.cookie = c;\n};\n//}}}\n/***\n!! Initializations\n***/\n//{{{\n// define config.options.pasPassword\n//if (!config.options.pasPassword) {\n// config.options.pasPassword = 'defaultPassword';\n// window.saveOptionCookie('pasPassword');\n//}\n// since loadCookies is first called befor password definition\n// we need to reload cookies\nwindow.loadOptionsCookie();\n//}}}\n////===\n\n////+++!![config.macros.upload]\n\n//{{{\nconfig.macros.upload = {\n accessKey: "U",\n formName: "UploadPlugin",\n contentType: "text/html;charset=UTF-8",\n defaultStoreScript: "store.php"\n};\n\n// only this two configs need to be translated\nconfig.macros.upload.messages = {\n aboutToUpload: "Uploading wiki (do not interrupt)...",\n backupFileStored: "Previous version backed up.",\n crossDomain: "Certainly a cross-domain issue: access to an other site isn't allowed",\n errorDownloading: "Error downloading",\n errorUploadingContent: "Error uploading content",\n fileLocked: "Files is locked: You are not allowed to Upload",\n fileNotFound: "file to upload not found",\n fileNotUploaded: "File %0 NOT uploaded",\n mainFileUploaded: "Wiki uploaded.",\n passwordEmpty: "Unable to upload, your password is empty",\n urlParamMissing: "url param missing",\n rssFileNotUploaded: "RssFile %0 NOT uploaded",\n rssFileUploaded: "Rss File uploaded to %0"\n};\n\nconfig.macros.upload.label = {\n promptOption: "Upload this wiki to the remote server",\n promptParamMacro: "Upload this wiki to the remote server",\n saveLabel: "^", \n saveToDisk: "save to disk",\n uploadLabel: "^" \n};\n\nconfig.macros.upload.handler = function(place,macroName,params){\n // parameters initialization\n var storeUrl = params[0];\n var toFilename = params[1];\n var backupDir = params[2];\n var uploadDir = params[3];\n var username = params[4];\n var password; // for security reason no password as macro parameter\n var label;\n if (document.location.toString().substr(0,4) == "http")\n label = this.label.saveLabel;\n else\n label = this.label.uploadLabel;\n var prompt;\n if (storeUrl) {\n prompt = this.label.promptParamMacro.toString().format([this.toDirUrl(storeUrl, uploadDir, username)]);\n }\n else {\n prompt = this.label.promptOption;\n }\n createTiddlyButton(place, label, prompt, \n function () {\n config.macros.upload.upload(storeUrl, toFilename, uploadDir, backupDir, username, password); \n return false;}, \n null, null, this.accessKey);\n};\nconfig.macros.upload.UploadLog = function() {\n return new config.lib.Log('UploadLog', " !storeUrl | !uploadDir | !toFilename | !backupdir | !origin |" );\n};\nconfig.macros.upload.UploadLog.prototype = config.lib.Log.prototype;\nconfig.macros.upload.UploadLog.prototype.startUpload = function(storeUrl, toFilename, uploadDir, backupDir) {\n var line = " [[" + config.lib.file.basename(storeUrl) + "|" + storeUrl + "]] | ";\n line += uploadDir + " | " + toFilename + " | " + backupDir + " |";\n this.newLine(line);\n};\nconfig.macros.upload.UploadLog.prototype.endUpload = function() {\n this.addToLine(" Ok |");\n};\nconfig.macros.upload.basename = config.lib.file.basename;\nconfig.macros.upload.dirname = config.lib.file.dirname;\nconfig.macros.upload.toRootUrl = function (storeUrl, username)\n{\n return root = (this.dirname(storeUrl)?this.dirname(storeUrl):this.dirname(document.location.toString()));\n}\nconfig.macros.upload.toDirUrl = function (storeUrl, uploadDir, username)\n{\n var root = this.toRootUrl(storeUrl, username);\n if (uploadDir && uploadDir != '.')\n root = root + '/' + uploadDir;\n return root;\n}\nconfig.macros.upload.toFileUrl = function (storeUrl, toFilename, uploadDir, username)\n{\n return this.toDirUrl(storeUrl, uploadDir, username) + '/' + toFilename;\n}\nconfig.macros.upload.upload = function(storeUrl, toFilename, uploadDir, backupDir, username, password)\n{\n // parameters initialization\n storeUrl = (storeUrl ? storeUrl : config.options.txtUploadStoreUrl);\n toFilename = (toFilename ? toFilename : config.options.txtUploadFilename);\n backupDir = (backupDir ? backupDir : config.options.txtUploadBackupDir);\n uploadDir = (uploadDir ? uploadDir : config.options.txtUploadDir);\n username = (username ? username : config.options.txtUserName);\n password = config.options.pasPassword; // for security reason no password as macro parameter\n// if (!password || password === '') {\n// alert(config.macros.upload.messages.passwordEmpty);\n// return;\n// }\n if (storeUrl === '') {\n storeUrl = config.macros.upload.defaultStoreScript;\n }\n if (config.lib.file.dirname(storeUrl) === '') {\n storeUrl = config.lib.file.dirname(document.location.toString())+'/'+storeUrl;\n }\n if (toFilename === '') {\n toFilename = config.lib.file.basename(document.location.toString());\n }\n\n clearMessage();\n // only for forcing the message to display\n if (version.major < 2)\n store.notifyAll();\n if (!storeUrl) {\n alert(config.macros.upload.messages.urlParamMissing);\n return;\n }\n // Check that file is not locked\n if (window.BidiX && BidiX.GroupAuthoring && BidiX.GroupAuthoring.lock) {\n if (BidiX.GroupAuthoring.lock.isLocked() && !BidiX.GroupAuthoring.lock.isMyLock()) {\n alert(config.macros.upload.messages.fileLocked);\n return;\n }\n }\n \n var log = new this.UploadLog();\n log.startUpload(storeUrl, toFilename, uploadDir, backupDir);\n if (document.location.toString().substr(0,5) == "file:") {\n saveChanges();\n }\n var toDir = config.macros.upload.toDirUrl(storeUrl, toFilename, uploadDir, username);\n displayMessage(config.macros.upload.messages.aboutToUpload.format([toDir]), toDir);\n this.uploadChanges(storeUrl, toFilename, uploadDir, backupDir, username, password);\n if(config.options.chkGenerateAnRssFeed) {\n //var rssContent = convertUnicodeToUTF8(generateRss());\n var rssContent = generateRss();\n var rssPath = toFilename.substr(0,toFilename.lastIndexOf(".")) + ".xml";\n this.uploadContent(rssContent, storeUrl, rssPath, uploadDir, '', username, password, \n function (responseText) {\n if (responseText.substring(0,1) != '0') {\n displayMessage(config.macros.upload.messages.rssFileNotUploaded.format([rssPath]));\n }\n else {\n var toFileUrl = config.macros.upload.toFileUrl(storeUrl, rssPath, uploadDir, username);\n displayMessage(config.macros.upload.messages.rssFileUploaded.format(\n [toFileUrl]), toFileUrl);\n }\n // for debugging store.php uncomment last line\n //DEBUG alert(responseText);\n });\n }\n return;\n};\n\nconfig.macros.upload.uploadChanges = function(storeUrl, toFilename, uploadDir, backupDir, \n username, password) {\n var original;\n if (document.location.toString().substr(0,4) == "http") {\n original = this.download(storeUrl, toFilename, uploadDir, backupDir, username, password);\n return;\n }\n else {\n // standard way : Local file\n \n original = loadFile(getLocalPath(document.location.toString()));\n if(window.Components) {\n // it's a mozilla browser\n try {\n netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");\n var converter = Components.classes["@mozilla.org/intl/scriptableunicodeconverter"]\n .createInstance(Components.interfaces.nsIScriptableUnicodeConverter);\n converter.charset = "UTF-8";\n original = converter.ConvertToUnicode(original);\n }\n catch(e) {\n }\n }\n }\n //DEBUG alert(original);\n this.uploadChangesFrom(original, storeUrl, toFilename, uploadDir, backupDir, \n username, password);\n};\n\nconfig.macros.upload.uploadChangesFrom = function(original, storeUrl, toFilename, uploadDir, backupDir, \n username, password) {\n var startSaveArea = '<div id="' + 'storeArea">'; // Split up into two so that indexOf() of this source doesn't find it\n var endSaveArea = '</d' + 'iv>';\n // Locate the storeArea div's\n var posOpeningDiv = original.indexOf(startSaveArea);\n var posClosingDiv = original.lastIndexOf(endSaveArea);\n if((posOpeningDiv == -1) || (posClosingDiv == -1))\n {\n alert(config.messages.invalidFileError.format([document.location.toString()]));\n return;\n }\n var revised = original.substr(0,posOpeningDiv + startSaveArea.length) + \n allNotesAsHtml() + "\sn\st\st" +\n original.substr(posClosingDiv);\n var newSiteTitle;\n if(version.major < 2){\n newSiteTitle = (getElementText("siteTitle") + " - " + getElementText("siteSubtitle")).htmlEncode();\n } else {\n newSiteTitle = (wikifyPlain ("SiteTitle") + " - " + wikifyPlain ("SiteSubtitle")).htmlEncode();\n }\n\n revised = revised.replaceChunk("<title"+">","</title"+">"," " + newSiteTitle + " ");\n revised = revised.replaceChunk("<!--PRE-HEAD-START--"+">","<!--PRE-HEAD-END--"+">","\sn" + store.getNoteText("MarkupPreHead","") + "\sn");\n revised = revised.replaceChunk("<!--POST-HEAD-START--"+">","<!--POST-HEAD-END--"+">","\sn" + store.getNoteText("MarkupPostHead","") + "\sn");\n revised = revised.replaceChunk("<!--PRE-BODY-START--"+">","<!--PRE-BODY-END--"+">","\sn" + store.getNoteText("MarkupPreBody","") + "\sn");\n revised = revised.replaceChunk("<!--POST-BODY-START--"+">","<!--POST-BODY-END--"+">","\sn" + store.getNoteText("MarkupPostBody","") + "\sn");\n\n var response = this.uploadContent(revised, storeUrl, toFilename, uploadDir, backupDir, \n username, password, function (responseText) {\n if (responseText.substring(0,1) != '0') {\n alert(responseText);\n displayMessage(config.macros.upload.messages.fileNotUploaded.format([getLocalPath(document.location.toString())]));\n }\n else {\n if (uploadDir !== '') {\n toFilename = uploadDir + "/" + config.macros.upload.basename(toFilename);\n } else {\n toFilename = config.macros.upload.basename(toFilename);\n }\n var toFileUrl = config.macros.upload.toFileUrl(storeUrl, toFilename, uploadDir, username);\n if (responseText.indexOf("destfile:") > 0) {\n var destfile = responseText.substring(responseText.indexOf("destfile:")+9, \n responseText.indexOf("\sn", responseText.indexOf("destfile:")));\n toFileUrl = config.macros.upload.toRootUrl(storeUrl, username) + '/' + destfile;\n }\n else {\n toFileUrl = config.macros.upload.toFileUrl(storeUrl, toFilename, uploadDir, username);\n }\n displayMessage(config.macros.upload.messages.mainFileUploaded.format(\n [toFileUrl]), toFileUrl);\n if (backupDir && responseText.indexOf("backupfile:") > 0) {\n var backupFile = responseText.substring(responseText.indexOf("backupfile:")+11, \n responseText.indexOf("\sn", responseText.indexOf("backupfile:")));\n toBackupUrl = config.macros.upload.toRootUrl(storeUrl, username) + '/' + backupFile;\n displayMessage(config.macros.upload.messages.backupFileStored.format(\n [toBackupUrl]), toBackupUrl);\n }\n var log = new config.macros.upload.UploadLog();\n log.endUpload();\n store.setDirty(false);\n // erase local lock\n if (window.BidiX && BidiX.GroupAuthoring && BidiX.GroupAuthoring.lock) {\n BidiX.GroupAuthoring.lock.eraseLock();\n // change mtime with new mtime after upload\n var mtime = responseText.substr(responseText.indexOf("mtime:")+6);\n BidiX.GroupAuthoring.lock.mtime = mtime;\n }\n \n \n }\n // for debugging store.php uncomment last line\n //DEBUG alert(responseText);\n }\n );\n};\n\nconfig.macros.upload.uploadContent = function(content, storeUrl, toFilename, uploadDir, backupDir, \n username, password, callbackFn) {\n var boundary = "---------------------------"+"AaB03x"; \n var request;\n try {\n request = new XMLHttpRequest();\n } \n catch (e) { \n request = new ActiveXObject("Msxml2.XMLHTTP"); \n }\n if (window.netscape){\n try {\n if (document.location.toString().substr(0,4) != "http") {\n netscape.security.PrivilegeManager.enablePrivilege('UniversalBrowserRead');}\n }\n catch (e) {}\n } \n //DEBUG alert("user["+config.options.txtUserName+"] password[" + config.options.pasPassword + "]");\n // compose headers data\n var sheader = "";\n sheader += "--" + boundary + "\sr\snContent-disposition: form-data; name=\s"";\n sheader += config.macros.upload.formName +"\s"\sr\sn\sr\sn";\n sheader += "backupDir="+backupDir\n +";user=" + username \n +";password=" + password\n +";uploaddir=" + uploadDir;\n // add lock attributes to sheader\n if (window.BidiX && BidiX.GroupAuthoring && BidiX.GroupAuthoring.lock) {\n var l = BidiX.GroupAuthoring.lock.myLock;\n sheader += ";lockuser=" + l.user\n + ";mtime=" + l.mtime\n + ";locktime=" + l.locktime;\n }\n sheader += ";;\sr\sn"; \n sheader += "\sr\sn" + "--" + boundary + "\sr\sn";\n sheader += "Content-disposition: form-data; name=\s"userfile\s"; filename=\s""+toFilename+"\s"\sr\sn";\n sheader += "Content-Type: " + config.macros.upload.contentType + "\sr\sn";\n sheader += "Content-Length: " + content.length + "\sr\sn\sr\sn";\n // compose trailer data\n var strailer = new String();\n strailer = "\sr\sn--" + boundary + "--\sr\sn";\n //strailer = "--" + boundary + "--\sr\sn";\n var data;\n data = sheader + content + strailer;\n //request.open("POST", storeUrl, true, username, password);\n try {\n request.open("POST", storeUrl, true); \n }\n catch(e) {\n alert(config.macros.upload.messages.crossDomain + "\snError:" +e);\n exit;\n }\n request.onreadystatechange = function () {\n if (request.readyState == 4) {\n if (request.status == 200)\n callbackFn(request.responseText);\n else\n alert(config.macros.upload.messages.errorUploadingContent + "\snStatus: "+request.status.statusText);\n }\n };\n request.setRequestHeader("Content-Length",data.length);\n request.setRequestHeader("Content-Type","multipart/form-data; boundary="+boundary);\n request.send(data); \n};\n\n\nconfig.macros.upload.download = function(uploadUrl, uploadToFilename, uploadDir, uploadBackupDir, \n username, password) {\n var request;\n try {\n request = new XMLHttpRequest();\n } \n catch (e) { \n request = new ActiveXObject("Msxml2.XMLHTTP"); \n }\n try {\n if (uploadUrl.substr(0,4) == "http") {\n netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");\n }\n else {\n netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");\n }\n } catch (e) { }\n //request.open("GET", document.location.toString(), true, username, password);\n try {\n request.open("GET", document.location.toString(), true);\n }\n catch(e) {\n alert(config.macros.upload.messages.crossDomain + "\snError:" +e);\n exit;\n }\n \n request.onreadystatechange = function () {\n if (request.readyState == 4) {\n if(request.status == 200) {\n config.macros.upload.uploadChangesFrom(request.responseText, uploadUrl, \n uploadToFilename, uploadDir, uploadBackupDir, username, password);\n }\n else\n alert(config.macros.upload.messages.errorDownloading.format(\n [document.location.toString()]) + "\snStatus: "+request.status.statusText);\n }\n };\n request.send(null);\n};\n\n//}}}\n////===\n\n////+++!![Initializations]\n\n//{{{\nconfig.lib.options.init('txtUploadStoreUrl','store.php');\nconfig.lib.options.init('txtUploadFilename','index.html');\nconfig.lib.options.init('txtUploadDir','');\nconfig.lib.options.init('txtUploadBackupDir','backup');\nconfig.lib.options.init('txtUserName',config.options.txtUserName);\nconfig.lib.options.init('pasPassword','');\nsetStylesheet(\n ".pasOptionInput {width: 11em;}\sn"+\n ".txtOptionInput.txtUploadStoreUrl {width: 25em;}\sn"+\n ".txtOptionInput.txtUploadFilename {width: 25em;}\sn"+\n ".txtOptionInput.txtUploadDir {width: 25em;}\sn"+\n ".txtOptionInput.txtUploadBackupDir {width: 25em;}\sn"+\n "",\n "UploadOptionsStyles");\nif (document.location.toString().substr(0,4) == "http") {\n config.options.chkAutoSave = false; \n saveOptionCookie('chkAutoSave');\n}\nconfig.shadowNotes.UploadDoc = "[[Full Documentation|http://tiddlywiki.bidix.info/l#UploadDoc ]]\sn"; \n\n//}}}\n////===\n\n////+++!![Core Hijacking]\n\n//{{{\nconfig.macros.saveChanges.label_orig_UploadPlugin = config.macros.saveChanges.label;\nconfig.macros.saveChanges.label = config.macros.upload.label.saveToDisk;\n\nconfig.macros.saveChanges.handler_orig_UploadPlugin = config.macros.saveChanges.handler;\n\nconfig.macros.saveChanges.handler = function(place)\n{\n if ((!readOnly) && (document.location.toString().substr(0,4) != "http"))\n createTiddlyButton(place,this.label,this.prompt,this.onClick,null,null,this.accessKey);\n};\n\n//}}}\n////===\n
<div class='toolbar' macro='toolbar +editNote collapseNote collapseOthers closeOthers -closeNote'></div>\n<div class='title' macro='view title'></div>\n<div class='tagging' macro='tagging'></div>\n<div class='tagged' macro='tags'></div>\n<div class='viewer' macro='view text wikified'></div>\n<div class='references' macro="references"></div>\n<div class='tagClear'></div>
This is a collaborative wiki notebook presented at the conference, [[Science in the 21st Century|http://www.science21stcentury.org/index.html]], by [[Garrett Lisi]].\n\nDouble click any note to edit it, or click on the "+" to the left to create a new note. Then click on the "&sect;" in the upper right hand corner of the note to view it. When finished editing notes, click on the "^" to the left to upload your changes to the server. (Reload with your browser to confirm that your changes took.) Make sure to reload again before editing, in case someone else has made changes in the interim.\n\nThe latest edited notes -- most recent first -- are displayed below.
<<ListTagged bohm>>
<<ListTagged brst>>
<<ListTagged cartan>>
*<<slider chkSliderdiracF diracF 'dirac »' 'Dirac operators, Dirac equation'>>\n<<ListTagged clifford>>
<<ListTagged cosmo>>
<<ListTagged cp2>>
*<<slider chkSliderfbF fbF 'fb »' 'fiber bundles'>>\n<<ListTagged dg>>
*<<slider chkSliderspinF spinF 'spin »' 'spin odds and ends (more theoretical then dirac)'>>\n<<ListTagged dirac>>
<<ListTagged editing>>
*<<slider chkSlidernatF natF 'nat »' 'natural operators, vectors, forms'>>\n*<<slider chkSliderpbF pbF 'pb »' 'principal bundles'>>\n<<ListTagged fb>>
<<ListTagged folder>>
*<<slider chkSliderpbF pbF 'pb »' 'principal bundles'>>\n*<<slider chkSliderbrstF brstF 'brst »' 'BRST formalism'>>\n<<ListTagged gauge>>
*<<slider chkSlidernatF natF 'nat »' 'natural operators, vectors, forms'>>\n*<<slider chkSliderkkF kkF 'kk »' 'Kaluza-Klein theory, Killing vector fields'>>\n*<<slider chkSlidercosmoF cosmoF 'cosmo »' 'cosmology'>>\n*<<slider chkSlidergrscalF grscalF 'grscal »' 'gr plus a scalar field, Brans-Dicke theories, conformal transformations'>>\n*<<slider chkSliderlqgF lqgF 'lqg »' 'loop quantum gravity, loops, spin foams, spin networks'>>\n*<<slider chkSlidertorsF torsF 'tors »' 'torsion, teleparallel gravity'>>\n<<ListTagged gr>>
<<ListTagged grscal>>
<<ListTagged gut>>
<<ListTagged ham>>
<<ListTagged higgs>>
<<ListTagged illus>>
/***\n|Name|Plugin: jsMath|\n|Created by|BobMcElrath (edited by Garrett)|\n|Email|my first name at my last name dot org|\n|Location|http://bob.mcelrath.org/tiddlyjsmath-2.0.3.html|\n|Version|1.3.g|\n|Requires|[[TiddlyWiki|http://www.tiddlywiki.com]] &ge; 2.1, [[jsMath|http://www.math.union.edu/~dpvc/jsMath/]] &ge; 3.0|\n!Description\n[[LaTeX]] is the world standard for specifying, typesetting, and communicating mathematics among scientists, engineers, and mathematicians. For more information about LaTeX itself, visit the [[LaTeX Project|http://www.latex-project.org/]]. This plugin typesets math using [[jsMath|http://www.math.union.edu/~dpvc/jsMath/]], which is an implementation of the TeX math rules and typesetting in javascript, for your browser. Notice the small button in the lower right corner which opens its control panel.\n!Installation\nIn addition to this plugin, you must also [[install jsMath|http://www.math.union.edu/~dpvc/jsMath/download/jsMath.html]] on the same server as your TiddlyWiki html file. If you're using TiddlyWiki without a web server, then the jsMath directory must be placed in the same location as the TiddlyWiki html file.\n!Examples\n|!Source|!Output|h\n|{{{The variable $x$ is real.}}}|The variable $x$ is real.|\n|{{{The variable \s(y\s) is complex.}}}|The variable \s(y\s) is complex.|\n|{{{This \s[\sint_a^b x = \sfrac{1}{2}(b^2-a^2)\s] is an easy integral.}}}|This \s[\sint_a^b x = \sfrac{1}{2}(b^2-a^2)\s] is an easy integral.|\n|{{{This $$\sint_a^b \ssin x = -(\scos b - \scos a)$$ is another easy integral.}}}|This $$\sint_a^b \ssin x = -(\scos b - \scos a)$$ is another easy integral.|\n|{{{Block formatted equations may also use the 'equation' environment \sbegin{equation} \sint \stan x = -\sln \scos x \send{equation} }}}|Block formatted equations may also use the 'equation' environment \sbegin{equation} \sint \stan x = -\sln \scos x \send{equation}|\n|{{{Equation arrays are also supported \sbegin{eqnarray} a &=& b \s\s c &=& d \send{eqnarray} }}}|Equation arrays are also supported \sbegin{eqnarray} a &=& b \s\s c &=& d \send{eqnarray} |\n|{{{I spent \s$7.38 on lunch.}}}|I spent \s$7.38 on lunch.|\n|{{{I had to insert a backslash (\s\s) into my document}}}|I had to insert a backslash (\s\s) into my document|\n!Code\n***/\n//{{{\n\n// Define wikifers for latex\nconfig.formatterHelpers.mathFormatHelper = function(w) {\n var e = document.createElement(this.element);\n e.className = this.className;\n var endRegExp = new RegExp(this.terminator, "mg");\n endRegExp.lastIndex = w.matchStart+w.matchLength;\n var matched = endRegExp.exec(w.source);\n if(matched) {\n var txt = w.source.substr(w.matchStart+w.matchLength, \n matched.index-w.matchStart-w.matchLength);\n if(this.keepdelim) {\n txt = w.source.substr(w.matchStart, matched.index+matched[0].length-w.matchStart);\n }\n e.appendChild(document.createTextNode(txt));\n w.output.appendChild(e);\n w.nextMatch = endRegExp.lastIndex;\n }\n}\n\nconfig.formatters.push({\n name: "displayMath1",\n match: "\s\s\s$\s\s\s$",\n terminator: "\s\s\s$\s\s\s$\s\sn?",\n element: "div",\n className: "math",\n handler: config.formatterHelpers.mathFormatHelper\n});\n\nconfig.formatters.push({\n name: "inlineMath1",\n match: "\s\s\s$", \n terminator: "\s\s\s$",\n element: "span",\n className: "math",\n handler: config.formatterHelpers.mathFormatHelper\n});\n\nvar backslashformatters = new Array(0);\n\nbackslashformatters.push({\n name: "inlineMath2",\n match: "\s\s\s\s\s\s\s(",\n terminator: "\s\s\s\s\s\s\s)",\n element: "span",\n className: "math",\n handler: config.formatterHelpers.mathFormatHelper\n});\n\nbackslashformatters.push({\n name: "displayMath2",\n match: "\s\s\s\s\s\s\s[",\n terminator: "\s\s\s\s\s\s\s]\s\sn?",\n element: "div",\n className: "math",\n handler: config.formatterHelpers.mathFormatHelper\n});\n\nbackslashformatters.push({\n name: "displayMath3",\n match: "\s\s\s\sbegin\s\s{equation\s\s}",\n terminator: "\s\s\s\send\s\s{equation\s\s}\s\sn?",\n element: "div",\n className: "math",\n handler: config.formatterHelpers.mathFormatHelper\n});\n\n// These can be nested. e.g. \sbegin{equation} \sbegin{array}{ccc} \sbegin{array}{ccc} ...\nbackslashformatters.push({\n name: "displayMath4",\n match: "\s\s\s\sbegin\s\s{eqnarray\s\s}",\n terminator: "\s\s\s\send\s\s{eqnarray\s\s}\s\sn?",\n element: "div",\n className: "math",\n keepdelim: true,\n handler: config.formatterHelpers.mathFormatHelper\n});\n\n// The escape must come between backslash formatters and regular ones.\n// So any latex-like \scommands must be added to the beginning of\n// backslashformatters here.\nbackslashformatters.push({\n name: "escape",\n match: "\s\s\s\s.",\n handler: function(w) {\n w.output.appendChild(document.createTextNode(w.source.substr(w.matchStart+1,1)));\n w.nextMatch = w.matchStart+2;\n }\n});\n\nconfig.formatters=backslashformatters.concat(config.formatters);\n\n/* G updated this */\nwindow.wikify = function(source,output,highlightRegExp,note)\n{\n if(source && source != "") {\n var wikifier = new Wikifier(source,getParser(note),highlightRegExp,note);\n wikifier.subWikifyUnterm(output);\n jsMath.Process();\n }\n}\n\n/* insert jsMath LaTeX macros here */\n\n/* jsMath.Extension.Require("AMSmath"); */\n/* jsMath.Extension.Require("AMSsymbols"); */\n/* jsMath.Extension.Require('underset-overset'); */\n\n/* Greek */\njsMath.Macro('al','\s\salpha');\njsMath.Macro('be','\s\sbeta');\njsMath.Macro('ga','\s\sgamma');\njsMath.Macro('de','\s\sdelta');\njsMath.Macro('ep','\s\sepsilon');\njsMath.Macro('va','\s\svarepsilon');\njsMath.Macro('ze','\s\szeta ');\njsMath.Macro('et','\s\seta');\njsMath.Macro('th','\s\stheta');\njsMath.Macro('io','\s\siota');\njsMath.Macro('ka','\s\skappa');\njsMath.Macro('la','\s\slambda');\njsMath.Macro('rh','\s\srho');\njsMath.Macro('si','\s\ssigma');\njsMath.Macro('ta','\s\stau');\njsMath.Macro('up','\s\supsilon');\njsMath.Macro('ph','\s\sphi');\njsMath.Macro('ch','\s\schi');\njsMath.Macro('ps','\s\spsi');\njsMath.Macro('om','\s\somega');\njsMath.Macro('Ga','\s\sGamma');\njsMath.Macro('De','\s\sDelta');\njsMath.Macro('Th','\s\sTheta');\njsMath.Macro('La','\s\sLambda');\njsMath.Macro('Si','\s\sSigma');\njsMath.Macro('Up','\s\sUpsilon');\njsMath.Macro('Ph','\s\sPhi');\njsMath.Macro('Ps','\s\sPsi');\njsMath.Macro('Om','\s\sOmega');\n\n/* misc */\njsMath.Macro('pa','\s\spartial');\njsMath.Macro('na','\s\snabla');\njsMath.Macro('ti','\s\stimes');\njsMath.Macro('lb','\s\sleft[');\njsMath.Macro('rb','\s\sright]');\njsMath.Macro('lp','\s\sleft(');\njsMath.Macro('rp','\s\sright)');\njsMath.Macro('li','\s\sleft<');\njsMath.Macro('ri','\s\sright>');\njsMath.Macro('ll','\s\sleft|');\njsMath.Macro('rl','\s\sright|');\njsMath.Macro('lc','\s\sleft\s\s{');\njsMath.Macro('rc','\s\sright\s\s}');\njsMath.Macro('ld','\s\sleft.');\njsMath.Macro('rd','\s\sright.');\njsMath.Macro('ha','{\s\ssmall \s\sfrac{1}{2}}');\njsMath.Macro('fr','{\s\ssmall \s\sfrac{#1}{#2}}',2);\njsMath.Macro('p','\s\sphantom{#1}',1);\njsMath.Macro('vp','\s\svphantom{#1}',1);\n\n/* accents */\njsMath.Macro('f','{\s\sunderset{\s\sraise4mu{\s\ssmash{-}}}{{#1}}}',1);\njsMath.Macro('ff','{\s\sunderset{\s\sraise3mu{\s\ssmash{=}}}{{#1}}}',1);\njsMath.Macro('fff','{\s\sunderset{\s\sraise3mu{\s\ssmash{\s\sequiv}}}{{#1}}}',1);\njsMath.Macro('nf','{\s\sunderset{\s\sraise4mu{\s\ssmash{\s\ssim}}}{{#1}}}',1);\njsMath.Macro('ud','{\s\sunderset{\s\sraise4mu{\s\ssmash{\s\scdot}}}{{#1}}}',1);\njsMath.Macro('od','{\s\soverset{\s\slower4mu{.}}{{#1}}}',1);\njsMath.Macro('udf','{\s\sunderset{\s\sraise4mu{\s\ssmash{- \s\scdot}}}{{#1}}}',1);\njsMath.Macro('udff','{\s\sunderset{\s\sraise3mu{\s\ssmash{= \s\scdot}}}{{#1}}}',1);\njsMath.Macro('ve','{\s\soverset{\s\slower4mu{\s\smoveright1mu{\s\srightharpoonup}}}{{#1}}}',1);\njsMath.Macro('vv','{\s\soverset{\s\slower4mu{\s\soverset{\s\smoveleft.1mu{\s\slower4mu{\s\sLarge \s\srightharpoonup}}}{\s\srightharpoonup}}}{{#1}}}',1);\n\n/* particle shapes */\n\njsMath.Macro('scir','\s\slower.1em{\s\srlap{\s\scolor{#1}{\s\sLarge \s\sbullet}}{\s\sLarge \s\scirc}}',1);\njsMath.Macro('ssqu','\s\srlap{\s\scolor{#1}{\s\sscriptsize \s\sblacksquare}}{{\s\sscriptsize \s\ssquare}}',1);\njsMath.Macro('sdia','\s\srlap{\s\scolor{#1}{\s\ssmall \s\sblacklozenge}}{\s\ssmall \s\slozenge}',1);\njsMath.Macro('stri','\s\sraise.08em{\s\srlap{\s\scolor{#1}{\s\ssmall \s\sblacktriangle}}{\s\ssmall \s\svartriangle}}',1);\njsMath.Macro('sutr','\s\slower.08em{\s\srlap{\s\scolor{#1}{\s\ssmall \s\sblacktriangledown}}{\s\ssmall \s\striangledown}}',1);\n\njsMath.Macro('mcir','\s\slower.1em{\s\srlap{\s\scolor{#1}{\s\sLARGE \s\sbullet}}{\s\sLARGE \s\scirc}}',1);\njsMath.Macro('msqu','\s\srlap{\s\scolor{#1}{\s\ssmall \s\sblacksquare}}{{\s\ssmall \s\ssquare}}',1);\njsMath.Macro('mdia','\s\srlap{\s\scolor{#1}{\s\sblacklozenge}}{\s\slozenge}',1);\njsMath.Macro('mtri','\s\sraise.08em{\s\srlap{\s\scolor{#1}{\s\sblacktriangle}}{\s\svartriangle}}',1);\njsMath.Macro('mutr','\s\slower.08em{\s\srlap{\s\scolor{#1}{\s\sblacktriangledown}}{\s\striangledown}}',1);\n\njsMath.Macro('bcir','\s\slower.1em{\s\srlap{\s\scolor{#1}{\s\shuge \s\sbullet}}{\s\shuge \s\scirc}}',1);\njsMath.Macro('bsqu','\s\srlap{\s\scolor{#1}{\s\sblacksquare}}{{\s\ssquare}}',1);\njsMath.Macro('bdia','\s\srlap{\s\scolor{#1}{\s\slarge \s\sblacklozenge}}{\s\slarge \s\slozenge}',1);\njsMath.Macro('btri','\s\sraise.08em{\s\srlap{\s\scolor{#1}{\s\slarge \s\sblacktriangle}}{\s\slarge \s\svartriangle}}',1);\njsMath.Macro('butr','\s\slower.08em{\s\srlap{\s\scolor{#1}{\s\slarge \s\sblacktriangledown}}{\s\slarge \s\striangledown}}',1);\n\njsMath.Macro('trip','\s\srlap{\s\sraise.15em{\s\skern.17em{{#1}}}}{\s\slower.1em{\s\srlap{{#2}}{{\s\skern.30em{{#3}}}}}}',3);\n\n/* end of jsMath macros */\n//}}}
*<<slider chkSliderssF ssF 'ss »' 'homogeneous spaces'>>\n*<<slider chkSlidercartanF cartanF 'cartan »' 'Cartan geometry'>>\n<<ListTagged kk>>
<<ListTagged lqg>>
*<<slider chkSliderdgF dgF 'dg »' 'basics of differential geometry'>>\n*<<slider chkSlidertopoF topoF 'topo »' 'topology, branching manifolds, morse theory'>>\n<<ListTagged math>>
*<<slider chkSlidereditingF editingF 'editing »' 'tips on editing and authoring notes, including all sorts of tools'>>\n*<<slider chkSlider0F 0F '0 »' 'a note that is linked to but is empty or needs editing'>>\n*<<slider chkSlidersystemF systemF 'system »' 'control how the site operates and is layed out'>>\n*<<slider chkSliderillusF illusF 'illus »' 'notes containing illustrations'>>\n*<<slider chkSliderslideF slideF 'slide »' 'presentation slide (start note title with ".")'>>\n<<ListTagged meta>>
*<<slider chkSliderkkF kkF 'kk »' 'Kaluza-Klein theory, homogeneous spaces, Killing vector fields'>>\n<<ListTagged nat>>
<<ListTagged other>>
*<<slider chkSliderpersonF personF 'person »' 'people with interesting physics, usually with links to papers'>>\n<<ListTagged paper>>
*<<slider chkSliderssF ssF 'ss »' 'homogeneous spaces'>>\n*<<slider chkSlidercartanF cartanF 'cartan »' 'Cartan geometry'>>\n<<ListTagged pb>>
<<ListTagged person>>
*<<slider chkSlidersymF symF 'sym »' 'symmetries, groups, Lie algebra'>>\n*<<slider chkSlidergrF grF 'gr »' 'General Relativity'>>\n*<<slider chkSliderhamF hamF 'ham »' 'Hamiltonian dynamics, symplectic geometry'>>\n*<<slider chkSliderqmF qmF 'qm »' 'quantum mechanics'>>\n*<<slider chkSlidermathF mathF 'math »' 'stuff of a more abstract mathematical nature'>>\n*<<slider chkSliderotherF otherF 'other »' 'AI, mech, fluids, thermodynamics, entropy'>>\n*<<slider chkSliderspeculativeF speculativeF 'speculative »' 'wild speculation, rather than solid stuff'>>\n*<<slider chkSliderpaperF paperF 'paper »' 'notes about or containing links to a paper'>>\n<<ListTagged physics>>
<<ListTagged plugin>>
<<ListTagged qft>>
*<<slider chkSliderqftF qftF 'qft »' 'Quantum Field Theory'>>\n*<<slider chkSliderqmiF qmiF 'qmi »' 'interpretations and minor modifications of quantum mechanics'>>\n<<ListTagged qm>>
*<<slider chkSliderbohmF bohmF 'bohm »' 'Bohmian quantum mechanics'>>\n<<ListTagged qmi>>
<<ListTagged slide>>
*<<slider chkSlidergutF gutF 'gut »' 'SU(5), SO(10), TSmith, etc.'>>\n*<<slider chkSliderhiggsF higgsF 'higgs »' 'Higgs scalar and symmetry breaking'>>\n<<ListTagged sm>>
<<ListTagged speculative>>
<<ListTagged spin>>
*<<slider chkSlidercp2F cp2F 'cp2 »' 'complex projective space, Kahler manifolds'>>\n<<ListTagged ss>>
*<<slider chkSlidergaugeF gaugeF 'gauge »' 'Yang-Mills field theory, Noether'>>\n*<<slider chkSliderkkF kkF 'kk »' 'Kaluza-Klein theory, Killing vector fields'>>\n*<<slider chkSlidersmF smF 'sm »' 'the standard model of particles'>>\n*<<slider chkSlidercliffordF cliffordF 'clifford »' 'Clifford algebra'>>\n<<ListTagged sym>>
<<ListTagged systemConfig>>
*<<slider chkSlidersystemConfigF systemConfigF 'systemConfig »' 'this is a special tag, marking notes with code to be loaded at startup'>>\n*<<slider chkSliderxsystemConfigF xsystemConfigF 'xsystemConfig »' 'deactivated code'>>\n*<<slider chkSlidersystemNotesF systemNotesF 'systemNotes »' 'system control notes loaded at startup, used to control system content'>>\n*<<slider chkSliderpluginF pluginF 'plugin »' 'code snippets enhancing functionality, and containing descriptions of what they do'>>\n*<<slider chkSlidertemplateF templateF 'template »' 'custom css page template, used to describe layout'>>\n*<<slider chkSliderfolderF folderF 'folder »' 'a folder is a tag is a note'>>\n<<ListTagged system>>
<<ListTagged systemNotes>>
<<ListTagged template>>
<<ListTagged topo>>
<<ListTagged tors>>
*[[Just Alerting You|http://xkcd.com/c15.html]]\n*[[Science|http://xkcd.com/c54.html]]\n*[[Gravitational Mass|http://xkcd.com/c89.html]]\n*[[Centrifugal Force|http://xkcd.com/c123.html]]\n*[[Beliefs|http://xkcd.com/c154.html]]\n*[[Donald Knuth|http://xkcd.com/c163.html]]\n*[[String Theory|http://xkcd.com/c171.html]]\n*[[e to the pi times i|http://xkcd.com/c179.html]]\n*[[Nash|http://xkcd.com/c182.html]]\n*[[Matrix Transform|http://xkcd.com/c184.html]]
<<ListTagged xsystemConfig>>