LaTex:算法排版

Posted by 冰河 at 21:19 5 Responses » 66,417 Views
092010

排版可能需要的包:

usepackage{algorithm} //format of the algorithm

usepackage{algorithmic} //format of the algorithm

usepackage{multirow} //multirow for format of table

usepackage{amsmath}

usepackage{xcolor}

DeclareMathOperator*{argmin}{argmin} //argmin或argmax公式的排版

enewcommand{algorithmicrequire}{ extbf{Input:}} //Use Input in the format of Algorithm

enewcommand{algorithmicensure}{ extbf{Output:}} //UseOutput in the format of Algorithm

排版图片可能需要的包:

usepackage{graphics}

usepackage{graphicx}

usepackage{epsfig}

算法的排版举例:

\begin{algorithm}[htb] %算法的开始

caption{ Framework of ensemble learning for our system.} %算法的标题

label{alg:Framwork} %给算法一个标签,这样方便在文中对算法的引用

\begin{algorithmic}[1] %这个1 表示每一行都显示数字

REQUIRE ~~\ %算法的输入参数:Input

The set of positive samples for current batch, $P_n$;\

The set of unlabelled samples for current batch, $U_n$;\

Ensemble of classifiers on former batches, $E_{n-1}$;

ENSURE ~~\ %算法的输出:Output

Ensemble of classifiers on the current batch, $E_n$;

STATE Extracting the set of reliable negative and/or positive samples $T_n$ from $U_n$ with help of $P_n$; label{code:fram:extract} %算法的一个陈述,对应算法的一个步骤或公式之类的; label{ code:fram:extract }对此行的标记,方便在文中引用算法的某个步骤

STATE Training ensemble of classifiers $E$ on $T_n cup P_n$, with help of data in former batches; label{code:fram:trainbase}

STATE $E_n=E_{n-1}cup E$; label{code:fram:add}

STATE Classifying samples in $U_n-T_n$ by $E_n$; label{code:fram:classify}

STATE Deleting some weak classifiers in $E_n$ so as to keep the capacity of $E_n$; label{code:fram:select}

RETURN $E_n$; %算法的返回值

end{algorithmic}

end{algorithm}

排版效果图:

在文中对算法和算法的某个步骤的引用:Therefore, in step
ef{code:fram:extract} of algorithm
ef{alg:Framwork}, we extract $T_n$, a set of reliable negative samples

1、 For和While循环语句的排版举例

(1) 排版效果图

(2)排版代码

\begin{algorithm}[h]

caption{An example for format For & While Loop in Algorithm}

\begin{algorithmic}[1]

FOR{each $iin [1,9]$}

STATE initialize a tree $T_{i}$ with only a leaf (the root);\

STATE $T=Tigcup T_{i};$\

ENDFOR

FORALL {$c$ such that $cin RecentMBatch(E_{n-1})$} label{code:TrainBase:getc}

STATE $T=T cup PosSample(c)$; label{code:TrainBase:pos}

ENDFOR;

FOR{$i=1$; $i<n$; $i++$ }

STATE $//$ Your source here;

ENDFOR

FOR{$i=1$ to $n$}

STATE $//$ Your source here;

ENDFOR

STATE $//$ Reusing recent base classifiers. label{code:recentStart}

WHILE {$(|E_n| leq L_1 )and( D
eq phi)$}

STATE Selecting the most recent classifier $c_i$ from $D$;

STATE $D=D-c_i$;

STATE $E_n=E_n+c_i$;

ENDWHILE label{code:recentEnd}

end{algorithmic}

end{algorithm}

问题:如果有两个等式排成一列,如下:
a+b=1
c+d=2   (1)
其右端的编号(1)如何显示在两个等式的中间?

如果用eqnarray环境,只能将编号显示在上面或下面等式的后面,如:
begin{eqnarray}

a+b &=& 1
onumber


c+d &=& 2

end{eqnarray}
则显示为:
a+b=1
c+d=2  (1)
编号显示在第二个等式的后面。

可以使用下面的语句,使得编号显示在两个等式的中间:
begin{equation}

begin{array}{l}

a+b=1 \

c+d=2

end{array}

end{equation}
有时上下列等式之间显得拥挤,可在每个等式前加上displaystyle来避免这种情况,如:
begin{equation}
begin{array}{l}
displaystyle a+b=1 \
displaystyle c+d=2
end{array}
end{equation}

此外,利用split环境也可以将编号写在中间,如:
begin{equation}

begin{split}

a+b=1\

c+d=2

end{split}

end{equation}

这个方法是网友xhpan于2009年8月1日提供的,在此表示感谢!

在交叉引用中,博主习惯上用符号”eq:n”,来标示文章中需要引用的第n个公式,如:
begin{equation}
begin{array}{l}
displaystyle a+b=1 \
displaystyle c+d=2
end{array}
label{eq:1}
end{equation}

按说Tex文件中出现
ef{eq:1}
的地方,在编译后就会自动出现公式的编号,然而实际上什么都没有显示。博主尝试用其它符号来标示此公式,如label{eq1},一切又恢复正常,看来array环境中用来标示引用的符号不可任意选择!使用split环境不存在这个问题。

LaTeX:公式及编号

Posted by 冰河 at 17:02 1 Response » 105,706 Views
092010

1.自动编号的单行公式环境是
\begin{equation}

end{equation}

不参与自动编号的单行公式环境:
[

]

人工编号的单行公式可以使用Tex原有的行间公式标记
$$公式 eqno 编号 $$ 将编号放在右边
$$公式 leqno 编号 $$ 将编号放在左边

引用时候可以直接用$编号$即可。

例如,$$a^2+b^2=c^2 eqno (**)$$
由公式($**$)即可得到结论。

一般情况下,行间公式 $$…$$也可以用[…]表示
但对于这种人工编号的公式,不能用[..]代替$$…$$.

2.单个公式很长,需要换行,但仅允许生成一个编号时,可以用split命令

\begin{equation}
\begin{split}
a &= b \
c &= d
end{split}
end{equation}

注意:每行只允许出现一个“&”,使用split命令后,编号上下居中显示。

3.多行公式:

\begin{eqnarray}
左 & 中 & 右\
左 & 中 & 右\

end{eqnarray}
该环境对多行公式每行都加自动编号,如果相对某行不加编号,可在换行之前添加命令
onumber

其中两个&号之间的是公式间对齐的位置,用\隔开各行公式。将eqnarray改为eqnarray*输出的公式是没有编号。

如果要改变公式的自动编号,可以重设计数器初始值:
setcounter{equation}{数}
下一个编号自动加1。

4.方程组的排版:
多个公式,每个公式自动编号。

1) gather环境
是下面align环境的一种特殊情形。
\begin{gather}
a &= b \
c &= d \

end{gather}
>>1.如果其中某几行使用同一个编号,则需要内嵌一个split环境。
>>2.命令
otag可使当前行不编号。
2) align环境
可使几组公式并排在一起,即在同一行显示多个公式,方法是跟以前一样,使用”&”对齐。
可替代gather环境。
3) 以上几种方程组环境,无论每个公式多小,都会占满一行。使用相应的gathered,aligned环境,则只占据公式的实际宽度,整体作为一个特大的符号与其他符号一同处理。
这个结构还可以添加位置参数,以决定与其他符号的竖直对齐方式(b,t)。而且这种环境不再具有自动编号功能。

例如:
\begin{equation}
left.
\begin{aligned}[b]
a &= b+c \
d &= b+c
end{aligned}

ight}
Longrightarrow
qquad a=d
end{equation}

© 2009 - 2024 冰河的博客