普通文本的“麻雀变凤凰
”之路(The Choices To Make Plain Text To Be Rich)
整个标题整得有些过于夸张了(这种行为好像是称作“标题党
”吧?!),
呵呵,实际上,仅仅是因为无意间翻了翻“搞头书
”
[1
]
,
发现个叫“BlueCloth
”的Gem库可以将普通文本标记转换成HTML格式,
从而牵连出自己脑海中的其它几种完成类似功能的工具选择,故此借机汇聚一下,
当然了,更希望是“抛砖引玉
”,各位同仁如果还有更多的选择,不妨尽情添附,以(之)享整个社区。
对于文档之类的编写工作来说,大家或许早就习惯了MS Word之类工具倡导的“所见即所得(WYSIWYG)
”编写方式,
属于这一类的工具很多,包括:
但是,所有这些并不能代表整个世界,当我们透过镜子的这一面看过去的时候,就会发现,
在镜子的另一面,“所见即所得
”并不像我们最初所想象的那样处处受欢迎,
因为在这里,“基于标记文本的文字编写方式
”才是统治镜子另一面的那个“人
”。 :-)
我们不妨将“基于标记文本的文字编写方式
”划分为两类,第一类不妨称其为“基于普通文本的标记文本
”,
第二类不妨称其为“基于XML格式的标记文本
”,下面我们分别对这两类标记文本方式进行细谈...
通常情况下,“基于普通文本的标记文本
”都是在普通文本中间“穿插
”一些具有特殊意义的标记文本,
然后通过某种能够识别这些预先定义的标记文本的工具,对这些普通文本进行处理或者说转换,最终输出成各种格式的文档,比如最常见的就是输出成HTML文件。
属于此种范畴的“人选
”,第一个当属“WIKI
”,大名鼎鼎的Wikipedia(http://en.wikipedia.org/wiki/Main_Page)想必大家都已经早有耳闻了。
WIKI形式的文档就是,编辑的时候以普通文本形式进行编辑,而显示的时候,则根据普通文本内容中嵌入的各种标记进行格式化输出成HTML进行显示。对WIKI的总体情况,笔者其实不是很熟悉,
好像各家WIKI都有各自都有的标记文本语法(Syntax),而笔者充其量也只是早些年前自己装过“MoinMoin Wiki(http://moinmoin.wikiwikiweb.de/)
”,自己把玩了一把而已。
WIKI的实现产品很多,基于各种编程语言的WIKI都会各自涌现一些优秀的产品,像MoinMoin Wiki就是使用Python语言开发的,
除此之外,还有使用Java语言开发的XWiki,使用Perl开发的最早的Wiki应用WikiWikiWeb等等。
你可以从http://en.wikipedia.org/wiki/Wiki_software获取更多使用其他语言开发的Wiki软件的相关信息。
还记得前阵子在图灵的论坛里,刘江老师发起一个倡导大家通过Wiki合作写书的想法,可见Wiki并非浪得虚名,仅是说说而已了。
笔者想当年因为经济条件没有考研,所以也就没有真正验证过,只是听说,只要是读过研究生写过论文的,
好像大多数都接触过LaTeX(http://www.latex-project.org/),它属于TeX的改进版,但同样属于基于普通标记文本的文字编写方式。
LaTeX好像对各种公式的表达支持很好,不过,对于中文的支持来说,好像要诉诸于CTeX之类的本地化版本,但这都是笔者道听途说,
如果您对这种基于TeX/LaTeX的编辑方式感兴趣,倒是应该自己验证一下。俺此行的目的,仅仅是为了罗列选择项而已。
这里有一个摘自LaTeX网站的实例,或许能够让我们有一个感性的认识。如果编写如下源文本:
\documentclass{article}
\title{Cartesian closed categories and the price of eggs}
\author{Jane Doe}
\date{September 1994}
\begin{document}
\maketitle
Hello world!
\end{document}
那么,通过LaTeX处理后,将输出类似如下形式的显示效果(下面的输出无法完全反映效果,可以参考LaTeX网站上的样子):
Cartesian closed categories and the price of eggs
Jane Doe
September 1994
Hello world!
前面说了,这篇文字是由BlueCloth(http://www.deveiate.org/projects/BlueCloth/)引出的,
这是一个基于Markdown(http://daringfireball.net/projects/markdown/)标记语法的Ruby Gem库,
使用它,我们可以在Ruby程序中将符合Markdown标记语法的普通文本转换成HTML格式的文本以供显示。
在Ruby世界里,有一个BlueCloth的同胞兄弟,叫做RedCloth,它也是一个Ruby的Gem库,同样用于将普通的标记文本转换成HTML格式的文本,
但是,RedCloth所遵循的标记语法与BlueCloth是不一样的,它遵循的是Textism(http://www.textism.com/tools/textile/)所规定的标记语法。
这个是自己兄弟阿九的开源项目,主要基于Javascript实现,采用自己的标记文本语法,同样采用的是基于普通标记文本格式。
A9Text可以让你在本机方便的进行文档编写,而不用去操心各种格式的编排之类的琐事,你可以从http://trydofor.iteye.com/获取更多A9Text的信息。
我想,许多思想都是相似的,在其他的计算机语言或者说技术社区中,应该也存在许多基于同一思想的软件或者说产品,
只是,俺不是超人,不可能去一一认识,列位如若晓得,不妨道明,也让俺开阔些眼界。
这部分其实只是想说说DocBook,因为笔者现在已经习惯了基于docbook的文档编写方式,谁让俺没能精通Word的使用那,呵呵。
最初决定使用docbook的时候,是记得好像OReilly内部是使用docbook作为内部格式的,后来才发现,当初没有充分考虑国情,
因为国内还是用Word进行排版的,好在使用Docbook的好处就是,我只需要关注内容就可以了,至于最终的输出格式,
可以视情况而定,我可以将同样一份docbook输出成单页的HTML,多页的HTML,PDF等格式,甚至于如果我们能够知道Word文档的内部结构,
也可以写一个转换程序,将同一份docbook文档直接转换成Word文档。
实际上,这篇文字就是使用docbook编写的,通过Velocity项目提供的Docbook Framework,只需要少许几步,
就可以在Eclipse中搭建一个完备的文档编写工程,如果不考虑交换的话,只是自己编写一些东西,离了word,其实也满逍遥的。
或许真的就跟Linkin Park乐队在一首歌的结尾所说的那样,“Difference Is Good
”,
即使是基于相同的理念或者说思想,但各个产品之间还是会存在些许差异,或者是标记语法的差异,或者是实现语音的差异,等等。
这就跟经常见到的语言之争,框架之争一样,或许都只是个人喜好决定的,也正是如此,才会让整个世界变得如此斑斓。
但话又说回来了,有时候,选择太多了也不好,或许会让大家选择的很累,这个时候,过多的差异反而成为了问题,
能够一统天下的方式,或许又会更受欢迎,谁又知道那?!
分享到:
相关推荐
这个“易语言源码普通数值文本转科学计数文本.7z”压缩包文件,正如其名,包含了易语言源代码,用于实现将普通数值文本转换成科学计数法表示的文本。 在计算机编程中,数值的表示方式有多种,其中普通数值和科学...
普通文本转C/C++源文件支持的格式
在自然语言处理领域,文本聚类是一种常见的无监督学习方法,用于将大量文本数据自动分成不同的类别,而无需预先知道类别的信息。KMeans算法是其中广泛应用的一种聚类算法,因其简单、高效而受到青睐。在Java环境中...
【TXT文本过滤器】是一款专为处理TXT文本文件设计的应用工具,其主要功能是帮助用户从文本文件中筛选并移除不希望出现的内容。在日常工作中,我们可能会遇到各种各样的TXT文本,其中可能包含广告信息、无用的注释、...
在本项目实战中,我们将深入探讨如何利用Python和KMeans算法进行文本聚类。文本聚类是无监督学习的一种应用,旨在将相似的文本分组到一起,无需预先指定类别。这个项目涵盖了从数据获取、预处理到模型构建的全过程,...
"16进制转文本工具"是专门设计用来将16进制形式的数据转换成人类可读的文本格式。这类工具对于程序员和系统管理员来说非常有用,因为他们经常需要查看或操作二进制文件的内容,而这些内容在16进制下更易于理解。例如...
总的来说,PDF文本转换器结合OCR技术,极大地提高了处理包含图像文字的PDF文档的效率,使得原本难以编辑的图像文字变得易于管理和利用。随着技术的不断进步,我们有理由期待未来的PDF文本转换器会提供更高效、更精准...
这个编辑器不仅提供了基本的文本编辑功能,还额外支持了如图片加载、上标和下标等高级特性,极大地扩展了文本编辑的可能性。 首先,让我们深入了解QWidget。QWidget是所有用户界面对象的基类,它是QT中构建图形用户...
在本文中,我们将深入探讨基于WPF的富文本编辑器,这是一个开源项目,其功能类似于Microsoft Word。这个编辑器提供了一系列强大的文本处理能力,适用于开发人员构建自定义的文本编辑应用。 **WPF(Windows ...
标题 "文本对比器 找出两个文本文件不同的地方" 指的是一个工具或方法,其目的是比较两个文本文件的内容差异。在IT领域,这样的工具非常常见,它们可以帮助用户识别两个文本文件之间的细微差别,这对于代码审查、...
在自然语言处理(NLP)领域,文本情感分析是一项关键任务,它涉及到识别和提取文本中的主观信息,尤其是情绪色彩。这个"python机器学习——文本情感分析(英文文本情感分析)"项目提供了一套完整的Python代码,用于...
"winform文本编辑器"指的是使用WinForm开发的文本编辑组件。这些组件允许用户在应用程序内创建、编辑和格式化文本,类似于Microsoft Word等常见文字处理软件。 在给定的压缩包文件中,包含了多个不同版本或实现的...
生产管理制度文本普通货运.doc
在探讨利用Python实现基于支持向量机(SVM)的文本分类之前,首先需要对文本分类问题有一个基本的理解。文本分类是指根据文本内容将其分入一个或多个类别中,例如将新闻分为体育、科技、娱乐等类别。在文本分类问题中...
能实现文本文件的新建、打开、保存、另存以及程序的退出。 实现对文本的基本编辑如:复制、剪切、粘贴和查找。 能实现对文本格式的简单设置如:设置字体颜色、设置编辑区背景颜色。 查看程序的帮助 不仅有菜单栏、...
当有两个或多个文本文件时,我们可能需要找出它们之间的不同之处。这种比较通常是对文件内容逐行进行的,以确定哪一行只存在于一个文件而不在另一个文件中。这被称为“唯一行”或“独有行”。 实现这个目标的方法有...
文本编辑器的核心功能之一是文本缓冲区管理。这涉及到如何高效地存储和操作大量文本数据。C++的动态内存管理和STL(Standard Template Library)容器,如std::string和std::vector,为实现这一点提供了便利。通过...
易语言源码易语言文本变图片源码.rar 易语言源码易语言文本变图片源码.rar 易语言源码易语言文本变图片源码.rar 易语言源码易语言文本变图片源码.rar 易语言源码易语言文本变图片源码.rar 易语言源码易语言文本...
总结而言,LargeTextFileViewer5.2是一款专为处理超大文本文件设计的高效阅读器,其支持ANSI和Unicode编码,具有快速的边读边加载机制,使得处理大文件变得轻松。虽然不支持所有Unicode格式,但对于大多数日常文本...