星期五, 二月 27, 2009

VIM学习笔记 滚动屏幕

滚动屏幕

命令CTRL-U可以向上翻滚半屏,但是可以通过设置scroll选项来控制这个命令翻滚的行数。例如命令:set scroll=10可以使得Vim一次翻滚10行。也可以通过改变CTRL-U命令的参数来改变翻滚的行数。例如命令2CTRL-U可以使得Vim一次向上翻滚两行。

当光标到达窗口上端或下端时,窗口要发生滚动。我们可以通过设置scrolljump选项来控制这个翻滚行数的大小,默认情况下为1。例如命令:set scrolljump=5将翻滚量设为5。与其相类似的就是sidescroll选项,所不同是后者控制水平的翻滚。

通常情况下,窗口翻滚是在光标到达窗口顶部或底部时才发生的。我们可以通过scrolloff选项来控制光标与顶部或是底部有多少距离时发生。例如命令:set scrolloff=3将值设为3,当光标与顶部距离为三行时发生翻滚,且翻滚后光标与底部相距三行。

放置行

有时我们希望将指定的行放在屏幕顶端。先将光标放在指定的行上,然后输入z<Enter>,这一行就会出现在屏幕的顶端了。我们还可以利用参数将指定的行置于屏幕顶端。例如命令8z<Enter>就是将第八行置于屏幕顶端。这个命令将指定的行置于顶端,并将光标移动到本行第一个非空白字符处。如果要将指定行置于顶端,并将光标保持在一行的当前位置不变,可以使用zt命令。

如果要将指定的行放在屏幕底部,可以使用命令z-或是zb。所不同的是,前者将光标放在这一行中第一个没有空白符的字符处,而后者是保持光标的位置不变。

命令zz或是z.可以将指定的行放在屏幕的中部。这两个命令的不同就是,前者保持光标的位置不变,而后者是将光标置于第一个非空白的字符处。

Screen_HML

命令小结
CTRL-E向下动滚一行
CTRL-D向下翻滚半屏
CTRL-F向下滚动一屏
PageDown
CTRL-U向上翻滚半屏
CTRL-B向上滚动一屏
PageUp
H移动到屏幕顶部
M移动到屏幕中间
L移动到屏幕底部
zz<Enter>将当前行置为屏幕顶部
z.将当前行置为屏幕中间
z-将当前行置为屏幕底部

Ver: 1.1<上一篇 | 目录 下一篇>

星期四, 二月 26, 2009

VIM学习笔记 快速移动

移动的历史记录

Vim可以记录你曾经到过的地方,并且可以使你回到前一次到过的地方。例如在编辑文件时执行了下面的命令,从而到过不同的行:1G到第一行;10G到第十行;20G到第二十行。现在执行:jumps命令,就会看到一个曾到过的行的列表。使用命令CTRL-O跳转到移动记录列表中上一个位置。而命令CTRL-I跳转到移动记录列表中下一个位置。你不但可以在当前文件内跳转,甚至还可以移动到曾经涉足过的其它文件。

jumps

显示位置信息

命令CTRL-G可在屏幕的下端显示当前所在位置的信息。我们还可以在CTRL-G命令加上一个数字参数,这个数字越大得到的信息就越详细。命令1CTRL-G会显示文件的全路径。命令2CTRL-G会同时显示缓冲区的数字标号。

info_CtrlG

命令gCTRL-G可显示出当前文件中的字符数的信息。主要显示出当前行数(Line)、列数(Col)、字数(Word)、字符数(Char)和字节数(Byte)等信息。

info_gCtrlG

命令:set ruler可以打开标尺选项(ruler option)。将在屏幕右下角,显示当前所在的行和列,以及相对于整个文件所处的位置。

set_ruler

命令小结
^移动到当前行的第一个非空字符处
g^
_
<Home>移动到当前行的第一个字符处
g<Home>
0
g0
g_移动到当前行的最后一个非空字符处
<End>移动到当前行的最后一个字符处
g<End>
$
g$
gm移动到当前的中间处
count|移动到count列
counth向左移动count个字符
countl向右移动count个字符
countgo移动到第count个字符处
-移动到上一行的第一个非空字符处
+移动到下一行的第一个非空字符处
)向前移动一个句子
(向后移动一个句子
}向前移动一个段落
{向后移动一个段落
G移动到文件末尾
gg移动到文件开头
`.移动到上次编辑处

Ver: 1.1<上一篇 | 目录 下一篇>

星期三, 二月 25, 2009

VIM学习笔记 在词间移动(Word Movement)

Vim有单词(word)和字串(WORD)两种概念。word是指由iskeyword选项定义的字符串;而WORD则是指用空白符分隔的字符串。可以使用:help word:help WORD命令,查看更多帮助信息。

在word间移动

[count]b  向后移动count个words
[count]e  向前移动count个words,并且将光标置于word的末尾.
[count]ge  向后移动count个words,并且将光标置于WORD的末尾.
[count]w  向前移动count个words.

按照通常的定义,单词是一系列字母的组合。然而在C程序中,则认为字母、数字和下划线来组成一个单词,比如size56就会被认为是一个单词。但是在LISP程序中,可以在变量名中使用-,这时会认为total-size是一个单词,而在C程序中这却会被认为是两个单词。那么如何来解决这些定义的差异呢?Vim的解决方案是,使用以下选项来定义哪些是一个单词的,而哪些又不是。

:set iskeyword=specification

查看当前选项,可以使用下面的命令:

:set iskeyword?

命令会返回一组用逗号分隔的值(以下是在Windows下的默认值):

iskeyword=@,48-57,_,192_255

如果我们想要单词中的字母是专一的元音,可以使用以下命令:

:set iskeyword=a,e,i,o,u

我们还可以使用横线来指定字母的范围。如果要指定所有的小写字母,可以用下面的命令:

:set iskeyword=a-z

对于那些不能直接指定的字符,可以使用十进制的数字来表示。如果我们要指定小写字母和下划线为一个单词,可以使用下面的命令:

:set iskeyword=a-z,45

排除某一个字符,可以在这个字符前加上一个前缀^。例如我们可以定义一个单词由除了q以外的小写字符组成:

:set iskeyword=@,^q

iskeyword(命令iskeyword可以简记为isk)选项使用以下特殊字符:

a  字符a
a-z  所有由a到z的字符
@  由函数isalpha()所定义的所有字符
@-@  字符@
^x  除了x以外的字符
^a-c  除了a到c以外的字符

可以使用:help iskeyword命令,查看更多帮助信息。

在WORD间移动

[count]B  向后移动count个WORDS
[count]E  向前移动count个WORDS,并且将光标置于WORD的末尾.
[count]gE  向后移动count个WORDS,并且将光标置于WORD的末尾.
[count]W  向前移动count个WORDS.

可以使用:help word-motions命令,查看在词间移动的更多帮助信息。

Movement_wordWORD

命令小结
w向前移动一个word
e
b向后移动一个word
set iskeyword定义word选项
W向前移动一个WORD
E
B向后移动一个WORD

Ver: 1.0<上一篇 | 目录 下一篇>

VIM学习笔记 复制和粘贴

在Vim中,我们使用寄存器(register)概念进行多次的剪切和粘贴操作。通常编辑器中只有一个剪切板可供使用,而在Vim中最多时可以使用26个剪切板,这样就会大大提高工作的效率。关于寄存器的详细说明请参阅相关章节

删除文本的保存

当我们使用dx删除文本时,被删除掉的文本并没有被Vim所丢弃,而是被保存在寄存器之中。我们可以使用p命令来粘贴刚刚所删掉的内容。

下面来看看他是如何工作的。首先随意输入几行文本,然后移动到其中的一行,用dd命令来删掉一行。接着将光标移到任意位置,使用p命令,就会在当前光标的下一行粘贴被删除掉的内容。使用x命令删除的东西也可以粘贴回来。所不同的是在当前光标处之后粘贴。有了这样的命令,我们就可以轻松找回刚刚误删除的内容了。

复制(yank)

在Vim中使用y命令(yank)进行复制操作。yw命令可以复制一个单词。yy命令可以复制一行。我们也可以使用Y命令来复制一行,或者使用数字做前缀来指定复制多行。使用y$命令,则可以复制从当前光标到本行结尾的所有字符。

如果我们在某一行用ma做了标记(mark),那么就可以使用y'a命令来复制这一行了。关于标记的详细说明请参阅相关章节

粘贴

在完成复制之后,即可以使用p命令进行粘贴。p命令可以在一个文件中多次使用,每次都可以将刚删除或复制的内容重复粘贴在所希望的地方。当然这个命令也可以使用数字做前缀,明确的指出所要执行的次数。

小写的p命令是在当前行的下一行进行粘贴,,并将光标移到新插入行的开头处。

p

大写的P命令则是在当前的上一行进行插入,并将光标移到新插入行的开头处。

P_Capital

gp命令是在当前行的下一行进行粘贴,并将光标移动到新插入行的下一行的开头处。

gp

gP命令是在当前的上一行进行粘贴,插入后光标移动新插入行的下一行的开头处。

gP_Capital

命令小结
p在当前光标后粘贴
P在当前光标前粘贴
yy复制一行
Y

Ver: 1.0<上一篇 | 目录 下一篇>

星期一, 二月 23, 2009

VIM学习笔记 移动 (Movement)

在行内移动

我们可以用w命令向前移动一个单词,用b命令向后移动一个单词。我们也可以用数字做前缀组成新的命令,来快速的移动。例如4w就是向前移动4个单词,而5b则是向后移动5个单词。命令e也是向前移到一个单词,但是将光标定位在单词的结尾处;命令ge则是向后移到一个单词并到达前一个单词的结尾处。

利用$命令可以使光标移到一行的结尾处;而g_命令则会而将光标移到一行的最后一个非空字符处。

利用0命令可以使光标移到一行的开始处。而^命令则会忽略开头的空格,而将光标移到一行的第一个字符处。

Movement_Inline

在行间移动

进入命令状态,直接输入行号,按下回车键就可以移动到指定的行。

使用G命令,可以移动到指定的行。例如3G可以使我们快速的移到第3行。而1G则可以使我们移到文章的最顶端,而G则是定位到文章的最后一行。

使用-命令,可以移动到上一行的第一个非空字符处;而+命令,则可以移动到下一行的第一个非空字符处。

使用)命令,可以向前移动一个句子;而(命令,则可以向后移动一个句子。

使用}命令,可以向前移动一个段落;而{命令,则向后移动一个段落。

将以上移动命令与数字相结合,可以进一步加快移动的速度。

Movement_Gotoline

除了在行间移动,我们还可以使用ctrl+Uctrl+D命令进行向上和向下翻页,以快速移动到文章的不同部分。我们将在滚动屏幕章节中做详细介绍。

显示位置信息

那么又如何知道现在第几行呢?我们可以使用:set number命令使vi显示行号;而取消行号的命令为:set nonumber

即使没有显示行号,也可以使用CTRL-G命令在屏幕的下端显示当前所在位置的信息。我们还可以在CTRL-G命令加上一个数字参数,这个数字越大得到的信息就越详细。命令1CTRL-G会显示文件的全路径。命令2CTRL-G会同时显示缓冲区的数字标号。

info_CtrlG

命令gCTRL-G可显示出当前文件中的字符数的信息。主要显示出当前行数(Line)、列数(Col)、字数(Word)、字符数(Char)和字节数(Byte)等信息。

info_gCtrlG

命令:set ruler可以打开标尺选项(ruler option)。将在屏幕右下角,显示当前所在的行和列,以及相对于整个文件所处的位置。

set_ruler

移动的历史记录

Vim可以记录你曾经到过的地方,并且可以使你回到前一次到过的地方。例如在编辑文件时执行了下面的命令,从而到过不同的行:1G到第一行;10G到第十行;20G到第二十行。现在执行:jumps命令,就会看到一个曾到过的行的列表。使用命令CTRL-O跳转到移动记录列表中上一个位置。而命令CTRL-I跳转到移动记录列表中下一个位置。你不但可以在当前文件内跳转,甚至还可以移动到曾经涉足过的其它文件。

jumps

命令小结
^移动到当前行的第一个非空字符处
g^
_
<Home>移动到当前行的第一个字符处
g<Home>
0
g0
g_移动到当前行的最后一个非空字符处
<End>移动到当前行的最后一个字符处
g<End>
$
g$
gm移动到当前行的中间处
w向前移动一个单词
b向后移动一个单词
G移动到指定行
:set number显示行号
:set nonumber不显示行号
count|移动到count列
counth向左移动count个字符
countl向右移动count个字符
countgo移动到第count个字符处
-移动到上一行的第一个非空字符处
+移动到下一行的第一个非空字符处
)向前移动一个句子
(向后移动一个句子
}向前移动一个段落
{向后移动一个段落
G移动到文件末尾
gg移动到文件开头
`.移动到上次编辑处

Ver: 1.1<上一篇 | 目录 下一篇>

星期五, 二月 20, 2009

VIM学习笔记 基本编辑命令

启动

可以在终端窗口中,输入命令vim,直接在终端窗口打开Vim程序。或者在菜单中找到gvim,点击打开vim的图形界面。

gvim_8.0.2

编辑

在启动Vim以后,将默认进入常规模式。这时可以输入i(insert)命令进入插入模式进行文本输入。在插入模式下,可以使用Backspace键或Delete键来删除一个字符。用方向键来控制光标。也就是说,你可以毫无障碍地将vim当作普通的文本编辑器来使用。当然,这完全没有发挥出vim的强大威力,也无法保证你能高效地完成文本编辑。

使用i命令,将在当前字符的左边新增文本。而使用I命令,则在当前行的开头新增文本。使用a命令,可以在当前光标所在的字符后面进入插入状态,而A命令,则是在一行的末尾进入插入状态。使用o命令,可以在当前行的下面新增一行并进入插入模式;而使用O命令,则可以在当前行的上一行新增一行并进入插入模式。

在插入模式下,点击Esc键可以返回到常规模式。

在常规模式下,我们强烈建议您用字母键(而非方向键)h(left),j(down),k(up),l(right)来移动光标。这样你的双手就不用离开字母录入区域,再去敲击遥远的方向键了。减少双手的移动距离,将大大提高你的编辑效率。

hjkl

灵活使用数字和命令组合,将进一步提高编辑的效率。例如3h命令,就可向左移动3个字符。同理,使用数字和其他的移动命令进行组合,将可以大大提高移的速度。

我们可以使用x命令,删除当前字符。也可以使用X命令,删除当前光标前的一个字符。将数字和命令组合则可以一次删除多个字符。例如3x命令,则可以删除3个字符。

使用dd命令,可以删除整个当前行。而D命令,则只删除当前光标到本行结尾的所有文字。

如果我们想要恢复先前的改动,那么可以使用u命令来撤销上一次的修改;而U命令则将撤销进入当前行以后对该行做的所有修改。当光标离开该行之后,就无法再用此命令恢复在该行的操作了。如果我们想要重做某些工作,那么可以使用CTRL+R命令。

获得帮助

在常规模式下,输入:help命令,可以查看vim的联机帮助。为得到更明确的帮助,我们可以指明所需要知道的内容。例如输入:help x命令来获得指定命令的详细帮助信息。如果想要退出帮助,则可以输入:q退出命令。

Vim命令中的前导冒号将使光标移动到屏幕底端最后一行的下面,随后键入的命令也随之显示在屏幕上,按回车键将执行此命令。如果需要取消一个冒号命令,则需要重复按ESC键或CTRL+H,直到光标返回到文档的最后一行。

退出

在完成文本编辑之后,可以使用:q命令退出vim。如果你有未保存的修改,那么就会在窗口底部显示错误信息。提示你使用:q!命令,放弃改动并强制退出。

E37

你可以使用:w命令,保存改动但并不退出vim。而使用:wq命令,则保存修改并退出程序。

命令小结
:q退出
:q!不保存退出
:w保存
:wq保存并退出
i进入插入模式
I在当前行开头添加
h
j
k
l
x删除当前光标上的字符
X删除当前光标前的字符
dd删除一行
D删除光标处到行尾的所有字符
u撤销上一次的编辑
U撤销所有的编辑
a在当前光标后进入插入状态
A在一行的末尾进入插入状态
o在文本的下面新增一行
O在文本的上面新增一行
:help在线帮助

Ver: 1.0<上一篇 | 目录 下一篇>

星期四, 二月 19, 2009

Crystal Report 的历史

1984年,
始创于加拿大温哥华

1992年,
Crystal Reports 作为世界上首个微软视窗下的报表工具问世。

1996年,
Seqgate Technology收购Crystal Services(Crystal Decisions的前身),并命名为 Seqgate Software.
Seagate Info(Crystal Enterprise的前身),行业内第一个基于 web 的企业报表平台发布。

2001年,
Seagate Software更名为Crystal Decisions。
SAP 签署捆绑 Crystal Reports 的 OEM 和分销商协议。
Crystal Enterprise发布。

2002年,
发布重大更新版本Crystal Report 9。
发布基于Unix平台的Crystal Enterprise。

2003年,
Business Objects 于 2003 年 12 月收购 Crystal Decisions 。
两大行业领导者的合二为一给商务智能用户带来了商务智能的第一个清晰标准 。

2004年,
BO发布Crystal Report 10和Crystal Enterprise 10 。

2005年,
BO于2005年1月31日发布Crystal Report XI。

2007年,
SAP于2007年10月8日,以48亿欧元(68亿美元)现金并购Business Objects,从而也将Crystal Report收入囊中。
发布Crystal Report 2008 (12)


星期二, 二月 17, 2009

解决Freemind菜单字体过小问题

在Windows中安装的Freemind,如果菜单或对话框字体过小或显示乱码。请更改Windows的外观设置:"控制面板"-"显示"-外观,在"项目"下拉框中选择"菜单",并设置更大的字体(建议是9号)和正确的字体(中文系统建议选用宋体)。

set_windows_font

为Freemind配置Java环境

安装并检查Java运行环境

FreeMind需要Java运行环境,请先检查是否安装了1.4或更高版本的JRE;如果没有安装,请下载JRE

如果你不能确认是否安装了相应版本的Java环境,请用以下方法进行检查: 选择“开始”菜单“运行”菜单项;在“打开”编辑框中输入“cmd”;在弹出的DOS命令环境中输入“java -version”。

发现并指定Java运行环境

启动Freemind时,如果出现错误信息“Error: Could not find Java 2 Runtime Environment.”,说明Freemin无法找到适当的Java运行环境。可能的原因有:

  • 没有安装JRE
  • JRE的版本低于1.4.0
  • 安装了多个JRE,系统指向的是低于1.4.0版本的JRE
  • 如果你的机器上安装了Oracle的数据库产品,那么Oracle也自动安装了Java运行环境。Oracle 8, 8i及更早版本安装的是JRE 1.3.1,并且修改Windows设置使其使用该版本的Java运行环境。很明显,这将引起Freemind无法找到合适的Java运行环境(即使你安装了更高版本的JRE)。

可以通过修改系统变量,使Windows使用适当的Java运行环境。在“控制面板”中选择“系统”图标;在调出的“系统属性”窗口中选择“高级”页并点击“环境变量”按钮;在“系统变量”列表下点击“新建”按钮增加名为“java_home”的变量,并且将值设为JRE所在的目录;再选择名为“Path”的系统变量,点击“编辑”按钮在值中加入“%java_home%”;设置完成,现在可以正常启动Freemind。

set_sys_var

星期日, 二月 15, 2009

听爱因斯坦说

众所周知,爱因斯坦是伟大的科学家,还是个风流的多情人;被人忽略的,他还是有思想的哲学家:

国家是为人而设立的,而人不是为国家而生存。

我的政治理想是民主。让每一个人都作为个人而受到尊重,而不让任何人成为崇拜的偶像。

没有独立思考和独立判断的有创造性的个人,社会的发展是不可想象的。

The important thing is not to stop questioning.

The secret of creativity is knowing how to hide your sources.

星期四, 二月 12, 2009

CREATION & DESTRUCTION

Every act of creation is first of all an act of destruction.

每一次创造都是始于破坏。

--毕加索

星期一, 二月 09, 2009

Hyperion Essbase的主要优势

做为多维数据库(Multi-dimensional Database)的Essbase相比关系型数据(Relational Database)具有以下诸多优势:

Hyperion Essbase满足企业对不同业务领域和业务级别(多维度的旋转、切片和切块)的分析处理要求。通过深入理解各种属性,挖掘统计信息和数据,企业用户了解客户关系、产品或服务,从而获取更多细分市场的信息。根据这些信息,企业能够更好地理解哪个细分市场对哪种沟通渠道做出了最好的反映,根据各种推广策略预测购买行为。
Outline

与现实世界一致的多维视角和层次结构,便于用户理解和分析业务。
Cube

根据维度层次,进行数据下钻(drill-down)和上卷(roll-up),可以获得不同级别的视角。
Dril

由于Hyperion Essbase根据Outline预先计算和存储各个层次的汇总数据,所以能够提供高效的查询性能,大大提高响应速度。

多维存储结构和灵活的计算脚本,提供针对巨量数据的强大计算能力

通过编写Calculation Script和Business Rules,可以方便地实现多个实体间的内部抵消和合并。

多用户写回功能,可以提供预算编制和What-if分析功能。

可以同基于网络的简单易用的数据分析工具相集成,比如Web Analysis,Interactive Reporting, Production Reporting, Financial Reporting等等。
Dashboard

利用用户熟悉的电子办公软件(Office)进行数据分析。
SpreadSheet_AddIn

Hyperion Essbase伴随企业的成长而扩展企业绩效管理解决方案。其较低的会话负荷、并行查询和分区特性能够最优化内存、CPU 和I/O 资源的使用,并且通过增加每一个服务器同时服务的用户数来降低大规模用户群使用的成本。

对各类硬件(AMD/Intel, IBM/Sun)和软件(Unix/Linux/Win, 32/64bit)环境的广泛支持。

可以从不同数据源获取数据,比如业务系统(如ERP、CRM),关系型数据库(Oracle、SQL Server)和文件(Excel、Text),并进行清洗处理上载至Essbase。

基于组或角色的安全过滤器对授权进行灵活的维护。

大量内置的统计分析功能,比如:Consolidation, Allocation, Time Balance, Expense, Budget, YTD, Variance等。
Functions

与Hyperion和Oracle的其它商务智能产品(如Hyperion Planning, Hyperion Strategic Finance, Hyperion Financial Management等)紧密结合,逐步构建企业级的EPM架构。

TechnoratiTags: , , , ,

星期六, 二月 07, 2009

人们能管好自己

不管你抽不抽烟,都难逃一死!夜总会本来就不是什么健康场所,人们到那里寻欢作乐或者借酒浇愁,如果我五在那里停止供应酒精,岂不是能挽救更多生命?人们能管好自己,不需要你们瞎操心,你要去无烟餐馆,有啊,你要去无烟夜总会,也有啊。那为什么所有餐馆和夜总会都得禁烟?如果你不能规定吸烟是违法的,你的禁烟令就没有道理。

––戴维·霍克尼(David Hockney)

星期五, 二月 06, 2009

用CSS美化你的引用

在撰写文档时,经常会引用其它出处的文字,在网页中应该明显的标识出这些引用。一方面是为了方便用户的阅读;另一方面也是出于对原文作者的尊重!默认情况下,浏览器只是将(使用blockquote标签)引用的部分,左右两侧各留出36象素的空白,这显然不够醒目和美观。对于如何清晰美观的展现引用部分,我做了以下尝试:

1. 开头用引号标识的引用样式。

开头用引号标识的引用样式

请查看实例

要实现以上效果,只需要一个引号图片和一小段CSS代码。这是最简单的解决方式,效果简洁明了,我在自己的Blog上就使用了这种方式。(这是从PJ Hyett的Blog上学到的)

1 blockquote {
2   background: url('blockquote.gif') no-repeat 0 2px;
3   font-size: 13px;
4   line-height: 18px;
5   color: #666;
6   padding-left: 23px;
7   margin: 0 40px 15px 0px;
8 }

2. 开头和结尾都用引号标识的引用样式。

开头和结尾都用引号标识的引用样式

请查看实例

要实现以上效果,需要两个引号图片和一小段CSS代码。这是稍微麻烦的解决方式,效果也最接近用户的习惯。(这是从Digital Web Magazine - Jeremy Keith上学到的)

 1 blockquote.pullquote {
 2   color: #666;
 3   background: #dcdcdc;
 4   padding: 0;
 5   width: 250px;
 6 }
 7
 8 blockquote.pullquote p.quote_con {
 9   margin: 0;
10   padding: 0 20px;
11 }
12
13 blockquote.pullquote p.quote_top {
14   margin: 0;
15   padding: 0;
16   background: #dcdcdc url('left-quote.png') no-repeat scroll left top;
17 }
18
19 blockquote.pullquote p.quote_bot {
20   margin: 0;
21   padding: 0;
22   background: #dcdcdc url('right-quote.png') no-repeat scroll right bottom;
23 }

以上的CSS代码中,创建了三种段落样式。"p.quote_con"用来显示引用的内容;"p.quote_top"用来显示左上角的引号;"quote_bot"用来显示右下角的引号。

1 <blockquote class="pullquote">
2 <p class="quote_top">&nbsp;</p>
3 <p class="quote_con">引用的具体内容</p>
4 <p class="quote_bot">&nbsp;</p>
5 </blockquote>

以上的XHTML代码中,利用三个段落实现了开头和结尾都用引号图片标识的引用样式。

Technorati Tags: , , ,

星期二, 二月 03, 2009

Vision

Vision is the art of seeing what is invisible to others.

Jonathan Swift, 1667-1745