Skip to content

Commit

Permalink
Minor update
Browse files Browse the repository at this point in the history
Fix some typos and mistakes.
Supplements for TikZ instructions.
  • Loading branch information
louisstuart96 committed Mar 25, 2017
1 parent e6d5678 commit 7f7d595
Show file tree
Hide file tree
Showing 6 changed files with 115 additions and 39 deletions.
2 changes: 1 addition & 1 deletion src/INSTRUCTIONS.md
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@ cmdname 和 envname 可写多个命令和环境名,以逗号分隔(唯一例
```
`\rule` 命令画的一个宽度示意符号。

**command 环境** 用表格生成的一个加框的命令展示环境。多行命令在每行末尾(最后一行除外)加 \\
**command 环境** 用表格生成的一个加框的命令展示环境。多行命令在每行末尾(最后一行除外)加 `\\`

**intro 环境** 每章开头的一个摘要环境。

Expand Down
4 changes: 2 additions & 2 deletions src/Makefile
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
LSHORT = lshort-zh-cn
PDF = $(LSHORT).pdf
REQUIRE = $(LSHORT).tex $(LSHORT)-style.sty $(LSHORT)-layout.tex $(LSHORT).ist
TEMP = $(LSHORT).{aux,log,idx,ind,ilg,out,toc,los} $(LSHORT)-example.aux
TEMP = $(LSHORT).{aux,log,idx,ind,ilg,out,toc,los,synctex.gz} $(LSHORT)-example.aux

TEX = xelatex
MODE = -interaction=nonstopmode
MODE = -interaction=nonstopmode -synctex=1
MAKEIDX = makeindex

RM = rm -f
Expand Down
2 changes: 1 addition & 1 deletion src/chap/chap.01.basics.tex
Original file line number Diff line number Diff line change
Expand Up @@ -276,7 +276,7 @@ \subsection{文档类}\label{subsec:classes}
\begin{description}
\item [\texttt{proc}] 基于 \cls{article} 文档类的一个简单的学术文档模板。
\item [\texttt{slides}] 幻灯格式的文档类,使用无衬线字体。
\item [\texttt{minimal}] 一个极其精简的文档类,只设定了纸张大小和字号
\item [\texttt{minimal}] 一个极其精简的文档类,只设定了纸张大小和基本字号
用作代码测试的最小工作示例(Minimal Working Example)。
\end{description}
\hrule
Expand Down
30 changes: 11 additions & 19 deletions src/chap/chap.05.style.tex
Original file line number Diff line number Diff line change
Expand Up @@ -170,19 +170,21 @@ \subsection{字体编码}\label{subsec:font-encs}
\pkg{stix} & Times 风格的字体宏包 \\
\pkg{newtxtext},\pkg{newtxmath} & \pkg{txfonts} 的改进版本,分别设置文本和数学字体 \\
\pkg{newpxtext},\pkg{newpxmath} & \pkg{pxfonts} 的改进版本,分别设置文本和数学字体 \\
\pkg{mathptmx} & \pkg{psnfss} 组件之一,Times 风格,较为陈旧,不推荐使用 \\
\pkg{mathpazo} & \pkg{psnfss} 组件之一,Palatino 风格,较为陈旧,不推荐使用 \\
\pkg{mathptmx} & \pkg{psnfss} 字体宏集之一,Times 风格,较为陈旧,不推荐使用 \\
\pkg{mathpazo} & \pkg{psnfss} 字体宏集之一,Palatino 风格,较为陈旧,不推荐使用 \\
\pkg{fourier} & fourier 风格数学字体,配合 Utopia 正文字体 \\
\pkg{fouriernc} & fourier 风格数学字体,配合 New Century Schoolbook 正文字体 \\
\pkg{arev} & Arev 无衬线字体宏包,Bitstream Vera sans 风格 \\
\pkg{arev} & Arev 无衬线字体宏包,Vera Sans 风格 \\
\pkg{mathdesign} & 配合 Charter/Garamond/Utopia 正文字体的数学字体宏包(Garamond 字体可能需要单独安装) \\
\hline
\multicolumn{2}{c}{文本字体宏包} \\
\multicolumn{2}{l}{\small 以下字体包括传统的 \LaTeX\ 字体格式以及 TrueType / OpenType 格式。}
\hline
\pkg{dejavu} & DejaVu 开源字体 \\
\pkg{droid} & Droid 开源字体 \\
\pkg{inconsolata} & Inconsolata 开源等宽字体 \\
\pkg{libertine} & Linux Libertine / Linux Biolium 开源字体 \\
\pkg{roboto} & Roboto 开源无衬线字体 \\
\pkg{sourcesanspro} & Source Sans Pro 开源无衬线字体 \\
\pkg{sourcecodepro} & Source Code Pro 开源等宽字体 \\
\hline
Expand All @@ -205,7 +207,7 @@ \subsection{使用 \pkg{fontspec} 宏包更改字体 (\texttt{xelatex})}\label{s
\pkgindex{fontspec}
\cmdindex[fontspec]{setmainfont,setsansfont,setmonofont}
\texttt{xelatex} 命令下支持用户调用字体的宏包是 \pkg{fontspec}。宏包提供了几个设置全局字体的命令,设置 \cmd{rmfamily} 等对应命令的默认字体%
\footnote{新版本 \pkg{fontspec} 的命令支持把必选参数 \Arg{font name} 放在可选参数 \Arg{font features} 的前面。}:
\footnote{新版本 \pkg{fontspec} 的命令支持(并且推荐)把必选参数 \Arg{font name} 放在可选参数 \Arg{font features} 的前面。}:
\begin{command}
\cmd{setmainfont}\oarg{font features}\marg{font name} \\
\cmd{setsansfont}\oarg{font features}\marg{font name} \\
Expand Down Expand Up @@ -290,7 +292,7 @@ \subsection{行距}\label{subsec:linespread}
\cmd{linespread}\marg{factor}
\end{command}

这里的 \Arg{factor} 是在基础行距上而不是字号上乘以一个因子。大部分时候,默认的基础行距是 1.2 倍字号大小,
这里的 \Arg{factor} 是在基础行距上而不是字号上乘以一个因子。大部分时候,默认的基础行距是 1.2 倍字号大小(参考 \cmd{fontsize} 命令)
因此设置 1.5 倍行距的命令 \cmd{line\-spread}\marg*{1.5} 意味着最终行距为 1.8 倍的字号大小。

\cmdindex{selectfont}
Expand Down Expand Up @@ -335,22 +337,12 @@ \subsection{段落格式}\label{subsec:par-shape}

\cmdindex{indent,noindent}
\LaTeX\ 默认在段落开始时缩进,长度为你用上述命令设置的 \cmd{parindent}。如果你在某一段不想使用缩进,可使用某一段开头使用
\begin{command}
\cmd{noindent}
\end{command}
命令。相反地,
\begin{command}
\cmd{indent}
\end{command}
命令强制开启一段首行缩进的段落。多个 \cmd{indent} 命令可以累加缩进量。
\cmd{noindent} 命令。相反地,\cmd{indent} 命令强制开启一段首行缩进的段落。多个 \cmd{indent} 命令可以累加缩进量。

\pkgindex{indentfirst}
\LaTeX\ 还默认\textbf{\cmd{chapter}、\cmd{section} 等章节标题命令之后的第一段不缩进}%
\footnote{\pkg{ctex} 宏包和文档类默认按照中文习惯保持标题后第一段的首行缩进。}。
如果不习惯这种设定,可以调用 \pkg{indent\-first} 宏包:
\begin{verbatim}
\usepackage{indentfirst}
\end{verbatim}
如果不习惯这种设定,可以调用 \pkg{indent\-first} 宏包,令第一段的首行缩进照常。

\cmdindex{parskip}
段落间的垂直间距为 \cmd{parskip},如设置段落间距在 \texttt{0.8ex} 到 \texttt{1.5ex} 变动:
Expand Down Expand Up @@ -587,9 +579,9 @@ \subsection{基本的页眉页脚样式}\label{subsec:basic-pagesyle}
\begin{tabularx}{0.8\textwidth}{lX}
\hline
\texttt{empty} & 页眉页脚为空 \\
\texttt{plain} & 页眉为空,页脚为页码。(article 和 report 文档类默认;book 文档类的每章第一页也为 plain 格式) \\
\texttt{plain} & 页眉为空,页脚为页码。(\cls{article}\cls{report} 文档类默认;\cls{book} 文档类的每章第一页也为 plain 格式) \\
\hline
\texttt{headings} & 页眉为章节标题和页码,页脚为空。(book 文档类默认) \\
\texttt{headings} & 页眉为章节标题和页码,页脚为空。(\cls{book} 文档类默认) \\
\texttt{myheadings} & 页眉为页码及 \cmd{markboth} 和 \cmd{markright} 命令手动指定的内容,页脚为空。\\
\hline
\end{tabularx}
Expand Down
112 changes: 98 additions & 14 deletions src/chap/chap.07.graphic.tex
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ \section{绘图语言简介}\label{sec:pict-lang}
\item \TikZ\ \& \pkg{pgf} \par
德国的 Till Tantau 在开发著名的 \LaTeX\ 幻灯片文档类 \cls{beamer} 时一并开发了绘图宏包 \pkg{pgf},
目的是令其能够在 \texttt{pdflatex} 或 \texttt{xelatex} 等不同的编译命令下都能使用。
\TikZ\ 是在 \pkg{pgf} 基础上封装的一个宏包,提供了方便的绘图命令,绘图能力不输 PSTricks。
\TikZ\ 是在 \pkg{pgf} 基础上封装的一个宏包,采用了类似 \hologo{METAPOST} 的语法,提供了方便的绘图命令,绘图能力不输 PSTricks。

\item \hologo{METAPOST} \& Asymptote \par
\hologo{METAPOST} 脱胎于高德纳为 \TeX\ 配套开发的字体生成程序 \hologo{METAFONT},
Expand All @@ -36,7 +36,7 @@ \section{绘图语言简介}\label{sec:pict-lang}
其复杂程度已远远超出入门手册的范围(\TikZ\ 的帮助文档有上千页之厚)。
对此感兴趣的读者需要自行查阅帮助手册,或者到互联网上参考现成的范例。

\section{\TikZ}\label{sec:tikz}
\section{\TikZ\ 绘图语言}\label{sec:tikz}

\index{TikZ@\TikZ}
\pkgindex{tikz}
Expand All @@ -46,15 +46,16 @@ \section{\TikZ}\label{sec:tikz}
\footnote{\texttt{latex + dvipdfmx} 编译方式要在 \pkg{tikz} 宏包之前调用 \pkg{graphicx} 宏包并指定 \texttt{dvipdfmx} 选项。}:
\begin{command}
\cmd{tikz}\oarg*{\ldots} \Arg{tikz code}\texttt{;} \\[1ex]
\cmd{tikz}\oarg*{\ldots} \marg*{\Arg{tikz code 1}\texttt{;} \Arg{tikz code 2}\texttt{;} \ldots} \\[1ex]
\cmd{begin}\marg*{tikzpicture}\oarg*{\ldots} \\
\Arg{tikz code 1}\texttt{;} \\
\Arg{tikz code 2}\texttt{;} \\
\Arg{tikz code 2}\texttt{;}\ldots \\
\ldots \\
\cmd{end}\marg*{tikzpicture}
\end{command}

前一种用法为 \cmd{tikz} 带单条绘图命令,以分号结束,一般用于在文字之间插入简单的图形;
后一种用法较为常见,使用多条绘图命令,可以在 \env{figure} 等浮动体中使用。
后两种用法较为常见,使用多条绘图命令,可以在 \env{figure} 等浮动体中使用。

\subsection{\TikZ\ 坐标和路径}\label{subsec:tikz-path}

Expand All @@ -78,6 +79,18 @@ \subsection{\TikZ\ 坐标和路径}\label{subsec:tikz-path}
\end{tikzpicture}
\end{example}

坐标的表示形式还包括“垂足”形式:
\begin{example}
\begin{tikzpicture}
\coordinate (S) at (2,2);
\draw[gray] (-1,2) -- (S);
\draw[gray] (2,-1) -- (S);
\draw[red] (0,0) -- (0,0 -| S);
\draw[blue] (0,0) -- (0,0 |- S);
\end{tikzpicture}
\end{example}


\TikZ\ 最基本的路径为两点之间连线,如 \texttt{(\Arg{$x_1$},\Arg{$y_1$}) -{}- (\Arg{$x_2$},\Arg{$y_2$})},可以连用表示多个连线(折线)。
连续使用连线时,可以使用 \texttt{cycle} 令路径回到起点,生成闭合的路径。
\begin{example}
Expand All @@ -101,13 +114,39 @@ \subsection{\TikZ\ 坐标和路径}\label{subsec:tikz-path}
\end{example}

\begin{itemize}
\item 直角、圆弧:
\item 直角、圆弧、椭圆弧
\end{itemize}
\begin{example}
\begin{tikzpicture}
\draw (0,0) |- (1,1);
\draw (1,0) -| (2,1);
\draw (4,0) arc (0:135:1);
\draw (6,0) arc (0:135:1 and 0.5);
\end{tikzpicture}
\end{example}

\begin{itemize}
\item 正弦、余弦曲线(四分之一个周期):
\end{itemize}
\begin{example}
\begin{tikzpicture}
\draw (0,0) sin (1.57,1);
\draw (0,1) sin (1.57,0);
\draw (2,1) cos (3.57,0);
\draw (2,0) cos (3.57,1);
\end{tikzpicture}
\end{example}

\begin{itemize}
\item 抛物线,用 \texttt{bend} 控制顶点:
\end{itemize}
\begin{example}
\begin{tikzpicture}
\draw (0,0) parabola (1,2);
\draw (2,0) parabola
bend (2.25,-0.25) (3,2);
\draw (4,0) parabola
bend (4.75,2.25) (5,2);
\end{tikzpicture}
\end{example}

Expand Down Expand Up @@ -154,7 +193,18 @@ \subsection{\TikZ\ 绘图命令和参数}\label{subsec:tikz-draw}
绘图参数可作为可选参数用在 \env{tikzpiture} 环境或 \cmd{tikz} 命令时,参数会影响到所有具体的绘图命令;
用在单个绘图命令 \cmd{draw}、\cmd{filldraw} 等时,只对这个命令起效。

\TikZ 有数不清的绘图参数,这些参数令 \TikZ\ 能够绘制丰富多彩的图像,同时也令 \TikZ\ 易学难精。
\envindex[tikz]{scope}
\TikZ\ 还提供了 \env{scope} 环境,令一些绘图参数在局部起效:
\begin{example}
\begin{tikzpicture}
\draw (0,0) rectangle (2.5, 2.5);
\begin{scope}[fill=gray,scale=0.5]
\filldraw (0,0) rectangle (2.5, 2.5);
\end{scope}
\end{tikzpicture}
\end{example}

\TikZ\ 有数不清的绘图参数,这些参数令 \TikZ\ 能够绘制丰富多彩的图像,同时也令 \TikZ\ 难以精通。
本手册仅总结常用的一些绘图参数,见表 \ref{tbl:tikz-options}。

\begin{table}[htp]
Expand All @@ -166,7 +216,7 @@ \subsection{\TikZ\ 绘图命令和参数}\label{subsec:tikz-draw}
为线条(\cmd{draw})或填充(\cmd{fill})指定颜色,\Arg{color} 使用颜色名或是 \pkg{xcolor} 的混合颜色语法。
往往可以不写 \texttt{color=} 直接写颜色名称。
\item \texttt{fill=\Arg{color} / draw=\Arg{color}} \par
分别给 \cmd{filldraw} 指定填充和描边的颜色。也可分别给 \cmd{fill} 和 \cmd{draw} 命令使用。
分别给 \cmd{filldraw} 指定填充和描边的颜色。也可给 \cmd{fill} 和 \cmd{draw} 命令使用。
不带参数直接使用 \texttt{fill} 和 \texttt{draw},相当于用默认颜色。
\end{itemize}
\hrule
Expand Down Expand Up @@ -210,6 +260,8 @@ \subsection{\TikZ\ 文字结点}\label{subsec:tikz-node}
\begin{command}
\cmd{node}\oarg{options} \texttt{(\Arg{name})} \texttt{at (\Arg{coordinate})} \marg{text}\texttt{;}
\end{command}
\texttt{(\Arg{name})} 为结点命名,类似 \cmd{coordinate};\texttt{at (\Arg{coordinate})} 指定结点的位置。
这两者和前面的 \Arg{options} 都可以省略,只有 \Arg{text} 是必填的。
\begin{example}
\begin{tikzpicture}
\node (A) at (0,0) {A};
Expand Down Expand Up @@ -247,7 +299,7 @@ \subsection{\TikZ\ 文字结点}\label{subsec:tikz-node}
\hrule
\end{table}

\cmd{node} 命令不仅为文字结点的位置命名(类似 \cmd{coordinate} 命令),在 \cmd{draw} 等命令中还可以使用某个结点的相对位置,
\cmd{node} 命令不仅为文字结点的位置命名,在 \cmd{draw} 等命令中还可以使用某个结点的相对位置,
以“东南西北”的方式命名:

\begin{example}
Expand All @@ -272,8 +324,8 @@ \subsection{\TikZ\ 文字结点}\label{subsec:tikz-node}
\end{tikzpicture}
\end{example}

除了 \cmd{node} 命令之外,\cmd{coordinate} 也可以通过参数为某个位置添加文字。
我们最后举一个较为复杂的例子,综合前面介绍过的各种路径、形状、文字结点和参数设置。
除了 \cmd{node} 命令之外,\cmd{coordinate} 也可以通过参数为某个位置添加文字(label)
在此举一个较为复杂的例子,综合前面介绍过的各种路径、形状、文字结点和参数设置。

\begin{sourcecode}[htp]
\begin{Verbatim}
Expand All @@ -282,8 +334,8 @@ \subsection{\TikZ\ 文字结点}\label{subsec:tikz-node}
\draw[-stealth,line width=0.2pt] (0,-0.5) -- (0,2.5);
\coordinate (a) at (0.5,1.9);
\coordinate (b) at (4,1.2);
\coordinate[label=below:$a$] (a0) at (0.5,0);
\coordinate[label=below:$b$] (b0) at (4,0);
\coordinate[label=below:$a$] (a0) at (a |- 0,0);
\coordinate[label=below:$b$] (b0) at (b |- 0,0);
\filldraw[fill=gray!20,draw,thick]
(a0) -- (a) .. controls (1,2.8) and (2.7,0.4) .. (b) -- (b0) -- cycle;
\node[above right,outer sep=0.2cm, rounded corners,
Expand All @@ -297,8 +349,8 @@ \subsection{\TikZ\ 文字结点}\label{subsec:tikz-node}
\draw[-stealth,line width=0.2pt] (0,-0.5) -- (0,2.5);
\coordinate (a) at (0.5,1.9);
\coordinate (b) at (4,1.2);
\coordinate[label=below:$a$] (a0) at (0.5,0);
\coordinate[label=below:$b$] (b0) at (4,0);
\coordinate[label=below:$a$] (a0) at (a |- 0,0);
\coordinate[label=below:$b$] (b0) at (b |- 0,0);
\filldraw[fill=gray!20,draw,thick]
(a0) -- (a) .. controls (1,2.8) and (2.7,0.4) .. (b) -- (b0) -- cycle;
\node[above right,outer sep=0.2cm, rounded corners,
Expand All @@ -309,4 +361,36 @@ \subsection{\TikZ\ 文字结点}\label{subsec:tikz-node}
\caption{\TikZ\ 绘图示例源代码和效果。}\label{code:tikz-example}
\end{sourcecode}

\subsection{\TikZ\ 中使用循环}

\cmdindex[tikz]{foreach}
\TikZ\ 通过 \pkg{pgffor} 功能宏包实现了简单的循环功能,语法为:
\begin{command}
\cmd{foreach} \cmd{a} \texttt{in} \marg{list} \marg{commands}
\end{command}
上述语法定义了 \cmd{a} 为变量,在 \marg{commands} 中使用 \cmd{a} 完成循环。

\Arg{list} 可以直接将所有值写出来,如 1,2,3,4;也可以写成省略形式,如 1,2,\ldots,10。
\begin{example}
\begin{tikzpicture}
\draw (0,0)--(5,0);
\foreach \i in {0.0,0.1,...,5.0}
{\draw[very thin]
(\i,0)--(\i,0.15);}
\foreach \I in {0,1,2,3,4,5}
{\draw (\I,0)--(\I,0.25)
node[above] {\I};}
\end{tikzpicture}
\end{example}

\cmd{foreach} 还可使用变量对参与循环:
\begin{example}
\begin{tikzpicture}
\foreach \n/\t in
{0/\alpha,1/\beta,2/\gamma}
{\node[circle,fill=lightgray,draw]
at (\n,0) {$\t$};}
\end{tikzpicture}
\end{example}

\endinput
4 changes: 2 additions & 2 deletions src/make.bat
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
@echo off
set LSHORT=lshort-zh-cn
set PDF=%LSHORT%.pdf
set TEMP=%LSHORT%.aux %LSHORT%.log %LSHORT%.idx %LSHORT%.ind %LSHORT%.ilg %LSHORT%.out %LSHORT%.toc %LSHORT%.los %LSHORT%-example.aux
set TEMP=%LSHORT%.aux %LSHORT%.log %LSHORT%.idx %LSHORT%.ind %LSHORT%.ilg %LSHORT%.out %LSHORT%.toc %LSHORT%.los %LSHORT%-example.aux %LSHORT%.synctex.gz

if "%1"=="clean" goto clean

set TEX=xelatex
set MODE=-interaction=nonstopmode
set MODE=-interaction=nonstopmode -synctex=1
set MAKEINDEX=makeindex

%TEX% %MODE% %LSHORT%
Expand Down

0 comments on commit 7f7d595

Please sign in to comment.