如何在Markdown代码块中禁用行号?

3

我希望在Markdown格式的文档中,仅禁用单个代码块的行号。

无论是查阅相关文档还是在Google上搜索,都没有给出正确的操作方法,但我相信这是可行的。


我正在使用Hexo,并使用markdown-it解析器


1
这完全取决于您使用的Markdown渲染器。 - Jordan Running
Markdown标准(就其本身而言)对于代码块的行号没有任何规定;因此,语法本身中没有任何东西可以打开或关闭它们。如果您在输出中获得了行号,则是因为您的渲染器添加了它们。也许您的渲染器支持一些非标准语法(例如CSS类名),可以实现您想要的效果,但是如果不知道您使用的渲染器,就无法确定。 - Jordan Running
3个回答

6

最新版的Hexo现在可以通过以下配置标签实现:

  {% codeblock [line_number:(true|false)] [highlight:(true|false)]%}
    code snippet
  {% endcodeblock %}

我有一段时间没有更新了,所以没有注意到这个问题。我会添加一个更新来引用你的答案。 - Matthew Sanders

4
正如先前提到的,这取决于您使用的Markdown/高亮工具。

编辑:

我还没有更新我的版本Hexo,所以blueberryfields答案在更近期的版本中是可用的。基本上看起来有一个添加的可选参数line_number

我也将保留下面的答案,因为扩展Hexo以支持尚未在主干中的功能通常很有用。

如果不可用:

由于您标记了帖子为Hexo,我假设您正在谈论codeblock标签。

{% codeblock [title] [lang:language] [url] [link text] %}
code snippet
{% endcodeblock %}

截止目前,Hexo的版本使用highlight.js,其定义在以下位置:
./node_modules/hexo/lib/plugins/tag/code.js

你可以直接扩展该模块,但如果尝试更新该模块,则可能会变得混乱。你可以fork Hexo并提交拉取请求以进行更改。

您还可以扩展Hexo以实现所需功能。

在项目的根目录中,您可以创建一个用于自定义标签的javascript文件:

./scripts/tags.js

您可以从类似以下内容开始:

您可以从这样的一些内容开始:

'use strict';

/**
 * simple code
 *
 * Syntax:
 *   {% simple_codeblock %}
 */
var util = require('hexo-util');
var highlight = util.highlight;

hexo.extend.tag.register('simple_codeblock', function(args, content){
    content = highlight(content, {
      lang: '',
      caption: '',
      gutter: false,
      tab: '',
      autoDetect: true
    });
    return content;

}, {ends: true});

你可以按照自己的意愿扩展它。

注意:这需要你参考 hexo-util

npm install hexo-util --save

用法:

{% simple_codeblock %}
// place code here
{% endsimple_codeblock %}

0

正如您问题的评论者所强调的那样,这取决于您用什么来呈现您的Markdown源代码。例如,wordpress.com上的渲染器允许您使用配置参数指定代码,如下所示:

[code language="css" gutter="false"]
your code here
[/code]

gutter=false的使用可以隐藏行号。更多细节可以在他们的发布源代码文档中找到。请注意,其他Markdown渲染器可能不支持此功能。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接