列表格式已损坏

示例:* 1932.

这些出奇地有效:* 1917-32.

  • 1917-32.

我正在使用最新的 3.3.0.beta3-dev,没有任何插件。

2 个赞
    1. testing
    1. second-line test

使用的标记

* 1932. test smth
* 1933. again now then 

是的,我看到了问题,但这似乎不是有效的 Markdown 标记。我用另一个 Markdown 编辑器测试了上面的内容,看到了类似的问题:

你可以通过省略数字后面的点来避免这个问题。例如:

  • 1932 - testing
  • 1933 - second-line test

或者通过排除开头的 *

  1. testing
  2. second-line test
1932. testing
1933. second-line test
1 个赞

但这只对连续的年份有效

  1. first
  2. second
  3. third
2008. first
2014. second
2015. third

也许使用 HTML 而不是 Markdown 也可以作为一种替代方法:

  • 1997. first
  • 2000. second
  • 2015. third
<ul>
  <li> 1997. first</li>
  <li> 2000. second</li>
  <li> 2015. third</li>
</ul>
1 个赞

这也是 Markdown 的一个限制。测试了 Github 和其他几个 Markdown 编辑器,它们都默认使用顺序列表。

3 个赞

使用 CSS 删除此边距可将其标准化。

li>ul, li>ol, .cooked li>ul, .cooked li>ol, .d-editor-preview li>ul, .d-editor-preview li>ol {
    margin: 0; /* Remove this */
}
1 个赞
12983298. one
2. test
  1. one
  2. test

是的,我以前见过这个,我们在 CSS 中做了一些花哨的操作,这在异常情况下会在视觉上破坏它。

我想原因可能是它可能被滥用,也许 @awesomerobot 还记得。

2 个赞

嗯,又一个测试:

- 12983298. 一个
- 2. 测试
    1. 一个
    1. 测试
* 12983298. 一个
* 2. 测试
    1. 一个
    1. 测试

显然,一个数字后跟一个句点,即使它不是行上的第一个标记,也会被视为数字列表。

1 个赞

这是因为在 markdown 中,当数字后面跟一个 . 时,它会被假定为一个有序列表。

所以,使用像 * 1932. 这样的格式会生成 HTML:

<ul>
  <li>
    <ol start="1932">
      <li><!-- item content --></li>
    </ol>
  </li>
  <li>
    <ol start="1933">
      <li><!-- item content --></li>
    </ol>
  </li>
</ul>

技术上是有效的,但很奇怪且并非预期。

这是因为当你引入一个 - 时,它不再是一个顺序数字,所以它不是一个有序列表,并且 . 会被忽略。

为了避免这种情况,最好使用:

* 1932 (如果数字不连续,则为无序列表)

1932. (如果数字是连续的,则为有序列表)

如果 . 是必需的,并且它不是一个有序列表,你可以用 \ 来转义 .,像这样:

* 1932\.

这是一个单独的问题,并且使用默认的浏览器 CSS 也会出现这种情况:

HTML 列表中的项目标记是一个伪元素,它在考虑列表的 padding/margin 之前被放置,因此它总是出现在内容的“框”之外。即使移除列表的 margin/padding,标记也会溢出。

例如,当从列表中移除 margin/padding 并为父容器设置 overflow: hidden 时,你看不到列表标记:

所以,由于应用于列表左侧的 padding 是一个静态值,并且列表标记的放置方式落在了 padding 范围内,所以在某个时候数字会溢出。

我们的 CSS 使列表在水平方向上比默认的更紧凑,并且我们同时有左边距和 padding… 但结果基本相同:

有一些 CSS… list-style-position: inside 可以覆盖标记的定位,这会将标记放在内容框内。但这会意味着你将不再获得漂亮的数字对齐:

list-style-position: outside; (默认):

image

list-style-position: inside; (列表标记占据内容空间)

image

所以,为了正确支持任何长度的有序列表并避免影响内容对齐,我们需要做一些事情,比如……使用 JS 来检测标记中的数字位数(从列表中的第一个数字开始,然后计算所有列表项以确定长度)并应用足够的 padding 来容纳最大的数字。

4 个赞

感谢您的报告。我们已提供了一个我们认为会有帮助的变通方法。目前,我们无法修复所有边缘情况,因此暂时关闭此报告。

2 个赞