21

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

使用以下内容创建一个名为“Test”的模板:

{{{1}}}

像这样:

{{ Test | R = 3/(2-(1+1)) }} 

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

4

4 回答 4

23

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

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

{{ Test | 1 = R = 3/(2-(1+1)) }}

这将导致{{{1}}}模板内部扩展为 string R = 3/(2-(1+1)),就像:

{{ Test | equation = R = 3/(2-(1+1)) }}

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

于 2014-01-03T17:55:02.503 回答
12

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

{{ Test | R {{=}} 3/(2-(1+1)) }} 
于 2014-01-03T05:54:27.217 回答
5

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

使用=将起作用。如果您懒得记住代码,您可以Template:=使用=as 唯一的内容创建模板,然后将其包含为{{=}}

于 2017-08-03T10:12:18.217 回答
1

如果启用了Extension:Variables,请使用变量。变量定义保留了几乎所有的符号,包括=and |,它们只执行模板扩展。因此,在处理复杂的表达式和 URL 时,这是一种相当安全的方法。

{{ #vardefine: myequation | R = 3/(2-(1+1)) }}
{{ Test | {{ #var: myequation }} }}
于 2015-11-12T02:05:19.990 回答