-
Notifications
You must be signed in to change notification settings - Fork 2
/
guide.tex
264 lines (204 loc) · 9.19 KB
/
guide.tex
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
%!TEX TS-program = xelatex
%!TEX encoding = UTF-8 Unicode
\documentclass[oneside,final]{article}
\usepackage[margin=2.5cm]{geometry}
\usepackage{ctex}
\usepackage{xltxtra} % to use \XeLeTeX
% hyperlink
\usepackage[colorlinks=true,linkcolor=blue]{hyperref}
% load cjkfonts and set Source Han Sans SC as the default CJK fonts:
%\usepackage[default,mdseries=Light,bfseries=Medium]{cjkfonts}
\usepackage[default,mdseries=Light,bfseries=Medium]{cjkfonts}
% Set Roboto and Source Code Pro, which are installed with TexLive,
% for western fonts:
\input{localfonts.tex}
\newcommand{\mixthin}[0]{\RobotoThin\NotoSansSCThin}
\newcommand{\mixlight}[0]{\RobotoLight\NotoSansSCLight}
\newcommand{\mixregular}[0]{\RobotoRegular\NotoSansSCRegular}
\newcommand{\mixmedium}[0]{\RobotoMedium\NotoSansSCMedium}
\newcommand{\mixbold}[0]{\RobotoBold\NotoSansSCBold}
\newcommand{\mixblack}[0]{\RobotoBlack\NotoSansSCBlack}
% for code example
\usepackage{listings}
\usepackage{color}
% for better table
\usepackage{booktabs}
\definecolor{mygreen}{rgb}{0,0.6,0}
\definecolor{mygray}{rgb}{0.5,0.5,0.5}
\definecolor{mymauve}{rgb}{0.58,0,0.82}
\lstset{ %
backgroundcolor=\color{white}, % choose the background color; you must add \usepackage{color} or \usepackage{xcolor}
basicstyle=\footnotesize\ttfamily, % the size of the fonts that are used for the code
breakatwhitespace=false, % sets if automatic breaks should only happen at whitespace
breaklines=true, % sets automatic line breaking
captionpos=b, % sets the caption-position to bottom
commentstyle=\color{mygreen}, % comment style
% deletekeywords={...}, % if you want to delete keywords from the given language
escapeinside={\%*}{*)}, % if you want to add LaTeX within your code
extendedchars=true, % lets you use non-ASCII characters; for 8-bits encodings only, does not work with UTF-8
frame=single, % adds a frame around the code
keepspaces=true, % keeps spaces in text, useful for keeping indentation of code (possibly needs columns=flexible)
% keywordstyle=\color{blue}, % keyword style
% language=Octave, % the language of the code
% otherkeywords={*,...}, % if you want to add more keywords to the set
numbers=left, % where to put the line-numbers; possible values are (none, left, right)
numbersep=5pt, % how far the line-numbers are from the code
numberstyle=\tiny\color{mygray}, % the style that is used for the line-numbers
rulecolor=\color{black}, % if not set, the frame-color may be changed on line-breaks within not-black text (e.g. comments (green here))
showspaces=false, % show spaces everywhere adding particular underscores; it overrides 'showstringspaces'
showstringspaces=false, % underline spaces within strings only
showtabs=false, % show tabs within strings adding particular underscores
stepnumber=1, % the step between two line-numbers. If it's 1, each line will be numbered
stringstyle=\color{mymauve}, % string literal style
tabsize=2 % sets default tabsize to 2 spaces
% title=\lstname % show the filename of files included with \lstinputlisting; also try caption instead of title
}
\linespread{1.5}
\begin{document}
\title{cjkfonts 宏包}
\author{Freeman Zhang}
\date{\today{} v0.1}
\maketitle
\section{简介}
\href{https://github.com/zhanggyb/cjkfonts}{cjkfonts} 是一个简单的\XeLaTeX{}宏包,
可用于排版包含中日韩(CJK)文字的文档。其将
\href{https://www.google.com/get/noto/#sans-hans}{Google Noto Sans CJK SC},即
\href{https://github.com/adobe-fonts/source-han-sans}{思源黑体},设置为默认CJK字
体,排版效果如下:
\begin{center}
Normal Text {\NotoSansSC 正常文本} \\
\vspace{1em}
\textbf{Bold Text {\NotoSansSC 粗体文本}} \\
\vspace{1em}
\textit{Italic Text {\NotoSansSC 斜体文本}} \\
\vspace{1em}
\textbf{\textit{BoldItalic Text {\NotoSansSC 粗斜体文本}}}
\end{center}
\section{使用}
\subsection{签出源码}
\begin{lstlisting}[language=sh]
$ git clone https://github.com/zhanggyb/cjkfonts
\end{lstlisting}
\subsection{准备字体文件}
运行bootstrap.sh脚本来自动将需要的字体文件下载到fonts目录,这一脚本依赖curl。
\begin{lstlisting}[language=sh]
$ ./bootstrap.sh
\end{lstlisting}
也可以自行下载并放在 fonts 目录。
\subsection{复制文件}
直接将cjkfonts.sty以及fonts目录复制到你的文档目录。
\subsection{使用宏包}
与其它\LaTeX{}宏包一样,引入cjkfonts宏包只需要在导言区使用:
\begin{lstlisting}[language=TeX]
\usepackage{cjkfonts}
\end{lstlisting}
使用path选项可以选择其它字体所在目录:
\begin{lstlisting}[language=TeX]
\usepackage[path=<mypath>]{cjkfonts}
\end{lstlisting}
使用default选项:
\begin{lstlisting}[language=TeX]
\usepackage[default]{cjkfonts}
\end{lstlisting}
在加载宏包时设置其为默认的CJK字体:
\begin{itemize}
\item 设置CJKmainfont为NotoSans
\item 设置CJKsansfont为NotoSans
\item 设置CJKmonofont为NotoSansMono
\end{itemize}
使用mdseries和bfseries选项可以为常规体和粗体选择不同的字重,例如,以下选项可以让
文字显得更纤细一些:
\begin{lstlisting}
\usepackage[mdseries=Light,bfseries=Medium]{cjkfonts}
\end{lstlisting}
\subsection{示例}
这里是一个简单的示例:
\begin{lstlisting}[language=TeX]
%!TEX TS-program = xelatex
%!TEX encoding = UTF-8 Unicode
\documentclass{article}
\usepackage[default,mdseries=Light,bfseries=Medium]{cjkfonts}
\begin{document}
\begin{center}
Normal Text 正常文本 \\
\vspace{1em}
\textbf{Bold Text 粗体文本} \\
\vspace{1em}
\textit{Italic Text 斜体文本} \\
\vspace{1em}
\textbf{\textit{BoldItalic Text 粗斜体文本}}
\end{center}
\end{document}
\end{lstlisting}
\textbf{注意:}需要使用\XeLaTeX{}排版引擎来编译源码。
\section{手册}
\subsection{选项}
\begin{center}
\begin{tabular}{ c l }
\textbf{path=<font dir>} & 设置Noto Sans CJK SC字体文件路径为<font dir>指定的路径 \\
\textbf{default} & 设置默认CJK字体为NotoSansSC \\
\textbf{mdseries=<weight>} & 设置常规字体字重,<weight>只能从以下表格选择一个,默认为\emph{Regular} \\
\textbf{bfseries=<weight>} & 设置粗字体字重,<weight>只能从以下表格选择一个,默认为\emph{Bold} \\
\end{tabular}
\end{center}
\begin{center}
\begin{tabular}{ c c }
\toprule
weight 可取值 & 样例 \\
\midrule
Thin & {\NotoSansSCThin 朝辞白帝彩云间,千里江陵一日还。} \\
Light & {\NotoSansSCLight 朝辞白帝彩云间,千里江陵一日还。} \\
DemiLight & {\NotoSansSCDemiLight 朝辞白帝彩云间,千里江陵一日还。} \\
Regular & {\NotoSansSCRegular 朝辞白帝彩云间,千里江陵一日还。} \\
Medium & {\NotoSansSCMedium 朝辞白帝彩云间,千里江陵一日还。} \\
Bold & {\NotoSansSCBold 朝辞白帝彩云间,千里江陵一日还。} \\
Black & {\NotoSansSCBlack 朝辞白帝彩云间,千里江陵一日还。} \\
\bottomrule
\end{tabular}
\end{center}
\subsection{字体族}
使用同名的字体族来选择字体:
\begin{itemize}
\item {\verb!\NotoSansSC!}
\item {\verb!\NotoSansSCThin!}
\item {\verb!\NotoSansSCLight!}
\item {\verb!\NotoSansSCSemiLight!}
\item {\verb!\NotoSansSCRegular!}
\item {\verb!\NotoSansSCMedium!}
\item {\verb!\NotoSansSCBold!}
\item {\verb!\NotoSansSCBlack!}
\item {\verb!\NotoSansMonoSC!}
\item {\verb!\NotoSansMonoSCRegular!}
\item {\verb!\NotoSansMonoSCBold!}
\end{itemize}
\subsection{CJK支持}
Noto Sans CJK SC已经支持其它繁体中文、韩文和日文字体。
例如:
\begin{center}
\begin{tabular}{ r l }
\textbf{简体中文} & 每个人生来平等,享有相同的地位和权利。 \\
\textbf{繁體中文} & 每個人生來平等,享有相同的地位和權利。 \\
\textbf{한국의} & 모두가 동일한 태어나 같은 지위와 권리 를 가지고 있다。\\
\textbf{日本語} & すべての人間は自由であり、かつ、尊厳と権利とについて平等である。\\
\end{tabular}
\end{center}
\section{已知问题}
\begin{enumerate}
\item bootstrap.sh 脚本只在OS X和Linux系统上测试过。
\end{enumerate}
\section{与Google Roboto字体混合使用}
Noto Sans CJK与
Google Roboto英文字体配合使用非常和谐:
\begin{center}
{\mixthin Roboto Thin与思源黑体Extra Light混排效果示例}\\
{\mixlight Roboto Light与思源黑体Light混排效果示例}\\
{\mixregular Roboto Regular与思源黑体Regular混排效果示例}\\
{\mixmedium Roboto Medium与思源黑体Medium混排效果示例}\\
{\mixbold Roboto Bold与思源黑体Bold混排效果示例}\\
{\mixblack Roboto Black与思源黑体Heavy混排效果示例}
\end{center}
\section{代码实现}
cjkfonts的程序代码非常简单,只是利用
\href{https://github.com/ctex-org/ctex-kit}{xeCJK} 宏包设置排版字体:
\lstinputlisting[language=TeX]{cjkfonts.sty}
\end{document}