zoukankan      html  css  js  c++  java
  • Latex介绍

    Latex中各种概念的区分

    目录:

    1 名词理解

    latex(tex)本身其实并不复杂, 复杂的是各种不同的版本 + 中文环境 + 不同的操作系统版本 (尤其是linux下), 这几点加起来, 就让人头晕了. 比如:

    • 各种名词让人头晕: tex, ctex, xetex, latex, xelatex, texlive, texpdf, pdflatex
    • 各种中文字符集, 字体, 乱码, 编译报错问题.

    在这里对一些概念试图加以区分. 对于不太想了解这些细节, 只想快速上手的人, 可以忽略本文直接移步:

    (对于linux的用户, 如果想快速无障碍的上手, 强烈建议安装texlive-full latex-cjk-all这两个包, 这两个包很大, 不过正因如此, 包含的东西比较多, 所以网上与书上找到的各种例子, 基本上都能跑通. 所以这个空间换时间还是比较值得的.)

    但是Mike推荐新手还是大概浏览一下本文, 哪怕有个笼统的印象也好.

    下表来自(http://blog.csdn.net/dbzhang800/article/details/6820659)

    类型名词解释
    引擎 (Knuth)TeX 真正的(原始的)TeX
    引擎 ε-TeX 相对于原始的TeX它提供了一种扩展模式
    引擎 pdfTeX 它从tex文件不通过dvi文件直接生成pdf文件(开发者已经转向LuaTeX)
    引擎 LuaTeX 它使用Lua作为扩展语言, 对于LaTeX支持尚不完善?
    引擎 XeTeX 相对于原始的TeX, 主要增加了Unicode和 OpenType 的支持
    ------- ---------------- ---------------------------------------------------------------
    宏包 plain TeX 最古老的TeX宏包, 提供了一些最基本的命令
    宏包 AMSTeX 是美国数学会提供的一个TeX宏包, 它添加了许多数学符号和数学字体
    宏包 LaTeX 相对于PlainTeX, 它使得科技文档的排版更加直观和方便
    宏包 ConTeXt 和LaTeX 相比, 它更加灵活和自由
    ------- ---------------- ---------------------------------------------------------------
    发行版 TeX Live 国际TeX用户组织TUG开发,支持不同的操作系统
    发行版 MiKTeX Windows 下广泛使用的一个TeX发行版
    发行版 ConTeXt Minimals 它包含了最新版本的 ConTeXt
    发行版 teTeX 一个Unix下的TeX发行版, 现在已经停止更新且并入TeXLive
    发行版 fpTeX 一个Windows的TeX发行版, 已不再更新

    那么, 什么叫引擎, 宏包, 发行版呢?

    打个不太恰当但是比较直观的比方:

    (该列表为Mike个人的理解)

    • Tex就相当于C/C++语言, 规定了基本的关键字, 语法等.
    • 宏包就相当于C/C++各种库和宏函数等, 比如C++提供标准库, 但是有些人觉得不够用, 又开发了boost等库, 这就有点类似PlainTeX与LaTeX的关系.
    • 引擎, 就有点类似于编译器(Mike: 或者有点类似于各种编程框架吧? 目前还不是理解的很清楚).
    • 而发行版, 就有点类似于同是gnu编译器, 但是有Ubuntu下的, 有Fedora下的(额, 这个比方貌似不太恰当, 勉强帮助理解吧).

    2 稍微具体一些的解释

    2.1 PlainTeX(宏包)

    原始的TeX已经有了一组宏包, 也就是Knuth所写的著名的Plain TeX(原始的TeX和Plain Tex都是<<The TeXbook>>一书中介绍的内容).

    2.2 LaTeX(宏包)

    Tex中的一个宏包合, 构成一种与 Plain TeX 不一样的格式. PlainTeX很底层,不够方便, 直观, 于是Leslie Lamport写了另一组宏, 称为LaTeX, 主要是它版本配置和文中内容适度分开处理.

    每一个LaTeX 命令实际上最后都会被转换解释成几个甚至上百个TeX 命令. 但是, 普通用户可以无需知道这中间的复杂联系. 就象编程的时候如果使用一些已经编译 好的函数库和模板可以使我们仅仅用几个命令就实现很多功能一样, LaTeX 根据人们排版文章的习惯, 定义了许多命令和模板, 通过这些命令和模板, 我们可以很快的得到漂亮的排版结果.

    2.3 ctex(宏包)

    ctex宏包提供了一个统一的中文LaTeX文档框架,底层支持CCT, CJK和xeCJK三种中文LaTeX系统.

    • CCT 非常不推荐了
    • CJK 这个? 应该在windows下工作还很不错
    • xeCJK 比较推荐(该推荐来自: http://blog.csdn.net/dbzhang800/article/details/6820659)

    ctex宏包提供了编写中文LaTeX文档常用的一些宏定义和命令.

    主要文件包括ctexart.cls, ctexrep.cls, ctexbook.cls 和 ctex.sty, ctexcap.sty.

    对于CJK与xeCJK的来龙去脉, 可以参考这个讨论: 知乎:如何评价xeCJK

    2.4 pdfTeX(引擎)

    它从tex文件不通过dvi文件直接生成pdf文件(开发者已经转向LuaTeX)

    2.5 LuaTeX(引擎)

    pdfTeX 的后继是LuaTEX, 这是一种把脚本语言 Lua 和 TeX 结合起来的程序.

    2.6 XeTeX(引擎)

    是一种使用Unicode的TeX排版引擎, 并支持一些现代字体技术, 例如 OpenType. 其作者和维护者是Jonathan Kew, 并以X11自由软件许可证发布. 它原生的支持Unicode, 并默认其输入文件为UTF-8编码. XeTeX可以在不进行额外配置的情况下直接使用操作系统中安装的字体, 因此可以直接利用OpenType, Graphite中的高级特性, 例如额外的字形, 花体, 合字, 可变的文本粗细等等.

    2.7 XeLaTeX(引擎)

    是使用LaTeX的排版引擎, 也有上述XeTeX的优点, 命令下直接使用 xelatex ***.tex 就会产生对应的PDF文件.

    2.8 更多解释

    如果想了解更多的来龙去脉, 请参考刘海洋老师的<<LaTeX入门>>中的 "编译程序" 以及 "文字编码与 Unicode" 这两节. 该书作者好像是CTeX的负责人之一, 所以他写的书比较深入浅出, 尤其是对于这种历史沿革性的内容, 比网上找来的信息看着明白多了.

    这里只给出一个简单的参考示意图, 表示他们的发展脉络:

    各种tex关系图

    各种tex关系图

    3 Latex转pdf流程

    原始的方式

           latex         dvips        ps2pdf
    *.tex ------> *.dvi ------> *.ps -------> *.pdf

    dvipdfm(x)方式,少一个.ps 步骤

           latex         dvipdfm
    *.tex ------> *.dvi --------> *.pdf

    pdflatex或xelatex, 直接生成pdf

           pdflatex
    *.tex ---------> *.dvi
  • 相关阅读:
    GridView固定表头
    图片自动适应大小
    GridView实现用"..."代替超长字符串
    使用纯 CSS 设计3D按钮
    Net下二进制形式的文件(图片)的存储与读取
    repeater创建复杂的表头
    GridView加入自动求和求平均值小计
    CSS+DIV(盒子)
    DIV 在 IE 与 FF 下的设置
    gridView分页
  • 原文地址:https://www.cnblogs.com/Tang-YH/p/14320470.html
Copyright © 2011-2022 走看看