V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Daring Fireball: Markdown
CommonMark
MacDown Open Source Markdown Editor
Marked
GitHub Flavored Markdown
Hualin
V2EX  ›  Markdown

Markdown 新手 请教大家的 workflow

  •  
  •   Hualin · 2012-10-26 21:54:29 +08:00 · 6603 次点击
    这是一个创建于 4401 天前的主题,其中的信息可能已经有所发展或是发生改变。
    这周需要提交一个非正式的技术报告,然后我就选用 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 文件(会产生错误,说文件损坏),只能在浏览器里预览。

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

    2.不清楚

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

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

    能在里面简单嵌入点 latex 公式就行了。正经文章还是得用 latex 写。
    timonwong
        8
    timonwong  
       2012-10-26 23:30:01 +08:00   ❤️ 1
    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
        9
    timonwong  
       2012-10-26 23:31:07 +08:00
    EDIT&FIX:
    OmniMarkdownPreviewer -> OmniMarkupPreviewer
    Hualin
        10
    Hualin  
    OP
       2012-10-26 23:46:16 +08:00
    @timonwong

    很有用

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

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

    配合markdown,可以自己造一个 :)
    yetone
        12
    yetone  
       2012-10-27 08:51:13 +08:00
    import misaka as m
    m.html(content)
    timonwong
        13
    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>


    希望(仍然)对你有用。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5732 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 35ms · UTC 03:10 · PVG 11:10 · LAX 19:10 · JFK 22:10
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.