Latex@IT·互联网程序员

LaTeX学习笔记 1 | 一个中文排版例子

2017-01-03  本文已影响3932人  纸山
LaTeX吉祥物

本文目录

题外话

等了三天,刘海洋教授的《LaTeX入门》终于到手了,EMS还是不如顺丰给力呀。粗略一翻,这本书的排版真的是赏心悦目,我已经迫不及待要和它共度美好时光了。上几张图秀一下它的颜值。


《LaTeX入门》封面 《LaTeX入门》内容

熟悉LaTeX

LaTeX的读音和写法

LaTeX的官方标准读音音译成中文大约是“拉泰赫”,写法要严格按照大小写交错写成LaTeX

书中介绍的LaTeX版本会不会过时

刘海洋教授在本书中使用的是LaTeX格式版本为2e,意思是超过了第2版,接近却没有达到第3版。LaTeX2e在1994年就已经完善,考虑到这本书是2013年出版的,而LaTeX又是在不断更新进化的,我特地去查了一下LaTeX3相关的内容,点击这里查看LaTeX3的主页。根据我的调查和理解,目前来说,我认为使用LaTeX2e完全满足日常需要。别的不多说,既然《LaTeX入门》这本书是用LaTeX2e排版的,我还有什么不满足的呢?

再谈LaTeX发行版

之前有粗略说过CTeX和TeXLive等发行版,现在详细介绍一下。

对比 CTeX TeXLive
操作系统 只限于Windows下 通用
制作人 中科院吴凌云 TUG
其他 对MiKTeX的再封装 可刻录在光盘直接运行

刘海洋教授还介绍了一些编辑器和PDF阅读器,不过我个人认为,对初学者来说,没有必要把所有的可用软件都折腾一番。现在的当务之急,是建立LaTeX技能树的主干,先把知识体系建立起来,那些零零碎碎的小知识都可以后再扩充。

一个简单的中文排版例子

不知读者是否发现,在我们之前测试TeXstudio是否可用的那个例子里,直接添上中文是不可以的,虽然编译没有报错,但无法输出。这是因为 TEX 原本是面向西文写作的,默认并没有加载中文字体。通过更换文档类型,可以正确显示出中文。代码如下:

\documentclass[UTF8]{ctexart}
\begin{document}
    \section{文字}
    特可爱排版。
    \section{数学}
    \[
        a^2+b^2=c^2
    \]
\end{document}

显示效果如下:


显示效果

这段代码挺好理解的。如果你懂编程,你肯定直到UTF8代表什么,不懂得话点击这里查看。反斜线\ 代表的是其后紧跟的是一个排版命令,而非作者的文字内容。documentclass,顾名思义,就是文档类了。LaTeX的优势就在于让写作与排版分离,把排版大量繁琐的要求隐藏在格式之下,想必这个格式就是只一开始加载的文档类了。ctexart嘛,ctexarticle的缩写,暂且不管这个ctexart是哪路神仙,知道比起之前的article来它能让我们输出中文即可。接下来是一对命令,\begin{document}\end{document},看起来被它们包含夹在中间的应该就是排版的正文部分了。\section好理解,段落嘛。至于下一对命令,\[\],它们之间包含的应该是对数学公式的特殊处理。

关于TeXstudio语法检查的设置

突然发现TeXstudio会对所有正在编辑的中文加红色下划线提示报错,看着挺烦人的,选择菜单栏里的Options-Configure TeXstudio,取消下图红色椭圆处的对勾即可。

牛刀小试,第一个有模有样的作品

这一节研究的是一个相对实际的例子,如刘海洋教授所说,有一些代码或许难以理解,确实如此,有些代码具体怎么执行的我不知,但根据基本的英语能力和编程功底,大概还是猜得出一些代码的作用的。

这是一片小小的科技论文,麻雀虽小五脏俱全,结构上包括标题、摘要、目录、正文和参考文献,内容上包括文字、公式、图形、表格等。内容很多,但别怕,这只是一种惯用的教学伎俩,先给你一个完整工程让你感受一下,这对你以后的学习大有裨益。

源代码

%-*- coding: UTF-8 -*-
% gougu.tex
% 勾股定理
\documentclass[UTF8]{ctexart}
\usepackage{graphicx}
\usepackage{float}
\usepackage{amsmath}
\usepackage{geometry}
\geometry{a6paper,centering,scale=0.8}
\usepackage[format=hang,font=small,textfont=it]{caption}
\usepackage[nottoc]{tocbibind}

\newenvironment{myquote}
{\begin{quote}\kaishu\zihao{-5}}
{\end{quote}}

\newcommand\degree{^\circ}

\title{\heiti 杂谈勾股定理}
\author{\kaishu 纸山}
\date{\today}

\bibliographystyle{plain}

\newtheorem{thm}{定理}

\begin{document}
    
    \maketitle
    \begin{abstract}
        这是一篇关于勾股定理的小短文。
    \end{abstract}
    \tableofcontents
    \section{勾股定理在古代}\label{sec:diyijie}
    西方称勾股定理为毕达哥拉斯定理,将勾股定理的发现归功于公元前 6 世纪的
    毕达哥拉斯学派 \cite{Kline}。该学派得到了一个法则,可以求出可排成直角
    三角形三边的三元数组。毕达哥拉斯学派没有书面著作,该定理的严格表述和证
    明则见于欧几里德\footnote{欧几里得,约公元前 330--275 年。}《几何原本》
    的命题 47:“直角三角形斜边上的正方形等于两直角边上的两个正方形之和。 ” 
    证明是用面积做的。
    
    我国《周髀算经》载商高(约公元前 12 世纪)答周公问:
    \begin{myquote}
        勾广三,股修四,径隅五。
    \end{myquote}
    又载陈子(约公元前 7--6 世纪)答荣方问:
    \begin{myquote}
        若求邪至日者,以日下为勾,日高为股,勾股各自乘,并而开方除之,得邪至日。
    \end{myquote}
    都较古希腊更早。后者已经明确道出勾股定理的一般形式。图\ref{fig:xiantu}是
    我国古代对勾股定理的一种证明 \cite{quanjing}。
    \begin{figure}[ht]
        \centering
        \includegraphics[scale=0.2]{xiantu.png}
        \caption{宋赵爽在《周髀算经》注中作的弦图(仿制),该图给出了勾股定理一个极具对称美的证明。 }
        \label{fig:xiantu}
    \end{figure}
    \section{勾股定理的近代形式}
    勾股定理可以用现代语言表述如下:
    \begin{thm}[勾股定理]
        直角三角形斜边的平方等于两腰的平方和。
    \end{thm}

    可以用符号语言表述为:设直角三角形$ABC$,其中$\angle C = 90\degree$,则有
    \begin{equation}\label{eq:gougu}
    AB^2 = BC^2 + AC^2.
    \end{equation}
    满足式\eqref{eq:gougu}的整数称为\emph{勾股数}。第\ref{sec:diyijie}节所说
    毕达哥拉斯学派得到的三元数组就是勾股数。下表列出一些较小的勾股数:
    \begin{table}[H]
        \begin{tabular}{|rrr|}
            \hline
            直角边 $a$ & 直角边 $b$ & 斜边 $c$ \\
            \hline
            3 & 4 & 5 \\
            5 & 12 & 13 \\
            \hline
        \end{tabular}%
        \qquad
        ($a^2 + b^2 = c^2$)
    \end{table}
    \nocite{Shiye}
    \bibliography{math}
\end{document}

排版效果

排版效果 排版效果

怎么样,是不是看起来挺不错,心动不如行动,快来看一下是什么样的代码能排出如此精美的文章的吧!

代码拆解

区区七八十代码,竟花费了我接近两个小时来调试,颇为不易,接下来让我来拆解一下这段代码。

调整TeXstudio的默认编译器为XeLaTeX

自此以后的编译工作我们都使用XeLaTeX,一开始TeXstudio默认的编译器可能不是它,需要我们手动修改。选择菜单栏里的Options-Configure TeXstudio,修改下图红色椭圆处即可。

基础语法
换行与空格
命令与环境
数学公式

数学公式分为两种,一个是正文公式,一个是显示公式。

使用图表

插图功能:需要使用宏包,在引言区使用\usepackage{graphicx}命令。一个用来插图的代码标准模板如下:

\begin{figure}[ht]
        \centering
        \includegraphics[scale=0.2]{图片路径}
        \caption{ }
\end{figure}

figure环境的可选参数,ht分别表示here和top,表示浮动体可以出现在环境周围的文本所在处(here)和一页的顶部(top)。\centering表示居中,scale是对图片的放缩比例,图片路径是指相对于当前编辑的.tex文件路径*,请注意这一点。\caption当然是指图片的标题。

图表功能:表格由tabular环境完成,一个用来制作表格的标准模板如下:

\begin{tabular}{|rrr|}
        \hline
        直角边 $a$ & 直角边 $b$ & 斜边 $c$ \\
        \hline
        3 & 4 & 5 \\
        5 & 12 & 13 \\
        \hline
\end{tabular}

|rrr|表示表格有三列,都是右对齐(r代表right),在第一列前面和第三列后面各有一条垂直的表格线。\\把行与行隔开,&把列与列隔开,\hline画一条横线。

参考文献与JabRef的安装使用

LaTeX使用BibTeX处理参考文献,BibTeX需要我们定义“参考文献数据库”,参考文献数据库是一个后缀为.bib的文件,本文所使用的参考文献数据库如下:

% Encoding: UTF-8

@Book{Kline,
  title     = {古今数学思想},
  publisher = {上海科学技术出版社},
  year      = {2002},
  author    = {克莱因},
}

@Book{Shiye,
  title     = {几何的有名定理},
  publisher = {上海科学技术出版社},
  year      = {1986},
  author    = {失野健太郎},
}

@Article{quanjing,
  author  = {曲安京},
  title   = {商高、赵爽与刘徽关于勾股定理的证明},
  journal = {数学传播},
  year    = {1998},
}

@Comment{jabref-meta: databaseType:bibtex;}

你可以复制粘贴到记事本里,然后保存为math.bib。注意这个文件的路径也是相对于当前编辑的.tex文件路*,直接在命令里写成\bibliography{math}表明,math.bib和当前编辑的.tex文件在同一文件夹下。

其实我们大可不必手动输入,有专门的软件JabRef来管理文献数据库,点击这里下载。安装完成后,点击菜单栏file->New BibTeX database,然后点击下图红色椭圆中的加号:

选择你要添加的文献类型,我们添加了两个Book和一个Article,然后就可以输入内容了。这里需要解决一个中文乱码的问题。点击菜单栏Options->Preferences,点击下图红色椭圆处的按钮,把字体换成SimSun,保存即可。

交叉引用

除了参考文献,图表和公式的编号也可以引用。基本的交叉引用命令是\ref,它以标签为参数,得到被引用的编号。标签通过\label命令设置,比如在插图时已经为弦图定义了标签fig:xiantu。在本文中,还为表格和section设置了标签。

其中,对于公式的引用,数学宏包amsmath定义了\eqref命令,专门用于公式的引用,特色是能产生括号。

文章格式

设计页面尺寸可以使用geometry宏包,代码:

\usepackage{geometry}
\geometry{a6paper,centering,scale=0.8}

定义页面使用A6纸大小,版心居中,长宽占页面的0.8倍。

易错点总结

后记

今天学习了《LaTeX入门》的第一章,虽然只有50页,但因为这个小例子的存在,难度不算低,有些地方折腾了好久,但最终得到了和书中一模一样的排版,还是很令人自豪的。我自认为刘海洋教授在本章写的内容我基本看明白了,读者对本章有什么疑问可在评论里留言,我们可以多交流。

上一篇下一篇

猜你喜欢

热点阅读