如何在不破坏模板解析器的情况下在模板参数中使用“=”字符?我不是 MediaWIKI 开发人员,所以我没有调试代码或检查日志,我希望这里有人对转义传递给模板的字符有提示。
使用以下内容创建一个名为“Test”的模板:
{{{1}}}
像这样:
{{ Test | R = 3/(2-(1+1)) }}
将呈现 {{{1}}} 而不是复杂的公式!我已经确定 '=' 字符是罪魁祸首。
如何在不破坏模板解析器的情况下在模板参数中使用“=”字符?我不是 MediaWIKI 开发人员,所以我没有调试代码或检查日志,我希望这里有人对转义传递给模板的字符有提示。
使用以下内容创建一个名为“Test”的模板:
{{{1}}}
像这样:
{{ Test | R = 3/(2-(1+1)) }}
将呈现 {{{1}}} 而不是复杂的公式!我已经确定 '=' 字符是罪魁祸首。
如果 MediaWiki 模板参数字符串包含等号,则该等号之前的所有内容都被视为参数的名称。如果它不包含等号,则将参数字符串分配给下一个可用的数字参数。
因此,如果您确实希望编号参数值包含等号,最简单的解决方法是显式编号,如下所示:
{{ Test | 1 = R = 3/(2-(1+1)) }}
这将导致{{{1}}}
模板内部扩展为 string R = 3/(2-(1+1))
,就像:
{{ Test | equation = R = 3/(2-(1+1)) }}
将导致{{{equation}}}
扩展到相同的字符串。
您可以创建一个{{=}}
值为 的模板=
。然后使用该模板代替模板中的等号,如下所示:
{{ Test | R {{=}} 3/(2-(1+1)) }}
我很惊讶没有人提到这一点,但是逃避角色呢?
使用=
将起作用。如果您懒得记住代码,您可以Template:=
使用=
as 唯一的内容创建模板,然后将其包含为{{=}}
如果启用了Extension:Variables,请使用变量。变量定义保留了几乎所有的符号,包括=
and |
,它们只执行模板扩展。因此,在处理复杂的表达式和 URL 时,这是一种相当安全的方法。
{{ #vardefine: myequation | R = 3/(2-(1+1)) }}
{{ Test | {{ #var: myequation }} }}