美文网首页工具
VScode插件Markdown Preview Enhance

VScode插件Markdown Preview Enhance

作者: 爱折腾的大懒猪 | 来源:发表于2018-12-17 01:39 被阅读207次

    Code Chunk功能简介

    VS code里面有一个很有用的插件, 叫Markdown Preview Enhanced (MPE). 可以很好地支持Jupyter, 比默认的Markdown Preview要强大. 其中一个很特色的功能叫Code Chunk, 就是能够支持执行代码块内的代码! 例如以下代码将显示ls的结果和node的结果:

    ```bash {cmd=true}
    ls .
    ```
    
    ```javascript {cmd="node"}
    const date = Date.now()
    console.log(date.toString())
    ```
    

    在Preview 内点击"三角"开始的符号, 将在下方显示结果:

    代码Preview和执行结果

    Code Chunk的使用可以帮助VS Code或Atom成为一个可以显示图片结果的强大的IDE!

    脚本运行默认是禁用的并且需要在 Atom 和 VSCode 的插件设置中开启来进行使用. 请小心使用这一特性,因为它很有可能造成安全问题! 当你的脚本运行设置是开启的,你的电脑很有可能被黑客攻击,如果有人使你运行了 Markdown 文档中的恶意代码。
    在VS code的设置里设置名称: Enable Script Execution为勾选就可以了.

    代码块标记

    使用Code Chunk功能的代码块必须要使用额外形式做记认. 最基本的是{cmd=true}开启功能.
    基本形式是```lang {cmd=your_cmd opt1=value1 opt2=value2 ...}:

    • lang 是代码高亮的语言名, 排在最前面.
    • cmd 是执行代码块的命令, 可以设置为具体命令, 如cmd="/usr/local/bin/python3".
    • 当设置为{cmd=true}(或简写成{cmd})时, 将执行前面lang作为主命令.
    • 如果一个属性的值是 true,那么它可以被省略,(e.g. {cmd hide}{cmd=true hide=true} 相同)。
    • 如果命令需要参数, 使用额外选项argv=["-f", "svg"]来指定.
    • opt1=value1是额外的选项.
      • output: html, markdown, text, png, none. 设置如何显示结果.
        • text 是默认, 将添加输出结果到一个pre块中显示.
        • none是隐藏结果.
        • html是将添加输出结果为html (直接显示, 不在pre块内)
        • markdown是将输出结果为markdown, 可能会显示不正常.
        • png将会添加输出结果到base64图片 (实际不显示?)
      • args : 常用参数, 可以将列表里的选项传递给cmd.

      "$input_file"是一个特殊的参数. 默认下, 会拷贝code chunk代码在Markdown文件所在目录下一个临时文件(运行后会删除), 这个文件会作为程序运行的最后一个参数传递给cmd命令. 如果想改变该文件的传入位置, 可以用"$input_file"args中设置, 如program {cmd=true args=["-i", "$input_file", "-o", "./output.png"]}.

      • hide : 设置为true, 会隐藏代码而只显示结果. 默认false
      • stdin : 设置为true会将代码传递到stdin而不是作为文件传入.
      • id : 可以手动给该code chunk设置一个id号, 可以被后面continue所调用
      • continue : 设置为true会继续运行上一个code chunk的内容, 如果设置为continue="id号", 则可以运行指定id的code chunk的内容. (continue其实就是合并多个code chunk来生成文件来运行).
      • class : 如果设置 class="class1 class2",那么 class1 class2 将会被添加到 code chunk代码块所在HTML元素中。默认下该代码块class为language-语言名(便于语法着色).

      class="line-numbers" 将会添加代码行数到 code chunk (即代码前显示行号)。

      • element : 设置想要添加的元素. 例如element="<div id='tester'></div>". 有时可以用于在页面加入元素并控制该元素作为显示.
      • run_on_save : 设置为true时, 当 markdown 文件被保存时,自动运行 code chunk。默认 false
      • modify_source : 设置为true时, 插入 code chunk 的运行结果直接到 markdown 文件。默认 false
      • matplotlib : 设置为true时, python code chunk 将会在你的预览中绘制图像。
    ```gnuplot {cmd=true output="html"}
    set terminal svg
    set title "Simple Plots" font ",20"
    set key left box
    set samples 50
    set style data points
    
    plot [-10:10] sin(x),atan(x),cos(atan(x))
    ```
    
    cmd和output的控制
    ```python {cmd=true id="izdlk700"}
    x = 1
    ```
    
    ```python {cmd=true id="izdlkdim"}
    x = 2
    ```
    
    ```python {cmd=true continue="izdlk700" id="izdlkhso"}
    print(x) # will print 1
    ```
    
    ```python {cmd=true matplotlib=true}
    import matplotlib.pyplot as plt
    plt.plot([1,2,3,4])
    plt.show() # show figure
    ```
    

    使用

    • Cmd+K, V 打开MPE预览. (V放开cmd再按, 该快捷键会覆盖原预览的快捷键.)
    • 如之前的图示, 使用MPE的Preview后直接按右上角的播放▶️按钮.
    • Markdown Preview Enhanced: Run Code Chunk 或者 Shift-Enter 运行你现在光标所在的一个 code chunk。
    • Markdown Preview Enhanced: Run All Code Chunks 或者 Ctrl-Shift-Enter 运行所有的 code chunks。

    实际上, Python的运行块代码也是Shift+Enter, 但是 MPE 的快捷键仅针对Markdown文件进行执行, 而前者则是针对Python文件进行执行, 所以并不冲突.

    Latex编译

    • 首先, 要安装好 pdf2svg 以及LaTex Engine, 之后就可以很简单地使用code chunk编写LaTex.
    • latex_zoom 如果设置了 latex_zoom=num,那么输出结果将会被缩放 num 倍。
    • latex_width 输出结果的宽度。
    • latex_height 输出结果的高度。
    • latex_engine 就会被用来编译 tex 文件的 latex 引擎。默认下 pdflatex 是被使用的。你可以在 插件设置 中改变它的默认值。
    ```latex {cmd=true}
    \documentclass{standalone}
    \begin{document}
       Hello world!
    \end{document}
    ```
    

    Reference

    相关文章

      网友评论

        本文标题:VScode插件Markdown Preview Enhance

        本文链接:https://www.haomeiwen.com/subject/beuxkqtx.html