没有合适的资源?快使用搜索试试~ 我知道了~
首页用LATEX 排版编程技术书籍的一些个人经验
用LATEX 排版编程技术书籍的一些个人经验
需积分: 42 22 下载量 128 浏览量
更新于2023-03-16
评论
收藏 797KB PDF 举报
用LATEX 排版编程技术书籍的一些个人经验 陈硕 最后更新2013-4-14 版权声明 本作品采用“Creative Commons 署名-非商业性使用-相同方式共享3.0 Unported 许可协议 (cc by-nc-sa)”进行许可。http://creativecommons.org/licenses/by-nc-sa/3.0/ 多年之前我写过一篇书评《〈Word 排版艺术〉读后感——兼谈与LATEX 的比较》¬,其 中写道“如果将来有时间,我把自己用LATEX 排书的经验总结一下,让读者在阅读《Word 排版艺术》的基础上,更容易地把知识应用到LATEX 排版中去。” 我自己排版了《Linux 多 线程服务端编程:使用muduo C++ 网络库》,现在终于可以把账还上了。本文假定读者已 经读过LATEX 的入门文档 ® 和书籍¯,具备基本的使用技能,这不是一篇入门教程。 排版是一门大学问,我只是一名技术图书的作者,有一些初步的LATEX 使用经验。我 不是专家,出版印刷的行话也不怎么会说。本文的目的是让有志于用LATEX 来排版自己书 的人少走一些弯路。换句话说,这篇文章是讲“我是怎么做的”,不是讲“哪种做法最好”。 另外,遇到LATEX 使用方面的问题请先阅读FAQ °,再上CTeX 论坛± 或水木社区TeX 版² 发帖询问,不要给我写信。(我最多能回答我那本书里某个版面是如何排出来的,无法解 答你的具体问题。)
资源详情
资源评论
资源推荐
用 L
A
T
E
X 排版编程技术书籍的一些个人经验
陈硕 (giantchen@gmail.com)
最后更新 2013-4-14
版权声明
本作品采用“Creative Commons 署名 -非商业性使用 -相同方式共享 3.0 Unported 许可协议
(cc by-nc-sa)”进行许可。http://creativecommons.org/licenses/by-nc-sa/3.0/
多年之前我写过一篇书评《〈Word 排版艺术〉读后感——兼谈与 L
A
T
E
X 的比较》
¬
,其
中写道“如果将来有时间,我把自己用 L
A
T
E
X 排书的经验总结一下,让读者在阅读《Word
排版艺术》的基础上,更容易地把知识应用到 L
A
T
E
X 排版中去。” 我自己排版了 《Linux 多
线程服务端编程:使用 muduo C++ 网络库》,现在终于可以把账还上了。本文假定读者已
经读过 L
A
T
E
X 的入门文档
®
和书籍
¯
,具备基本的使用技能,这不是一篇入门教程。
排版是一门大学问,我只是一名技术图书的作者,有一些初步的 L
A
T
E
X 使用经验。我
不是专家,出版印刷的行话也不怎么会说。本文的目的是让有志于用 L
A
T
E
X 来排版自己书
的人少走一些弯路。换句话说,这篇文章是讲“我是怎么做的”,不是讲“哪种做法最好”。
另外,遇到 L
A
T
E
X 使用方面的问题请先阅读 FAQ
°
,再上 CTeX 论坛
±
或水木社区 TeX 版
²
发帖询问,不要给我写信。(我最多能回答我那本书里某个版面是如何排出来的,无法解
答你的具体问题。)
最新版下载地址:http://code.google.com/p/chenshuo/downloads/detail?name=typeset.pdf
L
A
T
E
X 源文件:http://github.com/chenshuo/typeset
更新记录
2013-02-04 初版
¬
http://blog.csdn.net/solstice/article/details/187233
http://mirrors.ctan.org/info/lshort/chinese/lshort-zh-cn.pdf
®
http://www.tex.ac.uk/tex-archive/info/latex-notes-zh-cn/latex-notes-zh-cn.pdf
¯
《L
A
T
E
X 入门与提高(第 2 版)》,陈志杰等著,高等教育出版社。
°
http://www.newsmth.net/bbscon.php?bid=460&id=282515
±
http://bbs.ctex.org/forum.php
²
http://www.newsmth.net/bbsdoc.php?board=TeX
i
目录
第 1 章 环境 1
1.1 为什么要自己排版? . . . . . . 1
1.2 为什么要用 L
A
T
E
X 排版? . . . . 1
1.2.1 动手之前 . . . . . . . . 2
1.3 软件工具 . . . . . . . . . . . . . 3
1.3.1 操作系统 . . . . . . . . 3
1.3.2 T
E
X 发行版 . . . . . . . 3
1.3.3 PDF 阅读器 . . . . . . . 4
1.3.4 离线备份 . . . . . . . . 4
1.4 版本管理 . . . . . . . . . . . . . 4
1.4.1 理想的工作流程 . . . . 4
1.4.2 现实的工作流程 . . . . 4
1.5 .tex 文件组织 . . . . . . . . . 5
第 2 章 版式 6
2.1 纸张大小 . . . . . . . . . . . . . 6
2.2 版心大小 . . . . . . . . . . . . . 6
2.3 页眉与页脚 . . . . . . . . . . . 8
2.4 中文字体 . . . . . . . . . . . . . 9
2.4.1 不要使用中文斜体 . . . 9
2.5 英文字体 . . . . . . . . . . . . . 10
2.5.1 罗马字体 . . . . . . . . 10
2.5.2 无衬线字体 . . . . . . . 10
2.5.3 等宽字体 . . . . . . . . 10
2.5.4 特殊字体 . . . . . . . . 11
2.6 行距与段距 . . . . . . . . . . . 11
2.7 整段代码 . . . . . . . . . . . . . 11
第 3 章 样式 12
3.1 转义字符 . . . . . . . . . . . . . 12
3.2 斜体 . . . . . . . . . . . . . . . 12
3.3 列表 . . . . . . . . . . . . . . . 12
3.4 章节标题 . . . . . . . . . . . . . 13
3.4.1 编号 . . . . . . . . . . . 13
3.5 图表编号 . . . . . . . . . . . . . 13
3.6 脚注 . . . . . . . . . . . . . . . 14
3.6.1 编号 . . . . . . . . . . . 14
3.6.2 置底 . . . . . . . . . . . 14
3.7 参考文献 . . . . . . . . . . . . . 15
第 4 章 工具 16
4.1 统计中文字数 . . . . . . . . . . 16
4.2 PDF 内容对比(diff ) . . . . . 17
4.3 PDF 截取 . . . . . . . . . . . . . 17
4.4 PDF 页码编号 . . . . . . . . . . 17
4.5 PDF 剪裁(crop) . . . . . . . 17
4.6 PDF 拼接(two-up) . . . . . . 18
4.7 PDF 小册子(booklet) . . . . 19
4.8 PDF 字体嵌入 . . . . . . . . . . 20
第 5 章 插图 21
5.1 绘图软件 . . . . . . . . . . . . . 21
5.1.1 Graphviz . . . . . . . . . 21
5.1.2 gpic . . . . . . . . . . . 21
5.1.3 METAPOST . . . . . . . 21
5.1.4 Visio . . . . . . . . . . . 22
5.1.5 Word . . . . . . . . . . . 22
5.1.6 Excel . . . . . . . . . . . 22
5.1.7 Gnuplot . . . . . . . . . 22
5.2 待续…… . . . . . . . . . . . . . 22
ii
第 1 章
环境
1.1 为什么要自己排版?
如果是纯文学著作,完全可以交给出版社去排版。但是对于编程技术书籍,文字之间
还穿插代码和图表,那么出版社的专业排版人员很难排出符合程序员审美观的版面,甚至
有可能造成技术错误。
• 代码的排版,注意分页和折行。特别是 Python 这种缩进敏感的语言,一般要避免在
一个函数内分页,这会造成阅读困难。可以在函数定义之间分页。
• 写作与排版一体化,作者可以适当改写内容,让版面更美观。例如,假如一个函数
最后一行那个花括号被挤到了下一页第一行,这就很难看。这时可以考虑临时改变
代码的缩进(从 BSD 风格改为 K&R 风格),从而节省一两行空间,让花括号落在本
页。另外也可以稍微改变说法,避免段尾孤字成行。
• 文责自负,防止误改。例如我为某本书写的序言,其中提到旧的 boost RegEx class 和
新的 regex class 在线程安全性方面的不同。这本书第二版再用这篇序言的时候被编
辑“统一大小写”改为 RegEx,整段话也就变得莫名其妙了。类似的还有 2
32
− 1 这
种式子很容易被误改为 232 − 1,让人看了一头雾水。
1.2 为什么要用 L
A
T
E
X 排版?
• L
A
T
E
X 不会自作聪明地自动更正,例如句首字母大写(关键字 double 变为 Double),
单词头两个字母大写(IUnknown 变为 Iunknown),括号匹配(“[begin, end)”变为
“[begin, end]”)等等。Word 可以关闭自动更正,但是一旦整个流程(作者、编辑、
校对、出片)中有一个人的设置不同,稿子就有可能被误改。
• L
A
T
E
X 的源文件是文本格式,可以方便地做版本管理(diff/merge),并且很容易利
用和编写各种小工具来处理它。相反 Word 的 .doc/.docx 文件处理起来就麻烦多了,
如果不是不可能的话。想想一句 grep | sort | uniq -c | sort -n 要写多少代码。
1
2 第 1 章 环境
• L
A
T
E
X 可以处理英文断字(Hyphenation),避免一行文字太稀疏。例如 Concurrent-
HashMap 这种在技术书籍中经常出现的长类名,如果不断字就会造成难看的版面。
这也是 Word 排版容易出现的问题。另外 L
A
T
E
X 的断行和断页采用动态规划算法,排
出来的版面比 Word 的贪心算法更匀称,见后文的例子。
• L
A
T
E
X 可以方便地做出交叉引用,引用其他章节图表的页码或编号。L
A
T
E
X 原稿可以分
散到多个 .tex 文件中,便于编辑。如果 Word 也这么做(每章一个文件),那么交叉
引用就麻烦得多。但是如果把整本书做成一个 Word 文件,那编辑起来就困难多了,
牵一发而动全身。而且有一种如履薄冰的感觉,生怕哪天文件突然就损坏了。
以下展示动态规划与贪心算法的区别。这里版心宽度是 20 个汉字。第一行排满了 20
字,刚刚好。第二行排了 16 字,后接一个长单词,其宽度超过 5 个汉字,因此本行排不
下了。Word 和 L
A
T
E
X 都会把长单词移到第三行,但是区别在于 Word 不会返回去调整第一
行已经排好的那 20 个字(贪心算法只管当前行,排满为止,排不下就另起一行),因此第
二行比第一行显得稀疏,版面不匀称。而 L
A
T
E
X 则会把整个段落通盘考虑,它会从第一行
挪两个字到第二行,让前两行的字距相当,版面更匀称。
一二三四五六七八九十一二三四五六七八九十Input
一二三四五六七八九十一二三四五六 shared_ptr。
一二三四五六七八九十一二三四五六七八九十Word
一 二 三 四 五 六 七 八 九 十 一 二 三 四 五 六
shared_ptr。
一二三四五六七八九十一二三 四 五 六 七 八
T
E
X
九十一二三四五六七八九十一 二 三 四 五 六
shared_ptr。
1.2.1 动手之前
作者有能力并且有意愿完整书籍的排版,向出版社提供印刷质量的 PDF 文稿。出版社
愿意改变通常的工作流程,采用作者提供的 PDF 文件来校对并印刷。要事先沟通好。L
A
T
E
X
不是一个傻瓜化的工具,它需要投入相当的精力去学习,才能排出满意的效果。
用 L
A
T
E
X 排版编程技术书籍的一些个人经验 by 陈硕 http://www.chenshuo.com/
1.3 软件工具 3
1.3 软件工具
1.3.1 操作系统
操作系统应满足三个条件:有好用的中文输入法,有好用的 PDF 阅读器,能方便地
用命令行处理文本文件(grep、sort、awk 等)。目前看来符合这个条件的操作系统是
Mac OS X,但是我不可能为了写一本书去买一台新的笔记本电脑。因此我用的是一种混合
办法,笔记本上安装 Windows,再在虚拟机中安装 Debian Linux,然后在 Debian 中安装
TeX Live。最后用 Samba 共享文件夹,这样就可以在 Windows 下方便地编辑 Linux 上的文
件。而在 Linux 上用 Git 管理 .tex 源文件和图片,并且编译出 PDF。
1.3.2 T
E
X 发行版
Linux 用 TeX Live,Windows 用 CTeX 套装,Mac OS X 用 Mac TeX。中文处理采用
xelatex + xeCJK + ctex 方案
¬
,不要采用过时的 CJK 或 CCT 方案。
注意,T
E
X 本身是非常稳定的,但是中文处理则在不断改进。例如 TeX Live 2010 和
TeX Live 2012 在处理中英文混排方面就有区别,造成“动版”,严重时会影响既有分页。
¬
http://blog.jjgod.org/2009/11/21/chinese-in-tex-live-2009/
用 L
A
T
E
X 排版编程技术书籍的一些个人经验 by 陈硕 http://www.chenshuo.com/
剩余24页未读,继续阅读
qytang326
- 粉丝: 0
- 资源: 20
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- ExcelVBA中的Range和Cells用法说明.pdf
- 基于单片机的电梯控制模型设计.doc
- 主成分分析和因子分析.pptx
- 共享笔记服务系统论文.doc
- 基于数据治理体系的数据中台实践分享.pptx
- 变压器的铭牌和额定值.pptx
- 计算机网络课程设计报告--用winsock设计Ping应用程序.doc
- 高电压技术课件:第03章 液体和固体介质的电气特性.pdf
- Oracle商务智能精华介绍.pptx
- 基于单片机的输液滴速控制系统设计文档.doc
- dw考试题 5套.pdf
- 学生档案管理系统详细设计说明书.doc
- 操作系统PPT课件.pptx
- 智慧路边停车管理系统方案.pptx
- 【企业内控系列】企业内部控制之人力资源管理控制(17页).doc
- 温度传感器分类与特点.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0