2013-07-27 35 views
2

所以我有一个MediaWiki模板,我在表格中使用它来表示一列。代码看起来像这样,并按我的意愿工作。MediaWiki模板中的意外换行

&ltincludeonly>{{#if:{{{name|}}}|''{{{name}}}: ''|}}{{#if:{{{food|}}}|+{{Food|{{{food|}}}}}|}} {{#if:{{{condition|}}}|{{{condition|}}}|}}</includeonly>

当我与输入

 
{{Symbiosis|name=Groove|food=10|condition=if next to [[Apple Tree]], [[Dandelion]] or [[Straberry]]}} 

使用它我得到folling结果是任意的。

correct output

但是现在我要扩展这个模板,并与food定义移动零件在另一个模板,因为我在其他地方又需要它。所以我做了一个新的ResourceList模板,基本上和以前一样。

&ltincludeonly>{{#if:{{{food|}}}|+{{Food|{{{food|}}}}}|}}&ltincludeonly>

并将其包含在我的Symbiosis模板中,看起来像这样。

&ltincludeonly>{{#if:{{{name|}}}|''{{{name}}}: ''|}}{{ResourceList|food={{{food}}}}} {{#if:{{{condition|}}}|{{{condition|}}}|}}</includeonly>

但是,当我现在使用与上面相同的输入,我在我的表中看到一个换行符看起来像这样。 wrong output

这是为什么?模板定义中没有空格或linkebreaks。我不是很了解MediaWiki如何处理所有这些,这很令人困惑,而且有点不明智。所有这些空白和换行符都会让我疯狂......有没有办法告诉MediaWiki它可能会忽略我的模板定义中的所有空格和换行符,期望那些我非常想要的空格和换行符?

回答

1

我无法重现您的错误。

我完全按照书面输入第二个示例中的所有代码,结果与第一个示例类似。我自己尝试过,然后根据屏幕截图尝试复制表格(见下文),并且在这两种情况下都没有发生错误的换行符。

{| class="wikitable sortable" 
|- 
! width="33%" | Column A 
! width="34%" | Column B 
! width="33%" | Column C 
|- 
| {{loremipsum}} 
| {{Symbiosis|name=Groove|food=10|condition=if next to [[Apple Tree]], [[Dandelion]] or [[Straberry]]}} 
| {{loremipsum}} 
|} 

你在表格中使用不同的CSS类吗?因为有时可能会导致意外的包装或段落问题。

+0

我发现你无法重现这一点的原因:我在''标签后面有一个换行符来启动''标签。我想我错误地解释了这个标签的含义,因为我认为在使用该模板时只有标签内的东西会被包含在内,但这显然不是真的。 – sebaestschjin

0

当序列中包含多个没有输出的模板时(不确定这是否是问题),可能会发生这种情况。

尝试右各模板的结束(任何</includeonly>前)

0

你不能依赖于使用的管道字符,|,模板前添加<nowiki/>。相反,您应该专门为管道角色创建一个新模板。这就是维基百科所做的。这比听起来简单。只需:

  1. 创建一个名为!的新模板(因此页面名称将为Template:!)。
  2. 页面内容只需要|(是的,只是管道字符)。
  3. 加入{{!}}到您目前使用的管道字符任何模板使用它(即{{!}}取代|

有关更多信息,请参见Template:!在维基百科上。