美文网首页Latex@IT·互联网程序员
LaTeX学习笔记 1 | 一个中文排版例子

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

作者: 纸山 | 来源:发表于2017-01-03 21:24 被阅读3932次
    LaTeX吉祥物

    本文目录

    • 题外话
    • 熟悉LaTeX
      • LaTeX的读音和写法
      • 书中介绍的LaTeX版本会不会过时
      • 再谈LaTeX发行版
    • 一个简单的中文排版例子
    • 关于TeXstudio语法检查的设置
    • 牛刀小试,第一个有模有样的作品
      • 源代码
      • 排版效果
      • 代码拆解
        • 调整TeXstudio的默认编译器为XeLaTeX
        • 基础语法
        • 换行与空格
        • 命令与环境
        • 数学公式
        • 使用图表
        • 参考文献与JabRef的安装使用
        • 交叉引用
        • 文章格式
        • 易错点总结
    • 后记

    题外话

    等了三天,刘海洋教授的《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,修改下图红色椭圆处即可。

    基础语法
    • 以%开头的行是注释,不会对排版效果产生任何影响,只是用来方便阅读源代码。
    • \title{}\author{}\date{\today},顾名思义,声明了标题、作者和写作日期,\today当然是自动生成今日的日期。这只是声明,还需要下面的\maketitle命令使之出现在编译结果中。
    • \begin{document}之前的部分称为导言区,往往用来对文档的性质做一些设置,或自定义一些命令。
    • \bibliographystyle{plain}用来声明参考文献的格式,\bibliography{math}将从同文件夹下的math.bib中获取参考文献信息。
    • \tableofcontents用来输出目录。
    • \zihao命令设置字号,\kaiti设置字体为楷体
    换行与空格
    • 空行分段,单个回车不分段。LaTeX会忽略单个回车、段前的空格和汉字后面的空格,而其他符号后面的空格则会保留。
    • 使用XeLaTeX时,ctexart会调用xeCJK宏包,自动处理汉字与其他符号之间的距离。
    • 为了使源代码更容易阅读,我们可以利用上面两点特性:在合适的位置敲一下回车,不要让一行代码太长;在汉字与其他符号之间加一个空格,使得代码更清晰。
    命令与环境
    • 命令的格式为:以反斜线\开头,后接一串字母表示命令名,参数用花括号括起来,可选参数用方括号。
    • 环境的格式为:\begin{环境名}(环境内容)\end{环境名},故源代码中的document,abstract,myquote,figure,thm,equation,table,tabular都是环境,其中myquote是自定义的环境。
    • 自定义环境:源代码中的\newenvironment{myquote}{\begin{quote}\kaishu\zihao{-5}}{\end{quote}}用来自定义环境,为什么这样写,这还得继续学习才能知晓。
    • 自定义命令:源代码中的\newcommand\degree{^\circ}用来自定义命令,新命令\degree的效用等价于^\circ
    数学公式

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

    • 正文公式:把公式用一对美元符号$$括起来即可,主要用于较短的夹在行文中的公式。
    • 显示公式:使用equation环境,主要用于较长的比较重要的需要引用的公式。
    使用图表

    插图功能:需要使用宏包,在引言区使用\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倍。

    易错点总结
    • 引用图片、文献数据库时注意路径。
    • 命令不要抄错了,很容易把大括号抄成方括号。
    • 刘海洋教授在文中说要编译四次,按四次按钮。TeXstudio貌似不需要,点击一次按钮后,自动编译了四次。
    • 不要试图读完本文就想排出这个效果,最好是通读一下《LaTeX入门》的第一章。

    后记

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

    相关文章

      网友评论

      • 笃行_6c2c:你好,楼主,不知道为什么,我的编译器在第一个测试
        \documentclass[UTF8]{ctexart}
        \begin{document}
        \section{文字}
        特可爱排版。
        \section{数学}
        \[
        a^2+b^2=c^2
        \]
        \end{document}
        也通过不了,您能指点迷津吗
      • 写代码的海怪:支持楼主哦~ 本来也买了这本书,嗯。。。不如看你简书😂
        写代码的海怪:可以的,我的latex还在路上:)
        纸山:@hai_guai 正好我也刚开始,一起来学习吧 :smiley:

      本文标题:LaTeX学习笔记 1 | 一个中文排版例子

      本文链接:https://www.haomeiwen.com/subject/wqbgvttx.html