说起来这个问题也不算太复杂,主要就是习惯了wikitext做模板,从而陷入了一种惯性思维。
先来看问题。
上图框框中的原本应该是一个章节标题,结果在生成的时候跟上面的内容合并在了一起。
再来看看模板。
<includeonly>{{#if:{{{Biography|}}}|
==人物生平==
{{{Biography|}}}
}}{{#if:{{{Theories|}}}|
==主要理论==
{{{Theories|}}}
}}{{#if:{{{Books|}}}|
==著作列表==
{{{Books|}}}
}}</includeonly>
大体思路是如果有某项内容(比如{{{Books|}}})就生成一个标题(比如著作列表),然后将内容插入到标题下面。
只是由于第一项(人物生平)中有内容,又由于模板中间并没有换行符,所以就将后面的标题作为内容一起接续在之前的内容中。
那如果有换行符呢?其实就是将#if
挪到新行就可以了。
<includeonly>{{#if:{{{Biography|}}}|
==人物生平==
{{{Biography|}}}
}}
{{#if:{{{Theories|}}}|
==主要理论==
{{{Theories|}}}
}}
{{#if:{{{Books|}}}|
==著作列表==
{{{Books|}}}
}}</includeonly>
上面的问题是解决了,但是新问题也产生了。
模板中的内容(著作列表)跟条目简介之间有一个空白行,虽然不是特别影响,但多少有些不满意。
当初就是因为这个原因才将所有的换行合并在了一起,正常的显示应该如下:
现在似乎进入了一种两难的境地,有换行的话在其他页面就会有空行产生,不换行会吞没标题格式,难道就真的没有办法可想了吗?其实就是由于惯性思维导致的,解决方案也很简单,就是将==标题==
替换成<h2>标题</h2>
就可以了。
修改后的代码如下:
<includeonly>{{#if:{{{Biography|}}}|
<h2>人物生平</h2>
{{{Biography|}}}
}}{{#if:{{{Theories|}}}|
<h2>主要理论</h2>
{{{Theories|}}}
}}{{#if:{{{Books|}}}|
<h2>著作列表</h2>
{{{Books|}}}
}}</includeonly>
至此,问题解决。
注意:使用<h2>
标签虽然能够解决章节标题的问题,但还是存在一定的缺陷。因为在MediaWiki中,如果使用<h2>
标签的话,该章节将不被文章目录收集并且在标题处也不会出现编辑链接(虽然没什么大用处)。
如果是为了配合Page Forms扩展,那么可以使用section
标签,详情请参阅《MediaWiki教程之Page Forms篇》一文。