LaTeX教学1 简介

作者: 无锤乙醇 | 来源:发表于2019-01-15 22:46 被阅读33次

    LaTeX教学

    [TOC]

    1. LaTeX简介

    1.1 LaTeX的历史

    1978年, 斯坦福大学的Donald E. Knuth教授发明了TeX排版系统, 刚刚问世就引起了学界的巨大轰动, 1985年美国数学家与计算机专家Leslie Lamport博士在TeX基础上开发出更便于用户掌握的LaTeX排版系统. 1989年以德国数学加Frank Mitteblach为首组成了LaTeX3项目小组, 负责对LaTeX的维护和开发工作, 并于1994年推出了目前广为使用的LaTeX2e.

    1.2 LaTeX教学

    虽说广为使用, 但是使用人数依旧很少, LaTeX的主要缺点就是起点门槛高, 使很多人望而却步, 但是它排版质量高, 安全稳定等优秀方面很是吸引我们, 所以我今天来讲一下如何使用LaTeX, 算是帮各位入个门, 因为这也是一门语言, 与其他编程语言一样, 都是以实践为主的技能, 所以在我讲完之后也希望各位可以在私下多多实践多多交流, 来实现对语言的更好的掌握.

    学LaTeX首先得配置一下写LaTeX的环境, 个人推荐TeX Live(编译器)+TeXstudio(编辑器)的组合, 分别下载安装就可以了, 也可以在CTEX下载CTeX中文套装.TeXstudio在设置里可以改默认语言, 改为zh-CN即为中文, CTeX套装中的WinEdt编辑器是英文的且有试用期.

    2.2 源文件结构

    重新来看一下我们最开始写的文档

    \documentclass{article}
    \begin{document}
        This is my \emph{first} document prepared in \LaTeX. 
    \end{document}
    

    在这个文档中可以体现出源文件的结构, 所有的LaTeX文档都是以\documentclass{文类}作为开始, 从\documentclass{}\begin{document}之前的所有命令语句统称为导言, 在\begin{document}\end{document}之间的命令语句和文本统称为正文. 命令\end{document}之后的所有字符LaTeX均将其忽略.

    2.2.1 文类

    标准文类

    导言的第一句话, 通常也是LaTeX元文件的第一条命令, 就是文类命令:
    \documentclass[参数1, 参数2,……]{文类}[日期]
    每个LaTeX源文件都必须从这条命令开始, 它通知LaTeX将该论文源文件按照指定文类规定的文档格式进行排版, 这个文类命令必须用在导言的首句, 其中的必要参数用于指定所用文类的名称, 最后一个可选参数日期是选择宏包对应日期的版本, 一般情况下省略. 在英文文档中, 常用的文类有4种

    文类名 用途 特点
    article 短文, 评论, 学术论文 无左右页区分处理, 无chapter结构
    book 专业著作, 学位论文 默认有左右页区分处理, 章起右页
    report 科技,实验报告 默认无左右页区分处理, 章起新页
    beamer 论文陈述幻灯片 提供多种主题样式, 可方便地更换幻灯片整体风格

    在表格中前三种由于广泛应用于论文写作, 因此被称为标准文类.

    可以试一下, 在第一个示例的文类下是无法正常编译中文的, 如果要编译中文, 有两种方式可以选择,

    1. 选择是更换对应文类为ctexart,ctexbook,ctexrep,ctexbeamer, 但是这种方式会根据中文论文的排版习惯改变文档内的显示形式, 在正文结构里会提到, 而且在使用这四种文类的时候, 如果使用的是XeLaTeX或者是LuaLaTeX编译方式, 可以直接使用\documentclass{ctex……}, 这两种编译方式可以自动将文档中的中文识别为UTF8的编码进行编译, 如果使用的是(Pdf)LaTeX, 因为由于历史原因, 这两种编译方式默认编码是GBK, 而CTeX宏集是以默认的编码格式是UTF8, 所以要使用可选参数[UTF8]来将(PDF)LaTeX的编码格式设置为UTF8, 则需要使用\documentclass[UTF8]{ctex……}来设置文类. 因为LaTeX并不会自动识别用户文档所用的编码格式, 所以建议使用者总是加上可选参数[UTF8], 即总是使用\documentclass[UTF8]{ctex……}
    2. 另一种是添加中文支持宏包\usepackage[UTF8]{ctex}, 因为这种方式没有改变文类, 只是增添了适应文字类型, 所以文档内的显示形式不会改变, 而对于可选参数[UTF8]我们同样遵循第一点里说的, 建议总是使用[UTF8]

    关于LaTeX中中文的输出更多内容, 可以在C:\CTEX\MiKTeX\doc\latex\ctex\ctex.pdf(使用MiKTeX)或C:\texlive\2018\texmf-dist\doc\latex\ctex\ctex.pdf(使用TeX Live)查看ctex.pdf文件

    标准文类的选项
    选项 是否默认 说明
    10pt 常规字体尺寸10pt
    11pt 常规字体尺寸10.95pt
    12pt 常规字体尺寸12pt
    a4paper 是(取决于安装TeX系统时设置) 纸张幅面,宽210mm×高297mm
    letterpaper 是(取决于安装TeX系统时设置) 纸张幅面, 宽216mm×高279mm
    a5paper 纸张幅面, 宽148mm×高210mm
    b5paper 纸张幅面, 宽176mm×高250mm

    以上是在设置文类时的可选参数, 上表中提及的选项均可以在所有标准文类中使用.即我们可以使用文类\documentclass[b5paper,11pt]{article}来设置一个用b5纸, 文档正文字体大小为11pt的论文文类.

    2.2.2 宏包

    每个功能强大的命令或环境都是由多个TeX基本命令和LaTeX命令组合而成的, 这种组合命令称为, 存储这些宏的命令文件称为宏包, 其扩展名为.sty.

    宏包的作用是扩展或新增某些排版功能, 相当与C++中的#include<>, 在导言区使用命令
    \usepackage[参数1,参数2,……]{宏包名称}[日期]
    来调用宏包, 调用宏包命令只能在导言区使用, 宏包名称不区分大小写, 通常均为小写, 最后一项可选参数日期与文类命令中的日期作用相同, 通常情况下省略. 虽然LaTeX中的宏包数量上千个, 但是撰写论文常用的只有20多个, 下表列出了他们的名称和用途, 具体如何使用可以在帮助->宏包帮助中输入宏包名称来查看其对应的帮助文档.

    宏包名 用途 宏包名 用途
    amsmath 多种公式环境和数学命令 graphicx 插图处理
    amssymb 数学符号生成命令 hyperref 创建超文本链接和PDF书签
    array 数组和表格制作 ifthen 条件判断
    caption 插图和表格标题格式设置 ctex 中文字体
    ctexcap 中文字体和标题 fancyhdr 页眉页脚设置
    titlesec 章节标题格式设置 titletoc 目录格式设置
    fontspec 字体选择 geometry 版面尺寸设置
    fancyvrb 抄录环境设置

    2.2.3 正文结构

    层次

    对于一篇论文或一本书, 它的结构层次是很重要的, LaTeX为不同的文类提供了不同的章节划分标准.

    \documentclass{book}
    \begin{document}
        \chapter{chapter 1}
        \section{section 1}
        \subsection{subsection 1}
        \subsubsection{subsubsection 1}
        \paragraph{paragraph 1}
        \subparagraph{subparagraph 1}
        This is the full structure of a book.
        \section{section 2}
    \end{document}
    
    book文类
    这是book文类的结构层次, report文类也是如此.而对于article文类, 它没有chapter结构, 其余的完全相同, 而对ctexbook, ctexrepctexart文类, chapter和section结构会居中, 如图
    ctexbookmd.png
    段落与行

    试着在正文中编译以下文字

    This is the first line
    This is also the first line
    !
    .
    

    又发现问题了, 这里和Word里有着明显区别, 编译出来的文件并没有按着想象中的换行, 而是排到了一行, 并且会发现在第一个line后面有一个空格, 即可以理解为一个换行相当于一个空格, 英语中单词和单词之间会有空格, 所以在这个地方用换行当成空格也无可厚非; 但在中文中, 我们汉字和汉字之间并不需要空格, 那换行产生的空格怎么消除呢?别担心, 在为中文准备的ctex系列文类和ctex.sty宏包中, 将这个问题已经处理过了, 看下面的例子

    \documentclass[UTF8]{ctexart}
    \begin{document}
    这个
    好
    very
    好
    !
    .
    good
    \end{document}
    
    ctex换行.png
    可以看出来, ctex……文类在处理换行的时候, 执行以下判定:如果是汉字+汉字, 汉字+标点则取消空格, 如果是英文+英文, 英文+汉字, 英文+标点, 标点+标点则依旧保留空格. 将使用文类改成使用\usepackage[UTF8]{ctex}是一样的效果. 但是如果想取消换行产生的英文空格怎么办呢, 很简单, 在前一行的结尾加一个注释符%, 就像这样
    Hello%
    world
    

    因为注释符%的作用是忽略该注释符和其后的所有文字, 即换行产生的空格也被忽略了, 同时可以知道换行产生的空格是在前一行

    但是问题又出现了, 我们发现在上述条件下, 换行产生的空格是没有了, 同一行中汉字和汉字之间的空格也没有了, 要解决这个问题的话, 调用的宏包或文类中有一个可选参数space中含有三个选项可以让用户选择:

    可选参数 作用
    true 总不省略汉字换行后的空格, 此时用户需要%来取消掉不需要的空格
    false 总省略汉字后的换行空格(使用(PDF)LaTeX编译时); 等同于auto(使用XeLaTeX编译时), 不建议使用此选项
    auto 默认值, 如果汉字后是汉字, 则省略空格, 否则保留

    即如果想让汉字后面的空格一直保留的话, 使用\usepackage[space=true]{ctex}\documentclass[space=true]{ctexart}或者在正文部分使用命令\ctexset{space=true}来使命令后的正文使用对应格式,

    :在正文中使用\ctexset{space=true}时, 这条命令后紧接的汉字与这条命令前的汉字间的空格依旧由这条命令之前的格式来控制, 可以用以下代码实验:

    \documentclass{article}
    \usepackage{ctex}
    \begin{document}
    你好
    朋友
    \ctexset{space=true}
    你好
    朋友
    \end{document}
    

    LaTeX对空格的控制说完了, 可是要是想换行怎么办呢?LaTeX给我们提供了一些方法, 先看下面的例子:

    \documentclass{article}
    \begin{document}
        This is the first line.\\
        This is the second line without indent.
    \end{document}
    

    上面的代码输出了:

    \换行
    可以看出来, \\这个符号会输出一个不带缩进的换行, 如果使用\newline也可以实现这个效果. 如果想输出带缩进的换行, 即新起一段, 可以怎么做呢?当然可以在新的一行前面加上缩进命令\indent, 或者也可以通过一些新的方式, 看下面的例子
    \documentclass{article}
    \begin{document}
        This is the first line.
    
        This is the second line with indent.
    \end{document}
    
    上面代码会输出: 带缩进换行

    同样可以使用段落命令, 例

    \documentclass{article}
    \begin{document}
        This is the first line.\par
        This is the second line with indent.
    \end{document}
    

    上述代码输出效果和两个换行符产生的效果相同.

    :还可以使用\\来生成自定义行距的一行, 命令为\\[<长度>], 例\\[4mm]

    综上所述, 在LaTeX中的一个换行相当于一个空格, 两个反斜杠\\表示新起一行, 与\newline作用相同, 两个换行则新起一段, 与\par产生的效果相同.

    相关文章

      网友评论

        本文标题:LaTeX教学1 简介

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