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) |