我的感觉是现在大部分对标记语言的讨论都在一个分歧点上,那就是标记语言到底是辅助读者来看原始文档的,还是方便作者来生成格式文档的。
想知道 Nikola 比起 Hugo 还有什么优势?
有几个著名用户算不算?譬如 MATE 桌面、wxPython 的站点就是 Nikola 支撑的。 https://users.getnikola.com
markdown 扩展更全面,table、fenced code、footnote、toc 等老生常谈了,还支持我个人比较喜欢的 Definition Lists、Admonition、CodeHilite、WikiLinks 等等。使用时选项里打开就可以了,Hugo 的 markdown 扩展就比较平庸。
其实 reStructuredText 更强大些,python 官方文档就是这个写的,用来写书都没问题。缺点是不如 markdown 那么直观,编辑器支持要少一些。
语法高亮用的广受好评的 python 库 pygments,比那些用 javascript 高亮库的不知道要高到哪里去了。
原生支持 python notebook 渲染,想把 notebook 放到博客上去?木问题啊。
比较容易扩展,比如出厂内置的 chart 扩展:扔进去一堆数据,自动生成可交互的 SVG 图表。http://pygal.org/en/stable/
模版系统支持的是 Jinja2 和 Mako,特性多使用也比较广泛。
还有些比较贴心的特性:live reload,meta 头,readmore,thumbnail,草稿,定时发稿,多作者,禁止评论,多语支持,分页 rss ……等等。
可能还有些其它优势暂时想不起来,但大都可以追根溯源到一点:使用的是 python 工具链。众所周知,python 库出名的多,Nikola 则直接使用和整合了部分资源。也许使用 go 工具链的 Hugo 生成静态页面的速度要快上那么一点,但是对比以上这些,谁还在乎这个呢?
一直犹豫要跳哪个坑,你给我指明了一条跳坑的捷径
还有一点疑问,有没有 org-mode 到 Nikola 的比较好的工作流或者现成的插件?
还有,Python 阵营最出名的不是 Pelican 吗?
跳吧,一起跳
Nikola 内置的 pandoc 后端支持 org,但我没试过不知道支持到啥程度。
还有个插件看介绍直接调用 emacs 来生成 html。Plugins for Nikola
Pelican 挺早时候试过一次。就不能支持 live reload 么?写博客和开发主题时候很需要的。但没隔多久看到 Nikola 支持格式和特性更多,就义无反顾地弃彼坑跳此坑了 刚才又去看了一眼,值得注意的是 API 设计比 Nikola 漂亮(最近被 Nikola 快坑哭了),其它没看到啥明显的变化。
有没有试过 org-emphasis-regexp-components
这个参数?
;; default : " \t('\"{"
(setcar org-emphasis-regexp-components " \t,('\"{")
(org-set-emph-re '_ t)
只加了逗号 ,
,效果如下:
第一张是 Emacs 下的显示,后面分别是导出为 html 和 LaTeX,导出的代码都是对的。
Emacs 下最后一行第二个逗号 显示 不对? ,原因是两个正则匹配糊到一起了,不过正常使用应该不太会出现这种情况。
第二句那个函数是怎么用的? '_
是什么变量?能不能麻烦解释一下?
我猜是为了让设置生效,重新计算正则表达式?所以随便什么变量都行?
对的,但我不确定会不会产生冲突。
发现并不是这样的,是我误导了,表示抱歉。
_
,用 -Q
启动开始并没有这个变量,是后来 set
产生的 (但是其它的变量 。我以为这个是系统的变量。a
这种都不行,这点好奇怪!)
看来还是要自己设一个变量或者用 custom-set-variables
。
这个 _
好可疑,有谁知道么?
原来是这个啊,前两天我还在想,是不是可以添加一组非对称的 emphasis (",/" . "/")
,但 org-emphasis-alist
并不是这种写法。如果允许这种形式,副作用可能更小一点。
目前是靠同一个正则表达式类似这种 [~=*/_+]
一起匹配一次,又要实现嵌套,所以会重叠。
感觉这种不带转义的标记能肯定要有所限制,本身是为了方便书写而牺牲准确度。比如我想表达 N/,/N
的斜体是不是就又不对了?
大神,您好。
我跟很多人抱怨过,您是第一个解决问题的人。请您继续测试如下的东东是否能正常。。
N,N,N′-三甲基乙二胺
μ-η^2^:η^2^
η,η′
确实,其实这种问题的最终解决就交由 latex 处理,反正 org 和 latex 集成的很好
应该是这么写的:
(org-set-emph-re 'org-emphasis-regexp-components org-emphasis-regexp-components)
看了 org-set-emph-re
定义:
(defun org-set-emph-re (var val)
"Set variable and compute the emphasis regular expression."
(set var val)
(when (and (boundp 'org-emphasis-alist)
(boundp 'org-emphasis-regexp-components)
org-emphasis-alist org-emphasis-regexp-components)
(pcase-let*
((`(,pre ,post ,border ,body ,nl) org-emphasis-regexp-components)
(body (if (<= nl 0) body
(format "%s*?\\(?:\n%s*?\\)\\{0,%d\\}" body body nl)))
(template
(format (concat "\\([%s]\\|^\\)" ;before markers
"\\(\\([%%s]\\)\\([^%s]\\|[^%s]%s[^%s]\\)\\3\\)"
"\\([%s]\\|$\\)") ;after markers
pre border border body border post)))
(setq org-emph-re (format template "*/_+"))
(setq org-verbatim-re (format template "=~")))))
它的作用是把 " \t('\"{"
这种可读的表达式展开,然后重新赋值给变量,例如:
;; ---------------------------------
;; befor
(defvar foo " \t('\"{")
;; foo =>
;; " \t('\"
;; ---------------------------------
;; after
(org-set-emph-re 'foo foo)
;; foo =>
;; "\\([- ('\"{]\\|^\\)\\(\\([=~]\\)\\([^
;; ]\\|[^
;; ].*?\\(?:
;; .*?\\)\\{0,1\\}[^
;; ]\\)\\3\\)\\([- .,:!?;'\")}\\[]\\|$\\)"
不是大婶,表示看不懂。
′
符号是全角的?
复杂的式子建议用 LaTex 写,正则表达式不是万能的,org-emphasis-regexp-components
修改不当会带来难以预料的副作用,有可能你解决了 a 问题,却制造了 b/c/d 问题。
其实我到现在还没弄清楚你的需求,是 emacs 显示还是导出 html 还是 LaTeX?
pre
添加了 -
, .
, ,
, :
。
post
添加了 ′
, ^
。 貌似这个单引号和 '
不一样。
;; default : (" \t('\"{" "- \t.,:!?;'\")}\\[" " \t\r\n" "." 1)
(setq org-emphasis-regexp-components
'("- \t.,:('\"{" "- \t.,:!?;′^'\")}\\[" " \t\r\n" "." 1))
弄不懂 ^2^
是什么意思。效果如下,有没有副作就不得而知了。
非常高兴能和您讨论。您说用LaTeX实现,我是赞同的,这种化学符号在LaTeX世界里也有专门的宏包,当然质量什么的可能不是那么让人满意,毕竟化学圈用的人太少了。
我一直的一个想法,在脚本语言中使用LaTeX的语法,Org和Markdown也确实都可以这么办,可嵌入了LeTeX都把这些化学名当成了数学符号,这是我不喜欢的,就好像上面的例子,里面还有中文呀。
总之,这种比较特殊的排版需求对于工具的要求比较高
谢谢您。我当然希望导出和显示都是正常的,起码导出要正常。^2^
表示2是上标的,这是Pandoc扩展的Markdown语法,也是我一直使用的。(我觉得Org支持LaTeX风格的上标^{}
是非常好的,Pandoc的扩展不美观,只是为了和Markdown原来的风格保持一致。)
您的尝试证明了,通过定制可以满足我的需求,这解决了我的一个吐槽。
也顺带回复一下您之前的问题,′
,这个不是什么全角半角的问题,因为所谓的「全角」只有涉及中文才有意义。这个符号是Prime,我毛病多喜欢用这种一般人不用的东西 这和Xah有点像
我觉得您说的这两者不矛盾,如果转换器和显示器(就是能「渲染」出标记语言的东东)够好。
我用的是hakyll + org-mode 写博客,目前感觉还不错,没有很复杂的排版需求。