diff options
Diffstat (limited to 'Master')
22 files changed, 873 insertions, 536 deletions
diff --git a/Master/texmf-dist/doc/latex/lshort-chinese/README-zh.md b/Master/texmf-dist/doc/latex/lshort-chinese/README-zh.md new file mode 100644 index 00000000000..3dd2eee1d99 --- /dev/null +++ b/Master/texmf-dist/doc/latex/lshort-chinese/README-zh.md @@ -0,0 +1,35 @@ +# 中文版 lshort,5.10 版 + +## 许可证 + +本文档以 **GNU 自由文档许可证(1.3 版)** 发布。详见文档中题为“GNU Free Documentation License”的章节,或者源代码文件 `fdl.tex`。 + +## 编译之前的准备 + +将发行版内的 `ctex` 宏包、`xeCJK` 宏包更新到最新(包括它们依赖的所有宏包),并确认 `lshort-zh-cn-style.sty` 调用的其它宏包都已正确安装并更新到最新。 + +本文档使用 `fandol` 字体包。`fontspec` 宏包会对此字体报 script-not-exist 的警告,可以无视。 + +## 编译方式 + +### 手动编译 + +在 src 目录下按照以下顺序编译: +``` +xelatex lshort-zh-cn +makeindex -s lshort-zh-cn.ist lshort-zh-cn +xelatex lshort-zh-cn +xelatex lshort-zh-cn +``` + +如果编译正确生成 PDF,之后将 PDF 移动到根目录。 + +### 使用脚本和 Makefile 编译 + +Linux 下提供了 GNU make 可用的 Makefile,使用 GNU make 的顺序为: +``` +make +make install +``` + +Windows 下在 src 目录提供批处理脚本 `make.bat`,双击执行编译。 diff --git a/Master/texmf-dist/doc/latex/lshort-chinese/README.md b/Master/texmf-dist/doc/latex/lshort-chinese/README.md index 3d2b57a5933..d7c15b3b55c 100644 --- a/Master/texmf-dist/doc/latex/lshort-chinese/README.md +++ b/Master/texmf-dist/doc/latex/lshort-chinese/README.md @@ -1,4 +1,4 @@ -# The Not So Short Introduction To LaTeX, v5.05 +# The Not So Short Introduction To LaTeX (Chinese Edition), v5.10 ## License @@ -9,7 +9,7 @@ For detailed information, see the section entitled 'GNU Free Documentation Licen Update `ctex` and `xeCJK` (and all the packages they rely on) in your TeX distritusion. And make sure you've installed all the other packages used in `lshort-zh-cn-style.sty` and updated them to the newest version. -This document uses `fandol` font package. You may receive a warning like 'script-not-exist' made by 'fontspec' package. Just leave it alone. +This document uses `fandol` font package. You may receive a warning like 'script-not-exist' made by `fontspec` package. Just leave it alone. ## Typesetting @@ -20,6 +20,7 @@ In 'src' directory, typeset the source code in the following order: xelatex lshort-zh-cn makeindex -s lshort-zh-cn.ist lshort-zh-cn xelatex lshort-zh-cn +xelatex lshort-zh-cn ``` If typesetting succeeds and the target PDF document is made correctly, then move it to the root directory. @@ -32,41 +33,4 @@ make make install ``` -For Windows users, we also provide a batch file `make.bat` in the 'src' directory, which you can double-click to do the typesetting. - ---- - -# 中文版 lshort,5.05 版 - -## 许可证 - -本文档以**GNU 自由文档许可证(1.3 版)**发布。详见文档中题为“GNU Free Documentation License”的章节,或者源代码文件“fdl.tex”。 - -## 编译之前的准备 - -将发行版内的 `ctex` 宏包、`xeCJK` 宏包更新到最新(包括它们依赖的所有宏包),并确认 `lshort-zh-cn-style.sty` 调用的其它宏包都已正确安装并更新到最新。 - -本文档使用 Fandol 字体包。fontspec 宏包会对此字体报 script-not-exist 的警告,可以无视。 - -## 编译方式 - -### 手动编译 - -在 src 目录下按照以下顺序编译: -``` -xelatex lshort-zh-cn -makeindex -s lshort-zh-cn.ist lshort-zh-cn -xelatex lshort-zh-cn -``` - -如果编译正确生成 PDF,之后将 PDF 移动到根目录。 - -### 使用脚本和 Makefile 编译 - -Linux 下提供了 GNU make 可用的 Makefile,使用 GNU make 的顺序为: -``` -make -make install -``` - -Windows 下在 src 目录提供批处理脚本 `make.bat`,双击执行编译。 +For Windows users, we also provide a batch file `make.bat` in the 'src' directory, which you can double-click to do the typesetting.
\ No newline at end of file diff --git a/Master/texmf-dist/doc/latex/lshort-chinese/lshort-zh-cn.pdf b/Master/texmf-dist/doc/latex/lshort-chinese/lshort-zh-cn.pdf Binary files differindex 069ba487e11..9cea2511743 100644 --- a/Master/texmf-dist/doc/latex/lshort-chinese/lshort-zh-cn.pdf +++ b/Master/texmf-dist/doc/latex/lshort-chinese/lshort-zh-cn.pdf diff --git a/Master/texmf-dist/doc/latex/lshort-chinese/src/INSTRUCTIONS.md b/Master/texmf-dist/doc/latex/lshort-chinese/src/INSTRUCTIONS.md index 09f30c5029e..fa493e575a2 100644 --- a/Master/texmf-dist/doc/latex/lshort-chinese/src/INSTRUCTIONS.md +++ b/Master/texmf-dist/doc/latex/lshort-chinese/src/INSTRUCTIONS.md @@ -89,7 +89,7 @@ cmdname 和 envname 可写多个命令和环境名,以逗号分隔(唯一例 ``` 用 `\rule` 命令画的一个宽度示意符号。 -**command 环境** 用表格生成的一个加框的命令展示环境。多行命令在每行末尾(最后一行除外)加 \\。 +**command 环境** 用表格生成的一个加框的命令展示环境,用 `\\` 换行。 **intro 环境** 每章开头的一个摘要环境。 diff --git a/Master/texmf-dist/doc/latex/lshort-chinese/src/Makefile b/Master/texmf-dist/doc/latex/lshort-chinese/src/Makefile index dd65a174672..4a7b464e671 100644 --- a/Master/texmf-dist/doc/latex/lshort-chinese/src/Makefile +++ b/Master/texmf-dist/doc/latex/lshort-chinese/src/Makefile @@ -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 @@ -16,6 +16,7 @@ $(PDF): $(REQUIRE) $(TEX) $(MODE) $(LSHORT) $(MAKEIDX) -s $(LSHORT).ist $(LSHORT) $(TEX) $(MODE) $(LSHORT) + $(TEX) $(MODE) $(LSHORT) install: all $(INSTALL) $(LSHORT).pdf .. diff --git a/Master/texmf-dist/doc/latex/lshort-chinese/src/chap/app.A.install.tex b/Master/texmf-dist/doc/latex/lshort-chinese/src/chap/app.A.install.tex index 8e9a82e1016..ae7d3b11416 100644 --- a/Master/texmf-dist/doc/latex/lshort-chinese/src/chap/app.A.install.tex +++ b/Master/texmf-dist/doc/latex/lshort-chinese/src/chap/app.A.install.tex @@ -11,13 +11,13 @@ \section{\protect\TeX\ 发行版简介}\label{sec:dists} 一个\textbf{\TeX\ 发行版}是 \TeX\ 排版引擎、支持排版的文件(基本格式、\LaTeX\ 宏包、字体等)以及一些辅助工具的集合。 -各式各样的 \TeX\ 发行版经过十多年的发展,大浪淘沙,最终形成两个成熟的分支: +各式各样的 \TeX\ 发行版经过十多年的发展,大浪淘沙,现今的两个主流发行版为: \begin{itemize} \item \textbf{\TeX\ Live}\par - \TeX\ Live 由类 Unix 系统上的 te\TeX\ 发展并取而代之,最终成为跨平台的 \TeX\ 发行版。 + \TeX\ Live 由类 UNIX 系统上的 te\TeX\ 发展并取而代之,最终成为跨平台的 \TeX\ 发行版。 \TeX\ Live 自 2011 年起以年份作为发行版的版本号,保持了一年一更的频率。 - Mac\TeX\ 是 OS X 系统下的一个定制化的 \TeX\ Live 版本,与 \TeX\ Live 同步更新。 + Mac\TeX\ 是 macOS(OS X)系统下的一个定制化的 \TeX\ Live 版本,与 \TeX\ Live 同步更新。 \item \textbf{Mik\TeX}\par Mik\TeX\ 是主要用于 Windows 平台的一个稳定发展的 \TeX\ 发行版。 @@ -77,12 +77,12 @@ tlmgr update --list % 列出所有可更新的宏包 tlmgr repository set http://.../CTAN/systems/texlive/tlnet % 指定更新源(CTAN)地址 tlmgr info <package-name> % 查看宏包信息 - % 加 --list 选项可列出宏包的所有文件 + % 加 --list 参数可列出宏包的所有文件 \end{verbatim} \begin{verbatim} % MikTeX 命令行工具 mpm 的使用示例 -% 建议始终加 --admin 选项使用 +% 建议始终加 --admin 参数使用 mpm --admin --install <package-name> % 安装某个宏包 mpm --admin --uninstall <package-name> % 卸载某个宏包 mpm --admin --update % 更新所有宏包 @@ -95,7 +95,7 @@ mpm --admin --print-package-info <package-name> \TeX\ Live 默认安装所有宏包,而 Mik\TeX\ 的安装程序只包含了若干用于 \LaTeX\ 的基本宏包。从 \TeX\ Live 的光盘镜像和 Mik\-\TeX\ 的安装包体积可见一斑。 默认情况下,编译过程中如果遇到宏包未安装而报错的情况下,Mik\TeX\ 会弹出一个对话框,让用户可以选择临时安装宏包,安装成功后继续编译。 -\subsection{手动安装宏包}\label{sec:pkg-manual-install} +\subsection{手动安装宏包}\label{subsec:pkg-manual-install} \textbf{\textcolor{red}{如非万不得已,尽量不要手动安装宏包}}。绝大多数宏包都已打包到 \TeX\ Live 和 Mik\TeX\ 两大发行版的安装源, 可用宏包管理器安装。如果你知道某个宏包的名称,但不确定是否在发行版中已打包,可在 CTAN 中搜索。 diff --git a/Master/texmf-dist/doc/latex/lshort-chinese/src/chap/app.B.error.help.tex b/Master/texmf-dist/doc/latex/lshort-chinese/src/chap/app.B.error.help.tex index 679db7fa376..612642ae1e0 100644 --- a/Master/texmf-dist/doc/latex/lshort-chinese/src/chap/app.B.error.help.tex +++ b/Master/texmf-dist/doc/latex/lshort-chinese/src/chap/app.B.error.help.tex @@ -25,15 +25,15 @@ l.3 Test \LaTEx {} and it's friends. \end{verbatim} -这种错误信息分两部分,前一部分(一行或多行)提示了错误的原因,后一部分指出了错误发生的行号, -以及通过错落的文字告知发生错误的命令所在位置。如上错误显示 \cmd{LaTEx} 位置发生了错误,错误提示是“未定义的控制序列”, -意思是 \cmd{LaTEx} 是 \TeX\ 程序无法识别的一个命令,很显然是我们把 \cmd{LaTeX} 的大小写写错了。 +这种错误信息分两部分,前一部分提示了错误的信息,后一部分指出了错误发生的行号, +以及通过错落的文字告知发生错误的命令所在位置。如上错误显示 \cmd{LaTEx} 位置发生了错误,错误信息是“未定义的控制序列”, +意思是 \cmd{LaTEx} 是 \TeX\ 编译器无法识别的一个命令,很显然是我们把 \cmd{LaTeX} 的大小写写错了。 \subsubsection{处理方式} 出现错误时,编译过程将暂停,等待用户输入命令。用户可以直接敲回车跳过当前的错误,继续编译,相当于丢掉了写错的命令, -将``Test and it's friends.''编译出来。但这个例子过于简单,有些复杂的代码中,有可能会由于一个小问题导致一连串的错误。 -此时可以选择按 \textbf{S/R/Q} 选择跳过接下来的所有错误,或者按 \textbf{X} 直接退出编译。 +将``Test and it's friends.''排版出来。但这个例子过于简单,有些复杂的代码中,有可能会由于一个小问题导致一连串的错误。 +此时可以选择按 \textbf{S/R/Q} 选择跳过接下来的所有错误,或者按 \textbf{X} 直接退出编译,将源代码中的错误修改后重新编译。 \subsubsection{常见的 \LaTeX\ 错误信息} @@ -47,6 +47,10 @@ l.3 Test \LaTEx 使用了未定义的命令。拼写错误是原因之一,如把 \cmd{LaTeX} 写作 \cmd{Latex} 这样。 也有可能是没有调用某个宏包,但用了该宏包定义的命令。 +\item \LaTeXerror{! LaTeX error: Environment \ldots\ undefined.} + +使用了未定义的环境。 + \item \LaTeXerror{! Missing \$ inserted.} 缺少数学环境的符号 \texttt\$。多由于将数学符号用在公式之外而导致。 @@ -54,24 +58,26 @@ l.3 Test \LaTEx \item \LaTeXerror{Runaway argument? \\ ! Paragraph ended before \ldots\ was complete.} -\item \LaTeXerror{! File ended while scanning use of \ldots}. +\item \LaTeXerror{! File ended while scanning definition/use of \ldots} + +这两个错误主要是由于漏写了包裹命令参数的花括号,导致识别参数时出现错误。许多编辑器的括号配对功能有助于检查和消除这类错误。 -两个错误都是主要由于漏写了包裹命令参数的花括号,导致识别参数时出现错误。 +这类错误还有可能是由于前一次编译中断导致 \texttt{.aux} 等辅助文件不完整,再次编译读入不完整的文件产生错误。解决办法是删除辅助文件并重新编译。 \item \LaTeXerror{! Extra alignment tab has been changed to \cmd{cr}.} \item \LaTeXerror{! Misplaced \cmd{noalign}.} -两个错误都与表格有关。 +两个错误信息都与表格有关。 \begin{itemize} - \item 前者的字面意义是“一行中使用的列分隔符 \texttt\& 太多”,有的时候可能确实是 \texttt\& 的个数和列格式不匹配, - 但多数情况是漏了行尾的 \crcmd。 - \item 后者常出现于漏掉了行尾的 \crcmd\ 而接着使用 \cmd{hline} 画横线的时候。 + \item 前者的字面意义是“一行中使用的列分隔符 \texttt\& 太多”,有时可能确实是 \texttt\& 的个数和列格式不匹配, + 但多数情况是漏掉了行尾的 \crcmd\ 命令。 + \item 后者常出现于漏掉了行尾的 \crcmd\ 命令而接着使用 \cmd{hline} 命令画横线的时候。 \end{itemize} -\item \LaTeXerror{! LaTeX Error: Lonely \cmd{item}--perhaps a missing list environment.} +\item \LaTeXerror{! LaTeX Error: Lonely \cmd{item}-{}-perhaps a missing list environment.} -\item \LaTeXerror{! LaTeX Error: Something's wrong--perhaps a missing \cmd{item}.} +\item \LaTeXerror{! LaTeX Error: Something's wrong-{}-perhaps a missing \cmd{item}.} 两个错误信息都与列表环境和 \cmd{item} 命令有关。前者意味着在没有使用列表环境的情况下用了 \cmd{item}; 后者则相反,是在列表环境中漏了 \cmd{item}。 @@ -82,50 +88,49 @@ l.3 Test \LaTEx 两个错误都意味着缺少文件。 \begin{itemize} - \item 如果使用 \cmd{input} 或者 \cmd{include} 命令添加文件,文件不存在,文件名或路径不正确,将会出现上述错误; + \item 如果使用 \cmd{input} 或者 \cmd{include} 命令添加文件,出现上述错误的原因当然是文件不存在或者文件名不对; \item 如果错误提示里的文件名带 \texttt{.cls} 或者 \texttt{.sty} 扩展名,那么很显然,是因为\textbf{没有安装所需的宏包或文档类}。 \end{itemize} \item \LaTeXerror{! LaTeX Error: Missing \cmd{begin}\marg*{document}.} -字面上是缺少 \cmd{begin}\marg*{docu\-ment},实际上往往是由于在 \cmd{begin}\marg*{docu\-ment} 之前(导言区)输入了文字。 +字面上是缺少 \cmd{begin}\marg*{docu\-ment},实际上往往是由于在 \cmd{begin}\marg*{docu\-ment} 之前(导言区)输入了文字或某些命令。 \item \LaTeXerror{! LaTeX Error: Cam be used only in preamble.} -与上一条相反,由于将必须用于导言区的命令放到了 \cmd{begin}\marg*{docu\-ment} 之后使用而产生。 +与上一条相反,由于将必须用于导言区的命令在 \cmd{begin}\marg*{docu\-ment} 之后使用而产生。 -\item \LaTeXerror{! LaTeX Error: \cmd{begin}\marg*{\ldots} on input line \ldots ended by \cmd{end}\marg*{\ldots}.} +\item \LaTeXerror{! LaTeX Error: \cmd{begin}\marg*{\ldots} on input line \ldots\ ended by \cmd{end}\marg*{\ldots}.} -环境首尾不匹配。比如 \cmd{begin}\marg*{enumerate} 用了 \cmd{end}\marg*{itemize} 结尾。往往是由于漏写了 \cmd{begin} +环境首尾不匹配。比如 \cmd{begin}\marg*{enumerate} 用了 \cmd{end}\marg*{itemize} 结尾。或者也可能是由于漏写了 \cmd{begin} 或者 \cmd{end} 命令。 \item \LaTeXerror{! LaTeX Error: Option clash for package `\ldots'.} 以\textbf{不同选项}重复调用宏包造成冲突。有可能是因为其它宏包内部事先调用了这个宏包,用户再次带选项调用而导致冲突。 -可尝试去掉重复调用的宏包避免冲突。如果宏包允许的话,尽量使用其定义的命令改变设置,避免将设置作为宏包选项。 +解决问题的办法是去掉重复调用的宏包。如果宏包允许的话,尽量使用其定义的命令改变设置,减少宏包选项的使用。 -\item \LaTeXerror{! LaTeX Error: Command \ldots already defined, \\ - or name \cmd{end}\ldots illegal \ldots} +\item \LaTeXerror{! LaTeX Error: Command \ldots\ already defined, \\ + or name \cmd{end}\ldots\ illegal \ldots} -使用 \cmd{newcommand} 或 \cmd{newenvironment} 定义已有的命令/环境时产生的错误。如果自己确实使用了前述命令,可考虑改成 -\cmd{re\-new\-command} 或 \cmd{re\-new\-environment};如果是宏包定义的命令产生了这个错误,则属于隐性的宏包冲突。 +使用 \cmd{newcommand} 或 \cmd{newenvironment} 定义已有的命令/环境时产生的错误。如果自己确实作了定义,可考虑用 +\cmd{re\-new\-command} 或 \cmd{re\-new\-environment} 定义;如果是宏包定义的命令产生了这个错误,则属于隐性的宏包冲突。 -相比之前的 ``Option Clash'',隐性宏包冲突是更难以解决的问题,对各种宏包不熟悉的用户,尤其是使用模板的用户而言,往往难以下手。 -用户可尝试查找冲突的命令所在宏包的帮助手册。详尽的手册里通常会告知用户这个宏包应当用在某个宏包的前面/后面。 +相比之前的 ``Option Clash''{},隐性宏包冲突是更难以解决的问题,对各种宏包不熟悉的用户,尤其是使用模板的用户而言,往往难以下手。 +用户可尝试查找引起冲突的宏包的帮助手册。详尽的手册里通常会告知用户这个宏包应当在某个宏包的前面/后面调用,或者不能与某个宏包一起调用。 如果是模板调用了大量宏包导致冲突,可联系模板的作者解决。 \item \LaTeXerror{! LaTeX Error: Unknown option `\ldots' for package `\ldots'.} -调用宏包时使用了不能被其识别的选项。此时应该查找宏包的帮助文档来解决问题。 +调用宏包时指定了不能被其识别的选项。此时应该查找宏包的帮助文档来解决问题。 \item \LaTeXerror{! Package `\ldots' error: \ldots} -宏包或文档类自定义的错误,由于不正确地使用宏包里的命令而导致。 -此时应该查找宏包的帮助文档来解决问题。 +宏包或文档类自定义的错误,由于不正确地使用宏包里的命令而导致。此时应该查找宏包的帮助文档来解决问题。 \end{itemize} -\section{查看帮助文档}\label{sec:texdoc} +\section{查找帮助文档}\label{sec:texdoc} \index{texdoc@\texttt{texdoc} 工具} 无论是 \TeX\ Live 还是 Mik\TeX\ ,提供了一个命令行模式的程序 \texttt{texdoc}。 @@ -172,9 +177,9 @@ texdoc fancyhdr \item[mathtools] 数学公式扩展宏包,提供了公式编号定制和更多的符号、矩阵等。 \item[amsfonts] \AmS\ 扩展符号的基础字体支持。 \item[amssymb] 在 \pkg{amsfonts} 基础上将 \AmS\ 扩展符号定义成命令。 - \item[bm] 提供将符号加粗的命令 \cmd{bm}。 + \item[bm] 提供将数学符号加粗的命令 \cmd{bm}。 \item[siunitx] 以国际单位规范排版物理量的单位。 - \item[mhchem] 排版化学公式。 + \item[mhchem] 排版化学式和方程式。 \item[tipa] 排版国际音标。 \end{pkglist} @@ -183,6 +188,7 @@ texdoc fancyhdr \begin{pkglist} \item[ulem] 提供排版可断行下划线的命令 \cmd{uline} 以及其它装饰文字的命令。 \item[endnote] 排版尾注。 + \item[marginnote] 改善的边注排版功能。 \item[multicol] 提供将内容自由分栏的 \env{multicols} 环境。 \item[multitoc] 生成多栏排版的目录。 \item[minitoc] 为章节生成独立的小目录。 @@ -190,20 +196,24 @@ texdoc fancyhdr \item[verbatim] 对原始的 \env{verbatim} 环境的改善。提供了命令 \cmd{verbatim\-input} 调用源文件。 \item[fancyvrb] 提供了代码排版环境 \env{Verbatim} 以及对版式的自定义。 \item[listings] 提供了排版关键字高亮的代码环境 \env{lst\-listing} 以及对版式的自定义。类似宏包有 \pkg{minted}。 - \item[algorithm2e] 排版算法。 + \item[algorithmic] 一个简单的实现算法排版的宏包。如果要生成浮动体的话,需要搭配 \pkg{algorithm} 宏包使用。 + \item[algorithm2e] 较为复杂的、可定制的算法排版宏包。类似宏包有 \pkg{algorithmicx} 等。 \item[ntheorem] 定制定理环境。类似宏包包括 \pkg{theorem}、\pkg{thmtools}、\pkg{amsthm} 等。 + \item[mdframed] 排版可自动断页的带边框文字段落,提供边框样式的定制功能。 + \item[tcolorbox] 以 \TikZ\ 为基础提供排版样式丰富的彩色盒子的功能。 \end{pkglist} \subsection{图表和浮动体}\label{subsec:pkg-tab-fig} \begin{pkglist} - \item[booktabs] 制作三线表。 + \item[booktabs] 排版三线表。 \item[array] 对表格列格式的扩展。 \item[tabularx] 提供 \env{tabularx} 环境排版定宽表格,支持自动计算宽度的 X 列格式。 + \item[arydshln] 支持排版虚线表格线。 \item[colortbl] 支持修改表格的行、列、单元格的颜色。 \item[multirow] 支持合并多行单元格。 \item[makecell] 支持在单元格里排版多行内容(嵌套一个单列的小表格)。 - \item[diagbox] 制作斜线表头。 + \item[diagbox] 排版斜线表头。 \item[longtable] 提供排版跨页长表格的 \env{longtable} 环境。 \item[ltxtable] 跨页长表格可使用 \env{tabularx} 的 X 列格式。 \item[tabu] 提供排版复杂格式表格的 \env{tabu} 环境。与 \pkg{longtable} 一同调用时,提供排版复杂格式跨页长表格的 \env{longtabu} 环境。 @@ -212,8 +222,9 @@ texdoc fancyhdr \item[epstopdf] \texttt{pdflatex} 命令下支持 EPS 格式的矢量图。 \item[wrapfig] 支持简单的文字在图片周围的绕排。 \item[subfig] 提供子图表和子标题的排版。类似宏包有 \pkg{subfigure} 和 \pkg{subcaption} 等。 - \item[caption] 控制图表标题的格式。 - \item[float] 为浮动体提供不浮动的 H 模式;提供自定义的浮动体结构。 + \item[caption] 控制浮动体标题的格式。 + \item[bicaption] 生成双语浮动体标题。 + \item[float] 为浮动体提供不浮动的 H 模式;提供自定义浮动体结构的功能。 \end{pkglist} \subsection{修改版式}\label{subsec:pkg-layout} @@ -227,7 +238,9 @@ texdoc fancyhdr \item[tocbibind] 支持将目录、参考文献、索引本身写入目录项。 \item[footmisc] 修改脚注 \cmd{footnote} 的格式。 \item[indentfirst] 令章节标题后的第一段首行缩进。 + \item[enumerate] 提供简单的自定义标签格式的 \env{enumerate} 环境。 \item[enumitem] 修改列表环境 \env{enumerate} 和 \env{itemize} 等的格式。 + \item[lettrine] 生成段落首字母大写的效果。 \end{pkglist} \endinput
\ No newline at end of file diff --git a/Master/texmf-dist/doc/latex/lshort-chinese/src/chap/biblio.tex b/Master/texmf-dist/doc/latex/lshort-chinese/src/chap/biblio.tex index a0dcd5d0613..53d3b5c5ba1 100644 --- a/Master/texmf-dist/doc/latex/lshort-chinese/src/chap/biblio.tex +++ b/Master/texmf-dist/doc/latex/lshort-chinese/src/chap/biblio.tex @@ -22,7 +22,7 @@ \newblock \emph{\LaTeX\ 入门}. \newblock 电子工业出版社, 北京, 2013, ISBN~978-7-121-20208-7. -\item[\S] {\bfseries \TeX\ 经典书籍,介绍底层的命令和排版方式,有志深入学习 \LaTeX\ 或参与宏包开发者必读。有一些书籍已经开放网络资源:} +\item[\S] {\bfseries \TeX\ 经典书籍,介绍底层的命令和排版方式,有志深入学习 \LaTeX\ 者或参与宏包开发者必读。有一些书籍已经开放网络资源:} \bibitem{texbook} Donald~E. Knuth. \newblock \emph{The \TeX book}, Volume~A of \textit{Computers and Typesetting}, 2nd edition. \newblock Addison-Wesley, Reading, Massachusetts, 1984, ISBN~0-201-13448-9. diff --git a/Master/texmf-dist/doc/latex/lshort-chinese/src/chap/chap.01.basics.tex b/Master/texmf-dist/doc/latex/lshort-chinese/src/chap/chap.01.basics.tex index d0364ffc0ed..60b7ed229ef 100644 --- a/Master/texmf-dist/doc/latex/lshort-chinese/src/chap/chap.01.basics.tex +++ b/Master/texmf-dist/doc/latex/lshort-chinese/src/chap/chap.01.basics.tex @@ -30,9 +30,9 @@ 当下 \LaTeX\ 主要的维护者为 Frank Mittelbach。 \LaTeX\ 读作 ``Lah-tech'' 或者 ``Lay-tech'' ,近似于汉字“拉泰赫”或“雷泰赫”。\LaTeX\ 在 ASCII 字符环境写作 \texttt{LaTeX}。 -当前的 \LaTeX\ 版本为 \LaTeXe\ ,意思是超出了第二版,接近但没达到第三版,在 ASCII 字符环境写作 \texttt{LaTeX2e}。 +当前的 \LaTeX\ 版本为 \LaTeXe ,意思是超出了第二版,接近但没达到第三版,在 ASCII 字符环境写作 \texttt{LaTeX2e}。 -\subsection{\LaTeX 的优缺点}\label{subec:advs} +\subsection{\LaTeX\ 的优缺点}\label{subec:advs} \LaTeX\ 总会拿来和一些“所见即所得”(What You See Is What You Get)的文字处理和排版工具比较优缺点。 笔者认为这种比较并不值得提倡,毕竟所有工具都有自己值得使用的原因。 @@ -44,7 +44,7 @@ \item 方便而强大的数学公式排版能力,无出其右。 - \item 绝大多数时候,用户只需掌握一些简单易懂的命令来组织文档结构,无需(或很少)操心文档的版面设计。 + \item 绝大多数时候,用户只需专注于一些组织文档结构的基础命令,无需(或很少)操心文档的版面设计。 \item 很容易生成复杂的专业排版元素,如脚注、交叉引用、参考文献、目录等。 @@ -54,13 +54,13 @@ \item \LaTeX\ 促使用户写出结构良好的文档——而这也是 \LaTeX\ 存在的初衷。 \item \LaTeX\ 依赖的 \TeX\ 排版引擎和其它软件是跨平台、免费、开源的。 - 无论用户使用的是 Windows,OS X,GNU/Linux 还是 FreeBSD 等系统,都能轻松获得并使用这一强大的排版工具。 + 无论用户使用的是 Windows,macOS(OS X),GNU/Linux 还是 FreeBSD 等操作系统,都能轻松获得和使用这一强大的排版工具。 \end{itemize} \LaTeX\ 的缺点也是显而易见的: \begin{itemize} \item 入门门槛高。本手册的副标题叫做 “\pageref{lshort-minutes}~分钟了解 \LaTeXe ”, - 实际上 \pageref{lshort-minutes} 是本手册正文部分的页数。如果你以平均一页一分钟的速度看完了本手册, + 实际上 \pageref{lshort-minutes} 是本手册正文部分(包括附录)的页数。如果你以平均一页一分钟的速度看完了本手册, 你只是粗窥门径而已,离学会它还很远。 \item 排查错误困难。\LaTeX\ 作为一个依靠编写代码工作的排版工具,其使用的宏语言比 C++ 或 Python 等程序设计语言在错误排查方面困难得多。 @@ -83,7 +83,7 @@ TeXworks / TeXstudio / WinEdt 等提供了一些语法高亮、命令补全等 \subsection{\LaTeX\ 命令和环境}\label{subsec:cmds} \index{LaTeX macro@\LaTeX\ 命令} -\LaTeX\ 命令以反斜线 \texttt\textbackslash 开头,为以下两种形式之一: +\LaTeX\ 命令以反斜线 \texttt{\textbackslash} 开头,为以下两种形式之一: \begin{itemize} \item 反斜线和后面的一串字母,如 \cmd{LaTeX}。它们以任意非字母符号(空格、数字、标点等)作为分隔符。 \item 反斜线和后面的一个非字母符号,如 \cmd{\$}。它们无需分隔符。 @@ -107,9 +107,6 @@ or \TeX{} users? 有些命令带一个或多个可选参数,以方括号 \texttt[ 和 \texttt] 包裹。 还有些命令在命令名称后可以带一个星号 \texttt*,带星号和不带星号的命令效果有一定差异。 -\pinyinindex{fenzu}{分组} -\LaTeX\ 的花括号本身也起到\textbf{分组}的作用,可以将字体、格式等的更改限制在大括号范围之内。 - \index{LaTeX environment@\LaTeX\ 环境} \cmdindex{begin,end} \LaTeX\ 还引入了\textbf{环境}的用法,用以令一些效果在局部生效,或是生成特定的文档元素。 @@ -123,6 +120,10 @@ or \TeX{} users? 其中 \Arg{environment name} 为环境名,\cmd{begin} 和 \cmd{end} 中填写的环境名应当一致。 \cmd{begin} 在 \Arg{environment name} 后可以带一个或多个参数,甚至可选参数。环境允许嵌套使用。 +\pinyinindex{fenzu}{分组} +除了 \LaTeX\ 环境之外,花括号本身也起到\textbf{分组}的作用,起到类似环境的令效果在局部生效的作用, +例如 \ref{subsec:fontshape} 和 \ref{subsec:fontsize} 小节中介绍的修改字体和字号的命令用法。 + \subsection{\LaTeX\ 源代码结构}\label{subsec:struct} \cmdindex{documentclass} @@ -150,7 +151,7 @@ or \TeX{} users? 在 \cmd{documentclass} 和 \cmd{begin}\marg*{document} 之间的位置称为\textbf{导言区},除了使用 \cmd{use\-package} 调用宏包之外,一些对文档的全局设置命令也在这里使用。当然也可以什么都不写,一个宏包都不调用。一切视自己需求。 -\section{用命令行操作 \LaTeX} +\section{用命令行操作 \LaTeX}\label{sec:run} 相信你看到这里已经急不可耐地想要写一个 \LaTeX\ 源代码试一试了。我们这就给一个最小的例子,见源代码 \ref{code:hello-world}。 @@ -164,10 +165,10 @@ or \TeX{} users? \caption{\LaTeX\ 的一个最简单的源代码示例。}\label{code:hello-world} \end{sourcecode} -有相当多的编辑器会提供一个按钮完成编译,不过笔者仍然觉得有必要了解一下其背后的工作原理。\LaTeX\ 调用的程序都是基于命令行的, -所以建议打开 Windows 命令提示符或者 Linux / OS X 的终端,按照本手册的范例尝试一下调用命令行程序编译。 +有相当多的编辑器会提供“编译”按钮,不过笔者仍然觉得有必要了解一下其背后的工作原理。\LaTeX\ 调用的程序都是基于命令行的, +所以建议打开 Windows 命令提示符或者 Linux / macOS(OS X)的终端,按照本手册的范例尝试一下调用命令行程序编译。 -\subsection{引擎、格式和命令} +\subsection{引擎、格式和命令}\label{subsec:concepts} \pinyinindex{paibanyinqing}{排版引擎} \index{pdfTeX@\hologo{pdfTeX}} @@ -178,7 +179,7 @@ or \TeX{} users? \item[格式] 是定义了一组命令的代码集。\LaTeX\ 就是最广泛应用的一个格式,高德纳本人还编写了一个简单的 plain \TeX\ 格式, 没有定义诸如 \cmd{document\-class} 和 \cmd{section} 等等命令。 \item[命令] 是引擎和格式二者的结合体。如下文要用到的 \texttt{pdflatex} 命令是结合 \hologo{pdfTeX} - 引擎和 \LaTeX\ 格式的一个命令,用于编译类似源代码 \ref{code:hello-world} 的代码并输出 PDF。 + 引擎和 \LaTeX\ 格式的一个命令,用于编译类似源代码 \ref{code:hello-world} 的代码并生成文档。 \end{description} \texttt{latex} 命令和 \LaTeX\ 格式往往容易混淆,在同他人讨论关于 \LaTeX\ 的时候需要明确。 @@ -199,7 +200,7 @@ or \TeX{} users? \end{center} \footnotetext{现今的发行版中 \texttt{latex} 命令也用 \hologo{pdfTeX} 引擎结合 \LaTeX\ 格式,输出扩展名为 DVI 的文档。} -\subsection{\texttt{latex}命令} +\subsection{\texttt{latex} 命令}\label{subsec:latex-exe} 假使你的计算机上已经安装了 \LaTeX\ 依赖的程序和工具(安装方法在附录 \ref{app:install} 有简单介绍)。 我们将源代码 \ref{code:hello-world} 拷贝到一个文本文件中,保存为 \texttt{helloworld.tex}。然后在命令行输入: @@ -208,8 +209,8 @@ latex helloworld.tex \end{verbatim} (也可以输入不带扩展名的 \texttt{latex helloworld})。 -此时命令行界面会闪过许多信息。如果一切正常,再行检查目录,会发现生成了 \texttt{hello\-world.dvi} 以及其它文件。 -这个扩展名为 DVI 的文件就是编译输出的文档。 +此时命令行会闪过许多信息。如果一切正常,在目录中将生成 \texttt{hello\-world.dvi} 以及其它文件。 +这个扩展名为 \texttt{dvi} 的文件就是编译生成的文档。 Linux 系统下,可以在命令行调用 \texttt{xdvi} 程序打开这个文档: \begin{verbatim} @@ -219,14 +220,14 @@ xdvi helloworld.dvi Windows 系统下大多预装了 yap 软件(Mik\TeX) 或 dviout 软件(\TeX\ Live),可以双击 \texttt{hello\-world.dvi} 打开它。 \index{dvipdfmx@\texttt{dvipdfmx} 命令} -要进一步生成现今流行的 PDF 文档格式,我们还需要用额外的命令将 DVI 转为 PDF: +要进一步生成现今流行的 PDF 文档格式,我们还需要用额外的程序将 \texttt{dvi} 转为 \texttt{pdf}: \begin{verbatim} dvipdfmx helloworld.dvi \end{verbatim} 然后就可以用查看 PDF 的软件 (Adobe Reader / Foxit Reader 等)打开生成的 \texttt{hello\-world.pdf} 查看了。 -\subsection{\texttt{pdflatex} 和 \texttt{xelatex} 命令} +\subsection{\texttt{pdflatex} 和 \texttt{xelatex} 命令}\label{subsec:pdflatex-exe} \index{pdflatex@\texttt{pdflatex} 命令} 这两个命令相比于 \texttt{latex} 命令更为方便,我们可以直接生成 PDF: @@ -275,7 +276,7 @@ xelatex helloworld.tex \begin{description} \item [\texttt{proc}] 基于 \cls{article} 文档类的一个简单的学术文档模板。 \item [\texttt{slides}] 幻灯格式的文档类,使用无衬线字体。 - \item [\texttt{minimal}] 一个极其精简的文档类,只设定了纸张大小和字号, + \item [\texttt{minimal}] 一个极其精简的文档类,只设定了纸张大小和基本字号, 用作代码测试的最小工作示例(Minimal Working Example)。 \end{description} \hrule @@ -283,13 +284,13 @@ xelatex helloworld.tex \pinyinindex{xuanxiang}{选项(宏包/文档类)} 可选参数 \Arg{options} 为文档类指定选项,以全局地影响文档布局的参数,如字号、纸张大小、单双面等等。 -\LaTeX\ 的三个标准文档类可指定的选项见表 \ref{tbl:ltx-options}。 - 比如调用 \cls{article} 文档类排版文章,指定纸张为 A4 大小,基本字号为 11pt,双面排版: \begin{verbatim} \documentclass[11pt,twoside,a4paper]{article} \end{verbatim} +\LaTeX\ 的三个标准文档类可指定的选项见表 \ref{tbl:ltx-options}。 + \begin{table}[htp] \caption{\LaTeX\ 的三个标准文档类可指定的选项}\label{tbl:ltx-options} \hrule @@ -334,13 +335,13 @@ xelatex helloworld.tex \footnote{使用多个宏包时指定选项,相当于给每个宏包指定同样的选项。如果有某个宏包不能识别某个选项,则会出错。}: \begin{verbatim} % 一次性载入三个排版表格常用的宏包 -\usepackage{tabularx,longtable,multirow} +\usepackage{tabularx,makecell,multirow} \end{verbatim} 附录 \ref{sec:pkg-list} 汇总了常用的一些宏包。我们在手册接下来的章节中,也会穿插介绍一些最常用的宏包的使用方法。 在使用宏包和文档类之前,一定要首先确认它们是否安装在你的计算机中,否则 \cmd{use\-package} 等命令会报错误。 -详见附录 \ref{sec:pkg-manager} 。 +详见附录 \ref{sec:pkg-manager}。 每个宏包(包括前面所说的文档类)都定义了许多命令和环境,或者修改了 \LaTeX\ 已有的命令和环境。 为了明白它们的用法,需要查阅宏包和文档类的帮助手册。使用方法是在 Windows 命令提示符或者 Linux 终端下输入命令: diff --git a/Master/texmf-dist/doc/latex/lshort-chinese/src/chap/chap.02.text.tex b/Master/texmf-dist/doc/latex/lshort-chinese/src/chap/chap.02.text.tex index 62c0c99bd6d..fdc916e0241 100644 --- a/Master/texmf-dist/doc/latex/lshort-chinese/src/chap/chap.02.text.tex +++ b/Master/texmf-dist/doc/latex/lshort-chinese/src/chap/chap.02.text.tex @@ -32,13 +32,13 @@ ASCII (美国通用信息交换码)使用 0x00-0x7F 对文字编码,也就 \pkgindex{inputenc} 现在的 \TeX\ 程序支持 8-bit,能够识别源代码里编码处于 0x80-0xFF 范围的字符。 西欧(拉丁字母)、俄语系(西里尔字母)等语言的编码方案刚好能够利用 0x80-0xFF 这个范围,处理起来较为方便。 -\texttt{latex} 命令及 \texttt{pdflatex} 命令下,这些编码的处理由 \pkg{inputenc} 宏包支持。比如将源代码保存为 Latin-1 编码,并在导言区使用: +\texttt{latex} 命令及 \texttt{pdflatex} 命令下,这些编码的处理由 \pkg{inputenc} 宏包支持。 +比如将源代码保存为 Latin-1 编码,并在导言区调用宏包: \begin{verbatim} \usepackage[latin1]{inputenc} \end{verbatim} 接下来,M\"obius 就直接可以通过(用适当输入法)输入 \texttt{M\"obius} 得到了。 -其它一些语言也可以使用 \pkg{inputenc} 宏包配合 \pkg{babel} 宏包排版。 \index{bianma@编码!GBK} GBK 等编码是多字节编码,ASCII 字符为一个字节,汉字等非 ASCII 字符为两个字节,这就需要借助一些宏包进行较为复杂的判断和处理。 @@ -65,14 +65,14 @@ Unicode 是一个多国字符的集合,覆盖了几乎全球范围内的语言 \subsection{\pkg{xeCJK} 宏包}\label{subsec:xeCJK} -用 \LaTeX\ 排版中文的一大门槛是中文字体。\TeX\ 使用的字体格式仅支持不超过 256 个字符,要想排版中文,比如旧式的 \pkg{CJK} 宏包, -往往需要复杂的预处理,将中文字体拆分成数百个小字体,非常麻烦% +用 \LaTeX\ 排版中文的一大难题是中文字体的处理。\TeX\ 使用的字体格式仅支持不超过 256 个字符, +旧式的中文排版方案如 \pkg{CJK} 宏包往往需要复杂的预处理,将中文字体拆分成数百个小字体,非常麻烦% \footnote{现在的 \texttt{pdflatex} 以及 \texttt{latex} + \texttt{dvipdfmx} 命令通过字体映射的方式支持直接使用中文字体,不需要经过预处理, 但仍然是不方便新手操作的。}。 \index{xelatex@\texttt{xelatex} 命令} \pkgindex{xeCJK} -\texttt{xelatex} 命令支持直接使用系统安装的 TrueType (\texttt{.ttf}) / OpenType(\texttt{.otf}) 等格式的字体,加上对 UTF-8 编码的原生支持, +\texttt{xelatex} 命令支持直接使用系统安装的 TrueType (\texttt{.ttf}) / OpenType (\texttt{.otf}) 等格式的字体,加上对 UTF-8 编码的原生支持, 免去了预处理字体的麻烦。在此基础上的 \pkg{xeCJK} 宏包更进一步完善了排版中文的一些细节,比如中英文之间插入空隙、 中文行尾的回车不引入空格、标点符号不出现在行首,等等。 @@ -128,8 +128,8 @@ starts a new line. \subsection{注释}\label{subsec:comments} \index{%@\texttt\% (\textit{注释})} -\LaTeX\ 用 \texttt\% 字符作为注释。在这个字符之后直到行末,所有的字符都被忽略,连同回车引入的空格。 -我们需要注意以下示例中“回车引入的空格被忽略”的效果: +\LaTeX\ 用 \texttt\% 字符作为注释。在这个字符之后直到行末,所有的字符都被忽略, +行末的回车也不引入空格。见如下示例: \begin{example} This is an % short comment % --- @@ -161,7 +161,7 @@ ak a word. \subsection{连字}\label{subsec:ligatures} -西文排版中经常会出现连字(Ligatures),常见的有 ff / fi / fl / ffi / ffl。 +西文排版中经常会出现连字(Ligatures),常见的有 ff / fi / fl / ffi / ffl{}。 \begin{example} It's difficult to find \ldots .\\ It's dif{}f{}icult to f{}ind \ldots . @@ -241,11 +241,11 @@ Stra\ss e \begin{tabular}{*4{cl}} \hline \TACC{\`}{o} & \TACC{\'}{o} & \TACC{\^}{o} & \TACC{\~}{o} \\ - \TACC{\=}{o} & \TACC{\.}{o} & \TACC{\"}{o} & \TTACC{\c}{c}\\ + \TACC{\=}{o} & \TACC{\.}{o} & \TACC{\"}{o} & \TTACC{\r}{o}\\ \TTACC{\u}{o} & \TTACC{\v}{o} & \TTACC{\H}{o} & \TTACC{\c}{o} \\ \TTACC{\d}{o} & \TTACC{\b}{o} & \WTACC{\t}{oo} \\[6pt] \TSYM{\oe} & \TSYM{\OE} & \TSYM{\ae} & \TSYM{\AE} \\ - \TSYM{\aa} & \TSYM{\AA} \\[6pt] + \TSYM{\aa} & \TSYM{\AA} & \TSYM{\ss} \\[6pt] \TSYM{\o} & \TSYM{\O} & \TSYM{\l} & \TSYM{\L} \\ \TSYM{\i} & \TSYM{\j} & !` & \verb|!`| & ?` & \verb|?`| \\ \hline @@ -318,17 +318,18 @@ words}, are shown here. \section{断行和断页}\label{sec:break} -\LaTeX\ 将一个段落的文档在合适的位置进行断行,尽可能做到每行的宽度一致,并且单词间距匀称。 -文字段落和公式、图表等内容顺序排布,并在合适的位置断页,分割成匀称的页面。 +\LaTeX\ 将文字段落在合适的位置进行断行,尽可能做到每行的宽度一致,并且单词间距匀称。 +文字段落和公式、图表等内容从上到下顺序排布,并在合适的位置断页,分割成匀称的页面。 在绝大多数时候,我们无需自己操心断行和断页。但偶尔会遇到需要手工调整的地方。 \subsection{单词间距和断行}\label{subsec:interword} 通常情况下,断行的位置尽可能选取在两个单词之间,也就是你输入到源文件中的“空格”。 -没有断开的单词间位置则插入一小段间距,间距是根据行宽和文字自动调整的,文字密一些的地方,单词间距就略窄,反之略宽。 +一般情况下,这个“空格”生成一个间距,它会根据行宽和文字自动调整,文字密一些的地方,单词间距就略窄,反之略宽。 \index{~@\texttt\textasciitilde\ (\textit{不断行空格})} -我们可以使用字符 \texttt\textasciitilde 在合适的位置插入一个空格,并且这个空格不能被断开,通常用在英文人名、图表名称等场景: +我们可以使用字符 \texttt\textasciitilde 在合适的位置插入一个不会断行的空格(高德纳称之为 tie,“带子”), +通常用在英文人名、图表名称等场景: \begin{example} Fig.~2a \\ Donale~E. Knuth @@ -371,7 +372,7 @@ Donale~E. Knuth \subsection{断词}\label{subsec:hyphen} 如果 \LaTeX\ 遇到了很长的英文单词,仅在单词之间的位置断行无法生成宽度匀称的行时,就要考虑从单词中间断开。 -对于绝大部分单词,\LaTeX\ 能够找到合适的断词位置,在断开的行尾加上连字符 -。 +对于绝大部分单词,\LaTeX\ 能够找到合适的断词位置,在断开的行尾加上连字符 \char\hyphenchar\font 。 \index{-@\cmd{-} (\textit{断词})} 如果一些单词没能自动断词,我们可以在单词内手动使用 \cmd{-} 命令指定断词的位置: diff --git a/Master/texmf-dist/doc/latex/lshort-chinese/src/chap/chap.03.elements.tex b/Master/texmf-dist/doc/latex/lshort-chinese/src/chap/chap.03.elements.tex index 6e37adb5b73..3c7f21d48b5 100644 --- a/Master/texmf-dist/doc/latex/lshort-chinese/src/chap/chap.03.elements.tex +++ b/Master/texmf-dist/doc/latex/lshort-chinese/src/chap/chap.03.elements.tex @@ -9,31 +9,29 @@ \subsection{章节标题}\label{subsec:secs} -\cmdindex{section,subsection,subsubsection,paragraph,subparagraph} +\cmdindex{chapter,section,subsection,subsubsection,paragraph,subparagraph} +\clsindex{article,book,report} + 一篇结构化的、条理清晰文档一定是层次分明的,通过不同的命令分割为章、节、小节。\LaTeX\ 的三个标准文档类 \cls{article}、\cls{report} 和 \cls{book}% -\footnote{千万注意是\textbf{标准文档类},其它文档类可能没有定义或只定义了一部分,如 \cls{beamer} 或 \cls{moderncv} 等。}% +\footnote{千万注意是\textbf{标准文档类},其它文档类,如果不是从标准文档类衍生而来, +很可能没有定义或只定义了一部分命令,如 \cls{beamer} 或 \cls{moderncv} 等。}% 提供了一系列命令,用以划分章节、生成章节标题并自动编号: \begin{command} -\cmd{section}\marg{title} \quad +\cmd{chapter}\marg{title} \quad +\cmd{section}\marg{title} \\ \cmd{subsection}\marg{title} \quad \cmd{subsubsection}\marg{title} \\ \cmd{paragraph}\marg{title} \quad \cmd{subparagraph}\marg{title} \end{command} +其中 \cmd{chapter} \textbf{只在 \cls{book} 和 \cls{report} 文档类有定义}。 \cmdindex{part} -\cmd{part} 命令用以将整个文档分割为大的分块,但不影响 \cmd{section} 等的编号: +\cmd{part} 命令用以将整个文档分割为大的分块,但不影响 \cmd{chapter} 或 \cmd{section} 等的编号: \begin{command} \cmd{part}\marg{title} \end{command} -\cmdindex{chapter} -\clsindex{book,report} -\cls{book} 和 \cls{report} 提供了章一级的结构: -\begin{command} -\cmd{chapter}\marg{title} -\end{command} - 上述命令除了生成带编号的标题之外,还向目录中添加条目,并影响页眉页脚的内容(详见 \ref{sec:pagestyle} 节)。每个命令有两种变体: \begin{itemize} \item 带可选参数的变体:\cmd{section}\oarg{short title}\marg{title}\par @@ -42,8 +40,15 @@ 标题不带编号,也不生成目录项和页眉页脚。 \end{itemize} +较低层次如 \cmd{paragraph} 和 \cmd{subparagraph} 即使不用带星号的变体,生成的标题默认也不带编号,事实上,除 \cmd{part} 外: +\begin{itemize} + \item \cls{article} 文档类带编号的层级为 \cmd{section} / \cmd{subsection} / \cmd{sub\-sub\-section} 三级; + \item \cls{report}/\cls{book} 文档类带编号的层级为 \cmd{chapter} / \cmd{section} / \cmd{sub\-section} 三级。 +\end{itemize} +对此的详细解释和调整方法见 \ref{subsec:latex-counts} 小节。 + \pkgindex{titlesec} -\LaTeX\ 并未提供为 \cmd{section} 等章节命令定制格式的功能,这一功能由 \pkg{titlesec} 宏包提供。详情请参考宏包的帮助手册。 +\LaTeX\ 及标准文档类并未提供为 \cmd{section} 等章节命令定制格式的功能,这一功能由 \pkg{titlesec} 宏包提供。详情请参考宏包的帮助手册。 \subsection{目录}\label{sec:toc} @@ -53,21 +58,24 @@ \cmd{tableofcontents} \end{command} -正确生成目录项,一般需要多次编译源代码。 +这个命令会生成单独的一个章节,标题默认为 ``Contents''{},可通过 \ref{sec:latex-settings} 节给出的方法定制标题。 + +正确生成目录项,一般需要编译两次源代码。 \cmdindex{addcontentsline} -有时我们使用了 \cmd{chapter*} 或 \cmd{section*} 这样不生成目录项的命令,而又想手动生成该章节的目录,可以在标题命令后面使用: +有时我们使用了 \cmd{chapter*} 或 \cmd{section*} 这样不生成目录项的章节标题命令, +而又想手动生成该章节的目录项,可以在标题命令后面使用: \begin{command} \cmd{addcontentsline}\marg*{toc}\marg{level}\marg{title} \end{command} -其中 \Arg{level} 为章节层次 \texttt{chapter} 或 \texttt{section} 等,\Arg{title} 为需要生成目录项的章节标题。 +其中 \Arg{level} 为章节层次 \texttt{chapter} 或 \texttt{section} 等,\Arg{title} 为出现于目录项的章节标题。 \subsection{文档结构的划分}\label{sec:matters} \cmdindex{appendix} 所有标准文档类都提供了一个 \cmd{appendix} 命令将正文和附录分开% -\footnote{有的地方可能写作 \cmd{begin} \marg*{appendix} \ldots \cmd{end} \marg*{appendix} 这样, +\footnote{有的参考文档可能使用 \cmd{begin} \marg*{appendix} \ldots \cmd{end} \marg*{appendix} 这样的写法, 虽然有效,但并不规范,只要使用 \cmd{appendix} 命令就够了。}, 使用 \cmd{appendix} 后,最高一级章节改为使用拉丁字母编号,从 A 开始。 @@ -75,9 +83,9 @@ \cmdindex{frontmatter,mainmatter,backmatter} \cls{book} 文档类还提供了前言、正文、后记结构的划分命令: \begin{description} - \item[\cmd{frontmatter}] 前言部分,页码为小写罗马字母格式;其后的章节不编号(但生成页眉页脚和目录项)。 - \item[\cmd{mainmatter}] 正文部分,页码改回数字格式,并从 1 开始计数;其后的章节正常编号。 - \item[\cmd{backmatter}] 后记部分,页码继续正常计数,格式不变;其后的章节不编号,类似 \cmd{frontmatter} 命令。 + \item[\cmd{frontmatter}] 前言部分,页码为小写罗马字母格式;其后的 \cmd{chapter} 不编号。 + \item[\cmd{mainmatter}] 正文部分,页码为阿拉伯数字格式,从 1 开始计数;其后的章节编号正常。 + \item[\cmd{backmatter}] 后记部分,页码格式不变,继续正常计数;其后的 \cmd{chapter} 不编号。 \end{description} \cmdindex{include} @@ -126,13 +134,15 @@ \cmd{author}\marg{author} \quad \cmd{date}\marg{date} \end{command} -其中前两个命令是必须的,\cmd{date} 命令可选。\LaTeX\ 还提供了一个 \cmd{today} 命令自动生成当前日期, -可用在 \cmd{date} 的参数里,或者别的地方。 +其中前两个命令是必须的(不用 \cmd{title} 会报错;不用 \cmd{author} 会警告),\cmd{date} 命令可选。 +\LaTeX\ 还提供了一个 \cmd{today} 命令自动生成当前日期,\cmd{date} 默认使用 \cmd{today}。 -\cmdindex{thanks} -在 \cmd{title}、\cmd{author} 等命令内可以使用 \cmd{thanks} 命令生成标题页的脚注,如: +\cmdindex{thanks,and} +在 \cmd{title}、\cmd{author} 等命令内可以使用 \cmd{thanks} 命令生成标题页的脚注,用 \cmd{and} 隔开多个人名,如: \begin{verbatim} -\author{Mary\thanks{E-mail:*****@***.com}} +\author{Mary\thanks{E-mail:*****@***.com} + \and Ted\thanks{Corresponding author} + \and Louis} \end{verbatim} \cmdindex{maketitle} @@ -142,7 +152,22 @@ \cmd{maketitle} \end{command} 生成一个简单的标题页了。\cls{article} 文档类的标题默认不单独成页,而 \cls{report} 和 \cls{book} 默认单独成页。 -可在 \cmd{document\-class} 命令中指定 \texttt{titlepage / notitlepage} 选项修改。 +可在 \cmd{document\-class} 命令调用文档类时指定 \texttt{titlepage / notitlepage} 选项以修改默认的行为。 + +\envindex{titlepage} +\LaTeX\ 标准类还提供了一个简单的 \env{titlepage} 环境,生成不带页眉页脚的一页。用户可以在这个环境中使用各种排版元素自由发挥, +生成自定义的标题页以替代 \cmd{maketitle} 命令。甚至可以利用 \env{titlepage} 环境重新定义 \cmd{maketitle}: +\begin{verbatim} +\renewcommand{\maketitle}{\begin{titlepage} +... % 用户自定义命令 +\end{titlepage}} +\end{verbatim} + +事实上,为标准文档类指定了 \texttt{titlepage} 选项以后,使用 \cmd{maketitle} 命令生成的标题页就是一个 \env{titlepage} 环境。 + +以上是 \LaTeX\ 标准文档类的标题页相关命令用法。在各种文档模板中经常有自定义的标题页, +有可能需要除了 \cmd{title} 和 \cmd{author} 以外的命令给定信息,用法也可能与标准文档类的不一致 +(甚至有些模板可能没有定义 \env{titlepage} 等环境)。使用文档模板前\textbf{一定要仔细阅读文档模板的帮助手册}。 \section{交叉引用}\label{sec:crossref} @@ -196,10 +221,9 @@ page~\pageref{sec:this}.'' “天地玄黄,宇宙洪荒。日月盈昃,辰宿列张。”\footnote{出自《千字文》。} \cmdindex{footnotemark,footnotetext} -有些情况下(比如在表格环境、盒子内)使用 \cmd{footnote} 并不能正确生成脚注。我们可以分两步进行, -先使用 \cmd{foot\-note\-mark} 为脚注计数,再在合适的位置用 \cmd{foot\-note\-text} 生成脚注。 +有些情况下(比如在表格环境、各种盒子内)使用 \cmd{footnote} 并不能正确生成脚注。我们可以分两步进行, +先使用 \cmd{foot\-note\-mark} 为脚注计数,再在合适的位置用 \cmd{foot\-note\-text} 生成脚注。比如: -比如: \begin{verbatim} \begin{tabular}{l} \hline @@ -274,16 +298,17 @@ page~\pageref{sec:this}.'' \end{description} \end{example} -默认的列表间距比较宽,\LaTeX\ 本身也未提供方便的定制功能,而要用到 \pkg{enumitem} 宏包。有兴趣的读者可参考其帮助手册。 +默认的列表间距比较宽,\LaTeX\ 本身也未提供方便的定制功能,而要用到 \pkg{enumitem} 宏包定制各种列表间距。 +\pkg{enumitem} 宏包还提供了对列表标签、引用等的定制。有兴趣的读者可参考其帮助手册。 \subsection{对齐环境}\label{subsec:flush} \envindex{center,flushleft,flushright} \env{center}、\env{flush\-left} 和 \env{flush\-right} 环境分别用于生成居中、左对齐和右对齐的文本环境。 \begin{command} -\cmd{begin}\marg*{center} -\ldots -\cmd{end}\marg*{center} +\cmd{begin}\marg*{center} \ldots\ \cmd{end}\marg*{center} \\ +\cmd{begin}\marg*{flushleft} \ldots\ \cmd{end}\marg*{flushleft} \\ +\cmd{begin}\marg*{flushright} \ldots\ \cmd{end}\marg*{flushright} \end{command} \begin{example} @@ -320,7 +345,7 @@ Left-aligned text paragraph. Right-aligned text paragraph. \end{example} -三个命令和对应的环境经常被误用,有直接用所谓 \cmd{flushleft} 命令或者 \env{raggedright} 环境的,都是不合理的用法(即使它们可能有效)。 +三个命令和对应的环境经常被误用,有直接用所谓 \cmd{flushleft} 命令或者 \env{raggedright} 环境的,都是不甚严格的用法(即使它们可能有效)。 有一点可以将两者区分开来:\env{center} 等环境会在上下文产生一个额外间距,而 \cmd{centering} 等命令不产生,只是改变对齐方式。 比如在浮动体环境 \env{table} 或 \env{figure} 内实现居中对齐,用 \cmd{centering} 命令即可,没必要再用 \env{center} 环境。 @@ -362,9 +387,9 @@ a perfect mirror. \subsection{摘要环境}\label{subsec:abstract} \envindex{abstract} -摘要环境 \env{abstract} 只在 \cls{article} 和 \cls{report} 文档类可用,一般用于紧跟 \cmd{maketitle} 命令之后介绍文档的摘要。 -如果文档类给定了 \texttt{titlepage} 选项,则单独成页;反之相当于一个小标题加一个 \env{quotation} 环境% -(双栏下相当于 \cmd{section*} 定义的一节)。 +摘要环境 \env{abstract} 默认只在标准文档类中的 \cls{article} 和 \cls{report} 文档类可用, +一般用于紧跟 \cmd{maketitle} 命令之后介绍文档的摘要。如果文档类指定了 \texttt{titlepage} 选项,则单独成页; +反之,单栏排版时相当于一个居中的小标题加一个 \env{quotation} 环境,双栏排版时相当于 \cmd{section*} 定义的一节。 \subsection{代码环境}\label{subsec:verbatim} @@ -396,7 +421,7 @@ for (int i=0; i<4; ++i) \cmd{verb}\Arg{delim}\Arg{code}\Arg{delim} \end{command} -\Arg{delim} 标明代码的分界位置,不能是字母、空格或星号,前后必须一致,可任意选择使得不与代码本身冲突,习惯上使用 \texttt| 符号。 +\Arg{delim} 标明代码的分界位置,前后必须一致,除字母、空格或星号外,可任意选择使得不与代码本身冲突,习惯上使用 \texttt| 符号。 同 \env{verbatim} 环境,\cmd{verb} 后也可以带一个星号,以显示空格: \begin{example} @@ -471,6 +496,8 @@ for (int i=0; i<4; ++i) \end{tabular} \end{example} +表格中每行的单元格数目不能多于列格式里 \texttt{l/c/r/p} 的总数(可以少于这个总数),否则出错。 + \texttt{@} 格式可在单元格前后插入任意的文本,但同时它也消除了单元格前后额外添加的间距。 \texttt{@} 格式可以适当使用以充当“竖线”。特别地,\texttt{@}\marg*{} 可直接用来消除单元格前后的间距: \begin{example} @@ -500,7 +527,7 @@ for (int i=0; i<4; ++i) \end{tabular} \end{example} -辅助格式甚至支持插入 \cmd{centering} 等命令改变 \texttt{p} 列格式的对齐方式,一般还要加额外的命令\cmd{array\-back\-slash} 以免出错% +辅助格式甚至支持插入 \cmd{centering} 等命令改变 \texttt{p} 列格式的对齐方式,一般还要加额外的命令 \cmd{array\-back\-slash} 以免出错% \footnote{\cmd{centering} 等对齐命令会破坏表格环境里 \crcmd\ 换行命令的定义, \cmd{array\-back\-slash} 用来恢复之。如果不加 \cmd{array\-back\-slash} 命令, 也可以用 \cmd{tabular\-newline} 命令代替原来的 \crcmd\ 实现表格换行。}: @@ -516,7 +543,7 @@ for (int i=0; i<4; ++i) \subsection{列宽}\label{subsec:colwidth} 在控制列宽方面,\LaTeX\ 表格有着明显的不足:\texttt{l/c/r} 格式的列宽是由文字内容的自然宽度决定的, -而 \texttt{p} 格式给定了列宽却不好控制对齐(需要 \pkg{array} 宏包辅助), +而 \texttt{p} 格式给定了列宽却不好控制对齐(可用 \pkg{array} 宏包的辅助格式), 更何况列与列之间通常还有间距,所以直接生成给定总宽度的表格并不容易。 \envindex{tabular*} @@ -558,13 +585,15 @@ for (int i=0; i<4; ++i) \end{example} \pkgindex{booktabs} -\cmdindex[booktabs]{toprule,midrule,bottomrule} +\cmdindex[booktabs]{toprule,midrule,bottomrule,cmidrule} 在科技论文排版中广泛应用的表格形式是三线表,形式干净简明。 三线表由 \pkg{booktabs} 宏包支持,它提供了 \cmd{toprule}、\cmd{midrule} 和 \cmd{bottomrule} 命令用以排版三线表的三条线, -除此之外,最好不要用其它横线以及竖线: +以及和 \cmd{cline} 对应的 \cmd{cmidrule}。除此之外,最好不要用其它横线以及竖线: \begin{example} \begin{tabular}{cccc} \toprule + & \multicolumn{3}{c}{Numbers} \\ + \cmidrule{2-4} & 1 & 2 & 3 \\ \midrule Alphabet & A & B & C \\ @@ -619,13 +648,13 @@ for (int i=0; i<4; ++i) 在以下的例子中,注意要用 \cmd{multi\-column} 命令配合 \texttt{@\{\}} 格式把单元格的额外边距去掉,使得嵌套的表格线能和外层的表格线正确相连: \begin{example} -\begin{tabular}{|c|l|c|} +\begin{tabular}{|c|c|c|} \hline - a & bbb & c \\ \hline - a & \multicolumn{1}{@{}l@{}|} + a & b & c \\ \hline + a & \multicolumn{1}{@{}c@{}|} {\begin{tabular}{c|c} - a & b \\ \hline - aa & bb \\ + e & f \\ \hline + e & f \\ \end{tabular}} & c \\ \hline a & b & c \\ \hline @@ -633,7 +662,7 @@ for (int i=0; i<4; ++i) \end{example} \pkgindex{makecell} -如果不要求画横线,并且只需要在垂直方向“拆分单元格”的话,\pkg{makecell} 宏包提供的 \cmd{make\-cell} 命令是一个简单的解决方案: +如果不需要为“拆分的单元格”画线,并且只在垂直方向“拆分”的话,\pkg{makecell} 宏包提供的 \cmd{make\-cell} 命令是一个简单的解决方案: \begin{example} \begin{tabular}{|c|c|} @@ -649,7 +678,7 @@ for (int i=0; i<4; ++i) \cmdindex{arraystretch} \LaTeX\ 生成的表格看起来通常比较紧凑。修改参数 \cmd{array\-stretch} 可以得到行距更加宽松的表格 -(相关命令参考 \ref{sec:newcommands} 节): +(相关命令参考 \ref{subsec:newcmd} 小节): \begin{example} \renewcommand\arraystretch{1.8} \begin{tabular}{|c|} @@ -682,10 +711,10 @@ for (int i=0; i<4; ++i) \LaTeX\ 本身不支持插图功能,需要由 \pkg{graphicx} 宏包辅助支持。 -使用 \texttt{latex + dvipdfmx} 编译命令时,调用 \pkg{graphicx} 宏包时要给定 \texttt{dvipdfmx} 选项% +使用 \texttt{latex + dvipdfmx} 编译命令时,调用 \pkg{graphicx} 宏包时要指定 \texttt{dvipdfmx} 选项% \footnote{早期常使用 \texttt{latex + dvips} 组合命令,后者将 \texttt{.dvi} 文件转为 \texttt{.ps} 文件(PostScript), 可进一步通过 \texttt{ps2pdf} 工具生成 PDF。\texttt{dvips} 和 \texttt{dvipdfmx} 在图形、颜色、超链接等功能的实现上有差别,而 \LaTeX\ 无法识别 -用户是用 \texttt{dvips} 还是 \texttt{dvipdfmx},所以要给定选项(缺省为 \texttt{dvips})。 +用户是用 \texttt{dvips} 还是 \texttt{dvipdfmx},所以要指定选项(缺省为 \texttt{dvips})。 \ref{sec:hyperlinks} 节中的 \pkg{hyperref} 宏包同理。};而使用 \texttt{pdflatex} 或 \texttt{xelatex} 命令编译时不需要。 读者可能听说过“\LaTeX\ 只能插入 \texttt{.eps} 格式的图片,需要把 \texttt{.jpg} 转成 \texttt{.eps} 格式”的观点。 @@ -730,11 +759,11 @@ for (int i=0; i<4; ++i) \graphicspath{{figures/}{logo/}} \end{verbatim} -\cmd{includegraphics} 命令的可选参数 \Arg{options} 支持 \Arg{key}=\Arg{value} 形式赋值,常用的选项如下: +\cmd{includegraphics} 命令的可选参数 \Arg{options} 支持 \Arg{key}=\Arg{value} 形式赋值,常用的参数如下: \begin{center} \begin{tabular}{lp{18em}} \hline - 选项 & 含义 \\ + 参数 & 含义 \\ \hline width=\Arg{width} & 将图片缩放到宽度为 \Arg{width} \\ height=\Arg{height} & 将图片缩放到高度为 \Arg{height} \\ @@ -749,7 +778,7 @@ for (int i=0; i<4; ++i) 盒子是 \LaTeX\ 排版的基础单元,虽然解释上去有些抽象:每一行是一个盒子, 里面的文字从左到右依次排列;每一页也是一个盒子,各行文字从上到下依次排布……颇有一些活字印刷术的味道。 -不管如何,\LaTeX\ 提供了一些实用的命令让我们生成一些有用的盒子。 +不管如何,\LaTeX\ 提供了一些命令让我们生成一些有特定用途的盒子。 \subsection{水平盒子}\label{subsec:mbox} @@ -760,7 +789,7 @@ for (int i=0; i<4; ++i) \cmd{makebox}\oarg{width}\oarg{align}\marg*{\ldots} \end{command} -\cmd{mbox} 生成一个基本的水平盒子,内容只有一行(除非嵌套下文的垂直盒子),不允许分段。 +\cmd{mbox} 生成一个基本的水平盒子,内容只有一行(除非嵌套下文介绍的垂直盒子,或者其它内容),不允许分段。 外表看上去,\cmd{mbox} 的内容与正常的文本无二,不过断行时文字不会从盒子里断开。 \cmd{makebox} 更进一步,可以加上可选参数用于控制盒子的宽度 \Arg{width},以及内容的对齐方式 \Arg{align}, @@ -811,7 +840,7 @@ for (int i=0; i<4; ++i) 其中 \Arg{align} 为盒子和周围文字的对齐情况(类似 \env{tabular} 环境); \Arg{height} 和 \Arg{inner-align} 设置盒子的高度和内容的对齐方式,类似水平盒子 \cmd{makebox} 的设置, -不过 \Arg{inner-align} 接受的选项是顶部 \texttt{t}、底部 \texttt{b}、居中 \texttt{c} 和分散对齐 \texttt{s}。 +不过 \Arg{inner-align} 接受的参数是顶部 \texttt{t}、底部 \texttt{b}、居中 \texttt{c} 和分散对齐 \texttt{s}。 \begin{example} 三字经:\parbox[t]{3em}% @@ -852,12 +881,12 @@ A \rule[-.4pt]{3em}{.4pt} line. \section{浮动体}\label{sec:float} -内容丰富的文章或者书籍往往包含丰富的图片和表格等内容。这些内容的尺寸往往太大,导致分页困难。 +内容丰富的文章或者书籍往往包含许多图片和表格等内容。这些内容的尺寸往往太大,导致分页困难。 \LaTeX\ 为此引入了浮动体的机制,令大块的内容可以脱离上下文,放置在合适的位置。 \envindex{figure,table} \LaTeX\ 预定义了两类浮动体环境 \env{figure} 和 \env{table}。习惯上 \env{figure} 里放图片,\env{table} 里放表格, -但并没有严格限制,可以在任何一个浮动体里放置表格、文字、列表等等任意内容。 +但并没有严格限制,可以在任何一个浮动体里放置文字、公式、表格、图片等等任意内容。 以 \env{table} 环境的用法举例,\env{figure} 同理: \begin{command} @@ -866,8 +895,8 @@ A \rule[-.4pt]{3em}{.4pt} line. \cmd{end}\marg*{table} \end{command} -\Arg{placement} 参数提供了一些符号用来表示浮动体允许排版的位置,如 \texttt{[hbp]} 允许浮动体排版在当前位置、底部或者单独成页。 -\env{table} 和 \env{figure} 浮动体的默认设置为 \texttt{[tbp]}。 +\Arg{placement} 参数提供了一些符号用来表示浮动体允许排版的位置,如 \texttt{hbp} 允许浮动体排版在当前位置、底部或者单独成页。 +\env{table} 和 \env{figure} 浮动体的默认设置为 \texttt{tbp}。 \begin{center} \begin{tabular}{>{\ttfamily}lp{14em}} \hline @@ -880,7 +909,7 @@ A \rule[-.4pt]{3em}{.4pt} line. \end{tabular} \end{center} \begin{quote}\footnotesize -注 1:排版位置的选取与参数里符号的顺序无关,\LaTeX\ 总是以 \texttt{h-t-b-p} 的优先级顺序选取位置。 +注 1:排版位置的选取与参数里符号的顺序无关,\LaTeX\ 总是以 \texttt{h-t-b-p} 的优先级顺序决定浮动体位置。 也就是说 \texttt{[!htp]} 和 \texttt{[ph!t]} 没有区别。\par 注 2:限制包括浮动体个数(除单独成页外,默认每页不超过 3 个浮动体,其中顶部不超过 2 个,底部不超过 1 个) 以及浮动体空间占页面的百分比(默认顶部不超过 70\%,底部不超过 30\%)。 @@ -891,14 +920,15 @@ A \rule[-.4pt]{3em}{.4pt} line. 它们的用法与 \env{table} 和 \env{figure} 一样,不同之处为双栏的 \Arg{placement} 参数只能用 \texttt{tp} 两个位置。 \cmdindex{clearpage} -浮动体的位置选取受到先后顺序的限制。如果某个浮动体由于参数限制、空间限制等原因在当前页无法放置,就要推迟到后一页, -并使得之后的同类浮动体一并推迟。\cmd{clearpage} 命令会在另起一页之前,先将所有推迟放置的浮动体排版成页。 +浮动体的位置选取受到先后顺序的限制。如果某个浮动体由于参数限制、空间限制等原因在当前页无法放置,就要推迟到之后处理, +并使得之后的同类浮动体一并推迟。\cmd{clearpage} 命令会在另起一页之前,先将所有推迟处理的浮动体排版成页, +此时 \texttt{htbp} 等位置限制被完全忽略。 \pkgindex{float} -\pkg{float} 宏包为浮动体提供了 \texttt{H} 选项,不与 \texttt{htbp} 及 \texttt{!} 混用。使用 \texttt{H} 选项时, -会取消浮动机制,将浮动体视为一般的盒子插入当前位置。这在一些特殊情况下(如使用 \pkg{multicol} 宏包生成分栏)的时候很有用, -但尺寸过大的浮动体可能影响到分页。 +\pkg{float} 宏包为浮动体提供了 \texttt{H} 位置参数,不与 \texttt{htbp} 及 \texttt{!} 混用。使用 \texttt{H} 位置参数时, +会取消浮动机制,将浮动体视为一般的盒子插入当前位置。这在一些特殊情况下很有用(如使用 \pkg{multicol} 宏包排版分栏内容的时候), +但尺寸过大的浮动体可能使得分页比较困难。 \subsection{浮动体的标题}\label{subsec:caption} @@ -909,8 +939,12 @@ A \rule[-.4pt]{3em}{.4pt} line. \end{command} \cmd{caption} 的用法非常类似于 \cmd{section} 等命令,可以用带星号的命令 \cmd{caption*} 生成不带编号的标题, 也可以使用带可选参数的形式 \cmd{caption}\oarg*{\ldots}\marg*{\ldots},使得在目录里使用短标题。 +\cmd{caption} 命令之后还可以紧跟 \cmd{label} 命令标记交叉引用。 -\cmd{caption} 之后还可以紧跟 \cmd{label} 命令标记交叉引用。 +\pkgindex{caption} +\cmd{caption} 生成的标题形如 ``Figure 1: \ldots''{}(\env{figure} 环境)或 ``Table 1: \ldots''{}(\env{table} 环境)。 +可通过修改 \cmd{figurename} 和 \cmd{tablename} 的内容来修改标题的前缀(详见第 \ref{sec:latex-settings} 节)。 +标题样式的定制功能由 \pkg{caption} 宏包提供,详见该宏包的帮助手册,在此不作赘述。 \cmdindex{listoftables,listoffigures} \env{table} 和 \env{figure} 两种浮动体分别有各自的生成目录的命令: @@ -949,13 +983,13 @@ A \rule[-.4pt]{3em}{.4pt} line. \begin{verbatim} \begin{figure}[htbp] \centering - \begin{minipage} + \begin{minipage}{...} \centering \includegraphics[width=...]{...} \caption{...} \end{minipage} \qquad - \begin{minipage} + \begin{minipage}{...} \centering \includegraphics[width=...]{...} \caption{...} @@ -986,14 +1020,14 @@ A \rule[-.4pt]{3em}{.4pt} line. \begin{figure}[htbp] \centering \subfloat[...]{\label{sub-fig-1}% 为子图加交叉引用 - \begin{minipage} + \begin{minipage}{...} \centering \includegraphics[width=...]{...} \end{minipage} } \qquad \subfloat[...]{% - \begin{minipage} + \begin{minipage}{...} \centering \includegraphics[width=...]{...} \end{minipage} diff --git a/Master/texmf-dist/doc/latex/lshort-chinese/src/chap/chap.04.math.tex b/Master/texmf-dist/doc/latex/lshort-chinese/src/chap/chap.04.math.tex index 30de4c04e93..84ea8472137 100644 --- a/Master/texmf-dist/doc/latex/lshort-chinese/src/chap/chap.04.math.tex +++ b/Master/texmf-dist/doc/latex/lshort-chinese/src/chap/chap.04.math.tex @@ -1,4 +1,4 @@ -\chapter{排版数学公式} +\chapter{排版数学公式}\label{chap:math} \addtocontents{los}{\protect\addvspace{10pt}} \begin{intro} @@ -22,7 +22,7 @@ 数学公式有两种排版方式:其一是与文字混排,称为\textbf{行内公式};其二是单独列为一行排版,称为\textbf{行间公式}。 \pinyinindex{hangneigongshi}{行内公式} -\index{$@\texttt\$ (\textit{数学模式})} +\index{^^d@\texttt\$ (\textit{数学模式})} 行内公式由一对 \texttt\$ 符号包裹: \begin{example} Add $a$ squared and $b$ squared @@ -114,12 +114,12 @@ In display: \begin{enumerate} \item 数学模式中输入的空格全部被忽略。数学符号的间隙默认完全由符号的性质(关系符号、运算符等)决定。 需要人为引入空隙时,使用 \cmd{quad} 和 \cmd{qquad} 等命令。详见 \ref{sec:math-space} 节。 - \item \textbf{不允许有空行(分段)。}每个公式(每组多行公式)自成一个段落。 + \item \textbf{不允许有空行(分段)},公式也无法自动换行或者用 \crcmd\ 换行。排版多行公式需要用到 \ref{sec:multi-eqns} 节介绍的各种环境。 \item 所有的字母被当作数学公式中的变量处理,字母间距与文本模式不一致,也无法生成单词之间的空格。 如果想在数学公式中输入正体的文本,简单情况下可用 \ref{subsec:math-alpha} 小节中提供的 \cmd{mathrm} 命令。 - \pkg{amsmath} 提供了更加方便的 \amscmd{text} 命令% + 或者用 \pkg{amsmath} 提供的 \amscmd{text} 命令% \footnote{\amscmd{text} 命令仅适合在公式中穿插少量文字。如果你的情况正好相反,需要在许多文字中穿插使用公式, - 则应该像正常的行内公式那样,而不是滥用 \amscmd{text} 命令。}。 + 则应该像正常的行内公式那样用,而不是滥用 \amscmd{text} 命令。}。 \end{enumerate} \begin{example} $x^{2} \geq 0 \qquad @@ -133,15 +133,16 @@ x\in\mathbb{R}$ \pkgindex{amssymb} 本节我们将接触到形形色色的数学符号,它们是 \LaTeX\ 卓越的数学公式排版能力的基础。\LaTeX\ 默认提供了常用的数学符号, -\pkg{amssymb} 宏包提供了一些次常用的符号。大多数常用的数学符号都能在本章末尾的 \ref{sec:math-tables} 节列出的表格里查到。 +\pkg{amssymb} 宏包提供了一些次常用的符号。大多数常用的数学符号都能在本章末尾的 \ref{sec:math-tables} 节列出的各个表格里查到。 +更多符号可查阅参考文献\cite{symbols}。 -\subsection{一般符号} +\subsection{一般符号}\label{subsec:math-general} \pinyinindex{xilazimu}{希腊字母 (数学符号)} \msymindex{infty} 希腊字母符号的名称就是其英文名称,如 \msym{alpha}、\msym{beta} 等等。 大写的希腊字母为首字母大写的命令,如 \msym{Gamma}、\msym{Delta} 等等。 -无穷大符号为 \msym{infty} 。详情请参考本章末尾的表 \ref{tbl:math-greek} 和 \ref{tbl:math-misc} 等。 +无穷大符号为 \msym{infty}。更多符号命令可参考表 \ref{tbl:math-greek} 和 \ref{tbl:math-misc} 等。 \msymindex{dots,ldots,cdots} 省略号有 \msym{dots} 和 \msym{cdots} 两种形式。它们有各自合适的用途: @@ -151,7 +152,7 @@ $a_1 + a_2 + \cdots + a_n$ \end{example} \cmd{ldots} 和 \cmd{dots} 是完全等效的,它们既能用在公式中,也用来在文本里作为省略号(详见 \ref{subsec:punct} 小节)。 -除此之外,在矩阵中会用到竖排的 \msym{vdots} 和斜排的 \msym{ddots}。 +除此之外,在矩阵中可能会用到竖排的 \msym{vdots} 和斜排的 \msym{ddots}。 \subsection{指数、上下标和导数}\label{subsec:math-scripts} @@ -289,7 +290,7 @@ $a\bmod b \\ \[\argh 3 = \nut_{x=1} 4x\] \end{example} -\subsection{巨算符} +\subsection{巨算符}\label{subsec:math-bigop} \msymindex{int,oint,sum,prod} 积分号 \msym{int}、求和号 \msym{sum} 等符号称为\textbf{巨算符}。巨算符在行内公式和行间公式的大小和形状有区别。 @@ -339,7 +340,7 @@ P(i,j) = Q(n) \] \end{example} -\subsection{数学重音和上下括号} +\subsection{数学重音和上下括号}\label{subsec:math-accents} \maccindex{dot,ddot,vec,hat} 数学符号可以像文字一样加重音,比如对时间求导的符号 $\dot{r}$ (\cmd{dot}\marg*{r})、 $\ddot{r}$ (\cmd{ddot}\marg*{r}) @@ -372,7 +373,7 @@ $\underbrace{\overbrace{a+b+c}^6 _\text{meaning of life} = 42$ \end{example} -\subsection{箭头} +\subsection{箭头}\label{subsec:math-arrows} \cmdindex[amsmath]{xleftarrow,xrightarrow} 除了作为上下标之外,箭头还用于表示过程。\pkg{amsmath} 的 \amscmd{xleft\-arrow} 和 \amscmd{xright\-arrow} 命令可以为箭头增加上下标: @@ -381,7 +382,7 @@ _\text{meaning of life} = 42$ \[ c\xrightarrow[x<y]{a*b*c}d \] \end{example} -\subsection{括号和定界符} +\subsection{括号和定界符}\label{subsec:math-delims} \LaTeX\ 提供了多种括号和定界符表示公式块的边界。除小括号\texttt{( )}、中括号\texttt{[ ]}之外,其余都是 \LaTeX\ 命令, 包括大括号 \cmd{\{} \cmd{\}}。表 \ref{tbl:math-delims} 和 \ref{tbl:math-large-delims} 给出了更多的括号/定界符命令。 @@ -408,21 +409,22 @@ ${a,b,c} \neq \{a,b,c\}$ (\cmd{bigl} 和 \cmd{bigr} 不必成对出现)。 \begin{example} $\Bigl((x+1)(x-1)\Bigr)^{2}$\\ -$\bigl( \Bigl( \biggl( \Biggl( -\quad -\bigr\} \Bigr\} \biggr\} \Biggr\} -\quad -\big\| \Big\| \bigg\| \Bigg\| -\quad +$\bigl( \Bigl( \biggl( \Biggl( \quad +\bigr\} \Bigr\} \biggr\} \Biggr\} \quad +\big\| \Big\| \bigg\| \Bigg\| \quad \big\Downarrow \Big\Downarrow \bigg\Downarrow \Bigg\Downarrow$ \end{example} +使用 \cmd{big} 和 \cmd{bigg} 等命令的另外一个好处是:用 \cmd{left} 和 \cmd{right} 分界符包裹的公式块是不允许断行的 +(下文提到的 \env{array} 或者 \amsenv{aligned} 等环境视为一个公式块),所以也不允许在多行公式里跨行使用, +而 \cmd{big} 和 \cmd{bigg} 等命令不受限制。 + \section{多行公式}\label{sec:multi-eqns} -\subsection{长公式折行}\label{sec:multline} +\subsection{长公式折行}\label{subsec:multline} -通常来讲应当避免写出需要折行的长公式。如果一定要折行的话,优先在等号之前折行,其次在加号、减号之前,再次在乘号、除号之前。 +通常来讲应当避免写出超过一行而需要折行的长公式。如果一定要折行的话,优先在等号之前折行,其次在加号、减号之前,再次在乘号、除号之前。 其它位置应当避免折行。 \envindex[amsmath]{multline} @@ -525,16 +527,15 @@ l + m &= n \envindex{array} \index{&@\texttt\& (\textit{单元格/对齐})} 为了排版二维数组,\LaTeX\ 提供了 \env{array} 环境,用法与 \env{tabular} 环境极为类似,也需要定义列格式,并用 \crcmd\ 换行。 -数组可作为一个子公式,在外套用 \cmd{left}、\cmd{right} 等定界符: +数组可作为一个公式块,在外套用 \cmd{left}、\cmd{right} 等定界符: \begin{example} -\[ -\mathbf{X} = \left( -\begin{array}{ccc} -x_1 & x_2 & \ldots \\ -x_3 & x_4 & \ldots \\ -\vdots & \vdots & \ddots -\end{array} \right) -\] +\[ \mathbf{X} = \left( +\begin{array}{cccc} +x_{11} & x_{12} & \ldots & x_{1n}\\ +x_{21} & x_{22} & \ldots & x_{2n}\\ +\vdots & \vdots & \ddots & \vdots\\ +x_{n1} & x_{n2} & \ldots & x_{nn}\\ +\end{array} \right) \] \end{example} 值得注意的是,上一节末尾介绍的 \amsenv{aligned} 等环境也可以用定界符包裹。 @@ -543,45 +544,57 @@ x_3 & x_4 & \ldots \\ \mathindex{right} 我们还可以利用空的定界符排版出这样的效果: \begin{example} -\[ -|x| = \left\{ +\[ |x| = \left\{ \begin{array}{rl} -x & \text{if } x < 0,\\ 0 & \text{if } x = 0,\\ x & \text{if } x > 0. -\end{array} \right. -\] +\end{array} \right. \] \end{example} \envindex[amsmath]{cases} 不过上述例子可以用 \pkg{amsmath} 提供的 \amsenv{cases} 环境更轻松地完成: \begin{example} -\[ -|x| = +\[ |x| = \begin{cases} -x & \text{if } x < 0,\\ 0 & \text{if } x = 0,\\ x & \text{if } x > 0. -\end{cases} -\] +\end{cases} \] \end{example} \envindex[amsmath]{matrix,pmatrix,bmatrix,Bmatrix,vmatrix,Vmatrix} 我们当然也可以用 \env{array} 环境排版各种矩阵。\pkg{amsmath} 宏包还直接提供了多种排版矩阵的环境,包括不带定界符的 \amsenv{matrix}, 以及带各种定界符的矩阵 \amsenv{pmatrix}($\bigl($)、\amsenv{bmatrix}($\bigl[$)、\amsenv{Bmatrix}($\bigl\{$)、 -\amsenv{vmatrix}($\bigl\vert$)、\amsenv{Vmatrix}($\bigl\Vert$)。 -使用这些环境时,无需给定列格式: +\amsenv{vmatrix}($\bigl\vert$)、\amsenv{Vmatrix}($\bigl\Vert$)。使用这些环境时,无需给定列格式% +\footnote{事实上这些矩阵内部也是用 \env{array} 环境生成的,列格式默认为 \texttt{*\{\Arg{n}\}\{c\}},\Arg{n} 默认为 10; +\amsenv{cases} 内部是一个列格式为 \texttt{@\{\}l@\{\cmd{quad}\}l@\{\}} 的 \env{array} 环境。}: \begin{example} \[ \begin{matrix} -1 & 2 \\ -3 & 4 +1 & 2 \\ 3 & 4 \end{matrix} \qquad \begin{bmatrix} -p_{11} & p_{12} & \ldots & p_{1n} \\ -p_{21} & p_{22} & \ldots & p_{2n} \\ -\vdots & \vdots & \ddots & \vdots \\ -p_{m1} & p_{m2} & \ldots & p_{mn} +x_{11} & x_{12} & \ldots & x_{1n}\\ +x_{21} & x_{22} & \ldots & x_{2n}\\ +\vdots & \vdots & \ddots & \vdots\\ +x_{n1} & x_{n2} & \ldots & x_{nn}\\ +\end{bmatrix} +\] +\end{example} + +在矩阵中的元素里排版分式时,一来要用到 \amscmd{dfrac} 等命令,二来行与行之间有可能紧贴着,这时要用到 +\ref{subsec:tabular-colht} 小节的方法来调节间距: +\begin{example} +\[ +\mathbf{H}= +\begin{bmatrix} +\dfrac{\partial^2 f}{\partial x^2} & +\dfrac{\partial^2 f} + {\partial x \partial y} \\[8pt] +\dfrac{\partial^2 f} + {\partial x \partial y} & +\dfrac{\partial^2 f}{\partial y^2} \end{bmatrix} \] \end{example} @@ -595,8 +608,9 @@ p_{m1} & p_{m2} & \ldots & p_{mn} 我们已经认识了两个生成间距的命令 \cmd{quad} 和 \cmd{qquad}。在公式中我们还可能用到的间距包括 \cmd{,}、\cmd{:}、\cmd{;} 以及负间距 \cmd{!},其中 \cmd{quad} 、 \cmd{qquad} 和 \cmd{,} 在文本和数学环境中可用,后三个命令只用于数学环境。 文本中的 \cmd{\textvisiblespace} 也能使用在数学公式中。 -\begin{center} + \newdimen\testdimen \testdimen=\fontdimen6\textfont2 \divide\testdimen18\relax +\begin{center} \begin{tabularx}{0.9\textwidth}{*{3}{>{\raggedright\arraybackslash}X}|*{3}{>{\raggedright\arraybackslash}X}} \hline 无额外间距 & & $a a$ & @@ -634,7 +648,7 @@ f(x)g(y) \diff x \diff y \\ \end{gather*} \end{example} -\section{数学符号的字体控制} +\section{数学符号的字体控制}\label{sec:math-fonts} \subsection{数学字母字体}\label{subsec:math-alpha} @@ -675,7 +689,7 @@ $\mathbb{ABCDE}$ & \cmd{mathbb}\marg*{\ldots} & \pkg{amssymb} \end{tabular} \end{table} -\subsection{数学符号的尺寸} +\subsection{数学符号的尺寸}\label{subsec:math-styles} \mathindex{displaystyle,textstyle,scriptstyle,scriptscriptstyle} 数学符号按照符号排版的位置规定尺寸,从大到小包括行间公式尺寸、行内公式尺寸、上下标尺寸、次级上下标尺寸。 @@ -705,7 +719,7 @@ P = \frac \] \end{example} -\subsection{加粗的数学符号} +\subsection{加粗的数学符号}\label{subsec:math-bold} 在 \LaTeX\ 中为符号切换数学字体并不十分自由,只能通过 \cmd{mathbf} 等有限的命令切换字体。比如想得到粗斜体的符号,就没有现成的命令% \footnote{国内可能还有使用粗斜体表示向量符号的习惯,但这并不是正确的习惯。};再比如 \cmd{mathbf} 只能改变拉丁字母,希腊字母就没有用。 @@ -800,8 +814,8 @@ described in theorem \ref{thm:light}. 以上例子定义的 \env{jury} 环境与 \env{law} 环境共用编号,\env{mar} 环境不编号: \begin{example} -\begin{law} \label{law:box} -Don’t hide in the witness box +\begin{law}\label{law:box} +Don't hide in the witness box. \end{law} \begin{jury}[The Twelve] It could be you! So beware and @@ -869,4 +883,19 @@ E=mc^2.\qedhere 在 \amsenv{align} 等环境中使用 \cmd{qedhere} 命令会使 \qedsymbol\ 盖掉公式的编号;使用 \env{equation} 嵌套 \amsenv{aligned} 等环境时, \cmd{qedhere} 命令会将 \qedsymbol\ 直接放在公式后。这些位置都不太正常。 +证毕符号 \qedsymbol\ 本身被定义在命令 \cmd{qedsymbol} 中,如果有使用实心符号作为证毕符号的需求,需要自行用 \cmd{re\-new\-comm\-and} +命令修改(用法见 \ref{subsec:newcmd} 小节)\footnote{注意,这个改法\textbf{只对 \pkg{amsthm} 宏包适用}。 +其它宏包如 \pkg{ntheorem} 等须参考帮助手册里提供的修改方法。}。 +我们可以利用在 \ref{subsec:rules} 小节介绍的标尺盒子来生成一个适当大小的“实心矩形”: +\begin{example} +\renewcommand{\qedsymbol}% + {\rule{1ex}{1.5ex}} +\begin{proof} +For simplicity, we use +\[ +E=mc^2 \qedhere +\] +\end{proof} +\end{example} + \endinput
\ No newline at end of file diff --git a/Master/texmf-dist/doc/latex/lshort-chinese/src/chap/chap.05.style.tex b/Master/texmf-dist/doc/latex/lshort-chinese/src/chap/chap.05.style.tex index 0b6543d629a..bacb3f98778 100644 --- a/Master/texmf-dist/doc/latex/lshort-chinese/src/chap/chap.05.style.tex +++ b/Master/texmf-dist/doc/latex/lshort-chinese/src/chap/chap.05.style.tex @@ -151,40 +151,54 @@ He likes {\LARGE large and \usepackage[T1]{fontenc} \end{verbatim} +\pkg{fontenc} 宏包是用来配合传统的 \LaTeX\ 字体的,如表 \ref{tbl:font-pkgs} 中的大部分宏包。如果使用下文的 \pkg{fontspec} +宏包调用 \texttt{ttf} 或 \texttt{otf} 格式字体,就不要再使用 \pkg{fontenc} 宏包。 + \begin{table}[!p] \centering \caption{常见的 \LaTeX\ 字体宏包。}\label{tbl:font-pkgs} -\begin{minipage}{\linewidth} -\begin{tabular*}{\linewidth}{@{\extracolsep{\fill}}cp{0.65\linewidth}@{}} +\begin{tabularx}{\linewidth}{cX} + \hline + \multicolumn{2}{c}{文本/数学字体搭配的宏包} \\ \hline \pkg{lmodern} & Latin Modern 字体,对 Computer Modern 字体的扩展 \\ + \pkg{cmbright} & 仿 Computer Modern 风格的无衬线字体 \\ + \pkg{euler} & Euler 风格数学字体,也出自于高德纳之手 \\ + \pkg{ccfonts} & Concrete 风格字体 \\ \pkg{txfonts} & Times 风格的字体宏包 \\ - \pkg{pxfonts} & Palation 风格的字体宏包 \\ + \pkg{pxfonts} & Palatino 风格的字体宏包 \\ \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{ccfonts} & Concrete 风格字体 \\ - \pkg{euler} & Euler 风格数学字体,也出自于高德纳之手 \\ - \pkg{fourier} & fourier 风格数学字体 \\ - \pkg{arev} & Arev 风格的无衬线字体 \\ - \pkg{cmbright} & 仿 Computer Modern 风格的无衬线字体 \\ - \pkg{libertine} & Linux Libertine 衬线字体 \\ - \pkg{droid} & Droid Serif/Droid Sans 等 \\ - \pkg{inconsolata} & Inconsolata 一款不错的开源等宽字体 \\ + \pkg{mathptmx} & \pkg{psnfss} 字体宏集之一,Times 风格,较为陈旧,不推荐使用 \\ + \pkg{mathpazo} & \pkg{psnfss} 字体宏集之一,Palatino 风格,较为陈旧,不推荐使用 \\ + \pkg{fourier} & fourier 风格数学字体,配合 Utopia 正文字体 \\ + \pkg{fouriernc} & fourier 风格数学字体,配合 New Century Schoolbook 正文字体 \\ + \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 + \multicolumn{2}{c}{符号宏包} \\ + \hline \pkg{mathabx} & 数学符号宏包之一 \\ \pkg{MnSymbol} & 数学符号宏包之一 \\ \pkg{fdsymbol} & 数学符号宏包之一 \\ - \pkg{mathdesign} & 配合 Charter/Garamond/Utopia 正文字体的数学字体宏包(Garamond 字体可能需要单独安装) \\ + \pkg{pifont} & Zapf Dingbats 符号字体宏包 \\ \hline -\end{tabular*} -\end{minipage} +\end{tabularx} \end{table} -\subsection{\texttt{xelatex} 命令下使用 \pkg{fontspec} 宏包更改字体}\label{subsec:fontspec} +\subsection{使用 \pkg{fontspec} 宏包更改字体 (\texttt{xelatex})}\label{subsec:fontspec} \index{xelatex@\texttt{xelatex} 命令} \texttt{xelatex} 编译命令能够支持直接调用系统安装的 \texttt{.ttf} 或 \texttt{.otf} 格式字体% @@ -193,7 +207,7 @@ He likes {\LARGE large and \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} \\ @@ -253,7 +267,7 @@ He likes {\LARGE large and 表示基础长度为 \texttt{12pt},可以伸展到 \texttt{14pt} ,也可以收缩到 \texttt{9pt}。 也可只定义 \texttt{plus} 或者 \texttt{minus} 的部分,如 \texttt{0pt plus 5pt}。 -长度的数值还可以用长度变量的倍数来表达,如 \texttt{2.5}\cmd{parindent} 等。 +长度的数值还可以用长度变量本身或其倍数来表达,如 \texttt{2.5}\cmd{parindent} 等。 \cmdindex{newlength,setlength,addtolength} \LaTeX\ 预定义了大量的长度变量用于控制版面格式。如页面宽度和高度、首行缩进、段落间距等。 @@ -278,15 +292,15 @@ He likes {\LARGE large and \cmd{linespread}\marg{factor} \end{command} -此处的行距,指的是基本行距(相当于 \cmd{fontsize} 命令的第二个参数)而不是字号大小。所以设置 1.5 倍行距的命令 \cmd{line\-spread}\marg*{1.5} -意味着最终行距为 1.8 倍的字号大小。 +这里的 \Arg{factor} 是在基础行距上而不是字号上乘以一个因子。大部分时候,默认的基础行距是 1.2 倍字号大小(参考 \cmd{fontsize} 命令), +因此设置 1.5 倍行距的命令 \cmd{line\-spread}\marg*{1.5} 意味着最终行距为 1.8 倍的字号大小。 \cmdindex{selectfont} 如果不是在导言区全局修改,而想要局部地改变某个段落的行距,需要用 \cmd{select\-font} 命令使 \cmd{line\-spread} 命令的改动立即生效: \begin{example} {\linespread{2.0}\selectfont -The baseline skip is set to twice -the normal baseline skip. +The baseline skip is set to be +twice the normal baseline skip. Pay attention to the \verb|\par| command at the end. \par} @@ -319,26 +333,16 @@ But remember I am a liar.}\par \cmd{setlength}\marg*{\cmd{parindent}}\marg*{2em} \end{command} -它们和设置字号的命令一样,在分段时生效。 +它们和设置行距的命令一样,在分段时生效。 \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} +\LaTeX\ 还默认\textbf{在 \cmd{chapter}、\cmd{section} 等章节标题命令之后的第一段不缩进}% +\footnote{\pkg{ctex} 宏包和文档类默认按照中文习惯保持标题后第一段的首行缩进。}。 +如果不习惯这种设定,可以调用 \pkg{indent\-first} 宏包,令第一段的首行缩进照常。 \cmdindex{parskip} 段落间的垂直间距为 \cmd{parskip},如设置段落间距在 \texttt{0.8ex} 到 \texttt{1.5ex} 变动: @@ -349,7 +353,7 @@ But remember I am a liar.}\par \subsection{水平间距}\label{subsec:hspace} \cmdindex{hspace} -\LaTeX 默认为单词之间增添了水平间距。如果想要手动插入额外的间距,需要用到如下命令: +\LaTeX 默认为将单词之间的“空格”转化为水平间距。如果需要在文中手动插入额外的水平间距,可使用如下命令: \begin{command} \cmd{hspace}\marg{length} \end{command} @@ -359,14 +363,15 @@ of 1.5 cm. \end{example} \cmdindex{hspace*} -\cmd{hspace} 命令生成的间距如果位于一行的开头或末尾,则有可能因为断行而被“吞掉”。可使用 \cmd{hspace*} 命令代替 \cmd{hspace} 命令 +\cmd{hspace} 命令生成的水平间距如果位于一行的开头或末尾,则有可能因为断行而被“吞掉”。可使用 \cmd{hspace*} 命令代替 \cmd{hspace} 命令 得到不会因断行而消失的水平间距。 \cmdindex{stretch,fill} -命令 \cmd{stretch}\marg{n} 生成一个特殊弹性长度,参数 \Arg{n} 为权重。它的基础长度为零,但可以无限延伸,直到占满可用的空间。 +命令 \cmd{stretch}\marg{n} 生成一个特殊弹性长度,参数 \Arg{n} 为权重。它的基础长度为 0pt,但可以无限延伸,直到占满可用的空间。 如果同一行内出现多个 \cmd{stretch}\marg{n},这一行的所有可用空间将按每个 \cmd{stretch} 命令给定的权重 \Arg{n} 进行分配。 -命令 \cmd{fill} 相当于 \cmd{stretch}\marg*{1}。 +命令 \cmd{fill} 相当于 \cmd{stretch}\marg*{1}% +\footnote{注意不要用 \texttt{1.5}\cmd{fill} 这样的用法,它生成的长度只有基础长度 0pt 而没有延伸部分。}。 \begin{example} x\hspace{\stretch{1}} @@ -375,8 +380,8 @@ x\hspace{\fill}x \end{example} \cmdindex{quad,qquad} -在正文中用 \cmd{hspace} 命令生成水平间距时,往往使用 \texttt{em} 作为单位,它会随字号大小而变。 -我们常用 \cmd{quad} 和 \cmd{qquad} 命令方便地生成水平间距,相当于 \cmd{hspace}\marg*{1em} 和 \cmd{hspace}\marg*{2em}: +在正文中用 \cmd{hspace} 命令生成水平间距时,往往使用 \texttt{em} 作为单位,生成的间距随字号大小而变。 +我们在数学公式中见过 \cmd{quad} 和 \cmd{qquad} 命令,它们也可以用于文本中,分别相当于 \cmd{hspace}\marg*{1em} 和 \cmd{hspace}\marg*{2em}: \begin{example} {\Large big\hspace{1em}y}\\ @@ -421,13 +426,14 @@ between lines in a paragraph. \section{页面和分栏}\label{sec:page-columns} -我们不妨回顾一下第一章介绍的文档类属性。\LaTeX\ 允许你通过文档类选项控制纸张的大小(见表 \ref{tbl:ltx-options}), +我们不妨回顾一下第一章介绍的文档类属性。\LaTeX\ 允许你通过为文档类指定选项来控制纸张的大小(见表 \ref{tbl:ltx-options}), 包括 \texttt{a4paper}、\texttt{letterpaper}等等,并配合字号设置了适合的页边距。 \cmdindex{textheight,textwidth} 控制页边距的参数由图 \ref{fig:layouts} 里给出的各种长度变量控制。 可以用 \cmd{setlength} 命令修改这些长度变量,以达到调节页面尺寸和边距的作用; -反之也可以利用这些长度变量来决定排版内容的尺寸,如设置图片或表格的宽度为 0.8\cmd{textwidth}。 +反之也可以利用这些长度变量来决定排版内容的尺寸,如在 \env{tabularx} 环境或 \cmd{include\-graphics} 命令的参数里, +设置图片或表格的宽度为 0.8\cmd{textwidth}: \begin{figure}[!p] \centering @@ -528,6 +534,10 @@ between lines in a paragraph. 切换单/双栏排版时总是会另起一页(\cmd{clearpage})。 在双栏模式下使用 \cmd{newpage} 会换栏而不是换页;\cmd{clearpage} 则能够换页。 +\cmdindex{columnwidth,columnsep,columnseprule} +双栏排版时每一栏的宽度为 \cmd{columnwidth},它由 \cmd{textwidth} 减去 \cmd{columnsep} 的差除以 2 得到。 +两栏之间还有一道竖线,宽度为 \cmd{columnseprule},默认为零,也就是看不到竖线。 + \pkgindex{multicol} \envindex[multicol]{multicols} 一个比较好用的分栏解决方案是 \pkg{multicol},它提供了简单的 \env{multicols} 环境 @@ -543,7 +553,7 @@ between lines in a paragraph. \pkgindex{float} \pkg{multicol} 宏包能够在一页之中切换单栏/多栏,也能处理跨页的分栏,且各栏的高度分布平衡。但代价是% \textbf{在 \env{multicols} 环境中无法正常使用 \env{table} 和 \env{figure} 等浮动体环境},它会直接让浮动体丢失。 -\env{multicols} 环境中只能用跨栏的 \env{table*} 和 \env{figure*} ,或者用 \pkg{float} 宏包提供的 \texttt{H} 选项固定浮动体的位置。 +\env{multicols} 环境中只能用跨栏的 \env{table*} 和 \env{figure*} 环境,或者用 \pkg{float} 宏包提供的 \texttt{H} 参数固定浮动体的位置。 \section{页眉页脚}\label{sec:pagestyle} @@ -569,9 +579,9 @@ between lines in a paragraph. \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} @@ -581,9 +591,9 @@ between lines in a paragraph. 其中 \texttt{headings} 的情况较为复杂: \begin{description} \item[\cls{article} 文档类,\texttt{twoside} 选项:] 偶数页为页码和节标题,奇数页为小节标题和页码; - \item[\cls{article} 文档类,\texttt{oneside} 选项:] 同 \texttt{twoside} 选项的奇数页页眉; + \item[\cls{article} 文档类,\texttt{oneside} 选项:] 页眉为节标题和页码; \item[\cls{book/report} 文档类,\texttt{twoside} 选项:] 偶数页为页码和章标题,奇数页为节标题和页码; - \item[\cls{book/report} 文档类,\texttt{oneside} 选项:] 同 \texttt{twoside} 选项的奇数页页眉。 + \item[\cls{book/report} 文档类,\texttt{oneside} 选项:] 页眉为章标题和页码。 \end{description} \subsection{手动更改页眉页脚的内容}\label{subsec:marks} @@ -600,7 +610,7 @@ between lines in a paragraph. 事实上 \cmd{chapter}、\cmd{section} 等命令内部也使用 \cmd{mark\-both} 或者 \cmd{mark\-right} 写页眉。 \LaTeX\ 默认将页眉的内容都转为大写字母。如果你不喜欢这样,可以尝试以下代码 -(相关命令的用法参照 \ref{sec:newcommands} 节)% +(相关命令的用法参照 \ref{subsec:newcmd} 节)% \footnote{但是这不能改变页眉的斜体样式(\cmd{slshape}),斜体是定义在 \texttt{headings} 样式里的。 如果不喜欢斜体,可在 \cmd{mark\-both} 等命令的参数里先使用 \cmd{normal\-font} ,再使用想要的字体样式命令, 或直接尝试使用 \pkg{fancyhdr} 宏包。}: @@ -612,7 +622,7 @@ between lines in a paragraph. \end{verbatim} 其中 \cmd{thechapter}、\cmd{thesection} 等命令为章节计数器的数值(详见 \ref{sec:counters} 节)。以上代码适用于 \cls{report/book} 文档类。 -对于 \cls{article} 文档类,与两个页眉相关的命令分别为 \cmd{sec\-tion\-mark} 和 \cmd{sub\-sec\-tion\-mark} 。 +对于 \cls{article} 文档类,与两个页眉相关的命令分别为 \cmd{sec\-tion\-mark} 和 \cmd{sub\-sec\-tion\-mark}。 \subsection{\pkg{fancyhdr} 宏包}\label{subsec:fancyhdr} diff --git a/Master/texmf-dist/doc/latex/lshort-chinese/src/chap/chap.06.spec.tex b/Master/texmf-dist/doc/latex/lshort-chinese/src/chap/chap.06.spec.tex index f4c5418e2f4..cfaf0b19ace 100644 --- a/Master/texmf-dist/doc/latex/lshort-chinese/src/chap/chap.06.spec.tex +++ b/Master/texmf-dist/doc/latex/lshort-chinese/src/chap/chap.06.spec.tex @@ -1,4 +1,4 @@ -\chapter{特色工具和功能} +\chapter{特色工具和功能}\label{chap:spec} \addtocontents{los}{\protect\addvspace{10pt}} \begin{intro} @@ -6,9 +6,9 @@ 之后的使用颜色、超链接等则令我们生成美观易用的电子文档。 \end{intro} -\section{参考文献和 \hologo{BibTeX} 工具} +\section{参考文献和 \hologo{BibTeX} 工具}\label{sec:bib} -\subsection{基本的参考文献和引用} +\subsection{基本的参考文献和引用}\label{subsec:bib-basics} \pinyinindex{cankaowenxian}{参考文献} \LaTeX\ 提供的参考文献和引用方式比较原始,需要用户自行书写参考文献列表。不同学术论文对参考文献列表的格式要求不一样, @@ -20,20 +20,25 @@ \cmd{cite}\marg{citation} \end{command} -\cmd{cite} 带一个可选参数,为引用的编号后加上额外的内容,如 \cmd{cite}\oarg*{page 22}\marg{pa} 可能得到形如 [13, page 22] 这样的引用。 +\Arg{citation} 为引用的参考文献的标签,类似 \cmd{ref} 里的参数;\cmd{cite} 带一个可选参数,为引用的编号后加上额外的内容, +如 \cmd{cite}\oarg*{page 22}\marg{pa} 可能得到形如 [13, page 22] 这样的引用。 \envindex{thebibliography} +\cmdindex{bibitem} 参考文献由 \env{thebibliography} 环境包裹。每条参考文献由 \cmd{bibitem} 开头,其后是参考文献本身的内容: \begin{command} \cmd{bibitem}\oarg{item number}\marg{citation} \end{command} -其中 \Arg{citation} 是 \cmd{cite} 用以引用的一个标签,类似交叉引用里的 \cmd{label}。 +其中 \Arg{citation} 是 \cmd{cite} 使用的文献标签, \Arg{item number} 自定义参考文献的序号,如果省略,则按自然排序给定序号。 -\env{thebibliography} 环境带一个参数,用以设定 \cmd{cite} 命令生成的引用编号的最大宽度, +\env{thebibliography} 环境带一个参数,用以设定 \cmd{bibitem} 命令生成的参考文献编号的宽度, 如 99 意味着不超过两位数字。通常设定为与参考文献的数目一致。 -\env{the\-biblio\-graphy} 环境自动生成不带编号的一章(\cls{report} / \cls{book} 文档类)或一节(\cls{article} 文档类)。 + +\env{thebibliography} 环境自动生成不带编号的一节(\cls{article} 文档类)或一章(\cls{report} / \cls{book} 文档类)。 +在 \cls{article} 文档类的节标题默认为 ``Reference''{},而在 \cls{report / book} 文档类 +的章标题默认为 ``Bibliography''{}。用户可通过 \ref{sec:latex-settings} 节给出的方法定制参考文献的标题。 以下为一个使用 \env{the\-biblio\-graphy} 排版参考文献的例子: @@ -50,11 +55,11 @@ Partl~\cite{pa} has proposed that \ldots \end{document} \end{verbatim} -\subsection{\hologo{BibTeX} 数据库} +\subsection{\hologo{BibTeX} 数据库}\label{subsec:bibtex-data} \index{bibtexdb@\protect\hologo{BibTeX} 数据库} -\hologo{BibTeX} 是最为流行的参考文献数据组织格式之一。它的出现让我们摆脱手写参考文献条目的麻烦。我们还可以通过参考文献格式的支持, -让同一份 \hologo{BibTeX} 数据库生成不同格式的参考文献列表。我们首先简单介绍 \hologo{BibTeX} 数据库,之后介绍如何将数据库利用在 \LaTeX\ 中。 +\hologo{BibTeX} 是最为流行的参考文献数据组织格式之一。它的出现让我们摆脱手写参考文献条目的麻烦。我们还可以通过参考文献样式的支持, +让同一份 \hologo{BibTeX} 数据库生成不同样式的参考文献列表。 \hologo{BibTeX} 数据库以 \texttt{.bib} 作为扩展名,其内容是若干个文献条目,每个条目的格式为: \begin{command} @@ -65,70 +70,108 @@ Partl~\cite{pa} has proposed that \ldots \texttt\} \end{command} -其中 \Arg{type} 为参考文献的类型,如 \texttt{article} 为学术论文,\texttt{book} 为书籍,\texttt{in\-collection} 为论文集中的某一篇,等等。 -\Arg{citation} 为 \cmd{cite} 命令所用的参考文献的标签。在 \Arg{citation} 之后为条目里的各个数据项,以 \Arg{key} = \marg{value} 的形式组织。 +其中 \Arg{type} 为文献的类别,如 \texttt{article} 为学术论文,\texttt{book} 为书籍,\texttt{in\-collection} 为论文集中的某一篇,等等。 +\Arg{citation} 为 \cmd{cite} 命令使用的文献标签。在 \Arg{citation} 之后为条目里的各个数据项,以 \Arg{key} = \marg{value} 的形式组织。 -我们在此简单列举学术论文里使用较多的 \hologo{BibTeX} 文献条目格式。所有条目格式参考 \CTAN|biblio/bibtex/base/btxdoc.pdf|。 +我们在此简单列举学术论文里使用较多的 \hologo{BibTeX} 文献条目类别: \begin{description} - \item[\texttt{article}] 学术论文,必需数据项有 author, title, journal, year; 可选数据项包括 volumn, issue, number, pages, doi 等; + \item[\texttt{article}] 学术论文,必需数据项有 author, title, journal, year; 可选数据项包括 volumn, number, pages, doi 等; \item[\texttt{book}] 书籍,必需数据项有 author/editor, title, publisher, year; 可选数据项包括 volumn/number, series, address 等; \item[\texttt{incollection}] 论文集中的一篇,必需数据项有 author, title, booktitle, publisher, year; 可选数据项包括 editor, volumn/number, chapter, pages, address 等; \item[\texttt{inbook}] 书中的一章,必需数据项有 author/editor, title, chapter/pages, publisher, year; 可选数据项包括 volumn/number, series, address 等。 \end{description} +例如 \texttt{article} 类别的参考文献数据条目写法如下: +\begin{verbatim} +@article{Alice13, + title = {Demostration of bibliography items}, + author = {A. Alice and B. Bob and C. Charlie and D. Danny}, + year = {2013}, + journal = {Journal of \TeX perts}, + volume = {36}, + number = {7}, + pages = {114-120}} +\end{verbatim} +所有类别的文献条目格式请参考 \CTAN|biblio/bibtex/base/btxdoc.pdf|。 + 多数时候,我们无需自己手写 \hologo{BibTeX} 文献条目。从 Google Scholar 或者期刊/数据库的网站上都能够导出 \hologo{BibTeX} 文献条目, 老牌的文献管理软件 EndNote 也支持生成 \hologo{BibTeX} 格式的数据库。开源软件 JabRef 甚至支持 \hologo{BibTeX} 文献条目的导入、导出和管理。 -\subsection{使用 \hologo{BibTeX} 排版参考文献}\label{subsec:bibtex-use} - -\index{bibtex@\protect\hologo{BibTeX} 工具} -现在我们来看如何利用 \hologo{BibTeX} 数据库生成参考文献和引用。 - -第一步:我们当然需要一份 \hologo{BibTeX} 数据库,假设起名为 \texttt{books.bib} ,和我们的 \LaTeX\ 源代码\textbf{一般位于同一个目录下}。 +\subsection{\hologo{BibTeX} 样式}\label{subsec:bibtex-style} -\begin{sourcecode}[htp] -\begin{Verbatim} -@book{Lamport1994, - title = {{\LaTeX}: A Document Preparation System}, - author = {Lamport, L.}, - publisher = {Addison-Wesley}, - address = {Reading, Massachusetts}, - year = {1994}, - edition = {2nd} -} -@book{Mittelbach2004, - title = {The {\LaTeX} Companion}, - author = {Mittelbach, F. and Goossens, M. and - Braams, J. and Carlisle, D. and Rowley, C.}, - publisher = {Addison-Wesley}, - address = {Reading, Massachusetts}, - year = {2004}, - edition = {2nd} -} -\end{Verbatim} -\caption{\hologo{BibTeX} 数据库示例 \texttt{books.bib}。} -\end{sourcecode} +参考文献的写法在不同文献里千差万别,包括作者、标题、年份等各项的顺序和字体样式、文献在列表中的排序规则等。 +\hologo{BibTeX} 用样式(style)来管理参考文献的写法。\hologo{BibTeX} 提供了几个预定义的样式,如 plain, unsrt, alpha 等。 +如果使用期刊模板的话,可能会提供自用的样式。 +样式文件以 \texttt{.bst} 为扩展名。 \cmdindex{bibliographystyle} -第二步:在源代码中添加必要的命令。假设源代码的名称为 \texttt{demo.tex}。首先需要的是在\textbf{导言区}设定参考文献的格式: +使用样式文件的方法是在源代码内(一般在导言区)使用 \cmd{biblio\-graphy\-style} 命令: \begin{command} \cmd{bibliographystyle}\marg{bst-name} \end{command} +这里 \Arg{bst-name} 为 \texttt{.bst} 样式文件的名称,\textbf{不要带 \texttt{.bst} 扩展名}。 + +我们以 \ref{subsec:bibtex-data} 小节给出的数据条目为例,使用 \cmd{biblio\-graphy\-style} 命令选择不同的参考文献样式, +效果大致如表 \ref{tbl:bibtex-style} 所示。 + +\begin{table}[htp] +\caption{\hologo{BibTeX} 样式的排版效果。}\label{tbl:bibtex-style} +\hrule +\begin{trivlist}\item\relax +\textbf{plain}\\{} +[1] A.~Alice, B.~Bob, C.~Charlie, and D.~Danny. +\newblock Demostration of bibliography items. +\newblock {\em Journal of \TeX perts}, 36(7):114--120, 2013. + +\medskip +\textbf{alpha}\\{} +[ABCD13] A.~Alice, B.~Bob, C.~Charlie, and D.~Danny. +\newblock Demostration of bibliography items. +\newblock {\em Journal of \TeX perts}, 36(7):114--120, 2013. + +\medskip +\textbf{amsplain}(\AmS\ 文档类 \textsf{amsart} 等配套的样式)\\{} +[1] A.~Alice, B.~Bob, C.~Charlie, and D.~Danny, \emph{Demostration of bibliography + items}, Journal of \TeX perts \textbf{36} (2013), no.~7, 114--120. + +\medskip +\textbf{elsarticle-num}(Elsevier 提供的 \textsf{elsarticle} 文档类配套的样式)\\{} +[1] A.~Alice, B.~Bob, C.~Charlie, D.~Danny, Demostration of bibliography items, + Journal of \TeX perts 36~(7) (2013) 114--120. + +\medskip +\textbf{IEEEtran}(\textsf{IEEEtran} 模板文档类配套的样式)\\{} +[1] A.~Alice, B.~Bob, C.~Charlie, and D.~Danny, ``Demostration of bibliography + items,'' \emph{Journal of \TeX perts}, vol.~36, no.~7, pp. 114--120, 2013. +\end{trivlist} +\hrule +\end{table} + +\subsection{使用 \hologo{BibTeX} 排版参考文献}\label{subsec:bibtex-use} -其中 \Arg{bst-name} 为格式文件的名称。\hologo{BibTeX} 提供了几个预定义的格式,如 plain, unsrt, alpha 等。 -一些学术论文的模板会提供自有的格式文件,以 \texttt{.bst} 作为扩展名,同样和 \LaTeX\ 源代码\textbf{放在同一个目录下}。 +\index{bibtex@\protect\hologo{BibTeX} 工具} +现在我们来看如何利用 \hologo{BibTeX} 数据库生成参考文献和引用。 -\cmdindex{cite,nocite} -其次就是在正文中引用参考文献了。\hologo{BibTeX} 程序在生成参考文献列表的时候,通常只列出你用 \cmd{cite} 命令引用的那些。 -如果需要列出没有被引用的文献,则需要 \cmd{nocite}\marg{citation} 命令;而 \cmd{nocite}\marg*{*} 则让所有未引用的参考文献都列出。 +第一步:我们当然需要一份 \hologo{BibTeX} 数据库,假设数据库文件名为 \texttt{books.bib}, +和 \LaTeX\ 源代码\textbf{一般位于同一个目录下}。 -\cmdindex{bibliography} +第二步:在源代码中添加必要的命令。假设源代码名为 \texttt{demo.tex}(见 \ref{code:bibtex-demo})。 +\begin{enumerate} +\item \cmdindex{bibliographystyle} +首先需要使用命令 \cmd{bibliographystyle} 设定参考文献的格式。 + +\item \cmdindex{cite,nocite} +其次,在正文中引用参考文献。\hologo{BibTeX} 程序在生成参考文献列表的时候,通常只列出用了 \cmd{cite} 命令引用的那些。 +如果需要列出未被引用的文献,则需要 \cmd{nocite}\marg{citation} 命令;而 \cmd{nocite}\marg*{*} 则让所有未被引用的文献都列出。 + +\item \cmdindex{bibliography} 再次,在你需要列出参考文献的位置,使用 \cmd{biblio\-graphy} 命令代替 \env{the\-biblio\-graphy} 环境: \begin{command} \cmd{bibliography}\marg{bib-name} \end{command} 其中 \Arg{bib-name} 是 \hologo{BibTeX} 数据库的文件名,\textbf{不要带 \texttt{.bib} 扩展名}。 +\end{enumerate} \begin{sourcecode}[htp] \begin{Verbatim} @@ -136,13 +179,13 @@ Partl~\cite{pa} has proposed that \ldots \bibliographystyle{plain} \begin{document} \section{Some words} -Some excellent books, for example, \cite{Lamport1994} -and \cite{Mittelbach2004} \ldots +Some excellent books, for example, \cite{citation1} +and \cite{citation2} \ldots \bibliography{books} \end{document} \end{Verbatim} -\caption{利用 \texttt{books.bib} 生成参考文献的源代码 \texttt{demo.tex}。} +\caption{利用 \texttt{books.bib} 生成参考文献的源代码 \texttt{demo.tex}。}\label{code:bibtex-demo} \end{sourcecode} 注意:\cmd{bibliographystyle} 和 \cmd{bibliography} 命令缺一不可,没有这两个命令,使用 \hologo{BibTeX} 生成参考文献列表的时候会报错。 @@ -150,26 +193,26 @@ and \cite{Mittelbach2004} \ldots 第三步:写好了以上两个文件之后,我们就可以开始编译了。 \begin{enumerate} \item 首先使用 \texttt{pdflatex} 或 \texttt{xelatex} 等命令编译 \LaTeX\ 源代码 \texttt{demo.tex}; - \item 接下来用 \texttt{bibtex} 命令处理 \texttt{demo.aux} 文件记录的参考文献格式、引用条目等信息。 + \item 接下来用 \texttt{bibtex} 命令处理 \texttt{demo.aux} 辅助文件记录的参考文献格式、引用条目等信息。 \texttt{bibtex} 命令处理完毕后会生成 \texttt{demo.bbl} 文件,内容就是一个 \env{thebibliography} 环境; \item 再使用 \texttt{pdflatex} 或 \texttt{xelatex} 等命令把源代码 \texttt{demo.tex} 编译\textbf{两遍},读入参考文献并正确生成引用。 \end{enumerate} 整个过程使用的命令如下(可以略去扩展名): \begin{verbatim} -pdflatex demo +xelatex demo bibtex demo -pdflatex demo -pdflatex demo +xelatex demo +xelatex demo \end{verbatim} 使用 \texttt{latex + dvipdfmx} 命令编译时,则 \texttt{dvipdfmx} 命令放在最后,相当于先后使用 \texttt{latex}, \texttt{bibtex}, \texttt{latex}, \texttt{latex}, \texttt{dvipdfmx}。 -\subsection{\pkg{natbib} 宏包} +\subsection{\pkg{natbib} 宏包}\label{subsec:natbib} \pkgindex{natbib} -时下许多学术期刊比较喜欢使用人名——年份的引用方式,形如(\emph{Alice et~al.}, 2005)。 +时下许多学术期刊比较喜欢使用人名——年份的引用方式,形如(\emph{Alice et~al.}, 2013)。 \pkg{natbib} 宏包提供了对这种“自然”引用方式的处理。 \cmdindex[natbib]{citep,citet} @@ -179,7 +222,7 @@ pdflatex demo \cmd{citet}\marg{citation} \end{command} -它们分别生成形如(\emph{Alice et~al.}, 2005) 和 \emph{Alice et~al.}(2005) 的人名——年份引用。 +它们分别生成形如(\emph{Alice et~al.}, 2013) 和 \emph{Alice et~al.} (2013) 的人名——年份引用。 \pkg{natbib} 宏包同样也支持数字引用,并且支持将引用的序号压缩,例如: \begin{verbatim} @@ -187,7 +230,7 @@ pdflatex demo \end{verbatim} 调用 \pkg{natbib} 宏包时指定以上选项后,连续引用多篇文献时,会生成形如 (3-7) 的引用而不是 (3, 4, 5, 6, 7)。 -\pkg{natbib} 宏包还有更多选项和用法,比如默认的引用是用小括号包裹的,可以为宏包添加 \texttt{square} 选项改为中括号; +\pkg{natbib} 宏包还有更多选项和用法,比如默认的引用是用小括号包裹的,可指定 \texttt{square} 选项改为中括号; 再比如 \cmd{citep} 命令也支持可选参数,为引用前后都添加额外内容。这里不再赘述,请参考 \pkg{natbib} 宏包的帮助文档。 \section{索引和 makeindex 工具}\label{sec:index} @@ -216,7 +259,7 @@ pdflatex demo 第三步,编译过程: \begin{enumerate} - \item 首先用 \texttt{pdflatex} 等命令编译源代码 \texttt{demo.tex}。编译过程中产生索引记录文件 \texttt{demo.idx}; + \item 首先用 \texttt{xelatex} 等命令编译源代码 \texttt{demo.tex}。编译过程中产生索引记录文件 \texttt{demo.idx}; \item 用 makeindex 程序处理 \texttt{demo.idx},生成用于排版的索引列表文件 \texttt{demo.ind}; \item 再次编译源代码 \texttt{demo.tex},正确生成索引列表。 \end{enumerate} @@ -266,7 +309,7 @@ pdflatex demo \end{tabular} \end{table} -读者可以钻研一下下面给出的一个较为复杂的,结合多级索引、索引格式、页码格式等的示例。但在自己使用时, +读者可以钻研一下以下给出的一个较为复杂的,结合多级索引、索引格式、页码格式等的用法示例。但在自己使用时, 最好还是遵循“简单的就是最好的”原则,尽量使用表 \ref{tbl:index-entry} 中的写法。 \begin{verbatim} Test index. @@ -282,7 +325,7 @@ Test index. \pinyinindex{yanse}{颜色} \LaTeX\ 原生不支持颜色,它依赖 \pkg{color} 宏包或者 \pkg{xcolor} 宏包,给 PDF 输出生成颜色的特殊指令。 -\subsection{颜色的表达方式} +\subsection{颜色的表达方式}\label{subsec:color-code} \pkgindex{color} \cmdindex[color/xcolor]{color} @@ -352,10 +395,11 @@ Test index. \cmd{definecolor}\marg{color-name}\marg{color-mode}\marg{code} \end{command} -如果调用 \pkg{color} 或 \pkg{xcolor} 宏包时指定 \texttt{dvipsnames} 选项,就有额外的 68 种颜色名称可用。 +如果调用 \pkg{color} 或 \pkg{xcolor} 宏包时指定 \texttt{dvipsnames} 选项,就有额外的 68 种颜色名称可用% +\footnote{\pkg{color} 宏包实际要指定 \texttt{dvipsnames} 和 \texttt{usenames} 选项。}。 \pkg{xcolor} 宏包还支持通过指定其它选项载入更多颜色名称。限于篇幅不展开介绍,详情请参考 \pkg{xcolor} 宏包的手册。 -\subsection{带颜色的文本和盒子} +\subsection{带颜色的文本和盒子}\label{subsec:colorbox} 原始的 \cmd{color} 命令类似于字体命令 \cmd{bfseries},它使之后排版的内容全部变成指定的颜色, 所以直接使用时通常要加花括号分组。\pkg{color} / \pkg{xcolor} 宏包都定义了一些方便用户使用的带颜色元素。 @@ -413,12 +457,50 @@ PDF 文档格式是现今最流行的电子文档格式,而电子文档最实 而 \texttt{pdflatex} 或 \texttt{xelatex} 命令下不需要。 \cmdindex[hyperref]{hypersetup} -\pkg{hyperref} 宏包提供了命令 \cmd{hypersetup} 配置各种选项,或者也可以作为宏包选项,在调用宏包时使用: +\pkg{hyperref} 宏包提供了命令 \cmd{hypersetup} 配置各种参数,或者也可以作为宏包选项,在调用宏包时指定: \begin{command} \cmd{hypersetup}\marg*{\Arg{option1},\Arg{option2}=\marg*{value},\ldots} \\ \cmd{usepackage}\oarg*{\Arg{option1},\Arg{option2}=\marg*{value},\ldots}\marg*{hyperref} \end{command} +\begin{table}[htp] +\centering +\caption{\pkg{hyperref} 宏包提供的参数设置。}\label{tbl:hyperref-settings} +\begin{tabular}{lcp{19.5em}} + \hline + 参数 & 默认值 & \multicolumn{1}{c}{含义} \\ + \hline + \texttt{colorlinks=}\Arg{true\textnormal|false} + & \textit{false} & 设置为 \textit{true} 为链接文字带颜色,反之加上带颜色的边框 \\ + \texttt{hidelinks} & & 取消链接的颜色和边框 \\ + \texttt{pdfborder=}\marg*{\Arg{n} \Arg{n} \Arg{n}} + & 0 0 1 & 超链接边框设置,设为 0 0 0 可取消边框 \\ + \hline + \texttt{bookmarks=}\Arg{true\textnormal|false} + & \textit{true} & 是否生成书签 \\ + \texttt{bookmarksopen=}\Arg{true\textnormal|false} + & \textit{false} & 是否展开书签 \\ + \texttt{bookmarksnumbered=}\Arg{true\textnormal|false} + & \textit{false} & 书签是否带章节编号 \\ + \texttt{CJKbookmarks=}\Arg{true\textnormal|false} + & \textit{false} & 使用 \pkg{CJK} 宏包/ GBK 编码排版中文时必须设定的参数, + 在第一次编译后需要将生成的 \texttt{.out} 文件用工具处理编码 \\ + \texttt{unicode} & & 使用 \pkg{CJKutf8} 宏包/ UTF-8 编码排版中文时必须设定的参数 \\ + \hline + \texttt{pdftitle=}\Arg{string} + & 空 & 标题 \\ + \texttt{pdfauthor=}\Arg{string} + & 空 & 作者 \\ + \texttt{pdfsubject=}\Arg{string} + & 空 & 主题 \\ + \texttt{pdfkeywords=}\Arg{string} + & 空 & 关键词 \\ + \texttt{pdfstartview=}\Arg{Fit\textnormal|FitH\textnormal|FitV} + & \textit{Fit} & 设置 PDF 页面以适合页面/适合宽度/适合高度等方式显示,默认为适合页面 \\ + \hline +\end{tabular} +\end{table} + \subsection{超链接}\label{subsec:url-href} \cmdindex[hyperref]{url,nolinkurl} @@ -451,8 +533,8 @@ PDF 文档格式是现今最流行的电子文档格式,而电子文档最实 \cmd{hyperref}\oarg{label}\marg{text} \end{command} -默认的超链接在文字外边加上一个带颜色的方框(在打印 PDF 时边框不会打印),可指定 \texttt{color\-links} 选项修改为将文字本身加上颜色, -或指定 \texttt{pdf\-border} 选项的参数;\texttt{hide\-links} 选项则令超链接既不变色也不加框。 +默认的超链接在文字外边加上一个带颜色的边框(在打印 PDF 时边框不会打印),可指定 \texttt{color\-links} 参数修改为将文字本身加上颜色, +或修改 \texttt{pdf\-border} 参数调整边框宽度以“去掉”边框;\texttt{hide\-links} 参数则令超链接既不变色也不加边框。 \begin{verbatim} \hypersetup{hidelinks} % or: @@ -491,44 +573,7 @@ PDF 文档格式是现今最流行的电子文档格式,而电子文档最实 \subsection{PDF 文档属性}\label{subsec:pdf-settings} -\pkg{hyperref} 宏包还提供了一些选项用于改变 PDF 文档的属性,部分见表 \ref{tbl:hyperref-settings}。 +\pkg{hyperref} 宏包还提供了一些参数用于改变 PDF 文档的属性,部分见表 \ref{tbl:hyperref-settings}。 -\begin{table}[htp] -\centering -\caption{\pkg{hyperref} 宏包提供的设置。}\label{tbl:hyperref-settings} -\begin{tabular}{lcp{19.5em}} - \hline - 选项 & 默认值 & \multicolumn{1}{c}{含义} \\ - \hline - \texttt{colorlinks=}\Arg{true\textnormal|false} - & \textit{false} & 设置为 \textit{true} 为链接文字带颜色,反之加上带颜色的边框 \\ - \texttt{hidelinks} & & 取消链接的颜色和边框 \\ - \texttt{pdfborder=}\marg*{\Arg{n} \Arg{n} \Arg{n}} - & 0 0 1 & 超链接边框设置,设为 0 0 0 可取消边框 \\ - \hline - \texttt{bookmarks=}\Arg{true\textnormal|false} - & \textit{true} & 是否生成书签 \\ - \texttt{bookmarksopen=}\Arg{true\textnormal|false} - & \textit{false} & 是否展开书签 \\ - \texttt{bookmarksnumbered=}\Arg{true\textnormal|false} - & \textit{false} & 书签是否带章节编号 \\ - \texttt{CJKbookmarks=}\Arg{true\textnormal|false} - & \textit{false} & 使用 \pkg{CJK} 宏包/ GBK 编码排版中文时必须指定的选项, - 在第一次编译后需要将生成的 \texttt{.out} 文件用工具处理编码 \\ - \texttt{unicode} & & 使用 \pkg{CJKutf8} 宏包/ UTF-8 编码排版中文时必须指定的选项 \\ - \hline - \texttt{pdftitle=}\Arg{string} - & 空 & 标题 \\ - \texttt{pdfauthor=}\Arg{string} - & 空 & 作者 \\ - \texttt{pdfsubject=}\Arg{string} - & 空 & 主题 \\ - \texttt{pdfkeywords=}\Arg{string} - & 空 & 关键词 \\ - \texttt{pdfstartview=}\Arg{Fit\textnormal|FitH\textnormal|FitV} - & \textit{Fit} & 设置 PDF 页面以适合页面/适合宽度/适合高度等方式显示,默认为适合页面 \\ - \hline -\end{tabular} -\end{table} \endinput
\ No newline at end of file diff --git a/Master/texmf-dist/doc/latex/lshort-chinese/src/chap/chap.07.graphic.tex b/Master/texmf-dist/doc/latex/lshort-chinese/src/chap/chap.07.graphic.tex index cc711ac878f..9692245611e 100644 --- a/Master/texmf-dist/doc/latex/lshort-chinese/src/chap/chap.07.graphic.tex +++ b/Master/texmf-dist/doc/latex/lshort-chinese/src/chap/chap.07.graphic.tex @@ -1,4 +1,4 @@ -\chapter{绘图功能} +\chapter{绘图功能}\label{chap:graphics} \addtocontents{los}{\protect\addvspace{10pt}} \begin{intro} @@ -12,18 +12,18 @@ \section{绘图语言简介}\label{sec:pict-lang} \LaTeX\ 提供了原始的 \env{picture} 环境,能够绘制一些基本的图形如点、线、矩形、圆、B\'ezier 曲线等等, -不过受制于 \LaTeX\ 本身,它的绘图功能极为有限,效果也往往不够美观。 +不过受制于 \LaTeX\ 本身,它的绘图功能极为有限,效果也不够美观。 现在流行的绘图代码有以下几种: \begin{itemize} \item PSTricks \par - 基于 PostSciprt 绘图方式的宏包,具有优秀的绘图能力。它对老式的 \texttt{latex + dvips} 编译命令支持最好, + 以 PostSciprt 语言的功能为基础的绘图宏包,具有优秀的绘图能力。它对老式的 \texttt{latex + dvips} 编译命令支持最好, 而现在的几种编译命令下使用起来都不够方便。 \item \TikZ\ \& \pkg{pgf} \par - 德国的 Till Tantau 在开发著名的 \LaTeX 幻灯片文档类 \cls{beamer} 时一并开发了绘图宏包 \pkg{pgf}, - 以令绘图语言能够在不同的编译方式下使用,如 \texttt{pdflatex} 和 \texttt{xelatex} 等。 - \TikZ\ 是在 \pkg{pgf} 基础上的一个封装,提供了方便的绘图语言,绘图能力不输 PSTricks。 + 德国的 Till Tantau 在开发著名的 \LaTeX\ 幻灯片文档类 \cls{beamer} 时一并开发了绘图宏包 \pkg{pgf}, + 目的是令其能够在 \texttt{pdflatex} 或 \texttt{xelatex} 等不同的编译命令下都能使用。 + \TikZ\ 是在 \pkg{pgf} 基础上封装的一个宏包,采用了类似 \hologo{METAPOST} 的语法,提供了方便的绘图命令,绘图能力不输 PSTricks。 \item \hologo{METAPOST} \& Asymptote \par \hologo{METAPOST} 脱胎于高德纳为 \TeX\ 配套开发的字体生成程序 \hologo{METAFONT}, @@ -36,7 +36,7 @@ 其复杂程度已远远超出入门手册的范围(\TikZ\ 的帮助文档有上千页之厚)。 对此感兴趣的读者需要自行查阅帮助手册,或者到互联网上参考现成的范例。 -\section{\TikZ}\label{sec:tikz} +\section{\TikZ\ 绘图语言}\label{sec:tikz} \index{TikZ@\TikZ} \pkgindex{tikz} @@ -46,15 +46,16 @@ \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} @@ -78,6 +79,18 @@ \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} @@ -101,13 +114,39 @@ \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} @@ -127,7 +166,7 @@ \end{example} \begin{itemize} - \item 网格、函数图像,网格可用 \texttt{step} 选项控制网格大小,函数图像用 \texttt{domain} 选项控制定义域: + \item 网格、函数图像,网格可用 \texttt{step} 参数控制网格大小,函数图像用 \texttt{domain} 参数控制定义域: \end{itemize} \begin{example} \begin{tikzpicture} @@ -154,7 +193,18 @@ 绘图参数可作为可选参数用在 \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] @@ -166,7 +216,7 @@ 为线条(\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 @@ -180,7 +230,7 @@ \item \texttt{help lines} \par 指定线条为辅助线,相当于 \texttt{line width=0.2pt,gray}。 \item \texttt{solid / dashed / dotted / dash dot / dash dot dot / \dots} \par - 指定线条类型(实现、虚线等)。 + 指定线条类型(实线、虚线等)。 \item \texttt{rounded corners} \par 将路径转向处绘制成圆角。可写成 \texttt{rounded corners=\Arg{radius}} 使用给定的半径。 \end{itemize} @@ -210,6 +260,8 @@ \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}; @@ -228,7 +280,8 @@ \begin{itemize} \item \texttt{anchor=\Arg{position}} \par 指定结点的某个角落 \Arg{position} 位于给定的位置 \Arg{coordinate}。 - \item \texttt{center/ above / below / left / right / above left / \ldots} \par + 参数 \Arg{position} 用 \texttt{center}、\texttt{north}、\texttt{north west} 等形式表示。 + \item \texttt{centered / above / below / left / right / above left / \ldots} \par 指定结点相对于 \Arg{coordinate} 的位置,\texttt{anchor=\Arg{position}} 的等效写法。\texttt{above} 相当于 \texttt{anchor=south},以此类推。 带参数的形式 \texttt{above=\Arg{length}} 指定节点相对于 \Arg{coordinate} 的距离。 \item \texttt{shape=\Arg{shape}} \par @@ -246,7 +299,7 @@ \hrule \end{table} -\cmd{node} 命令不仅为文字结点的位置命名(类似 \cmd{coordinate} 命令),在 \cmd{draw} 等命令中还可以使用某个结点的相对位置, +\cmd{node} 命令不仅为文字结点的位置命名,在 \cmd{draw} 等命令中还可以使用某个结点的相对位置, 以“东南西北”的方式命名: \begin{example} @@ -271,8 +324,8 @@ \end{tikzpicture} \end{example} -除了 \cmd{node} 命令之外,\cmd{coordinate} 也可以通过参数为某个位置添加文字。 -我们最后举一个较为复杂的例子,综合前面介绍过的各种路径、形状、文字结点和参数设置。 +除了 \cmd{node} 命令之外,\cmd{coordinate} 也可以通过参数为某个位置添加文字(label)。 +在此举一个较为复杂的例子,综合前面介绍过的各种路径、形状、文字结点和参数设置。 \begin{sourcecode}[htp] \begin{Verbatim} @@ -281,8 +334,8 @@ \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, @@ -296,8 +349,8 @@ \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, @@ -306,4 +359,38 @@ \end{tikzpicture} \end{center} \caption{\TikZ\ 绘图示例源代码和效果。}\label{code:tikz-example} -\end{sourcecode}
\ No newline at end of file +\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
\ No newline at end of file diff --git a/Master/texmf-dist/doc/latex/lshort-chinese/src/chap/chap.08.custom.tex b/Master/texmf-dist/doc/latex/lshort-chinese/src/chap/chap.08.custom.tex index 1990ebf61c4..bfcdb787a44 100644 --- a/Master/texmf-dist/doc/latex/lshort-chinese/src/chap/chap.08.custom.tex +++ b/Master/texmf-dist/doc/latex/lshort-chinese/src/chap/chap.08.custom.tex @@ -1,4 +1,4 @@ -\chapter{自定义 \LaTeX\ 命令和功能} +\chapter{自定义 \LaTeX\ 命令和功能}\label{chap:custom} \addtocontents{los}{\protect\addvspace{10pt}} \begin{intro} @@ -10,7 +10,7 @@ 不过作为入门手册,这些知识仍是不全面的。如果你不满足于此,需要参考更多资料,比如 \cite{companion,clsguide}。 \end{intro} -\section{自定义命令和环境}\label{sec:newcommands} +\section{自定义命令和环境}\label{sec:defs} 你也许已经意识到了,在本手册中介绍的所有命令都被包含在一个带颜色的矩形背景框中。 笔者并没有直接使用基础的 \LaTeX\ 命令来实现这个效果,而是创建了一个\textbf{宏包}, @@ -25,10 +25,10 @@ 这个例子中使用了一个新的环境 \env{command}。这个环境负责给命令代码加上一个带颜色的矩形背景框。 同时还使用了一个命令:\cmd{cmd}, 这个命令负责输出命令的名字,包括前面的反斜杠。 -一旦笔者想要修改命令代码的央视,比如更换颜色、加边框等等,可以通过改变 \env{command} 环境的定义来很容易地创建新的外观, +一旦笔者想要修改命令代码的样式,比如更换颜色、加边框等等,可以通过改变 \env{command} 环境的定义来很容易地创建新的外观, 而不是挨个修改每个命令示例。 -\subsection{定义新命令} +\subsection{定义新命令}\label{subsec:newcmd} \cmdindex{newcommand} 使用如下命令可以定义你自己的命令: @@ -73,7 +73,7 @@ This is ``\tnss'' \ldots{} 在某些情况之下,你可能会希望使用 \cmd{pro\-vide\-comm\-and} 命令。在命令不存在时,它相当于 \cmd{new\-comm\-and} ;在命令已经存在时,仍沿用存在的定义。 -\subsection{定义环境} +\subsection{定义环境}\label{subsec:newenv} \cmdindex{newenvironment} 与 \cmd{new\-comm\-and} 命令类似,有一个命令用于定义新的环境。这个命令是 \cmd{new\-environ\-ment},它的语法如下所示: @@ -103,9 +103,9 @@ My humble subjects \ldots 不会不小心新建重名的环境。如果你确实希望改变一个现有的环境,你可以使用命令 \cmd{re\-new\-environ\-ment},它使用和命令 \cmd{new\-environ\-ment} 相同的语法。 -\section{编写自己的宏包和文档类} +\section{编写自己的宏包和文档类}\label{sec:packages} -\subsection{编写简单的宏包} +\subsection{编写简单的宏包}\label{subsec:provide-pkg} \cmdindex{usepackage} 如果你定义了很多新的环境和命令,你的文档的导言区将变得相当长,在这种情况下,好的方式是 @@ -132,11 +132,11 @@ My humble subjects \ldots \cmd{ProvidesPackage}\marg{package name} \end{command} 这个命令应该放在你的宏包的最前面,并且一定要注意:\textbf{\Arg{package name} 需要和宏包的文件名一致。} -\cmd{Provides\-Package} 让 \LaTeX\ 记录宏包的名称,从而在你尝试再次调用同一个宏包的时候忽略后面的引入% +\cmd{Provides\-Package} 让 \LaTeX\ 记录宏包的名称,从而在你尝试再次调用同一个宏包的时候忽略后面的调用% \footnote{但如果你以\emph{不同的选项}多次引入宏包,则有可能会引起错误,见附录 \ref{sec:errors}。}。 源代码 \ref{code:package} 给出了一个小的宏包示例,其中包含了我们之前定义的一些命令。 -\subsection{在宏包中调用其它宏包} +\subsection{在宏包中调用其它宏包}\label{subsec:require-pkg} \cmdindex{RequirePackage} 如果你想进一步把各种宏包的功能汇总到一个文件里,而不是在文档的导言区罗列一大堆宏包的话, @@ -146,7 +146,7 @@ My humble subjects \ldots \cmd{RequirePackage}\oarg{options}\marg{package name} \end{command} -\subsection{编写自己的文档类} +\subsection{编写自己的文档类}\label{subsec:provide-cls} \cmdindex{ProvidesClass} 当你更进一步,需要编写自己的文档类,如论文模板等,问题就稍稍麻烦了一些。首先,自己的文档类以 \texttt{.cls} 作扩展名,开头使用 @@ -178,7 +178,7 @@ My humble subjects \ldots \cmd{newcounter}\marg{counter name}\oarg{parent counter name} \end{command} -\Arg{counter name} 为计数器的名称,可选参数 \Arg{parent counter name} 定义为 \Arg{counter name} 的上级计数器。 +\Arg{counter name} 为计数器的名称。计数器可以有上下级的关系,可选参数 \Arg{parent counter name} 定义为 \Arg{counter name} 的上级计数器。 \cmdindex{setcounter,addtocounter,stepcounter} 以下命令修改计数器的数值,\cmd{set\-counter} 将数值设为 \Arg{number};\cmd{add\-to\-counter} 将数值加上 \Arg{number}; @@ -201,19 +201,21 @@ My humble subjects \ldots 命令 \cmd{Alph} 控制计数器 \Arg{counter} 的值以大写字母形式显示。下表列出所有可用于修改计数器格式的命令。 注意:这些命令\textbf{只能用于计数器,不能直接用于数字},如 \cmd{roman}\marg*{1} 这样的命令会出错。 \begin{center} -\begin{tabular}{cl} +\begin{tabular}{lp{12em}l} \hline - \cmd{arabic} & 阿拉伯数字(默认) \\ - \cmd{alph} & 小写字母 \\ - \cmd{Alph} & 大写字母 \\ - \cmd{roman} & 小写罗马数字 \\ - \cmd{Roman} & 大写字母 \\ - \cmd{fnsymbol} & 一系列符号,用于标题页生成的脚注中 \\ + \textbf{命令} & \textbf{样式} & \textbf{备注} \\ + \hline + \cmd{arabic} & 阿拉伯数字(默认) & \\ + \cmd{alph} & 小写字母 & 限 0-26 \\ + \cmd{Alph} & 大写字母 & 限 0-26 \\ + \cmd{roman} & 小写罗马数字 & 限正数 \\ + \cmd{Roman} & 大写罗马数字 & 限正数 \\ + \cmd{fnsymbol} & 一系列符号,用于 \cmd{thanks} 命令生成的脚注 & 限 0-9 \\ \hline \end{tabular} \end{center} -计数器的值还可以利用其它字符,甚至其它计数器的值与之组合。如标准文档类里对 \cmd{sub\-section} 相关的计数器的输出格式的定义相当于: +计数器的输出格式还可以利用其它字符,甚至其它计数器的输出格式与之组合。如标准文档类里对 \cmd{sub\-section} 相关的计数器的输出格式的定义相当于: \begin{verbatim} \renewcommand\thesubsection{\thesection.\arabic{subsection}} \end{verbatim} @@ -222,44 +224,120 @@ My humble subjects \ldots \begin{itemize} \item 我们当然早就意识到了,所有章节命令 \cmd{chapter}、\cmd{section} 等分别对应计数器 chapter、section 等等,而且有上下级的关系。 -而计数器 part 是独立的。 + 而计数器 part 是独立的。 \item 有序列表 \env{enumerate} 的各级计数器为 enumi, enumii, enumiii, enumiv,也是有上下级的关系。 \item 图表浮动体的计数器就是 table 和 figure;公式的计数器为 equation。 - 这些计数器在 \cls{article} 文档类中是独立的,而在 \cls{book} 和 \cls{report} 中以 chapter 为上级计数器。 + 这些计数器在 \cls{article} 文档类中是独立的,而在 \cls{book} 和 \cls{report} 中以 chapter 为上级计数器。 \item 页码、脚注的计数器分别是 page 和 footnote。 \end{itemize} +我们可以利用前面介绍过的命令,修改计数器的样式以达到想要的效果,比如把页码修改成大写罗马字母,左右加横线,或是给脚注加上方括号: +\begin{verbatim} +\renewcommand\thepage{--~\Roman{page}~--} +\renewcommand\thefootnote{[\arabic{footnote}]} +\end{verbatim} + \cmdindex{pagenumbering} -我们可以利用前面介绍过的命令,修改计数器的样式以达到想要的效果,比如把页码修改成大写罗马字母,或是给脚注加上方括号。 -修改页码的样式有个更方便的命令 \cmd{page\-number\-ing}: +如果只是简单将计数器输出格式应用到页码上的话,有个更方便的命令 \cmd{page\-number\-ing}: \begin{verbatim} \pagenumbering{Roman} -\renewcommand\thefootnote{[\arabic{footnote}]} \end{verbatim} +不过它在修改 page 计数器输出格式的同时,还将计数器的值改为 1,令修改后的页码总是从 1 开始。\cls{book} 文档类的 +\cmd{frontmatter} 和 \cmd{mainmatter} 等都用了 \cmd{pagenumbering} 命令。 最后介绍两个有用的计数器: +\subsubsection{secnumdepth} + +\index{secnumdepth@secnumdepth (\textit{计数器})} +\LaTeX\ 标准文档类对章节划分了层级: \begin{itemize} - \item secnumdepth \index{secnumdepth@secnumdepth (\textit{计数器})} + \item 在 \cls{article} 文档类里 part 为 0,section 为 1,依此类推; + \item 在 \cls{report}/\cls{book} 文档类里 part 为 -1,chapter 为 0,section 为 1,等等。 +\end{itemize} + +secnumdepth 计数器控制章节编号的深度,如果章节的层级大于 secnumdepth,那么章节的标题、在目录和页眉页脚的标题都不编号 +(照常生成目录和页眉页脚),章节计数器也不计数。 + +可以用 \cmd{setcounter} 命令设置 secnumdepth 为较大的数使得层级比较深的章节也编号, +如设置为 4 令 \cmd{paragraph} 也编号;或者设置一个较小的数以取消编号,如设置为 -1 令 \cmd{chapter} 不编号。 +后者是生成不编号的章节的一个妙招,免去了手动使用 \cmd{add\-contents\-line} 和 \cmd{mark\-both} 的麻烦。 - \LaTeX\ 内部对章节规定了层级: - \begin{itemize} - \item 在 \cls{article} 文档类里 part 为 0,section 为 1,依此类推; - \item 在 \cls{report}/\cls{book} 文档类里 part 为 -1,chapter 为 0,section 为 1,等等。 - \end{itemize} +secnumdepth 计数器在 \cls{article} 文档类里默认为 3 (subsubsection 一级);在 \cls{report} 和 \cls{book} 文档类里默认为 2 (subsection 一级)。 - secnumdepth 计数器控制章节编号的深度,如果章节的层级大于 secnumdepth,那么章节的标题、在目录和页眉页脚的标题都不编号 - (照常生成目录和页眉页脚),章节计数器也不计数。 +\subsubsection{tocdepth} - 可以用 \cmd{setcounter} 命令设置 secnumdepth 为较大的数使得层级比较深的章节也编号, - 如设置为 4 令 \cmd{paragraph} 也编号;或者设置一个较小的数以取消编号,如设置为 -1 令 \cmd{chapter} 不编号。 - 后者是生成不编号的章节的一个妙招,免去了手动使用 \cmd{add\-contents\-line} 和 \cmd{mark\-both} 的麻烦。 +\index{tocdepth@tocdepth (\textit{计数器})} +tocdepth 计数器控制目录的深度,如果章节的层级大于 tocdepth,那么章节将不会自动写入目录项。默认值同 secnumdepth。 - secnumdepth 计数器在 \cls{article} 文档类里默认为 3 (subsubsection 一级);在 \cls{report} 和 \cls{book} 文档类里默认为 2 (subsection 一级)。 +\section{\LaTeX\ 可定制的一些命令和参数}\label{sec:latex-settings} - \item tocdepth \index{tocdepth@tocdepth (\textit{计数器})} +\LaTeX\ 事实上有相当一些可以定制的命令和参数,不过对于修改样式或者开发宏包来说,这些定制项还远远不够。 - tocdepth 计数器控制目录的深度,如果章节的层级大于 tocdepth,那么章节将不会自动写入目录项。默认值同 secnumdepth。 +对于用户来讲,容易定制的是这一些项目: + +\begin{itemize} + \item 标题名称/前后缀等。表 \ref{tbl:latex-settings-names} 列出了标准文档类里可定制的项目, + 表中所有的 \LaTeX\ 命令都可以用 \cmd{re\-new\-comm\-and} 来修改。 + \item 长度。前文在叙述各种排版元素时已经涉及到一些,现归纳于表 \ref{tbl:latex-settings-lengths}。 + 表中所有的长度命令可用 \cmd{setlength} 来修改。 + 大多数控制页面尺寸的长度参数在图 \ref{fig:layouts} 给出,此处不再赘述。 \end{itemize} +\begin{table}[htbp] +\centering +\caption{\LaTeX\ 可定制的标题名称/前后缀。}\label{tbl:latex-settings-names} +\small +\begin{tabularx}{\textwidth}{llX} + \hline + \textsf{命令} & \textsf{默认值} & \textsf{含义} \\ + \hline + \cmd{partname} & Part & \cmd{part} 命令生成的标题前缀 \\ + \cmd{chaptername} & Chapter & \cmd{chapter} 命令生成的标题前缀 \\ + \cmd{appendixname} & Appendix & 使用 \cmd{appendix} 命令生成的附录部分的章标题前缀 \\ + \cmd{abstractname} & Abstract & 摘要环境 \env{abstract} 的标题名称 \\[1ex] + \cmd{contentsname} & Contents & \cmd{tableofcontents} 命令生成的目录标题 \\ + \cmd{listfigurename} & List of Figures & \cmd{listoffigures} 命令生成的插图目录标题 \\ + \cmd{listtablename} & List of Tables & \cmd{listoftables} 命令生成的表格目录标题 \\[1ex] + \cmd{tablename} & Table & \env{table} 浮动体中 \cmd{caption} 命令生成的标题前缀 \\ + \cmd{figurename} & Figure & \env{figure} 浮动体中 \cmd{caption} 命令生成的标题前缀 \\[1ex] + \cmd{refname} & References & \env{thebibliography} 环境或 \cmd{biblio\-graphy} + 命令生成的参考文献标题(\cls{article} 文档类) \\ + \cmd{bibname} & Bibliography & \env{thebibliography} 环境或 \cmd{biblio\-graphy} + 命令生成的参考文献标题(\cls{book / report} 文档类)\\ + \cmd{indexname} & Index & \cmd{printindex} 命令生成的索引标题 \\ + \hline +\end{tabularx} +\begin{quotation}\footnotesize% +注:形如“第 X 章”和“第 X 部分”的中文章节标题不能直接由修改本表的命令得到,需要使用 \pkg{titlesec} 等宏包定制。 +如果使用 \pkg{ctex} 宏包或文档类,那么标题默认被修改成“第 X 章”和“第 X 部分”的形式,本表中的其它标题也修改为中文标题。详见 \pkg{ctex} 宏包的帮助手册。 +\end{quotation} +\end{table} + +\begin{table}[htbp] +\centering +\caption{\LaTeX\ 可定制的长度参数。}\label{tbl:latex-settings-lengths} +\small +\begin{tabularx}{\textwidth}{ll@{pt\hskip2\tabcolsep}X} + \hline + \textsf{命令} & \multicolumn{1}{l@{\hskip2\tabcolsep}}{\textsf{默认值}} & \textsf{含义} \\ + \hline + \cmd{fboxrule} & 0.4 & \cmd{fbox} 或 \cmd{framebox} 等带框盒子的线宽 \\ + \cmd{fboxsep} & 3 & \cmd{fbox} 或 \cmd{framebox} 等带框盒子的内边距 \\[1ex] + \cmd{arraycolsep} & 5 & \env{array} 环境的表格项前后的间距 \\ + \cmd{tabcolsep} & 6 & \env{tabular} 环境的表格项前后的间距 \\ + \cmd{arrayrulewidth} & 0.4 & 表格线宽 \\ + \cmd{doublerulesep} & 2 & 连续两根表格线之间的间距 \\[1ex] + \cmd{abovecaptionskip} & 10 & \cmd{caption} 命令位于图表下方时,与上方图表的间距 \\ + \cmd{belowcaptionskip} & 0 & \cmd{caption} 命令位于图表上方时,与下方图表的间距 \\[1ex] + \cmd{columnsep} & 10 & 双栏排版下两栏的间距 \\ + \cmd{columnseprule} & 0 & 双栏排版下两栏之间竖线的宽度 \\ + \hline +\end{tabularx} +\begin{quotation}\footnotesize% +注:\cmd{arraycolsep} 和 \cmd{tabcolsep} 是每个表格项本身前后的间距(表格线前后无间距;\texttt{@} 列格式会消除与前后表格项的间距)。 +两个表格项之间的间距相当于 2\cmd{arraycolsep} 或 2\cmd{tabcolsep}。 +\end{quotation} +\end{table} + \endinput
\ No newline at end of file diff --git a/Master/texmf-dist/doc/latex/lshort-chinese/src/chap/sec.symbol.table.tex b/Master/texmf-dist/doc/latex/lshort-chinese/src/chap/sec.symbol.table.tex index 46528589fd8..edd0b7d8c3c 100644 --- a/Master/texmf-dist/doc/latex/lshort-chinese/src/chap/sec.symbol.table.tex +++ b/Master/texmf-dist/doc/latex/lshort-chinese/src/chap/sec.symbol.table.tex @@ -15,15 +15,10 @@ \def\SC #1{#1 & \texttt{\string#1}} - -\newsavebox{\symbbox} \newenvironment{symbols}[1]% - {\def\arraystretch{1.1} - \begin{lrbox}{\symbbox} + {\small\def\arraystretch{1.1} \begin{tabular}{@{}#1@{}}}% - {\end{tabular}\end{lrbox}\makebox[\linewidth]{\usebox{\symbbox}}} - -\newcount\savesecdepth + {\end{tabular}} \clearpage \section{符号表}\label{sec:math-tables} @@ -39,6 +34,7 @@ \symindex{dag,ddag,P,S,copyright,pounds} \begin{table}[htp] +\centering \caption{文本/数学模式通用符号}\label{tbl:general-syms} \begin{quote}\footnotesize% 这些符号可用于文本和数学模式。 @@ -53,6 +49,7 @@ \end{table} \begin{table}[htp] +\centering \caption{希腊字母。} \label{tbl:math-greek} \begin{quote}\footnotesize% \cmd{Alpha},\cmd{Beta} 等希腊字母符号不存在,因为它们和拉丁字母 A,B 等一模一样; @@ -79,6 +76,7 @@ \end{table} \begin{table}[htp] +\centering \caption{二元关系符。} \label{tbl:math-rel} \begin{quote}\footnotesize% 所有的二元关系符都可以加 \cmd{not} 前缀得到相反意义的关系符,例如 \cmd{not}\texttt{=} 就得到不等号(同 \cmd{ne})。 @@ -104,6 +102,7 @@ \end{table} \begin{table}[htp] +\centering \caption{二元运算符。}\label{tbl:math-op} \begin{symbols}{*3{cl}} \hline @@ -125,6 +124,7 @@ \end{table} \begin{table}[htp] +\centering \caption{巨算符。}\label{tbl:math-bigop} \def\arraystretch{1.8} \begin{symbols}{*3{ccl}} @@ -141,6 +141,7 @@ \end{table} \begin{table}[htp] +\centering \caption{数学重音符号。}\label{tbl:math-accents} \begin{quote}\footnotesize% 最后一个 \cmd{wideparen} 依赖 \pkg{yhmath} 宏包。 @@ -158,6 +159,7 @@ \end{table} \begin{table}[htp] +\centering \caption{箭头。} \label{tbl:math-arrows} \begin{symbols}{*2{cl}} \hline @@ -183,6 +185,7 @@ \end{table} \begin{table}[htp] +\centering \caption{作为重音的箭头符号。} \label{tbl:math-arrow-accents} \begin{symbols}{*2{cl}} \hline @@ -194,6 +197,7 @@ \end{table} \begin{table}[htp] +\centering \caption{定界符。}\label{tbl:math-delims} \begin{symbols}{*3{cl}} \hline @@ -210,6 +214,7 @@ \end{table} \begin{table}[htp] +\centering \caption{用于行间公式的大定界符。}\label{tbl:math-large-delims} \def\arraystretch{1.8} \begin{symbols}{*3{cl}} @@ -222,6 +227,7 @@ \end{table} \begin{table}[htp] +\centering \caption{其他符号。}\label{tbl:math-misc} \begin{symbols}{*4{cl}} \hline @@ -244,6 +250,7 @@ 本小节所有符号依赖 \pkg{amssymb} 宏包。 \begin{table}[htp] +\centering \caption{\AmS\ 希腊字母和希伯来字母。} \label{tbl:ams-greek-hebrew} \begin{symbols}{*5{cl}} \hline @@ -253,6 +260,7 @@ \end{table} \begin{table}[htp] +\centering \caption{\AmS\ 二元关系符。} \label{tbl:ams-rel} \begin{symbols}{*3{cl}} \hline @@ -283,6 +291,7 @@ \end{table} \begin{table}[htp] +\centering \caption{\AmS\ 二元运算符。} \label{tbl:ams-op} \begin{symbols}{*3{cl}} \hline @@ -299,6 +308,7 @@ \end{table} \begin{table}[htp] +\centering \caption{\AmS\ 箭头。}\label{tbl:ams-arrows} \begin{symbols}{*2{cl}} \hline @@ -322,6 +332,7 @@ \end{table} \begin{table}[htp] +\centering \caption{\AmS\ 反义二元关系符和箭头。}\label{tbl:ams-negative} \begin{symbols}{*3{cl}} \hline @@ -350,6 +361,7 @@ \end{table} \begin{table}[htp] +\centering \caption{\AmS\ 定界符}\label{tbl:ams-delims} \begin{symbols}{*4{cl}} \hline @@ -360,6 +372,7 @@ \end{table} \begin{table}[htp] +\centering \caption{\AmS\ 其它符号。}\label{tbl:ams-misc} \begin{symbols}{*3{cl}} \hline diff --git a/Master/texmf-dist/doc/latex/lshort-chinese/src/chap/titlepage.tex b/Master/texmf-dist/doc/latex/lshort-chinese/src/chap/titlepage.tex index 68223ab13c7..7a03456356b 100644 --- a/Master/texmf-dist/doc/latex/lshort-chinese/src/chap/titlepage.tex +++ b/Master/texmf-dist/doc/latex/lshort-chinese/src/chap/titlepage.tex @@ -15,9 +15,9 @@ \linespread{1.67}\selectfont\raggedleft {\bfseries 原版作者:} Tobias Oetiker\\ Hubert Partl, Irene Hyna and Elisabeth Schlegl \\ - {\bfseries 原版版本:} Version~5.05, July 18, 2015\\[4ex] + {\bfseries 原版版本:} Version~\lshortversionoriginal, July 18, 2015\\[4ex] {\bfseries 中文翻译:} China\TeX\ 论坛\\ - {\bfseries 中文版本:} 版本~5.05,\zhdigits*{\the\year}年\zhnumber{\the\month}月 + {\bfseries 中文版本:} 版本~\lshortversioncn,\zhdigits*{\the\year}年\zhnumber{\the\month}月 \end{minipage}% } diff --git a/Master/texmf-dist/doc/latex/lshort-chinese/src/lshort-zh-cn-layout.tex b/Master/texmf-dist/doc/latex/lshort-chinese/src/lshort-zh-cn-layout.tex index 7bf60e338c5..35734b7260e 100644 --- a/Master/texmf-dist/doc/latex/lshort-chinese/src/lshort-zh-cn-layout.tex +++ b/Master/texmf-dist/doc/latex/lshort-chinese/src/lshort-zh-cn-layout.tex @@ -1,12 +1,11 @@ +\newif\ifoddsidelayout + \expandafter\ifx\csname ver@layout.sty\endcsname\relax \typeout{Package `layout' not loaded. Command \string\layoutpicture{} will have no effect.} \def\layoutpicture{\@ifstar\@empty\@empty} -% \let\oddsidelayouttrue\relax \let\oddsidelayoutfalse\relax \expandafter\endinput \fi -\newif\ifoddsidelayout - \newcommand\lay@layoutpic{% \if@twoside \ifoddsidelayout diff --git a/Master/texmf-dist/doc/latex/lshort-chinese/src/lshort-zh-cn-style.sty b/Master/texmf-dist/doc/latex/lshort-chinese/src/lshort-zh-cn-style.sty index 6eca77209f6..c0129b950fa 100644 --- a/Master/texmf-dist/doc/latex/lshort-chinese/src/lshort-zh-cn-style.sty +++ b/Master/texmf-dist/doc/latex/lshort-chinese/src/lshort-zh-cn-style.sty @@ -18,17 +18,18 @@ % % ctex 宏包 2.2(2015/06/24) 或以上版本 % ctex 宏包的字号设定会让许多固定字号的字体宏包报太多 warning,应当抑制 +% 中文正文字体使用 Fandol % \RequirePackage[fontset=fandol,zihao=false,scheme=chinese,heading=true]{ctex}[2015/06/24] % % 字体和符号宏包 % -\RequirePackage{lmodern} % 正文字体使用 Latin Modern +\RequirePackage{lmodern} % 西文正文字体使用 Latin Modern \RequirePackage{amssymb,latexsym,textcomp,mathrsfs,euscript,yhmath} % 与默认字体不冲突的一些符号包 \RequirePackage[LGR,T1]{fontenc} -% layout 宏包生成能放入浮动体的命令,手动指定奇偶页的 layout +% 调整 layout 宏包的命令使之能够放入浮动体,手动指定奇偶页的 layout \input lshort-zh-cn-layout \oddsidelayouttrue % layout 文字汉化 @@ -77,33 +78,48 @@ % 索引依赖 multicols 环境排版 % \renewenvironment{thebibliography}[1] - {\chapter{\bibname}% - \@mkboth{\MakeUppercase\bibname}{\MakeUppercase\bibname}% - \list{\@biblabel{\@arabic\c@enumiv}}% - {\settowidth\labelwidth{\@biblabel{#1}}% - \leftmargin\labelwidth - \advance\leftmargin\labelsep - \@openbib@code - \usecounter{enumiv}% - \let\p@enumiv\@empty - \renewcommand\theenumiv{\@arabic\c@enumiv}}% - \sloppy - \clubpenalty4000 - \@clubpenalty \clubpenalty - \widowpenalty4000% - \sfcode`\.\@m} - {\def\@noitemerr - {\@latex@warning{Empty `thebibliography' environment}}% - \endlist} + {\chapter{\bibname% + \protect\@mkboth{\MakeUppercase\bibname}{\MakeUppercase\bibname}}% + \list{\@biblabel{\@arabic\c@enumiv}}% + {\settowidth\labelwidth{\@biblabel{#1}}% + \leftmargin\labelwidth + \advance\leftmargin\labelsep + \@openbib@code + \usecounter{enumiv}% + \let\p@enumiv\@empty + \renewcommand\theenumiv{\@arabic\c@enumiv}}% + \sloppy + \clubpenalty4000 + \@clubpenalty \clubpenalty + \widowpenalty4000% + \sfcode`\.\@m} + {\def\@noitemerr + {\@latex@warning{Empty `thebibliography' environment}}% + \endlist} \renewenvironment{theindex}% - {\chapter{\indexname}% - \@mkboth{\MakeUppercase{\indexname}}{\MakeUppercase{\indexname}} + {\chapter{\indexname% + \protect\@mkboth{\MakeUppercase\indexname}{\MakeUppercase\indexname}} \parskip\z@ \@plus .3\p@\relax \let\item\@idxitem + \small \begin{multicols}{2}} {\end{multicols}} % +% 将主目录和源代码目录合并排版 +% 不依赖 float 宏包的 \listof,因此要补充定义 \l@sourcecode +% +\renewcommand\tableofcontents% + {\chapter{\contentsname% + \protect\@mkboth{\MakeUppercase\contentsname}{\MakeUppercase\contentsname}}% + \begin{multicols}{2} + \@starttoc{toc}% + \end{multicols} + \@makeschapterhead{\sourcecodename}% + \@starttoc{los}% +} + +% % 令 \cleardoublepage 的偶数页页眉页脚为空 % \renewcommand{\cleardoublepage} @@ -127,8 +143,10 @@ % % PDF 书签中对符号的特殊处理 % -\pdfstringdefDisableCommands{\def\AmS{AMS}}% -\pdfstringdefDisableCommands{\def\TikZ{TikZ}}% +\pdfstringdefDisableCommands{% + \def\AmS{AMS}% + \def\TikZ{TikZ}% +} % % 示意长度 @@ -162,14 +180,20 @@ \def\ltxcmdindex#1{\@for\@ltxcmd:=#1\do{\index{\@ltxcmd @\cmd{\@ltxcmd}}}} \def\ltxenvindex#1{\@for\@ltxenv:=#1\do{\index{\@ltxenv @\env{\@ltxenv} 环境}}} \def\pkgcmdindex[#1]#2{\@for\@pkgcmd:=#2\do{\index{\@pkgcmd @\cmd{\@pkgcmd} (\pkg{#1})}}} -\def\pkgenvindex[#1]#2{\@for\@pkgcmd:=#2\do{\index{\@pkgcmd @\env{\@pkgcmd} 环境 (\pkg{#1})}}} +\def\pkgenvindex[#1]#2{\@for\@pkgenv:=#2\do{\index{\@pkgenv @\env{\@pkgenv} 环境 (\pkg{#1})}}} + +% % 文本和数学符号索引 +% \def\symindex#1{\@for\t@xtsym:=#1\do{\index{\t@xtsym @\cmd{\t@xtsym} (\textit{符号} \expandafter\protect\csname \t@xtsym\endcsname)}}} \def\mathindex#1{\@for\m@thcmd:=#1\do{\index{\m@thcmd @\cmd{\m@thcmd} (\textit{数学命令})}}} \def\msymindex#1{\@for\m@thsym:=#1\do{\index{\m@thsym @\cmd{\m@thsym} (\textit{数学符号}$\expandafter\protect\csname \m@thsym\endcsname$)}}} \def\maccindex#1{\@for\m@thacc:=#1\do{\index{\m@thacc @\cmd{\m@thacc} (\textit{数学重音}$\expandafter\protect\csname \m@thacc\endcsname{a}$)}}} \def\waccindex#1{\@for\wideacc:=#1\do{\index{\wideacc @\cmd{\wideacc} (\textit{数学重音}$\expandafter\protect\csname \wideacc\endcsname{AB}$)}}} + +% % 拼音索引 +% \def\pinyinindex#1#2{\index{#1@#2}} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -190,14 +214,11 @@ \def\arraystretch{1.2}% \hskip\parindent% \begin{tabular}{>{\columncolor{blue!5}}l} - }% - {\\ - \end{tabular} - \endtrivlist} + }{\end{tabular}\endtrivlist} % % 示例环境 example -% 环境中的代码被 verbatim 环境处理到一个临时文件中 +% 环境中的代码写入临时文件 lshort-zh-cn-example.aux % 再从临时文件中读取,分别生成代码盒子和示例盒子 % \newwrite\example@out @@ -242,7 +263,7 @@ \fvset{fontsize=\small,frame=lines} \newfloat{sourcecode}{tbp}{los}[chapter] \floatname{sourcecode}{源代码} -\def\listofsources{\listof{sourcecode}{源代码示例列表}} - +\def\sourcecodename{源代码示例列表} +\def\l@sourcecode{\@dottedtocline{1}{1.5em}{2.3em}} \endinput
\ No newline at end of file diff --git a/Master/texmf-dist/doc/latex/lshort-chinese/src/lshort-zh-cn.tex b/Master/texmf-dist/doc/latex/lshort-chinese/src/lshort-zh-cn.tex index 7d616811338..f6bc3f8f7ef 100644 --- a/Master/texmf-dist/doc/latex/lshort-chinese/src/lshort-zh-cn.tex +++ b/Master/texmf-dist/doc/latex/lshort-chinese/src/lshort-zh-cn.tex @@ -1,6 +1,9 @@ \documentclass[a4paper]{book} \usepackage{lshort-zh-cn-style} +\def\lshortversionoriginal{5.05} +\def\lshortversioncn{5.10} + \hypersetup{% pdftitle={The Not So Short Introduction to LaTeX2e(Chinese Simplified)},% pdfkeywords={LaTeX, LaTeX2e}, @@ -12,6 +15,8 @@ % 第四章用到的自定义算符 \DeclareMathOperator{\argh}{argh} \DeclareMathOperator*{\nut}{Nut} +% 第四章的 \proofname 用原先的英文定义 +\def\proofname{Proof} \makeindex @@ -24,7 +29,7 @@ \input{chap/preface.contrib} \input{chap/preface.overview} \tableofcontents -\listofsources +%\listofsources \mainmatter \input{chap/chap.01.basics} diff --git a/Master/texmf-dist/doc/latex/lshort-chinese/src/make.bat b/Master/texmf-dist/doc/latex/lshort-chinese/src/make.bat index 686897658a2..fe563c7e171 100755 --- a/Master/texmf-dist/doc/latex/lshort-chinese/src/make.bat +++ b/Master/texmf-dist/doc/latex/lshort-chinese/src/make.bat @@ -1,24 +1,25 @@ -@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 - -if "%1"=="clean" goto clean - -set TEX=xelatex -set MODE=-interaction=nonstopmode -set MAKEINDEX=makeindex - -%TEX% %MODE% %LSHORT% -%MAKEINDEX% -s %LSHORT%.ist %LSHORT% -%TEX% %MODE% %LSHORT% - -if exist %PDF% ( -move %PDF% .. -start "" "..\%PDF%" -) -exit - -:clean -del %TEMP% -exit +@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 %LSHORT%.synctex.gz
+
+if "%1"=="clean" goto clean
+
+set TEX=xelatex
+set MODE=-interaction=nonstopmode -synctex=1
+set MAKEINDEX=makeindex
+
+%TEX% %MODE% %LSHORT%
+%MAKEINDEX% -s %LSHORT%.ist %LSHORT%
+%TEX% %MODE% %LSHORT%
+%TEX% %MODE% %LSHORT%
+
+if exist %PDF% (
+move %PDF% ..
+start "" "..\%PDF%"
+)
+exit
+
+:clean
+del %TEMP%
+exit
|