orgmode 导出 html 的换行处理

我之前还奇怪,在 org2blog 中设置保留换行符时,为什么可以正确处理中文的自动换行 ,今天查看了 orgmode 配置,才发现有个 advice

;;;###autoload
(defadvice org-html-paragraph (before fsh-org-html-paragraph-advice
                                      (paragraph contents info) activate)
  "Join consecutive Chinese lines into a single long line without
unwanted space when exporting org-mode to html."
  (let*
      ((orig-contents (ad-get-arg 1))
       (reg-han "[[:multibyte:]]")
       (fixed-contents (replace-regexp-in-string
                        (concat "\\(" reg-han "\\) *\n *\\(" reg-han "\\)")
                        "\\1\\2" orig-contents)))
    (ad-set-arg 1 fixed-contents)))

这段代码是从 水木 emacs 版 抄过来的,作用是修改 html 导出函数 org-html-paragraph 的第一个参数,将两个汉字中间的换行符去掉。

org2blog 的使用

当初建立这个博客就是为了试一试 org2blog ,使用一段时间后,建立了一套使用方法。把所有博客写在文件 blog.org 中,级别 1 用于区分文章,级别 1 标题是文章标题,属性是文章属性。从级别 2 开始,是文章的子标题。下面列出了一些功能点需要花时间配置的。

自动登陆

每次启动 emacs 后,需要执行一次 org2blog/wp-login 命令登陆。登录信息在 emacs 关闭后不会记录,下次启动 emacs 后,还需要再次登录,次数多了会觉得不方便。org2blog 可以通过配置实现自动登陆,具体配置可参考官方网站。

subtree 的 post-and-publish 功能

不知道出于哪方面考虑,org2blog 不提供 subtree 的 post-and-publish 功能,只有 post 接口。在配置文件中加入下面函数,可实现 post-and-publish 功能。

;;;###autoload
(defun org2blog/wp-post-subtree-and-publish ()
  "Publish the current subtree as a page."
  (interactive)
  (org2blog/wp-post-subtree t))

多余窗口处理

每次发布文章后,org2blog 会弹出一个新窗口,可能是临时 buffer,没什么意义,总要手动关闭。下面这段代码可以在发布文章后取消弹出窗口。

(defadvice org2blog/wp-upload-files-replace-urls
    (after fj/org2blog/wp-upload-files-replace-urls (text) activate)
  (delete-window))

换行处理

使用 org2blog 过程中,发现对换行处理不太好:如果将 org2blog/wp-keep-new-lines 设置成 t ,中文换行处理基本没有问题,能识别自动换行还是硬换行,对于自动换行会在转换后连接成一行。而英文处理会有问题,所有的自动换行都被识别成了段硬换行。如果将 org2blog/wp-keep-new-lines 设置成 nil , 中文处理会有问题,列表中后必要的换行会被删除。

麻烦是的, org2blog/wp-keep-new-lines 是全局配置,无法根据一篇文章进行换行调整。我设计了一个解决方法,如果在属性中添加了 ENGLISH 描述,则不保留换行符,适用于英文文章。如果没有这个属性,则保留换行符,适用于中文文章。这需要通过写代码来实现,修改代码的方法不可取,因为库会经常升级,覆盖这些修改。较好的方法是用 defadvice

(defadvice org2blog/wp--parse-subtree-entry
    (before fj/org2blog/wp--parse-subtree-entry () activate)
  (let* ((keep-new-lines (org-entry-get (point) "ENGLISH")))
    (if keep-new-lines
  (setq keep-new-lines nil)
      (setq keep-new-lines org2blog/wp-keep-new-lines))
    (plist-put org2blog/wp-export-options :wp-keep-new-lines keep-new-lines)))

我用过的 Thinkpad

笔记本只用过 Thinkpad,而且全部是二手。。。习惯了小红点,其它品牌的笔记本用着都不顺手。买二手主要是有三个原因:穷,穷,穷。

  • Txx

    第一台买于 2000 年,刚上大学时。武汉电脑城买的二手 Thinkpad,型号记不清了,只有软驱,不能上网,只能写写 Turbo C,看看小图片。这也是我的第一台电脑。

  • T41

    买于 2008 年,北京中关村太平洋。用了很久,一直没坏,后来性能实在跟不上了,丢在老家了。

  • T62

    买于 2009 年,北京中关村太平洋。买给老婆用的,后来主板出了问题,无法启动。

  • T60p T7200

    买于 2011 年 2 月,淘宝。4:3 的 IPS 屏幕,最后的经典。上班和出差用,性能是不错,但是发热量太大,经常过热死机。出差背着太重,用了近一年,后来转手卖给一位北大法律系学生了。

  • T500 T9900

    买于 2011 年 12 月,淘宝。出掉 T61P 后,买的替代品,放在家里用。买了 X200 后,这台就用得少了。后来换了 128G SSD,仍在服役中。

  • X200 P8600

    买于 2012 年 6 月,淘宝,轻便,主要用于出差。内存加到 8G,换了 256G SSD,速度尚可,用了四年了,现在还在服役中。

这些 Thinkpad 买入价格大约都在 2000 左右,算上加内存,换硬盘的钱,不超过 3000。算下来,6 台机器,总价也不超过 2w。而一台新笔记本价格 1w 左右是很正常的,真是值了。

常用软件

系统相关

  • Total Commander
    • 多标签 Windows 文件管理器
    • 在目录下快速调用 everything,命令行
    • 未注册版本够用, Windows
  • Everything
    • 查找本地文件的必备工具。
    • 免费软件, Windows
  • Listary
    • 打开文件对话框时,能方便地跳转到最近打开的目录。
    • 未注册版本够用, Windows
  • PicPick
    • 截图工具
    • 未注册版本够用, Windows
  • CLCL
    • 剪切版工具
    • 免费软件, Windows
  • Stickies
    • 桌面便签
    • 免费软件,Windows
  • Fences
    • 桌面图标分类
    • 共享软件,Windows (10$)
  • SpaceMonger
    • 磁盘空间图形化显示
    • 共享软件,Windows
  • 坚果云
    • 同步台式机和笔记本电脑的文件,云端保存资料,
    • 保存本地 svn/git repo。
    • 未注册版本够用,跨平台 Windows,Linux,OSX
  • TeamViewer
    • 远程桌面
    • 未注册版本够用,跨平台 Windows,Linux,OSX
  • DiskGenius
    • 很好的磁盘操作软件,主要用于磁盘备份和复制。
    • 未注册版本够用, Windows
  • XAMPP
    • 建站工具 Apache + Mysql + PHP + FileZilla + Tomcat + Mercury
    • 开源软件,跨平台 Windows,Linux,OSX
  • Vmware
    • 虚拟机软件,方便折腾 linux,装不同版本 windows 测试软件
    • 收费软件,跨平台 Windows,Linux,OSX

开发相关

  • Visual Studio
    • C++开发
    • Community 版本免费, Windows
  • Qt Creator
    • 写 C++ GUI 程序,重构方便,跨平台
    • 调试功能一般
    • 开源软件,跨平台 Windows,Linux,OSX
  • IntelliJ IDEA
    • Java 开发
    • 收费软件,跨平台 Windows,Linux,OSX
  • PhpStorm
    • PHP 开发
    • 收费软件,跨平台 Windows,Linux,OSX
  • Android Studio
    • Android 开发
    • 免费软件,跨平台 Windows,Linux,OSX

编辑相关

  • QQ 五笔输入法
    • 云端保存配置,在新电脑上可以很方便地下载使用
    • 免费软件, Windows
  • Sublime Text 3
    • 编辑代码,主要是前端网页文件。偶尔用来看 python,c++
    • 未注册版本够用,跨平台 Windows,Linux,OSX
  • UltraEdit
    • 查看日志,打开大文件快,搜索功能很方便,方便的列编辑
    • 收费软件,跨平台 Windows,Linux,OSX
  • Emacs
  • Beyond Compare
    • 最好用的文件比较软件
    • 收费软件,跨平台 Windows,Linux,OSX
  • WordPress
    • 博客和建站工具,自带手机客户端
    • 开源软件,跨平台 Windows,Linux,OSX

网络相关

  • Chrome
    • 浏览网页
    • F12 前端调试
    • Speed Dial 2 Pro 快速标签(3$)
    • SwitchOmega 科学上网
    • X-Notifier 邮件提醒
    • Xdebug Helper PHP 调试
    • 免费软件,跨平台 Windows,Linux,OSX
  • Foxmail
    • 邮件客户端
    • 免费软件, Windows
  • 迅雷
    • 下载工具
    • 免费软件, Windows
  • putty
    • SSH 访问 VPS 托管
    • 免费软件, Windows,Linux
  • FileZilla
    • FTP 访问 VPS 空间
    • 免费软件,跨平台 Windows,Linux,OSX

命令行工具

  • curl
    • 命令行下载工具
    • http 调试
    • 开源软件,跨平台 Windows,Linux,OSX
  • youtube-dl
    • 视频解析下载工具
    • 开源软件,跨平台 Windows,Linux,OSX
  • ffmpeg
    • 视频处理工具
    • 开源软件,跨平台 Windows,Linux,OSX

哑铃和哑铃凳

首先,我的观点是,不要购买家用健身器材。想健身的话,去办一张健身卡,离家近点,或者离单位近点,利用率一定比在家里健身的频率高。购买家用健身器材的动力是自我欺骗或者自我麻醉,你会想,去健身房比较麻烦,在家里练多方便,想练就练;或者,健身房人太多太杂,没有在家里练着清静。事实是,如果你连健身房都不想去,在家里就更不想练了。

我的哑铃和哑铃凳就是在这种错误思想的指导下购买的。当时刚换了工作单位,回家比较晚,晚上无法去小区健身房,同时,单位附近也没有健身房。考虑着,买了哑铃,就可以在家里练了。一对全胶哑铃,五十公斤,可拆卸式,价格260,一条哑铃凳,价格180。使用情况是,在我办了健身卡,练得比较勤的时候,偶尔还会把哑铃拿出来练几组;长时间不去健身房的时候,一般也不会练它。

哑铃凳挺好,组装简单,使用方便,结构牢固。坐凳和靠背的坡度可调节,可以练卧推,上斜卧推,下斜卧推,还可以练习仰卧起坐。平时不健身的时候,可以用作普通的桌椅,利用率很高。

哑铃的缺点就比较多了。一、它是全胶的,会掉渣,做卧推的时候,举到顶部,两只哑铃有时会碰撞,掉渣到脸上,滋味可不太好。二、味道大,放了很久还是有味道。三、脏,蹭到的地方就是一片黑。四、镙纹的安装方式不方便,每次调节重量要转半天卡口,不如健身房常用的捏扣式的卡口方便。有意把这对全胶哑铃换成电镀的,上京东淘宝查了一圈,也没有找到中意的。电镀哑铃没有前三个缺点,但一般也是镙纹卡口的,我比较在意这个。用金字塔式重量训练方法时,需要频繁调节重量,这个过程如果太麻烦,就不太想用了。另外,电镀哑铃贵很多,利用率不高的话,不值得花这个钱。

我还是用这对全胶哑铃先练着吧。