TEX:高阶用法

文章详细介绍了如何在LATEX中创建和管理记数器,包括改变其值、显示值的方法。此外,还讨论了长度参数的设置,用户定义的命令和环境,以及标题和目录的定制。文章强调了正确使用LATEX内部命令和避免低级TEX命令的重要性。
摘要由CSDN通过智能技术生成

定制LATEX

记数器

创建记数器

用户可以用下面的命令创建自己的记数器:

\newcounter{记数器名}[上级记数器]

这里记数器名就是刚建立的记数器的名称。它可以是任一字母的组合,只要不与已存在的记数器名称相同就可以了。因此不能用列在上面的LATEX记数器或者前面已经定义的记数器名称作为记数器名。可省参数上级记数器是另一个已经存在的记数器( LATEX的或用户自定义的)的名称,其作用就在于只要.上级记数器被\stepcounter\refstepcounter命令(见下面)增1,,就把新建立的记数器重设为零。

当用\newcounter创建了一个新的记数器,它的初始值就是零。\newcounter记数器不能位于用\include 命令读进的文件中。因此最好把所有的\newcounter 命令都放在导言中。

改变记数器的值

\setcounter{记数器}{数}

这条命令的意义从字面上就可以知道了:指定的记数器被赋予给定的数值(整数)。

 \addtocounter{记数器}{数}

利用这条命令,指定记数器的值增加了给定数值,数可以是正值,也可以是负值。

\stepcounter{记数器}

指定记数器的值增1,同时所有从属记数器(即所有把这个记数器作为自己上级记数器的记数器)的值被重设为零(见上)。

\refstepcounter{记数器}

这条命令的效果与\stepcounter相同,但它也同时把counter设为交叉索引命令\label中的当前记数器(见8.3.1节)。

记数器的值可以用下面的命令当做一个数值处理:

\value{记数器}

这条命令并不改变记数器的值。它通常与\setcounter\addtocounter结合使用。例如,若用户已经创建了记数器mypag,那么就可以用命令

\setcounter{mypage}{\value{page}}

使它取与页码记数器page有相同的值。

显示记数器的值

\arabic{counter}
以阿拉伯数字显示,
\Roman {counter}
以大写罗马数字显示,
\alph{counter}
以小写字母显示,
\Alph{counter}
以以写字母显示,
\fnsymbol{counter}
以脚注符号显示。

有一些记数器,还存在下面这样形式的命令:
\the记数器
这里\the紧接着记数器的名称,如\thepage。这种命令通常与\arabic{记数器}是一样的,但也可以是几条记数器命令组成的。例如,在文档类book和report中,命令\thesection就是用章和节号组成的:.
\arabi c{ chapter}. \arabic{section}
这里\thesection的结果就是7.1 。
页码、公式或章节编号等等的自动显示,都是通过调用适当的\the记数器命令完成的。如果需要另一种不同格式的自动编号,比如说字母型的公式编号,相应\the记数器命令的定义就可以用7.3 节中的方法进行修改。

长度

给长度参数赋值的标准LATEX方法是用下面的命令

\setlength{\长度命令}{长度指定}

这里长度指定可以是指定长度(要有单位)或者另一个长度参数。在后一种情形中,\长度命令 就取这个参数的当前值。因此在一个list 环境中用\setlength{\rightmargin}{\leftmargin}就可以使得右页边与左页边相同。

可以用下面的命令增加长度值:

\addtolength{\长度命令}{长度指定}

这条命令就把长度指定加到\长度命令参数上去。若长度指定为负值,就减去相应的量。同样,可以用另一个长度参数作为长度指定,参数前面可以有负号,这样就可以加上或减去这个参数。在长度参数前面的数值会与参数中的值相乘: 0.5\textwidth意味着文本列宽的一半,而2\parskip是段间距的两倍。

利用命令

\settowidth{\长度命令}{文本}

可以使\长度命令参数的值等于处于LR模式(通常是从左到右)的一块文本的自然宽度。
类似地,命令

\settoheight{\长度命令}{文本}
\settodepth{\长度命令}{文本}

\长度命令的值分别取为文本在基线上方或下方的高度与深度。

橡皮长度

有些参数的值为橡皮长度,即这个长度可以伸展或收缩给定的量。

橡皮长度的语法是:
正常值 plus 伸展值 minus 收缩值

这里的正常值伸展值收缩值都是长度。例如:

\setlength{\parskip}{1ex p1us0.5ex minus0.2ex}

其含义为:两段间的行距(称为\parskip)等于当前字体中x的高度,但是该行距可以伸长到1.5 倍或收缩到0.8倍这个长度。有一个特殊的橡皮长度是\fill。其正常长度是零,但可以伸展到任何长度。

最后,命令

\stretch{小数}

生成一个橡皮长度,其可展性是\fill的给定小数倍( 2.4.2节)。用户要自己定义长度,可以用如下命令:

\newlength{\新长度命令}

这样就可以建立起长度\新长度命令,初始值为0pt。上面所讲的命令都可以用来处理它的值。
命令

\addvspace{长度指定}

会在其所处的地方插入给定长度指定的额外竖直距离。如果同时多次使用这条命令,那么实际被插入的间距是其中最大的那个,而不是所有间距的总和。这条命令只能用在两段之间。把它应用于用户自己定义的命令和环境中,可以使得生成的结构更像段落。

用户定义命令

在LATEX中可以用下面的命令定义或重定义新的命令:

\newcommand{\命令名称}[参数个数][可省参数]{定义}
\renewcommnand{\命令名称}[参数个数][可省参数]{定义}

这两组中的第一条命令是用来定义不存在的新命令。命令名称可以是字母的任意组合,只要不与别的命令重名即可。第二条命令是用来重定义一条已存在的命令。对这两种情形,如果调用了不正确的变量,都会给出一条
错误信息。第一个可省参数参数个数是一个介于1到9之间的数,它规定了新定义的命令或者被改变了定义的命令中有多少个参数值。在LATEX2e中可以存在的第二个可省参数值可省参数给出了新命令可以为可省参数值取
默认值。命令的实际定义是包含在定义中。

如果不确定给命令选择的名称是否已经存在,那么可以用

\providecommand{\命令名称}[参数个数][可省参数]{定义}

这条命令的语法与\newcommand\renewcomnand命令完全一样。差别就在于如果命令已经存在,新定义就被忽略。想取得相反的效果(在不用确知命令是否存在的条件下,覆盖命令的当前定义)可以用如下方法得到:首先调用\providecommand确保命令存在,然后用\renewcommand 命令给出真正的定义。然而,做这一操作时需要特别细心!

在定义部分,#1表示第一个参数值,#2 表示第二个参数值。把#1想像成u或v,把#2想像成n或m ,那么就可以很容易知道\anvec{arg1}{arg2}的操作方式了。
这种方式可以适用于有更多的参数值。

\newcommand{\subvec}[3]{\ensuremath{#1_#2,\ldots,#1_#3}}

我们已经知道有很多LATEX命令可以有可省参数值,这其中最典型的例子就是\newcommand 命令自身。在LATEX2e中,同样也可以使用户定义的命令有一个可省参数值。这样做的好处就在于,虽然多提供了一个参数,但在绝大多数情况下它取得只是标准值,不需要显式改变其值。例如,在上一节用户定义的命令\subvec中有三个参数值,分别相应于字母和第一一个及最后一个下标。然而,通常字母就是x,因此把它做为-一个
省参数不失为一个好主意,这样只有在字母不同时才需要指定。要做到这一点,利用如下命令:

\renewcommand{\subvec}[3][x]{\ensuremath{#1_{#2}, \ldots,#1_{#3}}}

它与前面定义的区别就在于[3] 参数值后面多了[x] 。这就说明了三个参数值中的第一个是可省的,其标准值为x。现在\subvec{i}{j}的结果就是xi,…,xj,而\subvec[a]{1}{n}的结果为a1…,aj 。
在用户定义的命令中只能有一个可省参数,而且也必须是第-一个,即定义中的#1。

用户定义的环境

可以用下面的命令来创建或修改环境:

\newenvironment{环境名}[参数个数][可省参数]{开始的定义}{结束的定义}
\renewenvironment{环境名}[参数个数][可省参数]{开始的定义}{结束的定义}
  • 环境名:对于\newenvironment,它不可以与任一已存在的LATEX或用户定义的环境或命令重名。另一方面,对\renewenvironment,则就必须有同名的环境存在。要对LATEX环境进行任何修改,都要求用户对LATEX的内部工作机理有相当深入的了解。

  • 参数个数:介于1到9之间的数,说明环境有多少个参数值;如果忽略了这个可省参数值,环境就没有参数值。

  • (2ε)可省参数:如果第一个参数值( #1 )是可省的,这是它的默认值;它与\(re)newcommand ( 166页)中的同名参数值行为一样。

  • 开始的定义:当\begin{环境名}被调用时,被插入的初始化文本;如果这一文本中包含形如#n,n= 1…参数个数项,那么环境就要用如下形式调用:

    \begin{环境名}{参数1}...{参数n}...
    

    在开始的定义中出现的每个#n都要用参数n取代。

  • 结束的定义:当调用了\end{环境名} 时,要插入的结束文本;这里不要用哑参数值#n,因为它们只允许出现在开始的定义文本中。

标题定制

正文中标题设置

\makeatletter 
\renewcommand{\section}{ \@startsection{section} {1} {\z@} {-3.5ex \@plus -1ex \@minus -.2ex} {2.3ex \@plus.2ex} { \normalfont\normalsize\CJKfamily{hei} } } \makeatother

说明:

  1. \makeatletter,是因为renewcommand中使用了带@的命令,此类命令只能用于package/class中,如果用于正文中,要用\makeatletter\makeatother包起来;

  2. \@startsection命令参数

     \@startsection{name}{level}{indent}{beforeskip}{afterskip}{style}
    
    • name 表示所定义的节标题的名称(不带反斜杠),比如section和subsection。
    • level 是一个数字,可以定义节标题的命令层次。这个数决定了定义的节标题是否编号(若是小于等于 secnumdepth则被编号)也决定了标题是否会被编进目录(若是小于等于tocdepth则被编号)。
    • indent : 定义节标题到版心左边的距离。此度量若是负数则标题进入边空。
    • beforeskip是一个长度,其绝对值表示标题到上文之间的距离。若是此距离为负数,则标题后面的第一个段落不缩进。此度量最好是一个可以被伸长和缩短的长度。另外标题总是另起一段的。因而parskip已被加入到标题与上下文的距离。
    • afterskip是一个长度,其绝对值表示独立显示的标题到下文之间的垂直间距或者是段内显示的标题到下文之间的距离。此度量若是负的,则定义的标题是段内显示的。对于独立显示的标题,parskip也已被加进标题与下文的距离。
    • style:决定标题的内容形式。可以是任意影响文本排版结构的命令如加入尺寸\huge \large \bfseries 对齐命令等
使用titlesec宏包设置标题格式
\usepackage[center]{titlesec} %其中 center 可使标题居中,还可设为 raggedleft (居左,默认), raggedright (居右)。

最常用的格式设置命令:

\titleformat{command}[shape]{format}{label}{sep}{before}[after]

各参数含义如下:

  • command 是要重新定义的各种标题命令,比如 \part,\chapter,\section,\subsection,\subsubsection,\paragraph,\subparagraph等;
  • shape 是用来设定段落形状的,可选的参数有 hang , block , display 等
  • format 用于定义标题外观,比如使标题居中、字体加粗等;
  • label 用于定义定义标题的标签,就是标题内容前面的标号;
  • sep 定义标题的标签与标题内容之间的间隔距离。
  • before 用于在标题内容前再加些内容;
  • after 用于在标题内容后再加些内容。

目录中标题设置

首先你要引入相关的包

\usepackage{titletoc}

如果你要采用双栏排版,需要引入包:

\usepackage[toc]{multitoc}

最常用的目录格式设置命令如下:

\titlecontents{标题名}[左间距]{标题格式}{标题标志}{无序号标题}{指引线与页码}[下间距]
  • 标题名 设置所需修改的某一层次标题格式的标题名,如chapter、section等层次标题名,或是table和figure图表标题名,或者是l+层次标题名,如lchapter、lsection等(修改层次内容文本格式)
  • 左间距 可选参数,不能省略
  • 标题格式 设置标题的整体格式,如字体、字体尺寸、与上一个标题的垂直距离等。该参数可空置。
  • 标题标志 设置标题标志的格式,如序号格式、序号宽度、序号与标题内容之间的间距等。该参数不能空置, 否则标题将无标题标志。
  • 无序号标题 设置无序号标题的格式,,如字体、字体尺寸等。 该参数可以空置
  • 指引线与页码 设置标题与页码之间的指引线样式以及页码的格式, 该参数如果空置,标题将无指引线和页码。
  • 下间距 可选参数, 用于设置标题排版后还需要执行的命令, 例如与下个标题的垂直间距等。该参数常被省略。

示例如下,第一个参数的section表示标题名,第三个参数{\bf \large}表示字体,粗体,大号,最后一个参数中的\hspace*{3cm}是为了产生一个右间距,使左右对称,因为前边左间距设置的也是3cm。

\titlecontents{section}
              [3cm]
              {\bf \large}
              {\contentslabel{2.5em}}
              {}
              {\titlerule*[0.5pc]{$\cdot$}\contentspage\hspace*{3cm}}%

LATEX 2 ε \varepsilon ε程序设计语言

命令的层次

命令有许多层次,它们的安全程度也相应不同。

  • 用户命令(最高级命令):在本书及其它手册中进行了描述,其名称由小写字母组成,例如\texttt,它是永久被支持的LATEX外部定义;
  • 类与宏包命令:其名称要稍长一些,而且大小写混杂(如\NeedsTeXFormat),主要是为程序设计人员提供的,而且也是有保障的;绝大多数是只能用在导言中的命令,但在类和宏包文件中并没有这个使用限制;
  • LATEX内部命令:名称中包含@字符,只能用在类与宏包文件中;虽然其中有些命令对得到特殊效果是密不可分的,但也无法保证永远可用;开发人员要使用该命令,那就有可能将来某一天自己设计的宏包变得不再能用了;
  • TeX低级命令:名称也是由小写字母组成,而且没有@ ;即使LATEX继续演化,其功能也应该是稳定的,但这也不是绝对的;只要有可能,就尽量避免使用它们;
  • 内部专用命令:是用在其它人员开发的类与宏包文件内部的命令;建议所有命令都前缀大写字母(以表示宏包的名称)后接@ ,这样可以避免与其它宏包发生冲突;例如,showkeys 宏包中有一条命令为SK@cite

注意:

  • 要用\newcommand和\renewcommand,而不用\def ;如果要使用某一个TpX的定义命令(因为调用某模板,或者因为必须用\gdef 或\xdef),那么先调用一个空的\newcommand 命令,以检测名称是否有冲突。如果无法确定命令名称是否存在,而且该命令不是很重要的,那么就调用一条空的\providecommand,然后再调用\renewcommand 。现在高级命令中可以定义有一个缺省值的命令,这使得原来经常要用低级命令的理由中缺少了重要的一条。
  • 利用\newenvironment 和\renewenvironment命令,而不用 \自己的环境和\end自己的环境命令对。
  • 要用\setlength命令给长度和橡皮长度赋值,而不要用直接等号方式。
  • 避免使用TEX盒子命令\setbox, \hbox以及\vbox ;而要用诸如\sbox,\mbox, \parbox 一类的命令。利用LATEX2ε提供的可省参考值,原来对等价TEX命令的需求现在大大降低,而且LATEX版本相比起来要透明得
    多。另外,当用了color宏包时,LATEX的盒 子仍然工作正常,而其它的命令结果就无法预料了。
  • 如果想给出错误和警告消息,就用\PackageError和\PackageWarning,不要用@latexerr或@warning;前面两条命令也同时告诉用户消息的来源,而不是只把它们标为LATEX消息。
  • 我们不会建议你只使用ifthen宏包中的\ifthenelse命令,以代替TEX的条件命令。但是似乎用这个宏包可以简化对条件的应用,而且符合LATEX语法

文件识别

\NeedsTeXFormat{格式}[版本]
例子:\NeedsTeXFormat{LaTeX2e}[1994/06/01]

在类或宏包中的第一条语句就应该是所 需要的TpX格式声明。虽然已有很多其它名称的格式,但只有名为LaTeX2e的格式才认识这条声明。而所有其它格式都会给出错误消息:
! Undefined control sequence.
此时,这条消息实际上就给出了提示信息。

标明类或宏包文件自身:

\ProvidesClass{类}[版本]
\ProvidesPackage{宏包}[版本]

版本都是由三部分组成的:日期,版本号以及附加信息。日期与上面的格式相同,而版本号可以是任何没有空格的标志,附加信息可以是有或没有空格的文本。例如,

\ProvidesPackage{shortpag}[1995/03/24 v1.4 (F. Barnes)]

上载其他类和宏包

在主文档文件中,类的读入是利用初始化\documentclass命令来实现的,而宏包用的则是\usepackage命令。在类和宏包文件内部,就必须使用下述命令:
\LoadClass[选项]{类}[版本]
\RequirePackage[选项]{宏包}[版本]
其中第一条命令可使得一个类文件上载另一个类文件,并且需要的话,可以给出选项;而第二条命令使得类和宏包文件上载其它的宏包。在任何类文件。中只能有一条\LoadClass命令;不能在宏包文件中使用。这两条命令都可以用在文档文件中。其中的宏包参数值可以是几个宏包名称组成的清单,中间用逗号分开。
可省版本参数与相应的\Provides… 命令之间的关系在前一节中做了介绍;而我们下面将介绍选项参数的处理方式。

输入文件

\IfFileExists{文件名}{真}{假}
\ InputIfFileExists{ 文件名}{真}{假}
这两条命令都会在latex文件搜索路径中看看有没有指定的文件名,如果找
到了文件,就执行真,否则就执行假。而且,在\InputIfFileExists命令中,执行了真后还会读入该文件。

检测文件

\listfiles
这条命令可以放在导言中,甚至\documentclass命令的前面。在处理过程结束后,它会生成并显示出所有输入文件的清单,同时包括文件的版本和发行数据。用这种方法,我们就可以得到所有被包含进来的文件记录,当要把个文件送到另外的地方,用不同的安装版本进行处理时,这一记录信息就可能非常有用。由于非标准文件也有可能被包含进来,那么从上面的清单中可以很容易识别出来。

\ProvideFile{文件名}[发行信息]

\ProvideClass{Class名}[发行信息]

\begin{filecontents}{文件名}
文件内容
\end{filecontents}

这个环境可以用在文档开头,即\documentclass命令的前面。这个环境首先会检测系统中是否存在一个文件,名为文件名,如果不存在,它就会把文件内容照原样写到那个名称相应的文件中。该文件可以是一个宏包,随后要用\usepackage上载它。利用这种方法,少掉的非标准文件就可以与主文档文件一起寄送了。
我们推广上面那个简单例子,在开头部分输入

\begin{filecontents}{mymacros}
\newcommand{\te}{the end}
\end{filecontents}

选项的处理

在类和宏包中都可以有选项,其定义方式为
\DeclareOption{选项}{代码}
其中选项就是选项的名称,而代码就是选项要执行的指令集。在latex内部,实际上创建了一条叫\ds@选项的命令。通常这些代码并不做任何事,只是设置一些标志,或输入一个选项文件.(\RequirePackage 不可用在选项代码中)在article.cls文件中的两个示例为

\DeclareOption{f1eqn}{\input{f1eqn . clo}}
\DeclareOption{openbib}{\setboolean{\@openbib}{true}}

可以用\DeclareOption*定义一个缺省选项,这条命令并不需要选项名称,只是指定适用于所有被调用的未定义选项的执行代码。
有两条特殊命令,可能用在缺省选项定义的代码中:
\CurrentOption由正在被处理的选项名称组成;
\OptionNotUsed\CurrentOption声明为未处理的。

接下来就用下面的命令处理选项:
\ExecuteOptions{选项清单}
\ProcessOptions
\ProcessOptions*
其中\ExecuteOptions会为选项清单中的每个选项调用\ds@选项命令。在默认方式下通常就是建立起特定的选项配置。\ProcessOptions 按照所有选项定义的顺序执行调用的选项,然后删除它们。这也就是说这条命令只能执行一次。有星号的命令功能类似,只是它是按调用的顺序执行。为了与IATEX2.09样式兼容,现在仍然保留了命令\@options ,它只是\ProcessOptions*命令的另-一个名称而己。
也可以用下面的命令为类或宏包定义选项:
\Pass0ptionsToClass{选项}{类名}
\Pass0ptionsToPackage{选项}{宏包名称}
其中选项是一串指定类或宏包文件可以识别的合法选项。这两条命令可以用在其它选项的定义中。最常见的用法就是把缺省选项传递给另一个类。

  • 所有在\documentclass语句中的选项标记为全局的;认为其要应用于后面所有宏包,但用\LoadClass上载的类除外;如果在主类中没有定义该选项,不会给出错误或警告消息;

  • 所有其它语句(包括\LoadClass\PassOptionsTo. .)给出的选项都是局部的;如果在相应的类或宏包中没有定义该选项,会给出一条错误消息;

  • 当所有宏包都读进来后,如果某一个全局选项还从来没有用过(从没有被定义),就会给出一条警告消息;

  • 无论是全局选项,还是局部选项,都按照定义的顺序执行(除非调用了\ProcessOptions* )。

Latex内部命令

\@namedef{命令}{定义}
\@nameuse{命令}
就会定义并执行名为\命令的新命令,其中命令名称中并不包含反斜杠。这个名称中可以包含任意字符,即使通常在命令名称中禁止使用的字符也可以。
\@ifundefined{命令}{真}{假}
如果\命令不存在,就执行真,否则执行假。同样这里命令中也不包含反斜杠,而且任何字符都可以出现在命令名称中。这个检测语句通常用来有条件地定义命令,其功能现在已经被\providecommand代劳。也可以用它确
定主类是否是article : @ifundef ined{chapter}{…}{.}可以用来检测
\chapter命令是否存在。
\ifnextchar 字符{真}{假}
用来检测下一个字符是否是给定的字符,如果是的话,执行真,否则执行假。这条命令通常用来定义有可省参数的命令,这时字符就是[。新扩展的\newcommand命令用高级方法得到了这一效果。

\@ifstar{真}{假}
用来检测下一一个字符是否是星号*,如果是的话,就执行真,否则执行假。可以用它来定义带星号的命令和环境,这是高级命令做不到的。
\@for \对象 := \列表 \do {命令}
其中\列表就是一条命令,被定义成一串用逗号分开的元素,而\对象就相继取值等于每个元素,并对每个元素执行一次命令代码。例如,

\newcommand{\set}{start, middle,end}
\@for \xx := \set \do {This is the \xx. }

就会显示出’This is the start. This is the middle. This is the end.’

TEX命令

\def\命令#参数形式#{定义}
基本的参数形式是\def\basic#1#2{定义}
调用格式:\basic{arg1,arg2}
还可以是\def\compl[#1]#2{定义}
调用格式是\compl[arg1]{arg2}

是TEX中标准的定义命令。它等价于\newcommand,只是它不会检查是否有名称冲突,而且参数的指定也不同。例如,显示科学记数法的命令\Exp可以如下定义:

\def\Exp#1#2{\ensuremath{#1\times10^{#2}}}
或者
\newcommand{\Exp}[2]{\ensuremath{#1\times10^{#2}}}

对于这两种定义方式,\Exp{1.1}{4}的结果都是 1.1 × 1 0 4 1.1\times10^4 1.1×104​​。然而,\def还可以做得更多。它可以把参数放在一个模板中,例如

\def\Exp#1(#2) {\ensuremath{#1\times10^{#2}}}

这样可以得到更方便的记号\Exp1.1(4) ,而这是\newcommand命令所做不到的。当定义命令时,不知道(或不关心)是否已存在同名命令时,或者要用模板时就用\def。有可省参数的命令实际上就是用模板定义的。
\gdef \edef \xdef

\def的变形;第一条命令给出一个全局定义,所得命令即使在当前环境或者{…}括号对外面也仍然有效;第二条命令是一个展开的定义,其中任何命令都具有自己本身的意义,而并不是把命令插入在定义中;最后那条是前面两条的组合,即展开的全局性定义。

\let\命令一 = \命令二 或 \let\ 命令一\命令二
使得\命令一\命令二当前含义。这通常用来在重定义命令前保存其原来定义,从而可以同时使用其原来定义。
\relax不做任何事,但通常用来插在应该有些什么东西的地方,但我们不想有内容的地方。
\if条件 真 \else 假 \fi
就是TpX中条件语句的形式。有许多不同形式的条件,我们这里就不一一介绍了,但常见的应用就是等价于LATEX的boolean开关命令:

\newif\if标志 = \newboolean{标志}
\标志 true = \setboolean{标志}{true}
\标志false = \setboolean{标志}{false}
\if 标志 .. \else .. \fi = \ifthenelse{\boolean{标志}}{..}{..}

对那些经常用这些语句的人而言,TEX形式要紧凑- -些,但它并不与一般的LATEX行事方式一致。

ifcase 数 文本0 \or 文本 1 \or...\fi

会根据的值来决定执行哪个文本

\endinput

终止对当前文件的输入。这并不是必需的方式,但所有的文件都用它结束不失为一个好的程序设计习惯。在主文档中不必用它,因为\end{document}可以得到同样的效果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Shilong Wang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值