【问题标题】:List numbering Jupyter notebook markdown列表编号 Jupyter notebook 降价
【发布时间】:2016-03-04 13:41:47
【问题描述】:

我尝试为学生创建教程。我想对我问他们的问题进行编号,但在这之间我想添加信息来介绍这些问题。如何制作一个自动编号的列表,每次输入文本时都不会重置编号。例如:

This is some info.
1. This is question one.

This is more info.
2. This is question two.

给出输出:

这是一些信息。

  1. 这是第一个问题。

这是更多信息。

  1. 这是第二个问题。

【问题讨论】:

    标签: markdown jupyter jupyter-notebook


    【解决方案1】:

    标准 Markdown 无法直接实现这一点,尽管您可以“伪造它”(见下文)。其实rules状态:

    请务必注意,用于标记列表的实际数字对 Markdown 生成的 HTML 输出没有影响。 ...关键是,如果您愿意,您可以在有序的 Markdown 列表中使用序号,以便源中的数字与您发布的 HTML 中的数字相匹配。但如果你想偷懒,你不必这样做。

    但是,如果您确实使用惰性列表编号,您仍然应该以数字 1 开始列表。在将来的某个时候,Markdown 可能会支持以任意数字开始有序列表。

    那个未来从未正式到来。然而,一些不同的 Markdown 实现可能会提供这样的功能作为非默认选项。不幸的是,这种情况很少见(我不记得它们是哪些实现了)。

    不管怎样,你会遇到另一个问题。我不清楚您想要的输出如何是有效的 HTML。本质上,您是在请求嵌套在列表中的列表项之外的段落。那将是无效的 HTML:

    <ol>
      <p>This is some info.</p>
      <li>This is question one.</li>
      <p>This is more info.</p>
      <li>This is question two.</li>
    </ol>
    

    也就是说,它会(几乎)按照您的意愿显示(非列表项也会缩进)。

      这是一些信息。

    1. 这是第一个问题。
    2. 这是更多信息。

    3. 这是第二个问题。

    我不推荐它,但您可以将其用作原始 HTML。也许您可以找到一些其他方法或格式来表示您的数据。

    如果您的 Markdown 实现支持它,我考虑建议使用嵌套在定义列表中的有序列表(虽然不是标准的,但此功能在实现中非常常见且一致,尽管默认情况下可能不会启用)。它确实为您提供了正确的嵌套,但如果不连续的数字仍然存在,则会出现同样的问题。但是,如果您手动添加数字并将它们转义以使其不被解释为列表项,则其工作方式如下:

    This is some info.
    : 1\. This is question one.
    
    This is more info.
    : 2\. This is question two.
    

    呈现为:

    <dl>
    <dt>This is some info.</dt>
    <dd>1. This is question one.</dd>
    <dt>This is more info.</dt>
    <dd>2. This is question two.</dd>
    </dl>
    

    并显示为:

    这是一些信息。
       1. 这是第一个问题。
    这是更多信息。
       2. 这是问题二。

    有趣的是,由于 SO 删除了定义列表上的(通常默认的)缩进,在我尝试在上面的演示中伪造它时,我意识到有一个更简单的解决方案应该适用于所有 Markdown 实现。只需使用段落、手动数字和不间断空格来强制缩进:

    This is some info.
    
    &nbsp; &nbsp; 1. This is question one.
    
    This is more info.
    
    &nbsp; &nbsp; 2. This is question two.
    

    请注意,不间断空格会导致 Markdown 不会将这些行视为列表项,从而无需转义它们。以上呈现为:

    <p>This is some info.</p>
    <p>&nbsp; &nbsp; 1. This is question one.</p>
    <p>This is more info.</p>
    <p>&nbsp; &nbsp; 2. This is question two.</p>
    

    并显示为:

    这是一些信息。

       1. 这是第一个问题。

    这是更多信息。

       2. 这是问题二。

    【讨论】:

      【解决方案2】:

      我们可以通过多种方式在 Jupyter notebook 中以降价模式创建列表。我推荐自己的最简单方法很简单: 只需在列表中的项目之前附加* (确保在星号后包含空格)。例如:

      * one
      * two
      * three
      

      输出:

      • 一个
      • 两个
      • 三个

      另一种方式,您只需键入任何number 和dot,例如1.,然后键入列表中的项目。

      1. one
      2. two
      3. three
      

      所以会看到输出为:

      1. 一个
      2. 两个
      3. 三个

      如果您想更改列表格式,例如将点转换为数字或将数字转换为点 只需简单地将一个元素更改为适当的格式,整个列表就会转换。

      例如

       1. one
       * two
       * three
      

      输出会

      1. 一个
      2. 两个
      3. 三个

      和

      * one
      2. two
      3. three
      

      输出:

      • 一个
      • 两个
      • 三个

      【讨论】:

        【解决方案3】:

        与期望的不一样,但是当我写的时候 jupyter 停止了重新编号 1) 2) 3) 等等。

        ')' 似乎禁用了 Jupyter 降价完成的重新编号。至少适用于运行 python 3.5.2 的 jupyter 版本 5.0.0。

        【讨论】:

        • 这也适用于我,但是每个列表元素之间必须有一个空行,否则所有编号的点都显示在同一行上。即使在列表元素之间使用空行,使用句号. 的相同方法仍然不起作用。
        猜你喜欢
        • 2020-11-19
        • 1970-01-01
        • 2020-08-08
        • 2020-01-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-10-22
        相关资源
        最近更新 更多