WordPress.com 新增 LaTeX 支援
http://taogate.wordpress.com/2007/02/25/latex/
不過說到把數學式放在網頁裡,一般都是離不開用圖片或者 MathML,但兩者同樣麻煩,效果也不佳。Wikipedia 雖然用到 LaTeX,但那又不能用來寫自己的東西。
現在好了,WordPress.com 新增了 LaTeX 的功能,只要用一對 $latex ... $ 包著 LaTeX 語句即可,WordPress.com 會自動替你把數學式轉化為圖片。
2011年4月22日 星期五
Math Equation Editor
MathML十分類似HTML,是嚴格遵守XML規範的語言
在現在幾個主要的網頁瀏覽器中,最新版的Mozilla、Mozilla Firefox和Netscape Navigator都已經對MathML提供直接的支持。微軟的Internet Explorer在安裝了MathPlayer外掛程式後也可以識別MathML。此外,MathML還得到了一些辦公軟體的支持,如OpenOffice.org和Microsoft Office。
http://en.wikipedia.org/wiki/Formula_editor
Formulator Mathml Weaver
http://www.mmlsoft.com/index.php?option=com_content&task=view&id=6&Itemid=7
Free for non-commercial purposes
Cross-platform edition: 4.0
export format: MathML, PDF, SVG, Image, IE
不能輸出LaTeX
輸出的圖片沒有LaTeX漂亮
DragMath
http://www.dragmath.bham.ac.uk/demo.html
Open Source
Java applet
export format: LaTex, Maple, MathML, Maxima, MoodleTex, ASCIIMathML
可線上或下載
沒有hbar
Mirai Math
http://mirai.sourceforge.net/
Open Source
Uses Octave (Matlab clone) as a mathematical engine.
Firefox 附加元件: FireMath
https://addons.mozilla.org/zh-TW/firefox/addon/firemath/
Lyx
http://zh.wikipedia.org/wiki/LyX
GPL
Stable release 1.6.9 / February 7, 2011
LaTeX的筆記
http://homepage.mac.com/yenlung/WebWiki/LaTeXnote.html
Maxima 簡介
http://homepage.mac.com/yenlung/WebWiki/MaximNotes.html
http://yenlung.blogspot.com/2005/11/singular.html
Maxima 一直沒有健全的 Groebner Basis 模組, 至少還沒有標準內建型的。
如果要計算 Groebner Basis, 我們不得不求助其他軟體。我個人的選擇是 Singular。
在現在幾個主要的網頁瀏覽器中,最新版的Mozilla、Mozilla Firefox和Netscape Navigator都已經對MathML提供直接的支持。微軟的Internet Explorer在安裝了MathPlayer外掛程式後也可以識別MathML。此外,MathML還得到了一些辦公軟體的支持,如OpenOffice.org和Microsoft Office。
http://en.wikipedia.org/wiki/Formula_editor
Formulator Mathml Weaver
http://www.mmlsoft.com/index.php?option=com_content&task=view&id=6&Itemid=7
Free for non-commercial purposes
Cross-platform edition: 4.0
export format: MathML, PDF, SVG, Image, IE
不能輸出LaTeX
輸出的圖片沒有LaTeX漂亮
DragMath
http://www.dragmath.bham.ac.uk/demo.html
Open Source
Java applet
export format: LaTex, Maple, MathML, Maxima, MoodleTex, ASCIIMathML
可線上或下載
沒有hbar
Mirai Math
http://mirai.sourceforge.net/
Open Source
Uses Octave (Matlab clone) as a mathematical engine.
Firefox 附加元件: FireMath
https://addons.mozilla.org/zh-TW/firefox/addon/firemath/
Lyx
http://zh.wikipedia.org/wiki/LyX
GPL
Stable release 1.6.9 / February 7, 2011
LaTeX的筆記
http://homepage.mac.com/yenlung/WebWiki/LaTeXnote.html
Maxima 簡介
http://homepage.mac.com/yenlung/WebWiki/MaximNotes.html
http://yenlung.blogspot.com/2005/11/singular.html
Maxima 一直沒有健全的 Groebner Basis 模組, 至少還沒有標準內建型的。
如果要計算 Groebner Basis, 我們不得不求助其他軟體。我個人的選擇是 Singular。
如何在 Blogger 中使用 MathML
code主要抄自 http://yusufma.blogspot.com/2008/10/bloggermathml.html
在按照 http://mathmlblogs.blogspot.com/
在頭尾加上(否則不讓你儲存,不知原因為何)
// <![CDATA[
// ]]>
============================================================
將下面的 code 加到 blogger template 文件的 head 裡
<script language="javascript">
// <![CDATA[
/*
March 19, 2004 MathHTML (c) Peter Jipsen http://www.chapman.edu/~jipsen
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.
*/
function convertMath(node) {// for Gecko
if (node.nodeType==1) {
var newnode =
document.createElementNS("http://www.w3.org/1998/Math/MathML",
node.nodeName.toLowerCase());
for(var i=0; i < node.attributes.length; i++)
newnode.setAttribute(node.attributes[i].nodeName,
node.attributes[i].nodeValue);
for (var i=0; i<node.childNodes.length; i++) {
var st = node.childNodes[i].nodeValue;
if (st==null || st.slice(0,1)!=" " && st.slice(0,1)!="\n")
newnode.appendChild(convertMath(node.childNodes[i]));
}
return newnode;
}
else return node;
}
function convert() {
var mmlnode = document.getElementsByTagName("math");
var st,str,node,newnode;
for (var i=0; i<mmlnode.length; i++)
if (document.createElementNS!=null)
mmlnode[i].parentNode.replaceChild(convertMath(mmlnode[i]),mmlnode[i]);
else { // convert for IE
str = "";
node = mmlnode[i];
while (node.nodeName!="/MATH") {
st = node.nodeName.toLowerCase();
if (st=="#text") str += node.nodeValue;
else {
str += (st.slice(0,1)=="/" ? "</m:"+st.slice(1) : "<m:"+st);
if (st.slice(0,1)!="/")
for(var j=0; j < node.attributes.length; j++)
if (node.attributes[j].nodeValue!="italic" &&
node.attributes[j].nodeValue!="" &&
node.attributes[j].nodeValue!="inherit" &&
node.attributes[j].nodeValue!=undefined)
str += " "+node.attributes[j].nodeName+"="+
"\""+node.attributes[j].nodeValue+"\"";
str += ">";
}
node = node.nextSibling;
node.parentNode.removeChild(node.previousSibling);
}
str += "</m:math>";
newnode = document.createElement("span");
node.parentNode.replaceChild(newnode,node);
newnode.innerHTML = str;
}
}
if (document.createElementNS==null) {
document.write("<object id=\"mathplayer\"\
classid=\"clsid:32F66A20-7614-11D4-BD11-00104BD3F987\"></object>");
document.write("<?import namespace=\"m\" implementation=\"#mathplayer\"?>");
}
if(typeof window.addEventListener != 'undefined'){
window.addEventListener('load', convert, false);
}
if(typeof window.attachEvent != 'undefined') {
window.attachEvent('onload', convert);
}
// ]]>
</script>
在按照 http://mathmlblogs.blogspot.com/
在頭尾加上(否則不讓你儲存,不知原因為何)
// <![CDATA[
// ]]>
============================================================
將下面的 code 加到 blogger template 文件的 head 裡
<script language="javascript">
// <![CDATA[
/*
March 19, 2004 MathHTML (c) Peter Jipsen http://www.chapman.edu/~jipsen
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.
*/
function convertMath(node) {// for Gecko
if (node.nodeType==1) {
var newnode =
document.createElementNS("http://www.w3.org/1998/Math/MathML",
node.nodeName.toLowerCase());
for(var i=0; i < node.attributes.length; i++)
newnode.setAttribute(node.attributes[i].nodeName,
node.attributes[i].nodeValue);
for (var i=0; i<node.childNodes.length; i++) {
var st = node.childNodes[i].nodeValue;
if (st==null || st.slice(0,1)!=" " && st.slice(0,1)!="\n")
newnode.appendChild(convertMath(node.childNodes[i]));
}
return newnode;
}
else return node;
}
function convert() {
var mmlnode = document.getElementsByTagName("math");
var st,str,node,newnode;
for (var i=0; i<mmlnode.length; i++)
if (document.createElementNS!=null)
mmlnode[i].parentNode.replaceChild(convertMath(mmlnode[i]),mmlnode[i]);
else { // convert for IE
str = "";
node = mmlnode[i];
while (node.nodeName!="/MATH") {
st = node.nodeName.toLowerCase();
if (st=="#text") str += node.nodeValue;
else {
str += (st.slice(0,1)=="/" ? "</m:"+st.slice(1) : "<m:"+st);
if (st.slice(0,1)!="/")
for(var j=0; j < node.attributes.length; j++)
if (node.attributes[j].nodeValue!="italic" &&
node.attributes[j].nodeValue!="" &&
node.attributes[j].nodeValue!="inherit" &&
node.attributes[j].nodeValue!=undefined)
str += " "+node.attributes[j].nodeName+"="+
"\""+node.attributes[j].nodeValue+"\"";
str += ">";
}
node = node.nextSibling;
node.parentNode.removeChild(node.previousSibling);
}
str += "</m:math>";
newnode = document.createElement("span");
node.parentNode.replaceChild(newnode,node);
newnode.innerHTML = str;
}
}
if (document.createElementNS==null) {
document.write("<object id=\"mathplayer\"\
classid=\"clsid:32F66A20-7614-11D4-BD11-00104BD3F987\"></object>");
document.write("<?import namespace=\"m\" implementation=\"#mathplayer\"?>");
}
if(typeof window.addEventListener != 'undefined'){
window.addEventListener('load', convert, false);
}
if(typeof window.attachEvent != 'undefined') {
window.attachEvent('onload', convert);
}
// ]]>
</script>
訂閱:
文章 (Atom)