Dec 12

To enable MathJax, just drop in the codes after the header () in the Blogger template (Design→Edit HTML→Edit Template).

<script type="text/javascript" src="https://cdn.mathjax.org/mathjax/latest/MathJax.js">
MathJax.Hub.Config({
 extensions: ["tex2jax.js","TeX/AMSmath.js","TeX/AMSsymbols.js"],
 jax: ["input/TeX", "output/HTML-CSS"],
 tex2jax: {
     inlineMath: [ ['$','$'], ["\(","\)"] ],
     displayMath: [ ['$$','$$'], ["\[","\]"] ],
 },
 "HTML-CSS": { availableFonts: ["TeX"] }
});
</script>
Dec 12

转自:http://bbs.ctex.org/forum.php?mod=viewthread&tid=18746

Ctex中只带了六种汉字字体,但我们可以自己通过xGBKfonts来添加。在MiKTeX2.3和2.4的早期版本中,我们可以直接用xGBKfonts添加字体,然后刷新文件名数据库就可以了。但现在使用这个方法pdftex却不认type1字体,而是生成pk字体。原因是现在MiKTeX2.4中,如果要使用type1字体,则这个字体必须在psfonts.map文件中,而psfonts.map是根据C:localtexmfweb2cupdmap.cfg配置文件生成的。我们可以做个试验来验证,在你安装完的ctex2.4中,测试是否可以中文仿宋type1字体,然后我们打开updmap.cfg文件,将下面的部分用#注释掉。

#% To use the CJK Type1 fonts
Map t1-gbkyou.map
Map t1-gbkli.map
Map t1-gbkhei.map
Map t1-gbkkai.map
Map t1-gbkfs.map
Map t1-gbksong.map

然后执行initexmf –mkmaps,再执行initexmf -u更新数据库,重新测试你刚才的文件,你就会发现,pdftex不再使用type1字体了。

为了让pdftex可以使用中文type1字体。我们需要作如下工作:
在updmap.cfg中添加一行Map cjk.map(cjk.map是xGBKfonts默认生成的type1字体的map),然后运行initexmf –mkmaps重新生成psfonts.map,运行initexmf -u更新数据库。这样你就可以让pdftex使用中文字体了。

如果你要在context中使用新新添加的字体。则还要运行texexec –make重新生成.efmt,.mem文件。然后运行initexmf -u更新数据库。

例子:
假设我们有一个方正魏碑GBK字体位于c:winntfonts目录下。
1.xgbkfonts -usesys -o * c:winntfontsfzwbk.ttf Fzwbk
会出现下面提示:

PS_Name = FZWBK--GBK1-0
Do you think it is accpetable ([Y]es/[N]o)?

一定要选N,不然生成的字体context中会不认识接着会出现:

Please input a new PS_Name:

输入Fzwbk,注意不要带-线。接着会生成type1字体及相关配置文件了。

2.如果你使用context,运行texexec –make重新生成它需要的格式文件。

3.initexmf -u更新数据库。

4.initexmf –mkmaps重新生成psfonts.map文件。

5.initexmf -u更新数据库
现在你就可以使用type1字体了。
在latex中:

documentclass[12pt]{article}
usepackage{CJK}
begin{CJK*}{GBK}{Fzwbk}
begin{document}
中文字体
end{CJK*}
end{document}

执行pdflatex wenjianming.tex。
在context中:

usemodule[chinese]
starttext
SimFzwbk
中文字体
stoptext

执行texexec –pdf wenjianming.tex
这些方法在下面两个贴子里面mytex老师谈到了http://bbs.ctex.org/viewthread.php?tid=15500,http://bbs.ctex.org/viewthread.php?tid=5366,大家可以看看。

Dec 12

转自:http://bbs.chinatex.org/forum.php?mod=viewthread&tid=61

对于使用LaTeX+CJK的入门者来说,如何在生成的pdf中见到漂亮的type1字体,经常是令人困扰的事情。我也曾经在这里问过如何才能让自己的pdf不再使用点阵汉字这样的问题。所以整理了一份。faint. 忙了半夜,不会说话了。

用到的gbkfonts在这里就有啦。另外,在 cn.groups.yahoo.com/group/latexapplication 中也有一份。

gbkfonts是一个利用TrueType字体来生成Type1字体,以供TeX/LaTeX使用的应用程序。使用时先在gbkfonts.ini中定义生成字体的名称等参数,比如要用Windows下的宋体ttf字体来生成宋体的Type1字体,可在gbkfonts.ini中加入下面一行:(实际上在gbkfonts.ini中已经预定义了多种常用的中文字体如宋体,黑体,楷体,仿宋等。)

song songsl GB-Song 8000

然后用如下命令:

gbkfonts -c -gbk c:windowsfontssimsun.ttf song

程序运行完后,会在当前目录下生成dvips,fonts,dvipdfm和tex四个目录。

(简明说明见下面增补意见2)
其中,fonts目录下是生成的pfb,afm,tfm字体,可将他们移到你的Local TeXMF目录下(MikTeX一般是c:localtexmf,fpTeX则为c:textexmf.local)。同样,也可把dvips目录(包扩字体映射文件和让pdftex/pdflatex使用ttf字体的一些enc文件)和dvipdfm(让dvipdfm使用中文Type1字体的字体映射文件)和tex(生成的相应的.fd文件以供CJK使用)目录也放到Local TeXMF下面。并将当前目录下cjk.map中的内容追加到你原来的cjk.map中(如没有,就可直接将cjk.map拷贝到Local TeXMF下dvipschinese下面。

欢迎提出宝贵意见。
Email: [email protected]
[email protected]

增补意见:
1.需要修改的部分文件
.代表MikTeX的安装目录

(1).miktexconfigmiktex.ini
TTFPath=.;%Rfontstruetype//
改为:
TTFPath=.;%Rfontstruetype//;C:WindowsFonts//
(2).dvipsconfigconfig.ps
中加入:(如果在这个目录中没有CJK.map,将生成的拷贝一份进来)
p +cjk.map
p +gbksong.map
p +gbkhei.map
p +gbkkai.map
(3).pdftexconfigpdftex.cfg
中加入:(如果在这个目录中没有CJK.map,将生成的拷贝一份进来)
map +cjk.map
(4).ttf2tfmbasettfonts.map
中加入:
gbkhei@UGBK@ simhei.ttf Pid = 3 Eid = 1
gbkkai@UGBK@ simkai.ttf Pid = 3 Eid = 1
gbksong@UGBK@ simsun.ttc Pid = 3 Eid = 1
gbkheisl@UGBK@ simhei.ttf Slant=0.167 Pid = 3 Eid = 1
gbksongsl@UGBK@ simsun.ttc Slant=0.167 Pid = 3 Eid = 1
gbkkaisl@UGBK@ simkai.ttf Slant=0.167 Pid = 3 Eid = 1

如果加入的字体与上面加入的不同,参照修改(2)、(4)即可。

2.gbkfonts生成文件的处理

程序运行完后,会在当前目录下生成dvips,fonts,dvipdfm和tex 四个目录。其中, fonts 目录下是生成的pfb,afm,tfm字体; dvips 目录包括字体映射文件和让pdftex/pdflatex使用ttf字体的enc文件; dvipdfm 目录包括让dvipdfm使用中文Type1字体的字体映射文件 ; tex 目录包括了中文字体的定义文件 ; 最简单的处理就是把以上的目录,原封不动地拷贝到安装时选定的Local TeXMF目录下。gbkfonts还生成了一个CJK.map文件,将这个文件分别拷贝到Local TeXMF下dvipschinese和上面提到的两个目录下面。

3.CJK.map文件
如果你的系统中原来没有这个文件,自然无话可说。但是如果有,而且你不确定的话, 就将生成的CJK.map中的内容追加到原来的文件中,但要保持以上有这个文件的各个目录中文件的一致性。

以上安装方法虽然有些冗余,但是最大限度地避免了在重新安装系统后的劳作。当然最重要的就是要保护好你的Local TeXMF目录,另外将修改的文件按照目录结构作一个备份,
重新安装系统后,将备份直接覆盖安装文件即可。前提是,安装的MikTeX版本没有发生太大的变化。

反正我看着以上的过程不麻烦,第一次当然麻烦,^_^ 如果有意见或疑问, EMail: [email protected].

Oct 29

1. 下载hooklee的xGBKFonts
http://www.hooklee.com/tex/xGBKFonts-bin.zip或http://r01ustc.googlepages.com/xGBKFonts-bin.zip

2. 在命令行运行
生成字体

>xGBKFonts -force UTF8 simsun.ttc song

3. 拷贝字体
当前会生成一个ucsong的目录,下面的localtexmf 拷贝到 D:CTeX下

4. 输入命令

> initexmf -u
> initexmf --mkmaps

然后,你就可以在你的LaTeX文件中,使用UTF8编码的song体了。

begin{CJK*}{UTF8}{song}
Oct 19

转自:http://wsong83.wordpress.com/2011/07/08/一些latex的小问题/

1. hyperref
曾经认为只有使用pdflatex才能使用hyperref包来生成超级连接和pdf的目录搜索页。现在发现这是个误解。
hyperref包的默认pdf生成工具是pdflatex,但它也支持latex+dvipdf/dvipdfm的方式。只不过需要配置一下。
在我的博士论文当中,hyperref包的使用如下:

usepackage[
dvipdfm,
pdftitle={thesistitle},
pdfauthor={thesisauthor},
colorlinks=true,
linkcolor=black,
breaklinks=true,
urlcolor=blue,
citecolor=black
]{hyperref}

其中第一行dvipdfm则告诉hyperref最终的pdf生成工具是dvipdfm。hyperref会在生成的dvi文件中插入dvipdfm能够正确识别的注释符。
pdftitle和pdfauthor将会改变生成的pdf文件的标签页中的文件标题和作者。
colorlinks=true表明使用颜色来表示所有的链接(默认为不使用)
linkcolor=black设定内部链接使用黑色文本(默认为难看的红色)
breakline=true允许将长的url拆成多行(默认为禁止,长url将在一行显示,无论多长)
urlcolor=blue使用蓝色显示url(默认为粉色,??不符合一般网页定义)
citecolor=black引用用黑色显示(默认为绿色)
其他参数参看http://mirror.ctan.org/macros/latex/contrib/hyperref/doc/manual.pdf

2. booktabs
Latex传统的表格已经过时了。为了让表格更加美观,现在有了一个新的表格包— booktabs
这个包将覆盖原有的table关键字,基本上原有的tabular命令都可以使用,不过booktabs提供了一些新的命令,比如toprule,middlerule和bottomrule。两种表格的风格比较参见http://en.wikibooks.org/wiki/LaTeX/Tables中的Proffessional tables小节

3. 显示源代码
有时候我们希望在文本中加入源代码。源代码和普通文本不同,代码往往用等宽字符显示才美观,而文本字体往往会使用非等宽字体来隐藏难看的字符间的不等空隙。
Latex本身就自带了一种等宽显示模式(verbatim),所有在begin{verbatim}和end{verbatim}之间显示的问题都将使用等宽字符显示。不过,所用的字体看起来就像原来的DOS的控制行显示字体,好像叫terminal字体。更令人抓狂的是,所有的加粗,斜体,颜色等等命令在verbatim环境中都会失效。也就是说,尽管代码能用等宽字体显示了,不过你也别想加粗关键字和用颜色显示注释。
其实,listings包提供了代码显示的支持。我所使用的配置如下:

usepackage{listings}
lstset{
  language=Verilog,
  basicstyle=ttfamilyscriptsize
}

其中Verilog就表明了将显示的代码是Verilog HDL,这样listing能自动识别关键字并使用不同的格式显示。不过我的ttfamily好像还是覆盖了关键字显示。仍然只能有一种字体格式。不过注释现在能自动斜体显示了。稍微有一点点遗憾。具体配置请参看http://mirror.ctan.org/macros/latex/contrib/listings/listings.pdf

4. 单位符号
为了统一各种单位的显示,比如byte/s等等,我使用了SIunits包。该包定义了大部分的单位并用统一的格式显示单位和其数值。使用该包后,24 mm^2将写作unit{24}{millisquarenmetre},然后latex就能正确显示。不过该包重定义了square,和数学包中的square冲突。配置SIunits使用squaren将迫使SIunits定义平方符号为squaren
我的使用配置如下:

usepackage[binary,squaren]{SIunits}

其中binary告诉SIunit支持和byte,bit相关的单位。如果有没有定义的单位,比如MByte/Node/s中的node就没有定义。可以直接在unit代码中写文字(megabyteperNodepersecond)。

5. 对某些文字使用不同字体。
我们经常希望某些文字用不同的字体显示,比如说标题和页眉。Latex往往使用全局配置控制字体,换字体往往意味着换环境,比如进入数学模式。换字体在latex还真不是很容易。
我在我的论文中定义了一个新命令:

newcommand{arial}[1]{{fontencoding{T1}usefont{T1}{phv}{m}{n}{#1}}}

这样we arial{are} human.中are就会使用arial显示。linux下面没有arial,而叫做Helvetica,一个瑞士人发明的。其实Arial反而是后来的,只不过我们windows用多了,不知道其实微软copy了Helvetica而已。我的命令中phv就是Helvetica。T1说明使用T1字体。字体是一个很复杂的问题,我自己还没太搞清楚。。。。在使用新字体的时候,准备好latex会爆出一大堆缺少文件,缺少map或字体不识别的问题。

6. 图片的多行标题显示
从没有想到原来多行显示图片标题居然会是个问题。在默认环境下,使用caption包,短于一行的标题会居中显示,长于一行的标题将会沾满整行然后在行尾断行。这都没有问题。不过,要是想在某个地方人为断行,这个就难了。比如说下面:

Assuming
this
is a Figure
Fig. The figure
caption

人为在figure后加上\断行后,单行标题变成多行标题,所有行都会顶在行左,就出现了这种难看的样子。到现在我也没有发现有什么办法告诉Latex去居中显示整个标题块,好象是因为latex并不知道标题块有多宽。
这种的办法是配置caption包。我最终的配置:

usepackage{caption}
captionsetup{margin=20pt,format=hang,justification=justified}

其中margin告诉latex在标题块的两边都留20pt的空白,如果标题超长,至少多行不会直接顶在最左边。现在是有了20pt的整体缩进。后面的hang是告诉caption允许多行标题,如果出现多行,按照正常的多段文本处理(默认标题只有一段文字,禁止多段文字)。然后justified确定使用默认的问题对齐方式(两端对齐加短行靠左)。不过,这些特性仅仅在新的caption包中才支持。Fedora自带的texlive-2007不支持,需要单独安装最新的caption。后面再说这个问题。

7. 超长行的自动换行
以前没有注意到,原来latex的自动拆单词换行是依靠字典的。如果遇到latex不认识的单词,他就不会换行了。我就遇到如下的问题:

This is a dummy sentence.
I am going to show a longsentence
that latex does not recogn-
ise correctly and does not
how to hyphen it. It is left th-
ere as a super long line.

其中longsentence是一个latex不认识的单词,他就不会拆了(很愚蠢!)解决这种问题,需要两步:
1. 使用usepackage[british]{babel}告诉latex用正确的字典去查单词,比如我就使用英式英语而非美式(默认)。然后对于长的自造单词,使用hyphenation告诉latex如何拆:

hyphenation{long-sen-ten-ce net-works semi-conduc-tor meta-sta-bi-lity MU-TEX pi-pe-line}

8. 不想显示章节号的章节
我们往往会希望有些章节没有章节号,比如备注或者致谢。在我的论文中,我有备注。我希望备注和正文直接有一页纸显示备注,但是不希望该页成为论文的第四个部分(论文正文有三个部分了)。简单的将章节号去除,latex将认为该章节不存在,所以目录中就不会显示了,但这又是我不希望看到的。我希望有一个没有编号的第4部分,同时在目录中显示。以下的代码就能做到这点:

appendix
part*{Appendix}label{part_appendix}
addcontentsline{toc}{part}{Appendix}

appendix显示备注开始,part*{Appendix}定义了一个没有编号的部分,会以单独的一页纸显示Appendix的开始。不过该部分并不被latex认为是一个部分。所以后面的addcontentsline重新一部分的方式将Appendix加入目录。(不过,hyperref在pdf中的标签导航还是显示整个Appedix属于第3部分而不是单独的一个部分,不知道怎么搞。)

9. 孤行控制
在Word中我们只要选中孤行控制,Word就不会将一段的第一行或者最后一行放在不同的页面。Latex中好像没有相应的命令。Latex只是尽量防止孤行,当避免孤行会导致大量的页面空白的时候,Latex会放弃避免孤行。我们可以改变孤行的惩罚权重来告诉Latex我们更在乎孤行。有两个参数控制这些:

widowpenalty=4000
clubpenalty=4000

其中widowpentalty是出现尾行分页所产生的惩罚值,clubpenalty是出现首行分页的惩罚值。默认是150。我把他们都设成4000,就是告诉latex要更努力的减少孤行。如果设定惩罚为10000,就会完全的避免孤行,但是排版会很难看,因为latex会放弃一切的去排除孤行。

10. Tex-live 2011
Fedora的默认latex是tex-live 2007包,也就是说所有的包都是2007年之前的,已经很落后了。从Fedora 13开始,Fedora提供了tex-live 2011和tex-live 2010的开发包支持。参看http://fedoraproject.org/wiki/Features/TeXLive,那里提供了更新到tex-live新版本的rpm yum升级包。安装之后就可以使用yum来自动更新所有的tex-live包。我个人一直在fedora 14上使用tex-live 2011,除了有时候yum 升级会出现版本冲突问题(他们一直在更新,所以难免会有版本冲突,往往过几天就没了,继续升级就好),没有发现有什么问题,一切OK。非常推荐升级TexLive。