前面发过说本blog基本搞定了jsMath架设。
用于显示数学公式。。
我的情况是这样的。。。
这个blog是不能额外上传整个jsMath包并保持目录结构的。但是我有在sf上的userweb服务上可以,还附带SSH可以很方便连接和控制。该服务器确实是支持cgi、php等的。可是首先搬迁blog不方便。
第二,我试图架设其他一些cgi基础的TEX支持都不成功,sf服务器的cgi-bin目录的权限似乎不允许我的cgi新建文件,即使我chmod 777.
最后发现这个jsMath是效果不错的。
也许会有许多类似我这样的情况。比如说希望集中许多装置到一个core server上,,外围blog什么的由ISP发。
jsmath哉这里
为了实现插入,我先是写了个单独先是对应公式的网页。
本来是直接放到$$号里面就可以了。但是
这里有个问题~~就是,一般来说是不会安装那个TEX字体的。
所以要么使用图像符号,要么外带字体。
我选择尽可能利用CSS外联字体。
但是js脚本检测始终会认为client没有安装对应字体而转为效果较差的图片。
于是不得不在里面放一个"visibility:hidden"的一行字用上所有的字体。
然后载入jsMath。此时字体已经载入浏览器。
之后用setTimeout延时,清除掉原来的字。
其实完全可以用静态什么的,还是随手打了个php:
<?
//header("Content-type: plain/html");
?>
<html><head>
<link rel="stylesheet" type="text/css" href="http://phoeagon.users.sourceforge.net/math/setfont.css">
</head><body>
<b style="visibility:hidden" id="loadfont">
<font style="font-family: jsMath-cmmi10; font-size:1px">abc</font><font style="font-family: jsMath-cmbx10; font-size:1px">abc</font><font style="font-family: jsMath-cmex10; font-size:1px">abc</font><font style="font-family: jsMath-cmmi10; font-size:1px">abc</font><font style="font-family: jsMath-cmr10; font-size:1px">abc</font><font style="font-family: jsMath-cmsy10; font-size:1px">abc</font><font style="font-family: jsMath-cmti10; font-size:1px">abc</font>
</b>
<?
$eqn = rawurldecode($_GET["code"]);
echo "$$".$eqn."$$";
//echo $eqn;
?>
<script language="javascript">
setTimeout( "document.getElementById(\"loadfont\").innerHTML = \"\";", 3000);
</script>
<script src="http://phoeagon.users.sourceforge.net/math/jsMath-3.6e/easy/load.js"></script>
<script language="javascript">
setTimeout("document.body.scrollTop=document.body.scrollHeight",3000);
</script>
<html>
然后,还是因为js的跨域问题。。。
只能实现为,在blog首页加javascript:
<script>
function getcode(str,height,width)
{
if(height==null) height = '80'; if(width==null) width = '220';
var str1="http://phoeagon.users.sourceforge.net/conveqn.htm?code=";
str = encodeURI(str);
str = str.replace("+", "%2B"); str = str.replace("/", "%2F");
str1 = str1 + str;
return '<iframe frameborder="0" id="testt" height="'
+height+'" width="'+width+'" scrolling="auto" src="'+
str1+'"></iframe>';
}
function equation(str,height,width)
{
document.write(getcode(str,height,width));
}
</script>
于是加入公式要<script>equation("\pi x^2",100,100);</script>之所以用js加是因为跨域传递公式要先escape那个字符串。
后来觉得把\改成\\输入实在麻烦。
于是直接把公式放到<eq></eq>标签里,用js处理这个标签。。。
就是现在这个样子了。。。
|