在博客里轻松使用LaTeX 数学公式[转]

 

笔者最近的博文有不少数学相关内容,发现利用一些网上服务、jQuery和CSS,可以更轻松地在博客里使用语法排版方程式。是基于的排版系统。而就是美国著明计算机教授高德纳(Donald E. Knuth),为了编写他的巨著《计算机程序设计艺术(The Art of Computer Programming)》而设计的系统,对于数学公式的排版支援十分强大。

线上LaTeX数学公式编辑器

笔者最初使用这个线上LaTeX数学公式编辑器,输入公式时,就会产生一个影像档案(如GIF、PNG、SVG),把该HTML代码复制到博客即可。例如:

view sourceprint?
1\sqrt{a^2+b^2}

选择输出为HTML,该编辑器就会产生以下的HTML代码:

view sourceprint?
1<img src="http://latex.codecogs.com/gif.latex?\sqrt{a^2+b^2}" title="\sqrt{a^2+b^2}" />

这HTML码就能显示该公式

这个方法已算不错了,但还有3个小问题:

  1. 每次修改,都要从IMG找到代码,复制过去编辑器,再复制过来,比较麻烦。
  2. 希望像一般技术书籍,为公式加入编号,方便评论和沟通时使用。
  3. 万一想改变生成影象的服务、输出格式、大小设置等,就要修改每个地方。

于是,笔者想到使用jQuery,把放置代码的特定的HTML标记,自动变换成IMG标记,并使用CSS作编号。

jQuery作转换

笔者最近才得知jQuery,是百分百新手,请各位不吝赐教。

现时希望支持两种数学公式,一种是文字中的内联(inline)公式,另一种是整行独占的公式。笔者分別采用span和div标记,并共同使用math作为class:

view sourceprint?
1<span class="math">latex code</span>
2<div class="math">latex code</div>

之后,就使用以下JavaScript代码,在网页载入后做这个转换:

view sourceprint?
1// math.js
2$(document).ready(function() {
3    $(".math").each(function(i) { $(this).html("<img src=\"http://latex.codecogs.com/png.latex?" + this.innerHTML + "\"/>"); });
4});

CSS排版

最后,利用CSS2计数器(CSS2 counter),为非内联的公式加入编号。 编号的方式各有喜好,笔者博客里使用采用(节.公式编号)格式,笔者定义"节"(section)是以<h2>为层级,公式编号则是在一个章节里从1开始。在博客园中,博客内文是在div.entry之内,以下CSS代码就能为公式加上编号和置中(可加进博客"修改设置 -> 通过CSS定制页面风格"):

view sourceprint?
1body { counter-reset:section 0; }
2div.entry h2:before { counter-increment:section; content: counter(section) ". " }
3div.entry h2 { counter-reset:equation }
4div.math:before { counter-increment:equation; content: "(" counter(section) "." counter(equation) ")"; float:right; }
5div.math img { display: block; margin-left:auto; margin-right:auto; }
6span.math img { border:none; vertical-align:middle; }

测试1

view sourceprint?
1<p>牛顿力学第三定理是</p>
2<div class="math">\vec{F}=m \frac{d \vec{v}}{dt} + \vec{v}\frac{dm}{dt}</div>
3<p>当中<span class="math">\frac{d \vec{v}}{dt}</span>是速度相对于时间的改变。 </p>
4<p>爱因斯坦的能质守衡公式是</p>
5<div class="math">E=mc^2</div>

牛顿力学第三定理是

当中是速度相对于时间的改变。

爱因斯坦的能质守衡公式是

(可看到方程计数器的递增,使编号由(4.1)变成(4.2)。)

测试2

view sourceprint?
1<p>计算两个矢量<span class="math">\mathbf{A}</span>和<span class="math">\mathbf{B}</span>之间的夹角<span class="math">\theta</span>,可用</p>
2<div class="math">\cos \theta = \frac{\mathbf{A} \cdot \mathbf{B}}{\left \| \mathbf{A} \right\| \cdot \left \| \mathbf{B} \right\|}</div>

计算两个矢量之间的夹角,可用

(可看到h2标记把计方程数器重置,使编号变成(5.1)。)

结语

对于简单的公式,笔者现在可以直接使用HTML编辑器输入代码,修改也容易。透过CSS把显示的格式和内容分离,将来改变皮肤、或影象生成服务等也变得容易。

一个缺点是,读者透过RSS等方式,只能看见源码。

读者可于这里下载代码。

关于的进阶公式输入方法,可参考中文维基:数学公式

 

来源:http://www.cnblogs.com/miloyip/archive/2010/04/26/1720877.html

转载于:https://www.cnblogs.com/guangrou/archive/2010/10/14/1851440.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/380864.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Hibernate持久化对象的状态:瞬时状态、持久化状态、托管状态

瞬时状态&#xff1a;对象由new操作符创建&#xff0c;但没有和session关联&#xff0c;也就是我们刚刚创建的对象&#xff0c;还没有保存到数据库中去持久化状态&#xff1a;对象被保存到数据库中去了&#xff0c;并且还与session有关联托管状态&#xff1a;对象已经被保存中去…

oracle查看所有用户_Oracle实用命令查看共用一个表空间的所有用户

概述有朋友问到如何查出表空间都被哪些用户使用的一些方法&#xff0c;因为有几种情况需要考虑&#xff0c;也顺便做个总结。需求&#xff1a;如何查看共用一个表空间的所有用户查看某表空间下表的所有者使用dba用户查询&#xff1a;1、如果先要知道表空间的命名&#xff0c;可…

Hibernate中把Session和线程绑定的配置

我们一开始用session都用HibernateUtil工具类获得Session对象&#xff0c;因为该工具类可以保证将线程不安全的Session绑定到当前线程内&#xff0c;但每次返回的对象都是一个新的session&#xff0c;我写了一个测试方法如下&#xff1a; Testpublic void test() {Session s1 …

lpt监控安装_lpt1(如何在lpt1端口安装打印机)

LPT就是俗称的并口&#xff0c;一般电脑只有一个并口&#xff0c;设备管理器里面显示为LPT1&#xff0c;打印机常见的端口就是LPT口和USB口&#xff0c;新的主板很多已经取消了板载LPT接口&#xff0c;还有少数专.是用网线连接电脑的接口吗&#xff1f;&#xff1f;&#xff1f…

awk 多文件操作2种实现方法

我们经常会将2个有关联文本文件进行合并处理。分别从不同文件获取需要的列&#xff0c;然后&#xff0c;整体输出到一起。awk进行多文件处理时候&#xff0c;常常会遇到2个方面问题&#xff0c;第一个是怎么样合并多个文件为一个文件。第二个问题就是怎么样将多行合并为一行显示…

mysql 3.5安装_MYSQL学习笔记-06-搭建数据库

文章内容输出来源&#xff1a;拉勾教育Java高薪训练营1. 安装说明基于Ubuntu Linux系统安装&#xff0c;MySQL版本是5.7.29。安装方式是通过官网下载相应的tar.gz压缩包进行安装。这种方式需要自己动手的部分比较多&#xff0c;如配置文件的设计、环境变量的配置、开机启动服务…

Hibernate中hql的基本查询、条件查询、排序插叙、分页查询、投影查询

hql语句和sql语句不同&#xff0c;当我们使用hql语句查询时&#xff0c;要把SQL语句的表写成 实体类的类名&#xff0c;字段写成实体类的属性 基本查询:查出数据库中所有的数据 代码如下&#xff1a; //基本查询&#xff0c;查询所有的实体Testpublic void test1() {//获取当…

【转】小周立波张冯喜引爆达人秀 小童星家居照大曝光

原文地址&#xff1a;http://www.soufun.com/news/2010-10-13/3897753.html 小小年纪&#xff0c;一身西装&#xff0c;发式清爽&#xff0c;腔调十足&#xff0c;有观众说她“天才有余&#xff0c;天真不足”&#xff0c;她自己说“进演艺圈太累了”&#xff0c;刚踏进演艺圈就…

mysql命令教学_mysql常用命令有什么

mysql常用命令有&#xff1a;1、“create database name;”&#xff1b;2、“use databasename;”&#xff1b;3、“drop database name”&#xff1b;4、“show tables;”&#xff1b;5、“select version”等等。MySQL 数据库常用命令1、MySQL常用命令create database name; …

Struts2一对多配置

在多表映射配置时&#xff0c;我们应该遵循以下不步骤&#xff1a; 确定两张表之间的关系在数据库中实现两张表之间的关系建立在实体类中描述出两个实体类之间的关系在映射配置文件中建立两个实体和两张表之间的关系 我们就按照上面的步骤做&#xff0c;我这里有一张联系人表和…

调整和改编赛车游戏——游戏屏幕

游戏屏幕 赛车游戏中有很多不同的游戏屏幕&#xff0c;这些都是由RacingGame类中的gameScreens堆栈管理的。本节介绍游戏中使用的大部分屏幕和对应的功能。大多数游戏屏幕相当简单&#xff0c;但其他的有点复杂并实现了一个单元测试&#xff0c;通过单元测试能更好地了解这个类…

mysql 锁 代码_MySQL中的锁实例

表结构&#xff1a;id&#xff1a;自增主键&#xff0c;a&#xff1a;无索引&#xff0c;b&#xff1a;普通索引CREATE TABLE test (id int(11) NOT NULL AUTO_INCREMENT,a int(4) NOT NULL DEFAULT 0,b int(4) NOT NULL DEFAULT 0,PRIMARY KEY (id),KEY b (b) USING BTREE) EN…

Linux文件属性之r、w、x

r&#xff1a; 对于文件来说&#xff0c;具有读取文件内容的权限&#xff1b;对于目录来说&#xff0c;具有浏览目录内文件的权限 w&#xff1a; 对于文件&#xff0c;具有修改文件内容的权限&#xff1b;对于目录&#xff0c;具有新建、删除、移动、修改文件目录内的权限 …

trie树--详解

MiYu原创, 转帖请注明 : 转载自 ______________白白の屋 文章作者&#xff1a;yx_th000 文章来源&#xff1a;Cherish_yimi (http://www.cnblogs.com/cherish_yimi/) 转载请注明&#xff0c;谢谢合作。关键词&#xff1a;trie trie树 数据结构前几天学习了并查集和trie树&am…

yii mysql gii_Yii Gii使用

准备数据库第1步 - 创建一个新的数据库。数据库可以通过以下两种方式进行。在终端运行 mysql -u root –p登录数据后&#xff0c;通过执行 CREATE DATABASE mystudy CHARACTER SET utf8 COLLATE utf8_general_ci; 创建一个新的数据库;第2步 - 在 config/db.php 文件中配置数据库…

通过OracleDataReader来读取BLOB类型的数据 (转载)

通过OracleDataReader来读取BLOB类型的数据 在实际的应用过程中&#xff0c;需要把大块的二进制数据存储在数据库中。读取这些大块的数据&#xff0c;可以通过强制类型转换成为byte数组&#xff0c;但是当这个二进制数据体够大时&#xff08;几十兆或者上百兆&#xff09;&…

PHP简介

PHP原始为Personal Home Page的缩写&#xff0c;已经正式更名为 “PHP: Hypertext Preprocessor”。PHP即“超文本预处理器”&#xff0c;是一种通用开源脚本语言。PHP是在服务器端执行的脚本语言&#xff0c;与C语言类似&#xff0c;是常用的网站编程语言。PHP独特的语法混合了…

java 事务_Java中事务总结详解(精华)

1.什么是JAVA事务&#xff1f;通常的观念认为&#xff0c;事务仅与数据库相关。事务必须服从ISO/IEC所制定的ACID原则。ACID是原子性(atomicity)、一致性(consistency)、隔离性 (isolation)和持久性(durability)的缩写。事务的原子性&#xff1a;表示事务执行过程中的任何失败都…

ellen 纽奥良大学演讲

英 文 中 文 Thank you, President Cowan, Mrs. President Cowen; distinguished guests, undistinguished guests - you know who you are, honored faculty and creepy Spanish teacher. And thank you to all the graduating class of 2009, I realize most of you are hu…

xampp启动Apache端口被占用,修改端口

apache启动端口被占用有可能是80端口被占用&#xff0c;也用可能是443端口被占用。修改这两个端口方法如下&#xff1a; 首先打开xampp&#xff0c;点击下图的config 如果是80端口被占用&#xff0c;选择httpd,conf,会自动打开这个文件&#xff0c;然后在文件里查找80 找到以…