28 Apr 2010

MATLAB函数之- bwmorph

bwmorph
功能: 提取二进制图像的轮廓.
语法: BW2 = bwmorph(BW1,operation) ;
BW2 = bwmorph(BW1,operation,n) ; n为次数;
Operation的参数可以有多种选择,现归纳如下:
‘bother’:闭包运算,即先腐蚀,在膨胀,然后减去原图像;
‘bridge’:做连接运算;
‘clean’:去除孤立的亮点;
‘close’:进行二值闭运算;
‘diag’:采用对角线填充来去除8邻域的背景;
‘dilate’:采用结构元素ones(3)做膨胀运算;
‘erode’:采用结构元素ones(3)作腐蚀运算;
‘fill’:填充孤立的黑点; ‘hbreak’:断开H形连接;
‘Majority’:若像素的8邻域中有大于或等于5的元素为1,则像素为1,否则为0;
‘open’:执行二值开运算;
‘remove’:去掉内点,即若像素的4邻域都为1,则像素为0;
‘shrink’n=inf:做收缩运算,这样没有孔的物体收缩为一个点,而含孔的物体收缩为一个相连的环,环的位置在孔和物体外边缘的中间,收缩运算保持欧拉数不变,
‘skel’n=inf: 提取物体的骨架,即去除物体外边缘的点,但是保持物体不发生断裂,它也保持欧拉数不变。 ‘spur’:去除物体小的分支;
‘thicken’n=inf;对物体进行粗化,即对物体的外边缘增加像素,知道原来为连接的物体按照8邻域被连接起来。粗化保持欧拉数不变。
‘thin’n=inf:对物体进行细化,使得没有孔的物体收缩为最小连接棒,而含有孔的物体收缩为一个连接的环,同样细化保持欧拉数不变。
‘tophat’:用原图减去开运算后的图像;

27 Apr 2010

matlab 中序列求极值的方法


坛子里的几个经典方法:

利用数学里驻点和极值点定义来求。
--------------------------------------ilxy的方法 -------------------------------------------------------------------
>> aa=randperm(20)
aa =
16 13 17 7 19 18 14 8 11 2 20 3 6 4 15 1 12 10 5 9
>> bb=intersect(find(diff(aa)>0)+1,find(diff(aa)<0))
bb =
3 5 9 11 13 15 17
----------------------------------------------------------------------------------------------------------------------
----------------------------------hyperelastic 的方法----------------------------------------------------------
N = 100;
aa=randperm(N);
index = find(((aa(2:N-1)>aa(1:N-2))+(aa(2:N-1)>aa(3:N)))==2)+1;
bb = aa(index);
-------------------bainhome 的方法 -----------------------------------------------------------------------------
a=rand(1,100); find(diff(sign(diff(a)))>0)+1
------------------------------------------------------------------------------------------------------------------------
以上代码都是求极大值,略微变换后可以得到极小值。

------------------------------------eight版主给的方法 ------------------------------------------------------------
d=diff(x);
n=length(d);
d1=d(1:n-1);
d2=d(2:n);
indmin=find(d1.*d2<0 & d1<0)+1;
indmax=find(d1.*d2<0 & d1>0)+1;
------------------------------------------------------------------------------------------------------------------------
虽然基本原理一样,不过几位的方法都各有特色。都是前辈们智慧的结晶,在此深表感谢。
小代码体现大智慧的典范!

我在实验中所搜到的方法,可惜这次没搜索到:

假设待求的数列为data,则find(diff(sign(diff(data)))== - 2)+1 可求极大值。find(diff(sign(diff(data)))== 2)+1 可求极小值。

Uninstalling Visual Studio 2010

Uninstall Visual Studio 2010
Uninstall Visual Studio Office 2010
Uninstall other 2010 stuff...

Search on Framework
Uninstall .NET Framework 4.0 Extended
if there's errors,Rename the crashed program (always in the v4.0 frameworks directory in my case) to have a *.OLD extension
Uninstall the .NET Framework 4 Client Profile

Done!

26 Apr 2010

Python Tips - 判断点是否在直线上

#! /usr/bin/env python

import math

class Point:
    def __init__(self, x, y):
        self.x = x
        self.y = y

    def __repr__(self):
        return str((self.x, self.y))

class Segment:
    def __init__(self, p1, p2):
        self.start = p1
        self.end = p2
        self.length = getDist(p1, p2)

    def __repr__(self):
        return str((self.start, self.end, self.length))

    def isOn(self, p):
        if getDist(p, self.start) + getDist(p, self.end) == self.length:
            return True
        else:
            return False

def getDist(p1, p2):
    return math.sqrt((p1.x-p2.x)**2 + (p1.y-p2.y)**2)

def main():
    p1 = Point(-1, -1)
    p2 = Point(1, 1)
    p3 = Point(0, 0)
    p4 = Point(0, 1)
    line = Segment(p1, p2)
    print 'Is ', p3, ' on line ', line, ':', line.isOn(p3)
    print 'Is ', p4, ' on line ', line, ':', line.isOn(p4)

if __name__ == '__main__':
    main()

24 Apr 2010

Python Tips - 正则表达式 (Regular Expression)

1 非贪婪flag
>>> re.findall(r"a(\d+?)", "a23b")
['2']
>>> re.findall(r"a(\d+)", "a23b")
['23']


注意比较这种情况:
>>> re.findall(r"a(\d+)b", "a23b")
['23']
>>> re.findall(r"a(\d+?)b", "a23b")
['23']

2 如果你要多行匹配,那么加上re.S和re.M标志
re.S:.将会匹配换行符,默认.不会匹配换行符
>>> re.findall(r"a(\d+)b.+a(\d+)b", "a23b\na34b")
[]
>>> re.findall(r"a(\d+)b.+a(\d+)b", "a23b\na34b", re.S)
[('23', '34')]
>>>

re.M:^$标志将会匹配每一行,默认^和$只会匹配第一行
>>> re.findall(r"^a(\d+)b", "a23b\na34b")
['23']
>>> re.findall(r"^a(\d+)b", "a23b\na34b", re.M)
['23', '34']

但是,如果没有^标志,
>>> re.findall(r"a(\d+)b", "a23b\na23b")
['23', '23']

可见,是无需re.M
来自 http://www.juyimeng.com/python-multi-line-non-greedy-regular-expression-sample.html

23 Apr 2010

MATLAB自动生成exe文件



方法一:
1.设置编译器:
在确定安装好Matlab Compiler后,还需要对Compiler进行适当的配置,方法是在Matlab命令窗口输入:Mbuild –setup, 按提示选择matlab自带编译器LCC。

2.将脚本编译为可执行文件:
如项目文件包含:gui.m, gui.gif, fun1.m。在项目文件路径下命令行输入:mcc –m gui.m,生成:mccExcludedFiles.log,ReadMe.txt,gui.ctf,gui.prj,gui_main.c,gui_mcc_component_data.c,gui.exe。其中:gui.ctf,gui.exe为脱离matlab环境运行必需的文件。

3.在未安装matlab的机器上运行可执行程序。

将MATLAB根目录下\toolbox\compiler\deploy\win32中的MCRinstaller.exe安装到该计算机上,将生成可执行程序脱离matlab运行所需的函数库。将2中生成的gui.ctf,gui.exe拷贝到该计算机同一路径。运行gui.exe将生成gui_mcr文件夹,包含程序运行所需的库。至此完成。

4.去除独立可执行程序运行时的“DOS黑窗口”。
以上生成的exe程序运行时首先弹出一个DOS界面窗口,如果不需要其输出数据和错误信息,可将其去除。
matlab命令行输入:
cd(prefdir)
edit compopts.bat
此时compopts.bat打开,在文件最后添加: set LINKFLAGS=%LINKFLAGS% -subsystem windows
如果程序比较复杂,易出现异常,则不建议去除这个dos窗口以便调试。
另外,这个办法是适用于你用的编译器为LCC,如果是其他的,那么所加语句有所不同
Microsoft Visual C/C++:
set LINKFLAGS=%LINKFLAGS% /SUBSYSTEM:WINDOWS /ENTRY:mainCRTStartup
Borland: set LINKFLAGS=%LINKFLAGS% -aa

5.遇到某些函数不能使用的问题。
我的程序中用到vpa函数,运行gui.exe出现:undefined method or function 'vpa' for input argument type of 'double'错误提示。而gui.m脚本在matlab环境可以运行。原因:百度搜到的信息为:matlab不支持符号工具箱的编译。只好避开使用此函数。

使用结果:
总体上很顺利,没遇到5所述的问题,但“DOS黑窗口”按4所述方法无法去除。在第2步中,输入mcc -m fillholegui.m或mcc -B sgl fillholegui.m均可。编译过程比较缓慢,需要耐心等候。


方法二:
matlab编程很方便,强大的矩阵运算功能,很多好用的工具箱,但是一般程序都要在matlab环境中运行,能否脱离这个环境打包发布呢,matlab也提供了这样的工具。
1. 转化为c/c++程序并编译为.exe
先验证mcc是否可用,用matlab中的example验证即可。建议不用matlab默认的lcc 编译器(可能有问题),可使用VC6编译器(按默认路径安装)由于带有界面,需要图像库支持,编译时应使用命令: mcc -B sglcpp pressure编译生成若干c/c++源码,以及.exe文件、bin目录中figure菜单条/工具条文件(.fig)等程序发布需要.exe、bin\、.fig
2. 在未装matlab的电脑上运行程序需要数学运行时库、图像运行时库以及用到的工具箱mex文件前两者已经在\matlab\extern\lib\win32mglinstaller.exe压缩包中,将其解压,并在环境变量path中添加解压到的路径另外若程序中还用到其他工具箱的东西,那么需要将此工具箱中需要的mex文件也一并放在解压到的路径,子文件夹位置与matlab中的位置相同
3. 在确保.exe程序可以运行的情况下 可以用setup factory打包发布

使用结果:

总体来说,方法失败,不过也可能是因为不是用VC的编译器。我选择的是c++Builder的编译器,输入命令mcc -B sglcpp fillholegui2.m出现错误;输入命令mcc -B sgl fillholegui2.m 出错;输入命令mcc –p -B sgl fillholegui2.m出错。

网上可能还有一些其它的方法,比如在LCC编译环境下,输入命令为mcc -B sgl fillholegui2.m;mcc –m -B sgl fillholegui2.m;mcc –p -B sglcpp fillholegui2.m等。稍微进行了实验,这几个命令都会报错。谨慎怀疑是将LCC编译器和C++编译器环境下的命令混淆了。

22 Apr 2010

matlab坐标轴标注和特殊字体


set(gca,'XTick',[0:pi/3:2*pi]) 设置所要显示坐标轴刻度,
set(gca,'XTickLabel',[0:pi/3:2*pi]) 给这些数据加标签
gca是单词Get current axes handle的缩写,获得坐标轴句柄。(不知道matlab为什么不自动对应数据加标签,还需要多一条命令)出来的图形

坐标轴标注:

1. 控制坐标轴尺度长度:set(gca,'XLim',[-pi/2 pi])

2. 定制自己想标注的刻度:

(1)set(gca,'XTick',[-pi/2:pi/4:pi]) %%%坐标轴最小值,步长,最大值

(2)set(gca,'XTickLabel', {'-pi/2' '-pi/4:' '0' 'pi/4' 'pi/2' 'pi*3/4' 'pi'})

3. 反转坐标轴:set(gca,'XDir','reverse')

4. 上下标及latex公式

输下标:_{wb}

输上标:^{0.5}

输 latex公式:

text('Interpreter','latex',...

'String','$$\int_0^x\!\int_y dF(u,v)$$',...

'Position',[.5 .5],...

'FontSize',16)

在Matlab中输入上标、下标、特殊符号或字体:

bf,\it,\rm表示黑体,斜体,正体字符

上标用 ^(指数),下标用 _(下划线)

调用方式为: ^{任意字符}, _{任意字符}, 注意{}的使用!

希腊字母等特殊字符用 \加拼音如:

α \alpha β \beta γ \gamma θ \theta Θ \Theta

Г \Gamma δ \delta Δ \Delta ξ \xi Ξ \Xi Ω \Ommiga

η \elta ε \epsilong ζ \zeta μ \miu υ \nu τ \tau

λ \lamda Λ \Lamda π \pi Π \Pi σ \sigma Σ \Sigma

φ \phi Φ \Phi ψ \psi Ψ \Psi χ \chi ω \ommiga

< \leq > \geq 不等于 \neq << \ll >> \gg

正负 \pm 左箭头 \leftarrow 右箭头 \rightarrow 上箭头 \uparrow

体会以下两例:

figure, title('\zeta^{-t}sint');

figure, title('x~{\chi}_{\alpha}^{2}(3)');

Python FAQ: charset detection

Q:
在处理一个url提交的数据

在PC上,大多数浏览器会以utf8编码提交数据
“北京西”看起来是这样“%E5%8C%97%E4%BA%AC%E8%A5%BF”

在手机上,Mobile IE会以GBK提交数据
“北京西”看起来是这样“%B1%B1%BE%A9%CE%F7”

我的程序需要不加区别的处理这两种输入,我应该如何判断这是哪种编码,然后
统一地将他们转换为unicode呢?
===================

A:
>>> import chardet, urllib
>>> chardet.detect(urllib.unquote_plus('%E5%8C%97%E4%BA%AC%E8%A5%BF'))

{'confidence': 0.87624999999999997, 'encoding': 'utf-8'}
>>> chardet.detect(urllib.unquote_plus('%B1%B1%BE%A9%CE%F7'))

{'confidence': 0.98999999999999999, 'encoding': 'GB2312'}

chardet
http://chardet.feedparser.org/

16 Apr 2010

图像处理:直方图均衡化

冈萨雷斯数字图像处理关于直方图那几节详细讲解了直方图与图像对比度的关系,总结下来就4点:
分布集中,对比弱;
分布均匀,对比强;
偏向左边,图像暗;
偏向右边,图像亮.

碰到对比较弱的图像,如何增强对比度呢?最常见的办法就是直方图均衡化.

我们来看一个灰度图像,表示灰度 i 出现的次数,这样图像中灰度为 i 的像素的出现概率是



L 是图像中所有的灰度数,n 是图像中所有的像素数, p 实际上是图像的直方图,归一化到

c 作为对应于p 的累计概率函数, 定义为:



c 是图像的累计归一化直方图。


我们创建一个形式为 的变化,对于原始图像中的每个值它就产生一个 y,这样 y 的累计概率函数就可以在所有值范围内进行线性化,转换公式定义为:



注意 T 将不同的等级映射到 域,为了将这些值映射回它们最初的域,需要在结果上应用下面的简单变换:



上面描述了灰度图像上使用直方图均衡化的方法,但是通过将这种方法分别用于图像颜色值的红色、绿色和蓝色分量,从而也可以对彩色图像进行处理。



上:原图与其直方图
中:本方法处理后的图像及其直方图
下:matlab自带的histeq处理图像及其直方图


对比直方图能看出,本方法均衡后图像对比度加强,同时也保持了直方图的轮廓形状,效果应该说优于matlab自带的函数histeq.

15 Apr 2010

Python中函数的参数定义和可变参数


刚学用Python的时候,特别是看一些库的源码时,经常会看到func(*args, **kwargs)这样的函数定义,这个*和**让人有点费解。其实只要把函数参数定义搞清楚了,就不难理解了。

13 Apr 2010

gnumex for matlab

gnumex 可以让 matlab mex 使用 gcc 进行编译,主要是 Windows 上。

需要安装
MingW
gnumex, 可装在 mingw 目录下,会自动识别 mingw

装好以后
matlab 中执行,gnumex, 出来一个设置的界面,生成 mex optional batch file

以后编译的时候,使用
gnumex -f _path_to_mexopts.bat file_to_be_compiled

latex文字上加点

貌似 latex 不支持 utf-8
要输入 ä,则用\"a

如果是matlab,需要使用latex解释器,字母上面加点,例如:
text(0.5,0.5,'$\dot{a}$','interpreter','latex','fontsize',16)

9 Apr 2010

LATEX+BIBTEX


1. 最简单的latex文件
\documentclass{article}
\begin{document}
blabla
\end{document}
blabla里边随便写一些乱七八糟的东东, 就能被编译然后看到了~.~
中文支持, 用CJK包
\documentclass{article}
\usepackage{CJK}
\begin{CJK}{GBK}{song}
\begin{document}
试汉字
\end{CJK}
\end{document}

2. 注释

'%'用来注释%后的语句, 编译时忽略
块注释:
\iffalse
...
\fi

3. 空格
\ ,~ 二者都可以表示空一格; \,表示空很小一点距离, \:大一点, \;再大一点; \!往回退一点点; \hspace{1cm/10pt/0.1\texwidth}横向空一定距离, \vspace{...}纵向空一定距离; \phantom{000}中间随便写些什么, 宽的字符就空得多一些, 窄的字符就空的少一些, 比\hspace{}强硬一些, 不过在公式对齐时最好还是用&, 用\phantom比较难调, 而且不方便修改.

4. 插图,表格
好象\label要放到\begin{figure}...\end{figure}环境的最后才能在引用时正确显示标号(还没有试清楚). 见下面:
例:
\begin{table}
\centering
\caption{The $t^{\alpha}$). The columns are the same as in Table \ref{tab-emission}.}
\begin{tabular}{c|c|c}
\hline
a1 & b1 & c1 \hline
a2 & b2 & c2 \hline
...
\label{kaka}
\end{tabular}
\end{table}
注意label的位置, 在{tabular}内而不是外边, 否则就出乱子了. figure的label也是. 实际上是\label命令必须紧接着\caption命令给出.

5. 生成索引
\usepackage{makeidx}
\makeindex
\begin{document}
body: \index{a!b} (可以是a, a!b, a!b!c等)
\printindex
\end{document}

见到\makeindex后latex foo.tex会自动生成foo.idx, 然后在命令行中还要makeindex foo.idx生成.ind文件, 然后才能再latex foo.tex.

6. 参考文献, 如何使用bibtex
首先要建立一个foo.bib文件用于存放文献信息, 内容见xampl.bib, 有各种格式的, 如
@ARTICLE{article-minimal,
author = {L[eslie] A. Aamport},
title = {The Gnats and Gnus Document Preparation System},
journal = {\mbox{G-Animal's} Journal},
year = 1986,
}

其中article-minimal是要被引用时用的;

然后主文件(foo.tex)中做以下的事:
\cite{article-minimal}
...
\bibliography{foo}
\bibliographystyle{plain} (别人有个各种样式的比较)

最后编译的时候分四步: 1. latex foo.tex (生成.aux文件) 2. bibtex foo.aux 3. latex foo.tex 4. latex foo.tex (重复); 当然, 在执行的时候是可以不写后缀的, 如5. xdvi foo即可看效果.

bibtex 会生成一个bbl文件, 以后就可以直接修改这个文件, 投稿的时候也只需带上这个文件, 或者把这个文件的内容拷到tex文件中.

参考: man bibtex, bibtex/, "关于参考文献.pdf", bibtex.chm 或LaTeX2e使用手册(即出版出来的)中关于bibtex的appendix.

7. 用bibtex,如何实现每章后面加上参考文献
\usepackage{chapterbib}
然后看chapterbib.sty文件,里面的说明非常之详细

8. 在一个圆圈里放一个数字: \textcircled{\scriptsize1} 或者 $\bigcirc$\hspace{-7.5pt}1

如何在文中实现带圈的数字
答:1)使用\textcircled{}命令,后面的参数可以是一个字符或者汉字(配合CJK)
,甚至也可以是公式,但是它只会给第一个字符或者汉字加上 > 合适的圆圈,字体
放缩命令对它也有效,因此可以利用这点实现两个字符加圈的效果,但是需要仔细的
调整尺寸,参考如下命令: > \Large{\textcircled{\small{12}}}、\textcircled
{九}。
2)使用pifont宏包,那里面有很漂亮的带圈的各种数字符号(仅限于阿拉伯数字,如果想>
使用加圈的中文“一”至“九”就不行了)。在.tex > 文件中尝试下列命令:\ding{172}>~\ding{211}。
3)在GB和GBK字库中本来就有10个加圈数字形式,可以直接在 CJK中使用。如果不超过11的>
话应该够用了呵呵:①②③④⑤⑥⑦⑧⑨⑩,这些汉 > 字可以直接使用数字软键盘输入(>
以智能ABC输入法为例,其实大部分输入法都是一样的):打开软键盘,选择“数字序号”>
即可看到。

9. 记数器解决方案
\begin{enumerate}
\item
\item
\newcounter{temp} \setcounter{temp}{\value{enumi}}
\end{enumerate}
...
\begin{enumerate}
\setcounter{enumi}{\value{temp}}
\item dd
\end{enumerate}

10. 用Latex做幻灯片
目前欣赏beamer. 这里有一个非常齐全的用 latex做幻灯片的各种方案的比较. (原始网址是http://webpc.shtu.edu.cn/yctang/CteX_Talk/homepage/compare.htm)

11. 如何输出这个字符 ~
1. \textasciitilde 或者 2. \~{}

12. 插入其他格式的图片如jpg格式的
(1). 最简单的办法是用pdflatex进行编译, 于是只需在原文件中写上该图片的名字;
(2).用graphicx宏包, (不知1,2是否一起用)

13. 一个加超链接的例子
\href{http://www.toolscenter.org/products/texniccenter}{TeXnicCenter}

14. 关于特殊字符
有一个叫symbols-a4.pdf的文件, 里边记录了几千个特殊符号的表示方法, 例如


15. \sqrt的真正用法: \sqrt[a]{b}, 其中a是在根号前的那个数字, 如果是3, 就是开三次方.

16. 使用bibtex前面已有介绍, 如何修改bst文件? 还是不清楚, 不过成功修改了一个:

FUNCTION {article}
{ output.bibitem
format.authors "author" output.check
author format.key output
%%%%% name.or.dash
format.date "year" output.check
date.block
eprint missing$
{
crossref missing$
{ journal
"journal" output.check
format.vol.num.pages output
}
{ format.article.crossref output.nonnull
format.pages output
}
if$
format.journal.pages
}
{eprint output}
if$
format.note output
fin.entry
}

这个 function就是对bib文件的条目为article的进行整理的, 原来对于是预印本文献, 我的bib条目是

@ARTICLE{2006astro.ph..1063Z,
author = {{Zhang}, B. and {Gil}, J. and {Dyks}, J.},
title = "{Physical Interpretations of Rotating Radio Transients}",
journal = {ArXiv Astrophysics e-prints},
eprint = {arXiv:astro-ph/0601063},
year = 2006,
month = jan,
adsurl = {http://adsabs.harvard.edu/cgi-bin/nph-bib_query?bibcode=2006astro.ph..1063Z&db_key=PRE},
adsnote = {Provided by the Smithsonian/NASA Astrophysics Data System}
}

其中有eprint项, 但是在所用的aa.bst中没有, 结果显示为 Zhang ..., ArXiv Astrophysics e-prints, ..., 而没有arXiv:astro-ph/0601063, 结果参考文献的这个条目根本不能确定是哪一篇文献.

解决办法就是在aa.bst中最前面声明journal, year...的地方加上eprint, 然后如上加上红字部分, 意思是如果eprint项是空的, 那么按照正常的显示期刊, 卷号, 页码, 如果不空, 则不显示这些, 而只输出eprint中的内容.

相应的参考文献有btxhack(设计bst文件), btxdoc(针对bib文献, 是bibtex的用法). 在tex的发行中都包含了.

17. 要生成一个自己想要的bst样式文件, 最好的办法是用custom-bib, 找到这个tgz的包, 解压, 里边有详细的说明, 照着做就是了. 简单说就是latex 编译文件, 按提示选则, 最终生成bst文件.

原文地址 http://blog.ecoman.asia/user1/51/archives/2007/937.html

7 Apr 2010

删除/卸载 windows search(Windows Desktop Search)



如果是4.0版,请按照如下的方法卸载:

1、Start by running up Add & Remove Programs from the control panel and look for Windows Desktop Search in the list. Unlike with version 3, Windows Search v4 should be there.
4.0版是可以在“添加和删除程序”里面找到卸载项的。

2、If not, open a cmd window (click on Start, then “Run..” and type cmd in the Run dialogue that then appears). Then copy and paste the following line into the cmd window:
但如果“添加和删除程序”找不到卸载项,请点击 开始--运行,输入cmd,然后自制如下的内容到cmd窗口内执行。

%systemroot%\$NtUninstallKB940157$\spuninst\spuninst.exe

3、If that also fails and you get a “The system cannot find the path specified.” error, then I have zipped up a copy that you can download from here. To work out where to extract it to, type:
如果还是失败,请下载此文件 ,然后解压到C:\WINDOWS\目录下(注意解压出来的目录名是 $NtUninstallKB940157$ ),然后再重复第2步。(或者找到目录C:\WINDOWS\$NtUninstallKB940157$\spuninst,双击运行文件 spuninst.exe)

echo %systemroot%

into your cmd window and note the location it points to (it is likely to be C:\Windows, but may not be if you upgraded to XP for Windows 2000 for example). Open the zip file, and extract the $NtUninstallKB940157$ to this location. Now repeat step 2.

5 Apr 2010

word中怎样在方框里打钩



Word 2003,2007类似.

1.完美型

制作方法:
1、右击工具栏-勾选“控件工具栏”,将打开“控件工具栏”;
2、在控件工具栏中找到“复选框”控件;
3、单击这个按钮之后,会在当前光标位置自动插入一个“复选框”按钮和“CheckBox1”字符,此时“控件工具栏”左上角的“设计模式”按钮(就是那个有三角板、尺子和铅笔的按钮)为按下状态,表明此时处于“设计模式”;
4、在“CheckBox1”复选框上右击:“复选框 对象”-“编辑”,把 “CheckBox1”文字改成需要的文字(也可以右击这个复选框,在菜单中选择“属性”,然后在属性对话框中设置更多内容);
5、点击“控件工具栏”里左上角那个“设计模式”按钮,返回到正常的文字编辑状态,此时你可以在那个框中点击鼠标来打勾或者取消打勾。

(此方法参考pconline bbs ID:liuyuping)

2.简约型

选择菜单中"插入"——“符号”,在窗口的字体中选择“Wingdings”或“Wingdings2”(Wingdings字体是一种将字母与图形相关联的字体),然后拖动滚动条找到相应的符号(空白框以及带钩的框都有)。

(此方案参考pconline bbs ID:zkzkzkzkzk)

3.普通型

“插入”--“特殊符号”--“数学序号”--选择“√”,然后在“格式”菜单中,找到“中文版式”,选择“带圈字符”即可。

==================
文字打钩办法

首先直接按下“Ctrl+F9”快捷键,产生一个空域符号(一对大括号)。将鼠标定位于大括号内,然后输入如下代码“EQ \o(A,√)”,注意括号中的“,”是英文标点,不要双引号。用鼠标分别选中䄔和√对它们的大小、位置、字符间距等分别进行设置(和一般文字相同,比如选中√,格式-字体-字符间距-位置中提升),使这两个字符的相对大小、相对位置合适,完成后用鼠标全部选择,按下“Shift+F9”快捷键。注意不要双引号。
文字也是一样的,把A换成文字就可以了,这种方法是实现两个字符重叠。