编号列表中的代码块(Wiki语法)

92
在MediaWiki(维基百科)的维基语法中,有没有一种方法可以在编号列表中间插入代码块?
例如:
# 第一项
# 第二项
  缩进部分将变成代码块
# 第三项
# 第四项
在MediaWiki中的输出结果会是这样:
1. 第一项
2. 第二项
   缩进部分将变成代码块
1. 第三项
2. 第四项
(请注意,“第三项”和“第四项”被重置为1和2...看起来StackOverflow比MediaWiki聪明得多,我必须使用PRE标记让它出现问题!)
我知道可以使用“#:”语法缩进文本...
# 第一项
# 第二项
#: 仅仅缩进的部分
# 第三项
# 第四项
但是即使在编号列表中,我真的希望获得相同的可视化CSS类。
使用嵌套列表时情况更加有趣。 这个语法...
# 主要条目1
## 第1项
## 第2项
# 主要条目2
## 第1项
## 第2项
  缩进部分将变成代码块
## 第3项
## 第4项
变成了…
1. 主要条目1
   1. 第1项
   2. 第2项
2. 主要条目2
   1. 第1项
   2. 第2项
      缩进部分将变成代码块
1. 1. 第3项
   2. 第4项
(请注意,“第3项”现在变成了“1. 1.”)

我在这里制作了一个问题的示例:http://en.wikipedia.org/w/index.php?title=Wikipedia:Sandbox&oldid=414112284 - inanutshellus
7个回答

80

你可以尝试以下维基语法,它在 1.17 版本中对我有效。

# one
#:<pre>
#::some stuff
#::some more stuff</pre>
# two

这种方法并不完美,因为你最终会得到一个更多的缩进,但它确实允许使用Wiki语法来正确格式化跨多行的pre块。

正如之前提到的,另一种正确的方式是使用HTML标记。

<ol>
<li>one</li>
<li>two</li>
<pre>some stuff
some more stuff</pre>
<li>three</li>
</ol>

1
那个维基语法在 MediaWiki 1.15.1 上适用于我。它会在代码行周围增加一些额外的空间,但它可以工作。 - Nick Chammas
1
我使用了你建议的相同语法来处理编号列表中的图片:在编号项目之间插入#:[[File:image.jpg]]。这非常有帮助。 - Michael Plautz
在MediaWiki 1.17上对我有用,谢谢! - Nay
我不确定我们使用的是哪个版本的MediaWiki,但这个方法有效。只有一个注意点:如果你在“pre”行之前加上另一个缩进的“#”行,比如标题或其他内容,那么“pre”就无法正确渲染。 - anuragw
不支持在GitHub使用的MediaWiki中(请参见[此处示例](https://github.com/jonathancross/jc-docs/blob/master/Github%20markdown%20list%20and%20code.mediawiki))。请改用HTML版本。 - Jonathan Cross

36

使用HTML:

<ol>
  <li>Coffee</li>
  <li>Tea</li>
  <li>Milk</li>
</ol>

它将在MediaWiki中起作用。

从我下面发布的示例中可以看出,正是</li>使其正常工作。


我编辑了你的示例以展示它的工作方式:http://en.wikipedia.org/w/index.php?title=Wikipedia:Sandbox&oldid=414124677 - Adrian Archer
这是维基语法已知的问题。 - Adrian Archer
Kyle的答案应该被接受。如果使用嵌套列表,使用HTML将会很困难。此外,上面的答案被埋在古老的维基百科沙盒页面中。上面的Stackoverflow答案实际上并没有解决OP的问题。 - Nay

19

这在MediaWiki 1.17.0中运行得很好:

===Alternative way of using pre in numbered lists.===    
# Numbered line 1.
# Numbered line 2.<pre>code line 1&#10;code line 2</pre>
# Numbered line 3.

秘诀在于用 实体替换换行符,并将所有内容写在一行中。


5
可以,但是如果你不想把所有的代码都写在一行里,那么这种方法就不适用了。 - RockScience

14

1
我们还有一个完整的帮助:换行和空格页面,以及在列表不可知标记插入中对此问题的具体讨论。 - Nemo

5
我建议提供另一种答案:不要这么做。
我曾试图使用所有基本Mediawiki问题的解决方法,但发现它们都非常不完美。我已经学会了不使用数字,而是:
- 对于所有列表,使用星号(*)代替井号(#) - 继续为所有代码块使用前置空格
这比任何解决方法都更简单、易于维护。此外,对于任何关于数字的参考,在步骤编辑时都可能面临变化,这将成为另一个维护问题。

2
在上面的例子中,第二个缩进(::)是不必要的。
只需要一个缩进(:)就可以正常工作,如下所示:
# one
#:<pre>
#:some stuff
#:some more stuff</pre>
# two

输出结果:

  • 1. one
       一些内容(只有一个缩进级别,而不是两个)
       更多的内容
  • 2. two

  • 8
    我发现@Kyle的回答中,位于<pre>和</pre>之间的代码对我非常有必要。就像你说的那样,其中的1 :对我没有用...... - cellepo
    1
    这个答案在Mediawiki 1.17中对我不起作用。我也发现@Kyle的答案是必要的。 - Nay

    -3

    你也可以尝试在“pre”标签周围添加“blockquote”标签,这样看起来更加精美。

    == HAProxy Configuration ==
    #'''File:''' /etc/haproxy/haproxy.cfg
    <blockquote>
    <pre>
    global
      log 127.0.0.1 local1 notice
      maxconn 4096
      #daemon
      debug
      crt-base /usr/local/haproxy/ssl
    </pre>
    </blockquote>
    

    如何在不使用冒号的情况下,将灰色框与项目符号/编号对齐缩进。


    1
    即使我更正了关闭标签的顺序,这仍然对我无效。它会破坏列表的编号。 - P.Péter
    如果无序列表(*)相同。如果它们是嵌套的,则在引用块之后的嵌套不会正确继续。 - Nay

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