精华内容
下载资源
问答
  • 原文 A Survey of Symbolic Execution Techniques 目录 1. 介绍 1.1 例子 1.2 挑战 1.3 相关工作 1.4 文章的组织 2. 符号执行引擎 2.1 混合符号和具体执行 2.2 符号执行的设计原则 2.3 路径选择 2.4 ...

    原文 A Survey of Symbolic Execution Techniques

    目录

     

    1. 介绍

    1.1 例子

    1.2 挑战

    1.3 相关工作

    1.4 文章的组织

    2. 符号执行引擎

    2.1 混合符号和具体执行

    2.2 符号执行的设计原则

    2.3 路径选择

    2.4 回溯符号执行 Symbolic Backward Execution

    3. 内存模型

    3.1 完全符号化内存

    3.2 地址具体化

    3.3 部分内存建模

    3.4 延迟初始化

    4. 与环境和第三方组件的交互

    5. 路径爆炸

    5.1 裁剪不可达路径

    5.2 函数和循环摘要

    5.3 路径归并与等价

    5.4 约束下的符号执行

    5.5 利用预置条件和输入特性

    5.6 状态合并

    5.7 利用程序分析和优化技术

    6. 约束求解

    限制约束。Constraint Reduction.

    重用约束的解。Reuse of Constraint Solutions.

    懒惰约束。Lazy Constraints.

    具体化。Concretization.

    处理不确定的约束。Handling Problematic Constraints.

    7. 更多的研究方向

    7.1 分割逻辑 separation logic (SL)

    7.2 不变量

    7.3 函数摘要Function Summaries

    7.4 程序分析和优化

    7.5 符号计算

    8. 总结

    附录


    1. 介绍

    1.1 例子

    一个状态表示 state (stmt, σ, π)

    stmt   语句

    σ     符号表达式:存储变量的表达式,具体的和符号化的都有

    π     约束关系:执行到该语句需要满足的条件

     

    void foobar(int a, int b) {

        int x = 1, y = 0;

        if (a != 0) {

           y = 3+x;

           if (b == 0)

               x = 2*(a+b);

        }

        assert(x-y != 0);

    }

     

                                                                           符号执行树

    1.2 挑战

    内存:符号执行引擎怎样处理复杂的结构?可能对符号存储数据和符号表达式描述的地址造成风险

    环境和第三方组件:调用库函数…

    状态空间爆炸:比如循环…

    约束求解:SMT(satisfiability modulo theories)求解器可以扩展到数百个变量的复杂约束组合。 然而,诸如非线性算术(比如乘法)之类的构造成为效率的主要障碍。

    对二进制代码的分析:

    1.3 相关工作

    符号执行一直是学术界关注的焦点。截至2017年8月,谷歌学术中找到标题包括“符号执行”一词的有742篇文章。

    其他技术综述:自动测试用例生成

    1.4 文章的组织

     

    2. 符号执行引擎

    在这一节中我们介绍了符号执行的一些重要的设计原则,和执行过程中的关键折衷。从具体化和符号化的概念出发,介绍了混合执行的思想。

    2.1 混合符号和具体执行

                                                                                             混合符号执行

    符号执行理论上可以产生所有可能的控制流路径,实际上这通常是不可能的,特别是在真实的软件环境中。复杂的应用程序通常建立在非常复杂的软件栈之上。一个符号执行引擎静态地分析整个堆栈,在执行过程中准确评估任何可能的副作用是相当具有挑战性的。在这种情况下出现的一些问题,用第1.1节纯粹符号化的方法很难做到这几点:

    1. 对外部库调用的彻底探索可能导致状态的指数爆炸,从而妨碍分析到达感兴趣的代码部分。

    2. 对外部第三方组件的调用可能无法由执行器跟踪。

    3. 符号引擎在分析过程中不断调用SMT求解器。在约束求解中花费的时间是引擎的主要性能障碍之一,程序可能会产生约束,即使是强大的求解器也不能很好地处理。

    解决上述问题并使符号执行在实践中可行的一个基本思想是将具体和象征性的执行混合起来。

    动态符号执行。。。。。。。。。。。。。。。。。。。。。。。。

    有选择的符号执行。。。。。。。。。。。。。。。。。。。。。。

     

    搜索策略:深度优先 generational search

      假阴性(即,错过的路径)和路径偏差是动态符号执行的显着缺点。

     在concolic执行过程中,外部调用,异常,类型转换和符号指针是关键方面,必须由引擎仔细处理以减少路径偏差的数量。

    2.2 符号执行的设计原则

    1. 处理:程序应能在不超过给定资源的情况下进行任意长时间的工作。由于庞大数量的控制流路径,内存消耗是特别关键的问题。

    2. 避免重复工作:不应该重复执行工作,避免为分析可能有共同前置的不同路径,从一开始就多次重启一个程序。

    3. 分析结果重用:以前运行的分析结果应该尽可能地重复使用。特别是,应避免调用昂贵的SMT求解器来求解之前解决过的路径约束。

    2.3 路径选择

    DFS:占用内存更小,受到包含循环和递归调用的路径的阻碍

    BFS:占用内存更大,能快速的遍历早期行为,需要更长时间完成特定路径的探索

    下面是几个启发式搜索:

    最大覆盖率:

    最短距离:与程序中特定点的距离

    buggy-path优先策略:

    loop exhaustion策略:探索访问循环的路径,很多溢出和内存错误由循环引起

    利用FSM(Finite State Machine, 有限状态机): [Zhang et al., 2015]提出了一种动态符号执行的新方法,以自动找到一个满足规则属性的程序路径,即一个可以由FSM表示的属性(例如文件使用或内存安全性)。动态符号执行由FSM引导,以便首先探索最有可能满足属性的执行路径的分支。该方法利用静态和动态分析来计算将被选择用于探索的路径的优先级:在符号执行期间动态地计算当前执行路径已经到达的FSM的状态,并静态分析向后的数据流被用于计算未来状态。如果这两个集合的交集非空,则可能有满足该属性的路径。

    Fitness function:衡量探索路径到达目标测试覆盖的距离,优先考虑可能更接近特定分支的路径。例如目标分支|a-c|==0,路径的接近度被定义为|a-c|,越小越接近。

    2.4 回溯符号执行 Symbolic Backward Execution

    从目标点回溯到程序的入口点。

    SBE和CCBSE中逆向探索的一个关键要求是程序间控制流程图的可用性,需要提供了一个完整的程序控制流程。比如C++中的成员函数的被调用关系,怎么回溯?

    反向收集约束时,可能会出现一些实际的优点(第6章)。

    3. 内存模型

    3.1 完全符号化内存

    3.2 地址具体化

           分析的复杂性爆炸时,很难把指针变量限制到足够小的范围内。给指针变量一个具体的值,是流行的方案。但是会造成分析引擎错过一些路径。

    3.3 部分内存建模

           为了缓解完全符号化的可测性问题(3.1)和具体化后完整性的丢失(3.2)。

           部分内存模型关键点:写总是具体化 ; 读时,如果假定的可能值的连续区间足够小,读就被符号化。

          

           Mayhem、Angr

    3.4 延迟初始化

           针对面向对象的高级语言。变量被首次访问时才初始化。

     

    4. 与环境和第三方组件的交互

           文件系统,环境变量,网络,第三方闭源组件和流行框架 ,符号执行必须考虑周围的整个软件堆栈,包括系统库,内核和驱动程序。

     

    5. 路径爆炸

    5.1 裁剪不可达路径

    5.2 函数和循环摘要

           早期只能通过循环来生成摘要,循环通过向迭代中添加一个固定数量来更新符号变量。而且,它们不能处理嵌套循环或多路径循环,即在其体内具有分支的循环。 Proteus 是一个总结多路径循环的总体框架。它根据路径条件中值变化的模式(即是否更新了一个归纳变量)和循环内路径的交错(即是否有规律性)对循环进行分类。分类利用控制流图的扩展形式,然后用于构建对交织进行建模的自动机。自动机以深度优先的方式遍历,并为其中所有可行的轨迹构建了分离的汇总,其中轨迹表示循环中的执行。分类确定是否可以精确地或近似地捕获一个循环(这仍然是实际相关的)。对具有不规则模式或非归纳更新的多路径循环进行精确的总结,更重要的是对嵌套循环的总结仍然是一个开放的研究问题。

           对控制流程图中循环路径的分析,产生模板,该模板将一部分代码生成的程序状态描述为紧凑符号执行树。 通过利用模板,符号执行引擎可以探索大量减少的程序状态。 这种方法的缺点是可能会显着增加约束求解器的负担。

    5.3 路径归并与等价

           探索相似性路径,丢弃不能导致新发现的路径,在有利的时候将差异抽象出来。

           插值

           无限循环的处理

           后置符号执行

           路径分割 :有些路径等价

    5.4 约束下的符号执行

            受约束的变量与经典的完全约束的符号变量具有相同的语义,除非在可能产生错误的表达式中使用。

            虽然这种技术不够完善,可能会错过错误,但它仍然可以扩展到在更大的程序中找到bug。

    5.5 利用预置条件和输入特性

           预处理符号执行:在初始化时向π添加更多的约束。状态空间变小了,但在每个分支的检测增多了

           循环扩展符号执行[Saxena 2009]

    5.6 状态合并

           例子中利用ite表达式合并状态

           是否需要合并?

           启发式状态合并、动态状态合并

    5.7 利用程序分析和优化技术

           程序分片:这种分析从程序行为的一个子集开始,从程序中提取忠实地表示该行为的最小指令序列

           污点分析

           Fuzzing:和符号执行相互结合

           分支预测:

           类型校验:

           编译器优化:符号执行几个要素:程序优化、搜索启发式、状态合并、约束求解优化。

                  编译器优化对约束生成和路径探索的影响,研究很少,是一个开放性的问题。

          

     

    6. 约束求解

    是否存在一组变量赋值,使問題为可满足。

    确定是否有一个解,使符号化的公式为真。

    Although SAT is a well-known NP-complete problem, recent advances have moved the boundaries for what is intractable when it comes to practical applications.

    虽然SAT(Boolean Satisfiability Problem)是一个著名的NP完全问题,但在实际应用中,最新进展已使难以解决的问题发生了变化。

    观察表明一些问题用更自然的语言来描述比具有逻辑连接词的布尔公式更具表现力。 因此,SMT将SAT问题推广到支持理论,以捕获涉及例如线性算术和阵列上的运算的公式。 SMT求解器将SMT公式中的原子映射到新的布尔变量:SAT决策程序检查重写的公式的可满足性,理论求解器检查由SAT程序生成的模型。

    SMT求解器有几个独特的优势。它们的核心算法是通用的,可以处理许多单独约束的复杂组合。当添加或删除约束时,它们可以逐步工作和回溯,并提供对不一致性的解释。可以以任意方式添加和组合理论,例如,对字符串数组进行推理。决策过程不需要单独进行:通常,它们是结合在一起的,以减少在较重的任务中的时间开销,例如,首先用非线性算术公式求解线性部分。不完整的程序也很有价值:只有在无法给出结论性答案的情况下,完整而昂贵的程序才能被调用。所有这些因素都允许SMT求解器解决没有单个程序可以孤立解决的大问题。

    在符号执行器中,约束求解在检查路径的可行性、生成符号变量的赋值以及验证断言方面起着关键的作用。多年来,符号执行器采用了不同的求解器,这取决于所支持的理论和当时的相对性能。

    然而,尽管过去几年取得了重大的进展 - 这也使符号执行成为现实,但约束求解仍然是符号执行引擎可扩展性的主要障碍之一,也阻碍了在involve expensive theories(例如,非线性算术)或不透明的库调用的约束下的可行性。

    在本节的其余部分中,我们将讨论不同的技术来扩展符号处理所能处理的程序的范围,并优化约束求解的性能。突出的方法包括:(i)降低约束的规模和复杂性,(ii)公开的一些方法,例如,使用约束求解缓存,延迟约束求解器的查询,或具体化,(iii)增加符号执行处理约束问题的决策程序。

    限制约束。Constraint Reduction.

    A common optimization approach followed by both solvers and symbolic executors is to reduce constraints into simpler forms. For example, the expression rewriting optimization can apply classical techniques from optimizing compilers such as constant folding, strength reduction, and simplification of linear expressions.

    求解器和符号执行器共同的优化方法是将约束简化为更简单的形式。例如,表达式重写优化可以应用编译器优化中的经典技术,如常数折叠,强度降低,线性表达式的简化。

    重用约束的解。Reuse of Constraint Solutions.

    The idea of reusing previously computed results to speed up constraint solving can be particularly effective in the setting of a symbolic executor, especially when combined with other techniques such as constraint independence optimization. Most reuse approaches for constraint solving are currently based on semantic or syntactic equivalence of the constraints.

    重用先前计算结果以加快约束求解的思想在符号执行器的设置中尤其有效,特别是在与约束独立优化等技术相结合时。大多数用于约束求解的重用方法目前都是基于语义或语法等价的约束。

    懒惰约束。Lazy Constraints.

    [Ramos and Engler, 2015]采用约束求解查询超时的方法。在他们最初的实验中,作者将大多数超时追踪到符号除法和余数运算,最坏的情况发生在无符号余数运算在分母中具有符号值的情况下。

    因此,他们实现了如下解决方案:当执行器遇到一个涉及大开销的符号操作的分支语句时,它将同时使用真和假分支,并将对开销操作结果的延迟约束添加到路径条件中。当探索到达满足某个目标的状态(例如发现一个错误)时,该算法将检查路径的可行性,并且如果在真实执行中被视为不可达,则抑制该路径。

    具体化。Concretization.

    A concolic executor generates some random input for the program and executes it both concretely and symbolically: a possible value from the concrete execution can be used for a symbolic operand involved in a formula that is inherently hard for the solver, albeit at the cost of possibly sacrificing soundness in the exploration.

    concolic执行为程序生成一些随机的输入,并以具体和象征的方式执行它:当符号执行遇到一个对求解器来说很困难的公式时,具体执行中的一个可能值可以用于这个公式中涉及的一个符号操作数,尽管代价是有可能在探索中牺牲正确性。

    1. void test(int x, int y) {
    2.     if (non_linear(y) == x)
    3.         if (x > y + 10)
    4.             ERROR;
    5. }

     

    1. int non_linear(int v) {
    2.     return (v*v) % 50;
    3. }

    由于存在v*v,不支持非线性的求解器无法计算。举例:concolic执行随机选择出x=3,y=5作为初始输入,这个具体化执行不会进入第3行的语句。但引擎可以重新使用y的值, ay=5计算出ax=25,走到ERROR。值得注意的是:如果y被固定为5,将无法生成新的输入,总是走到ERROR分支,这种情况下,可以重新运行程序,为y选择不同的值,比如y=2计算出x=4,不会走到ERROR分支。

    [P˘as˘areanu et al., 2011] suggests mixed concrete-symbolic solving, which considers all the path constraints collectable over a path before binding one or more symbols to specific concrete values.

    [P˘as˘areanu等人,2011]提出mixed concrete-symbolic solving,它将一个或多个符号绑定到特定的具体值之前,考虑路径上可收集的所有路径约束。

    处理不确定的约束。Handling Problematic Constraints.

    这节主要讲涉及非线性算术和库调用的问题

    [Dinges and Agha, 2014a] proposes a concolic walk algorithm that can tackle control-flow dependencies involving non-linear arithmetic and library calls. The algorithm treats assignments of values to variables as a valuation space: the solutions of the linear constraints define a polytope that can be walked heuristically, while the remaining constraints are assigned with a fitness function measuring how close a valuation point is to matching the constraint. An adaptive search is performed on the polytope as points are picked on it and non-linear constraints evaluated on them. Compared to mixed concrete-symbolic solving [P˘as˘areanu et al., 2011], both techniques seek to avoid blind commitment. However, concolic walk does not rely on the solver for obtaining all the concrete inputs needed to evaluate complex constraints, and implements search heuristics that guide the walk on the polytope towards promising regions.

    [Dinges and Agha, 2014a]提出了一种concolic walk算法,可以处理涉及非线性算术和库调用的控制流依赖。该算法将值的赋值作为估值空间来处理:线性约束的解决方案定义了可以启发式walk的多面体,而其余的约束被赋值为适应度函数,来测量估值点与约束匹配的程度。 在多面体上进行自适应搜索,在其上选取点并对其进行非线性约束评估。 与上一节的mixed concrete-symbolic solving相比,这两种技术都试图避免盲目的折中。 然而,concolic walk并不依赖于求解器来获得评估复杂约束所需的所有具体输入,并且实现了搜索启发式,指导多面体在有前途的区域前进。

    [Dinges and Agha, 2014b] describes symcretic execution, a novel combination of symbolic backward execution (SBE) (Section 2) and forward symbolic execution. The main idea is to divide exploration into two phases. In the first phase, SBE is performed from a target point and a trace is collected for each followed path. If any problematic constraints are met during the backward exploration, the engine marks them as potentially satisfiable by adding a special event to the trace and continues its reversed traversal. Whenever an entry point of the program is reached along any of the followed paths, the second phase starts. The engine concretely evaluates the collected trace, trying to satisfy any constraint marked as problematic during the first phase. This is done using a heuristic search, such as the concolic walk described above. An advantage of symcretic over classic concolic execution is that it can prevent the exploration of some unfeasible paths. For instance, the backward phase may determine that a statement is guarded by an unsatisfiable branch regardless of how the statement is reached, while a traditional concolic executor would detect the unfeasibility on a per-path basis only when the statement is reached, which is unfavourable for statements “deep” in a path.

    [Dinges and Agha,2014b]描述了symcretic execution,后向符号执行SBE和前向符号执行的新颖组合。在第一阶段,从目标点执行SBE,并且为每个后续路径收集轨迹。如果在向后探索过程中遇到任何有问题的约束条件,引擎就会通过向追踪添加一个特殊事件, 将其标记为可能满足的并继续其反向遍历来,只要程序的入口点沿任何后续路径到达,那么就开始第二阶段,引擎具体地评估收集的轨迹,试图满足在第一阶段期间标记约束,这是通过启发式搜索完成的,比如上面描述的concolic walk。与传统的concolic执行相比,一个优点是它可以阻止探索一些不可行的路径。例如,SBE阶段可以确定一个状态是由一个不可满足的分支到达的,而不管这个状态是如何得到的,而一个传统的concolic执行者只有当这个状态被达到时才会根据每个路径检测到不可行性,对于在路径中很“深”的状态这是不利的。

    7. 更多的研究方向

    7.1 分割逻辑 separation logic (SL)

    检查指针程序的内存安全属性是程序验证中的一个主要挑战。

    SL主要思想:二元运算符*被用来把堆分成两部分,其参数分别保存

    A x [n : y] 表示有x指向一个记录,该记录在y的n字段,而A保留堆的其余部分。

    程序状态被建模为一个符号堆Π|Σ:Π是与变量相关的纯谓词的有限集合,而Σ是堆谓词的有限集合。符号堆是使用抽象语义根据程序代码符号执行的SL公式。 通常使用SL规则来支持符号堆的包含,推断哪些堆部分不受语句影响,并确保经由抽象(例如,使用扩展操作符)来终止符号执行。

    7.2 不变量

    Loop invariants play a key role in verifiers that can prove programs correct against their full functional specification.

    循环不变量在验证者证明程序的正确与完整的功能规范中发挥关键作用。

    An invariant is an inductive property that holds when the loop is first entered and is preserved for an arbitrary number of iterations.

    不变量是一个归纳属性,它在第一次进入循环时被保留,并被保存在任意次的迭代中。

    困难:没有该领域专家的人工干预,计算循环不变量很困难。事实上,验证实践的经验表明,与其他规范元素(如方法前置/后置条件)相比,提供循环不变式要困难得多。

    几个研究:

    Termination analysis

    Predicate abstraction

    7.3 函数摘要Function Summaries

    函数摘要(第5.2节)主要用于静态和动态程序分析,尤其是程序验证。

    7.4 程序分析和优化

    我们认为,符号执行可能会从编程语言领域的相关问题的解决方案中获益。例如,在并行计算社区中,诸如循环合并等转换可以通过平滑索引的迭代空间来将嵌套循环重构为单个循环。这样的转换可能会简化符号探索,增强搜索启发式和状态合并策略。

    Loop unfolding 循环展开

    Program synthesis

    7.5 符号计算

    SAT虽然是NP问题,但过去几十年也有一些实际的应用方法。

    In particular, advances in symbolic computation have produced powerful methods such as Gr¨obner bases for solving systems of polynomial constraints, cylindrical algebraic decomposition for real algebraic geometry, and virtual substitution for non-linear real arithmetic formulas [Abraham, 2015].

    特别是符号计算方面的进步已经产生了强大的计算方法,如用于求解多项式约束系统的Gr¨obner基,用于实数代数几何的圆柱代数分解,以及用于非线性实数算式的虚拟替换。

    While SMT solvers are very efficient at combining theories and heuristics when processing complex expressions, they make use of symbolic computation techniques only to a little extent, and their support for non-linear real and integer arithmetic is still in its infancy [Abraham, 2015]. To the best of our knowledge, only Z3 [De Moura and Bjørner, 2008] and SMT-RAT [Corzilius et al., 2015] can reason about them both.

    尽管SMT解算器在处理复杂表达式时非常有效地将理论和启发式算法相结合,但是它们只是在一定程度上利用了符号计算技术,而且它们对非线性实数和整数算术的支持还处于起步阶段[Abraham,2015]。 据我们所知,只有Z3 [De Moura andBjørner,2008]和SMT-RAT [Corzilius et al。,2015]可以推测这两者。

    8. 总结

    在过去的十年中,符号执行技术已经发生了重大变化,导致重大的突破。2016年,DARPA网络大挑战赛主机系统可以检测并修复未知软件中的漏洞,如Angr和Mayhem,赢得$ 2 M的Mayhem也是第一个在DEF CON 24黑客大会上进行Capture-The-Flag比赛的自主软件。

    事件表明,基于符号执行的自动漏洞检测工具可以与人类专家竞争,为未来几十年潜在影响软件可靠性的前所未有的应用铺平道路。

    本次调查讨论了符号执行的一些关键方面和挑战。为了解释符号执行者的基本设计原理和主要的优化技术,我们把注意力集中在整数运算的单线程应用上。多线程程序的符号执行例如[Khurshid et al., 2003, Sen, 2007, Bucur et al., 2011, Farzan et al., 2013, Bergan et al., 2014, Guo et al., 2015],而用于处理浮点数据的程序的技术例如[Meudec, 2001, Botella et al., 2006, Lakhotia et al., 2010, Collingbourne et al., 2011, Barr et al., 2013, Collingbourne et al., 2014, Ramachandran et al., 2015]。

    我们希望这次调查能够帮助非专家把握好符号执行这一令人兴奋的研究领域的重大发明,激发进一步的工作和新的思路。

     

    附录

    工具:

    Symbolic engine

    References

    Project URL (last retrieved: August 2016)

    CUTE

    [Sen et al., 2005]

    DART

    [Godefroid et al., 2005]

    jCUTE

    [Sen and Agha, 2006]

    https://github.com/osl/jcute

    KLEE

    [Cadar et al., 2006, Cadar et al., 2008]

    https://klee.github.io/

    SAGE

    [Godefroid et al., 2008, Elkarablieh et al., 2009]

    BitBlaze

    [Song et al., 2008]

    http://bitblaze.cs.berkeley.edu/

    CREST

    [Burnim and Sen, 2008]

    https://github.com/jburnim/crest

    PEX

    [Tillmann and De Halleux, 2008]

    http://research.microsoft.com/en-us/projects/pex/

    Rubyx

    [Chaudhuri and Foster, 2010]

    Java PathFinder

    [P˘as˘areanu and Rungta, 2010]

    http://babelfish.arc.nasa.gov/trac/jpf

    Otter

    [Reisner et al., 2010]

    https://bitbucket.org/khooyp/otter/

    BAP

    [Brumley et al., 2011]

    https://github.com/BinaryAnalysisPlatform/bap

    Cloud9

    [Bucur et al., 2011]

    http://cloud9.epfl.ch/

    Mayhem

    [Cha et al., 2012]

    SymDroid

    [Jeon et al., 2012]

    S2E

    [Chipounov et al., 2012]

    http://s2e.epfl.ch/

    FuzzBALL

    [Martignoni et al., 2012, Caselden et al., 2013]

    http://bitblaze.cs.berkeley.edu/fuzzball.html

    Jalangi

    [Sen et al., 2013]

    https://github.com/Samsung/jalangi2

    Pathgrind

    [Sharma, 2014]

    https://github.com/codelion/pathgrind

    Kite

    [do Val, 2014]

    http://www.cs.ubc.ca/labs/isd/Projects/Kite

    SymJS

    [Li et al., 2014]

    CIVL

    [Siegel et al., 2015]

    http://vsl.cis.udel.edu/civl/

    KeY

    [Hentschel et al., 2014]

    http://www.key-project.org/

    Angr

    [Shoshitaishvili et al., 2015, Shoshitaishvili et al., 2016]

    http://angr.io/

    Triton

    [Saudel and Salwan, 2015]

    http://triton.quarkslab.com/

    PyExZ3

    [Ball and Daniel, 2015]

    https://github.com/thomasjball/PyExZ3

    JDart

    [Luckow et al., 2016]

    https://github.com/psycopaths/jdart

    CATG

    https://github.com/ksen007/janala2

    PySymEmu

    https://github.com/feliam/pysymemu/

    Miasm

    https://github.com/cea-sec/miasm

     

    展开全文
  • 函数、符号及特殊字符 声调 语法 效果 语法 效果 语法 效果 \bar{x} \acute{\eta} \check{\alpha} \grave{\eta} \breve{a} \ddot{y} \dot{x} \hat{\alpha} \t...

    函数、符号及特殊字符

    声调

    语法效果语法效果语法效果
    \bar{x}\bar{x}\acute{\eta}\acute{\eta}\check{\alpha}\check{\alpha}
    \grave{\eta}\grave{\eta}\breve{a}\breve{a}\ddot{y}\ddot{y}
    \dot{x}\dot{x}\hat{\alpha}\hat{\alpha}\tilde{\iota}\tilde{\iota}

    函数

    语法效果语法效果语法效果
    \sin\theta\sin\!\theta\cos\theta\cos\!\theta\tan\theta\tan\!\theta
    \arcsin\frac{L}{r}\arcsin\frac{L}{r}\arccos\frac{T}{r}\arccos\frac{T}{r}\arctan\frac{L}{T}\arctan\frac{L}{T}
    \sinh g\sinh\!g\cosh h\cosh\!h\tanh i\tanh\!i
    \operatorname{sh}j\operatorname{sh}j\operatorname{argsh}k\operatorname{argsh}k\operatorname{ch}h\operatorname{ch}h
    \operatorname{argch}l\operatorname{argch}l\operatorname{th}i\operatorname{th}i\operatorname{argth}m\operatorname{argth}m
    k'(x)=\lim_{\Delta x\to 0}\frac{k(x)-k(x-\Delta x)}{\Deltax}k'(x)=\lim_{\Delta x\to0}\!\frac{k(x)-k(x-\Delta x)}{\Delta x}\limsup S\limsup S\liminf I\liminf I
    \max H\max\!H\min L\min\!L\inf s\inf s
    \sup t\sup t\exp\!t\exp\!t\ln X\ln\!X
    \lg X\lg\!X\log X\log\!X\log_\alpha X\log_\alpha\!X
    \ker x\ker x\deg x\deg\!x\gcd(T,U,V,W,X)\!\gcd(T,U,V,W,X)
    \Pr x\Pr x\det x\det\!x\hom x\hom x
    \arg x\arg x\dim x\dim x\lim_{t\to n}T\lim_{t\to n}T

    同余

    语法效果语法效果
    \pmod{m}\pmod{m}a \bmod ba \bmod b

    微分

    语法效果 语法效果 语法效果
    \nabla\nabla \partial x\partial x \mathrm{d}x\mathrm{d}x\
    \dot x\dot x \ddot y\ddot y   

    集合

    语法效果 语法效果 语法效果 语法效果 语法效果
    \forall\forall \exists\exists \empty\empty \emptyset\emptyset \varnothing\varnothing
    \in\in \ni\ni \not\in\not\in \notin\notin \subset\subset
    \subseteq\subseteq \supset\supset \supseteq\supseteq \cap\cap \bigcap\bigcap
    \cup\cup \bigcup\bigcup \biguplus\biguplus \sqsubset\sqsubset \sqsubseteq\sqsubseteq
    \sqsupset\sqsupset \sqsupseteq\sqsupseteq \sqcap\sqcap \sqcup\sqcup \bigsqcup\bigsqcup

    逻辑

    语法效果 语法效果 语法效果 语法效果
    pp \land\land \wedge\wedge \bigwedge\bigwedge
    \bar{q} \to p\pagecolor{White} \bar{q} \to p \lor\lor \vee\vee \bigvee\bigvee
    \lnot\lnot \neg q\pagecolor{White} \neg q \setminus\setminus \smallsetminus\pagecolor{White} \smallsetminus

    根号

    语法效果语法效果
    \sqrt{3}\sqrt{3}\sqrt[n]{3}\pagecolor{White}\sqrt[n]{3}

    关系符号

    语法效果
    \Delta ABC\sim\Delta XYZ\Delta ABC\sim\Delta XYZ\!
    \sqrt{3}\approx1.732050808\ldots\sqrt{3}\approx1.732050808\ldots
    \simeq\simeq
    \cong\cong
    \dot=\dot=
    \ggg\ggg
    \gg\gg
    >>\,
    \ge\ge
    \geqq\geqq
    ==\,
    \leq\leq
    \leqq\leqq
    <<\,
    \ll\ll
    \lll\lll
    (x-y)^2\equiv(-x+y)^2\equiv x^2-2xy+y^2(x-y)^2\equiv(-x+y)^2\equiv x^2-2xy+y^2

    \begin{align}

    \because\begin{cases}

    \acute{a}x^2+bx^2+c\gtrless0\gtrless\grave{a}x^2+bx^2+c\\

    \acute{a}>0>\grave{a}

    \end{cases}\\

    \therefore\frac{-b\pm\sqrt{b^2-4\acute{a}c}}{2\acute{a}}{}_\lessgtr^\gtrlessx_\lessgtr^\gtrless\frac{-b\pm\sqrt{b^2-4\grave{a}c}}{2\grave{a}}

    \end{align}

     \begin{align} \because\begin{cases} \acute{a}x^2+bx^2+c\gtrless0\gtrless\grave{a}x^2+bx^2+c\ \acute{a}>0>\grave{a} \end{cases}\ \therefore\frac{-b\pm\sqrt{b^2-4\acute{a}c}}{2\acute{a}}{}_\lessgtr^\gtrless x_\lessgtr^\gtrless\frac{-b\pm\sqrt{b^2-4\grave{a}c}}{2\grave{a}} \end{align}
    x\not\equiv Nx\not\equiv N
    x\ne Ax\ne A
    x\neq Cx\neq C
    t\propto vt\propto v
    \pm\pm
    \mp\mp

    几何符号

    特征语法效果
    菱形\Diamond\Diamond
    正方形\Box\Box
    三角形Delta\Delta\Delta\!
    图型\triangle\triangle
    角名\angle\Alpha\Beta\Gamma\angle\Alpha\Beta\Gamma
    角度\sin\!\frac{\pi}{3}=\sin60^\operatorname{\omicron}=\frac{\sqrt{3}}{2}\sin\!\frac{\pi}{3}=\sin60^\operatorname{\omicron}=\frac{\sqrt{3}}{2}
    垂直\perp\perp

    箭头符号

    语法效果语法效果语法效果
    \leftarrow\leftarrow\gets\gets\rightarrow\rightarrow
    \to\to\leftrightarrow\leftrightarrow\longleftarrow\longleftarrow
    \longrightarrow\longrightarrow\mapsto\mapsto\longmapsto\longmapsto
    \hookrightarrow\hookrightarrow\hookleftarrow\hookleftarrow\nearrow\nearrow
    \searrow\searrow\swarrow\swarrow\nwarrow\nwarrow
    \uparrow\uparrow\downarrow\downarrow\updownarrow\updownarrow
    语法效果语法效果语法效果语法效果
    \rightharpoonup\rightharpoonup\rightharpoondown\rightharpoondown \leftharpoonup\leftharpoonup\leftharpoondown\leftharpoondown
    \upharpoonleft\upharpoonleft\upharpoonright\upharpoonright \downharpoonleft\downharpoonleft\downharpoonright\downharpoonright
    语法效果语法效果语法效果
    \Leftarrow\Leftarrow\Rightarrow\Rightarrow\Leftrightarrow\Leftrightarrow
    \Longleftarrow\Longleftarrow\Longrightarrow\Longrightarrow\Longleftrightarrow (or \iff)\Longleftrightarrow
    \Uparrow\Uparrow\Downarrow\Downarrow\Updownarrow\Updownarrow

    特殊符号

    语法效果语法效果语法效果语法效果语法效果语法效果
    \eth\eth\S\S\P\P\%\%\dagger\dagger\ddagger\ddagger
    \star\star**\ldots\ldots\smile\smile\frown\frown\wr\wr
    语法效果语法效果语法效果
    \oplus\oplus\bigoplus\bigoplus\otimes\otimes
    \bigotimes\bigotimes\times\times\cdot\cdot
    \div\div\circ\circ\bullet\bullet
    \bigodot\bigodot\boxtimes\boxtimes\boxplus\boxplus
    语法效果语法效果语法效果语法效果
    \triangleleft\triangleleft\triangleright\triangleright\infty\infty\bot\bot
    \top\top\vdash\vdash\vDash\vDash\Vdash\Vdash
    \models\models\lVert\lVert\rVert\rVert  
    语法效果语法效果语法效果
    \imath\imath\hbar\hbar\ell\ell
    \mho\mho\Finv\Finv\Re\Re
    \Im\Im\wp\wp\complement\complement
    语法效果语法效果语法效果语法效果
    \diamondsuit\diamondsuit\heartsuit\heartsuit\clubsuit\clubsuit\spadesuit\spadesuit
    \Game\Game\flat\flat\natural\natural\sharp\sharp

    上标、下标及积分

    功能语法效果
    上标a^2\pagecolor{White} a^2
    下标a_2\pagecolor{White} a_2
    组合a^{2+2}\pagecolor{White} a^{2+2}
    a_{i,j}\pagecolor{White} a_{i,j}
    结合上下标x_2^3\pagecolor{White} x_2^3
    前置上下标{}_1^2\!X_3^4\pagecolor{White} {}_1^2\!X_3^4
    导数
    HTML
    x'\pagecolor{White} x'
    导数
    PNG
    x^\prime\pagecolor{White} x^\prime
    导数
    错误
    x\prime\pagecolor{White} x\prime
    导数点\dot{x}\pagecolor{White} \dot{x}
    \ddot{y}\pagecolor{White} \ddot{y}
    向量\vec{c}\pagecolor{White} \vec{c}
    \overleftarrow{a b}\pagecolor{White} \overleftarrow{a b}
    \overrightarrow{c d}\pagecolor{White} \overrightarrow{c d}
    \widehat{e f g}\pagecolor{White} \widehat{e f g}
    上弧
    (注: 正确应该用 \overarc, 但在这里行不通。要用建议的语法作为解决办法)
    \overset{\frown} {AB}\pagecolor{White} \overset{\frown} {AB}
    上划线\overline{h i j}\pagecolor{White} \overline{h i j}
    下划线\underline{k l m}\pagecolor{White} \underline{k l m}
    上括号\overbrace{1+2+\cdots+100}\pagecolor{White} \overbrace{1+2+\cdots+100}
    \begin{matrix} 5050 \\ \overbrace{ 1+2+\cdots+100 }\end{matrix}\pagecolor{White} \begin{matrix} 5050 \\ \overbrace{ 1+2+\cdots+100 } \end{matrix}
    下括号\underbrace{a+b+\cdots+z}\pagecolor{White} \underbrace{a+b+\cdots+z}
    \begin{matrix} \underbrace{ a+b+\cdots+z } \\ 26\end{matrix}\pagecolor{White} \begin{matrix} \underbrace{ a+b+\cdots+z } \\ 26 \end{matrix}
    求和\sum_{k=1}^N k^2\pagecolor{White} \sum_{k=1}^N k^2
    \begin{matrix} \sum_{k=1}^N k^2 \end{matrix}\pagecolor{White} \begin{matrix} \sum_{k=1}^N k^2 \end{matrix}
    求积\prod_{i=1}^N x_i\pagecolor{White} \prod_{i=1}^N x_i
    \begin{matrix} \prod_{i=1}^N x_i \end{matrix}\pagecolor{White} \begin{matrix} \prod_{i=1}^N x_i \end{matrix}
    上积\coprod_{i=1}^N x_i\pagecolor{White} \coprod_{i=1}^N x_i
    \begin{matrix} \coprod_{i=1}^N x_i\end{matrix}\pagecolor{White} \begin{matrix} \coprod_{i=1}^N x_i \end{matrix}
    极限\lim_{n \to \infty}x_n\pagecolor{White} \lim_{n \to \infty}x_n
    \begin{matrix} \lim_{n \to \infty}x_n\end{matrix}\pagecolor{White} \begin{matrix} \lim_{n \to \infty}x_n \end{matrix}
    积分\int_{-N}^{N} e^x\, dx\pagecolor{White} \int_{-N}^{N} e^x\, dx
    \begin{matrix} \int_{-N}^{N} e^x\, dx\end{matrix}\pagecolor{White} \begin{matrix} \int_{-N}^{N} e^x\, dx \end{matrix}
    双重积分\iint_{D}^{W} \, dx\,dy\pagecolor{White} \iint_{D}^{W} \, dx\,dy
    三重积分\iiint_{E}^{V} \, dx\,dy\,dz\pagecolor{White} \iiint_{E}^{V} \, dx\,dy\,dz
    四重积分\iiiint_{F}^{U} \, dx\,dy\,dz\,dt\pagecolor{White} \iiiint_{F}^{U} \, dx\,dy\,dz\,dt
    闭合的曲线曲面积分\oint_{C} x^3\, dx + 4y^2\, dy\pagecolor{White} \oint_{C} x^3\, dx + 4y^2\, dy
    交集\bigcap_1^{n} p\pagecolor{White} \bigcap_1^{n} p
    并集\bigcup_1^{k} p\pagecolor{White} \bigcup_1^{k} p

    分数矩阵和多行列式

    功能语法效果
    分数\frac{2}{4}=0.5\frac{2}{4}=0.5
    小型分数\tfrac{2}{4} = 0.5\tfrac{2}{4} = 0.5
    大型分数(嵌套)\cfrac{2}{c + \cfrac{2}{d + \cfrac{2}{4}}} =a\cfrac{2}{c + \cfrac{2}{d + \cfrac{2}{4}}} = a
    大型分数(不嵌套)\dfrac{2}{4} = 0.5 \qquad \dfrac{2}{c + \dfrac{2}{d +\dfrac{2}{4}}} = a\dfrac{2}{4} = 0.5 \qquad \dfrac{2}{c + \dfrac{2}{d + \dfrac{2}{4}}} = a
    二项式系数\dbinom{n}{r}=\binom{n}{n-r}=C^n_r=C^n_{n-r}\dbinom{n}{r}=\binom{n}{n-r}=C^n_r=C^n_{n-r}
    小型二项式系数\tbinom{n}{r}=\tbinom{n}{n-r}=C^n_r=C^n_{n-r}\tbinom{n}{r}=\tbinom{n}{n-r}=C^n_r=C^n_{n-r}
    大型二项式系数\binom{n}{r}=\dbinom{n}{n-r}=C^n_r=C^n_{n-r}\binom{n}{r}=\dbinom{n}{n-r}=C^n_r=C^n_{n-r}
    矩阵
    \begin{matrix}
    x & y \\
    z & v
    \end{matrix}
    
    \begin{matrix} x & y \\ z & v \end{matrix}
    \begin{vmatrix}
    x & y \\
    z & v
    \end{vmatrix}
    
    \begin{vmatrix} x & y \\ z & v \end{vmatrix}
    \begin{Vmatrix}
    x & y \\
    z & v
    \end{Vmatrix}
    
    \begin{Vmatrix} x & y \\ z & v \end{Vmatrix}
    \begin{bmatrix}
    0      & \cdots & 0      \\
    \vdots & \ddots & \vdots \\
    0      & \cdots & 0
    \end{bmatrix}
    
    \begin{bmatrix} 0 & \cdots & 0 \\ \vdots & \ddots & \vdots \\ 0 & \cdots & 0\end{bmatrix}
    \begin{Bmatrix}
    x & y \\
    z & v
    \end{Bmatrix}
    
    \begin{Bmatrix} x & y \\ z & v \end{Bmatrix}
    \begin{pmatrix}
    x & y \\
    z & v
    \end{pmatrix}
    
    \begin{pmatrix} x & y \\ z & v \end{pmatrix}
    \bigl( \begin{smallmatrix}
    a&b\\ c&d
    \end{smallmatrix} \bigr)
    
     \bigl( \begin{smallmatrix} a&b\\ c&d \end{smallmatrix} \bigr)
    条件定义
    f(n) =
    \begin{cases} 
    n/2,  & \mbox{if }n\mbox{ is even} \\
    3n+1, & \mbox{if }n\mbox{ is odd}
    \end{cases}
    
    f(n) = \begin{cases} n/2, & \mbox{if }n\mbox{ is even} \ 3n+1, & \mbox{if }n\mbox{ is odd} \end{cases}
    多行等式
    \begin{align}
    f(x) & = (m+n)^2 \\
    & = m^2+2mn+n^2 \\
    \end{align}
    
     \begin{align} f(x) & = (m+n)^2 \ & = m^2+2mn+n^2 \ \end{align}
    \begin{alignat}{2}
    f(x) & = (m-n)^2 \\
    f(x) & = (-m+n)^2 \\
    & = m^2-2mn+n^2 \\
    \end{alignat}
    
     \begin{alignat}{2} f(x) & = (m-n)^2 \ f(x) & = (-m+n)^2 \ & = m^2-2mn+n^2 \ \end{alignat}
    多行等式(左对齐)
    \begin{array}{lcl}
    z        & = & a \\
    f(x,y,z) & = & x + y + z 
    \end{array}
    
    \begin{array}{lcl} z & = & a \ f(x,y,z) & = & x + y + z \end{array}
    多行等式(右对齐)
    \begin{array}{lcr}
    z        & = & a \\
    f(x,y,z) & = & x + y + z    
    \end{array}
    
    \begin{array}{lcr} z & = & a \ f(x,y,z) & = & x + y + z \end{array}
    长公式换行
    <math>f(x) \,\!</math>
    <math>= \sum_{n=0}^\infty a_n x^n </math>
    <math>= a_0+a_1x+a_2x^2+\cdots</math>
    

    f(x) \,\!= \sum_{n=0}^\infty a_n x^n = a_0 +a_1x+a_2x^2+\cdots

    方程组
    \begin{cases}
    3x + 5y +  z \\
    7x - 2y + 4z \\
    -6x + 3y + 2z
    \end{cases}
    
    \begin{cases} 3x + 5y + z \\ 7x - 2y + 4z \\ -6x + 3y + 2z \end{cases} 数组
    \begin{array}{|c|c||c|} a & b & S \\
    \hline
    0&0&1\\
    0&1&1\\
    1&0&1\\
    1&1&0\\
    \end{array}
    
     \begin{array}{|c|c||c|} a & b & S \ \hline 0&0&1\ 0&1&1\ 1&0&1\ 1&1&0\ \end{array}

    字体

    希腊字母

    斜体小写希腊字母一般用于在方程中显示变量。

    正体希腊字母
    特征语法效果注释/外部链接
    大写字母
    \Alpha \Beta \Gamma \Delta \Epsilon \Zeta \Eta\Theta\Alpha\Beta\Gamma\Delta\Epsilon\Zeta\Eta\Theta\!
    Α Β  Γ  Δ Ε  Ζ  Η Θ
    \Iota \Kappa \Lambda \Mu \Nu \Xi \Omicron \Pi\Iota\Kappa\Lambda\Mu\Nu\Xi\Omicron\Pi\!
    Ι Κ  Λ  Μ Ν  Ξ  Ο Π
    \Rho \Sigma \Tau \Upsilon \Phi \Chi \Psi\Omega\Rho\Sigma\Tau\Upsilon\Phi\Chi\Psi\Omega\!
    Ρ Σ  Τ  Υ Φ  Χ  Ψ Ω
    小写字母
    \alpha \beta \gamma \delta \epsilon \zeta \eta\theta\alpha\beta\gamma\delta\epsilon\zeta\eta\theta\! 
    \iota \kappa\varkappa \lambda \mu \nu \xi \omicron\pi\iota\kappa\varkappa\lambda\mu\nu\xi\omicron\pi\! 
    \rho \sigma \tau \upsilon \phi \chi \psi\omega\rho\sigma\tau\upsilon\phi\chi\psi\omega\! 
    异体字母
    \Epsilon\epsilon\varepsilon\Epsilon\epsilon\varepsilon 
    \Theta\theta\vartheta\Theta\theta\vartheta 
    \Kappa\kappa\varkappa\Kappa\kappa\varkappa 
    \Pi\pi\varpi\Pi\pi\varpi 
    \Rho\rho\varrho\Rho\rho\varrho 
    \Sigma\sigma\varsigma\Sigma\sigma\varsigma 
    \Phi\phi\varphi\Phi\phi\varphi\, 
    已停用字母
    \digamma\digamma
    Ϝ [1]
    粗体希腊字母
    特征语法效果
    大写字母
    \boldsymbol{\Alpha \Beta \Gamma \Delta \Epsilon \Zeta\Eta \Theta}\boldsymbol{\Alpha\Beta\Gamma\Delta\Epsilon\Zeta\Eta\Theta}
    \boldsymbol{\Iota \Kappa \Lambda \Mu \Nu \Xi \Omicron\Pi}\boldsymbol{\Iota\Kappa\Lambda\Mu\Nu\Xi\Omicron\Pi}
    \boldsymbol{\Rho \Sigma \Tau \Upsilon \Phi \Chi \Psi\Omega}\boldsymbol{\Rho\Sigma\Tau\Upsilon\Phi\Chi\Psi\Omega}
    小写字母
    \boldsymbol{\alpha \beta \gamma \delta \epsilon \zeta\eta \theta}\boldsymbol{\alpha\beta\gamma\delta\epsilon\zeta\eta\theta}
    \boldsymbol{\iota \kappa \lambda \mu \nu \xi \omicron\pi}\boldsymbol{\iota\kappa\lambda\mu\nu\xi\omicron\pi}
    \boldsymbol{\rho \sigma \tau \upsilon \phi \chi \psi\omega}\boldsymbol{\rho\sigma\tau\upsilon\phi\chi\psi\omega}
    异体字母
    \boldsymbol{\Epsilon\epsilon\varepsilon}\boldsymbol{\Epsilon\epsilon\varepsilon}
    \boldsymbol{\Theta\theta\vartheta}\boldsymbol{\Theta\theta\vartheta}
    \boldsymbol{\Kappa\kappa\varkappa}\boldsymbol{\Kappa\kappa\varkappa}
    \boldsymbol{\Pi\pi\varpi}\boldsymbol{\Pi\pi\varpi}
    \boldsymbol{\Rho\rho\varrho}\boldsymbol{\Rho\rho\varrho}
    \boldsymbol{\Sigma\sigma\varsigma}\boldsymbol{\Sigma\sigma\varsigma}
    \boldsymbol{\Phi\phi\varphi}\boldsymbol{\Phi\phi\varphi}
    已停用字母
    \boldsymbol{\digamma} 

    黑板粗体

    语法
    \mathbb{ABCDEFGHIJKLMNOPQRSTUVWXYZ}
    效果
    \pagecolor{White}\mathbb{ABCDEFGHIJKLMNOPQRSTUVWXYZ}

    黑板粗体(Blackboardbold)一般用于表示数学和物理学中的向量或集合的符号。 备注:

    1. \{ \,花括号\} \,中只有使用大写拉丁字母才能正常显示,使用小写字母或数字会得到其他符号。

    正粗体

    语法
    \mathbf{012…abc…ABC…}
    效果
    \pagecolor{White}\mathbf{0 \ 1 \ 2 \ 3 \ 4 \ 5 \ 6 \ 7 \ 8 \ 9}
    \pagecolor{White}\mathbf{a \ b \ c \ d \ e \ f \ g \ h \ i \ j \ k \ l \ m \ n \ o \ p \ q \ r \ s \ t \ u \ v \ w \ x \ y \ z}
    \pagecolor{White}\mathbf{A \ B \ C \ D \ E \ F \ G \ H \ I \ J \ K \ L \ M \ N \ O \ P \ Q \ R \ S \ T \ U \ V \ W \ X \ Y \ Z}
    备注
    花括号{}内只能使用拉丁字母和数字,不能使用希腊字母如\alpha等。斜粗体
    语法
    \boldsymbol{012…abc…ABC…\alpha \beta\gamma…}
    效果
    \pagecolor{White}\boldsymbol{0 \ 1 \ 2 \ 3 \ 4 \ 5 \ 6 \ 7 \ 8 \ 9}
    \pagecolor{White}\boldsymbol{a \ b \ c \ d \ e \ f \ g \ h \ i \ j \ k \ l \ m \ n \ o \ p \ q \ r \ s \ t \ u \ v \ w \ x \ y \ z}
    \pagecolor{White}\boldsymbol{A \ B \ C \ D \ E \ F \ G \ H \ I \ J \ K \ L \ M \ N \ O \ P \ Q \ R \ S \ T \ U \ V \ W \ X \ Y \ Z}
    \pagecolor{White}\boldsymbol{\alpha \ \beta \ \gamma \ \delta \ \epsilon \ \zeta \ \eta \ \theta \ \iota \ \kappa \ \lambda \ \mu \ \nu \ \xi \ o \ \pi \ \rho \ \sigma \ \tau \ \upsilon \ \phi \ \chi \ \psi \ \omega}
    备注
    使用 \boldsymbol{}可以加粗所有合法的符号。

    斜体数字

    语法
    \mathit{0123456789}
    效果
    \mathit{0123456789}\!

    罗马体

    语法
    \mathrm{012…abc…ABC…}\mbox{}\operatorname{}
    效果
    \mathrm{0123456789}\
    \mathrm{ABCDEFGHIJKLMNOPQRSTUVWXYZ}\
    \mathrm{abcdefghijklmnopqrstuvwxyz}\
    备注
    罗马体可以使用数字和 拉丁字母

    哥特体

    语法
    \mathfrak{012…abc…ABC…}
    效果
    \pagecolor{White} \mathfrak{0 \ 1 \ 2 \ 3 \ 4 \ 5 \ 6 \ 7 \ 8 \ 9}
    \pagecolor{White} \mathfrak{a \ b \ c \ d \ e \ f \ g \ h \ i \ j \ k \ l \ m \ n \ o \ p \ q \ r \ s \ t \ u \ v \ w \ x \ y \ z}
    \pagecolor{White} \mathfrak{A \ B \ C \ D \ E \ F \ G \ H \ I \ J \ K \ L \ M \ N \ O \ P \ Q \ R \ S \ T \ U \ V \ W \ X \ Y \ Z}
    备注
    哥特体可以使用数字和拉丁字母。

    手写体

    语法
    \mathcal{ABC…}
    效果
    \mathcal{ABCDEFGHIJKLMNOPSTUVWXYZ}
    备注
    手写体仅对大写拉丁字母有效。

    希伯来字母

    语法
    \aleph\beth\gimel\daleth
    效果
    \aleph\beth\gimel\daleth

    括号

    功能语法显示
    不好看( \frac{1}{2} )( \frac{1}{2} )
    好看了\left( \frac{1}{2} \right)\left ( \frac{1}{2} \right )

    您可以使用 \left 和 \right 来显示不同的括号:

    功能语法显示
    圆括号,小括号\left( \frac{a}{b} \right)\left( \frac{a}{b} \right)
    方括号,中括号\left[ \frac{a}{b} \right]\left[ \frac{a}{b} \right]
    花括号,大括号\left\{ \frac{a}{b} \right\}\left\{ \frac{a}{b} \right\}
    角括号\left \langle \frac{a}{b} \right \rangle\left\langle \frac{a}{b} \right \rangle
    单竖线,绝对值\left| \frac{a}{b} \right|\left| \frac{a}{b} \right|
    双竖线,范\left \| \frac{a}{b} \right \|\left \| \frac{a}{b} \right \|
    取整函数
    (Floor function)
    \left \lfloor \frac{a}{b} \right \rfloor\left \lfloor \frac{a}{b} \right \rfloor
    取顶函数
    (Ceiling function)
    \left \lceil \frac{c}{d} \right \rceil\left \lceil \frac{c}{d} \right \rceil
    斜线与反斜线\left / \frac{a}{b} \right \backslash\left / \frac{a}{b} \right \backslash
    上下箭头\left \uparrow \frac{a}{b} \right \downarrow\pagecolor{White}\left \uparrow \frac{a}{b} \right \downarrow
    \left \Uparrow \frac{a}{b} \right \Downarrow\pagecolor{White}\left \Uparrow \frac{a}{b} \right \Downarrow
    \left \updownarrow \frac{a}{b} \right\Updownarrow\pagecolor{White}\left \updownarrow \frac{a}{b} \right \Updownarrow
    混合括号\left [ 0,1 \right )
    \left \langle \psi \right |
    \left [ 0,1 \right )
    \left \langle \psi \right |
    单左括号\left \{ \frac{a}{b} \right .\left \{ \frac{a}{b} \right .
    单右括号\left . \frac{a}{b} \right \}\left . \frac{a}{b} \right \}

    备注:

    • 可以使用 \big, \Big, \bigg, \Bigg 控制括号的大小,比如代码
    \Bigg ( \bigg [ \Big \{\big\langle \left | \| \frac{a}{b} \| \right | \big \rangle\Big\}\bigg ] \Bigg )

     显示︰

    \pagecolor{White}\Bigg ( \bigg [ \Big \{ \big \langle \left | \| x \| \right | \big \rangle \Big \} \bigg ] \Bigg )

    空格

    注意TEX能够自动处理大多数的空格,但是您有时候需要自己来控制。

    功能语法显示宽度
    2个quad空格\alpha\qquad\beta\alpha\qquad\beta2m\
    quad空格\alpha\quad\beta\alpha\quad\betam\
    大空格\alpha\ \beta\alpha\ \beta\frac{m}{3}
    中等空格\alpha\;\beta\alpha\;\beta\frac{2m}{7}
    小空格\alpha\,\beta\alpha\,\beta\frac{m}{6}
    没有空格\alpha\beta\alpha\beta\ 0\
    紧贴\alpha\!\beta\alpha\!\beta-\frac{m}{6}

    颜色

    语法
    • 字体颜色︰{\color{色调}表达式}
    • 背景颜色︰{\pagecolor{色调}表达式}
    支援色调表
    Colors supported
    \color{Apricot}\text{Apricot}\color{Aquamarine}\text{Aquamarine}\color{Bittersweet}\text{Bittersweet}\color{Black}\text{Black}
    \color{Blue}\text{Blue}\color{BlueGreen}\text{BlueGreen}\color{BlueViolet}\text{BlueViolet}\color{BrickRed}\text{BrickRed}
    \color{Brown}\text{Brown}\color{BurntOrange}\text{BurntOrange}\color{CadetBlue}\text{CadetBlue}\color{CarnationPink}\text{CarnationPink}
    \color{Cerulean}\text{Cerulean}\color{CornflowerBlue}\text{CornflowerBlue}\color{Cyan}\text{Cyan}\color{Dandelion}\text{Dandelion}
    \color{DarkOrchid}\text{DarkOrchid}\color{Emerald}\text{Emerald}\color{ForestGreen}\text{ForestGreen}\color{Fuchsia}\text{Fuchsia}
    \color{Goldenrod}\text{Goldenrod}\color{Gray}\text{Gray}\color{Green}\text{Green}\pagecolor{Gray}\color{GreenYellow}\text{GreenYellow}
    \color{JungleGreen}\text{JungleGreen}\color{Lavender}\text{Lavender}\color{LimeGreen}\text{LimeGreen}\color{Magenta}\text{Magenta}
    \color{Mahogany}\text{Mahogany}\color{Maroon}\text{Maroon}\color{Melon}\text{Melon}\color{MidnightBlue}\text{MidnightBlue}
    \color{Mulberry}\text{Mulberry}\color{NavyBlue}\text{NavyBlue}\color{OliveGreen}\text{OliveGreen}\color{Orange}\text{Orange}
    \color{OrangeRed}\text{OrangeRed}\color{Orchid}\text{Orchid}\color{Peach}\text{Peach}\color{Periwinkle}\text{Periwinkle}
    \color{PineGreen}\text{PineGreen}\color{Plum}\text{Plum}\color{ProcessBlue}\text{ProcessBlue}\color{Purple}\text{Purple}
    \color{RawSienna}\text{RawSienna}\color{Red}\text{Red}\color{RedOrange}\text{RedOrange}\color{RedViolet}\text{RedViolet}
    \color{Rhodamine}\text{Rhodamine}\color{RoyalBlue}\text{RoyalBlue}\color{RoyalPurple}\text{RoyalPurple}\color{RubineRed}\text{RubineRed}
    \color{Salmon}\text{Salmon}\color{SeaGreen}\text{SeaGreen}\color{Sepia}\text{Sepia}\color{SkyBlue}\text{SkyBlue}
    \pagecolor{Gray}\color{SpringGreen}\text{SpringGreen}\color{Tan}\text{Tan}\color{TealBlue}\text{TealBlue}\color{Thistle}\text{Thistle}
    \color{Turquoise}\text{Turquoise}\color{Violet}\text{Violet}\color{VioletRed}\text{VioletRed}\pagecolor{Black}\color{White}\text{White}
    \color{WildStrawberry}\text{WildStrawberry}\pagecolor{Gray}\color{Yellow}\text{Yellow}\color{YellowGreen}\text{YellowGreen}\color{YellowOrange}\text{YellowOrange}

    注︰输入时第一个字母必需以大写输入,如\color{OliveGreen}

    例子
    • {\color{Blue}x^2}+{\color{Brown}2x} -{\color{OliveGreen}1}
    \pagecolor{White} {\color{Blue}x^2}+{\color{Brown}2x} - {\color{OliveGreen}1}
    • x_{\color{Maroon}1,2}=\frac{-b\pm\sqrt{{\color{Maroon}b^2-4ac}}}{2a}
    \pagecolor{White} x_{\color{Maroon}1,2}=\frac{-b\pm\sqrt{​{\color{Maroon}b^2-4ac}}}{2a}


    小型数学公式

    当要把分数等公式放进文字中的时候,我们需要使用小型的数学公式。

    苹果原产于欧洲和中亚细亚。哈萨克的阿拉木图与新疆阿力麻里有苹果城的美誉。中国古代的林檎、柰、花红等水果被认为是中国土生苹果品种或与苹果相似的水果。苹果在中国的栽培记录可以追溯至西汉时期,汉武帝时,10的 f(x)=5+\frac{1}{5} 是2。上林苑中曾栽培林檎和柰,当时多用于薰香衣裳等,亦有置于床头当香熏或置于衣服初作为香囊,总之一般不食用。但也有看法认为,林檎和柰是现在的沙果,曾被误认为苹果,真正意义上的苹果是元朝时期从中亚地区传入中国,当时只有在宫廷才可享用。
    • ✗并不好看。
    苹果原产于欧洲和中亚细亚。哈萨克的阿拉木图与新疆阿力麻里有苹果城的美誉。中国古代的林檎、柰、花红等水果被认为是中国土生苹果品种或与苹果相似的水果。苹果在中国的栽培记录可以追溯至西汉时期,汉武帝时,10的 \begin{smallmatrix} f(x)=5+\frac{1}{5} \end{smallmatrix}  是2。上林苑中曾栽培林檎和柰,当时多用于薰香衣裳等,亦有置于床头当香熏或置于衣服初作为香囊,总之一般不食用。但也有看法认为,林檎和柰是现在的沙果,曾被误认为苹果,真正意义上的苹果是元朝时期从中亚地区传入中国,当时只有在宫廷才可享用。
    • ✓好看些了。

    可以使用

       \begin{smallmatrix}...\end{smallmatrix}
    

    或直接使用{{Smallmath}}模板。

       {{Smallmath|f=  f(x)=5+\frac{1}{5} }}
    

    强制使用PNG

    假设我们现在需要一个PNG图的数学公式。
    若输入 2x=1 的话︰

    2x=1

       这并不是我们想要的。

    若你需要强制输出一个PNG图的数学公式的话,你可于公式的最后加上\,(小空格,但于公式的最后是不会显示出来)。

    输入  2x=1 \,的话︰
    2x=1 \,

       以PNG图输出。

    你也可以使用 \,\!,这个亦能强制使用PNG图像。

      阅读更多︰Help:Displayinga formula#Forced PNG rendering



    |TeX各版本概述及基本约定,特殊字符| 
    +---------------------------------+ 
     
    tex提供300多条基本排版命令 
    由D.E.Knuth1978年开发 
    plain tex:在tex基础上新定义600多条复合命令 
    AMS-TEX:美国数学会开发(amsmath宏包)排版的数学公式 
    LATEX:L.Lamport(1985)编写,适合排版普通文章和书籍 
    LATEX2e:可加载amsmath宏包,目前最流行的TEX宏包 
    版本:LATEX2.09-->LATEX2e-->LATEX3(开发中) 
    中文排版: 
    CCT:科学院张林波 
    TY(天元):华师大肖刚、陈志杰教授开发 
    CJK:德国W.Lemberg开发,处理中日韩三国文字。 
    发行版CTEX:集成了CCT,TY,CJK的MikTEX系统。 
    ChinaTEX:内容涵盖MiKTeX系统及中文支持、常用外围软件、TeX\LaTeX文档和模板选萃等 
     
    TeX中的长度 
    mm毫米 
    cm厘米 
    in英寸=2.54cm=72.27pt 
    pt点 
    em大写字母M的宽度 
    ex小写字母x的高度 
     
    弹性长度:根据需要自动伸缩 
    正常值plus伸展值minus收缩值 
    实际长度可超过正常值和伸展值之和,但不能小于正常值和收缩值之差 
     
    \documentclass[11pt]{article}%11pt字体,普通文章 
    %导言区,全局命令 
    \usepackage{CJK}%使用CJK宏包 
    \begin{document}%主环境 
    \begin{CJK}{GBK}{song}%汉字必须放入CJK环境 
    %其它字体:song,kai,fs,hei,li,you 
    %CJK的两种环境CJK和CJK* 
    %GBK是采用的字符集:GB,GBK,Bg5,Gbt 
    Hi,This is my first \LaTeX file 
    祝贺你,MikTex和CJK安装成功了 
    \end{CJK} 
    \ent{document} 
     
    CJK和CJK*环境之间的切换 
    \CJKspace和\CJKnospace 
     
     
    \CJKtilde 重新定义~的长度 
     
     
    基本约定 
    分组{......} 
    注释符:% 
    西文标点后要加空格 
    各种环境的开始和结束命令最好独占一行 
    换行:连续两个回车,一个仅为空格 
     
     
    输入特殊字符 
    前加\的有:#$%{}~_^& 
    \=\textbackslash 
    |,<,>=$|$,$<$,$>$,$*$(中间星) 
    *=*上面星 
    特殊符号\s \p \dag \ddag \copyrigh版权号,\pounds 磅 
     
    \TeX \LaTeX \LaTeXe \AmS-\LaTeX(最后这个要amsmath宏包) 
     
    单引号:`'(1键前面的) 
    双引号:``" 
     
    +------------------------------+ 
    |段落、行距、水平间距、缩进命令| 
    +------------------------------+ 
     
     
    强制分行:\\或\\*[和下行间距离]、\newline 
    建议分行:\linebreak[0-4,数越大建议力度越大] 
    \linebreak增加字间距,强制换行 
    \nolinebreak[n]建议不分行 
    \mbox{内容}内容保持在同一行 
     
    分段:\par,或两个回车 
    分页:自动分页 
    强制分页:\newpage 
    建议分页:\pagebreak[n],\nopagebreak[n] 
     
    增加当前页高度有时可以避免难看的分页 
    \enlargethispage{尺寸}可增加的最大高度 
    \enlargethispage*{尺寸}指定增加高度 
     
    水平间距: 
    \quad 插入空白相当于当前字体大小 
    \qquad=\quad×2 
    \ ,=\quad×3/18 
    ~=???好象比\ 小 
    \hspace{宽度大小},\hspace*{宽度大小} 
    \hfill弹性长度:hspace{\hfill}插入空白,撑满整行 
    \hphantom{文本内容},占据文本内容的宽度 
    \vphantom[文本内容},\phantom{文本内容} 
     
    导引线:\dotfill,\hrulefill 
     
    垂直间距: 
    \vspace{高度}和\vspace*{高度} 
    \vfill:相当于\vspace{\fill} 
    \smallskip:-->\vspace{\smallskipamount} 
    \medskip:-->\vspace{\medskipamount} 
    \bigskip:-->\vspace{\bigskipamount} 
     
    段落首行缩进: 
    \setlength{\parindent}{2em},2个M 
    \setlength{\parindent}{0pt},首行不缩进 
    \CJKindent:两个汉字 
    \indent与\noindent 
    每节的第一段首行不会自动缩进 
    \hspane{\parindent} 
    在导言区加入:\usepackage{indentfirst} 
     
    段落间距:\lineskip+\parskip 
    可用\setlength修改以上值 
     
    行距: 
    \baselineskip:相邻两行基线间距离 
    \baselinestretch:伸展因子 
    修改改变行距:\renewcommand{\baselinestretch}[1.2] 
    放在\begin{document}之后,字体尺寸改变时才生效 
     
      
     
     
    +----------------------------------+ 
    |西文字体属性、及中文字体属性、命令| 
    +----------------------------------+ 
    字体有5种属性 
    族: 
    \rmfamily:罗马字体 
    \sffamily:无衬线字体 
    \ttfamily:打字机字体 
    形状:(shape)直立斜 
    \upshape:直立 
    \itshape:意大利斜体 
    \slshape:斜体 
    \scshape:小体大写 
    系列:(series)宽度黑度 
    \mdseries:中等权重(黑) 
    \bfseries:粗体 
     
    \normalfont:默认字体,中等权重直立罗马字体 
    西文尺寸:10pt,11pt,12pt 
    \em强调,一般为斜体 
    以上命令称为声明(无参数) 
     
    每一声明对应字体命令 
    命令只对其参数中的文本起作用 
    族: 
    \testrm{},\testsf{},\testtt{} 
    形状 
    \textup{},\textit{},\textsl{},\textsc{} 
    系列 
    \textmd{},\textbf{} 
    默认值:\textnormal{} 
    强调:\emph{} 
     
    定义了基本尺寸后,可使用下面的声明来改变字体 
    \tiny  5pt 
    \scriptsize 7pt 
    \footnotesize 8pt 
    \small  9pt 
    \normalsize 10pt 
    \large  12pt 
    \Large  14.4pt 
    \LARGE  17.28pt 
    \huge  20.74pt 
    \Huge  24.88pt 
    以上尺寸是基本尺寸为10pt时的大小 
     
    所有西文字体命令对中文同样起作用 
    italic和slanted斜体对中文一样 
     
    中文书籍基本字号为5号约等于11pt 
     
    使用GBK编码时,可同时输入简繁体。 
     
    自定义字体大小 
    \fontsize{字体尺寸}{行距}后面须加上\selectfont才生效 
    可得到任意大小汉字,西文最大不能超\Huge 
    行距通常为字体大小的1.2-1.5倍 
    例:\fontsize{12pt}{\baselineskip}\selectfont 
    \usepackage{type1cm}任意大小西文 
     
    行距:\linespread{1.3}产生1.5倍行距,1.6产生双倍行距,效果夸张,不适合出版 
    用下面方法:\setlength{\baselineskip}{1.5\baselineskip}{......} 
     
      
     
    正文中更换字体:\CJKfamily{字体族} 
     
    为方便,作以下自定义 
    \newcommand*{\SONG}{\CJKfamily{song}} 
    \newcommand*{\HEI}{\CJKfamily{hei}} 
    \newcommand*{\KAI}{\CJKfamily{kai}} 
    \newcommand*{\FS}{\CJKfamily{fs}} 
    \newcommand*{\LI}{\CJKfamily{li}} 
    \newcommand*{\YOU}{\CJKfamily{YOU}} 
     
    引用更改为宋体:\SONG 正文 
     
      
     
    文本居中 
    文本默认为左对齐 
    单行文本居中命令 
    \centerline{....} 
    多行使用\begin{center}环境 
    居中声明:\centering(不建议使用) 
     
    +------------+ 
    |参考文献环境| 
    +------------+ 
    \begin{thebibliography}{编号样本} 
    \bibitem[记号]{引用标志} 文献条目 
     . 
     . 
     . 
    \bibitem[记号]{引用标志} 文献条目 
    \end{thebibliography} 
     
    \bibitem[省略为方括号数字]{不可省由字母,数字和,号外符号组成,各个文献互不相 
    同} 文献条目 
    编号样本,指定记号的宽度,一般为数字 
     
    引用文献时用\cite{引用标志1,引用标志2} 
     
    调节各文献间距离 
    \setlength{\itemsep}{高度} 
     
    标题缺省为左对齐Reference 
    (\Large\bfseries) 
    由\refname值确定 
    书籍参考文献标题由\bibname值确定 
     
    文献条目包含:作者,标题,出版社,年代,版本,页码 
    一行放不下,后面自动缩进,距离为“编号样本”宽度 
     
    +----------+ 
    | 脚    注 | 
    +----------+ 
    \footnote{脚注内容} 
    article文档,整篇同一编号 
    book和report文档,每章统一编号 
     
    +----------------+ 
    | 文档类别、章节 | 
    +----------------+ 
     
    \documentclass[可选项]{article,book,report,letter,只能选一种} 
    article 短篇文章 
    report 长篇报告,可分章 
    book (书)可含chapter,奇偶页采用不同处理 
    可选项对整篇文档起作用,使用多个选项互不排斥,用逗号分隔 
    基本字体:10pt,11pt,12pt 
    纸张大小:letterpaper,a4paper,a5paper... 
    排版方向:portrait(竖向),landscape(横向) 
    标题页:titlepage,notitlepage 
    final和draft 
     
    指定纸张大小(只有latex2e中使用) 
    letterpaper(11*8.5in) 
    legalpaper(14*8.5in) 
    executivepaper(10.5*7.25in) 
    a4paper(29.7*21cm) 
    a5paper(21*14.8cm) 
    b5paper(25*17.6cm) 
    默认值是letterpaper,美国信纸尺寸,纵向 
    landscape 横向 
     
     
    章节命令: 
    \part,\chapter,\section,\subsection,\subsubsection,\paragraph,\subparagraph 
    \命令[短标题]{标题},用于显示在目录和页眉 
    \命令*{标题} 
    层次号:book中\part为-1(article中为0),\chapter为0,.... 
    book类 
    \part,\chapter独立编号,只出现在奇数页,\part独占一页 
    \section,\subsection 关联编号 
    article类 
    \part,\section独立编号 
    \subsection,\subsubsection 关联编号 
    星号章节不参加自动编号 
    \part和\chapter标题占两行 
     
    标题中文化 
    \renewcommand{\partname}{} 
    \renewcommand{\thepart}{第\,\Roman{part}}\,篇} 
     
    修改编号最深层次 
    \setcounter{secnumberdepth}{数} 
    secnumberdepth,book类-2~5,缺省为2,-2时取消编号 
    article类-1~5,缺省为3 
     
    自动编号章节对应计数器 
    part,chapter,section,bsection,subsubsection,paragraph,subparagraph 
    修改计数器值: 
    \setcounter{计数器名}{数} 
     
     TeX的版式首先是文件版式, 也就是我们接触的第一个最最最 
    简单的TeX文档中的第一句: 
           \documentstyle[选项1,选项2,...]{格式} 
    其中的[]及选项是可选的, 而{格式}是必需的. LaTeX有以下几种 
    格式: article(文章), report(报告), book(书), letter(信件). 
    CCT对前面三种进行了汉化, 分别是carticle, creport和cbook. 
    常用的选项有 
      10pt/11pt/12pt: 定义基准字号, 缺省10pt. 
      twoside: 两面印刷格式, 因奇偶页装订位置不同而异, 缺省为 
               单页. 
      twocolumn: 双栏排版, 缺省为单栏. 
      titlepage: 仅在article格式使用, 它是\maketile产生一个单 
                 独的文章题目页, 同时abstract也产生单独页 
      leqno: 使公式标号出现在左边, 缺省在右 
      fleqn: 公式左对齐, 缺省中间对齐 
      thesis: 专用于毕业论文排版 
      IEEE: 专向IEEE类杂志投稿的格式 
      IFTHEN: 排版计算机程序 
      
    \columnsep 指定两栏间距 
    \columnseprule 两栏间竖线宽度,默认为0。 
    \mathindent 选择fleqn时 左边界的缩进量 
     
    以上参数修改用\setlength{\mathindent}{2.5cm} 
     
     
        LaTeX的一个页面有页眉(head, 通常是杂志名, 卷号, 当前 
    章节名等), 主体(body, 正文, 包括脚注及图表), 页脚(通常是 
    页码, 如果页码放在页眉处, 则页脚可能是空的). 我们用下面的 
    指令控制页版面: 
            \pagestyle{参数} 
    参数可以是 
      plain: 页码在页脚居中, 页眉空白, 为article, report的缺省 
      empty: 页眉页脚都空白 
      heading: 页脚为空, 页眉为正文的章节信息及页码 
      myheadings: 自定义页眉, 内容由 
         \markboth{left_head}{right_head}   (双面twoside排版) 
       或\markright{right_head}             (单面排版) 
        \pagestyle是对全文有效的, 而如果要定义某页的页面格式, 
    则可用\thispagestyle, 用法同上, 下一页自动恢复原设置. 
      
        这里提到页码, 我们经常会修改页码的表现格式, 可能用阿 
    拉伯数字或罗马数字等, 则修改\pagenumbering{参数}, 这里参 
    数可以是arabic(阿拉伯数字), roman(小写罗马数字: i, ii, iii,) 
    Roman(大写罗马数字: I, II, III,), alph(小写英文: a, b, c,), 
    Alph(大写英文: A, B, C). 如果需要更改某页的页码, 则用修改 
    计数器命令: \setcounter{page}{数字}, 这里page是页码计数器. 
     
    +----------------+ 
    |*修改版面的命令*| 
    +----------------+ 
     
      
    TeX中还经常会在\documentstyle和\begin{document}之间 
    常用到很多修改版面尺寸的命令. 如未指明, 这些命令的格式都 
    是用\para_name=newvalue的格式. 
      \texwidth, \texheight 主要正文body的宽度和高度, 不包括页眉页脚 
      \oddsidemargin, \evensidemargin 奇数/偶数页, 纸张左边缘 
        到页body左边缘的距离减去一英寸 
      \topmargin 纸张上边缘到页眉或body(无页眉时)的距离减去一 
        英寸 
      \marginparwidth 页边注(marginnote)的宽度 
      \marginparsep 正文边缘到页边注边缘的距离 
      \headheight 页眉高度 
      \headsep 页眉底部到页主体顶部的距离 
      \footheight 页脚高度 
      \footskip 页正文最后一行底到页脚底的距离 
    (建议, 总把 
    \oddsizemargin(奇数页的左边界) 
    \evensidemargin(偶数页的左边界) 
    \topmargin(从上页边到页眉的距离) 
    设为0cm; 
    如果没用页眉, 将 
    \headheight(页眉高度), 
    headsep(页眉基线到正文顶部的距离) 
    设为0cm; 
    如果没用页脚, 将 
    \footheight(已过时latex2e中已被去掉), 
    \footskip(正文底部到页脚底部的距离)设为0cm, 
    这样便于在输出时直接利用驱动程序的功能控制版心的位置.) 
     
    \columnsep 双栏article中, 左右栏间空白的距离 
    \columnseprule 双栏article中, 左右栏间分隔线的宽度, 缺省 为零, 即没有线 
    以下参数的修改可以在\begin{document}的前面和后面: 
      \parskip 段落之间除了空出正常行距外额外空出的距离 
      \parindent 段首空白的长度 
      \footnotesep 两个注脚之间的距离 
      \baselineskip 正文中前一行底和第二行底的距离, 会因字号的 
        改变自动改变. 
        另外, 定义行距还有一个特殊的参数, 那是\baselinestretch, 
    它是用在\begin{document}前的全局变量, 修改格式如 
    \renewcommand\baselinestretch{倍数}    缺省时为1.0, 因此 
    LaTeX中最小行距是\baselineskip乘上\baselinestretch得到的. 
     
    +----------------+ 
    | 文档标题、摘要 | 
    +----------------+ 
     
    \title{标题可有\\换行} 
    \author{作者名可用and分开} 
    \date{日期可选,无命令自动当天日期,空白选项不显示} 
    \thanks{}可出现\maketitle以上任何位置,或几个\thanks 
    \maketitle 
    LaTex用特定字体、号居中输出 
     
    自定义标题环境 
    \begin{titlepage} 
    \end{titlepage} 
    生成标题独占一页,并重置页码计数器 
     
    摘要环境 
    \begi{abstract} 
    ... 
    \end{abstract} 
     
    book类没有摘要 
    摘要标题中文化 
    \renewcommand{abstractname}{摘\qquad 要} 
     +----------------------------------------------------+ 
      |  本节内容: 三种数学环境, 数学环境中字体和字号, 数  | 
      |  学公式中的空格, 上下标, 分式, \displaystyle, 大   | 
      |  大小小的括号, 根式, 导数.                         | 
      +----------------------------------------------------+ 
     
    导言区加入数学公式宏包 
    \usepackage{latexsym} 
    \usepackage{bm} 
    \usepackage{amsmsth} 
    \usepackage{amssymb} 
     
    也可以等 
    \usepackage{latexsym,bm,amsmsth,amssymb} 
     
      
        到这里, 大家就已经能输入一篇完整的一般文章了, 但是科 
    技文章总少不了数学公式, 而且大家选择TeX作为排版工具, 其中 
    一个原因也是看中了它美观的公式编排, 现在我们就来看看和一 
    般正文不一样的公式. 
      
        TeX提供三种有关数学公式的环境, 一种是"文中公式", 通过 
    $或\(进入"数学环境", 通过$或\)来结束数学环境的; 第二种是 
    "独立公式", 用$$或\[进入"显示数学环境"(以后我们统称数学环 
    境), 用$$或\]退出, 在正文, 它是独占一行的, 它排出的字体要 
    稍微比文中公式要大些; 第三种是带公式标号的数学公式: "方程", 
    这个以后我们详细再讲. 数学环境是自动根据当前字号来调整公式 
    中字的大小的. 
      
        数学环境中, 缺省字体是数学斜体(显示出来和意大利体一样), 
    因此如果要用到正文, 需要改变字体或使用盒子, 如我们要输出 
    "y=x, if x>0,"这一句, 其中的"y=0"和"x>0"应该是数学公式(虽 
    然不进入数学环境也能输), 而"if"却属于正文内容, 因此不应该 
    用数学斜体显示, 而应该用"$y=x, {\rm if} x>0$"或用盒子: 
    "$y=x, \mbox{if } x>0$", 但这里还要注意的是, 数学环境中忽 
    略一切空格(当然分隔命令的空格除外), 因此第一种输入可以发现, 
    if和x>0之间没有我们想要的空格, 而第二种输入方式由于在\mbox{} 
    中if后加了一个空格, 所以if和x>0有一个空格, 这正是我们想要 
    的. 因此标准的输入方法一般用后者. 而且, 前者的方法对汉字 
    就不适用, 因为汉字不能出现在数学环境中, 而用盒子框起来就 
    没问题了. 这里再多说一句的是, 数学环境中不能使用字号命令, 
    如果需要改变字号, 应该在数学环境之外改变, 而数学环境自动 
    根据当前字号调整字的大小. 
      
        上面已经提到数学环境中忽略任何空白字符, 那么, 怎么在 
    公式中输出空格呢? 当然我们可以用以前讲过的\quad或hskip来 
    空出横向空格等, 但是如果我们要输出诸如"fdx"(这里dx是微分), 
    这样在f和dx中要有一个小空格, 用\quad显然太大了, hskip根本 
    不知道该空出多大距离. 在公式中, 常用的几个调整距离的命令 
    是"\,"(小距离), "\:"(中距离), "\;"(大距离), "\!"(负距离), 
    象刚才说的例子, 我们一般就用$f\,dx$即可. 当然, 一般情况我 
    们很少改变数学公式中的距离. 
      
        下面我们看看如何在数学公式中输入上下标, 在讲TeX保留字 
    时大家就有印象了, 上下标分别用"^"和"_"来表示, 如$x_0^2$, 
    TeX中, 先输上标后输下标和先写下标再写上标是没有区别的, 它 
    都会一样地自动调整字符大小和位置. 如果上下标的字符不止一 
    个, 那就用"{}"括起来, 如$x^{1+y^{i+1}}$. 如果有人突然想在 
    字符的左边输上下标呢? 简单的方法是在前面加一个空的{}, 如 
    ${}_{17}^{35}Cl$, 哦, 可能不是用的数学斜体, 那只好再用盒 
    子了: ${}_{17}^{35}\mbox{Cl}$. 
      
        有时我们可能直接用1/2来表示分数就可以了, 但是如果分子 
    分母我们想要排在分数线的上下, 那就要用"\frac{分子}{分母}" 
    来表示了, 如$$\frac{1}{x+1}$$. 但是大家如果再把这个例子用 
    单$括起做文中公式, 或者$$y=\frac{y-\frac{1}{x+1}}{y+1}$$, 
    就会发现, 这个分式显示出来觉得比正常字号小, 要解决这个问 
    题就要用\displaystyle的命令了. 你可以试试 
    $$y=\frac{y-\displaystyle\frac{1}{x+1}}{y+1}$$, 可以了吧. 
    当然, 如果你在\documentstyle中使用了vatola选项(需要TeX系 
    统在指定目录有vatola.sty文件), 那么, 你可以直接用\dfrac来 
    代替\frac来达到同样的效果, 而避免使用冗长的\displaystyle 
    的输入.(格式如\documentstyle[vatola]{article}; 而如果用 
    \documentclass{article}, 则用\usepackage{vatola}); 或二 
    者均可以在第一句后面加上\input vatola.sty来包含这个包) 
      
        有人可能又要问了, 如果我输出的分数, 分子还是有分子分 
    母的分数, 分母也是一个不简单的分数, 那层层迭迭的分数线, 
    不够美观, 我还是喜欢"分子/分母"的格式, 那怎么把这条斜分数 
    线画得长一些呢? 这里就要用到所谓的"定界符", 也就是成对出 
    现的类似于括号的符号了, 如(), [], {}(用\{和\}输入), <>(用 
    \langle和\rangle输入), /, \(用\backslash), |, ||(用\|); 
    以及另一些没法直接显示的符号, 大家自己用TeX产生出来看看: 
    $\lfloor, \rfloor; \lceil, \rceil; \uparrow; \Uparrow; 
    \downarrow; \Downarrow; \updownarrow; \Updownarrow$. 这些 
    "括号"通常嵌套并和分数等数学公式一起使用, 如 
    $$y=1+(\frac{(x+1)^2}{x^2})$$, 当然大家会看到这外层括号太 
    小, 不美观, 因此TeX提供了几个改变大小的命令, 从小到大依次 
    是\big, \Big, \bigg, \Bigg, 如$$(, \big(, \Big(, \bigg(, 
    \Bigg($$, 其它定界符类似使用. 另外, TeX还提供了自动调整括 
    号大小的命令, 那就是在定界符前加\left和\right, 需要注意的 
    是\left和\right一定要成对出现, 如果只用单个, 那么另一边就 
    要用"\left."或"\right."补上. 知道这些后, 我们就可以来输入 
    长的"/"号了: $$\frac{1}{x+1} \left/ \frac{y+1}{x^2} \right.$$ 
    或$$\left. \frac{1}{x+1} \right/ \frac{y+1}{x^2}$$, 这两个 
    是不是比$$\frac{\displaystyle\frac{1}{x+1}}{\displaystyle 
    \frac{y+1}{x^2}}$$更令人满意啊? 
      
        下面, 我们来讲讲根式的输入: "\sqrt[开方次数]{表达式}", 
    其中[开方次数]可选参数, 如果没有则是开平方, 如 
    $$\sqrt[3]{x+y}+\sqrt{2}$$. 
      
        而导数, 也就是在字母右上方加一撇或两撇的输出, 我们常用 
    $$f^{\prime}$$和$$f^{\prime\prime}$$来表示, 或更简单地, 用 
    $$f'$$和$$f''$$来表示. 
      +----------------------------------------------------+ 
      |  本节内容: 数学符号: 希腊字母, 二元运算符, 关系运  | 
      |  算符, 箭头, 其它符号, 可用于一般环境的符号, 花体  | 
      |  符号及函数名, 可变大小的符号, \limits和\nolimits, | 
      |  省略号, 符号的上下堆积, 上下标的分行              | 
      +----------------------------------------------------+ 
      
        TeX提供了许多"控制符号"来得到诸如希腊字母, 关系运算符, 
    箭头等无法用ASCII键盘直接输入的符号. 小写希腊字母, 如\alpha, 
    \beta, \gamma, \pi; 大写希腊字母, 如\Gamma, \Pi, \Omega; 
    二元运算符, 如\times(乘号), \div(除号), \pm(加减号), \circ 
    (小圆圈), \cdot(点)等; 关系运算符, 如\leq(小于等于), \geq 
    (大于等于), \subset(包含于), \supset(包含), \in(属于); 否 
    定关系运算符, 如\not=(不等于), \not<(不小于), \not\supset 
    (不包含); 箭头, \leftarrow, \rightarrow, \longrightarrow, 
    \uparrow, \mapto等; 其它符号, \nabla(Nabla算子), \angle(角), 
    \infty(无穷), \forall(任意), \exists(存在), \prime(导数的 
    撇). 这些符号比较多, 这里就不细细一一列出, 大家去找一本TeX 
    书, 复印那两三页下来就可以了. 
      
        本节讲的绝大多数符号都只能在数学环境中使用, 有几个符号 
    也可以使用在一般环境中, 那是\S(节号), \P(段落号), \dag(剑 
    号), \ddag(双剑号). 
      
        有时数学公式中的函数名, 算子等要用特别的花体来排版, 
    TeX提供了\cal字体, 如"function $\cal F$". 而对于专有名词, 
    如一些函数名, 如sin x中的sin, 就要用罗马体, 而不是一般的 
    数学斜体排印, 我们可以用$${\rm sin}x$$, 也可以用TeX提供的 
    直接在函数名前加"\"的方法: $$\sin x$$, 一般的函数均有定义, 
    如\sin, \cos, \lim, \log等. 
      
        数学环境中, 还有一类特殊的符号, 那就是可变大小符号, 如 
    求和号, 积分号, 它们会因为符号后面的内容的大小自动调整自己 
    的大小: \sum, \prod, \coprod, \int, \oint, \bigcap, \bigcup, 
    \bigsqcup, \bigvee, \bigwedge, \bigodot, \bigotimes, 
    \bigoplus, \biguplus. 需要注意的是, 有些可变符号的上下标位 
    置在文中公式和独立公式中是不一样的, 大家看个例子: 
    $\sum_{i=1}^n x_i=\int_0^\infty f(x)dx$ 
    和$$\sum_{i=1}^n x_i=\int_0^\infty f(x)dx$$, 这里大家看到, 
    \sum在文中公式中, 上下标是写在右上角和右下角的, 在独立公式 
    中, 是写在上面和下面的; 而\int在二者中都写在右上角和右下角 
    的. 我们可以强制用\limits和\nolimits来控制上下标的出现位置: 
    使用方法如$\sum\limits_{i=1}^b x_i$就强制将上下标写在上边 
    和下边, 而\nolimits使其出现在右边角上. 这里多说一句, 如果 
    你想把一般的操作符也想用\limits或\nolimits用, 只须把你的操 
    作符用\mathop{}括起来即可. 
      
        大家如果编排矩阵或行列式, 就会遇到特别的省略号, 大家试 
    试\cdots, \vdots, \ddots就是三个方向的省略号. 而\ldots是比 
    \cdots低一点的省略号, 它和其它三个不同的是也可以用在正文环 
    境中. \ldots一般用于$x_1, x_2, \ldots, x_n$这样的时候. 
      
        排版数学公式可能还会遇到需要把两个符号上下组合在一起, 
    最常见的就是上划线和下划线, 大家试试$$\overline{a+b+c+d}$$ 
    和$$\underline{a+b+c+d}$$, 这里需要说明的是, \overline只能 
    用于数学环境, 而\underline也可以用在正文中. 类似地还有用花 
    括号括在式子上下的: $$\overbrace{a+\underbrace{b+c}+d}$$, 
    而如果上下括号上面或下面还有符号, 可以用上下标来表示, 如: 
    $$\overbrace{a+\underbrace{b+c}_{1.0}+d}^{2.0}$$. LaTeX还 
    可以将任意两个符号重叠在一起: \stackrel{上层符号}{下层符号}, 
    如$$\vec{x} \stackrel{\rm def}{=}(x_1, x_2, \ldots, x_n)$$, 
    这里需要说明的是\stackrel中第一个参数的符号以较小字号输出的. 
    而$${上面 \atop 下面}$$可以把两行内容按相同字号排出, 类似 
    地就出现了$${n \choose m}$$则是带括号的n个取m个的写法. 
      
        符号可以上下堆积, 可是我们如果要在\sum的下面写诸如i<9 
    和j<9这两行下标, 用$$\sum_{i<9 \\ j<9} i/j$$是不行的. 我们 
    怎么实现这样的分行呢? 我们可以用\atop来堆积, 如 
    $$\sum_{\scriptstyle i<3 \atop \scriptstyle j<3} i/j$$ 
    这里之所以加了\scriptstyle是因为仅用\atop命令会把上下的字 
    体再缩小一号. 另外, 我们也可以用另外的方法: 前面我们在讲 
    \frac时提到\dfrac这个符号需要使用包vatola.sty, 这里, 如果 
    使用了vatola.sty这个包, 我们可以在下标中用{\Sb 第一行 \\ 
    第二行 \endSb}, 在上标中用{\Sp 第一行 \\ 第二行 \endSp}来 
    表示多行下标或上标. 
     
      +----------------------------------------------------+ 
      |  本节内容: 数组array, 方程(标号)equation, 多行方程 | 
      |  eqnarray, \aligned(vatola.sty), 标号的交叉引用    | 
      |  参考文献的使用(more)                              | 
      +----------------------------------------------------+ 
      
        数组环境通常用来编排矩阵, 行列式等对齐的数学公式的. 
    它的格式是: 
    \begin{array}{列对齐} 
    第一行 \\ 
    第二行 \\ 
    ... 
    最后一行 
    \end{array} 
    这里, 列对齐的格式是{c1c2c3...cn}, 每个ci为一个字母, 说明 
    第i列的对齐方式, 可以是c(居中), l(左对齐), r(右对齐). 而 
    每一行的各列用&符号隔开, 行末是\\. 因此n列的数组, {列对齐} 
    应该有n项, 每行应该有n-1个&, 一个\\(最后行通常不用\\). 数 
    组中某一列可以不存在, 但是&号不能少. 数组外常常使用可变大 
    小的定界符\left和\right, 大家看个例子: 
    $$\left( 
    \begin{array}{clr} 
    a+b+c & a+b+c & a+b+c \\ 
    a+b & a+b & a+b \\ 
    a & a & a 
    \end{array} 
    \right) $$ 
      
        这里要作些说明, 数组中某两行的距离可以用"\\[距离]"来 
    改变, 也可以用"\renewcommand\arraystretch{实数}"来整体修 
    改数组的垂直距离(缺省为1.0), 而参数\arraycolsep=...是修改 
    其列间距. 使用数组时, 经常容易出错的是: array必须出现在数 
    学环境中, &的个数和\\的个数一定要正确, 如果使用可变大小的 
    括号, 一定要注意\left和\right必须成对出现, 即使只排印半对 
    括号. 
      
        一般的$和$$环境, 不能给公式或方程编号, 因此, 就用到了 
    方程环境. 格式是: 
    \begin{equation} 
    方程 
    \end{equation} 
    这其中的方程, 和$$情况没有两样, 只是在公式右边自动加上了 
    方程编号(如果\documentstyle用了\leqno选项, 则公式标号在左 
    边). 多行的方程可以把array使用在equation中来实现, 但是标 
    号只出现一个, 出现在多行的中间. 如果多行要分别标号, 或者 
    不想用麻烦的$$嵌套array, 那就要用到多行方程环境: 
    \begin{eqnarray} 
    ...... 
    \end{eqnarray} 
    和 
    \begin{eqnarray*} 
    ... 
    \end{eqnarray*} 
    二者的区别是, 带*号的不将公式标号排出来, 而不带*的自动给 
    每行式子编排标号. 在\begin{eqnarray}和\end{eqnarray}中的 
    部分是一个三列的array环境, 因此有两个&和一个\\, 如: 
    \begin{eqnarray} 
    y&=&1+2+3+4+5+6+7+8+9+10 \\ 
    &=&55 
    \end{eqnarray} 
    而如果把方程某行的\\前加上"\nonumber", 则TeX不给该行方程 
    编排标号, 如"y&=&1+2+3+4+5+6+7+8+9+10 \nonumber \\", 则该 
    行不出现标号. 这里还要注意的是equation和eqnarray都是直接 
    进入$$的显示数学环境, 因此不能在前面和后面加上$或$$了. 
      
        大家可能会注意到, 不论是array还是eqnarray, 每个&符号 
    都会在公式中产生列的小空隙, 同样也在vatola宏库中, 定义了 
    一个aligned对齐环境, 它使得编排多行公式在对齐的同时不会出 
    现$符号位置的列空隙. 它可以出现在$$环境中, 那公式不标号; 
    或出现在equation中, 它对一个多行公式只标一个标号, 类似于 
    array. 它相当于一个两列的array, 因此每行仅有一个&. 
    \begin{equation} 
    \aligned 
    y&=1+2+3+4+5+6+7+8+9+10 \\ 
    &=55 
    \endaligned 
    \end{equation} 
    这里需要注意的是, \begin{array} \end{array}和\begin{tabular} 
    (制表)\end{tabular}不能出现在\aligned与\endaligned中, 如须 
    使用, 要用\vbox{}或\hbox{}等把array或tabular环境括起来. 
      
        在讲第一个完整的TeX文档例子时, 大家一定注意到参考文献 
    标号的交叉引用, 而方程也有标号, 也可以交叉引用. 为什么我 
    们选择交叉引用而不是直接在文中写"公式(1)中..."的原因很简 
    单, 交叉引用可以实时地调整标号, 插入或删去一个公式带来整 
    体标号的改变, 无需改变引用标号的地方; 而且, 可以在不修改 
    正文的情况下灵活地调整标号的风格. 
      
        TeX使用\lable{标号}来定义标号, 这里的标号可以是字母, 
    数字, 标点等组成的字符串. 需要引用, 则使用\ref{标号}, 这 
    里的"标号"应该是有\lable定义过的, 定义和引用的先后无关. 
    例如, 我们有 
    \subsection{Early Results} 
    \label{sec-early}                       %这里定义子节标号 
    Euler's equation 
    \begin{equation} 
    e^{i\pi}+1=0 \label{eq:euler}           %这里定义方程标号 
    \end{equation} 
    \combines the five most important numbers in mathematics 
    in a single euqtion. 
    然后我们就可以如下地引用 
    Equation~\ref{eq:euler} in Section~\ref{sec-early} ... 
    不管这里方程或子节的标号是多少, 引用时都能准确地指出. 这 
    就是我们要使用自动交叉引用的原因. 这里, \label会自动根据 
    自己的位置, 得出标号, 如出现在equation, eqnarray, enumerate 
    (项目), figure(图), table(表)环境中, 被引用的是公式号, 项 
    目编号或图表号; 而出现在其它位置则是章节号. 
      
        引用时除了\ref外还有一个\pageref{标号}, 它显示的是 
    \label{标号}出现的页面位置. 
      
        \cite和\bibitem我们在一开始的例子中就看到了, 我们这里 
    更详细地说说这两条命令的完整格式: 
    \cite[附加信息]{标号1, 标号2, ..., 标号n} 
    \bibitem[名称]{标号} 
    先看一个\cite加附加信息的例子(这个例子是在第5节例子的参考 
    文献的基础上的): 
    See \cite{texbook, companion} or \cite[page 20-22]{lamport} .. 
    再看\bibitem的名称可选项: 
    See \cite{kn:texbook} for more details. 
    ... 
    \begin{thebibliography}[lamport 86]     %[]中是最长文献编号 
    \bibitem[Knuth 84]{kn:texbook} D. E. Knuth. {\sl The \TeX{}book}. 
    Addison-Wesley, Reading. 
    \end{thebibliography} 
      
        这里再多说一句的是: 所有涉及交叉引用的文件, 在修改过与 
    交叉引用有关的内容之后, 都需要对源文件进行两次编译才能得到 
    正确的结果. 
      +----------------------------------------------------+ 
      |  本节内容: 居中, 左对齐, 右对齐环境; 小页环境; 抄  | 
      |  录环境; 列表环境; 制表环境.                       | 
      +----------------------------------------------------+ 
      
        这里要介绍的是几个TeX中常用的环境, 它的一般格式是: 
    \begin{环境名} 
    ... 
    \end{环境名} 
      
        首先是居中, 左对齐, 右对齐环境, 这三者的环境名分别是 
    center, flushleft和flushright, 在环境中的正文以\\断行. 这 
    三个环境比较简单, 就不举例子了. 需要注意的是, 紧接这环境 
    后的正文和环境如果没有空行隔开, 那么系统认为是一个段落, 
    就是说环境后的正文行首没有\parindent的缩进. 
      
        小页环境大家在第一个完整的TeX例子中已经看到了, abstract 
    就是小页. 小页环境的格式是: 
    \begin{minipage}[位置]{宽度} 
    ... 
    \end{minipage} 
    {宽度}可以用TeX的任何合法距离; [位置]是可选项, 可以选择t 
    或b来表示小页是和正文是"顶部对齐"还是"底部对齐", 请看例子: 
    NORMAL TEXT 
    \begin{minipage}[b]{1 in} 
    This is a minipage aligned on its bottom line. 
    \end{minipage} 
    AND 
    \begin{minipage}[t]{1 in} 
    This is a minipage aligned on its top line. 
    \end{minipage} 
    END 
    注意的是, 小页的footnote(脚注)是紧跟在小页后面, 而不是在 
    整个页面的下面, 所以在minipage嵌套时, 可能系统会放错脚注 
    的位置. 
      
        抄录环境(verbatim)在\begin{verbatim}和\end{verbatim} 
    的任何字符都将原样输出, 包括\等TeX保留字. 而"verbatim*"与 
    verbatim的区别是, 它将把空格用|_|表示出来. verbatim有一个 
    简写形式, "\verb标识符 字符串 标识符", 其中标识符可以是空 
    格以外任何字符, 它与\verb之间没有空格. 如: 
    \verb+ 
    This is \!@#$%%^&*&*({ All you want to type. 

    当然, 字符串里就不能出现你作为标识符的符号了. 
      
        列表环境itemize, enumerate, description. 
    \begin{itemize} 
    \item 列表项1 
    \item 列表项2 
    ... 
    \item 列表项n 
    \end{itemize} 
    自动编号; 如果超过一行, 自动缩进以突出编号. 而enumerate与 
    itemize的区别是, 它不出现数字编号, 而是以小黑圆点来标识. 
    description一般用于类似于名词解释的情形: 
    \begin{description} 
    \item[名词] 解释 
    \item[名词] 解释 
    ... 
    \end{description} 
    一般, 还在[名词]中加上\bf或\heiti以突出名词. 
    列表环境还可以嵌套使用, 具体就不细述了. 
     
    +----------+ 
    | 表    格 | 
    +----------+ 
    表格环境tabular 
    \begin{tabular}[竖向位置]{列格式} 
    .... 
    \end{tabular} 
    竖向位置:t、b 缺省居中 
    列与列间用&分隔,每行\\[长度:改变行间间隔]结束 
    列格式:l左对齐,c居中,r右对齐 
    边界线:|,|| 
     
    横线: 
    \hline 
    \cline{m--n} m--n列水平线 
    \nline与行等高竖线 
     
    \multicolumn{列数}{列格式}{文本内容} 
    列数=1时,改变当前列对齐方式 
     
        TeX专门提供了一个制表环境, 用来排印有线或无线的表格. 
    \begin{tabular}[位置]{列定义} 
    ... 
    \end{tabular} 
    这里[位置]和minipage一样, 可选t或b, 但我们通常用的表格都 
    是独立表格, 所以通常不定义位置, 而直接独立一段. {列定义} 
    类似于array的列对齐, 可以用c,l和r来表示对齐方式, 这里的列 
    定义还可以在列对齐字母间用"|"以画出表格中列的竖线. 表格内 
    容如array一样, 用&隔开, \\换行, 同样要注意&的个数. 表格的 
    横线可以用\hline来表示, 如: 
    \begin{tabular}{|c|c|c} 
    \hline 
    1 & 2 & 3 \\ 
    \hline 
    4 &   & 6 \\  %这里要注意, 若最后行要画横线, 则此处要有\\ 
    \hline 
    \end{tabular} 
    而"\cline{列号1-列号2}"则是表示从列号1到列号2的一条横线. 
    而如果要在表格元素中画竖线, 则可以用"\vline". 有时我们还 
    会遇到需要把某行表格的几列合并起来, 这就要使用 
    \multicolumn{栏数}{栏定义}{内容} 
    {栏数}是要合并的栏的数目, {栏定义}类似于表格的{列定义}, 如: 
    \begin{tabular}{|c|c|c|} 
    \hline 
    \multicolumn{2}{|c|}{1} & 2 \\ 
    \hline 
    3 & 4 & 5 \\ 
    \hline 
    \end{tabular} 
    而 
    \begin{tabular*}{宽度}[位置]{列定义} 
    ... 
    \end{tabular*}可以自己定义表格的总宽度, 如\textwidth等TeX 
    的合法距离. 
      
        最后, 我们讲讲制表环境的四个参数, 这四个参数都是局部 
    参数, 也就是说只要用分组限定命令的作用范围, 就可以调整某 
    个表格的参数而不影响其它表格. \tabcolsep是两列间水平距离 
    的一半, 缺省为6pt; \arrayrulewidth为定义\hline, \vline, 
    \cline及列定义的分隔线|的线宽, 缺省为0.4pt; \doublerulesep 
    为连续两个\hline或列定义中连续两个|所画的线段之间的间隔, 
    缺省为2pt, 如果设为0pt, 则可以用连续的\hline或|来加粗表格 
    的某些线框; \arraystretch是一个实数, 缺省为1.0, 定义行距 
    的一个因子, 用\renewcommand来改变. 
      
      +----------------------------------------+ 
      |  本节内容: 在TeX文档中插入eps图形文件  | 
      +----------------------------------------+ 
      
        plain TeX的图形功能非常弱, LaTeX在一定程度上增强了这 
    方面的功能, 但是也只能画由文字, 直线, 矢量, 圆等组成的很 
    简单的图形. 这里我觉得没有多大必要花不少精力去学这不大实 
    用的东西. CCT对图形, 图像功能方面作了补充, 具体大家可看它 
    所附带的man.dvi文件, 里面有详细的说明. 而windows下的TeX或 
    如sci-word一般的环境, 可能提供了插入一般windows下剪贴板图 
    形的方法, 具体可看该软件的帮助. 
      
        这里, 我们仅就如何在TeX文档中插入EPS的PostScript图形 
    作些说明, 因为现在的很多windows下的作图软件, 如mathematica 
    都能产生EPS文件, 这类文件的图形是矢量格式而不是点阵格式的, 
    可以以较高精度输出而不会出现锯齿状不光滑现象.(mathematica 
    3.0中, 只要点击所做的图形成为选中, 然后点鼠标右键, 在菜单 
    中选择Save Selection As..., 那里有EPS格式) 
      
        插入EPS图形的TeX文件所生成的dvi文件, 无法用view看到其 
    中嵌入的图形, 只能用dvips将dvi以及内嵌的EPS图形一起转化成 
    PS文件, 然后用Ghost View来看. 
      
        首先, 我们先要安装"dvips". 现在假设我们已经把CCT EMTEX 
    5.13安装在C:\EMTEX目录下了(如果装在其他盘, 那么dvips就要改 
    设置config.ps了, 估计有麻烦), 那么解开dvips.zip(下载请到 
    http://202.38.68.78/~chencs/math/ ), 里面有一部分文件展开
    在emtex目录下, 还有一个texfonts目录(大概是为dvips提供字体 
    用的). 大家使用CCT之前, 应该运行过emtex目录下的setenv.bat 
    (这是CCT emtex要求大家设置的TeX的环境变量, 建议将setenv.bat 
    的内容加到autoexec.bat中去, 因为这里的环境变量没设好, 会影 
    响dvips的使用). 
      
        有了上面准备工作之后, 以后如果我们要在TeX中插入EPS文件, 
    只要按TeX格式编好源程序; 然后用patchdvi把dvi文件中可能有的 
    汉字字库剥离出来, 以供不依赖汉字环境的dvips使用; 然后用 
    dvips32就可以将dvi文件以及EPS图形一起合成为ps文件, 回到95 
    环境, 用GhostView就可以阅读或打印了. 
      
        在打包的dvips.zip中, 我们加入了一个ll.bat文件(使用格式 
    是ll filename, 这里, CCT的文件名为filename.ctx), 大家可以从 
    中看到怎么使用patchdvi和dvips: 
               call patchdvi -y %1.dvi ~~tmp.dvi 
               dvidrv dvips32 ~~tmp.dvi 
      
        最后, 大家就看看怎么在TeX文件插入EPS图形了. 如果我们用 
    \documentstyle{}, 那么, 在{}前的选项[]中加入epsfig; 如果用 
    的是\documentclass{}, 那么就用\usepackage{epsfig}调如该库. 
    然后在要插入图形的地方使用\epsfig{figure=filename.eps}, 当 
    然, 也可以把这句话加在浮动图表的环境中而形成浮动图表, 或直 
    接使用直接插在文中. 一个简单的例子是打包在我们的dvips.zip中 
    的sample.ctx中插入了sin.eps. 
      
        这里补充说一下浮动图形figure环境, 它能自动调整图形在页 
    面中出现的位置: 


    这里[位置]可以是h(当前位置),t(页顶),b(页底),p(另页).

      +----------------------+ 
      |  一个英文文档的例子  | 
      +----------------------+ 
    一个英文文档的例子,保存为:**.tex 
    \documentstyle{article}                 %使用article格式 
    \topmargin=0pt                          %以下页面设置 
    \oddsidemargin=0pt \evensidemargin=0pt  % 
    \textwidth=14cm                         % 
    \textheight=21cm                        % 
                                            % 
    \title{This is a sample of \LaTeX}      %文章题目 
    \author{Bigeyes(\tt{chencs@263.net})\\  %作者. 多行用\\ 
            Department of Mathematics\\     % 
            USTC, Anhui, Hefei, 230026      % 
                                            % 
      \and                                  %如有多作者, 用\and 
            A\_A                            % 
      \thanks{Supported by ...}             %致谢, 在author里 
            \\                              % 
            BBS of USTC\\                   % 
            bbs.ustc.edu.cn[202.38.64.3]}   % 
    \date{Mar. 1, 1999}                     %日期, 如果没有此项, 
                                            %则以当前日期代替, 若 
                                            %不要日期, 则用空{} 
                                            % 

                              %document结束 
     
      +-------------------------+ 
      |  如何编辑、编译TeX文件  | 
      +-------------------------+ 
     
        我们已经讲过, TeX源文件是文本文件, 就象一个C语言的源 
    文件一样, 那么我们也象编译C语言程序得到可执行程序一样, 我 
    们编译TeX源文件, 以得到能在计算机上浏览或打印的格式文件, 
    那就是后缀为.DVI的文件(我们就称它为DVI文件). TeX源文件我 
    们通常把其后缀取为.TEX. 当然, 如果你在中文TeX的环境中编排 
    你的中文文章, 那么你的源文件后缀可能就是那个中文TeX给你约 
    定的了, 我们现在常用的CCT EMTEX, 所用的后缀是.CTX, 系统的 
    操作是将.CTX源文件中的中文经过预处理, 产生标准的TeX文件, 
    然后再照平常的TeX文档一样操作, 得到DVI文件. 
      
        今后, 我们均以DOS下的CCT EMTEX环境为例, 来讲述TeX文章 
    的编排. 因为TeX的标准, 所以在不同的TeX环境, 其实文章编排 
    的内容格式是一样的, 只是可能它得到DVI的途径不同而已. 而我 
    们就以现在比较流行的LaTeX为准来讲述TeX的使用, 其它如amstex, 
    amslatex等, 仅是文档的最外层框架以及少数扩展的命令不大一 
    样之外, 其它命令都是相同的. 
      
        一个最最简单的TeX文档可能是: (比如我们用EDIT, 当然也 
    可以用写字板或UltraEdit等甚至是UNIX下的vi编辑器等编辑一个 
    文本文件如下四行, 取名为'1.tex') 
    \documentstyle{article} 

    现在流行的TeX格式似乎已经不是documentstyle而是documentclass 
    了, 但是它们除了一开始的写法不大一样之外, 正文的命令排版 
    等等都没有任何区别. 以CCT EMTEX环境为例, 我们用'latex 1.tex' 
    来编译TeX文件来得到DVI文件, 然后用'view 1.dvi'来浏览, 用 
    'dvi24p 1.dvi'(24针打)或'dviljp 1.dvi'(激打)来打印文章. 
    (以上三条命令的后缀均可以省去, 仅用'latex 1','view 1'和 
    'dviljp 1'等.) 
      
        如果你的TeX文件不符合TeX语法, 那编译将可能出错, 这时 
    可以让系统忽略错误产生DVI文件(这时可能就不能达到你所期望 
    的排版效果了), 或者你应该修改源文件中的错误, 重新编译, 直 
    到全部通过. 在LaTeX编译出错时, 会在屏幕上显示出错信息, 并 
    显示"?"以接受用户进一步的指示. 在"?"后, 输入: 
     1. 回车: LaTeX尽量忽略此错误, 继续运行; 
     2. s: LaTeX继续运行, 并之后还有错误, 也不停止运行; 
     3. r: 类似s, 比上者更强硬, 甚至连打不开文件这样的严重错误 
        也不停止; 
     4. q: 同r, 但错误及提示均不在屏幕显示, 直接写入.LOG文件; 
     5. I: 之后跟一个字符串, 用来插入替代出错的字符串. 比如在 
        正文需要纵向空出1cm空白, 用"\vskip 1cm", 但是输入错误 
        成为"\vship 1cm", 则编译出错: 
          ! Undefined control sequence. 
          l.102 \vship 
                     1cm 
          ? 
        表示在第102行, \vship是未定义的命令, 这时在?后输入 
        "I\vskip", 则用\vskip替代出错的\vship, 继续执行. 这里 
        需要注意的是, 这条指令只是编译中临时修改错误, 并没有 
        真正地修改源文件; 
     6. 小于10的数: 表示删出从当前位置开始的那么多个字符; 
     7. ?: 显示提示 
     8. h: 显示帮助, 对当前错误提出进一步动作的建议; 
     9. x: 中断编译, 将已编译的结果写入.DVI中, 出错及提示写入 
        .LOG中. 
     
     
    +----------+ 
    |制作幻灯片| 
    +----------+ 
    xcolor宏包 
    \usepackage[选项]{xcolor} 
    选项: 
    彩色驱动程序名:dvips,dvipdfm,pdftex 
    彩色模式:natural,rgb,cmyk,.. 
    预定义色彩集合:dvipsnames,dvipsnames*,... 
     
    red,green,blue,yellow,cyan,magenta,black,white,orange,violet,purple,brown,pink,...
     
    使用彩色 
    \color{色彩名}-->声明 
    \textcolor{色彩名}{文本}-->命令 
    \pagecolor{色彩名}-->声明,指定背景色(ps,pdf有效) 
    色彩名必须是已经有定义的 
    可以使用不同色彩的混合,如 
    \color{green!40!yellow}-->40%的绿色与60%的黄色混合 
    \color{-green!40!yellow}上述颜色的补色 
    色彩混合公式: 
    C0!P1!C1!P2!...!PN!CN=???? 
    另一种方法 
    \color[色彩模式]{数据} 
    \textcolor{色彩名}{数据}{文本} 
    \pagecolor{色彩名}{数据} 
    例: 
    \textcolor[rgb]{0.3,0.8,0.1} 
    \textcolor[cmyk]{0.0,0.5,0.1,0.5} 
    \definecolor{色彩名}{色彩模式}{数据} 
    \providecolor{色彩名}{色彩模式}{数据} 
    色彩模式:rgb,cmyk,gray等 
    逗号分隔的十进制小数,表示每个分量的力度 
    如:\definecolor{red}{rgb}{1,0,0} 
    \definecolor{yellow}{cmyk}{0,0,1,0} 
    如色彩名已有定义,\providecolor不起作用,\definecolor覆盖原来的定义 
    彩色盒子 
    \colorbox{色彩名}{文本} 
    \fcolorbox{色彩一}{色彩二}{文本} 
    \colorbox{色彩模式}{数据}{文本} 
    \fcolorbox{色彩模式}{数据一}{数据二}{文本} 
    \normalcolor:恢复正常色 
     
    使用pdfTeX 
    dvipdfm-->div 转 pdf 
    dvipdfmx-->dvipdfm的扩展 
    pdfTeX处理Plain TeX and AMS-TeX文件 
    pdfLaTeX处理LaTeX文件 
    直接生成pdf文件,可以增加一些LaTeX中没有的pdf功能 
    支持图片格式:pdf,png,jpg,tif,但不支持eps 
     
    建立书签:hyperref宏包 
    \usepackage[选项]{hyperref} 
     
    \usepackage[选项]{hyperref} 
    hypersetup{...} 
     
    例子: 
    \usepackage[dvipdfmx,CJKbookmarks]{hyperref} 
     
    \usepackage[dvipdfmx]{hyperref} 
    hypersetup{CJKbookmarks=true} 
     
    hyperref宏包常用选项 
    驱动选项:dvipdfmx,dvips,pdftex,.... 
    pdf属性:pdftitle,pdfauthor,pdfsubiect,... 
    pdf打开方式:pdfstartview,pdfpagemode,... 
    书签:bookmarks,CJKbookmarks,bookmarksnumbered,bookmarksopen,... 
    链接属性:colorlinks,linkcolor,citecolor,... 
     
    slides文档类:制作透明胶片 
    \documentclass[选项]{slides} 
    字体较大,\normalsize-->20pt 
    缺省字体为sffamily 
    三种环境:slide,overlay,note 
     
    pdfscreen宏包 
    \usepackage[选项]{pdfscreen} 
    常用选项 
    screen:产生适合屏幕输出的pdf文件 
    print:输出打印版 
    panelleft,panelright,nopanel:设置导航面板 
    paneltoc:将目录放在导航面板上 
    sectionbreak:每节分页 
    导航面板配色方案:blue,gray,orange,... 
    pdfscreen宏包自动输入graphicx和color宏包 
     
    pdfscreen定制幻灯片命令(导言区) 
    \screensize{高度}{宽度}:屏幕大小(必须) 
    \margins{左}{右}{上}{下}:定义页边空白,(放在\screensize前) 
    \overlay{pdf图形文件}:幻灯片背景 
    \paneloverlay{pdf图形文件}导航面板背景 
    \urlid{CRL地址}:设置主页链接地址 
    \emblema{图形文件}:在导航面板加入图片 
    导航按钮: 
    \bottombuttons,\nobottombuttons 
    \topbuttons 
    \notopbuttons 
     
    按钮中文化 
    \panelhomepagename:主页 
    \paneltitlepagename:标题页 
    \panelabstractname:摘要页 
    \panelcontentsname:目录页 
    \panelgobackname:返回 
    \panelfullscreename:全屏显示 
    \panelclosename:关闭 
    \panelquitname:退出 
    \panelpagename,\panelofname,\panelofnamep 
     
    slide环境 

    一个slide环境生成一张幻灯片 
     
    页面过渡命令(需使用宏包texpower) 
    \usepackage[display]{texpower} 
    \pageTransitionBlindsH 
    \pageTransitionBlindsV 
    \pageTransitionSplitVI 
    \pageTransitionDissolve 
    \pageTransitionSplitVO 
    \pageTransitionSplitHI 
    \pageTransitionSplitHO 
    \pageTransitionGlitter{270} 
     
    +------------------+ 
    |beamer宏包(最佳)| 
    +------------------+ 
    是latex制作slide的一个文档类 
    用pdflatex编译,不需要其它后处理程序 
    同票latex结合度高 
    直观而方便的创建遮挡(overlays) 
    及其它各种漂亮的演示效果 
    利用theme实现内容和风格的独立,可以轻松的改变风格 
     
    在latex中使用beamer的一般步骤 
    将latex的文档类型从article改为beamer 
    用section和subsection组织latex的文档结构 
    用frame环境制作独立的帧 
    执行pdflatex编译tex文件 
     
    beamer文档类 
    \documentclass[11pt,CJK,compress]{beamer} 
    \usetheme{Warsaw} 
    \usecolortheme{lily} 
    ... 
    幻灯片主体结构 
    \section{....}  %用于书签和导航条 
    \subsection{....}  %用于书签和导航条 

    一个帧中可以包含覆盖,逐段显示内容 
    一个有用的选项:plain 
     
    标题页 

    标题,副标题,报告人,。。。 
    \title{...} 
    \subtitle{...} 
    \author{...} 
    \date{...} 
    \institute{...} 
    \titlegraphic{...} 
     
    目录页 

     
    \tableofcontents-->逐段显示目录 
    hideallsubsections,hideothersubsections 
    currentsection 
    currentsubsection 
    若不想使用自动生成的目录,可以手工输入 
     
    中文支持-CJK宏包 
     
    中文模板 
    \documentclass[CJK]{beamer} 
    ....... 
    \usepackage{CJK} 
    ...... 

     
    beamer中的一些预定义环境 
    theorem,lemma,corollary,definition,... 
    Theorem(费马) 
    block环境-->类似定理环境,可自选标题 

     
    colums环境 

     
    beamer中的罗列环境 
    应多使用罗列环境 
    可以嵌套使用,但通常不要超过2层 
    罗列条目的自动逐段显示 
    \beamerdefaultoverlayspecification{<+->} 
    手工指定逐段显示的内容:<数字范围> 
    如:<3>,<-3>,<2-4>,<2-> 
     
    抄录环境semiverbatim 

    使用该环境,需在frame后加[fragile]或[containsverbatim]选项 
    \,{,}仍然保持特殊含义 
    verbatim仍然可以使用 
     
    条目不同性质内容用\newblock分隔 
     
    插入图片 
    \includegraphics[scale=0.5]{***.png} 
     
    插入多媒体:multimedia宏包 
    插入电影 
    \movie[autostart]{}{***.wmv} 
    插入声音 
    \sound[autostart]{}{***.wav} 
    插入logo 
    \pgfdeclareimage[height=.8cm]{logo}{math} 
    \logo{\pgfuseimage{logo}} 
    在幻灯片右下角插入logo 
     
    幻灯片的切换 
    \transblindshorizontal 
    \transblindsvertical 
    \transboxin 
    \transboxout 
    \transdissolve 
    \transglitter 
    \transsplithorizontalin 
    \transsplitverticalin 
    \transsplithorizontalout 
    \transsplittverticalout 
    \transwipe 
     
    导航图标 
    \setbeamertemplate{navigation symbols}%{\insert***navigationsymbol} 
    其中***可以为 
    slide,frame,subsection,section,doc,backfindforward 
    多个导航图标,用逗号分隔 
    取消 
    \setbeamertemplate{navigation symbols}{} 
     
     
    +--------------------------------------+ 
    |beamer中动态时间和倒计时的最终解决办法| 
    +--------------------------------------+ 
     
     
    摘自 bbs.ctex.org 
     
    pdflatex通过。不可以用web宏包,否则和beamer冲突。 
    颜色字体,时间格式等参数自己设。 
    有些要参考 JavaScript,如时间格式。 
     
     
    \documentclass[pdftex,8pt]{beamer} 
    \mode{ 
    \usetheme{CambridgeUS} 
    \useinnertheme{default} 
    \usecolortheme{orchid} 
    \usecolortheme{whale} 
    \usefonttheme{default} 

     
    \usepackage{pgf,pgfrcs,pgfarrows,pgfnodes,pgfautomata,pgfheaps,pgfshade} 
    \usepackage{xcolor} 
    \usepackage{amsmath,amssymb} 
    \usepackage[latin1]{inputenc} 
    \usepackage{colortbl} 
    \usepackage[english]{babel} 
    \usepackage{times} 
    \usepackage{hyperref} 
    \usepackage{graphicx} 
    \usepackage[final]{pdfpages} 
    \usepackage{textcomp} 
    \usepackage{multicol} 
     
    %**************************************** 
    \usepackage{eforms} 

    %************************************************ 
     
     
    \let\oldfootnote\footnote 
    \renewcommand\footnote[1]{\oldfootnote{% 
    \renewcommand\baselinestretch{1}% 
    \large\scriptsize\ignorespaces#1}} 
    \addtolength{\footnotesep}{1pt} 
     
    \setlength{\abovecaptionskip}{2pt} 
    \setlength{\belowcaptionskip}{1pt} 
    \makeatletter 
      \newcommand\figcaption{\def\@captype{figure}\caption} 
      \newcommand\tabcaption{\def\@captype{table}\caption} 
    \makeatother 
    \setbeamertemplate{caption}[numbered] 
     
    \usepackage[absolute,overlay]{textpos} 
    \usepackage{tikz} 
     
     
    \title[Title short]{Title long} 
    \subtitle{Subtitle subtitle}% 
    \author[authorshort]{\large{authorlong}}% 
    \institute[Schoolshort]{\large{School of ......}}% 
    %************************* 
    \newcommand{\timemark}% 
    {\textField[\BC{0.2 0.2 0.7}\BG{0.2 0.2 0.7}% 
     \textFont{TiRo}\textSize{5}\textColor{1 1 1 rg}]{datetime}{2cm}{4bp}} 
    %参数可以自己改 
    \date[\timemark]{\today}%时间标签 
     
    %**************************** 

     
     
    倒计时 

    +-----------+ 
    |例     子 1| 
    +-----------+ 
    % 13-4-1.tex 用 pdfLaTeX 编译 
     
    \documentclass[cjk]{beamer} 
    \mode<presentation> 

      \usetheme{Warsaw} 
      % 可供选择的主题参见 beameruserguide.pdf, 第 134 页起 
      % 无导航条的主题: Bergen, Boadilla, Madrid, Pittsburgh, Rochester; 
      % 有树形导航条的主题: Antibes, JuanLesPins, Montpellier; 
      % 有目录竖条的主题: Berkeley, PaloAlto, Goettingen, Marburg, Hannover; 
      % 有圆点导航条的主题: Berlin, Dresden, Darmstadt, Frankfurt, Singapore,  
    Szeged; 
      % 有节与小节导航条的主题: Copenhagen, Luebeck, Malmos, Warsaw 
     
    %  \setbeamercovered{transparent} 
      % 如果取消上一行的注解 %, 就会使得被覆盖部分变得透明(依稀可见) 

     
    \usepackage{CJK} 

     
    \begin{document} 
    \begin{CJK*}{GBK}{kai} 
    \CJKtilde 
    \title{没有最大的素数} 
     
    \author[\CJKfamily{fs}王某某]{王某某\\ \texttt{who@where.com}} 
    \date[CFP 2003]{奇妙问题探讨大会, 2003} 
     
    \begin{frame} 
      \titlepage 
    \end{frame} 
     
    \begin{frame} 
      \frametitle{概要} 
      \tableofcontents 
    \end{frame} 
     
    \section{动机} 
    \subsection{我们研究的基本问题} 
     
    \begin{frame} 
      \frametitle{什么是素数} 
      \begin{dfn} 
      \alert{素数}就是只有两个因子的数. 
      \end{dfn} 
      \begin{ex} 
        \begin{itemize} 
        \item 2~是素数。 
        \pause 
        \item 3~是素数。 
        \pause 
        \item 4~不是素数~(它有~\alert{3}~个因子)。 
        \end{itemize} 
      \end{ex} 
    \end{frame} 
     
    \begin{frame} 
      \frametitle{没有最大素数} 
      \framesubtitle{证明使用了\textit{归谬法}} 
     
      \begin{thm} 
      没有最大素数。 
      \end{thm} 
      \begin{proof}[证明] 
        \begin{enumerate} 
        \item<1-> 假设~$p$~是最大素数. 
        \item<2-> 令~$q$~是前~$p$~个数的乘积. 
        \item<3-> 则~$q$~不被它们中的任何一个除尽. 
        \item<1-> 因此~$q$~也是素数而且比~$p$~大.\qedhere 
        \end{enumerate} 
      \end{proof} 
      \uncover<4->{证明使用了\textit{归谬法}} 
    \end{frame} 
     
    \section{未解决的问题} 
     
    \begin{frame} 
      \frametitle{还能做什么?} 
      \begin{columns}[t] 
      \column{.5\textwidth} 
      \begin{block}{已解决的问题} 
        有多少素数? 
      \end{block} 
      \column{.5\textwidth} 
      \begin{block}{未解决的问题} 
        是否每个偶数都是两个素数之和?\cite{Goldbach1742} 
      \end{block} 
      \end{columns} 
    \end{frame} 
     
    \begin{frame} 
      \begin{thebibliography}{10} 
      \bibitem{Goldbach1742}[Goldback, 1742] 
        Christian Goldback. 
        \newblock A problem we should try to solve before the ISPN '43 deadline, 
        \newblock \emph{Letter to Leonard Euler}, 1742. 
      \end{thebibliography} 
    \end{frame} 
     
    \begin{frame}[fragile] 
      \frametitle{寻找素数的 算法

     
      \visible<4->{Note the use of \alert{\texttt{std::}}.} 
    \end{frame} 
     
     
    \end{CJK*} 
    \end{document} 
     
    +-----------+ 
    |例     子 2| 
    +-----------+ 
    % 13-4-2.tex 用 pdfLaTeX 处理 
     
    \documentclass[table]{beamer} 
     
    \mode<presentation> 

      \usetheme{default} 
      % 可供选择的主题参见 beameruserguide.pdf, 第 134 页起 
      % 无导航条的主题: Bergen, Boadilla, Madrid, Pittsburgh, Rochester; 
      % 有树形导航条的主题: Antibes, JuanLesPins, Montpellier; 
      % 有目录竖条的主题: Berkeley, PaloAlto, Goettingen, Marburg, Hannover; 
      % 有圆点导航条的主题: Berlin, Dresden, Darmstadt, Frankfurt, Singapore,  
    Szeged; 
      % 有节与小节导航条的主题: Copenhagen, Luebeck, Malmos, Warsaw 
     
      \setbeamercovered{transparent} 
      % 如果取消上一行的注解 %, 就会使得被覆盖部分变得透明(依稀可见) 

     
    \usepackage{times} 
    \usepackage{pifont} 
     
    \begin{document} 
    \begin{frame} 
    \begin{itemize} 
    \item<1-|  alert@1> First point. 
    \item<2-|  alert@2> Second point. 
    \item<3-|  alert@3> Third point. 
    \end{itemize} 
    \end{frame} 
     

     

     

     
    \begin{frame} 
    \rowcolors[]{1}{blue!20}{blue!10} 
    \begin{tabular}{l!{\vrule}cccc} 
      Class & A & B & C & D  \\\hline 
      X     & 1 & 2 & 3 & 4  \\\pause 
      Y     & 3 & 4 & 5 & 6  \\\pause 
      Z     & 5 & 6 & 7 & 8 
    \end{tabular} 
    \end{frame} 
     

     
    \newenvironment{ballotenv} 
    {\only{% 
      \setbeamertemplate{itemize item}{\ding{56}}% 
      \setbeamertemplate{itemize subitem}{\small\ding{56}}% 
      \setbeamertemplate{itemize subsubitem}{\footnotesize\ding{56}}}} 
    {} 
     
    \setbeamertemplate{itemize item}{\ding{52}} 
    \setbeamertemplate{itemize subitem}{\small\ding{52}} 
    \setbeamertemplate{itemize subsubitem}{\footnotesize\ding{52}} 
     
    \begin{frame} 
    \begin{itemize} 
    \item<1-|  ballot@1> First point. 
    \item<2-|  ballot@2> Second point. 
    \item<3-|  ballot@3> Third point. 
    \end{itemize} 
    \end{frame} 
     

    \end{document} 
     
     
    +------------+ 
    |TeX 使用指南| 
    +------------+ 
     
    如何把多个文件组装在一起? 
    所用命令:\include, \includeonly 
    TeX Guru的回答 
    我想使目录表中显示到\subsubsection的标题该怎么办? 
    我想使目录表中显示附录,但前面没有第??章字样该怎么办? 
    所用命令:\setcounter, \tableofcontents \addcontentsline 
    TeX Guru的回答 
    当开始新的一节时,我希望公式自动从1开始编号,那该怎么办? 
    所用命令:\@addtoreset, \makeatletter, \makeatother, 
    TeX Guru的回答 
    章节标题太长该怎么办? 
    所用命令:\section, \\ 
    TeX Guru的回答 
    在LaTeX中,插图单独显示在一页上,而且有相当多的空白。可我如果改成 
    \begin{figure}[t],就会把插图显示在文档尾部。这是为什么呢? 
    所用命令:\renewcommand, \floatpagefraction, \topfraction, \bottomfraction,  
    \textfraction. 
    TeX Guru的回答 
    在LaTeX中,如何使参考文献的编号只是没有方括号的阿拉伯数字或者上标? 
    所用命令:\renewcommand, \@biblabel, \makeatletter ... \makeatother 
    TeX Guru的回答 
    我用\pagestyle{empty}无法去掉所有页的页码,到底怎样可以去掉所有页的页码呢? 
    所用命令:\pagestyle, \thispagestyle 
    TeX Guru的回答 
    生成了有中文字符的DVI文件,该如何把它转化成PostScript文件呢? 
    所用程序:patchdvi, cdvia, dvidrv, dvips32 
    TeX Guru的回答 
    在文件中,想把用其它方法生成的PostScript图形包含进来, 可以采用什么方法? 
    所用命令:\includegraphics, \epsfig 
    TeX Guru的回答 
    CCT EMTeX中的汉字字体只有可怜的5种,而市面上却有相当多的 适用于Windows中的 
    True Type字体,有可能在CCT中用这些字体吗? 
    所用程序:cdvia -c 
    TeX Guru的回答 
    在调试LaTeX文件时,如果有一长段中出现了令人讨厌的错误,想把它去掉,但又希望继 
    续编译它后面的部分。如果LaTeX有块注释功能就太好了, 
    所用命令:\iffalse, \fi(TeX命令) 
    TeX Guru的回答 
    在Book类中的\pagestyle{}命令可以生成较为复杂的页眉,可我希望在页眉与正文之间有 
    一横线,该怎么办? 
    所用命令:\leftmark, \rightmark, \@evenhead, \@oddhead, \makeatletter,  
    \makeatother 
    TeX Guru的回答 
    +-------------+ 
    |TeX 常见问题1| 
    +-------------+ 
     
    整理:happytex 
     
    1.\makeatletter 和 \makeatother 的用法? 
     
    答:如果需要借助于内部有\@字符的命令,如\@addtoreset,就需要借助于另两个命令 
    \makeatletter, \makeatother。 
     
    下面给出使用范例,用它可以实现公式编号与节号的关联。 
    \begin{verbatim} 
    \documentclass{article} 
    ... 
    \makeatletter %  '@' is now a normal "letter" for TeX
    \renewcommand\theequation{\thesection.\arabic{equation}} 
    \@addtoreset{equation}{section} 
    \makeatother %  '@' is restored as a "non-letter" character for TeX

     
    16.辅助的Package放到哪个目录下? 
     
    答:不过非 miktex 自带的包最好放在 localtexmf 下,这样以后升级的时候方便些。 
     
    17.如何用fancyhdr宏包实现在页眉下画一粗一细两条横线? 
     
    答:试试下面的命令: \usepackage{fancyhdr} 
    \newcommand{\makeheadrule}{% 
    \makebox[0pt][l]{\rule[.7\baselineskip]{\headwidth}{0.8pt}}% 
    \rule[.6\baselineskip]{\headwidth}{0.4pt}\vskip-.8\baselineskip} 
    \makeatletter \renewcommand{\headrule}{% 
    {\if@fancyplain\let\headrulewidth\plainheadrulewidth\fi  
    \makeheadrule}}\makeatother 

     
    18.能不能改变Chapter 起始页码仅从奇数页开始? 
     
    答:用 \documentclass[openany]{book} 让 \chapter 可以从任何页面开始。 
     
    19.如何在文中实现带圈的数字? 
     
    答:1)使用\textcircled{}命令,后面的参数可以是一个字符或者汉字(配合CJK),甚 
    至也可以是公式,但是它只会给第一个字符或者汉字加上 > 合适的圆圈,字体放缩命令 
    对它也有效,因此可以利用这点实现两个字符加圈的效果,但是需要仔细的调整尺寸,参 
    考如下命令: > \Large{\textcircled{\small{12}}}、\textcircled{九}。 
     
    2)使用pifont宏包,那里面有很漂亮的带圈的各种数字符号(仅限于阿拉伯数字,如果 
    想使用加圈的中文“一”至“九”就不行了)。在.tex > 文件中尝试下列命令: 
    \ding{172}~\ding{211}。 
     
    3)在GB和GBK字库中本来就有10个加圈数字形式,可以直接在CJK中使用。如果不超过11 
    的话应该够用了呵呵:①②③④⑤⑥⑦⑧⑨⑩,这些汉 > 字可以直接使用数字软键盘输 
    入(以智能ABC输入法为例,其实大部分输入法都是一样的):打开软键盘,选择“数字 
    序号”即可看到。 
     
    20.如何产生可变长的 Longrightarrow? 
     
    答:用\xleftarrow and \xrightarrow,例如 

    21.如何在公式中表示上下堆积关系? 
    答:在latex有一个命令\stackre{上部符号}{下部符号},但更好的一个是用宏包 
    amslatex中命令\overset和\underset。一个例子是 

    +-------------+ 
    |TeX 常见问题2| 
    +-------------+ 
     1。怎样在多栏环境中使用单栏图表? 
    答:如果你在多栏环境中使用
    , 图形是不会出现的 
    。如果你用另外的命令
    , 图形就会超出右边或有 
    页的上边。解决的方法是把下面命令放在

     
    10。怎样把一个大表格横向放置? 
    答:用宏包\usepackage{rotating},然后变换 

    为 

     
    注意这个旋转很可能在你的预览中不会再现。 
     
    11。关于itemize。 
    答: 清单至多有四级 
    $\bullet$ - \labelitemi 
    \textbf{ --} - \labelitemii 
    $\ast$ - \labelitemiii 
    $\cdot$ - \labelitemiv 
    你可重新定义 
    \def{\labelitemi}{$\spadesuit$} 
    \renewcommand{\labelitemi}{$\spadesuit$} 
    也可在itemize 环境中\item命令中同时拥有不同的标签 

     
    数字序列至多四级顺序可显示,如 
    1,2 ... - \enumi 
    (a), (b) ... - \enumii 
    i,ii,... - \enumiii 
    A., B. ... - \enumiv 
     
    你也可指明选项,如 

     
    12。我怎样重新定义items之间的距离? 
    答:用miktex2.1中的mdwlist宏包,也可从CTAN的 
    macros/latex/contrib/supported/mdwtools.zip 上下载后。 
     
    13。怎样改变行距? 
    答:用doublespace宏包,参数"coef"是\baselinestretch文本中定义数值,则可用命令 

     
    14。 怎么定义一个定理型环境? 
    答:用theorem宏包,例子: 
     
    \newtheorem{howto}{Questions}[section] 
    \theoremstyle{change} 
    \theorembodyfont{\itshape} 
    \theoremheaderfont{\scshape} 
    15。怎样在latex中包括一每列的源文件? 
    答:例如 
    \floatstyle{boxed} 
    \restylefloat{figure} 

     
    16。怎样把附录A中的公式序号变为 A.1, A.2, .... B.1, B.2, ...的形式? 
    答: \appendix 
    \makeatletter 
    \renewcommand\theequation{A.\@arabic\c@equation } 
    \makeatother 
    \setcounter{equation}{0} 
    或者 \renewcommand{\theequation}{A.\arabic{equation}} 
    17。怎样把一个 \vertatim 放入 verbatim环境中? 
    答:用fancyvrb宏包定义自己的 verbatim环境。 
     
    18。怎样改变主文本中的字体? 
    答:命令: \textnorml;申明: \normalfont\ttfamiliy 
    19。怎样定义一个命令或申明 ? 
     
    答:例如一个命令: \newcommand{\name}{1]{\textsc{#1}} 
    一个申明: \newcommand{\name}{1]{{\normalfont\scshape #1}} 
    20。怎样合并字体命令? 
    答: \textrm{...} {\rmfamily...} roman familiy 
    \textsf{...} {\sffamliy...} sans serif family 
    \texttt{...} {\ttfamily...} typewritter family 
    \textmd{...} {\mdserier...} medium series 
    \textbf{...} {\bfseries...} bold series 
    \textup{...} {\upshape...} upright shape 
    \textit{...} {\itshape...} italic shape 
    \textsl{...} {\slshape...} slanted shape 
    \textsc{...} {\scshape...} small caps shape 
    size \tiny \scriptsize \footnotesize \small \normalsize \large 
    \Large \LARGE \huge \Huge 
    \emph{...} {\em ...} emphasized 
    \textnormal{...} {\normalfont...} document font 
    21。 怎样在页眉和页脚中划一道横线? 
    答:用 fancyhdr宏包。 
     
    22。怎样改变章节字体(section fonts)? 
    答:用titlesec宏包,例如 
    \usepackage[nops,sf,small,compact]{titlesec} 
     
    23。怎样做一个页面设置? 
    答: \usepackage{fancyhdr} 
    \pagestyle{fancy} 
    \fancyhead{} %clear all fields 
    \fancyhead[RO, LE]{\bfseries \LaTeXe{} HOWTO} 
    \fancyfoot[LE, RO]{\thepage\ of \pageref{LastPage}} 
    \fancyfoot[LO, CE]{} 
    \fancyfoot[CO, RE]{Techical Report} 
    \renewcommand{\headrulewidth}{0.4pt} 
    \renewcommand{\footrulewidth}{0.4pt} 
     
    24。怎样实现"page M of N"的形式? 
    答:用lastpage宏包,任何时候你都可在文本中用 \pageref{LastPage},只是须注意当 
    用了fancyhdr宏包时,lastpage宏包就须在它后面。 
     
    25。怎样实现下划线的标题? 
     
    答:  
    \def\@evenhead{\makebox[0pt][l]{\rule[-0.15cm]{\textwidth}{0.1mm}}\hbox{}% 
     
    \textbf\thepage\hfil\leftmark}% 
     
    \def\@oddhead{\makebox[0pt][l]{\rule[-0.15cm]{\textwidth}{0.1mm}}\hbox{}% 
    {\rightmark}\hfil\textbf\thepage}% 
    26。 怎样把一个浮动对象固定下来? 
     
    答:例如 

    30。把一幅 .eps 横向放置后,怎样使标题变为相应的形式? 
     
    答: \usepackage{rotating} 
    和 

     
    +-------------+ 
    |TeX 常见问题3| 
    +-------------+ 
     
    压缩空间 
     
    1。页面设置 
     
    a4 会给你一个较小的页面,为了使用更多的控制,可用 geometry宏包和命令 \layout  
    。 
     
    2。改变长度 
     
    在latex里改变长度的命令是 \addtolength 和 \setlength。latex可认的是 cm, mm,  
    in 和 pt. 变量可设为负数。一个例子是 \addtolength{\parindent}{-5mm} 
     
    一些有用的变量是: 
     
    页面设置 
    \columnsep: 列间距 
    \topmargin: 页眉到页边的距离 
    \topskip: 页眉与正文的距离 
    \textheight: 正文的高度 
    \textwidth: 文本的宽度 
    \oddsidemargin: 奇数页的左面页边距 
    \evensidemargin : 偶数页的左面页边距 
    段落 
    \parindent: 段落缩进距离 
    \parskip: 段落间的距离 
    浮动图表 
    \floatsep: 浮动对象之间的距离 
    \textfloatsep: 最后一个浮动对象顶端或第一个浮动对象底端与正文之间的距离 
    \intextsep : 文中浮动顶端与底端所留的距离 
    \dbltextfloatsep 是在双列输出时用 \textfloatsep 的数值 
    \dblfloatsep 是在双列输出时用 \floatsep 的数值 
    \abovecaptionskip: 标题上方的距离 
    \belowcaptionskip: 标题下方的距离 
    数学公式 
    \abovedisplayskip: 公式前的距离 
    \belowdisplayskip: 公式后面的距离 
    \arraycolsep: 在一个array中列之间的空白长度 
    列表 
    \topsep: 第一个item和前面版落间的距离 
    \partopsep: 当在一个新页开始时加到 \topsep 的额外空间 
    \itemsep: 连续items之间的距离。 
    3。环境 
     
    宏包 atbeginend.sty 提供了 \BeforeBegin{environment}{code-to-execute},  
    \AfterEnd 等等命令。这些命令可去掉环境外面和内部的空间。例如  
    \AfterBegin{itemize}{\addtolength{\itemsep}{-\baselineskip}} 就在环境内以重新 
    设置 \itemsep 来压缩items之间的距离 。 
     
    mdwlist 宏包有一个 itemize* 环境; paralist 宏包提供了一个item之间距离压缩环境 
    和一个使每个item不在新的一段开始的 inparaenum 环境。 
     
    4。图表 
     
    为了节约空间,可用 subfigure 宏包把多幅图形放在一人图形环境中,也可用  
    floatflt 宏包把图形用文本包围起来。 
     
    当有图表时, LaTeX 缺省值不会在超过 70% 的页中加文本。这个可有  

     
    问题:LaTeX中如何使公式编号具有(1.2)这种格式? 
     
    回答:It is default style in book. In article style, 
          use the following command 
          \documentclass{article} 
          \usepackage{amsmath} 
          \numberwithin{equation}{section} 
         

           
    问题:tex中花体字母N怎么输入? 
     
    回答:不是花体字母N, 是标准的 $N$. 要用花体的话, $\mathcal {N}$ 
     
    问题:在LaTeX中怎样生成双线的方括号?哪儿有stmaryrd 
     
    回答: ftp://159.226.47.19/pub/TeX/Package/latex/contrib/other/misc/
     
    问题:请问如何把word文档转换成latex的格式? 
     
    回答:用mathtype4.0, 双击公式可打开公式编辑器, 
          设定菜单Preferences->Translaters 
          Translate to another launguage: 
          选latex2.09 and later 
          uncheck 'include translater name' and 'include mathtype data' 
          选中整个公式,^c, 到notepad里面^V就行了 
          我现在就这么干的。 不过熟悉之后,直接敲tex公式也不慢。


    from:  http://zh.wikipedia.org/wiki/Help:MATH

    http://blog.csdn.net/anxiaoxi45/article/details/39449445

    展开全文
  • ADC驱动器或差分放大器设计指南

    千次阅读 2017-06-15 18:08:18
    事实上,选择正确的ADC驱动器和配置极具挑战性。为了使鲁棒性ADC电路设计多少容易些,我们汇编了一套通用“路障”及解决方案。本文假设实际驱动ADC的电路——也被称为ADC驱动器或差分放大器——能够处理高速信号。 ...
    作为应用工程师,我们经常遇到各种有关差分输入型高速
    模数转换器(ADC)的驱动问题。事实上,选择正确的ADC驱动器和配置极具挑战性。为了使鲁棒性ADC电路设计多少容易些,我们汇编了一套通用“路障”及解决方案。本文假设实际驱动ADC的电路——也被称为ADC驱动器或
    差分放大器——能够处理高速信号。
    

    引言
    大多数现代高性能ADC使用差分输入抑制共模噪声和干扰。由于采用了平衡的信号处理方式,这种方法能将动态范围提高2倍,进而改善系统总体性能。虽然差分输入型ADC也能接受单端输入信号,但只有在输入差分信号时才能获得最佳ADC性能。ADC驱动器专门设计用于提供这种差分信号的电路——可以完成许多重要的功能,包括幅度调整、单端到差分转换、缓冲、共模偏置调整和滤波等。自从推出AD8138,1以后,差分ADC驱动器已经成为数据采集系统中不可或缺的信号调理元件。

    差分放大器 www.elecfans.com 

    图1:差分放大器。

    图1是一种基本的完全差分电压反馈型ADC驱动器。这个图与传统运放的反馈电路有两点区别:差分ADC驱动器有一个额外的输出端(VON)和一个额外的输入端(VOCM)。当驱动器与差分输入型ADC连接时,这些输入输出端可以提供很大的灵活性。

    与单端输出相反,差分ADC驱动器产生平衡的差分输出信号——相对于VOCM——在VOP与VON之间。这里的P指的是正,N指的是负。VOCM输入信号控制输出共模电压。只要输入与输出信号处于规定范围内,输出共模电压必定等于VOCM输入端的电压。负反馈和高开环增益致使放大器输入端的电压VA+和VA-实质上相等。

    为了便于后面的讨论,需要明确一些定义。如果输入信号是平衡信号,那么VIP和VIN相对于某个公共参考电压的幅度应该是相等的,相位则相反。当输入信号是单端信号时,一个输入端是固定电压,另一个输入端的电压相对这个输入端变化。无论是哪种情况,输入信号都被定义为VIP–VIN。

    差模输入电压VIN, dm和共模输入电压VIN, cm的定义见公式1和公式2。

      eq1,2
    (1, 2)

    虽然这个共模电压的定义应用于平衡输入时很直观,但对单端输入同样有效。输出也有差模和共模两种,其定义见公式3和公式4。

      eq3,4
    (3, 4)

    需要注意实际的输出共模电压VOUT, cm和VOCM输入端之间的差异,这个差异决定了输出共模电平。

    对差分ADC驱动器的分析比对传统运放的分析要复杂得多。为了简化代数表达式,暂且定义两个反馈系数β1和β2,见公式5和公式6。

     eq5,6 
    (5, 6)

    在大多数ADC驱动应用中β1= β2,但含有VIP、VIN、VOCM、β1和β2项的VOUT, dm通用闭环公式对于了解β失配对性能的影响非常有用。VOUT, dm的计算见公式7,其中包括了与频率相关的放大器有限开环电压增益A(s)。

     eq7 
    (7)

    当β1 ≠β2时,差分输出电压取决于VOCM——这不是理想的结果,因为它产生了偏移,并且在差分输出中有过大的噪声。电压反馈架构的增益带宽积是常数。有趣的是,增益带宽积中的增益是两个反馈系数平均值的倒数。当β1 =β2 ≡β时,公式7可以被简化为公式8。

     eq8 
    (8)

    这个表达式大家可能更加熟悉。当A(s) → ∞时,理想的闭环增益可以简化为RF/RG。增益带宽乘积公式看起来也很熟悉,其中的“噪声增益”与传统运放一样,等于1/β。

    反馈系数匹配的差分ADC驱动器的理想闭环增益见公式9。

     eq9 
    (9)

    输出平衡是差分ADC驱动器的一个重要性能指标,它分两个方面:幅度平衡和相位平衡。幅度平衡用于衡量两个输出在幅度方面的接近程度,对于理想放大器来说它们是完全一致的。输出相位平衡用于衡量两个输出的相位差与180°的接近程度。输出幅度或相位的任何失衡都会在输出信号中产生有害的共模分量。输出平衡误差(公式10)是差分输入信号产生的输出共模电压与相同输入信号产生的输出差模电压的对数比值,单位是dB。

     eq10 
    (10)

    内部共模反馈环路迫使VOUT, cm等于输入端VOCM的电压,从而达到完美的输出平衡。

    将输入端接到ADC驱动器
    处理高速信号的系统经常会用到ADC驱动器。分隔距离超过信号波长一小段的器件之间必须用具有受控阻抗的电气传输线连接,以避免破坏信号完整性。当传输线的两端用其特征阻抗端接时可以取得最佳性能。驱动器一般放在靠近ADC的地方,因此在它们之间不要求使用受控阻抗连接。但到ADC驱动器输入端的引入信号连接通常很长,必须采用正确电阻端接的受控阻抗连接。

    不管是差分还是单端,ADC驱动器的输入阻抗必须大于或等于理想的终端电阻值,以便添加的终端电阻RT能与放大器输入端并联达到要求的电阻值。本文讨论的例子中的所有ADC驱动器都设计成具有平衡的反馈比,如图2所示。

    差分放大器的输入阻抗 www.elecfans.com 

    图2:差分放大器的输入阻抗。

    因为两个放大器输入端之间的电压被负反馈驱动到零,因此两个输入端处于连接状态,差分输入阻抗RIN就简单地等于2×RG。为了匹配传输线阻抗RL,需要将由公式11计算得到的电阻RT跨接在差分输入端。图3给出了典型的电阻值,其中RF =RG=200Ω,理想的RL, dm=100Ω,RT=133Ω。

     eq11 
    (11)

    匹配100Ω传输线 www.elecfans.com 

    图3:匹配100Ω传输线。

    单端输入的端接更加麻烦。图4描述了采用单端输入和差分输出的ADC驱动器工作原理。

    single-ended input to adc driver 

    图4:采用单端输入的ADC驱动器例子。

    虽然输入是单端的,但VIN, dm等于VIN。因为电阻RF和RG是相等和平衡的,因此增益是1,而且差分输出VOP–VON等于输入,即4Vp-p。VOUT, cm=VOCM=2.5V,而且从下方的反馈电路可以看出,输入电压VA+和VA-等于VOP/2。

    根据公式3和公式4,VOP=VOCM+VIN/2,即2.5V±1V的同相摆幅;VON=VOCM–VIN/2,即2.5V±1V的反相摆幅。这样,VA+和VA-的摆幅等于1.25V±0.5V。必须由VIN提供的电流交流分量等于(2V–0.5V)/500Ω=3mA,因此到地的电阻必须匹配,从VIN看过去为667Ω。

    当每个环路的反馈系数都匹配时,公式12就是计算这个单端输入电阻的通式,其中RIN, se是单端输入电阻。

     eq12 
    (12)

    这是计算终结电阻的出发点。然而值得注意的是,放大器增益公式基于零阻抗输入源的假设。由于存在单端输入造成的不平衡而必须加以匹配的重要源阻抗只会增加上面RG的阻值。为了保持平衡,必须增加下面RG的阻值来实现匹配,但这会影响增益值。虽然可以为解决端接单端信号问题而采用一个封闭形式的解决方案,但一般使用迭代的方法。在下面的例子中这种需求将变得很明显。

    在图5中,为了保持低的噪声,要求单端到差分增益为1,输入终结电阻为50Ω,反馈和增益电阻值在200Ω左右。

    根据公式12可以算出单端输入电阻为267Ω。公式13表明,并联电阻RT应等于61.5Ω,才能将267Ω输入电阻减小至50Ω。

     

    single-ended input impedance
    图5:单端输入阻抗。

     eq13 
    (13)

    图6是带源电阻和终端电阻的电路。带50Ω源电阻的源开路电压为2Vp-p。当源用50Ω端接时,输入电压减小到1Vp-p,这个电压也是单位增益驱动器的差分输出电压。

    source and termination resistances 

    图6:带源电阻和终端电阻的单端电路。

    这个电路初看起来非常完整,但不匹配的61.5Ω电阻与50Ω的并联并增加到了上面的RG电阻,这就改变了增益和单端输入电阻,并且造成反馈系数失配。在低增益情况下,输入电阻的变化很小,暂时可以忽略,但反馈系数仍然必须匹配。解决这个问题的最简单方法是增加下面RG的阻值。图7是一种Thévenin等效电路,其中上方的并联组合用作源电阻。

    thevenin equivalent 

    图7:输入源的Thévenin等效电路。

    有了这种替代方案后,就可以将27.6Ω的电阻RTS增加到下面的环路中实现环路反馈系数的匹配,如图8所示。

    balanced single-ended termination 

    图8:平衡的单端端接电路。

    注意,1.1Vp-p的Thévenin电压要大于1Vp-p的正确端接电压,而每个增益电阻增加了27.6Ω,降低了闭环增益。对于大电阻(>1kΩ)和低增益(1或2)来说这些相反的效应基本抵消,但对于小电阻或较高增益来说并不能完全抵消。图8所示电路现在分析起来就很容易了,其中的差分输出电压可以用公式14计算。

     eq14 
    (14)

    差分输出电压并不完全等于理想的1Vp-p ,但可以通过修改反馈电阻实现最终独立的增益调整,如公式15所示。

     eq15 
    (15)

    图9是用标准1%精度电阻实现的完整电路。

    complete single-ended termination 

    图9:完整的单端端接电路。

    观察: 参考图9,驱动器的单端输入电阻RIN, se由于RF和RG的改变而变化。驱动器上端环路的增益电阻是200Ω,下端环路的电阻是200Ω+28Ω=228Ω。在不同增益电阻值的情况下计算RIN, se首先要求计算两个β值,见公式16和公式17。

     eq16
    (16)
     eq16
    (17)

    输入电阻RIN, se的计算见公式18。

     eq18 
    (18)

    这个值与原来计算的267Ω稍有不同,但对RT的计算没有显著的影响,因为RIN, se与RT是并联的关系。

    如果需要更精确的总体增益,可以使用更高精度或串联的可调电阻。

    上述描述的单次迭代方法非常适合闭环增益为1或2的场合。增益越高,RTS的值越接近RG值,用公式18计算的RIN, se值与用公式12计算的RIN, se值之间的差异就越大。在这些情况下要求采用多次迭代。

    多次迭代并不难实现:最近ADI公司发布的可下载的差分放大器计算工具, ADIsimDiffAmp™(参考文献2)和 ADI Diff Amp Calculator™(参考文献3)足以担当此任,它们能在几秒内完成上述计算。

    输入共模电压范围
    输入共模电压范围(ICMVR)规定了正常工作状态下可以施加于差分放大器输入端的电压范围。在这些输入端上呈现的电压可以被称为ICMV、Vacm或VA±。这个ICMVR指标经常被误解。最常遇到的难题是确定差分放大器输入端的实际电压,特别是相对于输入电压而言。知道变量VIN, cm、β和VOCM的值后,当β不相等时使用通式19、当β相等时使用简化公式20就可以计算出放大器的输入电压(VA±)。

     eq19 
    (19)
     eq20 
    (20)

    记住VA始终是按比例缩小的输入信号,这一点非常有用(见图4)。不同的放大器类型有不同的输入共模电压范围。ADI公司的高速差分ADC驱动器有两种输入级配置,即中心型和偏移型。中心型ADC驱动器的输入电压离每个电压轨有约1V的距离(因此叫中心型)。而偏移型输入级增加了两个晶体管,允许输入端电压摆幅更接近–VS轨。图10是一个典型差分放大器(Q2和Q3)的简化输入原理图。

    diff amp with shifted icmvr 

    图10:具有偏移型ICMVR的简化差分放大器。

    偏移型输入架构允许差分放大器处理双极性输入信号,即使放大器是采用单电源供电,因此这种架构非常适合输入是地或地电平以下的单电源应用。在输入端增加的PNP晶体管(Q1和Q4)可以将差分对的输入电压向上偏移一个晶体管的Vbe电压。例如,当-IN端电压为-0.3V时,A点电压将为0.7V,允许差分对正常工作。没有PNP(中心型输入级)时,A点的-0.3V电压将使NPN差分对处于反向偏置状态,因而无法正常工作。

    表1提供了ADI公司ADC驱动器的多数指标一览表。对这张表粗略一看就能发现哪些驱动器具有偏移型ICMVR,哪些没有。

     

    输入和输出耦合:交流或直流
    需要交流耦合还是直流耦合对差分ADC驱动器的选择有很大的影响。输入和输出耦合之间的考虑因素也不同。

    交流耦合型输入级电路见图11。

    ac-coupled adc driver 

    图11:交流耦合型ADC驱动器。

    对于采用交流耦合输入的差分至差分应用来说,放大器输入端呈现的直流共模电压等于直流输出共模电压,因为直流反馈电流被输入电容隔离了。另外,直流反馈系数也是匹配的,完全等于单位1。VOCM——和由此得到的直流输入共模电压——经常被设置在电源电压的一半左右。具有中心型输入共模范围的ADC驱动器非常适合这类应用,它们的输入共模电压接近规定范围的中心。

    交流耦合单端至差分应用与对应的差分输入应用非常相似,但在放大器输入端具有共模纹波——按比例缩小的输入信号“复制品”。具有中心型输入共模范围的ADC驱动器将平均输入共模电压设定在规定范围的中间,因而能为大多数应用中的纹波提供足够的富余度。

    当输入耦合方式可选时,值得人们注意的是,采用交流耦合输入的ADC驱动器比采用直流耦合输入的相似驱动器耗散更少的功率,因为两个反馈环路中都不存在直流共模电流。

    当ADC要求输入共模电压与驱动器输出端电压完全不同时,交流耦合ADC驱动器的输出就非常有用。当VOCM值被设在电源电压一半附近时,驱动器将有最大的输出摆幅,但当驱动要求非常低输入共模电压的低电压ADC时会出现问题。走出这个困境的简单方法(图12)是驱动器输出和ADC输入之间采用交流耦合连接,从驱动器输出中去除ADC的直流共模电压,并允许适合ADC的共模电平应用于交流耦合侧。例如,驱动器可以工作在单5V电源和VOCM=2.5V条件下,而ADC可以工作在单1.8V电源,此时在标记为ADC CMV的点必需施加0.9V的输入共模电压。

    dc-coupled inputs, ac-coupled outputs 

    图12:采用交流耦合输出的直流耦合输入电路。

    具有偏移型输入共模范围的驱动器一般最适合工作在单电源直流耦合系统中,这是因为输出共模电压通过反馈环路实现了分压,而且它的可变分量可以非常接近地,即负电压轨。当采用单端输入时,输入共模电压由于输入相关的纹波而更接近负电压轨。

    采用双电源、单端或差分输入以及交流或直流耦合的系统通常可以采用任一种输入级电路,因为富余度增加了。

    表2总结了在输入耦合和电源的各种组合方式下最常用的ADC驱动器输入级电路类型。然而,这些选择未必总是最好的,应该对每个系统进行具体分析。

     

    输出摆幅
    为了最大化ADC的动态范围,应该将它驱动到满输入范围。但需要注意:将ADC驱动得太厉害可能有损输入电路,而驱动不够的话又会降低分辨率。将ADC驱动到满输入范围并不意味着放大器输出幅度必须达到最大。差分输出的一个主要好处是每个输出幅度只需达到传统单端输出的一半。驱动器输出可以远离电源轨,从而减少失真。不过对单端驱动器来说没有这个好处。当驱动器输出电压接近电压轨时,放大器将损失线性度,并引入失真。

    对于对每一毫伏的输出电压都有要求的应用来说,表1显示相当多的ADC驱动器能够提供轨到轨输出,其典型富余量从几毫伏到几百毫伏不等,具体取决于负载。

    harmonic distortion vs vocm 

    图13:采用5V电源的ADA4932在各种频率下的谐波失真与VOCM的关系。

    图13是ADA4932在各种频率下的谐波失真与VOCM的关系图,是典型输出摆幅在每个轨1.2V内(富余量)确定的。输出摆幅是信号的VOCM与VPEAK之和(1V)。值得注意的是,失真在2.8V以上(3.8 VPEAK或5V往下1.2V)开始迅速增加。在低端,失真在2.2V(-1 VPEAK)时仍很低。同样的现象还将出现在带宽和压摆率的讨论中。

    噪声
    ADC的非理想特性包括量化噪声、电子或随机噪声和谐波失真。在大多数应用中重要的一点是,噪声通常是宽带系统中最重要的性能指标。

    所有ADC内部都存在量化噪声,并且取决于位数n,n越大量化噪声就越小。因为即使“理想”转换器也有量化噪声,因此量化噪声可以用作比较随机噪声和谐波失真的基准。ADC驱动器的输出噪声应该接近或低于ADC的随机噪声和失真。下面先讨论ADC噪声和失真的特征,然后介绍如何衡量ADC驱动器噪声与ADC性能之间的关系。

    量化噪声产生的原因是ADC将具有无限分辨率的模拟信号量化成有限数量的离散值。n位ADC有2n个二进制值。两个相邻值之间的差代表了可以分辨的最小差值,这个差值被称为量化等级的最低有效位(LSB),或q。因此一个量化等级等于转换器量程的1/2n。如果一个不断变化的电压经过一个完美的n位ADC转换,然后转换回模拟信号,再从ADC输入中减去这个信号,那么差值看起来就像噪声。它有一个公式21计算所得有效值(rms):

     eq21 
    (21)

    从这里可以得出n位ADC在其奈奎斯待带宽上的信号与量化噪声比的对数(dB)公式22,这也是n位转换器所能取得的最佳信噪比(SNR)。

    ADC中的随机噪声包含了热噪声、散粒噪声和闪烁噪声,一般要大于量化噪声。由于ADC的非线性产生的谐波失真会在输出信号中产生与输入信号谐波有关的有害信号。总的谐波失真和噪声(THD+N)是一个重要的ADC性能参数,它衡量了电子噪声和谐波失真与接近ADC满量程输入范围的模拟输入信号之间的关系。电子噪声积分的带宽包括了所要考虑的最后一个谐波频率。THD中的“T”(ttotal,总和)包括了前五个谐波失真分量,是连同噪声一起的和的平方根,见公式23。

     eq22 
    (22)
     eq23 
    (23)

    公式23中的v1是输入信号,v2到v6是前五个谐波失真分量,vn是ADC的电子噪声。(THD+噪声)的倒数被称为信号与噪声失真比,简称SINAD,通常用dB表示,见公式24。

     eq24 
    (24)

    如果SINAD被信号与量化噪声比代替(公式22),我们就能定义转换器具有的有效位数(ENOB),前提是这个转换器的信号与量化噪声比与SINAD相同(公式25)。

     eq25 
    (25)

    ENOB也能用SINAD项表达,见公式26。

     eq26 
    (26)

    ENOB可以用来比较ADC驱动器的噪声性能和ADC的噪声性能,进而判断是否适合驱动这个ADC。图14是一个差分ADC噪声模型。公式27表明了通常情况下当β1=β2≡β时,八个噪声源中每个源对总输出噪声密度的贡献。

    noise model 

    图14:差分ADC驱动器的噪声模型。

    公式27表明了通常情况下当β1=β2≡β时,八个噪声源中每个源对总输出噪声密度的贡献。

     eq27 
    (27)

    总输出噪声电压密度vno, dm是通过计算这些分量的和平方根得到的。将这些公式输入电子表格是计算总输出噪声电压密度的最好方式。ADI公司网站上还新推出了ADI差分放大器计算器(参考文献3),用它能快速计算噪声、增益和差分ADC驱动器的其它参数值。

    现在可以将ADC驱动器的噪声性能与ADC的ENOB作一比较。描述这一过程的例子是为采用5V电源工作的AD9445 ADC选择和评估一款增益为2、2V满量程输入的差分驱动器。它能处理用一个单极点滤波器限制、占用50MHz(-3dB)带宽的直接耦合宽带信号。从数据手册中记载的各种条件下的ENOB参数列表中可以发现:对应50MHz的奈奎斯特带宽,ENOB=12位。

    ADA4939 是一款能够被直接耦合的高性能宽带差分ADC驱动器。在噪声性能方面它是驱动AD9445的合适产品吗?ADA4939数据手册针对近似为2的差分增益推荐的RF =402Ω、RG=200Ω,数据手册给出的这种情况下的总输出电压噪声密度为9.7nV/Hz。首先计算给定恒定输入噪声功率谱密度下的系统噪声带宽BN,它是输出与决定系统带宽的实际滤波器相同噪声功率的等效矩形低通滤波器的带宽。对于一个单极滤波器,BN等于π/2乘以3dB带宽,如公式28所示。

      eq28
    (28)

    然后在系统带宽的平方根内对噪声密度进行积分,得到输出噪声有效值(公式29)。

     eq29 
    (29)

    假定噪声幅度呈高斯分布,那么峰峰值噪声的计算可以使用常见的±3σ门限(在99.7%的时间内噪声电压摆幅位于这些门限之间),见公式30:

     eq30 
    (30)

    现在可以在12位ENOB、2V满量程输入范围基础上对驱动器的峰峰输出噪声和AD9445 LSB的1 LSB电压进行比较,其中LSB的计算见公式31。

     eq31
    (31)

    相对于12位ENOB,驱动器的峰峰输出噪声与ADC的LSB具有可比性。因此从噪声角度看,ADA4939驱动器非常适合这种应用。最终还必须通过搭建和测试驱动器/ADC组合作出决定。

    电源电压
    考虑电源电压和电流是缩小ADC驱动器选择范围的快速途径。表1提供了不同电源电压下ADC驱动器性能的快速查找表。电源电压会影响带宽、信号摆幅和ICMVR。衡量这些指标并进行反复权衡对差分放大器的选择而言至关重要。

    电源抑制(PSR)是另外一个重要的参数。作为放大器输入的电源引脚的作用经常被人忽视。电源线上或耦合进电源线的任何噪声对输出信号都有潜在的破坏作用。

    考虑ADA4937-1的电源线上存在60MHz、50mVp-p的噪声这样一个例子。它的PSR在50MHz时是-70dB,这意味着电源线上的噪声在放大器输出端将被减少到约16μV。在1V满量程输入的16位系统中,1 LSB是15.3μV,因此电源线上的这个噪声将“淹没”LSB。

    这种情况可以通过增加串联表贴铁氧体磁珠L1/L2和并联旁路电容C1/C2(图15)加以改进。

     power supply bypassing

    图15:电源旁路电路。

    在50MHz时,磁珠的阻抗是60Ω,10nF(0.01μF)电容的阻抗是0.32Ω,由这两种元件组成的衰减器可以提供45.5dB的衰减(公式32)。

     eq32
    (32)

    上述分压式衰减加上-70dB的PSR总共可提供115dB的抑制效果,因而可将噪声减小到远低于1 LSB的90nVp-p左右。

    谐波失真
    频域中的低谐波失真在窄带和宽带系统中都很重要。驱动器中的非线性会在放大器输出端产生单频谐波失真和多频互调失真。

    在噪声分析例子中使用的方法可以同样应用于失真分析,即对ADA4939的谐波失真与2V满量程输出时AD9445 12位ENOB的1 LSB进行比较。一个ENOB LSB在噪声分析中代表488μV。

    ADA4939参数表中的失真数据是在增益为2时给出的值,通过这张表可以直观地比较各个频率点的二次和三次谐波失真。表3就是增益为2、差分输出摆幅为2Vp-p时的谐波失真数据。

    表3:ADA4939的二次和三次谐波失真。

    参数谐波失真
    HD2 @ 10 MHz–102 dBc
    HD2 @ 70 MHz–83 dBc
    HD2 @ 70 MHz–83 dBc
    HD2 @ 100 MHz–77 dBc
    HD3 @ 10 MHz–101 dBc
    HD3 @ 70 MHz–97 dBc
    HD3 @ 100 MHz–91 dBc

    这些数据表明,谐波失真随频率增加而增加,并且在感兴趣带宽(50MHz)内二次谐波失真要比三次谐波失真糟糕。在比感兴趣频率更高的频率点的谐波失真值较高,因此它们的幅度可能被系统频带限制功能所降低。如果系统有一个50MHz的砖墙式滤波器,那么就只需要考虑超过25MHz的频率点,因为更高频率的所有谐波将被滤波器滤除。尽管如此,我们还是要评估频率最高为50MHz的系统,因为目前的所有滤波器对谐波的抑制可能都不够,失真分量可能混叠回信号带宽内。图16给出了ADA4939在各种电源电压和2Vp-p输出时的谐波失真与频率的关系。

    harmonic distortion vs frequency 

    图16:谐波失真与频率的关系。

    50MHz时的二次谐波失真相对于2Vp-p输入信号来说大约是-88dBc。为了比较谐波失真水平和1 ENOB LSB,这个谐波失真值必须被转换成电压值,如公式33所示。

     eq33 
    (33)

    这个失真值只有80μVp-p,或1 ENOB LSB的16%。因此,从失真的角度看,可以认为ADA4939是AD9445 ADC驱动器的很好选择。

    由于ADC驱动器是负反馈放大器,输出失真取决于放大器电路中的环路增益值。负反馈放大器固有的开环失真将被减少1/(1+LG)倍,其中LG代表可用环路增益。

    放大器的输入(误差电压)被乘以一个大的前向电压增益A(s),然后通过反馈系数β传送到输入端,再通过调整输出使误差最小。这样,这类放大器的环路增益为A(s)×β。随着环路增益(A(s), β或两者)的降低,谐波失真将增加。电压反馈放大器,如积分器,被设计在直流和低频率处具有大的A(s),然后随着1/f在规定高频点趋向于1而发生滚降。随着A(s)的滚降,环路增益下降,失真增加。因此谐波失真参数是A(s)的倒数。

    电流反馈放大器将误差电流用作反馈信号。误差电流被乘以一个大的前向互阻T(s)而转换成输出电压,然后通过反馈系数1/RF将输出电压转换成反馈电流,以便使输入误差电流最小。因此理想的电流反馈放大器的环路增益是T(s)×(1/ RF)=T(s)/ RF。同A(s)一样,T(s)也有一个大的直流值,并随着频率的增加而滚降,从而降低环路增益,增加谐波失真。

    环路增益还直接取决于反馈系数1/RF。理想电流反馈放大器的环路增益并不取决于闭环电压增益,因此谐波性能不会随着闭环增益的增加而下降。在实际的电流反馈放大器中,环路增益确实某种程度上取决于闭环增益,但不会达到电压反馈放大器中那样的程度。 因此对于高闭环增益和低失真的应用来说,电流反馈放大器,比如 ADA4927, 是比电压反馈放大器更好的选择。从图17可以看出随着闭环增益的增加失真性能保持得有多好。

    distortion vs gain and frequency 

    图17:失真与频率和增益的关系。

    带宽和压摆率 
    带宽和压摆率在ADC驱动器应用中特别重要。一般情况下,器件的带宽是指小信号带宽,而压摆率衡量的是大信号摆幅时放大器输出端的最大变化率。

    EUBW(有效可用带宽),一个类似于ENOB(有效位数)的首字母缩略词,用于描述带宽。许多ADC驱动器和运放自称有很宽的带宽指标,但并不是所有带宽都是可用的。例如,-3dB带宽是测量带宽的一种传统方法,但它并不意味着所有带宽是可用的。-3dB带宽的幅度和相位误差的使用比实际“截止”频率要早十年。那么什么是放大器的EUBW?如何确定它的大小?确定可用带宽的一个极好方法是查询数据手册上的失真图。

    图18表明,为了使二次和三次谐波保持大于-80dBc,这个ADC驱动器不应用于超过60MHz的频率。由于每个应用都不尽相同,系统要求将成为具有足够带宽和足够失真性能的合适驱动器的选择准则。

    ADA4937 distortion curves 

    图18:ADA4937电流反馈型ADC驱动器的失真曲线。

    压摆率,一种大信号参数,指的是放大器输出在没有过高失真的情况下能够跟踪输入的最大变化率。以压摆率考虑正弦波输出:

     eq34 
    (34)

    公式34在过零点的导数(变化率)即最大变化率,它等于:

     eq35 
    (35)

    其中dv/dt max是压摆率,Vp是峰值电压,f等于满功率带宽(FPBW)。推算FPBW:

     eq36 
    (36)

    因此,在选择ADC驱动器时,重点要考虑增益、带宽和压摆率(FPBW),以确定放大器是否足够满足应用要求。

    稳定性
    关于差分ADC驱动器的稳定性考虑与运放是一样的,关键参数是相位余量。 虽然特定放大器配置的相位余量可以从数据手册中获取,但在实际系统中由于PCB版图中的寄生效应这个相位余量会有显著降低。

    负电压反馈放大器的稳定性取决于其环路增益的大小和符号,A(s)×β。差分ADC驱动器要比典型的运放电路稍微复杂一点,因为它有两个反馈系数。在公式7和公式8的分母中可以见到环路增益。公式37提供了在反馈系数不匹配(β1≠β2)情况下的环路增益。

     eq37 
    (37)

    当反馈系数不匹配时,有效反馈系数是两个反馈系数的简单平均值。当它们匹配并被定义为β时,环路增益可以简化为A(s)×β。要想使反馈放大器稳定,其环路增益不允许等于-1(相当于相位偏移-180°、幅度为1)。对于电压反馈放大器来说,其开环增益频率图上环路增益值等于1(即0dB)的点正是A(s)值等于反馈系数倒数的地方。

    对于基本的放大器应用,反馈是纯阻性的,在反馈环路中不会引入相位偏移。在反馈系数匹配的情况下,与频率无关的反馈系数倒数1+RF/RG通常被称为噪声增益。如果将以dB为单位的恒定噪声增益与开环增益A(s)绘制在同一张图上,那么两条曲线的交叉点就是环路增益为1或0dB的地方。在这个频率点的A(s)相位与-180°之间的差值被定义为相位余量。为了稳定工作,这个相位余量应大于或等于45°。图19给出了RF/RG=1(噪声增益=2)时ADA4932的单位环路增益点和相位余量。

    open-loop gain-magnitude and phase vs frequency 

    图19:ADA4932开环增益幅度和相位与频率的关系。

    进一步观察图19可以发现,ADA4932在噪声增益为1(每个环路中100%反馈)时有约50°的相位余量。虽然让ADC驱动器工作在零增益有点不切实际,但这一结果表明,ADA4932可以稳定工作在小数差分增益(如RF/RG=0.25,噪声增益=1.25)。并不是所有差分ADC驱动器都能这样。最小稳定增益可以在所有ADC驱动器的数据手册中找到。

    电流反馈ADC驱动器的相位增益同样可以从开环响应中判断。电流反馈放大器不再使用前向增益A(s),而是使用前向互阻T(s),并将误差电流用作反馈信号。带匹配反馈电阻的电流反馈驱动器的环路增益等于T(s)/ RF,因此电流反馈放大器环路增益幅度在T(s)= RF时等于1(即0dB)。这个点在开环互阻和相位图上很容易找到,定位方法与电压反馈放大器相同。注意,绘制电阻与1kΩ的比值能使阻值表示在对数图上。图20给出了RF=300Ω时ADA4927电流反馈差分ADC驱动器的单位环路增益点和相位余量。

    open-loop gain-magnitude and phase 

    图20:ADA4927开环增益幅度和相位与频率的关系。

    300Ω反馈电阻水平线与互阻幅度曲线的交叉点是环路增益为0dB的地方。在这个频率点,T(s)的相位接近-135°,因此有45°的相位余量。相位余量和稳定性随RF的增加而增加,随RF的减小而减小。电流反馈放大器应始终使用具有足够相位余量的纯电阻反馈。

    PCB版图
    在稳定的ADC驱动器设计好后,还必须在PCB上实现。由于电路板存在寄生成分,总是会损失一些相位余量,因此电路板的寄生效应必须保持最小,其中特别要关注的是负载电容、反馈环路电感和求和节点电容。每种寄生电抗都会给反馈环路增加迟滞性相位偏移,从而减小相位余量。由于PCB版图设计不良可能导致20°以上的相位余量损失。

    在使用电压反馈放大器时最好使用尽可能小的RF,以便最小化由RF和求和节点电容组成的极点引起的相位偏移。如果要求使用大的RF,寄生电容可以用跨接每个反馈电阻的小电容Cf进行补偿,对Cf的要求是RFCf等于RG乘以求和节点电容。

    PCB版图是设计中最后的必要步骤之一。遗憾的是,它也是设计中最容易被忽视的步骤之一,即使性能高度依赖于版图设计的高速电路也是如此。马虎或拙劣的版图设计可能降低一个高性能设计的性能,甚至使它不能工作。虽然本文无法涵盖正确高速PCB设计的所有方面,但还是要介绍一些关键点。

    寄生成分将损害高速电路的性能。寄生电容是由元器件的焊盘、走线、地平面或电源平面引起的。没有地平面的长走线将形成寄生电感,进而导致瞬态响应中的振铃和其它不稳定现象。寄生电容在放大器的求和节点处特别危险,因为它会在反馈响应中引入一个极点,造成尖峰和不稳定。一种解决方案是确保ADC驱动器安装和反馈元件焊盘下方区域的所有电路板层都是干净的地和电源平面。

    要使有害寄生电抗最小,首先要使所有走线尽可能短。RF-4印制板的外层50Ω走线产生的寄生参数大约为2.8pF/英寸和7nH/英寸。内层50Ω走线的寄生电抗将在此基础上增加约30%。还要确保在长走线下方有地平面,以使走线电感最小。保持短小的走线有助于减小寄生电容和寄生电感——并保持设计的完整性。

    电源旁路是版图设计中另一个重要的考虑因素。确保电源旁路电容和VOCM旁路电容尽可能靠近放大器引脚放置。另外,在电源上使用多个旁路电容有助于确保为宽带噪声提供低阻抗路径。图21给出了一个带旁路和输出低通滤波器的典型差分放大器原理图。低通滤波器用于限制进入ADC的带宽和噪声。理想情况下,电源旁路电容回路靠近负载回路,这有助于减小地平面中的环流,从而改善ADC驱动器性能(图22a和图22b)。

    adc driver with power supply bypassing and output filtering 

    图21:带电源旁路电路和输出低通滤波器的ADC驱动器。

    使用地平面和一般的接地技巧是一个具体而复杂的课题,不在本文讨论的范围之内。不过有几个要点需要指出,见图22a和图22b。首先,只在一个点将模拟和数字地连接在一起,记住只是单点接地。这样做可以使地平面中模拟和数字电流的交互作用最小,而这种交互最终将导致系统中产生“噪声”。另外,要将模拟电源终接到模拟电源平面,数字电源终接到数字电源平面。对于混合信号IC,要将模拟回路终接到模拟地平面,将数字地回路终接到数字地平面。

    pc board layout 

    图22(a):器件侧。(b):电路侧。

    混合信号的接地方式 www.elecfans.com 

    图23:混合信号的接地方式。

     

    我们希望当您用ADC驱动器进行设计时这里提供的材料有助于您更加全面地考虑众多必要因素。理解差分放大器——并在项目开始时就留意ADC驱动器设计的细节——将使设计过程中发生的问题最少,并使您远离ADC驱动器故障。

    展开全文
  • 伺服驱动器的接线与基本控制

    万次阅读 多人点赞 2020-09-26 14:06:47
    3.1伺服驱动器的基本运行状态显示 状态显示分为位数据和缩略符号: 位数据: 缩略符号: 3.2面板操作 键位 操作面板5个按键功能如下图所示: 操作模式及其切换 伺服驱动器共有四种功能模式,分别为状态显示模式、...

    本文将永久处于维护序列,如您对文章内容有所疑问,还请提出,共同探讨。 -2021.8.25
    本文不能代替伺服使用手册,请以伺服使用手册为准。

    0前言

    本文基于以下伺服平台进行撰写:
    YAKOTEC ES2
    JMC JSDA
    DELTA ASBA-B2
    KINCO FD3
    EURA SD20-D

    本文撰写理念是,从各品牌伺服手册中归纳基本框架,通过结合这种框架,来帮助用户快速入门任意一款伺服。

    0基本拓扑结构

    使用上位机控制伺服电机所需完成的工作:
    在这里插入图片描述
    在这里插入图片描述

    1伺服系统匹配与安装

    1.1伺服驱动器与伺服电机的匹配

    伺服驱动器必须与电机相匹配。

    一般来讲伺服驱动器是和伺服电机成套购买的,但实际上将一些非原装伺服驱动器和伺服电机进行混搭也可正常运行,这主要看驱动器的兼容能力,两者需要满足的条件:

    1. 硬性条件:电机的输入电压必须和驱动器的输出电压吻合;
    2. 电机是否支持电机及编码器参数设定:目前的大多数驱动器支持相关配置以适应不同类型的电机;
    3. 功率匹配:一些大功率伺服驱动器支持连接小功率伺服电机,具体能否实现需要咨询厂商;

    若驱动器与电机隶属于同品牌,通常会在手册中注明不同电机型号的适配伺服驱动器;
    在这里插入图片描述
    若驱动器与电机隶属于不同品牌,一般情况下不可混用。

    1.2伺服器的安装与散热

    通常采用垂直向上安装的方式,伺服器下方为进风口,上方为出风口。通电后不要触摸散热器,否则可能导致烫伤。

    在这里插入图片描述

    1.3联轴器的安装

    联轴器用于连接电机侧与负载侧。
    建议使用专为伺服电机设计的挠性联轴器,尤其是使用双弹簧联轴器,其在偏心和偏转时可以提供一些公差缓冲的裕度。请针对操作条件选择合适的联轴器尺寸,不适当的使用或连接可能会导致损坏。
    使用时须将电机轴端的防锈涂层或油质擦掉。
    在这里插入图片描述

    2伺服系统配线

    伺服系统配线示意图如下:
    在这里插入图片描述

    2.1主回路配线

    在这里插入图片描述

    在这里插入图片描述

    1. R相当于(电源插头中的)L,S相当于N,实际上R、S、T 可接三相或单相任意两端子 220V 50HZ 电源;
    2. 控制电源和主回路电源通常采用一体化设计;
    3. 关于接地:实际上设备不接地也可以正常工作,但是在这种情况下,设备漏电将导致设备外壳带电,会引发触电风险;不过只要接入漏保,一旦线路中的漏电电流超过漏保的动作电流,它就会跳闸。在有漏保的情况下设备是否接地,其区别在于,接地时若设备漏电且超过动作电流,则漏保将自动断开;未接地时若设备漏电,漏保通常在人接触金属壳体后才会断开(此时可能造成危险;若电流不大甚至不会动作)。
      漏电开关有接地和没接地的区别
    4. 伺服电机与普通电机不同,故接线连反也不会改变旋转方向,但若连接线顺序错误,可能会引起 电机飞车、设备损坏,及本产品过流损坏;通常也不存在星形和三角形接线。

    接通控制回路电源主回路电源后,母线电压指示灯显示无异常,且面板显示器显示“rdy”,表明伺服驱动器处于可运行的状态,等待上位机给出伺服使能信号。
    **注意:**即使关闭电源,伺服驱动器内部仍可能会滞留高电源,请暂时(10 分钟)不要触摸电源端子。并请确认“CHARGE”指示灯熄灭后,再进行检查作业。

    关于再生电阻和制动电阻

    从功能方面说,两者不是一类电阻。

    制动电阻主要就是在变频器带动的电机需要停车时,采用能耗制动方式,把停机后的动能和线圈中的磁能,通过一个制动电阻消耗掉,从而达到保护变频器的作用。
    再生电阻则是当伺服电机模式驱动时,再生电力回归到伺服放大器测,这部分电力首先通过平滑电容器的充电来吸收,超出可充电能量后,再用一个电阻器来消耗。这就是再生电阻器的由来。
    电阻器从材质上分类,两者可一样,可不一样的。在一般情况下,两者都采用网状不锈钢电阻器。

    交流电源EMI滤波器

    电源网络吸收了各种高低频噪音,常用LC交流电源滤波器(电源线EMI滤波器)来抑制这种噪声。这种滤波器属于低通滤波器,能够无衰减地将50Hz低频电源功率传送到用电设备上,衰减电源传入的骚扰信号,同时抑制设备本身产生的骚扰信号进入电源。

    2.2编码器配线

    有增量式编码器与绝对式编码器两种,二者配线不同。
    下图为增量式编码器配线:
    在这里插入图片描述

    关于编码器的A、B、Z相
    编码器是测量速度、位移、旋转位置的设备,把角度位移或直线位移转换成电信号,以通讯方式传送给控制器。编码器分为增量式和绝对式两种。A相、B相、Z相旋转输出脉冲电压,三相脉冲各自独立,A相和B相脉冲量相等,但是A相和B相之间存在一个90°(电气角的一周期为360°)的电气角相位差,可以根据这个相位差来判断编码器旋转的方向是正转还是反转,正转时,A相超前B相90°先进行相位输出,反转时,B相超前A相90°先进行相位输出。Z相为一圈一个脉冲电压。

    下图为绝对值编码器配线(通讯式增量编码器的插头与绝对值式插头一样):
    在这里插入图片描述

    2.3控制信号配线

    以位置控制模式为例,控制信号配线示意图如下:
    在这里插入图片描述
    在这里插入图片描述
    此符号代表驱动信号输入端。
    在这里插入图片描述
    此符号代表双绞线。

    伺服电机可以接收模拟信号、脉冲信号和总线通信信号。控制信号线用于连接上位控制器,进行IO信号控制,所有的输入和输出信号都经此接口出入驱动器。
    控制信号可分类如下:

    1. 位置指令输入信号
    2. 模拟量指令输入信号
    3. 模拟量输出信号
    4. 数字量信号
    5. 编码器分频输出信号

    由于控制端子定义较多,此处只展示常用端子(并非所有引脚都会用到):
    在这里插入图片描述
    伺服驱动器在不同引脚有相同的名称时,表示在驱动器内部时相互连接。

    通常不会配送伺服信号线,只会配未组装的通讯头,接线由用户设计并完成线与通信头的焊接:
    在这里插入图片描述

    位置指令输入信号

    伺服驱动器的脉冲形式位置给定(伺服定位)有3种方法:

    1. 脉冲和方向信号共同控制,即脉冲数控制位移,方向信号控制正反转(常用);
    2. 第二种是正转脉冲CCW和反转脉冲CW输入控制;
    3. 第三种是90°相位A/B两相脉冲输入。

    PULS端子和SIGN端子用于接收脉冲和方向信号,这两类端子被称作低速脉冲端,还存在高速脉冲端HPULS和HSIGN;
    脉冲方式有差分方式和集电极开路两种,电压有24V脉冲和5V脉冲两种,通常采用5V差分脉冲。

    差分传输
    差分传输是一种信号传输的技术,区别于传统的一根信号线一根地线的做法,差分传输在这两根线上都传输信号,这两个信号的振幅相同,相位相反。在这两根线上的传输的信号就是差分信号。信号接收端比较这两个电压的差值来判断发送端发送的逻辑状态。
    差分输出与单端输出
    差分输出有两个输出端,输出的信号是两输出端之间的电压差;单端输出只有一个输出端,输出地信号是输出端对地的电压。

    编码器分频输出信号

    伺服驱动器通过内部分频电路将编码器输入信号进行分频,采用差分总线形式输出。

    数字量信号

    数字量信号有普通数字输入、高速数字输入、数字输出3类,功能可根据实际需要进行更改(参考手册《DI/DO 功能规格定义》章节)。在上图【位置控制模式配线】中,各端子被配置为默认功能。

    2.4 通讯配线

    RS-485通讯口

    在这里插入图片描述
    该端口可以建立PC和驱动器的通讯,借助上位机软件实现对驱动器状态监控、测试运行、参数读写等操作。
    在这里插入图片描述

    CANopen通讯口

    称为PU口(而非网口)。
    在这里插入图片描述

    2.5伺服驱动器和伺服电机连线

    购买伺服产品时,通常会随附电机动力线和电机编码器线。

    1. 电机动力线
    2. 电机编码器线
      在这里插入图片描述

    注意:
    请不要将动力线和信号线、编码器线从同一管道内穿过,也不要将其绑扎在一起。配线时,请使动力线、编码器线和信号线相隔 30 厘米以上,以防止电压耦合及避免噪声。
    对于信号线、编码器反馈线,请使用多股绞合线以及多芯绞合整体屏蔽线。对于配线长度,信号输入线最长为 3 米,反馈线最长为 20 米。

    3面板显示与参数配置

    不同型号的伺服电机显示略有差异,不具备普适性,此处仅做参考。

    3.1伺服驱动器的基本运行状态显示

    状态显示分为位数据缩略符号
    在这里插入图片描述
    位数据:
    在这里插入图片描述

    缩略符号:
    在这里插入图片描述

    3.2面板操作

    键位

    操作面板5个按键功能如下图所示:
    在这里插入图片描述

    操作模式及其切换

    伺服驱动器共有四种功能模式,分别为状态显示模式、监控模式、参数设置模式、辅助模式,它们之间的切换流程如下:
    在这里插入图片描述

    子菜单设置

    1. 按MODE键可以进入0级菜单(Pxx三位显示,表示功能码的Pxx组)切换功能码组(再按一次MODE键返回且不保存数据,下同),可通过上下三角键修改闪烁位,按移位键可移动闪烁位,便于设置为所需的组号;
    2. 组号设定完成后按SET键进入I级菜单(Pxx.xx五位显示,表示功能码序号)设置所需要的功能码序号
    3. 功能码序号设定完成后按SET键进入II级菜单进行该功能码的参数修改(如果该参数允许修改,其最低位会闪烁显示);
    4. 功能码的参数修改完成并按SET成功保存后,将显示DONE(若对参数做出了修改);
      在这里插入图片描述
      注意
    5. 有些功能号参数只能浏览,不能修改;
    6. 部分参数仅允许在停机状态下进行设定;
    7. 一般来说断电后参数设置仍会保存;

    3.3面板的特殊显示

    六位以上参数的设定
    设定参数为六位以上时将超出五位数码管的显示范围,此系统将采用最多分4位X3页的显示方法,使用移位键切换页面,其他操作不变:
    在这里插入图片描述

    4参数与功能

    通常有以下几类参数组:

    参数组说明
    P00-xx电机及驱动器参数
    P01-xx主控制参数
    P02-xx增益类参数
    P03-xx位置参数
    P04-xx速度参数
    P05-xx转矩参数
    P06-xxI/O 参数
    P08-xx高级功能参数

    注意:

    1. 部分参数重新上电后生效;
    2. 部分参数使能后禁止修改;
    3. 部分参数禁止修改,只能进行读操作;
    4. 部分参数断电不保持;

    4.1伺服驱动器基本参数配置

    若要使用上位机控制伺服电机,除了伺服电机、伺服驱动器和上位机三者之间的接线,以及上位机的程序配置,还需要实现对伺服驱动器本身进行基本参数配置。
    下表为一般需要设置的参数:
    在这里插入图片描述

    4.2监视组参数

    在监视模式下,可对输入到伺服驱动器的指令值、输入输出信号的状态以及伺服的内部状态进行监视;伺服电机处于运行状态时,也能对监视项进行变更。
    下图为部分显示参数
    在这里插入图片描述
    在这里插入图片描述

    4.3 IO参数

    此处列举输入端口:
    在这里插入图片描述
    在这里插入图片描述

    DI/DO端子状态显示方法
    在这里插入图片描述

    5基本控制&伺服运行的一般过程

    5.1运行准备

    1. 进行接线检查
    2. 接通控制回路(L1C、L2C)以及主回路(R、S、T)电源;

    5.2参数设置

    下表为伺服初次上电时,用户需要进行配置的参数。

    此外还需设置在【参数与功能】中所提及的一些参数。

    5.3点动运行(试运行)

    点动运行可以用来在初次运行时确认伺服电机是否可以正常运行(此时应断开连接),是否有异响。有面板点动和DI点动两种配置方式。

    1. 面板点动/JOG操作
      通过面板操作功能码P11.00进入JOG状态,此时面板显示200rpm点动速度默认值,可调整运行速度;按SET进入点动状态,面板显示“JOG”,可调整运行方向:
      在这里插入图片描述
      注意部分型号按MODE键退出点动运行模式时,之前设置的点动运行速度值不保存。此外一些伺服驱动器要求使能后才可正常使用JOG模式,另一些伺服驱动器在进入JOG模式后自动使能。

    2. DI点动
      用户需外接点动开关。不过通常外接点动功能通常由上位机实现。
      在这里插入图片描述
      DI点动不受伺服控制模式影响,在任何控制模式下,均可以进行DI点动。

    5.4伺服使能

    只有当产生使能ON信号时,才可对电机进行控制(此时表现为无法转动电机轴,即通电自锁;并伴随噪音)。
    使能ON信号可由内部产生(参数配置为软件使能)或从外部接入(通常需要设置使能端子)。在进行外部控制时如果没有接入使能信号,即使输入脉冲电机也不会转动。

    5.5外部信号的输入顺序

    首先接入电源,等待伺服驱动器开机并完成初始化(听到继电器响声);接入使能ON信号;接入脉冲+方向信号。
    这是一个标准的外部信号输入顺序,实测同时接入并不会影响伺服驱动器的正常工作,但不能确保这样是否会对机器造成损伤。

    5.6伺服停止

    伺服的停机方式可分为自由停机、零速停机;停机状态可分为自由运行状态、位置保持锁定;
    在这里插入图片描述
    根据伺服停机情况又可分为伺服使能停机、故障停机(第一类【NO.1】故障、第二类【NO.2】故障)、超程停机和紧急停机。

    超程停机:当机械的运动部分超出安全移动范围时,限位开关输出电平变化,伺服驱动器使伺服电机强制停止的安全功能。

    故障可分为:
    不可复位NO.1故障、可复位NO.1故障、可复位NO.1故障
    可复位表示故障处理后可通过设置清除伺服故障状态;不可复位表示故障处理后需重新上电。

    限于篇幅这里展示最常用的伺服使能(S-ON)OFF停机:
    在这里插入图片描述

    6自动增益的配置

    并非所有机型都具备自动增益调整功能。

    伺服的增益调整分为手动、自动和半自动,自动增益调整指惯量持续估测,惯量将定期调整,自动设定的参数包括电机负载惯量比、位置控制增益、速度控制增益、速度积分补偿、共振抑制低通滤波、外部干扰抵抗增益和速度检测滤波及微振抑制等(不同机型有所不同),此外使用者需自行调整自动调整模式应答性设定值(应答等级);半自动增益调整指惯量非持续估测,运转一段时间后惯量停止调整,使用者需自行调整半自动调整模式应答性设定值(应答等级),通常与自动调整模式应答性设定值为同一参数。

    自动及半自动模式下,应答等级设定:
    1~50Hz:低刚性,低响应。
    51~250Hz:中刚性,中响应。
    251~550Hz:高刚性,高响应。

    通过增加应答等级来增加响应速度,或降低刚性设定值来减少噪音,持续调整至性能满意,调机完成。
    使用自动增益调整(自动调节)功能足以应付大多数负载条件。调整参数时,可以先使用自动参数调整功能,然后根据需要手动调整参数,通常由自动模式或半自动模式切换为手动模式时,相应的参数值也会重新修改成自动/半自动模式下相对应的参数值。

    如何理解伺服电机的刚性和惯量?https://www.sohu.com/a/219096822_754529

    7电磁刹车

    通常在电磁刹车运用在 Z 轴方向,避免机构往下掉。使用电磁刹车可以降低伺服电机持续出很大的抗力,减少热量的产生,提升电机寿命。
    伺服电机内建刹车属于保持刹车,因此不可直接应用于运转电机的停止,需要用户自行安装停止机械装置。需注意:

    1. 刹车器在保持状态下,仍会有转动背隙,最大转动背隙角度为 1 ~ 2 度。
    2. 附刹车的电机机种运转时,刹车来令片有时会产生声音(沙沙、喀喀声等),这是刹车模块结构造成的,并非有故障不良的情形,并不会影响电机功能。
    3. 为了不必要误动作,电磁刹车必须作用在伺服关闭后生效。

    7.1电磁刹车的接线

    刹车信号控制电磁阀吸磁,提供制动器电源,制动器将打开。刹车线圈无极性之分。
    禁止将刹车用电源和控制信号电源(VDD)共同使用,这是因为抱闸励磁是高感性元件,启停过程中对供电部分有很大影响,如果共用可能造成逻辑供电不稳进而产生错误。
    (图)

    图中与直流继电器反向并联的二极管为续流二极管。续流二极管通常和储能元件(如继电器内部电感线圈)一起使用,其作用是防止电路中电压电流的突变,为反向电动势提供耗电通路。继电器模块一般带有续流二极管(单个继电器没有)。

    附录:操作模式——位置模式、扭矩模式、速度模式和混合模式

    F.1位置模式

    位置控制模式(PT)被应用于精密定位的场合,例如产业机械。
    可通过具有方向性的命令脉冲输入操纵电机的转动角度。

    F.2扭矩模式

    扭矩控制模式(T 或 Tz)被应用于需要做扭力控制的场合,设定好一个固定的转矩后,当负载小于电机转矩,电机会一直加速至最大速度。
    伺服驱动器通常有两种命令输入模式:模拟输入缓存器输入

    1. 模拟命令输入可经由外界来的电压来操纵电机的扭矩。
    2. 缓存器输入可通过配置相关参数作为扭矩命令。
      在扭矩模式下,可以使用速度限制指令。

    转矩模式下,转速是自由的(随负载变)。

    F.3速度模式

    速度控制模式(S 或 Sz)被应用于精密控速的场合,例如 CNC 加工机。
    伺服驱动器通常有两种命令输入模式:模拟输入缓存器输入

    1. 模拟命令输入可经由外界来的电压来操纵电机的转速。
    2. 命令缓存器输入有两种应用方式:
      1)第一种为使用者在作动前,先将不同速度命令值设于三个命令缓存器,再通过 DI 来进行切换;
      2)第二种为利用通讯方式来改变命令缓存器的内容值。为了命令缓存器切换产生的不连续,部分伺服也提供完整 S 型曲线规划。在闭
      回路系统中,这些装置采用增益及累加整合型式(PI)控制器。同时二种操纵模式(手动、自动)也提供使用者来选择。

    转速控制模式下,转矩是自由的(随负载变)。

    F.4混合模式

    混合模式是由两种单一模式(位置、速度、扭矩控制)组成的操作模式,通过外部DI信号决定在混合模式中的哪一种单一模式下运行,即混合模式并非指可以同时在两种模式下运行,而是给予了用户切换控制模式的权力

    附录·伺服电机的保养

    1 电机轴
    伺服电机轴芯材质不具防锈能力,出厂时虽已施加油脂做防锈保护,但如果储存时间超过六个月,为确保轴芯免于锈蚀,请每三个月定期检视轴芯状况并适时补充适当的防锈油脂。

    更新记录

    2021.8.25 重大更新 对全文结构进行调整,删除了冗余无用的部分,对文章薄弱处进行适当补充。本次更新为连续更新,于本日先行更新一部分内容。
    本文访问量已突破1W+,感谢各位抬爱。

    本文发布之日其至21年8月以前 零星更新
    在这里插入图片描述

    展开全文
  • Latex相关符号

    千次阅读 2017-03-23 22:30:11
    函数、符号及特殊字符 声调 语法 效果 语法 效果 语法 效果 \bar{x} latex数学符号表(2)" style="border:none; max-width:100%"> \acute{\eta} latex数学符号表(2)" style="border:none; max...
  • LaTeX 各种命令,符号

    万次阅读 多人点赞 2016-06-12 15:27:42
    函数、符号及特殊字符 声调 语法 效果 语法 效果 语法 效果 \bar{x} latex数学符号表(2)" style="border:none; max-width:100%"> \acute{\eta} latex数学符号表(2)" style="border:none; max...
  • DefineDosDevice函数控制虚拟驱动器

    千次阅读 2012-10-09 14:18:43
    LPCTSTR lpDeviceName,设备名称字符串不是必须将冒号作为最后一个字符,除非一个驱动器号被定义,重新定义或删除。在任何情况下,一个反斜杆是不允许的。 LPCTSTR lpTargetPath,指向路径字符串,如果设置DDD_...
  • c, c++函数编译符号修饰符说明

    千次阅读 2017-10-26 11:19:40
    C++ 编译器的函数修饰规则  函数名字修饰(Decorated Name)方式   函数的名字修饰(Decorated Name)就是编译器在编译期间创建的一个字符串。用来指明函数的定义或原型。 LINK程序或其它工具有时须要...
  • 上一节,我们研究了如何在语法上解析结构体,这一节,我们在语法分析的基础上,实现结构体符号表和类型系统的代码,我们要解析的结构体定义如下:struct tag { int *a, b; long c; sturct tag *d; }name;
  • 请问批处理中符号%~nx0和!num!%%~xm表示什么意思呢? @echo off  setlocal enableDelayedExpansion for %%m in (*) do (  if not "%%m"=="%~nx0" (  set /a num+=1  ren "%%m" "!num!%%~xm"  ) ) ...
  • Latex命令符号

    千次阅读 2018-12-09 19:57:19
    本文章仅方便学习使用,一切版权和解释权归原作者所有,转载地址: ... ...函数、符号及特殊字符 声调 语法 效果 语法 效果 语法 效果 \bar{x} \acute{\eta} \check{\alpha} ...
  • 1.驱动对象. typedef struct _DRIVER_OBJECT { CSHORT Type; CSHORT Size; // // The following links all of the devices created by a single driver // together on a list, and the Fla
  • Latex各种命令、符号、公式、数学符号、排版等

    万次阅读 多人点赞 2017-12-01 10:56:03
    本文仅供学习参考使用,一切版权和解释权均归原作者所有,转载地址:...数学符号详细内容见:http://mohu.org/info/symbols/symbols.htm 直接查看链接  http://www.mo
  • (a)Linux驱动程序学习 知识结构: 1. Linux驱动程序设计模式(40%) 2. 内核相关知识(30%) 3. 硬件相关知识(30%) (b)驱动分类: ①字符设备:  字符设备是一种按字节来访问的设备,字符驱动则负责驱动字符设备,...
  • LaTex符号应用

    万次阅读 2018-07-13 19:03:57
    原文链接:http://blog.csdn.net/anxiaoxi45/article/details/39449445函数、符号及特殊字符声调语法效果语法效果语法效果\bar{x}\acute{\eta}\check{\alpha}\grave{\eta}\breve{a}\ddot{y}\dot{x}\hat{\alpha}\...
  • Windows内核符号表学习总结

    千次阅读 2016-08-03 13:11:53
    内核符号表 http://blog.csdn.net/vbsourcecode/article/details/8555796 在进行Windows Driver开发调试中,内核符号表是个问题。由于网络不稳定,利用windbg下载不了,在 WDK的documentation中查找到...
  • LaTeX各种命令,符号

    万次阅读 多人点赞 2019-03-19 08:38:59
    函数、符号及特殊字符 声调 语法 效果 语法 效果 语法 效果 \bar{x} \acute{\eta} \check{\alpha} \grave{\eta} \breve{a} \ddot{y} \dot{x} \hat{\alpha} \tilde{\iota} 函数 语法 效果 ...
  • CTEX 各种命令、符号

    万次阅读 多人点赞 2018-05-13 21:00:31
    函数、符号及特殊字符声调语法效果语法效果语法效果\bar{x}\acute{\eta}\check{\alpha}\grave{\eta}\breve{a}\ddot{y}\dot{x}\hat{\alpha}\tilde{\iota}函数语法效果语法效果语法效果\sin\theta\cos\theta\tan\theta...
  • LaTex各种命令、符号

    万次阅读 多人点赞 2017-11-14 09:47:57
    函数、符号及特殊字符 声调 语法 效果 语法 效果 语法 效果 \bar{x} latex数学符号表(2)" style="border:none; vertical-align:middle; outline:none; max-width:100%"> \acute{\eta} latex...
  • a. Linux 内核简介 b. Linux 内核 下载 配置 编译 c. 设备驱动模块介绍
  • Latex各种命令、符号、公式、数学符号、排版等 本文仅供学习参考使用,一切版权和解释权均归原作者所有,转载地址:   数学符号详细内容见:http://mohu.org/info/symbols/symbols.htm 直接查看链接  ...
  • DOS符号及相关例子

    千次阅读 2006-12-16 22:09:00
    一般的符号的作用都发一下,你们好好看看吧,其实论坛里是有的....你的问题与两个要素有关: 1、%是个ESCAPE字符,通常将之译为转义字符,但也有更形象的译名脱逸字符、逃逸字符等。也就是说%不仅仅将与其相关的...
  • Tomcat内核之ASCII解码的表驱动模式

    千次阅读 2015-01-17 19:57:02
    我们知道Tomcat通信是建立在Socket的基础上,而套接字在服务器端和客户端传递的报文都是未经过编码的字节流,每8位组成1个字节,计算机以二进制为基础,这是由于使用晶体管的开合状态表示1和0,这样8个电晶体管就...
  • 实体引言在领域驱动设计里,实体的设计可以说是通用语言的核心,也是最开始在模型划分中需要考虑的。怎么样设计实体和怎么样划分限界上下文同样重要。实体的概念就是要保证通用语言的完整性。领域驱动让设计实体的...
  • LaTeX函数、符号及特殊字符

    千次阅读 2020-07-07 01:25:27
    LaTeX函数、符号及特殊字符 声调 语法 效果 语法 效果 语法 效果 \bar{x} \acute{\eta} \check{\alpha} \grave{\eta} \breve{a} \ddot{y} \dot{x} \hat{\alpha} \tilde{\iota} 函数 语法 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 63,504
精华内容 25,401
关键字:

a驱动器名的符号表示