Markdown 新手 请教大家的 workflow

2012-10-26 21:54:29 +08:00
 Hualin
这周需要提交一个非正式的技术报告,然后我就选用 markdown 了。我难道会告诉你我混在 V2EX 连 HTML 都不会写这种事吗?Anyway,在 win 机上的 sublime text 用插件,觉得很不错。

**疑问**:
1. 我发现不同的编辑器甚至不同插件编译出来的 markdown 文档不一样。这和什么有关? CSS?还是 template?怎样在 sublime 里面指定自己的?

2. Python 实现的 Markdown 和 perl 的 Markdown 有什么区别?貌似我就装了个能编辑 markdown 的编辑器就能用 markdown 了。那么如果这样,为什么还要安装 markdown 呢?那样有什么好处?

3. Python 实现的 markdown 有 内嵌 Latex 的扩展,那么,意思就是,我在纯文本中写了带“方言”的 markdown 后,用 python markdown 解析,就能渲染出公式来吗?那么 sublime 的 markdown build 插件能启用那个命令吗?

4. 我在 win7 的机子的 sublime 上安装了 markdown pandoc 插件,但是无法导出 PDF 和HTML 文件(会产生错误,说文件损坏),只能在浏览器里预览。

求解答,多谢。
6604 次点击
所在节点    Markdown
13 条回复
blaulan
2012-10-26 22:33:24 +08:00
1.不同版本的 markdown 似乎有细微的语法差异

2.不清楚

3.python 的一个 markdown 包好像支持 Latex 数学公式语法,不过具体忘了

4.pandoc 生成 pdf 需要 latex 支持
shiweifu
2012-10-26 22:45:37 +08:00
使用markdown 生成html

import markdown
mark.markdown("#abc")

使用pygment 生成带语法配色的html

a = get_lexer_by_name("python", full=True, stripall=True)
formatter = HtmlFormatter(noclasses=True, linenos=False)
print highlight(code, a, formatter)


不知道lz是不是这个意思⋯⋯更多用法可以参考liquidluck
shiweifu
2012-10-26 22:46:17 +08:00
貌似markdown 还没个标准,所以实现的有点混乱。比如标题后面要不要空行什么的,也没个统一的说法
binux
2012-10-26 22:46:47 +08:00
markdown不存在编辑器的概念,只有转换器:markdown->html转换。只是有的编辑器自带转换器罢了。以上所有问题都是因为,生成的html不同。
Hualin
2012-10-26 22:49:39 +08:00
@blaulan Sublime Text 2 的 MarkdownBuild 插件,我刚查看了一下源文件,它已经包含 python markdown了,它也有默认的 css 文件。自述文档说,可以指定自己的 css。现在就是这个问题:如何把 这个插件的 markdown python 指定成我在 python27 下安装的 markdown python?
Hualin
2012-10-26 22:51:01 +08:00
@binux 是的。编辑器自带 md 也好。自己下载脚本从命令行转换,或者从程序调也好,都一样。
Hualin
2012-10-26 22:55:42 +08:00
@shiweifu 啊,我刚下了个 python 实现的 md,然后我发现我的 sublime 上有个叫 markdown build 的插件,我发现那个插件自己也带了个 python markdown。我想把这个插件的 build 命令的目标转到我装的。然后在里面加自己想要的插件。

能在里面简单嵌入点 latex 公式就行了。正经文章还是得用 latex 写。
timonwong
2012-10-26 23:30:01 +08:00
1. Markdown没有一个标准啊,原版一套,Pandoc两套,GitHub一套,SO又是一套,各种扩展就更多了,最近Coding Horror还有一篇文章讨论这个:http://www.codinghorror.com/blog/2012/10/the-future-of-markdown.html

2. Python有两个:
一个近似于Markdown.PL的实现, 叫markdown2。
一个是python-markdown, https://github.com/waylan/Python-Markdown,我个人比较喜欢这个实现……

3. Sublime Build是不行的,倒是一个Markdown Preview的Folk可以,你可以看看: https://github.com/morlay/sublimetext-markdown-preview

4. 没有用过pandoc,暂时无法解答,抱歉

如果只使用原版的Markdown特性,又需要伪实时的预览,可以试试我写的OmniMarkdownPreviewer插件:
https://github.com/timonwong/OmniMarkupPreviewer
timonwong
2012-10-26 23:31:07 +08:00
EDIT&FIX:
OmniMarkdownPreviewer -> OmniMarkupPreviewer
Hualin
2012-10-26 23:46:16 +08:00
@timonwong

很有用

大牛 膜拜
shiweifu
2012-10-27 08:22:36 +08:00
@Hualin

pygments 是支持tex的,这里有些demo
http://pygments.org/demo/?lang=tex&sort=

配合markdown,可以自己造一个 :)
yetone
2012-10-27 08:51:13 +08:00
import misaka as m
m.html(content)
timonwong
2012-10-27 23:20:04 +08:00
UPDATE:
我刚刚创建了OmniMarkupPreviewer的新分支feature-LaTex-mdown,可以支持LaTex了(使用MathJax),你可以看看这里:https://github.com/timonwong/OmniMarkupPreviewer/tree/feature-LaTex-mdown

例子(MathJax, 参考http://docs.mathjax.org/en/latest/start.html#tex-and-latex-input):

When $a \ne 0$, there are two solutions to \(ax^2 + bx + c = 0\) and they are
$$x = {-b \pm \sqrt{b^2-4ac} \over 2a}.$$


Python-Markdown的扩展性很好,主要是靠这样实现的:

1. 输出格式化文本(codehilite最好装上pygments):
# 注意,mathjax 是一个我修改过的 mathjax 扩展,同时支持 $..$, $$..$$ 和 \( ... \) 语法。
# 到这里获取 https://raw.github.com/timonwong/OmniMarkupPreviewer/feature-LaTex-mdown/OmniMarkupLib/Renderers/libs/markdown/extensions/mathjax.py
# 文件就放到 markdown/extensions 下面
import markdown

markdown.markdown(text, tab_length=2, output_format='html5',
extensions=[
'tables', # 表格
'mathjax', # Latex
'strikeout', # This ~~is a deleted text~~.
'fenced_code', # GitHub flavored markdown的代码片段格式
'codehilite', # 代码高亮
]
)

2: 样式表,你可以直接拿OmniMarkupPreviewer里面的。
3: 还有就是HTML的模版,如果要加入MathJax的支持,把下面的代码加上:

<script type="text/x-mathjax-config">
// MathJax的配置
MathJax.Hub.Config({
tex2jax: {
// 默认mathjax只识别 $$ .. $$
inlineMath: [ ['$','$'], ["\\(","\\)"] ],
processEscapes: true
},
TeX: {
equationNumbers: {
autoNumber: 'AMS'
}
},
"HTML-CSS": {
imageFont: null // 不使用imageFont可以删除mathjax/fonts/HTML-CSS/TeX/png 目录
}
});
</script>
<script type="text/javascript" src="/public/mathjax/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>


希望(仍然)对你有用。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/50988

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX