diff options
author | Norbert Preining <norbert@preining.info> | 2021-11-21 03:01:17 +0000 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2021-11-21 03:01:17 +0000 |
commit | 25fba613796cd9c1b2042e28152d451d8cddef4a (patch) | |
tree | 8b5bf577b5ce4f462634fd4405dc9e4d6c883fef /info | |
parent | d1279bd566b17ed06ef34f94854126ea7478355e (diff) |
CTAN sync 202111210301
Diffstat (limited to 'info')
20 files changed, 517 insertions, 346 deletions
diff --git a/info/lshort/chinese/README-zh.md b/info/lshort/chinese/README-zh.md index eda9fdcecc..579e21c4b2 100644 --- a/info/lshort/chinese/README-zh.md +++ b/info/lshort/chinese/README-zh.md @@ -1,4 +1,4 @@ -# 中文版 lshort,6.02 版 +# 中文版 lshort,6.03 版 ## 许可证 diff --git a/info/lshort/chinese/README.md b/info/lshort/chinese/README.md index a6de7cfc1d..4fb51ffc10 100644 --- a/info/lshort/chinese/README.md +++ b/info/lshort/chinese/README.md @@ -1,4 +1,4 @@ -# The Not So Short Introduction To LaTeX (Chinese Edition), v6.02 +# The Not So Short Introduction To LaTeX (Chinese Edition), v6.03 ## License diff --git a/info/lshort/chinese/lshort-zh-cn.pdf b/info/lshort/chinese/lshort-zh-cn.pdf Binary files differindex 291e308034..1bbfe9fd2c 100644 --- a/info/lshort/chinese/lshort-zh-cn.pdf +++ b/info/lshort/chinese/lshort-zh-cn.pdf diff --git a/info/lshort/chinese/src/INSTRUCTIONS.md b/info/lshort/chinese/src/INSTRUCTIONS.md index a441c6470b..9e32f31462 100644 --- a/info/lshort/chinese/src/INSTRUCTIONS.md +++ b/info/lshort/chinese/src/INSTRUCTIONS.md @@ -108,4 +108,3 @@ CTAN 资源的链接使用以下命令: **example 环境** 示例环境,生成源代码和示例效果。示例环境里不要涉及能分页的命令和浮动体。 **sourcecode 环境** 用于排版代码的浮动体,内部使用 `fancyvrb` 宏包的 Verbatim 环境。 - diff --git a/info/lshort/chinese/src/chap/app.A.install.tex b/info/lshort/chinese/src/chap/app.A.install.tex index 81f5b5b1d3..1213e276dd 100644 --- a/info/lshort/chinese/src/chap/app.A.install.tex +++ b/info/lshort/chinese/src/chap/app.A.install.tex @@ -31,14 +31,13 @@ \subsubsection{\hologo{TeXLive}} -\hologo{TeXLive} 的光盘镜像发布于 \url{http://www.tug.org/texlive/}% +\hologo{TeXLive} 的光盘镜像发布于 \url{https://www.tug.org/texlive/}% \footnote{Linux 发行版的软件源也提供 \hologo{TeXLive} 的安装,不过不够完整,更新也不是很及时。建议直接从镜像安装。}。 下载镜像到本地,挂载到虚拟光驱,或者用压缩工具解压后,在其根目录有几个用于安装的脚本: \begin{itemize} \item 用于 Windows 的批处理文件: \begin{itemize} - \item \texttt{install-tl-windows.bat} 双击启动图形界面安装程序(简单安装); - \item \texttt{install-tl-advanced.bat} 双击启动图形界面安装程序(定制安装); + \item \texttt{install-tl-windows.bat} 双击启动图形界面安装程序,可以在图形安装界面的 Advanced 选项中定制安装; \item 在命令提示符中输入 \texttt{install-tl-windows.bat -no-gui} 启动文本界面安装程序。 \end{itemize} \item 用于 Linux 的 Perl 脚本 \texttt{install-tl} : @@ -51,7 +50,7 @@ 另外也可以下载在线安装程序 \texttt{install-tl.zip},包含以上所有安装脚本。安装过程中会从 CTAN 软件源下载所有组件。 Linux 下 \hologo{TeXLive} 安装完毕后,一般还需要在 root 权限下进行以下操作,使得 \hologo{XeLaTeX} 能正确通过 \pkg{fontspec} -等宏包使用字体\footnote{\url{http://www.tug.org/texlive/doc/texlive-zh-cn/texlive-zh-cn.pdf},% +等宏包使用字体\footnote{\url{https://www.tug.org/texlive/doc/texlive-zh-cn/texlive-zh-cn.pdf}, 可用 \texttt{texdoc texlive-zh-cn} 在本地打开。}: \begin{enumerate} \item 将 \texttt{texlive-fontconfig.conf} 文件复制到 \texttt{/etc/fonts/conf.d/09-texlive.conf}。 @@ -59,7 +58,7 @@ Linux 下 \hologo{TeXLive} 安装完毕后,一般还需要在 root 权限下 \end{enumerate} \subsubsection{\hologo{MiKTeX}} -从 \hologo{MiKTeX} 官网 \url{http://www.miktex.org/} 下载名为 \texttt{basic-miktex-***.exe} 的 Windows 安装程序包。 +从 \hologo{MiKTeX} 官网 \url{https://www.miktex.org/} 下载名为 \texttt{basic-miktex-***.exe} 的 Windows 安装程序包。 下载后直接双击打开,按照程序的提示进行安装即可。 \section{安装和更新宏包}\label{sec:pkg-manager} diff --git a/info/lshort/chinese/src/chap/app.B.error.help.tex b/info/lshort/chinese/src/chap/app.B.error.help.tex index fb14d48bb3..43219013a0 100644 --- a/info/lshort/chinese/src/chap/app.B.error.help.tex +++ b/info/lshort/chinese/src/chap/app.B.error.help.tex @@ -32,7 +32,7 @@ l.3 Test \LaTEx \subsubsection{处理方式} 出现错误时,编译过程将暂停,等待用户输入命令。用户可以直接敲回车跳过当前的错误,继续编译,相当于丢掉了写错的命令, -将``Test and it's friends.''排版出来。但这个例子过于简单,有些复杂的代码中,有可能会由于一个小问题导致一连串的错误。 +将“Test and it's friends.”排版出来。但这个例子过于简单,有些复杂的代码中,有可能会由于一个小问题导致一连串的错误。 此时可以选择按 \textbf{S/R/Q} 选择跳过接下来的所有错误,或者按 \textbf{X} 直接退出编译,将源代码中的错误修改后重新编译。 \subsubsection{常见的 \LaTeX{} 错误信息} @@ -116,7 +116,7 @@ l.3 Test \LaTEx 使用 \cmd{newcommand} 或 \cmd{newenvironment} 定义已有的命令/环境时产生的错误。如果自己确实作了定义,可考虑用 \cmd{re\-new\-command} 或 \cmd{re\-new\-environment} 定义;如果是宏包定义的命令产生了这个错误,则属于隐性的宏包冲突。 -相比之前的 ``Option Clash''{},隐性宏包冲突是更难以解决的问题,对各种宏包不熟悉的用户,尤其是使用模板的用户而言,往往难以下手。 +相比之前的“Option clash”,隐性宏包冲突是更难以解决的问题,对各种宏包不熟悉的用户,尤其是使用模板的用户而言,往往难以下手。 用户可尝试查找引起冲突的宏包的帮助文档。详尽的手册里通常会告知用户这个宏包应当在某个宏包的前面/后面调用,或者不能与某个宏包一起调用。 如果是模板调用了大量宏包导致冲突,可联系模板的作者解决。 @@ -173,74 +173,75 @@ texdoc fancyhdr \subsection{文字、公式和符号}\label{subsec:text-math-symbols} \begin{pkglist} - \item[amsmath] \hologo{AmS} 数学公式扩展。 - \item[mathtools] 数学公式扩展宏包,提供了公式编号定制和更多的符号、矩阵等。 - \item[amsfonts] \hologo{AmS} 扩展符号的基础字体支持。 - \item[amssymb] 在 \pkg{amsfonts} 基础上将 \hologo{AmS} 扩展符号定义成命令。 - \item[bm] 提供将数学符号加粗的命令 \cmd{bm}。 - \item[siunitx] 以国际单位规范排版物理量的单位。 - \item[mhchem] 排版化学式和方程式。 - \item[tipa] 排版国际音标。 + \item[amsmath] \hologo{AmS} 数学公式扩展。 + \item[mathtools] 数学公式扩展宏包,提供了公式编号定制和更多的符号、矩阵等。 + \item[amsfonts] \hologo{AmS} 扩展符号的基础字体支持。 + \item[amssymb] 在 \pkg{amsfonts} 基础上将 \hologo{AmS} 扩展符号定义成命令。 + \item[bm] 提供将数学符号加粗的命令 \cmd{bm}。 + \item[unicode-math] 使用 Unicode 数学字体。 + \item[nicematrix] 排版复杂矩阵。 + \item[siunitx] 以国际单位规范排版物理量的单位。 + \item[mhchem] 排版化学式和方程式。 + \item[tipa] 排版国际音标。 \end{pkglist} \subsection{排版元素}\label{subsec:pkg-elements} \begin{pkglist} - \item[ulem] 提供排版可断行下划线的命令 \cmd{uline} 以及其它装饰文字的命令。 - \item[endnote] 排版尾注。 - \item[marginnote] 改善的边注排版功能。 - \item[multicol] 提供将内容自由分栏的 \env{multicols} 环境。 - \item[multitoc] 生成多栏排版的目录。 - \item[minitoc] 为章节生成独立的小目录。 - \item[glossaries] 生成词汇表。 - \item[verbatim] 对原始的 \env{verbatim} 环境的改善。提供了命令 \cmd{verbatim\-input} 调用源文件。 - \item[fancyvrb] 提供了代码排版环境 \env{Verbatim} 以及对版式的自定义。 - \item[listings] 提供了排版关键字高亮的代码环境 \env{lst\-listing} 以及对版式的自定义。类似宏包有 \pkg{minted}。 + \item[ulem] 提供排版可断行下划线的命令 \cmd{uline} 以及其它装饰文字的命令。 + \item[endnote] 排版尾注。 + \item[marginnote] 改善的边注排版功能。 + \item[multicol] 提供将内容自由分栏的 \env{multicols} 环境。 + \item[multitoc] 生成多栏排版的目录。 + \item[minitoc] 为章节生成独立的小目录。 + \item[glossaries] 生成词汇表。 + \item[verbatim] 对原始的 \env{verbatim} 环境的改善。提供了命令 \cmd{verbatiminput} 调用源文件。 + \item[fancyvrb] 提供了代码排版环境 \env{Verbatim} 以及对版式的自定义。 + \item[listings] 提供了排版关键字高亮的代码环境 \env{lstlisting} 以及对版式的自定义。类似宏包有 \pkg{minted} 等。 \item[algorithmic] 一个简单的实现算法排版的宏包。如果要生成浮动体的话,需要搭配 \pkg{algorithm} 宏包使用。 \item[algorithm2e] 较为复杂的、可定制的算法排版宏包。类似宏包有 \pkg{algorithmicx} 等。 - \item[ntheorem] 定制定理环境。类似宏包包括 \pkg{theorem}、\pkg{thmtools}、\pkg{amsthm} 等。 - \item[mdframed] 排版可自动断页的带边框文字段落,提供边框样式的定制功能。 - \item[tcolorbox] 以 \hologo{TikZ} 为基础提供排版样式丰富的彩色盒子的功能。 + \item[amsthm] 定制定理环境。类似宏包包括 \pkg{theorem}、\pkg{ntheorem}、\pkg{thmtools} 等。 + \item[mdframed] 排版可自动断页的带边框文字段落,提供边框样式的定制功能。 + \item[tcolorbox] 以 \hologo{TikZ} 为基础提供排版样式丰富的彩色盒子的功能。 \end{pkglist} \subsection{图表和浮动体}\label{subsec:pkg-tab-fig} \begin{pkglist} - \item[booktabs] 排版三线表。 - \item[array] 对表格列格式的扩展。 - \item[tabularx] 提供 \env{tabularx} 环境排版定宽表格,支持自动计算宽度的 X 列格式。 - \item[arydshln] 支持排版虚线表格线。 - \item[colortbl] 支持修改表格的行、列、单元格的颜色。 - \item[multirow] 支持合并多行单元格。 - \item[makecell] 支持在单元格里排版多行内容(嵌套一个单列的小表格)。 - \item[diagbox] 排版斜线表头。 - \item[longtable] 提供排版跨页长表格的 \env{longtable} 环境。 - \item[ltxtable] 跨页长表格可使用 \env{tabularx} 的 X 列格式。 - \item[tabu] 提供排版复杂格式表格的 \env{tabu} 环境。与 \pkg{longtable} 一同调用时,提供排版复杂格式跨页长表格的 \env{longtabu} 环境。 - \item[graphicx] 支持插图。 - \item[bmpsize] \texttt{latex} + \texttt{dvipdfmx} 命令下支持 BMP/JPG/PNG 等格式的位图。 - \item[epstopdf] \texttt{pdflatex} 命令下支持 EPS 格式的矢量图。 - \item[wrapfig] 支持简单的文字在图片周围的绕排。 - \item[subfig] 提供子图表和子标题的排版。类似宏包有 \pkg{subfigure} 和 \pkg{subcaption} 等。 - \item[caption] 控制浮动体标题的格式。 - \item[bicaption] 生成双语浮动体标题。 - \item[float] 为浮动体提供不浮动的 H 模式;提供自定义浮动体结构的功能。 + \item[array] 对表格列格式的扩展。 + \item[booktabs] 排版三线表。 + \item[tabularx] 提供 \env{tabularx} 环境排版定宽表格,支持自动计算宽度的 \texttt{X} 列格式。 + \item[arydshln] 支持排版虚线表格线。 + \item[colortbl] 支持修改表格的行、列、单元格的颜色。 + \item[multirow] 支持合并多行单元格。 + \item[makecell] 支持在单元格里排版多行内容(嵌套一个单列的小表格)。 + \item[diagbox] 排版斜线表头。 + \item[longtable] 提供排版跨页长表格的 \env{longtable} 环境。 + \item[ltxtable] 为跨页长表格提供 \env{tabularx} 的 \texttt{X} 列格式。 + \item[tabularray] 排版复杂表格(基于 \LaTeX3 实现)。 + \item[graphicx] 支持插图。 + \item[bmpsize] \texttt{latex} + \texttt{dvipdfmx} 命令下支持 BMP/JPG/PNG 等格式的位图。 + \item[epstopdf] \texttt{pdflatex} 命令下支持 EPS 格式的矢量图。 + \item[wrapfig] 支持简单的文字在图片周围的绕排。 + \item[caption] 控制浮动体标题的格式。类似宏包有 \pkg{keyfloat} 等。 + \item[subcaption] 提供子图表和子标题的排版。类似宏包有 \pkg{subfigure} 和 \pkg{subfig} 等。 + \item[bicaption] 生成双语浮动体标题。 + \item[float] 为浮动体提供不浮动的 \texttt{H} 模式;提供自定义浮动体结构的功能。 \end{pkglist} \subsection{修改版式}\label{subsec:pkg-layout} \begin{pkglist} - \item[geometry] 修改页面尺寸、页边距、页眉页脚等参数。 - \item[fancyhdr] 修改页眉页脚格式,令页眉页脚可以左对齐、居中、右对齐。 - \item[titlesec] 修改章节标题 \cmd{chapter}、\cmd{section} 等的格式。 - \item[titletoc] 修改目录中各条目的格式。 - \item[tocloft] 类似 \pkg{titletoc} 的修改目录条目格式的宏包。 - \item[tocbibind] 支持将目录、参考文献、索引本身写入目录项。 - \item[footmisc] 修改脚注 \cmd{footnote} 的格式。 + \item[geometry] 修改页面尺寸、页边距、页眉页脚等参数。 + \item[fancyhdr] 修改页眉页脚格式,令页眉页脚可以左对齐、居中、右对齐。 + \item[titlesec] 修改章节标题 \cmd{chapter}、\cmd{section} 等的格式。 + \item[titletoc] 修改目录中各条目的格式。类似宏包有 \pkg{tocloft} 等。 + \item[tocbibind] 支持将目录、参考文献、索引本身写入目录项。 + \item[footmisc] 修改脚注 \cmd{footnote} 的格式。 \item[indentfirst] 令章节标题后的第一段首行缩进。 - \item[enumerate] 提供简单的自定义标签格式的 \env{enumerate} 环境。 - \item[enumitem] 修改列表环境 \env{enumerate} 和 \env{itemize} 等的格式。 - \item[lettrine] 生成段落首字母大写的效果。 + \item[enumerate] 提供简单的自定义标签格式的 \env{enumerate} 环境。 + \item[enumitem] 修改列表环境 \env{enumerate} 和 \env{itemize} 等的格式。 + \item[lettrine] 生成段落首字母大写的效果。 \end{pkglist} \endinput diff --git a/info/lshort/chinese/src/chap/biblio.tex b/info/lshort/chinese/src/chap/biblio.tex index 76f6fc7a80..be629f3a23 100644 --- a/info/lshort/chinese/src/chap/biblio.tex +++ b/info/lshort/chinese/src/chap/biblio.tex @@ -40,15 +40,15 @@ \item[\S] {\bfseries \TeX{} 发行版内置的资源(除宏包帮助手册之外的一些文档), 可以在本地使用 \texttt{texdoc} 命令查找,也可以在 CTAN 上找到:} -\bibitem{usrguide} \LaTeX3 Project Team. +\bibitem{usrguide} \LaTeX{} Project Team. \newblock \emph{\LaTeXe{} for authors}.\\ \CTAN|macros/latex/doc/usrguide.pdf| (\texttt{texdoc usrguide}) -\bibitem{clsguide} \LaTeX3 Project Team. +\bibitem{clsguide} \LaTeX{} Project Team. \newblock \emph{\LaTeXe{} for class and package writers}. \\ \CTAN|macros/latex/doc/clsguide.pdf| (\texttt{texdoc clsguide}) -\bibitem{fntguide} \LaTeX3 Project Team. +\bibitem{fntguide} \LaTeX{} Project Team. \newblock \emph{\LaTeXe{} font selection}. \\ \CTAN|macros/latex/doc/fntguide.pdf| (\texttt{texdoc fntguide}) @@ -56,11 +56,6 @@ \newblock \emph{\LaTeXe: An unofficial reference manual}. \\ \CTAN|info/latex2e-help-texinfo/latex2e.pdf| (\texttt{texdoc latex2e}) -\bibitem{uk-tex-faq} The UK TeX users group (TUG). - \newblock \emph{The UK TeX FAQ}. - \newblock HTML version on \url{https://texfaq.org/}. \\ - \CTAN|help/uk-tex-faq/newfaq.pdf| (\texttt{texdoc faq}) - \bibitem{l2tabu} J\"{u}rgen Fenn. \newblock \emph{An essential guide to \LaTeXe{} usage: Obsolete commands and packages} (English translation). \\ \CTAN|info/l2tabu/english/l2tabuen.pdf| (\texttt{texdoc l2tabuen}) @@ -75,28 +70,36 @@ \item[\S] {\bfseries CTAN 上的其它网络资源:} -\bibitem{catalogue} Graham Williams. - \newblock \emph{The \TeX{} Catalogue (Preface CTAN Edition)}.\\ - \CTAN|help/Catalogue/catalogue.html| - \bibitem{survey} Stephen~G. Hartke. \newblock \emph{A Survey of Free Math Fonts for \TeX{} and \LaTeX}.\\ \CTAN|info/Free_Math_Font_Survey/survey.pdf| \item[\S] {\bfseries 其它网络渠道可获得的资源:} +\bibitem{texfaq} The \TeX{} FAQ List. + \newblock \emph{The \TeX{} Frequently Asked Question List}. \\ + \url{https://texfaq.org} + +\bibitem{learnlatex} learnlatex.org. + \newblock \emph{Learn \LaTeX{} online}. \\ + \url{https://www.learnlatex.org} + \bibitem{fontcatalogue} Palle J{\o}rgensen. \newblock \emph{The \LaTeX{} font catalogue}, a font catalogue of \LaTeX{} font packages.\\ - \url{http://www.tug.dk/FontCatalogue/} + \url{https://www.tug.dk/FontCatalogue/} \bibitem{ltxprimer} Indian \TeX{} users group. \newblock \emph{\LaTeX{} Tutorials: A primer}. \\ - \url{http://www.tug.org/twg/mactex/tutorials/ltxprimer-1.0.pdf} + \url{https://www.tug.org/twg/mactex/tutorials/ltxprimer-1.0.pdf} + +\bibitem{overleaf-doc} Overleaf. + \newblock \emph{Overleaf Documentation}. \\ + \url{https://www.overleaf.com/learn} \bibitem{lnotes} 黄新刚. \newblock \emph{雷太赫排版系统简介(\LaTeX{} Notes)}, 第二版. \\ \url{https://github.com/huangxg/lnotes/raw/master/lnotes2.pdf} \\ - (旧版可用 \texttt{texdoc latex-notes-zh-cn}) + (旧版:\texttt{texdoc latex-notes-zh-cn}) \end{thebibliography} diff --git a/info/lshort/chinese/src/chap/chap.01.basics.tex b/info/lshort/chinese/src/chap/chap.01.basics.tex index ef0471b0f6..d2a2b7944d 100644 --- a/info/lshort/chinese/src/chap/chap.01.basics.tex +++ b/info/lshort/chinese/src/chap/chap.01.basics.tex @@ -17,9 +17,9 @@ 为扭转这种状况,他着手开发 \TeX{},发掘当时刚刚用于出版工业的数字印刷设备的潜力。 1982 年,高德纳发布 \TeX{} 排版引擎,而后在 1989 年又为更好地支持 8-bit 字符和多语言排版而予以改进。 \TeX{} 以其卓越的稳定性、跨平台能力和几乎没有 bug 的特性而著称。 -它的版本号不断趋近于 $\pi$,当前为 3.14159265。 +它的版本号不断趋近于 $\pi$,当前为 3.141592653。 -\TeX{} 读作 ``Tech'',与汉字“泰赫”的发音相近,其中 ``ch'' 的发音类似于 ``h''。\TeX{} 的拼写来自希腊词语 +\TeX{} 读作“Tech”,与汉字“泰赫”的发音相近,其中“ch” 的发音类似于“h”。\TeX{} 的拼写来自希腊词语 τεχνική (technique,技术) 开头的几个字母,在 ASCII 字符环境中写作 \texttt{TeX}。 \subsection{\LaTeX}\label{subsec:latex} @@ -28,10 +28,10 @@ \index{LaTeX2e@\LaTeXe} \LaTeX{} 是一种使用 \TeX{} 程序作为排版引擎的格式(format),可以粗略地将它理解成是对 \TeX{} 的一层封装。 \LaTeX{} 最初的设计目标是分离内容与格式,以便作者能够专注于内容创作而非版式设计,并能以此得到高质量排版的作品。 -\LaTeX{} 起初由 Leslie Lamport 博士\cite{manual}开发,目前由 \LaTeX 3 工作组% +\LaTeX{} 起初由 Leslie Lamport 博士\cite{manual}开发,目前由 \LaTeX{} 工作组% \footnote{\url{https://www.latex-project.org}}进行维护。 -\LaTeX{} 读作 ``Lah-tech'' 或者 ``Lay-tech'',与汉字“拉泰赫”或“雷泰赫”的发音相近,在 ASCII 字符环境写作 \texttt{LaTeX}。 +\LaTeX{} 读作“Lah-tech” 或者“Lay-tech”,与汉字“拉泰赫”或“雷泰赫”的发音相近,在 ASCII 字符环境写作 \texttt{LaTeX}。 \LaTeXe{} 是 \LaTeX{} 的当前版本,意思是超出了第二版,但还远未达到第三版,在 ASCII 字符环境写作 \texttt{LaTeX2e}。 \subsection{\LaTeX{} 的优缺点}\label{subec:advs} @@ -48,7 +48,7 @@ \item 绝大多数时候,用户只需专注于一些组织文档结构的基础命令,无需(或很少)操心文档的版面设计。 \item 很容易生成复杂的专业排版元素,如脚注、交叉引用、参考文献、目录等。 \item 强大的可扩展性。世界各地的人开发了数以千计的 \LaTeX{} 宏包用于补充和扩展 \LaTeX{} 的功能。 - 本手册附录中的 \ref{sec:pkg-list} 小节可见一瞥。更多的宏包参考 \textit{The \LaTeX{} companion}\cite{companion}。 + 一些常用宏包列在了本手册附录中的 \ref{sec:pkg-list} 小节。更多的宏包参考 \textit{The \LaTeX{} companion}\cite{companion}。 \item 能够促使用户写出结构良好的文档——而这也是 \LaTeX{} 存在的初衷。 \item \LaTeX{} 和 \TeX{} 及相关软件是跨平台、免费、开源的。 无论用户使用的是 Windows,macOS(OS X),GNU/Linux 还是 FreeBSD 等操作系统,都能轻松获得和使用这一强大的排版工具,并且获得稳定的输出。 @@ -56,13 +56,13 @@ \LaTeX{} 的缺点也是显而易见的: \begin{itemize} - \item 入门门槛高。本手册的副标题叫做 “\pageref{lshort-minutes}~分钟了解 \LaTeXe ”, - 实际上 \pageref{lshort-minutes} 是本手册正文部分(包括附录)的页数。如果你以平均一页一分钟的速度看完了本手册, + \item 入门门槛高。本手册的副标题叫做“\pageref{lshort-minutes}~分钟了解 \LaTeXe”, + 实际上“\pageref{lshort-minutes}”是本手册正文部分(包括附录)的页数。如果真的以平均一页一分钟的速度看完了本手册, 你只是粗窥门径而已,离学会它还很远。 \item 不容易排查错误。\LaTeX{} 作为一个依靠编写代码工作的排版工具,其使用的宏语言比 C++ 或 Python 等程序设计语言在错误排查方面困难得多。 它虽然能够提示错误,但不提供调试的机制,有时错误提示还很难理解。 \item 不容易定制样式。\LaTeX{} 提供了一个基本上良好的样式,为了让用户不去关注样式而专注于文档结构。 - 但如果想要改进 \LaTeX{} 生成的文档样式则是十分困难。 + 但如果想要改进 \LaTeX{} 生成的文档样式则是十分困难的。 \item 相比“所见即所得”的模式有一些不便,为了查看生成文档的效果,用户总要不停地编译。 \end{itemize} @@ -137,7 +137,7 @@ xelatex helloworld \begin{Verbatim} \documentclass{ctexart} \begin{document} - “你好,世界!” 来自 \LaTeX{} 的问候。 + “你好,世界!”来自 \LaTeX{} 的问候。 \end{document} \end{Verbatim} \caption{在\LaTeX{} 中排版中文的最简源代码示例。}\label{code:hello-world-chinese} @@ -209,12 +209,12 @@ or \TeX{} users? \pinyinindex{wendanglei}{文档类} \pinyinindex{hongbao}{宏包} \LaTeX{} 源代码以一个 \cmd{document\-class} 命令作为开头,它指定了文档使用的\textbf{文档类}。 -\env{document} 环境当中的内容是文档正文。 +\env{doc\-u\-ment} 环境当中的内容是文档正文。 \cmdindex{usepackage} \pinyinindex{daoyanqu}{导言区} 在 \cmd{documentclass} 和 \cmd{begin}\marg*{document} 之间的位置称为\textbf{导言区}。 -在导言区中一般会使用 \cmd{use\-package} 命令调用\textbf{宏包},还会进行文档的全局设置。 +在导言区中常会使用 \cmd{use\-package} 命令调用\textbf{宏包},还会进行文档的全局设置。 \begin{verbatim} \documentclass{...} % ... 为某文档类 % 导言区 @@ -237,10 +237,10 @@ or \TeX{} users? \cmd{documentclass}\oarg{options}\marg{class-name} \end{command} -\clsindex{article,book,report} +\clsindex{article,report,book} \clsindex{ctexart,ctexrep,ctexbook} -其中 \Arg{class-name} 为文档类的名称,如 \LaTeX{} 提供的 \cls{article}, \cls{book}, \cls{report}, -在其基础上派生的一些文档类如支持中文排版的 \cls{ctexart} / \cls{ctexbook} / \cls{ctexrep}, +其中 \Arg{class-name} 为文档类的名称,如 \LaTeX{} 提供的 \cls{article}, \cls{report}, \cls{book}, +在其基础上派生的一些文档类如支持中文排版的 \cls{ctexart} / \cls{ctexrep} / \cls{ctexbook}, 或者有其它功能的一些文档类,如 \cls{moderncv} / \cls{beamer} 等。 \LaTeX{} 提供的基础文档类见表 \ref{tbl:ltx-classes},其中前三个习惯上称为“标准文档类”。 @@ -271,8 +271,10 @@ or \TeX{} users? \LaTeX{} 的三个标准文档类可指定的选项包括: \begin{description} \item[\texttt{10pt, 11pt, 12pt}] \quad 指定文档的基本字号。默认为 \texttt{10pt}。 -\item[\texttt{a4paper, letterpaper, \ldots}] \quad 指定纸张大小,默认为美式信纸 \texttt{letterpaper} ($8.5\times11$英寸)。 +\item[\texttt{a4paper, letterpaper, \ldots}] \quad 指定纸张大小,默认为美式信纸 \texttt{letterpaper} +($8.5\,\text{in}\times11\,\text{in}$,大约相当于 $21.6\,\text{cm}\times28.0\,\text{cm}$)。 可指定选项还包括 \texttt{a5paper},\texttt{b5paper},\texttt{executivepaper} 和 \texttt{legalpaper}。 +有关纸张大小的更多细节,请参考 \ref{subsec:geometry} 小节。 \item[\texttt{twoside, oneside}] \quad 指定单面/双面排版。双面排版时,奇偶页的页眉页脚、页边距不同。 \cls{article} 和 \cls{report} 默认为 \texttt{oneside},\cls{book} 默认为 \texttt{twoside}。 \item[\texttt{onecolumn, twocolumn}] \quad 指定单栏/双栏排版。默认为 \texttt{onecolumn}。 @@ -284,7 +286,7 @@ or \TeX{} users? \item[\texttt{fleqn}] \quad 令行间公式左对齐。默认为居中对齐。 \item[\texttt{leqno}] \quad 将公式编号放在左边。默认为右边。 \item[\texttt{draft, final}] \quad 指定草稿/终稿模式。 -草稿模式下,断行不良的地方会在行尾添加一个黑色方块。默认为 \texttt{final}。 +草稿模式下,断行不良(溢出)的地方会在行尾添加一个黑色方块;插图、超链接等功能也会受这一组选项影响,具体见后文。默认为 \texttt{final}。 \end{description} \subsection{宏包}\label{subsec:packages} @@ -360,15 +362,15 @@ or \TeX{} users? \begin{command} \cmd{include}\marg{filename} \end{command} -\Arg{filename} 为文件名,如果和要编译的主文件不在一个目录中,则要加上相对或绝对路径,例如: +\Arg{filename} 为文件名(不带 \texttt{.tex} 扩展名)% +\footnote{\LaTeX{} 2020-10-01 版本之后允许添加扩展名。}, +如果和要编译的主文件不在一个目录中,则要加上相对或绝对路径,例如: \begin{verbatim} -\include{chapters/a.tex} % 相对路径 -\include{/home/Bob/file.tex} % *nix (包含 Linux、macOS(OS X))绝对路径 -\include{D:/file.tex} % Windows 绝对路径,用正斜线 +\include{chapters/file} % 相对路径 +\include{/home/Bob/file} % *nix(包含 Linux、macOS)绝对路径 +\include{D:/file} % Windows 绝对路径,用正斜线 \end{verbatim} -\Arg{filename} 可以不带扩展名,此时默认扩展名为 \texttt{.tex}。 - \cmdindex{input} 值得注意的是 \cmd{include} 在读入 \Arg{filename} 之前会另起一页。有的时候我们并不需要这样,而是用 \cmd{input} 命令,它纯粹是把文件里的内容插入: @@ -376,15 +378,20 @@ or \TeX{} users? \cmd{input}\marg{filename} \end{command} -特别要注意的是,使用 \cmd{include} 和 \cmd{input} 命令载入的文件名\textbf{一定不要加空格},否则通常会出错。 +当导言区内容较多时,常常将其单独放置在一个 \texttt{.tex} 文件中,再用 \cmd{input} 命令插入。 +复杂的图、表、代码等也会用类似的手段处理。 \cmdindex{includeonly} -另外 \LaTeX{} 提供了一个 \cmd{includeonly} 命令来组织文件,用于\textbf{导言区},指定只载入某些文件: +\LaTeX{} 还提供了一个 \cmd{includeonly} 命令来组织文件,用于\textbf{导言区},指定只载入某些文件。 +导言区使用了 \cmd{includeonly} 后,正文中不在其列表范围的 \cmd{include} 命令不会起效: \begin{command} \cmd{includeonly}\marg*{\Arg{filename1},\Arg{filename2},\ldots} \end{command} -导言区使用了 \cmd{includeonly} 后,正文中不在其列表范围的 \cmd{include} 命令不会起效。 +需要注意的是,使用 \cmd{include} 和 \cmd{input} 命令载入的文件名最好不要加空格和特殊字符,也尽量 +避免使用中文名,否则很可能会出错% +\footnote{\LaTeX{} 在 2019 到 2020 年间做出了一系列更新,文件名中包含操作系统所允许的字符时 +均不再出错。但保险起见,仍然建议使用拉丁字母、数字、连字符等较为安全的字符组成文件名。}。 \pkgindex{syntonly} 最后介绍一个实用的工具宏包 \pkg{syntonly}。加载这个宏包后,在导言区使用 \cmd{syntaxonly} 命令, diff --git a/info/lshort/chinese/src/chap/chap.02.text.tex b/info/lshort/chinese/src/chap/chap.02.text.tex index f0233642b6..f9eab9ff81 100644 --- a/info/lshort/chinese/src/chap/chap.02.text.tex +++ b/info/lshort/chinese/src/chap/chap.02.text.tex @@ -5,7 +5,7 @@ 文字是排版的基础。本章主要介绍如何在 \LaTeX{} 中输入各种文字符号,包括标点符号、连字符、重音等,以及控制文字断行和断页的方式。 本章简要介绍了在 \LaTeX{} 中排版中文的方法。随着 \LaTeX{} 和底层 \TeX{} 引擎的发展,旧方式(CCT、\pkg{CJK} 等)日渐退出舞台, -\texttt{xelatex} 和 \texttt{lualatex} 编译命令配合 \cls{ctex} 宏包 / 文档类的方式成为当前的主流中文排版支持方式。 +\texttt{xelatex} 和 \texttt{lualatex} 编译命令配合 \cls{ctex} 宏包/文档类的方式成为当前的主流中文排版支持方式。 \end{intro} \section{语言文字和编码}\label{sec:encoding} @@ -17,14 +17,14 @@ \index{bianma@编码!ASCII} 计算机的基本存储单位是字节(byte),每个字节为八位(8-bit),范围用十六进制写作 \texttt{0x00}--\texttt{0xFF}。 -ASCII (美国通用信息交换码)使用 \texttt{0x00}--\texttt{0x7F} 对文字编码,也就是 7-bit,覆盖了基本的拉丁字母、数字和符号,以及一些不可打印的控制字符(如换行符、制表符等)。 +ASCII(美国通用信息交换码)使用 \texttt{0x00}--\texttt{0x7F} 对文字编码,也就是 7-bit,覆盖了基本的拉丁字母、数字和符号,以及一些不可打印的控制字符(如换行符、制表符等)。 由于 \TeX{} 最初设计用于排版以英文为主的西文文档,ASCII 编码完全够用,因而早期版本的 \TeX{} 只支持 7-bit 和 ASCII 编码。 排版扩展拉丁字符必须使用后文所述的各种符号和重音命令,如 M\"obius 必须通过输入 \verb|M\"obius| 得到。 \subsection{扩展编码}\label{subsec:ext-encoding} -在 ASCII 之后,各种语言文字都发展了自己的编码,比如西欧语言的 Latin-1、日本的 Shift-JIS、中国大陆的 GB 2312--80 和 GBK 等。 +在 ASCII 之后,各种语言文字都发展了自己的编码,比如西欧语言的 Latin-1、日本的 Shift-JIS、中国大陆的 GB 2312---80 和 GBK 等。 它们中的绝大多数都向下兼容 ASCII,因此无论是在哪种编码下,\TeX{} 以及 \LaTeX{} 的命令和符号都能用。 \index{bianma@编码!Latin-1} @@ -70,7 +70,7 @@ Français Português Español Føroyskt \hologo{XeTeX} 和 \hologo{LuaTeX} 除了直接支持 UTF-8 编码外,还支持直接调用 TrueType / OpenType 格式的字体。\pkg{xeCJK} 及 \pkg{luatexja} 宏包则在此基础上封装了对汉字排版细节的处理功能。 \pkgindex{ctex} -\clsindex{ctexart,ctexbook,ctexrep} +\clsindex{ctexart,ctexrep,ctexbook} \pkg{ctex} 宏包和文档类\footnote{\hologo{CTeX} 还经常用来指一个过时的 \TeX{} 发行版,注意与这里的 \pkg{ctex} 宏包和文档类区分。}% 进一步封装了 \pkg{CJK}、\pkg{xeCJK}、\pkg{luatexja} 等宏包,使得用户在排版中文时不用再考虑排版引擎等细节。\pkg{ctex} 宏包本身用于配合各种文档类排版中文,而 \pkg{ctex} 文档类对 \LaTeX{} 的标准文档类进行了封装,对一些排版根据中文排版习惯做了调整,包括 \cls{ctexart} / \cls{ctexrep} / \cls{ctexbook}。 \pkg{ctex} 宏包和文档类能够识别操作系统和 \TeX{} 发行版中安装的中文字体,因此基本无需额外配置即可排版中文文档。下面举一个使用 \pkg{ctex} 文档类排版中文的最简例子: @@ -163,12 +163,17 @@ It's dif{}f{}icult to f{}ind \ldots \index{biaodianfuhao@标点符号!``@\protect\verb+'+ (\textit{后引号} ')} \index{biaodianfuhao@标点符号!'@\protect\verb+``+ (\textit{前双引号} ``)} \index{biaodianfuhao@标点符号!''@\protect\verb+''+ (\textit{后双引号} '')} -\LaTeX{} 中单引号 ` ' 分别用 \verb|`| 和 \verb|'| 输入;双引号 `` 和 '' 分别用 \verb|``| 和 \verb|''| 输入 +\LaTeX{} 中单引号 ` 和\ ' 分别用 \verb|`| 和 \verb|'| 输入;双引号 `` 和\ '' 分别用 \verb|``| 和 \verb|''| 输入 (\verb|"| 可以输入后双引号,但没有直接输入前双引号的字符,习惯上用 \verb|''| 输入以和 \verb|``| 更好地对应)。 \begin{example} ``Please press the `x' key.'' \end{example} +中文的引号‘~’和“~”与西文的引号实际上是同一组符号% +\footnote{它们在 Unicode 中共用了同一组码位。有人为了明确区分,会改用中文直角引号「」和『』。}, +但由于中西文通常用不同的字体显示,它们的具体形状和宽度可能有所不同。在使用 \pkg{ctex} 宏包或文档类 +的情况下,中文引号可以通过输入法直接输入。 + \subsubsection{连字号和破折号} \index{biaodianfuhao@标点符号!-@\protect\verb+-+ (\textit{连字号} -)} @@ -315,7 +320,7 @@ Donald~E. Knuth \cmd{clearpage} \end{command} -通常情况下两个命令都起到另起一页的作用,区别在于:第一,在双栏排版模式中 \cmd{newpage} 起到另起一栏的作用,\cmd{clearpage} 则能够另起一页;第二,在涉及到浮动体的排版上行为不同。 +通常情况下两个命令都起到另起一页的作用,区别在于:第一,在双栏排版模式中 \cmd{newpage} 起到另起一栏的作用,\cmd{clearpage} 则能够另起一页;第二,在涉及浮动体的排版上行为不同。 后文的 \ref{sec:float} 节以及 \ref{subsec:columns} 小节会更详细地介绍相关内容。 \cmdindex{linebreak,nolinebreak} @@ -333,6 +338,7 @@ Donald~E. Knuth 因为 \cmd{newline} 和 \cmd{newpage} 会在断行/断页位置填充适当的间距,但 \cmd{linebreak} 和 \cmd{pagebreak} 不能,使用 这些命令强行断行/断页可能会制造出糟糕的排版效果,并导致 \LaTeX{} 报 \texttt{Underfull \cmd{hbox}} 等警告。 +% 此处会有 Underfull \hbox 警告 \begin{example} 使用 \verb|\newline| 断行的效果 \newline diff --git a/info/lshort/chinese/src/chap/chap.03.elements.tex b/info/lshort/chinese/src/chap/chap.03.elements.tex index 4d289d43e3..a1f67029e0 100644 --- a/info/lshort/chinese/src/chap/chap.03.elements.tex +++ b/info/lshort/chinese/src/chap/chap.03.elements.tex @@ -10,7 +10,7 @@ \subsection{章节标题}\label{subsec:secs} \cmdindex{part,chapter,section,subsection,subsubsection,paragraph,subparagraph} -\clsindex{article,book,report} +\clsindex{article,report,book} 一篇结构化的、条理清晰文档一定是层次分明的,通过不同的命令分割为章、节、小节。三个标准文档类 \cls{article}、\cls{report} 和 \cls{book}% \footnote{千万注意是\textbf{标准文档类},其它文档类,如果不是从标准文档类衍生而来, @@ -24,7 +24,7 @@ \cmd{paragraph}\marg{title} \quad \cmd{subparagraph}\marg{title} \end{command} -其中 \cmd{chapter} \textbf{只在 \cls{book} 和 \cls{report} 文档类有定义}。这些命令生成章节标题,并能够自动编号。 +其中 \cmd{chapter} \textbf{只在 \cls{report} 和 \cls{book} 文档类有定义}。这些命令生成章节标题,并能够自动编号。 除此之外 \LaTeX{} 还提供了 \cmd{part} 命令,用来将整个文档分割为大的分块,但不影响 \cmd{chapter} 或 \cmd{section} 等的编号。 上述命令除了生成带编号的标题之外,还向目录中添加条目,并影响页眉页脚的内容(详见 \ref{sec:pagestyle} 节)。每个命令有两种变体: @@ -38,7 +38,7 @@ 较低层次如 \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} 三级。 + \item \cls{report} / \cls{book} 文档类带编号的层级为 \cmd{chapter} / \cmd{section} / \cmd{sub\-section} 三级。 \end{itemize} 对此的详细解释和调整方法见 \ref{subsec:latex-counts} 小节。 @@ -54,7 +54,7 @@ \cmd{tableofcontents} \end{command} -这个命令会生成单独的一章(\cls{book} / \cls{report})或一节(\cls{article}),标题默认为 ``Contents''{},可通过 \ref{sec:latex-settings} 节给出的方法定制标题。 +这个命令会生成单独的一章(\cls{report} / \cls{book})或一节(\cls{article}),标题默认为“Contents”,可通过 \ref{sec:latex-settings} 节给出的方法定制标题。 \cmd{tableof\-contents} 生成的章节默认不写入目录(\cmd{section*} 或 \cmd{chapter*}),可使用 \pkg{tocbibind} 等宏包修改设置。 正确生成目录项,一般需要编译两次源代码。 @@ -82,8 +82,8 @@ \cmdindex{frontmatter,mainmatter,backmatter} \cls{book} 文档类还提供了前言、正文、后记结构的划分命令: \begin{description} - \item[\cmd{frontmatter}] 前言部分,页码为小写罗马字母格式;其后的 \cmd{chapter} 不编号。 - \item[\cmd{mainmatter}] 正文部分,页码为阿拉伯数字格式,从 1 开始计数;其后的章节编号正常。 + \item[\cmd{frontmatter}] 前言部分,页码使用小写罗马数字;其后的 \cmd{chapter} 不编号。 + \item[\cmd{mainmatter}] 正文部分,页码使用阿拉伯数字,从 1 开始计数;其后的章节编号正常。 \item[\cmd{backmatter}] 后记部分,页码格式不变,继续正常计数;其后的 \cmd{chapter} 不编号。 \end{description} @@ -117,7 +117,7 @@ ... \backmatter % 后记部分 -\include{prologue} % 后记 prologue.tex +\include{epilogue} % 后记 epilogue.tex \bibliography{books} % 利用 BibTeX 工具从数据库文件 books.bib 生成参考文献 \printindex % 利用 makeindex 工具生成索引 @@ -229,7 +229,7 @@ page~\pageref{sec:this}.'' \item[定理环境] 在定理环境内部任意位置使用。 \end{description} -在使用不记编号的命令形式(\cmd{section*}、\cmd{caption*}、带可选参数的 \cmd{item} 命令等)时不要使用 \cmd{label} 命令, +在使用不记编号的命令形式(\cmd{section*}、\cmd{caption*}\footnote{需加载相关宏包,如 \pkg{caption}}、带可选参数的 \cmd{item} 命令等)时不要使用 \cmd{label} 命令, 否则生成的引用编号不正确。 \section{脚注和边注}\label{sec:footnote-marginpar} @@ -521,7 +521,7 @@ for (int i=0; i<4; ++i) \crcmd{} 用来换行;\cmd{hline} 用来在行与行之间绘制横线。 直接使用 \env{tabular} 环境的话,会\textbf{和周围的文字混排}。此时可用一个可选参数 \Arg{align} 控制垂直对齐: -\verb|t| 和 \verb|b| 分别表示按按表格顶部、底部对齐,其他参数或省略不写(默认)表示居中对齐。 +\verb|t| 和 \verb|b| 分别表示按表格顶部、底部对齐,其他参数或省略不写(默认)表示居中对齐。 \begin{example} \begin{tabular}{|c|} center-\\ aligned \\ @@ -587,6 +587,7 @@ for (int i=0; i<4; ++i) 有时需要为整列修饰格式,比如整列改变为粗体,如果每个单元格都加上 \cmd{bfseries} 命令会比较麻烦。 \pkg{array} 宏包提供了辅助格式 \texttt> 和 \texttt<,用于给列格式前后加上修饰命令: \begin{example} +% \usepackage{array} \begin{tabular}{>{\itshape}r<{*}l} \hline italic & normal \\ @@ -601,7 +602,8 @@ for (int i=0; i<4; ++i) \cmd{array\-back\-slash} 用来恢复之。如果不加 \cmd{array\-back\-slash} 命令, 也可以用 \cmd{tabular\-newline} 命令代替原来的 \crcmd{} 实现表格换行。}: \begin{example} -\begin{tabular} +% \usepackage{array} +\begin{tabular}% {>{\centering\arraybackslash}p{9em}} \hline Some center-aligned long text. \\ @@ -612,8 +614,8 @@ for (int i=0; i<4; ++i) \pkg{array} 宏包还提供了类似 \texttt{p} 格式的 \texttt{m} 格式和 \texttt{b} 格式, 三者分别在垂直方向上靠顶端对齐、居中以及底端对齐。 \begin{example} -\newcommand\txt - {a b c d e f g h i} +% \usepackage{array} +\newcommand\txt{a b c d e f g h i} \begin{tabular}{cp{2em}m{2em}b{2em}} \hline pos & \txt & \txt & \txt \\ @@ -645,6 +647,7 @@ for (int i=0; i<4; ++i) 不过会根据表格宽度自动计算列宽,多个 \texttt{X} 列格式平均分配列宽。 \texttt{X} 列格式也可以用 \pkg{array} 里的辅助格式修饰对齐方式: \begin{example} +% \usepackage{array,tabularx} \begin{tabularx}{14em}% {|*{4}{>{\centering\arraybackslash}X|}} \hline @@ -672,6 +675,7 @@ for (int i=0; i<4; ++i) 三线表由 \pkg{booktabs} 宏包支持,它提供了 \cmd{toprule}、\cmd{midrule} 和 \cmd{bottomrule} 命令用以排版三线表的三条线, 以及和 \cmd{cline} 对应的 \cmd{cmidrule}。除此之外,最好不要用其它横线以及竖线: \begin{example} +% \usepackage{booktabs} \begin{tabular}{cccc} \toprule & \multicolumn{3}{c}{Numbers} \\ @@ -714,6 +718,7 @@ for (int i=0; i<4; ++i) 我们看一个结合 \cmd{cline}、\cmd{multi\-column} 和 \cmd{multi\-row} 命令的例子: \begin{example} +% \usepackage{multirow} \begin{tabular}{ccc} \hline \multirow{2}{*}{Item} & @@ -747,6 +752,7 @@ for (int i=0; i<4; ++i) 如果不需要为“拆分的单元格”画线,并且只在垂直方向“拆分”的话,\pkg{makecell} 宏包提供的 \cmd{make\-cell} 命令是一个简单的解决方案: \begin{example} +% \usepackage{makecell} \begin{tabular}{|c|c|} \hline a & \makecell{d1 \\ d2} \\ @@ -781,7 +787,7 @@ for (int i=0; i<4; ++i) \end{tabular} \end{example} -但是这种换行方式的存在导致了一个缺陷——\textbf{表格的首个单元格不能直接使用中括号 \texttt{[]}}, +但是这种换行方式的存在导致了一个缺陷——\textbf{从第二行开始,表格的首个单元格不能直接使用中括号 \texttt{[]}}, 否则 \crcmd{} 往往会将下一行的中括号当作自己的可选参数,因而出错。如果要使用中括号,应当放在花括号 \marg*{} 里面。 或者也可以选择将换行命令写成 \crcmd\texttt{[0pt]}。 @@ -800,7 +806,7 @@ for (int i=0; i<4; ++i) \ref{sec:hyperlinks} 节中的 \pkg{hyperref} 宏包同理。};而使用 \texttt{pdflatex} 或 \texttt{xelatex} 命令编译时不需要。 读者可能听说过“\LaTeX{} 只能插入 \texttt{.eps} 格式的图片,需要把 \texttt{.jpg} 转成 \texttt{.eps} 格式”的观点。 -\LaTeX{} 发展到今天,这个观点早已过时。事实上不同的编译命令支持的图片格式范围各异,见表 \ref{tbl:figure-format}。 +\LaTeX{} 发展到今天,这个观点早已过时。事实上不同编译命令支持的图片格式种类各异,见表~\ref{tbl:figure-format}。 这个表格也能解答诸如“为什么 \texttt{.eps} 格式图片在 \texttt{pdflatex} 编译命令下出错”之类的问题。本表格也再一次说明,使用 \texttt{xelatex} 命令是笔者最推荐的方式。 @@ -811,7 +817,7 @@ for (int i=0; i<4; ++i) \hline \textbf{格式} & \textbf{矢量图} & \textbf{位图} \\ \hline - \texttt{latex + dvipdfmx} & \texttt{.eps} & n/a \\ + \texttt{latex + dvipdfmx} & \texttt{.eps} & N/A \\ \quad $\llcorner$(调用 \pkg{bmpsize} 宏包 ) & \texttt{.eps .pdf} & \texttt{.jpg .png .bmp} \\[.3\baselineskip] \texttt{pdflatex} & \texttt{.pdf} & \texttt{.jpg .png} \\ \quad $\llcorner$(调用 \pkg{epstopdf} 宏包) & \texttt{.pdf .eps} & \texttt{.jpg .png} \\[.3\baselineskip] @@ -841,7 +847,8 @@ 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{table}[htp] \centering \caption{\cmd{includegraphics} 命令的可选参数}\label{tbl:graphics-options} @@ -852,17 +859,20 @@ for (int i=0; i<4; ++i) \texttt{width=}\Arg{width} & 将图片缩放到宽度为 \Arg{width} \\ \texttt{height=}\Arg{height} & 将图片缩放到高度为 \Arg{height} \\ \texttt{scale=}\Arg{scale} & 将图片相对于原尺寸缩放 \Arg{scale} 倍 \\ - \texttt{angle=}\Arg{angle} & 令图片逆时针旋转 \Arg{angle} 度 \\ + \texttt{angle=}\Arg{angle} & 将图片逆时针旋转 \Arg{angle} 度 \\ \hline \end{tabular} \end{table} +\pkg{graphicx} 宏包也支持 \texttt{draft}/\texttt{final} 选项。当 \pkg{graphicx} 宏包或文档类指定 +\texttt{draft} 选项时,图片将不会被实际插入,取而代之的是一个包含文件名的与原图片等大的方框。 + \section{盒子}\label{sec:box} -盒子是 \LaTeX{} 排版的基础单元,虽然解释上去有些抽象:每一行是一个盒子, -里面的文字从左到右依次排列;每一页也是一个盒子,各行文字从上到下依次排布……颇有一些活字印刷术的味道。 +盒子是 \LaTeX{} 排版的基础单元,虽然解释略有抽象:每一行是一个盒子,里面的文字从左到右依次排列; +每一页也是一个盒子,各行文字从上到下依次排布……颇有一些活字印刷术的味道。 -不管如何,\LaTeX{} 提供了一些命令让我们生成一些有特定用途的盒子。 +不管如何,\LaTeX{} 提供了一些命令让我们手动生成一些有特定用途的盒子。 \subsection{水平盒子}\label{subsec:mbox} @@ -878,7 +888,9 @@ for (int i=0; i<4; ++i) \cmd{makebox} 更进一步,可以加上可选参数用于控制盒子的宽度 \Arg{width},以及内容的对齐方式 \Arg{align}, 可选居中 \texttt{c}(默认值)、左对齐 \texttt{l}、右对齐 \texttt{r} 和分散对齐 \texttt{s}% -\footnote{分散对齐方式强行拉开单词的间距,往往会报 \texttt{Underfull} \cmd{hbox} 的消息。}。 +\footnote{分散对齐方式强行拉开单词的间距,往往会报 \texttt{Underfull} \cmd{hbox} 的警告。}。 + +% 此处会有 Underfull \hbox 警告 \begin{example} |\mbox{Test some words.}|\\ |\makebox[10em]{Test some words.}|\\ @@ -1025,12 +1037,12 @@ A \rule[-.4pt]{3em}{.4pt} line. \begin{command} \cmd{caption}\marg*{\ldots} \end{command} -\cmd{caption} 的用法非常类似于 \cmd{section} 等命令,可以用带星号的命令 \cmd{caption*} 生成不带编号的标题, +\cmd{caption} 的用法非常类似于 \cmd{section} 等命令,可以用带星号的命令 \cmd{caption*}\footnote{需加载相关宏包,如 \pkg{caption}} 生成不带编号的标题, 也可以使用带可选参数的形式 \cmd{caption}\oarg*{\ldots}\marg*{\ldots},使得在目录里使用短标题。 \cmd{caption} 命令之后还可以紧跟 \cmd{label} 命令标记交叉引用。 \pkgindex{caption} -\cmd{caption} 生成的标题形如 ``Figure 1: \ldots''{}(\env{figure} 环境)或 ``Table 1: \ldots''{}(\env{table} 环境)。 +\cmd{caption} 生成的标题形如“Figure 1: \ldots”(\env{figure} 环境)或“Table 1: \ldots”(\env{table} 环境)。 可通过修改 \cmd{figurename} 和 \cmd{tablename} 的内容来修改标题的前缀(详见第 \ref{sec:latex-settings} 节)。 标题样式的定制功能由 \pkg{caption} 宏包提供,详见该宏包的帮助文档,在此不作赘述。 @@ -1052,7 +1064,7 @@ A \rule[-.4pt]{3em}{.4pt} line. \centering \includegraphics[width=...]{...} \qquad - \includegraphics[width=...]{...} \\[..pt] + \includegraphics[width=...]{...} \\[...pt] \includegraphics[width=...]{...} \caption{...} \end{figure} @@ -1102,44 +1114,50 @@ A \rule[-.4pt]{3em}{.4pt} line. \end{minipage} \end{figure} -\pkgindex{subfig} -\cmdindex[subfig]{subfloat} -当我们需要更进一步,给每个图片定义小标题时,就要用到 \pkg{subfig} 宏包的功能了。 -这里仅举一例,效果见图 \ref{fig:subfig}。更详细的用法请参考 \pkg{subfig} 宏包的帮助文档。 +\pkgindex{subcaption} +\envindex[subcaption]{subfigure} +当我们需要更进一步,给每个图片定义小标题时,就要用到 \pkg{subcaption} 宏包的功能了。这里仅举一例, +效果见图 \ref{fig:subfigure-cap1} 和 \ref{fig:subfigure-cap2}。更详细的用法请参考 \pkg{subcaption} +宏包的帮助文档。 \begin{verbatim} \begin{figure}[htbp] \centering - \subfloat[...]{\label{sub-fig-1}% 为子图加交叉引用 - \begin{minipage}{...} + \begin{subfigure}{...} \centering \includegraphics[width=...]{...} - \end{minipage} - } + \caption{...} + \end{subfigure} \qquad - \subfloat[...]{% - \begin{minipage}{...} + \begin{subfigure}{...} \centering \includegraphics[width=...]{...} - \end{minipage} - } - \caption{...} + \caption{...} + \end{subfigure} \end{figure} \end{verbatim} \begin{figure}[htp] \centering - \subfloat[并排子图1]{% - \begin{minipage}{12em} + \begin{subfigure}{12em} \centering \fcolorbox[gray]{0}{0.96}{\parbox{10em}{\vrule width 0pt height 12ex\hfil}} - \end{minipage}} + \caption{并排子图 1} + \label{fig:subfigure-cap1} + \end{subfigure} \qquad - \subfloat[并排子图2]{% - \begin{minipage}{12em} + \begin{subfigure}{12em} \centering \fcolorbox[gray]{0}{0.96}{\parbox{10em}{\vrule width 0pt height 12ex\hfil}} - \end{minipage}} - \caption{使用 \pkg{subfig} 宏包的 \cmd{subfloat} 命令排版子图。}\label{fig:subfig} + \caption{并排子图 2} + \label{fig:subfigure-cap2} + \end{subfigure} + \caption{使用 \pkg{subcaption} 宏包的 \env{subfigure} 环境排版子图。} + \label{fig:subcaption} \end{figure} +\pkgindex{caption,subfig} +\cmdindex[subfig]{subfloat} +\pkg{subcaption} 依赖上文提到过的 \pkg{caption} 宏包,因此也支持子图表标题样式的定制。并排子图表的 +功能也可通过 \pkg{subfig} 宏包的 \cmd{subfloat} 命令实现,具体请参考宏包文档。 + \endinput diff --git a/info/lshort/chinese/src/chap/chap.04.math.tex b/info/lshort/chinese/src/chap/chap.04.math.tex index 75212c440a..13eed06f31 100644 --- a/info/lshort/chinese/src/chap/chap.04.math.tex +++ b/info/lshort/chinese/src/chap/chap.04.math.tex @@ -119,6 +119,7 @@ In display: 则应该像正常的行内公式那样用,而不是滥用 \amscmd{text} 命令。}。 \end{enumerate} \begin{example} +% \usepackage{amssymb} $x^{2} \geq 0 \qquad \text{for \textbf{all} } x\in\mathbb{R}$ @@ -274,7 +275,7 @@ $a\bmod b \\ \end{example} \cmdindex[amsmath]{DeclareMathOperator} -如果表 \ref{tbl:math-functions} 中的算符不够用的话,\pkg{amsmath} 允许用户用 \amscmd{Declare\-Math\-Operator} +如果表 \ref{tbl:math-functions} 中的算符不够用的话,\pkg{amsmath} 允许用户在导言区用 \amscmd{Declare\-Math\-Operator} 定义自己的算符,其中带星号的命令定义带上下限的算符: \begin{verbatim} \DeclareMathOperator{\argh}{argh} @@ -321,6 +322,7 @@ In display: \pkg{amsmath} 宏包还提供了 \amscmd{substack},能够在下限位置书写多行表达式;\amsenv{subarray} 环境更进一步,令多行表达式可选择居中 (c) 或左对齐 (l): \begin{example} +% \usepackage{amssymb} \[ \sum_{\substack{0\le i\le n \\ j\in \mathbb{R}}} @@ -384,8 +386,8 @@ _\text{meaning of life} = 42$ \subsection{括号和定界符}\label{subsec:math-delims} \LaTeX{} 提供了多种括号和定界符表示公式块的边界,如小括号 $()$、中括号 $[]$、 -大括号 $\{\}$(\cmd{\{} \cmd{\}})、尖括号 $\langle \rangle$ (\cmd{langle} \cmd{rangle})等。 -更多的括号/定界符命令见表 表 \ref{tbl:math-delims} 和 \ref{tbl:math-large-delims}。 +大括号 $\{\}$(\cmd{\{} \cmd{\}})、尖括号 $\langle \rangle$(\cmd{langle} \cmd{rangle})等。 +更多的括号/定界符命令见表 \ref{tbl:math-delims} 和 \ref{tbl:math-large-delims}。 \begin{example} ${a,b,c} \neq \{a,b,c\}$ \end{example} @@ -451,8 +453,10 @@ a + b + c + d + e + f \pinyinindex{duohanggongshi}{多行公式|(} 更多的情况是,我们需要罗列一系列公式,并令其按照等号对齐。 -读者可能阅读过其它手册或者资料,知道 \LaTeX{} 提供了 \env{eqnarray} 环境。它按照等号左边——等号——等号右边呈三列对齐, -但等号周围的空隙过大,加上公式编号等一些 bug,目前已不推荐使用\footnote{\url{http://tug.org/pracjourn/2006-4/madsen/madsen.pdf}}。 +读者可能阅读过其它手册或者资料,知道 \LaTeX{} 提供了 \env{eqnarray} 环境。 +它按照等号左边——等号——等号右边呈三列对齐,但等号周围的空隙过大,加上公式 +编号等一些 bug,目前已不推荐使用% +\footnote{Lars Madsen. \emph{Avoid eqnarray!}, \url{https://tug.org/pracjourn/2006-4/madsen/madsen.pdf}}。 \envindex[amsmath]{align} \index{&@\texttt\& (\textit{单元格/对齐})} @@ -625,7 +629,8 @@ x_{n1} & x_{n2} & \ldots & x_{nn}\\ \end{tabularx} \end{center} -一个常见的用途是修正积分的被积函数$f(x)$和微元$\mathrm{d}x$之间的距离。注意微元里的$\mathrm{d}$用的是直立体: +一个常见的用途是修正积分的被积函数 $f(x)$ 和微元 $\mathrm{d}x$ 之间的距离。 +注意微元里的 $\mathrm{d}$ 用的是直立体: \begin{example} \[ \int_a^b f(x)\mathrm{d}x @@ -634,8 +639,9 @@ x_{n1} & x_{n2} & \ldots & x_{nn}\\ \] \end{example} -另一个用途是生成多重积分号。如果我们直接连写两个 \cmd{int},之间的间距将会过宽,此时可以使用负间距 \cmd{!} 修正之。 -不过 \pkg{amsmath} 提供了更方便的多重积分号,如二重积分 \amscmd{iint}、三重积分 \amscmd{iiint} 等。 +另一个用途是生成多重积分号。如果我们直接连写两个 \cmd{int},之间的间距将会过宽,此时可以使用负间距 +\cmd{!} 修正之。不过 \pkg{amsmath} 提供了更方便的多重积分号,如二重积分 \amscmd{iint}、三重积分 +\amscmd{iiint} 等。 \begin{example} \newcommand\diff{\,\mathrm{d}} \begin{gather*} @@ -658,6 +664,7 @@ f(x)g(y) \diff x \diff y \\ \LaTeX{} 允许一部分数学符号切换字体,主要是拉丁字母、数字、大写希腊字母以及重音符号等。 表 \ref{tbl:math-fonts} 给出了切换字体的命令。某一些命令需要字体宏包的支持。 \begin{example} +% \usepackage{amssymb} $\mathcal{R} \quad \mathfrak{R} \quad \mathbb{R}$ \[\mathcal{L} @@ -689,9 +696,32 @@ $\mathbb{ABCDE}$ & \cmd{mathbb}\marg*{\ldots} & \pkg{amssymb} \end{tabular} \end{table} +一般来说,不同的数学字体往往带有不同的语义,如矩阵、向量等常会使用粗体或粗斜体,而数集常会使用 \cmd{mathbb} 表示。出于内容与格式分离以及方便书写的考虑,可以为它们定义新的命令。具体方法详见 \ref{subsec:newcmd} 小节。 + \pkgindex{unicode-math} 如果需要为所有的数学符号切换字体,则需要直接调用数学字体宏包(见 \ref{subsec:font-pkgs} 小节)。在 \texttt{xelatex} 或者 \texttt{lualatex} 编译命令下,还可以使用基于 \pkg{fontspec} 宏包的 \pkg{unicode-math} 宏包配置 Unicode 数学字体,详见 \ref{subsec:unicode-math} 小节。 +\subsection{加粗的数学符号}\label{subsec:math-bold} + +\cmdindex[amsmath]{boldsymbol} +表 \ref{tbl:math-fonts} 中的 \cmd{mathbf} 命令只能获得直立、加粗的字母。如果想得到粗斜体% +\footnote{国内使用粗斜体符号表示矢量,见 GB 3102.11---93。},可以使用 \pkg{amsmath} 宏包提供的 +\amscmd{boldsymbol} 命令: +\begin{example} +$\mu, M \qquad +\boldsymbol{\mu}, \boldsymbol{M}$ +\end{example} + +\pkgindex{bm} +\cmdindex[bm]{bm} +也可以使用 \pkg{bm} 宏包提供的 \cmd{bm} 命令: +\begin{example} +% \usepackage{bm} +$\mu, M \qquad \bm{\mu}, \bm{M}$ +\end{example} +在 \LaTeX{} 默认的数学字体中,一些符号本身并没有粗体版本,使用 \amscmd{boldsymbol} 也得不到粗体。 +此时 \cmd{bm} 命令会生成“伪粗体”,尽管效果比较粗糙,但在某些时候也不失为一种解决方案。 + \subsection{数学符号的尺寸}\label{subsec:math-styles} \mathindex{displaystyle,textstyle,scriptstyle,scriptscriptstyle} @@ -724,33 +754,6 @@ r = \frac \] \end{example} -\subsection{加粗的数学符号}\label{subsec:math-bold} - -在 \LaTeX{} 中为符号切换数学字体并不十分自由,只能通过 \cmd{mathbf} 等有限的命令切换字体。比如想得到粗斜体的符号,就没有现成的命令% -\footnote{国内使用粗斜体符号表示矢量,见 GB 3102.11--93。};再比如 \cmd{mathbf} 只能改变拉丁字母和大写希腊字母,小写希腊字母就没有用。 - -\cmdindex{boldmath} -\LaTeX{} 提供了一个命令 \cmd{boldmath} 令用户可以将整套数学字体切换为粗体版本(前提是数学字体宏包本身支持粗体符号)。但这个命令\textbf{只能在公式外使用}: -\begin{example} -$\mu, M \qquad -\mathbf{\mu}, \mathbf{M}$ -\qquad {\boldmath$\mu, M$} -\end{example} - -\cmdindex[amsmath]{boldsymbol} -\pkg{amsmath} 提供了一个 \amscmd{boldsymbol} 命令(由调用的 \pkg{amsbsy} 宏包提供),用于打破 \cmd{boldmath} 的限制, -在公式内部将一部分符号切换为粗体。 -\begin{example} -$\mu, M \qquad -\boldsymbol{\mu}, \boldsymbol{M}$ -\end{example} - -\pkgindex{bm} -\cmdindex[bm]{bm} -然而在许多数学字体宏包中,定界符、巨算符等一些符号本身没有粗体版本,\amscmd{boldsymbol} 也得不到粗体。 -\LaTeX{} 工具宏集之一的 \pkg{bm} 宏包可以用 \cmd{bm} 命令生成“伪粗体”,作为粗体符号的一个解决方案。这里不做过多介绍, -详情请参考 \pkg{bm} 宏包的帮助文档。 - \section{定理环境}\label{sec:theorems} \subsection{\LaTeX{} 原始的定理环境}\label{subsec:latex-theorems} diff --git a/info/lshort/chinese/src/chap/chap.05.style.tex b/info/lshort/chinese/src/chap/chap.05.style.tex index 460dd7c81c..e7e48e70b4 100644 --- a/info/lshort/chinese/src/chap/chap.05.style.tex +++ b/info/lshort/chinese/src/chap/chap.05.style.tex @@ -126,7 +126,7 @@ He likes {\LARGE large and 幸好大部分时候,许多字体宏包为我们完成了整套配置,我们可以在调用宏包之后,照常使用 \cmd{bfseries} 或 \cmd{ttfamily} 等我们熟悉的命令。 表 \ref{tbl:font-pkgs} 列出了较为常用的字体宏包,其中相当多的宏包还配置了数学字体,或者文本、数学字体兼而有之。 -更多的的字体配置参考 \cite{survey,fontcatalogue}。 +更多的字体配置参考 \cite{survey,fontcatalogue}。 \subsection{字体编码}\label{subsec:font-encs} @@ -154,7 +154,7 @@ He likes {\LARGE large and \caption{常见的 \LaTeX{} 字体宏包}\label{tbl:font-pkgs} \begin{tabular}{lp{30em}} \hline - \multicolumn{2}{c}{\textbf{文本 / 数学字体搭配的宏包}} \\ + \multicolumn{2}{c}{\textbf{文本/数学字体搭配的宏包}} \\ \hline \pkg{lmodern} & Latin Modern 字体,对 Computer Modern 字体的扩展 \\ \pkg{cmbright} & 仿 Computer Modern 风格的无衬线字体 \\ @@ -167,8 +167,8 @@ He likes {\LARGE large and \pkg{newpxtext},\pkg{newpxmath} & \pkg{pxfonts} 的改进版本,分别设置文本和数学字体 \\ \pkg{mathptmx} & \pkg{psnfss} 字体宏集之一,Times 风格,较为陈旧,不推荐使用 \\ \pkg{mathpazo} & \pkg{psnfss} 字体宏集之一,Palatino 风格,较为陈旧,不推荐使用 \\ - \pkg{fourier} & fourier 风格数学字体,配合 Utopia 正文字体 \\ - \pkg{fouriernc} & fourier 风格数学字体,配合 New Century Schoolbook 正文字体 \\ + \pkg{fourier} & Fourier 风格数学字体,配合 Utopia 正文字体 \\ + \pkg{fouriernc} & Fourier 风格数学字体,配合 New Century Schoolbook 正文字体 \\ \pkg{arev} & Arev 无衬线字体宏包,Vera Sans 风格 \\ \pkg{mathdesign} & 配合 Charter / Garamond / Utopia 正文字体的数学字体宏包 \\ \hline @@ -212,14 +212,15 @@ He likes {\LARGE large and \cmd{setsansfont}\marg{font name}\oarg{font features} \\ \cmd{setmonofont}\marg{font name}\oarg{font features} \end{command} -其中 \Arg{font name} 使用字体的文件名(带扩展名)或者字体的英文名称。\Arg{font features} 用来手动配置对应的粗体或斜体 -,比如为 Windows 下的无衬线字体 Arial 配置粗体和斜体(通常情况下自动检测并设置对应的粗体和斜体,无需手动指定): +其中 \Arg{font name} 使用字体的文件名(带扩展名)或者字体的英文名称。\Arg{font features} 用来 +手动配置对应的粗体或斜体,比如为 Windows 下的无衬线字体 Arial 配置粗体和斜体(通常情况下自动检测 +并设置对应的粗体和斜体,无需手动指定): \begin{verbatim} -\setsansfont[BoldFont={Arial Bold}, ItalicFont={Arial Italic}]{Arial} +\setsansfont{Arial}[BoldFont={Arial Bold}, ItalicFont={Arial Italic}] \end{verbatim} \Arg{font features} 还能配置字体本身的各种特性,这里不再赘述,感兴趣的读者请参考 \pkg{fontspec} 宏包的帮助文档。 -需要注意的是:\pkg{fontspec} 宏包会覆盖数学字体设置。需要调用表 \ref{tbl:font-pkgs} 中列出的一些数学字体宏包时, +需要注意的是,\pkg{fontspec} 宏包会覆盖数学字体设置。需要调用表 \ref{tbl:font-pkgs} 中列出的一些数学字体宏包时, 应当在调用 \pkg{fontspec} 宏包时指定 \texttt{no-math} 选项。\pkg{fontspec} 宏包可能被其它宏包或文档类(如 \pkg{ctex} 文档类)自动调用时, 则在文档开头的 \cmd{document\-class} 命令里指定 \texttt{no-math} 选项。 @@ -253,9 +254,7 @@ Unicode 数学字体是一类 OpenType 字体,包含了 Unicode 字符集中 \cmd{setmathfont}\marg{font name}\oarg{font features} \end{command} -绝大多数时候,只需要给定字体名称 \Arg{font name} 即可。由于篇幅所限,在此不介绍可选参数 \Arg{font feature} 涉及的配置,有兴趣的读者请参考宏包的帮助文档。 - -Unicode 数学字体相比于正文字体的选择余地不多。表 \ref{tbl:uni-math-fonts} 给出了较为常用的 Unicode 数学字体。 +绝大多数时候,只需要给定字体名称 \Arg{font name} 即可。由于篇幅所限,在此不介绍可选参数 \Arg{font feature} 涉及的配置,有兴趣的读者请参考宏包的帮助文档。Unicode 数学字体相比于正文字体的选择余地不多。表 \ref{tbl:uni-math-fonts} 给出了较为常用的 Unicode 数学字体。 \begin{table}[htp] \centering\small @@ -263,27 +262,31 @@ Unicode 数学字体相比于正文字体的选择余地不多。表 \ref{tbl:un \label{tbl:uni-math-fonts} \begin{tabular}{llp{20em}} \hline -\textbf{数学字体名称} & \textbf{配套正文字体名称} & \textbf{备注}\\ +\textbf{数学字体名称} & \textbf{配套正文字体名称} & \textbf{备注} \\ \hline \multicolumn{3}{c}{开源字体,发布于 CTAN} \\ \hline -\texttt{Latin Modern Math} & \texttt{Latin Modern} & 基于 Computer Modern 风格 \\ -\texttt{STIX Math} & \texttt{STIX} & Times 风格 \\ -\texttt{XITS Math} & \texttt{XITS} & 基于 STIX,Times 风格,有粗体 XITS Math Bold 可用 \\ -\texttt{TeX Gyre Pagella Math} & \texttt{TeX Gyre Pagella} & Palatino 风格 \\ -\texttt{TeX Gyre Termes Math} & \texttt{TeX Gyre Termes} & Times 风格 \\ -\texttt{Libertinus Math} & \texttt{Libertinus} & Linux Libertine 风格 \\ -\texttt{Fira Math} & \texttt{Fira Sans} & 无衬线数学字体 \\ +Latin Modern Math & Latin Modern & 基于 Computer Modern 风格 \\ +STIX Math & STIX & Times 风格 \\ +XITS Math & XITS & 基于 STIX,Times 风格,有粗体 XITS Math Bold 可用 \\ +TeX Gyre Pagella Math & TeX Gyre Pagella & Palatino 风格 \\ +TeX Gyre Termes Math & TeX Gyre Termes & Times 风格 \\ +TeX Gyre DejaVu Math & DejaVu Serif & DejaVu 风格 \\ +Libertinus Math & Libertinus & Linux Libertine 风格 \\ +Garamond Math & EB Garamond & Garamond 风格 \\ +Fira Math & Fira Sans & 无衬线数学字体 \\ \hline \multicolumn{3}{c}{商业字体} \\ \hline -\texttt{Cambria Math} & \texttt{Cambria} & 较新版本的微软 Office 预装数学字体 \\ -\texttt{Lucida Bright Math OT} & \texttt{Lucida Bright OT} & 须购买商业授权 \\ -\texttt{Minion Math} & \texttt{Minion Pro} & 须购买商业授权 \\ +Cambria Math & Cambria & 微软 Office 预装的数学字体 \\ +Lucida Bright Math OT & Lucida Bright OT & 须购买商业授权 \\ +Minion Math & Minion Pro & 须购买商业授权 \\ \hline \end{tabular} \end{table} +\pkg{unicode-math} 宏包与传统数学字体、符号包并不兼容,但其本身已经提供了大量的符号和字体样式。实际上,\ref{subsec:math-alpha} 和 \ref{subsec:math-bold} 小节中介绍的内容均已被 \pkg{unicode-math} 所涵盖,无需调用其他宏包就可以获得覆盖完整、风格较为统一的字体样式。具体使用方法请参考宏包帮助文档。 + \section{文字装饰和强调}\label{sec:emphasize} 强调文字的方法,或者是添加下划线等装饰物,或者是改变文字的字体。 @@ -552,52 +555,55 @@ but it also breaks the line. \pkgindex{geometry} \pinyinindex{xuanxiang}{选项(宏包/文档类)} -\pkg{geometry} 宏包的调用方式类似于 \pkg{graphicx},在 \texttt{latex} + \texttt{dvipdfmx} 命令下需要指定选项 \texttt{dvipdfm} -(注意这里不是 \texttt{dvipdfmx});\texttt{pdflatex} 和 \texttt{xelatex} 编译命令下不需要。 +\pkg{geometry} 宏包的调用方式类似于 \pkg{graphicx},在 \texttt{latex} + \texttt{dvipdfmx} 命令下 +需要指定选项 \texttt{dvipdfm} 或 \texttt{dvipdfmx}% +\footnote{早期版本的 \pkg{geometry} 宏包仅支持 \texttt{dvipdfm} 选项。}; +\texttt{pdflatex} 和 \texttt{xelatex} 编译命令下不需要。 \cmdindex[geometry]{geometry} -你既可以调用 \pkg{geometry} 宏包然后用其提供的 \cmd{geometry} 命令设置页面参数: +既可以调用 \pkg{geometry} 宏包,然后用其提供的 \cmd{geometry} 命令设置页面参数: \begin{command} \cmd{usepackage}\marg*{geometry} \\ \cmd{geometry}\marg{geometry-settings} \end{command} - -也可以将参数指定为宏包的选项: +也可以直接在宏包选项中设置: \begin{command} \cmd{usepackage}\oarg{geometry-settings}\marg*{geometry} \end{command} - 其中 \Arg{geometry-settings} 多以 \Arg{key}=\Arg{value} 的形式组织。 -比如,符合 Microsoft Word 习惯的页面设定是 A4 纸张,上下边距 1 英寸,左右边距 1.25 英寸,于是我们可以通过如下两种等效的方式之一设定页边距: +比如,符合 Microsoft Word 习惯的页面设定是 A4 纸张,上下边距 1 英寸,左右边距 1.25 英寸,于是我们 +可以通过如下两种等效的方式之一设定页边距: \begin{verbatim} -\usepackage[left=1.25in,right=1.25in,% - top=1in,bottom=1in]{geometry} +\geometry{a4paper,left=1.25in,right=1.25in,top=1in,bottom=1in} % or like this: -\usepackage[hmargin=1.25in,vmargin=1in]{geometry} +\geometry{a4paper,hmargin=1.25in,vmargin=1in} \end{verbatim} -又比如,需要设定周围的边距一致为1.25英寸,可以用更简单的语法: +又比如,需要设定周围的边距一致为 1.25 英寸,可以用更简单的语法: \begin{verbatim} -\usepackage[margin=1.25in]{geometry} +\geometry{margin=1.25in} \end{verbatim} -对于书籍等双面文档,习惯上奇数页右边、偶数页左边留出较多的页边距,而书脊一侧的奇数页左边、偶数页右边页边距较少。我们可以这样设定: +对于书籍等双面文档,习惯上奇数页右边、偶数页左边留出较大的页边距,而靠近书脊一侧的奇数页左边、 +偶数页右边页边距较小。我们可以这样设定: \begin{verbatim} -\usepackage[inner=1in,outer=1.25in]{geometry} +\geometry{inner=1in,outer=1.25in} \end{verbatim} -\pkg{geometry} 宏包本身也能够修改纸张大小、页眉页脚高度、边注宽度等等参数。更详细的用法不再赘述, -感兴趣的用户可查阅 \pkg{geometry} 宏包的帮助文档。 +需要指出的是,通过 \pkg{geometry} 宏包设置的纸张大小是输出 PDF 文件的真实大小,而在文档类选项中 +设置的参数(见 \ref{subsec:classes} 小节)实际上只影响输出区域。\pkg{geometry} 宏包还能够修改 +页眉页脚高度、边注宽度等参数,并且能比较好地处理各参数之间的依赖关系。更详细的用法不再赘述,感兴趣 +的用户可查阅其帮助文档。 \subsection{页面内容的垂直对齐}\label{subsec:raggedbottom} -\LaTeX{} 默认将页面内容在垂直方向分散对齐。对于有大量图表的文档,许多时候想要做到排版匀称的页面很困难, -垂直分散对齐会造成某些页面的垂直间距过宽,还可能报大量的 \texttt{Underfull} \cmd{vbox} 消息。 +\LaTeX{} 默认将页面内容在垂直方向分散对齐。对于有大量图表的文档,许多时候想要做到排版匀称的页面 +很困难,垂直分散对齐会造成某些页面的垂直间距过宽,还可能报大量的 \verb|Underfull \vbox| 警告。 \LaTeX{} 还提供了另一种策略:将页面内容向顶部对齐,给底部留出高度不一的空白。 \cmdindex{raggedbottom, flushbottom} -以下命令分别令页面在垂直方向向顶部对齐 / 分散对齐: +以下命令分别令页面在垂直方向向顶部对齐/分散对齐: \begin{command} \cmd{raggedbottom} \\ \cmd{flushbottom} @@ -678,8 +684,8 @@ but it also breaks the line. \begin{description} \item[\cls{article} 文档类,\texttt{twoside} 选项] 偶数页为页码和节标题,奇数页为小节标题和页码; \item[\cls{article} 文档类,\texttt{oneside} 选项] 页眉为节标题和页码; - \item[\cls{book/report} 文档类,\texttt{twoside} 选项] 偶数页为页码和章标题,奇数页为节标题和页码; - \item[\cls{book/report} 文档类,\texttt{oneside} 选项] 页眉为章标题和页码。 + \item[\cls{report} / \cls{book} 文档类,\texttt{twoside} 选项] 偶数页为页码和章标题,奇数页为节标题和页码; + \item[\cls{report} / \cls{book} 文档类,\texttt{oneside} 选项] 页眉为章标题和页码。 \end{description} \cmdindex{pagenumbering} @@ -718,7 +724,7 @@ but it also breaks the line. \markright{\thesection\quad #1}} \end{verbatim} -其中 \cmd{thechapter}、\cmd{thesection} 等命令为章节计数器的数值(详见 \ref{sec:counters} 节)。以上代码适用于 \cls{report/book} 文档类。 +其中 \cmd{thechapter}、\cmd{thesection} 等命令为章节计数器的数值(详见 \ref{sec:counters} 节)。以上代码适用于 \cls{report} / \cls{book} 文档类。 对于 \cls{article} 文档类,与两个页眉相关的命令分别为 \cmd{sec\-tion\-mark} 和 \cmd{sub\-sec\-tion\-mark}。 \subsection{\pkg{fancyhdr} 宏包}\label{subsec:fancyhdr} @@ -734,7 +740,7 @@ but it also breaks the line. \cmd{fancyhead}\oarg{position}\marg*{\ldots}\\ \cmd{fancyfoot}\oarg{position}\marg*{\ldots} \end{command} -其中 \Arg{position} 为 L(左)/C(中)/R(右) 以及与 O(奇数页)/E(偶数页)字母的组合。\cmd{fancyhf} 用于同时定义页眉和页脚, +其中 \Arg{position} 为 L(左)/C(中)/R(右)以及与 O(奇数页)/E(偶数页)字母的组合。\cmd{fancyhf} 用于同时定义页眉和页脚, 习惯上使用 \cmd{fancyhf}\marg*{} 来清空页眉页脚的设置。 源代码 \ref{code:fancyhdr} 给出了 \pkg{fancyhdr} 基础用法的一个示例,效果为将章节标题放在和 headings 一致的位置,但使用加粗格式; diff --git a/info/lshort/chinese/src/chap/chap.06.spec.tex b/info/lshort/chinese/src/chap/chap.06.spec.tex index 4db6214606..9f87cfc273 100644 --- a/info/lshort/chinese/src/chap/chap.06.spec.tex +++ b/info/lshort/chinese/src/chap/chap.06.spec.tex @@ -36,8 +36,8 @@ \Arg{widest label} 用以限制参考文献序号的宽度,如 99 意味着不超过两位数字。通常设定为与参考文献的数目一致。 \env{thebibliography} 环境自动生成不带编号的一节(\cls{article} 文档类)或一章(\cls{report} / \cls{book} 文档类)。 -在 \cls{article} 文档类的节标题默认为 ``Reference''{},而在 \cls{report / book} 文档类 -的章标题默认为 ``Bibliography''{}。用户可通过 \ref{sec:latex-settings} 节给出的方法定制参考文献的标题。 +在 \cls{article} 文档类的节标题默认为“References”,而在 \cls{report} / \cls{book} 文档类 +的章标题默认为“Bibliography”。用户可通过 \ref{sec:latex-settings} 节给出的方法定制参考文献的标题。 以下为一个使用 \env{the\-biblio\-graphy} 排版参考文献的例子: \begin{verbatim} @@ -149,6 +149,10 @@ Partl~\cite{germenTeX} has proposed that \ldots [1] A.~Axford, B.~Birkin, C.~Copper, and D.~Dannford, ``Demostration of bibliography items,'' \emph{Journal of \TeX perts}, vol.~36, no.~7, pp. 114--120, Mar 2013. + +\medskip +\textbf{gbt7714-numerical}(GB/T 7714---2015 样式,由 \textsf{gbt7714} 宏包提供)\\{} +[1] 陈登原. 国史旧闻: 第 1 卷[M]. 北京: 中华书局, 2000: 29. \end{trivlist} \hrule \end{table} @@ -326,11 +330,11 @@ xelatex demo \item[\texttt{trad-alpha}] \pkg{biblatex-trad} 样式包,移植自 \hologo{BibTeX} 默认的 \texttt{alpha} 样式。另外还包括 \texttt{trad-abbrv}、\texttt{trad-plain} 和 \texttt{trad-unsrt}。 \item[\texttt{gb7714-2015}] - 符合中文文献著录标准 GB/T 7714--2015 的样式,著录按顺序编码排版。另外还包括按作者-年份顺序排版著录的样式 \texttt{gb7714-2015ay}。 + 符合中文文献著录标准 GB/T 7714---2015 的样式,著录按顺序编码排版。另外还包括按作者—年份顺序排版著录的样式 \texttt{gb7714-2015ay}。 \item[\texttt{caspervector}] - 以中文文献著录标准 GB/T 7714--2015 为基础的一个样式。 + 以中文文献著录标准 GB/T 7714---2015 为基础的一个样式。 \item[\texttt{ieee}] - 兼容 \pkg{IEEEtran} 风格的样式,著录按顺序编码排版。另外还包括按作者-年份顺序排版著录的样式 \texttt{ieee-alphabetic}。 + 兼容 \pkg{IEEEtran} 风格的样式,著录按顺序编码排版。另外还包括按作者—年份顺序排版著录的样式 \texttt{ieee-alphabetic}。 \end{description} \section{索引和 makeindex 工具}\label{sec:index} @@ -548,7 +552,7 @@ PDF 文档格式是现今最流行的电子文档格式,而电子文档最实 \subsection{\pkg{hyperref} 宏包}\label{subsec:hyperref} \pkgindex{hyperref} -\pkg{hyperref} 宏包涉及到的链接遍布 \LaTeX{} 的每一个角落——目录、引用、脚注、索引、参考文献等等都被封装成超链接。 +\pkg{hyperref} 宏包涉及的链接遍布 \LaTeX{} 的每一个角落——目录、引用、脚注、索引、参考文献等等都被封装成超链接。 但这也使得它与其它宏包发生冲突的可能性大大增加,虽然宏包已经尽力解决各方面的兼容性,但仍不能面面俱到。 为减少可能的冲突,习惯上将 \pkg{hyperref} 宏包\textbf{放在其它宏包之后调用}。 @@ -562,38 +566,35 @@ PDF 文档格式是现今最流行的电子文档格式,而电子文档最实 \cmd{hypersetup}\marg*{\Arg{option1},\Arg{option2}=\marg*{value},\ldots} \\ \cmd{usepackage}\oarg*{\Arg{option1},\Arg{option2}=\marg*{value},\ldots}\marg*{hyperref} \end{command} -可用的参数见表 \ref{tbl:hyperref-settings}。 +当选项值为 \texttt{true} 时,可以省略“\texttt{=true}”不写。可用的参数见表 \ref{tbl:hyperref-settings}。 \begin{table}[htp] \centering \caption{\pkg{hyperref} 宏包提供的参数设置}\label{tbl:hyperref-settings} +\def\TF{\Arg{true\textnormal|false}} \begin{tabular}{llp{19.5em}} \hline - \textbf{参数} & \textbf{默认值} & \textbf{含义} \\ + \textbf{参数} & \textbf{默认值} & \textbf{含义} \\ + \hline + \texttt{draft=}\TF & \textit{false} & 关闭所有超链接、书签等功能(也可以通过文档类选项指定) \\ + \texttt{final=}\TF & \textit{true} & 开启所有超链接、书签等功能(也可以通过文档类选项指定) \\ \hline - \texttt{colorlinks=}\Arg{true\textnormal|false} - & \textit{false} & 设置为 \textit{true} 为链接文字带颜色,反之加上带颜色的边框 \\ - \texttt{hidelinks} & & 取消链接的颜色和边框 \\ + \texttt{colorlinks=}\TF & \textit{false} & 设置为 \textit{true} 为链接文字带颜色,反之加上带颜色的边框 \\ + \texttt{hidelinks} & & 取消链接的颜色和边框 \\ \texttt{pdfborder=}\marg*{\Arg{n} \Arg{n} \Arg{n}} - & 0 0 1 & 超链接边框设置,设为 0 0 0 可取消边框 \\ + & 0 0 1 & 超链接边框设置,设为 0 0 0 可取消边框 \\ \hline - \texttt{bookmarks=}\Arg{true\textnormal|false}\textsuperscript{\dag} - & \textit{true} & 是否生成书签 \\ - \texttt{bookmarksopen=}\Arg{true\textnormal|false} - & \textit{false} & 是否展开书签 \\ - \texttt{bookmarksnumbered=}\Arg{true\textnormal|false} - & \textit{false} & 书签是否带章节编号 \\ + \texttt{bookmarks=}\TF\textsuperscript{\dag} + & \textit{true} & 是否生成书签 \\ + \texttt{bookmarksopen=}\TF & \textit{false} & 是否展开书签 \\ + \texttt{bookmarksnumbered=}\TF & \textit{false} & 书签是否带章节编号 \\ \hline - \texttt{pdftitle=}\Arg{string} - & 空 & 标题 \\ - \texttt{pdfauthor=}\Arg{string} - & 空 & 作者 \\ - \texttt{pdfsubject=}\Arg{string} - & 空 & 主题 \\ - \texttt{pdfkeywords=}\Arg{string} - & 空 & 关键词 \\ + \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 页面以适合页面/适合宽度/适合高度等方式显示,默认为适合页面 \\ + & \textit{Fit} & 设置 PDF 页面以适合页面/适合宽度/适合高度等方式显示,默认为适合页面 \\ \hline \end{tabular} \begin{quotation} @@ -611,7 +612,9 @@ PDF 文档格式是现今最流行的电子文档格式,而电子文档最实 \cmd{nolinkurl}\marg{url} \end{command} -\cmd{url} 和 \cmd{nolinkurl} 都生成可以点击的 URL,区别是前者有彩色,后者没有。在 \cmd{url} 命令中作为参数的 URL 里, +\cmd{url} 和 \cmd{nolinkurl} 都像抄录命令 \cmd{verb} 一样输出一个 URL,区别是前者还为 URL 加上了超链接,后者没有。% +\footnote{注意,一些 PDF 阅读器会为 URL 文本自动加上超链接,这些超链接不是 \LaTeX{} 生成的。}% +在 \cmd{url} 等命令的参数 \Arg{url} 里, \textbf{可直接输入如 \texttt\%、\texttt\& 这样的特殊符号}。 \cmdindex[hyperref]{href} @@ -621,9 +624,9 @@ PDF 文档格式是现今最流行的电子文档格式,而电子文档最实 \end{command} \begin{example} -\url{http://wikipedia.org} \\ -\nolinkurl{http://wikipedia.org} \\ -\href{http://wikipedia.org}{Wiki} +\url{https://wikipedia.org} \\ +\nolinkurl{https://wikipedia.org} \\ +\href{https://wikipedia.org}{Wiki} \end{example} \cmdindex[hyperref]{hyperref} diff --git a/info/lshort/chinese/src/chap/chap.07.graphic.tex b/info/lshort/chinese/src/chap/chap.07.graphic.tex index 11abdec17d..cec70ad71e 100644 --- a/info/lshort/chinese/src/chap/chap.07.graphic.tex +++ b/info/lshort/chinese/src/chap/chap.07.graphic.tex @@ -14,7 +14,7 @@ \LaTeX{} 提供了原始的 \env{picture} 环境,能够绘制一些基本的图形如点、线、矩形、圆、B\'ezier 曲线等等, 不过受制于 \LaTeX{} 本身,它的绘图功能极为有限,效果也不够美观。 -当前较为流行的、用于 \LaTeX{} 的绘图宏包 / 程序主要有: +当前较为流行的、用于 \LaTeX{} 的绘图宏包/程序主要有: \begin{itemize} \item PSTricks \par 以 PostSciprt 语法为基础的绘图宏包,具有优秀的绘图能力。它对老式的 \texttt{latex + dvips} 编译命令支持最好, diff --git a/info/lshort/chinese/src/chap/chap.08.custom.tex b/info/lshort/chinese/src/chap/chap.08.custom.tex index d31043c572..bb03e3963c 100644 --- a/info/lshort/chinese/src/chap/chap.08.custom.tex +++ b/info/lshort/chinese/src/chap/chap.08.custom.tex @@ -40,24 +40,22 @@ 用于指定新命令所需的参数数目(最多 9 个)。如果缺省可选参数,默认就是 0,也就是新定义的命令不带任何参数。 接下来的两个例子有助于理解。第一个例子定义了一个新的命令 \cmd{tnss}。 -这个命令是本手册英文名称 ``The Not So Short Introduction to \LaTeXe'' 的简写。 +这个命令是本手册英文名称“The Not So Short Introduction to \LaTeXe” 的简写。 如果需要在文档中多次使用本手册的名称,那么使用这个命令是一个非常方便的办法。 \begin{example} -\newcommand{\tnss}{The not - so Short Introduction to - \LaTeXe} -This is ``\tnss'' \ldots{} -``\tnss'' +\newcommand{\tnss}{The not so Short + Introduction to \LaTeXe} +This is ``\tnss'' \ldots{} ``\tnss'' \end{example} 第二个例子演示了如何定义一个带参数的命令。在命令的定义中,标记 \verb|#1| 代表指定的参数。如果想使用多个参数,可以依次使用 \verb|#2|、……、\verb|#9| 等标记。 \begin{example} -\newcommand{\txsit}[1] - {This is the \emph{#1} Short - Introduction to \LaTeXe} +\newcommand{\txsit}[1]{This is the + \emph{#1} Short Introduction + to \LaTeXe} % in the document body: \begin{itemize} \item \txsit{not so} @@ -66,24 +64,24 @@ This is ``\tnss'' \ldots{} \end{example} \cmdindex{renewcommand} -\LaTeX{} 不允许使用 \cmd{newcommand} 定义一个与现有命令重名的命令。如果需要修改命令定义的话,使用 \cmd{re\-new\-comm\-and} 命令。它使用与命令 \cmd{new\-comm\-and} -相同的语法。 +\LaTeX{} 不允许使用 \cmd{newcommand} 定义一个与现有命令重名的命令。如果需要修改命令定义的话, +使用 \cmd{re\-new\-comm\-and} 命令。它使用与命令 \cmd{new\-comm\-and} 相同的语法。 \cmdindex{providecommand} -在某些情况之下,使用 \cmd{pro\-vide\-comm\-and} 命令是一种比较理想的方案。在命令未定义时,它相当于 \cmd{new\-comm\-and} -;在命令已定义时,沿用已有的定义。 +在某些情况之下,使用 \cmd{providecommand} 命令是一种比较理想的方案:在命令未定义时, +它相当于 \cmd{new\-comm\-and};在命令已定义时,沿用已有的定义。 \subsection{定义环境}\label{subsec:newenv} \cmdindex{newenvironment} -与 \cmd{new\-comm\-and} 命令类似,有一个命令用于定义新的环境。这个命令是 \cmd{new\-environ\-ment},它的语法如下所示: +与 \cmd{new\-comm\-and} 命令类似,可以用 \cmd{new\-environ\-ment} 定义新的环境。它的语法如下所示: \begin{command} \cmd{newenvironment}\marg{name}\oarg{num}\marg{before}\marg{after} \end{command} -同样地,\cmd{newenvironment} 命令有一个可选的参数。 -在 \Arg{before} 中的内容将在此环境包含的文本之前处理,而在 \Arg{after} 中的内容将在遇到 \cmd{end\marg{name}} 命令时处理。 +同样地,\cmd{newenvironment} 命令有一个可选的参数。在 \Arg{before} 中的内容将在此环境包含 +的文本之前处理,而在 \Arg{after} 中的内容将在遇到 \cmd{end\marg{name}} 命令时处理。 下面的例子演示了 \cmd{newenvironment} 命令的用法: \begin{example} @@ -103,14 +101,141 @@ My humble subjects \ldots 不会不小心新建重名的环境。如果你确实希望改变一个现有的环境,你可以使用命令 \cmd{re\-new\-environ\-ment},它使用和命令 \cmd{new\-environ\-ment} 相同的语法。 +\subsection{\pkg{xparse} 宏包简介}\label{subsec:xparse} + +\pkgindex{xparse} +\cmdindex[xparse]{NewDocumentCommand,NewDocumentEnvironment} +通过 \cmd{newcommand} 和 \cmd{newenvironment} 定义的命令或环境格式比较固定。如果需要定义带有多个 +可选参数、或者带星号的命令或环境,可以使用 \pkg{xparse} 宏包% +\footnote{\LaTeX{} 2020-10-01 版本之后,\pkg{xparse} 宏包已集成在了格式之中,不需要显式调用。}。 +它提供了 \cmd{New\-Document\-Command} 和 \cmd{New\-Document\-Environment} 等命令,具体语法如下: + +\begin{command} +\cmd{NewDocumentCommand}\cmd{\Arg{name}}\marg{arg spec}\marg{definition} \\ +\cmd{NewDocumentEnvironment}\marg{name}\marg{arg spec}\marg{before}\marg{after} +\end{command} + +相比 \cmd{newcommand} 和 \cmd{newenvironment},\pkg{xparse} 通过 \marg{arg spec} 来指定参数的个数 +和格式。基本的参数格式见表~\ref{tbl:xparse-arg-spec}。注意 \marg{arg spec} 中的空格可以忽略。 + +\begin{table}[htp] +\centering +\caption{\pkg{xparse} 参数格式}\label{tbl:xparse-arg-spec} +\begin{tabular}{cl} + \toprule + \textbf{参数格式} & \textbf{说明} \\ + \midrule + \verb|m| & 必选参数,由 \verb|{...}| 给出 \\ + \verb|o| & 可选参数,由 \verb|[...]| 给出;未给出时返回 \verb|-NoValue-| 标记 \\ + \verb|O|\marg{default} & 可选参数,但在未给出时则返回默认值 \Arg{default} \\ + \verb|s| & 可选的星号 \verb|*| \\ + \verb|+| & 修饰后面的 \verb|m|、\verb|o| 等,表示允许在参数中分段 \\ + \bottomrule +\end{tabular} +\end{table} + +不同输入值在解析后的结果可以见表~\ref{tbl:xparse-arg-input} 中的示例。 + +\begin{table}[htp] +\centering +\caption{\pkg{xparse} 参数示例}\label{tbl:xparse-arg-input} +\begin{tabular}{ccccc} + \toprule + \textbf{参数格式} & \textbf{输入值} & \verb|#1| & \verb|#2| & \verb|#3| \\ + \midrule + \verb|m m| & \verb|{foo}{bar}| & \verb|foo| & \verb|bar| & \\ + \verb|o m| & \verb|{foo}| & \verb|-NoValue-| & \verb|foo| & \\ + \verb|o o m| & \verb|[foo]{bar}| & \verb|foo| & \verb|-NoValue-| & \verb|bar| \\ + \verb|m O{default}| & \verb|{foo}| & \verb|foo| & \verb|default| & \\ + \verb|m O{default}| & \verb|{foo}[bar]| & \verb|foo| & \verb|bar| & \\ + \verb|m O{default}| & \verb|[bar]| & 报错 & & \\ + \verb|s o m| & \verb|*[foo]{bar}| & \cmd{BooleanTrue} & \verb|foo| & \verb|bar| \\ + \verb|s m O{default}| & \verb|{foo}| & \cmd{BooleanFalse} & \verb|foo| & \verb|default| \\ + \bottomrule +\end{tabular} +\end{table} + +\cmdindex[xparse]{IfNoValueTF,IfNoValueT,IfNoValueF} +\verb|-NoValue-| 标记可以用 \cmd{IfNoValueTF} 等命令来判断: + +\begin{command} +\cmd{IfNoValueTF}\marg{argument}\marg{true code}\marg{false code} \\ +\cmd{IfNoValueT}\marg{argument}\marg{true code} \\ +\cmd{IfNoValueF}\marg{argument}\marg{false code} +\end{command} + +举例如下: + +\begin{example} +% 百分号用于注释掉不必要的空格和换行符 +\NewDocumentCommand\hello{om} + {% + \IfNoValueTF{#1}% + {Hello, #2!}% + {Hello, #1 and #2!}% + } +\hello{Alice} +\hello[Bob]{Alice} +\end{example} + +\cmdindex[xparse]{BooleanTrue,BooleanFalse,IfBooleanTF,IfBooleanT,IfBooleanF} +\cmd{BooleanTrue} 和 \cmd{BooleanFalse} 则可以用 \cmd{IfBooleanTF} 等命令来判断: + +\begin{command} +\cmd{IfBooleanTF}\marg{argument}\marg{true code}\marg{false code} \\ +\cmd{IfBooleanT}\marg{argument}\marg{true code} \\ +\cmd{IfBooleanF}\marg{argument}\marg{false code} +\end{command} + +举例如下: + +\begin{example} +\NewDocumentCommand\hereis{sm} + {Here is \IfBooleanTF{#1}{an}{a} #2.} +\hereis{banana} +\hereis*{apple} +\end{example} + +需要注意的是,与命令不同,环境在定义时名字里面可以包含 \verb|*|: +\begin{verbatim} +\NewDocumentEnvironment {mytabular} { o +m } {...} {...} +\NewDocumentEnvironment {mytabular*} { m o +m } {...} {...} +\end{verbatim} +用 \verb|s| 标记的 \verb|*| 则应该放在 \cmd{begin}\marg{env} 的后面: +\begin{verbatim} +\NewDocumentEnvironment { envstar } { s } + {\IfBooleanTF {#1} {star} {no star}} {} +\begin{envstar}* +\end{envstar} +\end{verbatim} + +\cmdindex[xparse]{RenewDocumentCommand,ProvideDocumentCommand,DeclareDocumentCommand} +\cmdindex[xparse]{RenewDocumentEnvironment,ProvideDocumentEnvironment,DeclareDocumentEnvironment} +与 \cmd{renewcommand}、\cmd{providecommand} 等命令类似,\pkg{xparse} 宏包也允许在命令或环境 +已有定义时做出相应的处理,具体见表~\ref{tbl:xparse-renew}。 + +\begin{table}[htp] +\centering +\caption{\pkg{xparse} 提供的其他命令}\label{tbl:xparse-renew} +\begin{tabular}{cccc} + \toprule + \textbf{定义命令} & \textbf{定义环境} & \textbf{已定义} & \textbf{未定义} \\ + \midrule + \cmd{NewDocumentCommand} & \cmd{NewDocumentEnvironment} & 报错 & 给出定义 \\ + \cmd{RenewDocumentCommand} & \cmd{RenewDocumentEnvironment} & 重新定义 & 报错 \\ + \cmd{ProvideDocumentCommand} & \cmd{ProvideDocumentEnvironment} & 什么也不做 & 给出定义 \\ + \cmd{DeclareDocumentCommand} & \cmd{DeclareDocumentEnvironment} & 重新定义 & 给出定义 \\ + \bottomrule +\end{tabular} +\end{table} + \section{编写自己的宏包和文档类}\label{sec:packages} \subsection{编写简单的宏包}\label{subsec:provide-pkg} \cmdindex{usepackage} -如果你定义了很多新的环境和命令,你的文档的导言区将变得相当长,在这种情况下,好的方式是 -建立一个新的 \LaTeX{} 宏包来存放所有你自己定义的命令和环境, -然后在你的文档中使用 \cmd{use\-package} 命令来调用自定义的宏包。 +如果定义了很多新的环境和命令,文档的导言区将变得很长,在这种情况下,可以建立一个新的 \LaTeX{} 宏包 +来存放所有你自己定义的命令和环境,然后在文档中使用 \cmd{use\-package} 命令来调用自定义的宏包。 \begin{sourcecode}[htp] \begin{Verbatim} @@ -237,11 +362,11 @@ My humble subjects \ldots 而计数器 part 是独立的。 \item 有序列表 \env{enumerate} 的各级计数器为 enumi, enumii, enumiii, enumiv,也有上下级的关系。 \item 图表浮动体的计数器就是 table 和 figure;公式的计数器为 equation。 - 这些计数器在 \cls{article} 文档类中是独立的,而在 \cls{book} 和 \cls{report} 中以 chapter 为上级计数器。 + 这些计数器在 \cls{article} 文档类中是独立的,而在 \cls{report} 和 \cls{book} 中以 chapter 为上级计数器。 \item 页码、脚注的计数器分别是 page 和 footnote。 \end{itemize} -我们可以利用前面介绍过的命令,修改计数器的样式以达到想要的效果,比如把页码修改成大写罗马字母,左右加横线,或是给脚注加上方括号: +我们可以利用前面介绍过的命令,修改计数器的样式以达到想要的效果,比如把页码修改成大写罗马数字,左右加横线,或是给脚注加上方括号: \begin{verbatim} \renewcommand\thepage{--~\Roman{page}~--} \renewcommand\thefootnote{[\arabic{footnote}]} @@ -259,7 +384,7 @@ My humble subjects \ldots \LaTeX{} 标准文档类对章节划分了层级: \begin{itemize} \item 在 \cls{article} 文档类里 part 为 0,section 为 1,依此类推; - \item 在 \cls{report}/\cls{book} 文档类里 part 为 -1,chapter 为 0,section 为 1,等等。 + \item 在 \cls{report} / \cls{book} 文档类里 part 为 -1,chapter 为 0,section 为 1,等等。 \end{itemize} secnumdepth 计数器控制章节编号的深度,如果章节的层级大于 secnumdepth,那么章节的标题、在目录和页眉页脚的标题都不编号 @@ -269,7 +394,7 @@ secnumdepth 计数器控制章节编号的深度,如果章节的层级大于 s 如设置为 4 令 \cmd{paragraph} 也编号;或者设置一个较小的数以取消编号,如设置为 -1 令 \cmd{chapter} 不编号。 后者是生成不编号的章节的一个妙招,免去了手动使用 \cmd{add\-contents\-line} 和 \cmd{mark\-both} 的麻烦。 -secnumdepth 计数器在 \cls{article} 文档类里默认为 3 (subsubsection 一级);在 \cls{report} 和 \cls{book} 文档类里默认为 2 (subsection 一级)。 +secnumdepth 计数器在 \cls{article} 文档类里默认为 3(subsubsection 一级);在 \cls{report} 和 \cls{book} 文档类里默认为 2(subsection 一级)。 \subsubsection{tocdepth} @@ -285,7 +410,7 @@ tocdepth 计数器控制目录的深度,如果章节的层级大于 tocdepth \begin{itemize} \item 标题名称/前后缀等。表 \ref{tbl:latex-settings-names} 列出了标准文档类里可定制的项目, 表中所有的 \LaTeX{} 命令都可以用 \cmd{re\-new\-comm\-and} 来修改。 - \item 长度。前文在叙述各种排版元素时已经涉及到一些,现归纳于表 \ref{tbl:latex-settings-lengths}。 + \item 长度。前文在叙述各种排版元素时已经介绍过一些,现归纳于表 \ref{tbl:latex-settings-lengths}。 表中所有的长度命令可用 \cmd{setlength} 来修改。 大多数控制页面尺寸的长度参数在图 \ref{fig:layouts} 给出,此处不再赘述。 \end{itemize} @@ -310,7 +435,7 @@ tocdepth 计数器控制目录的深度,如果章节的层级大于 tocdepth \cmd{refname} & References & \env{thebibliography} 环境或 \cmd{biblio\-graphy} 命令生成的参考文献标题(\cls{article} 文档类) \\ \cmd{bibname} & Bibliography & \env{thebibliography} 环境或 \cmd{biblio\-graphy} - 命令生成的参考文献标题(\cls{book / report} 文档类)\\ + 命令生成的参考文献标题(\cls{report} / \cls{book} 文档类)\\ \cmd{indexname} & Index & \cmd{printindex} 命令生成的索引标题 \\ \hline \end{tabular} @@ -330,19 +455,20 @@ tocdepth 计数器控制目录的深度,如果章节的层级大于 tocdepth \hline \cmd{fboxrule} & 0.4pt & \cmd{fbox} 或 \cmd{framebox} 等带框盒子的线宽 \\ \cmd{fboxsep} & 3pt & \cmd{fbox} 或 \cmd{framebox} 等带框盒子的内边距 \\[1ex] - \cmd{arraycolsep} & 5pt & \env{array} 环境的表格项前后的间距 \\ - \cmd{tabcolsep} & 6pt & \env{tabular} 环境的表格项前后的间距 \\ + \cmd{arraycolsep} & 5pt & \env{array} 环境的表格项前后的间距\textsuperscript{注 1} \\ + \cmd{tabcolsep} & 6pt & \env{tabular} 环境的表格项前后的间距\textsuperscript{注 1} \\ \cmd{arrayrulewidth} & 0.4pt & 表格线宽 \\ \cmd{doublerulesep} & 2pt & 连续两根表格线之间的间距 \\[1ex] - \cmd{abovecaptionskip} & 10pt & \cmd{caption} 命令位于图表下方时,与上方图表的间距 \\ - \cmd{belowcaptionskip} & 0pt & \cmd{caption} 命令位于图表上方时,与下方图表的间距 \\[1ex] + \cmd{abovecaptionskip} & 10pt & \cmd{caption} 命令上方的间距\textsuperscript{注 2} \\ + \cmd{belowcaptionskip} & 0pt & \cmd{caption} 命令下方的间距\textsuperscript{注 2} \\[1ex] \cmd{columnsep} & 10pt & 双栏排版下两栏的间距 \\ \cmd{columnseprule} & 0pt & 双栏排版下两栏之间竖线的宽度 \\ \hline \end{tabular} \begin{quotation}\footnotesize% -注:\cmd{arraycolsep} 和 \cmd{tabcolsep} 是每个表格项本身前后的间距(表格线前后无间距;\texttt{@} 列格式会消除与前后表格项的间距)。 -两个表格项之间的间距相当于 2\cmd{arraycolsep} 或 2\cmd{tabcolsep}。 +注 1:\cmd{arraycolsep} 和 \cmd{tabcolsep} 是每个表格项本身前后的间距(表格线前后无间距;\texttt{@} 列格式会消除与前后表格项的间距)。 +两个表格项之间的间距相当于 2\cmd{arraycolsep} 或 2\cmd{tabcolsep}。\par +注 2:在默认设置下,\cmd{caption} 命令和位于它下方的图表之间无间距。宏包 \pkg{caption} 改善了这个问题。 \end{quotation} \end{table} diff --git a/info/lshort/chinese/src/chap/fdl.tex b/info/lshort/chinese/src/chap/fdl.tex index 820a486b1f..33bea42adb 100644 --- a/info/lshort/chinese/src/chap/fdl.tex +++ b/info/lshort/chinese/src/chap/fdl.tex @@ -7,7 +7,7 @@ Version 1.3, 3 November 2008 \end{center} \bigskip -Copyright \copyright\ 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc. \texttt{<http://fsf.org/>} +Copyright \copyright\ 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc. \texttt{<https://fsf.org/>} Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. @@ -437,7 +437,7 @@ The Free Software Foundation may publish new, revised versions of the GNU Free Documentation License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. See -\texttt{http://www.gnu.org/copyleft/}. +\texttt{https://www.gnu.org/licenses/}. Each version of the License is given a distinguishing version number. If the Document specifies that a particular numbered version of this diff --git a/info/lshort/chinese/src/chap/preface.overview.tex b/info/lshort/chinese/src/chap/preface.overview.tex index f93bf7d8de..10c9c767de 100644 --- a/info/lshort/chinese/src/chap/preface.overview.tex +++ b/info/lshort/chinese/src/chap/preface.overview.tex @@ -29,12 +29,12 @@ 这些章节是循序渐进的,建议刚刚熟悉 \LaTeX{} 的读者按顺序阅读。一定要认真阅读例子的源代码,它们贯穿全篇手册,包含了很多的信息。 \bigskip -如果你已经对 \LaTeX{} 较为熟练,本手册的资源已不足够解决你的问题时,请访问``Comprehensive -\TeX{} Archive Network'' (\texttt{CTAN}) 站点,主页是 \url{www.ctan.org}。 -所有的宏包也可以从 \url{mirrors.ctan.org} 和遍布全球的各个镜像站点中获得。 +如果你已经对 \LaTeX{} 较为熟练,本手册的资源已不足够解决你的问题时,请访问 +“Comprehensive \TeX{} Archive Network”(CTAN)站点,主页是 \url{https://www.ctan.org}。 +所有的宏包也可以从 \url{https://mirrors.ctan.org} 和遍布全球的各个镜像站点中获得。 -在本书中你会找到其他引用 \texttt{CTAN} 的地方,形式为 \texttt{CTAN://} 和之后的树状结构。 -引用本身是一个超链接,点击后将打开内容在 \texttt{CTAN} 上相应位置的页面。 +在本书中你会找到其他引用 CTAN 的地方,形式为 \texttt{CTAN://} 和之后的树状结构。 +引用本身是一个超链接,点击后将打开内容在 CTAN 上相应位置的页面。 要在自己的电脑上安装 \TeX{} 发行版,请参考附录 \ref{app:install} 中的内容。 各个操作系统下的 \TeX{} 发行版位于 \CTAN|systems|。 @@ -52,7 +52,7 @@ \vfill -\noindent\begingroup\small lshort 的的最新中文版本位于 \CTAN|info/lshort/chinese|。 +\noindent\begingroup\small lshort 的最新中文版本位于 \CTAN|info/lshort/chinese|。 如果用户对其他语言的版本感兴趣,请浏览 \CTAN|info/lshort|。\endgroup \endinput diff --git a/info/lshort/chinese/src/lshort-zh-cn-style.sty b/info/lshort/chinese/src/lshort-zh-cn-style.sty index 3aca98d561..e1931aa756 100644 --- a/info/lshort/chinese/src/lshort-zh-cn-style.sty +++ b/info/lshort/chinese/src/lshort-zh-cn-style.sty @@ -7,11 +7,11 @@ % % 基本工具宏包 % -\RequirePackage{amsmath,amsthm} +\RequirePackage{amsmath,amsthm,bm} \RequirePackage{hologo,verbatim,fancyvrb,layout,multicol} \RequirePackage[normalem]{ulem} \RequirePackage{colortbl,tabularx,multirow,makecell,booktabs} -\RequirePackage{graphicx,xcolor,float,subfig} +\RequirePackage{graphicx,xcolor,float,subcaption} \RequirePackage{makeidx} \RequirePackage[inner=1in,outer=1.5in,vmargin=1in,marginparwidth=1in]{geometry} \RequirePackage{tikz} @@ -166,7 +166,7 @@ \HOLOGO@mbox{C}\hologo{TeX}% } \def\HoLogo@TikZ#1{% - \HOLOGO@mbox{Ti\textit{k\/}Z} + \HOLOGO@mbox{Ti\textit{k\/}Z}% } %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -179,13 +179,13 @@ \newcommand{\Email}{\begingroup \def\UrlLeft{<}\def\UrlRight{>} \urlstyle{tt}\Url} % email address \def\mailto|#1|{\href{mailto:#1}{\Email|#1|}} % url to mail somewhere \def\CTANref{\begingroup \urlstyle{tt}\Url} -\def\CTAN|#1|{\href{http://mirrors.tuna.tsinghua.edu.cn/CTAN/#1}{\CTANref|CTAN://#1|}} +\def\CTAN|#1|{\href{https://mirrors.tuna.tsinghua.edu.cn/CTAN/#1}{\CTANref|CTAN://#1|}} \newcommand{\contrib}[3]{#1\quad\mailto|#2|{\small\\\quad\textit{#3}}\\[1ex]} % % 示意长度 % -\def\demowidth#1{\rule{0.4pt}{1ex}\rule{#1}{1.2pt}\rule{0.4pt}{1ex}} +\def\demowidth#1{\rule{.6pt}{1ex}\rule{#1}{.6pt}\rule{.6pt}{1ex}} % % 命令和环境的写法 diff --git a/info/lshort/chinese/src/lshort-zh-cn.tex b/info/lshort/chinese/src/lshort-zh-cn.tex index 1569155b6c..b2acba0b80 100644 --- a/info/lshort/chinese/src/lshort-zh-cn.tex +++ b/info/lshort/chinese/src/lshort-zh-cn.tex @@ -1,14 +1,14 @@ \documentclass[a4paper]{book} \usepackage{lshort-zh-cn-style} -\def\lshortversionoriginal{6.2} -\def\lshortdateoriginal{Februrary 28, 2018} -\def\lshortversioncn{6.02} +\def\lshortversionoriginal{6.4} +\def\lshortdateoriginal{March 9, 2021} +\def\lshortversioncn{6.03} -\hypersetup{% - pdftitle={The Short Introduction to LaTeX2e (Chinese Simplified)},% +\hypersetup{ + pdftitle={The Short Introduction to LaTeX2e (Chinese Simplified)}, pdfkeywords={LaTeX, LaTeX2e}, - pdfcreator={XeLaTeX with `ctex' package} + pdfcreator={XeLaTeX with `ctex' package}, } \newcounter{minutes} diff --git a/info/lshort/chinese/src/make.bat b/info/lshort/chinese/src/make.bat index 5ed26b3178..cc5010e004 100644 --- a/info/lshort/chinese/src/make.bat +++ b/info/lshort/chinese/src/make.bat @@ -1,34 +1,34 @@ -@echo off
-cd %~dp0
-set LSHORT=lshort-zh-cn
-set PDF=%LSHORT%.pdf
-set TEMP=%LSHORT%.xdv %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
-if "%1"=="distclean" goto distclean
-
-set TEX=xelatex
-set NOPDFMODE=-interaction=nonstopmode -synctex=1 --no-pdf
-set MODE=-interaction=nonstopmode -synctex=1
-set MAKEINDEX=makeindex
-
-%TEX% %NOPDFMODE% %LSHORT%
-%MAKEINDEX% -s %LSHORT%.ist %LSHORT%
-%TEX% %NOPDFMODE% %LSHORT%
-%TEX% %MODE% %LSHORT%
-
-if exist %PDF% (
-copy %PDF% ..
-)
-exit /B
-
-:clean
-del %TEMP%
-del %PDF%
-exit /B
-
-:distclean
-del %TEMP%
-del %PDF%
-del ..\%PDF%
-exit /B
+@echo off +cd %~dp0 +set LSHORT=lshort-zh-cn +set PDF=%LSHORT%.pdf +set TEMP=%LSHORT%.xdv %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 +if "%1"=="distclean" goto distclean + +set TEX=xelatex +set NOPDFMODE=-interaction=nonstopmode -synctex=1 --no-pdf +set MODE=-interaction=nonstopmode -synctex=1 +set MAKEINDEX=makeindex + +%TEX% %NOPDFMODE% %LSHORT% +%MAKEINDEX% -s %LSHORT%.ist %LSHORT% +%TEX% %NOPDFMODE% %LSHORT% +%TEX% %MODE% %LSHORT% + +if exist %PDF% ( +copy %PDF% .. +) +exit /B + +:clean +del %TEMP% +del %PDF% +exit /B + +:distclean +del %TEMP% +del %PDF% +del ..\%PDF% +exit /B |