「一家之谈」文档类解决方案(包括演示文稿)

纯属一家之谈。 应该属于办公类,就发到这个板了。 而且我也没有使用过里面的所有东西。 所以判断未必准确。 我也没实力列举出所有软件包。只列举了一些我觉得具有典型性值得使用的。 总的来说参考价值不大。 不局限于 Linux,但是好的东西要配合具有先进包管理思想的操作系统来使用才能发挥最大效力:-)

内容基本以前都讲过,总结一下而已。

解决单个文稿的工具

Libreoffice / openoffice writer - 使用价值一般
LaTeX - 科学类文稿、书籍必备。社科类也有用武之地。IDE 推荐 Kile 和 TeXMaker。作者是 KDE 用户,先创建了 Kile,后来又开发了跨平台的 TeXMaker。懒得学的可以用 LyX,但非长久之计。
DocBook - XML 语言,太复杂,写起来效率低,不如用轻亮标记再转换成 DocBook
轻量标记 - 我很不喜欢 markdown,功能太弱,不过 pandoc 的 markdown 稍微好一点。 最喜欢 asciidoc,优雅强大,而且可以利用 docbook 工具链。 Asciidoc 缺点:缺乏第三方工具链、LaTeX 支持表现平平。 其他方面,尤其是复杂表格做起来非常爽。 现在我主要用 ReST,是因为看上了 Sphinx。
轻量标记工具链 - pandoc,极其强大的轻量标记工具链,可以转换成 N 多格式。 可惜不能输入 asciidoc。 openSUSE 官方源没有,比较可惜。

类似 wiki 的个人文档管理解决方案(适合做笔记等使用)

基于编辑器的:
vimwiki - Debian 的包好像有问题,没怎么用过,看起来觉得不错,结合 vim,编辑效率肯定很高
orgmode - 强大,不过我不习惯用 emacs。我感觉可能更适合出版性文稿以及日程管理。 不一定最适合资料管理。

传统的 wiki 程序:
太多了。有了 nginx+php+mysql,很多都可以安装的。
但是多少显得比较笨重。
mediawiki - 强大性不可否认,但是个人使用显得笨重
所以个人用还是推荐 flat 的:
dokuwiki、pmwiki,用得比较多,尤其是 dokuwiki
但是总体来说,我感觉此类程序比较落伍

基于 git 的:
gollum - 这个用得很多,支持的语言还是比较多的,支持 asciidoc 但是支持不够完美。 github 的 wiki 就是这个程序。 但是我不愿意安装太多 ruby 程序
gitit - 这个很强大,完全基于 git 等 DVCS 不说,还支持 N 多语言。 是基于 pandoc 的,所以支持的语言很多。 还能导出成 HTML 幻灯片等多种格式(看 pandoc 支持什么了)。 作者是伯克利的一个哲学教授。 不过他在 pandoc 花的精力比较多,这个更新慢一点点。 有时候如果你用 Haskell 的 Cabal 来安装两个版本不容易对齐。 最好是系统软件源里有。 我要研究一下怎么打 Haskell 包再看看能不能打包。 这个当作 web 软件用的时候有个服务器要运行。 但是比 mediawiki 什么的轻量多了就一个 happstack 自带的 server 而已。 平常编写的话直接写源代码然后用 git/hg 提交即可。 可以用 bitbucket 的免费私有仓库来同步。
ikiwiki - 基于 Perl 的 wiki 编译器。这个可以用 git 自己管理的,我感觉还可以。
综合来看我感觉 gitit 最强。

桌面的:
zim - 看 @PaleFire 大神的介绍: [[ 分享 ]Zim:打造你的本地 wiki) 。 我感觉优点很明显:支持 LaTeX,有图形界面,学习成本低,学习曲线缓。 缺点也非常明显:这货没有 vi 模式,不能用 vi 键位来输入,效率就低了。 插入 LaTeX 的时候需要用鼠标去点击这个插件,又降低效率了。

软件文档类工具(适合极其系统性的整理文稿、写书等)

(不包括 autodoc、haddock 这种只能自动生成某一种语言的文档的工具,所列的都是可以写在线书籍的)

LaTeX、DocBook - 不再赘述
Sphinx - openSUSE 有。 python-Sphinx,python3-Sphinx,看你喜欢哪个。 不要装成搜索用的 sphinx 了,有好几个软件都叫 sphinx。 功能强、有好几个默认模板都非常不错。 使用 ReST,有 pngmath 和 mathjax 两种数学实现方式。 有 graphviz 插件(酷!)。 写 python 文档的话非常好用。 写别的书也非常好。 另外有 Read The Docs 这个服务可以用。 经过我沟通现在 RTFD 已经可以支持生成中文 PDF 了(日文和韩文尚未支持,因为我也不知道有什么字体可用,这个网站的人对 CJK 一无所知,目前只有简体繁体中文的字体)
Scribble - 在 racket 里面。 racket 的文档是这个做的。 这个东西是基于 scheme 方言 Racket 的。 强大。 Sphinx 是用 ReST,都是已经设计好的语言,你按需使用。 Scribble 是一个 racket 库,可以直接写 racket 代码再用 racket 编译的。 所以理论上可以很强大。 但是 Sphinx 用的人多得多,有很多内置的插件已经非常逆天了。 比如 Sphinx 有 LaTeX 公式支持、graphviz 支持等等,Scribble 的话。。 你自己写吧。 LISP 确实很强,你都可以自己写。
Coqdoc - 我没用过

综合来看,我觉得 Sphinx 最好,因为有 RTFD 这个服务。也可以生成 LaTeX(不过比不过手写的 LaTeX 清爽)

将文稿生成为个人网站的工具(适合建设个人 blog、个人网站)

jekyll / octopress - 我不喜欢,支持的语言主要是 markdown,不够强大,用起来感觉有点奇怪。 尤其讨厌 rvm 这货。
pelican - 不错。ReST 方面,因为 Sphinx 有很多外挂插件,所以 pelican 里用 ReST 没有 Sphinx 里用爽。 也支持 markdown 和 asciidoc。 首页要用静态页面而不是 blog 页面的话需要 同时使用 saveas 和 url 两个, 不太爽。
nikola - 类似与 pelican。 好像也可以当静态 CMS 用
hakyll - 一个 Haskell 库。 强大无比。 基于 pandoc 和 highlighting-kate,并且提供了一些有用的 Haskell 函数。 需要自己写 Haskell 代码来转换源文件。 但是灵活性非常高。
ikiwiki - 不再赘述
Sphinx - 如果想创建非博客类站点或者希望淡化死板的博客形象、样式、特点的博客,Sphinx 非常合适。 可以参考 huangz.me 这个个人网站。
yst - 和 pandoc、highlighting-kate、gitit 同一个作者。 更新偏慢。 在 Haskell 界还是 Hakyll 发展得好。
dokuwiki - 有个 siteexport 工具,可以把自己电脑上的个人 wiki 给导出成静态网站。 不推荐,因为用 apache/nginx 麻烦。

综合,我个人推荐普通的 blog 类网站选择 pelican,非 blog 类或者淡化 blog 风格的 blog(强调系统性整理的)选择 Sphinx,最大化灵活度就选择 Hakyll。

3赞

Pandoc 已经支持了: Slidy, reveal.js, Slideous, S5, 以及 DZSlides。 S5 好像很不错。 SLidy 也不错。 都是网页上的。 可以把轻量标记转换为幻灯片。

Asciidoc 有一个 slidy backend,不错。

landslide - 基于 markdown 的。 缺乏特色。 但是 asciidoc 这个的话生成高桥流比较难。 我以前用 landslide 做高桥流。

pinpoint - 有自己的标记语言,可以用 vim 写。 不使用 HTML5 播放而使用 pinpoint 这个软件放映。是优势也是劣势。 2011 年之后没看见更新不知道是否还活着。 openSUSE 官方源有。

各种 xxx.js - github 上一大堆,大同小异。 不如用 asciidoc、pandoc、landslide 这样的东西。 这一群 js 也没多大新意。

LaTeX/Beamer - 这个不用说了,有了这个我就不再使用 landslide 了。 Pandoc 不但支持上面几个 HTML5 的,还支持 Beamer。

Beamer 和 ConTeX 都算是 PDF 演示派系了。 PDF 演示派系有播放神器 Impressive。 Impressive 几年没更新了,今年出了个更新,据说还有大更新在后面。 作者网站上说 openSUSE 有包,但是我没搜索到。 如果没有我研究一下看看能不能制作一个。 http://impressive.sourceforge.net 支持大纲试图、转场特效、高亮文本、聚焦要点等功能,且附带一大群快捷键。

矢量图派系的演示,请参考 Inkscape 插件 Jessyink (默认自带,一个图层是一张幻灯片) 以及 Sozi (强烈推荐,超越 Prezi,真正的非线性演示,回归投影机时代。请看 [Sozi:基于 Inkscape 和 SVG/JS 的幻灯片制作工具) , 在我的私人车库里有。)。 用 Inkscape 演示,可结合 InkSyntax 和 Inkscape 的 LaTeX 公式功能或者第三方 LaTeX 插件。请参考我介绍 Sozi 的文章。

有了这些东西,什么 Impress、calligra stage 都很少用了。 更别说 powerpoint、keynote、prezi 这群私有软件了。 上面这些工具各有特色。 我建议 Sozi 作为真非线演示工具(Prezi 最多算伪非线)要掌握,其他的掌握一个,就可以完全取代掉传统的演示软件了。 如果做科研类的话 Beamer+Sozi 最合适不过了。 Beamer 虽强,总有适合 Sozi 的地方。

最后办公类还有个大头就是试算表,这个我感觉还是用 Libreoffice Cacl 吧,除非你会高档统计软件和语言。

其他工具其实大家都知道了。所以这楼以废话为主。

上面的工具,基本上除了一些我不太推荐的组成部分,比如 Libreoffice 和 mediawiki 等。 都有一个鲜明特征:文档代码化 + 自动化工具链操作。

Sozi 呢? SVG 也是一种代码啊!

所以说一个高效率的编辑器必不可少。 我其实是初级用户。vim 现在我一个插件都不用。 一般我就 kate+vi 模式 + 搜索插件 +konsolepart 了。 再加上 kate 的会话功能,效率已经比较高了。 进一步提高,肯定就是苦练 vim 了。

Emacs 也不用说。 vim/emacs 仍然是两大编辑神器。 新时代的编辑器有更多 GUI 时代的特色,但是都达不到老一代的高度,而且很多也是依赖 vi 模式来提高效率的。 新时代编辑器我选用 Kate,开源自由,且其灵活性很强。 比如 Kile、Kdevelop 就是直接调用 katepart 的。 感觉好像比 Gedit 强。

然后既然代码化了,就少不了一个版本控制工具了。 我看到很多人用个 word,还把一个 word 文档复制出很多分,这里保存一份那里保存一份,都是不同版本的,最后不同版本都乱套了。 所以说这就是不使用代码化解决方案的弊端了。 有了上面这些东西,通过 VCS 来管理文档自然水到渠成。 好处也很明显:创建分支、回溯历史版本,全部有一个软件可以自动给你操作的,比用 word 然后拷贝出 N 个不同版本的文档是强多了。 如果要私有的 repo,就用 bitbucket,有免费私有 repo。 然后 git/mercurial 都支持。 我两个都使用。 如果就用 Linux,要掌握一个,还是用 git 划算。 但是我用 bitbucket 的时候喜欢用 mercurial 一些。 如果要和 windows 交互作业,我感觉可能水银稍微好一点吧。 这方面我也不太清楚。

通过用版本控制工具和 bitbucket,可以实现:1)轻松分支;2)轻松回溯历史版本;3)轻松实现同步

网络硬盘也可以取代掉了。

用这些工具的特点就是:高效率、低成本。 学习曲线嘛,不是很低,但是我想对于大部分人来说,学习 Linux 的思想、学习这些 Linux 界常用的工具,都是划得来的。

** 写完这个帖子之后的一点小思考 **

最重要的还是思想方法。 我想到好像有个人 (palefire?) 在论坛里说用 Linux 让他学会了看文档,学会了有秩序。 这个就是学习了先进的思想方法。

我正在自学龚昇的微积分教材。 就感觉他水平很深厚。 对数学史了解不少,站在历史高度上,再运用了矛盾论思想方法,讲得简洁明了,让人觉得思路清晰。

龚昇曰,数学发展就是低级数学被高级数学取代。 比如说算数。 算数看起来很简单,但是如果要你用算数算一个鸡兔同笼,复杂性就很高了。 后来有了代数。 从算数到代数演化了很多年,对于一个只学会算数的人来说,代数是更难的。 但是学会了代数,鸡兔同笼就很简单了,一个方程组就解决了。 后来又发展出了高等代数。 再看几何,最普通的几何看起来很简单,高中课本讲解析几何,很多数学不太好的同学可能就觉得不容易,但是实际上会了解析几何,很多东西就很简单了。再会了微分几何,很多东西又进一步简单化了。

计算机这门技术的发展,和数学的发展我感觉还是有所区别的。比如最早先有命令行,实际上我个人想想,感觉命令行还是要高级一些的。这和计算机产生的历史条件等都分不开,而且计算机这个东西的发展是一门技术,而不是一门科学,也有根本性区别。具体的我不懂,不好说。不过我总是感觉一个人从开始用电脑(windows 或者 mac+ 初等软件),到最终高效率地使用电脑(linux+ 高等软件),和学习数学还是有一定相似之处的。 libreoffice 这样的东西,看起来简单,学起来容易。 你站在 libreoffice 上看 LaTeX,觉得很难。但是你要用 LibreOffice 也好,keynote 也好,打几个公式,对齐几个文本框,就够你忙一阵的了。站到 LaTeX 上面之后,你再看 LibreOffice,就好比你学会联立方程组求鸡兔同笼之后有人要然你用算数求鸡兔同笼一样。

这个规律就是你往往要先学习低级的,再学习高级的。 而学习高级的,就是一个忘记低级的过程。 和学习数学是一样的。 但是你不会用高级完全取代低级的。 比如说你学了微积分,难道就不算算数了,1+1=2 也忘记了? 学了高等代数,做一个简单问题,照样会采用初等的二元一次方程组。 低级中过度复杂的部分被取代了,也有一些低级的并没有违背高级化的趋势,被留了下来。所以在使用计算机的时候,也有那么一些比较适合于特定范围内最大化效率的。 比如说 LaTeX 很强大,是高等文档语言,在有的时候我会 LaTeX 仍然选择用 ReST 这个初等文档语言。因为就这个任务来说 ReST 够了而且更快。 如果你从图形的角度就更明显了,图像最后还不是二进制,如果你学了二进制直接编辑 jpg 的二进制,那不是很高级?无所不能。 但是你不会去使用,仍然会使用 GIMP 这样的工具。

(再看物理,实际上差别也不大。我谈到数学主要是拜龚大师所赐,但是是话说我感觉物理不如数学明显。 牛顿力学 -> 相对论。这个不如数学明显。代数、微积分把复杂问题简单化是很明显的。而一些高等物理的运用太高端了,我也不知道。)

但是从思想方法来说,这个高级取代低级的趋势是正常,也是正确的。 初学计算机,每个东西都很好用,都是几个按钮,学这个再学习那个。 到最后,就从办公这个角度来讲,一切都归结为: 代码化、自动化工具链、版本控制。 当然在最后,所有的所有又归结为计算理论。 但是在我们讨论的这个限度内,实际上学习这些东西的一个共性就是在这几个方面从初等像高等进化。 而这几个思想方法,和 Linux 中很多先进的思想方法,是不谋而合的。 Linux 中用包管理,把软件的概念拆掉,用包的概念,并且使用程序来自动拆解依赖关系。 对于习惯软件概念的人来说,是有点难的,但是从 windows 和 mac 用户谈论的软件,到在这里谈论包,谈论包管理,是一个从初等数学向微积分发展的过程,从本质上把系统的管理简单化了、系统化了、自动化了。 而包管理的思想(自动化处理依赖)、Linux 中有秩序地维护和使用系统的思想等等,又和这些办公中使用的工具中所言的 代码化 -> 自动工具链 -> 版本控制思想,是不谋而合的! 比如说你不用版本控制,复制 N 个 word 文档来保存版本,看起来入门简单形象,很快就乱了,就好比你在 windows 和 mac 里点击可执行文件装软件最后弄得一团糟。而用版本控制,就是运用了一个自动化工具链(zypper)有秩序地管理你的文档。

所以说归根结底,使用 Linux,学习到了高级的计算机使用思想方法,推动你学习了高级的计算机办公技术,并且取代掉了相当一部分的相对低级的技术。 而最终要的,就是要使用 Linux,用 Linux 你有了这些思想方法,后面的东西就好办了。 这就是作为桌面用户,我也要推荐别人使用 Linux 的原因。

PS:我曾经建议好几个正在学习物理等自然科学的非 Linux 用户趁还在本科及早学习 LaTeX,大部分都显得很不情愿,因为他们觉得学习 LaTeX 比较复杂,而现有的东西不用怎么学习就会了。

  • 再深入:龚昇曰:微积分是数学中的辩证法。(龚昇《微积分五讲》) 我没学过高代,不好妄下定论。但是我感觉他说得很对。微分和积分实际上是一个东西的两种形式。 龚昇反复强调微积分基本定理 - 微分形式与积分形式。这点和其他说拆分第一定理、第二定理很不相同。微分积分就是局部与整体这一对矛盾在量方面的体现。(龚昇《简明微积分》第一章)。就我个人而言学习微积分之前,算数学是从来没有考虑局部和整体的矛盾的,也没有考虑其他矛盾,就是是多少然后按照算数、代数、解析几何这一些来算。是静止的。微积分让数学动了起来。 我不知道为什么全世界大学都很强调微积分。我在美国学 CS,是不要求我学微积分的(所以我在满员情况下也没很积极地争取)。但是在数学系,微积分也是最重要的本科课啊。 可能是因为微积分运用最广泛吧。 这是最直接的回答,也是现实中最可能的回答,学工科、经济金融都要微积分,却不要近世代数。 但是本质的回答,是否就是“微积分是数学的辩证法”呢? 作为一个使用计算机在信息时代学习、工作的人,迈进 Linux 大门,感受“有秩序地使用自己的电脑”这一理念的时候,是否就像一个学数学的人学了微积分一样呢? 我感觉好像还真的有那么一点相似。 *

vimwiki 一直用(一度打算写一篇教程的)。而且非常简单。openSUSE 源里有包,很好用。写日志写 to do list 是他的一大优势,写日志非常方便,to do list (日程管理)还可以统计进度(只是没有发现把他显示在 html 的方法,好吧其实有一个但是需要修改 /usr 中的文件我就果断放弃了,怕到时候升级起来麻烦,看有没有修改个人配置文件的方法)。插入图片功能也马马虎虎,不太爽的是数学公式,看到有人说是可以插入数学公式的,但是那人并没有说要怎么弄,可以肯定的是必须借用其他软件。丑一点的方法就是直接插入图片。好在需求也不是很大。

vimwiki 还有一个妙用。我用 vimwiki 做一个个人代办清单,然后生成一个 html ,再用 kde 的一个显示网页切片的小部件显示在桌面上,感觉比一般的便条代办清单好看多了,还有链接。要是会折腾还可以做一个做一个漂亮一点的模板哦~

orgmode 这货确实很牛,同不习惯 emacs,个人原因,手指不够长。。。。orgmode 和 scheme 一度让我打算认真的学习一下 emacs,都说 lisp 程序员最终都会投靠 emacs,还好我只是一个爱好者不是程序员:)

和 orgmode 比起来 vimwiki 就是一个小工具,但是有时候小工具最好用:)

说到 emacs 突然想起以前读过的一篇 文章 ](http://blog.youxu.info/2011/10/14/notes-on-the-unix-haters-handbook/) 。文章顺带便的提到 emacs 是 UNIX 哲学和 MIT 哲学斗争的情况下产生的「怪兽」。说起也觉 emacs 用户都有那么一点精英主义,开玩笑的:)

还好我是 haskell 爱好者:-)

我感觉 haskell 比 LISP 强多了。。 肯定我们教授不同意。

这个挺有意思的。 我对哲学还是有一些兴趣的。

精英主义是个矛盾的词。 我坚决反对精英主义。 但是我自己身上也带有那么一点精英主义。 但是和那些一方面反对精英主义一方面自己往华尔街跳的人相比(说起都是唏嘘啊),我好多了。 我自己经常对这些杂七杂八的事情陷入长时间的思考,但是我始终有那么一种坚持以自己的方式存在的力量。

LaTeX 挺好的,不过不常用就忘记了

sent from my openSUSE using tapatalk pro

想要插入数学公式的话。 我感觉还是 Sphinx 最好。

vimwiki 我马上就装一个。 Debian 里我没装上去。 我刚才写这个文章的时候才想起来。

都一样啊。 微积分不常用,也忘记了啊。 很多不搞科学不搞数学的人,最后也就记得一点算数和一个二元一次方程组了。。。

但是在这个范畴里面,你站上去了,感受是不同的。

不过平时自己整理点资料,我选择 ReST+Sphinx,而不是 LaTeX

这个我从来不用电脑做。

我感觉 emacs 功能很强大,但是。。。 但是。。。 在单纯的编辑上,vim 做得更好。 至少我很喜欢切换两个模式,然后单键位操作。 你看 firefox 的 vimperator 多流行? firemacs 没几个人用的。 emacs 的快捷键以组合键为主,我还是喜欢单键位的思想。

恩。看我最后一楼的思考。 不过不管 vimwiki,还是 orgmode,都属于高级工具了。

已安装。 有几个顾虑:

1) 公式 (补充:我查了,好像可以用 MathJax: code.google.com/p/vimwiki/wiki/MathematicsWithMathJax, 不过我不是 MathJax 的粉丝。 MathJax 在网速慢的地方载入很耗时的。我还是喜欢用 pngmath 自动转换成图片,就是难看一点。)
2) 语法和其他常见轻量标记不同。

好处:
1)结合 vim
2)灵活性强 (不过 Sphinx 玩得转的话,也挺灵活的,不一定要弄成一本书一样)

目前我还是准备继续以 Sphinx 为主。

教程我也有很多想写。 但是现在这个社会很浮躁,估计不做个视频没几个人能读进去。 我现在弄了一个 RTFD 的 Sphinx,正在写一个 LaTeX 教程,边写边自己提高。 别的以后再考虑。 我今天刚弄清楚怎么在 openSUSE 里拍桌面视频录像。正在纠结中。 首要任务还是读书。

都是高手,不过对我这样的桌面用户,基本上是都接触不到的。

同桌面用户。桌面用户做文字工作用这些工具都非常方便。而且很好学:)

本来也不用电脑,但是考虑到这样用纸实在是太浪费了。。。。节约用纸也是 UNIX 哲学的一部分?

纸确实比较方便。看这篇 纸作为最佳效率工具的 9+1 个理由 ](http://www.wenfangjushe.com/2012/04/9plus1-reasons-paper-is-the-most-flexible-productivity-tool.html) 。

但是电脑也有电脑的优势,用 vimwiki 做待办清单容易统计,整理,保存。主页面做一个长期的,用链接链接到短期目标,非常清楚。

而且大部分任务都是打开电脑做的。做完了直接开 vim 勾掉和很方便。

我也是桌面用户啊。。

我感觉吧。关键还是用电脑效率不高。 我看书都尽量在用纸张笔记替代电子笔记。 但是整理我还是喜欢用电脑排版,美观啊美观啊,LaTeX 的优雅公式排版啊。。。。

赞同。

就算你不搞计算机专业,不搞科研,照样学起来花不了几个时间。

但是学会了,就大不相同了。

我给很多人推荐这些东西,大多收到负面效果。 我想因为我推荐的东西永远不是潮流中的东西吧。 大部分人把精力投放到潮流的数码产品当中了。

我是个实用主义,什么用到了才会去学,用不到就先放着。说实话,如果真要去学,那得学的东西实在太多了。
PS:这几天正在学 git 和 OBS , :sunglasses:

恩。 对于桌面用户,实用主义是完全可行的。