Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

remove gfw code format

  • Loading branch information...
commit 8d87ac72c3c223204ecd022158c7bbeaaa0b48ca 1 parent 26dec92
@larrycai authored
View
2  .mkbok.yml
@@ -1,6 +1,6 @@
---
name: kaiyuanbook
- build: epub,pdf,html
+ build: pdf
lang: zh
license: ccbyncnd30
config: latex/config.yml
View
18 zh/chapters/01-chapter2.markdown
@@ -49,20 +49,16 @@ Ruby的[rdiscount](https://github.com/rtomayko/rdiscount)能帮你从markdown转
### PDF格式 ###
生成PDF是一个比较复杂的东西,[pandoc](http://johnmacfarlane.net/pandoc/)用Ubuntu库里1.8.x版本,[TexLive](http://www.tug.org/texlive/)用缺省Ubuntu源里的2009版也够了。当然也可下载最新的[TexLive](http://www.tug.org/texlive/)包安装,并配置到搜索路径中。
-~~~~~~~~~~ {.bash}
-$ sudo apt-get install ruby1.9.1
-$ sudo apt-get install pandoc
-$ sudo apt-get install texlive-xetex
-$ sudo apt-get install texlive-latex-recommended # 主要的Latex包
-$ sudo apt-get install texlive-latex-extra # titlesec包,先不用知道
-~~~~~~~~~~~~~~~~~~~~
+ $ sudo apt-get install ruby1.9.1
+ $ sudo apt-get install pandoc
+ $ sudo apt-get install texlive-xetex
+ $ sudo apt-get install texlive-latex-recommended # 主要的Latex包
+ $ sudo apt-get install texlive-latex-extra # titlesec包,先不用知道
因为是中文PDF,需要把字体嵌入在文件中,因此需要安装字体文件,幸运的是在源里有不错的字体。
-~~~~~~~~~~ {.bash}
-$ sudo apt-get install ttf-arphic-gbsn00lp ttf-arphic-ukai # 文鼎字体
-$ sudo apt-get install ttf-wqy-microhei ttf-wqy-zenhei # 文泉驿字体
-~~~~~~~~~~
+ $ sudo apt-get install ttf-arphic-gbsn00lp ttf-arphic-ukai # 文鼎字体
+ $ sudo apt-get install ttf-wqy-microhei ttf-wqy-zenhei # 文泉驿字体
现在你就可以用`mkbok`命令生成Pdf文件了,`mkbok`会自动调用Pandoc和Latex工具生成Pdf、Html、Epub格式。
View
19 zh/chapters/01-chapter3.markdown
@@ -39,19 +39,15 @@ Pandoc软件会把Markdown文件转换成Latex格式,然后套上上面的模
## 如何使用Markdown写书 ##
现在可以看看结构了。
-~~~~~~~~~ {.bash}
-$ find zh
-zh/preface # 序和前言
-zh/chapters # 正文
-zh/appendix # 附录
-~~~~~~~~~~~~
+ $ find zh
+ zh/preface # 序和前言
+ zh/chapters # 正文
+ zh/appendix # 附录
### 标准章节 ###
每一章的第一行基本就是章节名字,应该只出现一次
-~~~~~~~
-# 用Markdown来写 #
-~~~~~~~
+ # 用Markdown来写 #
其他的小章节用`##``###`表示,最好不要有更多的层次。
@@ -98,8 +94,3 @@ zh/appendix # 附录
* font:文鼎的简报宋、细上海宋,文泉驿的点阵宋体,Adobe的宋体
* bold: 文鼎的简中楷、中楷,文泉驿的微米黑、正黑,Adobe的黑体
* mono: 文泉驿的微米黑、正黑,Adobe的黑体
-
-
-
-
-
View
120 zh/chapters/01-chapter4.markdown
@@ -39,17 +39,13 @@ Latex编辑部:<http://zzg34b.w3.c361.com/index.htm>
排版控制命令是以反斜线"\"开头的字串。有一些排版控制命令带有一些参数,由参 数来修改其默认行为。
排版控制命令的参数有些属于可省略的,有些属于不可省略的。在排版控制命令中,可省略的参数(若不提供这些参数, LaTeX 采用默认参数)置于方括号中,不 可省略的参数(必须要提供的参数)置于花括号中。具体格式可表示如下:
-~~~~~ {.latex}
-\命令名[可省略的参数]{不可省略的参数}
-~~~~~~
+ \命令名[可省略的参数]{不可省略的参数}
XeTeX/Latex 的纯西文的文稿基本格式如下:
-~~~~~~~ {.latex}
-\documentclass[11pt,a4paper]{article}
-\begin{document} Hello World!
-\end{document}
-~~~~~~~~~~~~~
+ \documentclass[11pt,a4paper]{article}
+ \begin{document} Hello World!
+ \end{document}
上面的文稿中,排版控制命令 `\documentclass` 的可忽略参数告诉 LATEX 系统,用户使用的是 A4 纸( a4paper ),正文字体为 11pt ,接近中文五号字;不可忽略参数告诉 LaTeX ,用户要撰写一篇论文,这样 LeTEX 系统便会为用户准备好论文排版的默认环境。
@@ -57,38 +53,32 @@ XeTeX/Latex 的纯西文的文稿基本格式如下:
XETEX/LaTEX 的中文文稿与西文文稿没什么区别,仅仅是文稿内容中使用的是中文, 如下:
-~~~~~~~~~
-\begin{document}
-世界,你好!
-\end{document}
-~~~~~~~~~~
+ \begin{document}
+ 世界,你好!
+ \end{document}
## XETEX 中文文档处理 ##
对 XETEX / LaTEX 可使用 xelatex 命令处理生成 pdf 文档:
-$ xelatex filename.tex
+ $ xelatex filename.tex
现在,假定上一节中组为示例所列举的中文XETEX/LaTEX文稿的文件名为`example.tex`,使用 xelatex 命令处理该文稿可以生成 example.pdf 文档,但是使用 pdf 阅读 器打开 example.pdf ,就会发现这是一个空白文档,而没有如我们所预期的那样会在文档 中显示出"世界,你好!"这是因为 XETEX / LaTEX 并没有为中文文稿指定默认字体,这需要我们自行设定。
这也意味着一个很重要的问题: XETEX项目解决了TEX国际化的问题, 而我们要解决 XETEX 本地化问题。但是目前,国内对 XETEX 很了解的人太少了,还未有人提出通用的XETEX中文解决方案,因此要使用 XETEX 排出符合中文习惯的文章,就需要熟悉一些 XETEX / LaTEX 宏包与排版控制命令。
宏包fontspec可与XETEX/LaTEX 配合使用可实现在XETEX/LaTEX文稿中使用系统自带字体的功能.在 XETEX / LaTEX 文稿中的导言区,使用`\usepackage`指令可加载指定宏 包.加载 fontspec 宏包后,使用其提供的`\setmainfont` 命令可设定文稿正文中的中文字体。对上一节中的中文 XETEX/LaTEX 文稿 `example.tex` 修改如下:
-~~~~~~~~~~~~
-\documentclass[11pt,a4paper]{article}
-\usepackage{fontspec}
-\setmainfont{Adobe Song Std}
-\begin{document}
-世界,你好!
-\end{document}
-~~~~~~~~~~~~
+ \documentclass[11pt,a4paper]{article}
+ \usepackage{fontspec}
+ \setmainfont{Adobe Song Std}
+ \begin{document}
+ 世界,你好!
+ \end{document}
字体设置命令`\setmainfont`将 Adobe Song Std 指定为文档正文默认字体. Adobe Song Std 是 Adobe 发布 Adobe Reader 8.0 时附带的一款中文宋体,另外还有一款中文 黑体 Adobe HeiTi Std ,它们都是免费字体,可以自由使用.如果你没有装这两款字体, 可以使用 fc-list 命令查看系统已安装的字体名录,如下:
-~~~~~~~ {.bash}
-$ fc-list :lang=zh-cn
-文鼎PL简报宋,AR PL SungtiL GB:style=Regular
-文鼎PL中楷Uni,AR PL ZenKai Uni:style=Medium ... ...
-~~~~~~~~~~
+ $ fc-list :lang=zh-cn
+ 文鼎PL简报宋,AR PL SungtiL GB:style=Regular
+ 文鼎PL中楷Uni,AR PL ZenKai Uni:style=Medium ... ...
将 fc-list 输出结果中的字体名填到`\setmainfont`命令中,即可使得 XETEX / LaTEX 在 系统字体目录下找到相应字体并将其嵌入到所生成的pdf文档中。虽然可以将Windows中文字体挪到 Linux 下使用,但是现在许多自由抑或免费的中文字体已经可以满足中文排版需要了,因此,我们应当尽量不要再去那些私权字体.
@@ -96,16 +86,14 @@ $ fc-list :lang=zh-cn
下面,继续进行中文字体的设置,对 example.tex 修改如下:
-~~~~~~~~~~~ {.latext}
-\documentclass[11pt,a4paper]{article}
-\usepackage{fontspec}
-\setmainfont[BoldFont=Adobe Heiti Std]{Adobe Song Std}
-\setsansfont[BoldFont=Adobe Heiti Std]{AR PL KaitiM GB}
-\setmonofont{Bitstream Vera Sans Mono}
-\begin{document}
-世界,你好!
-\end{document}
-~~~~~~~~~~~~~~~~
+ \documentclass[11pt,a4paper]{article}
+ \usepackage{fontspec}
+ \setmainfont[BoldFont=Adobe Heiti Std]{Adobe Song Std}
+ \setsansfont[BoldFont=Adobe Heiti Std]{AR PL KaitiM GB}
+ \setmonofont{Bitstream Vera Sans Mono}
+ \begin{document}
+ 世界,你好!
+ \end{document}
在解释修改后的example.tex所发生的变化之前,我们应当了解一下有关字体的一些常识.
西方国家的字母体系可分为两大字族( Font Family ): Serif 与 Sans Serif .除此 之外,还有一种打印机字体虽然也是 Sans Serif ,但由于它是等距字,所以又独立出一个Typewriter字族。Serif ,中文常译为"衬线", Sans Serif 则译为"无衬线"。
@@ -126,10 +114,8 @@ fontspec 宏包还提供了一个与`\setmainfont` 等价的命令 `\setromanfon
对于任意一款计算机字体而言, 它不是一个你想怎么变就可以怎么变的东西,如果一款字体在设计的时候就不是粗体,那 么是不可能把它变成粗体的,只有用一种设计好的粗体去替换。虽然有一些办法可以让一 些字体经过微量平移并叠合后可以得到类似"粗体"的效果,但那是"穷人的粗体",显示 效果很差的。所以,我们不应该把你正在用的这个"宋体"变成"粗"宋体,而必须去找专 门的粗宋体来用。如果找不到粗宋体,那就用黑体来代替,本文的排版就是这么做的,采用 Adobe Heiti Std 来作为衬线与非衬线的粗体. 字体设置完成后,就要考虑中文断行的问题。
还是那句话, XETEX 只致力于解决国际 化问题,并不考虑本地化,如果说考虑了,那也只是默认考虑了西文本地化.西文的断行问 题是根据单词之间的空格来决定一行文本中在哪个单词的尾部断开产生新行的,对中文而 言,这种方法就不适用了,因为中文不是以空格来划分单词的.但不要以为 XETEX 不能很 好的处理中文断行,在 XETEX 内部已有人为中文断行写了一些规则,我们可以直接使用它们,可在 XETEX / LaTEX 的导言区中添加以下指令:
-~~~~~~~~~
-\XeTeXlinebreaklocale "zh"
-\XeTeXlinebreakskip = 0pt plus 1pt minus 0.1pt
-~~~~~~~~~
+ \XeTeXlinebreaklocale "zh"
+ \XeTeXlinebreakskip = 0pt plus 1pt minus 0.1pt
上述指令中,`\XeTeXlinebreaklocale` 指定使用中文断行规则,XeTeXlinebreakskip 可以 让 XETEX 处理中文断行时多一点点自适应调整的空间.
@@ -145,35 +131,27 @@ Okay! 事实上,讲到这里,XETEX/LaTEX 的用法基本已讲述完毕, 剩下
现在,若要在一张 A4 纸上以 11pt 为基本字体尺寸写一篇论文, `\documentclass` 指令可写为:
-~~~~~~~~
-\documentclass[a4paper,11pt]{article}
-~~~~~~~~~
+ \documentclass[a4paper,11pt]{article}
XETEX / LaTEX 默认是纵向模式排版,要改为横向排版,可添加 `\documentclass` 命令 的可省略参数 landscape :
-~~~~~~~~~
-\documentclass[a4paper,11pt,landscape]{article}
-~~~~~~~~~~
+ \documentclass[a4paper,11pt,landscape]{article}
`\documentclass` 还有一些常用的可省略参数,比如 titlepage 可以让文章的标题 单独占据一页, notitlepage 可使标题与文章正文排在同一页面.又比如 draft 可以控制 XETEX / LaTEX 在超出页面宽度限制的文本行右端显示一个粗黑条,提醒用户注意,而 final 的作用恰好相反,无论文本行超出边界多少,也不显示粗黑条,但 XETEX / LaTEX 在 编译 TEX 文档时,会给出警告.
### 设置页面边距 ###
- 下面谈谈页边距的设置. MS Word 默认的页面边距为:
+下面谈谈页边距的设置. MS Word 默认的页面边距为:
>上边距=下边距= 1in (2.54cm)
>左边距=右边距= 1.25in (3.17cm)
使用宏包 geometry 可以进行 XETEX / LaTEX 文稿的页面边距设置:
-~~~~~~~
-\usepackage[top=1in,bottom=1in,left=1.25in,right=1.25in]{geometry}
-~~~~~~~
+ \usepackage[top=1in,bottom=1in,left=1.25in,right=1.25in]{geometry}
实际上这样设置的页面边距极不美观,尤其是左右对称的页边距没有考虑装订的需要, 另外上边距如果加上页眉或就显得过窄.因此,要是真的很注重页面美观的话还是自己去调 整一下,比如我喜欢将页边距设置下面这样:
-~~~~~~~~~~~~~~
-\usepackage[top=1.2in,bottom=1.2in,left=1.2in,right=1in]{geometry}
-~~~~~~~~~~~~~~
+ \usepackage[top=1.2in,bottom=1.2in,left=1.2in,right=1in]{geometry}
将左边距设置的比右边距大一些,主要是考虑装订的需要,但是在实际打印时有单面打 印与双面打印模式,在双面打印时,应该是奇数页面的左边距比右边距大一些,在偶数页则相反. XETEX / LaTEX 考虑到了这一点,在偶数页面中会自动将左,右边距切换.指定文稿 单双页面的参数有 oneside 与 twoside ,它们都是 `\documentclass`的可省略参数,如果 文稿类别是论文,默认是单面打印模式.
如果相对 geometry 宏包的使用进行更详细的了解,请参考文献
@@ -182,17 +160,13 @@ XETEX / LaTEX 默认是纵向模式排版,要改为横向排版,可添加 `\docu
可使用 titlesec 宏包设置章节标题.在引入 titlesec 宏包时,可以指定一些格式选项, 比如:
-~~~~~~~~~
-\usepackage[center,pagestyles]{titlesec}
-~~~~~~~~~
+ \usepackage[center,pagestyles]{titlesec}
其中 center 可使标题居中,还可设为 raggedleft (居左,默认), raggedright (居 右). pagestyles 是申明后面要使用 titlesec 宏包自定义页面样式(在下一节会讲).
标题由标签+标题内容构成,其格式通常在 XETEX / LaTEX 文稿的导言区中设置.要设 置论文中的节标题格式,可用 titleformat 指令,用法如下:
-~~~~~~~~~~~
-\titleformat{command}[shape]{format}{label}{sep}{before}[after]
-~~~~~~~~~~~~
+ \titleformat{command}[shape]{format}{label}{sep}{before}[after]
其中各参数含义如下:
@@ -207,35 +181,27 @@ $TEXLIVE/$VERSION/texmf-dist/doc/latex/titlesec
本文排版所用节标题分为两级,其格式采用以下命令设置:
-~~~~~~~~~~~~
-\titleformat{\section}{\centering\Large\bfseries}{\S\,\thesection}{1em}{}
-\titleformat{\subsection}{\large\bfseries}{\S\,\thesubsection}{1em}{}
-~~~~~~~~~~~~~
+ \titleformat{\section}{\centering\Large\bfseries}{\S\,\thesection}{1em}{}
+ \titleformat{\subsection}{\large\bfseries}{\S\,\thesubsection}{1em}{}
其 中, shape , before , after 参 数 都 被 省 略 掉 了. format 参 数 将 section 格 式设置为居中( `\centering` ),字号为 `\Large` ,字体被加粗显示 `\bfseries` ;在设 置 subsection 格式,未采用居中,而是采用默认的居左,另外将标题的字号也降了一 级( `\large` ). label 参数将标题的标签设置为以"§"为前缀 + 标题序号. sep 参数设 置标签与标题内容之间以一个字(1em)的宽度为间隔.
### 页眉与页脚 ###
这一节讲怎样使用 titlesec 宏包设置页眉,页脚.下面的命令在 XETEX / LaTEX 导言区 定义了一个新的页面样式,并使用该样式:
-~~~~~~~~~~~
-\newpagestyle{main}{
-\sethead{\small\S\,\thesection\quad\sectiontitle}{}{$\cdot$~\thepage~$\cdot$}
-\setfoot{}{}{}\headrule}
-\pagestyle{main}
-~~~~~~~~~~~
+ \newpagestyle{main}{
+ \sethead{\small\S\,\thesection\quad\sectiontitle}{}{$\cdot$~\thepage~$\cdot$}
+ \setfoot{}{}{}\headrule}
+ \pagestyle{main}
其中 `\sethead` 命令设置页眉,用法为:
-~~~~~~~~~
-\sethead[偶数页左页眉][偶数页中页眉][偶数页右页眉] {奇数页左页眉}{奇数页中页眉}{奇数页右页眉}
-~~~~~~~~~
+ \sethead[偶数页左页眉][偶数页中页眉][偶数页右页眉] {奇数页左页眉}{奇数页中页眉}{奇数页右页眉}
单面打印模式只要给出奇数页的设置即可,双面模式则需要将左,右页眉做个调换.上 面给出的例子是单面模式的. `\setfoot` 指令用法与 `\sethead` 用法相似.
上面的页眉页脚设置示例中,`\headrule` 指令可画页眉线,默认宽度是 0.4pt,如果对该 宽度不满意,可使用下面命令重新设置其宽度:
-~~~~~~~~~~
-\setheadrule{宽度值}
-~~~~~~~~~~
+ \setheadrule{宽度值}
上面的页眉设置示例的排版效果即本文档页眉效果.
@@ -281,12 +247,10 @@ Adobe的中文字体有[官方下载](http://www.adobe.com/support/downloads/det
2、3 条目的问题,我hack成其他字符(*)显示就没问题了(如下),不知道缺省的圆点为啥显示不对。<http://wiki.ctex.org/index.php/LaTeX/%E5%88%97%E8%A1%A8>,现在就用文鼎的细上海宋了。
-~~~~~~~~~~~~~~ {.latex}
\begin{itemize}\setlength{\itemsep}{1pt}\setlength{\parskip}{0pt}\setlength{\parsep}{0pt}
\item[*]
% 原来是
% \item
-~~~~~~~~~~~~~~~~~~~~
## 参考 ##
1. <http://share.chinatex.org/>
Please sign in to comment.
Something went wrong with that request. Please try again.