将等号('=')传递给MediaWiki模板中的参数

Ste*_*e K 18 mediawiki mediawiki-templates

如何在不破坏模板解析器的情况下在模板参数中使用"="字符?我不是MediaWIKI开发人员所以我没有调试代码或检查日志,我希望有人在这里有一个提示转义传递给模板的字符.

使用以下内容创建名为"Test"的模板:

{{{1}}}
Run Code Online (Sandbox Code Playgroud)

像这样:

{{ Test | R = 3/(2-(1+1)) }} 
Run Code Online (Sandbox Code Playgroud)

将呈现{{{1}}}而不是复杂的公式!我已经确定'='字符是罪魁祸首.

Ilm*_*nen 21

如果MediaWiki模板参数字符串包含等号,则符号前的所有内容都将作为参数的名称.如果它包含等号,参数字符串被分配到下一个可用的数字参数.

因此,最简单的解决方法是,如果您确实希望编号参数值包含等号,则要显式地对其进行编号,如下所示:

{{ Test | 1 = R = 3/(2-(1+1)) }}
Run Code Online (Sandbox Code Playgroud)

这将导致{{{1}}}模板内部扩展为字符串R = 3/(2-(1+1)),如下所示:

{{ Test | equation = R = 3/(2-(1+1)) }}
Run Code Online (Sandbox Code Playgroud)

将导致{{{equation}}}扩展到相同的字符串.

  • 请注意,如果后面有更多位置参数,这将不起作用,因为按名称指定位置参数不会用完其位置槽。此模板调用:{{AnyTemplate|1=第一个参数|第二个参数}} 会将“第二个参数”分配给 {{{1}}} 并保留 {{{2}}} 未定义。在某些情况下,通过提供 Template:= 并编写 {{=}} (参见下面的答案)来转义 '=' 可能是更好的方法。 (2认同)

Tim*_*rce 11

您可以创建{{=}}值为的模板=.然后使用该模板代替模板中的等号,如下所示:

{{ Test | R {{=}} 3/(2-(1+1)) }} 
Run Code Online (Sandbox Code Playgroud)


Mig*_*man 5

我很惊讶没有人提到这一点,但是逃避这个角色呢?

使用=将工作。如果你不能懒得记住的代码,你可以创建模板Template:==作为唯一的内容,然后将它作为{{=}}