精华内容
下载资源
问答
  • 2020-11-04 18:56:17

    9a8f1d4b985689cd5d52b61351238e50.png

    按钮开关,可能是电工电路中最简单的元器件了,但是它确控制着整个控制电路的命脉,所以也叫它“主令开关”。作为新手,全面了解各种按钮开关,巧妙灵活的运用,可以让我们事倍功半。

    按钮开关用来在短时间内接通或切断小电流电路,主要用在电气控制电路中。按钮开关允许流过的电流较小,一般不能超过5A。

    一、种类、结构与外形

    按钮一般由按钮帽、复位弹簧、桥式动触头、静触头、支柱连杆及外壳等部分组成。按钮不受外力作用(即静态)时触头的分合状态,分为停止按钮(即动断按钮)、启动按钮(即动合按钮)和复位按钮(即动合、动断触头组合为一体的按钮)。当按钮受外力作用下,触头的分合状态发生改变:静态下的常开触点闭合,静态下的常闭触点断开。按钮开关用符号“SB”表示,它可分为三种类型:常闭按钮开关、常开按钮开关和复合按钮开关。这三种开关的内部结构示意图和电路图形符号如图1所示。图1(a)为常闭按钮开关。在未按下按钮时,依靠复位弹簧的作用力使内部的金属动触点将常闭静触点a、b接通;当按下按钮时,动触点与常闭静触点脱离,a、b断开;当松开按钮后,触点自动复位(闭合状态)。

    图1(b)为常开按钮开关。在未按下按钮时,金属动触点与常开静触点a、b断开;当按下按钮时,动触点与常闭静触点接通;当松开按钮后,触点自动复位(断开状态)。

    图1(c)为复合按钮开关。在未按下按钮时,金属动触点与常闭静触点a、b接通,而与常开静触点断开;当按下按钮时,动触点与常闭静触点断开,而与常开静触点接通;当松开按钮后,触点自动复位(常开断开,常闭闭合)。

    66277433864e10694ea9f31d0c752ec6.png
    图1 三种开关的结构与符号

    有些按钮开关内部有多对常开、常闭触点,它可以在接通多个电路的同时切断多个电路。常见的按钮开关实物外形如图2所示。

    b541af618c287d0525484e5eac7be84d.png
    图2 常见的按钮开关

    二、安装与拆卸

    快速安装要诀:一打开二旋出三旋进四合上。

    bf7e40eeb5167bff490e7b0b2c2a0ee4.gif

    692ad9463babf75f65ad4133fe383aed.gif

    快速拆卸三步走:一拔开二旋出三取走。

    8e74ca1170c83095d2be27d4e1cd81c8.gif
    更多相关内容
  • 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} 函数 语法 ...

    LaTeX函数、符号及特殊字符

    声调

    语法效果语法效果语法效果
    \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

    展开全文
  • 分析清楚电气图的关键:看懂各元器件图形符号、文字符号,对元器件结构、功能掌握。 掌握该电气图的两个关键点:1、电气自锁(定义):依靠接触器自身的常开触电使其线圈保持通电; 2、电气互锁:在同一时间段内两...
  • Java实现简易图形编辑系统

    千次阅读 多人点赞 2020-07-05 15:24:25
    目录1 实现过程1.1 采用抽象工厂设计模式创建图形对象1.2 采用组合设计模式设计直线、符号、字符串、方框及复合图形1.3 采用迭代器设计模式访问复合图形中的各个子图形1.4 采用观察者设计模式实现图形的拖动、放大...

           这学期学了各种软件设计模式,老师要求我们利用抽象工厂、组合、迭代器、观察者等设计模式实现一个图形编辑系统。虽然基本功能实现了,但还是不确定是否是真的符合各种设计模式的要求
    在这里插入图片描述

    1 实现过程

    1.1 采用抽象工厂设计模式创建图形对象

           抽象工厂模式提供了一个创建一系列相应或相互依赖的接口,在这个项目中,要创建的就是各种图形对象,当有多个类需要创建实例的时候,就可用抽象工厂模式。

    • 首先要确定需要创建哪些类的实例。由于需要画出直线、实心圆圈符号、文本字符串、方框,这四个都属于图形,那么根据面向对象的方法,可以把这四个图形抽象出一个图形类Graphical作为这四个图形的父类,每个图形都要实现的方法有绘制图形,那么就可以定义一个绘制方法,每个具体的图形类实现具体的内容

    在这里插入图片描述

    • 确定了要创建哪些图形对象后,就可以设计抽象工厂从而通过工厂创建实例对象。创建一个抽象工厂类AbstractFactory,在其中为每一个产品类定义相应的创建方法。
    • 最后只需要再创建AbstractFactory类的子类GraphicalFactory,在其中实现抽象工厂类定义的各个创建方法,每次调用相应的方法就会返回一个对应类型的对象。
      在这里插入图片描述

    1.2 采用组合设计模式设计直线、符号、字符串、方框及复合图形

           组合模式将对象组合成树形结构,表示“部分—整体”的层次结构。由容器构件和叶子构件组成,可以理解成容器构建就是树结构中的非叶子结点,叶子构件就是叶子节点。一个容器对象中放多种不同的叶子对象或容器对象。为了可以一致使用组合结构和单个对象,容器构件和叶子构件要继承同一个父类作为抽象构件,我理解的就是有点面向接口编程的感觉

    • 由于可能存在图形组合在一起使用形成复合图形的情况,所以要用组合设计模式,那么就要再额外增加一个图形类的子类Graphic,使其作为容器构件,其中需要一个集合来存储这个容器构件中的子组件。另外4个图形类作为叶子构件,他们的抽象父类Graphical作为抽象构件。
    • 增加了Grapics类之后需要在之前的抽象设计工厂中增加新的方法来创建Grapics容器构建的实例对象。
    • 使用组合设计模式需要维护对各个子图形的访问,那么就要定义新的方法实现对子组件的管理,例如添加、删除组件
      在这里插入图片描述

    1.3 采用迭代器设计模式访问复合图形中的各个子图形

           迭代器模式提供了一种方法顺序访问一个集合对象中的各个元素,而不暴露该对象的内部表示,简单理解就是把对一个集合的访问、遍历分离到一个迭代器对象中来实现

    • 存在图形组合在一起形成复合图形的情况,那么就有可能会对复合图形进行操作,所以可以用迭代器设计模式来对组合图形中的各个子图形进行操作。那么各个容器构件对象作为聚合类,为迭代器提供需要遍历的集合
    • 增加了迭代器之后需要在之前的Graphical类中增加新的方法来创建相应的迭代器
    • 创建一个抽象迭代器类GraphicalIterator,在其中为定义管理遍历方式的方法
    • 然后创建GraphicalIterator类的子类ConcreteIteratorImpl,在其中实现抽象迭代器类定义的各个方法,同时因为迭代器不暴露对象的内部表示,所以需要有一个集合存储从遍历对象得到的元素集合
      在这里插入图片描述

    1.4 采用观察者设计模式实现图形的拖动、放大缩小

           观察者模式定义了对象之间的一种一对多的依赖关系,当一个对象状态改变时,其相关依赖的对象都得到通知并自动更新,依赖的对象也叫做观察者

    • 因为可能会同时处理几个图形对象,那么为了方便统一操作,可以使用观察者模式。将这些图形对象作为观察者,当要对图形对象进行操作时,只需要接收通知然后做出反应就可以了
    • 使用观察者模式需要在之前的Graphical类中增加新的方法来接收目标类的更新通知
    • 首先创建一个抽象目标类GraphicalSubject,在其中定义管理观察者的方法
    • 然后创建GraphicalSubject类的子类GraphicalSubjectImpl,在其中实现抽象目标类定义的各个方法,同时需要有一个集合存储所有的观察者,而且不能乱通知,所以需要一个表示状态的属性,只有在更新状态下才能进行通知
      在这里插入图片描述

    2 实现细节

    • 无法画图:
             画图需要使用java.awt.Graphics类作为画笔来使用,需要在面板类中重写paintComponent(Graphics g)方法,在其中进行画图的操作。做好这一步之后就弄好了画图的准备工作,如果要让它能够正常画出来,还需要在窗口类中添加重写了paintComponent(Graphics g)方法的面板。至此就可以画图了
    • 无法调节面板大小:
             当面板添加到窗口中后,面板大小是固定的无法调整,需要调整窗口的布局,不能使用默认布局,否则面板对象使用了调整大小的方法也不会起作用。所以将窗口的布局设为null就可以自由调整面板的大小和位置了
    • 鼠标移动的位置和画出来的图不在同一位置:
             由于鼠标移动的坐标监听的是在窗口上的坐标,而画出的图形是在面板上的,如果面板和窗口没有重合,那么画出来的图的位置就会有偏差。所以将面板对象调用setBounds()方法将其的大小、位置与窗口重合即可
    • 创建功能按钮时重复、相似的代码过多:
             由于画不同的图形需要先点击对应的按钮才能画,所以需要创建很多按钮,但是这些点击按钮的功能很类似,都是指明接下来要干什么,如果一个一个的创建会很麻烦,代码看起来很长却基本都是重复的内容。所以可以把这些按钮放在一个按钮数组里,再增加一个按钮名称的数组,创建时只需要用一个循环通过不同的下标创建就可以了
    • 选择画图类型代码冗长:
             最开始为每一个类型的图形都增加了一个标记,当前要画的是什么类型就根据对应的标记来选择,由于不同类型的图形画图的过程也不一样,全部堆在paintComponent(Graphics g)方法中来画就会使代码很长很复杂。由于基础图形就是那4种,所以可以把各自的画图过程重写在每个图形类中的draw()方法中,为了能够使draw()方法能够画图,需要把paintComponent(Graphics g)中的g作为参数传递给draw()方法中,最后变成draw(Graphics g),不同图形的画法就在draw里实现,由于不管当前要画的是什么图形,都是继承了Graphical类的,都存在draw(Graphics g)方法,只是不同类的实现方法不同,所以在paintComponent(Graphics g)中只需要直接调用当前图形对象的draw(Graphics g)方法就可以了。
    • 如何画图:
             要确定一个图形的位置、大小,需要得到一个起点坐标和一个终点坐标,可以通过按下鼠标得到鼠标的坐标,使其作为起点坐标;松开鼠标得到鼠标新的坐标,使其作为终点坐标。得到这两个坐标之后就能画出所有的基本图形:两点确定一条直线、两坐标相减得到矩形的长和宽、两坐标之间的距离确定半径
    • 图形移动、放大后原来位置上还存在图形:
             因为画板没有更新,所以原来画出来的东西还会在,如果要更新画板内容的话,需要在paintComponent(Graphics g)方法中先执行super.paintComponent(Graphics g)将画板上的内容全部清除再重新画。那么就会有一个新问题,原本没有移动或改变大小的图形也会在更新的时候消失。那么就需要一个列表来存储所有已经创建出来的图形对象,每一个图形对象中都记录着起点和终点,有了这些信息之后,即使画板更新后,也能通过遍历所有的图形对象根据其中的坐标重新画出图形。
    • 如何选中要进行操作的图形:
             选中图形其实上就是选中对应的图形对象。由于图形可以组合并且可能是不规则的,不好判定是否选中了该图形对象,所以规定无论是什么图形都以它的起始坐标和终点坐标围成的矩形作为该图形对象的选中范围。同时由于可能对多个图形同时进行操作,那么就需要使用到观察者模式,将被选中的图形都作为观察者。当鼠标按下时,得到鼠标的坐标,然后遍历所有的图形对象,若该点在图形对象的选中范围内就将其作为观察者放入目标对象中的观察者集合中,之后就只需要同时对这些观察者就行操作就好了
    • 如何移动图形:
             移动图形最根本的就是改变原有图形对象的起点和终点坐标,那么要怎么改变坐标就可以通过记录鼠标移动的距离和位置,通过起点和终点坐标同时加减鼠标移动的距离就可以得到移动之后的新坐标。此处鼠标移动的距离通过鼠标终点的坐标减去鼠标起点的坐标得到,可能为正也可能为负,正的就是往右、下方向移动,负的就是往左、上方向移动
    • 如何放大图形:
             和移动图形类似,放大图形是改变原有图形对象的终点坐标,通过记录鼠标移动的距离和位置,然后终点坐标同时加减鼠标移动的距离就可以得到移动之后的新坐标。此处鼠标移动的距离也可能为正也可能为负,正的就是放大,负的就是缩小。

    3 完整代码

    public abstract class Graphical {   //图形抽象构件类
        int x1 ;    //起点坐标
        int y1 ;
        int x2 ;    //终点坐标
        int y2 ;
    
        public int getX1() {
            return x1;
        }
        public void setX1(int x1) { this.x1 = x1; }
        public int getY1() {
            return y1;
        }
        public void setY1(int y1) {
            this.y1 = y1;
        }
        public int getX2() {
            return x2;
        }
        public void setX2(int x2) {
            this.x2 = x2;
        }
        public int getY2() {
            return y2;
        }
        public void setY2(int y2) {
            this.y2 = y2;
        }
        //添加组件
        public void add(Graphical graphical) {}
        //删除组件
        public void remove(Graphical graphical) {}
        //画图形
        public void draw(Graphics g) {}
        //观察者更新数据
        public void update(int movedx, int movedy, int function) {    //更新新的坐标
            if(function == 1) {     //移动
                x1 += movedx ;      //移动的话起点、终点都要改变
                x2 += movedx ;
                y1 += movedy ;
                y2 += movedy ;
            }
            else {              //放大缩小
                x2 += movedx ;  //放大的话起点要做支点,改变终点
                y2 += movedy ;
            }
        }
    }
    
    public class Line extends Graphical {   //直线类
        public void draw(Graphics g) {      //画直线
            g.drawLine(x1, y1, x2, y2);
        }
    }
    
    public class Rectangle extends Graphical{   //矩形框类
        public void draw(Graphics g) {      //画矩形
            int height = Math.abs(y1 - y2) ;    //长,要取绝对值保证大于等于0
            int width = Math.abs(x1 - x2) ;     //宽
            g.drawRect(x1, y1, width, height);
        }
    }
    
    public class Text extends Graphical {   //文本字符串类
        public void draw(Graphics g) {      //画字符串
            g.drawString("双击输入内容", x1, y1);
        }
    }
    
    public class Circle extends Graphical {     //实心圆圈类
        public void draw(Graphics g) {      //画圆
            int r = Math.abs(x1 - x2) ;     //半径
            g.fillOval(x1, y1, r, r);
        }
    }
    
    public class Graphic extends Graphical {   //图形容器构件类
        //存储结点的集合,可放各类图形
        private List<Graphical> graphicalList = new ArrayList<Graphical>();
        private int flag ;      //记录是什么类型的图形
    
        public int getFlag() { return flag; }
        public void setFlag(int flag) {
            this.flag = flag;
        }
        public Graphic() {
            x1 = -99999 ;        //x1为大的
            x2 = 99999 ;       //x2为小的
            y1 = -99999 ;        //大
            y2 = 99999 ;       //小
        }
        //添加子结点
        public void add(Graphical graphical) {
            graphicalList.add(graphical);
        }
        //删除子结点
        public void remove(Graphical graphical) {
            graphicalList.remove(graphical);
        }
        //判断是否选中了该图形,用于移动和放大
        public boolean isChosed(int x, int y) {
            if(x<=x1 && x>=x2 && y<=y1 && y>=y2)   //若鼠标点击的位置在图形范围内就可以选中图形
                return true ;
            else
                return false ;
        }
        //修改容器的大小
        public void setSize(int x1, int y1, int x2, int y2) {
            //如果容器中的叶子构件的大小比原本容器的范围大就更新范围
            int maxX = x1>x2 ? x1:x2 ;
            int minX = x1<=x2 ? x1:x2 ;
            int maxY = y1>y2 ? y1:y2 ;
            int minY = y1<=y2 ? y1:y2 ;
            if(this.x1 < maxX)
                this.x1 = maxX;
            if(this.x2 > minX)
                this.x2 = minX ;
            if(this.y1 < maxY)
                this.y1 = maxY ;
            if(this.y2 > minY)
                this.y2 = minY ;
        }
        //接收目标的通知后,作为观察者的图形更新坐标
        public void update(int movedx, int movedy, int function) {//重写update方法
            super.update(movedx, movedy, function);   //整个容器构件的范围要更新
            GraphicalIteratorImpl iterator = createIterator() ; //创建迭代器
            while (iterator.isDone()) {            //按照迭代器的方法遍历容器中的所有图形
                Graphical graphical = iterator.next();  //当前图形
                graphical.update(movedx, movedy, function);   //对容器构件中所有子构件进行坐标更新
            }
        }
        //创建迭代器
        public GraphicalIteratorImpl createIterator() {
            return new GraphicalIteratorImpl(graphicalList) ;   //类似工厂
        }
    }
    
    public abstract class AbstractFactory {
        //创建一个直线对象
        public Line createLine() {
            return null ;
        };
        //创建一个圆圈对象
        public Circle createCircle() {
            return null ;
        };
        //创建一个文本字符串对象
        public Text createText() {
            return null ;
        };
        //创建一个矩形框对象
        public Rectangle createRectangle() {
            return null ;
        };
        //创建一个图形容器对象
        public Graphic createGraphics() {
            return null ;
        };
    }
    
    public class GraphicalFactory extends AbstractFactory {
        //创建一个直线对象
        public Line createLine() {
            return new Line();
        }
        //创建一个圆圈对象
        public Circle createCircle() {
            return new Circle();
        }
        //创建一个文本字符串对象
        public Text createText() {
            return new Text();
        }
        //创建一个矩形框对象
        public Rectangle createRectangle() {
            return new Rectangle();
        }
        //创建一个图形容器对象
        public Graphic createGraphics() {
            return new Graphic();
        }
    }
    
    public interface GraphicalIterator {    //抽象迭代器
        //判断遍历是否结束
        public boolean isDone();
        //获得下一个元素
        public Graphical next();
    
    }
    
    public class GraphicalIteratorImpl implements GraphicalIterator {//具体迭代器类
        private List<Graphical> traversalList;  //需要遍历的图形集合
        private Graphical currentGraphical ;    //当前元素
        private int position = 0;            //遍历位置
    
        public GraphicalIteratorImpl(List<Graphical> traversalList) {
            this.traversalList = traversalList ;
        }
        //判断是否遍历结完
        public boolean isDone() {
            return position < traversalList.size();
        }
        //获取下一个元素
        public Graphical next() {
            currentGraphical = traversalList.get(position) ;
            position++ ;
            return currentGraphical ;
        }
    
    }
    
    public interface GraphicalSubject {     //目标接口
        //添加观察者
        public void attach(Graphical graphical) ;
        //删除观察者
        public void delach(Graphical graphical) ;
        //通知观察者
        public void Notify() ;
    }
    
    public class GraphicalSubjectImpl implements GraphicalSubject{  //具体目标类
        private List<Graphical> observerList = new ArrayList<Graphical>();  //观察者集合
        private boolean state = false ;     //当前状态
        private boolean hasNumber = false ;  //记录是否有观察者
        private int function ;              //记录是移动还是放大
        private int startX ;                //初始点击的位置
        private int startY ;
        private int movedX ;                //鼠标移动的距离
        private int movedY ;
        public GraphicalSubjectImpl(int function) {
            this.function = function ;
        }
        public boolean hasNumber() {
            return hasNumber;
        }
        public void setNumber(boolean number) {
            hasNumber = number;
        }
        public int getMovedX() {
            return movedX;
        }
        public void setMovedX(int movedX) {
            this.movedX = movedX;
        }
        public int getMovedY() {
            return movedY;
        }
        public void setMovedY(int movedY) {
            this.movedY = movedY;
        }
        public int getStartX() {
            return startX;
        }
        public void setStartX(int startX) {
            this.startX = startX;
        }
        public int getStartY() {
            return startY;
        }
        public void setStartY(int startY) {
            this.startY = startY;
        }
        //添加观察者
        public void attach(Graphical graphical) {
            observerList.add(graphical) ;
        }
        //删除观察者
        public void delach(Graphical graphical) {
            if(observerList.contains(graphical))    //存在才删除
                observerList.remove(graphical) ;
        }
        //通知观察者
        public void Notify() {
            if(state == false)  //不是更新状态不能通知观察者
                return;
            GraphicalIteratorImpl iterator = this.createIterator() ; //创建迭代器
            while (iterator.isDone()){         //按照迭代器的方法遍历所有观察者
                Graphical graphical = iterator.next();  //当前图形
                graphical.update(movedX, movedY, function);   //更新坐标
            }
            this.clearState();  //通知完之后要结束更新状态
        }
        //设置更新状态
        public void setState(){
            state = true ;
        }
        //清除更新状态
        public void clearState() {
            state = false ;
        }
        //创建迭代器
        public GraphicalIteratorImpl createIterator() {     //类似工厂
            return new GraphicalIteratorImpl(observerList) ;
        }
    }
    
    public class Main {
        public static void main(String[] args) {
            Window window = new Window();
        }
    }
    
    public class Window extends JFrame  {
        DrawPanel drawPanel ;         //画图面板
        public Window() {
            drawPanel = new DrawPanel() ;
            add(drawPanel) ;        //只有将面板添加到窗口才能触发画图函数
            //面板大小要和窗口一样否则画出来坐标不一样
            drawPanel.setBounds(0, 0, 800, 600);
            this.addMouseListener(drawPanel);    //监听鼠标事件从而得到起始、终点坐标
            this.addMouseMotionListener(drawPanel);    //监听鼠标拖动时的坐标形成画图时的动画
            setLayout(null);        //画板要能调节大小,则窗口不能使用默认排版方式
            setBounds(500, 200, 800, 600);
            setVisible(true);
            validate();
            setDefaultCloseOperation(Window.EXIT_ON_CLOSE);
        }
    }
    public class DrawPanel extends JPanel implements ActionListener, MouseListener, MouseMotionListener {
        ArrayList<Graphic> graphicList = new ArrayList<Graphic>() ; //存储每一个已经建立的图形
        GraphicalSubjectImpl subject ;              //观察者模式的目标类
        JButton[] buttons = new JButton[11] ;    //按钮功能类似,用一个数组存放就可以了
        String[] buttonName = {"移动","放大","清空","直线","圆圈","矩形框","文本","数字直线","字符串符号",
                                "标志线字符串", "内虚框矩形"} ;    //按钮名字
        GraphicalFactory graphicalFactory = new GraphicalFactory() ;    //图形工厂
        Graphical graphical ;           //当前要处理的临时图形
        Graphic graphic ;               //当前要处理的临时容器构件
        int flag ;                  //标记当前画什么
        boolean moveOrScale ;      //移动或放大
        
        public DrawPanel(){
            flag = -1 ;                 //初始化要画的类型
            moveOrScale = false ;      //初始化不执行移动或放大
            for(int i=0; i<11; i++) {  //循环创建按钮
                buttons[i] = new JButton(buttonName[i]) ;
                add(buttons[i]) ;       //将按钮添加到面板中才能显示
                buttons[i].addActionListener(this); //为每个按钮都添加点击事件
            }
            setVisible(true);
        }
        public void paintComponent(Graphics g) {    //画图方法
            super.paintComponent(g);                //清空之前的内容再重新画
            for(int i=0; i<graphicList.size(); i++) {   //将所有图形重画
                graphic = graphicList.get(i) ;  //当前容器构件
                flag = graphic.getFlag() ;      //根据类型画相应的图形
                GraphicalIteratorImpl iterator = graphic.createIterator() ;//迭代器
                while (iterator.isDone()) {            //按照迭代器的方法遍历容器中的所有图形
                    graphical = iterator.next();    //当前图形
                    if(graphical != null) {         //只有容器中的子构件不为空才有东西可以画
                        g.setColor(Color.black);    //设置画的颜色
                        //画出一个图形要检测更新容器构件的范围
                        graphic.setSize(graphical.getX1(), graphical.getY1(),
                                graphical.getX2(), graphical.getY2());
                        graphical.draw(g);  //根据对应图形的画法画出图形
                        switch (flag) {     //复合图形
                            case 5 : {      //画有数字的直线
                                int x = (graphical.getX1()+graphical.getX2()) / 2 ;
                                int y = (graphical.getY1()+graphical.getY2()) / 2 ;
                                g.drawString("200", x, y);
                                //字符串是在直线上的则不需要再次判断范围
                                break;
                            }
                            case 6 : {      //画有字符串的符号
                                int x = (graphical.getX1()+graphical.getX2()) / 2 ;
                                int y = (graphical.getY1()+graphical.getY2()) / 2 ;
                                g.setColor(Color.red);      //画红色的圆
                                g.fillOval(x, y, 30, 30);   //画圆
                                g.setColor(Color.black);
                                for(int j=0; j<10; j++) {               //画虚线
                                    g.drawLine(x, y,
                                            x-5, y+5); //画直线
                                    x -= 10 ;   //每次画直线都要间隔一定距离就可以形成虚线的效果
                                    y += 10 ;
                                }
                                //画了新的内容出来需要检测更新容器的范围大小
                                graphic.setSize(x, y, x, y);
                                g.drawString("静61-127C", x-10, y+10); //画字符串
                                graphic.setSize(x-10, y+10, x-10, y+10);
                                break;
                            }
                            case 7 : {      //画有标志线的字符串
                                g.drawLine(graphical.getX2(), graphical.getY2(),
                                        graphical.getX2()+150,graphical.getY2());//画水平线
                                graphic.setSize(graphical.getX2(), graphical.getY2(),
                                        graphical.getX2()+150,graphical.getY2());
                                g.drawString("双击输入标注内容", graphical.getX2()+5,
                                        graphical.getY2()-5);   //画字符串
                                break;
                            }
                            case 8 : {      //有内虚框的方框
                                int x1 = graphical.getX1() ;
                                int y1 = graphical.getY1() + 5;
                                int x2 = graphical.getX2() ;
                                int y2 = graphical.getY2() ;
                                while(y1 < y2-10) {            //画垂直的虚线
                                    g.drawLine(x1+5, y1,
                                            x1+5, y1+5); //画直线
                                    g.drawLine(x2-5, y1,
                                            x2-5, y1+5);
                                    y1 += 10 ;
                                }
                                y1 = graphical.getY1() ;
                                x1 += 5 ;
                                while(x1 < x2-10) {               //画水平的虚线
                                    g.drawLine(x1, y1+5,
                                            x1+5, y1+5); //画直线
                                    g.drawLine(x1, y2-5,
                                            x1+5, y2-5);
                                    x1 += 10 ;
                                }
                                break;
                            }
                        }
                    }
                }
            }
        }
        public void actionPerformed(ActionEvent e) {   //先选则要干什么再创建相应的对象
            //使用getActionCommand()获得按钮上的文字
            if(e.getActionCommand().equals("移动") || e.getActionCommand().equals("放大")) {    //移动图形
                if(e.getActionCommand().equals("移动"))   //移动
                    subject = new GraphicalSubjectImpl(1) ;  //创建一个目标类
                else            //放大
                    subject = new GraphicalSubjectImpl(2) ;  //创建一个目标类
                moveOrScale = true ;
            }
            else if(e.getActionCommand().equals("清空") ) {
                graphicList.clear();   //将已经生成的所有图形对象都删除
                this.repaint();        //重画,由于所有图形对象都没有了达到清空的效果
            }
            else {      //画图形
                //不管画什么图形都放在一个新的容器构件中,之后要在其中加子构件比较方便
                //每次画完一个之后就要点击一次按钮才会创建新的对象,否则一直都是不断对相同的对象重写画图
                graphic = graphicalFactory.createGraphics() ;   //创建新容器构件
                graphicList.add(graphic) ;          //将该容器构件放入图形列表中
                switch (e.getActionCommand()) {     //用switch效率比if高一些
                    case "直线" : {
                        graphical = graphicalFactory.createLine(); //创建一个直线作为叶子构件
                        graphic.setFlag(1);
                        break;
                    }
                    case "矩形框" : {
                        graphical = graphicalFactory.createRectangle();
                        graphic.setFlag(2);
                        break;
                    }
                    case "文本" : {
                        graphical = graphicalFactory.createText() ;
                        graphic.setFlag(3);
                        break;
                    }
                    case "圆圈" : {
                        graphical = graphicalFactory.createCircle() ;
                        graphic.setFlag(4);
                        break;
                    }
                    case "数字直线" : {
                        graphical = graphicalFactory.createLine() ;
                        graphic.setFlag(5);
                        break;
                    }
                    case "字符串符号" : {
                        graphical = graphicalFactory.createLine() ;
                        graphic.setFlag(6);
                        break;
                    }
                    case "标志线字符串" : {
                        graphical = graphicalFactory.createLine() ;
                        graphic.setFlag(7);
                        break;
                    }
                    case "内虚框矩形" : {
                        graphical = graphicalFactory.createRectangle() ;
                        graphic.setFlag(8);
                        break;
                    }
                }
                graphic.add(graphical);    //将叶子构件加入到新创建的容器构件中
            }
        }
        //鼠标按下得到起始位置,用于画图或者移动放大
        public void mousePressed(MouseEvent e) {
            if(moveOrScale) {     //移动
                //将点击坐标在图形范围内的所有容器构件作为观察者中
                for(int i=0; i<graphicList.size(); i++) {   //遍历图形列表
                    graphic = graphicList.get(i) ;      //当前容器构建
                    //起点在容器构件的范围内才能移动该容器中的图形
                    if(graphic.isChosed(e.getX(), e.getY())) { //判断该点是否在容器构件范围内
                        subject.attach(graphic);    //容器构件作为观察者
                        subject.setNumber(true);    //标记存在观察者
                    }
                }
                if(subject.hasNumber()) {           //存在观察者就继续操作
                    subject.setStartX(e.getX());    //设置移动的初始位置
                    subject.setStartY(e.getY());
                }
                else            //不存在观察者就不用继续操作了
                    moveOrScale = false ;
            }
            else {              //画图
                if(graphical != null) {     //只有当前有对象才能存起始位置
                    graphical.setX1(e.getX());
                    graphical.setY1(e.getY());
                    System.out.println(graphical.getX1()+ "   "+ graphical.getY1());
                }
            }
        }
        //鼠标抬起得到终止位置
        public void mouseReleased(MouseEvent e) {
            if(moveOrScale) {       //移动或放大
                //获得鼠标移动的距离,正负都是有可能的
                //例如放大功能中得到正数为放大,负数为缩小
                subject.setMovedX(e.getX() - subject.getStartX());
                subject.setMovedY(e.getY() - subject.getStartY());
                subject.setState(); //修改为更新状态,只有更新状态下才能进行Notify方法
                subject.Notify();   //观察者通知范围内的所有图形移动
                subject = null ;    //执行完后要舍去该目标对象,否则里面还会存在之前的内容
                this.repaint();     //容器构件中图新坐标更新后就重新画
                moveOrScale = false ;   //结束移动或放大
            }
            else {          //画图
                if(graphical != null) {
                    graphical.setX2(e.getX());  //终点坐标
                    graphical.setY2(e.getY());
                    System.out.println(graphical.getX2()+ "   "+ graphical.getY2());
                    this.repaint();     //获得起点终点后就可以画图了
                }
            }
        }
        //拖动鼠标时不断画图形,形成动画效果
        public void mouseDragged(MouseEvent e) {
            if(!moveOrScale) {          //画图过程
                if(graphical != null) {
                    graphical.setX2(e.getX());  //将拖动鼠标时得到的坐标作为暂时的终点坐标
                    graphical.setY2(e.getY());
                    System.out.println(graphical.getX2()+ "   "+ graphical.getY2());
                    this.repaint();     //获得起点终点后就可以画图了
                }
            }
        }
        //一下均为未使用到的方法
        public void mouseClicked(MouseEvent e) {}
        public void mouseEntered(MouseEvent e) {}
        public void mouseExited(MouseEvent e) {}
        public void mouseMoved(MouseEvent e) {}
    }
    
    

    4 总结

    • 要思考要实现的这些功能以什么样的设计模式来做比较合理。比如图形可能会组合在一起使用,那么用组合设计模式来创建复合图形就比较容易对其进行各种操作。如果经验比较少的话可能一下子不容易找出适合的设计模式,但是可以先确定一个大概的方向,然后先以自己能够实现的方式来做,完成之后再来分析这段代码合不合理,哪里有可以改进的地方,思考什么样的设计模式能够优化代码。找到合适的设计模式之后就对原本的代码进行改进。这个过程虽然不符合正规的设计方式,但是我认为对于新手来说这是学习、理解一个软件设计模式最好的方法
    • 很多时候是因为我们的经验不足,做过的项目太少,所以很难一下子就能轻松明白什么地方应该用什么样的设计模式更合理,所以在打代码的过程中,一个功能用了几种方式后才选出了真正适合的设计模式。所以只有多做项目,扩大项目规模,不断发现错误和不合理的地方,才能对这些设计模式有更加深刻的印象和理解
    • 第一次用这些设计模式,可能不全对,之后经验多了可能会发现其中的一些问题吧
    • 这次做实验,也是我第一次好好把不同类型的文件放在不同的包里,虽然还不太确定要把哪个文件放在哪个包里,但是这样简单的划分一下还是很有帮助的,找某个内容时就会方便很多
      在这里插入图片描述
    展开全文
  • 它用各种图形符号表示电阻器、电容器、开关、晶体管等实物,用线条把元器件和单元电路按工作原理的关系连接起来。这种图长期以来就一直被叫做电路图。 另一种是说明数字电子电路工作原理的。它用各种图形符号表示...

    电子设备中有各种各样的图。能够说明它们工作原理的是电原理图,简称电路图。

    电路图有两种,一种是说明模拟电子电路工作原理的。它用各种图形符号表示电阻器、电容器、开关、晶体管等实物,用线条把元器件和单元电路按工作原理的关系连接起来。这种图长期以来就一直被叫做电路图。

    另一种是说明数字电子电路工作原理的。它用各种图形符号表示门、触发器和各种逻辑部件,用线条把它们按逻辑关系连接起来,它是用来说明各个逻辑单元之间的逻辑关系和整机的逻辑功能的。为了和模拟电路的电路图区别开来,就把这种图叫做逻辑电路图,简称逻辑图。

    除了上述两种图外,常用的还有方框图。它用一个框表示电路的一部分,它能简洁明了地说明电路各部分的关系和整机的工作原理。

    一张电路图就好象是一篇文章,各种单元电路就好比是句子,而各种元器件就是组成句子的单词。所以要想看懂电路图,还得从认识单词 —— 元器件开始。有关电阻器、电容器、电感线圈、晶体管等元器件的用途、类别、使用方法等内容。本文只把电路图中常出现的各种符号重述一遍,希望初学者熟悉它们,并记住不忘。

    电阻器与电位器

    符号详见图 1 所示 ,其中( a )表示一般的阻值固定的电阻器,( b )表示半可调或微调电阻器;( c )表示电位器;( d )表示带开关的电位器。电阻器的文字符号是“ R ”,电位器是“ RP ”,即在 R 的后面再加一个说明它有调节功能的字符“ P ”。

    图片

    在某些电路中,对电阻器的功率有一定要求,可分别用图 1 中( e )、( f )、( g )、( h )所示符号来表示。

    几种特殊电阻器的符号:

    第 1 种是热敏电阻符号,热敏电阻器的电阻值是随外界温度而变化的。有的是负温度系数的,用 NTC 来表示;有的是正温度系数的,用 PTC 来表示。它的符号见图( i ),用 θ 或 t° 来表示温度。它的文字符号是“ RT ”。

    第 2 种是光敏电阻器符号,见图 1 ( j ),有两个斜向的箭头表示光线。它的文字符号是“ RL ”。

    第 3 种是压敏电阻器的符号,压敏电阻阻值是随电阻器两端所加的电压而变化的。符号见图 1 ( k ),用字符 U 表示电压。它的文字符号是“ RV ”。

    这三种电阻器实际上都是半导体器件,但习惯上我们仍把它们当作电阻器。

    第 4 种特殊电阻器符号是表示新近出现的保险电阻,它兼有电阻器和熔丝的作用。当温度超过 500℃ 时,电阻层迅速剥落熔断,把电路切断,能起到保护电路的作用。它的电阻值很小,目前在彩电中用得很多。它的图形符号见图 1 ( 1 ),文字符号是“ R F ”。

    电容器的符号

    详见图2 所示 ,其中( a )表示容量固定的电容器,( b )表示有极性电容器,例如各种电解电容器,( c )表示容量可调的可变电容器。( d )表示微调电容器,( e )表示一个双连可变电容器。电容器的文字符号是 C 。

    图片

    电感器与变压器的符号

    电感线圈在电路图中的图形符号见图 3 。其中( a )是电感线圈的一般符号,( b )是带磁芯或铁芯的线圈,( c )是铁芯有间隙的线圈,( d )是带可调磁芯的可调电感,( e )是有多个抽头的电感线圈。电感线圈的文字符号是“ L ”。

    图片

    变压器的图形符号见图 4 。其中( a )是空芯变压器,( b )是滋芯或铁芯变压器,( c )是绕组间有屏蔽层的铁芯变压器,( d )是次级有中心抽头的变压器,( e )是耦合可变的变压器,( f )是自耦变压器,( g )是带可调磁芯的变压器,( h )中的小圆点是变压器极性的标记。

    送话器、拾音器和录放音磁头的符号

    送话器的符号见图 5 ☟ ( a )( b )( c ),其中( a )为一般送话器的图形符号,( b )是电容式送话器,( c )是压电晶体式送话器的图形符号。送话器的文字符号是“ BM ”。

    拾音器俗称电唱头。图 5 ( d )是立体声唱头的图形符号,它的文字符号是“ B ”。图 5 ( e )是单声道录放音磁头的图形符号。如果是双声道立体声的,就在符号上加一个“ 2 ”字,见图( f )。

    扬声器、耳机的符号

    扬声器、耳机都是把电信号转换成声音的换能元件。耳机的符号见图 5 ( g )。它的文字符号是“ B E ”。扬声器的符号见图 5 ( h ),它的文字符号是“ BL ”。

    接线元件的符号

    电子电路中常常需要进行电路的接通、断开或转换,这时就要使用接线元件。接线元件有两大类:一类是开关;另一类是接插件。

    ( 1 )开关的符号

    在机电式开关中至少有一个动触点和一个静触点。当我们用手扳动、推动或是旋转开关的机构,就可以使动触点和静触点接通或者断开,达到接通或断开电路的目的。

    动触点和静触点的组合一般有 3 种: ① 动合(常开)触点,符号见图 6 ( a );② 动断(常闭)触点,符号是图 6 ( b );③ 动换(转换)触点,符号见图 6 ( c )。一个最简单的开关只有一组触点,而复杂的开关就有好几组触点。

    图片

    开关在电路图中的图形符号见图 7。其中( a )表示一般手动开关;( b )表示按钮开关,带一个动断触点;( c )表示推拉式开关,带一组转换触点;图中把扳键画在触点下方表示推拉的动作;( d )表示旋转式开关,带 3 极同时动合的触点;( e )表示推拉式 1×6 波段开关;( f )表示旋转式 1×6 波段开关的符号。开关的文字符号用“ S ”,对控制开关、波段开关可以用“ SA ”,对按钮式开关可以用“ SB ”。

    图片

    ( 2 )接插件的符号

    接插件的图形符号见图 8 。其中( a )表示一个插头和一个插座,(有两种表示方式)左边表示插座,右边表示插头。( b )表示一个已经插入插座的插头。( c )表示一个 2 极插头座,也称为 2 芯插头座。( d )表示一个 3 极插头座,也就是常用的 3 芯立体声耳机插头座。( e )表示一个 6 极插头座。为了简化也可以用图( f )表示,在符号上方标上数字 6 ,表示是 6 极。接插件的文字符号是 X 。为了区分,可以用“ XP ”表示插头,用“ XS ”表示插座。

    图片

    继电器的符号

    因为继电器是由线圈和触点组两部分组成的,所以继电器在电路图中的图形符号也包括两部分:

    一个长方框表示线圈;一组触点符号表示触点组合。当触点不多电路比较简单时,往往把触点组直接画在线圈框的一侧,这种画法叫集中表示法,如图 9 ( a )。当触点较多而且每对触点所控制的电路又各不相同时,为了方便,常常采用分散表示法。就是把线圈画在控制电路中,把触点按各自的工作对象分别画在各个受控电路里。这种画法对简化和分析电路有利。但这种画法必须在每对触点旁注上继电器的编号和该触点的编号,并且规定所有的触点都应该按继电器不通电的原始状态画出。

    图 9 ( b )是一个触摸开关。当人手触摸到金属片 A 时, 555 时基电路输出( 3 端)高电位,使继电器 KR1 通电,触点闭合使灯点亮使电铃发声。555 时基电路是控制部分,使用的是 6 伏低压电。电灯和电铃是受控部分,使用的是 220 伏市电。

    图片

    继电器的文字符号都是“ K ”。有时为了区别,交流继电器用“ KA ”,电磁继电器和舌簧继电器可以用“ KR ”,时间继电器可以用“ KT ”。

    电池及熔断器符号

    电池的图形符号见图 10 。长线表示正极,短线表示负极,有时为了强调可以把短线画得粗一些。图 10 ( b )是表示一个电池组。有时也可以把电池组简化地画成一个电池,但要在旁边注上电压或电池的数量。图 10 ( c )是光电池的图形符号。电池的文字符号为“ GB ”。熔断器的图形符号见图 11 ,它的文字符号是“ FU ”。

    二极管、三极管符号

    半导体二极管在电路图中的图形符号见图 12  。其中( a )为一段二极管的符号,箭头所指的方向就是电流流动的方向,就是说在这个二级管上端接正,下端接负电压时它就能导通。图( b )是稳压二极管符号。图( c )是变容二极管符号,旁边的电容器符号表示它的结电容是随着二极管两端的电压变化的。图( d )是热敏二极管符号。图( e )是发光二极管符号,用两个斜向放射的箭头表示它能发光。图( f )是磁敏二极管符号,它能对外加磁场作出反应,常被制成接近开关而用在自动控制方面。二极管的文字符号用“ V ”,有时为了和三极管区别,也可能用“ VD ”来表示。

    由于 PNP 型和 NPN 型三极管在使用时对电源的极性要求是不同的,所以在三极管的图形符号中应该能够区别和表示出来。图形符号的标准规定:只要是 PNP 型三极管,不管它是用锗材料的还是用硅材料的,都用图 13 ( a )来表示。同样,只要是 NPN 型三极管,不管它是用锗材料还是硅材料的,都用图 13 ( b )来表示。图 13 ( c )是光敏三极管的符号。图 13 ( d )表示一个硅 NPN 型磁敏三极管。

    晶闸管、单结晶体管、场效应管的符号

    晶闸管是晶体闸流管或可控硅整流器的简称,常用的有单向晶闸管、双向晶闸管和光控晶闸管,它们的符号分别为图 14 中的( a )( b )( c )。晶闸管的文字符号是“ VS ”。

    图片

    单结晶体管的符号见图 15 。

    图片

    利用电场控制的半导体器件,称为场效应管,它的符号如图 16 所示,其中( a )表示 N 沟道结型场效应管,( b )表示 N 沟道增强型绝缘栅场效应管,( c )表示 P 沟道耗尽型绝缘栅场效应管。它们的文字符号也是“ VT ”。

    图片

    前面介绍了电路图中的元器件的作用和符号。一张电路图通常有几十乃至几百个元器件,它们的连线纵横交叉,形式变化多端,初学者往往不知道该从什么地方开始,怎样才能读懂它。

    其实电子电路本身有很强的规律性,不管多复杂的电路,经过分析可以发现,它是由少数几个单元电路组成的。好象孩子们玩的积木,虽然只有十来种或二三十种块块,可是在孩子们手中却可以搭成几十乃至几百种平面图形或立体模型。

    同样道理,再复杂的电路,经过分析就可发现,它也是由少数几个单元电路组成的。因此初学者只要先熟悉常用的基本单元电路,再学会分析和分解电路的本领,看懂一般的电路图应该是不难的。

    按单元电路的功能可以把它们分成若干类,每一类又有好多种,全部单元电路大概总有几百种。下面我们选最常用的基本单元电路来介绍。让我们从电源电路开始。

    电源电路的功能和组成

    每个电子设备都有一个供给能量的电源电路。电源电路有整流电源、逆变电源和变频器三种。常见的家用电器中多数要用到直流电源。直流电源的最简单的供电方法是用电池。但电池有成本高、体积大、需要不时更换(蓄电池则要经常充电)的缺点,因此最经济可靠而又方便的是使用整流电源。

    电子电路中的电源一般是低压直流电,所以要想从 220 伏市电变换成直流电,应该先把 220 伏交流变成低压交流电,再用整流电路变成脉动的直流电,最后用滤波电路滤除脉动直流电中的交流成分后才能得到直流电。有的电子设备对电源的质量要求很高,所以有时还需要再增加一个稳压电路。因此整流电源的组成一般有四大部分,见图 1 。其中变压电路其实就是一个铁芯变压器,需要介绍的只是后面三种单元电路。

    图片

    整流电路

    整流电路是利用半导体二极管的单向导电性能把交流电变成单向脉动直流电的电路。

    ( 1 )半波整流

    半波整流电路只需一个二极管,见图 2 ( a )。在交流电正半周时 VD 导通,负半周时 VD 截止,负载 R 上得到的是脉动的直流电。

    图片

    ( 2 )全波整流

    全波整流要用两个二极管,而且要求变压器有带中心抽头的两个圈数相同的次级线圈,见图 2 ( b )。负载 R L 上得到的是脉动的全波整流电流,输出电压比半波整流电路高。

    ( 3 )全波桥式整流

    用 4 个二极管组成的桥式整流电路可以使用只有单个次级线圈的变压器,见图 2 ( c )。负载上的电流波形和输出电压值与全波整流电路相同。

    ( 4 )倍压整流

    用多个二极管和电容器可以获得较高的直流电压。图 2 ( d )是一个二倍压整流电路。当 U2 为负半周时 VD1 导通, C1 被充电, C1 上最高电压可接近 1.4U2 ;当 U2 正半周时 VD2 导通, C1 上的电压和 U2 叠加在一起对 C2 充电,使 C2 上电压接近 2.8U2 ,是 C1 上电压的 2 倍,所以叫倍压整流电路。

    滤波电路

    整流后得到的是脉动直流电,如果加上滤波电路滤除脉动直流电中的交流成分,就可得到平滑的直流电。

    ( 1 )电容滤波

    把电容器和负载并联,如图 3 ( a ),正半周时电容被充电,负半周时电容放电,就可使负载上得到平滑的直流电。

    ( 2 )电感滤波

    把电感和负载串联起来,如图 3 ( b ),也能滤除脉动电流中的交流成分。

    ( 3 ) L 、 C 滤波

    用 1 个电感和 1 个电容组成的滤波电路因为象一个倒写的字母“ L ”,被称为 L 型,见图 3 ( c )。用 1 个电感和 2 个电容的滤波电路因为象字母“ π ”,被称为 π 型,见图 3 ( d ),这是滤波效果较好的电路。

    ( 4 ) RC 滤波

    电感器的成本高、体积大,所以在电流不太大的电子电路中常用电阻器取代电感器而组成 RC 滤波电路。同样,它也有 L 型,见图 3 ( e );π 型,见图 3 ( f )。

    稳压电路

    交流电网电压的波动和负载电流的变化都会使整流电源的输出电压和电流随之变动,因此要求较高的电子电路必须使用稳压电源。

     (1 )稳压管并联稳压电路

    用一个稳压管和负载并联的电路是最简单的稳压电路,见图 4 ( a )。图中 R 是限流电阻。这个电路的输出电流很小,它的输出电压等于稳压管的稳定电压值 V Z 。

    图片

    图片

    (2 )串联型稳压电路

    有放大和负反馈作用的串联型稳压电路是最常用的稳压电路。它的电路和框图见图 4 ( b )、( c )。它是从取样电路( R3 、 R4 )中检测出输出电压的变动,与基准电压( V Z )比较并经放大器( VT2 )放大后加到调整管( VT1 )上,使调整管两端的电压随着变化。如果输出电压下降,就使调整管管压降也降低,于是输出电压被提升;如果输出电压上升,就使调整管管压降也上升,于是输出电压被压低,结果就使输出电压基本不变。在这个电路的基础上发展成很多变型电路或增加一些辅助电路,如用复合管作调整管,输出电压可调的电路,用运算放大器作比较放大的电路,以及增加辅助电源和过流保护电路等。

    ( 3 )开关型稳压电路

    近年来广泛应用的新型稳压电源是开关型稳压电源。它的调整管工作在开关状态,本身功耗很小,所以有效率高、体积小等优点,但电路比较复杂。

    开关稳压电源从原理上分有很多种。它的基本原理框图见图 4 ( d )。图中电感 L 和电容 C 是储能和滤波元件,二极管 VD 是调整管在关断状态时为 L 、 C 滤波器提供电流通路的续流二极管。开关稳压电源的开关频率都很高,一般为几~几十千赫,所以电感器的体积不很大,输出电压中的高次谐波也不多。

    它的基本工作原理是 : 从取样电路( R3 、 R4 )中检测出取样电压经比较放大后去控制一个矩形波发生器。矩形波发生器的输出脉冲是控制调整管( VT )的导通和截止时间的。如果输出电压 U 0 因为电网电压或负载电流的变动而降低,就会使矩形波发生器的输出脉冲变宽,于是调整管导通时间增大,使 L 、 C 储能电路得到更多的能量,结果是使输出电压 U 0 被提升,达到了稳定输出电压的目的。

    ( 4 )集成化稳压电路

    近年来已有大量集成稳压器产品问世,品种很多,结构也各不相同。目前用得较多的有三端集成稳压器,有输出正电压的 CW7800 系列和输出负电压的 CW7900 系列等产品。输出电流从 0.1A ~ 3A ,输出电压有 5V 、 6V 、 9V 、 12V 、 15V 、 18V 、 24V 等多种。

    这种集成稳压器只有三个端子,稳压电路的所有部分包括大功率调整管以及保护电路等都已集成在芯片内。使用时只要加上散热片后接到整流滤波电路后面就行了。外围元件少,稳压精度高,工作可靠,一般不需调试。

    图 4 ( e )是一个三端稳压器电路。图中 C 是主滤波电容, C1 、 C2 是消除寄生振荡的电容 ,VD 是为防止输入短路烧坏集成块而使用的保护二极管。

    电源电路读图要点和举例

    电源电路是电子电路中比较简单然而却是应用最广的电路。拿到一张电源电路图时,应该:

     ① 先按“整流 — 滤波 — 稳压”的次序把整个电源电路分解开来,逐级细细分析。

     ② 逐级分析时要分清主电路和辅助电路、主要元件和次要元件,弄清它们的作用和参数要求等。例如开关稳压电源中,电感电容和续流二极管就是它的关键元件。

     ③ 因为晶体管有 NPN 和 PNP 型两类,某些集成电路要求双电源供电,所以一个电源电路往往包括有不同极性不同电压值和好几组输出。读图时必须分清各组输出电压的数值和极性。在组装和维修时也要仔细分清晶体管和电解电容的极性,防止出错。

     ④ 熟悉某些习惯画法和简化画法。⑤ 最后把整个电源电路从前到后全面综合贯通起来。这张电源电路图也就读懂了。

    例 1 电热毯控温电路

    图 5 是一个电热毯电路。开关在“ 1 ”的位置是低温档。220 伏市电经二极管后接到电热毯,因为是半波整流,电热毯两端所加的是约 100 伏的脉动直流电,发热不高,所以是保温或低温状态。开关扳到“ 2 ”的位置, 220 伏市电直接接到电热毯上,所以是高温档。

    例 2 高压电子灭蚊蝇器

    图 6 是利用倍压整流原理得到小电流直流高压电的灭蚊蝇器。 220 伏交流经过四倍压整流后输出电压可达 1100 伏,把这个直流高压加到平行的金属丝网上。网下放诱饵,当苍蝇停在网上时造成短路,电容器上的高压通过苍蝇身体放电把蝇击毙。苍蝇尸体落下后,电容器又被充电,电网又恢复高压。这个高压电网电流很小,因此对人无害。

    图片

    由于昆虫夜间有趋光性,因此如在这电网后面放一个 3 瓦荧光灯或小型黑光灯,就可以诱杀蚊虫和有害昆虫。

    例 3 实用稳压电源

    图 7 是一个实用的稳压电源。输出电压 3 ~ 9 伏可调,输出电流最大 100 毫安。这个电路就是串联型稳压电源电路。要注意的是 :① 整流桥的画法和图 2 ( c )不同,实际上它就是桥式整流电路。② 这个电路使用 PNP 型锗管,所以输出是负电压,正极接地。③ 用两个普通二极管代替稳压管。任何二极管的正向压降都是基本不变的,因此可用二极管代替稳压管。2AP 型二极管的正向压降约是 0.3 伏, 2CP 型约是 0.7 伏, 2CZ 型约是 1 伏。图中用了两个 2CZ 二极管作基准电压。④ 取样电阻是一个电位器,所以输出电压是可调的。

    图片

    能够把微弱的信号放大的电路叫做放大电路或放大器。例如助听器里的关键部件就是一个放大器。

    放大电路的用途和组成

    放大器有交流放大器和直流放大器。交流放大器又可按频率分为低频、中源和高频;接输出信号强弱分成电压放大、功率放大等。此外还有用集成运算放大器和特殊晶体管作器件的放大器。它是电子电路中最复杂多变的电路。但初学者经常遇到的也只是少数几种较为典型的放大电路。

    读放大电路图时也还是按照“逐级分解、抓住关键、细致分析、全面综合”的原则和步骤进行。首先把整个放大电路按输入、输出逐级分开,然后逐级抓住关键进行分析弄通原理。放大电路有它本身的特点:一是有静态和动态两种工作状态,所以有时往往要画出它的直流通路和交流通路才能进行分析;二是电路往往加有负反馈,这种反馈有时在本级内,有时是从后级反馈到前级,所以在分析这一级时还要能“瞻前顾后”。在弄通每一级的原理之后就可以把整个电路串通起来进行全面综合。

    下面我们介绍几种常见的放大电路:

    低频电压放大器

    低频电压放大器是指工作频率在 20 赫~ 20 千赫之间、输出要求有一定电压值而不要求很强的电流的放大器。

    ( 1 )共发射极放大电路

    图 1 ( a )是共发射极放大电路。 C1 是输入电容, C2 是输出电容,三极管 VT 就是起放大作用的器件, RB 是基极偏置电阻 ,RC 是集电极负载电阻。1 、 3 端是输入, 2 、 3 端是输出。3 端是公共点,通常是接地的,也称“地”端。静态时的直流通路见图 1 ( b ),动态时交流通路见图 1 ( c )。电路的特点是电压放大倍数从十几到一百多,输出电压的相位和输入电压是相反的,性能不够稳定,可用于一般场合。

    图片

        

    图片

    ( 2 )分压式偏置共发射极放大电路

    图 2 比图 1 多用 3 个元件。基极电压是由 RB1 和 RB2 分压取得的,所以称为分压偏置。发射极中增加电阻 RE 和电容 CE , CE 称交流旁路电容,对交流是短路的;RE 则有直流负反馈作用。所谓反馈是指把输出的变化通过某种方式送到输入端,作为输入的一部分。如果送回部分和原来的输入部分是相减的,就是负反馈。图中基极真正的输入电压是 RB2 上电压和 RE 上电压的差值,所以是负反馈。由于采取了上面两个措施,使电路工作稳定性能提高,是应用最广的放大电路。

         

    ( 3 )射极输出器

    图 3 ( a )是一个射极输出器。它的输出电压是从射极输出的。图 3 ( b )是它的交流通路图,可以看到它是共集电极放大电路。

    图片

    这个图中,晶体管真正的输入是 V i 和 V o 的差值,所以这是一个交流负反馈很深的电路。由于很深的负反馈,这个电路的特点是:电压放大倍数小于 1 而接近 1 ,输出电压和输入电压同相,输入阻抗高输出阻抗低,失真小,频带宽,工作稳定。它经常被用作放大器的输入级、输出级或作阻抗匹配之用。

    ( 4 )低频放大器的耦合

    一个放大器通常有好几级,级与级之间的联系就称为耦合。放大器的级间耦合方式有三种:①RC 耦合,见图 4 ( a )。优点是简单、成本低。但性能不是最佳。② 变压器耦合,见图 4 ( b )。优点是阻抗匹配好、输出功率和效率高,但变压器制作比较麻烦。③ 直接耦合,见图 4 ( c )。优点是频带宽,可作直流放大器使用,但前后级工作有牵制,稳定性差,设计制作较麻烦。

    图片

      

    图片

    图片

    功率放大器

    能把输入信号放大并向负载提供足够大的功率的放大器叫功率放大器。例如收音机的末级放大器就是功率放大器。

    ( 1 )甲类单管功率放大器

    图片

    图 5 是单管功率放大器, C1 是输入电容, T 是输出变压器。它的集电极负载电阻 Ri′ 是将负载电阻 R L 通过变压器匝数比折算过来的:

    RC′= ( N1 N2 ) 2 RL=N 2 RL

    负载电阻是低阻抗的扬声器,用变压器可以起阻抗变换作用,使负载得到较大的功率。

    这个电路不管有没有输入信号,晶体管始终处于导通状态,静态电流比较大,困此集电极损耗较大,效率不高,大约只有 35 %。这种工作状态被称为甲类工作状态。这种电路一般用在功率不太大的场合,它的输入方式可以是变压器耦合也可以是 RC 耦合。

    ( 2 )乙类推挽功率放大器

    图 6 是常用的乙类推挽功率放大电路。它由两个特性相同的晶体管组成对称电路,在没有输入信号时,每个管子都处于截止状态,静态电流几乎是零,只有在有信号输入时管子才导通,这种状态称为乙类工作状态。当输入信号是正弦波时,正半周时 VT1 导通 VT2 截止,负半周时 VT2 导通 VT1 截止。两个管子交替出现的电流在输出变压器中合成,使负载上得到纯正的正弦波。这种两管交替工作的形式叫做推挽电路。

    图片

    乙类推挽放大器的输出功率较大,失真也小,效率也较高,一般可达 60 %。

    ( 3 ) OTL 功率放大器

    目前广泛应用的无变压器乙类推挽放大器,简称 OTL 电路,是一种性能很好的功率放大器。为了易于说明,先介绍一个有输入变压器没有输出变压器的 OTL 电路,如图 7 。

    这个电路使用两个特性相同的晶体管,两组偏置电阻和发射极电阻的阻值也相同。在静态时, VT1 、 VT2 流过的电流很小,电容 C 上充有对地为 1 2 E c 的直流电压。在有输入信号时,正半周时 VT1 导通, VT2 截止,集电极电流 i c1 方向如图所示,负载 RL 上得到放大了的正半周输出信号。负半周时 VT1 截止, VT2 导通,集电极电流 i c2 的方向如图所示, RL 上得到放大了的负半周输出信号。这个电路的关键元件是电容器 C ,它上面的电压就相当于 VT2 的供电电压。

    以这个电路为基础,还有用三极管倒相的不用输入变压器的真正 OTL 电路,用 PNP 管和 NPN 管组成的互补对称式 OTL 电路,以及最新的桥接推挽功率放大器,简称 BTL 电路等等。

    直流放大器

    能够放大直流信号或变化很缓慢的信号的电路称为直流放大电路或直流放大器。测量和控制方面常用到这种放大器。

    ( 1 )双管直耦放大器

    直流放大器不能用 RC 耦合或变压器耦合,只能用直接耦合方式。图 8 是一个两级直耦放大器。直耦方式会带来前后级工作点的相互牵制,电路中在 VT2 的发射极加电阻 R E 以提高后级发射极电位来解决前后级的牵制。直流放大器的另一个更重要的问题是零点漂移。所谓零点漂移是指放大器在没有输入信号时,由于工作点不稳定引起静态电位缓慢地变化,这种变化被逐级放大,使输出端产生虚假信号。放大器级数越多,零点漂移越严重。所以这种双管直耦放大器只能用于要求不高的场合。

    图片

    ( 2 )差分放大器

    解决零点漂移的办法是采用差分放大器,图 9 是应用较广的射极耦合差分放大器。它使用双电源,其中 VT1 和 VT2 的特性相同,两组电阻数值也相同, R E 有负反馈作用。实际上这是一个桥形电路,两个 R C 和两个管子是四个桥臂,输出电压 V 0 从电桥的对角线上取出。没有输入信号时,因为 RC1=RC2 和两管特性相同,所以电桥是平衡的,输出是零。由于是接成桥形,零点漂移也很小。

    图片

    差分放大器有良好的稳定性,因此得到广泛的应用。

    集成运算放大器

    集成运算放大器是一种把多级直流放大器做在一个集成片上,只要在外部接少量元件就能完成各种功能的器件。因为它早期是用在模拟计算机中做加法器、乘法器用的,所以叫做运算放大器。它有十多个引脚,一般都用有 3 个端子的三角形符号表示,如图 10 。它有两个输入端、 1 个输出端,上面那个输入端叫做反相输入端,用“ — ”作标记;下面的叫同相输入端,用“+”作标记。

    图片

    集成运算放大器可以完成加、减、乘、除、微分、积分等多种模拟运算,也可以接成交流或直流放大器应用。在作放大器应用时有:

    ( 1 )带调零的同相输出放大电路

    图 11 是带调零端的同相输出运放电路。引脚 1 、 11 、 12 是调零端,调整 RP 可使输出端( 8 )在静态时输出电压为零。9 、 6 两脚分别接正、负电源。输入信号接到同相输入端( 5 ),因此输出信号和输入信号同相。放大器负反馈经反馈电阻 R2 接到反相输入端( 4 )。同相输入接法的电压放大倍数总是大于 1 的。

    图片

    ( 2 )反相输出运放电路

    也可以使输入信号从反相输入端接入,如图 12 。如对电路要求不高,可以不用调零,这时可以把 3 个调零端短路。

    图片

    输入信号从耦合电容 C1 经 R1 接入反相输入端,而同相输入端通过电阻 R3 接地。反相输入接法的电压放大倍数可以大于 1 、等于 1 或小于 1 。

    ( 3 )同相输出高输入阻抗运放电路

    图 13 中没有接入 R1 ,相当于 R1 阻值无穷大,这时电路的电压放大倍数等于 1 ,输入阻抗可达几百千欧。

    >

    图片


     

    放大电路读图要点和举例

    放大电路是电子电路中变化较多和较复杂的电路。在拿到一张放大电路图时,首先要把它逐级分解开,然后一级一级分析弄懂它的原理,最后再全面综合。

    读图时要注意: 

    ① 在逐级分析时要区分开主要元器件和辅助元器件。放大器中使用的辅助元器件很多,如偏置电路中的温度补偿元件,稳压稳流元器件,防止自激振荡的防振元件、去耦元件,保护电路中的保护元件等。

    ② 在分析中最主要和困难的是反馈的分析,要能找出反馈通路,判断反馈的极性和类型,特别是多级放大器,往往以后级将负反馈加到前级,因此更要细致分析。 

    ③ 一般低频放大器常用 RC 耦合方式;高频放大器则常常是和 LC 调谐电路有关的,或是用单调谐或是用双调谐电路,而且电路里使用的电容器容量一般也比较小。

     ④ 注意晶体管和电源的极性,放大器中常常使用双电源,这是放大电路的特殊性。

    例 1 助听器电路

    图 14 是一个助听器电路,实际上是一个 4 级低频放大器。 VT1 、 VT2 之间和 VT3 、 VT4 之间采用直接耦合方式, VT2 和 VT3 之间则用 RC 耦合。为了改善音质, VT1 和 VT3 的本级有并联电压负反馈( R2 和 R7 )。由于使用高阻抗的耳机,所以可以把耳机直接接在 VT4 的集电极回路内。R6 、 C2 是去耦电路, C6 是电源滤波电容。

    图片

    例 2 收音机低放电路

    图 15 是普及型收音机的低放电路。电路共 3 级,第 1 级( VT1 )前置电压放大,第 2 级( VT2 )是推动级,第 3 级( VT3 、 VT4 )是推挽功放。VT1 和 VT2 之间采用直接耦合, VT2 和 VT3 、 VT4 之间用输入变压器( T1 )耦合并完成倒相,最后用输出变压器( T2 )输出,使用低阻扬声器。此外, VT1 本级有并联电压负反馈( R1 ), T2 次级经 R3 送回到 VT2 有串联电压负反馈。电路中 C2 的作用是增强高音区的负反馈,减弱高音以增强低音。R4 、 C4 为去耦电路, C3 为电源的滤波电容。整个电路简单明了。

    图片

    振荡电路的用途和振荡条件

    不需要外加信号就能自动地把直流电能转换成具有一定振幅和一定频率的交流信号的电路就称为振荡电路或振荡器。这种现象也叫做自激振荡。或者说,能够产生交流信号的电路就叫做振荡电路。

    一个振荡器必须包括三部分:放大器、正反馈电路和选频网络。

    放大器能对振荡器输入端所加的输入信号予以放大使输出信号保持恒定的数值。正反馈电路保证向振荡器输入端提供的反馈信号是相位相同的,只有这样才能使振荡维持下去。选频网络则只允许某个特定频率 f 0 能通过,使振荡器产生单一频率的输出。

    振荡器能不能振荡起来并维持稳定的输出是由以下两个条件决定的:

    一个是反馈电压 u f 和输入电压 U i 要相等,这是振幅平衡条件。二是 u f 和 u i 必须相位相同,这是相位平衡条件,也就是说必须保证是正反馈。一般情况下,振幅平衡条件往往容易做到,所以在判断一个振荡电路能否振荡,主要是看它的相位平衡条件是否成立。

    振荡器按振荡频率的高低可分成超低频( 20 赫以下)、低频( 20 赫~ 200 千赫)、高频( 200 千赫~ 30 兆赫)和超高频( 10 兆赫~ 350 兆赫)等几种。按振荡波形可分成正弦波振荡和非正弦波振荡两类。

    正弦波振荡器按照选频网络所用的元件可以分成 LC 振荡器、 RC 振荡器和石英晶体振荡器三种。石英晶体振荡器有很高的频率稳定度,只在要求很高的场合使用。在一般家用电器中,大量使用着各种 L C 振荡器和 RG 振荡器。

    LC 振荡器

    LC 振荡器的选频网络是 LC 谐振电路。它们的振荡频率都比较高,常见电路有 3 种。

    ( 1 )变压器反馈 LC 振荡电路

    图片

       

    图片

    图 1 ( a )是变压器反馈 LC 振荡电路。晶体管 VT 是共发射极放大器。变压器 T 的初级是起选频作用的 LC 谐振电路,变压器 T 的次级向放大器输入提供正反馈信号。接通电源时, LC 回路中出现微弱的瞬变电流,但是只有频率和回路谐振频率 f 0 相同的电流才能在回路两端产生较高的电压,这个电压通过变压器初次级 L1 、 L2 的耦合又送回到晶体管 V 的基极。从图 1 ( b )看到,只要接法没有错误,这个反馈信号电压是和输入信号电压相位相同的,也就是说,它是正反馈。因此电路的振荡迅速加强并最后稳定下来。

    变压器反馈 LC 振荡电路的特点是:频率范围宽、容易起振,但频率稳定度不高。它的振荡频率是:f 0 =1 / 2π LC 。常用于产生几十千赫到几十兆赫的正弦波信号。

    ( 2 )电感三点式振荡电路

    图片

          

    图片

    图 2 ( a )是另一种常用的电感三点式振荡电路。图中电感 L1 、 L2 和电容 C 组成起选频作用的谐振电路。从 L2 上取出反馈电压加到晶体管 VT 的基极。从图 2 ( b )看到,晶体管的输入电压和反馈电压是同相的,满足相位平衡条件的,因此电路能起振。由于晶体管的 3 个极是分别接在电感的 3 个点上的,因此被称为电感三点式振荡电路。

    电感三点式振荡电路的特点是:频率范围宽、容易起振,但输出含有较多高次调波,波形较差。它的振荡频率是:f 0 =1/2π LC ,其中 L=L1 + L2 + 2M 。常用于产生几十兆赫以下的正弦波信号。

    ( 3 )电容三点式振荡电路

    图片

          

    图片

    还有一种常用的振荡电路是电容三点式振荡电路,见图 3 ( a )。图中电感 L 和电容 C1 、 C2 组成起选频作用的谐振电路,从电容 C2 上取出反馈电压加到晶体管 VT 的基极。从图 3 ( b )看到,晶体管的输入电压和反馈电压同相,满足相位平衡条件,因此电路能起振。由于电路中晶体管的 3 个极分别接在电容 C1 、 C2 的 3 个点上,因此被称为电容三点式振荡电路。

    电容三点式振荡电路的特点是:频率稳定度较高,输出波形好,频率可以高达 100 兆赫以上,但频率调节范围较小,因此适合于作固定频率的振荡器。它的振荡频率是:f 0 =1/2π LC ,其中 C= C 1 C 2 C 1 +C 2 。

    上面 3 种振荡电路中的放大器都是用的共发射极电路。共发射极接法的振荡器增益较高,容易起振。也可以把振荡电路中的放大器接成共基极电路形式。共基极接法的振荡器振荡频率比较高,而且频率稳定性好。

    RC 振荡器

    RC 振荡器的选频网络是 RC 电路,它们的振荡频率比较低。常用的电路有两种。

    ( 1 ) RC 相移振荡电路

    图片

     

    图片

    图 4 ( a )是 RC 相移振荡电路。电路中的 3 节 RC 网络同时起到选频和正反馈的作用。从图 4 ( b )的交流等效电路看到:因为是单级共发射极放大电路,晶体管 VT 的输出电压 U o 与输出电压 U i 在相位上是相差 180° 。当输出电压经过 RC 网络后,变成反馈电压 U f 又送到输入端时,由于 RC 网络只对某个特定频率 f 0 的电压产生 180° 的相移,所以只有频率为 f 0 的信号电压才是正反馈而使电路起振。可见 RC 网络既是选频网络,又是正反馈电路的一部分。

    RC 相移振荡电路的特点是:电路简单、经济,但稳定性不高,而且调节不方便。一般都用作固定频率振荡器和要求不太高的场合。它的振荡频率是:当 3 节 RC 网络的参数相同时:f 0 = 1 2π 6RC 。频率一般为几十千赫。

    ( 2 ) RC 桥式振荡电路

    图片

    图片

    图 5 ( a )是一种常见的 RC 桥式振荡电图中左侧的 R1C1 和 R2C2 串并联电路就是它的选频网络。这个选频网络又是正反馈电路的一部分。这个选频网络对某个特定频率为 f 0 的信号电压没有相移(相移为 0° ),其它频率的电压都有大小不等的相移。由于放大器有 2 级,从 V2 输出端取出的反馈电压 U f 是和放大器输入电压同相的( 2 级相移 360°=0° )。因此反馈电压经选频网络送回到 VT1 的输入端时,只有某个特定频率为 f 0 的电压才能满足相位平衡条件而起振。可见 RC 串并联电路同时起到了选频和正反馈的作用。

    实际上为了提高振荡器的工作质量,电路中还加有由 R t 和 R E1 组成的串联电压负反馈电路。其中 R t 是一个有负温度系数的热敏电阻,它对电路能起到稳定振荡幅度和减小非线性失真的作用。从图 5 ( b )的等效电路看到,这个振荡电路是一个桥形电路。R1C1 、 R2C2 、 R t 和 R E1 分别是电桥的 4 个臂,放大器的输入和输出分别接在电桥的两个对角线上,所以被称为 RC 桥式振荡电路。

    RC 桥式振荡电路的性能比 RC 相移振荡电路好。它的稳定性高、非线性失真小,频率调节方便。它的振荡频率是:当 R1=R2=R 、 C1=C2=C 时 f 0 = 1 2πRC 。它的频率范围从 1 赫~ 1 兆赫。

    调幅和检波电路

    广播和无线电通信是利用调制技术把低频声音信号加到高频信号上发射出去的。在接收机中还原的过程叫解调。其中低频信号叫做调制信号,高频信号则叫载波。常见的连续波调制方法有调幅和调频两种,对应的解调方法就叫检波和鉴频。

    下面我们先介绍调幅和检波电路。

    ( 1 )调幅电路

    调幅是使载波信号的幅度随着调制信号的幅度变化,载波的频率和相应不变。能够完成调幅功能的电路就叫调幅电路或调幅器。

    调幅是一个非线性频率变换过程,所以它的关键是必须使用二极管、三极管等非线性器件。根据调制过程在哪个回路里进行可以把三极管调幅电路分成集电极调幅、基极调幅和发射极调幅 3 种。下面举集电极调幅电路为例。

    图片

    图 6 是集电极调幅电路,由高频载波振荡器产生的等幅载波经 T1 加到晶体管基极。低频调制信号则通过 T3 耦合到集电极中。C1 、 C2 、 C3 是高频旁路电容, R1 、 R2 是偏置电阻。集电极的 LC 并联回路谐振在载波频率上。如果把三极管的静态工作点选在特性曲线的弯曲部分,三极管就是一个非线性器件。因为晶体管的集电极电流是随着调制电压变化的,所以集电极中的 2 个信号就因非线性作用而实现了调幅。由于 LC 谐振回路是调谐在载波的基频上,因此在 T2 的次级就可得到调幅波输出。

    ( 2 )检波电路

    检波电路或检波器的作用是从调幅波中取出低频信号。它的工作过程正好和调幅相反。检波过程也是一个频率变换过程,也要使用非线性元器件。常用的有二极管和三极管。另外为了取出低频有用信号,还必须使用滤波器滤除高频分量,所以检波电路通常包含非线性元器件和滤波器两部分。下面举二极管检波器为例说明它的工作。

    图片

    图 7 是一个二极管检波电路。 VD 是检波元件, C 和 R 是低通滤波器。当输入的已调波信号较大时,二极管 VD 是断续工作的。正半周时,二极管导通,对 C 充电;负半周和输入电压较小时,二极管截止, C 对 R 放电。在 R 两端得到的电压包含的频率成分很多,经过电容 C 滤除了高频部分,再经过隔直流电容 C 0 的隔直流作用,在输出端就可得到还原的低频信号。

    调频和鉴频电路

    调频是使载波频率随调制信号的幅度变化,而振幅则保持不变。鉴频则是从调频波中解调出原来的低频信号,它的过程和调频正好相反。

    ( 1 )调频电路

    能够完成调频功能的电路就叫调频器或调频电路。常用的调频方法是直接调频法,也就是用调制信号直接改变载波振荡器频率的方法。图 8 画出了它的大意,图中用一个可变电抗元件并联在谐振回路上。用低频调制信号控制可变电抗元件参数的变化,使载波振荡器的频率发生变化。

    图片

    ( 2 )鉴频电路

    能够完成鉴频功能的电路叫鉴频器或鉴频电路,有时也叫频率检波器。鉴频的方法通常分二步,第一步先将等幅的调频波变成幅度随频率变化的调频 — 调幅波,第二步再用一般的检波器检出幅度变化,还原成低频信号。常用的鉴频器有相位鉴频器、比例鉴频器等。

    脉冲电路的用途和特点

    在电子电路中,电源、放大、振荡和调制电路被称为模拟电子电路,因为它们加工和处理的是连续变化的模拟信号。电子电路中另一大类电路的数字电子电路。它加工和处理的对象是不连续变化的数字信号。数字电子电路又可分成脉冲电路和数字逻辑电路,它们处理的都是不连续的脉冲信号。脉冲电路是专门用来产生电脉冲和对电脉冲进行放大、变换和整形的电路。家用电器中的定时器、报警器、电子开关、电子钟表、电子玩具以及电子医疗器具等,都要用到脉冲电路。

    电脉冲有各式各样的形状,有矩形、三角形、锯齿形、钟形、阶梯形和尖顶形的,最具有代表性的是矩形脉冲。要说明一个矩形脉冲的特性可以用脉冲幅度 Um 、脉冲周期 T 或频率 f 、脉冲前沿 t r 、脉冲后沿 t f 和脉冲宽度 t k 来表示。如果一个脉冲的宽度 t k =1 / 2T ,它就是一个方波。

    脉冲电路和放大振荡电路最大的不同点,或者说脉冲电路的特点是:脉冲电路中的晶体管是工作在开关状态的。大多数情况下,晶体管是工作在特性曲线的饱和区或截止区的,所以脉冲电路有时也叫开关电路。从所用的晶体管也可以看出来,在工作频率较高时都采用专用的开关管,如 2AK 、 2CK 、DK 、 3AK 型管,只有在工作频率较低时才使用一般的晶体管。

    就拿脉冲电路中最常用的反相器电路(图 1 )来说,从电路形式上看,它和放大电路中的共发射电路很相似。在放大电路中,基极电阻 R b2 是接到正电源上以取得基极偏压;而这个电路中,为了保证电路可靠地截止, R b2 是接到一个负电源上的,而且 R b1 和 R b2 的数值是按晶体管能可靠地进入饱和区或止区的要求计算出来的。不仅如此,为了使晶体管开关速度更快,在基极上还加有加速电容 C ,在脉前沿产生正向尖脉冲可使晶体管快速进入导通并饱和;在脉冲后沿产生负向尖脉冲使晶体管快速进入截止状态。除了射极输出器是个特例,脉冲电路中的晶体管都是工作在开关状态的,这是一个特点。

    图片

    脉冲电路的另一个特点是一定有电容器(用电感较少)作关键元件,脉冲的产生、波形的变换都离不开电容器的充放电。

    产生脉冲的多谐振荡器

    脉冲有各种各样的用途,有对电路起开关作用的控制脉冲,有起统帅全局作用的时钟脉冲,有做计数用的计数脉冲,有起触发启动作用的触发脉冲等等。不管是什么脉冲,都是由脉冲信号发生器产生的,而且大多是短形脉冲或以矩形脉冲为原型变换成的。因为矩形脉冲含有丰富的谐波,所以脉冲信号发生器也叫自激多谐振荡器或简称多谐振荡器。如果用门来作比喻,多谐振荡器输出端时开时闭的状态可以把多谐振荡器比作宾馆的自动旋转门,它不需要人去推动,总是不停地开门和关门。

    ( 1 )集基耦合多谐振荡器

    图 2 是一个典型的分立元件集基耦合多谐振荡器。它由两个晶体管反相器经 RC 电路交叉耦合接成正反馈电路组成。两个电容器交替充放电使两管交替导通和截止,使电路不停地从一个状态自动翻转到另一个状态,形成自激振荡。从 A 点或 B 点可得到输出脉冲。当 R b1 =R b2 =R , C b1 =C b2 =C 时,输出是幅度接近 E 的方波,脉冲周期 T=1.4RC 。如果两边不对称,则输出是矩形脉冲。

    图片

    ( 2 ) RC 环形振荡器

    图 4 是常用的 RC 环形振荡器。它用奇数个门、首尾相连组成闭环形,环路中有 RC 延时电路。图中 RS 是保护电阻, R 和 C 是延时电路元件,它们的数值决定脉冲周期。输出脉冲周期 T=2.2RC 。如果把 R 换成电位器,就成为脉冲频率可调的多谐振荡器。因为这种电路简单可靠,使用方便,频率范围宽,可以从几赫变化到几兆赫,所以被广泛应用。

    图片

    脉冲变换和整形电路

    脉冲在工作中有时需要变换波形或幅度,如把矩形脉冲变成三角波或尖脉冲等,具有这种功能的电路就叫变换电路。脉冲在传送中会造成失真,因此常常要对波形不好的脉冲进行修整,使它整旧如新,具有这种功能的电路就叫整形电路。

    ( 1 )微分电路

    微分电路是脉冲电路中最常用的波形变换电路,它和放大电路中的 RC 耦合电路很相似,见图 5 。当电路时间常数 τ=RC<<t k="" 时,输入矩形脉冲,由于电容器充放电极快,输出可得到一对尖脉冲。输入脉冲前沿则输出正向尖脉冲,输入脉冲后沿则输出负向尖脉冲。这种尖脉冲常被用作触发脉冲或计数脉冲。<="" font="" style="word-wrap: break-word; box-sizing: border-box;">

    ( 2 )积分电路

    把图 5 中的 R 和 C 互换,并使 τ=RC>>t k ,电路就成为积分电路,见图 6 。当输入矩形脉冲时,由于电容器充放电很慢,输出得到的是一串幅度较低的近似三角形的脉冲波。

    图片

    (3 )限幅器

    能限制脉冲幅值的电路称为限幅器或削波器。图 7 是用二极管和电阻组成的上限幅电路。它能把输入的正向脉冲削掉。如果把二极管反接,就成为削掉负脉冲的下限幅电路。

    图片

    用二极带或三极管等非线性器件可组成各种限幅器,或是变换波形(如把输入脉冲变成方波、梯形波、尖脉冲等),或是对脉冲整形(如把输入高低不平的脉冲系列削平成为整齐的脉冲系列等)。

    ( 4 )箝位器

    能把脉冲电压维持在某个数值上而使波形保持不变的电路称为箝位器。它也是整形电路的一种。例如电视信号在传输过程中会造成失真,为了使脉冲波形恢复原样,接收机里就要用箝位电路把波形顶部箝制在某个固定电平上。

    图 8 中反相器输出端上就有一个箝位二极管 VD 。如果没有这个二极管,输出脉冲高电平应该是 12 伏,现在增加了箝位二极管,输出脉冲高电平被箝制在 3 伏上。

    图片

    此外,象反相器、射极输出器等电路也有“整旧如新”的作用,也可认为是整形电路。

    有记忆功能的双稳电路多谐振荡器的输出总是时高时低地变换,所以它也叫无稳态电路。另一种双稳态电路就绝然不同,双稳电路有两个输出端,它们总是处于相反的状态:一个是高电平,另一个必定是低电平。它的特点是如果没有外来的触发,输出状态能一直保持不变。所以常被用作寄存二进制数码的单元电路。

    ( 1 )集基耦合双稳电路

    图 9 是用分立元件组成的集基耦合双稳电路。它由一对用电阻交叉耦合的反相器组成。它的两个管子总是一管截止一管饱和,例如当 VT1 管饱和时 VT2 管就截止,这时 A 点是低电平 B 点是高电平。如果没有外来的触发信号,它就保持这种状态不变。如把高电平表示数字信号“ 1 ”,低电平表示“ 0 ”,那么这时就可以认为双稳电路已经把数字信号“ 1 ”寄存在 B 端了。

    图片

    电路的基极分别加有微分电路。如果在 VT1 基极加上一个负脉冲(称为触发脉冲),就会使 VT1 基极电位下降,由于正反馈的作用,使 VT1 很快从饱和转入截止, VT2 从截止转入饱和。于是双稳电路翻转成 A 端为“ 1 ”, B 端为“ 0 ”,并一直保持下去。

    ( 2 )触发脉冲的触发方式和极性

    双稳电路的触发电路形式和触发脉冲极性选择比较复杂。从触发方式看,因为有直流触发(电位触发)和交流触发(边沿触发)的分别,所以触发电路形式各有不同。从脉冲极性看,也是随着晶体管极性、触发脉冲加在哪个管子(饱和管还是截止管)上、哪个极上(基极还是集电极)而变化的。在实际应用中,因为微分电路能容易地得到尖脉冲,触发效果较好,所以都用交流触发方式。触发脉冲所加的位置多数是加在饱和管的基极上。所以使用 NPN 管的双稳电路所加的是负脉冲,而 PNP 管双稳电路所加的是正脉冲。

    ( 3 )集成触发器除了用分立元件外,也可以用集成门电路组成双稳电路。但实际上因为目前有大量的集成化双稳触发器产品可供选用,如 R—S 触发器、 D 触发器、 J - K 触发器等等,所以一般不使用门电路搭成的双稳电路而直接选用现成产品。

    有延时功能的单稳电路

    无稳电路有 2 个暂稳态而没有稳态,双稳电路则有 2 个稳态而没有暂稳态。脉冲电路中常用的第 3 种电路叫单稳电路,它有一个稳态和一个暂稳态。如果也用门来作比喻,单稳电路可以看成是一扇弹簧门,平时它总是关着的,“关”是它的稳态。当有人推它或拉它时门就打开,但由于弹力作用,门很快又自动关上,恢复到原来的状态。所以“开”是它的暂稳态。单稳电路常被用作定时、延时控制以及整形等。

    ( 1 )集基耦合单稳电路

    图 10 是一个典型的集基耦合单稳电路。它也是由两级反相器交叉耦合而成的正反馈电路。它的一半和多谐振荡器相似,另一半和双稳电路相似,再加它也有一个微分触发电路,所以可以想象出它是半个无稳电路和半个双稳电路凑合成的,它应该有一个稳态和一个暂稳态。平时它总是一管( VT1 )饱和,另一管( VT2 )截止,这就是它的稳态。当输入一个触发脉冲后,电路便翻转到另一种状态,但这种状态只能维持不长的时间,很快它又恢复到原来的状态。电路暂稳态的时间是由延时元件 R 和 C 的数值决定的:t t =0.7RC 。

    ( 2 )集成化单稳电路

    用集成门电路也可组成单稳电路。图 11 是微分型单稳电路,它用 2 个与非门交叉连接,门 1 输出到门 2 是用微分电路耦合,门 2 输出到门 1 是直接耦合,触发脉冲加到门 1 的另一个输入端 U I 。它的暂稳态时间即定时时间为:t t = ( 0.7 ~ 1.3 ) RC 。

    图片

    脉冲电路的读图要点

    ① 脉冲电路的特点是工作在开关状态,它的输入输出都是脉冲,因此分析时要抓住关键,把主次电路区分开,先认定主电路的功能,再分析辅助电路的作用。

    ② 从电路结构上抓关键找异同。前面介绍了集基耦合方式的三种基本单元电路,它们都由双管反相器构成正反馈电路,这是它们的相同点。但细分析起来它们还是各有特点的:无稳和双稳电路虽然都有对称形式,但无稳电路是用电容耦合,双稳是用电阻直接耦合(有时并联有加速电容,容量一般都很小);而且双稳电路一般都有触发电路(双端或单端触发);单稳电路就很好认,它是不对称的,兼有双稳和单稳的形式。这样一分析,三种电路就很好区别了。

    ③ 脉冲电路中,脉冲的生成、变换和整形都和电容器的充、放电有关,电路的时间常数即 R 和 C 的数值对确定电路的性质有极重要的意义,这一点尤为重要。

    数字逻辑电路的用途和特点

    数字电子电路中的后起之秀是数字逻辑电路。把它叫做数字电路是因为电路中传递的虽然也是脉冲,但这些脉冲是用来表示二进制数码的,例如用高电平表示“ 1 ”,低电平表示“ 0 ”。声音图像文字等信息经过数字化处理后变成了一串串电脉冲,它们被称为数字信号。能处理数字信号的电路就称为数字电路。

    这种电路同时又被叫做逻辑电路,那是因为电路中的“ 1 ”和“ 0 ”还具有逻辑意义,例如逻辑“ 1 ”和逻辑“ 0 ”可以分别表示电路的接通和断开、事件的是和否、逻辑推理的真和假等等。电路的输出和输入之间是一种逻辑关系。这种电路除了能进行二进制算术运算外还能完成逻辑运算和具有逻辑推理能力,所以才把它叫做逻辑电路。

    由于数字逻辑电路有易于集成、传输质量高、有运算和逻辑推理能力等优点,因此被广泛用于计算机、自动控制、通信、测量等领域。一般家电产品中,如定时器、告警器、控制器、电子钟表、电子玩具等都要用数字逻辑电路。

    数字逻辑电路的第一个特点是为了突出“逻辑”两个字,使用的是独特的图形符号。数字逻辑电路中有门电路和触发器两种基本单元电路,它们都是以晶体管和电阻等元件组成的,但在逻辑电路中我们只用几个简化了的图形符号去表示它们,而不画出它们的具体电路,也不管它们使用多高电压,是 TTL 电路还是 CMOS 电路等等。按逻辑功能要求把这些图形符号组合起来画成的图就是逻辑电路图,它完全不同于一般的放大振荡或脉冲电路图。

    数字电路中有关信息是包含在 0 和 1 的数字组合内的,所以只要电路能明显地区分开 0 和 1 , 0 和 1 的组合关系没有破坏就行,脉冲波形的好坏我们是不大理会的。所以数字逻辑电路的第二个特点是我们主要关心它能完成什么样的逻辑功能,较少考虑它的电气参数性能等问题。也因为这个原因,数字逻辑电路中使用了一些特殊的表达方法如真值表、特征方程等,还使用一些特殊的分析工具如逻辑代数、卡诺图等等,这些也都与放大振荡电路不同。

    门电路和触发器

    ( 1 )门电路

    门电路可以看成是数字逻辑电路中最简单的元件。目前有大量集成化产品可供选用。

    最基本的门电路有 3 种:非门、与门和或门。非门就是反相器,它把输入的 0 信号变成 1 , 1 变成 0 。这种逻辑功能叫“非”,如果输入是 A ,输出写成 P=A 。与门有 2 个以上输入,它的功能是当输入都是 1 时,输出才是 1 。这种功能也叫逻辑乘,如果输入是 A 、 B ,输出写成 P=A·B 。或门也有 2 个以上输入,它的功能是输入有一个 1 时,输出就是 1 。这种功能也叫逻辑加,输出就写成 P=A + B 。

    把这三种基本门电路组合起来可以得到各种复合门电路,如与门加非门成与非门,或门加非门成或非门。图 1 是它们的图形符号和真值表。此外还有与或非门、异或门等等。

    数字集成电路有 TTL 、 HTL 、 CMOS 等多种,所用的电源电压和极性也不同,但只要它们有相同的逻辑功能,就用相同的逻辑符号。而且一般都规定高电平为 1 、低电平为 0 。

    )触发器

    触发器实际上就是脉冲电路中的双稳电路,它的电路和功能都比门电路复杂,它也可看成是数字逻辑电路中的元件。目前也已有集成化产品可供选用。常用的触发器有 D 触发器和 J—K 触发器。

    D 触发器有一个输入端 D 和一个时钟信号输入端 CP ,为了区别在 CP 端加有箭头。它有两个输出端,一个是 Q 一个是 Q ,加有小圈的输出端是 Q 端。另外它还有两个预置端 R D 和 S D ,平时正常工作时要 R D 和 S D 端都加高电平 1 ,如果使 R D =0 ( S D 仍为 1 ),则触发器被置成 Q=0 ;如果使 S D =0 ( R D =1 ),则被置成 Q=1 。因此 R D 端称为置 0 端, S D 端称为置 1 端。D 触发器的逻辑符号见图 2 ,图中 Q 、 D 、 SD 端画在同一侧;Q 、R D 画在另一侧。R D 和 S D 都带小圆圈,表示要加上低电平才有效。

    D 触发器是受 CP 和 D 端双重控制的, CP 加高电平 1 时,它的输出和 D 的状态相同。如 D=0 , CP 来到后, Q=0 ;如 D=1 , CP 来到后, Q=1 。CP 脉冲起控制开门作用,如果 CP=0 ,则不管 D 是什么状态,触发器都维持原来状态不变。这样的逻辑功能画成表格就称为功能表或特性表,见图 2 。表中 Q n+1 表示加上触发信号后变成的状态, Qn 是原来的状态。“ X ”表示是 0 或 1 的任意状态。

    有的 D 触发器有几个 D 输入端: D 1 、 D 2 … 它们之间是逻辑与的关系,也就是只有当 D 1 、 D 2 … 都是 1 时,输出端 Q 才是 1 。

    另一种性能更完善的触发器叫 J - K 触发器。它有两个输入端:J 端和 K 端,一个 CP 端,两个预置端:R D 端和 S D 端,以及两个输出端:Q 和 Q 端。它的逻辑符号见图 3 。J - K 触发器是在 CP 脉冲的下阵沿触发翻转的,所以在 CP 端画一个小圆圈以示区别。图中, J 、 S D 、 Q 画在同一侧, K 、 R D 、 Q 画在另一侧。

    J - K 触发器的逻辑功能见图 3 。有 CP 脉冲时(即 CP=1 ):J 、 K 都为 0 ,触发器状态不变;Q n + 1 =Qn , J = 0 、 K=1 ,触发器被置 0 :Q n + 1 =0 ;J=1 、 K=0 , Q n+1 =1 ;J=1 、 K=1 ,触发器翻转一下:Q n + 1 =Qn 。如果不加时钟脉冲,即 CP=0 时,不管 J 、 K 端是什么状态,触发器都维持原来状态不变:Q n + 1 =Qn 。有的 J—K 触发器同时有好几个 J 端和 K 端, J 1 、 J 2 … 和 K 1 、 K 2 … 之间都是逻辑与的关系。有的 J - K 触发器是在 CP 的上升沿触发翻转的,这时它的逻辑符号图的 CP 端就不带小圆圈。也有的时候为了使图更简洁,常常把 R D 和 S D 端省略不画。

    能够把数字、字母变换成二进制数码的电路称为编码器。反过来能把二进制数码还原成数字、字母的电路就称为译码器。

    ( 1 )编码器

    图 4 ( a )是一个能把十进制数变成二进制码的编码器。一个十进制数被表示成二进制码必须 4 位,常用的码是使从低到高的每一位二进制码相当于十进制数的 1 、 2 、 4 、 8 ,这种码称为 8 - 4 - 2 - 1 码或简称 BCD 码。所以这种编码器就称为“ 10 线 -4 线编码器”或“ DEC / BCD 编码器”。

    从图看到,它是由与非门组成的。有 10 个输入端,用按键控制,平时按键悬空相当于接高电平 1 。它有 4 个输出端 ABCD ,输出 8421 码。如果按下“ 1 ”键,与“ 1 ”键对应的线被接地,等于输入低电平 0 、于是门 D 输出为 1 ,整个输出成 0001 。

    如按下“ 7 ”键,则 B 门、 C 门、 D 门输出为 1 ,整个输出成 0111 。如果把这些电路都做在一个集成片内,便得到集成化的 10 线 4 线编码器,它的逻辑符号见图 4 ( b )。左侧有 10 个输入端,带小圆圈表示要用低电平,右侧有 4 个输出端,从上到下按从低到高排列。使用时可以直接选用。

    ( 2 )译码器

    要把二进制码还原成十进制数就要用译码器。它也是由门电路组成的,现在也有集成化产品供选用。图 5 是一个 4 线 —10 线译码器。它的左侧为 4 个二进制码的输入端,右侧有 10 个输出端,从上到下按 0 、 1 、 …9 排列表示 10 个十进制数。输出端带小圆圈表示低电平有效。平时 10 个输出端都是高电平 1 ,如输入为 1001 码,输出“ 9 ”端为低电平 0 ,其余 9 根线仍为高电平 1 ,这表示“ 9 ”线被译中。

    图片

    如果要想把十进制数显示出来,就要使用数码管。现以共阳极发光二极管( LED )七段数码显示管为例,见图 6 。它有七段发光二极管,如每段都接低电平 0 ,七段都被点亮,显示出数字“ 8 ”;如 b 、 c 段接低电平 0 ,其余都接 1 ,显示的是“ 1 ”。可见要把十进制数用七段显示管显示出来还要经过一次译码。如果使用“ 4 线 —7 线译码器”和显示管配合使用,就很简单,输入二进制码可直接显示十进制数,见图 6 。译码器左侧有 4 个二进制码的输入端,右侧有 7 个输出可直接和数码管相连。左上侧另有一个灭灯控制端 I B ,正常工作时应加高电平 1 ,如不需要这位数字显示就在 I B 上加低电平 0 ,就可使这位数字熄灭。

    图片

    寄存器和移位寄存器

    ( 1 )寄存器

    能够把二进制数码存贮起来的的部件叫数码寄存器,简称寄存器。图 7 是用 4 个 D 触发器组成的寄存器,它能存贮 4 位二进制数。4 个 CP 端连在一起作为控制端,只有 CP=1 时它才接收和存贮数码。4 个 R D 端连在一起成为整个寄存器的清零端。如果要存贮二进制码 1001 ,只要把它们分别加到触发器 D 端,当 CP 来到后 4 个触发器从高到低分别被置成 1 、 0 、 0 、 1 ,并一直保持到下一次输入数据之前。要想取出这串数码可以从触发器的 Q 端取出。

    图片

    ( 2 )移位寄存器

    有移位功能的寄存器叫移位寄存器,它可以是左移的、右移的,也可是双向移位的。

    图 8 是一个能把数码逐位左移的寄存器。它和一般寄存器不同的是:数码是逐位串行输入并加在最低位的 D 端,然后把低位的 Q 端连到高一位的 D 端。这时 CP 称为移位脉冲。

    图片

    先从 R D 端送低电平清零,使寄存器成 0000 状态。假定要输入的数码是 1001 ,输入的次序是先高后低逐位输入。第 1 个 CP 后, 1 被打入第 1 个触发器,寄存器成 0001 ;第 2 个 CP 后, Qo 的 1 被移入 Q 1 ,新的 0 打入 D 1 ,成为 0010 ;第 3 个 CP 后,成为 0100 ;第 4 个 CP 后,成为 1001 。

    可见经过 4 个 CP ,寄存器就寄存了 4 位二进制码 1001 。目前已有品种繁多的集成化寄存器供选用。

    计数器和分频器

    ( 1 )计数器

    能对脉冲进行计数的部件叫计数器。计数器品种繁多,有作累加计数的称为加法计数器,有作递减计数的称为减法计数器;按触发器翻转来分又有同步计数器和异步计数器;按数制来分又有二进制计数器、十进制计数器和其它进位制的计数器等等。

    现举一个最简单的加法计数器为例,见图 9 。它是一个 16 进制计数器,最大计数值是 1111 ,相当于十进制数 15 。需要计数的脉冲加到最低位触发器的 CP 端上,所有的 J 、 K 端都接高电平 1 ,各触发器 Q 端接到相邻高一位触发器的 CP 端上。J—K 触发器的特性表告诉我们:当 J=1 、 K=1 时来一个 CP ,触发器便翻转一次。在全部清零后, ① 第 1 个 CP 后沿,触发器 C0 翻转成 Q0=1 ,其余 3 个触发器仍保持 0 态,整个计数器的状态是 0001 。② 第 2 个 CP 后沿,触发器 C0 又翻转成“ Q0=0 , C1 翻转成 Q1=1 ,计数器成 0010 。…… 到第 15 个 CP 后沿,计数器成 1111 。可见这个计数器确实能对 CP 脉冲计数。

    ( 2 )分频器

    计数器的第一个触发器是每隔 2 个 CP 送出一个进位脉冲,所以每个触发器就是一个 2 分频的分频器, 16 进制计数器就是一个 16 分频的分频器。

    为了提高电子钟表的精确度,普遍采用的方法是用晶体振荡器产生 32768 赫标准信号脉冲,经过 15 级 2 分频处理得到 1 赫的秒信号。因为晶体振荡器的准确度和稳定度很高,所以得到的秒脉冲信号也是精确可靠的。把它们做到一个集成片上便是电子手表专用集成电路产品,见图 10 。

    数字逻辑电路读图要点和举例

    数字逻辑电路的读图步骤和其它电路是相同的,只是在进行电路分析时处处要用逻辑分析的方法。读图时要:① 先大致了解电路的用途和性能。② 找出输入端、输出端和关键部件,区分开各种信号并弄清信号的流向。③ 逐级分析输出与输入的逻辑关系,了解各部分的逻辑功能。④ 最后统观全局得出分析结果。

    例 1 三路抢答器

    图 11 是智力竞赛用的三路抢答器电路。裁判按下开关 SA4 ,触发器全部被置零,进入准备状态。这时 Q1 ~ Q3 均为 1 ,抢答灯不亮;门 1 和门 2 输出为 0 ,门 3 和门 4 组成的音频振荡器不振荡,扬声器无声。

    竞赛开始,假定 1 号台抢先按下 SA1 ,触发器 C1 翻转成 Q1=1 、 Q1=0 。于是:① 门 2 输出为 1 ,振荡器振荡,扬声器发声;②HL1 灯点亮;③ 门 1 输出为 1 ,这时 2 号、 3 号台再按开关也不起作用。裁判宣布竞赛结果后,再按一下 SA4 ,电路又进入准备状态。

    例 2 彩灯追逐电路

    图 12 是 4 位移位寄存器控制的彩灯电路。开始时按下 SA ,触发器 C1 ~ C4 被置成 1000 ,彩灯 HL1 被点亮。CP 脉冲来到后,寄存器移 1 位,触发器 C1 ~ C4 成 0100 ,彩灯 HL2 点亮。第 2 个 CP 脉冲点亮 HL3 ,第 3 个点亮 HL4 ,第 4 个 CP 又把触发器 C1 ~ C4 置成 1000 ,又点亮 HL1 。如此循环往复,彩灯不停闪烁。只要增加触发器可使灯数增加,改变 CP 的频率可变化速度。

    555 集成时基电路的特点

    555 集成电路开始出现时是作定时器应用的,所以叫做 555 定时器或 555 时基电路。但是后来经过开发,它除了作定时延时控制外,还可以用于调光、调温、调压、调速等多种控制以及计量检测等作用;还可以组成脉冲振荡、单稳、双稳和脉冲调制电路,作为交流信号源以及完成电源变换、频率变换、脉冲调制等用途。由于它工作可靠、使用方便、价格低廉,因此目前被广泛用于各种小家电中。

    555 集成电路内部有几十个元器件,有分压器、比较器、触发器、输出管和放电管等,电路比较复杂,是模拟电路和数字电路的混合体。它的性能和参数要在非线性模拟集成电路手册中才能查到。 

    555 集成电路是 8 脚封装,图 1 ( a )是双列直插型封装,按输入输出的排列可画成图 1 ( b )。其中 6 脚称阀值端( TH ),是上比较器的输入。2 脚称触发端(),是下比较器的输入。3 脚是输出端( V O ),它有 0 和 1 两种状态,它的状态是由输入端所加的电平决定的。7 脚的放电端( DIS ),它是内部放电管的输出,它也有悬空和接地两种状态,也是由输入端的状态决定的。4 脚是复位端( ),加上低电砰(< 0.3 伏)时可使输出成低电平。5 脚称控制电压端( V C ),可以用它改变上下触发电平值。8 脚是电源, 1 脚为地端。

    图片

        

    图片

        

    对于初学者来说,可以把 555 电路等效成一个带放电开关的 R - S 触发器,如图 2 ( a )。这个特殊的触发器有两个输入端;阈值端( TH )可看成是置零端 R ,要求高电平;触发端( 

    图片

    )可看成是置位端 

    图片

    ,低电平有效。它只有 1 个输出端 V O , V O 可等效成触发器的 Q 端。放电端( DIS )可看成由内部的放电开关控制的一个接点,放电开关由触发器的 Q 端控制: 

    图片

    =1 时 DIS 端接地; 

    图片

    =0 时 DIS 端悬空。此外这个触发器还有复位端 

    图片

    ,控制电压端 V C ,电源端 V DD 和地端 GND 。

    图片

      

    图片

    这个特殊的 R - S 触发器有 2 个特点:( 1 )两个输入端的触发电平要求一高一低:置零端 R 即阈值端 TH 要求高电平,而置低端 

    图片

    S 即触发端 

    图片

     则要求低电平。( 2 )两个输入端的触发电平,也就是使它们翻转的阈值电压值也不同,当 V C 端不接控制电压时,对 TH ( R )端来讲, > 2 /3 V DD 是高电平 1 , < 2 /3 V DD 是低电平 0 ;而对 

    图片

    ( 

    图片

    )端来讲,> 1/ 3 V DD 是高电平 1 ,< 1 /3 V DD 是低电平 0 。如果在控制端( V C )加上控制电压 V C ,这时上触发电平就变成 V C 值,而下触发电平则变成 1 /2 V C 。可见改变控制端的控制电压值可以改变上下触发电平值。

    经过简化, 555 电路可以等效成一个触发器,它的功能表见图 2 ( b )。

    555 集成电路有双极型和 CMOS 型两种。CMOS 型的优点是功耗低、电源电压低、输入阻抗高,但输出功率较小,输出驱动电流只有几毫安。双极型的优点是输出功率大,驱动电流达 200 毫安,其它指标则不如 CMOS 型的。

    此外还有一种 556 双时基电路, 14 脚封装,内部包含有两个相同的时基电路单元。555 的应用电路很多,大体上可分为 555 单稳、 555 双稳和 555 无稳三类。555 单稳电路单稳电路有一个稳态和一个暂稳态。555 的单稳电路是利用电容的充放电形成暂稳态的,因此它的输入端都带有定时电阻和定时电容,常见的 555 单稳电路有两种。

    ( 1 )人工启动型单稳

    将 555 电路的 6 、 2 端并接起来接在 RC 定时电路上,在定时电容 C T 两端接按钮开关 SB ,就成为人工启动型 555 单稳电路,见图 3 ( a )。用等效触发器替代 555 ,并略去与单稳工作无关的部分后画成等效图 3 ( b )。下面分析它的工作:

    图片

     

    图片

    ① 稳态:接上电源后,电容 C T 很快充到 V DD ,从图 3 ( b )看到,触发器输入 R=1 , =1 ,从功能表查到输出 V o =0 ,这是它的稳态。

    ② 暂稳态:按下开关 SB , C T 上电荷很快放到零,相当于触发器输入 R=0 , =0 ,输出立即翻转成 V o =1 ,暂稳态开始。开关放开后,电源又向 C T 充电,经时间 t d 后, C T 上电压升到 > 2 /3 V DD 时,输出又翻转成 V =0 ,暂稳态结束。t d 就是单稳电路的定时时间或延时时间,它和定时电阻 R T 和定时电容 C T 的值有关;t d=1.1R T C T 。

    ( 2 )脉冲启动型单稳

    把 555 电路的 6 、 7 端并接起来接到定时电容 C T 上,用 2 端作输入就成为脉冲启动型单稳电路,见图 4 ( a )。电路的 2 端平时接高电平,当输入接低电平或输入负脉冲时才启动电路。用等效触发器替代 555 电路后可画成图 4 ( b )。这个电路利用放电端使定时电容能快速放电。下面分析它的工作状态:

    ① 稳态:通电后, R=1 , =1 ,输出 V o =0 , DIS 端接地, C T 上电压为 0 即 R=0 ,输出仍保持 V o =0 ,这是它的稳态。

    ② 暂稳态:输入负脉冲后,输入=0 ,输出翻转成 V o =1 , DIS 端开路,电源通过 R T 向 C T 充电,暂稳态开始。经过 t d 后, C T 上电压升到> 2 /3 V DD ,这时负脉冲已经消失,输入又成为 R=1 ,=1 ,输出又翻转成 V o =0 ,暂稳态结束。这时内部放电开关接通, DIS 端接地, C T 上电荷很快放到零,为下一次定时控制作准备。电路的定时时间 t d =1.1R T C T 。

    这两种单稳电路常用作定时延时控制。

    555 双稳电路

    常见的 555 双稳电路有两种。

    ( 1 ) R-S 触发器型双稳

    把 555 电路的 6 、 2 端作为两个控制输入端, 7 端不用,就成为一个 R - S 触发器。要注意的是两个输入端的电平要求和阈值电压都不同,见图 5 ( a )。有时可能只有一个控制端,这时另一个控制端要设法接死,根据电路要求可以把 R 端接到电源端,见图 5 ( b ),也可以把 S 端接地,用 R 端作输入。

       

    有两个输入端的双稳电路常用作电机调速、电源上下限告警等用途,有一个输入端的双稳电路常作为单端比较器用作各种检测电路。

    ( 2 )施密特触发器型双稳

    把 555 电路的 6 、 2 端并接起来成为只有一个输入端的触发器,见图 6 ( a )。这个触发器因为输出电压和输入电压的关系是一个长方形的回线形,见图 6 ( b ),所以被称为施密特触发器。从曲线看到,当输入 V i =0 时输出 V o =1 。当输入电压从 0 上升时,要升到> 2/ 3 V DD 以后, V o 才翻转成 0 。而当输入电压从最高值下降时,要降到 < 1 /3 V DD 以后, V o 才翻转成 1 。所以输出电压和输入电压之间是一个回线形曲线。由于它的输入有两个不同的阈值电压,所以这种电路被用作电子开关,各种控制电路,波形变换和整形的用途。

       

    图片

    555 无稳电路

    无稳电路有 2 个暂稳态,它不需要外触发就能自动从一种暂稳态翻转到另一种暂稳态,它的输出是一串矩形脉冲,所以它又称为自激多谐振荡器或脉冲振荡器。555 的无稳电路有多种,这里介绍常用的 3 种。

    ( 1 )直接反馈型 555 无稳

    利用 555 施密特触发器的回滞特性,在它的输入端接电容 C ,再在输出 V 0 与输入之间接一个反馈电阻 R f ,就能组成直接反馈型多谐振荡器,见图 7 ( a )。用等效触发器替代 555 电路后可画成图 7 ( b )。现在来看看它的振荡工作原理:

    图片

           

    图片

    图片

    刚接通电源时, C 上电压为零,输出 V 0 =1 。通电后电源经内部电阻、 V 0 端、 R f 向 C 充电,当 C 上电压升到> 2 /3 V DD 时,触发器翻转 V 0 =0 ,于是 C 上电荷通过 R f 和 V 0 放电入地。当 C 上电压降到< 1 /3 V DD 时,触发器又翻转成 V 0 =1 。电源又向 C 充电,不断重复上述过程。由于施密特触发器有 2 个不同的阀值电压,因此 C 就在这 2 个阀值电压之间交替地充电和放电,输出得到的是一串连续的矩形脉冲,见图 7 ( c )。脉冲频率约为 f=0.722 / R f C 。

    ( 2 )间接反馈型无稳

    另一路多谐振荡器是把反馈电阻接在放电端和电源上,如图 8 ( a ),这样做使振荡电路和输出电路分开,可以使负载能力加大,频率更稳定。这是目前使用最多的 555 振荡电路。

    图片

    这个电路在刚通电时, V 0 =1 , DIS 端开路, C 的充电路径是:电源 →R A →DIS→R B →C ,当 C 上电压上升到> 2 /3 V DD 时, V 0 =1 , DIS 端接地, C 放电, C 放电的路径是:C→R B →DIS→ 地。可以看到充电和放电时间常数不等,输出不是方波。t 1 =0.693 ( R A + B B ) C 、 t 2 =0.693R B C ,脉冲频率 f=1.443 /( R A + 2R ) C

    ( 3 ) 555 方波振荡电路

    要想得到方波输出,可以用图 9 的电路。它是在图 8 的电路基础上在 R B 两端并联一个二极管 VD 组成的。当 R A =R B 时, C 的充放电时间常数相等,输出就得到方波。方波的频率为 f=0.722 / R A C ( R A =R B )

    图片

    在这个电路的基础上,在 R A 和 R B 回路内增加电位器以及采用串联或并联二极管的方法可以得到占空比可调的脉冲振荡电路。

    555 脉冲振荡电路常被用作交流信号源,它的振荡频率范围大致在零点几赫到几兆赫之间。因为电路简单可靠,所以使用极广。

    555 电路读图要点及举例

    555 集成电路经多年的开发,实用电路多达几十种,几乎遍及各个技术领域。但对初学者来讲,常见的电路也不过是上述几种,因此在读图时,只要抓住关键,识别它们是不难的。

    从电路结构上分析,三类 555 电路的区别或者说它们的结构特点主要在输入端。因此当我们拿到一张 555 电路图时,在大致了解电路的用途之后,先看一下电路是 CMOS 型还是双极型,再看复位端()和控制电压端( V c )的接法,如果复位端(  )是接高电平、控制电压端( V c )是接一个抗干扰电容的,那就可以按以下的次序先从输入端开始进行分析:

    ( 1 ) 6 、 2 端是分开的

    ①7 端悬空不用的一定是双稳电路。如有两个输入的则是双限比较器;如只有一个输入的则是单端比较器。这类电路一般都是作电子开关、控制和检测电路的用途。

    ②7 、 6 端短接并接有电阻电容、取 2 端作输入的一定是单稳电路。它的输入可以用开关人工启动,也可以用输入脉冲启动,甚至为了取得较好的启动效果在输入端带有 RC 微分电路。这类电路一般用作定时延时控制和检测的用途。

    ( 2 ) 6 、 2 端短接的

    ① 输入没有电容的是施密特触发器电路。这类电路常用作电子开关、告警、检测和整形的用途。

    ② 输入端有电阻电容而 7 端悬空的,这时要看电阻电容的接法:( a ) R 和 C 串联接在电源和地之间的是单稳电路, R 和 C 就是它的定时电阻和定时电容。( b ) R 在上 C 在下, R 的一端接在 V 0 端上的是直接反馈型无稳电路,这时 R 和 C 就是决定振荡频率的元件。

    ③7 端也接在输入端,成“ R A - 7 - R B - 6 、 2—C ”的形式的就是最常用的无稳电路。这时 R A 和 R B 及 C 就是决定振荡频率的元件。这类电路可以有很多种变型:如省去 R A ,把 7 端接在 V 0 上;或者在 R B 两端并联二极管 VD 以获得方波输出,或者用电阻和电位器组成 R A 和 R B ,而且在 R A 和 R B 两端并联有二极管以获得占空比可调的脉冲波等等。这类电路是用途最广的,常用于脉冲振荡、音响告警、家电控制、电子玩具、医疗电器以及电源变换等用途。

    ( 3 )如果控制电压( V c )端接有直流电压,则只是改变了上下两个阀值电压的数值,其它分析方法仍和上面的相同。

    只要按上述步骤细心分析核对,一定能很快地识别 555 电路的类别和了解它的工作原理。下面的问题就比较好办了,例如定时时间、振荡频率等都可以按给出的公式进行估算。

    例 1 相片曝光定时器

    图 10 是用 555 电路制成的相片曝光定时器。从图看到,输入端 6 、 2 并接在 RC 串联电路中,所以这是一个单稳电路, R1 和 RP 是定时电阻, C1 是定时电容。

    电路在通电后, C1 上电压被充到 6 伏,输出 V 0 =0 ,继电器 KA 不吸动,常开接点是打开的,曝光灯 HL 不亮。这是它的稳态。

    按下 SB 后, C1 快速放电到零,输出 V 0 =1 ,继电器 KA 吸动,点亮曝光灯 HL ,暂稳态开始。SB 放开后电源向 C1 充电,当 C1 上电压升到 4 伏时,暂稳态结束,定时时间到,电路恢复到稳态。输出翻转成 V 0 =0 ,继电器 KA 释放,曝光灯熄灭。电路定时时间是可调的,大约是 1 秒~ 2 分钟。

    例 2 光电告警电路

    图 11 是 555 光电告警电路。它使用 556 双时基集成电路,有两个独立的 555 电路。前一个接成施密特触发器,后一个是间接反馈型无稳电路。图中引脚号码是 556 的引脚号码。

    图中 R1 是光敏电阻,无光照时阻值为几~几十兆欧,所以 555a 的输入相当于 R=0 、 S=0 ,输出 V 0 =1 ,三极管 VT 导通, VT 的集电极电压只有 0.3 伏,加在 555b 的复位端( MR ),使 555b 处于复位状态,即无振荡输出。

    当 R1 受光照后,阻值突然下降到只有几~几十千欧,于是 555a 的输入电压升到上阀值电压以上,输出翻转成 V 0 =0 , VT 截止, VT 集电极电压升高, 555b 被解除复位状态而振荡,于是扬声器 BL 发声告警。555b 的振荡频率大约是 1 千赫。

    如果把整个装置放入公文包内,那么当打开公文包时,这个装置会发声告警而成为防盗告警装置。

    单元电路图识图方法

    单元电路是指某一级控制器电路,或某一级放大器电路,或某一个振荡器电路、变频器电路等,它是能够完成某一电路功能的最小电路单位。从广义角度上讲,一个集成电路的应用电路也是一个单元电路。

    单元电路图是学习整机电子电路工作原理过程中,首先遇到具有完整功能的电路图,这一电路图概念的提出完全是为了方便电路工作原理分析之需要。

    1.单元电路图功能

    单元电路图具有下列一些功能:

    ①单元电路图主要用来讲述电路的工作原理。

    ②它能够完整地表达某一级电路的结构和工作原理,有时还全部标出电路中各元器件的参数,如标称阻值、标称容量和三极管型号等。

    ③它对深入理解电路的工作原理和记忆电路的结构、组成很有帮助。

    2.单元电路图的特点

    单元电路图具有下列一些特点:

    ①单元电路图主要是为了分析某个单元电路工作原理的方便而单独将这部分电路画出的电路,所以在图中已省去了与该单元电路无关的其他元器件和有关的连线、符号,这样单元电路图就显得比较简洁、清楚,识图时没有其他电路的干扰。单元电路图中对电源、输入端和输出端已经加以简化,如图1-6所示。 

    电路图中,用+v表示直流工作电压(其中正号表示采用正极性直流电压给电路供电,地端接电源的负极);vi表示输入信号,是这一单元电路所要放大或处理的信号;vo表示输出信号,是经过这一单元电路放大或处理后的信号。通过单元电路图中的这样标注可方便地找出电源端、输入端和输出端,而在实际电路中,这三个端点的电路均与整机电路中的其他电路相连,没有+v、vi、vo的标注,给初学者识图造成了一定的困难。

    例如:见到vi可以知道信号是通过电容c2加到三极管vt1基极的;见到vo可以知道信号是从三极管vt1集电极输出的,这相当于在电路图中标出了放大器的输入端和输出端,无疑大大方便了电路工作原理的分析。

    ②单元电路图采用习惯画法,一看就明白,例如元器件采用习惯画法,各元器件之间采用最短的连线,而在实际的整机电路图中,由于受电路中其他单元电路中元器件的制约,有关元器件画得比较乱,有的在画法上不是常见的画法,有的个别元器件画得与该单元电路相距较远,这样电路中的连线很长且弯弯曲曲,造成识图和电路工作原理理解的不便。

    ③单元电路图只出现在讲解电路工作原理的书刊中,实用电路图中是不出现的。对单元电路的学习是学好电子电路工作原理的关键。只有掌握了单元电路的工作原理,才能去分析整机电路。

    3.单元电路图的识图方法

    单元电路的种类繁多,而各种单元电路的具体识图方法有所不同,这里只对共同性的问题说明几点:

    (1)有源电路识图方法

    所谓有源电路就是需要直流电压才能工作的电路,例如放大器电路。对有源电路的识图首先分析直流电压供给电路,此时将电路图中的所有电容器看成开路(因为电容器具有隔直特性),将所有电感器看成短路(电感器具体通直的特性)。直流电路的识图方向一般是先从右向左,再从上向下。

    (2)信号传输过程分析

    信号传输过程分析就是信号在该单元电路中如何从输入端传输到输出端,信号在这一传输过程中受到了怎样的处理(如放大、衰减、控制等)。信号传输的识图方向一般是从左向右进行。相关文章:详解PCB走线与信号完整性问题

    (3)元器件作用分析

    元器件作用分析就是电路中各元器件起什么作用,主要从直流和交流两个角度去分析。

    (4)电路故障分析

    电路故障分析就是当电路中元器件出现开路、短路、性能变劣后,对整个电路工作会造成什么样的不良影响,使输出信号出现什么故障现象(如没有输出信号、输出信号小、信号失真、出现噪声等)。在搞懂电路工作原理之后,元器件的故障分析才会变得比较简单。

    整机电路中的各种功能单元电路繁多,许多单元电路的工作原理十分复杂,若在整机电路中直接进行分析就显得比较困难,通过单元电路图分析之后再去分析整机电路就显得比较简单,所以单元电路图的识图也是为整机电路分析服务的。

    不管强电、弱电、模拟、数字,首先要明白各单位元器件的符号。新、旧国标都要熟记;熟练掌握各种单位元器件的工作原理和特性以及作用;熟练掌握各种基本单元电路的工作原理,分析方法。

    初学者不宜先看整机电路图,应该循序渐进 整机电路图由于有许多单元电路的存在,有的单元电路中的元器件就比较散乱,或者离本单元较远,初学者识图时,很有难度。

         
    从方框图开始-单元电路图、等效电路图-整机电路图 电路图包含很广,要想迅速看懂一张整机电路,需要长期的积累,这里是讲不清的。循序渐进的学习非常重要,电气理论基础非常重要 俗话说,专业好学,基础难打 一开始的急功近利,不久就会遇到瓶颈 如果你已有初步的电气基础 推荐先学习 高等教育出版社的《电工学》 数字电路是电路图中的一个难点,我稍微讲一下要学数字电路以下知识必不可少,可按顺序逐步学习:

    1、二进制和二进制编码,以及和十进制的转换关系 
         
    2、脉冲电路(脉冲信号的产生、整形、交变。包括,微分电路、积分电路、限幅电路、多谐振振荡电路、单稳态和双稳态电路等)
         
    3、逻辑门电路(与、或、非、与非、或非门)
         
    4、触发器电路(RS触发器、JK触发器、D和T触发器是必学的)
         
    5、组合逻辑电路(基本运算器、比较器、判奇偶电路、编码、译码器、数据选择器)
         
    6、时序逻辑电路(在组合逻辑电路的基础上又加了寄存器)比如计数器、节拍发生器什么的 
        
    7、单片机

    8、模拟量与数字量之间的转换 数字电路的很多功能是通过软件来实现的,这已经超出了电子技术分析的范畴,识图中,虽然不需要对软件相当熟悉,但必须了解软件处理信号的过程、目的、处理结果 单片机也是其中一个难点,具备系统的数字电路基本知识后,必须加以熟悉 数字电路的信号由于是各种脉冲串的数码信号,这些数据流信号的波形不可能像模拟电路那样,对电路的理解有太多帮助,这点要有心理准备。

    免责声明:本文转自网络,版权归原作者所有,如涉及作品版权问题,请及时与我 联系,谢谢                                                                                                                                                                                                              

    展开全文
  • Matlab符号运算总结

    2021-04-18 06:37:41
    %% 符号变量与符号表达式%%%%%%%%%%%%%%%%%%%%%%%%%%%%1.符号变量与符号表达式%%%%%%%%%%%%%%%%%%%%%%%%%%%clear all ;clc;close all;% f =sym( 'sin(x)+5x')% f —— 符号变量名% sin(x)+5x—— 符号表达式% ' '...
  • 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...
  • 函数、符号及特殊字符 声调 语法 效果 语法 效果 语法 效果 \bar{x} \acute{\eta} \check{\alpha} \grave{\eta} \breve{a} \ddot{y} \dot{x} \hat{\alpha} \t...
  • ( × ) 79、【判断题】复合按钮的电工符号是 ( √ ) 80、【判断题】接地线是为了在已停电的设备和线路上意外地出现电压时保证工作人员的重要工具。按规定,接地线必须是截面积25m㎡以上裸铜软线制成。()...
  • 显然这个函数是单词differential(微分)的简写,用于计算微分。...(1)符号微分1.常用的微分函数函数:diff(f) 求表达式f对默认自变量的一次微分值diff(f,x) 求表达式f对自变量x的一次积分值diff(f,n...
  • 在主题花纹填针对话框中,“主题花纹1” 框中选择当前使用的主题花纹,如果图形中有两个不同的主题花纹构成,那就在“主题花纹2”中选择另一个主题花纹,两个主题花纹可以同时出现在复合填针对象上。 3. 在“布局”...
  • Latex各种命令、符号、公式、数学符号、排版等

    万次阅读 多人点赞 2017-12-01 10:56:03
    本文仅供学习参考使用,一切版权和解释权均归原作者所有,转载地址:...数学符号详细内容见:http://mohu.org/info/symbols/symbols.htm 直接查看链接  http://www.mo
  • 它用各种图形符号表示电阻器、电容器、开关、晶体管等实物,用线条把元器件和单元电路按工作原理的关系连接起来。这种图长期以来就一直被叫做电路图。另一种是说明数字电子电路工作原理的。它用各种图形符号表示门、...
  • Latex命令符号

    千次阅读 2018-12-09 19:57:19
    本文章仅方便学习使用,一切版权和解释权归原作者所有,转载地址: ... ...函数、符号及特殊字符 声调 语法 效果 语法 效果 语法 效果 \bar{x} \acute{\eta} \check{\alpha} ...
  • 文章目录实验2.1 OpenGL的控制与交互方式一、 实验目的二、 理论背景三、 实验内容1. 创建基本工程项目2. 在子窗口中绘制图形3. 在子窗口中通过键盘事件更换椭圆形状颜色4. 在主窗口中添加菜单设置形状颜色5. 在主...
  • 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...
  • LateX各种命令符号

    千次阅读 2018-11-25 19:55:01
    函数、符号及特殊字符 声调 语法 效果 语法 效果 语法 效果 \bar{x} \acute{\eta} \check{\alpha} \grave{\eta} \breve{a} \ddot{y} \dot{x} \hat{\alpha} \...
  • 已经测试数据: 简单四则运算 2+3 9-6 3*6 7/3 2.71828*3.14159=8.539721265199999 复合运算 2*3+6-2/2=11.0 3.14+2*3-9/3=6.140000000000001 带括号 3*(5+2)=21.0 3.14*(9/(2+1))=9.42 (0-3.14)*2.71=-8.5094...
  • 非会员,刚下载软件从第一次打开软件起计时,3小时内是免费试用的,试用时灰色按钮部分不能试用,其他的都可以。 会员,无任何功能限制。 11、要怎样购买会员? 先点软件右上角的“查询时间”--“是”--“购买...
  • ├─图形图像 │ ├─从网址获取图片 │ ├─保护图像 │ │ ├─保护图像 │ │ └─解除保护 │ ├─图像特效 │ │ ├─变形 │ │ │ ├─从中心旋转 │ │ │ ├─从指定点旋转 │ │ │ └─调整...
  • 【www.520z-2.com - 话题作文】篇一:《AI变换旋转图形工具详解》变换旋转图形认识“变换”面板和旋转工具选择窗口变换命令弹出变换对话框 X:用于设置图形的水平位置 Y:用于设置图形的垂直位置 W:用于...
  • 本文来谈谈施耐德开放自动化(EcoStruxureAutomationExpert)中复合自动化类型的基本概念。这个概念并不是IEC61499 标准化中的概念,它最早出现在...也就是说要在工程中的HMI 上建立一个图形控件,就需要建立一个CAT ..
  • 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}\...
  • 4.7 创建一个单一元件4.8 创建一个复合元件4.9 用电子表格创建元件以及大元件的分割4.10 创建中文标题栏4.11 创建自己的电源符号 4.1 创建自己的元件库 首先必须创建自己的元件库,然后在元件库中创建元件,最后才...
  • 如果要调用元素的Update方法或调用Graph元素的图形基元,则必须先调用Read或Finalize在进行这些调用之前。 读取(超时=无,timeout_key = TIMEOUT_KEY) 读取窗口的输入值,并以流行的方式单击按钮 返回事件,值。...
  • 12图形图像编程

    2019-05-27 16:59:00
    为了在Windows窗口输出数据(字符或图形),Windows操作系统提供了一些工具和函数,例如提供笔用来定义图形外轮廓线的颜色粗细,提供刷子定义添充封闭图形内部的颜色和格式,提供不同输出字体,提供函数用来输出字符...
  • latex 符号以及命令

    千次阅读 2019-04-02 13:36:18
    函数、符号及特殊字符 声调 语法 效果 语法 效果 语法 效果 \bar{x} \acute{\eta} \check{\alpha} \grave{\eta} \breve{a} \ddot{y} \dot{x} \hat{\alpha} \tilde{\iota} 函数 语法 效果 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,924
精华内容 1,169
关键字:

复合按钮符号及图形

友情链接: AD1211_C51.rar