跟寒门崛起类似的小说:希望PDF之家
来源:百度文库 编辑:偶看新闻 时间:2024/05/09 07:31:48
sphinx生成中文pdf的完整解决方案
发布日期:2009-7-31 作者:mindsbook 出处:http://blog.csdn.net/mindsbook
概述
由于自己使用 sphinx 作为自己的日常知识管理记录工具,所以除了有生成直观的 html 格式的需要外,还有作为便携的 pdf 格式的需求. 但是 sphinx 在生成中文pdf时存在一些问题, 而目前网上还没有一个非常系统的文档来用来解决这个问题.
本文主要是基于 Sphinx Project How-To 和 latex学习笔记 这两篇文章的介绍来总结出 sphinx 生成中文pdf的完整解决方案.
系统要求
本文的操作环境为
- Ubuntu 9.04
- texlive2008
由于作者没有在其它环境下实验过,所以不保证,其它环境下也适用(但是 *nix)应该是差不多的.
具体的操作过程
安装texlive2008
推荐使用 install-tl 来进行网络安装.
具体步骤为:
- 下载 install-tl , 可以在这个网站下载 USTC oss
- 在命令行下使用 install-tl -location http://oss.ustc.edu.cn/CTAN/systems/texlive/tlnet/2008/ 来进行网络安装 (这个过程依赖于你的网速,可能会10分钟到1个小时不等,我用的教育网,20分钟搞定)
生成相关字体
这个过程主要是使 texlive 支持中文(utf8, 当然sphinx默认是使用utf8的), 可以参考 这里 来完成.
具体的步骤为:
安装fontforge: sudo apt-get install fontforge
在主目录下生成 font文件夹,即 mkdir ~/font
下载 所需要的文件 font.tar.bz2
解压到 font 文件夹下
将相应的字体拷贝到font下,我是将windows下的simsun拷过来了
cd ~/font
time fontforge -script subfonts.pe simsun.ttc song Unicode.sfd (生成相关的字体地图, 可能会需要较长的时间)
建立一个内容为下面的名为 makemap 的文件:
for i in *.tfm
do
cat >> song.map << EOF
${i%.tfm} ${i%.tfm} < ${i%.tfm}.pfb
EOF
done./makemap 执行
建立一个内容为下面的名为 c70song.fd 的文件:
% This is c70song.fd for CJK package.
% created by Edward G.J. Lee
% modify by Yue Wang
\ProvidesFile{c70song.fd}
\DeclareFontFamily{C70}{song}{\hyphenchar \font\m@ne}
\DeclareFontShape{C70}{song}{m}{n}{<-> CJK * song}{}
\DeclareFontShape{C70}{song}{bx}{n}{<-> CJKb * song}{\CJKbold}
\endinput执行下面的命令
mkdir -p ~/.texmf-var/fonts/map/dvips/CJK
mkdir -p ~/.texmf-var/fonts/tfm/CJK/song
mkdir -p ~/.texmf-var/fonts/type1/CJK/song
mkdir -p ~/.texmf-var/tex/latex/CJK/UTF8
cp ~/font/song.map ~/.texmf-var/fonts/map/dvips/CJK
cp ~/font/*.tfm ~/.texmf-var/fonts/tfm/CJK/song
cp ~/font/*.pfb ~/.texmf-var/fonts/type1/CJK/song
cp ~/font/c70song.fd ~/.texmf-var/tex/latex/CJK/UTF8刷新缓存,使其生效
sudo texhash
updmap --enable Map song.map然后可以测试下安装的 song 体是否可用.
建立一个名为test.tex内容为下面的文件:
\documentclass{article}
\usepackage{CJKutf8}
\begin{document}
\begin{CJK}{UTF8}{song}
你好!这里是Ubuntu下的TexLive+CJK环境!
\end{CJK}
\end{document}执行生成 Pdf的命令
pdflatex test.tex
evince test.pdf如果生成的中文没有乱码,则说明安装正确,可以进入下一步,否则请检查之前的操作
使用texlive和sphinx来生成中文的pdf
具体的步骤为:
生成文档的latex(使用sphinx的相关命令生成)
在生成的latex目录下,拷贝两个文件, ttfucs.sty 和 utf8ttf.def 可在 Unicode text with Pdflatex 下载
更改生成的latex文件,可更改如下(使用下面的内容替换tex文档中直至title这前的部分):
% Generated by Sphinx.
\documentclass[letterpaper,10pt]{manual}
\usepackage[utf8ttf,utf8]{inputenc}
\usepackage{ttfucs}
\usepackage{CJKutf8} %可以去掉
\usepackage[T1]{fontenc}
% \usepackage{babel}
\usepackage{times}
\usepackage[Bjarne]{fncychap}
\usepackage{sphinx}
\usepackage{hyperref} % 书签
\usepackage{fontspec} % 以下是xelatex的一些包
\usepackage{xunicode}
\usepackage{xltxtra}
\usepackage{verbatim}
\setsansfont{SimSun} % 选择系统字体, fc-list查看当前系统可用的字体, 我使用的是 SimSun 宋体
\setromanfont{SimSun} % 选择系统字体, fc-list查看
\XeTeXlinebreaklocale "zh"
\XeTeXlinebreakskip = 0pt plus 1pt执行命令 xelatex xx.tex
中间可能会有错误,先不用管, 先查看生成的pdf是否符合自己的预期
注意:在生成pdf时可能需要 执行再次 xelatex xx.tex 来生成相关的书签
结束
至此一个完整的sphinx中文pdf生成方案完成了,如果中间有什么小的问题,可以自行google解决.
未解决的问题
- 粗体(当然latex本身对于中文是没有粗体的概念的,但是可以使用替代的 黑体 来模拟粗体, 未实现)
- 代码加亮(代码中如果有中文则,中文不能显示,可以参考 latex学习笔记 中的说明
原文地址:http://blog.csdn.net/mindsbook/archive/2009/06/05/4242442.aspx