模板:NumBlk2/doc

![]() | 此页面是Template:NumBlk2的模板文档。 此页面可能包含了模板的使用说明、分类和其他内容。 |
![]() | 此模板使用Lua语言: |
此模板是{{NumBlk}}的包装模板(wrapper template)。粗略来说,可将此模板视为{{NumBlk}}与{{EquationRef}}的结合。因此在一般的情况下,此模板可以直接和{{EquationNote}}一起使用,而不需动用到{{EquationRef}}。
此模板提供与{{Visible anchor}}类似的醒目标记——借由指定id
属性的方式来使整个{{NumBlk2}}模板成为一个HTML的锚,也就是一个可链接到的目标,当点选到某个{{NumBlk2}}模板右侧显示为编号的自我链接或其他链接到该{{NumBlk2}}模板之链接(例如[[#id|...]]
)时,会使得该{{NumBlk2}}模板背景颜色改变而在视觉上将整个模板凸显出来。
警告:因为此模板是{{NumBlk}}的包装模板,所以推测当此模板与前导冒号
:
、前导星号*
或前导井字号#
一起使用时,可能会导致lint错误。更多信息,请参阅{{NumBlk}}之警告。
参数
[编辑]参数|1=
、|2=
和|3=
是必须的。另外还有可选参数|Attr=
、|RawN=
、|Cl=
、|LnSty=
、|Border=
、|Id=
、|IdPfx=
、|IdSfx=
、|Lbl=
和|FmtN=
。
原先在使用{{NumBlk}}时,需对{{NumBlk}}的|3=
赋值来决定{{NumBlk}}的编号。然而通过此模板对{{NumBlk}}的包装,{{NumBlk}}的编号改由此模板的界面决定,默认会根据|Id=
与|Lbl=
之值以生成自我链接并将该链接当作{{NumBlk}}的编号,但若|FmtN=
生效时则依照|FmtN=
的参数说明决定{{NumBlk}}的编号。
|3=
- 默认作为决定
id
属性、标签的依据,参见|IdSfx=
与|Lbl=
之说明。
- 默认作为决定
|Id=
- 指定模板的
id
属性,将|IdPfx=
之值与|IdSfx=
之值依序串接在一起所得之字符串为此参数的默认值。id
属性在HTML文件中必需是唯一的。
- 指定模板的
|IdPfx=
- 指定
id
属性默认的前缀(prefix),默认值为math_
。
- 指定
|IdSfx=
- 指定
id
属性默认的后缀(suffix),默认值为|3=
之值。
- 指定
|Lbl=
- 指定标签(label),即模板右侧的自我链接所要显示的内容,默认值为
|3=
之值。
- 指定标签(label),即模板右侧的自我链接所要显示的内容,默认值为
|FmtN=
- 赋予之值若为空值或全由空白字符组成则此参数失效,否则此参数生效。当此参数生效时,模板会将此参数之值转换为{{NumBlk}}的编号。
- 从
|FmtN=
的参数值转换到{{NumBlk}}的编号,依序会经过以下三个步骤:- 以
mw.text.unstripNoWiki
处理|FmtN=
之值,将文字从<nowiki>...</nowiki>
标签(tag)中提取出来,这类似于{{UnstripNoWiki}}的效果。 - 将上一步的结果视为格式化字符串并转换为一般文字(plain text)。格式化字符串是一种类似
printf
风格的格式描述。格式化字符串可包含转换指示符(conversion specifier),格式化字符串之中转换指示符以外其余部分的字符在转换为一般文字后维持原样不变,而转换指示符的转换方式如下:%i
- 此指示符将被转换为
|Id=
之值。 %l
- 此指示符将被转换为
|Lbl=
之值。 %L
- 此指示符将被转换为小于字符
<
。 %G
- 此指示符将被转换为大于字符
>
。 %c
- 此指示符将被转换为字符c,c代表
i
、l
、L
和G
以外的字符。
- 将上一步的结果视为wikitext并以
frame:preprocess
展开(expand)当作{{NumBlk}}的编号,这类似于Expand wikitext的效果。
- 以
|FmtN=
之值中如有<math>...</math>
等...解析器扩展标签,可以使用#tag
解析器函数以帮助得到预期的结果,参见后面示例中的3F 。目前的测试显示,也许在第一步中所使用的mw.text.unstripNoWiki
函式会将字符<
替换为<
,将字符>
替换为>
,因此当需要避免这些字符实体参照的替换时,可以将<nowiki>...</nowiki>
之中的<
或>
字符分别以转换指示符%L
或%G
取代,参见后面示例中的3G和3H。
|Attr=
- 默认值是一些适当的属性设定以使模板符合此文件之说明,不建议一般的用户对此参数赋值而将默认值覆盖掉。
参数|1=
、|2=
、|RawN=
、|Cl=
、|LnSty=
和|Border=
的意义基本上维持不变,请参见{{NumBlk}}之说明,这里不再赘述。
示例
[编辑]本章节会先列出呼叫{{NumBlk}}的示例,接着列出改写为呼叫{{NumBlk2}}的示例,作为互相对照,最后可能再列出链接到前述{{NumBlk}}与{{NumBlk2}}的示例。可以试着点选所列出的链接或模板右侧的编号,以观察通过背景颜色改变凸显模板的效果。
说明:编号部分可能有修改而与来源中的编号不同,以确保
id
属性都是独一无二的。
示例1
[编辑]此示例中可以看到以下两种方案之间的对照:
- {{NumBlk}} + {{EquationRef}} + {{EquationNote}}
- {{NumBlk2}} + {{EquationNote}}
NumBlk
[编辑]{{NumBlk|:|<math>\Delta{}E = W + Q + E </math>|{{EquationRef|1A}}}}
NumBlk2
[编辑]{{NumBlk2|:|<math>\Delta{}E = W + Q + E </math>|1B}}
1B |
可以看到{{NumBlk2}}呈现出来的结果其右侧的标签是一个显示为编号的自我链接(1B)。因为|Id=
、|IdPfx=
与|IdSfx=
未赋值,所以皆是默认值。|IdPfx=
默认值是math_
,|IdSfx=
默认值是|3=
之值即1B
,|Id=
默认值是|IdPfx=
与|IdSfx=
之值的串接即math_1B
,所以这里{{NumBlk2}}模板的id
属性为math_1B
。
也可以通过对|FmtN=
赋值的方式得到类似的结果:
{{NumBlk2|:|<math>\Delta{}E = W + Q + E </math>|1C|RawN=y|FmtN=<nowiki>'''([[#%i|%l]])'''</nowiki>}}
(1C) |
链接
[编辑]可借由{{EquationNote}}或直接以[[#id|...]]
的方式链接到模板。
- 1A
- 1B
- 1C
{{EquationNote|1C}}
得到1C。
示例2
[编辑]NumBlk
[编辑]{{NumBlk|:|<math>
\begin{array}{rcl}
x_1 \left( s = 0 \right) &=& h_1 \left( t_1, t_2, \ldots, t_{N - 1} \right)\\
x_2 \left( s = 0 \right) &=& h_2 \left( t_1, t_2, \ldots, t_{N - 1} \right)\\
\vdots \\
u \left( s = 0 \right) &=& v \left( t_1, t_2, \ldots, t_{N - 1} \right)
\end{array}
</math>|{{EquationRef|2A}}}}
NumBlk2
[编辑]{{NumBlk2|:|<math>
\begin{array}{rcl}
x_1 \left( s = 0 \right) &=& h_1 \left( t_1, t_2, \ldots, t_{N - 1} \right)\\
x_2 \left( s = 0 \right) &=& h_2 \left( t_1, t_2, \ldots, t_{N - 1} \right)\\
\vdots \\
u \left( s = 0 \right) &=& v \left( t_1, t_2, \ldots, t_{N - 1} \right)
\end{array}
</math>|2B}}
2B |
这个例子是对一组的数学式而非对单一的数学式加上编号,当点选{{NumBlk2}}的自我链接时,整个{{NumBlk2}}模板的背景颜色将发生改变,可以借此而看出模板所指涉的数学式范围。其他方法还可以直接用{{Equation box 1}}将整组的数学式包围起来,如同傅里叶级数 (Eq.1)的作法。
链接
[编辑]示例3
[编辑]NumBlk
[编辑]{{NumBlk|:|<math>F_\text{net} = F_\text{external} - F_\text{friction}</math>|<math>(\text{3A})</math>|RawN=y}}
NumBlk2
[编辑]{{NumBlk2|:|<math>F_\text{net} = F_\text{external} - F_\text{friction}</math>|(無作用)|RawN=y|IdSfx=3B|Lbl=<math>(\text{3B})</math>}}
上面的示例中,右侧编号(标签)依然是可点选之链接。其实以下的示例利用不同的参数设定方式,也可以得到几乎相同的结果:
{{NumBlk2|:|<math>F_\text{net} = F_\text{external} - F_\text{friction}</math>|3C|RawN=y|Lbl=<math>(\text{3C})</math>}}
{{NumBlk2|:|<math>F_\text{net} = F_\text{external} - F_\text{friction}</math>|<math>(\text{3D})</math>|RawN=y|IdSfx=3D}}
{{NumBlk2|:|<math>F_\text{net} = F_\text{external} - F_\text{friction}</math>|<math>(\text{3E})</math>|RawN=y|Id=math_3E}}
也可以通过对|FmtN=
赋值的方式得到类似的结果,下面的例子使用了#tag
解析器函数:
{{NumBlk2|:|<math>F_\text{net} = F_\text{external} - F_\text{friction}</math>|3F|RawN=y|FmtN=<nowiki>[[#%i|{{#tag:math|(\text{%l})}}]]</nowiki>}}
也可以改为使用转换指示符%L
与%G
得到类似3F的结果:
{{NumBlk2|:|<math>F_\text{net} = F_\text{external} - F_\text{friction}</math>|3G|RawN=y|FmtN=<nowiki>[[#%i|%Lmath%G(\text{%l})%L/math%G]]</nowiki>}}
如果在3G之中不使用转换指示符%L
与%G
而是直接使用<
与>
字符,则会得到非预期的结果:
{{NumBlk2|:|<math>F_\text{net} = F_\text{external} - F_\text{friction}</math>|3H|RawN=y|FmtN=<nowiki>[[#%i|<math>(\text{%l})</math>]]</nowiki>}}
<math>(\text{3H})</math> |
链接
[编辑]- (3A)未使用{{EquationRef}},无法链接。
{{EquationNote|3B}}
得到3B,[[#math_3B|3B]]
得到3B。{{EquationNote|3C}}
得到3C,[[#math_3C|3C]]
得到3C。{{EquationNote|3D}}
得到3D,[[#math_3D|3D]]
得到3D。{{EquationNote|3E}}
得到3E,[[#math_3E|3E]]
得到3E。{{EquationNote|3F}}
得到3F,[[#math_3F|3F]]
得到3F。{{EquationNote|3G}}
得到3G,[[#math_3G|3G]]
得到3G。{{EquationNote|3H}}
得到3H,[[#math_3H|3H]]
得到3H。
示例4
[编辑]NumBlk
[编辑]{{NumBlk|:|<math chem>\underbrace\ce{PCl5}_{(1)}\ \ce{->[t\text{-}\ce{Bu-\overset{\oplus}{NH3}.\overset{\ominus}{Cl}}]}\ \underbrace{t\text{-}\ce{Bu-N=PCl3}}_{(5)}</math>|[{{EquationRef|4A}}]|RawN=y}}
[ | ]
NumBlk2
[编辑]{{NumBlk2|:|<math chem>\underbrace\ce{PCl5}_{(1)}\ \ce{->[t\text{-}\ce{Bu-\overset{\oplus}{NH3}.\overset{\ominus}{Cl}}]}\ \underbrace{t\text{-}\ce{Bu-N=PCl3}}_{(5)}</math>|(無作用)|RawN=y|IdSfx=4B|Lbl={{colors|black|[}}'''4B'''{{colors|black|]}}}}
[4B] |
上面的示例中,使用了{{colors}}将左右方括号的颜色改为黑色,否则左右方括号将会是链接的颜色。所以只要做适当的格式设定也能让标签看起来如同普通的文字,虽然它仍旧是一个链接:
{{NumBlk2|:|<math chem>\underbrace\ce{PCl5}_{(1)}\ \ce{->[t\text{-}\ce{Bu-\overset{\oplus}{NH3}.\overset{\ominus}{Cl}}]}\ \underbrace{t\text{-}\ce{Bu-N=PCl3}}_{(5)}</math>|(無作用)|RawN=y|IdSfx=4C|Lbl={{color|black|'''[4C]'''}}}}
[4C] |
也可以通过对|FmtN=
赋值的方式得到类似的结果,4D近似于4B,4E近似于4C:
{{NumBlk2|:|<math chem>\underbrace\ce{PCl5}_{(1)}\ \ce{->[t\text{-}\ce{Bu-\overset{\oplus}{NH3}.\overset{\ominus}{Cl}}]}\ \underbrace{t\text{-}\ce{Bu-N=PCl3}}_{(5)}</math>|4D|RawN=y|FmtN=<nowiki>['''[[#%i|%l]]''']</nowiki>}}
[4D] |
{{NumBlk2|:|<math chem>\underbrace\ce{PCl5}_{(1)}\ \ce{->[t\text{-}\ce{Bu-\overset{\oplus}{NH3}.\overset{\ominus}{Cl}}]}\ \underbrace{t\text{-}\ce{Bu-N=PCl3}}_{(5)}</math>|4E|RawN=y|FmtN=<nowiki>'''[[[#%i|{{color|black|%l}}]]]'''</nowiki>}}
[4E] |
链接
[编辑]{{EquationNote|4A}}
得到4A。{{EquationNote|4B}}
得到4B。{{EquationNote|4C}}
得到4C。{{EquationNote|4D}}
得到4D。{{EquationNote|4E}}
得到4E。
示例5
[编辑]NumBlk
[编辑]{{NumBlk|:|<chem>CO2(aq) + H2O -> H2CO3</chem>|{{EquationRef|5A}}}}
NumBlk2
[编辑]{{NumBlk2|:|<chem>CO2(aq) + H2O -> H2CO3</chem>|5B|IdPfx=chem-}}
5B |
因为这里是对化学式而不是对数学式加上编号,我们可以改用更适当的id
属性前缀chem-
而不是原本的math_
,这时只要对|IdPfx=
适当地赋值即可达成。
也可以通过对|FmtN=
赋值的方式得到类似的结果,应该可以发现底下%i
指示符的转换结果为chem-5C
,因为|IdPfx=
被赋值chem-
,|IdSfx=
之默认值为|3=
之值也就是5C
,|Id=
之默认值为|IdPfx=
之值与|IdSfx=
之值的串接也就是chem-5C
,而%i
会被转换为|Id=
之值也就是chem-5C
,所以验证了%i
指示符的转换结果符合预期:
{{NumBlk2|:|<chem>CO2(aq) + H2O -> H2CO3</chem>|5C|IdPfx=chem-|RawN=y|FmtN=<nowiki>'''([[#%i|%l]])'''</nowiki>}}
(5C) |
链接
[编辑]'''[[#math_5A|5A]]'''
得到5A,{{EquationNote|5A}}
得到5A。'''[[#chem-5B|5B]]'''
得到5B。'''[[#chem-5C|5C]]'''
得到5C。