潍坊网站建设怎样,商品网站建设设计思路,网店营销策略有哪些,国家单位网站建设要多久文章目录定制LATEX记数器创建记数器改变记数器的值显示记数器的值长度橡皮长度用户定义命令用户定义的环境标题定制正文中标题设置使用titlesec宏包设置标题格式目录中标题设置LATEX 2ε\varepsilonε程序设计语言命令的层次文件识别上载其他类和宏包输入文件检测文件选项的处理…
文章目录定制LATEX记数器创建记数器改变记数器的值显示记数器的值长度橡皮长度用户定义命令用户定义的环境标题定制正文中标题设置使用titlesec宏包设置标题格式目录中标题设置LATEX 2ε\varepsilonε程序设计语言命令的层次文件识别上载其他类和宏包输入文件检测文件选项的处理Latex内部命令TEX命令定制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{环境名}被调用时被插入的初始化文本如果这一文本中包含形如#nn 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说明 \makeatletter是因为renewcommand中使用了带的命令此类命令只能用于package/class中如果用于正文中要用\makeatletter和\makeatother包起来 \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 宏包中有一条命令为SKcite 。
注意
要用\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×1041.1\times10^41.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}可以得到同样的效果。