LaTeX 科技排版:包含水平三线图式的伪代码算法排版algorithm
下面这个文档对排版算法至关重要,请多加练习
http://blog.renren.com/share/66049300/679318404
中文环境下使用
http://wwv.renren.com/xn.do?ss=10791&rt=1
http://www.sciencenet.cn/m/user_content.aspx?id=231910
Latex live 指南
Latex 符号指南
Latex 公式指南
Latex 图像指南
http://www.latex-project.org/intro.html
http://latex.yo2.cn/articles/latex-learning0.html
2008/8/3 Latex 使用心得
最近学会了使用 Latex ,并且今年的 First Year Report 就是用 Latex 写的,发现了很多也许有用的小技巧,总结一下。
工具:
我现在使用的是 CTex ,一个号称支持中文的 Latex ,不过我现在还用不上中文。该软件免费可下载: http://www.ctex.org/HomePage 里面的 WinEdit 确实是很好用的。编译的内核是 MikTex 2.4 ,有一点老,不过基本功能都有了。
在 linux 上,可以使用 texmaker ,用了用,还是不错的。
一些使用心得 :
插入图片。在 Latex 中,图片是以文件的方式嵌入到文档当中,在转换为 pdf 或者 ps 文件的时候才会嵌入到文件中,否则都是单独存在的。插入图片的基本命令:
\begin{figure}
\centering
\includegraphics[width=0.6\textwidth]{file/vcrouter}
\caption{Internal structure of a VC router}\label{fig:vcrouter}
\end{figure}
\begin{figure} 和 \end{figure} 中间是图片的命令。 \centering 之后的所有内容居中。 \includegraphics 插入图片, width=0.6\textwidth 说明图片的宽度为 0.6 倍页宽,文件名是 file/vcrouter ,用 latex 编译自动搜索后缀为 eps 的图像, pdflatex 编译自动搜索后缀为 pdf 的文件。 \caption 说明该图 片的标题, \label 给出一个标签,文中则可以使用 \ref{} 进行连接。插入图片需要加载 \usepackage{graphicx} 。
插入多幅图片并包含子图的图片:
\begin{figure}[ht]
\centering \subfigure[A bundled-data channel]{
\includegraphics[width=0.30\textwidth]{file/bundleddata}\label{fig:bundleddata}}
\hspace{0.1\textwidth} \subfigure[The 4-phase bundled-data
protocol]{
\includegraphics[width=0.4\textwidth]{file/4phasebundled}\label{fig:4phasebundled}}
\caption{The 4-phase bundled-data protocol}\label{fig:4pb}
\end{figure}
这是一个两个子图水平并列的例子。在 \begin{figure} 后添加 [ht] 说明以水平 table 的形式排布,当然也可以使用 tabular ,不过麻烦一些。使用 \includegraphics 需要加载 \usepackage{subfigure} 。
公式编辑。其实可以使用公式编辑器。 MathType 5.0 以上,在 perferences 菜单里的 translators 选择 translate to other languages ,然后选择 latex 。之后,用公式编辑器编辑的公司可以直接用选择和复制放到 latex 文件当中。
如果公式需要加编号,使用 \begin{equation} 和 \end{equation} 就能自动添加编号。不过最好加载 \usepackage{amsmath} 。另外,默认公式是居中的,如果需要改成靠左缩进的方式,在 \documentclass[fleqn] {firstyearreport} 添加这个 fleqn 选择参数。
参考文献最好使用 bibtex 管理。管理的软件可以使用 Endnote ,不过我用的是 jabref ,一个开源软件,还是很好用的。只要 写上 \bibliography{file/reference} ,这里的 file/reference 说明参考文献是 file /reference.bib 文件,所有的参考文献就可以自动加载。关于参考文献的风格,我使用的 是 \bibliographystyle{alpha} ,以作者的第一字母和年代为标号。但是还有很多其他的方式,可以参考这个网站: http://www.cs.stir.ac.uk/~kjt/software/latex/showbst.html
图片格式是一个很烦人的问题。最基本的图片格式是 eps ,尽管现在 pdflatex 支持 pdf 和 jpeg,png 等等,但是我还是认为 eps 比较好。 eps 是矢量图,没有图像失真。用 eps 转换成的 pdf 放大多少都没有问题,体积也很小。
但是,支持 eps 的软件并不多。在 windows 上,我们最习惯的是 Visio 画图,但是 visio 对 eps 基本上没有支持。网上有很多将 visio 的图转化成 eps 的图的方法,但是很多都很麻烦。我现在终于找到了一种比较好的方式。
首先安装一个 postscript 的虚拟打印机, http://www.adobe.com/support/downloads/detail.jsp?ftpID=1502 。然后用 visio 将图片用 postscript 打成 prn 或者 ps 文件。用 CTex 自带的 GSview 打开该文件(没有也没关系,下一个: http://pages.cs.wisc.edu/~ghost/ ), file 菜单中有一个 ps to eps ,哈哈,自动转换边界,就变成 eps 文件了,而且是矢量的。
还有一个问题, pdflatex 偏偏是不支持 eps 文件,默认是 pdf 文件。使用 pdflatex 时,如果没有 pdf 文件会报错。有人说使 用 \usepackage{epstopdf} 可以解决该问题, eps 文件会自动在编译时变为 pdf 文件,但是在 windows 上的使用结果很糟 糕, eps 文件没有自动转换边界,按 A4 打印,结果很难看。
其实加载 \usepackage{epstopdf} ,就是使用 epstopdf 命令转换 eps 文件。但是在 windows 系统中的 epstopdf 命令好像不能自动转换边界,但是 linux 系统上的 epstopdf 是好的。所以我建议使用 linux 系统上的 epstopdf 命令转 化,是会自动转化边界的。
不过大批的文件一个一个去手动转化还是很麻烦,我就写了一个 makefile 文件,假设所有的 eps 文件都在一个文件夹下,那么 make all 一下,就能自动转化为 pdf 文件。知道我在说什么吧,呵呵。 Makefile 的内容如下:
clean:
rm -f *.pdf
eps_file = $(wildcard *.eps)
pdf_file = $(eps_file:%.eps=%.pdf)
$(pdf_file): %.pdf : %.eps
epstopdf $<
all: $(pdf_file)
show:
echo $(pdf_file)
伪代码。伪代码有时候还是要用的,对于复杂的算法,直接写伪代码有时候更容易懂。关于伪代码有一个包 algorithms ,需要加 载
\usepackage{algorithm}和
\usepackage{algorithmic} , 具体用法可以直接看他的帮助,在下载的压缩包中的 doc 目录下。下载路径: http://www.ctan.org/tex-archive/help/Catalogue/entries/algorithms.html 忘了说了,所有 Latex 相关的文件找不到,或者需要最新版,请查询 http://www.ctan.org/tex-archive/help/Catalogue/entries/algorithms.html .
伪代码举例 :
\usepackage{algorithm} %format of the algorithm
\usepackage{algorithmic} %format of the algorithm
\begin{algorithm}
\caption{Calculate $y = x^n$}
\label{alg1}
\begin{algorithmic}
\REQUIRE $n \geq 0 \vee x \neq 0$
\ENSURE $y = x^n$
\STATE $y \leftarrow 1$
\IF{$n < 0$}
\STATE $X \leftarrow 1 / x$
\STATE $N \leftarrow -n$
\ELSE
\STATE $X \leftarrow x$
\STATE $N \leftarrow n$
\ENDIF
\WHILE{$N \neq 0$}
\IF{$N$ is even}
\STATE $X \leftarrow X \times X$
\STATE $N \leftarrow N / 2$
\ELSE[$N$ is odd]
\STATE $y \leftarrow y \times X$
\STATE $N \leftarrow N - 1$
\ENDIF
\ENDWHILE
\end{algorithmic}
\end{algorithm}
效果 :
algorithm宏包的文档指导 : /Files/Lhw978/algorithms.pdf
LaTex:算法排版
http://www.binghe.org/2010/03/typeset-algorithm-in-latex/
排版可能需要的包:
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=T?igcup 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
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}
算法 algorithm 重命名
http://bbs.ctex.org/viewthread.php?tid=49008
使用 \usepackage{algorithm2e} 如何 使得 caption {}排版结果产生的“Agorithm”变为 " 算法 "?
milksea 回复:
改这两个
\renewcommand{\listalgorithmcfname}{List of Algorithms}
\renewcommand{\algorithmcfname}{Algorithm}
问题解决
,谢谢
附录。需要插入附录的话,下面的命令会很有用
\appendix
\appendixpage
\addappheadtotoc
\appendix 说明之后的内容为附录, \appendixpage 将添加一个专门的附录页, \addappheadtotoc 将附录添 加到目录当中,需要加载 \usepackage{appendix} 。不过,一旦附录开始,将不能转回正文。另一种方式可以使用 \begin{appendices} 和 \end{appendices} 在正文中添加附录,参看 http://www.tex.ac.uk/cgi-bin/texfaq2html?label=appendix
关于文档中的引用链接和生成 pdf 的链接目录,只能使用 pdflatex 。方法是加载 \usepackage{hyperref} ,所有链接自动生成。
关于所有的 latex 相关的命令,有一本手册(书) http://tobi.oetiker.ch/lshort/lshort.pdf ,好像有中文的翻译版本 http://net.ytu.edu.cn/share/%D7%CA%C1%CF/lshort-cn.pdf
哈哈,还有一个事, space 访问量过万了。 2008 年 8 月 3 日 。
源地址: http://www.cnblogs.com/Lhw97 8/admin/javascript:showReg(0);