<!--{{{--> <link rel='alternate' type='application/rss+xml' title='RSS' href='index.xml' /> <!--}}}-->
Background: #fff Foreground: #000 PrimaryPale: #8cf PrimaryLight: #18f PrimaryMid: #04b PrimaryDark: #014 SecondaryPale: #ffc SecondaryLight: #fe8 SecondaryMid: #db4 SecondaryDark: #841 TertiaryPale: #eee TertiaryLight: #ccc TertiaryMid: #999 TertiaryDark: #666 Error: #f88
/*{{{*/ body {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];} a {color:[[ColorPalette::PrimaryMid]];} a:hover {background-color:[[ColorPalette::PrimaryMid]]; color:[[ColorPalette::Background]];} a img {border:0;} h1,h2,h3,h4,h5,h6 {color:[[ColorPalette::SecondaryDark]]; background:transparent;} h1 {border-bottom:2px solid [[ColorPalette::TertiaryLight]];} h2,h3 {border-bottom:1px solid [[ColorPalette::TertiaryLight]];} .button {color:[[ColorPalette::PrimaryDark]]; border:1px solid [[ColorPalette::Background]];} .button:hover {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::SecondaryLight]]; border-color:[[ColorPalette::SecondaryMid]];} .button:active {color:[[ColorPalette::Background]]; background:[[ColorPalette::SecondaryMid]]; border:1px solid [[ColorPalette::SecondaryDark]];} .header {background:[[ColorPalette::PrimaryMid]];} .headerShadow {color:[[ColorPalette::Foreground]];} .headerShadow a {font-weight:normal; color:[[ColorPalette::Foreground]];} .headerForeground {color:[[ColorPalette::Background]];} .headerForeground a {font-weight:normal; color:[[ColorPalette::PrimaryPale]];} .tabSelected{color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::TertiaryPale]]; border-left:1px solid [[ColorPalette::TertiaryLight]]; border-top:1px solid [[ColorPalette::TertiaryLight]]; border-right:1px solid [[ColorPalette::TertiaryLight]]; } .tabUnselected {color:[[ColorPalette::Background]]; background:[[ColorPalette::TertiaryMid]];} .tabContents {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::TertiaryPale]]; border:1px solid [[ColorPalette::TertiaryLight]];} .tabContents .button {border:0;} #sidebar {} #sidebarOptions input {border:1px solid [[ColorPalette::PrimaryMid]];} #sidebarOptions .sliderPanel {background:[[ColorPalette::PrimaryPale]];} #sidebarOptions .sliderPanel a {border:none;color:[[ColorPalette::PrimaryMid]];} #sidebarOptions .sliderPanel a:hover {color:[[ColorPalette::Background]]; background:[[ColorPalette::PrimaryMid]];} #sidebarOptions .sliderPanel a:active {color:[[ColorPalette::PrimaryMid]]; background:[[ColorPalette::Background]];} .wizard {background:[[ColorPalette::PrimaryPale]]; border:1px solid [[ColorPalette::PrimaryMid]];} .wizard h1 {color:[[ColorPalette::PrimaryDark]]; border:none;} .wizard h2 {color:[[ColorPalette::Foreground]]; border:none;} .wizardStep {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]]; border:1px solid [[ColorPalette::PrimaryMid]];} .wizardStep.wizardStepDone {background:[[ColorPalette::TertiaryLight]];} .wizardFooter {background:[[ColorPalette::PrimaryPale]];} .wizardFooter .status {background:[[ColorPalette::PrimaryDark]]; color:[[ColorPalette::Background]];} .wizard .button {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::SecondaryLight]]; border: 1px solid; border-color:[[ColorPalette::SecondaryPale]] [[ColorPalette::SecondaryDark]] [[ColorPalette::SecondaryDark]] [[ColorPalette::SecondaryPale]];} .wizard .button:hover {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::Background]];} .wizard .button:active {color:[[ColorPalette::Background]]; background:[[ColorPalette::Foreground]]; border: 1px solid; border-color:[[ColorPalette::PrimaryDark]] [[ColorPalette::PrimaryPale]] [[ColorPalette::PrimaryPale]] [[ColorPalette::PrimaryDark]];} .wizard .notChanged {background:transparent;} .wizard .changedLocally {background:#80ff80;} .wizard .changedServer {background:#8080ff;} .wizard .changedBoth {background:#ff8080;} .wizard .notFound {background:#ffff80;} .wizard .putToServer {background:#ff80ff;} .wizard .gotFromServer {background:#80ffff;} #messageArea {border:1px solid [[ColorPalette::SecondaryMid]]; background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]];} #messageArea .button {color:[[ColorPalette::PrimaryMid]]; background:[[ColorPalette::SecondaryPale]]; border:none;} .popupTiddler {background:[[ColorPalette::TertiaryPale]]; border:2px solid [[ColorPalette::TertiaryMid]];} .popup {background:[[ColorPalette::TertiaryPale]]; color:[[ColorPalette::TertiaryDark]]; border-left:1px solid [[ColorPalette::TertiaryMid]]; border-top:1px solid [[ColorPalette::TertiaryMid]]; border-right:2px solid [[ColorPalette::TertiaryDark]]; border-bottom:2px solid [[ColorPalette::TertiaryDark]];} .popup hr {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::PrimaryDark]]; border-bottom:1px;} .popup li.disabled {color:[[ColorPalette::TertiaryMid]];} .popup li a, .popup li a:visited {color:[[ColorPalette::Foreground]]; border: none;} .popup li a:hover {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; border: none;} .popup li a:active {background:[[ColorPalette::SecondaryPale]]; color:[[ColorPalette::Foreground]]; border: none;} .popupHighlight {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];} .listBreak div {border-bottom:1px solid [[ColorPalette::TertiaryDark]];} .tiddler .defaultCommand {font-weight:bold;} .shadow .title {color:[[ColorPalette::TertiaryDark]];} .title {color:[[ColorPalette::SecondaryDark]];} .subtitle {color:[[ColorPalette::TertiaryDark]];} .toolbar {color:[[ColorPalette::PrimaryMid]];} .toolbar a {color:[[ColorPalette::TertiaryLight]];} .selected .toolbar a {color:[[ColorPalette::TertiaryMid]];} .selected .toolbar a:hover {color:[[ColorPalette::Foreground]];} .tagging, .tagged {border:1px solid [[ColorPalette::TertiaryPale]]; background-color:[[ColorPalette::TertiaryPale]];} .selected .tagging, .selected .tagged {background-color:[[ColorPalette::TertiaryLight]]; border:1px solid [[ColorPalette::TertiaryMid]];} .tagging .listTitle, .tagged .listTitle {color:[[ColorPalette::PrimaryDark]];} .tagging .button, .tagged .button {border:none;} .footer {color:[[ColorPalette::TertiaryLight]];} .selected .footer {color:[[ColorPalette::TertiaryMid]];} .sparkline {background:[[ColorPalette::PrimaryPale]]; border:0;} .sparktick {background:[[ColorPalette::PrimaryDark]];} .error, .errorButton {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::Error]];} .warning {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::SecondaryPale]];} .lowlight {background:[[ColorPalette::TertiaryLight]];} .zoomer {background:none; color:[[ColorPalette::TertiaryMid]]; border:3px solid [[ColorPalette::TertiaryMid]];} .imageLink, #displayArea .imageLink {background:transparent;} .annotation {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; border:2px solid [[ColorPalette::SecondaryMid]];} .viewer .listTitle {list-style-type:none; margin-left:-2em;} .viewer .button {border:1px solid [[ColorPalette::SecondaryMid]];} .viewer blockquote {border-left:3px solid [[ColorPalette::TertiaryDark]];} .viewer table, table.twtable {border:2px solid [[ColorPalette::TertiaryDark]];} .viewer th, .viewer thead td, .twtable th, .twtable thead td {background:[[ColorPalette::SecondaryMid]]; border:1px solid [[ColorPalette::TertiaryDark]]; color:[[ColorPalette::Background]];} .viewer td, .viewer tr, .twtable td, .twtable tr {border:1px solid [[ColorPalette::TertiaryDark]];} .viewer pre {border:1px solid [[ColorPalette::SecondaryLight]]; background:[[ColorPalette::SecondaryPale]];} .viewer code {color:[[ColorPalette::SecondaryDark]];} .viewer hr {border:0; border-top:dashed 1px [[ColorPalette::TertiaryDark]]; color:[[ColorPalette::TertiaryDark]];} .highlight, .marked {background:[[ColorPalette::SecondaryLight]];} .editor input {border:1px solid [[ColorPalette::PrimaryMid]];} .editor textarea {border:1px solid [[ColorPalette::PrimaryMid]]; width:100%;} .editorFooter {color:[[ColorPalette::TertiaryMid]];} .readOnly {background:[[ColorPalette::TertiaryPale]];} #backstageArea {background:[[ColorPalette::Foreground]]; color:[[ColorPalette::TertiaryMid]];} #backstageArea a {background:[[ColorPalette::Foreground]]; color:[[ColorPalette::Background]]; border:none;} #backstageArea a:hover {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; } #backstageArea a.backstageSelTab {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];} #backstageButton a {background:none; color:[[ColorPalette::Background]]; border:none;} #backstageButton a:hover {background:[[ColorPalette::Foreground]]; color:[[ColorPalette::Background]]; border:none;} #backstagePanel {background:[[ColorPalette::Background]]; border-color: [[ColorPalette::Background]] [[ColorPalette::TertiaryDark]] [[ColorPalette::TertiaryDark]] [[ColorPalette::TertiaryDark]];} .backstagePanelFooter .button {border:none; color:[[ColorPalette::Background]];} .backstagePanelFooter .button:hover {color:[[ColorPalette::Foreground]];} #backstageCloak {background:[[ColorPalette::Foreground]]; opacity:0.6; filter:'alpha(opacity=60)';} /*}}}*/
/*{{{*/ * html .tiddler {height:1%;} body {font-size:.75em; font-family:arial,helvetica; margin:0; padding:0;} h1,h2,h3,h4,h5,h6 {font-weight:bold; text-decoration:none;} h1,h2,h3 {padding-bottom:1px; margin-top:1.2em;margin-bottom:0.3em;} h4,h5,h6 {margin-top:1em;} h1 {font-size:1.35em;} h2 {font-size:1.25em;} h3 {font-size:1.1em;} h4 {font-size:1em;} h5 {font-size:.9em;} hr {height:1px;} a {text-decoration:none;} dt {font-weight:bold;} ol {list-style-type:decimal;} ol ol {list-style-type:lower-alpha;} ol ol ol {list-style-type:lower-roman;} ol ol ol ol {list-style-type:decimal;} ol ol ol ol ol {list-style-type:lower-alpha;} ol ol ol ol ol ol {list-style-type:lower-roman;} ol ol ol ol ol ol ol {list-style-type:decimal;} .txtOptionInput {width:11em;} #contentWrapper .chkOptionInput {border:0;} .externalLink {text-decoration:underline;} .indent {margin-left:3em;} .outdent {margin-left:3em; text-indent:-3em;} code.escaped {white-space:nowrap;} .tiddlyLinkExisting {font-weight:bold;} .tiddlyLinkNonExisting {font-style:italic;} /* the 'a' is required for IE, otherwise it renders the whole tiddler in bold */ a.tiddlyLinkNonExisting.shadow {font-weight:bold;} #mainMenu .tiddlyLinkExisting, #mainMenu .tiddlyLinkNonExisting, #sidebarTabs .tiddlyLinkNonExisting {font-weight:normal; font-style:normal;} #sidebarTabs .tiddlyLinkExisting {font-weight:bold; font-style:normal;} .header {position:relative;} .header a:hover {background:transparent;} .headerShadow {position:relative; padding:4.5em 0 1em 1em; left:-1px; top:-1px;} .headerForeground {position:absolute; padding:4.5em 0 1em 1em; left:0px; top:0px;} .siteTitle {font-size:3em;} .siteSubtitle {font-size:1.2em;} #mainMenu {position:absolute; left:0; width:10em; text-align:right; line-height:1.6em; padding:1.5em 0.5em 0.5em 0.5em; font-size:1.1em;} #sidebar {position:absolute; right:3px; width:16em; font-size:.9em;} #sidebarOptions {padding-top:0.3em;} #sidebarOptions a {margin:0 0.2em; padding:0.2em 0.3em; display:block;} #sidebarOptions input {margin:0.4em 0.5em;} #sidebarOptions .sliderPanel {margin-left:1em; padding:0.5em; font-size:.85em;} #sidebarOptions .sliderPanel a {font-weight:bold; display:inline; padding:0;} #sidebarOptions .sliderPanel input {margin:0 0 0.3em 0;} #sidebarTabs .tabContents {width:15em; overflow:hidden;} .wizard {padding:0.1em 1em 0 2em;} .wizard h1 {font-size:2em; font-weight:bold; background:none; padding:0; margin:0.4em 0 0.2em;} .wizard h2 {font-size:1.2em; font-weight:bold; background:none; padding:0; margin:0.4em 0 0.2em;} .wizardStep {padding:1em 1em 1em 1em;} .wizard .button {margin:0.5em 0 0; font-size:1.2em;} .wizardFooter {padding:0.8em 0.4em 0.8em 0;} .wizardFooter .status {padding:0 0.4em; margin-left:1em;} .wizard .button {padding:0.1em 0.2em;} #messageArea {position:fixed; top:2em; right:0; margin:0.5em; padding:0.5em; z-index:2000; _position:absolute;} .messageToolbar {display:block; text-align:right; padding:0.2em;} #messageArea a {text-decoration:underline;} .tiddlerPopupButton {padding:0.2em;} .popupTiddler {position: absolute; z-index:300; padding:1em; margin:0;} .popup {position:absolute; z-index:300; font-size:.9em; padding:0; list-style:none; margin:0;} .popup .popupMessage {padding:0.4em;} .popup hr {display:block; height:1px; width:auto; padding:0; margin:0.2em 0;} .popup li.disabled {padding:0.4em;} .popup li a {display:block; padding:0.4em; font-weight:normal; cursor:pointer;} .listBreak {font-size:1px; line-height:1px;} .listBreak div {margin:2px 0;} .tabset {padding:1em 0 0 0.5em;} .tab {margin:0 0 0 0.25em; padding:2px;} .tabContents {padding:0.5em;} .tabContents ul, .tabContents ol {margin:0; padding:0;} .txtMainTab .tabContents li {list-style:none;} .tabContents li.listLink { margin-left:.75em;} #contentWrapper {display:block;} #splashScreen {display:none;} #displayArea {margin:1em 17em 0 14em;} .toolbar {text-align:right; font-size:.9em;} .tiddler {padding:1em 1em 0;} .missing .viewer,.missing .title {font-style:italic;} .title {font-size:1.6em; font-weight:bold;} .missing .subtitle {display:none;} .subtitle {font-size:1.1em;} .tiddler .button {padding:0.2em 0.4em;} .tagging {margin:0.5em 0.5em 0.5em 0; float:left; display:none;} .isTag .tagging {display:block;} .tagged {margin:0.5em; float:right;} .tagging, .tagged {font-size:0.9em; padding:0.25em;} .tagging ul, .tagged ul {list-style:none; margin:0.25em; padding:0;} .tagClear {clear:both;} .footer {font-size:.9em;} .footer li {display:inline;} .annotation {padding:0.5em; margin:0.5em;} * html .viewer pre {width:99%; padding:0 0 1em 0;} .viewer {line-height:1.4em; padding-top:0.5em;} .viewer .button {margin:0 0.25em; padding:0 0.25em;} .viewer blockquote {line-height:1.5em; padding-left:0.8em;margin-left:2.5em;} .viewer ul, .viewer ol {margin-left:0.5em; padding-left:1.5em;} .viewer table, table.twtable {border-collapse:collapse; margin:0.8em 1.0em;} .viewer th, .viewer td, .viewer tr,.viewer caption,.twtable th, .twtable td, .twtable tr,.twtable caption {padding:3px;} table.listView {font-size:0.85em; margin:0.8em 1.0em;} table.listView th, table.listView td, table.listView tr {padding:0px 3px 0px 3px;} .viewer pre {padding:0.5em; margin-left:0.5em; font-size:1.2em; line-height:1.4em; overflow:auto;} .viewer code {font-size:1.2em; line-height:1.4em;} .editor {font-size:1.1em;} .editor input, .editor textarea {display:block; width:100%; font:inherit;} .editorFooter {padding:0.25em 0; font-size:.9em;} .editorFooter .button {padding-top:0px; padding-bottom:0px;} .fieldsetFix {border:0; padding:0; margin:1px 0px;} .sparkline {line-height:1em;} .sparktick {outline:0;} .zoomer {font-size:1.1em; position:absolute; overflow:hidden;} .zoomer div {padding:1em;} * html #backstage {width:99%;} * html #backstageArea {width:99%;} #backstageArea {display:none; position:relative; overflow: hidden; z-index:150; padding:0.3em 0.5em;} #backstageToolbar {position:relative;} #backstageArea a {font-weight:bold; margin-left:0.5em; padding:0.3em 0.5em;} #backstageButton {display:none; position:absolute; z-index:175; top:0; right:0;} #backstageButton a {padding:0.1em 0.4em; margin:0.1em;} #backstage {position:relative; width:100%; z-index:50;} #backstagePanel {display:none; z-index:100; position:absolute; width:90%; margin-left:3em; padding:1em;} .backstagePanelFooter {padding-top:0.2em; float:right;} .backstagePanelFooter a {padding:0.2em 0.4em;} #backstageCloak {display:none; z-index:20; position:absolute; width:100%; height:100px;} .whenBackstage {display:none;} .backstageVisible .whenBackstage {display:block;} /*}}}*/
/*** StyleSheet for use when a translation requires any css style changes. This StyleSheet can be used directly by languages such as Chinese, Japanese and Korean which need larger font sizes. ***/ /*{{{*/ body {font-size:0.8em;} #sidebarOptions {font-size:1.05em;} #sidebarOptions a {font-style:normal;} #sidebarOptions .sliderPanel {font-size:0.95em;} .subtitle {font-size:0.8em;} .viewer table.listView {font-size:0.95em;} /*}}}*/
/*{{{*/ @media print { #mainMenu, #sidebar, #messageArea, .toolbar, #backstageButton, #backstageArea {display: none !important;} #displayArea {margin: 1em 1em 0em;} noscript {display:none;} /* Fixes a feature in Firefox 1.5.0.2 where print preview displays the noscript content */ } /*}}}*/
<!--{{{--> <div class='header' macro='gradient vert [[ColorPalette::PrimaryLight]] [[ColorPalette::PrimaryMid]]'> <div class='headerShadow'> <span class='siteTitle' refresh='content' tiddler='SiteTitle'></span> <span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span> </div> <div class='headerForeground'> <span class='siteTitle' refresh='content' tiddler='SiteTitle'></span> <span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span> </div> </div> <div id='mainMenu' refresh='content' tiddler='MainMenu'></div> <div id='sidebar'> <div id='sidebarOptions' refresh='content' tiddler='SideBarOptions'></div> <div id='sidebarTabs' refresh='content' force='true' tiddler='SideBarTabs'></div> </div> <div id='displayArea'> <div id='messageArea'></div> <div id='tiddlerDisplay'></div> </div> <!--}}}-->
<!--{{{--> <div class='toolbar' macro='toolbar [[ToolbarCommands::ViewToolbar]]'></div> <div class='title' macro='view title'></div> <div class='subtitle'><span macro='view modifier link'></span>, <span macro='view modified date'></span> (<span macro='message views.wikified.createdPrompt'></span> <span macro='view created date'></span>)</div> <div class='tagging' macro='tagging'></div> <div class='tagged' macro='tags'></div> <div class='viewer' macro='view text wikified'></div> <div class='tagClear'></div> <!--}}}-->
<!--{{{--> <div class='toolbar' macro='toolbar [[ToolbarCommands::EditToolbar]]'></div> <div class='title' macro='view title'></div> <div class='editor' macro='edit title'></div> <div macro='annotations'></div> <div class='editor' macro='edit text'></div> <div class='editor' macro='edit tags'></div><div class='editorFooter'><span macro='message views.editor.tagPrompt'></span><span macro='tagChooser excludeLists'></span></div> <!--}}}-->
To get started with this blank [[TiddlyWiki]], you'll need to modify the following tiddlers: * [[SiteTitle]] & [[SiteSubtitle]]: The title and subtitle of the site, as shown above (after saving, they will also appear in the browser title bar) * [[MainMenu]]: The menu (usually on the left) * [[DefaultTiddlers]]: Contains the names of the tiddlers that you want to appear when the TiddlyWiki is opened You'll also need to enter your username for signing your edits: <<option txtUserName>>
These [[InterfaceOptions]] for customising [[TiddlyWiki]] are saved in your browser Your username for signing your edits. Write it as a [[WikiWord]] (eg [[JoeBloggs]]) <<option txtUserName>> <<option chkSaveBackups>> [[SaveBackups]] <<option chkAutoSave>> [[AutoSave]] <<option chkRegExpSearch>> [[RegExpSearch]] <<option chkCaseSensitiveSearch>> [[CaseSensitiveSearch]] <<option chkAnimate>> [[EnableAnimations]] ---- Also see [[AdvancedOptions]]
<<importTiddlers>>
|''Type:''|file| |''URL:''|http://bob.mcelrath.org/tiddlyjsmath.html| |''Workspace:''|(default)| This tiddler was automatically created to record the details of this server
# Google Chrome does not allow """file:///""" URL's to use AJAX to load other files, so [[Plugin: jsMath]] cannot load {{{jsMath.js}}}. This is a security design decision, and it seems unlikely that it will change. To work around this, [[Plugin: jsMath]] will create a [[MarkupPostHead]] tiddler with a <script> tag to load it instead. You will then be directed to save your TiddlyWiki. (On Google Chrome this requires [[TiddlySaver.jar|http://www.tiddlywiki.com/TiddlySaver.jar]] in the same directory and a working Java plugin) It is safe to pass around TiddlyWikis with this code in [[MarkupPostHead]], it will work on all browsers. (But it makes the install 2-step and can create errors if you uninstall [[Plugin: jsMath]], beware!) Another workaround is to add {{{--allow-file-access-from-files}}} to the {{{google-chrome}}} command line when you run it. # Due to the same above "feature", certain sub-libraries loaded automatically by jsMath using AJAX will not work on Chrome using a """file:///""" URL.
[[Plugin: jsMath]]
<<newTiddler>> ---- [[Plugin: jsMath]] [[Plugin: arXiv Links]] [[Plugin: Scientific Notation]] [[Bugs]] StyleSheet
<!--{{{--> <script src="jsMath/jsMath.js"></script> <!--}}}-->
/*** |Name|Plugin: Scientific Notation| |Created by|BobMcElrath| |Email|my first name at my last name dot org| |Location|http://bob.mcelrath.org/tiddlyjsmath-2.0.3.html| |Version|1.0| |Requires|[[TiddlyWiki|http://www.tiddlywiki.com]] ≥ 2.0.3, [[jsMath|http://www.math.union.edu/~dpvc/jsMath/]] ≥ 3.0, [[Plugin: jsMath]]| !Description This plugin will render numbers expressed in scientific notation, such as {{{3.5483e12}}} using the jsMath plugin to display it in an intuitive way such as 3.5483e12. You may customize the number of significant figures displayed, as well as "normalize" numbers so that {{{47392.387e9}}} is displayed as 47392.387e9. !Installation Install the Requirements, above, add this tiddler to your tiddlywiki, and give it the {{{systemConfig}}} tag. !History * 1-Feb-06, version 1.0, Initial release !Code ***/ //{{{ config.formatters.push({ name: "scientificNotation", match: "\\b[0-9]+\\.[0-9]+[eE][+-]?[0-9]+\\b", element: "span", className: "math", normalize: true, // set to 'true' to convert numbers to X.XXX \times 10^{y} sigfigs: 3, // with this many digits in the mantissa handler: function(w) { var snRegExp = new RegExp("\\b([0-9]+(?:\\.[0-9]+)?)[eE]([-0-9+]+)\\b"); var mymatch = snRegExp.exec(w.matchText); var mantissa = mymatch[1]; var exponent = parseInt(mymatch[2]); // normalize the number. if(this.normalize) { mantissa = parseFloat(mantissa); while(mantissa > 10.0) { mantissa = mantissa / 10.0; exponent++; } while(mantissa < 1.0) { mantissa = mantissa * 10.0; exponent--; } var sigfigsleft = this.sigfigs; mantissa = parseInt(mantissa) + "." + (Math.round(Math.pow(10,this.sigfigs-1)*mantissa)+"").substr(1,this.sigfigs-1); } var e = document.createElement(this.element); e.className = this.className; if(exponent == 0) { e.appendChild(document.createTextNode(mantissa)); } else { e.appendChild(document.createTextNode(mantissa + "\\times 10^{" + exponent + "}")); } w.output.appendChild(e); } }); //}}}
/*** |Name|Plugin: arXiv Links| |Created by|BobMcElrath| |Email|my first name at my last name dot org| |Location|http://bob.mcelrath.org/tiddlyjsmath-2.0.3.html| |Version|1.0| |Requires|[[TiddlyWiki|http://www.tiddlywiki.com]] ≥ 2.0.3| !Description This formatting plugin will render links to the [[arXiv|http://www.arxiv.org]] preprint system. If you type a paper reference such as hep-ph/0509024, it will be rendered as an external link to the abstract of that paper. !Installation Add this tiddler to your tiddlywiki, and give it the {{{systemConfig}}} tag. !History * 1-Feb-06, version 1.0, Initial release !Code ***/ //{{{ config.formatters.push({ name: "arXivLinks", match: "\\b(?:astro-ph|cond-mat|hep-ph|hep-th|hep-lat|gr-qc|nucl-ex|nucl-th|quant-ph|(?:cs|math|nlin|physics|q-bio)(?:\\.[A-Z]{2})?)/[0-9]{7}\\b", element: "a", handler: function(w) { var e = createExternalLink(w.output, "http://arxiv.org/abs/"+w.matchText); e.target = "_blank"; // open in new window w.outputText(e,w.matchStart,w.nextMatch); } }); //}}}
/*** |Name|Plugin: jsMath| |Created by|BobMcElrath| |Email|my first name at my last name dot org| |Location|http://bob.mcelrath.org/tiddlyjsmath.html| |Version|1.6| |Requires|[[TiddlyWiki|http://www.tiddlywiki.com]] ≥ 2.0.3, [[jsMath|http://www.math.union.edu/~dpvc/jsMath/]] ≥ 3.0| !Description 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. !Installation In 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. I also recommend modifying your StyleSheet use serif fonts that are slightly larger than normal, so that the math matches surrounding text, and \\small fonts are not unreadable (as in exponents and subscripts). {{{ .viewer { line-height: 125%; font-family: serif; font-size: 12pt; } }}} You may also optionally add the following code to load jsMath in [[MarkupPostHead]] if you desire. {{{ <!--{{{--> <script src="jsMath/jsMath.js"></script> <!--}}}--> }}} [[Plugin: jsMath]] will normally load jsMath dynamically using AJAX, but adding the above in [[MarkupPostHead]] may be useful if you have jsMath stored in a non-standard location, or if your browser's cross-site origin policy forbids loading files from file URL's using AJAX. (e.g. Google Chrome) !History * 11-Nov-05, version 1.0, Initial release * 22-Jan-06, version 1.1, updated for ~TW2.0, tested with jsMath 3.1, editing tiddlywiki.html by hand is no longer necessary. * 24-Jan-06, version 1.2, fixes for Safari, Konqueror * 27-Jan-06, version 1.3, improved error handling, detect if ajax was already defined (used by ZiddlyWiki) * 12-Jul-06, version 1.4, fixed problem with not finding image fonts * 26-Feb-07, version 1.5, fixed problem with Mozilla "unterminated character class". * 27-Feb-07, version 1.5.1, Runs compatibly with TW 2.1.0+, by Bram Chen * 5-May-11, version 1.6, Use a script tag to load in Chrome, use jQuery for ajax !Examples |!Source|!Output|h |{{{The variable $x$ is real.}}}|The variable $x$ is real.| |{{{The variable \(y\) is complex.}}}|The variable \(y\) is complex.| |{{{This \[\int_a^b x = \frac{1}{2}(b^2-a^2)\] is an easy integral.}}}|This \[\int_a^b x = \frac{1}{2}(b^2-a^2)\] is an easy integral.| |{{{This $$\int_a^b \sin x = -(\cos b - \cos a)$$ is another easy integral.}}}|This $$\int_a^b \sin x = -(\cos b - \cos a)$$ is another easy integral.| |{{{Block formatted equations may also use the 'equation' environment \begin{equation} \int \tan x = -\ln \cos x \end{equation} }}}|Block formatted equations may also use the 'equation' environment \begin{equation} \int \tan x = -\ln \cos x \end{equation}| |{{{Equation arrays are also supported \begin{eqnarray} a &=& b \\ c &=& d \end{eqnarray} }}}|Equation arrays are also supported \begin{eqnarray} a &=& b \\ c &=& d \end{eqnarray} | |{{{I spent \$7.38 on lunch.}}}|I spent \$7.38 on lunch.| |{{{I had to insert a backslash (\\) into my document}}}|I had to insert a backslash (\\) into my document| !Code ***/ //{{{ // Load jsMath if(typeof jsMath == 'undefined') { jsMath = { Setup: {inited: 1}, // don't run jsMath.Setup.Body() yet Autoload: {root: new String(document.location).replace(/[^\/]*$/,'jsMath/')} // URL to jsMath directory, change if necessary }; try { jQuery.ajax({url: jsMath.Autoload.root+"jsMath.js", dataType: 'script', async: false, error: function(j, s, e) { throw(e); } }); jsMath.Setup.inited=0; // allow jsMath.Setup.Body() to run again } catch(e) { if(navigator.userAgent.toLowerCase().indexOf('chrome') > -1 && document.location.toString().indexOf('file') == 0) { var jsMathScript = '<!--{{{-->\n<script src="jsMath/jsMath.js"></script>\n<!--}}}-->'; var MarkupPostHead = store.fetchTiddler("MarkupPostHead"); if(MarkupPostHead && !MarkupPostHead.match(jsMathScript)) { MarkupPostHead.text += jsMathScript; } else { MarkupPostHead = store.createTiddler("MarkupPostHead"); MarkupPostHead.text = jsMathScript; } throw("jsMath added to MarkupPostHead: now save and reload (Google Chrome cross origin file:/// URL workaround)"); } else { alert("jsMath was not found: you must place the 'jsMath' directory in the same place as this file. " +"The error was:\n"+e.name+": "+e.message); throw(e); // abort eval } } } // Define wikifers for latex config.formatterHelpers.mathFormatHelper = function(w) { var e = document.createElement(this.element); e.className = this.className; var endRegExp = new RegExp(this.terminator, "mg"); endRegExp.lastIndex = w.matchStart+w.matchLength; var matched = endRegExp.exec(w.source); if(matched) { var txt = w.source.substr(w.matchStart+w.matchLength, matched.index-w.matchStart-w.matchLength); if(this.keepdelim) { txt = w.source.substr(w.matchStart, matched.index+matched[0].length-w.matchStart); } e.appendChild(document.createTextNode(txt)); w.output.appendChild(e); w.nextMatch = endRegExp.lastIndex; } } config.formatters.push({ name: "displayMath1", match: "\\\$\\\$", terminator: "\\\$\\\$\\n?", // 2.0 compatability termRegExp: "\\\$\\\$\\n?", element: "div", className: "math", handler: config.formatterHelpers.mathFormatHelper }); config.formatters.push({ name: "inlineMath1", match: "\\\$", terminator: "\\\$", // 2.0 compatability termRegExp: "\\\$", element: "span", className: "math", handler: config.formatterHelpers.mathFormatHelper }); var backslashformatters = new Array(0); backslashformatters.push({ name: "inlineMath2", match: "\\\\\\\(", terminator: "\\\\\\\)", // 2.0 compatability termRegExp: "\\\\\\\)", element: "span", className: "math", handler: config.formatterHelpers.mathFormatHelper }); backslashformatters.push({ name: "displayMath2", match: "\\\\\\\[", terminator: "\\\\\\\]\\n?", // 2.0 compatability termRegExp: "\\\\\\\]\\n?", element: "div", className: "math", handler: config.formatterHelpers.mathFormatHelper }); backslashformatters.push({ name: "displayMath3", match: "\\\\begin\\{equation\\}", terminator: "\\\\end\\{equation\\}\\n?", // 2.0 compatability termRegExp: "\\\\end\\{equation\\}\\n?", element: "div", className: "math", handler: config.formatterHelpers.mathFormatHelper }); // These can be nested. e.g. \begin{equation} \begin{array}{ccc} \begin{array}{ccc} ... backslashformatters.push({ name: "displayMath4", match: "\\\\begin\\{eqnarray\\}", terminator: "\\\\end\\{eqnarray\\}\\n?", // 2.0 compatability termRegExp: "\\\\end\\{eqnarray\\}\\n?", element: "div", className: "math", keepdelim: true, handler: config.formatterHelpers.mathFormatHelper }); // The escape must come between backslash formatters and regular ones. // So any latex-like \commands must be added to the beginning of // backslashformatters here. backslashformatters.push({ name: "escape", match: "\\\\.", handler: function(w) { w.output.appendChild(document.createTextNode(w.source.substr(w.matchStart+1,1))); w.nextMatch = w.matchStart+2; } }); config.formatters=backslashformatters.concat(config.formatters); window.wikify = function(source,output,highlightRegExp,tiddler) { if(source && source != "") { if(version.major == 2 && version.minor > 0) { var wikifier = new Wikifier(source,getParser(tiddler),highlightRegExp,tiddler); wikifier.subWikifyUnterm(output); } else { var wikifier = new Wikifier(source,formatter,highlightRegExp,tiddler); wikifier.subWikify(output,null); } jsMath.ProcessBeforeShowing(); } } //}}}
a reusable non-linear personal web notebook with LaTeX via [[jsMath|http://www.math.union.edu/~dpvc/jsMath/]]
$L_AT^EX$ TiddlyWiki
http://bob.mcelrath.org/tiddlyjsmath-2.0.3.html
/*{{{*/ .viewer { line-height: 125%; font-family: serif; font-size: 12pt; } .viewer pre { font-size: 10pt; } #mainMenu { width: 11em; } /*}}}*/