【问题标题】:Add syntax highlighting to gh-pages将语法高亮添加到 gh-pages
【发布时间】:2011-07-07 18:32:52
【问题描述】:

有没有一种简单的方法可以使用 github 的 Pygments 向我的各种插件的 gh-pages 添加语法突出显示?

我知道每个页面都通过 Jekyll 引擎运行并提供语法高亮显示 (ref)。但我不想安装博客。我只想将语法高亮应用于我的 gh 页面中的代码块。

我想我总是可以在我的 gh-pages 中包含一个不同的插件...

【问题讨论】:

    标签: github syntax-highlighting github-pages


    【解决方案1】:

    Pages 已经做了 pygments,没有什么可安装的。就用它吧!

    ---
    layout: default
    title: Something with codes
    ---
    
    Happy fun highlighting. 
    [More details](https://github.com/mojombo/jekyll/wiki/liquid-extensions)
    
    {% highlight ruby %}
    def foo
      puts 'foo'
    end
    {% endhighlight %}
    

    【讨论】:

    • 嗯,好的,我尝试使用它来突出显示 javascript,但它不起作用。我是否需要将代码包装在 pre 标签之类的其他东西中?
    • 你有 yaml frontmatter 吗?如果不是,jekyll 不会弄乱文件。
    • 呃,谢谢,我现在明白了……我没有意识到这也是必需的:P
    • 你从哪里得到实际进行着色的 css?
    • @kentor 你需要像这样自己生成它:pygmentize -S monokai -f html > css/pygments/monokai.css
    【解决方案2】:

    "GitHub Pages now only supports Rouge, a pure-Ruby syntax highlighter" 所以你只需要更改 'kramdown' 语法高亮就可以在你的 中使用 'rouge' _config.yml 文件。

    markdown: kramdown
    kramdown:
      input: GFM
      syntax_highlighter: rouge
    

    【讨论】:

    【解决方案3】:

    在尝试找出语法突出显示时发现此线程是第一个热门话题,我发现了一种更简单的方法,我认为我会分享。只需将要突出显示的语言的名称放在受保护的代码块 (reference) 之后。无需生成任何 css 或使用 yaml。

    This is regular text
    
    ```ruby
    # This is highlighted code
    def foo
      puts 'foo'
    end
    ```
    ```python
    # Here is some in python
    def foo():
      print 'foo'
    ```
    

    【讨论】:

    • 这个问题是关于你需要 yaml 和/或 _config.yml 设置来包含 pygments 的 github gh-pages。
    • 我使用 github 的自动生成器来生成 gh-pages。没有意识到这个问题是针对手动方式的。看起来生成器确实为引擎盖下的 pygments 制作了一堆 css。
    【解决方案4】:

    正如@David Douglas 所指出的,“GitHub Pages 现在只支持 Rouge,一种纯 Ruby 语法荧光笔”

    你必须把这个放在你_config.yml。这是来自_config.yml of Barry Clark's Jekyll Now

    # Jekyll 3 now only supports Kramdown for Markdown
    kramdown:
        # Use GitHub flavored markdown, including triple backtick fenced code blocks
        input: GFM
        # Jekyll 3 and GitHub Pages now only support rouge for syntax highlighting
        syntax_highlighter: rouge
        syntax_highlighter_opts:
            # Use existing pygments syntax highlighting css
            css_class: 'highlight'
    

    那么对于代码高亮部分...

    Rouge 的语言别名列表如下:https://github.com/jneen/rouge/wiki/List-of-supported-languages-and-lexers

    它使用全小写的后者。

    例如,对于 JavaScript:

    ``` javascript
    function test() {
        console.log("test");
    }
    ```
    

    【讨论】:

      【解决方案5】:

      默认语法高亮是 rouge(相当于 _config.yml 文件中的 highlighter: rouge)。使用rouge,如果你在markdown中写这样的代码块:

      ~~~js
      let z = 26;
      ~~~
      

      你可以期望得到一个这样的 HTML 块:

      <div class="language-js highlighter-rouge">
       <div class="highlight">
        <pre class="highlight"><code>
         <span class="kd">let</span> <span class="nx">z</span> <span class="o">=</span> <span class="mi">26</span><span class="p">;</span>
        </code></pre>
       </div>
      </div>
      

      那么您只需要一个 CSS 文件(如果您使用的是 GitHub Pages 主题,您将自动获得 CSS)。我不确定 CSS 应该来自哪里,但是

      随意根据自己的喜好自定义 css。

      【讨论】:

      • 请注意:我使用的是默认主题,但我的突出显示不起作用。自己添加一个 syntax.css 解决了这个问题。我还必须使用小写的突出显示语言的名称。
      猜你喜欢
      • 2016-02-19
      • 2014-02-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-02
      • 1970-01-01
      • 2013-02-07
      • 2017-06-30
      相关资源
      最近更新 更多