<!--{{{-->
<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]];}

#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]];}

#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 0em 1em 1em; left:-1px; top:-1px;}
.headerForeground {position:absolute; padding:4.5em 0em 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:0em 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 .3em 0;}
#sidebarTabs .tabContents {width:15em; overflow:hidden;}

.wizard {padding:0.1em 1em 0em 2em;}
.wizard h1 {font-size:2em; font-weight:bold; background:none; padding:0em 0em 0em 0em; margin:0.4em 0em 0.2em 0em;}
.wizard h2 {font-size:1.2em; font-weight:bold; background:none; padding:0em 0em 0em 0em; margin:0.4em 0em 0.2em 0em;}
.wizardStep {padding:1em 1em 1em 1em;}
.wizard .button {margin:0.5em 0em 0em 0em; font-size:1.2em;}
.wizardFooter {padding:0.8em 0.4em 0.8em 0em;}
.wizardFooter .status {padding:0em 0.4em 0em 0.4em; margin-left:1em;}
.wizard .button {padding:0.1em 0.2em 0.1em 0.2em;}

#messageArea {position:fixed; top:2em; right:0em; margin:0.5em; padding:0.5em; z-index:2000; _position:absolute;}
.messageToolbar {display:block; text-align:right; padding:0.2em 0.2em 0.2em 0.2em;}
#messageArea a {text-decoration:underline;}

.tiddlerPopupButton {padding:0.2em 0.2em 0.2em 0.2em;}
.popupTiddler {position: absolute; z-index:300; padding:1em 1em 1em 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 0em;}
.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 0em 0em 0.5em;}
.tab {margin:0em 0em 0em 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 0em 14em;}

.toolbar {text-align:right; font-size:.9em;}

.tiddler {padding:1em 1em 0em 1em;}

.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:0em 0.25em; padding:0em 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 0em; font-size:.9em;}
.editorFooter .button {padding-top:0px; padding-bottom:0px;}

.fieldsetFix {border:0; padding:0; margin:1px 0px 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 0.3em 0.5em;}
#backstageToolbar {position:relative;}
#backstageArea a {font-weight:bold; margin-left:0.5em; padding:0.3em 0.5em 0.3em 0.5em;}
#backstageButton {display:none; position:absolute; z-index:175; top:0em; right:0em;}
#backstageButton a {padding:0.1em 0.4em 0.1em 0.4em; margin:0.1em 0.1em 0.1em 0.1em;}
#backstage {position:relative; width:100%; z-index:50;}
#backstagePanel {display:none; z-index:100; position:absolute; margin:0em 3em 0em 3em; padding:1em 1em 1em 1em;}
.backstagePanelFooter {padding-top:0.2em; float:right;}
.backstagePanelFooter a {padding:0.2em 0.4em 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 1em;}
/* Fixes a feature in Firefox 1.5.0.2 where print preview displays the noscript content */
noscript {display:none;}
}
/*}}}*/
<!--{{{-->
<div class='header' macro='gradient vert [[ColorPalette::PrimaryLight]] [[ColorPalette::PrimaryMid]]'>
<div class='headerShadow'>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
</div>
<div class='headerForeground'>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;
<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 closeTiddler closeOthers +editTiddler > fields syncing permalink references jump'></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 +saveTiddler -cancelTiddler deleteTiddler'></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'></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>>
/***
|''Name:''|ASCIIsvgPlugin|
|''Description:''|Mathematical vector graphics based on [[ASCIIsvg|http://www1.chapman.edu/~jipsen/asciisvg.html]]|
|''Version:''|1.0.0|
|''Date:''|Sep 12, 2007|
|''Source:''|http://www.math.ist.utl.pt/~psoares/addons.html|
|''Documentation:''|[[ASCIIsvgPlugin Documentation|ASCIIsvgPluginDoc]]|
|''Author:''|Paulo Soares|
|''License:''|[[Creative Commons Attribution-Share Alike 3.0 License|http://creativecommons.org/licenses/by-sa/3.0/]]|
|''~CoreVersion:''|2.1.0|
***/
//{{{
Story.prototype.ASCIIsvgRefreshTiddler = Story.prototype.refreshTiddler;
Story.prototype.refreshTiddler = function(title,minorUpdate) {
	setTimeout('drawPictures()',100);
	return(this.ASCIIsvgRefreshTiddler(title,minorUpdate));
}

config.shadowTiddlers.ASCIIsvgPluginDoc="The documentation is available [[here.|http://www.math.ist.utl.pt/~psoares/addons.html#ASCIIsvgPluginDoc]]";
//}}}
!Description
This plugin is a wrapper for a modified version of Peter Jipsen's [[ASCIIsvg|http://www1.chapman.edu/~jipsen/asciisvg.html]]. The main changes are:
#mouseover effects over the figures were removed (too much clumsy code to so little results...)
#a unique id for each figure is mandatory
#small changes in some functions' names (for improved coherence)
Most of the syntax was preserved so, to be able to draw beautiful SVG pictures in your ~TiddlyWiki you should take a look at the [[ASCIIsvg|http://www1.chapman.edu/~jipsen/asciisvg.html]] site.

The plugin is known to do a good job with Mozilla Firefox 2.0 and Opera 9.23. I'm not sure about the awful Internet Explorer (with the Adobe SVG plugin).
!Installation
This is not a self-contained plugin. To install it, download the modified ~ASCIIsvg code [[here|http://www.math.ist.utl.pt/~psoares/TWASCIIsvg.js]] and this other [[one|http://www.math.ist.utl.pt/~psoares/d.svg]], and put them next to your ~TiddlyWiki file. Next, add the following line to the MarkupPreHead tiddler:
{{{
<script type="text/javascript" src="TWASCIIsvg.js"></script>
}}}
Finally, copy the ASCIIsvgPlugin tiddler to your ~TiddlyWiki, give it the //systemConfig// tag, save and reload.
!Credits
A final word of appreciation for Peter Jipsen's fine work on promoting beautiful math in the web.
[>img[Ampolla de Klein|62px-Klein_bottle.svg.png][http://commons.wikimedia.org/wiki/Image:Klein_bottle.svg]]
*Amb [[ASCIIsvg|http://math.chapman.edu/cgi-bin/math.pl?ASCIIsvg_Gallery]]:
**[[Corbes de Lissajous|http://math.chapman.edu/cgi-bin/math.pl?Lissajous]]
**[[Espiral|http://math.chapman.edu/cgi-bin/math.pl?Spiral]]
**[[Flors|http://math.chapman.edu/cgi-bin/math.pl?Flowers]]
**[[Traçat d'una el·ipse|http://math.chapman.edu/cgi-bin/math.pl?Ellipse]]
**[[Pendent d'una corba|http://math.chapman.edu/cgi-bin/math.pl?Slope_of_tangent_line]]
*Amb [[Gnuplot|http://commons.wikimedia.org/wiki/Category:Gnuplot_diagrams]]
*Més [[Gràfics fets amb SVG|http://commons.wikimedia.org/wiki/Category:Manually_coded_SVG]]
*Més [[Gràfics fets amb mathemàtica|http://commons.wikimedia.org/wiki/Category:Mathematica_diagrams]]
Neumàtica
*[[Simbols ISO1219|http://commons.wikimedia.org/wiki/Category:ISO_1219]]

Algebra
*[[Àlgebra online|http://www.opencollege.com/simsim/html/algebra/index_out.html]]

Química
*[[Susbstàncies mol·leculars i Geometria mol·lecular|http://w3.cnice.mec.es/eos/MaterialesEducativos/mem/moleculares/programa/html/index.htm]]
*[[Taula periòdica|http://www.opencollege.com/simsim/html/ptable/ptable_out.html]]
*[[Jmol|http://jmol.sourceforge.net/index.en.html]]

[[Planetari|http://www.opencollege.com/simsim/html/planet/planet.html]]
''Instruccions'' (cal <<wikipedia Firefox>> o MathPlayer)
#Clica el botó //''Mostra''// i varia l'''Amplitud'' i el ''Període''. Observa com varia la ona resultant, al prèmer el botó  //''Torna a dibuixar''//.
#També pots canviar el ''Desfasament'' i el ''Desplaçament''. Han de ser més grans que 1 per que es vegin.
#Per tornar a començar, actualitza la pàgina.
<html>
<div align="center">
<embed id="ones"; src="d.svg";
script='width=400; height=400;
  initPicture(-6.5,6.5,-6.5,6.5)
  xscl=1;
  axes()
  Amplitud= 4
  Periode= 3
  Desfasament= 0
  Desplaçament= 0
  w=2*pi/Periode
stroke = "red"
plot(x, Desplaçament+Amplitud*sin(w*x+Desfasament))
stroke = "blue"
marker = "arrow"
line([0,Amplitud],[Periode,Amplitud])
text([Periode/2,Amplitud+.5], "Període")
stroke = "green"
line([Periode,0],[Periode,Amplitud])
text([Periode+.5,Amplitud/2], "Amplitud")
if (Desfasament>1) {
   stroke = "red"
   line([0,-1],[Desfasament,-1]);
   text([Desfasament/2,-1.5], "Desfasament");
}
if (Desplaçament>1) {
   stroke = "black"
   line([-1,0],[-1,Desplaçament]);
   text([-1,Desplaçament+.5], "Desplaçament");
}
text([.5,9], "Amplitud")
text([4.5,-2], "Temps")'>
</html>

!Preguntes
Per què la fletxa del ''Desplaçament'' no es dibuixa sempre correctament? (Pots variar el seu valor per observar-ho.)
Pots canviar la [[funció representada|http://www.w3schools.com/jsref/jsref_obj_math.asp]]
!Conceptes
<<wikipedia Amplitud>>, <<wikipedia Període>>, <<wikipedia Ona>>, <<wikipedia Desfasament>>, <<wikipedia Desplaçament>>
!Referències
*Materials d'ampliació: [[Funcions trigonomètriques|http://w3.cnice.mec.es/eos/MaterialesEducativos/mem2001/razonestri/funciones_trigonometricas.htm]] [[Ones|http://concurso.cnice.mec.es/cnice2005/56_ondas/index.htm]]
*[[Quant al SVG]]
*[[Possibilitats del JavaScript|http://www.w3schools.com/JS/js_obj_math.asp]]
*[[ASCIIMath|http://www1.chapman.edu/~jipsen/mathml/asciimathcalculator.html]]
*[[Lleva-seguidor|http://commons.wikimedia.org/wiki/Image:Cam-disc-1_frontview_animated.gif]]
*[[Engranatges rectes|http://commons.wikimedia.org/wiki/Image:Anim_engrenages_helicoidaux.gif]]
*[[Engranatges helicoidals|http://commons.wikimedia.org/wiki/Image:Anim_engrenages_droits.gif]]
*[[Involuta|http://commons.wikimedia.org/wiki/Image:Involute_wheel.gif]]
*[[Pinyó-cremallera|http://commons.wikimedia.org/wiki/Image:Rack_and_pinion_animation.gif]]
*[[Epicicle|http://commons.wikimedia.org/wiki/Image:Epicyclic_gear_ratios_2.gif]]

!Més
[[Engranatges|http://www.xtec.es/~jrosell3/engranatges/]] J.Rosell
[[Relatran|http://www.softcatala.org/prog82.htm]] Simulador didàctic (Per Windows)
/***
|''Name:''|CatalanLingo|
|''Description:''|Central Catalan translation for TW|
|''Author:''|Paco Rivière (http://pacoriviere.cat)|
|''Version:''|2.2.3|
|''Source:''|http://pacoriviere.googlepages.com/TiddlyWiki.html|
|''Date:''|Jun 17, 2007|
|''Comments:''|Agrairem els vostres comentaris a https://projectes.lafarga.cat/forum/?group_id=38|
|''License:''|[[BSD open source license]]|
|''~CoreVersion:''|2.2.3|
***/

/*{{{*/
//--
//-- Translateable strings
//--

// Strings in "double quotes" should be translated; strings in 'single quotes' should be left alone

config.locale = "ca"; // W3C language tag

merge(config.options,{
	txtUserName: "ElVostreNom"});

merge(config.tasks,{
save: {text: "desa", tooltip: "Desa tots els canvis en aquest arxiu", action: saveChanges},
sync: {text: "sincronitza", tooltip: "Sincronitza els canvis amb d'altres fitxers i servidors TiddlyWiki", content: '<<sync>>'},
importTask: {text: "importa", tooltip: "Importa tiddlers i connector d'altres fitxers TiddlyWiki i servidors", content: '<<importTiddlers>>'},
tweak: {text: "opcions", tooltip: "Tria el comportament de TiddlyWiki", content: '<<options>>'},
plugins: {text: "connectors", tooltip: "Gestiona els connectors", content: '<<plugins>>'}
});

// Options that can be set in the options panel and/or cookies
merge(config.optionsDesc,{
	txtUserName: "Nom utilitzat per signar els canvis",
	chkRegExpSearch: "Cerca expressions regulars",
	chkCaseSensitiveSearch: "Distingeix les majúscules en cercar",
	chkAnimate: "Fes servir animacions",
	chkSaveBackups: "Desa una còpia de seguretat abans de desar els canvis",
	chkAutoSave: "Registra els canvis de forma automàtica",
	chkGenerateAnRssFeed: "Genera un fil RSS en desar els canvis",
	chkSaveEmptyTemplate: "Genera un fitxer 'empty.html'en desar els canvis",
	chkOpenInNewWindow: "Obre els vincles externs en un altre finestra",
	chkToggleLinks: "Tanca els elements oberts en clicar sobre els seus vincles",
	chkHttpReadOnly: "Amaga els botons d'edició quan s'accedeix com per HTTP",
	chkForceMinorUpdate: "Tracta les edicions com a Canvis Menors conservant data i hora",
	chkConfirmDelete: "Demana confirmació abans de superimir un element",
	chkInsertTabs: "Inserta un tabulador amb la tecla 3tab en lloc de slatar el camp",
	txtBackupFolder: "Nom de la carpeta per als arxius de còpia",
	txtMaxEditRows: "Màxim nombre de línies d'una capsa d'edició tiddler",
	txtFileSystemCharSet: "Codificació de caractèrs per desar els (només per Firefox/Mozilla)"});

merge(config.messages,{
	customConfigError: "S'han trobat problemes en carregar els connectors. Veieu el PluginManager per a més detalls",
	pluginError: "Error: %0",
	pluginDisabled: "La etiqueta 'systemConfigDisable' no ha permés l'execució",
	pluginForced: "La etiqueta 'systemConfigForce' ha forçat l'execució",
	pluginVersionError: "No s'ha executat el connector donat que cal una versió més recent de TiddlyWiki",
	nothingSelected: "No heu triat res. Selecioneu un o més elements",
	savedSnapshotError: "Sembla que aquest TiddlyWiki s'ha desat malament. Veieu el detalls a http://pacoriviere.googlepages.com/TiddlyWiki.html#BaixaElProgramari",
	subtitleUnknown: "(desconegut)",
	undefinedTiddlerToolTip: "El tiddler '%0' encara no existeix",
	shadowedTiddlerToolTip: "El tiddler '%0' encara no existeix, però té un valor predefinit",
	tiddlerLinkTooltip: "%0 - %1, %2",
	externalLinkTooltip: "Enllaç extern cap a %0",
	noTags: "No hi ha tiddlers amb etiquetes",
	notFileUrlError: "Cal desar aquest TiddlyWiki a un arxiu abans de poder desar els canvis",
	cantSaveError: "No es poden desar els canvis. Pot ser que el vostre navegador no permeti desar (Proveu de fer servir Firefox, en lloc), o degut a que el nom de la ruta de l'arxiu TiddlyWiki té algun caràcter incorrecte",
	invalidFileError: "Sembla que l'arxiu original '%0' no és un TiddlyWiki vàlid",
	backupSaved: "S'ha desat la còpia",
	backupFailed: "No ha estat possible desar la còpia de l'arxiu",
	rssSaved: "S'ha desat el fil RSS",
	rssFailed: "No ha estat possible desar el fil RSS",
	emptySaved: "S'ha desat la plantilla buida",
	emptyFailed: "No ha estat possible desar la plantilla buida",
	mainSaved: "S'ha desat l'arxiu principal de TiddlyWiki",
	mainFailed: "No ha estat possible desar l'arxiu principal de TiddlyWiki. Els vostres canvis no s'han desat",
	macroError: "Hi ha un error a la macro <<%0>>",
	macroErrorDetails: "Hi ha hagut un error a l'executar la macro <<%0>>:\n%1",
	missingMacro: "No es troba la macro",
	overwriteWarning: "Ja hi ha un tiddler amb el nom '%0'. Trieu DAcord si el voleu sobreescriure",
	unsavedChangesWarning: "ATENCIÓ! Hi ha canvis que no s'han desat al TiddlyWiki\n\nTrieu DAcord per desar\nTrieu ANUL·LA per descartar-los",
	confirmExit: "--------------------------------\n\nHi ha canvis que no s'han desat al TiddlyWiki. Si continueu perdreu aquests canvis\n\n--------------------------------",
	saveInstructions: "DesaElsCanvis",
	unsupportedTWFormat: "El format del TiddlyWiki no es permés '%0'",
	tiddlerSaveError: "Hi ha hagut un error en desar el tiddler '%0'",
	tiddlerLoadError: "Hi ha hagut un error en desar el tiddler '%0'",
	wrongSaveFormat: "No es pot desar en el format de magatzament '%0'. Feu servir el format standard per a desar.",
	invalidFieldName: "El nom del camp no és vàlid vàlid %0",
	fieldCannotBeChanged: "No es pot modificar el camp '%0'",
	loadingMissingTiddler: "Intentant recuperar el '%0' del servidor '%1' a:\n\n'%2' a l'espai de treball '%3'"});

merge(config.messages.messageClose,{
	text: "tanca",
	tooltip: "Tanca aquest tiddler"});

config.messages.backstage = {
	open: {text: "bastidors", tooltip: "Obre els bastidors per les tasques d'autor i editor"},
	close: {text: "tanca", tooltip: "Tanca els bastidors"},
	prompt: "bastidors : ",
	decal: {
		edit: {text: "edita", tooltip: "Edita el tiddler '%0'"}
	}
};

config.messages.listView = {
	tiddlerTooltip: "Cliqueu per preveure el tiddler",
	previewUnavailable: "(no es pot preveure)"
};

config.messages.dates.months = ["de gener de", "de febrer de", "de març de", "d'abril de", "de maig de", "de juny de", "de juliol de", "d'agost de", "de setembre de", "d'octubre de", "de novembre de","de desembre de"];
config.messages.dates.days = ["Diumenge", "Dilluns", "Dimarts", "Dimecres", "Dijous", "Divendres", "Dissabte"];
config.messages.dates.shortMonths = ["Gen", "Feb", "Mar", "Abr", "Mai", "Jun", "Jul", "Ago", "Set", "Oct", "Nov", "Des"];
config.messages.dates.shortDays = ["Diu", "Dil", "Dma", "Dcr", "Dij", "Div", "Dis"];
// suffixes for dates, eg "1st","2nd","3rd"..."30th","31st"
config.messages.dates.daySuffixes = ["r","n","r","t","é","é","é","é","é","é",
		"é","é","é","é","é","é","é","é","é","é",
		"é","","é","é","é","é","é","é","é","é",
		"é"];
config.messages.dates.am = "m.";
config.messages.dates.pm = "t.";

merge(config.messages.tiddlerPopup,{
	});

merge(config.views.wikified.tag,{
	labelNoTags: "sense etiquetes",
	labelTags: "etiquetes: ",
	openTag: "Obre l'etiqueta '%0'",
	tooltip: "Obre els tiddlers etiquetats amb '%0'",
	openAllText: "obre tots",
	openAllTooltip: "Obre tots aquests tiddlers",
	popupNone: "No hi ha altres tiddlers etiquetats amb '%0'"});

merge(config.views.wikified,{
	defaultText: "El tiddler '%0' no existeix. Cliqueu dos cops per començar-lo",
	defaultModifier: "(falta)",
	shadowModifier: "(tiddler ombra pre-definit)",
	dateFormat: "DD MMM YYYY",
	createdPrompt: "creat el"});

merge(config.views.editor,{
	tagPrompt: "Afegiu les etiquetes separades per espais, [[feu servir corxets]] si cal, o afegiu-ne",
	defaultText: "Entreu el text per a '%0'.'"});

merge(config.views.editor.tagChooser,{
	text: "etiquetes",
	tooltip: "Tria entre les etiquetes actuals per afegir a aquest tiddler",
	popupNone: "No hi ha etiquetes definides",
	tagTooltip: "Atribuir a etiqueta '%0'"});

merge(config.messages,{
	sizeTemplates:
		[
		{unit: 1024*1024*1024, template: "%0\u00a0GB"},
		{unit: 1024*1024, template: "%0\u00a0MB"},
		{unit: 1024, template: "%0\u00a0KB"},
		{unit: 1, template: "%0\u00a0B"}
		]});

merge(config.macros.search,{
	label: "cerca",
	prompt: "Cerca en aquest TiddlyWiki",
	accessKey: "F",
	successMsg: "S'han trobat %0 tiddlers que contenen: '%1'",
	failureMsg: "No s'ha trobat cap tiddler amb: '%0'"});

merge(config.macros.tagging,{
	label: "articles:",
	labelNotTag: "cap article",
	tooltip: "Llista de tiddlers etiquetats amb '%0'"});

merge(config.macros.timeline,{
	dateFormat: "DD MMM YYYY"});

merge(config.macros.allTags,{
	tooltip: "Mostra tiddlers com a etiqueta '%0'",
	noTags: "No hi ha tiddlers amb etiquetes"});

config.macros.list.all.prompt = "Tots els tiddlers per ordre alfabètic";
config.macros.list.missing.prompt = "Tiddlers que tenen enllaços cap a ells, però no estàn definits";
config.macros.list.orphans.prompt = "Tiddlers sense enllaços des de cap altre";
config.macros.list.shadowed.prompt = "Tiddlers amb ombres amb contingut per omisió";
config.macros.list.touched.prompt = "Tiddlers que heu modificat localment";

merge(config.macros.closeAll,{
	label: "tanca tots",
	prompt: "Tanca tots els tiddlers oberts (excepte els que s'estàn editant)"});

merge(config.macros.permaview,{
	label: "torna vista",
	prompt: "Enllaça a una URL que torni tots els tiddlers que es mostren ara"});

merge(config.macros.saveChanges,{
	label: "desa els canvis",
	prompt: "Desa tots els canvis a un arxiu",
	accessKey: "S"});

merge(config.macros.newTiddler,{
	label: "nou tiddler",
	prompt: "Obre un nou tiddler",
	title: "Nou tiddler",
	accessKey: "N"});

merge(config.macros.newJournal,{
	label: "nou diari",
	prompt: "Obre un nou tiddler amb la data i hora actuals",
	accessKey: "J"});

merge(config.macros.options,{
	wizardTitle: "Opcions avançades",
	step1Title: "Aquestes opcions es desen a les galetes del vostre navegador",
	step1Html: "<input type='hidden' name='markList'></input><br><input type='checkbox' checked='false' name='chkUnknown'>Mostre les opcions desconegudes</input>",
	unknownDescription: "//(desconegut)//",
	listViewTemplate: {
		columns: [
			{name: 'Option', field: 'option', title: "Opció", type: 'String'},
			{name: 'Description', field: 'description', title: "Descripció", type: 'WikiText'},
			{name: 'Name', field: 'name', title: "Nom", type: 'String'}
			],
		rowClasses: [
			{className: 'lowlight', field: 'lowlight'} 
			]}
	});

merge(config.macros.plugins,{
	wizardTitle: "Gestor de connectors",
	step1Title: "Connectors carregats",
	step1Html: "<input type='hidden' name='markList'></input>", // DO NOT TRANSLATE
	skippedText: "(Aquest connector encara no s'ha carregat)",
	noPluginText: "No hi ha cap connector instal·lat",
	confirmDeleteText: "Segur que voleu que suprimir els connectors:\n\n%0",
	removeLabel: "suprimeix l'etiqueta systemConfig",
	removePrompt: "Suprimeix l'etiqueta systemConfig",
	deleteLabel: "suprimeix",
	deletePrompt: "Suprimeix definitivament aquests tiddlers",
	listViewTemplate: {
		columns: [
			{name: 'Selected', field: 'Selected', rowName: 'title', type: 'Selector'},
			{name: 'Tiddler', field: 'tiddler', title: "Tiddler", type: 'Tiddler'},
			{name: 'Size', field: 'size', tiddlerLink: 'size', title: "Mida", type: 'Size'},
			{name: 'Forced', field: 'forced', title: "Forçat", tag: 'systemConfigForce', type: 'TagCheckbox'},
			{name: 'Disabled', field: 'disabled', title: "Desactivat", tag: 'systemConfigDisable', type: 'TagCheckbox'},
			{name: 'Executed', field: 'executed', title: "Carregat", type: 'Boolean', trueText: "Sí", falseText: "No"},
			{name: 'Startup Time', field: 'startupTime', title: "Temps de càrrega", type: 'String'},
			{name: 'Error', field: 'error', title: "Resultat", type: 'Boolean', trueText: "Error", falseText: "DAcord"},
			{name: 'Log', field: 'log', title: "Registre", type: 'StringList'}
			],
		rowClasses: [
			{className: 'error', field: 'error'},
			{className: 'warning', field: 'avís'}
			]}
	});

merge(config.macros.toolbar,{
	moreLabel: "més",
	morePrompt: "Mostra més ordres"
	});

merge(config.macros.refreshDisplay,{
	label: "actualitza",
	prompt: "Torna a carregar tot el TiddlyWiki"
	});

merge(config.macros.importTiddlers,{
	readOnlyWarning: "No podeu importar a un fitxer TiddlyWiki només de lectura. Mireu d'obrir-lo des d'un fitxer, file:// URL",
	wizardTitle: "Importa tiddlers d'un altre fitxer o servidor",
	step1Title: "Pas 1: Indiqueu el fitxer TiddlyWiki o servidor",
	step1Html: "Indiqueu el tipus de servidor: <select name='selTypes'><option value=''>Trieu...</option></select><br>Entreu la URL o la ruta aquí: <input type='text' size=50 name='txtPath'><br>...o navega: <input type='file' size=50 name='txtBrowse'><br><hr>...o trieu un canal predefinit: <select name='selFeeds'><option value=''>Trieu...</option></select>",
	openLabel: "obre",
	openPrompt: "Obre la connexió amb aquest fitxer o servidor",
	openError: "Hi ha hagut un problema en importar el fitxer Tiddlywiki",
	statusOpenHost: "Obrint el servidor",
	statusGetWorkspaceList: "Obtenint la llista d'espais de treball disponibles",
	step2Title: "Pas 2: Trieu un espai de treball",
	step2Html: "Entreu el nom de l'espai de treball: <input type='text' size=50 name='txtWorkspace'><br>...o trieu un espai de treball: <select name='selWorkspace'><option value=''>Trieu...</option></select>",
	cancelLabel: "anul·la",
	cancelPrompt: "Anul·la la importació",
	statusOpenWorkspace: "Obrint l'espai de treball",
	statusGetTiddlerList: "Obtenint la llista de tiddlers",
	step3Title: "Pas 3: Trieu els tiddlers que voleu importar",
	step3Html: "<input type='hidden' name='markList'></input><br><input type='checkbox' checked='true' name='chkSync'>Manté aquests tiddlers enllaçats a aquest servidor per doder sincronitzar el canvis</input><br><input type='checkbox' name='chkSave'>Deseu els detalls del servidor en un tiddler 'systemServer' anomenat:</input> <input type='text' size=25 name='txtSaveTiddler'>",
	importLabel: "importa",
	importPrompt: "Importa aquests tiddlers",
	confirmOverwriteText: "Segur que voleu substituir aquests tiddlers:\n\n%0",
	step4Title: "Pas 4: Important %0 tiddler(s)",
	step4Html: "<input type='hidden' name='markReport'></input>", // DO NOT TRANSLATE
	doneLabel: "fet",
	donePrompt: "Tanca l'assistent",
	statusDoingImport: "Important els tiddlers",
	statusDoneImport: "S'han importat tots els tiddlers",
	systemServerNamePattern: "%2 de %1",
	systemServerNamePatternNoWorkspace: "%1",
	confirmOverwriteSaveTiddler: "El tiddler '%0' ja existeix. Cliqueu 'DAcord' per sobreescriure'l amb els detalls d'aquest servidor, o 'Anul·la' per deixar-ho tal com és",
	serverSaveTemplate: "|''Tipus:''|%0|\n|''URL:''|%1|\n|''Espai:''|%2|\n\nAquest tiddler es va crear automàticament per registrar els detalls d'aquest servidor",
	serverSaveModifier: "(System)",
	listViewTemplate: {
		columns: [
			{name: 'Selected', field: 'Selected', rowName: 'title', type: 'Selector'},
			{name: 'Tiddler', field: 'tiddler', title: "Tiddler", type: 'Tiddler'},
			{name: 'Size', field: 'size', tiddlerLink: 'size', title: "Mida", type: 'Size'},
			{name: 'Tags', field: 'tags', title: "Etiquetes", type: 'Tags'}
			],
		rowClasses: [
			]}
	});

merge(config.macros.sync,{
	listViewTemplate: {
		columns: [
			{name: 'Selected', field: 'selected', rowName: 'title', type: 'Selector'},
			{name: 'Tiddler', field: 'tiddler', title: "Tiddler", type: 'Tiddler'},
			{name: 'Server Type', field: 'serverType', title: "Tipus de servidor", type: 'String'},
			{name: 'Server Host', field: 'serverHost', title: "Servidor", type: 'String'},
			{name: 'Server Workspace', field: 'serverWorkspace', title: "Espai de treball", type: 'String'},
			{name: 'Status', field: 'status', title: "Estat de Sicronització", type: 'String'},
			{name: 'Server URL', field: 'serverUrl', title: "URL del servidor", text: "Mostra", type: 'Link'}
			],
		rowClasses: [
			],
		buttons: [
			{caption: "Sync these tiddlers", name: 'sync'}
			]},
	wizardTitle: "Sincronitza amb servidors i fitxers externs",
	step1Title: "Trieu els tiddlers que voleu sincronitzar",
	step1Html: "<input type='hidden' name='markList'></input>", // DO NOT TRANSLATE
	syncLabel: "sinc",
	syncPrompt: "Sincronitza aquests tiddlers",
	hasChanged: "Ha canviat mentre no era connectat",
	hasNotChanged: "Sense canvis mentre no era connectat",
	syncStatusList: {
		none: {text: "...", color: "cap"},
		changedServer: {text: "Canviat al servidor", color: '#80ff80'},
		changedLocally: {text: "Canviat mentre desconnectat", color: '#80ff80'},
		changedBoth: {text: "Canviat mentre desconnectat i al servidor", color: '#ff8080'},
		notFound: {text: "No s'ha trobat al servidor", color: '#ffff80'},
		putToServer: {text: "S'han desat els canvis al servidor", color: '#ff80ff'},
		gotFromServer: {text: "S'han recuperat els canvis des del servidor", color: '#80ffff'}
		}
	});

merge(config.macros.annotations,{
	});

merge(config.commands.closeTiddler,{
	text: "tanca",
	tooltip: "Tanca aquest tiddler"});

merge(config.commands.closeOthers,{
	text: "tanca altres",
	tooltip: "Tanca tots els altres tiddlers"});

merge(config.commands.editTiddler,{
	text: "edita",
	tooltip: "Edita aquest tiddler",
	readOnlyText: "mostra",
	readOnlyTooltip: "Mostra el codi d'aquest tiddler"});

merge(config.commands.saveTiddler,{
	text: "desa",
	tooltip: "Desa els canvis d'aquest tiddler"});

merge(config.commands.cancelTiddler,{
	text: "anul·la",
	tooltip: "Anul·la els canvis a aquest tiddler",
	warning: "Segur que voleu anul·lar els canvis a '%0'?",
	readOnlyText: "fet",
	readOnlyTooltip: "Torna a l'aspecte normal"});

merge(config.commands.deleteTiddler,{
	text: "suprimeix",
	tooltip: "Suprimeix aquest tiddler",
	warning: "Segur que voleu suprimir '%0'?"});

merge(config.commands.permalink,{
	text: "enllaç permanent",
	tooltip: "Enllaç permanent d'aquest tiddler"});

merge(config.commands.references,{
	text: "referències",
	tooltip: "Obre els tiddlers que enllacen a aquest",
	popupNone: "sense referències"});

merge(config.commands.jump,{
	text: "salta",
	tooltip: "Salta a un altre tiddler obert"});

merge(config.commands.syncing,{
	text: "sincronitzant",
	tooltip: "Control de la sincronització d'aquest tiddler amb un servidor o fitxer extern",
	currentlySyncing: "<div>Es sincromitza <span class='popupHighlight'>'%0'</span> amb:</"+"div><div>servidor: <span class='popupHighlight'>%1</span></"+"div><div>workspace: <span class='popupHighlight'>%2</span></"+"div>", // Note escaping of closing <div> tag
	notCurrentlySyncing: "No s'està sincronitzant",
	captionUnSync: "Atura la sincronització d'aquest tiddler",
	chooseServer: "Sincronitza aquest tiddler amb un altre servidor:",
	currServerMarker: "\u25cf ",
	notCurrServerMarker: "  "});

merge(config.commands.fields,{
	text: "camps",
	tooltip: "Mostra els camps ampliats d'aquest tiddler",
	emptyText: "Aquest tiddler no té camps ampliats",
	listViewTemplate: {
		columns: [
			{name: 'Field', field: 'field', title: "Camp", type: 'String'},
			{name: 'Value', field: 'value', title: "Valor", type: 'String'}
			],
		rowClasses: [
			],
		buttons: [
			]}});
merge(config.shadowTiddlers,{
	DefaultTiddlers: "ComComençar",
	MainMenu: "TiddlyWiki\nComComençar\n[[Aparença]]\n[[BaixaElProgramari]]\n[[Connectors]]\n[[Donacions]]\n\n© 2007 [[UnaMesa|http://www.unamesa.org/]]\n[[©|Copyright]] 2007 [[frivière|http://pacoriviere.cat/]]\n\n\n^^TiddlyWiki versió <<version>>^^",
	SiteTitle: "El meu TiddlyWiki",
	SiteSubtitle: "bloc web personal no lineal, reutilitzable",
	SiteUrl: "http://www.tiddlywiki.com/",
	Aparença: "Podeu canviar l'aspecte i comportament de TiddlyWiki gairebé com volgueu:\n\n* Amb ColorPalette per canviar l'esquema de colors de base\n* Amb [[CustomStyleSheet|http://www.tiddlywiki.com/#CustomStyleSheet]] per a controlar detalladament el seu aspecte\n* Amb PageTemplate, ViewTemplate o EditTemplate per canviar la composició de la pàgina i la disposició de tiddlers individuals\n* Utilitzeu temes preparats de [[TiddlyThemes|http://tiddlythemes.com/]]\n* Visiteu el resum de Configuration per veure tots els tiddlers especials de configuració\n* Instal·leu [[Connectors]] per estendre la funcionalitat bàsica (i també [[podeu escriure o adaptar el vostre|http://gimcrackd.com/etc/src/codex/]] fàcilment)\n\nHi ha també un grapat de [[TiddlyWikiTools|http://www.tiddlywiki.com/#TiddlyWikiTools]] que podeu utilitzar per ampliar TiddlyWiki.",
	BaixaElProgramari: "Anem a baixar una còpia de TiddlyWiki que tú podràs modificar al teu ordinador.\n\nClica [[aquí|https://projectes.lafarga.cat/frs/?group_id=38]] i tria la darrera versió.\n\nA partir d'aquí ja pots obrir la pàgina al teu navegador, modificar-la i omplir-la de contingut. Pots fer-la servir al teu ordinador o pujar-la a internet i compartir-la.\n\nAquí trobaràs una [[èxplicació més detallada|http://pacoriviere.googlepages.com/20minuts.html]]",
	Copyright: "CatalanLingo - Localització de TiddlyWiki versió 2.0.0 (c) Paco Rivière, 2006. \n\nSi ''feu servir CatalanLingo públicament'' apreciaria un enllaç cap a (http://pacoriviere.cat/).\n\n''L'ús comercial'' requireix permís previ escrit. Contacteu Paco Rivière a (web [a] pacoriviere [punt] cat).\n\n!LLICÈNCIA\n\nCopyright (c) Paco Rivière 2006\n\nEs permet la distribució del codi font i binari, amb o sense modificacions, sempre que es compleixin les següents condicions:\n\nLa distribució del codi font ha de mantenir el copyright anterior, aquesta llista de condicions i el següent avís.\n\nLa distribució del codi binari ha de mantenir el copyright anterior, aquesta llista de condicions i el següent avís a la documentació i/o altres materials subministrats amb la distribució.\n\nEl nom de Paco Rivière ni els dels seus col·laboradors no es poden fer servir per recolçar o promoure productes derivats d'aquest programari, sense el seu permís explícit previ per escrit.\n\nELS POSSEÏDORS DEL COPYRIGHT I/O ALTRES PARTS FACILITEN EL PROGRAMARI 'TAL QUAL' SENSE CAP MENA DE GARANTIA, NI EXPLÍCITA NI IMPLÍCITA, INCLOSES, ENTRE ALTRES, LES GARANTIES IMPLÍCITES DE COMERCIALITZABILITAT I APTITUD PER A PROPÒSITS DETERMINATS. EN CAP CAS EL POSSEÏDOR DEL COPYRIGHT I/O ALTRES PARTS, TRET DEL QUE REQUEREIXIN ELS ACORDS PER ESCRIT, NO US HAURÀ DE RESPONDRE PER PERJUDICIS, INCLOSOS ELS DIRECTES, INDIRECTES, ESPECIALS, EXEMPLARS, O DANYS CONSEQÜENTS (INCLOSES ENTRE D'ALTRES LES PÈRDUES DE DADES, O BENEFICIS; O INTERRUPCIO DEL NEGOCI), COM SIGUI QUE S'HAGIN PRODUÏT I EN QUALSEVOL TEORIA DE FIABILITAT, TAN SI ÉS EN CONTRACTE, FIABILITAT ESTRICTE, O ALTRES (INCLOSES LA NEGLIGÈNCIA O ALTRES), QUE ES DERIVIN DE L'ÚS DEL PROGRAMA, EN QUALSEVOL FORMA, FINS I TOT SI AQUEST POSSEÏDOR O ALTRA PART HA ESTAT ADVERTIDA DE LA POSSIBILITAT D'AQUESTS PERJUDICIS.",
	ComComençar: "Per començar amb aquest TiddlyWiki en blanc, heu de modificar els següents tiddlers:\n* [[TitolDelLloc|SiteTitle]] & [[SubtitolDelLloc|SiteSubtitle]]: El títol i el subtítol del lloc, com es mostra a sobre (un cop desats, també apareixeran a la barra de títols del navegador)\n* [[MenuPrincipal|MainMenu]]: El menú (normalment a l'esquerra)\n* [[TiddlersPerOmisio|DefaultTiddlers]]: Conté els noms dels tiddlers que voleu que apareguin quan s'obre el TiddlyWiki\nTambé heu d'entrar el vostre nom d'usuari per signar les vostres edicions: <<option txtUserName>>",
	Connectors: "Els connectors (plugins) permeten ampliar les funcions de [[TiddlyWiki]]:\n\n* ''En català'':\n** [[Calendari|http://projectes.lafarga.cat/frs/?group_id=38]] Calendari i agenda.\n** [[Tria el Tema|http://projectes.lafarga.cat/frs/?group_id=38]] Tria l'aspecte de TiddlyWiki entre diversos fulls d'estil.\n** [[Presentació|http://projectes.lafarga.cat/frs/?group_id=38]] Fes presentacions amb TiddlyWiki.\n** [[arxiuPlugin|http://projectes.lafarga.cat/frs/?group_id=38]] Per agrupar els Tiddlers per mesos.\n** [[DissenyUgrudi|http://projectes.lafarga.cat/frs/?group_id=38]] Disseny freaky\n** [[WikiBar|http://projectes.lafarga.cat/frs/?group_id=38]] Una barra d'eines a l'estil Viquipèdia\n** [[RellotgePlugin|http://projectes.lafarga.cat/frs/?group_id=38]] Un rellotge analògic, només amb JavaScript\nPantalles: http://flickr.com/photos/friviere/sets/72157594150898782/\n\n* ''En anglés'': http://www.tiddlywiki.com/index.html#Plugins",
	Donacions: "La localització de TiddlyWiki al català és programari lliure, disponible gratuitament per tothom i sempre ho serà. Si feu  servir TiddlyWiki de forma regular i us resulta útil, podeu [[contribuïr amb una donació|https://www.paypal.com/cgi-bin/webscr?cmd=_xclick&business=web%40pacoriviere%2ecat&item_name=Donaci%c3%b3%20per%20la%20localitzaci%c3%b3%20de%20TiddlyWiki%20al%20catal%c3%a0&amount=10%2e00&no_shipping=1&return=http%3a%2f%2fpacoriviere%2egooglepages%2ecom%2fTiddlyWiki%2ehtml&no_note=1&tax=0&currency_code=EUR&lc=ES&bn=PP%2dDonationsBF&charset=UTF%2d8]] encara que sigui modesta  a PayPal (com ara 10 Euros)",
	SideBarOptions: "<<search>><<closeAll>><<permaview>><<newTiddler>><<newJournal '0DD MMM YYYY' 'diari'>><<saveChanges>><<slider chkSliderOptionsPanel OptionsPanel opcions 'Canvia les opcions avançades del TiddlyWiki'>>",
	OptionsPanel: "Les opcions per personalitzar TiddlyWiki es desen al vostre navegador\n\nEl vostre nom per signar les vostres edicions. Escribiu-lo com una ParaulaWiki (com ara MartiCliment)\n<<option txtUserName>>\n<<option chkSaveBackups>> DesaCòpies\n<<option chkAutoSave>> AutoDesa\n<<option chkRegExpSearch>> CercaExpReg\n<<option chkCaseSensitiveSearch>> CercaSensibleACaixa\n<<option chkAnimate>> ActivaAnimacions\n\n----\nMostra les OpcionsAvançades",
	SideBarTabs: "<<tabs txtMainTab 'Data' 'Tiddlers per ordre cronològic' TabTimeline 'Títol' 'Tiddlers per ordre alfabètic' TabAll 'Etiquetes' 'Tiddlers etiquetats' TabTags 'Més' 'Més llistes' TabMore>>",
	TabTimeline: "<<timeline>>",
	TabAll: "<<list all>>",
	TabTags: "<<allTags>>",
	TabMore: "<<tabs txtMoreTab 'Falten' 'Tiddlers que no existeixen' TabMoreMissing 'Orfes' 'Tiddlers orfes' TabMoreOrphans Ombres 'Tiddlers amb ombra' TabMoreShadowed>>",
	TabMoreMissing: "<<list missing>>",
	TabMoreOrphans: "<<list orphans>>",
	TabMoreShadowed: "<<list shadowed>>",
	TiddlyWiki: "TiddlyWiki en català:\n\nhttp://pacoriviere.googlepages.com/TiddlyWikiCA.html\n[[Guia ràpida en català|http://pacoriviere.googlepages.com/20minuts.html]]\n\nLloc web original de TiddlyWiki (en anglés):\n\nhttp://www.tiddlywiki.com/",
	PluginManager: "<<plugins>>",
	ImportTiddlers: "<<importTiddlers>>",
        OpcionsAvançades: "<<tiddler AdvancedOptions>>",
        GestorDeConnectors: "<<tiddler PluginManager>>",
        ImportaTiddlers: "<<tiddler ImportTiddlers>>"});
delete config.shadowTiddlers.GettingStarted;

merge(config.annotations,{
	AdvancedOptions: "Aquest tiddler ombra dóna accès a vàries opcions avançades",
	ColorPalette: "Els valors que hi ha en aquest tiddler ombra determinen l'esquema de colors de la interfície d'usuari de ~TiddlyWiki",
	DefaultTiddlers: "Els tiddlers que es llisten en aquest tiddler ombra es mostren quan arrenca ~TiddlyWiki",
	EditTemplate: "La plantilla HTML que hi ha en aquest tiddler ombra determina l'aspecte dels tiddlers mentre s'editen",
	GettingStarted: "Aquest tiddler ombra dóna instruccions bàsiques d'ús",
	ImportTiddlers: "Aquest tiddler ombra permet importar tiddlers",
	MainMenu: "Aquest tiddler ombra es fa servir per al contingut del menú principal de la columna de l'esquerra",
	MarkupPreHead: "Aquest tiddler s'inserta a la part superior de la secció <head> del fitxer HTML de TiddlyWiki",
	MarkupPostHead: "Aquest tiddler s'inserta a la part final de la secció <head> del fitxer HTML de TiddlyWiki",
	MarkupPreBody: "Aquest tiddler s'inserta a la part superior de la secció <body> del fitxer HTML de TiddlyWiki",
	MarkupPostBody: "Aquest tiddler s'inserta a la part final de la secció <body> del fitxer HTML de TiddlyWiki just abans del bloc de seqüències",
	OptionsPanel: "Aquest tiddler ombra es fa servir per al contingut del quadre d'opcions slider de la columna de la dreta",
	PageTemplate: "La plantilla HTML que hi ha en aquest tiddler ombra determina la disposició de ~TiddlyWiki",
	PluginManager: "Aquest tiddler ombra dóna access al gestor de connectors",
	SideBarOptions: "Aquest tiddler ombra es fa servir per al contingut del quadre d'opcions de la columna de la dreta",
	SideBarTabs: "Aquest tiddler ombra es fa servir per al contingut del quadre d'etiquetes de la columna de la dreta",
	SiteSubtitle: "Aquest tiddler ombra es fa servir per la segona part del títol de la pàgina",
	SiteTitle: "Aquest tiddler ombra es fa servir per la primera part del títol de la pàgina",
	SiteUrl: "Aquest tiddler ombra cal escriure l'adreça URL sencera per la publicació",
	StyleSheetColours: "Aquest tiddler ombra conté les definicions CSS relatives al color dels elements de la pàgina",
	StyleSheet: "Aquest tiddler pot contenir les vostres definicions CSS personalitzades",
	StyleSheetLayout: "Aquest tiddler ombra conté les definicions CSS relatives a la disposició dels elements de la pàgina",
	StyleSheetLocale: "Aquest tiddler ombra conté les definicions CSS relatives a la traducció local",
	StyleSheetPrint: "Aquest tiddler ombra conté les definicions CSS per la impressió",
	TabAll: "Aquest tiddler ombra conté el contingut de la pestanya 'Títol'de la columna de la dreta",
	TabMore: "Aquest tiddler ombra conté el contingut de la pestanya 'Més'de la columna de la dreta",
	TabMoreMissing: "Aquest tiddler ombra conté el contingut de la pestanya 'Falten'de la columna de la dreta",
	TabMoreOrphans: "Aquest tiddler ombra conté el contingut de la pestanya 'Orfes'de la columna de la dreta",
	TabMoreShadowed: "Aquest tiddler ombra conté el contingut de la pestanya 'Ombres'de la columna de la dreta",
	TabTags: "Aquest tiddler ombra conté el contingut de la pestanya 'Etiquetes'de la columna de la dreta",
	TabTimeline: "Aquest tiddler ombra conté el contingut de la pestanya 'Data'de la columna de la dreta",
	ViewTemplate: "La plantilla HTML que hi ha en aquest tiddler ombra determina l'aspecte dels tiddlers"
	});

/*}}}*/
!De: http://web.educom.pt/+FQ/
Background: #fff
Title: #390
TiddlerTitle: #c30
TiddlerTitleBackground: #e6ecff

TertiaryPale: #eee
TertiaryLight: #ccc
TertiaryMid: #999
TertiaryDark: #666
Error: #f88
/***
Configuració personal
PR: 2008-04-08
***/
/*{{{*/
config.options.txtUserName = "PacoRivière";
config.options.chkAutoSave = true;
config.options.chkSaveBackups = false;
config.options.txtBackupFolder = "copies";
/*}}}*/
/***
|''Name:''|CryptoFunctionsPlugin|
|''Description:''|Support for cryptographic functions|
***/
//{{{
if(!version.extensions.CryptoFunctionsPlugin) {
version.extensions.CryptoFunctionsPlugin = {installed:true};

//--
//-- Crypto functions and associated conversion routines
//--

// Crypto "namespace"
function Crypto() {}

// Convert a string to an array of big-endian 32-bit words
Crypto.strToBe32s = function(str)
{
	var be = Array();
	var len = Math.floor(str.length/4);
	var i, j;
	for(i=0, j=0; i<len; i++, j+=4) {
		be[i] = ((str.charCodeAt(j)&0xff) << 24)|((str.charCodeAt(j+1)&0xff) << 16)|((str.charCodeAt(j+2)&0xff) << 8)|(str.charCodeAt(j+3)&0xff);
	}
	while (j<str.length) {
		be[j>>2] |= (str.charCodeAt(j)&0xff)<<(24-(j*8)%32);
		j++;
	}
	return be;
};

// Convert an array of big-endian 32-bit words to a string
Crypto.be32sToStr = function(be)
{
	var str = "";
	for(var i=0;i<be.length*32;i+=8)
		str += String.fromCharCode((be[i>>5]>>>(24-i%32)) & 0xff);
	return str;
};

// Convert an array of big-endian 32-bit words to a hex string
Crypto.be32sToHex = function(be)
{
	var hex = "0123456789ABCDEF";
	var str = "";
	for(var i=0;i<be.length*4;i++)
		str += hex.charAt((be[i>>2]>>((3-i%4)*8+4))&0xF) + hex.charAt((be[i>>2]>>((3-i%4)*8))&0xF);
	return str;
};

// Return, in hex, the SHA-1 hash of a string
Crypto.hexSha1Str = function(str)
{
	return Crypto.be32sToHex(Crypto.sha1Str(str));
};

// Return the SHA-1 hash of a string
Crypto.sha1Str = function(str)
{
	return Crypto.sha1(Crypto.strToBe32s(str),str.length);
};

// Calculate the SHA-1 hash of an array of blen bytes of big-endian 32-bit words
Crypto.sha1 = function(x,blen)
{
	// Add 32-bit integers, wrapping at 32 bits
	add32 = function(a,b)
	{
		var lsw = (a&0xFFFF)+(b&0xFFFF);
		var msw = (a>>16)+(b>>16)+(lsw>>16);
		return (msw<<16)|(lsw&0xFFFF);
	};
	// Add five 32-bit integers, wrapping at 32 bits
	add32x5 = function(a,b,c,d,e)
	{
		var lsw = (a&0xFFFF)+(b&0xFFFF)+(c&0xFFFF)+(d&0xFFFF)+(e&0xFFFF);
		var msw = (a>>16)+(b>>16)+(c>>16)+(d>>16)+(e>>16)+(lsw>>16);
		return (msw<<16)|(lsw&0xFFFF);
	};
	// Bitwise rotate left a 32-bit integer by 1 bit
	rol32 = function(n)
	{
		return (n>>>31)|(n<<1);
	};

	var len = blen*8;
	// Append padding so length in bits is 448 mod 512
	x[len>>5] |= 0x80 << (24-len%32);
	// Append length
	x[((len+64>>9)<<4)+15] = len;
	var w = Array(80);

	var k1 = 0x5A827999;
	var k2 = 0x6ED9EBA1;
	var k3 = 0x8F1BBCDC;
	var k4 = 0xCA62C1D6;

	var h0 = 0x67452301;
	var h1 = 0xEFCDAB89;
	var h2 = 0x98BADCFE;
	var h3 = 0x10325476;
	var h4 = 0xC3D2E1F0;

	for(var i=0;i<x.length;i+=16) {
		var j,t;
		var a = h0;
		var b = h1;
		var c = h2;
		var d = h3;
		var e = h4;
		for(j = 0;j<16;j++) {
			w[j] = x[i+j];
			t = add32x5(e,(a>>>27)|(a<<5),d^(b&(c^d)),w[j],k1);
			e=d; d=c; c=(b>>>2)|(b<<30); b=a; a = t;
		}
		for(j=16;j<20;j++) {
			w[j] = rol32(w[j-3]^w[j-8]^w[j-14]^w[j-16]);
			t = add32x5(e,(a>>>27)|(a<<5),d^(b&(c^d)),w[j],k1);
			e=d; d=c; c=(b>>>2)|(b<<30); b=a; a = t;
		}
		for(j=20;j<40;j++) {
			w[j] = rol32(w[j-3]^w[j-8]^w[j-14]^w[j-16]);
			t = add32x5(e,(a>>>27)|(a<<5),b^c^d,w[j],k2);
			e=d; d=c; c=(b>>>2)|(b<<30); b=a; a = t;
		}
		for(j=40;j<60;j++) {
			w[j] = rol32(w[j-3]^w[j-8]^w[j-14]^w[j-16]);
			t = add32x5(e,(a>>>27)|(a<<5),(b&c)|(d&(b|c)),w[j],k3);
			e=d; d=c; c=(b>>>2)|(b<<30); b=a; a = t;
		}
		for(j=60;j<80;j++) {
			w[j] = rol32(w[j-3]^w[j-8]^w[j-14]^w[j-16]);
			t = add32x5(e,(a>>>27)|(a<<5),b^c^d,w[j],k4);
			e=d; d=c; c=(b>>>2)|(b<<30); b=a; a = t;
		}

		h0 = add32(h0,a);
		h1 = add32(h1,b);
		h2 = add32(h2,c);
		h3 = add32(h3,d);
		h4 = add32(h4,e);
	}
	return Array(h0,h1,h2,h3,h4);
};


}
//}}}
''Funcionament'' (cal <<wikipedia Firefox>> o MathPlayer)
#Clica el botó //''Mostra''// i varia la ''Capacitància'' C i la ''Resistència'' R. Observa com varia la gràfica, al prèmer el botó  //''Torna a dibuixar''//.
#També pots canviar la ''Tensió'' V.
#Per tornar a començar, actualitza la pàgina.
!Activitats
Abans de prèmer ''Mostra'', observa la gràfica, i contesta les següents preguntes:
#Què val R si sabem que V=10 Volts?
#Què val C? (Observa la gràfica). Prem ''Mostra'' i comprova el resultat.
#Canvia el valor de R i de C i calcula la intensitat i la càrrega. Comprova el resultat fent ''Torna a dibuixar''.
<html>
<div align="center">
<embed id="circuit"; src="d.svg";
script='width=150; height=150;
noButton();
initPicture(-3,3)
initPicture(-3,3)
stroke = "black"
strokewidth = "2"
line([-2,1], [2,1])

line([-2,1], [-2,0.2])
line([-2,-0.2], [-2,-1])

line([-2,-1], [-.3,-1])
line([.3,-1], [2,-1])
line([2,1], [2,.5])
line([2,-.5], [2,-1])

fill = "black"
rect( [-2.4,-.3], [-1.6,-.2] )
rect( [-2.2,.1], [-1.8,.3] )
text([-2.9,0], "V")

rect( [-1,.7], [1,1.3] )
text([0,1.9], "R")

rect( [-.3,-1.5], [-.2,-.5] )
rect( [.2,-1.5], [.3,-.5] )
text([0,-2.3], "C")

marker = "dot"
line([2,.5], [2,-.5])'>

<embed id="condensador; src="d.svg";
script='width=400; height=400;
  initPicture(0,10,0,10)
  xscl=1;
  axes()
C=0.8
R=2
V=10
stroke = "red"
plot(x, C*V*(1-exp(-x/R*C)))
   text([8,(C*V*(1-exp(-10/R*C)))+1], "Càrrega");
stroke = "blue"
plot(x, V/R*exp(-x/R*C))
   text([8,(V/R*exp(-19/R*C))+1], "Intensitat");
text([9.5,.5], "Temps")'>
</html>

!Conceptes
<<wikipedia Capacitància>>, <<wikipedia Resistència>>, <<wikipedia Condensador>>, <<wikipedia Tensió>>
!Referències
*Materials d'ampliació:
(es) [[Càrrega i descàrrega d'un condensador|http://www.sc.ehu.es/sbweb/fisica/elecmagnet/campo_electrico/rc/rc.htm]] Simulació
(en) [[Carga d'un condensador|http://lectureonline.cl.msu.edu/~mmp/kap23/RC/app.htm]] Simulació
*[[Quant al SVG]]
*[[Possibilitats del JavaScript|http://www.w3schools.com/JS/js_obj_math.asp]]
*[[ASCIIMath|http://www1.chapman.edu/~jipsen/mathml/asciimathcalculator.html]]
[[Amplitud i període d'una ona]]
/***
|''Name:''|DeprecatedFunctionsPlugin|
|''Description:''|Support for deprecated functions removed from core|
***/
//{{{
if(!version.extensions.DeprecatedFunctionsPlugin) {
version.extensions.DeprecatedFunctionsPlugin = {installed:true};

//--
//-- Deprecated code
//--

// @Deprecated: Use createElementAndWikify and this.termRegExp instead
config.formatterHelpers.charFormatHelper = function(w)
{
	w.subWikify(createTiddlyElement(w.output,this.element),this.terminator);
};

// @Deprecated: Use enclosedTextHelper and this.lookaheadRegExp instead
config.formatterHelpers.monospacedByLineHelper = function(w)
{
	var lookaheadRegExp = new RegExp(this.lookahead,"mg");
	lookaheadRegExp.lastIndex = w.matchStart;
	var lookaheadMatch = lookaheadRegExp.exec(w.source);
	if(lookaheadMatch && lookaheadMatch.index == w.matchStart) {
		var text = lookaheadMatch[1];
		if(config.browser.isIE)
			text = text.replace(/\n/g,"\r");
		createTiddlyElement(w.output,"pre",null,null,text);
		w.nextMatch = lookaheadRegExp.lastIndex;
	}
};

// @Deprecated: Use <br> or <br /> instead of <<br>>
config.macros.br = {};
config.macros.br.handler = function(place)
{
	createTiddlyElement(place,"br");
};

// Find an entry in an array. Returns the array index or null
// @Deprecated: Use indexOf instead
Array.prototype.find = function(item)
{
	var i = this.indexOf(item);
	return i == -1 ? null : i;
};

// Load a tiddler from an HTML DIV. The caller should make sure to later call Tiddler.changed()
// @Deprecated: Use store.getLoader().internalizeTiddler instead
Tiddler.prototype.loadFromDiv = function(divRef,title)
{
	return store.getLoader().internalizeTiddler(store,this,title,divRef);
};

// Format the text for storage in an HTML DIV
// @Deprecated Use store.getSaver().externalizeTiddler instead.
Tiddler.prototype.saveToDiv = function()
{
	return store.getSaver().externalizeTiddler(store,this);
};

// @Deprecated: Use store.allTiddlersAsHtml() instead
function allTiddlersAsHtml()
{
	return store.allTiddlersAsHtml();
}

// @Deprecated: Use refreshPageTemplate instead
function applyPageTemplate(title)
{
	refreshPageTemplate(title);
}

// @Deprecated: Use story.displayTiddlers instead
function displayTiddlers(srcElement,titles,template,unused1,unused2,animate,unused3)
{
	story.displayTiddlers(srcElement,titles,template,animate);
}

// @Deprecated: Use story.displayTiddler instead
function displayTiddler(srcElement,title,template,unused1,unused2,animate,unused3)
{
	story.displayTiddler(srcElement,title,template,animate);
}

// @Deprecated: Use functions on right hand side directly instead
var createTiddlerPopup = Popup.create;
var scrollToTiddlerPopup = Popup.show;
var hideTiddlerPopup = Popup.remove;

// @Deprecated: Use right hand side directly instead
var regexpBackSlashEn = new RegExp("\\\\n","mg");
var regexpBackSlash = new RegExp("\\\\","mg");
var regexpBackSlashEss = new RegExp("\\\\s","mg");
var regexpNewLine = new RegExp("\n","mg");
var regexpCarriageReturn = new RegExp("\r","mg");

}
//}}}
<html><div align="center">
<embed id="exemple1"; src="d.svg";
script='width=200; height=200;
  initPicture(-1,6,-2,8)
  axes()
 plot(sin(x)+2.5)
 a = [0,0]
 b = [5,5]
 marker = "dot"
 line(a,b)
 text(a,"a",belowright)
 text(b,"g",above)
 text(b,"b",right)
 text(b,"b",left)
 text(b,"b",below)
 text(b,"b",aboveleft)
 text(b,"b",aboveright)
 text(b,"b",belowleft)
 text(b,"b",belowright)
 stroke = "red"
 path([a,[0,5],b,[5,0]])
 stroke = "green"
 marker = "none"
 curve([a,[.25,0],[.5,.5],[1,1],[1.5,1.5]])
 stroke = "blue"
 circle([5,0],1)
 ellipse([0,5],1,2)
 stroke = "purple"
 rect([0,0],[2,2],null,.5,1)
 marker = "arrowdot"
 line(a,[5,0])'>
</html>

!Font
http://www1.chapman.edu/~jipsen/svg/asciisvgsample1.html
<html>
<div align="center">
<embed id="star"
script='width=200; height=200;
xmin=-1.1; xmax=1.1;
noAxes();
noButton();
marker = "dot"
a = []
n = 9
with (Math) 
 for (i = 0; i < n; i++)
 a[i] = [cos(PI/4*(-1)*i+PI/2),
 sin(PI/4*(-1)*i+PI/2)]
path(a)
path([a[0],a[3],a[6],a[1],a[4],a[7],a[2],a[5],
 a[0],a[4],a[5],a[1],a[2],a[6],a[7],a[3]])'>
<br />
<embed id="spiral"
script='width=117
height=117
showCode();
noButton();
xmin=-10; xmax=10;
axes();
stroke = "red"
p = []
 for (t = 0; t < 10.01; t += 0.05)
 p[p.length] = [t*cos(pi*t), t*sin(pi*t)]
path(p)'>
</div>
</html>
''Instruccions'' (cal <<wikipedia Firefox>> o MathPlayer)
#Clica el botó //''Mostra''// i varia l'''Amplitud'' i el ''b''. Observa com varia la ona resultant, al prèmer el botó  //''Torna a dibuixar''//.
#També pots canviar el ''c'' i el ''d''.
#Per tornar a començar, actualitza la pàgina.
<html>
<div align="center">
<embed id="sinc"; src="d.svg";
script='width=400; height=400;
  initPicture(-20.5,20.5,-20.5,20.5)
  xscl=10;
  axes()
  Amplitud= 4
  b= 1
  c= 0
  d= 1
stroke = "red"
plot(x, c+Amplitud*sin(b*x)/d*x)'>
</html>
!Conceptes
[[Límit de sin(x)/x|http://www.ies.co.jp/math/java/calc/LimSinX/LimSinX.html]] (requereix Java) [[2|http://www.math.dartmouth.edu/~klbooksite/appfolder/209unit/SinXoverX.html]] [[Funció sinc|http://en.wikipedia.org/wiki/Sinc_function]] (anglès)
!Referències
*Materials d'ampliació: [[Funcions trigonomètriques|http://w3.cnice.mec.es/eos/MaterialesEducativos/mem2001/razonestri/funciones_trigonometricas.htm]]
*[[Quant al SVG]]
*[[Possibilitats del JavaScript|http://www.w3schools.com/JS/js_obj_math.asp]]
*[[ASCIIMath|http://www1.chapman.edu/~jipsen/mathml/asciimathcalculator.html]]
<html>
<embed id="square"; src="d.svg";
script='width=120; height=120;
noButton();
xmin=-0.25; xmax=1.25;ymin=-0.25; ymax=1.25;
noAxes();
marker = "dot"
a=text([0,1],"a","aboveleft")
b=text([1,1],"b","aboveright")
c=text([1,0],"c","belowright")
d=text([0,0],"d","belowleft")
path([a,b,c,d,a,c,d,b])
text([.5,0],"K4","below")'>
</html>
/***
|''Name:''|LaTeXMathMLPlugin|
|''Description:''|~LaTeX plugin with ~MathML output based on [[LaTeXMathML|http://www.maths.nottingham.ac.uk/personal/drw/lm.html]]|
|''Version:''|1.1|
|''Date:''|Oct 06, 2007|
|''Source:''|http://www.math.ist.utl.pt/~psoares/addons.html|
|''Documentation:''|[[LaTeXMathMLPlugin Documentation|LaTeXMathMLPluginDoc]]|
|''Author:''|Paulo Soares|
|''License:''|[[Creative Commons Attribution-Share Alike 3.0 License|http://creativecommons.org/licenses/by-sa/3.0/]]|
|''~CoreVersion:''|2.1.0|
***/
//{{{
config.macros.LaTeXMathMLPlugin = {
	AMnames: [],
	isIE: document.createElementNS==null,
	AMmathml: "http://www.w3.org/1998/Math/MathML",
	AMcal: [0xEF35,0x212C,0xEF36,0xEF37,0x2130,0x2131,0xEF38,0x210B,0x2110,0xEF39,0xEF3A,0x2112,0x2133,0xEF3B,0xEF3C,0xEF3D,0xEF3E,0x211B,0xEF3F,0xEF40,0xEF41,0xEF42,0xEF43,0xEF44,0xEF45,0xEF46],
	AMfrk: [0xEF5D,0xEF5E,0x212D,0xEF5F,0xEF60,0xEF61,0xEF62,0x210C,0x2111,0xEF63,0xEF64,0xEF65,0xEF66,0xEF67,0xEF68,0xEF69,0xEF6A,0x211C,0xEF6B,0xEF6C,0xEF6D,0xEF6E,0xEF6F,0xEF70,0xEF71,0x2128],
	AMbbb: [0xEF8C,0xEF8D,0x2102,0xEF8E,0xEF8F,0xEF90,0xEF91,0x210D,0xEF92,0xEF93,0xEF94,0xEF95,0xEF96,0x2115,0xEF97,0x2119,0x211A,0x211D,0xEF98,0xEF99,0xEF9A,0xEF9B,0xEF9C,0xEF9D,0xEF9E,0x2124],
	CONST: 0, UNARY: 1, BINARY: 2, INFIX: 3, LEFTBRACKET: 4, RIGHTBRACKET: 5, SPACE: 6, UNDEROVER: 7, DEFINITION: 8, TEXT: 9, BIG: 10, LONG: 11, STRETCHY: 12, MATRIX: 13,
	AMsymbols: [
	//Greek letters
		{input:"\\alpha", tag:"mi", output:"\u03B1", ttype:0},
		{input:"\\beta", tag:"mi", output:"\u03B2", ttype:0},
		{input:"\\gamma", tag:"mi", output:"\u03B3", ttype:0},
		{input:"\\delta", tag:"mi", output:"\u03B4", ttype:0},
		{input:"\\epsilon", tag:"mi", output:"\u03B5", ttype:0},
		{input:"\\varepsilon", tag:"mi", output:"\u025B", ttype:0},
		{input:"\\zeta", tag:"mi", output:"\u03B6", ttype:0},
		{input:"\\eta", tag:"mi", output:"\u03B7", ttype:0},
		{input:"\\theta", tag:"mi", output:"\u03B8", ttype:0},
		{input:"\\vartheta", tag:"mi", output:"\u03D1", ttype:0},
		{input:"\\iota", tag:"mi", output:"\u03B9", ttype:0},
		{input:"\\kappa", tag:"mi", output:"\u03BA", ttype:0},
		{input:"\\lambda", tag:"mi", output:"\u03BB", ttype:0},
		{input:"\\mu", tag:"mi", output:"\u03BC", ttype:0},
		{input:"\\nu", tag:"mi", output:"\u03BD", ttype:0},
		{input:"\\xi", tag:"mi", output:"\u03BE", ttype:0},
		{input:"\\pi", tag:"mi", output:"\u03C0", ttype:0},
		{input:"\\varpi", tag:"mi", output:"\u03D6", ttype:0},
		{input:"\\rho", tag:"mi", output:"\u03C1", ttype:0},
		{input:"\\varrho", tag:"mi", output:"\u03F1", ttype:0},
		{input:"\\varsigma", tag:"mi", output:"\u03C2", ttype:0},
		{input:"\\sigma", tag:"mi", output:"\u03C3", ttype:0},
		{input:"\\tau", tag:"mi", output:"\u03C4", ttype:0},
		{input:"\\upsilon", tag:"mi", output:"\u03C5", ttype:0},
		{input:"\\phi", tag:"mi", output:"\u03C6", ttype:0},
		{input:"\\varphi", tag:"mi", output:"\u03D5", ttype:0},
		{input:"\\chi", tag:"mi", output:"\u03C7", ttype:0},
		{input:"\\psi", tag:"mi", output:"\u03C8", ttype:0},
		{input:"\\omega", tag:"mi", output:"\u03C9", ttype:0},
		{input:"\\Gamma", tag:"mo", output:"\u0393", ttype:0},
		{input:"\\Delta", tag:"mo", output:"\u0394", ttype:0},
		{input:"\\Theta", tag:"mo", output:"\u0398", ttype:0},
		{input:"\\Lambda", tag:"mo", output:"\u039B", ttype:0},
		{input:"\\Xi", tag:"mo", output:"\u039E", ttype:0},
		{input:"\\Pi", tag:"mo", output:"\u03A0", ttype:0},
		{input:"\\Sigma", tag:"mo", output:"\u03A3", ttype:0},
		{input:"\\Upsilon", tag:"mo", output:"\u03A5", ttype:0},
		{input:"\\Phi", tag:"mo", output:"\u03A6", ttype:0},
		{input:"\\Psi", tag:"mo", output:"\u03A8", ttype:0},
		{input:"\\Omega", tag:"mo", output:"\u03A9", ttype:0},
	//fractions
		{input:"\\frac12", tag:"mo", output:"\u00BD", ttype:0},
		{input:"\\frac14", tag:"mo", output:"\u00BC", ttype:0},
		{input:"\\frac34", tag:"mo", output:"\u00BE", ttype:0},
		{input:"\\frac13", tag:"mo", output:"\u2153", ttype:0},
		{input:"\\frac23", tag:"mo", output:"\u2154", ttype:0},
		{input:"\\frac15", tag:"mo", output:"\u2155", ttype:0},
		{input:"\\frac25", tag:"mo", output:"\u2156", ttype:0},
		{input:"\\frac35", tag:"mo", output:"\u2157", ttype:0},
		{input:"\\frac45", tag:"mo", output:"\u2158", ttype:0},
		{input:"\\frac16", tag:"mo", output:"\u2159", ttype:0},
		{input:"\\frac56", tag:"mo", output:"\u215A", ttype:0},
		{input:"\\frac18", tag:"mo", output:"\u215B", ttype:0},
		{input:"\\frac38", tag:"mo", output:"\u215C", ttype:0},
		{input:"\\frac58", tag:"mo", output:"\u215D", ttype:0},
		{input:"\\frac78", tag:"mo", output:"\u215E", ttype:0},
	//binary operation symbols
		{input:"\\pm", tag:"mo", output:"\u00B1", ttype:0},
		{input:"\\mp", tag:"mo", output:"\u2213", ttype:0},
		{input:"\\triangleleft",tag:"mo", output:"\u22B2", ttype:0},
		{input:"\\triangleright",tag:"mo",output:"\u22B3", ttype:0},
		{input:"\\cdot", tag:"mo", output:"\u22C5", ttype:0},
		{input:"\\star", tag:"mo", output:"\u22C6", ttype:0},
		{input:"\\ast", tag:"mo", output:"\u002A", ttype:0},
		{input:"\\times", tag:"mo", output:"\u00D7", ttype:0},
		{input:"\\div", tag:"mo", output:"\u00F7", ttype:0},
		{input:"\\circ", tag:"mo", output:"\u2218", ttype:0},
		{input:"\\bullet", tag:"mo", output:"\u2022", ttype:0},
		{input:"\\oplus", tag:"mo", output:"\u2295", ttype:0},
		{input:"\\ominus", tag:"mo", output:"\u2296", ttype:0},
		{input:"\\otimes", tag:"mo", output:"\u2297", ttype:0},
		{input:"\\bigcirc", tag:"mo", output:"\u25CB", ttype:0},
		{input:"\\oslash", tag:"mo", output:"\u2298", ttype:0},
		{input:"\\odot", tag:"mo", output:"\u2299", ttype:0},
		{input:"\\land", tag:"mo", output:"\u2227", ttype:0},
		{input:"\\wedge", tag:"mo", output:"\u2227", ttype:0},
		{input:"\\lor", tag:"mo", output:"\u2228", ttype:0},
		{input:"\\vee", tag:"mo", output:"\u2228", ttype:0},
		{input:"\\cap", tag:"mo", output:"\u2229", ttype:0},
		{input:"\\cup", tag:"mo", output:"\u222A", ttype:0},
		{input:"\\sqcap", tag:"mo", output:"\u2293", ttype:0},
		{input:"\\sqcup", tag:"mo", output:"\u2294", ttype:0},
		{input:"\\uplus", tag:"mo", output:"\u228E", ttype:0},
		{input:"\\amalg", tag:"mo", output:"\u2210", ttype:0},
		{input:"\\bigtriangleup",tag:"mo",output:"\u25B3", ttype:0},
		{input:"\\bigtriangledown",tag:"mo",output:"\u25BD", ttype:0},
		{input:"\\dag", tag:"mo", output:"\u2020", ttype:0},
		{input:"\\dagger", tag:"mo", output:"\u2020", ttype:0},
		{input:"\\ddag", tag:"mo", output:"\u2021", ttype:0},
		{input:"\\ddagger", tag:"mo", output:"\u2021", ttype:0},
		{input:"\\lhd", tag:"mo", output:"\u22B2", ttype:0},
		{input:"\\rhd", tag:"mo", output:"\u22B3", ttype:0},
		{input:"\\unlhd", tag:"mo", output:"\u22B4", ttype:0},
		{input:"\\unrhd", tag:"mo", output:"\u22B5", ttype:0},
	//Big Operators
		{input:"\\sum", tag:"mo", output:"\u2211", ttype:7},
		{input:"\\prod", tag:"mo", output:"\u220F", ttype:7},
		{input:"\\bigcap", tag:"mo", output:"\u22C2", ttype:7},
		{input:"\\bigcup", tag:"mo", output:"\u22C3", ttype:7},
		{input:"\\bigwedge", tag:"mo", output:"\u22C0", ttype:7},
		{input:"\\bigvee", tag:"mo", output:"\u22C1", ttype:7},
		{input:"\\bigsqcap", tag:"mo", output:"\u2A05", ttype:7},
		{input:"\\bigsqcup", tag:"mo", output:"\u2A06", ttype:7},
		{input:"\\coprod", tag:"mo", output:"\u2210", ttype:7},
		{input:"\\bigoplus", tag:"mo", output:"\u2A01", ttype:7},
		{input:"\\bigotimes", tag:"mo", output:"\u2A02", ttype:7},
		{input:"\\bigodot", tag:"mo", output:"\u2A00", ttype:7},
		{input:"\\biguplus", tag:"mo", output:"\u2A04", ttype:7},
		{input:"\\int", tag:"mo", output:"\u222B", ttype:0},
		{input:"\\oint", tag:"mo", output:"\u222E", ttype:0},
	//binary relation symbols
		{input:":=", tag:"mo", output:":=", ttype:0},
		{input:"\\lt", tag:"mo", output:"<", ttype:0},
		{input:"\\gt", tag:"mo", output:">", ttype:0},
		{input:"\\ne", tag:"mo", output:"\u2260", ttype:0},
		{input:"\\neq", tag:"mo", output:"\u2260", ttype:0},
		{input:"\\le", tag:"mo", output:"\u2264", ttype:0},
		{input:"\\leq", tag:"mo", output:"\u2264", ttype:0},
		{input:"\\leqslant", tag:"mo", output:"\u2264", ttype:0},
		{input:"\\ge", tag:"mo", output:"\u2265", ttype:0},
		{input:"\\geq", tag:"mo", output:"\u2265", ttype:0},
		{input:"\\geqslant", tag:"mo", output:"\u2265", ttype:0},
		{input:"\\equiv", tag:"mo", output:"\u2261", ttype:0},
		{input:"\\ll", tag:"mo", output:"\u226A", ttype:0},
		{input:"\\gg", tag:"mo", output:"\u226B", ttype:0},
		{input:"\\doteq", tag:"mo", output:"\u2250", ttype:0},
		{input:"\\prec", tag:"mo", output:"\u227A", ttype:0},
		{input:"\\succ", tag:"mo", output:"\u227B", ttype:0},
		{input:"\\preceq", tag:"mo", output:"\u227C", ttype:0},
		{input:"\\succeq", tag:"mo", output:"\u227D", ttype:0},
		{input:"\\subset", tag:"mo", output:"\u2282", ttype:0},
		{input:"\\supset", tag:"mo", output:"\u2283", ttype:0},
		{input:"\\subseteq", tag:"mo", output:"\u2286", ttype:0},
		{input:"\\supseteq", tag:"mo", output:"\u2287", ttype:0},
		{input:"\\sqsubset", tag:"mo", output:"\u228F", ttype:0},
		{input:"\\sqsupset", tag:"mo", output:"\u2290", ttype:0},
		{input:"\\sqsubseteq", tag:"mo", output:"\u2291", ttype:0},
		{input:"\\sqsupseteq", tag:"mo", output:"\u2292", ttype:0},
		{input:"\\sim", tag:"mo", output:"\u223C", ttype:0},
		{input:"\\simeq", tag:"mo", output:"\u2243", ttype:0},
		{input:"\\approx", tag:"mo", output:"\u2248", ttype:0},
		{input:"\\cong", tag:"mo", output:"\u2245", ttype:0},
		{input:"\\Join", tag:"mo", output:"\u22C8", ttype:0},
		{input:"\\bowtie", tag:"mo", output:"\u22C8", ttype:0},
		{input:"\\in", tag:"mo", output:"\u2208", ttype:0},
		{input:"\\ni", tag:"mo", output:"\u220B", ttype:0},
		{input:"\\owns", tag:"mo", output:"\u220B", ttype:0},
		{input:"\\propto", tag:"mo", output:"\u221D", ttype:0},
		{input:"\\vdash", tag:"mo", output:"\u22A2", ttype:0},
		{input:"\\dashv", tag:"mo", output:"\u22A3", ttype:0},
		{input:"\\models", tag:"mo", output:"\u22A8", ttype:0},
		{input:"\\perp", tag:"mo", output:"\u22A5", ttype:0},
		{input:"\\smile", tag:"mo", output:"\u2323", ttype:0},
		{input:"\\frown", tag:"mo", output:"\u2322", ttype:0},
		{input:"\\asymp", tag:"mo", output:"\u224D", ttype:0},
		{input:"\\notin", tag:"mo", output:"\u2209", ttype:0},
	//matrices
		{input:"\\begin{eqnarray}", output:"X", ttype:13, invisible:true},
		{input:"\\begin{array}", output:"X", ttype:13, invisible:true},
		{input:"\\\\", output:"}&{", ttype:8},
		{input:"\\end{eqnarray}", output:"}}", ttype:8},
		{input:"\\end{array}", output:"}}", ttype:8},
	//grouping and literal brackets -- ieval is for IE
		{input:"\\big", tag:"mo", output:"X", atval:"1.2", ieval:"2.2", ttype:10},
		{input:"\\Big", tag:"mo", output:"X", atval:"1.6", ieval:"2.6", ttype:10},
		{input:"\\bigg", tag:"mo", output:"X", atval:"2.2", ieval:"3.2", ttype:10},
		{input:"\\Bigg", tag:"mo", output:"X", atval:"2.9", ieval:"3.9", ttype:10},
		{input:"\\left", tag:"mo", output:"X", ttype:4},
		{input:"\\right", tag:"mo", output:"X", ttype:5},
		{input:"{", output:"{", ttype:4, invisible:true},
		{input:"}", output:"}", ttype:5, invisible:true},
		{input:"(", tag:"mo", output:"(", atval:"1", ttype:12},
		{input:"[", tag:"mo", output:"[", atval:"1", ttype:12},
		{input:"\\lbrack", tag:"mo", output:"[", atval:"1", ttype:12},
		{input:"\\{", tag:"mo", output:"{", atval:"1", ttype:12},
		{input:"\\lbrace", tag:"mo", output:"{", atval:"1", ttype:12},
		{input:"\\langle", tag:"mo", output:"\u2329", atval:"1", ttype:12},
		{input:"\\lfloor", tag:"mo", output:"\u230A", atval:"1", ttype:12},
		{input:"\\lceil", tag:"mo", output:"\u2308", atval:"1", ttype:12},
	// rtag:"mi" causes space to be inserted before a following sin, cos, etc.
	// (see function AMparseExpr() )
		{input:")", tag:"mo",output:")", rtag:"mi",atval:"1",ttype:12},
		{input:"]", tag:"mo",output:"]", rtag:"mi",atval:"1",ttype:12},
		{input:"\\rbrack",tag:"mo",output:"]", rtag:"mi",atval:"1",ttype:12},
		{input:"\\}", tag:"mo",output:"}", rtag:"mi",atval:"1",ttype:12},
		{input:"\\rbrace",tag:"mo",output:"}", rtag:"mi",atval:"1",ttype:12},
		{input:"\\rangle",tag:"mo",output:"\u232A", rtag:"mi",atval:"1",ttype:12},
		{input:"\\rfloor",tag:"mo",output:"\u230B", rtag:"mi",atval:"1",ttype:12},
		{input:"\\rceil", tag:"mo",output:"\u2309", rtag:"mi",atval:"1",ttype:12},
	// "|", "\\|", "\\vert" and "\\Vert" modified later: lspace = rspace = 0em
		{input:"|", tag:"mo", output:"\u2223", atval:"1", ttype:12},
		{input:"\\|", tag:"mo", output:"\u2225", atval:"1", ttype:12},
		{input:"\\vert", tag:"mo", output:"\u2223", atval:"1", ttype:12},
		{input:"\\Vert", tag:"mo", output:"\u2225", atval:"1", ttype:12},
		{input:"\\mid", tag:"mo", output:"\u2223", atval:"1", ttype:12},
		{input:"\\parallel", tag:"mo", output:"\u2225", atval:"1", ttype:12},
		{input:"/", tag:"mo", output:"/", atval:"1.01", ttype:12},
		{input:"\\backslash", tag:"mo", output:"\u2216", atval:"1", ttype:12},
		{input:"\\setminus", tag:"mo", output:"\\", ttype:0},
	//miscellaneous symbols
		{input:"\\!", tag:"mspace", atname:"width", atval:"-0.167em", ttype:6},
		{input:"\\,", tag:"mspace", atname:"width", atval:"0.167em", ttype:6},
		{input:"\\>", tag:"mspace", atname:"width", atval:"0.222em", ttype:6},
		{input:"\\:", tag:"mspace", atname:"width", atval:"0.222em", ttype:6},
		{input:"\\;", tag:"mspace", atname:"width", atval:"0.278em", ttype:6},
		{input:"~", tag:"mspace", atname:"width", atval:"0.333em", ttype:6},
		{input:"\\quad", tag:"mspace", atname:"width", atval:"1em", ttype:6},
		{input:"\\qquad", tag:"mspace", atname:"width", atval:"2em", ttype:6},
		{input:"\\prime", tag:"mo", output:"\u2032", ttype:0},
		{input:"'", tag:"mo", output:"\u02B9", ttype:0},
		{input:"''", tag:"mo", output:"\u02BA", ttype:0},
		{input:"'''", tag:"mo", output:"\u2034", ttype:0},
		{input:"''''", tag:"mo", output:"\u2057", ttype:0},
		{input:"\\ldots", tag:"mo", output:"\u2026", ttype:0},
		{input:"\\cdots", tag:"mo", output:"\u22EF", ttype:0},
		{input:"\\vdots", tag:"mo", output:"\u22EE", ttype:0},
		{input:"\\ddots", tag:"mo", output:"\u22F1", ttype:0},
		{input:"\\forall", tag:"mo", output:"\u2200", ttype:0},
		{input:"\\exists", tag:"mo", output:"\u2203", ttype:0},
		{input:"\\Re", tag:"mo", output:"\u211C", ttype:0},
		{input:"\\Im", tag:"mo", output:"\u2111", ttype:0},
		{input:"\\aleph", tag:"mo", output:"\u2135", ttype:0},
		{input:"\\hbar", tag:"mo", output:"\u210F", ttype:0},
		{input:"\\ell", tag:"mo", output:"\u2113", ttype:0},
		{input:"\\wp", tag:"mo", output:"\u2118", ttype:0},
		{input:"\\emptyset", tag:"mo", output:"\u2205", ttype:0},
		{input:"\\infty", tag:"mo", output:"\u221E", ttype:0},
		{input:"\\surd", tag:"mo", output:"\\sqrt{}", ttype:8},
		{input:"\\partial", tag:"mo", output:"\u2202", ttype:0},
		{input:"\\nabla", tag:"mo", output:"\u2207", ttype:0},
		{input:"\\triangle", tag:"mo", output:"\u25B3", ttype:0},
		{input:"\\therefore", tag:"mo", output:"\u2234", ttype:0},
		{input:"\\angle", tag:"mo", output:"\u2220", ttype:0},
		{input:"\\diamond", tag:"mo", output:"\u22C4", ttype:0},
		{input:"\\Diamond", tag:"mo", output:"\u25C7", ttype:0},
		{input:"\\neg", tag:"mo", output:"\u00AC", ttype:0},
		{input:"\\lnot", tag:"mo", output:"\u00AC", ttype:0},
		{input:"\\bot", tag:"mo", output:"\u22A5", ttype:0},
		{input:"\\top", tag:"mo", output:"\u22A4", ttype:0},
		{input:"\\square", tag:"mo", output:"\u25AB", ttype:0},
		{input:"\\Box", tag:"mo", output:"\u25A1", ttype:0},
		{input:"\\wr", tag:"mo", output:"\u2240", ttype:0},
	//standard functions
	//Note DEFINITION *must* have tag:"mo" to work properly
		{input:"\\arccos", tag:"mi", output:"arccos", ttype:1, func:true},
		{input:"\\arcsin", tag:"mi", output:"arcsin", ttype:1, func:true},
		{input:"\\arctan", tag:"mi", output:"arctan", ttype:1, func:true},
		{input:"\\arg", tag:"mi", output:"arg", ttype:1, func:true},
		{input:"\\cos", tag:"mi", output:"cos", ttype:1, func:true},
		{input:"\\cosh", tag:"mi", output:"cosh", ttype:1, func:true},
		{input:"\\cot", tag:"mi", output:"cot", ttype:1, func:true},
		{input:"\\coth", tag:"mi", output:"coth", ttype:1, func:true},
		{input:"\\csc", tag:"mi", output:"csc", ttype:1, func:true},
		{input:"\\deg", tag:"mi", output:"deg", ttype:1, func:true},
		{input:"\\det", tag:"mi", output:"det", ttype:1, func:true},
		{input:"\\dim", tag:"mi", output:"dim", ttype:1, func:true}, //0?
		{input:"\\exp", tag:"mi", output:"exp", ttype:1, func:true},
		{input:"\\gcd", tag:"mi", output:"gcd", ttype:1, func:true}, //0?
		{input:"\\hom", tag:"mi", output:"hom", ttype:1, func:true},
		{input:"\\inf", tag:"mo", output:"inf", ttype:7},
		{input:"\\ker", tag:"mi", output:"ker", ttype:1, func:true},
		{input:"\\lg", tag:"mi", output:"lg", ttype:1, func:true},
		{input:"\\lim", tag:"mo", output:"lim", ttype:7},
		{input:"\\liminf", tag:"mo", output:"liminf", ttype:7},
		{input:"\\limsup", tag:"mo", output:"limsup", ttype:7},
		{input:"\\ln", tag:"mi", output:"ln", ttype:1, func:true},
		{input:"\\log", tag:"mi", output:"log", ttype:1, func:true},
		{input:"\\max", tag:"mo", output:"max", ttype:7},
		{input:"\\min", tag:"mo", output:"min", ttype:7},
		{input:"\\Pr", tag:"mi", output:"Pr", ttype:1, func:true},
		{input:"\\sec", tag:"mi", output:"sec", ttype:1, func:true},
		{input:"\\sin", tag:"mi", output:"sin", ttype:1, func:true},
		{input:"\\sinh", tag:"mi", output:"sinh", ttype:1, func:true},
		{input:"\\sup", tag:"mo", output:"sup", ttype:7},
		{input:"\\tan", tag:"mi", output:"tan", ttype:1, func:true},
		{input:"\\tanh", tag:"mi", output:"tanh", ttype:1, func:true},
	//arrows
		{input:"\\gets", tag:"mo", output:"\u2190", ttype:0},
		{input:"\\leftarrow", tag:"mo", output:"\u2190", ttype:0},
		{input:"\\to", tag:"mo", output:"\u2192", ttype:0},
		{input:"\\rightarrow", tag:"mo", output:"\u2192", ttype:0},
		{input:"\\leftrightarrow", tag:"mo", output:"\u2194", ttype:0},
		{input:"\\uparrow", tag:"mo", output:"\u2191", ttype:0},
		{input:"\\downarrow", tag:"mo", output:"\u2193", ttype:0},
		{input:"\\updownarrow", tag:"mo", output:"\u2195", ttype:0},
		{input:"\\Leftarrow", tag:"mo", output:"\u21D0", ttype:0},
		{input:"\\Rightarrow", tag:"mo", output:"\u21D2", ttype:0},
		{input:"\\Leftrightarrow", tag:"mo", output:"\u21D4", ttype:0},
		{input:"\\iff", tag:"mo", output:"~\\Longleftrightarrow~", ttype:8},
		{input:"\\Uparrow", tag:"mo", output:"\u21D1", ttype:0},
		{input:"\\Downarrow", tag:"mo", output:"\u21D3", ttype:0},
		{input:"\\Updownarrow", tag:"mo", output:"\u21D5", ttype:0},
		{input:"\\mapsto", tag:"mo", output:"\u21A6", ttype:0},
		{input:"\\longleftarrow", tag:"mo", output:"\u2190", ttype:11},
		{input:"\\longrightarrow", tag:"mo", output:"\u2192", ttype:11},
		{input:"\\longleftrightarrow", tag:"mo", output:"\u2194", ttype:11},
		{input:"\\Longleftarrow", tag:"mo", output:"\u21D0", ttype:11},
		{input:"\\Longrightarrow", tag:"mo", output:"\u21D2", ttype:11},
		{input:"\\Longleftrightarrow", tag:"mo", output:"\u21D4", ttype:11},
		{input:"\\longmapsto", tag:"mo", output:"\u21A6", ttype:0}, // disaster if LONG
	//commands with argument
		{input:"\\sqrt", tag:"msqrt", output:"sqrt", ttype:1},
		{input:"\\root", tag:"mroot", output:"root", ttype:2},
		{input:"\\frac", tag:"mfrac", output:"/", ttype:2},
		{input:"\\stackrel", tag:"mover", output:"stackrel", ttype:2},
		{input:"\\atop", tag:"mfrac", output:"", ttype:3},
		{input:"\\choose", tag:"mfrac", output:"", ttype:3},
		{input:"_", tag:"msub", output:"_", ttype:3},
		{input:"^", tag:"msup", output:"^", ttype:3},
		{input:"\\mathrm", tag:"mtext", output:"text", ttype:9},
		{input:"\\mbox", tag:"mtext", output:"mbox", ttype:9},
	//diacritical marks
		{input:"\\acute", tag:"mover", output:"\u00B4", ttype:1, acc:true},
		{input:"\\grave", tag:"mover", output:"\u0060", ttype:1, acc:true},
		{input:"\\breve", tag:"mover", output:"\u02D8", ttype:1, acc:true},
		{input:"\\check", tag:"mover", output:"\u02C7", ttype:1, acc:true},
		{input:"\\dot", tag:"mover", output:".", ttype:1, acc:true},
		{input:"\\ddot", tag:"mover", output:"..", ttype:1, acc:true},
		{input:"\\mathring", tag:"mover", output:"\u00B0", ttype:1, acc:true},
		{input:"\\vec", tag:"mover", output:"\u20D7", ttype:1, acc:true},
		{input:"\\overrightarrow",tag:"mover",output:"\u20D7", ttype:1, acc:true},
		{input:"\\overleftarrow",tag:"mover", output:"\u20D6", ttype:1, acc:true},
		{input:"\\hat", tag:"mover", output:"\u005E", ttype:1, acc:true},
		{input:"\\widehat", tag:"mover", output:"\u0302", ttype:1, acc:true},
		{input:"\\tilde", tag:"mover", output:"~", ttype:1, acc:true},
		{input:"\\widetilde", tag:"mover", output:"\u02DC", ttype:1, acc:true},
		{input:"\\bar", tag:"mover", output:"\u203E", ttype:1, acc:true},
		{input:"\\overbrace", tag:"mover", output:"\u23B4", ttype:1, acc:true},
		{input:"\\overline", tag:"mover", output:"\u00AF", ttype:1, acc:true},
		{input:"\\underbrace", tag:"munder", output:"\u23B5", ttype:1, acc:true},
		{input:"\\underline", tag:"munder", output:"\u00AF", ttype:1, acc:true},
	//typestyles and fonts
		{input:"\\displaystyle",tag:"mstyle",atname:"displaystyle",atval:"true", ttype:1},
		{input:"\\textstyle",tag:"mstyle",atname:"displaystyle",atval:"false", ttype:1},
		{input:"\\scriptstyle",tag:"mstyle",atname:"scriptlevel",atval:"1", ttype:1},
		{input:"\\scriptscriptstyle",tag:"mstyle",atname:"scriptlevel",atval:"2", ttype:1},
		{input:"\\textrm", tag:"mstyle", output:"\\mathrm", ttype: 8},
		{input:"\\mathbf", tag:"mstyle", atname:"mathvariant", atval:"bold", ttype:1},
		{input:"\\textbf", tag:"mstyle", atname:"mathvariant", atval:"bold", ttype:1},
		{input:"\\mathit", tag:"mstyle", atname:"mathvariant", atval:"italic", ttype:1},
		{input:"\\textit", tag:"mstyle", atname:"mathvariant", atval:"italic", ttype:1},
		{input:"\\mathtt", tag:"mstyle", atname:"mathvariant", atval:"monospace", ttype:1},
		{input:"\\texttt", tag:"mstyle", atname:"mathvariant", atval:"monospace", ttype:1},
		{input:"\\mathsf", tag:"mstyle", atname:"mathvariant", atval:"sans-serif", ttype:1},
		{input:"\\mathbb", tag:"mstyle", atname:"mathvariant", atval:"double-struck", ttype:1, codes:this.AMbbb},
		{input:"\\mathcal",tag:"mstyle", atname:"mathvariant", atval:"script", ttype:1, codes:this.AMcal},
		{input:"\\mathfrak",tag:"mstyle",atname:"mathvariant", atval:"fraktur",ttype:1, codes:this.AMfrk}
	],
	AMcompareNames: function(s1,s2) {
			if (s1.input > s2.input) return 1
			else return -1;
	},
	init: function() {
		this.AMsymbols.sort(this.AMcompareNames);
		for (var i=0; i<this.AMsymbols.length; i++) this.AMnames[i] = this.AMsymbols[i].input;
	},
	AMcreateElementMathML: function(t) {
		if (this.isIE) return document.createElement("m:"+t);
		else return document.createElementNS(this.AMmathml,t);
	},
	AMcreateMmlNode: function(t,frag) {
		if (this.isIE) var node = document.createElement("m:"+t);
		else var node = document.createElementNS(this.AMmathml,t);
		node.appendChild(frag);
		return node;
	},
	newCommand: function(oldstr,newstr) {
		this.AMsymbols = this.AMsymbols.concat([{input:oldstr, tag:"mo", output:newstr, ttype:this.DEFINITION}]);
	},
	AMremoveCharsAndBlanks: function(str,n) {
		//remove n characters and any following blanks
		var st;
		st = str.slice(n);
		for (var i=0; i<st.length && st.charCodeAt(i)<=32; i=i+1);
		return st.slice(i);
	},
	AMposition: function(arr, str, n) {
		// return position >=n where str appears or would be inserted
		// assumes arr is sorted
		if (n==0) {
			var h,m;
			n = -1;
			h = arr.length;
			while (n+1<h) {
				m = (n+h) >> 1;
				if (arr[m]<str) n = m; else h = m;
			}
			return h;
		} else
			for (var i=n; i<arr.length && arr[i]<str; i++);
				return i; // i=arr.length || arr[i]>=str
	},
	AMgetSymbol: function(str) {
		//return maximal initial substring of str that appears in AMnames
		//return null if there is none
		var k = 0; //new pos
		var j = 0; //old pos
		var mk; //match pos
		var st;
		var tagst;
		var match = "";
		var more = true;
		for (var i=1; i<=str.length && more; i++) {
			st = str.slice(0,i); //initial substring of length i
			j = k;
			k = this.AMposition(this.AMnames, st, j);
			if (k<this.AMnames.length && str.slice(0,this.AMnames[k].length)==this.AMnames[k]){
				match = this.AMnames[k];
				mk = k;
				i = match.length;
			}
			more = k<this.AMnames.length && str.slice(0,this.AMnames[k].length)>=this.AMnames[k];
		}
		this.AMpreviousSymbol=this.AMcurrentSymbol;
		if (match!=""){
			this.AMcurrentSymbol=this.AMsymbols[mk].ttype;
			return this.AMsymbols[mk];
		}
		this.AMcurrentSymbol=this.CONST;
		k = 1;
		st = str.slice(0,1); //take 1 character
		if ("0"<=st && st<="9") tagst = "mn";
		else tagst = (("A">st || st>"Z") && ("a">st || st>"z")?"mo":"mi");
		return {input:st, tag:tagst, output:st, ttype:this.CONST};
	},
	AMpreviousSymbol: null,
	AMcurrentSymbol: null,
	AMparseSexpr: function(str) { //parses str and returns [node,tailstr,(node)tag]
		var symbol, node, result, result2, i, st,// rightvert = false,
		newFrag = document.createDocumentFragment();
		str = this.AMremoveCharsAndBlanks(str,0);
		symbol = this.AMgetSymbol(str); //either a token or a bracket or empty
		if (symbol == null || symbol.ttype == this.RIGHTBRACKET)
			return [null,str,null];
		if (symbol.ttype == this.DEFINITION) {
			str = symbol.output+this.AMremoveCharsAndBlanks(str,symbol.input.length);
			symbol = this.AMgetSymbol(str);
			if (symbol == null || symbol.ttype == this.RIGHTBRACKET)
				return [null,str,null];
		}
		str = this.AMremoveCharsAndBlanks(str,symbol.input.length);
		switch (symbol.ttype) {
		case this.SPACE:
			node = this.AMcreateElementMathML(symbol.tag);
			node.setAttribute(symbol.atname,symbol.atval);
			return [node,str,symbol.tag];
		case this.UNDEROVER:
			if (this.isIE) {
				if (symbol.input.substr(0,4) == "\\big") { // botch for missing symbols
					str = "\\"+symbol.input.substr(4)+str; // make \bigcup = \cup etc.
					symbol = this.AMgetSymbol(str);
					symbol.ttype = this.UNDEROVER;
					str = this.AMremoveCharsAndBlanks(str,symbol.input.length);
				}
			}
			return [this.AMcreateMmlNode(symbol.tag,document.createTextNode(symbol.output)),str,symbol.tag];
		case this.CONST:
			var output = symbol.output;
			if (this.isIE) {
				if (symbol.input == "'")
					output = "\u2032";
				else if (symbol.input == "''")
					output = "\u2033";
				else if (symbol.input == "'''")
					output = "\u2033\u2032";
				else if (symbol.input == "''''")
					output = "\u2033\u2033";
				else if (symbol.input == "\\square")
					output = "\u25A1"; // same as \Box
				else if (symbol.input.substr(0,5) == "\\frac") {
					// botch for missing fractions
					var denom = symbol.input.substr(6,1);
					if (denom == "5" || denom == "6") {
						str = symbol.input.replace(/\\frac/,"\\frac ")+str;
						return [node,str,symbol.tag];
					}
				}
			}
			node = this.AMcreateMmlNode(symbol.tag,document.createTextNode(output));
			return[node,str,symbol.tag];
		case this.LONG: // added by DRW
			node = this.AMcreateMmlNode(symbol.tag,document.createTextNode(symbol.output));
			node.setAttribute("minsize","1.5");
			node.setAttribute("maxsize","1.5");
			node = this.AMcreateMmlNode("mover",node);
			node.appendChild(this.AMcreateElementMathML("mspace"));
			return [node,str,symbol.tag];
		case this.STRETCHY: // added by DRW
			if (this.isIE && symbol.input == "\\backslash")
				symbol.output = "\\"; // doesn't expand, but then nor does "\u2216"
			node = this.AMcreateMmlNode(symbol.tag,document.createTextNode(symbol.output));
			if (symbol.input == "|" || symbol.input == "\\vert" || symbol.input == "\\|" || symbol.input == "\\Vert") {
				node.setAttribute("lspace","0em");
				node.setAttribute("rspace","0em");
			}
			node.setAttribute("maxsize",symbol.atval); // don't allow to stretch here
			if (symbol.rtag != null)
				return [node,str,symbol.rtag];
			else
				return [node,str,symbol.tag];
		case this.BIG: // added by DRW
			var atval = symbol.atval;
			if (this.isIE)
				atval = symbol.ieval;
			symbol = this.AMgetSymbol(str);
			if (symbol == null)
				return [null,str,null];
			str = this.AMremoveCharsAndBlanks(str,symbol.input.length);
			node = this.AMcreateMmlNode(symbol.tag,document.createTextNode(symbol.output));
			if (this.isIE) { // to get brackets to expand
				var space = this.AMcreateElementMathML("mspace");
				space.setAttribute("height",atval+"ex");
				node = this.AMcreateMmlNode("mrow",node);
				node.appendChild(space);
			} else { // ignored in IE
				node.setAttribute("minsize",atval);
				node.setAttribute("maxsize",atval);
			}
			return [node,str,symbol.tag];
		case this.LEFTBRACKET: //read (expr+)
			if (symbol.input == "\\left") { // left what?
				symbol = this.AMgetSymbol(str);
				if (symbol != null) {
					if (symbol.input == ".")
						symbol.invisible = true;
					str = this.AMremoveCharsAndBlanks(str,symbol.input.length);
				}
			}
			result = this.AMparseExpr(str,true,false);
			if (symbol==null || (typeof symbol.invisible == "boolean" && symbol.invisible))
				node = this.AMcreateMmlNode("mrow",result[0]);
			else {
				node = this.AMcreateMmlNode("mo",document.createTextNode(symbol.output));
				node = this.AMcreateMmlNode("mrow",node);
				node.appendChild(result[0]);
			}
			return [node,result[1],result[2]];
		case this.MATRIX: //read (expr+)
			if (symbol.input == "\\begin{array}") {
				var mask = "";
				symbol = this.AMgetSymbol(str);
				str = this.AMremoveCharsAndBlanks(str,0);
				if (symbol == null)
					mask = "l";
				else {
					str = this.AMremoveCharsAndBlanks(str,symbol.input.length);
					if (symbol.input != "{")
						mask = "l";
					else do {
						symbol = this.AMgetSymbol(str);
						if (symbol != null) {
							str = this.AMremoveCharsAndBlanks(str,symbol.input.length);
							if (symbol.input != "}")
								mask = mask+symbol.input;
						}
					} while (symbol != null && symbol.input != "" && symbol.input != "}");
				}
				result = this.AMparseExpr("{"+str,true,true);
				node = this.AMcreateMmlNode("mtable",result[0]);
				mask = mask.replace(/l/g,"left ");
				mask = mask.replace(/r/g,"right ");
				mask = mask.replace(/c/g,"center ");
				node.setAttribute("columnalign",mask);
				node.setAttribute("displaystyle","false");
				if (this.isIE)
					return [node,result[1],null];
				// trying to get a *little* bit of space around the array
				// (IE already includes it)
				var lspace = this.AMcreateElementMathML("mspace");
				lspace.setAttribute("width","0.167em");
				var rspace = this.AMcreateElementMathML("mspace");
				rspace.setAttribute("width","0.167em");
				var node1 = this.AMcreateMmlNode("mrow",lspace);
				node1.appendChild(node);
				node1.appendChild(rspace);
				return [node1,result[1],null];
			} else { // eqnarray
				result = this.AMparseExpr("{"+str,true,true);
				node = this.AMcreateMmlNode("mtable",result[0]);
				if (this.isIE)
					node.setAttribute("columnspacing","0.25em"); // best in practice?
				else
					node.setAttribute("columnspacing","0.167em"); // correct (but ignored?)
				node.setAttribute("columnalign","right center left");
				node.setAttribute("displaystyle","true");
				node = this.AMcreateMmlNode("mrow",node);
				return [node,result[1],null];
			}
		case this.TEXT:
			if (str.charAt(0)=="{") i=str.indexOf("}");
			else i = 0;
			if (i==-1) i = str.length;
			st = str.slice(1,i);
			if (st.charAt(0) == " ") {
				node = this.AMcreateElementMathML("mspace");
				node.setAttribute("width","0.33em"); // was 1ex
				newFrag.appendChild(node);
			}
			newFrag.appendChild(this.AMcreateMmlNode(symbol.tag,document.createTextNode(st)));
			if (st.charAt(st.length-1) == " ") {
				node = this.AMcreateElementMathML("mspace");
				node.setAttribute("width","0.33em"); // was 1ex
				newFrag.appendChild(node);
			}
			str = this.AMremoveCharsAndBlanks(str,i+1);
			return [this.AMcreateMmlNode("mrow",newFrag),str,null];
		case this.UNARY:
			result = this.AMparseSexpr(str);
			if (result[0]==null) return [this.AMcreateMmlNode(symbol.tag,document.createTextNode(symbol.output)),str];
			if (typeof symbol.func == "boolean" && symbol.func) { // functions hack
				st = str.charAt(0);
				if (st=="^" || st=="_" || st==",") {
					return [this.AMcreateMmlNode(symbol.tag,document.createTextNode(symbol.output)),str,symbol.tag];
				} else {
					node = this.AMcreateMmlNode("mrow",this.AMcreateMmlNode(symbol.tag,document.createTextNode(symbol.output)));
					if (this.isIE) {
						var space = this.AMcreateElementMathML("mspace");
						space.setAttribute("width","0.167em");
						node.appendChild(space);
					}
					node.appendChild(result[0]);
					return [node,result[1],symbol.tag];
				}
			}
			if (symbol.input == "\\sqrt") { // sqrt
				if (this.isIE) { // set minsize, for \surd
					var space = this.AMcreateElementMathML("mspace");
					space.setAttribute("height","1.2ex");
					space.setAttribute("width","0em"); // probably no effect
					node = this.AMcreateMmlNode(symbol.tag,result[0])
					node.appendChild(space);
					return [node,result[1],symbol.tag];
				} else
					return [this.AMcreateMmlNode(symbol.tag,result[0]),result[1],symbol.tag];
			} else if (typeof symbol.acc == "boolean" && symbol.acc) { // accent
				node = this.AMcreateMmlNode(symbol.tag,result[0]);
				var output = symbol.output;
				if (this.isIE) {
					if (symbol.input == "\\hat")
						output = "\u0302";
					else if (symbol.input == "\\widehat")
						output = "\u005E";
					else if (symbol.input == "\\bar")
						output = "\u00AF";
					else if (symbol.input == "\\grave")
						output = "\u0300";
					else if (symbol.input == "\\tilde")
						output = "\u0303";
				}
				var node1 = this.AMcreateMmlNode("mo",document.createTextNode(output));
				if (symbol.input == "\\vec" || symbol.input == "\\check") // don't allow to stretch
					node1.setAttribute("maxsize","1.2"); // why doesn't "1" work? \vec nearly disappears in firefox
				if (this.isIE && symbol.input == "\\bar")
					node1.setAttribute("maxsize","0.5");
				if (symbol.input == "\\underbrace" || symbol.input == "\\underline")
					node1.setAttribute("accentunder","true");
				else
					node1.setAttribute("accent","true");
				node.appendChild(node1);
				if (symbol.input == "\\overbrace" || symbol.input == "\\underbrace")
					node.ttype = UNDEROVER;
				return [node,result[1],symbol.tag];
			} else { // font change or displaystyle command
				if (!this.isIE && typeof symbol.codes != "undefined") {
					for (i=0; i<result[0].childNodes.length; i++)
						if (result[0].childNodes[i].nodeName=="mi" || result[0].nodeName=="mi") {
							st = (result[0].nodeName=="mi"?result[0].firstChild.nodeValue:result[0].childNodes[i].firstChild.nodeValue);
						var newst = [];
						for (var j=0; j<st.length; j++)
							if (st.charCodeAt(j)>64 && st.charCodeAt(j)<91) newst = newst + String.fromCharCode(symbol.codes[st.charCodeAt(j)-65]);
							else newst = newst + st.charAt(j);
						if (result[0].nodeName=="mi")
							result[0]=this.AMcreateElementMathML("mo").appendChild(document.createTextNode(newst));
						else result[0].replaceChild(this.AMcreateElementMathML("mo").appendChild(document.createTextNode(newst)),result[0].childNodes[i]);
					}
				}
				node = this.AMcreateMmlNode(symbol.tag,result[0]);
				node.setAttribute(symbol.atname,symbol.atval);
				if (symbol.input == "\\scriptstyle" || symbol.input == "\\scriptscriptstyle")
					node.setAttribute("displaystyle","false");
				return [node,result[1],symbol.tag];
			}
		case this.BINARY:
			result = this.AMparseSexpr(str);
			if (result[0]==null) return [this.AMcreateMmlNode("mo",document.createTextNode(symbol.input)),str,null];
			result2 = this.AMparseSexpr(result[1]);
			if (result2[0]==null) return [this.AMcreateMmlNode("mo",document.createTextNode(symbol.input)),str,null];
			if (symbol.input=="\\root" || symbol.input=="\\stackrel")
				newFrag.appendChild(result2[0]);
			newFrag.appendChild(result[0]);
			if (symbol.input=="\\frac") newFrag.appendChild(result2[0]);
			return [this.AMcreateMmlNode(symbol.tag,newFrag),result2[1],symbol.tag];
		case this.INFIX:
			str = this.AMremoveCharsAndBlanks(str,symbol.input.length);
			return [this.AMcreateMmlNode("mo",document.createTextNode(symbol.output)),str,symbol.tag];
		default:
			return [this.AMcreateMmlNode(symbol.tag,document.createTextNode(symbol.output)),str,symbol.tag];
		}
 	},
	AMparseIexpr: function(str) {
		var symbol, sym1, sym2, node, result, tag, underover;
		str = this.AMremoveCharsAndBlanks(str,0);
		sym1 = this.AMgetSymbol(str);
		result = this.AMparseSexpr(str);
		node = result[0];
		str = result[1];
		tag = result[2];
		symbol = this.AMgetSymbol(str);
		if (symbol.ttype == this.INFIX) {
			str = this.AMremoveCharsAndBlanks(str,symbol.input.length);
			result = this.AMparseSexpr(str);
			if (result[0] == null) // show box in place of missing argument
				result[0] = this.AMcreateMmlNode("mo",document.createTextNode("\u25A1"));
			str = result[1];
			tag = result[2];
			if (symbol.input == "_" || symbol.input == "^") {
				sym2 = this.AMgetSymbol(str);
				tag = null; // no space between x^2 and a following sin, cos, etc.
				// This is for \underbrace and \overbrace
				underover = ((sym1.ttype == this.UNDEROVER) || (node.ttype == this.UNDEROVER));
				if (symbol.input == "_" && sym2.input == "^") {
					str = this.AMremoveCharsAndBlanks(str,sym2.input.length);
					var res2 = this.AMparseSexpr(str);
					str = res2[1];
					tag = res2[2]; // leave space between x_1^2 and a following sin etc.
					node = this.AMcreateMmlNode((underover?"munderover":"msubsup"),node);
					node.appendChild(result[0]);
					node.appendChild(res2[0]);
				} else if (symbol.input == "_") {
					node = this.AMcreateMmlNode((underover?"munder":"msub"),node);
					node.appendChild(result[0]);
				} else {
					node = this.AMcreateMmlNode((underover?"mover":"msup"),node);
					node.appendChild(result[0]);
				}
				node = this.AMcreateMmlNode("mrow",node); // so sum does not stretch
			} else {
				node = this.AMcreateMmlNode(symbol.tag,node);
				if (symbol.input == "\\atop" || symbol.input == "\\choose")
					node.setAttribute("linethickness","0ex");
				node.appendChild(result[0]);
				if (symbol.input == "\\choose")
					node = this.AMcreateMmlNode("mfenced",node);
			}
		}
		 return [node,str,tag];
	},
	AMparseExpr: function(str,rightbracket,matrix) {
 		var symbol, node, result, i, tag,
		newFrag = document.createDocumentFragment();
		do {
			str = this.AMremoveCharsAndBlanks(str,0);
			result = this.AMparseIexpr(str);
			node = result[0];
			str = result[1];
			tag = result[2];
			symbol = this.AMgetSymbol(str);
			if (node!=undefined) {
				if ((tag == "mn" || tag == "mi") && symbol!=null && typeof symbol.func == "boolean" && symbol.func) {
					// Add space before \sin in 2\sin x or x\sin x
					var space = this.AMcreateElementMathML("mspace");
					space.setAttribute("width","0.167em");
					node = this.AMcreateMmlNode("mrow",node);
					node.appendChild(space);
				}
				newFrag.appendChild(node);
			}
		} while ((symbol.ttype != this.RIGHTBRACKET) && symbol!=null && symbol.output!="");
		tag = null;
		if (symbol.ttype == this.RIGHTBRACKET) {
			if (symbol.input == "\\right") { // right what?
				str = this.AMremoveCharsAndBlanks(str,symbol.input.length);
				symbol = this.AMgetSymbol(str);
				if (symbol != null && symbol.input == ".")
					symbol.invisible = true;
				if (symbol != null)
					tag = symbol.rtag;
			}
			if (symbol!=null)
				str = this.AMremoveCharsAndBlanks(str,symbol.input.length); // ready to return
			var len = newFrag.childNodes.length;
			if (matrix && len>0 && newFrag.childNodes[len-1].nodeName == "mrow" && len>1 && newFrag.childNodes[len-2].nodeName == "mo" && newFrag.childNodes[len-2].firstChild.nodeValue == "&") { //matrix
				var pos = []; // positions of ampersands
				var m = newFrag.childNodes.length;
				for (i=0; matrix && i<m; i=i+2) {
					pos[i] = [];
					node = newFrag.childNodes[i];
					for (var j=0; j<node.childNodes.length; j++)
						if (node.childNodes[j].firstChild.nodeValue=="&") pos[i][pos[i].length]=j;
				}
				var row, frag, n, k, table = document.createDocumentFragment();
				for (i=0; i<m; i=i+2) {
					row = document.createDocumentFragment();
					frag = document.createDocumentFragment();
					node = newFrag.firstChild; // <mrow> -&-&...&-&- </mrow>
					n = node.childNodes.length;
					k = 0;
					for (j=0; j<n; j++) {
						if (typeof pos[i][k] != "undefined" && j==pos[i][k]){
							node.removeChild(node.firstChild); //remove &
							row.appendChild(this.AMcreateMmlNode("mtd",frag));
							k++;
						} else frag.appendChild(node.firstChild);
					}
					row.appendChild(this.AMcreateMmlNode("mtd",frag));
					if (newFrag.childNodes.length>2) {
						newFrag.removeChild(newFrag.firstChild); //remove <mrow> </mrow>
						newFrag.removeChild(newFrag.firstChild); //remove <mo>&</mo>
					}
					table.appendChild(this.AMcreateMmlNode("mtr",row));
				}
				return [table,str];
			}
			if (typeof symbol.invisible != "boolean" || !symbol.invisible) {
				node = this.AMcreateMmlNode("mo",document.createTextNode(symbol.output));
				newFrag.appendChild(node);
			}
		}
		return [newFrag,str,tag];
	},
	AMparseMath: function(str) {
		var result, node = this.AMcreateElementMathML("mstyle");
		node.appendChild(this.AMparseExpr(str.replace(/^\s+/g,""),false,false)[0]);
		node = this.AMcreateMmlNode("math",node);
		return node;
	},
	AMstrarr2docFrag: function(arr) {
		var newFrag=document.createDocumentFragment();
		newFrag.appendChild(this.AMparseMath(arr));
		return newFrag;
	}
};

config.macros.LaTeXMathMLPlugin.init();

config.formatters.push({
	name: "eqmath0",
	match: "\\$\\$",
	lookaheadRegExp: /\$\$((?:.|\n)*?)\$\$/mg,
	handler: function(w){
		this.lookaheadRegExp.lastIndex = w.matchStart;
		var lookaheadMatch = this.lookaheadRegExp.exec(w.source);
		if(lookaheadMatch){
			var eq = createTiddlyElement(w.output,"div");
			eq.style.textAlign='center';
			eq.appendChild(config.macros.LaTeXMathMLPlugin.AMstrarr2docFrag("\\displaystyle\{"+lookaheadMatch[1]+"\}"));
			w.nextMatch = lookaheadMatch.index + lookaheadMatch[0].length;
		}
	}
});

config.formatters.push({
	name: "eqmath1",
	match: "\\$",
	lookaheadRegExp: /\$((?:.|\n)*?)\$/mg,
	handler: function(w){
		this.lookaheadRegExp.lastIndex = w.matchStart;
		var lookaheadMatch = this.lookaheadRegExp.exec(w.source);
		if(lookaheadMatch){
			var eq = createTiddlyElement(w.output,"span");
			eq.appendChild(config.macros.LaTeXMathMLPlugin.AMstrarr2docFrag(lookaheadMatch[1]));
			w.nextMatch = lookaheadMatch.index + lookaheadMatch[0].length;
		}
	}
});

config.shadowTiddlers.LaTeXMathMLPluginDoc="The documentation is available [[here.|http://www.math.ist.utl.pt/~psoares/addons.html#LaTeXMathMLPluginDoc]]";
//}}}
//{{{
with(config.macros.LaTeXMathMLPlugin){
	newCommand("\\nle","\u2270");
	newCommand("\\R","\u211D");
	init();
}
//}}}
!Description
This plugin is a modification of  a set of ~JavaScript functions to convert ~LaTeX math notation to Presentation ~MathML written by Douglas Woodall. The original notice can be found at the end of this text. The most important changes were:
#the substitution mechanism of ~LaTeX snippets (enclosed by {{{$...$}}} or {{{$$...$$}}}) was replaced by a couple of ~TiddlyWiki formatters
#centered equations (enclosed by {{{$$...$$}}}) are properly handled
#~MathML output can be decorated by CSS rules such as
{{{
math {
 font-family: sans-serif,arial;
 color: red;
}
}}}
!Installation
To use this plugin with Internet Explorer (IE) it is needed the [[MathPlayer|http://www.dessci.com/en/products/mathplayer/]] plugin for IE and the following lines should be added to the MarkupPreHead tiddler:
{{{
<html xmlns:m="http://www.w3.org/1998/Math/MathML">
<object id="mathplayer" classid="clsid:32F66A20-7614-11D4-BD11-00104BD3F987"></object>
<?import namespace="m" implementation="#mathplayer"?>
}}}
!Adding new symbols
The standard symbol table can be extended by adding additional symbols. This is done by adding a few lines of ~JavaScript code as in [[here|LaTeXMathMLPluginComp]].
You first have to find the four-digit hexadecimal Unicode value for these symbols by looking them up at, say, [[here|http://www.w3.org/TR/MathML2/chapter6.html#chars.entity.tables]].
!Credits
A final word of appreciation for the work of Douglas Woodall and Peter Jipsen on promoting the presentation of beautiful math in the web.
!Revision history
*1.1 06/10/2007
**Complete refactoring of the code. No more global variables!
*1.0.1 15/09/2007
**Included missing function 'newcommand' that allows the extension of the set of symbols available
*1.0.0 12/09/2007
**Initial release 
!Original notice
{{{
LaTeXMathML.js
==============

This file, in this form, is due to Douglas Woodall, June 2006.
It contains JavaScript functions to convert (most simple) LaTeX
math notation to Presentation MathML.  It was obtained by
downloading the file ASCIIMathML.js from
	http://www1.chapman.edu/~jipsen/mathml/asciimathdownload/
and modifying it so that it carries out ONLY those conversions
that would be carried out in LaTeX.  A description of the original
file, with examples, can be found at
	www1.chapman.edu/~jipsen/mathml/asciimath.html
	ASCIIMathML: Math on the web for everyone

Here is the header notice from the original file:

ASCIIMathML.js
==============
This file contains JavaScript functions to convert ASCII math notation
to Presentation MathML. The conversion is done while the (X)HTML page
loads, and should work with Firefox/Mozilla/Netscape 7+ and Internet
Explorer 6+MathPlayer (http://www.dessci.com/en/products/mathplayer/).
Just add the next line to your (X)HTML page with this file in the same folder:
<script type="text/javascript" src="ASCIIMathML.js"></script>
This is a convenient and inexpensive solution for authoring MathML.

Version 1.4.7 Dec 15, 2005, (c) Peter Jipsen http://www.chapman.edu/~jipsen
Latest version at http://www.chapman.edu/~jipsen/mathml/ASCIIMathML.js
For changes see http://www.chapman.edu/~jipsen/mathml/asciimathchanges.txt
If you use it on a webpage, please send the URL to jipsen@chapman.edu

This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or (at
your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License (at http://www.gnu.org/copyleft/gpl.html)
for more details.
}}}
/***
|''Name:''|LegacyStrikeThroughPlugin|
|''Description:''|Support for legacy (pre 2.1) strike through formatting|
|''Version:''|1.0.2|
|''Date:''|Jul 21, 2006|
|''Source:''|http://www.tiddlywiki.com/#LegacyStrikeThroughPlugin|
|''Author:''|MartinBudden (mjbudden (at) gmail (dot) com)|
|''License:''|[[BSD open source license]]|
|''CoreVersion:''|2.1.0|
***/

//{{{
// Ensure that the LegacyStrikeThrough Plugin is only installed once.
if(!version.extensions.LegacyStrikeThroughPlugin) {
version.extensions.LegacyStrikeThroughPlugin = {installed:true};

config.formatters.push(
{
	name: "legacyStrikeByChar",
	match: "==",
	termRegExp: /(==)/mg,
	element: "strike",
	handler: config.formatterHelpers.createElementAndWikify
});

} //# end of "install only once"
//}}}
[[Inici|index.htm]]
<<tag grafics>>
<<tag simulacions>>

TiddlyWiki
ComComençar
[[Aparença]]
[[BaixaElProgramari]]
[[Connectors]]
[[Donacions]]

© 2007 [[UnaMesa|http://www.unamesa.org/]]
[[©|Copyright]] 2007 [[frivière|http://pacoriviere.cat/]]


^^TiddlyWiki versió <<version>>^^
<!--{{{-->
<link rel='alternate' type='application/rss+xml' title='RSS' href='index.xml'/>
<script type="text/javascript" src="TWASCIIsvg.js"></script>
<!--}}}-->
[[Electricitat i eletrònica|http://www.cnice.mec.es/pamc/pamc_2005/2005_inelec/]] (Flash)
[[Electricitat a 2n d'ESO|http://platea.pntic.mec.es/curso20//77_newton/html5/]] (Java)
[[Lleis de gasos|http://www.cnice.mec.es/pamc/pamc_2003/2003_ley_gases/]] (Flash)
[[Geometria descriptiva|http://www.cnice.mec.es/pamc/pamc_2002/vistas_2002/]] (Flash)
[[Visió espaial|http://www.cnice.mec.es/pamc/pamc_2001/2001_vision_espacial/]] (VRML)
[[Interpretació de plànols|http://www.cnice.mec.es/pamc/pamc_2003/2003_interpretacion_planos/]] (Flash)
[[Informàtica Bàsica|http://www.cnice.mec.es/pamc/pamc_2003/2003_frente_ordenador/]] (Flash) Posició i ergonomia
[[Lògica|http://www.cnice.mec.es/pamc/pamc_2003/2003_aprende_logica/]]
[[Elements del moviment|http://platea.pntic.mec.es/curso20/77_newton/html2/]] (Java) Batxillerat
[[Cossos en moviment|http://www.cnice.mec.es/vistaprevia/pamc/pamc_1999/1999_cuerpos_movimiento/]] (Java)
[[Dinàmica|http://platea.pntic.mec.es/curso20//77_newton/html7/]] (Java) Batxillerat
[[Simulacions del moviment armònic simple|http://platea.pntic.mec.es/curso20/77_newton/html3/2Bach/MAS/]] (Java)
[[Mecànica Bàsica|http://www.cnice.mec.es/pamc/pamc_2005/2005_mecbas/]]
[[Engranatges de tranmissió rotatius|http://platea.pntic.mec.es/curso20/34_flash/html5/]] (Flash)
[[Robòtica|http://www.cnice.mec.es/pamc/pamc_2003/2003_proyecto_ress/]]
Motivació: [[La ciencia es divertida|http://www.cnice.mec.es/pamc/pamc_2001/2001_ciencia_divertida/]]
A famous result due to [[Euler|http://www-groups.dcs.st-and.ac.uk/~history/Mathematicians/Euler.html]] in ~LaTeX: $\sum_{n=1}^{+\infty}{\frac1{n^2}=\frac{\pi^2}6$

and again using {{{displaystyle}}}: $\displaystyle{\sum_{n=1}^{+\infty} \frac{1}{n^2}=\frac{\pi^2}{6}}$

and finally as a centered equation $$\sum_{n=1}^{+\infty} \frac{1}{n^2}=\frac{\pi^2}{6}.$$
Here is a graph of $x-\frac{x^3}{6}$ and $\sin(x)$ (double click on this tiddler to see the <embed> tag that produced it).
<html>
<center>
<embed id="graph"; src="d.svg";
script='width=300; height=150;
xmin=-2pi; xmax=2pi; xscl=1; axes(); stroke="red"
plot(sin(x))
stroke="blue"; strokedasharray="10,10"
plot(x-x^3/6,-4,4)'>
</center>
</html>
and a diagram illustrating why Pythagoras' Theorem holds:
<html>
<center>
<embed id="pythagoras"; src="d.svg";
script='width=400; height=170;
xmin=-4; xmax=4; xscl=1; ymin=1; noAxes(); noButton();
fill="yellow"
rect([1,1],[4,4])
rect([-4,1],[-1,4])
fill="red"
rect([-2,1],[-1,2])
fill="blue"
rect([-4,2],[-2,4])
fill="green"
path([[1,2],[2,4],[4,3],[3,1],[1,2]])
fill="none"
path([[-4,1],[-2,2],[-1,4]])'>
</center>
</html>
|Nome|Fórmula molecular|Fórmula de estrutura condensada|h
|Met''ano''|$CH_4$|$CH_4$|
|Et''ano''|$C_2H_6$|$CH_3-CH_3$|
|Prop''ano''|$C_3H_8$|$CH_3-CH_2-CH_3$|
|But''ano''|$C_4H_{10}$|$CH_3-CH_2-CH_2 CH_3$|
|Pent''ano''|$C_5H_{12}$|$CH_3-CH_2-CH_2-CH_2-CH_3$|
|...|...|$\ldots$|

$$f(x) = \left\{\begin{array}{l l}
x^2 \sin \frac1x, & \textrm{if } x \ne 0, \\
0, & \textrm{if } x = 0 .
\end{array}\right.$$
$$\begin{eqnarray} x & = & \frac{-7 \pm \sqrt{49 - 24}}{6} \\
& = & -2 \textrm{ or } -\frac13. \end{eqnarray}$$
[[Pla inclinat (amb fregament)|http://www.ecm.ub.es/team/Plano.html]] Simulació [[Amb cronòmetre|http://www.univ-lemans.fr/enseignements/physique/02/meca/incline.html]]
[[Palanca|http://fem.um.es/Ejs/EjsExamples3.3/Simulations/SeeSaw.html]] Simulació
[[Roda|CilindreIPlataforma.app/CilindreIPlataforma.html]] 
[[Caragol|http://www.math.nyu.edu/~crorres/Archimedes/Screw/ScrewAnimation.html]] Animació
[[Politja|http://www.bbc.co.uk/history/british/victorians/launch_ani_winding_gear.shtml]] Animació
http://alumnes.pacoriviere.cat/
*[[Possibilitats del ASCIIsvg|http://math.chapman.edu/cgi-bin/math.pl?ASCIIsvg_Gallery]]
*[[Sobre ASCIIsvgPlugin|http://www.math.ist.utl.pt/~psoares/addons.html#ASCIIsvgPluginDoc]]
*SVG front al Flash
**[[A can Mozilla|http://www.mozilla.org/projects/svg/]]
**[[A SVGOpen|http://www.svgopen.org/2005/papers/MakingControlPanelsInSVGFormat/index.html#S4.3.2]]
**[[Planet Publish|http://www.planetpublish.com/mainpage.asp?webpageid=229]]
**[[Blogalia|http://confrontacion.blogalia.com/historias/3396]]
*Pròpies
[[Moviment dels electrons en un conductor|ConductorMetalic.app/ConductorMetalic.html]] (Java) Electricitat
[[Cilindre i plataforma|CilindreIPlataforma.app/CilindreIPlataforma.html]] (Java) Marc de referència i moviment
[[Ploter 3D de superfícies|3DPloter3DSuperficies.app/3DPloter3DSuperficies.html]]
*[[Física
[[Angel Franco Garcia|http://www.sc.ehu.es/sbweb/fisica/default.htm]] Unitats i mesures, Cinemàtica, Dinàmica, Sòlid rígid, Oscil·lacions, Movimento ondulatori, Fenòmens de transport, Física estadística i Termodinàmica i Electromagnetisme
[[Jean-Jacques Rousseau|http://www.univ-lemans.fr/enseignements/physique/02/index.html]] també numèriques
*Cosos - De José Luis Abreu León i Marta Oliveró Serrat
[[Pla inclinat|http://w3.cnice.mec.es/eos/MaterialesEducativos/mem/cuerpos/planoInclinado.html]]
**Moviment circular
[[Moviment circular uniforme|http://w3.cnice.mec.es/eos/MaterialesEducativos/mem/cuerpos/movimientoCircularUniforme.htmlhttp://w3.cnice.mec.es/eos/MaterialesEducativos/mem/cuerpos/movimientoCircular.html]]
[[Moviment circular no uniforme|http://w3.cnice.mec.es/eos/MaterialesEducativos/mem/cuerpos/osciladorArmonico.html]]
**Ocil·ladors
[[Oscil·lador armònic|http://w3.cnice.mec.es/eos/MaterialesEducativos/mem/cuerpos/osciladorArmonico.html]]
[[Oscil·lador armònic forçat i amortit|http://w3.cnice.mec.es/eos/MaterialesEducativos/mem/cuerpos/osciladorForzado.html]]
[[El pèndul amortit|http://w3.cnice.mec.es/eos/MaterialesEducativos/mem/cuerpos/penduloAmortiguado.html]]
[[Oscil·lador compost|http://w3.cnice.mec.es/eos/MaterialesEducativos/mem/cuerpos/osciladorCompuesto.html]]
[[El pèndul amb molla|http://w3.cnice.mec.es/eos/MaterialesEducativos/mem/cuerpos/pendulo-muelle.html]]
[[Pèndul mòbil|http://w3.cnice.mec.es/eos/MaterialesEducativos/mem/cuerpos/penduloMovil.html]]
[[El pèndul compost|http://w3.cnice.mec.es/eos/MaterialesEducativos/mem/cuerpos/penduloCompuesto.html]]
**Molles
[[Rebots sobre una molla|http://w3.cnice.mec.es/eos/MaterialesEducativos/mem/cuerpos/rebotes.html]]
**Camps potencials
[[Partícula que es mou en un potencial d'alçada|http://w3.cnice.mec.es/eos/MaterialesEducativos/mem/cuerpos/potencialDeAltura.html]]
[[Partícula que es mou sobre una corba|http://w3.cnice.mec.es/eos/MaterialesEducativos/mem/cuerpos/curva.html]]
[[Partícula que es mou sobre una paràbola|http://w3.cnice.mec.es/eos/MaterialesEducativos/mem/cuerpos/penduloParabolico.html]]
[[Potencial gravitatori|http://w3.cnice.mec.es/eos/MaterialesEducativos/mem/cuerpos/potencialGravitatorio.html]]
[[Cosa rara|http://w3.cnice.mec.es/eos/MaterialesEducativos/mem/cuerpos/cosaRara.html]]
[[Dos cosos|http://w3.cnice.mec.es/eos/MaterialesEducativos/mem/cuerpos/dosCuerpos.html]]
**Tir parabòlic
[[El tir parabòlic|http://w3.cnice.mec.es/eos/MaterialesEducativos/mem/cuerpos/tiroParabolico.html]]
[[Projecte Newton|http://newton.cnice.mecd.es/index2.html]]
* Matemàtiques
[[Projecte Descartes|http://descartes.cnice.mecd.es/]]
*Applets Java per fer simulacions
[[Universitat de Barcelona|http://www.ecm.ub.es/team/]] Fonaments de Física, Mecànica i Mecànica Quàntica
(es) [[Directori de J.Pimentel|http://www.jpimentel.com/ciencias_experimentales/pagwebciencias/Pagweb/applets.htm]] Física, Matemàtiques i recursos
(es) [[Angel Franco Garcia|http://www.sc.ehu.es/sbweb/fisica/default.htm]] Unitats i mesures, Cinemàtica, Dinàmica, Sòlid rígid, Oscil·lacions, Movimento ondulatori, Fenòmens de transport, Física estadística i Termodinàmica i Electromagnetisme
(es) [[IES Alcalde Bernabé|http://iesalcalde.serveftp.org/indiceappletsadaptado_NAMO_PARA_WEB.asp]] Càlcul vectorial, cinèmàtica, dinàmica, ones, camps, electricitat, energia, mecànica quàntica, termodinàmica, radioactivitat, estructura atòmica i altres.
(en) [[Física|http://www.walter-fendt.de/ph14e/]] de Walter Fendt - Física, matemàtiques y astronomia.
*Creació d'applets
[[Easy Java Simulations (Ejs)|http://fem.um.es/Ejs/]]
[[Curso Interactivo de Física en Internet|http://www.sc.ehu.es/sbweb/fisica/default.htm]] Unitats i mesures, Cinemàtica, Dinàmica, Sòlid rígid, Oscil·lacions, Movimento ondulatori, Fenòmens de transport, Física estadística i Termodinàmica i Electromagnetisme - Angel Franco Garcia
amb TiddlyWiki
Gràfics vectorials
/***
|''Name:''|SparklinePlugin|
|''Description:''|Sparklines macro|
***/
//{{{
if(!version.extensions.SparklinePlugin) {
version.extensions.SparklinePlugin = {installed:true};

//--
//-- Sparklines
//--

config.macros.sparkline = {};
config.macros.sparkline.handler = function(place,macroName,params)
{
	var data = [];
	var min = 0;
	var max = 0;
	var v;
	for(var t=0; t<params.length; t++) {
		v = parseInt(params[t]);
		if(v < min)
			min = v;
		if(v > max)
			max = v;
		data.push(v);
	}
	if(data.length < 1)
		return;
	var box = createTiddlyElement(place,"span",null,"sparkline",String.fromCharCode(160));
	box.title = data.join(",");
	var w = box.offsetWidth;
	var h = box.offsetHeight;
	box.style.paddingRight = (data.length * 2 - w) + "px";
	box.style.position = "relative";
	for(var d=0; d<data.length; d++) {
		var tick = document.createElement("img");
		tick.border = 0;
		tick.className = "sparktick";
		tick.style.position = "absolute";
		tick.src = "data:image/gif,GIF89a%01%00%01%00%91%FF%00%FF%FF%FF%00%00%00%C0%C0%C0%00%00%00!%F9%04%01%00%00%02%00%2C%00%00%00%00%01%00%01%00%40%02%02T%01%00%3B";
		tick.style.left = d*2 + "px";
		tick.style.width = "2px";
		v = Math.floor(((data[d] - min)/(max-min)) * h);
		tick.style.top = (h-v) + "px";
		tick.style.height = v + "px";
		box.appendChild(tick);
	}
};


}
//}}}
//{{{
config.macros.wikipedia = {};
config.macros.wikipedia.handler= function(place,macroName,params) {
	if(params.length==1){
		var key=params[0];
		var lang="ca";
	} else {
		var key=params[1];
		var lang=params[0];
	}
	wikify("[["+key+"|http://"+lang+".wikipedia.org/wiki/"+key+"]]",place)
}
//}}}