在 Jekyll 中使用 Pygments 代码高亮显示文件名

Posted

技术标签:

【中文标题】在 Jekyll 中使用 Pygments 代码高亮显示文件名【英文标题】:Showing file name in Jekyll with Pygments code highlight 【发布时间】:2014-09-17 02:01:35 【问题描述】:

当突出显示已知位置的标准文件时,我想将文件名放在代码块中;最好在顶部。一个假设的例子是

% highlight apache show_filename=/etc/httpd/conf/httpd.conf %
.... the file contents ....
% endhighlight %

然后将呈现带有文件名前缀的代码块。有没有办法做到这一点?

【问题讨论】:

不,这不是 pygments 提供的一部分。您可以直接在代码块上方添加一个块并将其突出显示为纯文本。 我认为可以通过插件来完成。不过,我对 Ruby 的了解还不够多,无法编写一个。 这个潜在的 jekyll 功能 has been discussed on github,文件名也称为 caption。 – 但是,据我所知,没有可以开箱即用的花哨属性。 (不在 pygments 中,不在 rouge 中,没有关于 kramdown 的相关提及......) 【参考方案1】:

您可以简单地使用漂亮的 html5 figure 标签。

"HTML 元素表示自包含内容,通常带有标题(figcaption),通常作为一个单元引用。虽然它与主流相关,但它的位置与主流无关. 通常这是在正文中引用的图像、插图、图表、代码 sn-p 或架构,但可以移动到另一页或附录而不影响主要流程。嗯>" MDN > html > figure

<figure>
  <figcaption>File: folderName/fileName.rb</figcaption>
  % highlight ruby %
  def print_hi(name)
    puts "Hi, #name"
  end
  % endhighlight %
</figure>

【讨论】:

【参考方案2】:

另一个更好的解决方案,适用于 kramdown

>Some/test/xml/file.xml
:.filename
% highlight xml %
.... the file content ....
% endhighlight %

在你的 .css 文件中,你可以用你的代码 sn-p 让它看起来不错,例如这样:

.fileName
  padding: 0px;
  margin: 0px;
  background-color: #292929;
  color: lightgrey;
  border-top-left-radius: 3px;
  border-top-right-radius: 3px;
  margin-bottom: 0px;
  padding-left: 1em;
  font-family: Menlo,Monaco,Consolas,"Courier New",monospace;
  border-left: 0px;    

Here您可以找到有关此 kramdown 功能的更多信息。

【讨论】:

以上是关于在 Jekyll 中使用 Pygments 代码高亮显示文件名的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Jekyll/Pygments 中突出显示 CSHTML

在 Jekyll/Liquid 和 pygments 的 html 问题中突出显示

Jekyll 博客中突出显示的 pygments 的奇怪背景色调

在 Jekyll 中突出显示 Pygments 语法,无需启动 <div>

Jekyll - 如何更改突出显示字体系列的 pygments 语法?

尝试编译 Jekyll 站点时出现 Pygments 依赖错误